在大一寒假時哥攘,正好在知乎看到了谷歌編程之夏(GSoC)的含金量高嗎?此問題,心向往之椎眯。
在瀏覽了一些答案后, 看到@larmbr宇 介紹了@洪謙(QianHong) 熱心幫助學生參與GSoC讹开,雖自知還是菜鳥一枚盅视,但還是誠惶誠恐的私信了他,希望能夠參與GSoC旦万。相信各位在程序員的成長路上闹击,肯定都會有參與開源項目的小目標,先不說5000美金成艘,僅僅是有目標性的參與開源項目就吸引力滿滿了赏半。
隨后@larmbr宇就幫忙聯系QianHong,并且給出了鼓勵與建議;P
"勾搭"上QianHong后淆两,當時看到wine-zh社區(qū)的中國開發(fā)者這么厲害断箫,便稍有打退堂鼓,認為自己暫時還不適合參加秋冰,畢竟當時沒有真正的使用linux仲义,連github也沒有用過。于是在之后便盡量些少的準備,學習相關的知識埃撵,訂閱wine開發(fā)者郵件赵颅。
一段日子后,QianHong發(fā)來了郵件暂刘,問近況如何饺谬,以及一些參與GSoC以及Wine開發(fā)的建議,滿滿的一大篇谣拣,可見其用心程度募寨。當時剛剛開始用郵件通訊以及gmail,一些郵件禮儀都不甚清楚森缠,QianHong便耐心的建議以及一步一步的指導拔鹰,著實讓人感動,QianHong是我認識的最好的老師辅鲸,沒有之一格郁。估計在以后的人生中,不會再有這么好的老師了T_T 第一次回復如下:
hi独悴, 幾個建議:
1. 郵件盡量用純文本例书,除非必要不要用html格式/富文本格式,尤其是在英文技術列表中更要注意刻炒。
2. 訂閱郵件列表不要訂“摘要模式”决采,更萬萬不要回復摘要郵件。
3. 關于c/c++ runtime坟奥,現在就有個簡單的任務:
先下載和編譯Wine的源代碼树瞭;
然后查看代碼目錄中的dlls/msvcp90
$ grep stub msvcp90.spec | grep complex
可以看到下面這樣的函數:
@ stub -arch=win32 ??$pow@M@std@@YA?AV?$complex@M@0@ABV10@H@Z
@ stub -arch=win64 ??$pow@M@std@@YA?AV?$complex@M@0@AEBV10@H@Z
@ stub -arch=win32 ??$pow@N@std@@YA?AV?$complex@N@0@ABV10@H@Z
@ stub -arch=win64 ??$pow@N@std@@YA?AV?$complex@N@0@AEBV10@H@Z
@ stub -arch=win32 ??$pow@O@std@@YA?AV?$complex@O@0@ABV10@H@Z
@ stub -arch=win64 ??$pow@O@std@@YA?AV?$complex@O@0@AEBV10@H@Z
@ stub -arch=win64 ?_Cm@?5???$log@M@std@@YA?AV?$complex@M@1@AEBV21@@Z@4MB
@ stub -arch=win64 ?_Cm@?5???$log@N@std@@YA?AV?$complex@N@1@AEBV21@@Z@4NB
所有這類以stub開頭的東西都是Wine項目未實現的函數。
上 http://demangler.com/ 爱谁,可以把這些經過mangle的符號重新demangel為c++的語法:
例如這樣的:class std::complex<float> __cdecl std::pow<float>(class
std::complex<float> const &,int)
然后就可以試試自己動手實現這些函數晒喷,參考dlls/msvcp90/math.c中同類函數的實現方法:
dlls/msvcp90$ grep pow *.c
(或者 dlls/msvcp90$ grep -A50 -B50 -w pow *.c )
這個任務的難度對你來說合適嗎?
在隨后的很多問題上访敌, QianHong都是如此耐心詳略的指導凉敲,大家感受一下(后來不小白了就沒有這樣面向小白的回復啦)。現在回看以前的郵件寺旺,還能學習良多爷抓,感覺能夠被人如此指導就是撞大運了(好了,現在QianHong在其他領域也會給詳盡的建議我)233
那段時間大致是我成長最快的一段時間吧阻塑,從自娛自樂寫一些程序蓝撇,到參與Wine這樣一個有著10年歷史與復雜架構的項目,從一個啥也不會的windows VS小白轉到了linux vim開發(fā)陈莽。
從14年3月開始斷斷續(xù)續(xù)做了幾個月渤昌,才把第一個補丁寫出來虽抄,并且加上了測試,而補丁最終被接受已經是大二的9月了;
而后14年的GSoC已經來不及參加耘沼,于是便為此一直為Wine寫關于實現VC++runtime模塊的補丁极颓,在此期間學習到了非常非常多的東西:P
最后終于成功參與了15年的GSoC,課題是實現tr2 filesystem庫群嗤。
隨后也可能是憑著此經歷,得到了@肖祥全的內推(感謝兵琳!)狂秘,幸運的獲得了Google的面試,可惜算法不佳躯肌,在電面就掛了者春。
16年的GSoC,原來在寒假前打算嘗試新項目清女,參與了R語言GSoC2016的準備钱烟,把GSoC Re2正則表達式庫的要求準備全部都做完了,成功的作為candidate的時候嫡丙,mentor發(fā)了我一封郵件
Dear YongHao,
We received another very strong application for the RE2 project from Qin Wenfeng who has already implemented a working prototype https://github.com/qinwf/re2r
It may be possible for you both to work on the RE2 project in GSOC, if you write proposals to implement very different but complementary features. I would encourage you to write an email to Qin and start a discussion about which different features you both could work on.
告知我已經有一位中國學生完成了re2項目的原型了@-@拴袭,囧死了。得知wenfeng是一位經驗豐富的R user以及已經完成了prototype曙博,項目量不夠兩個人合作拥刻,便放棄了此項目。我打算準備的另一個項目BOOST也剛好在這年拿不到GSoC的名額父泳, 于是我又投回Wine的懷抱般哼,此時挑戰(zhàn)的是更難的項目: concurrency庫,也因太難而選不上了惠窄,太難了mentor不會冒風險嘗試蒸眠。后來因為忙著找工作的事情,就沒有繼續(xù)填坑了杆融,希望之后有機會繼續(xù)填楞卡。
以上便是全部GSoC經歷,也是我大學的一個重要組成部分了擒贸。
大學更為重要的部分是?
當然是女朋友啦 ;P