Lanvige's Zen Garden

Web / iOS Developer in Shanghai

临行

| Comments

确切的说,今天就是出发的日子了,但却怎么的都无法入睡。行李只是简单的收拾了几件衣服,相机给充上电,其它什么都还没做,主要是我不知要做什么。

更要命的是,下周就要比赛,而我不小心前天晚上的集训给伤到了脚踝,脚上一个诺大的肿块。疼的走路都不方便,早上去拿了些云南白药,中午感觉不放心又去了静安医院,但医生也只是说多休息。其实这种情况放在平时,也确无大碍,只是面对队友的表情,我不忍心告诉他们这伤势。

从年前到年中,几个月就过去了,我把太多的计划,都放在了这次行程之后,所以又加上了不少的重,近来晚上都是2点多才入睡,不是困的不行了,否则就无法入睡。想要的太多,急过了,就是这种感觉。然后夜里静的可以让人发呆。

这几天又因居住证的事,忙前忙后,早上7点起床,于是乎,训练时我都要睡着了。但过后的那种舒畅又让我感恩起来。怎么说Sarah也一起前来。这个我最喜欢的英国女孩,离的近了感觉像个初中生。

下午时分,一个个给朋友打过电话,那些要带东西的朋友,再次确认,虽然我仍对我的英语不放心,但帮忙却总是乐意的。于是Amazon上把要买年东西都给截下图,哈哈,一直给自己说勤能补拙,大抵就是我这般吧。

老妈电话询问让人心头暖暖,收到@a 的祝福信息,又向M同学讨了份祝福,恩,谢谢你们,正如你所说:开心就好。

打起精神,Everything will goes well….

:)

Modify Hosts File in OS X

| Comments

