2007年12月22日
想搬到BlogBus 去
理由如下:
1、BlogBus 速度很快
2、BlogBus 可以提供很好的API 調用,我可以利用JavaScript 整合許多別的應用功能
3、BlogJava 這里的編輯器老出問題,還是我的FireFox 有問題?整得我很不爽
4、我的博客現在不光只有技術了,也不光只關注Java系列的了
新的地址為
http://phoenixtoday.blogbus.com/
看了部電影《鋼琴之森》,卻被它感動了,觸動很大,或許有些話說到心坎里了吧。
故事講述了兩個孩子,一個叫“海”,另一個叫“修”。他們都會彈鋼琴,“海”家里窮,卻從小與森林里的鋼琴一起長大,對他來說鋼琴是親人,是樂趣,是享受,鋼琴是給自己彈的,鋼琴是存在于他每一個細胞中的;“修”從小練鋼琴,從生下來,鋼琴對他意味著日本第一,意味著成功,但鋼琴就是他的敵人,為了鋼琴,他放棄了太多太多,他刻苦練琴只為超越別人,拿得第一,彈鋼琴意味著只要不出錯,就是完美。森林里的鋼琴卻只有“海”才能彈響,無論“修”如何努力,森里的鋼琴選擇的只是“海”。
這個電影,先引發了我的回憶。記得小學我第一次擁有的學習機,大部分時間,我是把它當成游戲機的,可是看著那些動來動去的小人,心里總會犯嘀咕。后來,就照著學習機書本上的,照貓畫虎的寫了那么幾十行還是上百行的類Basic 程序,看著自己寫出來的“超級瑪莉”可以左右移動,還真的是有些激動,可是那時候的激動,卻遠遠及不上本科之后的那一次。第一次接觸真的電腦是在初一,一個電腦培訓班里,對電腦有了概念,大致上就明白了一些基本操作和原理;后來有時會去網吧,再后來在初三擁有了自己的第一臺電腦,從此才走上了正軌。有了第一臺電腦后,不光用它來玩游戲,還開始買《大眾軟件》,慢慢的會的基礎知識越來越多,游戲也玩的越來越多,可是卻遠遠滿足不了自己的好奇心,到底這些游戲是怎么做出來的呢?初三的那一年,我將自己的理想從“科學家”細化為“計算機軟件學家”,呵呵,當時真的不知道有程序員這個詞。大學報志愿,義無反顧的報考了計算機專業,大一第一學期末,用C 語言寫出了自己平生第一個程序,望著幾百行的main 函數,看著屏幕上閃動的“Welcome” 心里真的激動的不知道說什么好了。本科的計算機真的是偏理論也偏硬件,讓一向好強的我,為了在學業上有所作為,硬啃那些不喜歡的東西,好不費力!大一、大二真的是迷茫,走了不少彎路,直到大三開始學Java ,開始自己尋找興趣的出路,才逐漸有了自己的發展。從小到現在,這條路走的還真的彎彎曲曲,沒有得到多少人的幫助,沒有得到好老師的指導,一切靠自己摸索,就為了心中那兩個字“喜歡”。
“海”的那句“彈琴是為自己彈得,不是為別人”,讓我想到了自己。是啊,我寫程序,研究技術,從來沒有想過為任何人,就為了自己那份喜歡,當然這不是說,我寫好的程序給別人帶來了快樂,減少了別人的工作量我不開心,而是當初就壓根沒想到,就是想這個場景可以用自己喜歡的技術,可以這么做,可以做的更好,可以解決以前遇到的問題。而這幾年,身邊遇到了很多朋友,有時也跟他們交談,大部分人給我說他當初選擇計算機的原因是因為“熱門”,少部分的人則是因為“這個行業可以賺錢”,還有幾個人我認為是為了“超越身邊的人”。這些人,從來沒有覺得自己是真喜歡這個行業,這樣做是有趣的,他們的動機都是由外在因素引起的,必然不會長久,無法堅持十幾年、幾十年,甚至一輩子,因為熱門的條件會改變,別的賺錢的機會未來會更多,身邊的強人你永遠超越不完。捫心自問,這真的是你喜歡的嗎,它對你來說真的是有趣的嗎?如果這個行業只能給你保證溫飽,就像很多數學家窮得叮當響,你也會義無反顧的堅守嗎?
“如果你彈不出自己的舒伯特,遲早有一天,舒伯特會找你要回曲譜”,是啊,如果你設計不出自己真正想做的程序,那么你的所學所做,又有什么意義呢?而你如果不喜歡自己現在所做,那么將來,你還能做出自己想做的嗎?“海”為了彈出自己的舒伯特,每天除了練琴還是練琴,加上自己固有的靈性,最后終于成功。“興趣”和“愛好”對于你所要堅持的行業來說,是遠遠不夠的,你能夠在別人享受生活的時候,自己安靜的看書嗎?你能真的為了一個目標,每天堅持寫代碼嗎?前幾天被同學笑了,因為我說“我過年和平時一樣的,看看書,寫寫程序,沒啥不同的”,然后他們笑我“你的生活還真的無趣”,o(∩_∩)o...,其實他們不知道,這才對我是最有趣的,我每天都在享受著,每天都在過年。越深入這個行業,越發現自己所學太少,時間太少,還有很多自己感興趣的東西,每一門想精深的東西,都還有那么多那么多知識。真的想早一些譜出自己的舒伯特,真的向往那一天,不知道何時真的能達到?努力吧!加油!
昨天,要寫一段程序完成一個定時任務,是有關Socket 發送的。胖子給我發了一段現成的程序,這段程序基本上的功能是實現了,但是表達的并不是那么清晰,因此我想重構一下。沒想到重構的過程竟然花了一個多小時,從晚上八點多,一下就寫到了十點,但是重構完后,感覺清晰多了。仔細想想收獲頗多,因此在這里寫寫經驗進行總結。
重構程序的目的,不是因為程序不能用才要你去重構,重構的目的是因為一、你的代碼,被人看的次數,遠比它用到的次數多;二、重構有利于你發現問題,讓你的程序結構優化,因此可復用性更強,遵守了知識的唯一性,DRY 原則;三、如果你要改動這段代碼,那么先重構,使得你的代碼好改,這實際是在為你的未來減少工作量,而且一段優秀的代碼,帶給你的價值,遠比你每次都要Ctrl+C,Ctrl+V 大得多。
寫代碼,要讓你的代碼第一次呈現在別人面前的時候,像讀英語一般,那么你的代碼功底是足夠了。你的代碼就可以稱作你最好的文檔了,其余什么文檔,大可不必!
基于昨天的經驗,我新總結了兩條:
一、經常使用重構方法extract method 的人,會發現,總是可以省掉一些臨時變量。這是好事,但這可能會造成如下的結果:
method_one(method_two(method_three(method_four())))
也就是說,很可能會導致這種長串的嵌套,導致程序可讀性的下降,使人看的暈頭轉向。那么如何解決呢,其實是一個度的問題。我給自己定了一個規矩,臨界點是三個函數這樣級聯起來,如果超過三個,我就將它們拆開。比如說上面這個小例子,我會拆成:
arg = method_three(method(four));
method_one(method_two(arg));
雖然浪費了一個臨時變量,但是這樣就可以讓人一眼看懂我的意思,可讀性提升,修改起來自然也會容易些。
二、寫過Java I/O 的人,肯定看到過這樣的程序:
Reader in = null;
Writer out = null;
try
{
in = new InputStreamReader(socket.getInputStream(),"utf8");
out = new OutputStreamWriter(socket.getOutputStream(),"utf8");
/**
* some TODOs here
*
**/
}catch(IOException ioe)
{
System.err.println("error message");
ioe.printStackTrace();
}
finally
{
try
{
if(in != null)
in.close();
if(out != null)
out.close();
}catch(IOException ioe2)
{
System.err.println("some error message");
ioe2.printStackTrace();
}
}
怎么說呢,這段代碼看上去,其實是夠好了,其實不重構也是可以的。也許我偏執吧,我認為它不夠好,因為:首先,大段的try catch 的確會捕獲異常,但是這段代碼至少有好幾段是會獨立拋出異常的,這里包含了四個IO 實例的創建和銷毀,這四段代碼如果出錯都會拋出異常,那么你捕獲的到底是哪個呢?其次,沒有把功能段合理分開,這段代碼的邏輯功能實際上是兩個,一個是讀,一個是寫,那么合并在一起,首先順序很亂,其次容易讓閱讀的人產生困惑,從而造成代碼可讀性差。我是這樣做的:
private void writeFile(String fileName, String outStr)
{
Writer writer = null;
try
{
writer = new OutputStreamWriter(new FileOutputStream(fileName),
"utf8");
}
catch (UnsupportedEncodingException e)
{
System.err.println("不支持的編碼方式");
e.printStackTrace();
}
catch (FileNotFoundException e)
{
System.err.println("初始化文件失敗,或路徑不存在:" + fileName);
e.printStackTrace();
}
try
{
writer.write(outStr);
writer.flush();
}
catch (IOException e)
{
System.err.println("寫文件失敗");
e.printStackTrace();
}
finally
{
try
{
if(writer != null)
writer.close();
}
catch (IOException e)
{
System.err.println("關閉文件失敗");
e.printStackTrace();
}
}
}
類似的,也將讀的邏輯獨立抽出來,雖然,這不但沒使代碼的量減少,卻增加了很多try catch 模塊,不過邏輯上很完整,而且發揮了每個try catch 的最佳功效。我把它起名曰,我個人的偏執情節吧。
困了,要睡覺了,本來還想將代碼從最初模樣,到最后模樣的過程復述一遍,改天有機會再說,精華都已經說了。嘿嘿
今天早上打破了原本的計劃,對于網上看到的一位小狂人,發表了很多看法。中國IT 這個行業就是這樣的,普遍的年輕化,輕狂化,但是真正的大師卻少的可憐。看了看自己在豆瓣上的“想讀”列表,突然覺得時間大大的不夠,心里又激起了一層漣漪,打破了那片平靜。不過經過一個小時的深入思考,我又重歸了那份平靜。
我是贊成中國道家學派的,人只有歸于平靜,身體和心靈都達到陰陽調和的狀態,心情穩定,脾氣溫和,頭腦冷靜,做事要循序漸進,才可以穩穩當當,根基牢固。所以我個人并不羨慕暴發戶,也不羨慕那些少年得志的人。一個完整的、健全的人,成大事的人,是要體會人生的低潮期的。和命運作斗爭的過程,你的思想和心智都會得到歷練,正如古人所說“天將降大任于斯人也,必先苦其心志,餓其體膚”,沒有經歷過失敗的人,是很難長久守住你的成功的。就像我上個禮拜讀的那本書里寫的故事一樣,一夜成名者,招致的嫉妒和怨恨太多,不是自己不夠優秀,而是環境不允許你優秀,終歸無以成大事。所以,做人還是要謙虛謹慎的,扎穩根基,一步一步的來,厚積而薄發。
思考到這一步,心情從浮躁終歸于平靜了。所以還是應當遵循我的目標,一步步來,時間之與我,的確寸秒寸金,所以我不能把這些時間浪費在對人生太多的感慨中,而應當去努力的尋覓,去體驗生活,去做自己該做的事情!不去空嘆光陰似箭,也不去妄自菲薄!從現在開始投入到實際的工作中吧!
今天算是在2008年的中國年、圣誕、陽歷年新年之前,所以我寫這篇blog無論你怎么算,那可是真正意義上的辭舊迎新啊(哈哈,我又有點偏執了)。一個目的,過去的一年是很精彩的,也很開心,我很努力,也收獲很多。未來的一年,我要更加好好珍惜我的朋友們,更加努力的面對一切困難和挑戰,擁抱2008!
在2007年發生了很多事情,有些可控,有些不可控,但是整體上來講還是收獲遠遠大于付出的。而我熱愛的軟件開發行業,也還是處于藝術的那種狀況,而且我估計在未來的10到20年仍舊會繼續這樣的情況,因此我還是可以以藝術家自詡的(哎呦,好臭屁啊!),我也會繼續充滿熱情的投入到這個行業中去。
過去的一年里,值得自豪的事情有(排名不分先后,想到哪寫哪的):
1、做事情做的問心無愧,努力做好了每一件事情,認真面對生活的每一個細節
2、在繁重的項目壓力下(最多同時負責五個項目,還要帶團隊OOPS,還要帶導師的兒子,555555),依舊能堅持學習從而提高自己
3、體驗了一把累病了的滋味,并成功恢復了健康,而且在累病了期間感悟了許多人生,收獲頗多。恢復健康后,一直堅持鍛煉身體,現在的身體狀況一級棒!還胖啦,哇哈哈
4、在年底,順利的完成了項目的平滑交接,讓研二的師弟師妹們成為導師值得信賴的動力,最值得自豪的是我將很多平時鉆研的開發軟件的技術、思想和經驗延承了下去,培養出實驗室良好的研發氣氛(應用了很多極限編程和敏捷開發的思想哦)。
5、找了一份非常適合自己,非常喜歡,有良好前景的工作
6、完成了6到7個項目,做了兩個自己能給85分以上的項目(NASAC 論文評審系統和華秦智能管理系統)
7、深化了Java 語言的運用,可以熟練的使用Spring、Ajax、OSGi等框架和技術,深入研究了敏捷軟件開發和項目管理的種種方法,并應用到實際的項目中去。總之是深化了自己最擅長的技術,而又學會了許多新的技術。
8、珍惜了已有的朋友,又新交了許多優秀的新朋友
9、好好孝敬了父母,做了很多父母都為我自豪的事情
10、明確了自己下一步要做的計劃(這一條我感覺是在湊數吧,哈哈,圓圓滿滿吧)
過去一年里有些可惜的事情:
1、感情道路依然坎坷啊,還是沒有方向啊,哎~~~~
2、以后要注意身體的,不能再次累病了,切記切記哦
3、研究生階段有車有房的目標看來是宣告破產啦!
4、沒有出去實習一次,的確是有些遺憾的
嗯,開始未來的計劃吧:
1、依然要做事認真,注意細節,問心無愧;做一個正直的、善良的、有責任感的男人!
2、堅持鍛煉身體,讓自己再胖一些吧!
3、認真的、充滿熱情的投入到TW 的工作中,好好的和同事們相處,多交各種各樣的朋友,并努力增加知己的數目
4、努力使自己的感情道路不要再那么坎坷了,慎重慎重!
5、深化自己已掌握的知識包括深化敏捷開發、Spring2.X(包括Spring Web Flow、Spring OSGi 等等)、Ajax(GWT 和CSS,尤其是CSS,一定要做到是真的可以用它來改變自己的風格和布局,而不只是簡單的樣式而已,master it);新的知識呢,再努力掌握RoR、Python、Erlang和項目風險控制、項目估算的相關知識,學會使用Unix/Linux 操作系統,并堅持下去,深入研究下Android 并努力應用到實際的項目中去;努力使自己的軟件架構能力更上一層樓;努力提高自己的代碼編寫質量,達到90分以上
6、完成自己的BoBoBlog release 1
7、好好的,順利的在四月份完成畢業(這個不難吧)
8、如果有出國的機會,努力把握之,好好見識一下!
9、讓自己的英語能夠,看英文書不累,跟看中文書一樣;跟老外對話不需思考,聽口音重的老外講話也OK
10、學會做一手好菜,努力讓自己的父母更開心快樂
好了,咋想也想不出來啥了,辭舊迎新、辭舊迎新!寫此文以表決心!