<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">

<channel>
	<title>Yining.write() &#187; Tech</title>
	<atom:link href="http://www.yining.org/category/tech/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yining.org</link>
	<description>public virtual stream Yining.write()</description>
	<lastBuildDate>Fri, 04 Jun 2010 12:01:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>		<item>
		<title>Code Swarm</title>
		<link>http://www.yining.org/2010/05/12/codeswarm/</link>
		<comments>http://www.yining.org/2010/05/12/codeswarm/#comments</comments>
		<pubDate>Tue, 11 May 2010 16:34:34 +0000</pubDate>
		<dc:creator>Yining</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[codeswarm]]></category>
		<category><![CDATA[code_swarm]]></category>
		<category><![CDATA[infographics]]></category>
		<category><![CDATA[scm]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://www.yining.org/?p=380</guid>
		<description><![CDATA[codeswarm 是个很有意思的工具，它把一个软件开发项目中开发者往代码管理工具(git/hg/svn等)提交代码的历史记录用视频的方式表现出来。
这是我把之前在做的一个项目的svn log 做成的codeswarm演示:

稍微注意就能看出，项目初期过了一段时间commit才开始活跃起来，code base比较小，代码也比较集中，后来虽然项目比较赶，但在公共假期（十一元旦春节）内，没有或者几乎没有代码提交。
这个视频在两个月前一次员工培训的PPT里演示过，发现从一个有趣、动态的角度来观察自己的工作让工程师们在感到非常新奇之外，能有效激发他们频繁提交代码的动力（使用中心化的scm如svn时，工程师们不是那么积极提交，即使口头上说过好几次）。建议不妨给项目写个脚本定期制作和发布codeswarm的视频，让工程师们主动频繁提交代码的效果也许比任何考核要好。
虽然直接运行codeswarm就能得好很不错的效果，它还提供了灵活的配置选项，比如我这个codeswarm里就添加了legend,并且自定义了不同文件类型所对应的颜色。
除了scm的提交历史外，codeswarm目前已经mediawiki的更新记录，维基百科的志愿者不妨试试，也许能从一个新的角度去了解和介绍维基百科。
另外提一下，随着web的发展，越来越多的数据被产生，因此数据分析的要求也必然会越来越多，而用图形来展示不同数据之间的关系（即data visualization, infographics）也会越来越重要。这又要提一下processing这个很适合制作infographics的语言，codeswarm就是用了processing的。

Code_swarm的主页
google code上的项目代码，wiki上有制作视频的步骤的详细介绍，在这就不写了。

]]></description>
			<content:encoded><![CDATA[<p>codeswarm 是个很有意思的工具，它把一个软件开发项目中开发者往代码管理工具(git/hg/svn等)提交代码的历史记录用视频的方式表现出来。</p>
<p>这是我把之前在做的一个项目的svn log 做成的codeswarm演示:</p>
<p><object type="application/x-shockwave-flash" width="400" height="300" data="http://www.flickr.com/apps/video/stewart.swf?v=71377" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="flashvars" value="intl_lang=en-us&#038;photo_secret=87c52cd96a&#038;photo_id=4434166299"></param><param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=71377"></param><param name="bgcolor" value="#000000"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=71377" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&#038;photo_secret=87c52cd96a&#038;photo_id=4434166299" height="300" width="400"></embed></object></p>
<p>稍微注意就能看出，项目初期过了一段时间commit才开始活跃起来，code base比较小，代码也比较集中，后来虽然项目比较赶，但在公共假期（十一元旦春节）内，没有或者几乎没有代码提交。</p>
<p>这个视频在两个月前一次员工培训的PPT里演示过，发现从一个有趣、动态的角度来观察自己的工作让工程师们在感到非常新奇之外，能有效激发他们频繁提交代码的动力（使用中心化的scm如svn时，工程师们不是那么积极提交，即使口头上说过好几次）。建议不妨给项目写个脚本定期制作和发布codeswarm的视频，让工程师们主动频繁提交代码的效果也许比任何考核要好。</p>
<p>虽然直接运行codeswarm就能得好很不错的效果，它还提供了灵活的配置选项，比如我这个codeswarm里就添加了legend,并且自定义了不同文件类型所对应的颜色。</p>
<p>除了scm的提交历史外，codeswarm目前已经mediawiki的更新记录，维基百科的志愿者不妨试试，也许能从一个新的角度去了解和介绍维基百科。</p>
<p>另外提一下，随着web的发展，越来越多的数据被产生，因此数据分析的要求也必然会越来越多，而用图形来展示不同数据之间的关系（即data visualization, infographics）也会越来越重要。这又要提一下<a href="http://processing.org/">processing</a>这个很适合制作infographics的语言，codeswarm就是用了processing的。</p>
<ul>
<li><a href="http://vis.cs.ucdavis.edu/~ogawa/codeswarm/">Code_swarm的主页</a></li>
<li><a href="http://code.google.com/p/codeswarm/">google code上的项目代码</a>，wiki上有制作视频的步骤的详细介绍，在这就不写了。</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.yining.org/2010/05/12/codeswarm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>从HTTP GET和POST的区别说起</title>
		<link>http://www.yining.org/2010/05/04/http-get-vs-post-and-thoughts/</link>
		<comments>http://www.yining.org/2010/05/04/http-get-vs-post-and-thoughts/#comments</comments>
		<pubDate>Tue, 04 May 2010 11:05:41 +0000</pubDate>
		<dc:creator>Yining</dc:creator>
				<category><![CDATA[Random Thoughts]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[学习]]></category>

		<guid isPermaLink="false">http://www.yining.org/?p=371</guid>
		<description><![CDATA[在推特上抱怨面试时问HTTP GETE和POST的区别得到回答都不满意，有人不清楚，当时只回复了看 RFC2616。趁有空说说
面试时得到的回答大多是：POST是安全的，因为被提交的数据看不到，或者被加密的，其它的还有GET的时候中文出现乱码（在地址栏里），数据最大长度限制等等。
说 POST 比 GET 安全肯定是错的，POST跟GET都是明文传输，用httpfox等插件，或者像WireShark 等类似工具就能观察到。
POST和GET的差别其实是很大的。语义上，GET是获取指定URL上的资源，是读操作，重要的一点是不论对某个资源GET多少次，它的状态是不会改变的，在这个意义上，我们说GET是安全的（不是被密码学或者数据保护意义上的安全）。因为GET是安全的，所以GET返回的内容可以被浏览器，Cache服务器缓存起来（其中还有很多细节，但不影响这里的讨论）。
而POST的语意是对指定资源“追加/添加”数据，所以是不安全的，每次提交的POST，参与的代码都会认为这个操作会修改操作对象资源的状态，于是，浏览器在你按下F5的时候会跳出确认框，缓存服务器不会缓存POST请求返回内容。
很遗憾到目前为止没有应聘者能够提到这一点。我猜测这背后的原因大概有两个，一是也许大多数人往往（我也一样）满足于只要完成任务就好，不管用哪个，表单提交了，数据处理了，内容显示或者重新定向到另外一个页面，就算完成了一个任务，从任务表里划掉，结束。而且对大部分项目(OA, CRM, MIS)的大部分情况下，用哪个似乎都可以。
同时，在被商业机构在媒体和书籍上宣传兜售的WS-*概念和使用集成开发环境提供的“方便”的代码生成工具后，“了解”到所有Web服务调用都是通过POST，更潜意识里确定了POST和GET是一样的，而且GET能做的，POST都能做，POST简直就是GET++嘛。自然，能用POST就用POST，不必在乎两者的差别了。
这又让我想起最近学到的一个概念: Radius Of Comprehension，理解的半径:
当学习概念A的时候，需要先了解概念B，而概念C又是理解B的前提。当B和C都是新的需要学习的概念时，可以说A的理解半径是2，如图:

A --> B --> C
&#124;--1--&#124;--2--&#124;

在学习Web开发时，接触到GET和POST时，“理解的半径”可能包涵:

POST vs. GET
     &#124;---> Conditional GET -> ETag -> Cache
     &#124;         `--> Status Code
     `---> HTTP的方法 --> URL

往往因为仅仅满足于完成手上被要求的任务，或者懒于问一个为什么，我们就把自己的理解半径设置成零，那么就学不到更深入的东西，也因此仅仅知道POST和GET不同，而不再会了解不同在哪里，什么是Conditional GET和缓存header等概念。
从一个简单的面试问题谈到这，貌似小题大作了，写到哪算哪吧。 [...]]]></description>
			<content:encoded><![CDATA[<p>在推特上<a href="http://twitter.com/yining/status/12993863581">抱怨面试时问HTTP GETE和POST的区别得到回答都不满意</a>，有人不清楚，当时只回复了看 RFC2616。趁有空说说</p>
<p>面试时得到的回答大多是：POST是安全的，因为被提交的数据看不到，或者被加密的，其它的还有GET的时候中文出现乱码（在地址栏里），数据最大长度限制等等。</p>
<p>说 POST 比 GET 安全肯定是错的，POST跟GET都是明文传输，用<a href="http://code.google.com/p/httpfox/">httpfox</a>等插件，或者像<a href="http://www.wireshark.org/">WireShark </a>等类似工具就能观察到。</p>
<p>POST和GET的差别其实是很大的。语义上，GET是获取指定URL上的资源，是读操作，重要的一点是不论对某个资源GET多少次，它的状态是不会改变的，在这个意义上，我们说GET是安全的（不是被密码学或者数据保护意义上的安全）。因为GET是安全的，所以GET返回的内容可以被浏览器，Cache服务器缓存起来（其中还有很多细节，但不影响这里的讨论）。</p>
<p>而POST的语意是对指定资源“追加/添加”数据，所以是不安全的，每次提交的POST，参与的代码都会认为这个操作会修改操作对象资源的状态，于是，浏览器在你按下F5的时候会跳出确认框，缓存服务器不会缓存POST请求返回内容。</p>
<p>很遗憾到目前为止没有应聘者能够提到这一点。我猜测这背后的原因大概有两个，一是也许大多数人往往（我也一样）满足于只要完成任务就好，不管用哪个，表单提交了，数据处理了，内容显示或者重新定向到另外一个页面，就算完成了一个任务，从任务表里划掉，结束。而且对大部分项目(OA, CRM, MIS)的大部分情况下，用哪个似乎都可以。</p>
<p>同时，在被商业机构在媒体和书籍上宣传兜售的WS-*概念和使用集成开发环境提供的“方便”的代码生成工具后，“了解”到所有Web服务调用都是通过POST，更潜意识里确定了POST和GET是一样的，而且GET能做的，POST都能做，POST简直就是GET++嘛。自然，能用POST就用POST，不必在乎两者的差别了。</p>
<p>这又让我想起最近学到的一个概念: Radius Of Comprehension，理解的半径:</p>
<p>当学习概念A的时候，需要先了解概念B，而概念C又是理解B的前提。当B和C都是新的需要学习的概念时，可以说A的理解半径是2，如图:</p>
<pre>
A --> B --> C
|--1--|--2--|
</pre>
<p>在学习Web开发时，接触到GET和POST时，“理解的半径”可能包涵:</p>
<pre>
POST vs. GET
     |---> Conditional GET -> ETag -> Cache
     |         `--> Status Code
     `---> HTTP的方法 --> URL
</pre>
<p>往往因为仅仅满足于完成手上被要求的任务，或者懒于问一个为什么，我们就把自己的理解半径设置成零，那么就学不到更深入的东西，也因此仅仅知道POST和GET不同，而不再会了解不同在哪里，什么是Conditional GET和缓存header等概念。</p>
<p>从一个简单的面试问题谈到这，貌似小题大作了，写到哪算哪吧。 </p>
<p>&lt;UPDATE&gt;<br />
看到Fenng <a href="http://www.google.com/buzz/dbanotes/BuxABaL5oam/%E4%BB%8EHTTP-GET%E5%92%8CPOST%E7%9A%84%E5%8C%BA%E5%88%AB%E8%AF%B4%E8%B5%B7-Yining">Buzz 了这篇文字</a>，引起一些评论，因此在这再讨论两个概念: <a href="http://tools.ietf.org/html/rfc2616#section-9.1">安全的(Safe)和幂等的(Idempotent)</a>。</p>
<p>安全的是指没有明显的对用户有影响的副作用(包括修改该资源的状态)。HTTP方法里的GET和HEAD都是安全的。</p>
<p>幂等的是指一个方法不论多少次操作，结果都是一样。PUT(把内容放到指定URL)，DELETE(删除某个URL代表的资源)，虽然都修改了资源内容，但多次操作，结果是相同的，因此和HEAD，GET一样都是幂等的。</p>
<p>所以根据HTTP协议，GET是安全的，也是幂等的，而POST既不是安全的，也不是幂等的。<br />
&lt;/UPDATE&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yining.org/2010/05/04/http-get-vs-post-and-thoughts/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Another great prototype tool &#8211; WireframeSketcher</title>
		<link>http://www.yining.org/2009/06/08/wireframesketcher-review/</link>
		<comments>http://www.yining.org/2009/06/08/wireframesketcher-review/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 06:01:27 +0000</pubDate>
		<dc:creator>Yining</dc:creator>
				<category><![CDATA[WebDesign]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[mockup]]></category>
		<category><![CDATA[prototype]]></category>

		<guid isPermaLink="false">http://www.yining.org/?p=342</guid>
		<description><![CDATA[I have enjoyed paper/white-board prototyping for a long time, even made it my teams&#8217; one of first &#8220;rules of engagement&#8221;. I have also been a big fan of Balsamiq Mockups, and today I would like to introduce you another great quick prototyping tool: WireframeSketcher.
In a nutshell, WireframeSketcher is, as its home page says:

WireframeSketcher is an [...]]]></description>
			<content:encoded><![CDATA[<p>I have enjoyed paper/white-board prototyping for a long time, even made it my teams&#8217; one of first &#8220;rules of engagement&#8221;. I have also been a big fan of Balsamiq Mockups, and today I would like to introduce you another great quick prototyping tool: <a href="http://wireframesketcher.com/">WireframeSketcher</a>.</p>
<p>In a nutshell, WireframeSketcher is, as its home page says:</p>
<blockquote><p>
WireframeSketcher is an Eclipse plugin for creating wireframes, screen mockups and UI prototypes.
</p></blockquote>
<p>Having tried it out on two small projects in the last two weeks, I am impressed. It&#8217;s a neat, and pleasant tool to use and fits very well with both my personal and my team&#8217;s development process.</p>
<p>First, a screen-shot showing it in action:</p>
<p><a href="http://www.flickr.com/photos/yining/3603998655/" title="wireframesketcher-screenshot by ZhangYining, on Flickr"><img src="http://farm4.static.flickr.com/3402/3603998655_06f1080193.jpg" width="500" height="305" alt="wireframesketcher-screenshot" /></a></p>
<p>Being an Eclipse plugin, it means</p>
<ul>
<li>developer friendly, as it&#8217;s right inside an environment already familiar to many developers (80% of my team uses eclipse on a daily basis), there is no extra software or framework or platform to install, and developers can just svn up project&#8217;s design mockup folder, then open the mockups in the same IDE, very neat and appealing experience compared to that of other prototype tools;</li>
<li>cross platform;</li>
<li>enjoys the benefits Eclipse plugin infrastructure brings, like update mechanism</li>
</ul>
<p>Highlights I want to mention:</p>
<ul>
<li>The fastest and most responsive prototype tool I have tried and used;</li>
<li>Mockups are stored as xml documents instead of image files, that means it&#8217;s friendly to scm tools like Subversion and diff;
<li>
<li>Has annotation support, good for asynchronous communication;</li>
<li>Grouping of UI elements can be nested, i.e. I can group a label and an input box first, then group them with a button as another group, when ungrouping the latter, the first group of label and input box is still intact;</li>
<li>Presentation of a mockup or a storyboard is handy, it&#8217;s right inside Eclipse. There is no need to export them to images first then pasted to a .ppt file in order to just show the mockups or the sequence of the mockups;</li>
</ul>
<p>The most pleasant surprise to me is &#8220;Master Screen&#8221;, which allows me to pick any existing mockup as the base of a new mockup, this helps save time particularly when many of a site pages share the same header and footer. And there&#8217;s more. When I later make changes to the master screen, all screens that are &#8220;derived&#8221; from it automatically get updated without their xml files being modified (again, very friendly to Subversion and the like).</p>
<p>A close look of my sample mockups:</p>
<p><a href="http://www.flickr.com/photos/yining/3604672304/" title="wireframesketcher-1 by ZhangYining, on Flickr"><img src="http://farm3.static.flickr.com/2484/3604672304_dbdc046073.jpg" width="500" height="455" alt="wireframesketcher-1" /></a></p>
<p>Storyboard example:</p>
<p><a href="http://www.flickr.com/photos/yining/3603866819/" title="wireframesketcher-storyboard by ZhangYining, on Flickr"><img src="http://farm4.static.flickr.com/3196/3603866819_374bcaf03a.jpg" width="500" height="368" alt="wireframesketcher-storyboard" /></a></p>
<p>Some nitpicks or features I would like to see in the future WireframeSketcher:  </p>
<ul>
<li>annotation does not provide link from notes to the annotated element</li>
<li>I strongly believe url is an important element of user experience, but currently there is no way to specify the url on the browser control (I would suggest it takes two lines of input, the first being the page title, and the second line for the url);</li>
<li>I couldn&#8217;t find a way to reuse a group of UI element, my idea is to allow user to have a collection of custom built (e.g. Paginator, Chinese version of &#8220;Loren Lpsum&#8221;) or assembled controls  or control groups (e.g. a text input field always comes with a label and input box) as a separate category, this would help productivity among a project team at least;</li>
<li>colors support in more controls (e.g. form validation error, and different colors in progress bar, red for slow progressed, and green for complete or near complete)</li>
<li>One feature I particularly like about Balsamiq Mockups is the command line script to batch process (e.g. export to image files), I use it in my Ant build script to export mockup images. I hope this feature is coming to WireframeSketcher soon;</li>
<li>Hopefully, a community could grow out of this tool, like what Balsamiq has achieved with <a href="http://www.mockupstogo.net/">Mockups To Go</a>;
</ul>
<p>Conclusion? I would strongly encourage any developer or any development team that live and breathe in Eclipse to give WireframeSketcher a serious try.</p>
<p>Oh, did I mention a tiny problem with it being an eclipse plugin? <a href="http://www.rescuetime.com">RescueTime</a> now can not tell if I am actually using a Dev Tool or a Design Tool &#8230; But heck, I sure can live with that given such a great prototype tool.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yining.org/2009/06/08/wireframesketcher-review/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>又脱了</title>
		<link>http://www.yining.org/2009/04/09/css-naked-day-2/</link>
		<comments>http://www.yining.org/2009/04/09/css-naked-day-2/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 06:36:55 +0000</pubDate>
		<dc:creator>Yining</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[WebDesign]]></category>
		<category><![CDATA[css-naked-day]]></category>

		<guid isPermaLink="false">http://www.yining.org/?p=337</guid>
		<description><![CDATA[为什么说“又”呢？
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.yining.org/2008/04/09/css-naked-day/">为什么说“又”呢？</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yining.org/2009/04/09/css-naked-day-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>推荐一款界面设计工具 Balsamiq Mockups</title>
		<link>http://www.yining.org/2009/01/09/balsamiq-mockups-review/</link>
		<comments>http://www.yining.org/2009/01/09/balsamiq-mockups-review/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 16:38:14 +0000</pubDate>
		<dc:creator>Yining</dc:creator>
				<category><![CDATA[WebDesign]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[balsamiq]]></category>
		<category><![CDATA[balsamiq-mockups]]></category>
		<category><![CDATA[mockup]]></category>
		<category><![CDATA[prototype]]></category>

		<guid isPermaLink="false">http://www.yining.org/?p=236</guid>
		<description><![CDATA[平时工作中在界面设计的时候，我总是要求工程师先在纸上画图，初步确定后，仅仅用HTML+CSS做出静态的界面再次与用户（主要是其他业务部门）确认后，再动手写实际的代码。
纸上的原型设计是经常使用（至少我自己）的初期设计方式，办公室里用白板（空间大，而且环保些）和马克笔。这种办法不仅快，能尽早发现在文字和口头的沟通上理解不一致的地方，同时也尽可能减少开发成本和因为理解不一致导致返工的情况。纸上的原型设计在可用性上能起到很大作用，也有专门一本书介绍和探讨，这就不多说了。
但是这也有它们本身的不足。首先是没法很好地保留设计和讨论的内容，我曾经尝试用数码相机把白板上的内容拍下来，但仅仅是为了保留，没法有效地在后续的讨论和工作中继续使用。
几年前发现过一个做网站的设计草图的工具软件，Denim，这是一个大学的项目，学术性和尝试性的味道强了些，界面设计上有很多新颖的地方，但毕竟不是从每天蹲在“战壕”中的工程师的角度出发，玩玩可以，实际工作上还是不大可能用上。（附：Denim的截图）。
前阵子发现了一个新软件：Balsamiq Mockups，用下来发现它真正抓住了原型设计的核心与平衡点，既能快速设计草图，又能比较好地进入到平时团队工作的流程和工具中，可以说是击中了原型设计的Sweet Spot，强烈推荐。
先看看截图：

再说说功能和亮点：

操作方面，拖拽，控件分组，甚至元素之间的对齐都做得很贴心；
预制了很多界面元素，从简单的输入框，下拉框，浏览器主要元素，到经常用得到的导航条，日历，表格，到复杂的Tag Cloud，Cover Flow, 地图，WYSWYG的格式工具栏等，有了这些不用从头画起，往往比用白板都快；
界面元素的修改很简单，比如导航条的几个标签页的label，就是用逗号分隔的文字，下拉框的选项就是分行的文字；
使用xml语言来记录和保存界面元素和布局，

这使得每个设计都能被很好得放进SVN，Git，和CVS等工具中进行管理和跟踪；
可以设计复杂的界面元素，保存后，以后可以重复使用（包括修改）；


可以将设计导出成PNG格式的图片；


可以用命令行进行导出操作，这样就能让我写个脚本，从svn里checkout某个目录下的所有设计文件后，导出图片，打包后用邮件发到项目经理，工程师甚至客户那；
跨平台，Balsamiq Mokups是用Flex和Air实现的，所以在Mac OS, Linux和Windows下都能使用；
不仅仅有桌面版本，还有能集成在Confluence，JIRA，和XWiki中的版本，使得异地在线协作更方便有效；

据作者说，现在这款软件的设计就是用它自己来设计的，经典的“吃自己的狗粮”，这也让我对其更有信心，因为它是开发者为开发者写的软件。
更多信息，大家可以到它的网站上了解。
还有值得一提的是Balsamiq Mokups的在GetSatisfaction上的用户支持和服务，作者Peldi对问题报告，新需求的回应很积极和及时。而且根据这个讨论上看，到月底就会有一个专门用来分享界面控件设计的社区网站了，很期待。
再要说的一点是这款软件是要付费的，79美元（也可以免费，具体如何免费，请看网站上的说明），相对于它能节省下来的时间和提高的效率，是很值得的。Peldi说在2008年，这款软件就从1,322位付费用户那获得了162,302美元的收入（其中仅12月份就有39,000美元），这令人鼓舞地证明了只要是提供真正价值的服务和软件，就能够创造很好的收入，即使在经济萧条的寒冬里。
另外说一句, GetSatisfaction也是一个很不错的服务。
]]></description>
			<content:encoded><![CDATA[<p>平时工作中在界面设计的时候，我总是要求工程师先在纸上画图，初步确定后，仅仅用HTML+CSS做出静态的界面再次与用户（主要是其他业务部门）确认后，再动手写实际的代码。</p>
<p><a href="http://en.wikipedia.org/wiki/Paper_prototyping">纸上的原型设计</a>是经常使用（至少我自己）的初期设计方式，办公室里用白板（空间大，而且环保些）和马克笔。这种办法不仅快，能尽早发现在文字和口头的沟通上理解不一致的地方，同时也尽可能减少开发成本和因为理解不一致导致返工的情况。纸上的原型设计<a href="http://www.alistapart.com/articles/paperprototyping">在可用性上能起到很大作用</a>，也有<a href="http://www.paperprototyping.com/">专门一本书介绍和探讨</a>，这就不多说了。</p>
<p>但是这也有它们本身的不足。首先是没法很好地保留设计和讨论的内容，我曾经尝试<a href="http://flickr.com/photos/yining/88144964/in/set-1247998/">用数码相机把白板上的内容拍下来</a>，但仅仅是为了保留，没法有效地在后续的讨论和工作中继续使用。</p>
<p>几年前发现过一个做网站的设计草图的工具软件，<a href="http://dub.washington.edu:2007/projects/denim/">Denim</a>，这是一个大学的项目，学术性和尝试性的味道强了些，界面设计上有很多新颖的地方，但毕竟不是从每天蹲在“战壕”中的工程师的角度出发，玩玩可以，实际工作上还是不大可能用上。（附：<a href="http://flickr.com/photos/yining/29077927/in/set-1247998/">Denim的截图</a>）。</p>
<p>前阵子发现了一个新软件：<a href="http://www.balsamiq.com/products/mockups">Balsamiq Mockups</a>，用下来发现它真正抓住了原型设计的核心与平衡点，既能快速设计草图，又能比较好地进入到平时团队工作的流程和工具中，可以说是击中了原型设计的Sweet Spot，强烈推荐。</p>
<p>先看看截图：<br />
<a href="http://www.flickr.com/photos/yining/3179518234/" title="balsamiq markup screenshot by ZhangYining, on Flickr"><img src="http://farm4.static.flickr.com/3085/3179518234_47b7d81a11.jpg" width="500" height="439" alt="balsamiq markup screenshot" /></a></p>
<p>再说说功能和亮点：</p>
<ol>
<li>操作方面，拖拽，控件分组，甚至元素之间的对齐都做得很贴心；</li>
<li>预制了很多界面元素，从简单的输入框，下拉框，浏览器主要元素，到经常用得到的导航条，日历，表格，到复杂的Tag Cloud，Cover Flow, 地图，WYSWYG的格式工具栏等，有了这些不用从头画起，往往比用白板都快；</li>
<li>界面元素的修改很简单，比如导航条的几个标签页的label，就是用逗号分隔的文字，下拉框的选项就是分行的文字；</li>
<li>使用xml语言来记录和保存界面元素和布局，
<ol>
<li>这使得每个设计都能被很好得放进SVN，Git，和CVS等工具中进行管理和跟踪；</li>
<li>可以设计复杂的界面元素，保存后，以后可以重复使用（包括修改）；</li>
</ol>
</li>
<li>可以将设计导出成PNG格式的图片；<br />
<a href="http://www.flickr.com/photos/yining/3179518230/" title="balsamiq mokup exported to png by ZhangYining, on Flickr"><img src="http://farm4.static.flickr.com/3451/3179518230_5ec1947cb9_m.jpg" width="240" height="164" alt="balsamiq markup exported to png" /></a>
</li>
<li>可以用命令行进行导出操作，这样就能让我写个脚本，从svn里checkout某个目录下的所有设计文件后，导出图片，打包后用邮件发到项目经理，工程师甚至客户那；</li>
<li>跨平台，Balsamiq Mokups是用Flex和Air实现的，所以在Mac OS, Linux和Windows下都能使用；</li>
<li>不仅仅有桌面版本，还有能集成在Confluence，JIRA，和XWiki中的版本，使得异地在线协作更方便有效；</li>
</ol>
<p>据作者说，现在这款软件的设计就是用它自己来设计的，经典的“吃自己的狗粮”，这也让我对其更有信心，因为它是<em style="font-weight:bold">开发者为开发者写的软件</em>。</p>
<p>更多信息，大家可以到<a href="http://www.balsamiq.com/products/mockups">它的网站</a>上了解。</p>
<p>还有值得一提的是<a href="http://getsatisfaction.com/balsamiq">Balsamiq Mokups的在GetSatisfaction上的用户支持和服务</a>，作者<a href="http://getsatisfaction.com/people/peldi">Peldi</a>对问题报告，新需求的回应很积极和及时。而且<a href="http://getsatisfaction.com/balsamiq/topics/balsamiq_design_patterns_website_portal">根据这个讨论上看</a>，到月底就会有一个专门用来分享界面控件设计的社区网站了，很期待。</p>
<p>再要说的一点是这款软件是要付费的，79美元（也可以免费，具体如何免费，请看网站上的说明），相对于它能节省下来的时间和提高的效率，是很值得的。<a href="http://www.balsamiq.com/blog/?p=531">Peldi说在2008年</a>，这款软件就从1,322位付费用户那获得了162,302美元的收入（其中仅12月份就有39,000美元），这令人鼓舞地证明了只要是提供真正价值的服务和软件，就能够创造很好的收入，即使在经济萧条的寒冬里。</p>
<p>另外说一句, <a href="http://getsatisfaction.com">GetSatisfaction</a>也是一个很不错的服务。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yining.org/2009/01/09/balsamiq-mockups-review/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>也算文物：Windows 95和我</title>
		<link>http://www.yining.org/2008/05/05/looking-back-windows-95-and-me/</link>
		<comments>http://www.yining.org/2008/05/05/looking-back-windows-95-and-me/#comments</comments>
		<pubDate>Mon, 05 May 2008 15:13:37 +0000</pubDate>
		<dc:creator>Yining</dc:creator>
				<category><![CDATA[Random Thoughts]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[windows95]]></category>

		<guid isPermaLink="false">http://www.yining.org/?p=157</guid>
		<description><![CDATA[这几天在收拾东西，惊喜地翻出95年买的Windows 95和Plus!一套！那天微软全球同步发布Windows 95，晚上（因为与美国的时差）我和同学一起到Funan Center排队购买。当时发布的媒介分CD和3寸盘两种版本（没有MSDN下载，MSJ杂志也还没改名MSDN），轮到我的时候已经没有CD版了，于是先拿了3寸盘的，结果后来补了CD，但3寸盘也留下了。
当时还在上学，系里有个很有名的教授(AP)，出版过IBM360(?)操作系统的专著，于是当年操作系统有一个学期的一大部分课时就是听这个瘦小精干的老头侃IBM的JCL(Job Control Language)。那时候学生个人用的都是DOS和Windows 3.11，学校机房里是Sun的工作站和DEC VAX的终端，几乎没人知道离开自己一个北半球的地方有个将在几年内影响全球IT界的Linux。
那个JCL让我昏昏欲睡，虽然老教授目光炯炯抑扬顿挫，但我知道自己不会在那玩意上浪费哪怕一分钟（当然，要是那时候努力学习并精通的话，也许一辈子工作都有保证了 － 但这既不是当时也不是现在的我想要的）。自己买了Jeffrey Ritcher的Advanced Windows了解Win32，直到现在我还是觉得那是一本非常经典的好书，把Windows上的pre-emptive multi-tasking，32位寻址空间，虚拟内存，线程和进程等操作系统上的核心概念深入浅出解释得很透彻明白，我也从此开始了几年的基于Windows开发的历程，OLE, COM, MTS，COM+, &#8230; 甚至一直到工作上使用Java之后，曾经为了实现EJB Container也向MTS借鉴了一番。
我现在基本上已经不用Windows了，改用Linux已经好几年，而且是直接从网络上下载后安装。大部分人包括我自己都不是技术上的弄潮儿，都是被新的技术和发现不断推着向前冲。想想看，如果回到过去看现在，对一切的变化，一定要比站在此时看过去要感到震惊得多。
Windows 95是自己掏钱买的第一套Windows，也是自己掏钱买的第一套操作系统（本来想说也是最后一套，但是想想，那些随笔记本一起的OEM的Windows XP其实也是自己掏钱买的&#8230;）。
写了上面这些字，回顾一把；拍几张照，纪念一下。
包装盒外观和当时把Windows95作封面的Newsweek和BusinessWeek：

里面的东西，有CDKEY和正版证书 :)

相关链接：

Wikpedia上的Windows 95的介绍

]]></description>
			<content:encoded><![CDATA[<p>这几天在收拾东西，惊喜地翻出95年买的Windows 95和Plus!一套！那天微软全球同步发布Windows 95，晚上（因为与美国的时差）我和同学一起到Funan Center排队购买。当时发布的媒介分CD和3寸盘两种版本（没有MSDN下载，MSJ杂志也还没改名MSDN），轮到我的时候已经没有CD版了，于是先拿了3寸盘的，结果后来补了CD，但3寸盘也留下了。</p>
<p>当时还在上学，系里有个很有名的教授(AP)，出版过IBM360(?)操作系统的专著，于是当年操作系统有一个学期的一大部分课时就是听这个瘦小精干的老头侃IBM的JCL(<a href="http://en.wikipedia.org/wiki/Job_control_language">Job Control Language</a>)。那时候学生个人用的都是DOS和Windows 3.11，学校机房里是Sun的工作站和DEC VAX的终端，几乎没人知道离开自己一个北半球的地方有个将在几年内影响全球IT界的Linux。</p>
<p>那个JCL让我昏昏欲睡，虽然老教授目光炯炯抑扬顿挫，但我知道自己不会在那玩意上浪费哪怕一分钟（当然，要是那时候努力学习并精通的话，也许一辈子工作都有保证了 － 但这既不是当时也不是现在的我想要的）。自己买了Jeffrey Ritcher的<a href="http://www.douban.com/subject/3063405/">Advanced Windows</a>了解Win32，直到现在我还是觉得那是一本非常经典的好书，把Windows上的pre-emptive multi-tasking，32位寻址空间，虚拟内存，线程和进程等操作系统上的核心概念深入浅出解释得很透彻明白，我也从此开始了几年的基于Windows开发的历程，OLE, COM, MTS，COM+, &#8230; 甚至一直到工作上使用Java之后，曾经为了实现EJB Container也向MTS借鉴了一番。</p>
<p>我现在基本上已经不用Windows了，改用Linux已经好几年，而且是直接从网络上下载后安装。大部分人包括我自己都不是技术上的弄潮儿，都是被新的技术和发现不断推着向前冲。想想看，如果回到过去看现在，对一切的变化，一定要比站在此时看过去要感到震惊得多。</p>
<p>Windows 95是自己掏钱买的第一套Windows，也是自己掏钱买的第一套操作系统（本来想说也是最后一套，但是想想，那些随笔记本一起的OEM的Windows XP其实也是自己掏钱买的&#8230;）。</p>
<p>写了上面这些字，回顾一把；拍几张照，纪念一下。</p>
<p>包装盒外观和当时把Windows95作封面的Newsweek和BusinessWeek：</p>
<p><a href="http://www.flickr.com/photos/yining/2467868288/" title="IMG_0539 by ZhangYining, on Flickr"><img src="http://farm4.static.flickr.com/3032/2467868288_bd8ee2c6ac.jpg" width="500" height="375" alt="IMG_0539" /></a></p>
<p>里面的东西，有CDKEY和正版证书 :)</p>
<p><a href="http://www.flickr.com/photos/yining/2467868316/" title="img_0541 by ZhangYining, on Flickr"><img src="http://farm4.static.flickr.com/3029/2467868316_4aba28e2c1.jpg" width="500" height="375" alt="img_0541" /></a></p>
<p>相关链接：</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Windows_95">Wikpedia上的Windows 95的介绍</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.yining.org/2008/05/05/looking-back-windows-95-and-me/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>CSS裸奔日</title>
		<link>http://www.yining.org/2008/04/09/css-naked-day/</link>
		<comments>http://www.yining.org/2008/04/09/css-naked-day/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 16:06:13 +0000</pubDate>
		<dc:creator>Yining</dc:creator>
				<category><![CDATA[WebDesign]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css-naked-day]]></category>
		<category><![CDATA[webstandard]]></category>

		<guid isPermaLink="false">http://www.yining.org/?p=147</guid>
		<description><![CDATA[今天（4月9日）是今年的，也是第三个CSS裸奔日
嗯，如果你是在Feed阅读器上读到这里，是看不出来裸奔效果的，直接点这里看裸奔效果。

CSS裸奔日的中文介绍页面上说活动目的是：

推动Web标准。简洁为美。使用正确的(x)html，语义标记，良好的层次结构。

碰巧，下午给刚来的实习生介绍HTML和CSS，跟很多毕业生一样，他也是没有DreamWeaver一类工具就不会做网页，从来没有接触过Web标准，更不要说相关的开发经验。因此期待能在短短的一个小时内让他体会到使用Web标准的优势是不可能的。
也许只有在实践中实实在在地feel the pain，才会开始欣赏简洁的符合标准的设计，和开发上提高的效率吧。
另外，在裸奔的时候，就能发现我现在的WP的主题不是非常好，因为Categories，档案，还有blogroll等的列表都排在前面，而正文反被摆在最后了。
测试了一下，裸奔时，WP还是可以留言的。
]]></description>
			<content:encoded><![CDATA[<p>今天（4月9日）是今年的，也是第三个<a href="http://naked.dustindiaz.com/">CSS裸奔日</a></p>
<p>嗯，如果你是在Feed阅读器上读到这里，是看不出来裸奔效果的，直接<a href="http://www.yining.org">点这里看</a>裸奔效果。</p>
<p><a href="http://www.flickr.com/photos/yining/2398982964/" title="CSS Naked Day by ZhangYining, on Flickr"><img src="http://farm4.static.flickr.com/3165/2398982964_8737e543e4.jpg" width="485" height="500" alt="CSS Naked Day" /></a></p>
<p>CSS裸奔日的中文介绍页面上说活动目的是：</p>
<blockquote><p>
推动Web标准。简洁为美。使用正确的(x)html，语义标记，良好的层次结构。
</p></blockquote>
<p>碰巧，下午给刚来的实习生介绍HTML和CSS，跟很多毕业生一样，他也是没有DreamWeaver一类工具就不会做网页，从来没有接触过Web标准，更不要说相关的开发经验。因此期待能在短短的一个小时内让他体会到使用Web标准的优势是不可能的。</p>
<p>也许只有在实践中实实在在地feel the pain，才会开始欣赏简洁的符合标准的设计，和开发上提高的效率吧。</p>
<p>另外，在裸奔的时候，就能发现我现在的WP的主题不是非常好，因为Categories，档案，还有blogroll等的列表都排在前面，而正文反被摆在最后了。</p>
<p><a href="http://www.yining.org/2008/04/03/classics-photos-reproduced-with-lego/#comment-7469">测试了一下</a>，裸奔时，WP还是可以留言的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yining.org/2008/04/09/css-naked-day/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>几个关于Microformats(微格式)的截图及其它</title>
		<link>http://www.yining.org/2007/11/16/some-microformats-screenshots/</link>
		<comments>http://www.yining.org/2007/11/16/some-microformats-screenshots/#comments</comments>
		<pubDate>Fri, 16 Nov 2007 07:03:49 +0000</pubDate>
		<dc:creator>Yining</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[cnbloggercon]]></category>
		<category><![CDATA[microformats uf cnbloggercon firefox]]></category>

		<guid isPermaLink="false">http://www.yining.org/2007/11/16/some-microformats-screenshots/</guid>
		<description><![CDATA[在Firefox上安装了支持微格式(Microformats)的扩展(Operator, Tail Export等)的，也许会注意到年会注册程序的页面上已经提供了hCalendar的支持。以下是在这些页面上使用几个扩展的截图。
下面是Tail Export在边栏里列出的年会议程页面页面上所有hCalender微格式，用户可以点击export图标把感兴趣的活动/议题加入到本地的程序比如Outlook, Mozilla Calendar项目的软件比如Thunderbird Lightning等。

导入到Outlook里后：

我个人更喜欢Operator这个扩展，因为它还能把微格式导入到在线的日历服务比如Google Calendar和Yahoo! Calendar，而且似乎对unicode支持比较好。以下是截图：

导入到GCal里：

链接：更多关于微格式的截图。
从这些页面和本地程序的数据交互，以及网页和网页之间的程序调用和数据交互，展示了语义网(Semantic Web)，最基础的技术支持(HTML, MIME, HTTP)就能提供很好的在线和本地（尤其是移动终端, iphone, mobile firefox? mobile xulrunner?）集成以及更好的用户体验。
另：年会注册程序里除了hCalendar，年会页面当然也能提供hCard（个人信息）的微格式，但是在没有更好的隐私保护措施和共识之前，对hCard的支持目前还是没有开放出来。其它的格式比如FOAF，hReview，rel-tag, rel-license等的支持，会在将来陆续提供。
P.S. 有点遗憾，因为临时有事，没能来得及在年会开始之前做这个介绍。
]]></description>
			<content:encoded><![CDATA[<p>在Firefox上安装了支持<a href="http://microformats.org">微格式(Microformats)</a>的扩展(<a href="https://addons.mozilla.org/en-US/firefox/addon/4106">Operator</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/2240?id=2240">Tail Export</a>等)的，也许会注意到<a href="http://events.cnbloggercon.org/">年会注册程序</a>的页面上已经提供了hCalendar的支持。以下是在这些页面上使用几个扩展的截图。</p>
<p>下面是Tail Export在边栏里列出的年会议程页面页面上所有hCalender微格式，用户可以点击export图标把感兴趣的活动/议题加入到本地的程序比如Outlook, Mozilla Calendar项目的软件比如<a href="https://addons.mozilla.org/en-US/thunderbird/addon/2313">Thunderbird Lightning</a>等。</p>
<p><a href="http://www.flickr.com/photos/yining/2037010860/" title="cbc-uf-tail-export-uf-list by ZhangYining, on Flickr"><img src="http://farm3.static.flickr.com/2216/2037010860_6ef914d3d1.jpg" width="500" height="500" alt="cbc-uf-tail-export-uf-list" /></a></p>
<p>导入到Outlook里后：</p>
<p><a href="http://www.flickr.com/photos/yining/2036322283/" title="outlook-2a by ZhangYining, on Flickr"><img src="http://farm3.static.flickr.com/2390/2036322283_58ce16a65c_m.jpg" width="240" height="177" alt="outlook-2a" /></a></p>
<p>我个人更喜欢<a href="https://addons.mozilla.org/en-US/firefox/addon/4106">Operator</a>这个扩展，因为它还能把微格式导入到在线的日历服务比如Google Calendar和Yahoo! Calendar，而且似乎对unicode支持比较好。以下是截图：</p>
<p><a href="http://www.flickr.com/photos/yining/2037010850/" title="cbc-uf-operator-menu-options by ZhangYining, on Flickr"><img src="http://farm3.static.flickr.com/2370/2037010850_cacbe53001.jpg" width="500" height="321" alt="cbc-uf-operator-menu-options" /></a></p>
<p>导入到GCal里：</p>
<p><a href="http://www.flickr.com/photos/yining/2037010854/" title="cbc-uf-operator-export-to-gcal by ZhangYining, on Flickr"><img src="http://farm3.static.flickr.com/2287/2037010854_ca7839bcc0.jpg" width="500" height="500" alt="cbc-uf-operator-export-to-gcal" /></a></p>
<p>链接：<a href="http://www.flickr.com/photos/yining/tags/microformats/">更多关于微格式的截图</a>。</p>
<p>从这些页面和本地程序的数据交互，以及网页和网页之间的程序调用和数据交互，展示了语义网(Semantic Web)，最基础的技术支持(HTML, MIME, HTTP)就能提供很好的在线和本地（尤其是移动终端, iphone, mobile firefox? mobile xulrunner?）集成以及更好的用户体验。</p>
<p>另：年会注册程序里除了<a href="http://microformats.org/wiki/hcalendar">hCalendar</a>，年会页面当然也能提供<a href="http://microformats.org/wiki/hcard">hCard</a>（个人信息）的微格式，但是在没有更好的隐私保护措施和共识之前，对hCard的支持目前还是没有开放出来。其它的格式比如FOAF，hReview，rel-tag, rel-license等的支持，会在将来陆续提供。</p>
<p>P.S. 有点遗憾，因为临时有事，没能来得及在年会开始之前做这个介绍。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yining.org/2007/11/16/some-microformats-screenshots/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>《网站优化》: TIRED and EXPIRED</title>
		<link>http://www.yining.org/2007/09/23/prioritizing-web-userability-chinese-edition-review/</link>
		<comments>http://www.yining.org/2007/09/23/prioritizing-web-userability-chinese-edition-review/#comments</comments>
		<pubDate>Sun, 23 Sep 2007 06:46:32 +0000</pubDate>
		<dc:creator>Yining</dc:creator>
				<category><![CDATA[Reading]]></category>
		<category><![CDATA[WebDesign]]></category>

		<guid isPermaLink="false">http://www.yining.org/2007/09/23/prioritizing-web-userability-chinese-edition-review/</guid>
		<description><![CDATA[从卓越上订购的Prioritizing Web Usability的中文版到手两周，周末翻了一遍，非常失望。
这是本翻译过的书，所以要评价的话，得把原书内容和翻译编辑排版部分分开来说。
先说原书内容部分吧，
首先，大部分内容是非常基本的应该是大多数设计者甚至是程序员所了解的常识，比如字体颜色和背景的搭配要有一定的反差，不要有弹出窗口等。大部分在网络上已经有很多类似的可用性注意点的列表以及详细的讨论 － 它们是免费的。
其次，书里列出的网站的例子，说少也不少（有必要把这些网站的首页截图都打印在书上么？），但是绝对不能说是多，因为它们之中典型的类型并不多，大部分是商业机构厂家，web2.0以来在网页设计和使用上很有影响力的网站几乎看不到一个（注：这本书可是06年才再版的）。
自然，原书作者根本没有介绍或者讨论最近（宽恕我，我知道的，2005年在互联网上已经算不上“最近”了）的以AJAX为主的新的用户界面元素所带来的在可用性方面的影响（再注：这本书可是06年才再版的）。
再说说原书犯的错误和缺陷：
P162, 第六章，6.10，“从主页直接访问”一节关于Mozilla网站首页上的下载区域的评论： “&#8230;显然，该区域主要服务于那些想要适用于Windows英文版的人。&#8230;”，显然，作者没有明白该网站是根据用户浏览器发送的HTTP请求里的UserAgent以及Accept-Language头信息判断用户的操作系统以及语言设置来生成相应的页面，而想当然地认为是因为“主要服务于Windows英文版的人”（其实是因为作者用的是英文Windows而已）。
关于复杂的URL，“尽管复杂的URL对可用性和搜索引擎优化都有危害&#8230;”，很遗憾，没看到作者对于复杂的URL对可用性的危害的解释（至少连粘贴到email里的URL会被email软件断行导致收件人点击无效链接的问题都没提到）。相反，作者推荐了TinyURL这样的服务，却没有提到TinyURL对可用性的影响（比如用户无法从URL看到链接实际指向的地址）。
在关于选择字体的部分，没有提到可以使用CSS和Javascript让用户自己选择字体（至少是Serif还是Sans Serif）和大小，这在今天这样的技术已经很成熟的时候，居然丝毫不提，更不要说提及sIFR这样的手段了。
如果要放截图，没必要整个页面的截图都放进来，只要把相关的，说明问题的页面部分就可以了。一个例子：P72的占了半个页面的截图，说明相关问题的仅仅是右下角的“skip intro&#8221;的几个按钮，更不要说这张图片明显要比实际的原图大（图片边缘的锯齿）。
关于上面讲的P162的Mozilla的界面用了前后比对的两个页面，也是只需要把页面的相关部分抠下来，并排摆放，这样用户比较起来更明显更容易，可是，居然用了整页的截图，而且放在不同页面！又是一个毫无必要的浪费，以及其所导致的在可用性上的失败。
书里常常提及用户的“挫折感”，可是，没有看到有关于用户为什么会产生挫折感的深入和系统的讨论，关于这方面，还是推荐《Dont&#8217; Make Me Think》这本经典。
再说说这本中文版：
原书名是Prioritizing Web Usability，中文名称：网站优化。关于这点，请编辑和译者自己读读第三章的3.1.7“浮夸的内容以及空洞的夸大宣传”以及第八章的8.3.2的标题：减轻夸大的宣传。
一本关于可用性的书最难的在于能在各方面要能“可用”，至少不与自己所“推销”的可用性原则产生矛盾。可是我却能在这本书里找到许多反例：
这本中文版没有索引！这是不是指望读者从头到尾就看一遍，还是希望读者将来为了找某个要点得再从头翻一遍？
书里有很多在正文外的文字框，这些文字框的标题栏背景有橘黄色，绿色，深蓝色，而文字背景有白色，绿色，和橘黄色，不同颜色代表什么意思呢，我以为在前言或者介绍部分应该有“如何阅读本书”的部分做对应的介绍，遗憾的是，没找到。仔细看看发现每个章节的小结标题都有不同的背景颜色，比如第一章的是浅蓝色，第二章是浅橘黄色，第三章是浅绿色&#8230;&#8230;有必么？这不仅让读者阅读的时候产生混淆，也让书的成本增加，这都是毫无必要的。
页面排版，每页竖的两栏，跟报纸似的，这跟我们平时看书的习惯不一样（请编辑和译者自己再阅读一下第8章的“为什么用户会进行扫描式阅读”），而且往往中间插入一段横跨一页的说明文字，打破两栏文字的文字框，整个阅读过程必须不断避开跳过这些隔断正文的文字框，跟玩贪吃蛇一样。
总结我的意见：

如果用《连线》杂志常用的评价来描述原书给我的印象，那就是：TIRED and EXPIRED。
从其内容和内容质量来看，这标价89元的书太贵了，毫无必要的贵，不值得买。

如果你从来没有接触过关于网页/网站可用性的介绍和讨论，那么建议你去借一本来看，要是借不到，就在书店里花一两个小时先看看，实在觉得对自己有用那么再买。如果已经对可用性有一定了解，那么没必要看这本书了。
最后，我斗胆在这里做些建议：

读《Don&#8217;t Make Me Think》；
学习和掌握网页标准(Web Standards)，近期一些关于CSS和Javascript的书里有很多对可用性的讨论；
网络资源：有很多网站提供可用性研究和讨论；
参与在线讨论（比如DeDream&#8217;的Google Group）；
最重要的，多看看一些好的网站，多用些common sense；

]]></description>
			<content:encoded><![CDATA[<p>从卓越上订购的Prioritizing Web Usability的中文版到手两周，周末翻了一遍，非常失望。</p>
<p>这是本翻译过的书，所以要评价的话，得把原书内容和翻译编辑排版部分分开来说。</p>
<p>先说原书内容部分吧，</p>
<p>首先，大部分内容是非常基本的应该是大多数设计者甚至是程序员所了解的常识，比如字体颜色和背景的搭配要有一定的反差，不要有弹出窗口等。大部分在网络上已经有很多类似的可用性注意点的列表以及详细的讨论 － 它们是免费的。</p>
<p>其次，书里列出的网站的例子，说少也不少（有必要把这些网站的首页截图都打印在书上么？），但是绝对不能说是多，因为它们之中典型的类型并不多，大部分是商业机构厂家，web2.0以来在网页设计和使用上很有影响力的网站几乎看不到一个（注：这本书可是06年才再版的）。</p>
<p>自然，原书作者根本没有介绍或者讨论最近（宽恕我，我知道的，2005年在互联网上已经算不上“最近”了）的以AJAX为主的新的用户界面元素所带来的在可用性方面的影响（再注：这本书可是06年才再版的）。</p>
<p>再说说原书犯的错误和缺陷：</p>
<p>P162, 第六章，6.10，“从主页直接访问”一节关于Mozilla网站首页上的下载区域的评论： “&#8230;显然，该区域主要服务于那些想要适用于Windows英文版的人。&#8230;”，显然，作者没有明白该网站是根据用户浏览器发送的HTTP请求里的UserAgent以及Accept-Language头信息判断用户的操作系统以及语言设置来生成相应的页面，而想当然地认为是因为“主要服务于Windows英文版的人”（其实是因为作者用的是英文Windows而已）。</p>
<p>关于复杂的URL，“尽管复杂的URL对可用性和搜索引擎优化都有危害&#8230;”，很遗憾，没看到作者对于复杂的URL对可用性的危害的解释（至少连粘贴到email里的URL会被email软件断行导致收件人点击无效链接的问题都没提到）。相反，作者推荐了TinyURL这样的服务，却没有提到TinyURL对可用性的影响（比如用户无法从URL看到链接实际指向的地址）。</p>
<p>在关于选择字体的部分，没有提到可以使用CSS和Javascript让用户自己选择字体（至少是Serif还是Sans Serif）和大小，这在今天这样的技术已经很成熟的时候，居然丝毫不提，更不要说提及<a href="http://www.mikeindustries.com/sifr">sIFR</a>这样的手段了。</p>
<p>如果要放截图，没必要整个页面的截图都放进来，只要把相关的，说明问题的页面部分就可以了。一个例子：P72的占了半个页面的截图，说明相关问题的仅仅是右下角的“skip intro&#8221;的几个按钮，更不要说这张图片明显要比实际的原图大（图片边缘的锯齿）。</p>
<p>关于上面讲的P162的Mozilla的界面用了前后比对的两个页面，也是只需要把页面的相关部分抠下来，并排摆放，这样用户比较起来更明显更容易，可是，居然用了整页的截图，而且放在不同页面！又是一个毫无必要的浪费，以及其所导致的在可用性上的失败。</p>
<p>书里常常提及用户的“挫折感”，可是，没有看到有关于用户为什么会产生挫折感的深入和系统的讨论，关于这方面，还是推荐<a href="http://www.douban.com/subject/1827702/">《Dont&#8217; Make Me Think》</a>这本经典。</p>
<p>再说说这本中文版：</p>
<p>原书名是Prioritizing Web Usability，中文名称：网站优化。关于这点，请编辑和译者自己读读第三章的3.1.7“浮夸的内容以及空洞的夸大宣传”以及第八章的8.3.2的标题：减轻夸大的宣传。</p>
<p>一本关于可用性的书最难的在于能在各方面要能“可用”，至少不与自己所“推销”的可用性原则产生矛盾。可是我却能在这本书里找到许多反例：</p>
<p>这本中文版没有索引！这是不是指望读者从头到尾就看一遍，还是希望读者将来为了找某个要点得再从头翻一遍？</p>
<p>书里有很多在正文外的文字框，这些文字框的标题栏背景有橘黄色，绿色，深蓝色，而文字背景有白色，绿色，和橘黄色，不同颜色代表什么意思呢，我以为在前言或者介绍部分应该有“如何阅读本书”的部分做对应的介绍，遗憾的是，没找到。仔细看看发现每个章节的小结标题都有不同的背景颜色，比如第一章的是浅蓝色，第二章是浅橘黄色，第三章是浅绿色&#8230;&#8230;有必么？这不仅让读者阅读的时候产生混淆，也让书的成本增加，这都是毫无必要的。</p>
<p>页面排版，每页竖的两栏，跟报纸似的，这跟我们平时<strong>看书</strong>的习惯不一样（请编辑和译者自己再阅读一下第8章的“为什么用户会进行扫描式阅读”），而且往往中间插入一段横跨一页的说明文字，打破两栏文字的文字框，整个阅读过程必须不断避开跳过这些隔断正文的文字框，跟玩贪吃蛇一样。</p>
<p>总结我的意见：</p>
<ol>
<li>如果用《连线》杂志常用的评价来描述原书给我的印象，那就是：TIRED and EXPIRED。</li>
<li>从其内容和内容质量来看，这标价89元的书太贵了，毫无必要的贵，不值得买。</li>
</ol>
<p>如果你从来没有接触过关于网页/网站可用性的介绍和讨论，那么建议你去借一本来看，要是借不到，就在书店里花一两个小时先看看，实在觉得对自己有用那么再买。如果已经对可用性有一定了解，那么没必要看这本书了。</p>
<p>最后，我斗胆在这里做些建议：</p>
<ol>
<li>读<a href="http://www.douban.com/subject/1827702/">《Don&#8217;t Make Me Think》</a>；</li>
<li>学习和掌握网页标准(Web Standards)，近期一些关于CSS和Javascript的书里有很多对可用性的讨论；</li>
<li>网络资源：有很多网站提供可用性研究和讨论；</li>
<li>参与在线讨论（比如DeDream&#8217;的Google Group）；</li>
<li>最重要的，多看看一些好的网站，多用些common sense；</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.yining.org/2007/09/23/prioritizing-web-userability-chinese-edition-review/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>DNS查找, 域名, 和Cookies</title>
		<link>http://www.yining.org/2007/08/29/dns-lookup-domain-names-and-cookies/</link>
		<comments>http://www.yining.org/2007/08/29/dns-lookup-domain-names-and-cookies/#comments</comments>
		<pubDate>Tue, 28 Aug 2007 16:51:09 +0000</pubDate>
		<dc:creator>Yining</dc:creator>
				<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://www.yining.org/2007/08/29/dns-lookup-domain-names-and-cookies/</guid>
		<description><![CDATA[减少DNS查找能够缩短页面反应时间，但是所有网站资源都只用一个域名，从而把DNS查找减少到一个，也不是最好的办法。不仅仅因为减少的平行下载的可能，更因为Web Cache对带与不带cookie的请求和返回的处理不同。
我的网站域名是www.yining.org，有个页面（比如就这篇blog entry）带有一张图片，其src为：/img/camel.gif，那么它的URL就是:&#8221;http://www.yining.org/img/camel.gif&#8221;。如果这个页面设置了cookie（比如为了记录留言者的ID和网站地址等），cookie的作用域名自动为www.yining.org，那么每次访问该页的时候，因为URL的域名部是www.yining.org，那么浏览器都会带着cookie对该图片发起请求，即使一路上的web cache有www.yining.org/img/camel.gif的记录，也依然要到我的服务器(the origin server)，而不是从中间的web cache返回 &#8211; 因为带cookie的请求都可能根据不同cookie的值而返回不同的response。
但是这对许多静态资源（图片, css, 和javascript）来说不是最理想的，因为不论cookie是什么，它们的response里都是同样的内容，对它们的请求没有必要每次都回到origin server。其次，因为不同web cache对带cookie的请求支持不同，即使有的cache能够缓存带cookie的response，但是1）不是大多数的cache都能做到这点，2）大多数的cache都缺省缓存不带cookie的response。因此最好的办法就是使用不同的域名把静态资源隔离开。虽然cookie的path属性也能做到这点，但是毕竟限制太多，不如使用专门的域名灵活。
所以应该尽量把所有静态的对象和动态页面的域名分开，更严谨地说，是把不需要读写客户端cookie的服务器资源与需要读写cookie的程序分开到不同的域名。比如我可以设置另一个域名static.yining.org，在引用该图片的&#60;img&#62;里的src属性改为&#8221;http://static.yining.org/img/camel.gif&#8221;，那么当访问首页的时候，浏览器就不会带着cookie（因为作用的域名现在不一样了），这样就能更好地利用web cache缓存和服务器的性能。我请教过一位曾经在NetAppliance（最大的web cache厂商）工作的同学，据他说根据经验，带和不带cookie之间的差别有可能是20%甚至更大。

]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.yining.org/2007/08/01/dns-lookup-and-parallel-downloads/">减少DNS查找能够缩短页面反应时间</a>，但是所有网站资源都只用一个域名，从而把DNS查找减少到一个，也不是最好的办法。不仅仅因为减少的平行下载的可能，更因为Web Cache对带与不带cookie的请求和返回的处理不同。</p>
<p>我的网站域名是www.yining.org，有个页面（比如就这篇blog entry）带有一张图片，其src为：/img/camel.gif，那么它的URL就是:&#8221;http://www.yining.org/img/camel.gif&#8221;。如果这个页面设置了cookie（比如为了记录留言者的ID和网站地址等），cookie的作用域名自动为www.yining.org，那么每次访问该页的时候，因为URL的域名部是www.yining.org，那么浏览器都会带着cookie对该图片发起请求，即使一路上的web cache有www.yining.org/img/camel.gif的记录，也依然要到我的服务器(the origin server)，而不是从中间的web cache返回 &#8211; 因为带cookie的请求都可能根据不同cookie的值而返回不同的response。</p>
<p>但是这对许多静态资源（图片, css, 和javascript）来说不是最理想的，因为不论cookie是什么，它们的response里都是同样的内容，对它们的请求没有必要每次都回到origin server。其次，因为不同web cache对带cookie的请求支持不同，即使有的cache能够缓存带cookie的response，但是1）不是大多数的cache都能做到这点，2）大多数的cache都缺省缓存不带cookie的response。因此最好的办法就是使用不同的域名把静态资源隔离开。虽然cookie的path属性也能做到这点，但是毕竟限制太多，不如使用专门的域名灵活。</p>
<p>所以应该尽量把所有静态的对象和动态页面的域名分开，更严谨地说，是把不需要读写客户端cookie的服务器资源与需要读写cookie的程序分开到不同的域名。比如我可以设置另一个域名static.yining.org，在引用该图片的&lt;img&gt;里的src属性改为&#8221;http://static.yining.org/img/camel.gif&#8221;，那么当访问首页的时候，浏览器就不会带着cookie（因为作用的域名现在不一样了），这样就能更好地利用web cache缓存和服务器的性能。我请教过一位曾经在NetAppliance（最大的web cache厂商）工作的同学，据他说根据经验，带和不带cookie之间的差别有可能是20%甚至更大。</p>
<p><img src="http://static.yining.org/img/camel.gif" border="0"/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yining.org/2007/08/29/dns-lookup-domain-names-and-cookies/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