A.K.A, it’s difficult to change the DNS point in hosts file with OS X based system, you never can get right to save with default text editor, and VIM with sudo is terrible for tester. :(

This solution is not simple but does work.

Sublime Text 2

Sublime is a wonderful text editor on Mac OS X, it’s not free but you can use it with license alert sometimes.

Download and Install from HERE.

Open Hosts file

File > Open to show open file window. The /etc folder is for system and hidden, Hit Command+Shift+G to show go to folder option and input the hosts file path manually like below:

Then it will locate to the hosts file and open it.

Save changes to disk

Use Command + S to save (or click save on menu)

System will show a popup let you input password to authorization, only need at the first time in one session.

Hope it helps someone.

上海居住证

| Comments

第一家公司时,朋友对于居住证的事一直敦促,但未上心。在天朝,那一纸之证在紧急关头还是能做出不少贡献的,所谓不压身。

在经历过一系列的繁琐之后,今天终于递交了新办申请,也算了却一件心事。结束后发现没那么难,只是对于很多新人,不知从哪开始,所以一直耽误着。

2011 学历鉴定

因为去年就想办居住证,所以学历鉴定去年就做过了。

拿毕业证、学位证去中国上海人才市场(上海人才大厦)80块一个,大约两周后去取,两页的证明。当时的情形是可以找公司(我们入职是签外服的,也就是找外服),但今天同事说鉴定只能由公司来做,个人不能单独去做鉴定。

地址:梅园路77号上海人才大厦(近汉中路)200070

好搞笑啊,我花钱上了四年学,还要再花钱来证明我上过学,是不是过段时间还要再花钱来证明我的证明是真的?

Mar 22 外服登记

先填写调档人员情况表,点此下载, Word格式,档案保管机构就是档案所在地的地址。

去公司法务部门索取公司营业执照、机构代码的复印件,同时带上证书鉴定和高档人员情况表,去外服申请调档。这一步很快,几分钟后,外服会给你一个调档申请确认函。

大约一周后,27号,调档申请成功,会收到短信,去外服领取调档函。

Mar 29 申请调档

这里提下河南的调档规则,大学毕业后,可以选择档案托管地,一般是留在学校,工作地或户口所在地,学校会免费帮托管2年,2年后打回原籍的人才交流中心。我就属于这种情况。随档案一起的还有一张报道证,谢天谢地,这个东西竟陪我走了多年没被丢掉。[如果报道证丢失的办法是,回学校申请报道证补办证明,然后去省教育厅补办。]

拿到调档表后和报道证一起寄回家,让老爸去市人才交流中心调档(取时还要,毕业证复印件)。

费用,可打电话到人才中心询问,每个地方都不尽相同,大致是按工龄+乱78糟的一堆名目费,一共收了不到200元。湖北的一个同事竟收高达数百元。

Apr 12 档案寄出

因为忘记将毕业证复印件同时寄送,所以又等了一段时间,档案才从家里人才中心寄出,耽误了些时间。

May 02 档案到沪

差不多要几周时间,应该会有短信到达通知,但同办的同事就没有收到。也可到这个地址查询,看档案有没有到。

人事档案查询

到达后会看到如下信息:

xxx 的人事档案委托在南昌路分中心,IC卡号:xxxxxxxxx;如要办理相关业务,请联系相关业务部门。

May 8 体检

体验要求二级甲等医院,网上可以查下比较方便的医院。我是在静安中心医院,记得不能吃早餐,体检很快,半小时,因为只是为了居住证,所以很多项可以跳过的。

两天后,取体检单。

May 11 居住证明

之前有让朋友开过居住证明,但那个朋友近来不在公司,只好再找其它朋友重新开,每个社区的规定都不一样,证明单也不相同,这次新开的居委会竟要求先办临时居住证。只好跑到街道办,花25元办了张临时居住证,忽然想起老罗的那句话:我TMD的是长住的。

同时再自己打印一份同意入住证明,让朋友签字即可。

May 13 填申请表格

打印并填写《上海市居住证》申请表,下载, PDF,6页的那张,大致没什么,不会的地方,外服也会一点点帮你指正的。

上面有一项省部级以上证书,忽然想起曾获过省三好学生,优秀毕业生啥的,就写了上去,结果外服工作人员说,学校证书不加份。:(

纸质表格填完后还有一个在线版的要写,选个人,用身份证号登陆,密码是6个1。

http://218.242.131.167/
身份证号/111111

  • 我们员工是和外服签。
  • 注意的是产证编号格式为 沪房地x字(20xx)第xxxxxx号
  • 所属派出所就是居住证明所在地的派出所。
  • 社保基数,如果没有开通网上查询的话,直接填0。
  • 之前公司都要写清分公司信息。
  • 户籍地址和户口本保持一致
  • 大学证书不加分
  • 如果是借住朋友家,一定要写【亲友】关系

May 15 提交申办材料

  • 学历学位验证证明和学历学位证书【复印件】
  • 居住证明,和同意入住证明
  • 产权证和房东身份证 【复印件】
  • 外地居民户口簿原件及【复印件】(需要外地详细住址首页及本人信息页)
  • 身份证及【复印件】
  • 《上海市居住证》申请表(不用照片)
  • 填写在线申请表
  • 本市二级以上医院(包括二级)出具的健康状况证明(可以只交复印件)
  • 一年期及以上的劳动合同原件【全部文件的复印件】
  • 《岗位协议书》,公司盖章 下载,Word格式

参考:

首次申办境内人才《上海市居住证》书面材料
续办境内人才《上海市居住证》书面材料
上海社保网站
税单

Git 201 - Cleaning Up Respository

| Comments

在使用版本控制时,总会遇到对某些文件做出了修改,但最后发现该修改错误,而需要恢复到修改前的版本。亦或添加了一个新的文件,在未进行Commit之前需要移除,就要借用下面这些命令。相当于TFS的Undo。

撤销修改

如果对已commit过的文件作出了更新,而想要将这次的更新Undo掉,也就是恢复到本次修改前的状态时,就需要checkout命令了,对于被删除的文件,在未提交前,也可用该命令进行复原。

在项目中进行修改和删除操作,status如下:

1
2
3
4
5
6
7
$ git status
# On branch feature/auth
# Changes not staged for commit:
# modified:   config.ru
# deleted:    config/routes.rb
#
no changes added to commit (use "git add" and/or "git commit -a")

这时可通过checkout来进行撤销操作。

1
$ git checkout .

.所指的是当前目录,也可通过PATH来指定特定目录或具体文件。

此时,本次对该仓库所做的所有修改都被恢复到上次提交后的状态了。

清除未被Track的文件

项目开发中,在仓库中添加了新的文件,却发现这个文件并不需要,也不想在.gitignore中作忽略配置。只想在提交前进行移除,就可以使用clean命令。

1
git clean -n -d <path>

该命令并不会真正的移除你所指定目录下的新加文件或目录,而是将那些新加的项全部打印出来。-d参数将移除那些未被track的文件和目录,而-n则表示只作打印,而不真正删除。

1
2
3
$ g clean -nd
Would remove abc/
Would remove clean.md

一旦确定了要删除的项目,就可以去掉-n参数来进行移除操作了。

1
2
$ g clean -d 
fatal: clean.requireForce defaults to true and neither -n nor -f given; refusing to clean

但git很明显为了防止误操作,强制指定-n-f来进行显示或强制删除。这时通过-f参数就可以将指定目录下的新加文件给删除掉了。

1
2
3
$ git clean -df
Removing abc/
Removing clean.md

如果一个文件是被git所ignore的,它将不会出现在clean的列表里,如果想删除那些被忽略的文件,就需要-x参数了。这样即使是被git所ignore的目录或文件也会出现在被移除的列表中了。
-X表示只删除被ignore的文件,而其它新建的文件目录则不在列表中。
同样使用-f参数作真正删除。

Git 201 - Rolling Back

| Comments

因为前一夜赶着写Git的Blog,在Check in代码时,不小心把本地测试的修改也提交到了版本库。怎么办?这之后又做了一系列的提交,一个个文件手工改回去,看看时钟,欲哭无泪。忽然想到Git Manual里好像提到过一条命令。Revert,于是欢快的夜曲响起。

Revert

Revert命令可以将某次提交的修改全部删除,然后将这些删除的改动作为一个新的变更集进行另一次commit。

现有版本库如下,其中那条add 2nd file正是我不小心误作的commit,commit中新加入了一个名为2nd.md的文件。

通过git log命令可以看到那次修发的SHAb762f3fc54411ee07fc31adbc03903f5c815ac9c,运行:

1
2
3
4
$ g revert b762f3fc54411ee07fc31adbc03903f5c815ac9c
[master bd78912] Revert "add 2nd file"
 1 files changed, 0 insertions(+), 1 deletions(-)
 delete mode 100644 2nd.md

可以看到,在那次的修改中所加入的2nd.md已经被移除掉了。再看这时的commits:

会发现多了一条commit,Revert "add 2nd file"。commit的内容正是将 add 2nd file那次添加的文件移除掉。

冲突解决

如果要被Revert的commit中包含的文件,又在后继的commit中被修改,这时就会产生冲突,git会尝试自动解决,但若无法merge便会给出提示,让用户手工处理。

1
2
3
4
5
$ g revert b762f3fc54411ee07fc31adbc03903f5c815ac9c
error: could not revert b762f3f... add 2nd file
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

提交前检测或修改

若是想在恢复修改后做一些检测,甚至是修改后再进行提交。

这时可以通过commit --amend,或直接使用revert的-n or --no-commit参数。Git在做完revert后将操作保存在本地,此时和正常的修改流程一样,通过add, commit命令进行提交。

Us Visa

| Comments

近来似乎欠了一堆的东西要做,想记些什么,都觉得来不及,再过几天就出发去米国了,还记起要记些签证的攻略,趁这个周未半日闲,记记那晕头转向的忙碌。

Git 201 - Stash Intro

| Comments

很多时候,代码开发中常被打断,现行的修改不能直接被提交到版本控制器中,只希望被暂存起来,使用时将这些修改再恢复暂存时的状态。

项目开发中会经常遇到一些紧急的情况,如Hotfix,这时你需要创建新的Branch来完成这项工作,但创建分支要求先将所有修改的代码进行提交,而该部分代码并不能正常工作,不能被提交,此时能做的就是将这些修改暂存到一个地方,等Hotfix完成之后,再恢复那些修改。

另一个真实的例子是,团队成员更新了一系列文件并Commit到了Remote,而你也对其中部分文件做出修改,当使用Pull时,会发现冲突,而合并则要求你先Commit或Stash,对于已完成的代码,可以先Commit到本地,再用Pull获取,合并。但未完成的代码,就要用到Stash了。

使用Stash

在一个git工作树中,对文件作出修改,同时运行git status,可以看到git有以下提示:

1
2
3
4
5
6
7
8
9
$ gst
# On branch feature/auth
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified:   config/routes.rb
#
no changes added to commit (use "git add" and/or "git commit -a")

这时,若是想切换分支,但是你还不想提交你正在进行中的工作,就可以运行git stash命令,向stash栈里添加一个新的Stash。

1
2
3
$ git stash
Saved working directory and index state WIP on feature/auth: e2c54b5 Update namespace and config
HEAD is now at e2c54b5 Update namespace and config

这时再来看目录树,里面已经是干净的了。所有的变更都被保存到e2c54b5的Stash里了。

1
2
3
$ git status
# On branch master
nothing to commit (working directory clean)

查看Stash

对于已创建的stash可以通过 git stash list来查看。

1
2
3
$ g stash list
stash@{0}: WIP on feature/auth: e2c54b5 Update namespace and config
stash@{1}: WIP on master: 76aa72b add README

因为之前已有创建过stash,所以列表里会显示有两条记录。而stash@{0}为这次所加入,因为是栈结构,所以最新加入的数字最小。

使用git stash show stash@{0} 来查看某次暂存的具体更变。

1
2
3
$ g stash show 
 config/routes.rb |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

还原修改

如果想将之前保存的变更重新应用回去,可以使用git statsh apply命令。默认将第一条记录恢复,可在后面使用参数来指定恢复哪次暂存git stash apply stash@{1}

1
2
3
4
5
$ g stash apply
# On branch feature/auth
# Changes not staged for commit:
#
# modified:   config/routes.rb

这时,工作树里又出现了之前对代码所做出的修改。当然,你可以将这个stash应用到不同的分支,如果这个分支在Stash之后做出过修改,也是可以应用的。stash会对冲突进行合并。

删除Stash

使用Apply并不会移除Stash队列中的记录,而需要通过git stash drop 来进行删除,可以通过 stash@{0} 的参数来删除指定记录。

git stash pop 则是 apply + drop,在应用完变更后立即删除stash记录。

撤销Stash的恢复

如果不小心恢复错了某一版本的stash,还可以通过git stash show -p | git apply -R,如果恢复了多个版本,可以通过 git stash show -p stash@{0} | git apply -R 参数来指定移除某次的恢复记录。

从Stash记录中创建Branch

如果当前Branch已经做出很多修改,而只想看下某次变更的效果,直接apply的话,要合并冲突,成本太大。可以直接使用git stash branch name stash@{0} 命令,将创建一个新的分支,指向到你该次stash所处的状态。很方便的查看stash改变。

婉婷

| Comments

中午休息,校内上看到大学同学的婚照,是他系较为要好的朋友,从大一到今天,走过了8年时光,终成眷属。

在那张婚礼的相册里,联系上了婉婷,方知她也要结婚,选在6.1,果然是属于她的节日。看着好友一个个走入殿堂,心里装满着祝福的字样。但对于婉婷,除了无尽的祝福,我还想去记忆些东西。

初识

04年9月,那个后夏格外的热,人生长大后第一次剃平头,为的是在军训中不给连里掉队;那也可能是我记事起最黑的一次。在烈日下,那青春就不停的走动着。我记得,我们是28连。边上是我们的兄弟连,25连,国经贸专业。

记得那时总有一个女生拿着DV对着25连在不停的拍,大家相互不认识,军训太累,也没有时间去认识除了队伍身边的人。

直到加入学生会,才知道女生就是婉婷。一个多材多艺的女生。而且总一副乐呵呵的神情。

学生会

学生会有掌控欲很强的角色,也有只图玩乐的伙伴。我想,婉婷和我都应该是这种人,尤记那时大家为了入党时的急躁与不安,而她仍不紧不慢的说道,噢,是可以入党啊。

于是一些场合下共同做事,就相识起来,还有那些现在回家还经常一起吃饭的朋友。

慢慢发现,这个女生似乎没有忧伤,说起话来总是一副洒脱,像夏日的晚风,让人觉得舒爽。有时听的太过入迷,还被朋友笑道,当心,人家可是有男友的。呵呵,说话,蛮羡慕那个男生。

装备比拼

我是个数码控,在朋友圈子里,我身上总能拿出他们意想不到的东西,大学里,我不停的在科技市场里淘。但能让人记起的还有一个人,那一定是婉婷,她会拿出很多好玩的东西,像军训时的DV,平时给大家拍照的DC…… 和其他的郑州人不同,从她身上,看不出那种骄傲。

大学时光

记得有次,朋友家人来汴,跑去找她借相机。后来也曾帮她修过电脑。也相互借过几本书,那时,Live Space还没有关,大家在上面相互连接着,青春,有时会以无聊的文字体现着。

在那个叫做毛线团的世界里,似乎有个总也理不顺的女生,记录着生活点滴。恬静的文字里带点诙谐,却又高傲的面向生活,记得那时她的涂鸦,马尾辫的小姑娘、跳舞毯,还有欢乐的奶奶。

大四那年,在考研的时间里,似乎时间是断掉的,我记不得我做过哪些事,见过哪些人,隐约中闪现的是早上五点钟冰封的路面和图书馆里高高的书堆。但感觉上总不会忘却有这种开朗~

四年过的很快,都有着彼此的生活。但我一直记得她说过的一句话,每个女孩都是自己世界的公主。我竟有些感动,就像童话世界般的心灵。让我更珍惜和保护那时自己的公主。也将手机里她的名字发为公主婉婷,这一改就是N年。

那些年,我们一起拍照的地方

再往后,就是毕业照和离别,用相机不停的拍,怕这个时间过去就再也不会有了。晚上处理照片,Q上见到婉婷,于是相互发相园里的美景,才发现,原来都在同样地方,拍过同样的照片。照片传了很多,包括了校园的各处。于是笑称臭味相投。

再后来看到她的六猴齐聚云台山的相册,就忍不住将自己大三时在相同位置的照片也给她看。再后来就是北京清华园,北大。。。

忽然发现从她身上我看到了不少自己。

工作

工作后,没有了那些朋友,发现我已经自己成了那个会笑的大男生,一个人会做很多夸张的事情,大大咧咧下还有着细腻的心思,也曾要保护我的公主到天荒。只是那些年一晃就过了夏天,过了那个连再见都没说的离别。于是一个人生活在陌生的城市,只是依然会笑。

微软决定关了Live Space,所有人的Blog都没有搬迁,随风而逝。

偶尔会在校内或QQ和婉婷聊系,节日也总能收到祝福的短信,那些文字里总像带着秋的阳光,让人感觉温暖,又因豆豆(婉婷家的狗狗)的憨而发笑。这个浮躁世界,总因有些人而坚持不改变。

记得某个周六,正在办公室加班,于是手机里听到:我在上海,城隍庙。半小时后,我看到了一个扎个小辫,大眼睛,配着一身年轻的丫头,仿佛回到了大学时光。我记得我说了很多话。

再别,就是今日。

喜喜

今天才知婉婷也要结婚了,不知那个男人是谁,但他肯定是幸福的。

婉婷说,也祝福你,一直好运,其实没那么多的好运,只是大多时候傻乐罢了。

属于那时的文字

总能想起属于那时,属于一个人的文字:

长亭外,古道边,芳草碧连天。晚风拂柳笛声残,夕阳山外山。
天之涯,地之角,知交半零落;一杯浊酒尽余欢,今宵别梦寒。

李叔同的《送别》,每每读到,都会有种内心的平静。

感谢有你

有你这样的朋友,已经是很幸运了。谢谢~

Now iOS Developer

| Comments

虽然有点晚,iOS已不再是遍地黄金,竟争激烈,但还是庆幸有这么一个机会。


Img:

作为Web开发者,曾被Rails的美迷倒了很长时间,但终归没做出些什么来,美不能当饭吃。而也一度耻笑过Objective-C的语法,但成功和美有时并无联系,就像PHP般。于是在一个不知算不算瓶颈的时刻,有了一个机遇。但对于我的人生哲学来说,尝试总大于百无聊赖。

其实还是有些不同的,在Web,除了典型的互联网,对一个土鳖来说,很难有些新的创想,而这恰是小程通往高帅富的唯一途径,哈哈,也是实现人生价值的一种有效途径,直接来说吧,就是活着不会觉得无聊。近来很多的idea都会扯到Mobile App,巴掌大的一块地方,但乐趣却总也挖不完。

移动也早已改变传统的技术架构。Twitter一直是要推荐的例子,后端早已成为了统一化的服务,而前端却千姿百态,重要的是,用户看到的总是前端,而用户的需求也众口难调,所以有了开放平台,有了各种创新团队和托管,后者在膨胀后被叫叫作了云。

当然,后端技术也日新月异,像大数据的处理。但相对于知识来说个人时间、精力总是有限,而从好玩实用的角度,前端更能让人创造,移动终端的普及创造了每日的新闻榜首,刺激着因工作、房价等疲惫的神经。

当然,一个完整的产品不会只有一个简单的应用,后面会有相关的数据通讯和开放平台的各种接入。和。其它非iOS平台,如Android, Windows Phone。。。哈,作为程序员,有时想多了,还真是苦逼。

Anyway,至少把电脑升级为iMac,倒也是一件让人欢乐的事。

四月午夜

| Comments

翻遍角落,还是没能凑够一块钱,其实没那么缺钱了,只是近来消费集中,加上朋友急用借钱,自己也想过下苦逼日子罢了。

九点多钟躺倒床上,发现早已不是早睡的物种,于是又起床,把迷笛被踩的满是泥泞的鞋给刷掉,衣服丢进洗衣机。拖地板,把几天的碗给刷掉~~

近来太忙,忙的有点心慌。坐下发呆时才意思到睡不着的原因。

转了新的Team去做iOS开发,作为开发者,我是喜欢这个决定的,但可能是太累了,兴趣不再浓厚。而且又是全新的东西夹杂着旧的繁琐,项目做的像大跃进,这样也确实没什么值得开心的事。硬找吗,就那台新的iMac 21吧,之前用27总被同事问到为什么你能用之类的话题,这下算是名正言顺了。

前两年总是觉得累,今年第一次感受到沮丧。可能开始考虑更多的缘故吧,而公司给不了更远的期望。呆的时间越久,越是一种卑微感。我不知她会向何方走,也不知自己的方向。

不过话说,新来的老外都是架构师,可能是因为他们英语好吧。

云南之行的第一周,每天6点起床,精力充沛,两周后的今天,9点钟还睡眼朦胧,头昏脑胀。同事说要转行时,我也心动不已。冲三年纪,是要为将来做点什么的。

打了杯豆浆放了超多糖,甜饮总能让我感到安定~ 明天生活继续,上班继续~