#引語
大家好,我是點滴復(fù)讀機(jī)軟件的開發(fā)者。
我想從我自己的英語學(xué)習(xí)經(jīng)歷談起,總結(jié)分享一下這個點滴復(fù)讀機(jī)軟件的開發(fā)心得。
通過分享,一方面可能對于英語學(xué)習(xí)者會有所共勉和啟發(fā);另一方面,也會為你展示真實的軟件開發(fā)工作和一個程序員的心路歷程。
#我的英語學(xué)習(xí)經(jīng)歷
與大多數(shù)人一樣,我是從初中起為了應(yīng)試教育,而在中國老師的教育下,在漢語環(huán)境下開始學(xué)習(xí)中國式英語的。
回想起來,我初中時的英語啟蒙老師,在當(dāng)時的條件下,算是非常的優(yōu)秀了,比如:
他會總結(jié)英語音節(jié)的劃分規(guī)則和口訣。(要知道當(dāng)時的教課書上是沒有相關(guān)內(nèi)容的);
他會總結(jié)考試易錯問題點的各種規(guī)則和口決,我現(xiàn)在還記得像foot wood took goods cook這些發(fā)短音的就是"腳踩木頭拿物煮"的口決等;
他會讓我們在每次英語課上進(jìn)行情景對話;
讓我們伸出舌頭去讀"th"這個音;
......
在90年代的偏遠(yuǎn)山區(qū),這樣的英語老師真算是出類拔萃的了。在此特別感謝這位老師。
在這位良師的教導(dǎo)下,我初中英語的應(yīng)試能力和基礎(chǔ)能力相比還算可以吧,英語學(xué)習(xí)之路有了個良好的開局。
高中階段,沒什么多值得提的,感覺就是初中時學(xué)習(xí)過一些東西的深化,老師一般般,學(xué)習(xí)完全是為了應(yīng)付考試。雖然學(xué)習(xí)算是跟得上,但也沒什么突破進(jìn)展。
在上大學(xué)后,需要準(zhǔn)備四六級考試,在英語課堂和各種環(huán)境下我也都感覺到了自己的落后欠缺:
不太敢開口說話、聽四級聽力感覺太快、看英語電影沒幾句聽懂的,典型的聾啞英語。四級考試是必須要過的,而聽力成了攔路虎。
為了提高聽力,我買了復(fù)讀機(jī),每天晚上在睡前練習(xí)聽力。
復(fù)讀機(jī)有個好處是聽不懂可以不斷重復(fù)聽,還不會影響他人。夜深人靜,心無雜念,躺在床上,真正地用心在聽。
漸漸地,感覺聽力有了一些起色,起碼聽過的常用語句再次出現(xiàn)后可以聽懂了。
更重要的,在聽一些資料的過程中,感覺到了一種英語的美(一些英語學(xué)習(xí)者應(yīng)該有同感),從而也產(chǎn)生了興趣。
晚上睡覺前,使用復(fù)讀機(jī)聽英語,從壓力變成了了動力,從動力變成了習(xí)慣,又從習(xí)慣變成了興趣。
有了這興趣,學(xué)習(xí)的效果也更好了,后來通過四級考試,我的聽力反而變成了優(yōu)勢項。
在通過四級考試后,由于個人喜歡看一些國外電影和劇,為了更直接地能聽懂電影中的英語,我自己還是堅持在睡前練習(xí)聽力的習(xí)慣,一直到畢業(yè)工作。
可以說,我的英語學(xué)習(xí),由于沒有太多"說"的環(huán)境,所以"聽"占了很大的比重。
而通過"聽",也使我鞏固了單詞語法,提高了聽力閱讀和寫作能力,并培養(yǎng)了英語學(xué)習(xí)興趣。
#點滴復(fù)讀機(jī)的開發(fā)初衷
我喜歡用復(fù)讀機(jī)聽英語。
但是后來,那種傳統(tǒng)的磁帶式復(fù)讀機(jī)逐漸沒落了,許多出版社也不再提供磁帶那種東西了。
大家都用上了智能手機(jī),聽力資源也變成了mp3格式。
許多人睡覺前都在玩手機(jī)了。
而我是一個軟件開發(fā)工作者,我還喜歡寫代碼編程序。
我這時候就想,如果在智能手機(jī)上實現(xiàn)復(fù)讀機(jī)的功能,不用抱著那個傳統(tǒng)的磁帶式復(fù)讀機(jī),隨時隨地可以學(xué)習(xí)mp3格式的英語聽力,學(xué)習(xí)英語應(yīng)該會更方便。
當(dāng)時在應(yīng)用市場,也沒有找到符合自己期望的復(fù)讀機(jī)軟件。而自己剛好又喜歡英語和編程,所以就準(zhǔn)備自己動手開發(fā)了。
就以喜歡英語和編程為初衷,沒有其它經(jīng)濟(jì)價值和商業(yè)模式的思量,我就開啟了點滴復(fù)讀機(jī)軟件的開發(fā)歷程。
目標(biāo)是開發(fā)一個主要用來練習(xí)外語聽力的復(fù)讀機(jī)軟件,以代替?zhèn)鹘y(tǒng)的磁帶式復(fù)讀機(jī)。
#點滴復(fù)讀機(jī)開發(fā)歷程
說干就干。
一開始自己有點壯志雄心,目標(biāo)很宏大:
要能支持Windows/Android/iOS/Windows Phone等多個平臺;
要能支持自定義加密格式的播放、支持變速播放、支持復(fù)讀、支持同步和對比等。
但在分析了各平臺的差異化情況后,我的結(jié)論是要實現(xiàn)以上目標(biāo),保持軟件最優(yōu)的一致體驗,需要我自己開發(fā)一套播放復(fù)讀引擎才能滿足需求。(平臺自帶的播放引擎有許多限制和差別,不便或不能實現(xiàn)某些特色功能)。
開發(fā)一套跨平臺的播放復(fù)讀引擎,任務(wù)艱巨。
但我知難而進(jìn)了,我選擇移植性最好的C/C++語言,從跨平臺的OS層適配開始編碼了。
這真是從頭開始,先完成了一個適配各操作系統(tǒng)差異性的底層庫,以方便以后多平臺的編碼工作。(這部分時間差不多1個月)
接下來,進(jìn)行最主要的播放復(fù)讀引擎的開發(fā)工作,播放復(fù)讀引擎是對文件進(jìn)行播放處理和復(fù)讀控制的核心,相關(guān)的邏輯流程重要而復(fù)雜。
在軟件開發(fā)中,架構(gòu)的設(shè)計非常重要,為了做好這個播放復(fù)讀引擎的設(shè)計工作,我比較系統(tǒng)地分析了各平臺媒體引擎的技術(shù)架構(gòu),然后取長補短,自己設(shè)計了點滴復(fù)讀機(jī)的播放復(fù)讀引擎。(這部分分析設(shè)計時間差不多2個月)
在設(shè)計好以后,接下來就開始編碼開發(fā)了。
通過Visual Studio開發(fā)環(huán)境,使用C++語言,在Windows電腦上開始工作了。
由于結(jié)構(gòu)設(shè)計合理清楚,對C++語言比較熟悉,在Windows PC上開發(fā)調(diào)試也很高效,所以整體上開發(fā)過程比較順利,大約3個月時間完成了基本的開發(fā)測試工作,并在Android平臺移植跑起來了。
以上約半年時間,完成了一個基本的播放復(fù)讀引擎的設(shè)計開發(fā)工作,接下來是針對Android系統(tǒng)開發(fā)界面部分工作。
我是用Eclipse環(huán)境(前幾年的主要開發(fā)環(huán)境,現(xiàn)在主要使用Android Studio了),使用Java語言來進(jìn)行的Android開發(fā)。Java語言通過jni調(diào)用上邊用C++開發(fā)的播放復(fù)讀引擎。
Android應(yīng)用開發(fā)我也比較熟悉,所以起步是比較順利的。
但在應(yīng)用開發(fā)中,界面UI設(shè)計算是比較麻煩點。我是個完美主義者,總想找到一種最合理美觀的方式,所以經(jīng)常把界面布局優(yōu)化調(diào)整、斟酌再三。
我還花費1200元,找了個比較靠譜的UI設(shè)計師,幫點滴復(fù)讀機(jī)設(shè)計了軟件界面圖標(biāo)。
另外,我還想為學(xué)習(xí)者提供精品的學(xué)習(xí)資源下載,所以還買了阿里云服務(wù)器(700多元/年),做了服務(wù)器側(cè)的一些編程工作。
服務(wù)器側(cè)的編程我不熟悉,從頭學(xué)習(xí)了ssh框架,基于Tomcat和MySql數(shù)據(jù)庫,使用MyEclipse開發(fā)環(huán)境,完成了服務(wù)器側(cè)的開發(fā)和部署工作。
另外,我還搜集了一些英語聽力學(xué)習(xí)資源,使用一個加密工具加密后上傳到服務(wù)器。加密工具是我自己用Java語言開發(fā)的PC端程序,目的是只能由點滴復(fù)讀機(jī)播放加密后的資源。
所有這些雜七雜八的做完,全部時間差不多也是6個月時間。
也就是說,我用了一年時間,才有了這個軟件復(fù)讀機(jī)的雛形。
可能有人覺得不屑,但有一點需要說明,我自己是兼職業(yè)余開發(fā)的,就是利用一些周末或者晚上零碎的時間來開發(fā)點滴復(fù)讀機(jī)。
我個人是在一個IT公司負(fù)責(zé)軟件開發(fā)工作,工作內(nèi)容更多地是負(fù)責(zé)底層驅(qū)動的開發(fā)調(diào)試等,雖然都是軟件開發(fā),一些原理技術(shù)是相通的,但本質(zhì)工作與點滴復(fù)讀機(jī)的技術(shù)還是有較大差別,許多方面我都是邊學(xué)邊用。
在這種條件下,我能堅持把點滴復(fù)讀機(jī)軟件開發(fā)出來,我自己都覺得有點了不起的。如果現(xiàn)在讓我重新再來一遍,我都有點懼怕的。
開發(fā)完點滴復(fù)讀機(jī)Android版本雛形,進(jìn)行了一些自測改進(jìn)后,我就把軟件上傳到了各Android應(yīng)用商店。
接下來事情還沒結(jié)束,不斷的有用戶給我提出各種建議和bug,我也不斷地完善優(yōu)化它,基本每天晚上都在忙于它。
時間又過去了1年多,發(fā)布了10多個版本,點滴復(fù)讀機(jī)也到了2.x穩(wěn)定版本,我自己比較滿意,用戶的好評也越來越多。
有許多用戶給我反饋,為什么沒在蘋果手機(jī)上也開發(fā)點滴復(fù)讀機(jī),他們喜歡點滴復(fù)讀機(jī)。
由于Android版本已經(jīng)比較穩(wěn)定了,我個人也算比較有空了,自己也有意想熟悉iOS平臺的開發(fā)工作。
所以,我又說干就干了。
我專門買了蘋果電腦和手機(jī),安裝Xcode開發(fā)環(huán)境后開始了點滴復(fù)讀機(jī)iOS的開發(fā)工作。
我對iOS平臺開發(fā)不了解,一切從頭開始,先學(xué)習(xí)了iOS開發(fā)的最新的Swift語言。(Swift語言是蘋果推出的新的編程語言,個人更喜歡用的東西)
接下來就想使用Swift語言在iOS平臺開始開發(fā)工作,但又發(fā)現(xiàn)iOS平臺接口及許多示例和教程,都還是Objective-c語言寫的,雖然Objective-c語言,是C語方的的擴(kuò)展,但擴(kuò)展的東西比較多,導(dǎo)致我看不懂許多代碼,所以我又把Objective-c語言進(jìn)行學(xué)習(xí)熟悉。
這些語言基礎(chǔ)和iOS平臺基礎(chǔ)的學(xué)習(xí),差不多有3個月時間吧。
接下來,把以前的播放復(fù)讀引擎在iOS平臺進(jìn)行移植,因為已經(jīng)做好了操作系統(tǒng)的適配,所以移植工作很順利,差不多一周時間就跑起來,能播放出聲音了。
就是說,點滴復(fù)讀機(jī)iOS平臺的開發(fā),界面使用Swift或Objective-c語言開發(fā),底層還是復(fù)用以前C++語言寫的播放復(fù)讀引擎。
由于有了Android平臺的界面設(shè)計經(jīng)驗和穩(wěn)定的播放復(fù)讀引擎,再加上蘋果優(yōu)秀的Xcode開發(fā)環(huán)境支持,iOS版本的開發(fā)進(jìn)展比較快。
我個人覺得蘋果在某些方面對開發(fā)者更友好,開發(fā)工作做起來更簡單點,比如在蘋果系統(tǒng)在開發(fā)完成后可以直接在Xcode完成向Appstore的上傳等工作,而Android系統(tǒng),每次新版本開發(fā)完成,還要耗時地向各應(yīng)用市場去上傳版本。
差不多兩個月時間,我就完成了iOS 1.0版本的開發(fā)工作,并上傳到了Appstore。
但在把iOS版本上傳到Appstore時,我選擇了收費選項,為什么呢?
對于點滴復(fù)讀機(jī)安卓版本,除了時間精力,我本身沒多少其它的投入,所以軟件一直是免費的,前且沒有加任何的廣告。我主要就當(dāng)是自用、練練編程能力和為大家服務(wù)貢獻(xiàn)了。
但為了開發(fā)iOS版本,我自己買了蘋果電腦和手機(jī),還需要每年向蘋果交注冊費用等,所以蘋果版本我開始選擇了收費下載。
但收費也會有相比Android版本更優(yōu)質(zhì)服務(wù),比如我在蘋果版本中增加歌詞編輯、句子收藏復(fù)習(xí)等功能,是為蘋果用戶特供的。
(不過,蘋果版本為了支持其它國家不同語言種類學(xué)習(xí)者的需要,沒有提供英語學(xué)習(xí)資源的在線下載。)
當(dāng)然,Android用戶也沒有被輕視,近期已經(jīng)對Android版本界面等地方進(jìn)行了優(yōu)化升級,以后也將會有持續(xù)的優(yōu)化。
至此,點滴復(fù)讀機(jī)Android版本和iOS版本算是開發(fā)穩(wěn)定上線了。
總結(jié)下來,我單槍匹馬、點點滴滴地花了近兩年的時間,完成了這些現(xiàn)在回想起都覺得困難而不太可能的工作。
這也是點滴復(fù)讀機(jī)名稱的來歷,我覺得做任何事情,尤其英語學(xué)習(xí),堅持是最主要的。
時間是點點滴滴積累起來的,每天一小步,貌似作用不大,但時間長了,你就會發(fā)現(xiàn)質(zhì)變的。
#點滴復(fù)讀機(jī)的想法
我現(xiàn)在自己也在使用點滴復(fù)讀機(jī)堅持英語學(xué)習(xí)中。
結(jié)合自己的體驗和一些用戶的建議,我會把點滴復(fù)讀機(jī)不斷改進(jìn)下去,使它成為你練習(xí)英語聽力的最好的永久伴侶。
但目前點滴復(fù)讀機(jī)相關(guān)的工作,都是我一個人在處理,所以某些地方支持不是很到位,比如:
軟件版本更新不太及時,一些用戶的建議或問題來不及處理;
軟件缺乏商業(yè)推廣,主要是靠口碑宣傳,知道的人不算多;
微信公眾號,也是不定時的更新部分信息,數(shù)量和質(zhì)量都不佳;
......
這些都希望各位能諒解。
當(dāng)然,我也很期待能得到各位多方面的支持,包括:
幫忙在微信/微博轉(zhuǎn)發(fā)分享,讓更多的人認(rèn)識點滴復(fù)讀機(jī);
在應(yīng)用商店和知乎等平臺,給點滴復(fù)讀機(jī)好評點贊;
微信贊賞支持(尤其針對免費的Android用戶);
......
微信公眾號:點滴英語