
(刚刚开始接触GAE):
撇开Big Table,GFS,Paas,IaaS以及云里雾里的Cloud Computing不说(其实是不懂),GAE仍然是一个很了不起的服务,它不仅给那些startups穷光蛋们提供了最大的福利,同时也让Python 语言以及Django为更多的人们所认识,最重要的是他的出现突破了传统意义上的Web Hosting Service Provider,他免费提供10个App,每个App 500MB 的持久存储空间,以及可支持每月约 500 万页面浏览量的足够 CPU 和宽带。而你使用机器是Google的架构,Big Table,GFS等,而且带宽、CPU资源、可靠性、吞吐量都是可扩展的,如果不够可按需购买,但其实像我们的简单的应用已经足够使用。其中 Datastore是分布式数据存储服务,我想应该就是Big table技术,他不同于传统关系型数据库(所以如果你集成Django到GAE中来就不能使用Django的ORM),至于GAE的SDK,其实许多地 方模仿了Django了,所以如果了解Django,你可以很轻松地使用SDK的API,而且利用SDK你就可以进行本地的开发和测试,最后部署到GAE 上时只消一个命令就搞定,你完全不用像使用PHP、J2EE Dedicated服务器那样进行大量的服务器端配置,特别是Apache Server(如果你是高级管理员)。如果你也在进行GAE上的Web开发,有问题的话我们也可以讨论一下;-),我也在和我的同僚们进行一项Web App的开发,现在只完成了一小部分。Good luck。
施能毅推荐的书。
关于编写代码,我越来越感到乏味,重复性的工作,其实我并不喜欢编程,以前学Java是有原因的,后来呢,会了一种语言,我就去作些好玩的东西,纯粹出于追求一种有为青年的满足感,可是现在情况变了,我开始厌倦,于是呢,我开始学会去想编程语言本身,开始琢磨追求一种极致,上次给我们的team作一次PPT知识分享,我发觉对于代码本身已没有任何谈资,我得找出一些噱头,于是我拖出设计模式和一些Unix编程艺术中谈及的一些编程哲学和原则,不过我是第一次写PPT并由自己演说。在最近,我在alibaba实习接到第一个项目,我负责开发,虽然很简单,但我似乎已经开始极力注重代码编写的优美以及绞尽脑汁使得我的代码不去侵入既有代码,我希望抽象的层次更高一些,这样才有些挑战性不致于感到枯燥,你得明白程序设计之所以与艺术设计、建筑设计带有同样的“设计”二字,这说明程序的编写以及设计不是盖的。
程序员都是艺术家。
你可以去阅读《Hackers and Painters》。
我将这本书的英文版放到了网络上:http://www.live-share.com/files/362650/____Beautiful_Code.pdf.html
下面是这本书的介绍:
原文链接:http://books.solidot.org/article.pl?sid=08/10/31/083254
《Beautiful Code》是由Greg Wilson在2006年构思的,2007年6月出版,现在中文版已经推出。 本书的初衷是希望从优秀的软件开发人员和计算机科学家中提炼出一些有价值的思想。他与助理编辑Andy Oram一起走访了世界各地不同技术背景的专家。33位作者,33个来自不同开发领域的专业经验,33种不同的意见。你想知道牛人们对代码之美是怎么想的 吗?其实,这本书最奇妙的地方还不在于这一点,而在于,如果你知道这些作者的名字,你肯定会忍不住去看一看。如果你不知道这些作者的名字,你更加会忍不住 去看一看。因为你知道这些人的观点肯定不会让你失望!《代码之美》的精选本可以从网站上免费下载(但需要注册)。
海龙问我,有没有一本书能够使自己对编程感兴趣,我当时说我不知道,好像没有,事实是许多人在学了C/C++之后,就失去了对编程的兴趣,觉得编程既枯燥又难学,我得承认C/C++语言绝对是一流的程序设计语言,它经历整整三十年依然为广大厂商和程序员采纳,可问题是是否C/C++是最好的入门语言。C/C++固然是其他C体系语言的基础,比如Java,我也是在学习了C/C++之后学的Java,这时学习难度并不是很大,至少是在语法方面,可是呢,你知道,许多人在C语言的指针问题上出了问题,它很难学(至少是对初学者来说),所以它绝对是个不折不扣的瓶颈,而C++的面向对象实在是可怕(与其他面向对像语言相比),一堆需要花许多时间来理解的概念(至少我不明白,我认为这是蹩脚翻译惹的祸,辞不达意),友元、虚函数、纯虚函数、模板等。另一方面,学校只教会你一门语言的语法,却不会告诉你编程的本质以及如何设计出好的程序来,什么才是真正的面向对象?什么是设计模式?这暂且不说,再回到C/C++是否是最好的入门语言问题上来,很显然,你知道我要说什么:我想说不。那么谁才是最好的入门语言呢?我很想说是Java,因为许多其他大学都将Java作为首选,而且我自己用起来最流畅的就是Java。可是我仍然认为Java也不是最佳的,因为我觉得最好的入门语言首先应该具有一下几个特点:
0.简单易学
1.语言本身和自然语言(英语)相似度高,代码对人类可读性高。
2.可交互的
3.面向对象
4.通用性高
5.自由灵活
6.平台独立
7.开发效率高(见效快)
Java只具有0,3,4,6,7,而0也要看条件,1 马马虎虎也算是。而这里我想说的是Python语言。我不想过多谈论Python有多么好,那没有任何用处。可是如果你若问我如何对编程感兴趣,那么我会说:去学习Python吧。你看,Linux操作系统自带Python不是没有道理,而Googel、豆瓣使用它作为开发语言也不是心血来潮。我觉得初学者如果能够迅速用一门语言解决掉一个有趣的或是是挑战性的问题,那么这会在很大程度提高自己对编程的兴趣,成就感也很重要不是?不需要编译也不要链接,也没有莫名其妙笨拙的编译链接错误,只需几行代码,执行并给出结果,那该多好。看看下面最简单的例子:
C++版
#include
void main()
{
cout << “Hello, world.” << endl;
}
Python、Groovy版本
print “Hello,world.”
试想一下你从来没有学过C/C++…
你得明白,编程语言这玩意只是个工具,如果花在学习工具上的时间占用了大量时间或者很难学,很有可能使大家望而却步,根本就没有机会去解决那些有趣的问题,是吧?
可是我仍然没有回答最初的问题,怎样使你对编写程序发生兴趣?因为即使是选择Python也不能使我对编程感兴趣啊,其实我觉得这得问你自己除了编程外对什么事情特别的感兴趣,拿我自己作例子,大一时我对骇客技术十分好奇,我想黑掉一个网站,可是我不懂那些骇客技术使用的编程语言,我想大干一票,怎么办?没办法,学习一个语言吧,于是我开始学VBScript(一种Windows上嫡系脚本语言),而且上了瘾,虽然这个语言现在我已经忘光了。可是如果你对对Linux感兴趣、对好玩的硬件、对网络感兴趣,那么你就得去学C/C++,对不对?如果你是一名艺术爱好者,那么你可以去学Processing、CSound,我可以双手按在圣经上发誓,这两种语言绝对能够让你痴迷,并沉醉于其中,只要你真的是热爱艺术,或者你发现游戏里那些带着智能的行为实在是很迷人,那么你可能会去寻找一种你可以控制这种智能行为的方式,那是什么呢?编程,Java、C/C++或其他语言(Inform),又或者你对开发网站很感兴趣,想写出想豆瓣那样的网站来,那么,啥都别做了,开始学习Python(ruby on rails,groovy on grails)吧…
最近看了迪斯尼出品皮克斯制作的动画电影《料理鼠王》,说的是一只会说一口流利英语的老鼠有着灵敏嗅觉而且对厨艺这方面有着不可思议的天赋,在通过与人类的交往中展现了自己的天才厨艺,而且深刻地反映了贯穿影片始终的主题:Eeverone can cook. 可是并非人人都能成为优秀的厨师,这就是苏大后庄小吃一条街那些炒菜的师傅以及我们的老爸老妈与汉庭坊里的厨师之间的差别。其实这句话与Martin Flower在《重构》中一句经典的话:”任何一个傻瓜都能写出计算机可以理解的程序”(相当于Everyone can code)如出一辙,但他的后半句是“只有写出人类容易理解的程序才是优秀的程序员。”而这句话与我高中时代的化学老师兼班主任说的话又十分相似:要把你写的化学方程式和计算过程写得能够让学校门外买早饭的老太婆都能看懂。(如果你是江浦高级中学的学生,并且是王宏明老师教的化学,或许你会熟悉这句话)最近我还看到了IBM网站上的一篇文章叫《Everyone can refactor》http://www.ibm.com/developerworks/cn/linux/opensource/os-ecref/index.html
可是怎样才能写出人类容易理解的程序呢?举个例子吧:
反例:
一个方法调用:w44();你知道什么意思吗?w代表with,44是逗号“,”的ACII码值,它是用来将字符串以逗号隔开的格式化。如果不去看方法里面的代码,鬼知道它是什么意思。
而下面的:
november(20, 2005);你可能一眼就看出它是什么意思。
它的原型是public void Date november(int day, int year);
而同样
java.util.Calendar c = java.util.Calendar.getInstance();
c.set(2005, java.util.Calendar.NOVEMBER, 20);
c.getTime();
也能实现上面的功能,但是两者谁更容易使得学校门外买早饭的老太婆理解呢?
我琢磨Processing已经有些日子了,对于这种小型计算机语言,我总是抱着”Just for fun”的态度来尝试,的确它真的满足了我的猎奇心理,而且很好玩很强大很有创造力。语法很简单,由于是基于Java语言,所以在很多方面,它秉承了Java特性,对我来说学起来很快,不过这种语言不是给一般的程序员使用,It targets visual designers and artists.许多年前,凡高用颜料和画纸、画笔、调色板创作油画,古代中国人用墨水、宣纸和毛笔创作水墨画,当代有素描画、蜡笔画、炭笔画、水彩画等,我在高中时代甚至用蓝色圆珠笔和素描纸作画…可是在计算机技术横行的时代,传统的艺术形式显得太保守了点,现在Processing正颠覆这些传统,可是你不要以为他是Photoshop、Flash、Google SketchUp、3DMAX或是其他设计软件,Processing是一种计算机语言,就像Java、Python、Scheme.
他是用Java语言写的,Open Source,用来创作数字艺术,你通过编写程序代码,创作一件艺术品,通过分形,递归,适当的和谐函数,你可以获得极佳的效果,当然你可以将它保存生成的图像格式(如png,tiff,jpg等),同时还可以输出Applet小应用程序在网页上显示(他可是基于Java的,没什么好奇怪的吧),个人觉得图片就没有这个必要了,一般动画影片可输出为Applet,可能忘了告诉你,Processing还可以创作动画和影片等许多多媒体形式。Processing可以运行在Windows、Linux、Mac上,需要Java虚拟机,所以如果你没有安装Java环境的话,记得下载一个自带Java的包,Processing的官方站点是www.processing.org,感兴趣的话,尝试一下。下图是我的初次尝试:
以前在《Google Hacks》上了解到GmailFS可以挂载到本地硬盘,今天没事干,在Ubuntu上尝试玩了一把。
前提:1′ 有一个Gmail帐户
2′ Ubuntu操作系统
3′ 可以连上Internet
Just do it:
终端上:
b@t:~$ sudo apt-get install gmailfs
b@t:~$ sudo mkdir /mnt/gmail
b@t:~$ sudo mount -t gmailfs none /mnt/gmail/ -o username=toozoofoo,password=mypassword,fsname=Linux
可能终端会出现Ignored option :rw的提示,那没关系。
事实上我并不知道挂载成功是什么状况,因为挂载后,什么也没变,/mnt/gmail里什么也没有,可是当我在这个挂载点上创建一个目录时过程有点缓慢,
b@t:~$ sudo mkdir /mnt/gmail/Hello_Gmail
我知道它是联网在远程gmail服务器上创建了目录,那么我想应该是成功了。并且当我登录我的gmail时有四封电子邮件,发件人是我自己,其中一封很明显地告知我已经挂载成功:
标题:
v=3 r=1222872307 q=__g__Linux__h__
正文:n=__c__Hello_Gmail__d__ p=__a____fs____b__ l=__e____f__
虽然有些符号看不明白,但不打紧,我见着了Hello_Gmail这个字符串,它正是我创建的目录名。
question = ( to ) ? be : ! be;
— Wm. Shakespeare
Google开发了自己的浏览器,关于它的多进程及其他特性我不想谈,我只想谈谈关于它的命令行。我记得,在XP包括XP以前的Windows操作系统中,IE与文件浏览器explore.exe是互通的,就是说,你在IE中可以输入诸如:”http://afaker.com” ”ftp://192.168.16.12″ “\\192.168.1.2″ “c:\”(可以打开Windows C盘目录),甚至可以输入“我的电脑”这样的中文,而在文件浏览器中同样也可以输入 URL地址来启动IE浏览网页.
而最一般的用法对所有浏览器来说可以对url地址的请求参数进行修改,例如用Google搜索网页:http://www.google.com/search?q=java,只需将参数q的值改为你需要搜索的内容即可,当然你还可以加上其他参数例如语言参数hl=en和解码方式ie=utf8等。这就是说,我们可以将url看作是一条shell命令而请求参数则相当于一般的命令行参数。而Google推出的这一浏览器的额外命令行功能则是我们稍微熟悉一点的命令行形式,可我觉得有点多余,因为这些功能有些不必要,有些则似乎与现有GUI功能重复(这种重复需要额外劳动力)。
北京时间9月3日消息,今天凌晨谷歌公司推出了Chrome浏览器BETA版,作为搜索巨擎的谷歌正是进入浏览器市场。与谷歌之前推出的新产品一样,在上市前Chrome浏览器便倍受关注,下面一些有趣的命令行。
about:version - 显示当前版本 也可以是chrome-resource://about/
about:plugins - 显示已安装插件
about:histograms - 显示历史记录
about:dns - 显示DNS状态
about:cache, 重定向到 view-cache: 显示缓存页面
view-cache:stats - 缓存状态
about:stats - 显示状态
about:network - 很酷的网络工具
about:internets - 这应该算是一个彩蛋
chrome-resource://new-tab/ - 新标签页
chrome-resource://favicon/
最近一次重看周星驰的这部鬼片《整蛊专家》,才发现这部电影在许多方面模仿了另一部法国导演美国片《这个杀手不太冷》,首先莫文蔚饰演的角色的造型与《Leon》中那个小女孩一样:短裤加夹克式外套,脖子上的颈圈,连发型都是一样的,周星驰呢,鸭舌帽,黑色风衣,一脸胡喳子,带着个不离身的盆栽(与Leon一样都是一种开白色花的植物)而且他还有个名字就叫Leon,不过与《Leon》不一样的是这棵盆栽具有特异功能:识别鬼魂所在。