聊聊程序员如何学习英语单词:写了一个记单词的小程序

背景:

关于英文对程序员的重要性,就不多说了!

英语的学习,有很多,今天也不聊多,只聊英语单词!

关于单词的记忆,找过很多方法,下载过很多软件。

如图(其它不好用的都卸载了):

上图算是我以前用过软件,注意,是以前哦~~~

意思就是没有坚持下来~~~~

随时间的推移,最后它们还是被我遗忘了~~~

为什么???不能:坚持!坚持!坚持!

学习思考:

一直在找方法:

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

总结:

就这样,昨天花了一个下午,半个晚上,今天又半个下午,把这个小程序给完成了。

希望能坚持~~~大伙也一起来,一群人坚持,比一个人更容易坚持!

时间: 2024-08-02 02:50:16

聊聊程序员如何学习英语单词:写了一个记单词的小程序的相关文章

程序员如何学习英语

作为在中国工作的程序员,不懂得英语似乎也不妨碍找到好工作,升职加薪.但程序员这个工种则稍有不同,因为程序,尤其是高级语言,基本上都是由英语和数字表达式构成的.英语对于程序员十分重要.我的大学本科全部采用英文教学,工作时也经常会遇到外国人,和他们谈笑风生,自认为自己的英语水平比园子的平均水平高一点.下面我就根据自己的经验来说说英语的学习方法. 为什么要学习英语 学好英语你可以直接阅读各种经典书籍的原文版.程序员这个行业之所以特殊,就是因为它所有的技术全部来自欧美,所以最主流,最新鲜,最正确的技术文

C#.NET 程序员的福利,自己写的一个XML操作类,可实现像jquery一样方便的xml操作,且不用专门去处理命名空间。

此工具是进入一家新公司之后实现的,主要是工作当中操作 xml 的时间太多,因为公司按任务计“工作量”,领导给我安排的时间远远不够完善此工具[悲哀的制度],虽然我也能直接在cs中直接中规中矩完成,但实在受不了那种重复和低效,所以此工具基础部分绝大部分时间是在家中加班完成,剩下应用于公司项目中之后,在公司改了一些BUG,差不多也用了半年多了,实在是很好用,现在也差不多稳定了,特分享出来,需要的直接拿去用吧,有BUG可以直接发消息给我沟通,不用谢.. 使用方法: x(filepath).Find("/

用Go写了一个类似Proxy的小程序,可以用来访问goolge个人使用还是可以的.

package main import ( "fmt" "io" "net/http" ) func main() { http.HandleFunc("/", route) e := http.ListenAndServe(":80", nil) if e != nil { fmt.Println(e) } } func route(w http.ResponseWriter, r *http.Reque

coffeescript写的一个无限下拉小程序

locate=$(document).height()-$(window).height() times=0 scroller = (cb)-> if locate<=$(document).height()-$(window).height() times=0 locate+=100 scroll(0,locate) clearTimeout(timer) timer=setTimeout("scroller()",54) timer else await sleep 3

一个阿里工作4年java程序员的从业心得,写给还在迷茫的朋友

工作第一年,往往是什么都充满新鲜感,什么都学习,冲劲十足的一年:WEB行业知识更新特别快,今天一个框架的新版本,明天又是另一个新框架,有时往往根据项目的需要来不断学习新东西:所以,很多时候感觉,自己用过的东西真多呀!但是真正深入研究的东西却不多.面试,是跳槽后第一个需要面对的问题:而且不同公司面试的着重点不同:但是却有一个共同点:Java基础是必考的. 工作第一年,可能问你String对象创建的理解,常用的框架是什么等等: 工作第三年,就问你Java内存分配机制是什么,类是如何加载的等等: 工作

好程序员Java学习路线Java bean是个什么概念

好程序员Java学习路线Java bean是个什么概念,Bean的中文含义是"豆子",顾名思义JavaBean是一段Java小程序.JavaBean实际上是指一种特殊的Java类,它通常用来实现一些比较常用的简单功能,并可以很容易的被重用或者是插入其他应用程序中去.所有遵循一定编程原则的Java类都可以被称作JavaBean.一. Java Bean技术概述??????? Java Bean是基于Java的组件模型,由属性.方法和事件3部分组成.在该模型中,JavaBean可以被修改或

zz 游戏程序员的学习之路(中文版)

游戏程序员的学习之路(中文版) Milo Yip · 1 天前 感谢 @楚天阔(tkchu)编写脚本及整理中文译本数据,自动从英文版生成中文版,SVG / PDF 版本中的书籍图片现在链接至豆瓣页面. Github miloyip/game-programmer 检视/下载中文版 SVG / PDF 「真诚赞赏,手留余香」 赞赏 15 人赞赏 程序员游戏开发书籍推荐 分享 举报 977 文章被以下专栏收录 Milo的编程 进入专栏 97 条评论 写下你的评论 trycatch 这是劝退吧...

黑马程序员_OC学习笔记之@property和@synthesize

[objc] view plaincopyprint? <span style="font-size:24px;">#import <Foundation/Foundation.h> @interface Person : NSObject { int _age; int age; int _height; int height; int _weight; int weight; int _money; int money; } @property int ag

[JavaScript] 初中级Javascript程序员必修学习目录

很多人总感觉javascript无法入门,笔者在这里写一下自己的学习过程,以及个人认 为的最佳看书过程,只要各位能按照本人所说步骤走下去,不用很长时间,坚持 个3个月,你的js层级会提高一个档次,无他,唯有努力与坚持,请看: 1. 从头到尾对一遍<<Javascript高级程序设计>>,不懂的地方可以暂时掠过,给自己对javascript有一个大体的印象 2. 认认真真的读完这本书:<<编写可维护的javascript>>,从编码规范,技巧,模式,等各个方面