英语伤痛十五年

Paul Graham 提出了一个很重要的问题,是关于英语作为 IT 从业者的一个必需技能的问题。这个问题引起了各新闻网站和软件开发者的关注[1]。由于提及“外国口音”,而且因特网上有太多容易过激反应的人,这件事也引发了争议。不过这是这个问题最无聊的一面,我不会涉及。值得关注的是通常没有人会谈到“英语问题”。在这一点上我一直感到有些孤单,似乎这个问题只会影响我。所以,我想在这篇博客中分享一些我自己有关英语的经历。

[1] http://paulgraham.com/accents.html

一个漫长的故事

我还记得1998年我和 Sullivan 在我米兰的家中醉醺醺的同时尝试去实现一个我当时在研究的攻击方法。那个方法发布在 BUGTRAQ 邮件列表里,这里有我们当时得到的简单结果: http://seclists.org/bugtraq/1998/Dec/79

请注意第二句里的 “Instead all others”。我的英语现在仍不是很好,但这15年肯定还是有进步的。而 Sullivan 现在在美国和英国的大学执教,所以我想他英语已经很流利了(剧透:我还不是)。重点是,我们当时在研究一种新的 TCP/IP 攻击方法,但我们却没法用英语把它写清楚。那是1998年,我已经感到极度受限于自己用英语交流的困窘,没法在阅读英语技术文档时不用在阅读本身上花太多力气。因为我需要用接近50%的脑力去阅读文字,而非理解内容。

但不管怎样,我始终认为能掌握英语是件不错的事。我一直劝告人们不要花费精力去做技术相关的翻译,因为我相信用一种通用语言来归档和注释源码会更好。况且对大多数人来说,掌握阅读英语技术文档的技能实际上不是什么难事。

所以从1998年起,我慢慢学会了能像阅读意大利文那样轻松阅读英文。我甚至学会了能以书写意大利文的速度来写作英文。尽管在这一点上我陷入了“局部极小值”,正如你们所见:我基本上只能很快地写一些蹩脚的英语,一些足够表达我关于编程的想法,但不足以写作一般性话题的英语。比方说,我不知道表示厨房里大多数器物的英语单词,也不了解复杂句子的构成语法,等等。如今,在最关心的话题上我能轻松交流了,也能让其他人或多或少理解我写的东西,所以提高自己英语水平的压力已经减小了很多…不过,我最近意识到这只是我关于英语的问题里很小的一点。

 

欧式英语,一种有趣的语言

虽然最终能随心自如读写英语了,此前我却几乎未曾和来自英语国家的人交流过。以前我一直是用英语和其他欧洲国家(非英国)的人交谈,比如法国人、德国人和西班牙人。

如今这些国家中使用的英语其实是学校英语课程里使用的英语…这种语言跟美国或英国的英语几乎没什么关系。他们称之为 “BBC 英语”,但事实上不是。这是一种使用英国英语语法,但极度简化过的语言。

那种版本的英语的确让来自世界各地的人能方便地交流。它的基本语法很容易掌握,只需几个月的练习,你就能用它来交谈了。单词的发音在除英国外的其他欧洲国家也都差不多一样。所以这种英语还是很好用的。

只是有一个问题,这种英语跟英、美、加以及其他英语国家所用的真正英语是没关系的。

 

英语,总归有点乱

