今天用cocobear的PyFetion搭建了一个激动人心的崭新的应用——将飞信转换成E-mail!当然对于正常在TG地盘混的各位同学来说这个应 用就是个渣,因为它把方便快捷的短信换成了笨拙的E-mail,但是,对于即将飞往大洋彼岸的我来说,这个应用有其独特的价值——我可以保留原有的手机 号,继续和大家通过飞信保持联系。

这个东西的工作原理是这样:模拟我登录飞信,接收一切发过来的飞信并保存到文本文档中,每隔一段时间,将文本文档中的内容通过E-mail发送到我的秘密邮箱中。

这个东西必须要配合一个智能手机来使用,智能手机通过设置,每隔一段时间查询秘密邮箱中的E-mail,这样我就可以半实时的接收到飞信了。

为什么要多此一举呢?

第一、该死的iphone飞信没法常驻后台,只能现用现打开,这样平时没有打开的时候没法知道谁发送了飞信给我。 第二、通过E-mail来处理飞信,可以保证不会遗漏。 第三、除了iphone,可以用任何支持E-mail的终端来查看飞信。

另外这个应用还只开发到了一半,目前还只能接收,还不能通过E-mail回复飞信。这个留在以后开发。因为可以通过登录飞信软件来回复。

另外就是和google voice相连接,当发送过来飞信后,自动通过google voice发送提示短信,提示我查看E-mail。或者直接将飞信的内容转换为汉语拼音(或者用google translate的api转换成为英文),发送到我手机上——这个目前尚且不急,美国如果没有定制相关plan,接收短信也要花不少钱,所以不如e- mail划算。所以这个可以放在最后做。

我的飞信从此就是24小时在线了。 源代码整理后放出。

转眼间我已经用了一年Archlinux,是该写点什么了。

我从Win投奔到Linux时间并不长,从07年开始通过RedHat系的Fedora第一次接触到了Linux,这全都得感谢我的学长的大力吹捧和慷慨解囊(免费赠送“正版”DVD)。Fedora的旅程并不顺利,系统总是出现各种毛病,而那时我还是个纯菜鸟,连yum都不知道。摆弄了一阵之后,又回到了Win。

后来在08年进入到了Debian系,Ubuntu 8.04确实是个杰出的版本,在这段时间里我的Linux水平也有了一定的提高。这段时期基本上是一半时间在Linux一半时间在Win。

而Ubuntu尽管很好,但还是没能留住我。频繁的升级和很差的跨版本升级体验使得我最终抛弃了这个发行版(Ubuntu8.04 -> 8.10->9.04 你懂的..)。而就这时,摒弃了版本号只通过滚动升级的Arch进入了我的视线。

每个人都有自己的喜好,我也不想对比这几个发行版之间的优劣,毕竟我还只是个刚刚摆脱菜鸟阶段的Linux新手。我下面写的是我使用Arch的感受。

Arch是一个轻巧的发行版,你可以通过安装完后的满屏黑底白字来亲身感受下“轻巧”的含义,也可以通过它高速的启动来感受下。我认为Arch并不是一个面向Linux新手的系统,Arch的很多优点恰恰需要用户有Ubuntu的经历才能体会的到,如果一上来就推荐给Linux的初次使用者,繁琐的安装过程往往会吓跑他们。

那么Arch有哪些优点呢?

第一个优点就是它具有强大的包管理系统pacman和AUR。后者需要安装一个yaourt软件后使用。对于一个Linux初学者而言,最麻烦的事情无异于是给系统安装各种软件。Ubuntu在这方面没有什么很好的解决办法,如果apt-get能够安装的到它,那么就会一番风顺,否则则要借助于一些第三方软件(Ubuntu Tweak)来安装或者自己编译。而在Arch下面,你只需要简单的“yaourt 软件名”,基本上所有常用的软件都会顺利的安装上去(mplayer ibus ibus-pinyin Virtualbox amarok openfetion etc...)。这点对于一个新手来说无疑是一个巨大的诱惑。我们不需要把时间花在怎么安装软件上面,只要在网上看到某篇文章推荐xx软件,我们就可以通过yaourt迅速安装到自己的系统上使用。另外yaourt也可以用来尝鲜,比如你可以通过搜索vim查找到大量的vim插件,通过搜索eclipse搜索到大量eclipse的插件,非常适合新手对系统中的各个软件进行功能加强和优化。

