2012年5月17日星期四

display: none與visibility: hidden的分別

display: none - 隱藏後不佔空間
visibility: hidden  隱藏後依然佔空間

2012年4月21日星期六

Peter Thiel’s CS183: Startup - Class 5 Notes Essay


Peter Thiel’s CS183: Startup - Class 5 Notes Essay

Here is an essay version of class notes from Class 5 of CS183: Startup. Errors and omissions are mine.
Stephen Cohen, co-founder and Executive VP of Palantir Technologies, and Max Levchin of PayPal and Slide fame joined this class as guest speakers. Credit for good stuff goes to them and Peter. I have tried to be accurate. But note that this is not a transcript of the conversation.

2012年2月24日星期五

Advice From An Old Programmer

最近在玩python, 在看Learn Python the hard way時,看到作者一發人深省的見解,特此轉載

You've finished this book and have decided to continue with programming. Maybe it will be a career for you, or maybe it will be a hobby. You'll need some advice to make sure you continue on the right path, and get the most enjoyment out of your newly chosen activity.
I've been programming for a very long time. So long that it's incredibly boring to me. At the time that I wrote this book, I knew about 20 programming languages and could learn new ones in about a day to a week depending on how weird they were. Eventually though this just became boring and couldn't hold my interest anymore. This doesn't mean I think programming is boring, or that you will think it's boring, only that I find it uninteresting at this point in my journey.
What I discovered after this journey of learning is that it's not the languages that matter but what you do with them. Actually, I always knew that, but I'd get distracted by the languages and forget it periodically. Now I never forget it, and neither should you.
Which programming language you learn and use doesn't matter. Do not get sucked into the religion surrounding programming languages as that will only blind you to their true purpose of being your tool for doing interesting things.
Programming as an intellectual activity is the only art form that allows you to create interactive art. You can create projects that other people can play with, and you can talk to them indirectly. No other art form is quite this interactive. Movies flow to the audience in one direction. Paintings do not move. Code goes both ways.
Programming as a profession is only moderately interesting. It can be a good job, but you could make about the same money and be happier running a fast food joint. You're much better off using code as your secret weapon in another profession.
People who can code in the world of technology companies are a dime a dozen and get no respect. People who can code in biology, medicine, government, sociology, physics, history, and mathematics are respected and can do amazing things to advance those disciplines.
Of course, all of this advice is pointless. If you liked learning to write software with this book, you should try to use it to improve your life any way you can. Go out and explore this weird wonderful new intellectual pursuit that barely anyone in the last 50 years has been able to explore. Might as well enjoy it while you can.
Finally, I'll say that learning to create software changes you and makes you different. Not better or worse, just different. You may find that people treat you harshly because you can create software, maybe using words like "nerd". Maybe you'll find that because you can dissect their logic that they hate arguing with you. You may even find that simply knowing how a computer works makes you annoying and weird to them.
To this I have just one piece of advice: they can go to hell. The world needs more weird people who know how things work and who love to figure it all out. When they treat you like this, just remember that this is your journey, not theirs. Being different is not a crime, and people who tell you it is are just jealous that you've picked up a skill they never in their wildest dreams could acquire.
You can code. They cannot. That is pretty damn cool.

2012年1月31日星期二

類Ruby的loop

