博客

  • “大连自由软件日”活动简记

    在元毅同学(@yuanyi_wang)的大力推动与强悍的执行力(数值至少有3万!)运行之下,大连第一次“自由软件日”活动于9月18日6点在大工研究生教育楼大教室胜利召开。

    又是下点小雨,我从市内往大工方向坐车非常麻烦,要倒一遍车才能到。结果到的时候已经是快六点四十了,错过了Saka的关于Debian的讲演(Saka是大工老湿、BBS管理员、Debian team成员)。整个大教室里大概有六七十人,几位twitter上的朋友都在,大部分还是大工的学生。

    关于ROR的讲演,非常浅显,基本上没有涉及到任何深一点的内容,比如Rails3.0也没有介绍,但是看底下同学反映好像也不怎么强烈,应该是了解的不多吧。

    关于liferay的讲演,我也不是很感兴趣,因为java做框架开发已经不是web开发的主流了,现在php更为火爆一些,而且做portal方面的软件选择其实非常多,比如drupal、joomla、wordpress都可以,或者是python的zope,ruby的rails,开发效率应该都超过java。当然对于大连这嘎达,搞java的很多,用liferay也是很不错的选择。

    Mark关于Linux的内核讲演非常有意思,我算是听懂了百分之八十吧,因为自己对BSD、Solaris、Linux也有一些兴趣。他语速不是很快,并不是很难懂。Mark比较了各个版本Unix的内核实现框架,以及虚拟化这个很潮的概念,是非常棒的一个ppt,只是我不做Linux开发,很难体验精华所在,有些可惜。最后我问了一个关于“BSD和Linux成功学”的问题,为何Linux现在更帅更成功?Mark的答案是Linux更适合现在Internet的开发,即使代码质量不如BSD,但是庞大的社区让Linux更快实现一些开发者需要的功能。

    活动结束后我们几个twitter上的朋友和讲演者合了影(等我要到了跟大家share)。总体来说活动还是非常成功的,打开了大连这地方只有外包没有技术氛围的尴尬局面。下一周还有一个活动关于Ruby,希望类似的活动越来越多,让大连的开发者能组织起来,有更多的交流沟通,更好促进开发者的发展。

  • 使用Python自动化Windows界面操作

    要拷贝几百个文件到另一个目录,有重名现象,但是不想覆盖原有文件,在命令行下应该可以通过命令行开关来完成需求。

    但是已经开始拷贝,而且就想使用界面操作,怎么办?(太纠结了!)

    好在我们有Python可以使用。

    http://www.tizmoi.net/watsup/intro.html

    http://www.brunningonline.net/simon/blog/archives/winGuiAuto.py.html

    其主要设计思想就是使用Windows API找到特定窗口,然后发送键盘或者鼠标消息。

    watsup我使用Python2.6,然后安装了PyWin32,还有SendKeys库,最后下载watsup,解压到Python的lib目录即可。

    代码极为简单,我对winGuiAuto稍作修改,加了equalText参数,因为原来的wantedText使用的是(wantedText in targetWindows),只要有"No"在字符串里面就会返回,与我想达到的效果不太一样,当然也可以用selectionFunction加lambda完成,但不想费那劲了。

     1: from watsup.winGuiAuto import findControl, findTopWindow, clickButton

     2: from time import sleep

     3:  

     4: aWindow = findTopWindow(wantedText='Confirm File Replace')

     5: while aWindow:

     6: button = findControl(aWindow, equalText='No')

     7: sleep(0.1)

     8: clickButton(button)

     9: sleep(1)

     10: aWindow = findTopWindow(wantedText='Confirm File Replace')

    如果你使用Ruby,可以参考这篇,也是一样的使用相关Windows API。

    http://rubyonwindows.blogspot.com/2007/05/automating-applications-with-ruby.html

  • 美能达第二卷

    第二卷使用三菱100的胶卷,由于时间上不凑巧,基本没怎么拍到萌萌。

    44860002

    44860003

    44860004 44860006  44860007

    44860011

    44860014 44860012   44860017

    44860027

    44860028

    44860033

  • 美能达x700第一卷

    一方面是喜欢胶片的粗糙感觉以及拍摄以后等待冲洗的那种心情,另一方面,也是主要原因暂时没那么多经费上数码单反,于是从ebay上拍了一台胶片单反相机。

    这台胶片单反相机已经有将近30年的历史,曾经在八十年代初得到欧洲相机大奖,也号称是用了它就能达到美。没错,就是美能达x700。

    第一卷使用Kodak proimage100胶卷。

    下面的片子都没有经过ps处理(当然不排除店家扫描的时候p了),第一卷完全使用P模式。

    32230004

    这是高尔基路。

    32230010 

    刚起床,这是开头几张,很没经验,对焦对到衣服上了。

    32230012

    32230013

    妈妈养的花。

    32230015 

    过曝了,不过还算能看。

    32230022

    萌萌在疯跑中。

    32230028

    32230030

    装成熟的小女孩。

    32230035   

    拿着巧虎星象仪。

    32230036

    爷孙俩。

  • Lua协程实现Fibonacci算法

    image

    费波拉且数的算法如图所示:

    image

    所以a和b分别保存了前两次的结果,每次for循环调用generator都从yield这一行代码恢复然后进行a, b = b, a+b操作。然后判断a是否小于等于n决定返回结果。

    如果不用coroutine.wrap,我们可以这样写,效果是一样的,代码稍显啰嗦:

    image