<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3455839719985060729</id><updated>2012-01-31T00:00:59.686+08:00</updated><category term='mobile'/><category term='facebook'/><category term='projectzero'/><category term='simplicity'/><category term='sharaholic'/><category term='technology'/><category term='web'/><category term='engineering'/><category term='friendfeed'/><category term='书籍'/><category term='developerworks'/><category term='同学'/><category term='presentation'/><category term='Feed'/><category term='学习'/><category term='blackberry'/><category term='生日'/><category term='beijingopenparty'/><category term='digg'/><category term='twitter'/><category term='delicious'/><category term='netvibes'/><category term='opug'/><category term='google reader'/><category term='open-api'/><category term='cloud-computing'/><category term='mashup'/><category term='chengfu'/><category term='google'/><category term='human'/><title type='text'>《走过1999》</title><subtitle type='html'>一个万恶工科生的博客</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>54</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-1466895285321656000</id><published>2012-01-31T00:00:00.005+08:00</published><updated>2012-01-31T00:00:59.696+08:00</updated><title type='text'>在Fedora 上启用 Gluster File System 分布式文件系统</title><content type='html'>最近在学习分布式文件系统，于是尝试了&lt;a href="http://www.gluster.org/"&gt;Gluster File System&lt;/a&gt;, 安装也比较简单：&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# server&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;sudo yum install glusterfs-server&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# client&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;sudo yum install glusterfs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;之后使用systemctl 启动服务器端即可：&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;sudo service glusterd restart&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;注意：第一次启动 glusterd 的时候需要注意修改glusterd 在 sysconfig 下的配置文件：&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;vi /etc/sysconfig/glusterd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;GLUSTERD_LOGFILE="/var/log/glusterfs/glusterd.log"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;GLUSTERD_LOGLEVEL="INFO"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;注意: Log level 在 glusterfs v3.2.x 使用 &lt;b&gt;INFO&lt;/b&gt;, 没有沿用 glusterfs v.3.1.x 里的默认值 &lt;b&gt;NORMAL&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;你还需要增加 iptables 规则来允许客户端连接 gluster 服务器：&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 24007:24011 -j ACCEPT&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;比如你有机器 A (ip: 192.168.0.100) 和 B(ip: 192.168.0.101) 来做 glusterfs 服务器，在客户端上执行如下命令：&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;sudo gluster peer probe 192.168.0.100&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;sudo gluster peer probe 192.168.0.101&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;你可以使用 peer status 来查看状态：&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;sudo gluster peer status&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;你可以创建一个叫做 test-vol 的存储卷，在A 和 B 上各复制一份：&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;sudo gluster volume create &lt;b&gt;test-vol&lt;/b&gt; replicate 2 192.168.0.100:/data 192.168.0.101:/data&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;启用并挂载即可使用 test-vol：&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;sudo gluster volume start test-vol&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;sudo mount.glusterfs 192.168.0.100:/test-vol /mnt/glusterfs&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-1466895285321656000?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/1466895285321656000/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=1466895285321656000' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/1466895285321656000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/1466895285321656000'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2012/01/fedora-gluster-file-system.html' title='在Fedora 上启用 Gluster File System 分布式文件系统'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-7509371413104530663</id><published>2012-01-07T12:44:00.001+08:00</published><updated>2012-01-07T12:44:02.189+08:00</updated><title type='text'>RubyGems 的隐藏配置选项</title><content type='html'>RubyGems 是简单而强大的 ruby 软件包管理工具。但是其文档有些过于简洁而缺少了定制的部分。当你浏览 &lt;a href="http://docs.rubygems.org/read/chapter/11"&gt;gem command reference&lt;/a&gt; 或者 gem 使用手册时，有些内容没有在正式文档里出现。&lt;br&gt;&lt;br&gt;场景1：在内部网络里需要自己的 gem server, 避免每次从 &lt;a href="http://rubygems.org"&gt;http://rubygems.org&lt;/a&gt; 下载安装&lt;br&gt; 这种场景在企业内部的应用场景非常常见，但是文档里没有提及如何配置实现。这里就有一个隐藏配置 sources. &lt;br&gt;&lt;ol&gt;&lt;li&gt;在机器 &lt;a href="http://example.com"&gt;example.com&lt;/a&gt; 上运行 ruby server 启动 rubygems 服务器，你可以从 &lt;a href="http://example.com:8808/"&gt;http://example.com:8808/&lt;/a&gt; 看到你安装在这台机器上的所有 gem&lt;br&gt; &lt;/li&gt;&lt;li&gt;在需要安装 gem 的机器上创建 ~/.gemrc 配置文件，添加如下内容：&lt;/li&gt;&lt;/ol&gt;&lt;div style="margin-left:40px;font-family:courier new,monospace"&gt;sources:&lt;br&gt;- &lt;a href="http://example.com:8808/"&gt;http://example.com:8808/&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;这时运行 gem sources 命令时就可以看到原来的 &lt;a href="http://rubygems.org"&gt;http://rubygems.org&lt;/a&gt; 被替换成为了你自己的 gem server&lt;br&gt; &lt;br&gt;场景2：gem 安装错误时需要错误信息。&lt;br&gt;在 ~/.gemrc 里添加如下配置：&lt;br&gt;&lt;span style="font-family:courier new,monospace"&gt;backtrace: true&lt;/span&gt;&lt;br&gt;&lt;br&gt;你还可以指定输出信息的详尽程度：&lt;br&gt;&lt;span style="font-family:courier new,monospace"&gt;verbose: true&amp;nbsp; # 还可以指定为 :load&lt;/span&gt;&lt;br&gt; &lt;br&gt;参考：&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://guides.rubygems.org/run-your-own-gem-server/"&gt;Run your own ruby server&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://webonrails.com/2008/12/03/skiping-installation-of-ri-and-rdoc-documentation-while-installing-gems/"&gt;Skipping installation of ri and RDoc documentation while installing gems&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;br&gt;-- &lt;br&gt;朱可&lt;br&gt;&lt;a href="http://www.netvibes.com/shawnzhu"&gt;http://www.netvibes.com/shawnzhu&lt;/a&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-7509371413104530663?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/7509371413104530663/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=7509371413104530663' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7509371413104530663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7509371413104530663'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2012/01/rubygems.html' title='RubyGems 的隐藏配置选项'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-2280039563840907213</id><published>2012-01-03T22:23:00.001+08:00</published><updated>2012-01-03T22:23:44.088+08:00</updated><title type='text'>从 Grub2 切换到 NTLDR 实现引导 windows 和 Fedora 双系统</title><content type='html'>   	 	 	 	&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		A:link { so-language: zxx } 	--&gt;&lt;/style&gt;&lt;font face="DejaVu Sans"&gt;在 &lt;/font&gt;thinkpad &lt;font face="DejaVu Sans"&gt;上运行 &lt;/font&gt;Ubuntu &lt;font face="DejaVu Sans"&gt;和 &lt;/font&gt;Fedora &lt;font face="DejaVu Sans"&gt;的日子让人舒适而轻松：没有病毒，更新简单迅速，&lt;/font&gt;Gnome3.2, &lt;font face="DejaVu Sans"&gt;集成的协作软件高效而简洁。但一旦需要在同一块硬盘上安装 &lt;/font&gt;windows, &lt;font face="DejaVu Sans"&gt;生活立即发生改变。&lt;/font&gt;&lt;p style="margin-bottom:0in"&gt; &lt;/p&gt;&lt;p style="margin-bottom:0in"&gt;&lt;font face="DejaVu Sans"&gt;众所周知 &lt;/font&gt;windows &lt;font face="DejaVu Sans"&gt;一定要改写 &lt;/font&gt;MBR &lt;font face="DejaVu Sans"&gt;采用 &lt;/font&gt;NTLDR &lt;font face="DejaVu Sans"&gt;来引导系统。如果你已经采用 &lt;/font&gt;grub2 &lt;font face="DejaVu Sans"&gt;来引导 &lt;/font&gt;Linux &lt;font face="DejaVu Sans"&gt;而又不想每次安装完 &lt;/font&gt;windows &lt;font face="DejaVu Sans"&gt;重新恢复 &lt;/font&gt;MBR, &lt;font face="DejaVu Sans"&gt;那么你就得依赖 &lt;/font&gt;NTLDR &lt;font face="DejaVu Sans"&gt;了，详见参考文章 &lt;a href="http://huang.yunsong.net/2006/ntldr_dual_boot_windows_linux.html"&gt;Using NTLDR to dual boot Windows and Ubuntu&lt;/a&gt;。&lt;/font&gt;&lt;/p&gt; &lt;p style="margin-bottom:0in"&gt;&lt;font face="DejaVu Sans"&gt;由于我已经在硬盘上安装了 &lt;/font&gt;Ubuntu &lt;font face="DejaVu Sans"&gt;和 &lt;/font&gt;Fedora, &lt;font face="DejaVu Sans"&gt;所以此次安装 &lt;/font&gt;windows &lt;font face="DejaVu Sans"&gt;的主要目标是用 &lt;/font&gt;NTLDR &lt;font face="DejaVu Sans"&gt;来同时引导 &lt;/font&gt;windows &lt;font face="DejaVu Sans"&gt;和 已经存在的 &lt;/font&gt;Linux&lt;font face="DejaVu Sans"&gt;.&lt;/font&gt;&lt;/p&gt; &lt;p style="margin-bottom:0in"&gt;&lt;font face="DejaVu Sans"&gt;我的 &lt;/font&gt;Fedora &lt;font face="DejaVu Sans"&gt;安装在 &lt;/font&gt;sda2 &lt;font face="DejaVu Sans"&gt;上，此次将 &lt;/font&gt;windows 7 &lt;font face="DejaVu Sans"&gt;和 &lt;/font&gt;windows 2008 &lt;font face="DejaVu Sans"&gt;分别安装在了 &lt;/font&gt;sda3&lt;font face="DejaVu Sans"&gt;和 &lt;/font&gt;sda1 &lt;font face="DejaVu Sans"&gt;上。&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom:0in;margin-left:40px"&gt;&lt;font face="DejaVu Sans"&gt;&lt;b&gt;注意：&lt;/b&gt;安装之前一定要备份 &lt;/font&gt;/boot/grub2/grub.cfg&lt;/p&gt; &lt;p style="margin-bottom:0in"&gt;&lt;font face="DejaVu Sans"&gt;安装完基本的操作系统后，可以从 &lt;/font&gt;windows boot manager &lt;font face="DejaVu Sans"&gt;看到两个 &lt;/font&gt;windows &lt;font face="DejaVu Sans"&gt;操作系统，但是 &lt;/font&gt;Fedora &lt;font face="DejaVu Sans"&gt;没有了。这时你需要修改 &lt;/font&gt;windows boot manager &lt;font face="DejaVu Sans"&gt;以加入对 &lt;/font&gt;linux &lt;font face="DejaVu Sans"&gt;操作系统的引导。&lt;/font&gt;&lt;/p&gt; &lt;p style="margin-bottom:0in"&gt;&lt;font face="DejaVu Sans"&gt;由于 &lt;/font&gt;windows 7 &lt;font face="DejaVu Sans"&gt;开始已经没有了 &lt;/font&gt;boot.ini, &lt;font face="DejaVu Sans"&gt;所以之前各种通过修改 &lt;/font&gt;boot.ini &lt;font face="DejaVu Sans"&gt;文件实现的多系统引导方法都不能用。我的方法是安装 &lt;/font&gt;&lt;a href="http://en.wikipedia.org/wiki/EasyBCD"&gt;EasyBCD&lt;/a&gt;, &lt;font face="DejaVu Sans"&gt;可以通过这个软件来安装 &lt;/font&gt;Nero Grub, &lt;font face="DejaVu Sans"&gt;你可以理解为以前在 &lt;/font&gt;windows &lt;font face="DejaVu Sans"&gt;上安装的&lt;/font&gt;grub.  &lt;/p&gt; &lt;ol&gt;&lt;li&gt;&lt;p style="margin-bottom:0in"&gt;&lt;font face="DejaVu Sans"&gt;下载 	&lt;/font&gt;EasyBCD 2.x&lt;/p&gt; 	&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom:0in"&gt;&lt;font face="DejaVu Sans"&gt;安装到 	&lt;/font&gt;windows 7&lt;/p&gt; 	&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom:0in"&gt;"Add New Entry" -"&lt;em&gt;Nero 	Grub&lt;/em&gt;" -" Install", &lt;font face="DejaVu Sans"&gt;选择 	"&lt;/font&gt;configure"&lt;font face="DejaVu Sans"&gt;时可以修改 &lt;/font&gt;grub 	&lt;font face="DejaVu Sans"&gt;的配置文件 &lt;/font&gt;menu.lst&lt;/p&gt; &lt;/li&gt;&lt;/ol&gt; &lt;p style="margin-bottom:0in;margin-left:40px"&gt;&lt;font face="DejaVu Sans"&gt;&lt;b&gt;注意&lt;/b&gt;：这里需要用到你之前备份的 &lt;/font&gt;grub.cfg &lt;font face="DejaVu Sans"&gt;来从 &lt;/font&gt;nero grub &lt;font face="DejaVu Sans"&gt;引导 &lt;/font&gt;Fedora &lt;font face="DejaVu Sans"&gt;的内核和 &lt;/font&gt;ramdisk.&lt;/p&gt;  &lt;p style="margin-bottom:0in"&gt;&lt;font face="DejaVu Sans"&gt;我的修改如下：&lt;/font&gt;&lt;/p&gt; &lt;p style="margin-bottom:0in;margin-left:40px;font-family:courier new,monospace"&gt;#Fedora 16 &lt;/p&gt; &lt;p style="margin-bottom:0in;margin-left:40px;font-family:courier new,monospace"&gt;title		Fedora 16 (Verne) &lt;/p&gt; &lt;p style="margin-bottom:0in;margin-left:40px;font-family:courier new,monospace"&gt;root		(hd0,1) 		# 第一块硬盘的第二个分区，即 sda2, 但是这里grub 只能识别 hd0&lt;/p&gt; &lt;p style="margin-bottom:0in;margin-left:40px;font-family:courier new,monospace"&gt;kernel		/boot/vmlinuz-3.1.6-1.fc16.x86_64 root=/dev/sda2 ro quiet splash &lt;/p&gt; &lt;p style="margin-bottom:0in;margin-left:40px;font-family:courier new,monospace"&gt;initrd		/boot/initramfs-3.1.6-1.fc16.x86_64.img&lt;/p&gt;  &lt;p style="margin-bottom:0in"&gt;&lt;font face="DejaVu Sans"&gt;保存之后重新启动，你就会在 &lt;/font&gt;windows boot manager &lt;font face="DejaVu Sans"&gt;里发现新创建的启动项 "&lt;/font&gt;Nero Bootloader"&lt;font face="DejaVu Sans"&gt;，点击就进入了 &lt;/font&gt;Nero grub &lt;font face="DejaVu Sans"&gt;的启动项。&lt;/font&gt;&lt;/p&gt; &lt;p style="margin-bottom:0in"&gt;&lt;font face="DejaVu Sans"&gt;这里你可以增加其他的&lt;/font&gt;Linux &lt;font face="DejaVu Sans"&gt;系统启动项。&lt;/font&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-2280039563840907213?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/2280039563840907213/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=2280039563840907213' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/2280039563840907213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/2280039563840907213'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2012/01/grub2-ntldr-windows-fedora.html' title='从 Grub2 切换到 NTLDR 实现引导 windows 和 Fedora 双系统'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-7810821188083259788</id><published>2011-12-19T10:46:00.000+08:00</published><updated>2011-12-23T09:08:47.167+08:00</updated><title type='text'>Rational Team Concert v3.0.1 client on Ubuntu Oneiric</title><content type='html'>As an RTC user on Ubuntu 11.10, I'm sorry to hear that "&lt;a href="https://launchpad.net/ubuntu/oneiric/i386/xulrunner-1.9.2/1.9.2.17+build3+nobinonly-0ubuntu1"&gt;Canonical decided to remove the xulrunner-1.9.2 in Oneiric and further versions&lt;/a&gt;" although I know it's the right direction to remove such individual gecko runtime because Gnome 3 is heavily using gecko.&lt;br /&gt;&lt;br /&gt;But work is still there since RTC v3.0.1 still depends on xulrunner-1.9.2. So we need it runs on Oneiric. Follow these step and proceed (assuming you run i386 version).&lt;br /&gt;&lt;br /&gt;download &lt;a href="https://jazz.net/downloads/rational-team-concert/releases/3.0iFix1/RTC-Client-p2Repo-3.0iFix1.zip"&gt;RTC v3.0 iFix1&lt;/a&gt; (e.g., /home/shawnzhu/Downloads/) once you logged into jazz.net&lt;br /&gt;&lt;ol&gt;&lt;li&gt;unzip RTC client plugins&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;mkdir -p /home/shawnzhu/eclipse_plugins/&lt;br /&gt;unzip /home/shawnzhu/Downloads/RTC-Eclipse-Client-repo-3.0.1.1.zip&lt;br /&gt;mv /home/shawnzhu/Downloads/im/repo/rtc-client-offering /home/shawnzhu/eclipse_plugins/&lt;br /&gt;cd /home/shawnzhu/eclipse_plugins/rtc-client-offering&lt;br /&gt;mv offering-repo/ eclipse/&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;install eclipse (ignore this step if you installed eclipse already)&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;sudo apt-get install eclipse-platform eclipse-emf&lt;br /&gt;# if you runs ubuntu 1110, you need download xulrunner 1.9.2 from launchpad since it's exlcuded&lt;br /&gt;wget http://launchpadlibrarian.net/70321863/xulrunner-1.9.2_1.9.2.17%2Bbuild3%2Bnobinonly-0ubuntu1_i386.deb&lt;br /&gt;sudo dpkg -i xulrunner-1.9.2_1.9.2.17+build3+nobinonly-0ubuntu1_i386.deb&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;step3: install RTC v3.0.1 into eclipse in the link style:&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;sudo echo "path=/home/shawnzhu/eclipse_plugins/rtc-client-offering" &amp;gt; /usr/lib/eclipse/links/rtc-v3.link&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;# if using x86_64, you need to echo this to /usr/lib64/eclipse/links/rtc-v3.link&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-7810821188083259788?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/7810821188083259788/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=7810821188083259788' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7810821188083259788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7810821188083259788'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2011/12/rational-team-concert-v301-client-on.html' title='Rational Team Concert v3.0.1 client on Ubuntu Oneiric'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-3458124387221581832</id><published>2011-11-19T21:59:00.001+08:00</published><updated>2011-11-19T22:08:18.024+08:00</updated><title type='text'>how to change fedora16 login background</title><content type='html'>I searched some hits from google but no luck. so I dig into the file system and my guess works.&lt;br /&gt;&lt;br /&gt;it uses /usr/share/backgrounds/verne/default/verne.xml to config login screen picture in fedora16. so you can change it to use your favouriate picture instead of yours.&lt;br /&gt;&lt;br /&gt;I uses wide screen of  thinkpad t420 so my change is:&lt;br /&gt;&lt;br /&gt;15c15&lt;br /&gt;&amp;lt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;size width="1920" height="1200"&amp;gt;/usr/share/backgrounds/verne/default/wide/keltern.png&amp;lt;/size&amp;gt;&lt;br /&gt;---&lt;br /&gt;&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;size width="1920" height="1200"&amp;gt;/usr/share/backgrounds/verne/default/wide/verne.png&amp;lt;/size&amp;gt;&lt;br /&gt;&lt;br /&gt;Please logout and re-login again after this change then enjoy the it :)&lt;br /&gt;-- &lt;br /&gt;朱可&lt;br /&gt;&lt;a href="http://www.netvibes.com/shawnzhu"&gt;http://www.netvibes.com/shawnzhu&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-3458124387221581832?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/3458124387221581832/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=3458124387221581832' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/3458124387221581832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/3458124387221581832'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2011/11/how-to-change-fedora16-login-background.html' title='how to change fedora16 login background'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-5980464901234145507</id><published>2011-11-10T21:53:00.001+08:00</published><updated>2011-11-11T09:59:13.318+08:00</updated><title type='text'>开源 dojo toolkit 编程广场小程序</title><content type='html'>受&amp;nbsp;&lt;a href="http://code.google.com/apis/ajax/playground/"&gt;google code playground&lt;/a&gt;&amp;nbsp;项目的启发，我开发了这个练习 dojo toolkit 编程的小程序：&lt;br /&gt;&lt;br /&gt;&lt;a href="https://github.com/shawnzhu/Ajax-web-development-education/"&gt;https://github.com/shawnzhu/Ajax-web-development-education/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;在 &lt;a href="https://www.google.com/calendar/embed?src=iivv60eitlrn0dvn974hmo37dk%40group.calendar.google.com&amp;amp;ctz=Asia/Hong_Kong"&gt;WD321 课程&lt;/a&gt;的练习课上，学生们的最初接触 Ajax 编程，又遇上dojotoolkit 这样大个的程序库，起步的确有些困难：缺少基本的服务器端编程经验，大量使用JavaScript，不甚了解&amp;nbsp;HTTP 协议的基本内容。&lt;br /&gt;&lt;br /&gt;这个程序仅有一个 HTML 页面，dojo library 全部由 google api 的 CDN 来提供，只要打开就可以自动从网络加载。&lt;br /&gt;&lt;br /&gt;举例来说：&lt;br /&gt;在文本域中填入以下代码（在 blogger 的编辑器里加代码真不容易！）：&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-C0uFqyurmAY/TryBAse87fI/AAAAAAAAABY/AuBagA4FpK4/s1600/code_sample.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="135" src="http://3.bp.blogspot.com/-C0uFqyurmAY/TryBAse87fI/AAAAAAAAABY/AuBagA4FpK4/s640/code_sample.png" width="646" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;点击 "run" 按钮，你就可以立即看到结果：一个正常工作的 dijit 风格的按钮。如果你打开 Firebug 还可以看到 dojo 如何加载后台的资源。&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-5980464901234145507?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/5980464901234145507/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=5980464901234145507' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/5980464901234145507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/5980464901234145507'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2011/11/dojo-toolkit.html' title='开源 dojo toolkit 编程广场小程序'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-C0uFqyurmAY/TryBAse87fI/AAAAAAAAABY/AuBagA4FpK4/s72-c/code_sample.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-828565667174246948</id><published>2011-11-07T22:30:00.002+08:00</published><updated>2011-11-07T22:57:43.085+08:00</updated><title type='text'>用2的方式去教2的东西</title><content type='html'>最近参与一个大学合作课程，使用4天时间完成一门 &lt;a href="https://www-304.ibm.com/jct03001c/services/learning/ites.wss/us/en?pageType=course_description&amp;amp;courseCode=WD321"&gt;Ajax and Web 2.0 Application Development&lt;/a&gt; 课程，主要目标为软件学院的学生。&lt;br /&gt;第一天课毕，我的提问包括：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;最早触网时间？&lt;/li&gt;&lt;li&gt;最常使用的网络工具？浏览器、qq、社交网站等等&lt;/li&gt;&lt;li&gt;智能手机的操作系统？iOS? Android? (我很惊讶今天的一年级研究生居然大部分还在用Symbian...) 看来是 @heqian 这种异类的 Apple 教徒还让我以为大家都在赶时髦&lt;/li&gt;&lt;/ul&gt;从回答问题的情况来看，把Web开发那么多内容压缩到4天时间还真是紧凑，还不包括2天时间的上机实验。大家感兴趣的话题集中在翻墙、未来职位、技术探讨等等，想找一些 hacker 级别的学生还不那么容易。&lt;br /&gt;我在学校看到很多人已经习惯抱着笔记本上自习了，所以奇怪还有“上机实验”的部分。课后我才发现，其实大家还是传统上课听讲的课程模式，所以我打算尝试2一些：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;课程资料和参考内容：&lt;a href="https://docs.google.com/document/d/1DKp-PEfrZJ6y8_wYHSMu420doUvt8gqgtu2jkqbxWag/edit"&gt;google docs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;google calendar 做课表：&lt;/li&gt;&lt;/ul&gt;&lt;iframe frameborder="0" height="600" scrolling="no" src="https://www.google.com/calendar/embed?src=iivv60eitlrn0dvn974hmo37dk%40group.calendar.google.com&amp;amp;ctz=Asia/Hong_Kong" style="border: 0;" width="550"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;本博客做内容发布&lt;/li&gt;&lt;li&gt;微博答疑: &lt;a href="http://twitter.com/shawnzhu"&gt;@shawnzhu&lt;/a&gt; #WD321 或新浪微博: &lt;a href="http://t.sina.cn/xynzhu"&gt;@xynzhu&lt;/a&gt; #WD321#&lt;/li&gt;&lt;/ul&gt;希望这种方式能够身体力行，课程上体验 Web2.0&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-828565667174246948?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/828565667174246948/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=828565667174246948' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/828565667174246948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/828565667174246948'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2011/11/22.html' title='用2的方式去教2的东西'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-3182372981667284502</id><published>2011-09-25T18:43:00.004+08:00</published><updated>2011-09-25T18:43:59.821+08:00</updated><title type='text'>使用Linux Traffic Control控制带宽</title><content type='html'>&lt;a href="http://tldp.org/HOWTO/html_single/Traffic-Control-HOWTO/"&gt;Linux Traffic Control&lt;/a&gt; 是内核直接提供的网络功能，用来管理和控制包传输过程，在2.2和2.4内核中已经成为非常成熟的网络质量管理技术。以下用一个非常简单的例子说明：&lt;br /&gt;* 场景：控制网卡eth0上文件下载的带宽至512kbit/s&lt;br /&gt;&lt;br /&gt;step1: 为eth0创建默认的包传输控制队列：&lt;br /&gt;#&amp;nbsp;tc qdisc add dev eth0 root handle 1:0 htb&lt;br /&gt;&lt;br /&gt;step2: 创建一个质量控制分类：限速 256 kbit/s, 最大 512 kbit/s&lt;br /&gt;#&amp;nbsp;tc class add dev eth0 parent 1:1 classid 1:6 htb rate 256kbit ceil 512kbit&lt;br /&gt;&lt;br /&gt;step3: 在 eth0 上创建一个规则来应用刚才创建好的分类。这里简单使用目的地址来测试&lt;br /&gt;#&amp;nbsp;tc filter add dev eth0 parent 1:0 protocol ip prio 5 u32 match ip dst &lt;i&gt;YOUR-HOST-IP&lt;/i&gt; flowid 1:6&lt;br /&gt;&lt;br /&gt;查看eth0上规则是否创建成功：&lt;br /&gt;#&amp;nbsp;tc filter show dev eth0&lt;br /&gt;&lt;br /&gt;好了，下来你可以用另一台机器试试效果：&lt;br /&gt;# wget http://YOUR-HOST-IP/sample-file&lt;br /&gt;&lt;br /&gt;你可以用 iptraf 来查看下载速度，是不是没那么快了？如果要取消刚才创建的规则，也很容易：&lt;br /&gt;#&amp;nbsp;tc filter del dev eth0 parent 1:0 protocol ip prio 5 u32 match ip dst&amp;nbsp;&lt;i&gt;YOUR-HOST-IP&lt;/i&gt;&amp;nbsp;flowid 1:6&lt;br /&gt;&lt;br /&gt;如果你持续查看下载速度的话，可以非常直观的看到速度立即回复到了之前的水平 :)&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-3182372981667284502?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/3182372981667284502/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=3182372981667284502' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/3182372981667284502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/3182372981667284502'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2011/09/linux-traffic-control.html' title='使用Linux Traffic Control控制带宽'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-4547592380795931068</id><published>2011-03-12T14:47:00.001+08:00</published><updated>2011-03-12T14:47:53.908+08:00</updated><title type='text'>dojox.grid.DataGrid tricks: Quickly enable system context menu</title><content type='html'>I&amp;#39;m fighting with dojox.grid.DataGrid event system and found it&amp;#39;s really complicated to hack its event propagation because it&amp;#39;s pluggable design.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;If you want to use system context menu on DataGrid, try this code:&lt;/div&gt; &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;dojo.mixin(dijit.byId(&amp;quot;your-datagrid&amp;quot;).focus, {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;doContextMenu: function(e){}&lt;/div&gt;&lt;div&gt;});&lt;/div&gt;&lt;div&gt; &lt;br&gt;&lt;/div&gt;Then it brings the browser context menu when you right click mouse on your data grid :)&lt;br&gt;-- &lt;br&gt;朱可&lt;br&gt;&lt;a href="http://www.netvibes.com/shawnzhu"&gt;http://www.netvibes.com/shawnzhu&lt;/a&gt;&lt;br&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-4547592380795931068?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/4547592380795931068/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=4547592380795931068' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/4547592380795931068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/4547592380795931068'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2011/03/dojoxgriddatagrid-tricks-quickly-enable.html' title='dojox.grid.DataGrid tricks: Quickly enable system context menu'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-1405188798252098824</id><published>2011-03-09T13:30:00.001+08:00</published><updated>2011-03-09T13:30:12.624+08:00</updated><title type='text'>从硬盘安装 RedHat 6 到第二块硬盘</title><content type='html'>为 Thinkpad 多加了块硬盘，这样终于可以不用卸载 ubuntu 安装 Redhat 了。&lt;div&gt;目的很简单，我需要ubuntu 来办公， Redhat 来做开发，而且需要两个 boot loader，这样任何一台硬盘坏掉都还可以启动 （CD-ROM的位置被第二块硬盘占了）。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;安装步骤：&lt;/div&gt;&lt;div&gt;1. 启动 ubuntu, 在第一块硬盘上准备一个足够放下 RHEL6 iso 文件的分区，比如可以使用挂载 /home 的分区 /dev/sda7&lt;/div&gt; &lt;div&gt;2. 将 RHEL6.iso 镜像文件放在 /home 文件夹下&lt;/div&gt;&lt;div&gt;3. 使用 Archive Manager 从 RHEL6.iso 中提取 vmlinuz 和 initrd.img 文件。这两个文件放在 /home 目录下任何子目录均可&lt;/div&gt;&lt;div&gt;4. 从 RHEL6.iso 提取 /images 目录并且保存在 /home 目录下&lt;/div&gt;&lt;div&gt;5. 重启： # reboot&lt;/div&gt;&lt;div&gt; &lt;br&gt;&lt;/div&gt;&lt;div&gt;6. 在机器重启的时候按住 Shift 键，这样就可以进入GRUB的操作系统选择界面，当你看到GRUB选项的时候，键入&amp;quot;c&amp;quot;输入如下命令从分区 /dev/sda7 引导安装程序&lt;/div&gt;&lt;div&gt;grub&amp;gt; linux (hd0,7)/vmlinuz&lt;/div&gt;&lt;div&gt;grub&amp;gt; initrd (hd0,7)/initrd.img&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt; 如果提示找不到文件，请确认分区编号是否输入正确&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;7. 成功引导安装程序后，会提示选择语言和键盘类型，选择 English 和 US 即可&lt;/div&gt;&lt;div&gt;8. 选择从 Hard Drive 加载 install image&lt;/div&gt;&lt;div&gt;9. 选择 /dev/sda7, 然后输入 / 作为查找路径&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;一切顺利的话你就可以进入 RHEL6 的安装过程了。&lt;/div&gt; &lt;div&gt;提示：如果提示找不到install image, 先确认步骤4中提取的 /images 文件夹中的 install.img 是否成功提取，并且要确保 RHEL6.iso 放在分区 /dev/sda7的根目录下。 &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br clear="all"&gt;建议将 RHEL6 的 boot loader 安装在第二块硬盘上，这样你可以在开机时选择 F12 进入选择启动设备，这时选择第二块硬盘就可以直接引导 RHEL6了。你也可以选择修改 Ubuntu 的 /boot/grub/grub.cfg 来使用 Ubuntu 的 bootloader 引导 RHEL6 启动。&lt;/div&gt; &lt;div&gt;&lt;br&gt;-- &lt;br&gt;朱可&lt;br&gt;&lt;a href="http://www.netvibes.com/shawnzhu"&gt;http://www.netvibes.com/shawnzhu&lt;/a&gt;&lt;br&gt; &lt;/div&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-1405188798252098824?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/1405188798252098824/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=1405188798252098824' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/1405188798252098824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/1405188798252098824'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2011/03/redhat-6.html' title='从硬盘安装 RedHat 6 到第二块硬盘'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-3689918741388198325</id><published>2010-11-28T20:07:00.006+08:00</published><updated>2010-11-28T21:31:30.689+08:00</updated><title type='text'>Run sinatra application with Apache httpd server over scgi</title><content type='html'>It's really painful when the README file told me the code works but actually not. This is what I was fighting for running a &lt;a href="http://rack.rubyforge.org/"&gt;rack&lt;/a&gt; based application on Apache2 over &lt;a href="http://en.wikipedia.org/wiki/Simple_Common_Gateway_Interface"&gt;scgi&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Background: On Friday night, I brought a web scalability problem from office that mainly on ruby because we confirmed &lt;a href="http://en.wikipedia.org/wiki/WEBrick"&gt;Webrick&lt;/a&gt; sucks and can't work well in REAL production (aka, concurrent users). On gtalk, &lt;a href="http://facebook.com/kevinye"&gt;Kevin&lt;/a&gt; provided a number of solutions on scaling out Rails application like lighttpd+fastcgi and &lt;a href="http://www.modrails.com/"&gt;mod_rails&lt;/a&gt;. But I'm using &lt;a href="http://www.sinatrarb.com/"&gt;sinatra&lt;/a&gt; + rack. Finally I approached to scgi which is a stable and high-performance solution.&lt;br /&gt;&lt;br /&gt;Here's the steps on centos5.5 (things are getting easier on ubuntu but centos is my production use):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Install apache2:&lt;pre&gt;#yum install httpd httpd-devel&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Install mod_scgi:&lt;pre&gt;#wget http://python.ca/scgi/releases/scgi-1.14.tar.gz&lt;br /&gt;#cd scgi-1.14/apache2&lt;br /&gt;#/sbin/apxs -i -c mod_scgi.c&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Install ruby-scgi (assume you've got necessary gems like sinatra and rack):&lt;pre&gt;#gem install scgi&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Compose a simple sinatra app for example:&lt;pre&gt;# /var/www/sample-app/MyApp.rb&lt;br /&gt;require 'rubygems'&lt;br /&gt;require 'sinatra/base'&lt;br /&gt;&lt;br /&gt;class MyApp &amp;lt; Sinatra::Base&lt;br /&gt; set :sessions, true&lt;br /&gt; set :foo, 'bar'&lt;br /&gt; set :server, %w[scgi]&lt;br /&gt;&lt;br /&gt; get '/query/' do&lt;br /&gt;   'How you doin'?'&lt;br /&gt; end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;compose a config.ru for rack:&lt;pre&gt;require 'rack'&lt;br /&gt;require 'MyApp'&lt;br /&gt;&lt;br /&gt;MyApp.run! :port =&gt; 9090&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Note: you must create a 'log'directory before running rackup:&lt;pre&gt;#mkdir /var/www/sample-app/log&lt;br /&gt;#rackup config.ru &amp;amp;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Create an conf file for your apache2:&lt;pre&gt;&lt;br /&gt;# /etc/httpd/conf.d/MyApp.conf&lt;br /&gt;LoadModule scgi_module modules/mod_scgi.so&lt;br /&gt;&lt;br /&gt;# Set up a location to be served by an SCGI server process&lt;br /&gt;SCGIMount /query/ 127.0.0.1:9090&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;location "/query"&amp;gt;&lt;br /&gt; # Enable SCGI delegation&lt;br /&gt; SCGIHandler On&lt;br /&gt; # Delegate requests in the "/query" path to daemon on local server, port 9090&lt;br /&gt; SCGIServer 127.0.0.1:9090&lt;br /&gt;&amp;lt;/location&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Restart your apache2 then issuing request to http://localhost/query/&lt;/li&gt;&lt;/ol&gt;Enjoy :)&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-3689918741388198325?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/3689918741388198325/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=3689918741388198325' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/3689918741388198325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/3689918741388198325'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2010/11/run-sinatra-application-with-apache.html' title='Run sinatra application with Apache httpd server over scgi'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-2099412902887355062</id><published>2010-08-03T22:05:00.001+08:00</published><updated>2010-08-03T22:05:28.004+08:00</updated><title type='text'>富有责任感的工程师们</title><content type='html'>故事背景：周一晚上有场音乐演出，准备邀请同事们一同去。&lt;div&gt;&lt;br&gt;&lt;div&gt;我：今天晚上在XX区YY路ZZ厅有场精彩的音乐演出，大家一起去吧！&lt;/div&gt;&lt;div&gt;（以下 A~F均为工程师同事）&lt;/div&gt;&lt;div&gt;A君：还看演出？产品 release 压力好大...不去了&lt;/div&gt;&lt;div&gt;B君：太远...不去了（此君家距离演出地点乘20分钟直达地铁即可到达）&lt;/div&gt;&lt;div&gt;C君：有话剧吗？有话剧我就去。...有话剧吗？&lt;/div&gt; &lt;div&gt;D君：这种音乐我不熟...&lt;/div&gt;&lt;div&gt;E君：有美女吗？...咳，我今晚有事儿，晚上要开电话会议&lt;/div&gt;&lt;div&gt;F君：我要2张票！......几点结束？我晚上9点要和 GHI 搞定那个 JJ 事...&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;（以下K和L均为实习生同事）&lt;/div&gt;&lt;div&gt;K君：哇有演出唉，够狂野吗？... 同去同去&lt;/div&gt;&lt;div&gt;L君：好啊...不过还要你请我们看演出...门票我来付吧...&lt;/div&gt; &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;富含责任感的工程师们为了所谓的工作放弃了欣赏音乐、放松紧张心情的机会，实在令人钦佩。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;不禁回忆起大学时同宿舍的兄弟们为了赶一场学生剧团的演出前排座位，不惜压缩必修课程、自习时间以及实验进度，匆匆忙带着晚餐骑车赶往音乐厅。这种事情在以工作为己任的工程师们身上极少看到了。也许我的理解有误，也许他们在紧张的工作中找到了刺激，能够迸发超越艺术体验的激情，看来我是缺少这种刺激的责任感了。&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-2099412902887355062?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/2099412902887355062/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=2099412902887355062' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/2099412902887355062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/2099412902887355062'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2010/08/blog-post.html' title='富有责任感的工程师们'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-75098341741621174</id><published>2010-07-22T08:56:00.002+08:00</published><updated>2010-07-22T09:04:11.863+08:00</updated><title type='text'>30分钟的讲座：设计开发实效 Web2.0 应用程序</title><content type='html'>月初给中科院的夏季学期系列讲座之一：&lt;a href="http://www.slideshare.net/shawnzhu/web20-4688085"&gt;设计开发实效 Web2.0 应用程序&lt;/a&gt;&lt;br /&gt;&lt;div style="width:425px" id="__ss_4688085"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/shawnzhu/web20-4688085" title="设计开发实效 Web2.0 应用程序"&gt;设计开发实效 Web2.0 应用程序&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse4688085" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=pragmaticwebapplicationdevelopmentzhuke20100706-100705225300-phpapp02&amp;amp;stripped_title=web20-4688085"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed name="__sse4688085" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=pragmaticwebapplicationdevelopmentzhuke20100706-100705225300-phpapp02&amp;amp;stripped_title=web20-4688085" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;这里是一同去的成大师的讲座：&lt;a href="http://www.cheng-fu.com/node/129"&gt;Ajax应用开发最佳实践&lt;/a&gt;&lt;/p&gt;&lt;p&gt;PS: 幻灯片模板上的图片是米兰LV店门前漂亮的地板，感谢远在意大利的袁瑶同学提供的照片。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-75098341741621174?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/75098341741621174/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=75098341741621174' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/75098341741621174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/75098341741621174'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2010/07/30-web20.html' title='30分钟的讲座：设计开发实效 Web2.0 应用程序'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-7567058940813349249</id><published>2010-03-20T13:12:00.001+08:00</published><updated>2010-03-20T13:12:11.854+08:00</updated><title type='text'>JSMin 的道德大战</title><content type='html'>&lt;span id="goog_1269055973562"&gt;&lt;/span&gt;&lt;span id="goog_1269055973563"&gt;&lt;/span&gt;&lt;a href="/"&gt;&lt;/a&gt;本人是&lt;a href="http://www.crockford.com/javascript/jsmin.html"&gt;JSMin&lt;/a&gt;的用户，无非用它来压缩 JavaScript 代码的规模，从而减少数据传输量、提高浏览器解释代码的性能，却从未认真阅读过其版权声明，实在汗颜。&lt;div&gt; 有趣之处在于，Web 开发领域使用JSMin富有争议，引起开发者、互联网公司和开放源代码传教士之间的精彩道德大战。让我先从其版权声明讲起。&lt;div&gt;&lt;br clear="all"&gt;JSMin的版权声明从约束力最小的&lt;a href="http://en.wikipedia.org/wiki/MIT_License"&gt;MIT许可证&lt;/a&gt;修改而来，而MIT许可证的声明长达162字，但是大意只有两个：&lt;div&gt;&lt;ol&gt;&lt;li&gt;不管你如何发布软件，你要在所有的拷贝中加入本声明&lt;/li&gt; &lt;li&gt;被发布的软件仅包括软件本身，不承担任何附加担保、义务和责任&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;除了抽象的普遍性和无责，相当于什么也没说。好比一个开发者决定开放自己编写的软件代码而又不知道选择什么许可证时，用MIT许可证再合适不过了。采用MIT许可证的软件如著名的&lt;a href="http://www.prototypejs.org/"&gt;prototype.js&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;后来 JSMin 的作者 &lt;a href="http://www.crockford.com/"&gt;Crokford&lt;/a&gt;&amp;nbsp;发布它时，在MIT许可证上加了9个字，后来正是这富有争议的9个字，给了我们精彩的故事：&lt;/div&gt; &lt;div&gt;&amp;ldquo;The Software shall be used for Good, not Evil.&amp;rdquo;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;因为它以MIT许可证作为基础，所以以后在JSMin基础上开发的软件都把这段文字包括在自己的许可证里。于是用到JSMin的很多代码包括&lt;a href="http://en.wikipedia.org/wiki/Etherpad"&gt;etherpad&lt;/a&gt;, &lt;a href="http://code.google.com/p/jsmin-php/"&gt;jsmin-php&lt;/a&gt; 都做了如此&amp;ldquo;不做恶&amp;rdquo;的声明。在 etherpad 被谷歌收购之后，它的开放源代码版本不得不去掉使用JSMin的部分，因为这9个字意味着&lt;a href="http://wonko.com/post/jsmin-isnt-welcome-on-google-code"&gt;该软件可能不免费&lt;/a&gt;，与googlecode的&lt;a href="http://investor.google.com/conduct.html"&gt;使用协议&lt;/a&gt;有冲突。于是如果你想要把代码通过 &lt;a href="http://googlecode.com"&gt;googlecode.com&lt;/a&gt; 发布，那么你就不能使用和JSMin相关的代码。想起来哪家公司说过&amp;ldquo;&lt;a href="http://en.wikipedia.org/wiki/Don%27t_be_evil"&gt;Don&amp;#39;t be evil&lt;/a&gt;&amp;rdquo;吗？&lt;/div&gt; &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;不光是 JSMin, 使用&lt;a href="http://www.jslint.com/"&gt;JSLint&lt;/a&gt;也没戏了。接下来是应用它们的各式互联网应用程序，你将不能用这些道德代码去开发&amp;mdash;&amp;mdash;因为你无法担保基于Web的功能不被其他人用来做坏事，如果你想担保，那么至少要加入这段修改过的MIT许可证&amp;mdash;&amp;mdash;实际上如我一般在商业公司里工作的程序员都做不到。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;有人想要把这段文字从许可证里去掉。但是修改许可证可不是小事，而且去掉这些文字的行为违反了MIT许可证的第一条。所以很多JSMin的用户都不同意这种做法（除了&lt;a href="http://fmarcia.info/jsmin/jsmin.js"&gt;JSMin.js&lt;/a&gt;的作者，他用JSMin处理了自己编写的jsmin.js代码，于是这段声明就没有了），于是他们不得不把软件从&lt;a href="http://googlecode.com"&gt;googlecode.com&lt;/a&gt;的代码仓库里面迁出来。&lt;/div&gt; &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;看完&lt;a href="http://wonko.com/post/jsmin-isnt-welcome-on-google-code"&gt;这篇&lt;/a&gt;博文里Crokford调侃某大公司律师的文字之后，我发现得和JSMin说再见了。&lt;/div&gt;&lt;/div&gt;&lt;br&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-7567058940813349249?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/7567058940813349249/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=7567058940813349249' title='9 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7567058940813349249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7567058940813349249'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2010/03/jsmin.html' title='JSMin 的道德大战'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-5898390259214705702</id><published>2010-01-25T00:14:00.001+08:00</published><updated>2010-01-25T00:14:55.205+08:00</updated><title type='text'>十年过去，我们依旧为足球电视游戏疯狂 - H博士传奇</title><content type='html'>2010年1月某寒冷的夜晚，巴西烤肉店。&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;H博士（刚刚拿到学位即将毕业）兴奋地说：等我工作后，先要整台&lt;a href="/"&gt;&lt;span id="goog_1264344257415"&gt;&lt;/span&gt;wii&lt;span id="goog_1264344257416"&gt;&lt;/span&gt;&lt;/a&gt;+wii fit,这样就可以每天下班在家玩足球游戏了！&lt;/div&gt;&lt;div&gt;我：我还以为你要说为祖国的强大贡献力量呢，怎么还想着游戏机？&lt;/div&gt; &lt;div&gt;H博士：嗯~~~，哇哈哈哈~~~，为什么不呢？&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;于是，也许是烤肉吃多了，恍惚间我想起了10年前当时的H博士和我在火车上激烈讨论的场景，事情是这样的...&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;怀揣着某大学录取通知书，心里略有兴奋，可是一路上的讨论主要围绕着脱离父母后如何自由地玩游戏和踢球云云。当讨论完若干关于宇宙和整个人类的话题后，我们的结论是，最伟大的梦想不过于拥有一台电视游戏机（十年前流行的PlayStation）和著名的&lt;a href="http://bbs.winning11cn.com/"&gt;实况足球&lt;/a&gt;游戏。十年后，也就是现在，这个我们当初共同的梦想就要被H博士抢先实现了！而且是数次游戏技术革命后的升级版！想起这一点的确有些激动，虽然听起来有些傻。&lt;/div&gt; &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;实际地说，这对于一个享受国家补助、2009年涨过工资的博士生来说并不困难。一台 wii 并不贵，3个月补助足够了，于是H博士用刚刚涨过的补助去中关村买了一台破解的 &lt;a href="http://en.wikipedia.org/wiki/Psp3000"&gt;PSP3000&lt;/a&gt;. 我没开玩笑，考虑到他去年用积蓄的补助购置了两台顶级 thinkpad 的情况下，用余钱买PSP非常令人敬佩。&lt;/div&gt; &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;在H博士动用某大学某著名实验室多台计算工作站在&lt;a href="http://games.sina.com.cn/zhuanqu/fwm/indexpage.shtml"&gt;世界足球经理&lt;/a&gt;这样的游戏上通过并行计算处理整个联赛的球队交易数据之后，我从来没有公开说过H博士沉迷于游戏（数年前当我为宿舍攒第一台电脑第一次成功开机，他就霸占了超过30多个小时）。现在他毕业了，掌握着将卫星送上天、计算大楼爆破以及用多少力才能撕裂蜻蜓翅膀的技术，最重要的是，多年来怀揣着单纯的游戏梦想，生生不息，激情依旧。&lt;/div&gt; &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;高中时代第一次在游戏厅看到中学时代的H博士，没错，他在玩实况足球；&lt;/div&gt;&lt;div&gt;高考最后一门考试结束，我和死党们狂奔到游戏厅刚坐下没多久，就看到了那时的H博士紧跟而来；&lt;/div&gt;&lt;div&gt;大学时他为同学们无偿提供关于实况足球的各种知识：从PC上的PS模拟器，到游戏程序、手柄驱动程序、学习教程以及若干经典bug；&lt;/div&gt;&lt;div&gt;后来他去了某系某实验室，据称那里有性能强劲的计算工作站......很聪明的选择；&lt;/div&gt; &lt;div&gt;再后来博士生补助涨了，大家也都知道他买了&lt;a href="http://en.wikipedia.org/wiki/PSP"&gt;什么&lt;/a&gt;；&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;H博士决定离开我们求学的这座城市，今晚吃完烤肉打着饱嗝我却突然觉得少了什么，有些失落......我们是否还梦想着十年后的游戏主机？但愿H博士还会续写他的传奇。&lt;/div&gt;&lt;div&gt;&lt;br&gt;-- &lt;br&gt;朱可&lt;br&gt;&lt;a href="http://www.netvibes.com/shawnzhu"&gt;http://www.netvibes.com/shawnzhu&lt;/a&gt;&lt;br&gt;  &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-5898390259214705702?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/5898390259214705702/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=5898390259214705702' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/5898390259214705702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/5898390259214705702'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2010/01/h.html' title='十年过去，我们依旧为足球电视游戏疯狂 - H博士传奇'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-6823396442030355778</id><published>2010-01-04T22:00:00.001+08:00</published><updated>2010-01-04T22:00:38.954+08:00</updated><title type='text'>节省移动电话话费的方法</title><content type='html'>&lt;ul&gt;&lt;li&gt;skype 包月卡拨打长途。在android手机上安装 skype lite来拨打电话，这样每次拨打按照双倍时长计算，只要你能买到20元以下的400分钟包月卡，话费就可以降低到0.10元/分钟以下；&lt;/li&gt;&lt;li&gt;&lt;a href="http://Gizmo5.com"&gt;Gizmo5.com&lt;/a&gt; + Sipphone （&lt;a href="http://sipdroid.org/"&gt;Sipdroid&lt;/a&gt; 或 &lt;a href="http://www.fring.com"&gt;Fring&lt;/a&gt;）打国际长途。前者拨打国内电话的费率是$0.02/分钟，用3G网络接听，语音质量很好。&lt;/li&gt; &lt;li&gt;&lt;a href="http://google.com/voice"&gt;Google Voice&lt;/a&gt; + &lt;a href="http://gizmo5.com"&gt;Gizmo5&lt;/a&gt; + Sipphone ：如果你需要频繁地给在美国的朋友打电话，这个组合最合适。Google Voice 用来呼叫电话和转接至 Gizmo5, Gizmo5 可以用来将电话呼叫转接到 SIP，最后你用 Sipphone 接听就好了。资费按照你的手机网络流量计算。&lt;br&gt; &lt;/li&gt;&lt;/ul&gt;这里有一些参考也许有所帮助：&lt;font size="2"&gt;&lt;br&gt;&lt;a href="http://laiba.tianya.cn/laiba/CommMsgs?cmm=766&amp;amp;tid=2688678636453447832"&gt;Google Voice呼转到中国电话的五种方法&lt;/a&gt;&lt;br&gt;&lt;a href="http://www.google.org.cn/posts/how-to-signup-google-voice-in-china-mainland.html"&gt;国内注册 Google Voice 的方法&lt;/a&gt;&lt;br&gt; &lt;/font&gt;&lt;h1 style="font-weight: normal;" class="fs-post-title"&gt;&lt;a href="http://laiba.tianya.cn/laiba/CommMsgs?cmm=766&amp;amp;tid=2688678636453447832"&gt;   &lt;/a&gt;&lt;/h1&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-6823396442030355778?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/6823396442030355778/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=6823396442030355778' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/6823396442030355778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/6823396442030355778'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2010/01/blog-post.html' title='节省移动电话话费的方法'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-6666400178851184457</id><published>2009-12-29T13:11:00.001+08:00</published><updated>2009-12-29T13:11:26.740+08:00</updated><title type='text'>邮件 v.s. 手机短信息</title><content type='html'>安排一次朋友聚餐，几通电话，若干短信就搞定了，&lt;div&gt;而我要为，坚持发送邮件而不照顾到朋友们的通信习惯而感到内疚...&lt;/div&gt;&lt;div&gt;因为：&lt;div&gt;&lt;ul&gt;&lt;li&gt;邮件是免费的（但是电话和短信不是）&lt;/li&gt;&lt;li&gt;邮件可以群发（而点对电通信的电话和短信不是）&lt;/li&gt;&lt;li&gt;讨论餐厅位置、烤肉质量、种类和味道、个人饮食习惯，协商时间、邀请谁来这样的沟通蕴含丰富的上下文（而点对点的电话和短信又不是）&lt;/li&gt;&lt;li&gt;手机收取邮件不方便（当然仅限于朋友们手中Nokia N85, iPhone, Android 之外的非智能手机）&lt;/li&gt; &lt;li&gt;时髦地说，邮件更加"低碳"（移动电话寻址、计费、...、模拟信号和数字信号间相互换转的能耗）&lt;/li&gt;&lt;li&gt;邮件更加高效&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;当你们看到这篇博文的时候一定知道我在开玩笑 :)&lt;/div&gt;&lt;div&gt;你们也知道下一次我还会这么干&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;-- &lt;br&gt;朱可&lt;br&gt;&lt;a href="http://www.netvibes.com/shawnzhu"&gt;http://www.netvibes.com/shawnzhu&lt;/a&gt;&lt;br&gt;  &lt;/div&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-6666400178851184457?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/6666400178851184457/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=6666400178851184457' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/6666400178851184457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/6666400178851184457'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/12/vs.html' title='邮件 v.s. 手机短信息'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-7812233606285232750</id><published>2009-10-31T10:23:00.002+08:00</published><updated>2009-10-31T10:34:55.252+08:00</updated><title type='text'>快速穿墙术</title><content type='html'>&lt;p&gt;昨天晚上用Opera mini 时偶然发现，访问facebook,youtube, twitter 和 blogspot 都没有问题。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-7812233606285232750?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/7812233606285232750/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=7812233606285232750' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7812233606285232750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7812233606285232750'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/10/blog-post.html' title='快速穿墙术'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-5941790984138862911</id><published>2009-10-28T22:45:00.001+08:00</published><updated>2009-10-28T22:45:15.778+08:00</updated><title type='text'>Google Wave 预览版很酷</title><content type='html'>早上在公车上收到了&lt;a href="http://liwenbing.cn/"&gt;Micky&lt;/a&gt;发来的 Google Wave 预览版邀请（&lt;a href="http://nest.onedd.net/api/wbinglee"&gt;@wbinglee&lt;/a&gt; Thanks! dude!），利用机器启动的空闲时间玩一会儿，虽然和五月份的演示录像比起来慢了很多，但是即使是预览版，为用户提供的超强协作能力和延迟很少的实时性体验，已经是我用过这么多 Web 应用程序中表现最好的服务了。&lt;div&gt; &lt;br&gt;&lt;/div&gt;&lt;div&gt;Wave 似乎能够提供互联网上取代 Email+IM+Wiki+Blog+OnlineOfficeSuite 的全新沟通体验，极客们都很High（大概看了一下我在 Wave 上的联系人列表，基本由Web developer+Hacker+Google employee 组成），就是不知道能拿来做什么，好像&lt;i&gt;&lt;a href="http://www.douban.com/subject/2156528/"&gt;生活大爆炸&lt;/a&gt;&lt;/i&gt;里通过互联网从中国控制另一个半球某公寓的电灯。&lt;/div&gt; &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;最吸引我的地方只有其围绕开放标准的&lt;a href="http://en.wikipedia.org/wiki/Google_Wave_Federation_Protocol"&gt;协议&lt;/a&gt;和高水平的&lt;a href="http://code.google.com/p/wave-protocol/"&gt;产品质量&lt;/a&gt;。回头我得读读 XMPP 了...如果有什么好玩的地方我再发出来。&lt;/div&gt;&lt;div&gt; &lt;br&gt;-- &lt;br&gt;朱可&lt;br&gt;&lt;a href="http://www.netvibes.com/shawnzhu"&gt;http://www.netvibes.com/shawnzhu&lt;/a&gt;&lt;br&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-5941790984138862911?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/5941790984138862911/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=5941790984138862911' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/5941790984138862911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/5941790984138862911'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/10/google-wave.html' title='Google Wave 预览版很酷'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-2973148146335551781</id><published>2009-10-25T20:27:00.001+08:00</published><updated>2009-10-25T20:27:07.351+08:00</updated><title type='text'>China OPC (中国开放流程社区) 活动记</title><content type='html'>昨天在中关村的"&lt;a href="http://poi.mapbar.com/beijing/MAPNSAYPZNZESAHATMZEH"&gt;北漂咖啡屋&lt;/a&gt;"参加了&lt;a href="http://www.opug.org.cn"&gt;&lt;/a&gt;&lt;a href="http://www.opug.org.cn"&gt;开放流程社区&lt;/a&gt;的&lt;a href="http://www.opug.org.cn/node/364"&gt;第四次活动&lt;/a&gt;，主要是胡长城同学做的对国内 BPM 市场的大致分析、cordys 的夏昊介绍"云中的流程工厂"以及辛鹏的 SOA+BPM 联姻。听罢觉得话题都好 high 以至于花了很久才找到出口电梯落地。不过话说回来，只有开放宽泛的话题和丰富的国内外实例才可以引起大家有兴趣讨论，再加上繁多的三字经和时尚技术的轰炸，我看到现场已经有人在昏暗的灯光下记笔记（除了我在互联网上频繁上谷歌和推客&amp;lt;&lt;a href="http://twitter.com"&gt;twitter.com&lt;/a&gt;&amp;gt;）。&lt;br clear="all"&gt; &lt;br&gt;首先有幸看到了胡长城对工作流技术、行业信息化、企业管理软件和市场发展的若干趋势的总结，细节当然由于尊重主讲人的要求不能写出来，但是内容不错，庞杂的信息里不难看出多年来在业务流程管理领域的经验沉淀，而且时刻都有一种面临竞争的危机感。如果你对工作流略有耳闻，听过BPM而且恰好又玩过一些产品，或者初涉企业信息化领域，在开放流程社区里参加这样的话题分享，和一些第一线技术领头人进行交流还是很不错的。至少我数年前看&lt;a href="http://blog.zdnet.com.cn/html/84/289384-1051885.html"&gt;微内核工作流&lt;/a&gt;的时候，没想到今天可以在这里和作者一起聊聊天。&lt;br&gt; &lt;br&gt;我对 Cordys 公司那个&lt;a href="http://www.theprocessfactory.com/"&gt;流程工厂&lt;/a&gt;的演示录像的印象不错。今天听完他们对自己的时尚技术的精彩介绍，了解到同行如何理解 Web2.0，混搭模式、情景应用乃至云计算，还是很有收获。会后和很多朋友一起聊天，非常兴奋地看到大家对前沿的技术和动态这么感兴趣，急忙发名片告诉大家我是做新兴技术的工程师，在互联网上很活跃、希望大家多多交流云云。&lt;br&gt; &lt;br&gt;辛鹏的SOA+BPM以及案例介绍都是自己认真总结的信息和分析，一个逻辑架构图花了好几个小时来做，让我们这些听众都了解到在埋头从事企业核心业务的流程化工作之余，认真分析、阅读书籍和思考总结是多么得重要！&lt;br&gt;&lt;br&gt;个人观点总结如下：&lt;br&gt;有关基本概念：作为软件技术的爱好者，我和很多听众一样对有市场和商业价值的技术抱有浓厚的兴趣。听完这些演讲心中还是很多问题，但最先需要搞清楚的是，同样的概念在市场趋势、商业环境、经济活动、学术/技术动态潮流和具体的工程技术这些个不同方面都有不同的内涵和外延。所以，一把抓下去会晕死人的。我还是希望软件工程师们多一些思考、消除那些广告、时尚、潮流的负面影响，尽量从中立的角度去理解。举例来说，现在炙手可热的云计算，在会场上讨论的时候，最后没有就基本概念达成一致。这让我想起毛大师的一席话："你们这些刚入行的工程师，没有主机时代的痛苦和锻炼，难以理解整个企业计算发展到今天云计算这种水到渠成的局面"。其实我们首先需要&lt;b&gt;清晰的概念&lt;/b&gt;。我觉得看书和访问 wikipedia 就很好，那些参考文章都是精选，在被厂商和舆论忽悠之前，有些常识总是没错的。&lt;br&gt; 技术标准和产品：幸运的是，企业级软件所遵循的大部分规范都是开放的，令人遗憾的是规范太多了，以至于人们不知道该看哪个该用哪个。BPM 市场上有无数的技术团体和公司，不管是盈利还是非盈利的组织，技术标准总是一堆一堆：BPMN 1.0 就有超过140页；BPEL4WS ...没数过，反正全屏打开后我的纵向滚动条已经缩小到难以点击了；Java 技术规范超过600页……相信再写下去软件工程师看了都不敢看了。还有无数的产品，难免让人云头转向、有各种各样的偏见和或激进或保守的观点。我想说的是，不要畏惧这些大部头，你可以通过阅读幻灯片、大师的著作或论文来啃掉它们，根据你最关心的部分去学习和了解，少些偏见、多一些理性的思考。首先有了全局观，才能有的放矢。比如你只对混搭(mashup)感兴趣，那么你就应该先了解那些个编程接口和实际运行时环境的具体情况；如果你关心 REST, 可以去读 Sam Ruby 的那本 RESTful Web Services 或者 wikipedia, 喜欢速成的可以在 &lt;a href="http://slideshare.net"&gt;slideshare.net&lt;/a&gt; 上找到不少幻灯片，喜欢学术口味的可以去读 Dr. Fielding 的论文....喜欢直接玩应用程序的就玩我现在做的 &lt;a href="http://projectzero.org"&gt;projectzero&lt;/a&gt; 好了。&lt;br&gt; &lt;br&gt;&lt;br&gt;-- &lt;br&gt;朱可&lt;br&gt;&lt;a href="http://www.netvibes.com/shawnzhu"&gt;http://www.netvibes.com/shawnzhu&lt;/a&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-2973148146335551781?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/2973148146335551781/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=2973148146335551781' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/2973148146335551781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/2973148146335551781'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/10/china-opc.html' title='China OPC (中国开放流程社区) 活动记'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-1088824459314565007</id><published>2009-10-19T17:35:00.001+08:00</published><updated>2009-10-19T17:35:38.227+08:00</updated><title type='text'>在 REST风格的应用程序中应用 Web feed</title><content type='html'>刚刚在 developerWorks 上发表的&lt;a href="http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0910_smash_restful_rssfeed/"&gt;新文章&lt;/a&gt;，我最喜欢最后的那个仅用 HTML/JavaScript 写成的统计 &lt;a href="http://digg.com"&gt;digg.com&lt;/a&gt; 最新文章数的例子，希望那些熟悉 SQL 的 Web 开发者能够喜欢。&lt;br clear="all"&gt; &lt;br&gt;-- &lt;br&gt;朱可&lt;br&gt;&lt;a href="http://www.netvibes.com/shawnzhu"&gt;http://www.netvibes.com/shawnzhu&lt;/a&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-1088824459314565007?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/1088824459314565007/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=1088824459314565007' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/1088824459314565007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/1088824459314565007'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/10/rest-web-feed.html' title='在 REST风格的应用程序中应用 Web feed'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-178170178579877264</id><published>2009-09-16T23:50:00.001+08:00</published><updated>2009-09-16T23:50:46.719+08:00</updated><title type='text'>“根本就没有敏捷这样东西。” ――敏捷中国大会归来记</title><content type='html'>&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.douban.com/book/search/David%20Thomas"&gt;David Thomas&lt;/a&gt;, &amp;nbsp;&lt;a href="http://www.douban.com/subject/1152111/"&gt;《程序员修炼之道》&lt;/a&gt;的作者在这次&lt;a href="http://www.agilechina.net/"&gt;敏捷大会&lt;/a&gt;上的有趣&lt;a href="http://www.agilechina.net/ShowNews.aspx?id=12"&gt;演讲&lt;/a&gt;给人留下了深刻印象，简而言之，翻译成大白话就是：&amp;ldquo;根本就没有敏捷这样&lt;b&gt;东西&lt;/b&gt;，敏捷只是一个形容词而已。&amp;rdquo;&amp;nbsp;&lt;img src="cid:360@goomoji.gmail" style="margin-top: 0px; margin-right: 0.2ex; margin-bottom: 0px; margin-left: 0.2ex; vertical-align: middle; " goomoji="360"&gt;&amp;nbsp;他不是在开玩笑，对吗？除此之外，他介绍了写书十年来，有些软件技术已经过时，但是里面的大部分观点并没有老套，于是我在现场用20%的折扣买了一本。买完立刻发现自己违反了著名的 &lt;a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself"&gt;DRY&lt;/a&gt;&amp;nbsp;准则：这本书&lt;a href="http://www.cheng-fu.com/"&gt;成大师&lt;/a&gt;已经买过了！何不借来看看？&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.agilechina.net/Speaker.aspx?Id=42"&gt;Kent Beck&lt;/a&gt;&amp;nbsp;的&amp;ldquo;&lt;span class="page_content_all2" style="min-height: 200px;"&gt;&lt;span id="Label1"&gt;&lt;a href="http://www.agilechina.net/ShowNews.aspx?id=42"&gt;实效的理想主义&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&amp;rdquo;：具有深刻洞察力的见地：你可以将&amp;ldquo;实效&amp;rdquo;和&amp;ldquo;理想主义&amp;rdquo;兼得。但是大师的演讲太精炼了，内容严谨，发人深思，以至于听众陷入了无人发问的气场（开玩笑了，缘于演讲超时和紧凑的日程才没有提问时间）。这里面没有时髦的&amp;ldquo;敏捷&amp;rdquo;词汇，以 What/Why/When/Who/How 的严谨结构告诉听众，作为软件开发者，你首先需要实效地交付成果，但是仍旧应该作为一个理想主义者持续、理性地思考。严肃地面对软件设计最核心的问题：变更、复杂度、成本和风险。也只有作为一个始终保持理想主义的开发者，才会以真正实效的角度去工作和学习。的确挺&lt;a href="http://www.extremeprogramming.org/"&gt;极限&lt;/a&gt;的。&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.agilechina.net/Speaker.aspx?Id=36"&gt;Fred&amp;nbsp;George&lt;/a&gt; 是在 &lt;a href="http://en.wikipedia.org/wiki/Ibm"&gt;IBM&lt;/a&gt; 工作过17年的老兵，以他近 40 年的业界经验告诉我们，关注人本身从来都是最重要的。什么工具用来做计划最好？纸和笔就够了。近看 Fred, 这位超过60岁的长者依旧保持着编写代码的习惯，精神矍铄，面对众人侃侃而谈，一场演讲下来依旧语速不减。他的演讲是我听到的语速最快的演讲之一，很&amp;ldquo;反模式&amp;rdquo;吧？好在节奏非常好，演讲所用的幻灯片既有内容紧凑的图表，也有他自己和姚明的搞笑拼凑照片，听众听完都还不过瘾。&lt;/li&gt; &lt;/ul&gt;其他的演讲者都介绍了关于敏捷软件工程的方法论、学习过程、实践、改进、本土化等等方面，如果你是敏捷宣言的跟随者，可以听到比较全面的敏捷实践介绍，了解敏捷开发在国内几个企业中的应用现状和各种正、反面案例（当然还可以收到厚厚一摞培训和咨询服务广告）；如果你是敏捷开发的探索者，可以闻到各种敏捷实践之中不同方法背后隐藏的智慧或愚蠢，看到人因、对内对外沟通、团队精神、理性批判、实效编程这些真正深刻的东东。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt; &lt;div&gt;大会的&lt;a href="http://www.agilechina.net/agenda.html"&gt;日程&lt;/a&gt;满满当当，相信不久 &lt;a href="http://www.infoq.com/cn/"&gt;infoq.com 中国&lt;/a&gt;会陆续释放大会的演讲视频和幻灯片（@Kevin 什么时候才能在国内流畅观看 infoq 视频？）。回来的时候脑袋里又有了很多新的想法：&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;做勇敢的程序员要积极面对工作、勇于面对缺陷；&lt;/li&gt; &lt;li&gt;坚持思考，不断反思，专注真正的问题，否则你会被同样的问题击败两次甚至更多；&lt;/li&gt;&lt;li&gt;对于软件团队领袖，你看到的不应该是&amp;ldquo;敏捷&amp;rdquo;这样时髦的形容词，而是整个生意的生命周期。没错，整个生意；&lt;/li&gt;&lt;li&gt;时刻牢记，所有软件所面临的问题，最终都是和相关的问题。找出正交问题集是程序员的工作，但这份工作最重要的目标是它如何能够改善人的生活；&lt;/li&gt;&lt;li&gt;保持幽默，讨论敏捷软件工程和各种工具相关的话题非常枯燥无味，但是交给有趣的人来讲就不一样；&lt;/li&gt; &lt;li&gt;做超人。如果你还不是超人，那么你需要学会如何和超人一起工作；如果你是，那么更需要学会如何带领团队中的其他成员一起飞；如果根本就没有什么超人...那你只有依靠整个团队了。&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;最后附大会的相关资料：&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/cn/news/2009/09/agilechina-2009-summary"&gt;敏捷中国大会2009顺利闭幕和简要总结&lt;/a&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.flickr.com/groups/agilechina2009"&gt;现场照片&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://twitter.com/search?q=%23agilechina"&gt;Agilechina on twitter&lt;/a&gt;&amp;nbsp;(有任何问题欢迎推我 @shawnzhu)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;-- &lt;br&gt;朱可&lt;br&gt;&lt;a href="http://www.netvibes.com/shawnzhu"&gt;http://www.netvibes.com/shawnzhu&lt;/a&gt;&lt;br&gt;  &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-178170178579877264?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/178170178579877264/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=178170178579877264' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/178170178579877264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/178170178579877264'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/09/blog-post.html' title='“根本就没有敏捷这样东西。” ――敏捷中国大会归来记'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-6753302917541218691</id><published>2009-08-23T00:19:00.001+08:00</published><updated>2009-08-23T00:19:46.396+08:00</updated><title type='text'>Tip: 在 IBM JDK 上运行 Apache James 邮件服务器</title><content type='html'>问题："在 IBM JDK 上运行 &lt;a href="http://james.apache.org"&gt;James 邮件服务器&lt;/a&gt;时为什么一添加新用户就会出错？"或者你看到这种异常：java.lang.NoClassDefFoundError: sun/security/provider/Sun&lt;br&gt;&lt;br clear="all"&gt;之前我在 &lt;a href="https://www.projectzero.org/bugzilla/show_bug.cgi?id=8589#c2"&gt;projectzero 社区的 bugzilla&lt;/a&gt; 里就遇到过这样的问题，在 &lt;a href="http://apache.org"&gt;apache.org&lt;/a&gt; 社区的邮件列表里搜索了一会儿，看到已经有人3年前就开了&lt;a href="https://issues.apache.org/jira/browse/JAMES-348"&gt;新的工作项&lt;/a&gt;，可是至今未在产品中解决。最近再次遭遇这等问题，居然忘记了当初的解决方案...思考片刻决定把这个方法贴出来供大家参考：将 IBM JDK 的 JRE 下的 ibmjceprovider.jar 文件（%JAVA_HOME%\jre\lib\ext\ibmjceprovider.jar）服务复制到 james 安装目录下的 lib 目录即可。&lt;br&gt; &lt;br&gt;这个方法至少可以保证 james 2.3.1 的基本功能在 IBM JDK 上正常运行，如果你为此头疼，这个方法不妨一试。&lt;br&gt;-- &lt;br&gt;朱可&lt;br&gt;&lt;a href="http://www.netvibes.com/shawnzhu"&gt;http://www.netvibes.com/shawnzhu&lt;/a&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-6753302917541218691?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/6753302917541218691/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=6753302917541218691' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/6753302917541218691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/6753302917541218691'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/08/tip-ibm-jdk-apache-james.html' title='Tip: 在 IBM JDK 上运行 Apache James 邮件服务器'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-9089318677119044455</id><published>2009-08-15T14:42:00.002+08:00</published><updated>2009-08-15T14:51:25.865+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>习惯了疯(phone)的简洁的后果...</title><content type='html'>&lt;div&gt;使用 &lt;a href="http://www.mozilla.com/en-US/firefox/upgrade.html"&gt;Firefox 3.5&lt;/a&gt; 如何能够获得极限&lt;span style="font-weight: bold;font-size:large;" class="Apple-style-span" &gt;简洁&lt;/span&gt;和更加极限的浏览&lt;span style="font-weight: bold;font-size:large;" class="Apple-style-span" &gt;速度&lt;/span&gt;？答案是这个名为 &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/59"&gt;User Agent Switcher&lt;/a&gt; 的东东，有了它你就可以在 Firefox 上做这些...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;使用 &lt;a href="http://m.twitter.com/"&gt;m.twitter.com&lt;/a&gt; 看 Twitter 的推友更新；&lt;/li&gt; &lt;li&gt;登录 &lt;a href="http://m.facebook.com/"&gt;m.facebook.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://m.google.com/reader"&gt;m.google.com/reader&lt;/a&gt; （偶尔情况下正常的 Google 阅读器还是更方便些）&lt;/li&gt;&lt;li&gt;&lt;a href="http://wap.sohu.com/"&gt;wap.sohu.com&lt;/a&gt;（这个是我最喜欢的，甚至不需要用 adblock+ 来拦截广告）&lt;/li&gt; &lt;/ul&gt;&lt;div&gt;如果你们有更加简洁的网络冲浪方案，直接回复本文！&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;--&lt;br /&gt;朱可&lt;br /&gt;&lt;a href="http://www.netvibes.com/shawnzhu"&gt;http://www.netvibes.com/shawnzhu&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-9089318677119044455?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/9089318677119044455/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=9089318677119044455' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/9089318677119044455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/9089318677119044455'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/08/phone.html' title='习惯了疯(phone)的简洁的后果...'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-1299060611716811241</id><published>2009-07-19T17:21:00.001+08:00</published><updated>2009-07-19T17:21:01.874+08:00</updated><title type='text'>*QL</title><content type='html'>为什么有这么多查询语言？&lt;div&gt;&lt;br&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://docs.amazonwebservices.com/AmazonSimpleDB/latest/DeveloperGuide/UsingSelect.html"&gt;Amazon SimpleDB Select&amp;nbsp;query&amp;nbsp;language&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/EJBQL.html"&gt;EJB Query Language&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/EJBQL.html"&gt;&lt;/a&gt;&lt;a href="http://wiki.developers.facebook.com/index.php/FQL"&gt;Facebook Query Language&lt;/a&gt;&amp;nbsp;(FQL)&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/appengine/docs/python/datastore/gqlreference.html"&gt;GQL&lt;/a&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&lt;a href="http://docs.jboss.org/hibernate/stable/core/reference/en/html/queryhql.html"&gt;Hibernate Query Language&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://java.sun.com/javaee/5/docs/tutorial/doc/bnbtg.html"&gt;Java Persistence Query Language&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Object_Query_Language"&gt;OQL&lt;/a&gt;&amp;nbsp;这个第一次听说不过居然真有...&lt;/li&gt;&lt;li&gt;&lt;a href="http://139.91.183.30:9090/RDF/RQL/"&gt;RDF Query Language&lt;/a&gt; (RQL)&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: xx-large; "&gt;&lt;a href="http://en.wikipedia.org/wiki/SQL"&gt;SQL&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.ibiblio.org/xql/xql-proposal.html"&gt;XML Query Language&lt;/a&gt; (XQuery)&lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/yql/"&gt;Yahoo! Query Language&lt;/a&gt; (YQL)&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;-- &lt;br&gt;朱可&lt;br&gt;&lt;a href="http://www.netvibes.com/shawnzhu"&gt;http://www.netvibes.com/shawnzhu&lt;/a&gt;&lt;br&gt;  &lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-1299060611716811241?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/1299060611716811241/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=1299060611716811241' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/1299060611716811241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/1299060611716811241'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/07/ql.html' title='*QL'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-6430100680955819443</id><published>2009-07-11T11:03:00.001+08:00</published><updated>2009-07-11T11:03:24.170+08:00</updated><title type='text'>黑莓手机</title><content type='html'>几年前在校园里和手机发烧友&amp;nbsp;&lt;a href="http://www.newsmth.net/pc/index.php?id=kbe"&gt;kbe&lt;/a&gt; 同学聊天，梦想着毕业以后用什么高科技手机。那时候黑莓手机还是紧俏货，就这样 kbe 同学还是棋高一招搞到一部，让人羡慕不已。&lt;br clear="all"&gt;&lt;br&gt;&lt;div&gt;从手机的角度来看，现在用的黑莓 8700 顶多算得上专业。&amp;ldquo;可以发邮件吗？&amp;rdquo; 我总是被问到这样的问题，但是答案总是令人失望。&lt;/div&gt; &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;问题在于，什么才算是真正的使用手机&amp;ldquo;收发邮件&amp;rdquo;? 从我个人的感觉来看，使用浏览器上 Gmail 这样简洁的邮箱基本能满足需要了，顶多安装个黑莓上的&lt;a href="http://crackberry.com/download-gmail-software-application-blackberry"&gt;客户端&lt;/a&gt;。至于 Push mail, 想想 Web2.0 时代，流行的 RSS/Atom feed 所谓的&amp;ldquo;推模式&amp;rdquo;，也依然建立在很好很强大的 HTTP 协议上，依靠浏览器的请求足以满足日常信息消费的需求。当然，像短信一样的 Push mail 更好，可是费电费钱可划不来。从通信协议的角度来看，HTTP 无疑是互联网应用程序的首选。从高效邮件通信的角度来看，使用 IMAP 的邮件客户端即可。&lt;/div&gt; &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;在大屏幕上使用滚动轴浏览网页是我使用黑莓最主要的需求。从 Google Reader 上的统计来看，工作日使用手机浏览的文章数量已经超过了在 PC 上的了。这也得益于偶尔在地铁上度过的漫长时光。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;还不得不提到那些企业级的用户需求：手机内容备份、与 Lotus Notes/Office Outlook 的集成、文档浏览（虽然 8700 现在看来比较差劲的性能往往逼迫我使用 Google docs 来查看文档）等等，都非常专业易用。&lt;/div&gt; &lt;div&gt;&lt;br&gt;-- &lt;br&gt;朱可&lt;br&gt;&lt;a href="http://www.netvibes.com/shawnzhu"&gt;http://www.netvibes.com/shawnzhu&lt;/a&gt;&lt;br&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-6430100680955819443?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/6430100680955819443/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=6430100680955819443' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/6430100680955819443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/6430100680955819443'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/07/blog-post.html' title='黑莓手机'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-3836244302176883433</id><published>2009-07-03T00:13:00.001+08:00</published><updated>2009-07-03T00:13:39.994+08:00</updated><title type='text'>讲座：“使用 Project Zero 简化 Web 2.0 应用程序开发”</title><content type='html'>在我国科学研究的&lt;a href="http://www.cas.cn/"&gt;圣地&lt;/a&gt;，偌大的一个阶梯教室，使用着先进的教学设备，面对中国未来的科研先锋，讲&lt;a href="http://tinyurl.com/n9ykn2"&gt;这样一个主题&lt;/a&gt;实在倍感荣幸。&lt;br&gt;也许是受众过于狭窄，在校园里的同学们尚不能接受1个半小时之内名目繁多的技术和开发方法的轰炸，以至于有的同学听着听着睡了过去，然后又不得不醒过来:)&lt;br&gt;&lt;br&gt;鉴于在校园做讲座的经验，没有礼品或者奖励，同学们是不会轻易举手发问的。与其耐心讲解"没有愚蠢的问题，只有愚蠢的回答"，还不如下次带上些许礼品鼓励发问。&lt;br&gt; &lt;br&gt;&lt;br&gt;有兴趣的读者不妨一读：&lt;br&gt;&lt;a href="http://www.slideshare.net/shawnzhu/simplified-web20-application-development-with-project-zero"&gt;http://www.slideshare.net/shawnzhu/simplified-web20-application-development-with-project-zero&lt;/a&gt;&lt;br clear="all"&gt; &lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-3836244302176883433?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/3836244302176883433/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=3836244302176883433' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/3836244302176883433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/3836244302176883433'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/07/project-zero-web-20.html' title='讲座：“使用 Project Zero 简化 Web 2.0 应用程序开发”'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-2663252012023238912</id><published>2009-06-29T08:23:00.000+08:00</published><updated>2009-06-29T08:31:19.715+08:00</updated><title type='text'>IT精英与&lt;&lt;剩女郎&gt;&gt;</title><content type='html'>上周这个时候去看了部有趣的话剧&amp;lt;&amp;lt;剩女郎&amp;gt;&amp;gt;， 虽然只有4位演员， 道具也比较朴素， 但针对剧中相亲活动的人物内心世界的刻画确实有趣幽默。&lt;br&gt;情节类似水木社区每天十大新闻里相亲故事的样版戏， 自恃清高的女白领与爽直却略显猥琐的&amp;quot;IT精英&amp;quot;过招， 几个回合下来均有胜负，&lt;br&gt;于是依靠伟大的万有引力制造失控的升降电梯来创造极限环境以完成测试。 为什么&amp;quot;IT精英&amp;quot;已经变成了被人嘲讽的象征？&lt;br&gt;在京城有房（六环外）有车（二手捷达）都变成了笑柄...&lt;p&gt;&lt;br&gt;-- &lt;br&gt;朱可&lt;br&gt;&lt;a href="http://www.netvibes.com/shawnzhu"&gt;http://www.netvibes.com/shawnzhu&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-2663252012023238912?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/2663252012023238912/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=2663252012023238912' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/2663252012023238912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/2663252012023238912'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/06/it.html' title='IT精英与&lt;&lt;剩女郎&gt;&gt;'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-5797849258046833336</id><published>2009-06-15T22:15:00.005+08:00</published><updated>2009-06-15T22:23:56.406+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='projectzero'/><category scheme='http://www.blogger.com/atom/ns#' term='presentation'/><title type='text'>出差需要领导审批 - sMash 产品演示录像</title><content type='html'>这是很有趣的工作。如果你想知道二把刀程序员上半年都在忙什么，这篇博文里的幻灯片和录像可以告诉你：&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_1537940"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/projectzerodotorg/websphere-smash-june-product-review?type=powerpoint" title="WebSphere sMash June Product Review"&gt;WebSphere sMash June Product Review&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cdocumentsandsettingsryanboylesdesktopsmashprojectzerostakeholderreview060309-flow-090605082740-phpapp01&amp;amp;stripped_title=websphere-smash-june-product-review"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cdocumentsandsettingsryanboylesdesktopsmashprojectzerostakeholderreview060309-flow-090605082740-phpapp01&amp;amp;stripped_title=websphere-smash-june-product-review" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;OpenOffice presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/projectzerodotorg"&gt;Project Zero&lt;/a&gt;.&lt;/div&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;录像开头是产品开发经理对产品最近进展的概要介绍，后面是我的同事&lt;a href="http://liwenbing.cn"&gt;文兵&lt;/a&gt;使用一个简单的“老板审批出差申请”例子展示 Assemble flow 的最近功能：&lt;br /&gt;&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="437" height="288" id="viddler_bbc71748"&gt;&lt;param name="movie" value="http://www.viddler.com/player/bbc71748/"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.viddler.com/player/bbc71748/" width="437" height="288" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" name="viddler_bbc71748"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;大伙有意见和建议无论褒贬，尽管加。&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-5797849258046833336?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/5797849258046833336/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=5797849258046833336' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/5797849258046833336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/5797849258046833336'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/06/smash.html' title='出差需要领导审批 - sMash 产品演示录像'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-7554033645271528987</id><published>2009-06-15T00:49:00.002+08:00</published><updated>2009-06-15T21:19:58.919+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Google Wave 观后感</title><content type='html'>最近好像每个玩 Web 的朋友都在讲 &lt;a href="http://www.google.com/search?q=Google+wave"&gt;Google wave&lt;/a&gt;. 说起来都和 Google IO 上那几个穿着 wave T恤的家伙一样兴奋。当然&lt;a href="http://v.youku.com/v_show/id_XOTY4ODk5MjA=.html"&gt;演示&lt;/a&gt;很棒，我想着以后出去介绍产品也搞些印着产品 Logo 的T恤穿，再在背面印上网站地址好了。谁提问或者回答问题就发一件哈。&lt;div&gt;  回到 wave 这个比较有趣的咚咚，看起来它实现了在线文档真正的协作编辑，而且实时性相当好（到手持设备上就差一些）。比如在一个几十人的小团队里应用，每个成员用互联网浏览器打开一个叫做 wave 的咚咚就够了，编辑文档、画图、聊天、甚至写代码等等，都会保存到这一个 wave 里面，相当理想的用户体验。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;从技术角度来看，wave 在文档这个普通得再也不能更普通的概念上有令人惊喜的创新。我最近在看&lt;a href="http://www.douban.com/subject/1187371/"&gt;《分布式系统的原理与范型》&lt;/a&gt;，里面介绍现在最为流行的分布式系统包括 WWW 也就是我们现在使用的 Web，还有著名的 Lotus Notes. 他们都是以文档复制作为架构基础的，就是说当你在浏览器里输入一个地址，打开一个网页的时候，实际的意思是说，“把保存在这个地址上的文档给我一份“，网页读取完成后，你的计算机上就有了网页的副本。而当你使用 wave 的时候，无论有多少人同时在这个 wave 上面工作，对每一个人来说只有一个 “wave 文档”，它由 XML 来描述，大家每次针对这个 wave 的操作，都会经过 wave 的提供者广播到其他所有使用者所使用的 wave 视图中去。&lt;/div&gt; &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;从用户体验来看，用户通过一个浏览器就可以完成所有的协作工作和通信，的确非常方便。同时所有的操作都围绕着 wave ，无论是文本、图片、表格等等，都保存在一个上下文里！而且你可以根据各项操作完成的时间顺序，实现步进或者后退，如果应用在企业级的应用程序中，将会给以文档为中心的日常工作带来极大的方便。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;这篇&lt;a href="http://blogs.zdnet.com/microsoft/?p=2917"&gt;博文&lt;/a&gt;说：“开发 Google wave 的这些美国西海岸的工程师热爱开放源代码，就好比东海岸的自由主义者热爱奥巴马一样。” Google wave 采用开放架构，这给开发者和使用者都带来了无穷无尽的好处：遵循开放标准、可扩展/可嵌入式的编程接口，这一点已经在无数成功的互联网技术中得到了印证。&lt;/div&gt; &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-7554033645271528987?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/7554033645271528987/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=7554033645271528987' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7554033645271528987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7554033645271528987'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/06/google-wave.html' title='Google Wave 观后感'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-5382045358681502020</id><published>2009-05-14T20:39:00.004+08:00</published><updated>2009-05-14T21:10:16.334+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>在WebSphere sMash上运行精巧的论坛程序Vanilla 1.1.7</title><content type='html'>大家知道在 WebSphere sMash 上可以运行 PHP 语言开发的应用程序。下面的例子帮助你将&lt;a href="http://getvanilla.com/"&gt;vanilla&lt;/a&gt;这一精巧的网络论坛程序运行在 sMash 环境中。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;从projectzero.org下载WebSphere sMash 开发者版本：https://www.projectzero.org/download/&lt;/li&gt;&lt;li&gt;将下载好的zip文件解压缩到文件系统，你会看到结果包含一个名为 zero 的文件夹：如 C:\zero (如果你使用windows操作系统的话)&lt;/li&gt;&lt;li&gt;打开命令行窗口进入C:\zero, 设置环境变量：&lt;pre&gt;cd c:\zero&lt;br /&gt;c:\zero&gt;set PATH=c:\zero;%PATH%&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;然后运行命令zero resolve更新 sMash 运行环境：&lt;pre&gt;c:\zero&gt;zero resolve&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;当看到successful字样的提示消息后，sMash 的运行环境就准备好了。这时创建一个 sMash 应用程序来运行 vanilla：&lt;pre&gt;c:\zero&gt;zero create vanilla&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;从getvanilla.com获取 vanilla ：http://getvanilla.com/download/&lt;/li&gt;&lt;li&gt;下载得到的zip文件解压缩后得到一个文件夹，将这个文件夹下的所有文件都复制到 C:\zero\vanilla\public 文件夹下&lt;/li&gt;&lt;li&gt;为新创建的 sMash 应用程序增加 PHP 模块：编辑C:\zero\vanilla\config\ivy.xml 文件，在 &amp;lt;dependencies&amp;gt; 标签内增加如下依赖关系的描述:&lt;/li&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;dependency org="zero" name="zero.php" rev="[1.0.0.0, 2.0.0.0["&amp;gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency name="mysql-connector-java" org="mysql" rev="5.1+"&amp;gt;&amp;lt;/dependency&amp;gt;&lt;/code&gt;&lt;/ol&gt;&lt;ol&gt;&lt;code&gt; &lt;/code&gt;&lt;br /&gt;&lt;li&gt;最后一步：运行 zero start 命令启动这个 sMash 程序：&lt;pre&gt;c:\zero\vanilla&gt;zero start&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;完成后在浏览器中输入http://localhost:8080/setup/ 就可以开始设置了。&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-5382045358681502020?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/5382045358681502020/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=5382045358681502020' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/5382045358681502020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/5382045358681502020'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/05/websphere-smashvanilla-117.html' title='在WebSphere sMash上运行精巧的论坛程序Vanilla 1.1.7'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-9078803691763137617</id><published>2009-05-13T21:22:00.003+08:00</published><updated>2009-05-13T22:28:02.012+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opug'/><category scheme='http://www.blogger.com/atom/ns#' term='presentation'/><title type='text'>介绍RESTful Workflow</title><content type='html'>上周末有幸在&lt;a href="http://www.opug.org.cn"&gt;中国开放流程用户组&lt;/a&gt;的活动上和大家分享了题为"RESTful Workflow"(REST化的工作流)的主题。其中主要内容都来自参考资料里 Watson 实验室同事们的论文。&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_1426525"&gt;&lt;br /&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=restfulworkflowzhuk20090506-090512222727-phpapp02&amp;amp;stripped_title=rest-1426525"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=restfulworkflowzhuk20090506-090512222727-phpapp02&amp;amp;stripped_title=rest-1426525" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;由于活动赞助商严禁打广告，所以大家没有听到关于技术实现的内容（对ProjectZero感兴趣? 点&lt;a href="http://projectzero.org/cblog"&gt;这里&lt;/a&gt;），借助这篇博客梳理下引发的讨论：&lt;div&gt;&lt;ul&gt;&lt;li&gt;RESTful的工作流引擎如何实现？这里有Assemble flow的&lt;a href="https://www.projectzero.org/sMash/1.1.x/docs/zero.devguide.doc/zero.assemble.flow/Overview.html"&gt;开发者手册&lt;/a&gt;，里面详细介绍了产品的功能和用途，这里的&lt;a href="https://www.projectzero.org/sMash/1.1.x/docs/zero.devguide.doc/zero.flow.demo/FlowSamples.html"&gt;例子&lt;/a&gt;还是很好玩的；&lt;/li&gt;&lt;li&gt;REST...如果我对超文本传输协议（HTTP）、什么文档对象模型（DOM）不熟的话怎么使用这个RESTful Workflow? 其实sMash社区版里有提供一个完全运行在浏览器端的开发工具，我们努力使工作流的使用变得简单、直观，如果我们做得不好，非常欢迎大家的意见和建议；&lt;/li&gt;&lt;li&gt;REST 服务...是不是有得有新的标准？像Sun公司的WADL? 这是个非常值得探讨的问题...简单的讲我们为什么需要为 Web 世界再发明一个描述语言？问题涉及2个基本方面: 什么是REST 服务和我们需要把哪些东西标准化。现状之一在于，我们已经有了很多围绕REST的标准，而且新的标准还在制定当中，以至于&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;a href="http://bitworking.org/news/feed/"&gt;Joe &lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style=" border-collapse: collapse; white-space: pre; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family:Tahoma;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;a href="http://bitworking.org/news/feed/"&gt;Gregorio&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;要说Atompub协议失败了...我希望 Web 的世界里仅依靠基本的几个协议：HTTP, HTML/CSS, JavaScript, XML/Atom, JSON 就可以把互联网变成扁平的形状，对于我们开发者来说，有更多更好用的工具帮助我们理解互联网上的资源或者企业内部网络上的各种数据和算法，让信息更加自由畅通地流动就是最幸福的事。就 REST 服务本身而言，应该具有所谓“自描述”特性，当然这一点有些理想，往往实际工作中众多数据服务本身还含有 RPC 风格的 query string，或者对发送的数据表现（XML 或 JSON）有明确的要求，这时候就需要提供足够的描述信息，文本也好，文档也好，甚至是一段作为例子的数据片断，但是不要再多了。GData的API都是用HTML来描述的，包括Yahoo!的数据服务也一样，但是目前似乎还没有足够聪明的程序无需人的帮助来理解这些描述文字吧？看来我们还有很多工作要做...&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-9078803691763137617?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/9078803691763137617/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=9078803691763137617' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/9078803691763137617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/9078803691763137617'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/05/restful-workflow.html' title='介绍RESTful Workflow'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-8527218141394332425</id><published>2009-05-11T21:34:00.004+08:00</published><updated>2009-05-12T09:48:49.924+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='developerworks'/><title type='text'>developerWorks上的新文章</title><content type='html'>最重要的一点忘了在这篇文章里表达出来：开发一个完整的应用程序是如此地简单：&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0905_smash-assembleflow/"&gt;使用 Project Zero 和 WebSphere sMash Assemble Flow 构建 Mashup 应用，第 2 部分: 使用 Assemble Flow 开发简单协作流程&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1 style="font-weight: normal;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-8527218141394332425?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/8527218141394332425/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=8527218141394332425' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/8527218141394332425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/8527218141394332425'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/05/developerworks.html' title='developerWorks上的新文章'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-7103734660351866600</id><published>2009-04-25T22:12:00.003+08:00</published><updated>2009-04-25T22:34:12.960+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beijingopenparty'/><title type='text'>四月北京Openparty小记</title><content type='html'>&lt;div&gt;上次&lt;a href="http://www.beijing-open-party.org/index.php/2009/04/beijing-open-party-sunny-spring-report.html"&gt;我讲的话题&lt;/a&gt;被认为有推销产品之嫌（见下图右上角），在路上我和&lt;a href="http://liwenbing.cn/"&gt;文兵&lt;/a&gt;商量说，&lt;a href="http://www.beijing-open-party.org/index.php/2009/04/beijing-openparty-2009-04-serenade-to-spring-remind.html"&gt;这次openparty&lt;/a&gt;我们还是别讲了，还是聆听大师之音吧。&lt;/div&gt; &lt;div&gt;&lt;img src="http://docs.google.com/File?id=dd64mwsk_645fst2dhgk_b" alt="落选话题列表" title="落选话题列表" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;先听了&lt;a href="http://twitter.com/hongqn"&gt;hongqn&lt;/a&gt;的《豆瓣网技术架构的发展历程》，这个和qcon北京站上的话题一样，不过时间紧凑了些。幻灯片做得很好，我在想要是Mac+遥控器的操作方式换成&lt;a href="http://sakinijino.com/"&gt;sakinijino&lt;/a&gt;的&lt;a href="http://sakinijino.com/archives/1000"&gt;iphone遥控器&lt;/a&gt;就更NB了...&lt;/div&gt; &lt;div&gt;听完我们会发现，如果没有python社区&lt;a href="http://python.cn/"&gt;CPUG&lt;/a&gt;，那么我们不会有今天&lt;a href="http://douban.com/"&gt;douban.com&lt;/a&gt;；当然还要靠工程师的深入分析和对技术的深入理解，这样才有DoubanFS, DoubanDB, 也许有一天会有DoubanWarehouse, DoubanOS... &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; 遗憾没有听完整&lt;a href="http://aimingoo.spaces.live.com/"&gt;Aimingoo&lt;/a&gt;同学的《关于架构的三句话》，从片断之中也能觉察出，作为一个程序员和多本技术专著的作者，持续地深入思考和悟道是多么的重要！看来大师不是白当的。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://blogs.sun.com/jiangjian/"&gt;蒋健&lt;/a&gt;的《图解JavaEE6》颇有趣味，短短的时间便领会了GlassFish v3中OSGi, RESTful, NIO Server和EJB3.1几个颇为流行的特色。希望他没有被我的好奇心和无数的问题吓到。&lt;/div&gt; &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;还值得一提的是，这次见到了数位技术界精英：&lt;a href="http://www.chedong.com/blog/"&gt;车东&lt;/a&gt;、银杏科技的&lt;a href="http://weber.ourmy.cn/indexSTATICactionGET_blog-action_read-filesid_105.html"&gt;霍炬&lt;/a&gt;和&lt;a href="http://infoq.com/cn/"&gt;infoq中国&lt;/a&gt;的总编泰稳，这些都是我学生时代仰望的技术英雄:)&lt;br /&gt;--&lt;br /&gt;朱可&lt;br /&gt;&lt;a href="http://www.netvibes.com/shawnzhu"&gt;http://www.netvibes.com/shawnzhu&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-7103734660351866600?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/7103734660351866600/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=7103734660351866600' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7103734660351866600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7103734660351866600'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/04/openparty.html' title='四月北京Openparty小记'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-8721493743517495230</id><published>2009-03-21T10:41:00.003+08:00</published><updated>2009-03-21T10:49:17.783+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='human'/><title type='text'>"一个万恶工科生"的由来</title><content type='html'>&lt;a href="http://it.sohu.com/20090321/n262922701.shtml#"&gt;这篇文章&lt;/a&gt;里说到：&lt;br /&gt;“当一个公司一切以工程师为中心，就变成希望通过工程方式来解决所有问题，把所有的决定变成简单的逻辑问题，完全丧失了人的主观作用，而是仅仅依靠数据。数据就变成所有设计的基础，在这种情况下，就无法做出大胆的设计决定，从而禁锢了人的设计思维。”&lt;br /&gt;&lt;br /&gt;让我想起了一个&lt;a href="http://picasaweb.google.com/savemycolor/"&gt;朋友&lt;/a&gt;给我起的外号：“一个万恶的工科生”，正是这篇博客名称的由来。我们这些工程师在做同样愚蠢的事情吗？&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-8721493743517495230?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/8721493743517495230/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=8721493743517495230' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/8721493743517495230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/8721493743517495230'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/03/blog-post.html' title='&quot;一个万恶工科生&quot;的由来'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-5444704678164364100</id><published>2009-02-22T11:26:00.004+08:00</published><updated>2009-02-22T11:42:45.786+08:00</updated><title type='text'>在Java平台上运行PHP</title><content type='html'>当我和一票朋友初用写&lt;a href="http://www.php.net/"&gt;PHP&lt;/a&gt;应用程序的时候，&lt;a href="http://chen-qin.blogspot.com/"&gt;某人&lt;/a&gt;兴奋地说：&lt;br /&gt;“PHP要支持类似Java的&lt;a href="http://en.wikipedia.org/wiki/Reflection_%28computer_science%29"&gt;Reflection&lt;/a&gt;（反射）了！这下&lt;a href="http://en.wikipedia.org/wiki/Hibernate_%28Java%29"&gt;hibernate&lt;/a&gt; in PHP有戏了！”&lt;br /&gt;我当时就想：“如果能在Java上直接运行PHP不就省事了！”&lt;br /&gt;&lt;br /&gt;所以有了下面的帖子：&lt;br /&gt;&lt;a href="http://bbs.phpchina.com/thread-105471-1-2.html"&gt;http://bbs.phpchina.com/thread-105471-1-2.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.newsmth.net/bbscon.php?bid=261&amp;amp;id=73312"&gt;http://www.newsmth.net/bbscon.php?bid=261&amp;amp;id=73312&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-5444704678164364100?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/5444704678164364100/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=5444704678164364100' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/5444704678164364100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/5444704678164364100'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/02/javaphp.html' title='在Java平台上运行PHP'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-322623782572142887</id><published>2009-02-19T10:53:00.003+08:00</published><updated>2009-02-19T11:27:32.762+08:00</updated><title type='text'>Workflow-ing</title><content type='html'>看过这篇名为《&lt;a href="http://www.blogjava.net/mingj/archive/2009/01/16/251594.html"&gt;Beyond OSWorkflow&lt;/a&gt;》的文章，有感而&lt;a href="http://www.blogjava.net/mingj/archive/2009/01/16/251594.html#255400"&gt;发&lt;/a&gt;，工作流技术发展到今天已经日臻完善，但是遇到的问题和困难从2006年至今都没有得到更好的解决方案。工作流引擎的应用开发技术要比引擎本身更棘手。&lt;br /&gt;&lt;br /&gt;我们能做些什么？&lt;br /&gt;1. no more code: 也许我们应该少些定制，多挖掘工作流技术本身承诺的灵活性。也许你关注到了动态语言的迅猛发展，也许你被&lt;a href="http://www.martinfowler.com/bliki/DomainSpecificLanguage.html"&gt;Martin Fowler的DSL&lt;/a&gt;忽悠的不知该学什么语言才好。&lt;br /&gt;     一个兄弟说:“Hey, 我们开个生日庆祝会吧！”&lt;br /&gt;     有个家伙说:"我写些代码编些流程先！"&lt;br /&gt;     你下次肯定不带这个家伙玩了。&lt;br /&gt;&lt;br /&gt;2. 别让一个工作流引擎组件入侵你的系统：也许你会为了新的发动机换辆车，但是企业里的应用系统可不能随便就换；&lt;br /&gt;3. 简单的事情应该设法用简单方法来解决，而不是在请假出差审批这样的琐事上派出BPEL+Rule Engine+Task Engine+Event Engine构成的超级组件化变形金刚...&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-322623782572142887?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/322623782572142887/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=322623782572142887' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/322623782572142887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/322623782572142887'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/02/assemble-flow.html' title='Workflow-ing'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-3533602126046072340</id><published>2009-02-15T17:57:00.004+08:00</published><updated>2009-02-15T18:07:37.797+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blackberry'/><category scheme='http://www.blogger.com/atom/ns#' term='google reader'/><category scheme='http://www.blogger.com/atom/ns#' term='chengfu'/><category scheme='http://www.blogger.com/atom/ns#' term='Feed'/><title type='text'>Google 阅读器过载</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_yDzzBr2ZTr8/SZfnKXaiGHI/AAAAAAAAAAo/yklCfpMcR7I/s1600-h/catalog.GIF"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 266px; height: 300px;" src="http://1.bp.blogspot.com/_yDzzBr2ZTr8/SZfnKXaiGHI/AAAAAAAAAAo/yklCfpMcR7I/s320/catalog.GIF" alt="" id="BLOGGER_PHOTO_ID_5302961251522058354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;1000+好久了；&lt;/li&gt;&lt;li&gt;加上有好几个Shareaholic 朋友；&lt;/li&gt;&lt;li&gt;每天只要有机会我就在自己的Blackberry上搜索可读的条目；&lt;/li&gt;&lt;li&gt;也许我应该减少些许就不关注的Feed订阅，这些往往只能博得&lt;a href="http://www.cheng-fu.com/"&gt;成大师&lt;/a&gt;的轻蔑一笑；&lt;/li&gt;&lt;li&gt;但这些都距离了解IT世界每时每刻发生的事情还很遥远。&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-3533602126046072340?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/3533602126046072340/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=3533602126046072340' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/3533602126046072340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/3533602126046072340'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/02/google.html' title='Google 阅读器过载'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_yDzzBr2ZTr8/SZfnKXaiGHI/AAAAAAAAAAo/yklCfpMcR7I/s72-c/catalog.GIF' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-2081757162698515656</id><published>2009-02-15T16:52:00.005+08:00</published><updated>2009-02-15T18:06:50.987+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delicious'/><category scheme='http://www.blogger.com/atom/ns#' term='google reader'/><category scheme='http://www.blogger.com/atom/ns#' term='netvibes'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='friendfeed'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='Feed'/><category scheme='http://www.blogger.com/atom/ns#' term='digg'/><category scheme='http://www.blogger.com/atom/ns#' term='sharaholic'/><title type='text'>你知道ShawnZhu在做什么吗？</title><content type='html'>数年来写博文我观察到一个现象，这个现象可能读者们也发现了：没有任何回复。不过这也让我懂得了一个道理：那就是永远不要在乎别人怎么看你（即使什么也没有）。&lt;br /&gt;&lt;br /&gt;即使如此，作为互联网上的共享狂人，我还是要和大家分享使用互联网应用的心得与我的实践。如果你每天花大量的时间阅读博客和专栏文章，那么你应该继续读下去。&lt;br /&gt;&lt;ul&gt;&lt;li&gt;订阅你感兴趣的RSS/Atom Feed（看到这个&lt;a href="http://en.wikipedia.org/wiki/Web_feed"&gt;&lt;img src="http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Feed-icon.svg/150px-Feed-icon.svg.png" width="32" height="32" /&gt;&lt;/a&gt;了吗？），越多越好。不订阅的话意味着下一次你很难再找到，或者忘记了你曾经对这个话题或领域充满兴趣。&lt;/li&gt;&lt;li&gt;发现有价值的文章，你应该设法分享它。如果你觉得它很重要，也许你应该&lt;a href="http://digg.com/"&gt;digg&lt;img src="http://digg.com/img/little-digg.gif" width="32" height="32" /&gt;&lt;/a&gt;一下；如果你想留给以后收藏，那么我建议你使用&lt;a href="http://delicious.com/"&gt;delicious.com&lt;img src="http://static.delicious.com/img/delicious.20.gif" alt="" border="0" /&gt;&lt;/a&gt;；如果你只是想告诉朋友们这篇文章很有趣，那么不妨分享到&lt;a href="http://www.facebook.com/"&gt;facebook&lt;img src="http://static.ak.fbcdn.net/favicon.ico" alt="" border="0" /&gt;&lt;/a&gt;, &lt;a href="http://google.com/reader"&gt;google reader&lt;img src="https://www.google.com/accounts/reader/logo_en.gif" /&gt;&lt;/a&gt;，&lt;a href="http://douban.com/"&gt;douban.com&lt;img src="http://otho.douban.com/favicon.ico" alt="" border="0" /&gt;&lt;/a&gt;或者任何支持在线分享的社会网络；如果你只是想这篇文章可能不会有太多人感兴趣，只是读读看，那么我建议你使用&lt;a href="http://twitter.com/home"&gt;Twitter.com&lt;img src="http://assets0.twitter.com/images/twitter_logo_125x29.png" alt="" border="0" /&gt;&lt;/a&gt;，所谓微博客，这样你的跟随者就知道你现在在做什么。&lt;/li&gt;&lt;li&gt;为分享的文章增加你的见解。这一点对你的读者来说很重要！&lt;/li&gt;&lt;/ul&gt;是不是发现上面的东东太多了？你会发现Feed到处都是，不知道从哪里订阅才好。试试&lt;a href="http://friendfeed.com/"&gt;Friendfeed&lt;img src="http://friendfeed.com/static/images/bg-logo-big.png" /&gt;&lt;/a&gt;, 它会将你所有的Feed源收集起来，聚集成一个比较大的Feed，你的所有订阅（还有来自你的朋友的订阅）都在它上面，而且随时可以往这个大列表上增加新的条目。&lt;br /&gt;&lt;br /&gt;但是怎样才能方便地一次看到所有这些内容呢？你需要一个支持Feed的个人门户...比如&lt;a href="http://netvibes.com/"&gt;netvibes.com&lt;img src="http://cdn.netvibes.com/favicon.ico" /&gt;&lt;/a&gt;把整个页面划分成多个窗口小部件，每个部件都可以从任何一个Feed获取来源，就像我的&lt;a href="http://netvibes.com/shawnzhu"&gt;个人主页&lt;/a&gt;一样。它的好处是，你随时可以看到任何一个Feed的更新情况，帮你按照优先级排序。&lt;br /&gt;&lt;br /&gt;每天分享或者说把你的Feed搞得到处都是，的确是一件累人的事。如果你在&lt;a href="http://firefox.com/"&gt;Firefox&lt;img src="http://upload.wikimedia.org/wikipedia/en/thumb/e/e3/Firefox-logo.svg/80px-Firefox-logo.svg.png" /&gt;&lt;/a&gt;浏览器上面工作，那么我推荐一个&lt;a href="http://www.shareaholic.com/"&gt;Shareaholic&lt;img src="http://www.shareaholic.com/media/images/shareaholic-tag-sm.png" /&gt;&lt;/a&gt;插件，它可以帮你折腾这些琐碎的事情。&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-2081757162698515656?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/2081757162698515656/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=2081757162698515656' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/2081757162698515656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/2081757162698515656'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/02/shawnzhu.html' title='你知道ShawnZhu在做什么吗？'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-3087208531252018475</id><published>2009-01-18T17:32:00.001+08:00</published><updated>2009-01-18T17:32:09.783+08:00</updated><title type='text'>数字化青春？</title><content type='html'>当你在上小学/中学的时候，如果你的父母曾试图把你的电视游戏机藏起来，你也许应该读读《&lt;a href="http://ohmymedia.com/2008/11/24/940/"&gt;数字化青春&lt;/a&gt;》。刚才在&lt;a href="http://google.com/reader"&gt;Google reader&lt;/a&gt;里面读了&lt;a href="http://www.google.com/reader/shared/10022293144263482718"&gt;Tiger&lt;/a&gt;分享的这篇文章，恍如隔世：原来我们都成长于数字化世界，如果你不谈在线游戏或者ipod，你就不会被这些青少年文化所认同。&lt;br&gt; &lt;br&gt;那么，这些青少年长大之后呢？显然，他们依然是在线和时尚的一代。&lt;br clear="all"&gt;&lt;br&gt;这是我的理解：&lt;br&gt;&lt;ul&gt;&lt;li&gt;"青少年使用在线媒介来延伸友谊和兴趣"：我们的社会化网络现在充斥着年轻人，也许我们为其工作的雇主都应该创建或应用这样的社会化网络――考虑考虑IBM公司的&lt;a href="http://www-01.ibm.com/software/lotus/products/connections/"&gt;Lotus Connections&lt;/a&gt;?&lt;/li&gt; &lt;li&gt;"青少年参与基于同龄人的自我导向的在线学习"：互联网到处充斥着免费的知识和学习机会，资源到处都是，重要的是你如何找到你所需要的内容，看到之后你如何评价它的好坏？其实我们现在没有这样的机制，除了搜索排名和传统媒体的版面/时段，现在&lt;a href="http://digg.com"&gt;digg.com&lt;/a&gt;, &lt;a href="http://delicious.com"&gt;delicious&lt;/a&gt;, &lt;a href="http://twitter.com"&gt;twitter&lt;/a&gt; 和 feed sharing 逐渐成为时尚的行为，作为在线一代，我们先从一个&lt;a href="http://www.shareaholic.com/"&gt;Shareaholic&lt;/a&gt;（搜索狂人）开始做起吧！&lt;/li&gt; &lt;li&gt;"因为数字媒介的多样性，因此用一套标准化的程式来衡量青少年的技术素养和新媒介素养是有问题的"：How many &lt;a href="http://zhidao.baidu.com/question/70042659.html"&gt;APM&lt;/a&gt;? 你的&lt;a href="http://www.business-opportunities.biz/projects/how-much-is-your-blog-worth/"&gt;博客的价格&lt;/a&gt;是？&lt;br&gt; &lt;/li&gt;&lt;li&gt;"想要在21世纪中不落伍，教育机构就需要跟上数字媒介发展的迅速步伐"：在我工作的Web2.0领域，如果你跟不上日新月异的数字世界，那么你就不够"二"；我的问题是，要怎样做才能让更多的人紧跟数字时代的时尚？&lt;/li&gt;&lt;ul&gt;&lt;li&gt;首先你需要让自己"数字化"一些：买件带数字的T恤？（开玩笑）你首先应该去订阅你最关心的Feed，比如 &lt;a href="http://rss.news.sohu.com/"&gt;搜狐RSS&lt;/a&gt;.&amp;nbsp;&lt;/li&gt; &lt;li&gt;把你订阅的Feed导入在线阅读器、社会网络、或者把他们都集成到friendfeed里面，干脆把他们都&lt;a href="http://twitthat.com"&gt;twitter&lt;/a&gt;一下。&lt;/li&gt;&lt;li&gt;分享你看过的东东！就像我&lt;a href="http://www.netvibes.com/shawnzhu"&gt;做得这样&lt;/a&gt;!&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;-- &lt;br&gt;朱可&lt;br&gt;&lt;a href="http://www.netvibes.com/shawnzhu"&gt;http://www.netvibes.com/shawnzhu&lt;/a&gt;&lt;br&gt;  &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-3087208531252018475?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/3087208531252018475/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=3087208531252018475' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/3087208531252018475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/3087208531252018475'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/01/blog-post.html' title='数字化青春？'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-7240048289656323211</id><published>2009-01-12T14:33:00.001+08:00</published><updated>2009-01-12T14:33:26.856+08:00</updated><title type='text'>用互联网来学习 - Web开发</title><content type='html'>如果你买不起O&amp;#39;Reilly或者机械工业出版社的开发指南或者宝典/速成，那么就从互联网开始吧：&lt;br&gt;下面推荐两个学习Web开发的好地方，在&lt;a href="http://digg.com"&gt;digg&lt;/a&gt;和&lt;a href="http://delicious.com"&gt;delicious&lt;/a&gt;上分享的人很多：&lt;br&gt;&lt;ul&gt;&lt;li&gt;在线学习Web开发：&lt;a href="http://www.webdevrants.com/"&gt;http://www.webdevrants.com/&lt;/a&gt;&lt;/li&gt; &lt;li&gt;就像他的名字一样，要找初学者向导，找 &lt;a href="http://www.tutorialized.com/"&gt;http://www.tutorialized.com/&lt;/a&gt;&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;-- &lt;br&gt;朱可&lt;br&gt;&lt;a href="http://www.netvibes.com/shawnzhu"&gt;http://www.netvibes.com/shawnzhu&lt;/a&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-7240048289656323211?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/7240048289656323211/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=7240048289656323211' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7240048289656323211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7240048289656323211'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/01/web.html' title='用互联网来学习 - Web开发'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-3497138566834188367</id><published>2009-01-11T00:07:00.002+08:00</published><updated>2009-01-11T00:46:36.906+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='同学'/><category scheme='http://www.blogger.com/atom/ns#' term='学习'/><category scheme='http://www.blogger.com/atom/ns#' term='书籍'/><category scheme='http://www.blogger.com/atom/ns#' term='生日'/><title type='text'>1个婚宴，2个礼物和3本老书</title><content type='html'>今天&lt;a href="http://www.newsmth.net/bbscon.php?bid=168&amp;amp;id=97717&amp;amp;ftype=11"&gt;见证&lt;/a&gt;了这对7年清华情侣“正式”（除了民政局的证书还得得到我们这些同学的认可）走入婚姻，&lt;a href="http://www.newsmth.net/bbsqry.php?userid=ffjob"&gt;刘兆&lt;/a&gt;同学运气好，要知道他的老婆曾早早发表过2篇SCI索引的文章. 我知道虽然我的很多科学家朋友不屑于此，但是我没有，故对此还是有些崇拜。&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;他们得到了我们送的&lt;a href="http://wii.com/"&gt;wii&lt;/a&gt;和丰厚的红包，我在婚宴结束时意外得到了&lt;a href="http://www.newsmth.net/bbsqry.php?userid=besideu"&gt;鼻塞猪&lt;/a&gt;同学送来的生日礼物——一块球迷手表，虽然有些迟，哦我不是说表走得不准，但是还是很喜欢。&lt;br /&gt;&lt;br /&gt;从&lt;a href="http://www.newsmth.net/bbsqry.php?userid=kbe"&gt;kbe&lt;/a&gt;那里交易到的3本书就更让我兴奋了：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.douban.com/subject/1241361/?i=1"&gt;《Learning Bash》&lt;/a&gt;: 说实话最近很需要它，否则对不起机房里躺着的那些吃电费的机器；&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.douban.com/subject/1234501/?i=0"&gt;《Linux Firewall》&lt;/a&gt;: 让你的操作系统裸奔的确是件很刺激的事，但是如果刺激多了就会有些不爽——还是穿件衣服安全点；&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.douban.com/subject/1237696/?i=1"&gt;《Elementary Number Theory and its application》&lt;/a&gt;：作为我的计算机科学基础课程的补习计划的一员，他还是不要躺在书架上过冬了。&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-3497138566834188367?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/3497138566834188367/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=3497138566834188367' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/3497138566834188367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/3497138566834188367'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2009/01/123.html' title='1个婚宴，2个礼物和3本老书'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-2728852879036138487</id><published>2008-12-31T17:09:00.003+08:00</published><updated>2008-12-31T17:57:50.048+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cloud-computing'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='mashup'/><category scheme='http://www.blogger.com/atom/ns#' term='open-api'/><title type='text'>Web 作为平台- 来自QCon 2008</title><content type='html'>最近在看QCon 2008的演讲。感觉这么多人凑在一起整天谈些业界云里雾里的东东，包括&lt;a href="http://qconsf.com/sf2008/presentation/Introduction%3A+Cloud+Computing"&gt;云计算&lt;/a&gt;、&lt;a href="http://qconsf.com/sf2008/presentation/Adopting+Agile+Practices"&gt;敏捷开发&lt;/a&gt;、和&lt;a href="http://qconsf.com/sf2008/presentation/Introduction%3A+RIA+in+the+real+world"&gt;富客户端应用&lt;/a&gt;、&lt;a href="http://qconsf.com/sf2008/presentation/Enterprise+development+with+REST"&gt;企业REST架构&lt;/a&gt;等等，演讲嘉宾也都是大名鼎鼎的红人，&lt;a href="http://qconsf.com/sf2008/speaker/Martin+Fowler"&gt;MF&lt;/a&gt;, &lt;a href="http://qconsf.com/sf2008/speaker/Erik+Meijer"&gt;Eric Meijer&lt;/a&gt;, &lt;a href="http://qconsf.com/sf2008/speaker/Brian+Goetz"&gt;Brain Goetz&lt;/a&gt;, &lt;a href="http://qconsf.com/sf2008/speaker/Rod+Johnson"&gt;Rod  Johnson&lt;/a&gt;,...&lt;br /&gt;&lt;br /&gt;今天拜读了 &lt;a href="http://qconsf.com/sf2008/presentation/Web+as+Platform%3A+State+of+the+Market"&gt;Web as Platform&lt;/a&gt;，让我回忆起2年前玩 Mashup是天天上 &lt;a href="http://www.programmableweb.com/"&gt;ProgrammableWeb.com &lt;/a&gt;这个很好玩的站点。纵观它的成长历史，你会发现非常惊人的互联网市场统计数字。&lt;br /&gt;&lt;br /&gt;首先是关于互联网上Open API的统计：2008年出现的新API几乎等于2000年至2007年出现的API数量的总和。&lt;br /&gt;&lt;br /&gt;另一个是关于Mashup应用程序使用的API类型统计。当Google Maps如日中天的时候（似乎现在依旧红火），媒体吹捧，得奖(&lt;a href="http://www.ddj.com/architect/187900423?pgno=6"&gt;2006 Jolt best database&lt;/a&gt;)，Maps占到所有Mashup应用的一半以上，似乎只有你用了地图API才算是Mashup应用一样。现在在多达1000种以上的API类型中，Maps类的Mashups应用也只占到了所有Mashup的两成。随着API的多样化，你可以创作的应用程序也变得多样化起来。&lt;br /&gt;&lt;br /&gt;于是Mashups和Open API变成了当今时髦的概念。我当初的第一个问题是，我要是写了一个Mashup, 应用程序放在哪里呢？到了今天，这个问题变成了谁来提供宿主环境。现在的答案有&lt;a href="http://en.wikipedia.org/wiki/Google_App_Engine"&gt;Google App Engine&lt;/a&gt;, &lt;a href="http://developer.yahoo.com/yap/"&gt;Yahoo Application Plaform&lt;/a&gt;, ...更多的请加Comments来告诉我。于是就有了Platform as a Service, 然后你需要什么？当然是云了！云里可以部署你的应用程序，有IDE，和管理控制台、甚至包括电费计数器在内的dashboard，和每个月寄到你户头上的支票。&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-2728852879036138487?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/2728852879036138487/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=2728852879036138487' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/2728852879036138487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/2728852879036138487'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2008/12/web-qcon-2008.html' title='Web 作为平台- 来自QCon 2008'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-2314950581360496024</id><published>2008-04-13T14:10:00.002+08:00</published><updated>2008-04-13T14:15:36.277+08:00</updated><title type='text'>WebSphere sMash 问世！！！</title><content type='html'>IBM WebSphere 品牌下的新产品：&lt;a href="http://www-306.ibm.com/software/webservers/smash/"&gt;WebSphere sMash&lt;/a&gt;&lt;br /&gt;面向REST, 以脚本语言为基础的敏捷软件开发，还有&lt;a href="http://www.projectzero.org/download/doc/zero.doc.latest/zero.assemble.flow/Overview.html"&gt;可视化的服务/数据集成工具&lt;/a&gt;。&lt;br /&gt;&lt;a href="http://www.projectzero.org/"&gt;Project Zero&lt;/a&gt;将作为开放的开发社区提供全面的技术支持。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.com/search?q=zhuke&amp;amp;Search=Search&amp;amp;q=%2Bsite%3Awww.projectzero.org"&gt;Search "zhuke"&lt;/a&gt; in Project Zero if you like:)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.projectzero.org/"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 137px; height: 116px;" src="http://www-306.ibm.com/software/webservers/smash/images/graphic-project-zero.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-2314950581360496024?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/2314950581360496024/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=2314950581360496024' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/2314950581360496024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/2314950581360496024'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2008/04/websphere-smash.html' title='WebSphere sMash 问世！！！'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-5840770786948124079</id><published>2008-01-10T22:36:00.001+08:00</published><updated>2008-01-10T22:36:36.555+08:00</updated><title type='text'>Part of License of M$ Silverlight</title><content type='html'>Here&amp;#39;s some interesting statements from the Silverlight 1.0 EULA:&lt;br&gt;&lt;br&gt;&lt;b&gt;AUTOMATIC UPDATES&lt;/b&gt;. This software contains an Automatic Update feature that is on by default….Unless you expressly opt out of this feature, this feature will  &lt;br&gt;(a) [connect to MS] &lt;br&gt;(b) [send user info to MS]&amp;nbsp; &lt;br&gt;(c) automatically download and install, or prompt you to download and/or install, current Updates to a previous version of the software.&lt;br&gt;&lt;br&gt;&lt;br&gt;I think the 3 options show that Silverlight is weird...Which means &amp;quot;Once Microsoft gets a user to install Silverlight, they have permission to silently send arbitrary updates forever after!&amp;quot; &lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-5840770786948124079?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/5840770786948124079/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=5840770786948124079' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/5840770786948124079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/5840770786948124079'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2008/01/part-of-license-of-m-silverlight.html' title='Part of License of M$ Silverlight'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-7884970537898648161</id><published>2007-12-07T11:47:00.001+08:00</published><updated>2007-12-07T11:47:08.199+08:00</updated><title type='text'>I want to live in this world, but it is not going to happen in my lifetime</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;h3&gt;Business Process Management Standards Tutorial&lt;/h3&gt;&lt;br /&gt;From: &lt;a href="http://www.slideshare.net/mzurmuehlen/"&gt;mzurmuehlen&lt;/a&gt;, 1 month ago&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_147270"&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=business-process-management-standards-tutorial-1193487462112150-4"/&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=business-process-management-standards-tutorial-1193487462112150-4" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;&lt;a href="http://www.slideshare.net/?src=embed"&gt;&lt;img src="http://static.slideshare.net/swf/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare"/&gt;&lt;/a&gt; | &lt;a href="http://www.slideshare.net/mzurmuehlen/business-process-management-standards-tutorial" title="View 'Business Process Management Standards Tutorial' on SlideShare"&gt;View&lt;/a&gt; | &lt;a href="http://www.slideshare.net/upload"&gt;Upload your own&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PDF download: http://bpm07.fit.qut.edu.au/program/slides/Thursday/Thursday-Tutorials/Muehlen.pdf&lt;br /&gt;Audio recording:&lt;br /&gt;http://bpm07.fit.qut.edu.au/program/audio/Thursday/Tutorials/zurMuehlen.jsp&lt;br /&gt;This Tutorial on BPM standards was delivered at the 5th International Conference on Business Process Management (BPM 2007) in Brisbane Australia, August 2007, by Michael zur Muehlen (mzurmuehlen@stevens.edu)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.slideshare.net/mzurmuehlen/business-process-management-standards-tutorial"&gt;SlideShare Link&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;img style="visibility:hidden;width:0px;height:0px;" border=0 width=0 height=0 src="http://counters.gigya.com/wildfire/CIMP/JnB*PTExOTY5OTkyMTQ4OTAmcD*xMDE5MSZkPSZuPWJsb2dnZXI=.jpg" /&gt;&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-7884970537898648161?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/7884970537898648161/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=7884970537898648161' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7884970537898648161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7884970537898648161'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2007/12/i-want-to-live-in-this-world-but-it-is.html' title='I want to live in this world, but it is not going to happen in my lifetime'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-4909489790851187577</id><published>2007-09-02T15:14:00.001+08:00</published><updated>2007-09-02T15:14:48.402+08:00</updated><title type='text'>logging yourself</title><content type='html'>"凡人的一天马上就会被历史忘记，但是一天里众多凡人的生活却是历史的真实写照。"&lt;br&gt;&lt;br&gt;把身边发生的大大小小的事情都记录下来，是个奇怪的习惯。&lt;br&gt;早上爬起来处理最近遇到的琐事，电话卡、消费记录、回复邮件...如果没有google日历还真不知道怎么管理这些东西。想必有一天等信用卡能够覆盖我大部分正常的消费记录的时候，我只需要一部手机和一部笔记本，当然还有网线...无论我走到哪里，只要连上了这些服务、我所有的历史都可以被轻易的找到：某年某月某日某时某刻，在什么地方做了什么事，联系了什么人、有怎样的照片、怎样的录音，还有什么样的视频...在这一刻当另一个人具有和我同样的经历时，无数本来正交的信息定格在这一刻，记录我们生活的电子们发生着激烈的碰撞。拍成电影一定很有趣。 &lt;br&gt;想想看，你只是在故宫太和殿前拍了一张照片，摄影师帮你摁下快门，携带着metadata的jpg文件可以从相机通过蓝牙传到手机或者具有无线网络的终端上，它会被上传至你的电子相册，或许携带账户信息的手机还可以把你的位置也保存下来，这样你有了比较完整的信息记录，以后什么时候想起来的时候，再来访问这些个在线服务就可以得到他。这时候你有当时的游览地图、印有你自己形象的图片、也许你可以录些声音在上面，这样的回忆也许会更亲切些。&lt;br&gt;"你想给它起什么名字呢？"  &lt;br&gt;"叫做最伟大的宫殿吧！"&lt;br&gt;&lt;br&gt;最重要的是，这些围绕在我们生活之间的服务为我们每一个人提供了有趣的日志，一旦我们通过邮件联系人、博客或者社区实现共享，其威力难以想象。如果我搜索当时当地所有可以共享游览地图，显然有不少信息在上面。这些在时间和空间上巨大的数据之间产生的关系，足以映射一个栩栩如生的视觉和听觉空间，从时间尺度上来看，它还是可重复的。需要这些信息的人们将得到无比丰富和全面的体验。&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-4909489790851187577?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/4909489790851187577/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=4909489790851187577' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/4909489790851187577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/4909489790851187577'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2007/09/logging-yourself.html' title='logging yourself'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-5937508901082716053</id><published>2007-08-26T10:27:00.001+08:00</published><updated>2007-08-26T10:27:18.489+08:00</updated><title type='text'>How do we see 'Agile'?</title><content type='html'>&lt;a href="http://www.infoq.com/articles/agile-kanban-boards"&gt;http://www.infoq.com/articles/agile-kanban-boards&lt;/a&gt;&lt;br&gt;&lt;br&gt;呵呵，作者是Jude的创建者。那个很好用的UML绘图工具。&lt;br&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-5937508901082716053?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/5937508901082716053/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=5937508901082716053' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/5937508901082716053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/5937508901082716053'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2007/08/how-do-we-see-agile.html' title='How do we see &apos;Agile&apos;?'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-7033875070056241314</id><published>2007-06-24T11:09:00.001+08:00</published><updated>2007-06-24T11:09:27.225+08:00</updated><title type='text'>Web应用测试工具</title><content type='html'>&lt;a href="http://tools.pingdom.com/"&gt;http://tools.pingdom.com/&lt;/a&gt;&lt;br&gt;&amp;quot;ping dom&amp;quot;,名字很有趣，可以用来测试你的Web在浏览器上的加载顺序和连接速度。图示非常直观。&lt;br&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-7033875070056241314?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/7033875070056241314/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=7033875070056241314' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7033875070056241314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7033875070056241314'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2007/06/web.html' title='Web应用测试工具'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-6896257252979340833</id><published>2007-06-24T11:05:00.001+08:00</published><updated>2007-06-24T11:05:13.577+08:00</updated><title type='text'>有趣的地图</title><content type='html'>&lt;a href="http://www.mintoforestview.com/fv3/map.asp"&gt;http://www.mintoforestview.com/fv3/map.asp&lt;/a&gt;&lt;br&gt;from &lt;a href="http://ajaxian.com"&gt;ajaxian.com&lt;/a&gt;&lt;br&gt;可以看到平面图和房子的布局，非常方便啊&lt;br&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-6896257252979340833?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/6896257252979340833/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=6896257252979340833' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/6896257252979340833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/6896257252979340833'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2007/06/blog-post.html' title='有趣的地图'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-7541356844052099781</id><published>2007-05-28T12:17:00.001+08:00</published><updated>2007-05-28T12:17:58.443+08:00</updated><title type='text'>学术活动日历</title><content type='html'>学校的学术活动日历的确给了我们很大方便，很早以前就想有这么一个应用程序，可以把每天校园里发生的活动提前发布出来，现在有了内容发布功能和相关邮件列表，的确很方便。&lt;br&gt;2003年的时候，最早的活动日历发布在内部学生网站中，团委为此还组织了单独的学生组织来维护。那时候活动很少，大家也很少用；&lt;br&gt;2004年以后可以通过在校内办公系统订阅学术活动的邮件列表，虽然只能发到服务质量很一般的校内邮箱；&lt;br&gt;2004-2005年有了&amp;quot;学术活动发布与订制系统&amp;quot;，具有了基本内容发布的功能，这时候我在系里开发的综合信息服务系统里的学生工作模块有了个小小的&amp;quot;学术活动&amp;quot;功能，为此在那一大堆平台技术细节中开发出这么一个基本上没有人用的dd真是划不来；&lt;br&gt;2006年4月有了google calendar.经过这么长时间的进化，有了Atom支持和比较全面的用户访问支持。每次把邮件列表里面的邮件内容搬到另一个表单，手工复制粘贴，只是利用大脑分析下语义然后做些字段映射，这些活动只需要一个有语义支持的Atom服务就搞定的。&lt;br&gt;2007年，不知道什么时候Atom feed这样的dd可以在学校普及，然后大家可以在Atom feed和REST serivices的世界中根据自己的喜好发明各种各样的视图，或者直接扔给google services&lt;p&gt;有时间的时候可以自己做一个这样的Semantic Atom Service&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-7541356844052099781?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/7541356844052099781/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=7541356844052099781' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7541356844052099781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7541356844052099781'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2007/05/blog-post_28.html' title='学术活动日历'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-7650786308336527895</id><published>2007-05-20T10:59:00.001+08:00</published><updated>2007-05-20T10:59:33.032+08:00</updated><title type='text'>“我看不懂”</title><content type='html'>这是最近在线下听到我blog观众最多的回答。&lt;br&gt;也许计算机和Internet的内容让大家看了觉得没劲，同事和领导看了肯定会有些不同的观点，幸好这些观点都可以讨论和交流，但是听到"我看不懂"，的确是最大的失败。就好比我们做出来的产品拿到市场里交给用户，收到更多反馈的声音是"我不会用"，"你们的产品可以做什么？"，"这个东西是什么意思？"……&lt;br&gt;&lt;br&gt;昨天晚上在看&lt;a href="http://www.basecamphq.com/?ref=free"&gt; Basecamp&lt;/a&gt;，想看看37signals.com坚信的用户需求到底是否可以满足我的需要，一想起即将毕业的兄弟姐妹们需要一个网络家园，索性就用这个项目管理的服务来试试好了：有日历、文件仓库、todolist、项目和协作功能等基本功能，在桌面都可以找到相应的应用程序，只要Basecamp提供REST Service，为我的用户们开发更为定制化的服务就成为可能，甚至将&lt;a href="http://www.newsmth.net"&gt;newsmth.net &lt;/a&gt;、&lt;a href="http://xiaonei.com"&gt;xiaonei.com&lt;/a&gt;、msn messenger和TencentQQ之类的东东mashup到一起，再映射到&lt;a href="http://maps.google.com"&gt;googlemap&lt;/a&gt;、&lt;a href="http://secondlife.com/"&gt;secondlife&lt;/a&gt;之类新的虚拟世界，使得我们这些互联网的种子更加茁壮的成长，而不用去管什么分布式计算或者信息系统。但是最大的问题在于，有多少用户理解这些工作的价值呢？至少我觉得还需要一段时间才能说服我的亲人和朋友们接受。 &lt;br&gt;&lt;br&gt;我们可以把中国移动提供的cmwap代理通过蓝牙和Thinkpad连接到一起，但是有多少用户接受通过修改浏览器的user-agent绕过代理服务器的过滤并且只能接受无状态的HTTP通信？上次和移动的客服较劲45分钟，除了让他知道移动提供的网络服务毫无质量可言和一张30元的充智卡之外毫无结果。&lt;br&gt;&lt;br&gt;我是不是又犯用复杂方法解决简单问题的老毛病了？&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-7650786308336527895?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/7650786308336527895/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=7650786308336527895' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7650786308336527895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/7650786308336527895'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2007/05/blog-post_19.html' title='“我看不懂”'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-8638024406818452056</id><published>2007-05-09T23:43:00.001+08:00</published><updated>2007-05-09T23:48:39.823+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>来自Gmail</title><content type='html'>&lt;a href="http://shawnzhu.blogspot.com/"&gt;me&lt;/a&gt;:"大家为什么用live.com的spaces写博客啊？"&lt;br /&gt;&lt;a href="http://savemycolor.spaces.live.com/"&gt;saveMyColor&lt;/a&gt;:"要不是MSN（Messenger），谁用spaces啊，那么慢……"&lt;br /&gt;&lt;br /&gt;第一次用Gmail写blog,&lt;a href="http://%e4%b8%8d%e9%9c%80%e8%a6%81%e7%99%bb%e9%99%86blogger.com/"&gt; &lt;/a&gt;不需要登陆&lt;a href="http://%e4%b8%8d%e9%9c%80%e8%a6%81%e7%99%bb%e9%99%86blogger.com/"&gt;blogger.com&lt;/a&gt; ，仿佛 &lt;span style="color: rgb(0, 0, 153); background-color: rgb(204, 204, 255); text-decoration: underline; font-weight: bold;"&gt;Compose Mail&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); text-decoration: underline;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt; 变成了blogger.com的 &lt;span style="font-weight: bold; background-color: rgb(255, 204, 255);"&gt;创建&lt;/span&gt; 标签，唯一不足的便是文本编辑器的工具栏少了几个有趣的按钮，尤其是HTML编辑功能没有了（记得去年听 &lt;a href="http://www.ibm.com/developerworks/blogs/page/BobSutor"&gt;Bob Sutor&lt;/a&gt;的报告时，他自己写blog的时候最喜欢直接编辑HTML），少了很多乐趣，但是多了自动保存功能，这个还是不错滴。&lt;br /&gt;&lt;br /&gt;有时候将我们平时使用的这些Web应用程序拿出来晒晒，有不少有趣的地方：hotmail和gmail的邮件有了日历集成，Spaces和blogger.com变成了个人内容发布的阵地，gmail 甚至还集成了GTalk, 至于邮件本身（这篇&lt;a href="http://mashable.com/2007/05/07/live-hotmail-gmail/"&gt;文章&lt;/a&gt;的确应该读一下），tag或者label这样的小功能的确方便，再配合邮件过滤器实现自动分类，有时候真的觉察到&lt;a href="http://en.wikipedia.org/wiki/Software_as_a_Service"&gt;SaaS&lt;/a&gt;为软件带来了无穷的创新空间，这背后，也许是还未被细致化的RIA 编程模型吧……&lt;br /&gt;&lt;br /&gt;有一点非常重要，google.com的这些个应用程序都提供&lt;a href="http://en.wikipedia.org/wiki/Atom_%28standard%29"&gt;Atom&lt;/a&gt;服务，包括日历、博客、邮件、相册……其背后的GData API也许应该拿下一次的Jolt数据库大奖，从而标志着Atom时代的到来，那时候我们就可以说：互联网世界也是由"Atom"组成的。&lt;br /&gt;&lt;br /&gt;那么，接下来这些Feed门户哪一个将成为明星呢？ 有时候观察着netvibes.com逐渐壮大完善，不仅钦佩起这些富有创造性和艺术性的法国人，而且在最初阶段毫不保留的贡献了其全部脚本，后来也只是去掉了缩进和注释，有时候觉得奇怪：难道这些人不懂得用混淆器可以大幅度减少脚本网络传输的时间成本么？难道不知道自己的竞争对手都用各式各样的混淆技术么？可能自己的软件生产方式不够先进吧……&lt;br /&gt;&lt;br /&gt;写完日程记录，看看时间――10:30PM，我那些日程紧的朋友们在咖啡店讨论完工作，还得赶回研究院照看独自运行的程序；也许努力的同事们还在加班；一同为毕业奋斗的同仁们正在思考论文；校园里一路上遇到的都是晚自习归来的学生……现在渐入梦境，是最幸福的吧：〉&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); background-color: rgb(204, 204, 255);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-8638024406818452056?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/8638024406818452056/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=8638024406818452056' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/8638024406818452056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/8638024406818452056'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2007/05/gmail.html' title='来自Gmail'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3455839719985060729.post-2133891276830462787</id><published>2007-05-05T20:37:00.000+08:00</published><updated>2007-05-05T21:23:42.521+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='simplicity'/><title type='text'>折叠凳和棍棒</title><content type='html'>第一次听说&lt;a href="http://www.rubyonrails.org/"&gt;Rails&lt;/a&gt;还是在去年年初，霏昀同学告诉我，他准备用Rails完成毕设课题，本来导师要求用java的。&lt;br /&gt;“为什么？”&lt;br /&gt;“开发起来特别快。”&lt;br /&gt;&lt;br /&gt;求职的时候"Rails"赫然在目，感兴趣的web开发职位都有这么个名词，不禁感慨世界变化之迅速：两年前还在用差不多10年前的&lt;span style="font-weight: bold;"&gt;A&lt;/span&gt;SP技术，到后来用10岁的&lt;span style="font-weight: bold;"&gt;J&lt;/span&gt;ava，如今&lt;span style="font-weight: bold;"&gt;R&lt;/span&gt;uby也有10多岁高龄了。（有没有&lt;span style="font-weight: bold;"&gt;Z&lt;/span&gt;开头且超过10岁技术？）&lt;br /&gt;&lt;br /&gt;经理给我了一项任务，不带偏见地学习Rails. 后来我告诉他Rails很简单，但是Ruby不是那么容易。比如Rails里面支持Ajax只是用了Helper和rjs作脚本模板，对REST的支持还只是url routing+xml resource等等。待到今天看来，这些简单的地方不在于用较少的时间完成了一定需求的功能，更重要的在于，为什么Rails这样做？为什么Java不这样做？&lt;br /&gt;&lt;br /&gt;有一天同事问我：&lt;br /&gt;“去哪里找Web services provider？”&lt;br /&gt;"Amazon的&lt;a href="http://aws.amazon.com/"&gt;AWS&lt;/a&gt;啊，或者自己写一个。"&lt;br /&gt;后来想了想，用&lt;a href="http://ws.apache.org/axis/"&gt;Axis&lt;/a&gt;写一个sample需要多久？用Eclipse+&lt;a href="http://geronimo.apache.org/"&gt;Geronimo&lt;/a&gt;为一个Web应用暴露Web service Endpoint需要多久？用Rails呢？计时过后发现，原来用最后这个开发以mysql为后台的Web service provider，只需要差不多5分钟而已……而这个时间和在Eclipse里面重启几次Geronimo服务器的时间差不多。&lt;br /&gt;&lt;br /&gt;看到Rails中scaffold的实现，不禁惊呼：“原来是这样！我怎么没想到。。。”有时候这种“固执己见”的开发框架的确有可爱之处：最重要的问题是，Rails告诉了我们，如何去理解“简单”这件事。&lt;br /&gt;这些神奇的软件背后是一个叫做&lt;a href="http://www.37signals.com/"&gt;37signals&lt;/a&gt;的公司，37只是一个质数而已（&lt;a href="http://www.chedong.com/blog/archives/000876.html"&gt;用质数命名的网站&lt;/a&gt;），但我们从中获取了无尽的&lt;a href="http://www.37signals.com/svn/posts/230-a-spoon-or-a-jackhammer"&gt;想象力&lt;/a&gt;：“这么小的一个团队是怎么完成这么多项目的？五个产品、一本书、Rails（译者注：ruby的web框架），还有一个颇受欢迎的博客。我们比你们拥有多得多的钞票、人力、硬件资源和技术，但是我们好像什么事也完不成？秘密是什么？”&lt;br /&gt;&lt;br /&gt;有时侯不得不承认，勺子比手提钻要有用的多；再想想香港暴力电影，折叠凳要比砍刀棍棒强多了。&lt;div class="blogger-post-footer"&gt;The postings on this site are my own and don’t necessarily represent my employer's positions, strategies or opinions.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3455839719985060729-2133891276830462787?l=shawnzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shawnzhu.blogspot.com/feeds/2133891276830462787/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3455839719985060729&amp;postID=2133891276830462787' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/2133891276830462787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3455839719985060729/posts/default/2133891276830462787'/><link rel='alternate' type='text/html' href='http://shawnzhu.blogspot.com/2007/05/blog-post.html' title='折叠凳和棍棒'/><author><name>轩印</name><uri>http://www.blogger.com/profile/07333034473201401206</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yDzzBr2ZTr8/SQQBqyOutzI/AAAAAAAAAAQ/0LYo_3eOZrk/s1600-R/file.php%3Favatar%3D198_1196594280.jpg'/></author><thr:total>0</thr:total></entry></feed>
