Wednesday, 19 January 2011

New stuff I've tried

1. iPhone 3gs

It's way faster than my old iPhone1. I'm doing research on how to bypass GFW on iPhone.

2. Macbook Air

It's a whole new stuff. Not quite used to it, but my instinct tells me it will be fantastic as Emacs.

I use ssh to bypass GFW. Since I've loads of linux servers, I just download 'Secret Socket' from Apple and connect to one server, bang, I can go blogspot now.

Friday, 31 December 2010

Memo of 2010

2010年的元旦在哈尔滨度过,那是我迄今领略过最痛苦的寒冷,当然,是肉体上的。那里四处都冒着蒸汽,很多地方都结冰,人们穿着厚厚的深色衣服,出租车司机会在半路停下拼车。

春节去了西藏。从那里我开始认真思考旅行这件事的意义。之后我常常和人提起青藏线格尔木到拉萨那一段的风景,因为那确是我见过最美的地方。“西藏最有魅力的是藏族人”,我不同意赵嘉老师关于摄影的很多观点,但他对西藏的这句描述我很赞同。

三月中旬从百度离职。关于百度,舆论有很多负面的评价。就我看到的而言,对于员工来讲,百度是一个开放,公平的公司,能者居上,勤奋和才华在这里会得到奖励。离职是因为我不喜欢这份工作对生活的影响,且有太多的事情想尝试。

四,五月份开始做化妆品零售,做过很多努力但终于失败。这件事情中,我明白世界上有很多人的不靠谱程度超过了自己的想象,要极力避免这类人成为自己的合作伙伴。

六月份去了甘肃和青海。我很喜欢甘肃,空气新鲜,水果甜美,到处是大气的风光。在西宁丢了钱包,包括所有的银行卡和身份证。那是我在旅行中遇到的最大困难。当时身上只剩几十元现金,在机场有个姐姐借了我1000元,做火车回的北京。中途还去西安吃了肉夹馍。

八月和九月在干两件事情。一是做网站,目的是学习下技术顺便看看能不能赚钱。二是整理照片参加摄影比赛,想看看靠奖金能不能生活。在我的努力中,这两种赚钱方式都很失败。

之后去了内蒙古东部和大兴安岭。季节赶得不好,正是青黄不接的时候。这次旅行之后,我开始对salsa失去兴趣。后来我想,最重要的原因是跳舞的时候感受不到和舞伴间的交流,让我不安惶恐。跳舞和做爱在这里很相似,情感交流是一个最基本的条件。

整个十月都在忙Google的面试。面试出乎意料的简单,自认为面的很好,自以为十拿九稳,都开始考虑入职后用mac还是thinkpad了,结果HR电话告诉我她们很sorry。从此我深切地体会到,再有把握的事,也得给自己留后路。

至此,2010年已经背到极点,人品基本没浪费而且攒了不少。带着被Google据掉的深重苦恼,我在十一月中旬开始了这一年最长的一次旅行:西南环线。从北京到银川,之后到西宁,坐火车进藏,从拉萨开始走川藏线,经过梅里雪山到丽江,从昆明到桂林,之后回北京。用了将近一个月时间。川藏线很艰苦,有时候要用一天时间才能找到车。常常满怀期待地到一个地方却发现不过如此,而不经意间倒常常遇见特别的精彩。想想人生也是如此。凡事按照自己的想法认真去做就是了,虽然这些努力很可能和结果无关。无论如何,安心接受事实就好了。这么说不是因为看得开,而是未来还有很长。任何结果都是一时的风景,前途一定有更好的地方等着被发现,只要一直向前走。

十二月开始了全年最靠谱的项目。非常感谢很多朋友长久以来的支持和信任,没有这些帮助,我的自由职业者生活是无法实现的。未来一定会有很多的困难,我所能做的只有认真去面对。

总的来说,这是不顺利的一年,希望人品没白攒。事业上大致如上,持续的阴暗后有了一点好转的迹象。最重要的经验是,人脉非常重要。主要的信息和机会,都是通过面对面的交流获得的,互联网,个人能力等等都是次要的。感情方面完全狗血。我很怀念校园时代,大把大把的漂亮女孩,她们笑容清浅聪明有趣。毕业后认识的异性,往往礼貌周全却只想敬而远之,这还算是比较好的。

人生好像一场旅行,一时的欢乐和痛苦都很肤浅,因为路途会继续延伸,眼前的这些无论好坏,终将一去不返并成为记忆。

Thursday, 12 August 2010