第二个优点是其KISS原则,Archlinux得花费你一整个晚上去安装,而在普通安装完毕后还需要花上至少两天的时间对系统进行调整。这似乎是一个缺点,但是对于新手而言,自己配置的系统才是自己最熟悉的能掌控的。不妨打个比喻,使用Ubuntu就像是买一台品牌机,使用Arch就相当于是自己按照别人的指导自己购买配件攒一台电脑,至于gentoo...恩,应该是自己印制电路板去攒吧(哈哈 有点夸张)。我当时不知道怎么控制Ubuntu自动启动的软件和服务,也不知道如何替换Ubuntu的gnome环境。品牌机也是一样,它肯定安装完后运行起来就非常流畅,但是它不适合你去继续鼓捣。而Arch的安装就像是搭积木,每一个软件的安装与否都取决于你,但是它又不像gentoo那样浪费你的时间。在Arch环境下,对于很多常用软件,你可以选择使用别人已经编译好的软件直接使用,但同时,使用yaourt依然给与你自己编译的权力。总的来说,使用Arch,你可以感觉到自己能够掌控整个系统。

第三个优点是文档丰富,一个Linux新手总会在系统使用的过程当中遇到这样那样的问题。Ubuntu有很好的中文论坛,而ArchLinux有很好的Wiki文档和英文论坛。特别要提的是它的Wiki,基本上常见的问题都能在上面得到答案,而且你还能够通过Wiki学到好多新的知识。除此之外,Linuxsir上面的Archlinux版块可以在一定程度上弥补其没有官方中文论坛的不足。

好了,优点已经总结完毕了。一个发行版的优点不必多,只要有那么一两个是你所需要的就足够了。我觉得对于一个亟待成长为高手的菜鸟而言,上述三个优点已经有足够的诱惑力了。

除了优点外,ArchLinux还有一个最大的特性——“新”

Archlinux永远冲在时尚的最前沿(:)),软件包更新速度非常快。不过这个特点也使得系统不总是那么稳定,我在这一年的使用中遇到过5次左右在升级后出现的不稳定情况。不过我还没有遇到没法启动gdm进入图形界面的这种糟糕的情况。其中有一次问题非常严重,系统总是在敲击回车鍵后自动注销,后来又演变成为死机。这个问题曾困扰了我两天,那时候已经有了重装系统的冲动,不过后来Linuxsir论坛给出了解决办法。(修改/etc/rc.conf 把gdm项放到最后一个启动项去启动就行了)频繁的更新的另外一个问题就是有些AUR仓库的软件包的依赖出现了问题,导致一些许久没有更新的软件没法安装。还有一个问题就是因为更新速度太快,所以你每次更新都需要花费一定的时间,如果网速不行的话,更新将会比较漫长。(好在国内Arch的源的速度还是不错的)

当然,新也有新的好处,你总是可以第一时间体验到软件的新功能,同时如果软件有bug,你可以通过更新来解决。另外,系统中的一些小问题也可能就在你的不停更新中悄然的就解决了:)

最后加句废话,Arch现在已经比我刚刚使用的时候稳定多了,最近更新一直没出现什么大问题。

最后说说什么人适合使用Arch:


使用过Ubuntu图形版或其他发行版,

喜欢鼓捣系统,

喜爱完全掌控系统的感觉,

追新,

喜欢编程,

讨厌gentoo和lfs的繁琐费时,

怕麻烦。

上面的几条不必全符合,个人建议,仅供参考:)

目前我的系统是ArchLinux使用awesome并结合部分gnome组件,双显示器,目前装了n多软件,但是系统依然很好用,开机速度没有受到任何影响。

轻巧的发行版 + 轻巧并支持多显示器的WM = 高工作效率。

来试试Arch吧 :)

以前曾经在Qzone里面挖了一个大坑。

web2.0时代将网络变得简单,大家可以简单的去搜索,简单的写,简单的聊——只要你会操作电脑,就可以很好的使用网络获取信息。不过它还不够完美——我们需要“登录”才能聊天写邮件偷菜,我们需要知道RSS地址和订阅是怎么一回事才能使用feed阅读器,我们需要安装系统.....—— 更重要的是,我们还是没法简单的通过网站控制自己家的电灯....

下一代的互联网将变成什么样子呢? 随着HTML5的兴起,flash技术将慢慢退居幕后。随着物联网的推广,越来越多的无线传感器网络将被搭建,人们可以通过网络实时获取到越来越多的数据。(同时G F W也不再只是屏蔽那些sensitive的词汇,它将变的更加强大,将中国信息同世界隔开。)同时IBM的智慧地球项目很可能会更大的拉近网络同世界的联系。 云计算最终将很可能演变成一个巨大的服务终端,每台电脑都是终端中的一份子。机器人依托巨大的计算机网络云获取数据,它们随着全世界电脑总数量的不断增加而变得越来越聪明....