现在我分享给大家一个关于英语的秘密:英语是一种散乱的语言。我们意大利拥有悠久的历史,只是政治上统一比较晚。不同的地区人们使用不同的方言,口音也很重。1950年(“电视语言统一化”始于这一年)之前,人们都还使用各自的方言,意大利语只有极少数人懂。西西里语——我多数家人使用的语言——要早于意大利语数个世纪 (http://en.wikipedia.org/wiki/Sicilian_language)

但意想不到的是,不同地区的人在交流上并没有障碍,甚至是与来自瑞典语区的人。意大利语是世界上最简单的语言之一,语言本身冗余性很强。意大利语可以说是信息熵很低,单词一般很长,但每个单词的辅音和元音搭配得很好。没有单词需要特殊发音规则。只要知道每个字母的读音,外加少量特殊组合字母,如”gl(元音)”、”sc(元音)”,你基本上就能正确拼读出99.9%第一次见到的单词。

不同英语国家的人们在相互交流上障碍正表明了英语是多么的奇怪。对于我和其他来自非英语国家的人来说,想要弄懂一个英国人到底在说什么非常、特别、极其难!

就因为英语的这个“特点”,口音不是我的问题(事实上我觉得这个只要花足够的功夫就能轻松解决),而理解别人究竟在说什么才是。窃以为啊,Paul Graham 提到“口音”,其实是事关英国和美国人在这个问题上的不友好态度。英美的朋友们啊,你们不理解我们,我们也不懂你们在说啥。而且很少有人能在知道你听不懂时试着放慢语速。经常是我说了我没听懂,结果他还是一样以光速来重复刚说过的话。

 

不要先学书面英语!

我认为自己学习英语如此之慢的一个原因是我从阅读英文开始,但却从不去听。我的脑袋总想把书面用词和一些有意思但根本就不存在的发音联系在一起。我建议如果你正在学习英语,那就尽早开始去听英语口语。OSX 的 say 程序是个不错的辅助工具,它能为大多数英语单词很好地发音。千万不要学一个新单词而不去学它的发音。

 

内向,还是外向?

在学习英语的经历中,最让我惊讶的事之一是对一门语言掌握的生疏竟能让人变得内向。在外向人群居多的意大利,我也属外向者。在我家人居住的西西里岛,那里外向的人就更多了,我家人多数都性格外向。我感觉自己可能是人群中的焦点(但愿我不是,不过反正我就是很外向)。但现在一旦需要用英语交谈,我就再也不像个性格外向的人了,因为交流上会有障碍。每次需要参加某个会议,或是需要认识其他人时,我就很难受,那简直就像噩梦。

 

太迟了,我们还是学英语吧

我觉得英语只不过是语法简单点,但并不适合作为通用语言。但现实是英语已经赢了,没有机会再改变这一状况。能够更好地用英语交流会是个很好的选择,尽管这也意味这你需要投入更多的精力学习。这也正是我在努力做到的,我在尽力去提高英语水平。

我亟需提高英语水平的另一个理由是,十年之后我不大可能再全职编程。合逻辑的选择是转到 IT 管理工作上,或是从事大型项目管理,那时不需我要写太多代码。如果你认为自己作为开发者而需要掌握英语,那么在典型 IT 公司的其他类型工作中你只会更加需要,即便你实际“只是”管理许多程序员。

然而英语母语者也应该意识到,许许多多的人正在很努力地学习这样一门难以学习的语言:学习它不是因为兴趣,而是很多人希望能更好的交流才付出巨大努力的。

我期待着终有一天不同的口音可以汇合成一种容易理解的标准语言,这种语言也能作为英语使用人群的通用语。

原文链接: antirez   翻译: 伯乐在线 – Elliptic_Yang
译文链接: http://blog.jobbole.com/49129/

对付电信114域名劫持的方法

      什么是域名劫持

      域名劫持就是在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则直接返回假的IP地址或者什么也不做使得请求失去响应,其效果就是对特定的网址不能访问或访问的是假网址。

      电信把域名劫持到114搜索网站

      电信用户在平时上网的时候,当在地址栏输入的网址不存在或者网站服务器连不通的时候,总会自动跳到电信的114搜索网站search.114.vnet.cn或so.118114.cn。

      电信这种劫持行为非常令人讨厌,如果你也讨厌这种行为,那么根据本文的介绍简单操作,你就能解除心头之恨。

      通过修改DNS服务器,我们不使用电信的DNS,改为使用OPENDNS或者Google的免费DNS,就可以防止电信114域名劫持了。

      以Google DNS为例:

      以Windows XP为例,在“控制面板”->“网络连接”中找到宽带上网的连接,右键打开网络连接“属性”,选择”Interner协议(TCP/IP),“点 “属性”,选择“使用下面的DNS服务器地址”,“首选DNS服务器”和“备用DNS服务器”按下面的分别填写(备用DNS服务器不填也行):

      8.8.8.8
      8.8.4.4

      设置完成后,遇到域名访问不了的时候就不会再跳到114网站了。

      你也可以使用OPENDNS,操作同上,只不过DNS服务器要换为:

      208.67.222.222
      208.67.220.220

      关于防止域名劫持的方法,你还可以通过修改host文件,请参考本文:DNS域名劫持的解决方法

      知识扩展

      域名劫持概念

      域名劫持是互联网攻击的一种方式,通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的地址而达到无法访问目标网站的目的。

      域名劫持原理

      域名解析(DNS)的基本原理是把网络地址(域名,以一个字符串的形式,比如 www.google.com)对应到真实的计算机能够识别的网络地址(IP地址,比如216.239.53.99 这样的形式),以便计算机能够进一步通信,传递网址和内容等。

      由于域名劫持往往只能在特定的被劫持的网络范围内进行,所以在此范围外的域名服务器(DNS)能够返回正常的IP地址,高级用户可以在网络设置把DNS指向这些正常的域名服务器以实现对网址的正常访问。所以域名劫持通常相伴的措施——封锁正常DNS的IP。

      如果知道该域名的真实IP地址,则可以直接用此IP代替域名后进行访问。比如访问http://www.google.com/ ,可以把访问改为http://216.239.53.99/ ,从而绕开域名劫持。

7.2 电子化产品:对人工依赖的减少

电子化产品:对人工依赖的减少

 

电能的出现象征着工业社会发展的一个新阶段,但这还不是全部。电在能源方面发挥了巨大作用,让人类对火、风、水等在能源方面的直接依赖有了很大的减少[1]。电作为一种间接能源更为可控,其使用便利性是其最大的特征。电对我们的重大影响不仅仅局限在作为能源这方面,其作为信息传输、交互的载体,以及在信息存储方面发挥的作用对人类的影响及意义可能更大。

各种微电子技术,早期的电子管,后来的集成电路,让人类处理信息(信号)的能力大为增强,同时也让电力在微观领域的作用得到发挥(当然这中间也少不了材料科学方面的进步)。信息传递交互、信息处理,以及信息持久保存和读写,这几个方面的发展给信息社会的出现提供了基础,同时也让产品设计的跨时代变化成为可能。

各种早期电子产品的出现,包括电视机、收音机、电话、BP机,乃至后来的功能手机等,应该还算是对电子信号传输的直接应用。这些产品将一些图像、声音、视频等信号进行接收和转化,从而达到信息传递的效果。只是这一点当时就已经让人们激动不已。试想一个越洋电话,就可以直接听到远在千万里外人的声音。电视直播可以将现场的情况在瞬间传递到千家万户。这在以前是难以想象的。

电脑的发展早期主要用于提高人类的计算能力,但随着个人电脑的发展,其作为一种个人处理、存储信息的工具获得社会的广泛认可。电脑尽管不能直接去用于物质类的生产,但因为其在信息处理方面的独特优势,为直接的物质生产提供了很多便利。产品设计、流程控制、统计及预测模拟、互动型视觉体验等是电脑作为一种相对智能化的工具一段时间内发挥的最大价值(当然在社会层面,不能忽视电脑作为游戏机的价值)。以往需要大量人工以及繁琐环节的工作,基于电脑的图像或信号模拟,并依赖软件的处理,可以很方便地获得结果。而且这种劳动结果是以电子信息的方式加以保存的。保存、分享、修改都非常方便。不但省去了很多类似于纸张、搬运等成本,而且备份也非常方便,存储的成本也很低。

伴随着电脑处理技术,一些智能模块也开始出现。这些智能模块在一些直接功能性产品中的应用拓展了人类以往产品的边界。例如安装了电子导航的汽车会带给我们远远超过一辆汽车加一张地图的价值。一张地图上面往往会标准很多信息。要通过人工的方式在快速行驶中将一些提醒信息非常准确地表达出来是非常困难的。但电子导航就可以非常容易地实现这种功能。这个背后就是一些智能模块在不断地进行信息采集和计算,从而给予司机指导。其他例如模糊控制的电饭煲、洗衣机等也让我们可以在设置之后高枕无忧。

如果说工业化产品的发展是让人类对农业社会中对自然的直接依赖逐渐变得更为可控的话,那么各种微电子应用,包括电脑的出现,则在让我们在信息领域中对人工的依赖逐渐减少。人工尽管有人工的好处,但相对而言,也具有不可控性,而且标准化、精准化程度都需要因人而异。一百个人可以写出一百个字体来。相互之间也无法做到100%的相互认识。但计算机打出来的字,却可以在几乎所有的有对应软件的电脑中识别出来。更何况有些时候人工的减少其实就是对人的一种解放。大家不用再去做一些过于基础而且重复的工作。

以往一次大型人口数据统计,可能要花费数千人长时间的工时。而且很多人做的都是非常基础的重复的工作,例如不断地去画字,或者用笔去记录、统计。现在则有可能在数据录入完成后一个人对着电脑很快就可以获得想要的结果。甚至可能的话,甚至在录入阶段就直接让统计对象对着电脑、平板等直接去录入。这样不但可以将调研阶段和录入阶段减少为一个环节,而且出错的概率也会降低很多。

工业生产领域中对电脑的应用更是让工业生产的精度、准度达到了人力可能无法实现的程度。任何一个高智能流水线背后都有着复杂的电脑程序实现。从这个角度讲,电脑[2]被称为工业社会分工时代最伟大的产品设计应该不为过。电子化产品的出现也为连接时代的到来打下了基础。



[1] 目前的用电,尽管直接对火、风、水等依赖很少。但因为电本身也是由水力、风力、燃煤、燃油等产生出来的,因此间接依赖还很大。不过后续随着对太阳能使用的程度加强。对前者的依赖就会减少一些。

[2] 此处的电脑不仅包括硬件,也包括软件,更多指的是可以运行状态的电脑综合体。

八个简单方法提升WordPress速度

WordPress是一个很棒的开源程序,几乎我认识的站长朋友当中,粗略估算有80%使用Wordpress。但很棒不等于完美,就在我所认识的这些朋友中,几乎所有人都会抱怨Wordpress太臃肿,运行效率太低了,大家有无同感?

所以,今天这篇博文和大家分享8个小贴士来提升WP的运行效率,如果您运用了这些方法后发现确实有帮助,请把这篇博文分享给更多的人好吧?当然为了尊重劳动成果,也烦请指明出处。

 

1、使用高效的缓存插件

WordPress插件们是非常有用的, 我推荐一款缓存插件可以改善页面载入时间,它就是W3 Total Cache,有了这个插件之后咱就不再推荐你其他缓存插件了,因为所有缓存插件有的功能它都有了,而且安装和使用非常方便。

拥有这款插件之后,你的页面载入速度会加快,因为网站的主要元素已经被缓存了。

2. 使用内容分发网络 (CDN)

基本上所有你喜欢的大网站都会使用CDN。简单来说,CDN是把你站点上的文件们(CSS\JS\图片等)发布到最接近用户所在的网络区域,让用户就近下载,这样就能提高站点运行速度。在国内ChinaCache是比较有名的CDN供应商,不过价格贵了一些,像各大门户网站,比如腾讯、新浪、网易等等都是用ChinaCache。所以不管你在哪里,访问这些门户网站都会觉得速度很快。当然啦,对于小站来说,这个成本可能会高一些,

所以,你无论是在南方,或者北方,还是在北美,访问这些门户网站,感觉速度都很快,最主要的原因之一就是CDN发挥了效果。一般小网站是用不起这服务的,所以慢点就慢点了吧,可以租用互联互通的6线机房(6线机房是指包括网通、电信、铁通、移动、联通、教育网等多线接入的骨干网IDC机房,彻底消除各地网络瓶颈,保证互联网访问畅通无阻的高速机房。)

顺便提一下,还有一个WordPress插件Free-CDN,号称也能达到类似的效果,虽然我还没有做过测试…

3、图片优化很重要

Yahoo! 有一个图片优化软件叫Smush.it可以最大程度无损压缩图片,不过,除非你超级有耐心,否则一张张压缩图片的话太浪费时间了,好在,还有一个很给力的WP插件叫WP-SmushIt,这货可以为你网站上所有的图片做一次性压缩,所以没有理由不去用它。

4、优化你的WP数据库

你可以用WP-Optimize这个插件来优化你的WP数据库(清理spam,反复改版的文章,草稿,表格等等为你的服务器腾出更多空间从而提升效率);还有一些插件如WP-CleanerDB-Manger等。

5、开启防盗链机制

盗链是带宽的窃贼,当其他网站直接引用你站点的图片的时候,这会影响占用你本身的服务器资源从而影响网站运行效率,你的站点越出名,就会有越多的人盗用你的图片,解决方法是Wordpress有现成的插件Hotlink Protection。当然也可以通过重写htaccess文件来达到同样的效果,欲深入了解的童鞋可以询问自己的空间商如何设置。

6、为文件添加过期时间

关于这个文件过期时间,听起来很玄乎,其实就是通过header报文来指定特定类型的文件在浏览器中的缓存时间。有些文件(例如样式表中调用的背景图片和一些装饰性图片)其实在很长一段时间内这些图片都不会有很大的变化,所以对这类文件我们不妨设置长一些的缓存时间,这样浏览器就不需要每次从服务器下载这些文件而直接从缓存中读取,这样绝对可以提升加载速度。

当然,所以做法很简单,只需要在网站的.htaccess文件中加入以下代码,

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault A600
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript A604800
ExpiresByType text/css A604800
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType text/plain A86400
ExpiresByType application/x-shockwave-flash A2592000
ExpiresByType video/x-flv A2592000
ExpiresByType application/pdf A2592000
ExpiresByType text/html A600
</IfModule>

稍微解释一下,text/css表示样式表文件,text/plain代表的纯文本类文件,依次类推。其中A2592000就表示这种类型文件在浏览器中的缓存时间,以秒为单位。一天86400秒,2592000就表示这类文件可以缓存30天。

如果你不是经常修改模板,那样式表文件和javasctipt文件基本上也可以设置缓存一周到一个月左右。text/html文件不要设置太长的缓存时间,因为这些东西修改的频率很高,一天更新一次是有必要的。

7、为你的图片添加延时加载

延时加载就是当用户停留在第一屏的时候,不加载任何第一屏以下的图片信息,只有当用户把鼠标往下滚动的时候,这些图片才开始加载。这玩意儿不仅可以提升站点载入速度,更是可以节省带宽。要轻松的拥有这项功能,请安装WP的jQuery Image Lazy Load 插件吧。

8、控制文章草稿存数数

通常一篇博文我会保存10次以上的草稿,而Wordpress会无限制的存储每个草稿;如果我的博文已经发布了,为啥我还需要这些储存的草稿文章呢?所以这就是为啥我会用 Revision Control 插件来确保这些草稿内容的最小化。通常我会设置只存储2-3篇草稿来防止万一,但存储的数量绝对不会太高,否则你的WordPress backend只会被这些无意义的内容塞满从而降低运行效率。

好了,今天的分享就到这里,希望对大家有帮助,其实这些要点不仅仅对Wordpress有帮助,对其他开源网站也同样奏效。:-)