snippet 2010.08.12


1. Refined messpic's blog. Turns out scrollHeight doesn't work for Chrome. clientHeight is good for both FF and Chrome. Hopefully IE7 will support it.

2. Retouched a photo yesterday.

3. Start to use SVN in Google code to manage my source code. It's after I lost some of them when writing to NTFS from my linux box. Lost a day's work....

Wednesday, 11 August 2010

daily snippet 2010.08.11

1. Get the blog of messpic.com ready.
I wrote blog in blog.sina.com.cn and display the posts in messpic.com. There's a problem. Sina has a anti-hotlinking facility. After some research, I find it's based on HTTP request's Referer header of each tag. Only unset referer of erferers from inside Sina will be served. I hacked it via proxy. One of my appengine's URL is appended to each of the post's 's src attribute. The appengine I request each original URL using urlfetch. By default urlfetch's http request doesn't set Referer header, so the images will be returned.

Saturday, 7 August 2010

Things need to complete before choosing whether get a job.

1. Finish the SNS project. At least integrated four sites: renren, kaixin, qzone and MSN.

2. Finish the fight-training.

3. Setup the photo studio.

If all has been done and both project won't get profitable. I may consider getting a job. But not in big corp, not as Eng.

Friday, 6 August 2010

daily snippet 2010.08.07

messpic.com is ready for release. Don't support IE6 though.


Thursday, 5 August 2010

daily snippet 2010.08.05

1. Investigate a little bit about Javascript's closure. MDC's explanation is the best. Some nerd wrote a very geeky one. It's highly technical and hard to understand.

2. Optimized the photo display in main page of messpic.com

3. Get my ID card back making fake ones.

Monday, 2 August 2010

daily snippet 2010.08.02-2010.08.03

1. Build my portfilio. Would deploy in this week, without blog.

2. A very good way to create water color paint in PS.

3. When using PS's batch function, it's better the path doesn't contain non-English characters. In my case, PS CS5 in Windows XP will complain the directory don't exist if the path has Chinese character.

Tuesday, 27 July 2010

daily snippet 2010.07.27

1. Fix the work station. It can't fire up monitor. Turn out that the vedio card is broken. The vendor just give me a new one.

2. Learned a cool PS technique: create realistic water surface in PS. Below is my homework.
3. Watched Toy Story 3. It's good but not as the comments.


Monday, 26 July 2010

snippet 2010.07.26

Investigate how to build a portfolio. Learned several PS tips.

1. SimpleView is a flash-based web portfolio. It can be embedded into HTML easily.

2. A guy invented a way to make ordinary photo look like infrared photography.

3. A unique way to make skin smooth while retain texture.

4. Subject extraction and fine-tuning with mask.

Tuesday, 22 June 2010

Programmatically log on to a website using GAE(Google Appengine)

In GAE, urllib2.urlopen() series methods eventually call GAE's urlfetch() to do the job. At the time this post is written, there's no way to let Urlfetch understand cookie.

After some time, I found a solution here. It worked fine by far. Maybe some day I'll improve his class to some extent. My next app will heavily use this function.

Monday, 14 June 2010

How I bind custom domain name for GAE(in China mainland)

This is the third day spent on binding my custom domain to my app. I'm exausted and want to record the path I've gone. According to Google's manual page, this task should be very easy, which is true, for users OUTSIDE of PRC of course.

1. I tried as Google's official method, namely adding a CNAME to ghs.google.com from my domain admin tool and other stuff. This doesn't work for people in China because their goverment has blocked virtually of IPs of ghs.google.com.

2. After some googling I found loads of pages wrote by Chinese guys tring to solve this problem. They simply add A record pointing directly to one of the IP of ghs.google.com which was not blocked by the GOV. This is bad since using ghs.google.com is for load-balancing. Actually, this method won't even work since all IPs were blocked.

3. I tried DNS forwarding. Failed because no DNS server in China provide URL forwarding service and yahoo.com's forwarding service is blocked by GOV.

4. I figured maybe I'll have to use a third-party host to redirct for me, via the famouse .htaccess config. So I started searching for web hosting service. There are bunchs claiming to provide free web hosting. None of them function after the long registeration process. In fact, they share similar signing up UI and even identical tone when persviding you to their paid service. I spent more than one whole day registering various 'free' web hosting sites and almost want to kill myself in the end. The case is better in China, first there's no free providers, and the charging ones need some lisence from GOV. We are so living in a free country here!

