DoubanFM-CLI

嗯……一直想在Linux下面搞个好使的豆瓣FM客户端好在工作时听听(不然要专门开个浏览器),于是google了下找到了这个,于是什么桌面客户端之类的弱爆了啊,这个才是Geeker听音乐的方式 = 。 =

东西是Python写的,代码短小精干,也可以自己研究下

github: https://github.com/zhendi/DoubanFM-CLI

作者豆瓣: http://www.douban.com/people/KaKa9527/

Python S60蓝牙终端与PC交互

嘛……Python S60的一个比较Geeker的玩法。通过蓝牙串口通信连接到PC的串口通信的终端软件(已经差不多都快被遗忘了吧,这类软件),从而在PC上使用实际上运行在手机中的Python Shell并达到控制手机的目的。

Read the rest of this entry >>

E72入手

上周四入手了诺基亚E72,因为是超市消费卡购买的缘故,所以只能买砍掉wifi功能的行货,包了个5元30M的GPRS套餐把玩了数日,几天下来发现已经改变了我的生活了(或者说至少这段时间的) 囧

首先是twitter。虽然早在07年7月就已经注册了twitter,但是由于种种原因一直没有正式开始使用。并且自去年被墙之后更是觉得不便了。现在有了方便的平台也就想试试看了。虽然twitter早已不是什么新鲜的东西,但对我来说则是一种新的纪录方式吧,把心里突然冒出来的牢骚和吐槽都找到个地方发布也蛮有意思的貌似(换句话说也就是找了个说闷骚话的地方?|||||| orzorzorz)

Read the rest of this entry >>

Google App Engine中datastore的Key

google_appengine

Google App Engine使用了一种与关系数据库完全不同的数据库,称为分布式键-值数据库(Key-Value-Database),所有的”条目”,都是一个对象。这种数据库拥有代码简单,开发效率高,高并发访问效率等特性,但同时也有不支持模糊查询等缺点。

在使用上,键-值数据库和之前熟悉的MySQL等所有的关系数据库都有点不太一样,因此在开发vxtodo时走了一些弯路,比如这个等同于关系数据库的”主键”的问题就让我奇怪了很久(当然,对于这种的键-值数据库中,是否能以主键来称呼应该值得商榷),刚才终于摸索清楚了,记录下来。

Google App Engine的datastore的每个条目的唯一的键是自动生成的,无需人工干预。因为一开始并不清楚这一点,所以定义”表”的结构时找不到类似于自动索引的功能,结果开始写vxtodo时我用的是时间戳 + 用户名邮箱地址然后Hash再取绝对值出来的一个唯一值的诡异方法,虽然也能用,但是毕竟不够优雅(这样的Hash值实在是太长了)。仔细翻阅文档后,终于把ID/Name部分给看明白了。

Read the rest of this entry >>

vxtodo

vxtodo

这段时间研究Google App Engine的成果,今天发布。

一个个人TODO-List管理程序,支持邮件提醒。

服务器端是Python,客户端自然还是 HTML + CSS + JS,话说Javascript的代码比Python还多一倍,没jQuery的话代码量应该会更加冗长……不过用Google App Engine来写程序还是挺幸福的。

欢迎各位使用(会有人用么?),以及帮忙测试和报告Bug

在GPL第二版协议下开源。

地址:
http://vxtodo.ihfs.net/
http://vxtodo.appspot.com/

获取源代码前往:
http://code.google.com/p/vxtodo/

PS.I: google app engine还无法支持.cn域名,因此只好用这个ihfs.net来进行绑定了……
PS.II: 话说appspot偶尔会被GFW掉,无奈……
PS.III: 于是咱也玩了把云计算了啊~

更新@2009-05-14:

  1. 修正了无法输入\和回车的bug
  2. 加入Prism的说明
  3. 制作了LOGO

更新@2009-05-15:

  1. 修改了数据模型,删除了一些无用的测试数据(没办法的选择,这种键-值数据库无法修改“表结构”,只能清空数据库然后重新添加

更新@2009-05-17:

  1. 对状态图标加上了事件,点击可以直接转换状态
  2. 将代码导入Google Code,以GPLv2开源

更新@2010-01-17:

  1. 解决一个换行的问题

曾经将自己出卖给撒旦,现在皈依基督,又对人文主义有浓厚兴趣的某只?

好吧,标题其实说的是我自己 – v -

为什么这么说?见内文转载吧……

那么其实我觉得自己的想法应该更加接近不可知论 – v -

Read the rest of this entry >>

Python的switch…case语法

Python没有switch…case的语法,不过可以用Dictionary和lambda匿名函数的特性来写出同样优雅的代码,比如这段javascript代码:

switch(value){
    case 1:
        func1();
        break;
    case 2:
        func2();
        break;
    case 3:
        func3();
        break;
}

等价的Python代码:

{
  1: lambda: func1,
  2: lambda: func2,
  3: lambda: func3
}[value]()

Read the rest of this entry >>