本文作者: Fimen

注:本文转载自:http://www.wpcourse.com/8-methods-speed-up-your-wordpress.html

ubuntu 安装svn

环境:ubuntu10.04LTS

1、在终端中直接输入  sudo apt-get install subversion,选择安装即可
2、查看版本命令 svnserve –version(更多命令直接键入svnserve –help可查看到)
3、查看svnserver是否已启动: netstat -ntlp,可看到svn对应的端口3690(如果没有看见,则证明服务未启动,可使用svnserve -d启动svn服务,还可以通过svnserve -d -r /home/wwwwfw/mobile来指定启动目录)
4、建立项目:svnadmin create mobile(mobile为项目名称,位置在当前登录用户的主目录下,如我使用wwwwfw登录,则路径为/home/wwwwfw/mobile)
5、在mobile文件夹中可以看到conf文件夹,可针对conf文件夹中的authz、passwd、svnserve.conf进行设置,svnserve.conf主要设置整体的安全策略,passwd则设置用户名和密码,authz则是设置具体的用户有什么权限。
6、常用svn命令:
     checkout(co)命令:

      svn co url –username user –password password

               根据提示可以输入yes来保存帐号和密码;

       update(up)命令:

                进入到需要更新的目录,输入:svn up

      commit(ci)命令:

            进入需要提交的目录,输入:svn ci -m “修改信息”

    add命令:

         进入需要提交的目录,输入:svn add filename or path

       添加完之后需要用commit命令提交。

 

   另外,在vi中也可以不退出编辑的文件来提交文件,

    使用shell命令::! svn ci -m “commit information..”

 