5. Finally I found a free DNS forwarding service that is not blocked by our dear old GFW. I can't reveal its name in case our human rights activists will use it too much and bring GFW to shut it down. Yes, it worked.

I must say googling all day is not much fun and made me throw up. All the tools I used building the app is free, but using them in China need us to pay extra labor. Thanks to this great goverment.

Wednesday, 21 October 2009

Found a bug in emacs ange-ftp(used by tramp)

Ever troubled by tramp asking you the question

"changed on disk; really edit the buffer? (y, n, r or C-h) "

every time you try saving the file in a remote server? Unfortunately, I had been haunted by it for two months.

Emacs 23 and Emacs 22's tramp, when used in ftp method to edit file in a remote machine, has the problem above. The solution is simple.

1. Open your ange-ftp.el.gz. Mine is at ~/local/share/share/emacs/23.1/lisp/net/ange-ftp.el.gz.

2. Find the line
(restore-buffer-modified-p mod-p)
And comment it out using ;;

3. Save ange-ftp.el.gz.

4. Add a line in your .emacs:
(load-file "~/local/share/share/emacs/23.1/lisp/net/ange-ftp.el.gz")

Restart emacs and it should be OK. This solution is kind of ad-hoc but it works perfect for me. The saving modified file trigger will still be there when it should. I'll take further investigation to it during my leisure time.

Sunday, 4 May 2008

不做戏子了

很jn去了圆明园,初夏的生机并不适合那里的气质,散落山间的欧式巨石废墟以及水草蔓延的湖都属于秋天的萧索或者严冬的坚硬。聊了很多关于寂寞和独处,简单记下我的心得。

回想小的时候其实是很内向的孩子,从不主动说话的。后来被环境灌输了一种认识:外向开朗是优秀的,内向不好。在此后漫长的岁月里逐渐变成了一个很喜欢表达的人。表达是一件使人感到舒服的事情,和某种满足感紧密相连。于是便成了现在的我。

然而我现在更愿意相信,那种抓住任何机会表达自己感受的品性,其实才是劣等和浅薄的。那样的感情往往是虚伪,至少是幼稚的体现。深刻丰盈的感情使用克制来表达而不是高昂的声调或者标新立异。

我需要获得这样一种品质:分清内心世界和外在的客观世界,哪怕内心已经崩溃到一片狼藉,依然有力量维护客观世界里的自己。让我想起“美丽人生”的故事,纳什需要辨别出自我想象出的人物和客观存在。在一些意义上,我们每个人都有和纳什同样的困扰,往往在生理上我们是健康安全的,没有来自温饱或者生存的压力,毁灭的力量来自我们的内心。那是我们无法逃避的艰难,每一天我们都要经受考验。

当内心承受痛苦时,努力完成客观世界对自己的期待,可以出于责任感,更应该处于对于自身生命的尊严和骄傲。这是一条修炼的旅途,或许彼岸既是救赎。学会独自承受内心的痛苦,不必依赖任何人,直面自己的苦难,学会通过调节战胜将内心拖入沉沦的力量。

Saturday, 3 May 2008

“对于生命更大,更坚定的信心”

我想我需要如实地记录下来自己的感受,可以让事情模糊不清,但对于感受必须力求准确,不刻意使用自认为优美的句子或某种动人的风格,寻找属于我的语言。我需要将这些过程作为发现自己的努力,尝试透过层层的记忆,去发现隐藏于背后的关于我自己和这个世界的真相。

这些天时常会感到压抑,不知道是因为Google的工作压力还是对zz的感情,如果确有感情而非我的幻想的话。我总是很容易对一个漂亮的女孩动感情,受到一些类似牵挂或者换得患失的情绪的控制,但来的快去的也快。这是令我厌恶的自己,也有一点点怜惜。也正是这个自己,使得我很难和有好感的人相处,好感越强烈就越困难。我会不由自主地做出讨好取悦对方的举动,然后紧张地等待对方的反应,对“人家不喜欢我”的任何证据保持敏感,并由此引发各种悲观的胡思乱想。往往是别人其实丝毫没有褒贬的意思,自己心里却几度波澜。

