置頂隨筆
大四之后我一直很煩,很多很讓人提不起精神的事情要我去面對。最近一直想把這段經歷寫出來,算是發泄心中的郁結,也分享一下個人的經歷,因為我覺得技術上我也沒什么好跟人討論的,反而我覺得有些經歷可以拿出來分享一下。
從去年(2010)的8月份我才開始準備考研,因為5月-7月期間一直在駕校練車,每天都很累,主要不是練車累而是學校的駕校爛,每天都一大堆人,一上午或一下午也就練個三四把,其余的時間都是在等,而且每天早出晚歸,甚是摧殘人,所以一直沒有開始復習考研。不過駕校這么做也無可厚非,畢竟要賺錢,我們學生交得又少(可能有很大一部分還要孝敬學校)。然后在7月中的時候就把駕校考完了,然后回了趟家。其實我在(2010年)3月份之前(具體我也忘了)就決心考研的。一般人會這樣認為,考研是為了逃避找工作的壓力,其實不然,我覺得考研要經受的壓力和折磨并不比找工作大,反而我覺得工作更好搞。我讀研的原因估計與大多數人考研的原因又不一樣,一部分人考研說不定還真是逃避工作,有一部分人是為了找更好的工作,有很少的一部分人是真的為了研究。我的原因是家里向我讀,他們說反正家里又不需要你養,你能讀就盡量讀,也不是要你搞研究,拿個研究生的文憑,家里比較有面子。我就是為了我們的“面子”加入了考研大軍。當然我也有自己想法---我覺得度研究生的時候能有更多的時間做自己想做的事情---可能包括一些研究吧。
回家其實不是我想放自己大假,而是為了跟爺爺奶奶呆一下,畢竟他們老了。然后8月就趕回武漢來,開始了地獄般的考研復習。
8月回到學校,據說武漢最熱的那段日子在我來之前剛好過完,不過武漢還是很熱。一回到學校我就跟我同學去文都上課。我是什么都沒有準備,政治、英語、數學、計算機我一門也沒有碰過,就連考什么,用什么教材、輔導書我都一無所知。然后就跑去了上輔導班。英語我是有一定把握的,我同學認為計算機輔導不輔導沒多大區別,畢竟我們也一直接觸著專業課,所以我就報了數學跟政治。
老實說數學是我最怕的。我以前也算是個數學強人,雖然不是太強的那種,最差也是個中上的那種。上到大學以后我對數學那是深惡痛絕。大一上數學的時候每節課要不是在寢室睡覺就是在教室睡覺,作業也就應付了事,還好我跟老師的關系比較好,所以還得了蠻高分。但真的我就沒學到任何東西。還有就是概率,我們就根本沒這門課。蛋疼的數學啊········
政治我還好,我發現上了大學之后雖然政治課我一節都沒聽,不過我發現我覺悟提升了不少,感謝黨國啊。聽了輔導班的課之后,也大概有個了解。
英語---大學三年我就沒怎么學過,不過每天接觸著英語的專業書籍、論文、blog、論壇,我自認為我英語還是比較強悍的,但是考研的那套根本就不來你會的那套。英語還是強化不來的那種,所以我也只好硬著頭皮上。
專業課,蛋疼的專業課啊······從0開始(考的那套跟我學的那套不是同一套
)
老實說考研的四門我都是從0開始,時間緊迫啊,每天打開書都是在自學,每一門都是自學----高強度的。
--------------------------------------------------------------
--------------------------------------------------------------
復習考研的那段時間是我最煩的一段時間,持續時間長,壓力大。其實我不是那種考不上就會怎樣的人,反而我老想著考不上我還有很多出路,就算這次考不上我還可以再考(考研大忌啊)。在這樣一個復雜的心理情況下,到后面我都不怎么上自習了,每天睡到11點,刷牙洗臉吃飯上午直到2點,然后就開始考慮要不要去上自習,所以后面基本沒什么效果。直到考研的那天數學我還沒有全部學完。反正剛考完那幾天是我最開心的時間,感覺心頭懸著的那塊重石終于落下來了。
反正考研是一個很痛苦的過程,考研有風險,入行需謹慎。
考完之后,過年,過年蠻開心的。也就是天天呆在家里,不出門,什么也不干,泡茶喝,收紅包。
-------------------------------------------------------------
-------------------------------------------------------------
后來開學了,也就回到學校開始畢業設計,我們老師不知是不是變態,隨便找了個題目就讓我開始了。題目叫做《Sampling-base Contect-rich Motion Contorl》。
一邊做一邊等考研成績出來,考完之后我也大概猜出我沒什么希望,成績如下
政治 74
英語 45
數學 78
計算機 94
好像比我預計的還好,反正沒上(考華南理工),然后就一直在找調劑的學校,因為按我推算,我的肯定能上國家線,我還很積極地去找了調劑的學校。我還去考了下公務員--廣東公務員--3月27號,我隨便應付了一下(考了100+分,比較低,反正沒戲),公務員要看命的,反正我覺得我不是那種命。考完之后,在家呆了幾天,因為國家線也就那幾天出來,我就等成績出來,好像是29/30號的時候出來的,A區的沒上,也就沒戲了。我也就不想了。4月份回到學校的時候有個研究生告訴我B區的中國科技大學的軟件工程可以去,我也就去報了一下,19號復試,反正復試很慘,十問九不知,一我沒復習,二我太高估自己了。也就沒上到。這期間我還找了下南昌大學的,托關系找了人,后來說不要我這么低分的。死心塌地去中科大面試,面試被刷。19號當天下午趕回武漢,20號面試華為。
-------------------------------------------------------------
-------------------------------------------------------------
這學期(2011年上半年)開學之后,我感覺研究生沒戲,然后就一邊等成績一邊找工作,投過無數簡歷,有幾家找我筆試面試,有些我直接沒去。第一家面試的是廣州的一家,筆試感覺良好,當天晚上給我電話,第二天面試,也就跟BOSS談,BOSS讓我開價,我就給開了3500,他說可以。其實我覺得工資不是最重要的,對于一個應屆畢業生來說,談得很好,BOSS讓我簽,給我4000。當時研究生成績還沒下來,我不敢簽,然后找了個借口,好歹推掉了。因為他公司招不夠,我推薦了我們寢室的兩個和一個隔壁班的去面試,我們寢室的兩個簽了,3500。
然后在去中科大面試之前又面試了一家公司,筆試時神速做了兩套試卷,我給開了4500,第二天面試,談了一個小時,漫無目的地談,后來說簽,做3D,我拖到華為面試完才拒絕掉他---說起來還有點對不起那BOSS。
在中科大面試完,20號回來面試華為,華為真是整死人的,我9點到的,早飯就吃了一根玉米烤腸,很小一根,到2:30才吃的午飯。一面技術面,沒問什么,寫了個冒泡,問了我一個很簡單的分布式應用的問題(其實我不太懂分布式問題太簡單了),然后就說可以,5分鐘搞定。二面群面,辯論,沒什么好辯的,也就個游戲,表現不錯,三面其實就不是面試,做個心理測試,到2點多才完,完了之后吃了頓KFC犒勞自己。第二天跟BOSS聊天,BOSS也沒問什么,其他人進去都是15+分鐘,不到8分鐘我就出來了。然后就簽了,6000-IT工程師,好像是網管,不清楚。據說今年華為招很多人,我不知道,反正也有點難進,我那組10人剩2個,我跟一個研究生。
華為簽了之后幾天,去了工商銀行的筆試,那人多得,筆試還比較簡單,英語部分不夠時間,后面瞎選,第二部分關于工行的,我一個不會,我又不是學金融的,瞎選,第三部分,行政能力測試,因為有公務員的經驗,答得比較好,時間也比公務員考試寬裕很多。
4月29號去了趟廣州,面試工商銀行軟件開發中心,我感覺面試還不錯,只是聽到我說簽了華為,我問他薪酬,他說比華為低,就不想它了。面試完之后回家,在家時候收到工商銀行數據中心的面試通知,5月11號,懶得去,5號回到學校。
-------------------------------------------END
最近有人叫我編譯這個渲染引擎,據說很難編譯,我編譯無數代碼,一般別人的代碼拿來編譯都很難受,因為作者的機器跟我的機器配置上都有些不痛,可能會丟了什么庫之首先上Luxrender的官網,一般的開源項目都有個什么文檔之類的東西,一般也會教怎么去編譯代碼。找找還真有,文檔寫得太他媽精辟了,就一點點,這也符合我的風格,少說明簡單。
類的一大堆問題,有時可能是編譯器的不同,有可能有出現什么符號沒定義之類的問題。所以編譯代碼都是很難受的事情。耗時還耗精力。
閑話不扯了之間正題。
Luxrender 官網:http://www.luxrender.net/en_GB/index
編譯的文檔:http://www.luxrender.net/wiki/index.php?title=Building_on_Windows
據說我的機器還是WindowsXP所以找Windows下的文檔。
然后按它說的方法去干。
1.下載TortoiseHG
2.安裝好后在某個盤里面新建個文件夾,這誰都會。我的文件夾名就叫Luxrender
3.然后選中那個文件夾<Luxrender>右擊。鼠標移動到TortoiseHG,會發現有個叫Clone…的東西,點擊
4.然后再source path(也就是源路徑)里面輸入http://src.luxrender.net/lux/
5.在destination(也就是目標路徑)里面輸入 BASE/lux (其實BASE可要可不要,只是lux文件跟windows和luxrays要在同一級)。
6.然后點擊Clone(克隆)就可以了
7.然后就是等待
8.等待
9.再等待
10.等它完成了,然后我們還是依照3的做法,選中文件夾<Luxrender>移動到TortoiseHG,然后Clone…
11.在source path (源路徑)里面輸入 http://src.luxrender.net/windows/
12.在destination (目標路徑)里面輸入BASE/windows (保證windows文件夾跟lux同級就可以了)
13.點擊Clone之后等吧
14.完成后再按照3的做法選中文件夾<Luxrender>右擊移動到TortoiseHG上然后Clone
15.在source path 里面輸入http://src.luxrender.net/luxrays/
16.在destination 里面輸入 BASE/luxrayse (保證luxrays跟lux同級就可以了)
17.然后點擊Clone就可以開始無限的等待
18.等都完成了之后,就打開你的Visual Studio 2008的Command prompt,VC2005的你盡快裝個2008吧,VC2005難受死你。~_~
19.然后CD到你的windows文件夾。懂cd的跳過去:一般打開 Command prompt上的默認路徑是你的Visual Studio的安裝路徑。比如我的是在D盤,但是我的Luxrender在G盤所以要換盤,在黑屏上輸入 G: 。如果你的Luxrender在E盤就輸入 E: 。如此類推。然后就是 cd G:\luxrender\BASE\windows\ 我的是這樣,如果你的luxrender文件夾是在E盤里面的SRC文件夾中就輸入 cd E:\SRC\luxrender\BASE\windows\。
20.接著你會看到你的windows文件夾中有個叫做 getdeps.bat 的文件。在黑屏上輸入 getdeps
21.接著又是選擇什么的反正getdeps就是把所有的luxrender需要的類庫之類的都下載下來,然后解壓到一個叫做deps的文件夾里面,deps文件夾是在Luxrender\BASE\文件夾中,也就是跟你的lux、windows、luxrays同一級。
22.Get完之后就是導入注冊表,雙擊windows文件夾里面的build-vars.reg,然后確定導入就行了。其實它就是把像LUX_WINDOWS_BUILD_ROOT這樣的環境變量設置一下。當然你也可以自己一個一個設置。
23.接下來的事情就是build你下下來的東西 (<deps\>下的東西build一下,比如boost)。在你的Command prompt 里面輸入build-deps-x86.bat。(慚愧我還是用32位的WindowsXP)。你不要嘗試使用cmd.exe去build,難受的是你。
24.在無盡的等待回來后,你覺得差不多了,但是厄運才剛剛開始……..
開始編譯
1.然后就是編譯,進入BASE/windows然后打開lux.sln
2.編譯肯定不會成功的,但是要一邊編譯一邊看有什么問題。
問題:
1.出現isatty()找不到
加入#include <io.h>
將isatty改成 _isatty()
2.環境變量沒設置,會有這個問題的,所以加上它提示的環境變量
3.Yacc返回錯誤,說系統找不到某個東西。要把 BASE/windows/Projects里面的那個project文件(.vcproj)用文本文件打開然后將"$(InputDir)/$(InputName)-hxx.cpp"的反斜杠(/)去掉。有幾個文件要改這個的。當你遇到了就改一下。就是這個問題。
4.moc.exe找不到,就是QT沒有編譯好。打開visual studio 2008 的Command prompt 打開,然后cd到QT的根目錄比如我的是G:\Luxrender\BASE\deps\x86\qt-everywhere-opensource-src-4.6.2輸入configure -debug-and-release -opensource -platform win32-msvc2008完成之后在輸入nmake
5.miss python31.lib
拷貝 python31.lib
From
G:\Luxrender\BASE\deps\x86\Python-3.1.2\PCbuild\
To
G:\Luxrender\BASE\deps\x86\Python-2.6.6\PCbuild\
6.miss libboost_python-vc90-mt-lib
create foulder <python2> in
G:\Luxrender\BASE\deps\x86\boost_1_43_0\stage
copy
libboost_python-vc90-mt-lib
libboost_python-vc90-mt-1_43.lib
libboost_python-vc90-mt-gd-1_43.lib
libboost_python-vc90-mt-gd.lib
from
G:\Luxrender\BASE\deps\x86\boost_1_43_0\stage\python3\lib\
to
G:\Luxrender\BASE\deps\x86\boost_1_43_0\stage\python2\lib\
應該來說你就可以全部編譯過去了。
我是屎,但我是一砣自尊的屎、自信的屎、自以為是的屎.
我不會搞笑,也不會煽情,可能默默無聞的腐敗,可能也招來一些厭惡,甚至唾棄.但我義無反顧,也義不容辭自戀或自傷,所以我選擇了做屎.
當一砣屎沒什麼大不了,也沒什麼小不然,一砣屎就是一砣屎,他不能變成一塊金子,也不能蛻變成鉆石.但他有歸屬,他是屬于馬桶的,劉德華說:"每個馬桶都是英雄",那歸屬于英雄的做砣屎又何妨.一砣屎也就是一砣屎,有可能做屎是低下的,但我有自尊我就是第一流的屎.他會腐化成泥土,但每一件物品都會腐化成泥土,無論高尚或低賤,無論偉大或渺小.
我奉呈:
While there is a lower class I am in it.
While there is a crimical elememts I am of it.
While there is a soul in prison i am no free.
摘要: 如果你認為三流學校的人沒資格在園子里發表看法,不要點開看了。
如果你認為無關技術的不應該發在首頁精華,也不要點看看了。
如果你認為發在首頁精華的都是關于”超高“技術含量的,不要點開看了。
如果你看了,然后覺得我說得不對,請你不要人身攻擊,我怕我受不了到時賴你就不好了。
閱讀全文
關于造輪子的問題,褒貶不一,我是贊成造輪子的,很多時候我們沒有必要再去造一個已經存在的輪子,這是貶造輪子的重要的看法,我覺得沒什么不對的,如果是要立刻用到實際中去,而且時間上很趕的時候造一個輪子出來不是什么好事情。但是造輪子也有很多好處,比如能學到很多東西,可以參見vczh的關于造車輪,雖然沒有將所有造車輪的好處統計起來,但是很有參考價值。當然你可以去看看國外的大學教程,他們本科生的任務大多就是造個車輪出來。比如MIT:操作系統課程就是寫個操作系統出來,數據庫課程就是寫個數據庫出來,圖形學就是寫個raytracer(光線跟蹤器)出來。當然還有很多,比如Stanford:計算機網絡就是用UDP實現TCP的功能,寫個路由協議,圖形學就是做一個軟件openGL,等等,所以造輪子(再造輪子)是很有實踐價值的,而且很多一流學校就是這么干的。很多時候如果想創造輪子的話再造輪子所獲得的經驗和能力的提高是很有價值的。
那如果你肯定了再造輪子的好處那就多幫造輪子的人說點好話,當然也說明再造輪子的的限制,不然誤人子弟。但是如果你肯定了再造輪子的好處,你想加入再造輪子的大軍那你該怎么辦呢?
這點其實我也在想,如果看到這篇文章而又很有欲望表達自己的看法的前輩留下你的建議。在這里我也表達一下我的看法。
建議一:書
如果我們都想造輪子,但是苦于沒有經驗而且對輪子的構造很不熟悉,很多時候我們只好放棄這種想法。如果有一本書教你怎么去造這個輪子的話說不定你的輪子就造出來了,而且還不差。所以如果想造一個輪子,很常用的方法就是找一些相關的書籍。優點是結構完整而且描述清晰,而且還很系統(國內人寫的書大多不好,所以還是先去找找有沒有國外人寫的書,老外寫的書看得還比較爽)。缺點是大多時候書都比較理論實踐的東西少,而且對我們造輪子來說書上的那種結構不是很適合造輪子,如果是大部頭書的話還很快就把你的意志給削弱了。所以書不是萬能的,我看過一定數量的書,但是到頭來還是沒有太大的提高。
建議二:課程
對于大多書學生來說這條是最好的。其實大多數學生都是很想學習的,苦于沒有人指導加上老師無聊,很多時候學生搞到最后都不想學了。如果你是一個學生,如果讓你去造一個輪子出來,想想那是世界上最牛的輪子(轉得最快),那是讓人激動的,學生學起來也很有勁頭。所以造輪子最好的方式是去找一些課程,而那門課程是教你怎么造輪子的,按造那個課程的方式先去造一個出來,然后再想想自己的輪子怎么造,然后你的輪子又是另一個最牛的輪子(轉得快不說,還省材料)。優點:系統化,理論實際相結合,而且很多時候那些老師已經幫你完成了一些工作,適合菜鳥級別的人物---不如說我。缺點:還沒有找到,如果非得說有缺點就是:讓你見識了一個最牛的輪子,讓你覺得你自己獨立造的輪子沒有技術含量,讓你放棄了想法。
建議三:現成系統
我們討論的是再造輪子,所以這個輪子必然已經存在了,我們仿這個輪子去造一個不就行了。通過分析和比較,使用別人的輪子的時候想想別人底層是怎么做的,怎么設計的,意淫一番之后總結出經驗,然后造自己的輪子。而且造一個比原來更加小強(小而強大)的輪子,功能完整,耗費資源少,使用簡單-----那不就是我們想要的嗎?缺點就是可能要有些經驗。
建議四:論文
如果你是一個骨灰級的輪子玩家這點你應該是清楚的。看論文是一件很痛苦的事情,很多時候我們的理論基礎沒有論文的作者好,或則論文作者的基礎跟你的不一樣(比如他是學物理的,而我們是學計算機的),所以看不懂論文,直接結果就是你的輪子造不出來。所以還是要很有經驗和理論基礎。
建議五:開源軟件
開源是一個好東西,首先它是免費的,再者可以看到代碼。這點我不用說了,找到了相似的開源代碼,讀一讀,肯定有收獲。
總結或者想法:
造輪子肯定不是一件簡單的事情,沒有恒心就不要造輪子了,而且會花費一些時間。當然如果你很想造輪子而且你確定你有一定的時間(不用太多)你就去造吧。國內的開源軟件和基礎軟件不好,說不定我們這代造了一些輪子之后,國內的基礎軟件就好了。
很多時候如果你沒有頭緒,你就寫點代碼吧,古人寫字靜心,我們為什么不能寫代碼靜心呢?說不定你寫著寫著輪子的框架就出來了,再寫著寫著輪子就造好了。
雖然上面我都說了點,但是很多情況下你找不到你想要的資源,可以嘗試問一下別人,說不定他能給你很好的建議---這個建議可能就一句話。
很奇怪,我在這個blog里面居然不想寫一些關于技術的東西,都是在瞎扯一些關于自己的事情,可能是我自己的技術還沒有到家吧,感覺用blog就用寫一些有用的東西,可以給一些認識的或則不認識的人看。今天跟高中同學瞎扯了一下,討論用不用微博之類的東西,后面扯到blog。我個人認為qqzone是做用來寫一些發泄的話,寫技術的東西就不是太好了,不過也是見仁見智的問題。有一點我是確定的:我不會在blog里面說話泄憤,最好就討論一些比較實在的問題。
居然討論一些實在的問題,那我就討論一些大學教育的問題。自己是個大學生,所以對這個問題還是比較在意的,當然會說一些不好的東西,純屬討論,不要太認真。我是學軟件工程的,不過別人問我學什么的我大多都說是計算機的,可能有寫人不太在意軟件工程和計算的的差別,但是我覺的說計算機比較有底氣-----因為我覺得在學校里面我唯一學到的是有關于計算機的知識,軟件工程?算了吧跟本沒有什么軟件工程。
更深入的去看我的專業-----軟件工程,其實我覺得軟件工程根本就不用學,像我們學的一堆軟件工程的課程:軟件工程導論、面向對象軟件工程、個人軟件過程和小組軟件過程、CMM,基本上我認為這些對我來說就是狗屎。都是討論怎么去管理和開發軟件和提高軟件質量的東西,有人會問這些不是都很好嗎?我們深入點去看看這些東西。首先:軟件工程講的是軟件開發的過程。一些前輩開發的很多軟件然后總結了一些經驗,然后用這些經驗去指導開發更多的軟件。這就是軟件工程了。很淺顯的事情,但是問題就出現在這里了。當我想進一步去學習經驗的時候發現經驗就這么點-----瀑布模型、迭代模型........還有很多,當深入下去就是一些可維護性、可擴展性、高安全性什么的,這些東西對我來說能懂嗎?我想試問一下各位?
我不是在這說這課程的不好,但是這對我來說沒有意義。你試想一個只寫過一些小程序的學生來說你搞那么多開發方式,搞那么多什么性什么性的有意義嗎?接著我們就面向對象軟件工程了。對面向對象有了解的人多少能說出點東西來,面向對象的思維方式是很好的,但問題也出現在這里-------你跟我講面向對象我能聽懂嗎,比如低耦合、高內聚?對于沒有接收過大型軟件開發(甚至小型)的人能跟著你的思路走嗎?你最起碼告訴我為什么吧,但是沒有。我大部分的課程都只是在教我什么是什么樣的,沒有教會我為什么要這樣,這樣有什么好處,這樣有什么壞處。
當我還沒有喘氣的時候UML又來了,軟件需求來了,軟件測試來了.........搞得跟狼來了似的。UML于我何用?軟件需求于我何用?軟件測試于我何用?軟件過程于我何用?對于這些課程我都是應付算了,不是我不好學,只是這些東西學了有何用?有人就說了:“這些東西在實際中很有用,要學好。”但我想問問實際中怎么有用了?其實我是承認這些東西在實際中很有用,但是我就算學得再好其實都沒有太大意義,你教會了我畫很多圖,教會了我怎么去發掘需求,教會了我怎么去測試,其實教會的只是理論,根本沒有讓我去實踐,比如UML,你總得給我個說明要做什么樣的系統,需求是描述好的,然后我用UML去表現我的設計。在比如軟件需求,你總是要給個人給我需求吧?------事情的實際是我自己定義需求。在比如測試吧,你總要給東西給我測試對吧?最終的結果是我什么都沒學到,就算我很努力了。
在我們專業我算是學得比較好的,我很努力,但是跟國外的學生比,我還不如他們的一年級學生。我一個國外留學回來的老師,他說:“國內的研究生還不如國外本科一年級的學生”。
有時候很無奈,如果你讓我用這些時間這些精力去學其他的你說會變成什么樣?比如語言,我最先學的是C++,如果那個博導老師要我踏踏實實的寫HelloWorld可能我早就有這種水平了,但是他沒有,他讓我們搗鼓那些難懂的MFC。結果我C++純粹自學。如果我的數據結構不是天天聽老師講數據結構而是聽一節課理論,然后他定義接口讓我去實現這些數據結構,我就不用到大三了連個排序也只能寫冒泡。如果那個該死的計算機網路不是只講理論而是讓我看看什么是光纜、什么是交換機、怎么去用TCP/UDP去做一些好玩的事情,我也就不用再去學一遍網絡編程技術。太多如果了。
簡單的總結一:1、大多大學生不是泡妞就是打網游,還有個別天天YY的,不是專心學習的大有人在,我想大學生找不到工作是應該的,因為你根本就沒能力。如果專心學習的找不到工作那是你命不好,想開點吧。2、我很懷疑現在大學還能教出一流的學生來嗎?這點我很懷疑。3、現在上課做作業基本上是應付,難道不是嗎?你會覺得那是你應該做的事情嗎?我想你不是覺得,因為上課很無聊,作業沒有太大意義。這在所有專業都是一樣。4、天大地大,考試最大(我是地大的(中國地質大學)),難道不是嗎?有兩種情況你的成績但會很好-----一種是你的卷面成績很高,另一種是你跟老師關系很好(我用過后一種)。當然有個別老師的課程不是這樣。5、別老是批評大學跟社會脫節,其實學生不想,老師不想,只是結果是這樣----原因是現在大學大多很功利,要改變,你改變社會吧,我想你改變你的想法比較實在一點。6、雖然我上面說的都是自己專業的,但是你去問問其他專業,情況是一樣的,為什么?------都是中國特色的大學生(如果你不信,你問問其他專業的)。
討論完了,到這寫完了,但是我很猶豫要不要發表,明顯我是要發表的,但是會有很多人拍我。說我這不對那不對,但是你說吧不要太認真,大家當吹牛好了。畢竟踏踏實實做事才是最重要的。
我是一位大二學生,在武漢的中國地質大學讀軟件工程。
在大一的時候開始就學習語言。開始是計算機導論,主要是Java語言,當時聽得很起勁,但Java是什麼、計算機我自己都不知道,我那是侯連電腦都不太會用。我們就沒寫過程式。講了一大堆,沒懂什麼。雖然老師有演示,但基本的操作沒有教想自己寫寫代碼都不知道怎么寫。
接著我們又開始學C++(注意我們沒有學C !)。教c++的老師是一位老程序員了。開發了20幾年了,是做GIS的,是我們學院院長開的公司的副總,也是我們軟件工程系的主任。能力和技術都是沒的說的。講語法講編程,但是我就是不懂,他給我們講程序設計,你說我們連int、long、float都不懂的人連程序是什麼都不知道你說程序設計有用不?我們c++講了10節課20個學時,到期末課程設計的時候盯著電腦發呆。什麼也沒做出來。
平時這門課是有上機操作的,但是一上來就是一個win32的程序,VisualStudio是強大啊,框架都出來了,我就不知道那些自動生成的是什麼意思。每次上機操作我都是把工程建好了,然後就盯著電腦屏幕開始發呆,慢慢發呆,直到兩個小時后。
老程序員是不同啊,程序設計、調試、測試等等一大套來了,我懂嗎?我不懂,我就連VisualStudio的那些menu都不知道是什麼意思,跟別提它強大的功能了。學期末的課程設計是用MFC做畫圖程序。MFC那就更強大了,那就更不懂了,最後別說程序設計,就連代碼都不會寫,所以我到現在c++都只是會在VisualStudio上點鍵鼠。
接著在大一的下半學期開接著學c++,還是那位老程序員,可以用高深莫測來形容他,MapGIS底層開發是他做的,拿過很多國家的獎。神州6號神州7號用的GIS軟件就是他開發的MapGIS,強大吧。但是他是第一次教本科生,我們也算幸運的了,人家第一次教本科生就是我們,他一直都只教研究生。還是10節課共20個學時,他也很認真,經常給我們答疑。但是真的太高深了,還是Win32,MFC。講什麼封裝、繼承、多態,不怕說實話我懂的那些道理(吹牛的說一句:我還是比較聰明的,什麼物理競賽化學競賽數學競賽我還是比較強的,不過現在都忘光光了),
但是試想想一個代碼不超過300行的程序要用到這些嗎?我現在還沒寫到超過300行的程序呢。還有什麼模板、操作符重載,please kill me。我不懂,我相信很多人都不懂,就算開發了幾年的了,不過我現在懂了,懂了不代表會用啊,是,我不會用,基本上我就用不到。沒做過項目我用它幹嘛?不過老實說我還是受益匪淺的。畢竟人家是位很好的教師,很好的程序員,只是我的操作能力不行,還不太懂。
在大二的上學期,那就豐富了,數據結構與算法、數據庫、軟件工程導論等等。老實說我沒好好學,沒學好。希望我的後輩要好好努力,把C/c++學好,把數據結構、算法、數據庫學好,老師講的不好,你就去問他,問到你懂為止,不要害羞,不然以後像我這樣你就知道死字怎么寫。老實說大二上還是學到很多東西的,最起碼知道然來程序是這么一回事。還會調試了。但是希望教書了不要只教書上的,多手把手教。記得課程設計的時候有位研究生輔導過我,我到現在還感激他呢,他教會了我什麼叫調試,手把手的教我寫代碼,調試。我才懂那些道理。
現在是大二下了,也過了一半了,學了Java,重新開始學一樣,不過我還是很感興趣的,Java可以做很多事,也方便多了,我現在基本是用記事本寫Java的,可以更直觀的理解算法和程式。到以後就可能不會因為人是要進步的,要做點大一點的程式。不能停留在黑屏的時代。不然就回到DOS那個年代吧。現在發現程式是那么好玩的東西,裡面有很多很好玩的、很有意思的、很先進的東西在。
努力學習。應該是好好學習天天向上。
總結:
1。c++沒學好,以後努力點好好補一下。有建議的提提,無論高手菜鳥都行,因為我是菜菜鳥。
2。程序寫不好,以後多寫點,有好玩的小項目比如開源的介紹介紹,或者有什麼純粹玩玩的項
目想找個免費勞動力可以找我。
3。對界面不太喜歡,可能是不會的緣故,在努力努力,看看會不會喜歡上,介紹點資源給小弟,
小弟不甚感激。
4。好像比較喜歡Java,可能會向Java里高級的方向去走,各位前輩指點一下,我還是比較迷茫,
介紹點好的方向,給點好的資料給小弟,小弟就此謝過各位了。
5。C、C++還是比較基本的,更能接近底層,還要好好提高,給點意見,有什麼方向去學去做,
指條路給小弟走。
最後感謝各位能看看我的屁話。留不留言沒關係,對你有幫助的話心裡感激過就行了(臭美了一次)。前輩就請你多多指點了,都說過是菜菜鳥了,別不好意思給你寶貴的意見。
2012年2月6日
小弟許久未上,上來發個招聘信息,如果有興趣可以郵件份簡歷給我 chaogu.c@qq.com,如果沒有興趣直接忽視。
工作地:深圳(富士康隔壁的一家超級大型的IT公司,由于有要求,不能發公司名稱,不過深圳的同城應該能猜到,私聊能提供公司名稱)
部門:流程與IT管理部(大部分做內部IT系統)下的IT平臺部下的SOA服務部
技術要求:Java、數據庫、Web開發等相關的,.Net的也可以,需求工程師等也要,主要做系統架構等,先發簡歷,再私聊亦可
硬性指標:本科5年以上(含)工作經驗,碩士4年以上工作經驗,英語4級以上,211重點大學,無中興工作經歷(這個太明顯了,有競爭,所以不讓招)
工資:好像保密,這個要看能力,大概年薪有個20W
如果身邊有想跳槽的也可以幫忙轉發一下
一年內有效~~~
管理員看看要是不能發招聘信息不要刪我號啊,把文章刪掉就好了。
2011年5月9日
大四之后我一直很煩,很多很讓人提不起精神的事情要我去面對。最近一直想把這段經歷寫出來,算是發泄心中的郁結,也分享一下個人的經歷,因為我覺得技術上我也沒什么好跟人討論的,反而我覺得有些經歷可以拿出來分享一下。
從去年(2010)的8月份我才開始準備考研,因為5月-7月期間一直在駕校練車,每天都很累,主要不是練車累而是學校的駕校爛,每天都一大堆人,一上午或一下午也就練個三四把,其余的時間都是在等,而且每天早出晚歸,甚是摧殘人,所以一直沒有開始復習考研。不過駕校這么做也無可厚非,畢竟要賺錢,我們學生交得又少(可能有很大一部分還要孝敬學校)。然后在7月中的時候就把駕校考完了,然后回了趟家。其實我在(2010年)3月份之前(具體我也忘了)就決心考研的。一般人會這樣認為,考研是為了逃避找工作的壓力,其實不然,我覺得考研要經受的壓力和折磨并不比找工作大,反而我覺得工作更好搞。我讀研的原因估計與大多數人考研的原因又不一樣,一部分人考研說不定還真是逃避工作,有一部分人是為了找更好的工作,有很少的一部分人是真的為了研究。我的原因是家里向我讀,他們說反正家里又不需要你養,你能讀就盡量讀,也不是要你搞研究,拿個研究生的文憑,家里比較有面子。我就是為了我們的“面子”加入了考研大軍。當然我也有自己想法---我覺得度研究生的時候能有更多的時間做自己想做的事情---可能包括一些研究吧。
回家其實不是我想放自己大假,而是為了跟爺爺奶奶呆一下,畢竟他們老了。然后8月就趕回武漢來,開始了地獄般的考研復習。
8月回到學校,據說武漢最熱的那段日子在我來之前剛好過完,不過武漢還是很熱。一回到學校我就跟我同學去文都上課。我是什么都沒有準備,政治、英語、數學、計算機我一門也沒有碰過,就連考什么,用什么教材、輔導書我都一無所知。然后就跑去了上輔導班。英語我是有一定把握的,我同學認為計算機輔導不輔導沒多大區別,畢竟我們也一直接觸著專業課,所以我就報了數學跟政治。
老實說數學是我最怕的。我以前也算是個數學強人,雖然不是太強的那種,最差也是個中上的那種。上到大學以后我對數學那是深惡痛絕。大一上數學的時候每節課要不是在寢室睡覺就是在教室睡覺,作業也就應付了事,還好我跟老師的關系比較好,所以還得了蠻高分。但真的我就沒學到任何東西。還有就是概率,我們就根本沒這門課。蛋疼的數學啊········
政治我還好,我發現上了大學之后雖然政治課我一節都沒聽,不過我發現我覺悟提升了不少,感謝黨國啊。聽了輔導班的課之后,也大概有個了解。
英語---大學三年我就沒怎么學過,不過每天接觸著英語的專業書籍、論文、blog、論壇,我自認為我英語還是比較強悍的,但是考研的那套根本就不來你會的那套。英語還是強化不來的那種,所以我也只好硬著頭皮上。
專業課,蛋疼的專業課啊······從0開始(考的那套跟我學的那套不是同一套
)
老實說考研的四門我都是從0開始,時間緊迫啊,每天打開書都是在自學,每一門都是自學----高強度的。
--------------------------------------------------------------
--------------------------------------------------------------
復習考研的那段時間是我最煩的一段時間,持續時間長,壓力大。其實我不是那種考不上就會怎樣的人,反而我老想著考不上我還有很多出路,就算這次考不上我還可以再考(考研大忌啊)。在這樣一個復雜的心理情況下,到后面我都不怎么上自習了,每天睡到11點,刷牙洗臉吃飯上午直到2點,然后就開始考慮要不要去上自習,所以后面基本沒什么效果。直到考研的那天數學我還沒有全部學完。反正剛考完那幾天是我最開心的時間,感覺心頭懸著的那塊重石終于落下來了。
反正考研是一個很痛苦的過程,考研有風險,入行需謹慎。
考完之后,過年,過年蠻開心的。也就是天天呆在家里,不出門,什么也不干,泡茶喝,收紅包。
-------------------------------------------------------------
-------------------------------------------------------------
后來開學了,也就回到學校開始畢業設計,我們老師不知是不是變態,隨便找了個題目就讓我開始了。題目叫做《Sampling-base Contect-rich Motion Contorl》。
一邊做一邊等考研成績出來,考完之后我也大概猜出我沒什么希望,成績如下
政治 74
英語 45
數學 78
計算機 94
好像比我預計的還好,反正沒上(考華南理工),然后就一直在找調劑的學校,因為按我推算,我的肯定能上國家線,我還很積極地去找了調劑的學校。我還去考了下公務員--廣東公務員--3月27號,我隨便應付了一下(考了100+分,比較低,反正沒戲),公務員要看命的,反正我覺得我不是那種命。考完之后,在家呆了幾天,因為國家線也就那幾天出來,我就等成績出來,好像是29/30號的時候出來的,A區的沒上,也就沒戲了。我也就不想了。4月份回到學校的時候有個研究生告訴我B區的中國科技大學的軟件工程可以去,我也就去報了一下,19號復試,反正復試很慘,十問九不知,一我沒復習,二我太高估自己了。也就沒上到。這期間我還找了下南昌大學的,托關系找了人,后來說不要我這么低分的。死心塌地去中科大面試,面試被刷。19號當天下午趕回武漢,20號面試華為。
-------------------------------------------------------------
-------------------------------------------------------------
這學期(2011年上半年)開學之后,我感覺研究生沒戲,然后就一邊等成績一邊找工作,投過無數簡歷,有幾家找我筆試面試,有些我直接沒去。第一家面試的是廣州的一家,筆試感覺良好,當天晚上給我電話,第二天面試,也就跟BOSS談,BOSS讓我開價,我就給開了3500,他說可以。其實我覺得工資不是最重要的,對于一個應屆畢業生來說,談得很好,BOSS讓我簽,給我4000。當時研究生成績還沒下來,我不敢簽,然后找了個借口,好歹推掉了。因為他公司招不夠,我推薦了我們寢室的兩個和一個隔壁班的去面試,我們寢室的兩個簽了,3500。
然后在去中科大面試之前又面試了一家公司,筆試時神速做了兩套試卷,我給開了4500,第二天面試,談了一個小時,漫無目的地談,后來說簽,做3D,我拖到華為面試完才拒絕掉他---說起來還有點對不起那BOSS。
在中科大面試完,20號回來面試華為,華為真是整死人的,我9點到的,早飯就吃了一根玉米烤腸,很小一根,到2:30才吃的午飯。一面技術面,沒問什么,寫了個冒泡,問了我一個很簡單的分布式應用的問題(其實我不太懂分布式問題太簡單了),然后就說可以,5分鐘搞定。二面群面,辯論,沒什么好辯的,也就個游戲,表現不錯,三面其實就不是面試,做個心理測試,到2點多才完,完了之后吃了頓KFC犒勞自己。第二天跟BOSS聊天,BOSS也沒問什么,其他人進去都是15+分鐘,不到8分鐘我就出來了。然后就簽了,6000-IT工程師,好像是網管,不清楚。據說今年華為招很多人,我不知道,反正也有點難進,我那組10人剩2個,我跟一個研究生。
華為簽了之后幾天,去了工商銀行的筆試,那人多得,筆試還比較簡單,英語部分不夠時間,后面瞎選,第二部分關于工行的,我一個不會,我又不是學金融的,瞎選,第三部分,行政能力測試,因為有公務員的經驗,答得比較好,時間也比公務員考試寬裕很多。
4月29號去了趟廣州,面試工商銀行軟件開發中心,我感覺面試還不錯,只是聽到我說簽了華為,我問他薪酬,他說比華為低,就不想它了。面試完之后回家,在家時候收到工商銀行數據中心的面試通知,5月11號,懶得去,5號回到學校。
-------------------------------------------END
2011年5月3日
摘要: 最近有人教我寫一下日志,不需要條理,能幫助到自己,所以我就寫寫,結構很復雜,里面東西只有我能看懂。所以你不要嘗試去讀懂。
閱讀全文
最近有人叫我編譯這個渲染引擎,據說很難編譯,我編譯無數代碼,一般別人的代碼拿來編譯都很難受,因為作者的機器跟我的機器配置上都有些不痛,可能會丟了什么庫之首先上Luxrender的官網,一般的開源項目都有個什么文檔之類的東西,一般也會教怎么去編譯代碼。找找還真有,文檔寫得太他媽精辟了,就一點點,這也符合我的風格,少說明簡單。
類的一大堆問題,有時可能是編譯器的不同,有可能有出現什么符號沒定義之類的問題。所以編譯代碼都是很難受的事情。耗時還耗精力。
閑話不扯了之間正題。
Luxrender 官網:http://www.luxrender.net/en_GB/index
編譯的文檔:http://www.luxrender.net/wiki/index.php?title=Building_on_Windows
據說我的機器還是WindowsXP所以找Windows下的文檔。
然后按它說的方法去干。
1.下載TortoiseHG
2.安裝好后在某個盤里面新建個文件夾,這誰都會。我的文件夾名就叫Luxrender
3.然后選中那個文件夾<Luxrender>右擊。鼠標移動到TortoiseHG,會發現有個叫Clone…的東西,點擊
4.然后再source path(也就是源路徑)里面輸入http://src.luxrender.net/lux/
5.在destination(也就是目標路徑)里面輸入 BASE/lux (其實BASE可要可不要,只是lux文件跟windows和luxrays要在同一級)。
6.然后點擊Clone(克隆)就可以了
7.然后就是等待
8.等待
9.再等待
10.等它完成了,然后我們還是依照3的做法,選中文件夾<Luxrender>移動到TortoiseHG,然后Clone…
11.在source path (源路徑)里面輸入 http://src.luxrender.net/windows/
12.在destination (目標路徑)里面輸入BASE/windows (保證windows文件夾跟lux同級就可以了)
13.點擊Clone之后等吧
14.完成后再按照3的做法選中文件夾<Luxrender>右擊移動到TortoiseHG上然后Clone
15.在source path 里面輸入http://src.luxrender.net/luxrays/
16.在destination 里面輸入 BASE/luxrayse (保證luxrays跟lux同級就可以了)
17.然后點擊Clone就可以開始無限的等待
18.等都完成了之后,就打開你的Visual Studio 2008的Command prompt,VC2005的你盡快裝個2008吧,VC2005難受死你。~_~
19.然后CD到你的windows文件夾。懂cd的跳過去:一般打開 Command prompt上的默認路徑是你的Visual Studio的安裝路徑。比如我的是在D盤,但是我的Luxrender在G盤所以要換盤,在黑屏上輸入 G: 。如果你的Luxrender在E盤就輸入 E: 。如此類推。然后就是 cd G:\luxrender\BASE\windows\ 我的是這樣,如果你的luxrender文件夾是在E盤里面的SRC文件夾中就輸入 cd E:\SRC\luxrender\BASE\windows\。
20.接著你會看到你的windows文件夾中有個叫做 getdeps.bat 的文件。在黑屏上輸入 getdeps
21.接著又是選擇什么的反正getdeps就是把所有的luxrender需要的類庫之類的都下載下來,然后解壓到一個叫做deps的文件夾里面,deps文件夾是在Luxrender\BASE\文件夾中,也就是跟你的lux、windows、luxrays同一級。
22.Get完之后就是導入注冊表,雙擊windows文件夾里面的build-vars.reg,然后確定導入就行了。其實它就是把像LUX_WINDOWS_BUILD_ROOT這樣的環境變量設置一下。當然你也可以自己一個一個設置。
23.接下來的事情就是build你下下來的東西 (<deps\>下的東西build一下,比如boost)。在你的Command prompt 里面輸入build-deps-x86.bat。(慚愧我還是用32位的WindowsXP)。你不要嘗試使用cmd.exe去build,難受的是你。
24.在無盡的等待回來后,你覺得差不多了,但是厄運才剛剛開始……..
開始編譯
1.然后就是編譯,進入BASE/windows然后打開lux.sln
2.編譯肯定不會成功的,但是要一邊編譯一邊看有什么問題。
問題:
1.出現isatty()找不到
加入#include <io.h>
將isatty改成 _isatty()
2.環境變量沒設置,會有這個問題的,所以加上它提示的環境變量
3.Yacc返回錯誤,說系統找不到某個東西。要把 BASE/windows/Projects里面的那個project文件(.vcproj)用文本文件打開然后將"$(InputDir)/$(InputName)-hxx.cpp"的反斜杠(/)去掉。有幾個文件要改這個的。當你遇到了就改一下。就是這個問題。
4.moc.exe找不到,就是QT沒有編譯好。打開visual studio 2008 的Command prompt 打開,然后cd到QT的根目錄比如我的是G:\Luxrender\BASE\deps\x86\qt-everywhere-opensource-src-4.6.2輸入configure -debug-and-release -opensource -platform win32-msvc2008完成之后在輸入nmake
5.miss python31.lib
拷貝 python31.lib
From
G:\Luxrender\BASE\deps\x86\Python-3.1.2\PCbuild\
To
G:\Luxrender\BASE\deps\x86\Python-2.6.6\PCbuild\
6.miss libboost_python-vc90-mt-lib
create foulder <python2> in
G:\Luxrender\BASE\deps\x86\boost_1_43_0\stage
copy
libboost_python-vc90-mt-lib
libboost_python-vc90-mt-1_43.lib
libboost_python-vc90-mt-gd-1_43.lib
libboost_python-vc90-mt-gd.lib
from
G:\Luxrender\BASE\deps\x86\boost_1_43_0\stage\python3\lib\
to
G:\Luxrender\BASE\deps\x86\boost_1_43_0\stage\python2\lib\
應該來說你就可以全部編譯過去了。
2010年8月29日
我是屎,但我是一砣自尊的屎、自信的屎、自以為是的屎.
我不會搞笑,也不會煽情,可能默默無聞的腐敗,可能也招來一些厭惡,甚至唾棄.但我義無反顧,也義不容辭自戀或自傷,所以我選擇了做屎.
當一砣屎沒什麼大不了,也沒什麼小不然,一砣屎就是一砣屎,他不能變成一塊金子,也不能蛻變成鉆石.但他有歸屬,他是屬于馬桶的,劉德華說:"每個馬桶都是英雄",那歸屬于英雄的做砣屎又何妨.一砣屎也就是一砣屎,有可能做屎是低下的,但我有自尊我就是第一流的屎.他會腐化成泥土,但每一件物品都會腐化成泥土,無論高尚或低賤,無論偉大或渺小.
我奉呈:
While there is a lower class I am in it.
While there is a crimical elememts I am of it.
While there is a soul in prison i am no free.
2010年8月25日
摘要: 如果你認為三流學校的人沒資格在園子里發表看法,不要點開看了。
如果你認為無關技術的不應該發在首頁精華,也不要點看看了。
如果你認為發在首頁精華的都是關于”超高“技術含量的,不要點開看了。
如果你看了,然后覺得我說得不對,請你不要人身攻擊,我怕我受不了到時賴你就不好了。
閱讀全文
2010年8月19日
摘要: 大學英語(一)(閱讀)
X
高等代數B
X
高等數學A1
X
計算機導論
計算機高級語言程序設計(C)
...
閱讀全文
2010年7月2日
關于造輪子的問題,褒貶不一,我是贊成造輪子的,很多時候我們沒有必要再去造一個已經存在的輪子,這是貶造輪子的重要的看法,我覺得沒什么不對的,如果是要立刻用到實際中去,而且時間上很趕的時候造一個輪子出來不是什么好事情。但是造輪子也有很多好處,比如能學到很多東西,可以參見vczh的關于造車輪,雖然沒有將所有造車輪的好處統計起來,但是很有參考價值。當然你可以去看看國外的大學教程,他們本科生的任務大多就是造個車輪出來。比如MIT:操作系統課程就是寫個操作系統出來,數據庫課程就是寫個數據庫出來,圖形學就是寫個raytracer(光線跟蹤器)出來。當然還有很多,比如Stanford:計算機網絡就是用UDP實現TCP的功能,寫個路由協議,圖形學就是做一個軟件openGL,等等,所以造輪子(再造輪子)是很有實踐價值的,而且很多一流學校就是這么干的。很多時候如果想創造輪子的話再造輪子所獲得的經驗和能力的提高是很有價值的。
那如果你肯定了再造輪子的好處那就多幫造輪子的人說點好話,當然也說明再造輪子的的限制,不然誤人子弟。但是如果你肯定了再造輪子的好處,你想加入再造輪子的大軍那你該怎么辦呢?
這點其實我也在想,如果看到這篇文章而又很有欲望表達自己的看法的前輩留下你的建議。在這里我也表達一下我的看法。
建議一:書
如果我們都想造輪子,但是苦于沒有經驗而且對輪子的構造很不熟悉,很多時候我們只好放棄這種想法。如果有一本書教你怎么去造這個輪子的話說不定你的輪子就造出來了,而且還不差。所以如果想造一個輪子,很常用的方法就是找一些相關的書籍。優點是結構完整而且描述清晰,而且還很系統(國內人寫的書大多不好,所以還是先去找找有沒有國外人寫的書,老外寫的書看得還比較爽)。缺點是大多時候書都比較理論實踐的東西少,而且對我們造輪子來說書上的那種結構不是很適合造輪子,如果是大部頭書的話還很快就把你的意志給削弱了。所以書不是萬能的,我看過一定數量的書,但是到頭來還是沒有太大的提高。
建議二:課程
對于大多書學生來說這條是最好的。其實大多數學生都是很想學習的,苦于沒有人指導加上老師無聊,很多時候學生搞到最后都不想學了。如果你是一個學生,如果讓你去造一個輪子出來,想想那是世界上最牛的輪子(轉得最快),那是讓人激動的,學生學起來也很有勁頭。所以造輪子最好的方式是去找一些課程,而那門課程是教你怎么造輪子的,按造那個課程的方式先去造一個出來,然后再想想自己的輪子怎么造,然后你的輪子又是另一個最牛的輪子(轉得快不說,還省材料)。優點:系統化,理論實際相結合,而且很多時候那些老師已經幫你完成了一些工作,適合菜鳥級別的人物---不如說我。缺點:還沒有找到,如果非得說有缺點就是:讓你見識了一個最牛的輪子,讓你覺得你自己獨立造的輪子沒有技術含量,讓你放棄了想法。
建議三:現成系統
我們討論的是再造輪子,所以這個輪子必然已經存在了,我們仿這個輪子去造一個不就行了。通過分析和比較,使用別人的輪子的時候想想別人底層是怎么做的,怎么設計的,意淫一番之后總結出經驗,然后造自己的輪子。而且造一個比原來更加小強(小而強大)的輪子,功能完整,耗費資源少,使用簡單-----那不就是我們想要的嗎?缺點就是可能要有些經驗。
建議四:論文
如果你是一個骨灰級的輪子玩家這點你應該是清楚的。看論文是一件很痛苦的事情,很多時候我們的理論基礎沒有論文的作者好,或則論文作者的基礎跟你的不一樣(比如他是學物理的,而我們是學計算機的),所以看不懂論文,直接結果就是你的輪子造不出來。所以還是要很有經驗和理論基礎。
建議五:開源軟件
開源是一個好東西,首先它是免費的,再者可以看到代碼。這點我不用說了,找到了相似的開源代碼,讀一讀,肯定有收獲。
總結或者想法:
造輪子肯定不是一件簡單的事情,沒有恒心就不要造輪子了,而且會花費一些時間。當然如果你很想造輪子而且你確定你有一定的時間(不用太多)你就去造吧。國內的開源軟件和基礎軟件不好,說不定我們這代造了一些輪子之后,國內的基礎軟件就好了。
很多時候如果你沒有頭緒,你就寫點代碼吧,古人寫字靜心,我們為什么不能寫代碼靜心呢?說不定你寫著寫著輪子的框架就出來了,再寫著寫著輪子就造好了。
雖然上面我都說了點,但是很多情況下你找不到你想要的資源,可以嘗試問一下別人,說不定他能給你很好的建議---這個建議可能就一句話。
2010年6月28日
第一次寫關于技術的,可能看的人不多,罵爛的也不在少數,但是還是寫一點,可能對一些人有幫助,也提高自己的寫作水平,以后可以寫出更好的東西來。當然我在blog里面會堅持寫自己做過的東西,這起碼不會誤人子弟(高手直接跳過)。
是什么?
首先吹下水,告訴你什么是代理服務器(proxy)。代理服務器(Proxy),是一種特殊的網絡服務,允許客戶端通過它與另一個網絡服務進行非直接的連接。具體過程為:客戶端首先與代理服務器建立連接,接著發出一個對另外的目標服務器的文件或其它資源的連接請求,代理服務器通過與目標服務器連接或從緩存中取得請求的資源,并返回給客戶端。通常在這個過程中,代理服務器可能改變客戶端請求或服務器端響應的一些內容以滿足各種代理需要。
為什么需要?
當我們知道什么是代理服務器之后我們就會想代理服務器能干什么?總結如下:
1、提高訪問速度:代理服務器通過設置一個較大的緩沖區,當有外界的信息通過時,同時也將其保存到緩沖區中,當其他用戶再訪問相同的信息時, 則直接由緩沖區中取出信息,傳給用戶,以提高訪問速度。
2、控制對內部資源的訪問:如大學FTP,使用教育網內地址段免費代理服務器,就可以用于對教育網開放的各類FTP下載上傳,以及各類資料查詢共享等服務。暫時我還沒有找到我們學校內部的代理服務器。
3、過濾內容:例如限制對特定計算機的訪問,將一種語言的數據翻譯成另一種語言,或是防御代理服務器兩邊的攻擊性訪問。我們很多東西都被和諧掉了,不知道代理服務器是神是鬼。
4隱藏真實IP:上網者也可以通過代理服務器隱藏自己的IP,免受攻擊。當然黑客可能用這項功能來隱藏自己,讓你很難找到。
5、突破內容過濾機制,訪問個別過濾的網站。如果Google以后不能訪問的話看來我要找個代理服務器了。現在都很多優秀的網站我都訪問不了了。
怎么去做?
當我們搞清楚是什么和為什么需要時,我們就開始想怎么去做一個出來(當然有人覺得沒什么意思,也就沒有興致考慮怎么去做了)。
首先我們需要知道代理服務器是怎么去完成工作的。其實很簡單:
1>
獲得客戶端的請求
2>
轉發客戶端的請求
3>
獲得目標服務器的響應
4>
返回target的響應
當然剛開始我們不要去考慮太多復雜的內容,我們先要將上面的功能實現了。
接著我就來代碼了:
int main(int argc, char** argv)
{
cout<<"Demo HTTP Proxy Server ver. 0.1.0.0"<<endl;
cout<<"Developed by:Like Zhang"<<endl;
RunServer();
return 0;
}
主函數什么事情都沒有做,就是RunServer,將服務啟動。那開始看下server是怎么工作的:
文字描述(代碼太多,偽碼描述比較合適):
1> 準備服務器套接字,綁定套接字,讓套接字在一個端口上監聽
2> 然后申請N多的線程(就叫做<threadArray>),放到數組中
3> 然后就等待客戶端連接到服務器上(也就是accept了),一直等……
4> 如果等到有客戶端連接,那就將accept到的套接字放到響應隊列(就叫做<socketBuffer>吧)中,當然由于這個隊列是一個共享資源,使用互斥體保證它的安全---先加共享鎖,然后將套接字放入隊列,然后再釋放共享鎖。
5> <threadArray>里面的線程是怎樣工作的呢?接下來介紹線程函數
文字描述線程函數:
1>
首先加共享鎖,接著看下socketBuffer有沒有東西,如果沒有東西(也就是有沒有客戶來連接服務器)釋放共享鎖接著循環,如果有東西,那就將套接字彈出(記住釋放共享鎖),用這個套接字做事情。
2>
做什么事情呢?其實很簡單,就是將客戶端的請求拿過來,然后轉發出去。
3>
轉發出去之后接收目標服務器的響應,請求完了,轉發也完了,就將套接字關掉,線程函數返回。
但是這里遇到了一些問題:怎么去找到目標服務器?怎么去接受目標服務器的響應(性能考慮)?
熟悉HTTP協議的人都是知道的,在HTTP請求中就帶有請求的URL。所以我們只要解釋一下客戶端的請求就知道了。
而接受目標服務器的響應我們使用IO復用就行了。
講解完畢!
看下代碼:windows版本的是Like Zhang實現的,版權歸他所有。這里只做交流使用,如果Like Zhang需要撤下我會撤下。
Linux版本是我實現的,沒有實現IO復用,也沒有Windows的快(Linux開50個線程直接卡住)。
http-proxy
功能是實現了,但是還是有很多的不足,我從以下幾點描述:
1>性能:測試結果表明性能不高,特別是當客戶端也是多線程實現的時候,某個意義上說這個代理服務器沒有任何的性能提高和需要的價值。所以還要優化性能,主要是:內存、線程的復用IO上做優化。
2>提供的功能:就算是性能提高了,但是沒有提供吸引人的功能時也沒有存在的意義,所以還要提供一些實質上的功能:頁面緩存、過濾信息和安全保護機制。
3>設計:如果看過代碼可能知道這個東西的代碼很差,如果要擴展這個東西設計還是很重要的,比如我們要加入更多的功能,將這些功能差分開再進行編碼會爽很多。
性能改進建議:
1>
內存:要想實現一個高效的并發的服務器程序是需要很多的努力,在內存的管理上不能忽略,還有比如緩存頁面需要大量的內存使用,如果能對內存使用上做一些努力能獲得很高的性能提升。
2>
線程池:這個很重要,在線程的管理上一點都不能馬虎,動態的線程管理是很有必要的,當連接少時要申請少量的線程,當用戶增多,為了服務的質量要動態地去增加線程。
3>
緩存頁面,前面也提到要緩存頁面,可以想想如果在一點時間段很多人要訪問Google的網站(比如50個)我們緩存了Google的頁面我們就只要下載一次。當然加入這個功能的時候要深入的去了解下HTTP協議,比如怎么去替換掉緩存的頁面,如果目標的頁面更改了,我們還是要重新下載一次的。
2010年6月19日
上一篇提到不在blog寫泄憤的話,好像自己沒有做到這一點,也扯太遠了,在這一篇里道個歉希望博友見諒。
我并不是什么技術牛人,但是我想寫一些自己的經驗給各位看看,如果覺得沒什么意思,就笑笑,如果對你有幫助也笑笑------笑一笑,十年少。
我的專業是這個的,當然少不了要編程但是編來編去不知道方向了,也不知道怎么再去提高了,這是一個很恐怖的事情,有時我就會問自己我是屬于哪個層次的,我還有什么不足,我該怎么去提高?這些對我來說都是比較實在的問題。
我是兩年前開始學編程的,如果不算我浪費的大學第一年。大一的時候,我們是有教C++,有上機實習,當時在我看來那都是瞎扯淡,連函數都不知為何物,就拼湊一些我都不知道干什么用的代碼,然后當作作業提交上去,如果不是那該死的MFC我也不會這樣,因為我連函數變量這些基本的東西都不懂,你叫我用MFC那不如殺了我。再加上沒有人給我講MFC,我感覺代碼是一種神秘的東西。其實也不能說我不努力,其實努力了,只是沒有得到該有的回報。可能路走錯了,走錯路是一件很可怕的事情,比如你走了一個反方向的路,當然地球是圓的,你最終會到達終點,不過你錯過了好的時機,浪費了大把的時間和精力。如果走錯了方向及時改正過來還是可以的-----如果你沒有放棄的。
是的,我沒有放棄(雖然我想過),我及時的改變的方向。從小學到高中我都想脫離老師的方向,最終我還是不敢脫離老師的方向。不過在大學我沒有想到我無意間脫離了老師的方向,算是圓了我的夢。大二開了門Java,老師不錯,然后我從Java學會了編程然后我再去學C++,很諷刺,我現在喜歡的是C++,而我的C++是從Java里面學來的。其實如果你遇到了好的老師,那個老師不需要很牛,也不需要人品很好,但是他能教會你東西,你算是撿到寶了。我就是撿到寶的人,不要臉的說一句我就是luck dog。然后我就做一些ACM的題目,這也是因為我遇到了好的朋友----他叫我去做一些ACM的題目,然后我通過做題-翻書-做題,我的水平就提上去了,最起碼我對Coding有了從來沒有的興趣。做了一些題后我感覺沒有什么代碼我是寫不出來的(現在想想很可笑)。然后我又重新玩了一點MFC,看的是《深入淺出MFC》和孫鑫的MFC視屏。然后我懂了MFC的一些底層的東西,做MFC有了點感覺。不過我很討厭MFC,畢竟是它讓我對編程失去了信心。在這段路我走了彎路,不過這個彎路是值得的,梅花香自苦寒來。
如果停留在做ACM的題目上的話我還是不可一世的人,因為完成一個題目給你帶來的滿足感是多么讓人難以自拔的(我知道園子里很多題目達人,不要拍我)。我承認做ACM題目很鍛煉人,能時刻保持住你的思維能力,而且不斷提高能力,但是不要一直做題目,要出來透透氣,我是那種對什么都感興趣的人,當然也是缺乏耐心的人。所以玩了一些無關痛癢的東西,比如QT、mingw、Linux等等,當然老師沒有要求,如果跟著老師我永遠不知道外面的世界是什么樣的,幸好我看了很多這些東西,然后我對這些東西都多少了解點,自己做起事情來也知道怎么去選取不同的方案,為什么這么做。在這段時間我的操作系統的那個老師對我幫助很大,他每節課都不務正業,天天吹牛,然后在他的吹牛下我也變成一個會吹牛的人------他說了一些對我來說是新鮮的東西,然后我課下自己找到這些新鮮的東西,然后自己消化,然后就可以吹牛的,不過水平也只限于吹牛。
很多時候人都是在浪費時間,我浪費了不少時間。然后也養成了不守時,做事情拖沓的習慣----現在在改。接著我大三的時候接觸了高級的東西----圖形學。可能對有些人甚至大多數人圖形學不是什么高級的東西,但對于我來說是高級的。因為我一直在看沒有做事情,所以水平還是"水"字來形容。我在這門課上學了很多東西,比如需求、測試、設計、MVC、面向對象。我寫了很多代碼,看了很多書,然后我就是現在這個水平。
那我現在是什么水平呢?我很難判斷。對于自己都不了解是沒有辦法去找到自己的不足,也沒有辦法去提高自己的水平。所以我羅列一下自己:1、C++語法還沒有學透。我給自己的定義是低級C++程序員。雖然對于常用的C++是會用的,用C++去做出大多數功能是沒有問題的。但是讓我去設計一個C++系統還是不行,簡單的可以,但是對于復雜的系統還是不行。就算設計出來了也可能設計得不好。所以這方面需要自己努力一下。2、Java學得跟C++一樣。3、python還處于寫demo階段。4、總的來說語言不是障礙了,但是設計和知識儲備還不夠。5、沒有處理過復雜的系統---比如一個游戲或一個3D引擎。6、沒有經驗-----很少接觸過真實的軟件開發,基本不知道要干嘛。也就是說我就不知道別人要一個什么樣的程序。
別人說我編程很牛,是的,我可以指導低年級的實習,我可以給低年級講一些我熟悉的東西,但是很牛算不上,還是叫我低級程序員好一點,甚至是很低很低的那種。有時我還戲稱自己為:寫代碼的小男孩。