统计代码行数有几种写法?

标签:UNIX, Shell

昨晚突然想统计一下项目的代码行数,不过IDE没有提供这个功能,于是只能自己实现了。

我最先想到的就是用Python了。方法很多,例如用os.walk()来遍历目录,然后过滤文件后缀名为源代码的(如py、html、js和css),再按行读取每个符合的文件,合计所有文件的行数。粗略看上去要2个循环和一个正则表达式。如果不按行读取,而是直接读完再查找'\n'的数目,则可以减少一个循环,不过当需求变更为不统计空行时,它就变得不够通用了。

但又想到自己在用Mac OS X,这种问题交给shell来解决不是更轻量级么?幸运的是,很快我就找到了遍历目录的find和统计行数的wc命令。

你该选择Ruby on Rails吗?

标签:Ruby

最近几天,V2EX突然冒出很多RoR的讨论帖,鉴于有先例存在,我就不加入讨论了,直接把我的看法记录在此吧。

JavaScript,你懂的

标签:JavaScript

经常有人问我,JavaScript应该怎么学。
这个问题其实很好回答:
  1. 先学基本语法,如果曾学过C等语言,应该1小时内就能掌握了。
  2. 再去使用内置的函数、方法和DOM API,熟悉它能干什么;而在学习DOM API的过程中,你还不得不与HTML和CSS打交道。
  3. 然后弄懂匿名函数和闭包,学会至少一个常用的JavaScript库(例如jQuery)。
  4. 最后领悟它的对象实现,尝试去扩展已有库,或编写自己的库。
可学习过程却并不像回答般轻松,因为国内的网站到处充斥着转载。那些人连自己都没弄懂的玩意就转载出来,甚至包含一些明显的错误和不堪入目的代码,却还有一大批小白惊呼“好强大,看不懂”。
在这种可悲的环境中,想要学好JavaScript还真棘手,因为你得有足够的经验来判断这篇文章是否值得一看,内容是否有错,哪些地方可以改进。
为了避免这种弯路,我还是自己写篇来整理整理吧。前2个阶段的就不提了,那是浪费你我的时间。

HTML5 Canvas简易时钟

标签:HTML, JavaScript

今天下午闲得无聊,就学了下Canvas,然后捣鼓出一个时钟,顺便就放这了。
由于各种浏览器对文本的处理有些差异,因此我就只管Chrome了,用其他浏览器的自己看着办吧…

用Python捕捉和模拟鼠标事件

标签:Python

这个假期玩了不少galgame,不过有些很老的游戏没有自动运行模式,点击鼠标又太伤按键了,于是想把滚动鼠标滚轮映射为点击鼠标。
网上搜了一下,没发现什么现成的软件,而按键精灵又太重量级了,于是考虑干脆自己用Python写个算了。

对微博的一些思考

标签:无

在我看来,互联网迄今为止的几个里程碑是电子邮件、门户网站、搜索引擎、论坛、博客和微博。
从时间轴上来看,互联网的本意就是为了传递信息;可在漫长的时期里,它却一直局限于小范围或单方面的传播;而如今,越来越多的网民主动参与了进来,想要相互交流的意愿,促进了社交网络——特别是微博的流行。
由此可见,微博的主要任务就是促进人们的相互交流,让人们自由地分享和探讨自己的观念。

这一年来,我先后尝试了3款微博:Twitter、Google Buzz和新浪微博,虽然使用不多,但也抱有不少看法。

使iPhone Safari的label元素生效

标签:JavaScript, iPhone

今天在测试本站的手机页面时发现一个问题:我将一个label元素关联到一个checkbox上后,在电脑的浏览器上点击这个label时,checkbox会随之被勾选或取消;但用iPhone上的Safari浏览器测试时,却毫无反应。
本来label元素的一个很重要的作用就是方便用户点击表单控件,而iPhone上的checkbox非常小,如果不能点label的话是非常麻烦的。

« 看看还有什么好玩意