这不是好的或者说成熟的心态。“无欲则刚”,什么是欲呢?我想,“欲”里面有希求回报的意思,比如我若对她有二分好,就会期待对方换我一二分,我若牵挂她就一定希望她也挂念我,若是发现相反的证据便立刻生出不好的情绪,可能是伤感,可能开始怀旧,可能对周围失去热情,可能感到压抑。这种“欲”也许可以被一种更无畏的或者更宽容的态度所取代。看到一句话,“生命的意义在于奋斗,而不是索取”,如果把它稍作延伸,是不是可以说,我们的快乐应该建立在付出上而不是建立在回报上?我想对于工作和感情,这都是极好的态度。认真做事,从中发现乐趣和责任,看到简单事情的深度和广度,因自己的专注而感到充实;真心地待人,包括普通的朋友,自己喜欢的女孩子,以及吸引我的各种人。摒弃“我对她好而她不理我我就一定不能再理她否则是犯贱的逻辑”。用真诚取代目的,处于诚意的讨好才不是取悦,否则只会招来鄙视,或者来自别人,或者来自自己。

Monday, 31 December 2007

2007:等待抑或救赎本身

2007年始于繁忙的考试和学生时代最后的热情,2007年终于旧日同窗三年后的再会和一曲明天会更好;有些已经改变,有些已经延续了很多年,熟悉到觉得陌生。

2007年只演了一场戏,每天晚上到政管排练,仿佛奔赴一个前世的约定。在一个用镂空格子围成的会议室里,纵容想象的空间。后半年在公司和学校间周旋,没有时间参加剧社的活动,其实是丢掉了热情。十二月看到一篇写剧社没落的帖子,给张洛写信说想一起演戏,没有回复。他马上就要去香港入职,瑞银。

在接受被Google据掉的失望难过后,矜持了近两年的实习offer们开始向我微笑。最后去了微软,6月25日入职。想想世上的事情经常如此,急切地想得到的偏偏不给你,看的很淡了倒会自动送上门。在公司学会了很多,主要是观念和想法上。技术水平或者业务能力其实远没有想象的重要,到同一个公司里的人业务水平其实差不多,职业精神的不同决定了发展的空间。之前的一直做ACM然后进Google的想法,现在看来颇为荒谬了。“世事洞明皆学问”,很多小事其实暗地里很大程度影响了日后的自己。往往是性格决定了那些事情的处理方式,“性格决定命运”看来是有道理的。不论是对实验室还是公司,决定认真做一个负责的人,纵然是繁琐无聊的任务也必须全力以赴地做好。事情本身,不论是感兴趣的有挑战的,或是相反的,其实过后都不会有太大意义,而自己做这些事的态度在不停地告诉周围的人你是一个什么样的人。

十一的时候去深圳看王中华。那里依然是北京八月的天气。我穿过炎热而繁华的城市找了很多地方才发现一个花店。我们一起去逛街,路边有高大的棕榈树。最后一天我买了漂亮的玫瑰,在图书馆里她要我把花送回去,我说“你是要我把花送回花店吗?那时间能不能回到三年以前”,三分钟后她掰断了笔,笔水撒了满手,三十分钟后,她在图书馆的门前痛哭流涕说怎么办怎么办,说从没有像此刻那么信任我。一个多月后,我从北京给她打电话,聊了快两小时,对我来说做她的好朋友比做追求者快乐幸福得多。总结一下这场持续了三年半的单相思吧:起初是好感,但这种好感对于气质优雅声音甜美的女孩都会有。问题的关键是之后经常读她的文字持续不断地加强了对她的美好幻想,加上当时很自卑,不敢过去示好,凭空多了绝望伤感,幻想加上伤感的渲染竟成就了今生最柏拉图的情怀。她其实只是一个小气的聪明女人,从这一点观察我可以看透她。看透了,终于可以落幕。

很多人来来去去,光影流离的一年,时间轰轰烈烈地呼啸而过,在嘈杂中某种心情会倔强地破土而出,而在一个毫无征兆的午后随夕阳沉入海底。冬天去看了孟京辉的戏,我和一个女孩走过繁华而寒冷的步行街,在沉重的雾霭中我向她询问一场救赎的可能性。夏天的时候我和很多女孩在俄文楼的草坪上读《等待戈多》,那是一个漫长的下午和漫长的等待,戏里戏外都生出了一些是非。有一个魔鬼被封禁在瓶子里,在大海的深处等待她的救赎,等了四百年,她其实是在找;“惊情四百年”里的吸血鬼在时光的阴影中寻找爱人的消息,等到以后决定放弃。有些心灵强大到可以自我拯救,有些则必须借助另外的纯洁灵魂来重生,他们因此必须等待,与寻找无关的等待,一年或是四百年。

