Entries from 五月 2008
【翻唱】樱花草
载入中……
阅读(592 次)Share This
Categories: 翻唱空间(慎入)
Google Application Engine 试用
收到了GAE(Google Application Engine)的邀请函,在其主页上注册了一个帐号,试用了一下。
GAE是google基于其Bigtable和GFS开发的网站开发环境,目前只支持Python语言。GAE的目的主要有两个:
1. 提供一个易于上手的网站开发环境。开发人员不需要自己搭建网络服务器,DNS和数据库等软件,只要使用google提供的API即可用Python开发CGI脚本。
2. 解决网站的可扩展性问题(scalability)。就是当有成千上万甚至数百万每天的用户请求时GAE能根据连接数自动将任务负载均衡到各个计算节点,同时对数据库的存储和操作也可以自动并行化。用户根本无需使用特殊的API即可自动实现可扩展性。由于GAE的实现是基于和Google搜索引擎类似的硬件和软件,网络和节点的维护由google完成,用户无需操心。
这两个想法显然是很前卫的。GAE也是所谓的云计算(cloud computing),它和Amazon EC2的区别在于EC2的用户对节点有绝对的控制权(root),但EC2并不是一个网站开发环境。
我比较喜欢GAE的这些特性:
1. 支持Python。没有哪种语言比Python更容易上手也更容易维护,另外Python的扩展库也非常丰富。
2. GAE SDK中的uploader用起来很简单,而且自带了一个webserver可以让开发人员在本地建立虚拟的GAE环境进行调试。
3. API中有访问者帐号认证的模块,但仅仅限于google account。
4. 数据库的查询命令和SQL很类似。
目前GAE还处于preview release阶段,功能上还有很多不足。下面是我找到的一些缺陷:
1. GAE中的Python版本删除了一些库和库函数。比如不支持写文件和socket编程,不支持C/C++写的extension,很多os库中的函数都不能用了。从安全角度这可以理解。
2. 不支持多线程。
3. API还比较少,文档比较简陋。
4. GAE的后台管理 (console window)很简陋,特别是管理数据库的页面基本上和没有没区别(比如无法通过表单选择某个table中的所有记录然后删除)。
5. 数据库操作的执行效率目前还很差。从一个数据表单中取出5000条记录居然需要3.3秒; 插入100条数据需要3.4秒; 一次删除4000多条数据会超时产生出错网页。
我用GAE写了一个benchmark网站,在这里:
http://benchmarkgae.appspot.com
其中对数据库,网络速度和排序算法进行了测试。还有对Scalability的测试,其中静态存储的可扩展性:
#_of_concurrency speedup
1 1
10 10.0
100 87.2
排序CGI程序的可扩展性:
#_of_concurrency speedup
1 1
10 9.64
100 63.9
前者比后者要好些,但并行程度都较低。
benchmark的源代码可以从上面的网站下载到。
总之,GAE还处于测评阶段,功能欠缺较多,并不适合用来编写较复杂的网站。
阅读(1189 次)Share This
Categories: 程序
翻唱
这是老婆翻唱的第一首歌《知了》
载入中……
是用那种聊天用的简易麦克风,效果不太好,打算改天买个好的Mic和amplifier再试试。
Wordpress的这个coolplayer插件挺酷的,不过放出来的声音有些“嗡嗡”地走型。下载mp3到本地听效果会好些。
阅读(612 次)Share This
Categories: 翻唱空间(慎入)
很白很强大
失而复得
文静有一台小白 — 苹果的MacBook笔记本 — 是UT生物系给新生的发的。因为用起来不习惯,拿到没几天就被我们两个小小白用bootcamp给装上了Windows,但发现若干驱动不好,后来把一瓶矿泉水洒在上面之后机器就经常无法正常启动,而且Mac操作系统也不能用了。于是小白成了两个小小白最不喜欢用的电脑。而且我一直认为苹果系统是给傻瓜用的,华而不实,应该不是一个适合编程的OS。
但最近我意识到这种想法错了。前几天小白的电源线坏了,抱着试试看的心理拿到Apple的专卖店去修,本子三年的applecare还没到期,于是免费更换了电源线和logicboard(类似于PC的motherboard)。然后给机器装上了以前在学校电脑店购买的Mac OSX10.5 Leopard (10.5版本操作系统的codename是leopard)操作系统,用了几个小时发现Leopard还是很强大的,更重要的是它提供的编程环境一点都不比Linux差。
设计和使用感
Apple的华丽易用,就不多说了。其实任何一种操作系统,只要用久了都能习惯,当然Emacs除外 不过Apple比其他的操作系统更容易上手,用起来的感觉非常简洁明快,而且程序响应比较快。我觉得苹果的本本设计成功的一点在于电脑上没有硬盘读写的指示灯,因此即使程序启动比较慢用户也没太大感觉。
有人可能觉得苹果桌面下方的托盘很酷,甚至有人在其他操作系统上也要装个软件模拟这种效果,但我觉得这是个失败的设计,至少在macbook上是如此,因为屏幕上方有个菜单条再加上下方的托盘导致打开的程序窗口上下高度很局促。我更喜欢把托盘拉到屏幕右方,像下面
上图: 程序托盘
熟悉一些快捷键使用起来会更加得心应手,比如
command+q 退出应用程序
command+w 退出当前窗口,但并不退出该应用程序
command+n 打开新窗口
command+tab 在程序间切换
command+` 在同一程序的不同窗口间切换
command+= 浏览器字体字号增大
command+- 浏览器字体字号缩小
F11 显示/隐藏桌面
F12 显示/隐藏Dashboard
上图: Dashboard 中的小工具
F9 显示所有窗口的缩略图(见下图)
F8 显示工作区缩略图(Leopard引入了工作区workspace的概念,这显然是抄袭Linux下的一些wm的)
另外,还有几个屏幕抓图的快捷键很上手,比如
command+shift+3 抓取整个屏幕并保存文件到桌面
command+shift+4 抓取鼠标拖拽的区域并保存到桌面
command+shift+4 然后按空格,抓取某个窗口的内容并保存到桌面
系统有一个很纳粹的设计让我很不习惯,就是没有快捷按钮可以让窗口最大化,而且点击窗口左上方的“+”绿色按钮并不能放大到整个屏幕,apple对此的解释是“根据情况”而不是用户的意志来放大窗口。比较一下下面两图,第一张是点击最大化之前的finder(类似windows的资源管理器),第二张是“最大化”之后的。
上图: finder放大之前
上图: 放大之后
另外,mac的字体本身并不特别漂亮,还不如Linux的一些open的字体,但macbook的屏幕显示很晶莹剔透,应该和mac OSX的图形驱动有关。
软件
Mac的软件其实不比windows的贵到哪去,只不过盗版不多罢了。UT的校园电脑店可以买到$20左右的Office套装,日常的文书处理就足够了,另外学校网站的bevoware里有一些特别授权的正版软件可以下载,比如norton的防病毒软件,realplay和mediaplay等,差不多可以满足日常需要。
中文输入法我用的是Fun Input Toy,和Fcitx很类似。
http://fit.coollittlethings.com/
上图: FIT的选项菜单
上图: FIT的选词菜单
leopard自带了一个英英词典,可以查wikipedia的条目
上图: wikipedia in dictionary
在finder中加入了对文件进行cover flow的查看功能,这是leopard的一个亮点,不仅能对图片进行预览,还可以对ppt和pdf等进行预览,而且预览时可以对pdf/ppt前后翻页!
上图: cover flow
Apple系统一个让人不爽的地方是package management system做的不好,程序容易装上但想完全卸载有时需要一番功夫,这个在下篇文章中会提及。
编程环境
如果Mac OSX只是有上面这些,那还不足以称为强大的小白。Mac本身是基于Unix的,而且部分apple系统用的是intel的CPU,所以很多Linux下的应用程序可以轻易移植到leopard下。Leopard系统本身就集成不少开源工具,比如VIM,Python等。
Mac的编程之旅,不需要通过像windows那样使用某个IDE开始,而应当从系统自带的terminal开始(application->Utilities->Terminal)。不过很多normal user应该不知道有这个Terminal,更勿说apple电脑专卖店修电脑的帅哥了。
上图: Mac的Terminal
上图: VIM in terminal
不过这也正是Apple强大之处,一般用户可以很快上手,同时做程序开发的也有完整的一套编程工具,大家可以各取所需。
下篇文章将谈谈Leopard的编程环境。
阅读(1303 次)Share This
Categories: Mac OSX