#引語(yǔ)
大家好,我是點(diǎn)滴復(fù)讀機(jī)軟件的開(kāi)發(fā)者。
我想從我自己的英語(yǔ)學(xué)習(xí)經(jīng)歷談起菱涤,總結(jié)分享一下這個(gè)點(diǎn)滴復(fù)讀機(jī)軟件的開(kāi)發(fā)心得。
通過(guò)分享洛勉,一方面可能對(duì)于英語(yǔ)學(xué)習(xí)者會(huì)有所共勉和啟發(fā)粘秆;另一方面,也會(huì)為你展示真實(shí)的軟件開(kāi)發(fā)工作和一個(gè)程序員的心路歷程收毫。
#我的英語(yǔ)學(xué)習(xí)經(jīng)歷
與大多數(shù)人一樣攻走,我是從初中起為了應(yīng)試教育殷勘,而在中國(guó)老師的教育下,在漢語(yǔ)環(huán)境下開(kāi)始學(xué)習(xí)中國(guó)式英語(yǔ)的昔搂。
回想起來(lái)玲销,我初中時(shí)的英語(yǔ)啟蒙老師,在當(dāng)時(shí)的條件下巩趁,算是非常的優(yōu)秀了痒玩,比如:
他會(huì)總結(jié)英語(yǔ)音節(jié)的劃分規(guī)則和口訣。(要知道當(dāng)時(shí)的教課書(shū)上是沒(méi)有相關(guān)內(nèi)容的)议慰;
他會(huì)總結(jié)考試易錯(cuò)問(wèn)題點(diǎn)的各種規(guī)則和口決,我現(xiàn)在還記得像foot wood took goods cook這些發(fā)短音的就是"腳踩木頭拿物煮"的口決等奴曙;
他會(huì)讓我們?cè)诿看斡⒄Z(yǔ)課上進(jìn)行情景對(duì)話别凹;
讓我們伸出舌頭去讀"th"這個(gè)音;
......
在90年代的偏遠(yuǎn)山區(qū)洽糟,這樣的英語(yǔ)老師真算是出類拔萃的了炉菲。在此特別感謝這位老師。
在這位良師的教導(dǎo)下坤溃,我初中英語(yǔ)的應(yīng)試能力和基礎(chǔ)能力相比還算可以吧拍霜,英語(yǔ)學(xué)習(xí)之路有了個(gè)良好的開(kāi)局。
高中階段薪介,沒(méi)什么多值得提的祠饺,感覺(jué)就是初中時(shí)學(xué)習(xí)過(guò)一些東西的深化,老師一般般汁政,學(xué)習(xí)完全是為了應(yīng)付考試道偷。雖然學(xué)習(xí)算是跟得上,但也沒(méi)什么突破進(jìn)展记劈。
在上大學(xué)后勺鸦,需要準(zhǔn)備四六級(jí)考試,在英語(yǔ)課堂和各種環(huán)境下我也都感覺(jué)到了自己的落后欠缺:
不太敢開(kāi)口說(shuō)話目木、聽(tīng)四級(jí)聽(tīng)力感覺(jué)太快换途、看英語(yǔ)電影沒(méi)幾句聽(tīng)懂的,典型的聾啞英語(yǔ)刽射。四級(jí)考試是必須要過(guò)的军拟,而聽(tīng)力成了攔路虎。
為了提高聽(tīng)力柄冲,我買了復(fù)讀機(jī)吻谋,每天晚上在睡前練習(xí)聽(tīng)力。
復(fù)讀機(jī)有個(gè)好處是聽(tīng)不懂可以不斷重復(fù)聽(tīng)现横,還不會(huì)影響他人漓拾。夜深人靜阁最,心無(wú)雜念,躺在床上骇两,真正地用心在聽(tīng)速种。
漸漸地,感覺(jué)聽(tīng)力有了一些起色低千,起碼聽(tīng)過(guò)的常用語(yǔ)句再次出現(xiàn)后可以聽(tīng)懂了配阵。
更重要的,在聽(tīng)一些資料的過(guò)程中示血,感覺(jué)到了一種英語(yǔ)的美(一些英語(yǔ)學(xué)習(xí)者應(yīng)該有同感)棋傍,從而也產(chǎn)生了興趣。
晚上睡覺(jué)前难审,使用復(fù)讀機(jī)聽(tīng)英語(yǔ)瘫拣,從壓力變成了了動(dòng)力,從動(dòng)力變成了習(xí)慣告喊,又從習(xí)慣變成了興趣麸拄。
有了這興趣,學(xué)習(xí)的效果也更好了黔姜,后來(lái)通過(guò)四級(jí)考試拢切,我的聽(tīng)力反而變成了優(yōu)勢(shì)項(xiàng)。
在通過(guò)四級(jí)考試后秆吵,由于個(gè)人喜歡看一些國(guó)外電影和劇淮椰,為了更直接地能聽(tīng)懂電影中的英語(yǔ),我自己還是堅(jiān)持在睡前練習(xí)聽(tīng)力的習(xí)慣帮毁,一直到畢業(yè)工作实苞。
可以說(shuō),我的英語(yǔ)學(xué)習(xí)烈疚,由于沒(méi)有太多"說(shuō)"的環(huán)境黔牵,所以"聽(tīng)"占了很大的比重。
而通過(guò)"聽(tīng)"爷肝,也使我鞏固了單詞語(yǔ)法猾浦,提高了聽(tīng)力閱讀和寫(xiě)作能力,并培養(yǎng)了英語(yǔ)學(xué)習(xí)興趣灯抛。
#點(diǎn)滴復(fù)讀機(jī)的開(kāi)發(fā)初衷
我喜歡用復(fù)讀機(jī)聽(tīng)英語(yǔ)金赦。
但是后來(lái),那種傳統(tǒng)的磁帶式復(fù)讀機(jī)逐漸沒(méi)落了对嚼,許多出版社也不再提供磁帶那種東西了夹抗。
大家都用上了智能手機(jī),聽(tīng)力資源也變成了mp3格式纵竖。
許多人睡覺(jué)前都在玩手機(jī)了漠烧。
而我是一個(gè)軟件開(kāi)發(fā)工作者杏愤,我還喜歡寫(xiě)代碼編程序。
我這時(shí)候就想已脓,如果在智能手機(jī)上實(shí)現(xiàn)復(fù)讀機(jī)的功能珊楼,不用抱著那個(gè)傳統(tǒng)的磁帶式復(fù)讀機(jī),隨時(shí)隨地可以學(xué)習(xí)mp3格式的英語(yǔ)聽(tīng)力度液,學(xué)習(xí)英語(yǔ)應(yīng)該會(huì)更方便厕宗。
當(dāng)時(shí)在應(yīng)用市場(chǎng),也沒(méi)有找到符合自己期望的復(fù)讀機(jī)軟件堕担。而自己剛好又喜歡英語(yǔ)和編程已慢,所以就準(zhǔn)備自己動(dòng)手開(kāi)發(fā)了。
就以喜歡英語(yǔ)和編程為初衷霹购,沒(méi)有其它經(jīng)濟(jì)價(jià)值和商業(yè)模式的思量蛇受,我就開(kāi)啟了點(diǎn)滴復(fù)讀機(jī)軟件的開(kāi)發(fā)歷程。
目標(biāo)是開(kāi)發(fā)一個(gè)主要用來(lái)練習(xí)外語(yǔ)聽(tīng)力的復(fù)讀機(jī)軟件厕鹃,以代替?zhèn)鹘y(tǒng)的磁帶式復(fù)讀機(jī)。
#點(diǎn)滴復(fù)讀機(jī)開(kāi)發(fā)歷程
說(shuō)干就干乍丈。
一開(kāi)始自己有點(diǎn)壯志雄心剂碴,目標(biāo)很宏大:
要能支持Windows/Android/iOS/Windows Phone等多個(gè)平臺(tái);
要能支持自定義加密格式的播放轻专、支持變速播放忆矛、支持復(fù)讀、支持同步和對(duì)比等请垛。
但在分析了各平臺(tái)的差異化情況后催训,我的結(jié)論是要實(shí)現(xiàn)以上目標(biāo),保持軟件最優(yōu)的一致體驗(yàn)宗收,需要我自己開(kāi)發(fā)一套播放復(fù)讀引擎才能滿足需求漫拭。(平臺(tái)自帶的播放引擎有許多限制和差別,不便或不能實(shí)現(xiàn)某些特色功能)混稽。
開(kāi)發(fā)一套跨平臺(tái)的播放復(fù)讀引擎采驻,任務(wù)艱巨。
但我知難而進(jìn)了匈勋,我選擇移植性最好的C/C++語(yǔ)言礼旅,從跨平臺(tái)的OS層適配開(kāi)始編碼了。
這真是從頭開(kāi)始洽洁,先完成了一個(gè)適配各操作系統(tǒng)差異性的底層庫(kù)痘系,以方便以后多平臺(tái)的編碼工作。(這部分時(shí)間差不多1個(gè)月)
接下來(lái)饿自,進(jìn)行最主要的播放復(fù)讀引擎的開(kāi)發(fā)工作汰翠,播放復(fù)讀引擎是對(duì)文件進(jìn)行播放處理和復(fù)讀控制的核心龄坪,相關(guān)的邏輯流程重要而復(fù)雜。
在軟件開(kāi)發(fā)中奴璃,架構(gòu)的設(shè)計(jì)非常重要悉默,為了做好這個(gè)播放復(fù)讀引擎的設(shè)計(jì)工作,我比較系統(tǒng)地分析了各平臺(tái)媒體引擎的技術(shù)架構(gòu)苟穆,然后取長(zhǎng)補(bǔ)短抄课,自己設(shè)計(jì)了點(diǎn)滴復(fù)讀機(jī)的播放復(fù)讀引擎。(這部分分析設(shè)計(jì)時(shí)間差不多2個(gè)月)
在設(shè)計(jì)好以后雳旅,接下來(lái)就開(kāi)始編碼開(kāi)發(fā)了跟磨。
通過(guò)Visual Studio開(kāi)發(fā)環(huán)境,使用C++語(yǔ)言攒盈,在Windows電腦上開(kāi)始工作了抵拘。
由于結(jié)構(gòu)設(shè)計(jì)合理清楚,對(duì)C++語(yǔ)言比較熟悉型豁,在Windows PC上開(kāi)發(fā)調(diào)試也很高效僵蛛,所以整體上開(kāi)發(fā)過(guò)程比較順利,大約3個(gè)月時(shí)間完成了基本的開(kāi)發(fā)測(cè)試工作迎变,并在Android平臺(tái)移植跑起來(lái)了充尉。
以上約半年時(shí)間,完成了一個(gè)基本的播放復(fù)讀引擎的設(shè)計(jì)開(kāi)發(fā)工作衣形,接下來(lái)是針對(duì)Android系統(tǒng)開(kāi)發(fā)界面部分工作驼侠。
我是用Eclipse環(huán)境(前幾年的主要開(kāi)發(fā)環(huán)境,現(xiàn)在主要使用Android Studio了)谆吴,使用Java語(yǔ)言來(lái)進(jìn)行的Android開(kāi)發(fā)倒源。Java語(yǔ)言通過(guò)jni調(diào)用上邊用C++開(kāi)發(fā)的播放復(fù)讀引擎。
Android應(yīng)用開(kāi)發(fā)我也比較熟悉句狼,所以起步是比較順利的笋熬。
但在應(yīng)用開(kāi)發(fā)中,界面UI設(shè)計(jì)算是比較麻煩點(diǎn)鲜锚。我是個(gè)完美主義者突诬,總想找到一種最合理美觀的方式,所以經(jīng)常把界面布局優(yōu)化調(diào)整芜繁、斟酌再三旺隙。
我還花費(fèi)1200元,找了個(gè)比較靠譜的UI設(shè)計(jì)師骏令,幫點(diǎn)滴復(fù)讀機(jī)設(shè)計(jì)了軟件界面圖標(biāo)蔬捷。
另外,我還想為學(xué)習(xí)者提供精品的學(xué)習(xí)資源下載,所以還買了阿里云服務(wù)器(700多元/年)周拐,做了服務(wù)器側(cè)的一些編程工作铡俐。
服務(wù)器側(cè)的編程我不熟悉,從頭學(xué)習(xí)了ssh框架妥粟,基于Tomcat和MySql數(shù)據(jù)庫(kù)审丘,使用MyEclipse開(kāi)發(fā)環(huán)境,完成了服務(wù)器側(cè)的開(kāi)發(fā)和部署工作勾给。
另外滩报,我還搜集了一些英語(yǔ)聽(tīng)力學(xué)習(xí)資源,使用一個(gè)加密工具加密后上傳到服務(wù)器播急。加密工具是我自己用Java語(yǔ)言開(kāi)發(fā)的PC端程序脓钾,目的是只能由點(diǎn)滴復(fù)讀機(jī)播放加密后的資源。
所有這些雜七雜八的做完桩警,全部時(shí)間差不多也是6個(gè)月時(shí)間可训。
也就是說(shuō),我用了一年時(shí)間捶枢,才有了這個(gè)軟件復(fù)讀機(jī)的雛形握截。
可能有人覺(jué)得不屑,但有一點(diǎn)需要說(shuō)明烂叔,我自己是兼職業(yè)余開(kāi)發(fā)的,就是利用一些周末或者晚上零碎的時(shí)間來(lái)開(kāi)發(fā)點(diǎn)滴復(fù)讀機(jī)川蒙。
我個(gè)人是在一個(gè)IT公司負(fù)責(zé)軟件開(kāi)發(fā)工作,工作內(nèi)容更多地是負(fù)責(zé)底層驅(qū)動(dòng)的開(kāi)發(fā)調(diào)試等长已,雖然都是軟件開(kāi)發(fā),一些原理技術(shù)是相通的昼牛,但本質(zhì)工作與點(diǎn)滴復(fù)讀機(jī)的技術(shù)還是有較大差別术瓮,許多方面我都是邊學(xué)邊用。
在這種條件下贰健,我能堅(jiān)持把點(diǎn)滴復(fù)讀機(jī)軟件開(kāi)發(fā)出來(lái)胞四,我自己都覺(jué)得有點(diǎn)了不起的。如果現(xiàn)在讓我重新再來(lái)一遍伶椿,我都有點(diǎn)懼怕的辜伟。
開(kāi)發(fā)完點(diǎn)滴復(fù)讀機(jī)Android版本雛形,進(jìn)行了一些自測(cè)改進(jìn)后脊另,我就把軟件上傳到了各Android應(yīng)用商店导狡。
接下來(lái)事情還沒(méi)結(jié)束,不斷的有用戶給我提出各種建議和bug偎痛,我也不斷地完善優(yōu)化它旱捧,基本每天晚上都在忙于它。
時(shí)間又過(guò)去了1年多,發(fā)布了10多個(gè)版本枚赡,點(diǎn)滴復(fù)讀機(jī)也到了2.x穩(wěn)定版本氓癌,我自己比較滿意,用戶的好評(píng)也越來(lái)越多贫橙。
有許多用戶給我反饋贪婉,為什么沒(méi)在蘋果手機(jī)上也開(kāi)發(fā)點(diǎn)滴復(fù)讀機(jī),他們喜歡點(diǎn)滴復(fù)讀機(jī)卢肃。
由于Android版本已經(jīng)比較穩(wěn)定了疲迂,我個(gè)人也算比較有空了,自己也有意想熟悉iOS平臺(tái)的開(kāi)發(fā)工作践剂。
所以鬼譬,我又說(shuō)干就干了。
我專門買了蘋果電腦和手機(jī)逊脯,安裝Xcode開(kāi)發(fā)環(huán)境后開(kāi)始了點(diǎn)滴復(fù)讀機(jī)iOS的開(kāi)發(fā)工作优质。
我對(duì)iOS平臺(tái)開(kāi)發(fā)不了解,一切從頭開(kāi)始军洼,先學(xué)習(xí)了iOS開(kāi)發(fā)的最新的Swift語(yǔ)言巩螃。(Swift語(yǔ)言是蘋果推出的新的編程語(yǔ)言,個(gè)人更喜歡用的東西)
接下來(lái)就想使用Swift語(yǔ)言在iOS平臺(tái)開(kāi)始開(kāi)發(fā)工作匕争,但又發(fā)現(xiàn)iOS平臺(tái)接口及許多示例和教程避乏,都還是Objective-c語(yǔ)言寫(xiě)的,雖然Objective-c語(yǔ)言甘桑,是C語(yǔ)方的的擴(kuò)展拍皮,但擴(kuò)展的東西比較多,導(dǎo)致我看不懂許多代碼跑杭,所以我又把Objective-c語(yǔ)言進(jìn)行學(xué)習(xí)熟悉铆帽。
這些語(yǔ)言基礎(chǔ)和iOS平臺(tái)基礎(chǔ)的學(xué)習(xí),差不多有3個(gè)月時(shí)間吧德谅。
接下來(lái)爹橱,把以前的播放復(fù)讀引擎在iOS平臺(tái)進(jìn)行移植,因?yàn)橐呀?jīng)做好了操作系統(tǒng)的適配窄做,所以移植工作很順利愧驱,差不多一周時(shí)間就跑起來(lái),能播放出聲音了椭盏。
就是說(shuō)组砚,點(diǎn)滴復(fù)讀機(jī)iOS平臺(tái)的開(kāi)發(fā),界面使用Swift或Objective-c語(yǔ)言開(kāi)發(fā)掏颊,底層還是復(fù)用以前C++語(yǔ)言寫(xiě)的播放復(fù)讀引擎惫确。
由于有了Android平臺(tái)的界面設(shè)計(jì)經(jīng)驗(yàn)和穩(wěn)定的播放復(fù)讀引擎,再加上蘋果優(yōu)秀的Xcode開(kāi)發(fā)環(huán)境支持,iOS版本的開(kāi)發(fā)進(jìn)展比較快改化。
我個(gè)人覺(jué)得蘋果在某些方面對(duì)開(kāi)發(fā)者更友好掩蛤,開(kāi)發(fā)工作做起來(lái)更簡(jiǎn)單點(diǎn),比如在蘋果系統(tǒng)在開(kāi)發(fā)完成后可以直接在Xcode完成向Appstore的上傳等工作陈肛,而Android系統(tǒng)揍鸟,每次新版本開(kāi)發(fā)完成,還要耗時(shí)地向各應(yīng)用市場(chǎng)去上傳版本句旱。
差不多兩個(gè)月時(shí)間阳藻,我就完成了iOS 1.0版本的開(kāi)發(fā)工作,并上傳到了Appstore谈撒。
但在把iOS版本上傳到Appstore時(shí)腥泥,我選擇了收費(fèi)選項(xiàng),為什么呢啃匿?
對(duì)于點(diǎn)滴復(fù)讀機(jī)安卓版本蛔外,除了時(shí)間精力,我本身沒(méi)多少其它的投入溯乒,所以軟件一直是免費(fèi)的夹厌,前且沒(méi)有加任何的廣告。我主要就當(dāng)是自用裆悄、練練編程能力和為大家服務(wù)貢獻(xiàn)了矛纹。
但為了開(kāi)發(fā)iOS版本,我自己買了蘋果電腦和手機(jī)光稼,還需要每年向蘋果交注冊(cè)費(fèi)用等或南,所以蘋果版本我開(kāi)始選擇了收費(fèi)下載。
但收費(fèi)也會(huì)有相比Android版本更優(yōu)質(zhì)服務(wù)艾君,比如我在蘋果版本中增加歌詞編輯迎献、句子收藏復(fù)習(xí)等功能,是為蘋果用戶特供的腻贰。
(不過(guò),蘋果版本為了支持其它國(guó)家不同語(yǔ)言種類學(xué)習(xí)者的需要扒秸,沒(méi)有提供英語(yǔ)學(xué)習(xí)資源的在線下載播演。)
當(dāng)然,Android用戶也沒(méi)有被輕視伴奥,近期已經(jīng)對(duì)Android版本界面等地方進(jìn)行了優(yōu)化升級(jí)写烤,以后也將會(huì)有持續(xù)的優(yōu)化。
至此拾徙,點(diǎn)滴復(fù)讀機(jī)Android版本和iOS版本算是開(kāi)發(fā)穩(wěn)定上線了洲炊。
總結(jié)下來(lái),我單槍匹馬、點(diǎn)點(diǎn)滴滴地花了近兩年的時(shí)間暂衡,完成了這些現(xiàn)在回想起都覺(jué)得困難而不太可能的工作询微。
這也是點(diǎn)滴復(fù)讀機(jī)名稱的來(lái)歷,我覺(jué)得做任何事情狂巢,尤其英語(yǔ)學(xué)習(xí)撑毛,堅(jiān)持是最主要的。
時(shí)間是點(diǎn)點(diǎn)滴滴積累起來(lái)的唧领,每天一小步藻雌,貌似作用不大,但時(shí)間長(zhǎng)了斩个,你就會(huì)發(fā)現(xiàn)質(zhì)變的胯杭。
#點(diǎn)滴復(fù)讀機(jī)的想法
我現(xiàn)在自己也在使用點(diǎn)滴復(fù)讀機(jī)堅(jiān)持英語(yǔ)學(xué)習(xí)中。
結(jié)合自己的體驗(yàn)和一些用戶的建議受啥,我會(huì)把點(diǎn)滴復(fù)讀機(jī)不斷改進(jìn)下去做个,使它成為你練習(xí)英語(yǔ)聽(tīng)力的最好的永久伴侶。
但目前點(diǎn)滴復(fù)讀機(jī)相關(guān)的工作腔呜,都是我一個(gè)人在處理叁温,所以某些地方支持不是很到位,比如:
軟件版本更新不太及時(shí)核畴,一些用戶的建議或問(wèn)題來(lái)不及處理膝但;
軟件缺乏商業(yè)推廣,主要是靠口碑宣傳谤草,知道的人不算多跟束;
微信公眾號(hào),也是不定時(shí)的更新部分信息丑孩,數(shù)量和質(zhì)量都不佳冀宴;
......
這些都希望各位能諒解。
當(dāng)然温学,我也很期待能得到各位多方面的支持略贮,包括:
幫忙在微信/微博轉(zhuǎn)發(fā)分享,讓更多的人認(rèn)識(shí)點(diǎn)滴復(fù)讀機(jī)仗岖;
在應(yīng)用商店和知乎等平臺(tái)逃延,給點(diǎn)滴復(fù)讀機(jī)好評(píng)點(diǎn)贊;
微信贊賞支持(尤其針對(duì)免費(fèi)的Android用戶)轧拄;
......
微信公眾號(hào):點(diǎn)滴英語(yǔ)