十二月看了《明朝那些事儿》,除了精彩的讲述,我只看到无数命运的拐点和强大的内心,人生如戏,越是向一个方向高速奔跑的时候越接近命运的峰回路转。正面是不以物喜不以己悲,反面是不安和不甘。《基督山伯爵》里说“等待和希望”,简单讲,就是只要在剧变的反复冲击下内心不崩溃,总能缓过来享受上帝安排的盛宴。

过去的路已经走到终点,新的方向正徐徐展开。

Sunday, 9 September 2007

2007-07&08 时间快得来不及回忆

工作忙碌而盲目。同事都很出色。同在一个cubicle的另外两位intern都是非常出色的程序员,和他们在一起学到了很多东西。我想在Microsoft是拿一流的工资,和一流的同时一起做三流的具体工作。可能很片面幼稚了,不过这是现在的想法。

Saturday, 21 July 2007

徒然

年轻的时候谁也无法和自己匹敌。每一次漫长的忘记或自欺欺人的努力失败后,都如同从一场长眠醒来。寻找或者重新解读都无济于事,好像用手去捕捉风。

好在不是道德高尚的人,可以从性的缝隙窥望爱情的伤痕和累累奄奄一息然后默不作声地看日升日落。我伤害了谁愚弄了谁,谁该对我的绝望负责,我又将接受什么样的惩罚和审判?我每日看到无数的人辛苦并满怀希望地去寻找。他们相信着什么,相信着美好的什么。我已找到了那个箱子但是里面空空如也。

原来还是会心跳,扑通扑通地,只要她的一条短信。多么可笑而可怜。这是我最最致命的一点,究竟是命运安排了日后要所向无敌还是在内心深处悲壮地死去?

Saturday, 7 July 2007

2007-05-06 一边繁华,一边老去

这些日子残存了春天最后的纪念,今日回忆似乎已经久远。然而发生的一些却一定值得记下,因为很丰富,也因为会是日后经常参考的起点。

5月的后半段在各种实习申请中度过。都很顺利,微软,IBM,酷迅给了offer。一年以来的实习申请终于有了历史性突破,想想当时把IBM的实习看得那么神圣,简直是笑话。对于技术面试有了一些心得,实力是关键,实力来源于non-trivial代码的数量。随后准备到微软入职的种种,在南沙滩租了房子。去和导师谈判,对他们和实验室的环境有了进一步认识。6月底入职,工作环境很好,同事也非常nice,只是工作很boring,架设服务器,希望supervisor回来后会改变。希望以后每周可以完成10道POJ,这样在毕业前我就可以完成10K行ACM代码。

工作的日子很充实,思考的时间少了很多。经常在公司待到很晚。有时候觉得一个时代就这样结束了,不会有很多的热情对某个女孩,不会期望某个浪漫的邂逅。过去的已很丰富,需要耐心等待和寻找。如果她终于没有我感受到的,如闪电和梦幻,如犀牛渴望草原,那么命运从一些角度对我很刻薄,要么就是注定了我要学会从有利的角度解读命运。无论如何,作为坚定的机会主义者,我选择用机巧满足自己的同时坚守理想的任何一线生机。甚至会对过去的痛苦感受有一些怀念,能从中解脱,亦是成熟,亦是老去。

一直在读曼昆的经济学原理,是很有意思的书。

Wednesday, 2 May 2007

From n to n-1

For most DP and searching problems, it's vital to reduce the original problem of size n to a new problem of the same the with size n-1. It's gennerally good if a f(n) problem can be solved by a constant number of f(n-1) problem, resulting a DP. If we can only reduce it to h(n) problems of f(n-1), often it's an exhausting searching problem where pruning or memorizing technique must be used.

Of course, “n” mentioned above is not confined to an integer. It may refer to a pair like (p,q), if f(p,q) can be solved by solving f(p,q-1), it's also a DP.

Let's illustrate the above idea with an example. f is a function mapping a sequence a1, a2, a3, ..., aN to a value. If we can find a g, s.t.

f(a1,a2,...,aN) = g(f(a1,a2,...,aN-1))

and g is easy to compute(which is often the case), we are in a happy situation. If, on the other hand, we have to solve each N-1 sized problem: f(a2,...,aN), f(a1,a3,...,aN), f(a1,a2,a4,...,aN), ..., f(a1,a2,...,aN-1) before we know the value of f(a1,a2,...,aN), it's a costly search problem.

Unfortunately, the ideal reduction is often difficult to find while the costly one is almost always at hand. More often than not, the problems we face can be solved far more efficiently than we are first willing to believe.