ubuntu下SVN服务器安装配置

一、SVN安装

1.安装包
$ sudo apt-get install subversion

2.添加svn管理用户及subversion组
$ sudo adduser svnuser
$ sudo addgroup subversion
$ sudo addgroup svnuser subversion

 

3.创建项目目录
$ sudo mkdir /home/svn
$ cd /home/svn
$ sudo mkdir fitness
$ sudo chown -R root:subversion fitness
$ sudo chmod -R g+rws fitness

4.创建SVN文件仓库
$ sudo svnadmin create /home/svn/fitness

5.访问方式及项目导入:
$ svn co file:///home/svn/fitness
或者
$ svn co file://localhost/home/svn/fitness
* 注意:
如果您并不确定主机的名称,您必须使用三个斜杠(///),而如果您指定了主机的名称,则您必须使用两个斜杠(//).
//–
下面的命令用于将项目导入到SVN 文件仓库:
$ svn import -m “New import” /home/svn/fitness file:///home/svnuser/src/fitness
一定要注明导入信息

 

//————————–//
6.访问权限设置
修改 /home/svn/fitness目录下:
svnserve.conf 、passwd 、authz三个文件,行最前端不允许有空格
//–
编辑svnserve.conf文件,把如下两行取消注释
password-db = password
authz-db = authz 

//补充说明
# [general]
anon-access = read
auth-access = write
password-db = passwd
其中 anon-access 和 auth-access 分别为匿名和有权限用户的权限,默认给匿名用户只读的权限,但如果想拒绝匿

 

名用户的访问,只需把 read 改成 none 就能达到目的。

//–
编辑/home/svnuser/etc/passwd 如下:
[users]
mirze = 123456
test1 = 123456
test2 = 123456
//–
编辑/home/svnuser/etc/authz如下
[groups]
admin = mirze,test1
test = test2
[/]
@admin=rw
*=r
这里设置了三个用户mirze,test1,test2密码都是123456
其中mirze和test1属于admin组,有读和写的权限,test2属于test组只有读的权限

7.启动SVN服务
svnserve -d -r /home/svn
描述说明:
-d 表示svnserver以“守护”进程模式运行
-r 指定文件系统的根位置(版本库的根目录),这样客户端不用输入全路径,就可以访问版本库
如: svn://192.168.12.118/fitness

这时SVN安装就完成了.
局域网访问方式:
例如:svn checkout svn://192.168.12.118/fitness –username mirze –password 123456 /var/www/fitness