public static class LoopingExtensions { public static void Times(this int upperBound, Action action) { for (int index = 0; index < upperBound; index++) action.Invoke(index); } 用法: public static void TestRubyLoop(){ 50.Times(i => { Console.WriteLine("We Built This City..."); Console.WriteLine("We Built This City..."); Console.WriteLine("On Rock And Roll"); } }

2012年1月5日星期四

你不是真的想要100萬


一百萬元

上午,我在辦公室裡感覺有點憋悶,於是決定去活動活動腿腳,到街頭的拐角的商店裡去了一趟。我買了一大包薯片,付款時,我問櫃檯後的夥計干的怎麼樣。他長嘆一聲說「累,兄弟。我需要100萬,我要出去旅行一下。現在很不順。」他半開玩笑的說著他這周也許能中彩票頭獎的老故事。
他沒有告訴我更多的事情,我也不想去打聽,我告訴他希望他的生活好起來,付款走了。往回走,我不能驅散心頭由這次交談產生的陰霾。我知道當生活遇到挫折時是種什麼樣的感覺,想逃避,遠離這一切。有多少次,我曾對自己說,「如果我有100萬」。然而,慢慢的,我開始明白,這對一大筆錢的渴望實際上反映出的是一種思想的懶惰。

我知道,這聽起來很刺耳。不要誤會我:我同情這位兄弟,我並不想鄙視他的處境。並且我並不知道他現在的情況;也許他真的需要100萬來付醫藥費或其它的。但我懷疑。更可能的情況是,他只是歸罪於不好的運氣,在不好的心情中掙扎,把能得到一大筆錢當成唯一的出路。
在 《每週工作4小時》 這邊書裡,Tim Ferriss談到了一位投資銀行的朋友,這個人10年裡每週工作80小時來償還他的一大筆債務,當時他每年能掙幾百萬。Tim問他有了這些錢後將會做些什麼,他的回答是「到泰國旅遊」。
這個回答中蘊含的悲哀發人深省;有太多的人開始認為有了100萬後才能真正的過上你想要的生活。你知道有多少人都在希望著有100萬嗎?很有可能比你想像的要多。可悲哀的是,大多數的人並不是真的想要100萬,他們想要的是以為只有用100萬才能買到的東西。
在這些東西中最重要的一個就是:自由。
可是自由並不需要100萬。你可以改變,學著在現有收入條件下生活,攢錢,不帶任何顧慮的旅行、到海外,實現你的夢想。這世界每天都充滿著各種各樣的可能,而且越來越多。越多越多的人由於認為自己的想法真的可能實現而真的發現了自由和機會。Gary Vaynerchuk 在 Crush It! 這本書裡精彩的詳述了這些機會。
我在小預算的情況下在東南亞旅遊了好幾個月。我給自己打工,什麼時候想幹、在哪裡干都隨自己的心願,我沒有暴富的壓力。諷刺的是,當我冒險打破牢籠,不再等待,而是努力去創造我想要的生活後,三年裡,我的收入、固定資產、淨資產反而在大幅的增加。
這就是現實:如果你不是一個無需100萬就能創造自由的人,你也就很可能不是一個能夠得到100萬的人。因為它們都需要你具有智慧,自律和主動性等大多數人都缺乏的東西。
如果你真的想知道這是一種什麼樣的心路歷程,請閱讀《每週工作4小時》 和 Crush It! 這兩邊書。也許你並不能在這些書裡找到對你當前的處境有用的東西,但我可以保證,不管你是誰,它一定會激發出你的好奇心和新思想。我想下次當我在身邊再看到像這位兄弟這樣的人時,我一定會給他們每人發一本這樣的書。

旅行 寫作 編程


本文的作者Alex MacCaw
本文的作者Alex MacCaw
概括起來,今年到目前為止,我所做的事情包括:
  • 花了10個月的時間做世界環遊,途經非洲,東南亞,澳洲,中南美洲裡的17個國家和地區。這次旅行的主題就是衝浪和攝影。
  • 出席在香港,日本,美國和倫敦舉行的會議
  • 啟程時給O'Reilly出版公司寫了一本書,書名叫做《JavaScript Web Applications
  • 另外寫了一本關於CoffeeScript的書,很快就會由O'Reilly公司出版。
  • 寫了大量的開源庫,例如SpineSpine.MobileGFX, 和 Juggernaut.
  • 籌劃了一個創業公司的框架
  • 出席倫敦2011FOWA會議
  • 最後,我在Twitter公司找到了一份工作

那麼,讓我從一年前開始,那是2010年9月,我剛好從一個我合作創辦的公司裡出來,儘管這段經歷是很有價值的,但無休無止的長時間苦幹讓我精疲力盡。我回到了英格蘭,需要對未來做一些思考。我一直有一個夢想——移居美國(幾年就好),所以,我在Google記事本上寫了下面的話:
人生的選擇:
  去紐約哥倫比亞大學深造
    壞處 - 非常昂貴,並不一定能學到什麼真正有用的東西,無聊?
    好處 - 那是一個紐約的大學!
  寫一本書,申請 01 簽證
    壞處 - 需要大量的時間,有風險
    好處 - 對事業有好處,有趣
  等待。去紐約度一次假(3個月)。等待創業簽證。
    很容易 - 不是那麼有趣

也許選第二個,不行就選3?
最終我選擇了2,我已經對JavaScript web應用研究了很久,我要寫一本這方面的書,為什麼不邊做環遊世界的旅行、邊寫書呢?這也是我一個夢想呀。我從oneworld買了一份環遊世界的機票(比你們想像的要便宜),決定下周去我的第一站,南非。
環遊世界
如果你從來沒有到過非洲,你應該去一次。那裡的景色原始而美麗,對那些沒有體驗過這種景色的人,你很難用言語描繪明白。幾年前我就喜歡上了南方,那時我在東海岸做了一個為期3個月的衝浪旅行。這次,我只有一個月的時間,穿越特蘭斯凱,從開普敦到德班。當我在南非旅行時,我的寫作也開始了,把早期向O'Reilly提交的書的框架裡的數章填充了材料。
特蘭斯凱是南非非常具有鄉野特色的地方,到處是連綿的小山,一些小村莊和土堆的茅屋。他們仍然沿襲著酋長制度,有一個首領,大多數的當地人靠捕魚為生。我們在高低不平的土路上顛了兩天才到達我心儀的地方,一個美麗的海灣,叫做咖啡灣(Coffee Bay)。在那裡,我休整了一下,從網上下載了一些相關資料,為更遠的海灣遠征做準備。
我還清晰的記得我們走了數里地來到那個未開墾的海灘,我們從那些一個個被黃沙和小丘孤立的村莊穿行而過。有一個地方,我們要過一條大河,我們需要游過去,我把背包舉過頭頂,以免裡面的相機和iPod遇到水。非洲是一個讓你脫離塵世的地方,解放你的思想,重新認識人生最重要的東西是什麼。
特蘭斯凱風景
下一站是香港,在那裡,我度過了我的21歲生日,接著,我從陸路由新加坡到越南河內。很多人不相信香港70%的面積由自然公園覆蓋,我徒步走了幾條精彩的景觀路線,非常的精彩壯觀,比如:香港龍脊。有幾天,我在boot.hk這個網站上閒逛,這是一個協作工作的網站,我順便教了一個同行的遊客如何使用ruby。然後,到了夜裡,我跟Soho裡的一些衝浪愛好者狂歡到凌晨。
香港景色
從泰國到柬埔寨到越南是我這次旅行中做喜歡的部分,如果你從沒有到過亞洲,你絕對應該去一次。這些國家非常的漂亮,氣候非常的好,食物美味可口,人們非常友善。吳哥窟是世上最神奇的地方之一,每個人都應該去看看。是Trey Ratcliff的照片把我吸引到了那裡,我的很多其它旅遊目的地也是受了他的影響。那個傢伙是很多旅遊地的第一宣傳者。
吳哥窟景色
在一些無名的小博客中,我聽有人說過一個很遠的美麗的小島,在柬埔寨的海邊。說小島的Sihanoukville這個地方有個酒吧,說只能坐小漁船到那裡。我,還有幾個非常好的朋友,乘坐晚上的大巴,開始尋找這個傳說中的酒吧。搜索差不多進行了一整天,每一個問過的酒吧都把我們指向另外一個酒吧。最終,我們問了出來,並在第二天早晨做短程巴士去了那個地方。
柬埔寨風景
上面的照片上是海岸邊一個10美元一晚的小木屋。從當地居民區離開後,我們的隊伍像小島上唯一的人,我們隨性自由的奔跑。白天我們懶懶的躺在海灘上,吃著島上廚師準備的鮮美可口的水果沙拉,在夜晚,我們在到處是浮游生物的海裡游泳。
柬埔寨風景2
下一站是越南,我們沿著湄公河支流來到一個邊界上的小鎮,我們是這裡唯一的西方人,交流成了最大的問題。幸運的是,我們發現一個也許是鎮上唯一會說英語的人,他騎車當我們的嚮導。當我的信用卡被那裡的一個自動取款機吞掉了後,他提供了我很大的幫助!
越南風景
我們的隊伍分成了幾路,在我到達越南時,我的書正在按計劃完成,進行的非常順利。此時,我在西貢多待了幾週,讓我在書的好幾章上有了重大的進展,正好是中國舊曆新年,氣氛非常的壯觀熱鬧。
接著是日本,澳大利亞,新西蘭和夏威夷。我很難把我所有的感受都在這篇文章裡寫出來,但說這是此生難忘的一段歷程是不為過的。把如此多的美景都放到一個國家裡,太讓人讚嘆了,我說的正是新西蘭。我最喜愛的一段記憶是沿著Wanaka的一個湖邊在陽光下跑步,還有就是背著食物和生活用品,徒步數天穿越Routeburn的大山。在這個國家的旅途中,我結識了好幾個值得一生相伴的好友。這是一個真正的天堂。
就在我環繞新西蘭的南部島嶼時,我的書終於完成了,提交給了技術編輯校對。
新西蘭風景
接下來是紐約和舊金山,這兩個神奇的地方到處是天才的程序員,有些人我很幸運的認識。Techcrunch Disrupt辦的很精彩(我高度推薦hackathon)。
在從紐約到舊金山的中途停留期間,我在各種公司了進行了不少的求職面試,最終在Twitter公司找到了一份做前端開發的工作。要在那裡和傑出的團隊一起工作,我不能不高興的顫抖,而去舊金山,同樣也是我此生的一個夢想。
當簽證的事辦下來了後,我去了中、南美洲旅行,同時開發了我的一個小工程:一個JavaScript MVC框架庫,叫做Spine。我到了哥斯達黎加,巴拿馬,秘魯,Bolvia,和阿根廷。 秘魯是我的最愛,儘管那裡的海拔給我帶來了不少麻煩,我大部分的時間都在探險。下面的圖片是哥斯達黎加傳說中神奇獵鷹,是在我爬下世界最深的峽谷時拍到的。
Colca Canyon
當我在哥斯達黎加時,微博上有個叫Roberto的傢伙給我發了條信息,說他讀了我的書,問我是否有興趣一起衝浪。我欣然同意,坐上去聖何塞的汽車,在幾天後和他會了面。那天我們一起在他海邊的公寓裡開發Spine和Ruby項目,使用移動硬盤,用汽車電源給筆記本充電。當電量不足後,讓太陽能板補充能量,我們去衝浪。
哥斯達黎加風景
我推薦大家去寫一本書,特別是邊旅遊邊寫書。可以想像,如果我不去舊金山去看一看,我可能還在旅途中,做顧問,去創業。當作家並不能讓你直接的掙到很多錢,但它絕對能提升你的身份地位,給你帶來很多潛在的機會。事實上,寫作過程讓我真正享受的是,我可以認真深入的研究一個題目。
泰國風景
這一年是我這輩子目前為止最好的一年,而我感覺今後的一年會更好。當我如今定居下來後,我並沒有感覺旅行對我的吸引力減少了;我始終把簽證放到一個口袋裡,而另一個口袋裡裝著錢包,當召喚降臨,隨時準備離開。
可是,這篇文章並不是關於我的旅行,它是要發送一個信號:
對於程序員來說,有個得天獨厚的條件,就是這種職業可以遠程工作或邊旅遊邊工作,這是其它職業辦不到的。當然,也不都是這樣,在我的旅途中,我沒有碰到第二個跟我的做法相似的程序員。這種情況讓人悲哀。我想向程序員們送出的信息是,不要再找藉口了,行動起來,你可以做到。一個人只有一生,我可以向你保證,這樣的生活才不枉世間走這一遭。
就像我,我感到極度的幸運,能這樣的生活,去發現我的熱情所在,去做每天我喜歡做的事情。你可以看出,大部分我現在的境遇並非偶然或僥倖,這是計劃,追求,工作的結果。
一份汗水,一份收成。
這篇文章的目標不是做一些自我陶醉似的炫耀和大話,而是向大家演示如何立下目標,鼓勵大家去做相似的事情。想清楚你現在的處境,這一年內你想得到什麼,制定出一系列具體的能讓你到達這些目標的步驟。追隨你的夢想。