其实这些都不重要。

下一代的网络,说到底还是要为人类服务的。反观下现在web2.0,什么代表了web2.0?是博客,微博,RSS,SNS?还是Youtube?豆瓣?

网络的进化依托于技术的进步,AJAX可以说是web2.0技术的代名词。但它并不能等同于web2.0。

web2.0的实质就是以人为本,让网站能够做到易用,好用,简单方便。所以web2.0的网站字号总是设的比较大,字体总是偏爱微软雅黑 :)

下一代的网络也是一样。无论是物联网还是云计算,只有当这个技术能够实实在在的变得简单易用的时候,我们才能宣布下一代网络时代的到来。

因此,当你能够让90岁的老奶奶老爷爷也能够用终端设备连接网络去读(听)报,打电话,开关台灯,冲马桶的时候。下一代的网络就真得来了。

我正在做的就是这样一个prototype,它属于下一个时代——现在虽然还是很简陋,但是很有趣。

尽请期待:)

之前做的那个自动查分系统的一个缺陷就是没法准确提取所有人的成绩和学分。之后某天爬山的时候突然脑海里灵光一闪....想出来了一个绝妙的方法。等我回学校之后测试了一下,发现这个方法果然可行。为了进一步应用它,我单独制作了这个GPA自动计算系统,也算是将去年用Javascript写的GPA计算系统升级了。

整套系统架设在美国的VPS主机上面,现在这个主机除了翻墙外又多了一个功能:) 该系统展现给用户的部分是用Javascript+PHP构成的,当然后续版本会使用jQuery,现在学艺不精先不用它采用jQuery增强了用户体验。这次依然是数据库作为桥梁,后台是用Python+sed来完成成绩的提取计算,并将最终结果返回给数据库。总的来说这套系统也算是一个小型的B/S系统了。

本人已经毕业,没法继续维护这个系统,故本系统已经下线。非常抱歉。

项目地址:https://github.com/quake0day/calGPA

访问地址:http://www.darlingtree.com/gpa

半年前我曾经制作过一个自动查分系统,这次我利用课程设计的机会,将这个系统重新制作成为了一个可以在浏览器中自助注册添加用户的B/S版查分系统。

除了功能上面增强了以外,我还将底层全部重写了一遍。这次使用的是可可熊的PyFetion来制作的短信发送功能,抓取功能由原来的PHP curl库改成用Python的urllib库。因此整个系统的功能实现只采用Python,降低了系统部署的难度。在功能提升的同时,我还利用PHP写了一个简单的注册系统。将注册系统部署好后,别的同学可以通过网络浏览器自己注册并使用该系统,免去了人工配置的麻烦。

整体系统设计方案

整个系统通过Python结合urllib库模拟用户登陆学生URP教务系统,并访问指定页面获取本学期该学生的成绩信息。并将包含成绩信息的HTML代码全部抓取下来。之后通过控制Python调用Linux下面Sed文本编辑器,对抓取的HTML信息代码进行剪裁提取,获得具有可读性的成绩信息。之后通过Python结合MySQL库将成绩保存到数据库中。

Python程序还将判断这次抓取后的成绩是否和上次抓取的相一致,如果不一致,则调用PyFetion库登陆飞信发短信报警。用户信息保存在MySQL数据库中,用户的添加是通过PHP程序来操控MySQL数据库实现的。

网页端采用了XHTML+CSS+Javascript的JQuery库来实现。因为采用了AJAX技术,使得该系统可以给予用户良好的操作体验。

整个系统启动需要启动Apache,MySQL和judge.py,其中Apache和MySQL是提供网页的运行环境,而judge.py则是采用轮循的方式对数据库中每个注册的用户进行扫描,调用ScoreScanner.py程序来判断是否需要发送短信。

因为课设时间紧,整个系统目前还有很多不足和亟待改进之处,已知的有:

    1. 现在用户注册时候必须提供自己的飞信密码,实现自己给自己发飞信。这样做的缺点是个人飞信密码容易泄露,同时查分时会干扰正常的飞信使用(会导致异常断线)。下一个版本应该改进为由某个用户统一给同学发飞信。
    1. 定时查分程序较为简陋。这次因为在使用Crontab做延时的时候总是出现一些问题,最后只好舍弃Crontab,改用Python自己的延时来实现。
    1. 分数转换部分的sed脚本还存在问题。在遇到某些特殊的课程的时候会导致转换错误。
    1. 缺乏用户自助管理系统,注册完后用户资料没法修改。

项目地址:http://code.google.com/p/caufetion/