<?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/"
	>

<channel>
	<title>梁剑的Blog &#187; 读书笔记</title>
	<atom:link href="http://icomes.net/category/%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0/feed/" rel="self" type="application/rss+xml" />
	<link>http://icomes.net</link>
	<description>做有趣的事，做有用的人</description>
	<lastBuildDate>Wed, 23 Jun 2010 16:04:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>《iPhone开发基础教程》1－3章</title>
		<link>http://icomes.net/2009/12/30/iphone%e5%bc%80%e5%8f%91%e5%9f%ba%e7%a1%80%e6%95%99%e7%a8%8b1-3/</link>
		<comments>http://icomes.net/2009/12/30/iphone%e5%bc%80%e5%8f%91%e5%9f%ba%e7%a1%80%e6%95%99%e7%a8%8b1-3/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 17:27:12 +0000</pubDate>
		<dc:creator>梁剑</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[技术笔记]]></category>
		<category><![CDATA[读书笔记]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://icomes.net/?p=478</guid>
		<description><![CDATA[第一章
     Xcode需要运行在基于Intel的Leopard之后的Mac OS之上
     Cocoa Touch使用Objective-C 2.0
     编写iPhone应用程序的特别之处
          只有一个正在运行的程序
          只有一个窗口
          访问受限     沙盒
          有限的响应时间     按下Home后5秒内没完成清理，将被强制退出
          有限的屏幕大小     480*320
          有限的系统资源     内存不足时，应用程序会收到通知。如果不能及时释放内存，可能被强制退出
          缺少Cocoa工具     不支持垃圾收集
          新属性     定位、摄像、图片库和加速计
     本书内容
          2 Interface Builder基础
          3 基础交互
          4 基本控件
          5 方向感应
          6 多视图
          7 工具栏
          8 TableView
          9 分层列表
          10 应用程序设置
          11 数据管理     SQLite
          12 绘图     Quartz和OpenGL ES
          13 多点触摸
          14 Core Location
          15 加速计
          16 摄像头和图片库
          17 I18n

第二章
     Project的目录结构，仅为逻辑结构
          Classes     存放大部分代码
          Other Sources     其他源代码
               .pch     预编译的头文件 precompiled header
               main.m     main函数，通常不需修改
          Resources     非代码文件，图标、图像、音频、视频文本
               .xib     Interface Builder用到的信息
               Info.plist     应用程序相关属性列表
               MainWindow.xib     主Interface Builder文件
          Frameworks     框架和库
          Products     编译生成的应用程序
     [...]]]></description>
			<content:encoded><![CDATA[<p><font size="4"><font size="4"><b>第一章</b></font></font>
<div>     Xcode需要运行在基于Intel的Leopard之后的Mac OS之上</div>
<div>     Cocoa Touch使用Objective-C 2.0</div>
<div>     编写iPhone应用程序的特别之处</div>
<div>          只有一个正在运行的程序</div>
<div>          只有一个窗口</div>
<div>          访问受限     沙盒</div>
<div>          有限的响应时间     按下Home后5秒内没完成清理，将被强制退出</div>
<div>          有限的屏幕大小     480*320</div>
<div>          有限的系统资源     内存不足时，应用程序会收到通知。如果不能及时释放内存，可能被强制退出</div>
<div>          缺少Cocoa工具     不支持垃圾收集</div>
<div>          新属性     定位、摄像、图片库和加速计</div>
<div>     本书内容</div>
<div>          2 Interface Builder基础</div>
<div>          3 基础交互</div>
<div>          4 基本控件</div>
<div>          5 方向感应</div>
<div>          6 多视图</div>
<div>          7 工具栏</div>
<div>          8 TableView</div>
<div>          9 分层列表</div>
<div>          10 应用程序设置</div>
<div>          11 数据管理     SQLite</div>
<div>          12 绘图     Quartz和OpenGL ES</div>
<div>          13 多点触摸</div>
<div>          14 Core Location</div>
<div>          15 加速计</div>
<div>          16 摄像头和图片库</div>
<div>          17 I18n</div>
<div><br/></div>
<div><font color="#000000" size="4"><font size="4"><b>第二章</b></font></font></div>
<div>     Project的目录结构，仅为逻辑结构</div>
<div>          Classes     存放大部分代码</div>
<div>          Other Sources     其他源代码</div>
<div>               .pch     预编译的头文件 precompiled header</div>
<div>               main.m     main函数，通常不需修改</div>
<div>          Resources     非代码文件，图标、图像、音频、视频文本</div>
<div>               .xib     Interface Builder用到的信息</div>
<div>               Info.plist     应用程序相关属性列表</div>
<div>               MainWindow.xib     主Interface Builder文件</div>
<div>          Frameworks     框架和库</div>
<div>          Products     编译生成的应用程序</div>
<div>     Interface Builder</div>
<div>          支持.nib（旧）和.xib（新）两种格式，统称nib或nib文件</div>
<div>     nib文件的构成</div>
<div>          File&#8217;s Owner     所有nib文件的第一个图标，表示加载nib文件的对象，<font color="#FF2A28">控制器类是与之同名的nib文件的Owner</font></div>
<div>          First Responder     用户当前正在与之交互的对象，随用户与界面的交互而变化</div>
<div>          其他图标表示将在nib文件加载时创建的对象实例</div>
<div>     图标</div>
<div>          png     57*57</div>
<div>          放到Resources文件夹中</div>
<div>          在Info.plist中设置</div>
<div>     仿真器</div>
<div>          删除~/Library/Application Support/iPhone Simulator以清空主屏幕图标</div>
<div><br/></div>
<div><font color="#000000" size="4"><font size="4"><b>第三章</b></font></font></div>
<div>     MVC模型</div>
<div>          M     Objective-C类</div>
<div>          V     Interface Builder</div>
<div>          C     NSObject，更多的是通用控制器类，如UIViewController</div>
<div>     控制器</div>
<div>          控制器类试用一种特殊的实例变量（输出口，outlet）来引用nib中的对象</div>
<div>          输出口可以看成是指向nib中的对象的指针</div>
<div>          可以通过绑定操作方法，设置nib文件的界面对象触发控制类中的特殊方法</div>
<div>     输出口</div>
<div>          IBOutlet     一个没有内容的宏，唯一作用是告诉Interface Builder此实例变量将被连接到nib中的对象</div>
<div>     操作</div>
<div>          IBAction     告诉Interface Builder，此方法是一个操作，且可以被某控件触发</div>
<div>          - (IBAction)doSomething:(id) sender;</div>
<div>     Outlet与Action的声明</div>
<div>          @property (retain, nonatomic) IBOutlet UILabel *statusText;</div>
<div>          retain 对象在内存中驻留</div>
<div>          nonatomic 无须支持多线程？</div>
<div>          myVar = [someObj foo] 等价于 myVar = someObj.foo</div>
<div>          someObj.foo = myVar 等价于 [someObj setFoo:myVar]</div>
<div>     Outlet与Action的实现</div>
<div>          @synthesize statusText</div>
<div>          [statusText release] in dealloc()，照应retain</div>
<div>     应用程序委托</div>
<div>          每个iPhone应用程序有且仅有一个UIApplication实例，负责应用程序的运行循环以及处理各种应用程序级功能</div>
<div>     连接输出口</div>
<div>          Control+拖动，从File‘s Owner到相应的控件对象</div>
<div>     指定操作</div>
<div>          Touch Up Inside</div>
<div>          拖动，从Event到File‘s Owner</div>
<div>          </div>
<div><br/></div>
]]></content:encoded>
			<wfw:commentRss>http://icomes.net/2009/12/30/iphone%e5%bc%80%e5%8f%91%e5%9f%ba%e7%a1%80%e6%95%99%e7%a8%8b1-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RFC2616中关于HTTP Status Code的定义</title>
		<link>http://icomes.net/2009/10/12/rfc2616%e4%b8%ad%e5%85%b3%e4%ba%8ehttp-status-code%e7%9a%84%e5%ae%9a%e4%b9%89/</link>
		<comments>http://icomes.net/2009/10/12/rfc2616%e4%b8%ad%e5%85%b3%e4%ba%8ehttp-status-code%e7%9a%84%e5%ae%9a%e4%b9%89/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 14:09:02 +0000</pubDate>
		<dc:creator>梁剑</dc:creator>
				<category><![CDATA[Protocol]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[技术笔记]]></category>
		<category><![CDATA[读书笔记]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[rfc]]></category>

		<guid isPermaLink="false">http://icomes.net/?p=450</guid>
		<description><![CDATA[花了半天时间，看了一次http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
下面是相关的笔记和理解，
感觉很多Status Code在实际的BS通信中都不常见，
更多像是为了定义完备的协议语义，
而这些语义现在已经部分由更上层的协议或者应用实现。
1xx     Informational
100     Continue
&#160;&#160;&#160;&#160;如果server可能拒绝request，则client只发送header部分，试探server的反应
&#160;&#160;&#160;&#160;如果server接受，则返回100，于是client再发送剩余的body部分
101     Switch Protocol
2xx     Successful
200     OK
201     Created
&#160;&#160;&#160;&#160;有资源因Request而产生
202     Accepted
&#160;&#160;&#160;&#160;Request要求的动作已经被记录，但真正的动作要等待若干时间才执行，而且不保证一定执行
203     Non-Authoritative Information
204     No Content
&#160;&#160;&#160;&#160;google.cn的web server会返回
205     [...]]]></description>
			<content:encoded><![CDATA[<p>花了半天时间，看了一次<a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html" target="_blank">http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html</a></p>
<p>下面是相关的笔记和理解，<br />
感觉很多Status Code在实际的BS通信中都不常见，<br />
更多像是为了定义完备的协议语义，<br />
而这些语义现在已经部分由更上层的协议或者应用实现。</p>
<h3>1xx     Informational</h3>
<p><strong>100     Continue</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;如果server可能拒绝request，则client只发送header部分，试探server的反应<br />
&nbsp;&nbsp;&nbsp;&nbsp;如果server接受，则返回100，于是client再发送剩余的body部分<br />
<strong>101     Switch Protocol</strong></p>
<h3>2xx     Successful</h3>
<p><strong>200     OK<br />
201     Created</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;有资源因Request而产生<br />
<strong>202     Accepted</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;Request要求的动作已经被记录，但真正的动作要等待若干时间才执行，而且不保证一定执行<br />
<strong>203     Non-Authoritative Information<br />
204     No Content</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;google.cn的web server会返回<br />
<strong>205     Reset Content<br />
206     Partial Content</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;用于断点续传，起始位置由Range指定。（可以参考迅雷的输出）</p>
<h3>3xx     Redirection</h3>
<p>&nbsp;&nbsp;&nbsp;&nbsp;User Agent需要处理循环的问题<br />
<strong>300     Multiple Choices</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;目标已变，有若干个替代品可供选择<br />
<strong>301     Moved Permanently</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;目标URI在Location里定义，除了HEAD和GET请求外，不能自动重定向<br />
&nbsp;&nbsp;&nbsp;&nbsp;对SEO不会有负面作用<br />
<strong>302     Found</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;临时重定向，是否用Moved Temporarily这个名字比较合适？<br />
&nbsp;&nbsp;&nbsp;&nbsp;目标URI在Location里定义，除了HEAD和GET请求外，不能自动重定向<br />
&nbsp;&nbsp;&nbsp;&nbsp;对SEO有负面作用<br />
<strong>303     See Other</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;和302类似，但期待User Agent用GET来请求Location里指定的URI<br />
<strong>304     Not Modified</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;通常Request会带If-Modified-Since<br />
&nbsp;&nbsp;&nbsp;&nbsp;不能带message-body<br />
<strong>305     Use Proxy</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;期待User Agent会使用Location中指定的Proxy地址，来访问数据<br />
&nbsp;&nbsp;&nbsp;&nbsp;只能由origin server产生<br />
<strong>306     (not used)</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;之前的版本用过，已经废弃，作为保留字<br />
<strong>307     Temporary Redirect</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;没看出和302有什么不同<br />
&nbsp;&nbsp;&nbsp;&nbsp;只有HTTP/1.1支持</p>
<h3>4xx     Client Error</h3>
<p>&nbsp;&nbsp;&nbsp;&nbsp;在message-body中，可以自定义给User的提示<br />
<strong>400     Bad Request</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;server不能理解Request的格式<br />
&nbsp;&nbsp;&nbsp;&nbsp;用telnet可以很容易模拟<br />
<strong>401     Unauthorized</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;不能通过HTTP Authentication<br />
&nbsp;&nbsp;&nbsp;&nbsp;response header必须包含WWW-Authoricate，request header可能包含Authorization<br />
<strong>402     Payment Required</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;保留字<br />
<strong>403     Forbidden</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;如果不希望暴露过多的信息，可以用404代替<br />
<strong>404     Not Found</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;最常见的4字头Status Code，通常会自定义<br />
<strong>405     Method Not Allowed</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;response header需要包含Allow，列出支持的method<br />
<strong>406     Not Acceptable</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;response不被request header中的Accept做支持<br />
&nbsp;&nbsp;&nbsp;&nbsp;除了HEAD，response会给出包含更多信息的entity<br />
&nbsp;&nbsp;&nbsp;&nbsp;entity format由request header中的Content-Type决定<br />
<strong>407     Proxy Authentication Required</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;与401类似<br />
&nbsp;&nbsp;&nbsp;&nbsp;Proxy的response header必须包含Proxy-Authenticate<br />
<strong>408     Request Timeout<br />
409     Conflict</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;需要User干预解决<br />
&nbsp;&nbsp;&nbsp;&nbsp;在PUT的时候可能遇到<br />
<strong>410     Gone</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;URI已经不存在，且不提供3xx来重定向<br />
&nbsp;&nbsp;&nbsp;&nbsp;如果server没有足够的信息来判断URI的不存在是temporary还是permanent，可以用404代替<br />
<strong>411     Length Required</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;request header中缺少Content-Length<br />
<strong>412     Precondition Failed<br />
413     Request Entity Too Large</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;如果只是temporary，可以包含Retry-After，指定重试的时间间隔<br />
<strong>414     Request-URI Too Long</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;有几种可能导致这个返回码的情况<br />
&nbsp;&nbsp;&nbsp;&nbsp;将POST当成了GET<br />
&nbsp;&nbsp;&nbsp;&nbsp;循环重定向，每次都append上当前URI<br />
&nbsp;&nbsp;&nbsp;&nbsp;攻击<br />
<strong>415     Unsupported Media Type<br />
&nbsp;&nbsp;&nbsp;&nbsp;416     Requested Range Not Satisfiable</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;参考206<br />
<strong>417     Expectation Failed</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;不能满足request header中的Expect，参考100</p>
<h3>5xx     Server Error</h3>
<p><strong>500     Internal Server Error</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;在server没有输出正确的response header的时候会出现<br />
<strong>501     Not Implemented<br />
502     Bad Gateway</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;由gateway或者proxy返回，表明上游server不能返回请求的URI<br />
<strong>503     Service Unavailable</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;server可能过载，或者正在维护<br />
&nbsp;&nbsp;&nbsp;&nbsp;可以返回Retry-After，如果没有，则视作500<br />
<strong>504     Gateway Timeout</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;上游server不能及时返回<br />
<strong>505     HTTP Version Not Supported</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://icomes.net/2009/10/12/rfc2616%e4%b8%ad%e5%85%b3%e4%ba%8ehttp-status-code%e7%9a%84%e5%ae%9a%e4%b9%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Productive Programmer &#8211; 机制</title>
		<link>http://icomes.net/2009/08/29/the_productive_programme_mechanics/</link>
		<comments>http://icomes.net/2009/08/29/the_productive_programme_mechanics/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 17:09:13 +0000</pubDate>
		<dc:creator>梁剑</dc:creator>
				<category><![CDATA[读书笔记]]></category>

		<guid isPermaLink="false">http://icomes.net/?p=425</guid>
		<description><![CDATA[加速法则

 关注本质，而非形式
 一个应用程序列表的有用程度与它的长度成反比
 华而不实的东西中看不中用
 键盘输入总比导航快
 首选键盘而非鼠标
 地址栏是Windows资源管理器界面中最高效的部分
 花点时间来学习你手边所有隐藏的快捷键
 环境切换会消耗时间
 成批复制粘帖要比反复多次复制粘帖快
 忘记历史就意味着你得再输入一遍
 嵌入图形化工具的命令提示符让你鱼与熊掌兼得
 在资源管理器中嵌入命令提示符使环境切换更容易
 编程时始终优先使用键盘而非鼠标
 在上下文钟学习IDE快捷键，而不要去背长长的列表
 当第二次输入一个复杂结构时，将它做成模板
 如果要对多行文本做同样的操作，就应该找出其中的模式，并把它记录为一个宏
 在一段文本上执行某个特定操作的次数越多，就越有可能会再次重复它
 不要总是重复输入相同的命令
 每天化一点点时间来使每一天都更高效

专注法则

 精力越集中，思维越缜密
 草堆越大，从中找到一根针就越难
 不要文件树，要搜索
 在诉诸高级搜索之前，先尝试简单的搜索
 有根视图把资源管理器变成了项目管理工具
 充分利用内建的机制（例如颜色）来帮助集中注意力
 用链接来创建虚拟的项目管理目录
 虚拟桌面可以让原本杂乱无章的一大堆窗口变得整洁

自动化法则

 即便不是工具最初的设计意图，只要是合适的场合，同样可以使用这些工具
 不要浪费时间动手去做可以被自动化的事情
 做简单重复的事是在浪费注意力
 以创造性的方式解决问题，有助于在将来解决类似的问题
 是否应该自动化的关键在于投资回报率和缓解风险
 研究性的工作应该放在时间盒里做

规范性法则

 对于任何你不自己去构建的东西，只在版本控制中保存一份副本
 使用间接机制创建友善的工作空间（workspace）
 使用间接机制来保持文件同步
 通过复制粘帖来复用是邪恶的，不论你复制粘帖的是什么
 利用虚拟平台使项目依赖标准化
 不要让对象-关系映射工具（O/R映射器）违反规范原则
 通过扩展。开放类（Open Classe），或者部分类（Partial Classe）来为生成的代码增加行为
 始终保持代码和数据库结构的同步
 使用迁移为数据库结构的改动创建可重复的快照
 过时的文档比没有文档更糟，因为它会主动误导你
 对管理者来说，文档意味着缓解风险
 始终保持“活”的文档
 任何需要费尽创造的东西，都让它的创造者欲罢不能
 白板+数码相机强过任何CASE工具
 尽量生成所有技术文档
 永远不要为同一份信息保存两份拷贝（比如代码和描述它的图）
 重复是软件开发中最大的阻力

]]></description>
			<content:encoded><![CDATA[<p><strong>加速法则</strong></p>
<ul>
<li> 关注本质，而非形式</li>
<li> 一个应用程序列表的有用程度与它的长度成反比</li>
<li> 华而不实的东西中看不中用</li>
<li> 键盘输入总比导航快</li>
<li> 首选键盘而非鼠标</li>
<li> 地址栏是Windows资源管理器界面中最高效的部分</li>
<li> 花点时间来学习你手边所有隐藏的快捷键</li>
<li> 环境切换会消耗时间</li>
<li> 成批复制粘帖要比反复多次复制粘帖快</li>
<li> 忘记历史就意味着你得再输入一遍</li>
<li> 嵌入图形化工具的命令提示符让你鱼与熊掌兼得</li>
<li> 在资源管理器中嵌入命令提示符使环境切换更容易</li>
<li> 编程时始终优先使用键盘而非鼠标</li>
<li> 在上下文钟学习IDE快捷键，而不要去背长长的列表</li>
<li> 当第二次输入一个复杂结构时，将它做成模板</li>
<li> 如果要对多行文本做同样的操作，就应该找出其中的模式，并把它记录为一个宏</li>
<li> 在一段文本上执行某个特定操作的次数越多，就越有可能会再次重复它</li>
<li> 不要总是重复输入相同的命令</li>
<li> 每天化一点点时间来使每一天都更高效</li>
</ul>
<p><strong>专注法则</strong></p>
<ul>
<li> 精力越集中，思维越缜密</li>
<li> 草堆越大，从中找到一根针就越难</li>
<li> 不要文件树，要搜索</li>
<li> 在诉诸高级搜索之前，先尝试简单的搜索</li>
<li> 有根视图把资源管理器变成了项目管理工具</li>
<li> 充分利用内建的机制（例如颜色）来帮助集中注意力</li>
<li> 用链接来创建虚拟的项目管理目录</li>
<li> 虚拟桌面可以让原本杂乱无章的一大堆窗口变得整洁</li>
</ul>
<p><strong>自动化法则</strong></p>
<ul>
<li> 即便不是工具最初的设计意图，只要是合适的场合，同样可以使用这些工具</li>
<li> 不要浪费时间动手去做可以被自动化的事情</li>
<li> 做简单重复的事是在浪费注意力</li>
<li> 以创造性的方式解决问题，有助于在将来解决类似的问题</li>
<li> 是否应该自动化的关键在于投资回报率和缓解风险</li>
<li> 研究性的工作应该放在时间盒里做</li>
</ul>
<p><strong>规范性法则</strong></p>
<ul>
<li> 对于任何你不自己去构建的东西，只在版本控制中保存一份副本</li>
<li> 使用间接机制创建友善的工作空间（workspace）</li>
<li> 使用间接机制来保持文件同步</li>
<li> 通过复制粘帖来复用是邪恶的，不论你复制粘帖的是什么</li>
<li> 利用虚拟平台使项目依赖标准化</li>
<li> 不要让对象-关系映射工具（O/R映射器）违反规范原则</li>
<li> 通过扩展。开放类（Open Classe），或者部分类（Partial Classe）来为生成的代码增加行为</li>
<li> 始终保持代码和数据库结构的同步</li>
<li> 使用迁移为数据库结构的改动创建可重复的快照</li>
<li> 过时的文档比没有文档更糟，因为它会主动误导你</li>
<li> 对管理者来说，文档意味着缓解风险</li>
<li> 始终保持“活”的文档</li>
<li> 任何需要费尽创造的东西，都让它的创造者欲罢不能</li>
<li> 白板+数码相机强过任何CASE工具</li>
<li> 尽量生成所有技术文档</li>
<li> 永远不要为同一份信息保存两份拷贝（比如代码和描述它的图）</li>
<li> 重复是软件开发中最大的阻力</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://icomes.net/2009/08/29/the_productive_programme_mechanics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax基础教程</title>
		<link>http://icomes.net/2007/10/27/ajax%e5%9f%ba%e7%a1%80%e6%95%99%e7%a8%8b/</link>
		<comments>http://icomes.net/2007/10/27/ajax%e5%9f%ba%e7%a1%80%e6%95%99%e7%a8%8b/#comments</comments>
		<pubDate>Sat, 27 Oct 2007 15:37:53 +0000</pubDate>
		<dc:creator>梁剑</dc:creator>
				<category><![CDATA[技术笔记]]></category>
		<category><![CDATA[读书笔记]]></category>

		<guid isPermaLink="false">http://liangjianhua.com/?p=33</guid>
		<description><![CDATA[英文名是《Foundations of Ajax》，亚马逊的榜首图书。
不过已经是几年前了，现在看感觉自己有点out：）
但是这本书真的很适合入门。
书是还在上海的时候买的，
当时只是想了解一下Ajax这个热门的技术，
想不到有一天自己会出于工作上的需要而阅读它。
刚来深圳的时候，
也看了前面几章，
只是当时没有任何的JavaScript背景，
也完全不了解DOM，
所以在看到第三章的时候就把书放下了。
上个礼拜，从书架上把书拿了下来，放进了书包。
因为已经有了《JavaScript权威指南》的部分基础，
而且也算是有一些前台的经验了，
所以这次的阅读比较顺利，
说明书适合有一定前台基础的人看。
书的排版布局不错，
例子不算很多，
但是都很精炼，
能够说明问题足矣。
为了测试书中的例子，
在服务器上安装了Tomcat，
可以在http://icomes.vicp.net:8180/ajax.html上试验。
看过之后，
发现Ajax也不是什么高深的技术，
只是在HTTP上增加了异步通信的能力而已，
而且所有底层实现都由XHR代劳，
JavaScript只需指定Method，Url和CallBack等参数和属性就可以了。
Ajax的最大好处，
无非是提升用户体验而已，
但是对于Web应用来说，
用户体验似乎就是全部了：）
而且现在的确有很多非常Cool的基于Ajax的应用。
书的翻译质量属于上等，
高出国内翻译的普遍水平，
比之那些不通专业或者让学生代工的译者，
人品上的差异比水平上的差异更大。
无愧榜首图书的名号，可以给90分。
可惜不够深入，
不过书名已经明言是“基础”，
所以我也无可奈何。
]]></description>
			<content:encoded><![CDATA[<p>英文名是《Foundations of Ajax》，亚马逊的榜首图书。<br />
不过已经是几年前了，现在看感觉自己有点out：）<br />
但是这本书真的很适合入门。</p>
<p>书是还在上海的时候买的，<br />
当时只是想了解一下Ajax这个热门的技术，<br />
想不到有一天自己会出于工作上的需要而阅读它。</p>
<p>刚来深圳的时候，<br />
也看了前面几章，<br />
只是当时没有任何的JavaScript背景，<br />
也完全不了解DOM，<br />
所以在看到第三章的时候就把书放下了。</p>
<p>上个礼拜，从书架上把书拿了下来，放进了书包。<br />
因为已经有了《JavaScript权威指南》的部分基础，<br />
而且也算是有一些前台的经验了，<br />
所以这次的阅读比较顺利，<br />
说明书适合有一定前台基础的人看。</p>
<p>书的排版布局不错，<br />
例子不算很多，<br />
但是都很精炼，<br />
能够说明问题足矣。</p>
<p>为了测试书中的<a title="源代码" href="http://www.liangjianhua.com/wp-content/uploads/2007/10/foundations-of-ajax.zip" target="_blank">例子</a>，<br />
在服务器上安装了Tomcat，<br />
可以在<a href="http://icomes.vicp.net:8180/ajax.html">http://icomes.vicp.net:8180/ajax.html</a>上试验。</p>
<p>看过之后，<br />
发现Ajax也不是什么高深的技术，<br />
只是在HTTP上增加了<strong>异步通信</strong>的能力而已，<br />
而且所有底层实现都由XHR代劳，<br />
JavaScript只需指定Method，Url和CallBack等参数和属性就可以了。</p>
<p>Ajax的最大好处，<br />
无非是<strong>提升用户体验</strong>而已，<br />
但是对于Web应用来说，<br />
用户体验似乎就是全部了：）<br />
而且现在的确有很多非常Cool的基于Ajax的应用。</p>
<p>书的翻译质量属于上等，<br />
高出国内翻译的普遍水平，<br />
比之那些不通专业或者让学生代工的译者，<br />
人品上的差异比水平上的差异更大。</p>
<p>无愧榜首图书的名号，可以给90分。</p>
<p>可惜不够深入，<br />
不过书名已经明言是“基础”，<br />
所以我也无可奈何。</p>
]]></content:encoded>
			<wfw:commentRss>http://icomes.net/2007/10/27/ajax%e5%9f%ba%e7%a1%80%e6%95%99%e7%a8%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C++ Common Knowledge</title>
		<link>http://icomes.net/2007/09/15/c-common-knowledge/</link>
		<comments>http://icomes.net/2007/09/15/c-common-knowledge/#comments</comments>
		<pubDate>Sat, 15 Sep 2007 14:52:52 +0000</pubDate>
		<dc:creator>梁剑</dc:creator>
				<category><![CDATA[技术笔记]]></category>
		<category><![CDATA[读书笔记]]></category>

		<guid isPermaLink="false">http://liangjianhua.com/?p=16</guid>
		<description><![CDATA[中文版名称是《C++必知必会》。
当时之所以会买很大程度上是因为这个名字，
因为我觉得自己当时对C++的了解程度是——不知不会。
全书共有63个条款（为什么C++的书都喜欢用条款来划分章节？） ，
後面的30%是关于模板和泛型，
自我感觉暂时没必要了解太多，
跳过。
必须承认，
里面的大部分条款我都是首次听闻，
大长见识：）
对以后看设计模式应该很有帮助，
不过也有几个条款是属于底层C的知识，
放在这本书里有点凑数的感觉。
另外，
模板实在讲得太多了！
很不错，推荐 。
]]></description>
			<content:encoded><![CDATA[<p>中文版名称是《C++必知必会》。<br />
当时之所以会买很大程度上是因为这个名字，<br />
因为我觉得自己当时对C++的了解程度是——不知不会。</p>
<p>全书共有63个条款（为什么C++的书都喜欢用条款来划分章节？） ，<br />
後面的30%是关于模板和泛型，<br />
自我感觉暂时没必要了解太多，<br />
跳过。</p>
<p>必须承认，<br />
里面的大部分条款我都是首次听闻，<br />
大长见识：）<br />
对以后看设计模式应该很有帮助，<br />
不过也有几个条款是属于底层C的知识，<br />
放在这本书里有点凑数的感觉。<br />
另外，<br />
模板实在讲得太多了！</p>
<p>很不错，推荐 。</p>
]]></content:encoded>
			<wfw:commentRss>http://icomes.net/2007/09/15/c-common-knowledge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
