簡介
因為寫 ext-blog 的原因,慢慢喜歡上github_ 。然后突然有一天產生了一個想法:如果可以把自己的博客_ 和 github主頁 集中到一塊展示給別人,會不會是一種很方便的自我簡介方式?然后我就動手寫了 codertrace.com 。
所以, codertrace.com 這個網站的作用就是用來集中讓程序員炫耀的。它通過RSS抓取,將你的博客,github主頁,或其他有RSS輸出的信息集中到一塊展示給別人。這些信息通常就可以代表一個程序員。
如果你是程序員,也不妨試試。
技術信息
不知道哪個王八蛋說的,程序員每一年得學一門新語言。我2010年末接觸了Lisp,然后莫名其妙地寫了 ext-blog ,又莫名其妙地在2011年末接觸了Ruby。因為大學期間太癡迷C++,我勤奮努力,幾乎通曉這門語言的各種細節;后來又稍微實踐了下編譯原理。在這若干年間,斷斷續續也接觸過其他腳本類語言,我甚至在android上用java寫過幾個 小應用 。基于這些積累,我發現我可以很快上手Ruby,然后再上手Rails,然后就有了 codertrace.com (當然還做過一些小的 APP )
所以, codertrace.com 就是一個Ruby on Rails的應用。當我用這貨來做WEB的時候,我才發現曾經用Lisp寫博客是多么geek。這種感覺就像你在用匯編寫一個GUI程序一樣。我的意思是,ruby/rails的世界里有太多現成的東西,但lisp的世界里沒有。
而且,ruby是一個很爽的語言。我太喜歡它的closure語法,簡潔,不需要加其他關鍵字就可以構造(例如其他語言map(function (item) xxxx end),或者map(lambda (item) xxx ))。但我不喜歡在使用的地方通過yield去調用---這就像一個hack。我更不喜歡ruby用proc去封裝closure。好吧,這其實是我自我分裂,為什么我要把ruby看成一個函數式語言?
腳本語言真是太酷了。
服務器信息
我很窮。不管你信不信,我真的舍不得花1000RMB買個VPS來架設 codertrace.com 。目前, codertrace.com 架設在 heroku.com ,而且還使用的是免費服務。免費服務竟然只有5M數據庫。 codertrace.com 后臺為了異步抓取用戶提供的RSS,還使用了一個單獨的進程(delayed_job ruby gem)。這也不是免費的。
但ruby的世界里有太多現成的東西了,甚至有很多現成的庫解決這里的兩個問題:heroku_external_db,這個gem可以讓codertrace使用heroku以外的數據庫,然后我就在我的VPS上搭了個mysql,這下流量和網站響應速度悲劇了啊,你想你請求個頁面,這個頁面直接涉及到若干條數據庫查詢。而這些查詢的請求和回應竟然是通過internet網絡傳輸的。
workless,這個gem可以在有異步任務時,例如codertrace上讀取RSS,就會自動開啟這個worker進程,然后heroku開始計費,當沒有任務時,它又自動關閉這個進程。雖然省了美元,但再一次讓網站的響應速度打了折扣。
為了實現自定義域名,我需要將 codertrace.com 指向 heroku.com 提供的IP。但也許你會同我一樣憤怒,因為它提供的幾個IP都被GFW墻了!所以,目前的實現方案是,我將 codertrace.com 指向了我博客對應的VPS,然后在VPS上使用nginx反向代理到 heroku.com 提供的IP。即使如此,我最近甚至發現 codertrace.com 竟然神奇般地會域名解析錯誤,難道godaddy的name server也要被GFW和諧??
故事
作為一個宅男,在工作的若干年中,若干個假期我都用來打游戲,或者寫程序。
所以,當這個成為習慣的時候, codertrace.com ,就順理成章地消費了我今年的春節假期。我發現一個人窩在租的小房子里寫代碼是件很爽的事情。在當前這個社會環境下,你可以專注地去干件喜歡的事情,還不用處理各種生活瑣事,真是太爽了。
但為什么我平時得不到這種感覺?因為,我,是一個沒錢的程序員。我和我老婆租在一個標間里。在這樣狹小的空間里,多個人就是多幾倍干擾。這太殘酷了。
末了
曾經我以為我很牛逼,曾經我以為程序員很牛逼。后來我慢慢發現自己很垃圾。我沒有寫出來過牛逼的程序,大概也沒能力寫。還記得那個程序員的故事嗎?就是有個傻逼也以為程序員很牛逼,但不幸在一家非IT公司的IT部門工作,他的程序員同事的工作就是每周填個excel表格。他后來很絕望,因為他沒有為世界貢獻過任何代碼。后來,這貨丟下一切,坐上去某地的飛機走了。