聊聊程序員如何學習英語單詞:寫了一個記單詞的小程序

背景:

關於英文對程序員的重要性,就很少說了!html

英語的學習,有不少,今天也不聊多,只聊英語單詞!前端

關於單詞的記憶,找過不少方法,下載過不少軟件。程序員

如圖(其它很差用的都卸載了):sql

上圖算是我之前用過軟件,注意,是之前哦~~~數據庫

意思就是沒有堅持下來~~~~小程序

隨時間的推移,最後它們仍是被我遺忘了~~~後端

爲何???不能:堅持!堅持!堅持!api

學習思考:

一直在找方法:緩存

1:下載過聯想記憶法、背文章記單詞,詞根,各類視頻~~~安全

2:連單詞的數據庫都網上下載了一份了,指望從數據庫的直接記憶單詞快些~~~

經過各類查詢語句,整理類似度的來記,才1天,就沒後文了~~~

天天都在佔用時間的事情:

可能寫框架,可能寫博文,可能其它事,一天一天過的很快~~~

因而,就在反反覆覆中~~~忘了背背了忘~~~~~

通過從新的思考以後,我覺方向錯了!

我應該找一個如何堅持的方法,而不是繼續找一個如何更快速學習的方法。

像產品經理同樣思考(作個小程序(網頁版))

我思考着,怎麼利用下載的單詞數據庫來作點什麼讓本身能更好的堅持。

一開始思考,天天抓取CodeProject上的英文文章1篇;

而後分析單詞頻率,把頻率最高的10個單詞作爲學習的方向。

後來又被本身否了:

1:出現的頻道高的必定是那些the that this is a apple之類的,沒有意義,要作過濾的話,工做量又大。

2:讀一篇文章,學幾個單詞,估計很難堅持(畢竟從小到大都是這種學習模式,已經無數次驗證了沒用)。

3:純記憶的短時間記憶學習,和浪費時間沒差異,又不是應付短時間的考試。

因而,光單詞的展現不行,必需要有思考和交互在裏面!

目前的暫時效果是這樣的:

最終思路:

1:One Day Two Words,一天2個單詞(一開始是10個,後來覺的多了,畢竟有互動,要打字,怕10個容易堅持不來)

2:單詞印象:每一個人都會對單詞進行評論(人玩多了,就會產生不少有意思有評論,前提是看大夥會不會玩)

3:造句:小時候學中文字的時候,老師都叫咱們造句的,爲何長大後學英文就沒強制這個要求了?

4:個人記錄:能夠查學過的詞~~~~

5:單詞庫有3萬多個,我挑了雅思共4034個詞,隨機出!

整體而已,主要是下降學習難度,這樣容易堅持~~~

總體完成後,感受還不夠,心裏隱隱都覺的還缺乏什麼,後續看看網友有什麼建議~~~

技術思路(時間,給本身半天時間完成任務):

 1:要支持手機瀏覽:

一開始還想着弄個前端的框架,或者弄個JQ Mobile之類的,搞個html+api請求。

後來光找框架和看Demo就花了很多時間,感受作個簡單的東西這麼費時間,而後直接給我畢了。

因而,用Table,最好的兼容,最容易的佈局!

用WebForm的ASPX,最省時的處理手段。

2:性能與併發的考慮:

網站要部署在原有的VPS上,1共就1G內存,已經跑了六七個網站了。

所以站用資源要少,性能要好,要經得起人民的考驗。

數據庫:

一開始是計劃用文本數據庫的;

但原有的單詞數據已經在sql2005上了,順手用sql2000了。

性能和併發:

頁面要簡單,能省多少是多少,因而一個JS都木有了;

對單詞作了緩存,對單詞的評論提交作了隊列寫;

考慮到訪問量並不大,展現是直接讀的數據庫,有自動緩存。

安全:

考慮到並非人人都很友善,會不會有人故意提交大量的一堆垃圾數據過來呢?

因而在後端作了簡單的安全的驗證。

前端的驗證也很簡單驗證了一下長度。

3:音標採集:

自帶的詞庫,有些單詞的音標可能缺乏,所以須要有一個採集的過程。

因而要找一個能夠採集的點,一開始定位去百度裏找:

寫了代碼採了一下,發現單詞都在js裏混淆輸出。

想用百度API,發現要Money~~~~

時間很緊張,由於只給本身一個下午的時間~~~~

後來又找了幾個,最後發現仍是微軟家的親切:

圖片框起來的,可是,是採不到的,由於也是JS裏混淆的,然而:

標題描述里居然有音標~~~這都被我發現了,寫一段這樣的代碼就能夠拿到了:

 private string GetWordPronunciation(string word)
        {
            string pronunciation = string.Empty;
            WebClient wc = new WebClient();
            wc.Encoding = Encoding.UTF8;
            string result = wc.DownloadString("http://cn.bing.com/dict/search?q=" + word);
            string key = "英[";
            int index = result.IndexOf(key, StringComparison.Ordinal);
            if (index == -1)
            {
                key = "美[";
                index = result.IndexOf(key, StringComparison.Ordinal);
            }
            if (index > -1)
            {
                int end = result.IndexOf(']', index);
                pronunciation = result.Substring(index + key.Length, end - index - 2);
            }
            return pronunciation;
        }

擴展的知識點IndexOf:

當我簡單用WebClient的DownString拿到html存在result變量時(UTF8編碼)。

result=".....英[......";

我用:result.IndexOf("英["),居然返回-1,我納悶了一下。

經過SubString截掉前面變成:result="英[...";

因而:result.StartWith("英["),居然返回false,我糾結了一個。

但是:result[0]==‘英' && result[1]=='[' 便是true的。

後來搜了一下,才發現:

html.IndexOf(key, StringComparison.Ordinal)

這樣就正常了,解決在於:StringComparison這個參數了。

雖然理解參數的意義,可是不解的是:

這裏並木有特殊的第三方字符?

並且採集的幾千個詞,有1000多個出現這種狀況,目前無解,只能注意!!!

最終成果:學單詞地址:

http://word.cyqdata.com/

單詞數據庫下載地址:

若是你須要單詞的數據庫,就在這裏:

http://download.csdn.net/detail/cyq1162/9445894

總結:

就這樣,昨天花了一個下午,半個晚上,今天又半個下午,把這個小程序給完成了。

但願能堅持~~~大夥也一塊兒來,一羣人堅持,比一我的更容易堅持!

相關文章
相關標籤/搜索