Liuw's Thinkpad

想要赢就先学会输,想要成功就先学会失败

Archive for September, 2010

Git实践小记

with one comment

从我使用Git与@liuhui998翻译Git Community Book的实践来看,Git是一个非常强大的工具。但是光有好工具是不够的,必须有好的工作流才可以保证协作的顺畅。

事出有因。我从liuhui998的仓库fork出来一份,然后开始翻译。刚刚开始在翻译的时候,我使用了一个分支liuw,然后在翻译完成之后,把liuw合并到master中去,然后push到github,再由liuhui998来pull。

liuhui998 pull了之后,也push到了他的github仓库。但是后来他觉得这样的分支结构有点乱,所以做了一个rebase操作。这下出问题了,rebase操作令得同样的commit有了不同的SHA1 ID,我在从他那里pull的时候,发现不能再进行fast-forward合并了。Progit中提到,“永远不要衍合那些已经推送到公共仓库的更新”,而liuhui998恰恰做的就是这样一件事。

在rebase之后,同样的commit内容有了不同的ID,所以在我pull回来的仓库中会出现两次,浪费空间。然后整个工作树也被搞得很难看。

当然,这也有我的一份责任,我在push之前,应该先把分支清理一下,自己先rebase好。

问题搞明白了就好办了,现在liuhui998的版本是最干净的,所以我直接采用他的版本就OK了。下面的upstream是liuhui998的github仓库,origin/master就是我的github仓库。

$ git reset --hard 5b9d65 # 回退到没有出问题的commit
$ git pull upstream master
... 可以直接fast-forward ...
$ git push --force # 改写origin/master,因为远程仓库原来被我搞乱了

很多东西,真是“纸上得来终觉浅,绝知此事要躬行”,看书都看到了,就是没有实际去做,也没有这个意识。

以后要养成好习惯,一是在发布自己的commit之前先进行清理,二是不要轻易rebase已经发布的commit。

http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html 有提到 RECOVERING FROM UPSTREAM REBASE。

Written by liuw

September 28th, 2010 at 12:07 pm

Posted in Tech

Tagged with , , ,

數學建模比賽感慨

without comments

四天半的比賽終於搞完了。

我完滿完成了打醬油的任務。

第一天,選題。我花了一天的時間看A題,基因的題目,應該可以用SVM或者神經網路來做。不一定需要很複雜的數學知識,但是專業門檻實在是高了點。一天時間看了很多生物信息方面的東西,但是還是有的問題讀不懂。而PY和DYF直接開始考慮D題。最後確定做D題,特殊工件磨削加工控制方案的設計。

第二天,鬧眼子三人組繼續慢慢吞吞地分析題目,查點資料。期間去和小崔老師聊了一下,瞭解了一點行業的背景,把原來一些荒唐的想法糾正了。回去吃吃喝喝又一天。

第三天,DYF提前撤退,留下我和PY兩個人(果然都是來鬧眼子的)。我做誤差分析的工作,他則開始修正DYF留下來的毛坯模型。PY期間多次自鳴得意,說用比較新的方法解決了問題,建立了統一的模型。

第四天,余下兩人開始打雞血,白天奮鬥一天,把大頭——建模——及第一個問題求解了。兩人晚飯后屁癲屁癲地把這部份送給老師審閱,然後出去買紅牛。回來之後,老師直接說“看不懂”,提出一大堆意見。我們再次打雞血,回去按照老師的意思改,一直到12點,基本搞好。之後開始解決余下的三個問題。PY大爆發,一直在解各種各樣的式子,我就做點打下手的工作(醬油黨)。

五天早上7點多,又解決了兩問,再次把稿子送審,老師評價“不錯,評閱老師就喜歡看這樣的論文”,於是兩人再次打雞血,狀態全滿。回去后PY搞定最後一問,而我做了修訂論文的事情。最後在11點之前把論文付印,風輕云淡地看著其他各組手忙腳亂地一邊被催一邊趕進度。從初稿的狗屎效果來看,我們果斷轉了個PDF去打印,期間各組要么用doc要么用wps,出現種種問題。

感慨如下:

1. 多人協作文檔用Word來做就是一悲劇,應該果斷上TeX+Git。

2. 做自己覺得有趣的事情,就不會覺得累。

Written by liuw

September 21st, 2010 at 10:53 pm

Posted in 生活

Tagged with

正則表達式中*和+的來歷

without comments

看龍書的時候發現原來正則表達式中的*和+是指語言學中的語言運算。

一個語言的Kleene閉包,記為L*,就是將L連接0次或者多次后得到的串集。L^0即為空串。

正閉包,記為L+,就是Kleene閉包不包含L^0。

Written by liuw

September 17th, 2010 at 11:03 pm

Posted in Tech

Tagged with ,

階段小結及新的計劃

with 2 comments

原來決定是暑假這段時間把ULK3看完的,事實上比原定的計劃晚了幾天。現在終於是把這本書草草地看完了。LDD3大概看了一轉,平時用不到,我更喜歡把它作為一本手冊來用。LKD2看了好幾遍了,穿插于那兩本之間,有的東西互相引證,每次看都會有新的收穫。

其實對於內核的理解,看完這幾本書之後也只能說是剛剛開始,我也希望能隨著項目的進一步深入去加強自己的理解,需求推動才是王道。新的學期,按照計劃應該是需要找一些小的安全點來實現一下,應該還是有機會會用到一些內核知識的,那就當是練手吧。

近來和朋友們聊天,發現自己對於應用的理解是很膚淺的,一些基本的概念都不知道。雖然暫時沒有搞應用的想法,但是一些基本概念瞭解一下還是有好處的。所以對自己的要求就是多向他們學習,開拓眼界。

坦白地說,我并不認為做底層比做應用更加高深。底層技術是收斂的,一些基本問題、基本模式已經很長時間沒有改變了,Challenging的地方在于底層系統關係複雜、難于調試和開發。個人覺得需要在底層方面得到突破是需要很長時間積累的,一是需要有發現問題的能力,二是需要有解決問題的能力。這兩個方面的能力,自認為還是很欠缺。應用技術則是發散的,更加貼近現實,貼近End User,需求會快速變化。而且,應用系統都是自成體系的,不同的系統,問題不一樣,Challenging的地方也不一樣。這就需要搞應用的人有很強的學習能力、分析能力,能夠適時而變。

就我自身來說,我一直以來不喜歡搞應用,就是因為我覺得這些一套套的框架、模式,學習起來太費時間,以后不一定可以用到。但是現實看來,我這樣的選擇,使自己知識面過小,不利于發散思維的培養。所以以后一個基本的定調還是,不會拒絕應用方面的知識,甚至是有意識地去做一些東西,發現一些自己從來沒有考慮過的問題。

再進一層的,既然是談研究生,我還是希望能夠得到一些理論上的進步。其實我基本不指望國內的學校能給我多少的東西,還是自學的靠譜。我考慮選取編譯原理、人工智能和數據挖掘作為下一階段的自學方向。編譯原理是基本理論,從我目前遇到的問題來說,很多都可以從編譯原理中得到思路,而且它也可以為後面兩個階段打基礎。人工智能和數據挖掘是搞“應用”中比較有意思的問題,所以值得去研究和學習。

目前的定調就是這樣的了,希望自己能按照計劃好好執行。

Written by liuw

September 2nd, 2010 at 11:34 pm

Posted in 生活

Tagged with ,