﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Robin's Programming World-随笔分类-其它</title><link>http://www.blogjava.net/fastzch/category/7476.html</link><description>I Love Programming As My Life!</description><language>zh-cn</language><lastBuildDate>Tue, 05 Aug 2014 22:25:22 GMT</lastBuildDate><pubDate>Tue, 05 Aug 2014 22:25:22 GMT</pubDate><ttl>60</ttl><item><title>Hybrid开发资源网站汇总</title><link>http://www.blogjava.net/fastzch/archive/2014/08/05/416566.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Tue, 05 Aug 2014 01:45:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2014/08/05/416566.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/416566.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2014/08/05/416566.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/416566.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/416566.html</trackback:ping><description><![CDATA[@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
http://cubiq.org/
<div id="xunlei_com_thunder_helper_plugin_d462f475-c18e-46be-bd10-327458d045bd"></div>
<div>包含iscroll, infinity wall等</div>
<div><br />
</div>
<div><br />
</div><img src ="http://www.blogjava.net/fastzch/aggbug/416566.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2014-08-05 09:45 <a href="http://www.blogjava.net/fastzch/archive/2014/08/05/416566.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XCode Plugins Package Manager</title><link>http://www.blogjava.net/fastzch/archive/2014/02/05/409533.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Tue, 04 Feb 2014 18:28:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2014/02/05/409533.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/409533.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2014/02/05/409533.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/409533.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/409533.html</trackback:ping><description><![CDATA[非常不错的工具：<br />XCode Plugins Package Manager<br />https://github.com/mneorr/Alcatraz<br /><br />通过这个工具，我还装了以下插件：<br />AJKExtendedOpening<br />BBUDebuggerTuckAway<br />BBUncrustifyPlugin<br />CocoaPods<br />CodePilot<br />DLAutoresizeMaskPlugin<br />DerivedData Exterminator<br />FuzzyAutocomplete<br />HOStringSense<br />KSImageNamed<br />OMColorSense<br />OMQuickHelp<br />PluginConsole<br />QuickLocalization<br />SCXcodeMinimap<br />VVDocumenter-Xcode<br />XCFixin_CurrentLineHighlighter<br />XcodeAutoCloseDebug<br />XcodePlus Delete Line<br /><br />这些插件都是相当的好用呀！！！<br /><img src ="http://www.blogjava.net/fastzch/aggbug/409533.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2014-02-05 02:28 <a href="http://www.blogjava.net/fastzch/archive/2014/02/05/409533.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Phonegap Debug Note</title><link>http://www.blogjava.net/fastzch/archive/2014/01/02/408382.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Thu, 02 Jan 2014 06:17:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2014/01/02/408382.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/408382.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2014/01/02/408382.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/408382.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/408382.html</trackback:ping><description><![CDATA[Phonegap has big change from v3, the all features are needed to add as plugin.
<div><br />
</div>
<div>The following are notes for debug feature:</div>
<div>The "console" is a plugin now, so we need to add it by following command:</div>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->cordova&nbsp;plugin&nbsp;add&nbsp;https://git-wip-us.apache.org/repos/asf/cordova-plugin-console.git</div>
</div>
<div><br />
</div>
<div>And then you could use console API now, e.g.:</div>
<div><span style="font-size: 13px; background-color: #eeeeee;">console.</span><span style="font-size: 13px; color: #0000ff;">log</span><span style="font-size: 13px; background-color: #eeeeee;">(</span><span style="font-size: 13px; font-weight: bold;">'</span><span style="font-size: 13px; font-weight: bold;">onSuccess!&nbsp;contacts.length:</span><span style="font-size: 13px; font-weight: bold;">'</span><span style="font-size: 13px; background-color: #eeeeee;">&nbsp;</span><span style="font-size: 13px; background-color: #eeeeee;">+</span><span style="font-size: 13px; background-color: #eeeeee;">&nbsp;contacts</span><span style="font-size: 13px; background-color: #eeeeee;">.</span><span style="font-size: 13px; color: #0000ff;">length</span><span style="font-size: 13px; background-color: #eeeeee;">&nbsp;);</span></div>
<div><br />
</div>
<div>You will see logs on output console of Xcode or Logcat of Eclipse.</div>
<div>Pls see following screenshots:</div>
<div><img src="http://www.blogjava.net/images/blogjava_net/fastzch/7477/o_Snip20140102_3.jpg" border="0" alt="" width="524" height="262" /><br />
</div>
<div><br />
</div>
<div><img src="http://www.blogjava.net/images/blogjava_net/fastzch/7477/o_java.jpg" border="0" alt="" width="998" height="337" /><br />
</div>
<div><br />
</div>
<div><br />
</div><img src ="http://www.blogjava.net/fastzch/aggbug/408382.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2014-01-02 14:17 <a href="http://www.blogjava.net/fastzch/archive/2014/01/02/408382.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>首个iOS App终于提交了</title><link>http://www.blogjava.net/fastzch/archive/2012/09/03/386856.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Mon, 03 Sep 2012 03:45:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2012/09/03/386856.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/386856.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2012/09/03/386856.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/386856.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/386856.html</trackback:ping><description><![CDATA[@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
经过两个月左右的时间策划和开发，我个人的首个iOS App终于提交了，先冒个泡，等Review通过后会再开一个专贴进行介绍和技术支持。
<div>至于是个什么应用，我想可能还得先保密一两周什么的，这得看Apple的速度了，哈哈...</div>
<div><br />
</div>
<div>有兴趣的可以猜猜看。</div><img src ="http://www.blogjava.net/fastzch/aggbug/386856.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2012-09-03 11:45 <a href="http://www.blogjava.net/fastzch/archive/2012/09/03/386856.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MongoDB install notes on Mac:</title><link>http://www.blogjava.net/fastzch/archive/2012/06/03/379837.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Sat, 02 Jun 2012 17:15:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2012/06/03/379837.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/379837.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2012/06/03/379837.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/379837.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/379837.html</trackback:ping><description><![CDATA[<div>Reference page: Http://docs.mongodb.org/master/tutorial/install-mongodb-on-os-x/</div>
<div><br />
</div>
<div>1, install brew, if it is exist, skip this step.</div>
<div>Reference page: &nbsp;http://mxcl.github.com/homebrew/</div>
<div>Execute the following command:</div>
<div>#/usr/bin/ruby -e "$(/usr/bin/curl -fsSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"</div>
<div><br />
</div>
<div>2, install MongoDB:</div>
<div>#brew update</div>
<div>#brew install mongodb</div>
<div><br />
</div>
<div>3, use mondod command to startup MongoDB</div>
<div>#nohup mongod &amp;</div>
<div><br />
</div>
<div>4, enter mongo shell for testing:</div>
<div>#mongo</div>
<div><br />
</div>
<div>MongoDB shell version: 2.0.5</div>
<div>connecting to: test</div>
<div>&gt; db.test.save({a:1})</div>
<div>&gt; db.test.find()</div>
<div>{ "_id" : ObjectId("4fca4824293f5115fa740813"), "a" : 1 }</div>
<div>&gt;&nbsp;</div>
<div><br />
</div>
<div>5, GUI client recommendations:</div>
<div><br />
</div>
<div>MongoExplorer</div>
<div>MongoHub</div>
<div><br />
</div>
<div>6, MongoDB has provided a web base management inerface:</div>
<div>http://localhost:28017/</div>
<div><br />
</div>
<div>7, export and import:</div>
<div><span style="border-collapse: collapse; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; font-size: medium; ">$ mongodump -h test.xxxx.com:52000 -d dataname -o /home/aa/dev/mongodb/data<br />
<br />
mongodump mongo导出数据库命令 mongodump --help 可以查看该命令下所有的帮助<br />
<br />
-h 导出源<br />
-d 要导出的数据库名称<br />
-o 数据库要导出的位置<br />
<br />
在终端滚过N行之后，数据库导出完成，可以去/home/aa/dev/mongodb/data 目录下查看导出的文件，bson格式的（我导出后没有马上就看到文件，等了一会才出现的，原因不明）<br />
<br />
然后数据库恢复使用：mongorestore 命令<br />
<br />
$ mongorestore -d cmsdev&nbsp; /home/xx/dev/mongodb/data/cmsdev<br />
<br />
-d 使用的数据库名称<br />
后面直接加你刚才导出的目录，这样是直接恢复所有表<br />
<br />
如果-c 是恢复一个表</span></div><img src ="http://www.blogjava.net/fastzch/aggbug/379837.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2012-06-03 01:15 <a href="http://www.blogjava.net/fastzch/archive/2012/06/03/379837.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>永久恢复联通 iPhone4 的 YouTube</title><link>http://www.blogjava.net/fastzch/archive/2012/01/17/368638.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Tue, 17 Jan 2012 02:43:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2012/01/17/368638.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/368638.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2012/01/17/368638.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/368638.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/368638.html</trackback:ping><description><![CDATA[<div>
<h2><span style="font-weight: normal; font-size: 14pt; ">原文地址：</span><span style="font-weight: normal;"><span style="font-size: 12pt; ">&nbsp;</span></span><span style="font-weight: normal; font-size: 12pt; ">http://www.inanu.net/post/314.html</span><span style="font-weight: normal; font-size: 14pt; "><br /></span><span style="font-weight: normal; font-size: 14pt; ">iOS 5.0.1 亲测</span><br /><br /><br />永久恢复联通 iPhone4 的 YouTube</h2>
<div style="margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 2px; padding-right: 10px; padding-bottom: 2px; padding-left: 10px; border-style: initial; border-color: initial; font-size: 12px; vertical-align: baseline; line-height: 18px; height: 18px; position: relative; color: #999999; overflow-x: hidden; overflow-y: hidden; font-family: Tahoma, Arial, Helvetica, sans-serif; text-align: left; background-color: #f7f7f7; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 20px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; display: block; background-image: url(http://www.inanu.net/wp-content/themes/zbench/images/icons.gif); background-attachment: scroll; background-origin: initial; background-clip: initial; background-color: initial; float: left; background-position: 0px -40px; background-repeat: no-repeat no-repeat; ">作者:&nbsp;<a href="http://www.inanu.net/post/author/nanu" title="查看 Nanu 的所有文章" rel="author" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: #999999; text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; ">Nanu</a>&nbsp;日期: 2011-05-18</span></div>
<div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 12px; vertical-align: baseline; clear: both; color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; line-height: normal; text-align: left; background-color: #f7f7f7; "></div>
<div data-find="_6" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-right: 10px; padding-left: 10px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; overflow-x: hidden; overflow-y: hidden; text-align: left; background-color: #f7f7f7; ">
<p style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; ">在有 G.F.W. &#8220;保护&#8221;下的天朝网络，联通竟然还阉割掉了 iPhone4 的 Youtube 应用，真是断子绝孙啊！不甘心，一定要把 Youtube 找回来！</p>
<p style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; ">在网上看了很关于恢复联通 iPhone4 YouTube 的方法，总结下大致就 2 种方法：<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
1. 利用SBSettings恢复；（我测试是没有效果的）<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
2. 在 Safari 上访问 m.youtube.com 之后挂个主屏幕的标签；（图标太恶心）</p>
<p style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; ">下面终极恢复方法来了：</p>
<ul style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; line-height: normal; margin-top: 0px; margin-right: 30px; margin-bottom: 18px; margin-left: 30px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; ">
     <li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; "><strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; ">该方法只适用于联通 iPhone4；</strong></li>
     <li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; "><strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; ">iPhone4 必须已经越狱，如果不想越狱的，请使用上面的方法 2；</strong></li>
     <li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; "><strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; ">该方法适用于所有的 iOS 固件版本；</strong></li>
</ul>
<p style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; ">1. 将 iPhone4 连接至 i-Funbox，并进入到 //Applications/YouTube.app 目录；</p>
<p style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; ">2. 将目录中的 Info.plist 文件复制到你的电脑上（做个备份，以防万一）；</p>
<p style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; ">3. 将下面的代码复制粘贴到一个文件中，并命名为 Info.plist；</p>
<p style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; ">4. 将新建的 Info.plist 复制到 iPhone4 中的 YouTube.app 目录，覆盖原文件；</p>
<p style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; ">5. 重启 iPhone4；</p>
<p style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; ">HOHO! 熟悉的 YouTube 图标回来啦！</p>
<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000FF; ">?&gt;</span><br /><span style="color: #0000FF; ">&lt;!</span><span style="color: #FF00FF; ">DOCTYPE&nbsp;plist&nbsp;PUBLIC&nbsp;"-//Apple&nbsp;Computer//DTD&nbsp;PLIST&nbsp;1.0//EN"&nbsp;"http://www.apple.com/DTDs/PropertyList-1.0.dtd"</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">plist&nbsp;</span><span style="color: #FF0000; ">version</span><span style="color: #0000FF; ">="1.0"</span><span style="color: #FF0000; ">&nbsp;converted_by</span><span style="color: #0000FF; ">="i-funbox.com"</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>DTXcode<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>0324<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>DTSDKName<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>iphoneos4.1.internal<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleName<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>YouTube<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>UIApplicationExitsOnSuspend<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">true&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleDevelopmentRegion<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>English<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleVersion<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>1.0<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>DTPlatformName<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>iphoneos<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundlePackageType<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>APPL<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleSupportedPlatforms<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>iPhoneOS<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>SBUsesNetwork<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">integer</span><span style="color: #0000FF; ">&gt;</span>3<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">integer</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleInfoDictionaryVersion<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>6.0<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleExecutable<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>YouTube<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>DTCompiler<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>4.2<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>SBMatchingApplicationGenres<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>Entertainment<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>Social&nbsp;Networking<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleURLTypes<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleURLName<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>YouTube&nbsp;Internal&nbsp;URL<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleURLSchemes<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>youtube<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleIdentifier<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>com.apple.youtube<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleResourceSpecification<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>ResourceRules.plist<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>DTPlatformVersion<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>4.1&nbsp;GM<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleIconFiles<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>icon-72.png<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>icon.png<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>icon@2x.png<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleDisplayName<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>YouTube<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleSignature<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>????<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleDisplayName<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>YouTube<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>UISupportedInterfaceOrientations<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>UIInterfaceOrientationPortrait<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>UIInterfaceOrientationPortraitUpsideDown<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>UIInterfaceOrientationLandscapeLeft<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>UIInterfaceOrientationLandscapeRight<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>MinimumOSVersion<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>4.1<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>UIDeviceFamily<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">integer</span><span style="color: #0000FF; ">&gt;</span>1<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">integer</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">integer</span><span style="color: #0000FF; ">&gt;</span>2<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">integer</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">plist</span><span style="color: #0000FF; ">&gt;</span></div>
<br />

</div>
</div><img src ="http://www.blogjava.net/fastzch/aggbug/368638.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2012-01-17 10:43 <a href="http://www.blogjava.net/fastzch/archive/2012/01/17/368638.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]自定义UITableView</title><link>http://www.blogjava.net/fastzch/archive/2011/12/29/367465.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Thu, 29 Dec 2011 01:12:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2011/12/29/367465.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/367465.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2011/12/29/367465.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/367465.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/367465.html</trackback:ping><description><![CDATA[<div><div><div>原文地址： http://blog.sina.com.cn/s/blog_7e3132ca0100wyls.html<br /></div>在XCode对应头文件中修改该类所继承的父类：</div><div>@interface TableViewController:UIViewController &lt;UITableViewDataSource, UITableViewDelegate&gt;<br />{<br />}</div><div>在对应的.m文件中添加如下代码：</div><div><div>@implementation TableViewController</div></div><div>{<br />UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(0,0,320,460) style:UITableViewStylePlain];<br />tableView.dataSource = self;<br />tableView.delegate = self;<br />[self.view addSubview:tableView];</div><div>}</div><div>这样就在view上添加了一个tableView，但其样式是默认的，其中的内容也是空白的，而且此时是无法运行的，因为在头文件中添加了UITableViewDataSource和UITableViewDelegate两个类，所以必须设置一些自定义tableView样式的方法，下面列举了一些相关的方法：</div><div></div><div>设置Cell高度：</div><div>-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath</div><div></div><div></div><div>设置SectionHeader高度：</div><div>-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section</div><div></div><div></div><div>设置SectionFooter高度：</div><div>-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section</div><div></div><div></div><div>设置Section数目：</div><div>-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView</div><div></div><div>&nbsp;</div><div>设置SectionHeader内容：</div><div>-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{</div><div></div><div></div><div>设置各个Section中的Cell个数：&nbsp;</div><div>-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section</div><div></div><div></div><div>设置Cell内容：&nbsp;</div><div>-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath</div><div>&nbsp;</div><div></div><div></div><div>设置Cell行缩进量：</div><div>-(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath</div><div></div><div></div><div>设置Cell被选中响应前动作(例如：可用以判断选中的Cell,来阻止其响应）</div><div>-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath</div><div></div><div></div><div>设置Cell选中触发响应：</div><div>-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath</div></div><img src ="http://www.blogjava.net/fastzch/aggbug/367465.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2011-12-29 09:12 <a href="http://www.blogjava.net/fastzch/archive/2011/12/29/367465.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】Xcode分析CrashLog的方法</title><link>http://www.blogjava.net/fastzch/archive/2011/12/28/367403.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Wed, 28 Dec 2011 04:24:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2011/12/28/367403.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/367403.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2011/12/28/367403.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/367403.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/367403.html</trackback:ping><description><![CDATA[<h1 class="entry-title" style="border-top-width: 0px; clear: both; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: bold 21px/1.3em 'Helvetica Neue', Arial, Helvetica, 'Nimbus Sans L', sans-serif; vertical-align: baseline; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px">&nbsp;</h1>
<div class="entry-content" style="border-top-width: 0px; clear: both; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 16px/24px Georgia, 'Bitstream Charter', serif; vertical-align: baseline; text-transform: none; color: rgb(51,51,51); text-indent: 0px; padding-top: 12px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px">
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">原文地址：<a href="http://www.acwind.net/blog/?p=1090">http://www.acwind.net/blog/?p=1090</a><br /><br />Bug是永远伴随着程序员们的东西，各种各样的情况造成程序crash掉也是家常便饭。Windows下的很多大型软件在崩溃的时候，都会弹出提示框，询问用户是否将crash的信息发送到软件厂商，以供软件开发商debug。App store中的软件也有这个功能，用户在使用软件的时候，如果程序崩溃，错误信息会发送到Apple的服务器中，软件的开发者们可以很方便在后台获得自己程序的crash log，供自己调试。</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">但随之而来的问题是，我们收到的程序崩溃调试信息多半是汇编语言一样的堆栈代码，同时这些信息并不是在我们debug的时候产生，所以看到这一串crash log的天书，常常无可奈何。Xcode很好的解决了这一问题，它所提供的Orgainzer分析器加上symbolicatecrash﻿，可以分析二进制文件以及源代码和crashlog之间的连接，直接找出源程序中出错的代码行。方法网上到处是，本文不讨论。</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">但是如果使用symbolicatecrash﻿无法定位到出错的代码行的话，怎么整呢？有一个办法，如下：</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">首先查看crash log中的崩溃线程，假如是这样的：</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">Thread 0 Crashed:<br />0 &nbsp; libobjc.A.dylib &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span><span style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; vertical-align: baseline; padding-top: 0px; white-space: pre; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial"> </span>0x00003ec0 objc_msgSend + 24<br />1 &nbsp; MyApp &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;0x000036d2 0&#215;1000 + 9938﻿</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">我们得到了用户发生崩溃情况的内存地址：0x000036d2﻿</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">然后回到我们应用程序的build目录，目录下一定要包含MyApp.app 和MyApp.app.dSYM两个文件。</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">在控制台使用dwarfdump命令，解析出内存地址，如：&nbsp;</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">dwarfdump &#8211;lookup 0x000036d2 &#8211;arch armv6 MyApp.app.dSYM</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">输出信息如下：</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial"><img title="dwarfdump.jpg" style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial" height="149" alt="dwarfdump.jpg" src="http://www.acwind.net/blog/wp-content/uploads/2010/06/dwarfdump.jpg" width="534" border="0" /></p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">直接定位到代码的出错行，Cool！</p></div><img src ="http://www.blogjava.net/fastzch/aggbug/367403.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2011-12-28 12:24 <a href="http://www.blogjava.net/fastzch/archive/2011/12/28/367403.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]Samsung EPIC 4G ADB/USB无法连接的问题</title><link>http://www.blogjava.net/fastzch/archive/2011/04/08/347889.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Fri, 08 Apr 2011 06:20:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2011/04/08/347889.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/347889.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2011/04/08/347889.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/347889.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/347889.html</trackback:ping><description><![CDATA[<p>EPIC连接91手机助手的方法<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; By 蓝色磁碟</p>
<p>1、无法连接的时候建议先删除驱动（重新安装驱动安装程序就有那个选项了）<br />
2、然后##8778#，设置USB改为PDA（上MODEM 下PDA）<br />
3、系统重新安装驱动后，把EPIC接上USB（开启USB调试模式，未知源安装）<br />
4、正常的话，系统安装驱动程序会比平时慢很多。耐心等待一下看看。<br />
5、到这个步骤，多等2-3分钟，直接拔掉USB线。 <br />
6、不做任何处理重新再把手机接上。如果不会提示安装驱动就表示成功了。开启91手机助手测试看看吧！！<br />
7、如果最后安装失败，请换个USB口再接上去。如果不会提示安装驱动就表示成功了。</p>
<img src ="http://www.blogjava.net/fastzch/aggbug/347889.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2011-04-08 14:20 <a href="http://www.blogjava.net/fastzch/archive/2011/04/08/347889.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]教你如何做主管——MTP培训心得</title><link>http://www.blogjava.net/fastzch/archive/2010/11/25/339054.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Thu, 25 Nov 2010 10:46:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2010/11/25/339054.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/339054.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2010/11/25/339054.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/339054.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/339054.html</trackback:ping><description><![CDATA[<div id="msgcns!95D3AD656DAA820A!196" class="bvMsg"><em>很久以前跟同事参加的培训，同事整理得很详细，必须得转！</em>
<p><br />
<br />
前段时间，公司有组织中高阶主管及其培养干部进行了为期三天的管理训练培训。三天的课程下来，虽然内容较多，因对老师三天来的课程内容深有感触，故借着整理学习心得的机会，将三天来的培训课程做了一个结构化的整理，与大家来分享。
<p>在上课的过程中，觉得老师讲的内容较多，涉及的面也比较多。刚开始在整理学习心得时，点点滴滴整理了大约十七八条。再反复经过对这整理的十七八条心得，发现其实老师主要就是围绕&#8220;如何做主管？&#8221;这个话题展开的。整体上可以将这四天培训的主要知识点用下面这个图来表示。
<p><a href="http://byfiles.storage.msn.com/y1p1Jh5Mi_Ga8MSl_H1qazbt-8XouXIwivL25cKEfX2Q_uRWzPbg1V8qxGnHjqYhp1cPCnFLbrgjoY?PARTNER=WRITER"><img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="clip_image002" src="http://byfiles.storage.msn.com/y1p1Jh5Mi_Ga8OAA9TqlCjlAGGQMtKTX18HLLt5iAglJOqaGLe3VuBWBdtfE8MxuKmR78z4mRUOZvM?PARTNER=WRITER" width="244" height="105" /></a>
<p>作为一个中阶主管，其基本工作如上图所示，主要是五大项：
<ol>
    <li>设定工作目标；
    <li>工作规划与分配；
    <li>人力资源发展；
    <li>激励和人际沟通；
    <li>授权给部属。</li>
</ol>
<p>下面分别就这五项工作来对老师讲的内容以Q&amp;A的方式做一个陈述。
<p><strong>一、设定工作目标</strong><strong></strong>
<p><strong>Q1</strong><strong>：如何设定团队与部属目标？</strong><strong></strong>
<p><strong>A1</strong><strong>：</strong>这里老师主要结合围绕企业运行的三个流程来讲的：策略流程、人员流程和营运流程。设定公司和部门的目标是策略流程的主要内容。公司依据其内、外部环境来设定公司的目标、策略。这一过程主要由高阶主管来完成。最终会形成诸如《公司年度事业计划》。
<p>部门目标则是对公司目标和策略的有效分解，最终形成诸如各部门年度KPI。
<p>部属或者说是个人的目标则是对本部门的KPI的有效分解。
<p>这一系列的从公司目标和策略的制定到个人KPI的制定的过程就是前面讲到的策略流程。
<p>同时老师也给我们介绍了一些关于目标设定的读物，它们是：
<p>1）《蓝海策略》、《战略地图》、《方针管理》——用于指导公司目标和方针的制定；
<p>2）《目标管理》、《关键绩效指标》、《平衡记分卡》——用于指导部门目标/KPI的制定。我们公司就是用平衡记分卡来指导KPI的制定。
<p>3）《变革管理》——用于指导当公司目标和方针发生变化时，团队如何应对。
<p><strong>Q2</strong><strong>：如何面对上级主管的临时插单？</strong><strong></strong>
<p><strong>A2</strong><strong>：</strong>在计划之外，上级主管分派新任务总是中阶主管经常面对的事情。那么作为中阶主管需要如何来面对这种情况呢，老师给我们介绍了一些可行的方法：
<p>1) 首先，作为主管需要将新课题放在最优先的位置，安排最重要的人，最重要的资源来处理，因为往往只有这些新课题才会创造公司价值；
<p>2）其次， 要优化，改善原来计划内的工作，采取诸如删除、合并、简化、OA化、E化等方式来优化旧课题，以提高生产率。
<p>3）另外，对于分派的新课题，作为中阶主管，需要采用有效的方法及时（在上司分配工作2～4小时内）与上司明确新课题的目的：本单位/现在的目的是什么、公司/未来的目的是什么、实现新课题的限制条件有哪些等。
<p><strong>Q3</strong><strong>：如何向上级主管行销你的计划？</strong><strong></strong>
<p><strong>A3</strong><strong>：</strong>向上机主管报告计划时，时间不能超过10分钟。为了能够让上级主管快速有效地了解自己的计划，需要在向上司报告前，对自己的计划进行摘要，突显出计划的重点内容。计划摘要的内容包含以下几个部分：
<p>1）计划目的：当前目的、最终目的（跟公司的策略连接）
<p>2）现状问题
<p>3）创意（构想）——有哪些新的创意，或者是计划的整体思路
<p>4）效果：有形成果、无形成果
<p>5）费用
<p>6）风险评估与应对
<p><strong>Q4</strong><strong>：如何改善团队的工作绩效？</strong><strong> </strong>
<p><strong>A4</strong><strong>：</strong>通常我们都可以将团队的工作内容分解成三种类型的动作：
<p>1）有价值的动作，它指对产品和顾客增值的动作，对于这类动作，我们需要的就是将其标准化，并写成工作分解表/指南/Checklist；
<p>2）无价值的动作，它指诸如拿材料、检查等动作。对于这类动作，需要的就是尽量将其合理化；
<p>3）浪费的动作。对于这类动作，需要的就是尽量将其消除。
<p>进行这样的持续改善，就能够不断地提升团队的工作绩效。
<p><strong>Q5</strong><strong>：如何解决工作中的问题？</strong><strong></strong>
<p><strong>A5</strong><strong>：</strong>在工作中发生的问题，通常有80%～90%都是事实明确的，剩下的10%～20%是事实不明确的。
<p>对于事实明确的问题，解决问题的方式是：
<p>1）收集数据——三现主义（现场，现物，现实），并采取紧急措施；
<p>2）寻找问题的真正原因：（3WHY 系统图法）
<p>a）让所有人知道问题在哪里
<p>b）弄清楚解决问题的目的
<p>c）即使一个不良也要对策
<p>3）采取对策消除真正的原因
<p>对于事实不明确的问题，解决问题的方式是：
<p>1）成立QCC（品管圈）或者QIT（品质改进小组）
<p>2）利用SPC，QC工具，6&#963;等工具进行问题分析，找真正原因
<p>3）形成统计报表，用来做预防管理。
<p><strong>Q6</strong><strong>：目标设定的</strong><strong>SMART</strong><strong>原则</strong><strong></strong>
<p><strong>A6</strong><strong>：</strong>SMART指的是Specific、Measurable、Achievable、Relevant、Timely。
<p>Specific是指每项目标的指订，一定是特定的，而不是一个概略性的；
<p>Measurable是指可衡量的，每项目标必须要用量化的指标来订定；
<p>Achievable是指可达成的，所有的目标一定要是能达得到的；
<p>Relevant是指有关的，也就是每项目标都必须与主管的目标相结合；
<p>Timely是指时效性，也就是每项目标要在限定的时间内完成。
<p><strong>二、工作规划与分配</strong><strong></strong>
<p><strong>Q7</strong><strong>：主管的时间如何管理？</strong><strong></strong>
<p><strong>A7</strong><strong>：</strong>工作通常可以分为四种类型：定型性工作、规则性工作、特别性工作、创造性工作。
<p>1）定型工作指个人专长的事情；
<p>2）规则性工作指诸如开会、电话、巡视工作现场；
<p>3）特别性工作指诸如跟上司讨论计划、协助上司解决问题；
<p>4）创造性工作指辅导部属解决问题。
<p>通常前二种工作的绩效比重常只占20%，对于这样的工作，主管需要思考：
<p>a）是否可以授权？
<p>b）是否可以代理给别人？
<p>c）是否可以不要做？
<p>对于后两种工作需要多思考如何增加其比重。
<p><strong>Q8</strong><strong>：工作如何分配给下属？</strong><strong></strong>
<p><strong>A8</strong><strong>：</strong>1）团队的建立是主管的职责不是部属的责任；
<p>2）主管培养接班人一定会造成组织的不平衡，但主管要负责平衡；
<p>3）主管在分配工作时，需要根据事情的成熟度，部属的成熟度和组织的成熟度之不同来分派工作。分配工作时需要告诉部属：
<p>a）是什么事，谁交代的；
<p>b）为什么让他做（个人重要性）
<p>c）这件事的价值：对单位，对个人
<p><strong>Q9</strong><strong>：主管如何面对命令系统的例外？</strong><strong></strong>
<p><strong>A9</strong><strong>：</strong>一个组织通常都会从品质、成本、弹性、速度和服务等几个方面来提高客户满意度。其中品质和成本是基本因素，弹性、速度和服务是差异化因素。
<p>在追求用差异化因素提高客户满意度的组织里，命令系统的例外是经常会遇到的。
<p>主管在遇到这样的情形时，面对部属需要扮演支援的角色，支援部属时，需要：
<p>1）问部属做什么事情，目的在哪里；
<p>2）问部属是否需要支援；
<p>3）问部属什么时候可以完成；
<p>4）帮部属安排事情的轻重缓急；
<p>5）责任主管承担。
<p>对于上司，主管需要：
<p>1）报告进度；
<p>2）重新确认目的；
<p>3）跟上级寻求支援；
<p>4）对上司笑一笑。
<p>任务完成后，向上司报告时，主管需要：
<p>1）跟部属一起报告。由主管报告两头，部属报告专业性的内容。
<p>2）部属报告完毕后，请部属先离开。
<p><strong>三、人力资源发展</strong><strong></strong>
<p><strong>Q10</strong><strong>：主管如何培育部属？</strong><strong></strong>
<p><strong>A10</strong><strong>：</strong>主管需要与部属一起，以个人KPI为目标，结合个人期待（生涯规划、部属目前具备的条件）和组织期待（担任工作必备条件），来制定部属指导计划表。
<p>并按照部属指导计划表对部属进行培养，并且定期与部属就训练成果进行沟通，寻找差距以改进。
<p><strong><em>完成</em></strong><strong><em>KPI</em></strong><strong><em>是主管的职责，培养接班人</em></strong><strong><em>/</em></strong><strong><em>部属是主管的天职。</em></strong><strong><em></em></strong>
<p><strong>四、激励与人际沟通</strong><strong></strong>
<p><strong>Q11</strong><strong>：</strong><strong> </strong><strong>如何使部属表现良好的绩效？</strong><strong></strong>
<p><strong>A11</strong><strong>：</strong>要使部属表现出良好的绩效，需要做到以下几点：
<p>1）让部属了解自己的职责；
<p>2）让部属知道自己的工作目标；
<p>3）让部属知道自己的工作对组织的贡献和价值；
<p>4）使部属具备从事该项工作的知识技能；
<p>5）对绩效好的部属要给以奖励；
<p>6）对部属的工作，主管要给以支持，并及时加以回馈和鼓励；
<p>7）主管要促进员工有意愿不断改善绩效。
<p><strong>Q12</strong><strong>：如何与部属做绩效</strong><strong>Review</strong><strong>？</strong>
<p><strong>A12</strong><strong>：</strong>在与部属做绩效Review时，主管重点需要思考三个问题：
<p>1）这个部属做得如何？
<p>2）他可以改进些什么？
<p>3）我应该做些什么来改善部属的绩效？
<p>在实施绩效Review时，主管需要：
<p>1）准备议程（面谈结构化）；
<p>2）建立一个不拘泥，不仓促的气氛；
<p>3）用称赞来建立双方的信心；
<p>4）让部属做自我评量，以降低部属的紧张；
<p>5）鼓励部属说话并积极倾听部属说话。
<p>6）讨论部属的工作绩效，焦点放在事实上，不做人身攻击，不牵扯到不相干的争端；
<p>7）主管需要保持正向态度，用正向语言做批评；
<p>8）主管需要在平日即时指正需改善之处，以避免面谈时突然提出；
<p>9）与部属一起商讨可测量的目标以及未来可行的计划。
<p><strong>Q13</strong><strong>：部属需求不满时如何处理？</strong><strong></strong>
<p><strong>A13</strong><strong>：</strong>1）先完成需求的分析表格，弄清楚部属的需求、目标、障碍和不满行为是什么；
<p>2）排除工作上的障碍。部属不满通常60%～70%是感情、家庭、个人等方面的因素，对于这些方面的因素，主管要做的是：
<p>a）公司的规定只能表达一次
<p>b）不能说公私分明
<p>c）倾听对方讲话，讨论对方的话题
<p>d）共通讨论可能的解决方案（请上司裁决）
<p>e）适当时请同事在工作上给以协助
<p><strong>Q14</strong><strong>：部属做得不好时如何处理？</strong><strong></strong>
<p><strong>A14</strong><strong>：</strong>当部属做得不好时，跟其反馈需要注意：
<p>1）尽量不要当下指正（时间，地点）
<p>2）方式上
<p>a）不要批评，指责
<p>b）要提出问题，要提供解决方案
<p>c）采用分享的方式
<p>3）态度上
<p>a）协助对方
<p>b）平等的
<p><strong><em>部属为什么不愿意承担责任，是因为我们常在其他人面前指正部属。</em></strong><strong><em></em></strong>
<p><strong>Q15</strong><strong>：如何与平行单位沟通？</strong><strong></strong>
<p><strong>A15</strong><strong>：</strong>当单位间有冲突不可调和时，需要从以下几点来考虑和解决：
<p>1）公司的目的/顾客的目的是什么？
<p>单位的目的是手段，不能因为手段而忘了目的。
<p>2）提高两个位阶来考虑
<p>3）提出双方意见，求同存异，先执行相同的
<p>4）创造新的解决方法
<p>5）请上司裁决（尽量少用，因为高阶主管不喜欢做内部裁决，原因
<p>a) 因为手心手背都是肉
<p>b) 并不了解过程
<p>c) 会造成更激烈的冲突和派系
<p><strong><em>组织的冲突是进步的动力</em></strong><strong><em></em></strong>
<p><strong>Q16</strong><strong>：如何与上司进行沟通？</strong><strong> </strong>
<p><strong>A16</strong><strong>：</strong>在与上司沟通时，重要的是做到参与管理：
<p>1）不只是提出问题，同时也要提出建议；
<p>2）提建议时，需要提二个以上的建议，并加以分析（只提一个建议的主管是陷害上司的人）；
<p>3）与上司讨论，并由上司做裁决。
<p>同时需要注意上班是行销。行销的是自己的能力。
<p>最后需要注意的是与上司沟通时的态度：是争取资源与支援，而不是证明对或错。
<p><strong>五、授权给部属</strong><strong></strong>
<p><strong>Q17</strong><strong>：授权的前提是什么？</strong><strong></strong>
<p><strong>A17</strong><strong>：</strong>授权的前提是工作标准化。只有将工作标准化后，主管才可以授权给部属处理——可控。
<p>工作标准化的方式是拟定工作分解表，或工作指南或Checklist。
<p><strong>Q18</strong><strong>：授权失败后如何做？</strong><strong></strong>
<p><strong>A18</strong><strong>：</strong>1）主管要能承担责任；
<p>2）与部属一起寻找原因并分析它；
<p>3）辅导部属执行纠正措施。
<p><strong>Q19</strong><strong>：主管裁决的</strong><strong>7-2-1</strong><strong>原则</strong><strong></strong>
<p><strong>A19</strong><strong>：</strong>对于市场，顾客与员工的需求，通常通过组织的办法，流程（法）可以满足70%，对于这些部分需要进行标准化，细化到工作分解表，并授权给基层人员直接处理。
<p>对于另外的20%，则需要由主管根据顾客利益和公司利益平衡后从合理的角度进行决定
<p>对于剩下10%中阶主管不能确定的，则由高阶主管进行裁决。高阶主管裁决时多从情的角度决定。
<p>通过对以上内容的学习，让我自感受益非浅，故将其整理出来作为自己未来的一个行动指南。同时将其与大家分享，也希望能够对各位同仁的工作产生积极的影响。
<p>另外，对于以上整理的内容，如果你觉得有任何遗漏的地方，欢迎与我联系，让我们共同完善上面的知识地图，期待与大家的交流！</p>
</div>
<img src ="http://www.blogjava.net/fastzch/aggbug/339054.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2010-11-25 18:46 <a href="http://www.blogjava.net/fastzch/archive/2010/11/25/339054.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从输入网址到显示网页，这个过程究竟发生了什么？</title><link>http://www.blogjava.net/fastzch/archive/2010/08/24/329729.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Tue, 24 Aug 2010 01:06:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2010/08/24/329729.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/329729.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2010/08/24/329729.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/329729.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/329729.html</trackback:ping><description><![CDATA[<p>看到这篇文章，我不得不转一下，原文地址：http://css9.net/what-happened-when-you-navigate/<br />
<br />
作为一个软件开发者，你一定会对网络应用如何工作有一个完整的层次化的认知，同样这里也包括这些应用所用到的技术：像浏览器，HTTP，HTML，网络服务器，需求处理等等。</p>
<p>本文将更深入的研究当你输入一个网址的时候，后台到底发生了一件件什么样的事～<br />
1. 首先嘛，你得在浏览器里输入要网址:</p>
<p><img alt="" src="http://igoro.com/wordpress/wp-content/uploads/2010/02/image4.png" /></p>
<p>2. 浏览器查找域名的IP地址</p>
<p><img alt="" src="http://igoro.com/wordpress/wp-content/uploads/2010/02/image13.png" /></p>
<p>导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下：</p>
<p>* 浏览器缓存 &#8211; 浏览器会缓存DNS记录一段时间。 有趣的是，操作系统没有告诉浏览器储存DNS记录的时间，这样不同浏览器会储存个自固定的一个时间（2分钟到30分钟不等）。<br />
* 系统缓存 &#8211; 如果在浏览器缓存里没有找到需要的记录，浏览器会做一个系统调用（windows里是gethostbyname）。这样便可获得系统缓存中的记录。<br />
* 路由器缓存 &#8211; 接着，前面的查询请求发向路由器，它一般会有自己的DNS缓存。<br />
* ISP DNS 缓存 &#8211; 接下来要check的就是ISP缓存DNS的服务器。在这一般都能找到相应的缓存记录。<br />
* 递归搜索 &#8211; 你的ISP的DNS服务器从跟域名服务器开始进行递归搜索，从.com顶级域名服务器到Facebook的域名服务器。一般DNS服务器的缓存中会有.com域名服务器中的域名，所以到顶级服务器的匹配过程不是那么必要了。</p>
<p>DNS递归查找如下图所示：</p>
<p><img alt="" src="http://igoro.com/wordpress/wp-content/uploads/2010/02/500pxAn_example_of_theoretical_DNS_recursion_svg.png" /></p>
<p>DNS有一点令人担忧，这就是像wikipedia.org 或者 facebook.com这样的整个域名看上去只是对应一个单独的IP地址。还好，有几种方法可以消除这个瓶颈：</p>
<p>* 循环 DNS 是DNS查找时返回多个IP时的解决方案。举例来说，Facebook.com实际上就对应了四个IP地址。<br />
* 负载平衡器 是以一个特定IP地址进行侦听并将网络请求转发到集群服务器上的硬件设备。 一些大型的站点一般都会使用这种昂贵的高性能负载平衡器。<br />
* 地理 DNS 根据用户所处的地理位置，通过把域名映射到多个不同的IP地址提高可扩展性。这样不同的服务器不能够更新同步状态，但映射静态内容的话非常好。<br />
* Anycast 是一个IP地址映射多个物理主机的路由技术。 美中不足，Anycast与TCP协议适应的不是很好，所以很少应用在那些方案中。</p>
<p>大多数DNS服务器使用Anycast来获得高效低延迟的DNS查找。</p>
<p>3. 浏览器给web服务器发送一个HTTP请求</p>
<p><img alt="" src="http://igoro.com/wordpress/wp-content/uploads/2010/02/image22.png" /></p>
<p>因为像Facebook主页这样的动态页面，打开后在浏览器缓存中很快甚至马上就会过期，毫无疑问他们不能从中读取。</p>
<p>所以，浏览器将把一下请求发送到Facebook所在的服务器：</p>
<p>GET http://facebook.com/ HTTP/1.1<br />
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...]<br />
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]<br />
Accept-Encoding: gzip, deflate<br />
Connection: Keep-Alive<br />
Host: facebook.com<br />
Cookie: datr=1265876274-[...]; locale=en_US; lsd=WW[...]; c_user=2101[...]</p>
<p>GET 这个请求定义了要读取的URL： &#8220;http://facebook.com/&#8221;。 浏览器自身定义 (User-Agent 头)， 和它希望接受什么类型的相应 (Accept and Accept-Encoding 头). Connection头要求服务器为了后边的请求不要关闭TCP连接。</p>
<p>请求中也包含浏览器存储的该域名的cookies。可能你已经知道，在不同页面请求当中，cookies是与跟踪一个网站状态相匹配的键值。这样cookies会存储登录用户名，服务器分配的密码和一些用户设置等。Cookies会以文本文档形式存储在客户机里，每次请求时发送给服务器。</p>
<p>用来看原始HTTP请求及其相应的工具很多。作者比较喜欢使用fiddler，当然也有像FireBug这样其他的工具。这些软件在网站优化时会帮上很大忙。<br />
除了获取请求，还有一种是发送请求，它常在提交表单用到。发送请求通过URL传递其参数(e.g.: http://robozzle.com/puzzle.aspx?id=85)。发送请求在请求正文头之后发送其参数。</p>
<p>像&#8220;http://facebook.com/&#8221;中的斜杠是至关重要的。这种情况下，浏览器能安全的添加斜杠。而像&#8220;http: //example.com/folderOrFile&#8221;这样的地址，因为浏览器不清楚folderOrFile到底是文件夹还是文件，所以不能自动添加 斜杠。这时，浏览器就不加斜杠直接访问地址，服务器会响应一个重定向，结果造成一次不必要的握手。</p>
<p>4. facebook服务的永久重定向响应</p>
<p><img alt="" src="http://igoro.com/wordpress/wp-content/uploads/2010/02/image8.png" /></p>
<p>图中所示为Facebook服务器发回给浏览器的响应：</p>
<p>HTTP/1.1 301 Moved Permanently<br />
Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0,<br />
pre-check=0<br />
Expires: Sat, 01 Jan 2000 00:00:00 GMT<br />
Location: http://www.facebook.com/<br />
P3P: CP=&#8221;DSP LAW&#8221;<br />
Pragma: no-cache<br />
Set-Cookie: made_write_conn=deleted; expires=Thu, 12-Feb-2009 05:09:50 GMT;<br />
path=/; domain=.facebook.com; httponly<br />
Content-Type: text/html; charset=utf-8<br />
X-Cnection: close<br />
Date: Fri, 12 Feb 2010 05:09:51 GMT<br />
Content-Length: 0</p>
<p>服务器给浏览器响应一个301永久重定向响应，这样浏览器就会访问&#8220;http://www.facebook.com/&#8221; 而非&#8220;http://facebook.com/&#8221;。</p>
<p>为什么服务器一定要重定向而不是直接发会用户想看的网页内容呢？这个问题有好多有意思的答案。</p>
<p>其中一个原因跟搜索引擎排名有 关。你看，如果一个页面有两个地址，就像http://www.igoro.com/ 和http://igoro.com/，搜索引擎会认为它们是两个网站，结果造成每一个的搜索链接都减少从而降低排名。而搜索引擎知道301永久重定向是 什么意思，这样就会把访问带www的和不带www的地址归到同一个网站排名下。</p>
<p>还有一个是用不同的地址会造成缓存友好性变差。当一个页面有好几个名字时，它可能会在缓存里出现好几次。<br />
5. 浏览器跟踪重定向地址</p>
<p><img alt="" src="http://igoro.com/wordpress/wp-content/uploads/2010/02/image23.png" /></p>
<p>现在，浏览器知道了 &#8220;http://www.facebook.com/&#8221;才是要访问的正确地址，所以它会发送另一个获取请求：</p>
<p>GET http://www.facebook.com/ HTTP/1.1<br />
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...]<br />
Accept-Language: en-US<br />
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]<br />
Accept-Encoding: gzip, deflate<br />
Connection: Keep-Alive<br />
Cookie: lsd=XW[...]; c_user=21[...]; x-referer=[...]<br />
Host: www.facebook.com</p>
<p>头信息以之前请求中的意义相同。<br />
6. 服务器&#8220;处理&#8221;请求</p>
<p><img alt="" src="http://igoro.com/wordpress/wp-content/uploads/2010/02/image9.png" /></p>
<p>服务器接收到获取请求，然后处理并返回一个响应。</p>
<p>这表面上看起来是一个顺向的任务，但其实这中间发生了很多有意思的东西- 就像作者博客这样简单的网站，何况像facebook那样访问量大的网站呢！</p>
<p>* Web 服务器软件<br />
web服务器软件（像IIS和阿帕奇）接收到HTTP请求，然后确定执行什么请求处理来处理它。请求处理就是一个能够读懂请求并且能生成HTML来进行响应的程序（像ASP.NET,PHP,RUBY&#8230;）。</p>
<p>举 个最简单的例子，需求处理可以以映射网站地址结构的文件层次存储。像http://example.com/folder1/page1.aspx这个地 址会映射/httpdocs/folder1/page1.aspx这个文件。web服务器软件可以设置成为地址人工的对应请求处理，这样 page1.aspx的发布地址就可以是http://example.com/folder1/page1。<br />
* 请求处理<br />
请求处理阅读请求及它的参数和cookies。它会读取也可能更新一些数据，并讲数据存储在服务器上。然后，需求处理会生成一个HTML响应。</p>
<p>所 有动态网站都面临一个有意思的难点 -如何存储数据。小网站一半都会有一个SQL数据库来存储数据，存储大量数据和/或访问量大的网站不得不找一些办法把数据库分配到多台机器上。解决方案 有：sharding （基于主键值讲数据表分散到多个数据库中），复制，利用弱语义一致性的简化数据库。</p>
<p>委 托工作给批处理是一个廉价保持数据更新的技术。举例来讲，Fackbook得及时更新新闻feed，但数据支持下的&#8220;你可能认识的人&#8221;功能只需要每晚更新 （作者猜测是这样的，改功能如何完善不得而知）。批处理作业更新会导致一些不太重要的数据陈旧，但能使数据更新耕作更快更简洁。<br />
7. 服务器发回一个HTML响应</p>
<p><img alt="" src="http://igoro.com/wordpress/wp-content/uploads/2010/02/image10.png" /></p>
<p>图中为服务器生成并返回的响应：</p>
<p>HTTP/1.1 200 OK<br />
Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0,<br />
pre-check=0<br />
Expires: Sat, 01 Jan 2000 00:00:00 GMT<br />
P3P: CP=&#8221;DSP LAW&#8221;<br />
Pragma: no-cache<br />
Content-Encoding: gzip<br />
Content-Type: text/html; charset=utf-8<br />
X-Cnection: close<br />
Transfer-Encoding: chunked<br />
Date: Fri, 12 Feb 2010 09:05:55 GMT</p>
<p>2b3Tn@[...]</p>
<p>整个响应大小为35kB，其中大部分在整理后以blob类型传输。</p>
<p>内容编码头告诉浏览器整个响应体用 gzip算法进行压缩。解压blob块后，你可以看到如下期望的HTML：</p>
<p>&#8220;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&#8221;&gt;<br />
lang=&#8221;en&#8221; id=&#8221;facebook&#8221; class=&#8221; no_js&#8221;&gt;<br />
<br />
<br />
<meta content="en" http-equiv="Content-language" /><br />
&#8230;</p>
<p>关于压缩，头信息说明了是否缓存这个页面，如果缓存的话如何去做，有什么cookies要去设置（前面这个响应里没有这点）和隐私信息等等。</p>
<p>请注意报头中把Content-type设置为&#8220;text/html&#8221;。报头让浏览器将该响应内容以HTML形式呈现，而不是以文件形式下载它。浏览器会根据报头信息决定如何解释该响应，不过同时也会考虑像URL扩展内容等其他因素。<br />
8. 浏览器开始显示HTML</p>
<p>在浏览器没有完整接受全部HTML文档时，它就已经开始显示这个页面了：</p>
<p><img alt="" src="http://igoro.com/wordpress/wp-content/uploads/2010/02/image6.png" /></p>
<p>9. 浏览器发送获取嵌入在HTML中的对象</p>
<p><img alt="" src="http://igoro.com/wordpress/wp-content/uploads/2010/02/image11.png" /></p>
<p>在浏览器显示HTML时，它会注意到需要获取其他地址内容的标签。这时，浏览器会发送一个获取请求来重新获得这些文件。</p>
<p>下面是几个我们访问facebook.com时需要重获取的几个URL：</p>
<p>* 图片<br />
http://static.ak.fbcdn.net/rsrc.php/z12E0/hash/8q2anwu7.gif<br />
http://static.ak.fbcdn.net/rsrc.php/zBS5C/hash/7hwy7at6.gif<br />
&#8230;<br />
* CSS 式样表<br />
http://static.ak.fbcdn.net/rsrc.php/z448Z/hash/2plh8s4n.css<br />
http://static.ak.fbcdn.net/rsrc.php/zANE1/hash/cvtutcee.css<br />
&#8230;<br />
* JavaScript 文件<br />
http://static.ak.fbcdn.net/rsrc.php/zEMOA/hash/c8yzb6ub.js<br />
http://static.ak.fbcdn.net/rsrc.php/z6R9L/hash/cq2lgbs8.js<br />
&#8230;</p>
<p>这些地址都要经历一个和HTML读取类似的过程。所以浏览器会在DNS中查找这些域名，发送请求，重定向等等&#8230;</p>
<p>但 不像动态页面那样，静态文件会允许浏览器对其进行缓存。有的文件可能会不需要与服务器通讯，而从缓存中直接读取。服务器的响应中包含了静态文件保存的期限 信息，所以浏览器知道要把它们缓存多长时间。还有，每个响应都可能包含像版本号一样工作的ETag头（被请求变量的实体值），如果浏览器观察到文件的版本 ETag信息已经存在，就马上停止这个文件的传输。</p>
<p>试着猜猜看&#8220;fbcdn.net&#8221;在地址中代表什么？聪明的答案是&#8221;Facebook内容分发网络&#8221;。Facebook利用内容分发网络（CDN）分发像图片，CSS表和 JavaScript文件这些静态文件。所以，这些文件会在全球很多CDN的数据中心中留下备份。</p>
<p>静态内容往往代表站点的带宽大小，也能通过CDN轻松的复制。通常网站会使用第三方的CDN。例如，Facebook的静态文件由最大的CDN提供商Akamai来托管。</p>
<p>举例来讲，当你试着ping static.ak.fbcdn.net的时候，可能会从某个akamai.net服务器上获得响应。有意思的是，当你同样再ping一次的时候，响应的服务器可能就不一样，这说明幕后的负载平衡开始起作用了。<br />
10. 浏览器发送异步（AJAX）请求</p>
<p><img alt="" src="http://igoro.com/wordpress/wp-content/uploads/2010/02/image12.png" /></p>
<p>在Web 2.0伟大精神的指引下，页面显示完成后客户端仍与服务器端保持着联系。</p>
<p>以 Facebook聊天功能为例，它会持续与服务器保持联系来及时更新你那些亮亮灰灰的好友状态。为了更新这些头像亮着的好友状态，在浏览器中执行的 JavaScript代码会给服务器发送异步请求。这个异步请求发送给特定的地址，它是一个按照程式构造的获取或发送请求。还是在Facebook这个例 子中，客户端发送给http://www.facebook.com/ajax/chat/buddy_list.php一个发布请求来获取你好友里哪个 在线的状态信息。</p>
<p>提起这个模式，就必须要讲讲&#8221;AJAX&#8221;&#8211; &#8220;异步JavaScript 和 XML&#8221;，虽然服务器为什么用XML格式来进行响应也没有个一清二白的原因。再举个例子吧，对于异步请求，Facebook会返回一些 JavaScript的代码片段。</p>
<p>除了其他，fiddler这个工具能够让你看到浏览器发送的异步请求。事实上，你不仅可以被动的做为这些请求的看客，还能主动出击修改和重新发送它们。AJAX请求这么容易被蒙，可着实让那些计分的在线游戏开发者们郁闷的了。（当然，可别那样骗人家~）</p>
<p>Facebook聊天功能提供了关于AJAX一个有意思的问题案例：把数据从服务器端推送到客户端。因为HTTP是一个请求-响应协议，所以聊天服务器不能把新消息发给客户。取而代之的是客户端不得不隔几秒就轮询下服务器端看自己有没有新消息。</p>
<p>这些情况发生时长轮询是个减轻服务器负载挺有趣的技术。如果当被轮询时服务器没有新消息，它就不理这个客户端。而当尚未超时的情况下收到了该客户的新消息，服务器就会找到未完成的请求，把新消息做为响应返回给客户端。<br />
总结一下</p>
<p>希望看了本文，你能明白不同的网络模块是如何协同工作的</p>
<p><strong>原文：</strong><a onclick="javascript:pageTracker._trackPageview('/outbound/article/igoro.com');" href="http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ ">http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/</a><br />
<strong>译文：</strong><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.cnblogs.com');" href="http://www.cnblogs.com/wenanry/archive/2010/02/25/1673368.html">http://www.cnblogs.com/wenanry/archive/2010/02/25/1673368.html</a></p>
<div style="text-align: right"><script type="text/javascript" charset="utf8">cT="0";nc="#444444";nBgc="";nBorder="#F5E5A9";tc="#649B00";tBgc="#FFF4D0";tBorder="#F5E5A9";tDigg="%E6%8E%A8%E8%8D%90";tDugg="%E5%B7%B2%E8%8D%90";defaultItemUrl="WEB_URL";defaultFeedUrl ="http://feed.css9.net";</script><script type="text/javascript" charset="utf8" src="http://re.xianguo.com/api/diggthis.js"></script><iframe height="22" src="http://re.xianguo.com/diggButtonInterface.php?pageName=initDiggButton&amp;defaultFeedUrl=http%3A%2F%2Ffeed.css9.net&amp;cT=0&amp;nc=%23444444&amp;nBorder=%23F5E5A9&amp;tc=%23649B00&amp;tBgc=%23FFF4D0&amp;tBorder=%23F5E5A9&amp;tDigg=%25E6%258E%25A8%25E8%258D%2590&amp;tDugg=%25E5%25B7%25B2%25E8%258D%2590" frameborder="0" width="89" name="xianguo_digg_frame" scrolling="no"></iframe><script type="text/javascript" src="http://9.douban.com/js/button_widget.js"></script><iframe height="20" marginheight="0" src="http://9.douban.com/recommend/widget?src=http%3A%2F%2Fcss9.net%2Fwhat-happened-when-you-navigate%2F&amp;title=%E4%BB%8E%E8%BE%93%E5%85%A5%E7%BD%91%E5%9D%80%E5%88%B0%E6%98%BE%E7%A4%BA%E7%BD%91%E9%A1%B5%EF%BC%8C%E8%BF%99%E4%B8%AA%E8%BF%87%E7%A8%8B%E7%A9%B6%E7%AB%9F%E5%8F%91%E7%94%9F%E4%BA%86%E4%BB%80%E4%B9%88%EF%BC%9F%20-%20CSS9.NET" frameborder="0" width="150" marginwidth="0"></iframe></div>
<p style="font-weight: bold">延伸阅读:
<ol>
    <li><a title="Permanent Link: 了解HTTP Headers的方方面面" href="http://css9.net/all-about-http-headers/" rel="bookmark">了解HTTP Headers的方方面面</a></li>
    <li><a title="Permanent Link: 改善CSS编码的5个在线幻灯片教程" href="http://css9.net/5-presentations-improve-css-coding/" rel="bookmark">改善CSS编码的5个在线幻灯片教程</a></li>
    <li><a title="Permanent Link: 向大师们学习Javascript（视频、PPT）" href="http://css9.net/learn-javascript-from-masters/" rel="bookmark">向大师们学习Javascript（视频、PPT）</a></li>
    <li><a title="Permanent Link: 通过javascript实现的快速编码解码服务" href="http://css9.net/text-escape-unescape-in-javascript/" rel="bookmark">通过javascript实现的快速编码解码服务</a></li>
    <li><a title="Permanent Link: 一个简单的、循序渐进的CSS幻灯片教程" href="http://css9.net/simple-css-cascade-presentation/" rel="bookmark">一个简单的、循序渐进的CSS幻灯片教程</a></li>
    <li><a title="Permanent Link: 好书推荐：《Google API大全：编程&#183;开发&#183;实例》，即将上市" href="http://css9.net/google-api-all-in-one-book/" rel="bookmark">好书推荐：《Google API大全：编程&#183;开发&#183;实例》，即将上市</a></li>
    <li><a title="Permanent Link: 请关爱您的身体——《IT人健康宝典》" href="http://css9.net/iter-health-handbook/" rel="bookmark">请关爱您的身体——《IT人健康宝典》</a></li>
    <li><a title="Permanent Link: CSS中文速查表（CSS Cheat Sheet）" href="http://css9.net/chinese-css-cheat-sheet/" rel="bookmark">CSS中文速查表（CSS Cheat Sheet）</a></li>
</ol>
<img src ="http://www.blogjava.net/fastzch/aggbug/329729.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2010-08-24 09:06 <a href="http://www.blogjava.net/fastzch/archive/2010/08/24/329729.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]名师解密：如何提高英语听力水平</title><link>http://www.blogjava.net/fastzch/archive/2010/08/12/328598.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Wed, 11 Aug 2010 23:44:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2010/08/12/328598.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/328598.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2010/08/12/328598.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/328598.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/328598.html</trackback:ping><description><![CDATA[<p><span style="font-family: 楷体_GB2312"><em style="color: #0000ff">来源不详，写得很好，童鞋们，一起来练听力吧！</em></span></p>
<p>&nbsp;&nbsp;&nbsp; 从2000年开始做托福老师，到2005年去哥伦比亚大学读书，包括之前在别的机构讲托福，我教过无数的学生，也结合自己的教学，总结出一些行之有效的学习方法。不过，从来没有把我教学的精华和学习方法形成文字。现在不讲课了，我觉得有必要把我多年总结的一些对大家可能有帮助的内容写在这里，与大家共同分享。如果你看了我写的，觉得有用，就请你告诉更多需要的人，让我的文字可以帮到更多在出国道路上拼搏奋斗的人。我始终觉得：分享会给我们带来最大的快乐。也谢谢你们对我的信任。</p>
<p>　　听力水平要在国内提高</p>
<p>　　对于一个有出国梦想的人来说，英语的四个基本技能听说读写当然都重要。但如果我们一个月之后就要出国了，按照80/20效率理论，我们做事情要Set Priorities。就是得排出优先顺序。那很显然，听力水平的提高就成了重中之重。原因很简单，你一出国，马上就要听课，听别人讲话获取信息。可能开学一个多月就要期中考试。而国外学校的考试，大多数内容都是来自于老师课上讲过的知识。因此，如果你口语不好，你可以暂时不开口；阅读速度慢，但字总是在书上，你有很多机会可以看；写作能力不好，可以通过多搜集素材多准备来弥补；只有听力，老师在课上讲过一遍就消失了，没有了。所以说如果听不懂老师上课就会很麻烦。我先说说我出国时经历的和见到的情况。可能因为我大学时是学英语的，又教了很多年听力，所以我出国后英语方面没有障碍。能够轻松自如的交流，也能够听懂老师讲课。但我周围的很多中国同学，到了国外听力方面都需要一个适应期，一个月到半年不等。我绝不比这些同学优秀。我只是比他们幸运。闻道有先后，术业有专攻。我只是恰巧多接触了英语而已。我在哥大的很多中国同学上课都是带着录音笔去的。把老师的讲课内容录下来，回去再听一遍。有的在国内觉得自己考试听力水平还可以，出去也会遇到障碍。因为在中国学校里或考试时听的英语资料发音都很标准。到了国外，教授讲课和实际生活中，大家的口音五花八门，印度音，澳大利亚音，加拿大音，非洲音，日本音，墨西哥音等等。而且老师上课还经常讲专业性很强的内容。于是乎，很多同学都必须录下老师的讲课内容回去重听。想一下，出了国需要适应国外的生活文化，还要花比别人多一倍的时间听老师的录音，再加上想家，岂不是很辛苦，也比较浪费时间。所以提高听力水平这项工作，应该在国内完成。</p>
<p>　　听力水平提高的规律</p>
<p>　　在具体讲如何提高之前，希望大家先区分应试能力和真正的听力实力。应试能力提高了，这只是实力的一部分。而考试之外，切实把自己的听力水平提高才是真正的实力体现，也是出国前所必须的。听力水平提高到一定程度后，就变成了技能。什么是技能呢？技能就是一经掌握，不会忘记的东西。比如游泳，骑自行车，这些都是技能。你现在会了游泳，就算三年不游，三年之后把你扔水里，你还是会游。今天会骑自行车，五年后也不会忘记的。很多人之所以听力提高不了，就是因为没有咬紧牙关把听力水平提高到技能之上。总是听一听，放一放。等下次再拿起来听力材料练习时，发现水平又退回去了。于是，莘莘学子们就不断鼓勇气，不断订计划，不断重新开始，又不断放弃。一鼓作气，再而衰，三而竭的道理大家都懂。但在听力方面能坚持做到的人不多。其实只要保证长期的每天的一个练习量，你就会发现，一旦听力水平到达了技能之上，想再下降，那基本是不可能的。就算很久不听，你再听时也一定是听得懂的。每天听两个小时，比三四天不听，第五天连续听十几个小时进步得快得多。所以学习最重要的一点是掌握对的方法。口语就不是这样。口语只有经常训练，才会说得越来越流利，越来越好。但无论再流利，如果一段时间不说，水平还是会下降，就连母语有时也会出现这种状况。举例说明，你看破红尘，遁入空门20年，等你重新回到社会上，你一定还是很轻松就能听懂周围人说话。但由于多年没有和人打交道，不怎么用语言交流了，你可能发现自己说都不会话了，反应也慢了。</p>
<p>　　另外，听力水平的提高曲线和口语阅读写作词汇等也都很不一样。我把听力的提高成为平台阶梯式。也就是你在提高听力的过程中，会一直在一个平台上前进，在这个过程中，你会觉得自己提高的很慢或者完全没有提高，甚至还会出现觉得越听越退步的情况。但这些都不应该成为你前行的阻碍。只要你坚持，就会量变积累带来质的飞跃，跨到下一级台阶上。然后继续在新的平台上前进前进前进进，直到跃到下一级更高的台阶。而口语阅读写作词汇等的提高属于爬坡式的，虽然坡度有急有缓，但整体趋势是一直向上的。所以这也就是为什么大多人会觉得背单词比较有成就感，而练听力似乎进步不明显。我想，如果大家明白了我总结的平台阶梯式和爬坡式进步曲线，也就能更好的明白为什么听力一定要每天坚持听的道理了。</p>
<p>　　上一篇文章里讲了两点，一是听力水平应该在国内提高；二是听力水平提高的规律。今天主要谈谈大家在练习时，具体怎么听，听什么等问题。听力提高的方法分为精听和泛听。</p>
<p>　　精听</p>
<p>　　精听一个重要的练习方法是听写（Dictation）。我还记得，当年我考英语专业八级时，是要考听写的。那时考察方式是，一篇文章一共读四遍。第一遍总听，大概把握文章主题和大意。听第二遍时开始写，但肯定会漏掉很多词没写下来。第三遍开始补空。最后一遍总体检查。如果我们平时练习听力也用这样的方法的话，你会发现既浪费时间，提高得也很缓慢。虽然我英语八级证书是优秀，但说心里话，我觉得当时的老师并没有教给我们什么学习方法，完全靠拼命反复做题。由我的经历可以得出：你要是特别能吃苦，可以天天学英语十几个小时，并且坚持下来的话，你的英语同样能够学好，在刻苦练习的过程中自己也会总结出很多学习方法和规律。可人的生命太短暂了，如果我们把有限的生命错误地投入到一些低效能的事情上的话，就得不偿失了。推荐大家看《80/20效率法则》，很多外企面试员工，都会考察这本书里面的一些观点。这本书的核心观点其实就是：人要把有限的精力投入到最有可能带来效益的事情上去。现在大家有福了！我会尽力帮大家总结提炼些能帮助你们高效提高英语水平的学习方法。</p>
<p>　　听写材料的选择</p>
<p>　　建议大家不要用电影对白或者托福听力的对话部分练听写。换句话说，对话类型的材料（conversations）是不适合拿来练听写的。原因很简单，对话的难点不在于某一个词，或一个复杂的句型，或比较晦涩的内容，或巨大的信息量。难点往往来自于一些音变现象，比如连读失去爆破；来自于一些俚语习惯表达；来自于上下文语境的理解。换句话说，很多对话材料，就算原文里每个单词你都认识，但不一定理解这句话的意思。所以，费了半天劲听写下来的对话内容，要么看不懂不理解；要么就是这次看懂了，下次还是听不出。所以，对话材料应该采用的练习方法其实是跟读模仿。后面会讲到。</p>
<p>　　用来练听写的材料应该是一个人的陈述、讲座之类的（Lecture）。之所以选择这样的材料，是和练听写的目地分不开的。练听写的核心本质其实是为了提高我们快速理解和记忆的能力。有的同学误以为听写就是要把听到的所有内容都写下来，那是一些考试的要求，不是我们平时提高听力的方法。如果那样练习，你会发现两个问题：一是，有的时候就算写下来了，其实也不知道自己写了些什么。二是，觉得刚才听懂了，但要下笔写的时候觉得又忘了听到什么了。造成这两种情况的原因，都是因为我们没理解听到的内容。听写真正应该做的是记忆和总结的工作，而不是听和写的工作。什么叫做记忆和总结，就是我们不需要完全按顺序重复这一个人的每一个字，但我们要做到能理解它的内容，并在总结后复述出来。这才是我们练听写真正的目地。如果我们总是反复听原文，一个字一个字写，可能半个小时才写了一个五分钟的文章，而这半小时的投入可能就没有达到什么提高听力水平的效果。</p>
<p>　　听写材料的长度应该是一分钟左右的。千万不能用太长的。曾经有一个同学跟我说，张老师我在练听写。我今天听写的是马丁&#183;路德&#183;金的著名的演讲&#8220;I have a dream&#8221;。这得写多久啊！</p>
<p>　　适合用来练习精听的材料包括：老托福听力材料中，Part C的lectures。新托福iBT的lectures很长，大家可以分成几次来练听写。同时，新概念英语二册三册的lectures也可以用来练习。这里面有一个时间问题，如果你就剩一两个月就要去参加考试，一定记住所有的练习内容都应该是和你要参加考试直接相关的材料。而且由于时间比较紧，就不建议天天练听写。一周练个两三次足矣。所以说很多时候，学习方法没有对错，只有在特定时期如何练习的区别。 </p>
<p><br />
听写的步骤</p>
<p>　　第一步总听全文。既然叫总听，就是不要陷入文章内容的细节。总听只做两件事，一是明确主题，大概知道这个段落讲了什么事。二是寻找逻辑。英文文章的逻辑包括什么呢？只要能简单判断出这篇文章是按时间顺序写的还是空间顺序；是现象解释还是两种观点的比较等。所以在总听第一遍的时候，关注那些起承转合的词，可以帮我们快速把握文章的逻辑关系。比如你听一篇段落，听到in the past，那你的预期就该是，后面可能会提到now，也许还有in the future。听到&#8220;一些人认为&#8221;，那你的反应应该是，接下来会谈&#8220;另一些人或者我认为的&#8221;。以前大家对于这样的能够提示你文章逻辑关系或顺序的词是不敏感的。总是在听写第一遍的时候就陷入细节。 </p>
<p>　　第二步细听每句。在细听每句时，我见过有同学用复读机听。一句话说完，他就按个复读，让机子一遍一遍地读这句话，他不紧不慢地逐字听写下来。这种听写就属于低效甚至无效听写。换句话说，你付出了80％的努力，却可能只带来20％的效果。还有些同学是这样练习的：就听一句话时，刚听到两个词，就马上按暂停，写下这两个词，然后再听三个词按暂停，写下这三个词。一句话被他分割成很多部分，听得支离破碎。我这里讲的细听每句，主要强调句子的概念，是sentence by sentence的听写，不是word by word的听写。不过，这里的sentence也不是说非得到一个句号才算是一个sentence，这里指的是一个语意的停顿，包括像逗号，分号，冒号等，都叫语意的停顿，在这样的地方可以按暂停。具体操作建议：一句话先听一遍，到了一个语意停顿的地方按暂停，通过你的回忆把这句话写下来。有同学可能说，老师，一句话说了十几个词，我才能写出三五个单词，根本没关系，因为我们在这里练的不是把听到的内容完全写下来的能力，而是锻炼记忆和总结能力。这里记住：每句话只听一遍，尽力写出或复述出你听到的内容。能写多少算多少。开始能写三五个词，坚持练习，就能写出更多的。</p>
<p>　　第三步反复琢磨。这一步是核心关键。&#8220;反复&#8221;在这里不是一个副词来修饰琢磨的，反复和琢磨都是动词，指既要反复，又要琢磨。反复多少次合适呢？我见过特用功的同学，一句话听不懂，他就发誓说不把你听出来我就不吃饭！于是反复了三五十遍，听得眼睛都绿了，还是没听明白。这不又是80％的努力用在了没有效率的20％的事情上了。反复三五遍是最合适的。如果一句话反复三五遍还没有听出来的话，再听十遍八遍和三五遍的效果是没有太大区别的。不过反复一两遍又太少。不要急着知道说得是什么，要通过反复三五遍，建立对整个句子的感觉。</p>
<p>　　反复</p>
<p>　　A. 反复一遍后，句子的意思全理解了，这时候就别试图把这句话一字不漏地写下来了。只要用记忆和总结把这句话的核心大意写下来就行了。</p>
<p>　　B.反复了几遍之后发现大多数内容都听明白了，但里面的个别词没听出来。这些个别词可能对我们来说是生词，也有可能是发音或音变导致我们没听出来。这时需要大家做的工作是，记录声音符号。也就是用你熟悉的音标，汉字或其它标音方式，把你听到的声音记录下来。这个工作非常重要。总有同学说：老师，这句话我听不出来听不懂。我就会问：那你听到声音了吗？他说：听到了。我说：听到了什么声音。他说：啊，忘了。我们练习的时候为什么不提高，就是因为我们每次反复三五遍之后就直接打开原文看了。一看原文恍然大悟，哦，原来是这样一句话啊。这时，当你把原文放在一边再去听一遍听力材料时，你发现你都懂了。而这根本不是用耳朵听出来的，不是你的听力水平提高了，而是你用眼睛看完了记住了。就像我听广东歌，我先看一下歌词，再去听，我会觉得我广东话的听力水平还不错嘛，都能听懂。但如果不让我看歌词，直接去听，我肯定听得稀里糊涂。这些年来，很多同学也就是活在这种幻觉中。听了几遍，看了原文再去听，就以为自己听力水平提高了。所以说，要改变这种情况，我们一定要在听的过程中记录声音符号。这么做的目地是为了建立你耳朵听到的声音和实际内容之间的关联。把你听到的声音用你熟悉的符号记下来，哪怕只能记录下一种语气语调的起伏或者个别的声音。有时候成功失败只在一线间，就差那一点点。</p>
<p>　　在听写的过程中，记录声音符号这一步就是那一点点。如果不记录，你永远不知道这个单词这个短语作用在你的耳朵里是什么声音。同样的词作用在不同的人耳朵里，声音符号是不同的。如果你认真记录一次，下次再听到一样或类似的声音时，你的反应速度和理解能力一定会加快。为什么大家听到Good morning的时候，完全不需要反应就得懂，而且会立刻反应出来意思是早上好。就是因为我们对这两个词的声音符号已经非常熟悉。而很多其它的单词或短语，我们认都不认识，更不用说在我们脑海中有什么似成相识的声音符号了。我们也从来没有试图去体会过，这些词和短语在我们自己的耳中，听到的感觉是什么。</p>
<p>　　C.听了三五遍，发现整个句子还是不知所云。这种情况的就是多种因素作用的结果了。可能里面有生词，有音变，还有可能是句型结构不熟悉不理解。这种情况下，大家就应该同时做A.B里面提到的工作。并把这句话作为接下来琢磨和总结的重点来对待。</p>
<p>　　琢磨</p>
<p>　　反复完三五遍，打开听力原文，对照原文和自己的听写笔记琢磨。琢磨什么呢？刚才这儿我没听出来，是因为我不认识这个单词，还是因为觉得发生了音变现象，还是因为我对这个词或短语的声音不熟悉，反应的慢。如果你能这样坚持二十天到一个月的训练，听力不可能有问题。所有的材料只要是词汇量积累了，听多少材料都不存在问题。这是我们说的在第三步反复琢磨要做的两个工作。</p>
<p>　　第四步总结全文。总结全文就是希望大家能够在总结的时候做两个工作。一是对照着自己写的声音材料再去听一遍原文。再看着听力原文在心里默默地把这篇文章读一遍，同时回想刚才在这里为什么没听出来。发现了问题，更重要的是采取策略来解决问题。如果因为是单词不认识，我就多记两遍。如果是因为发音问题，我就多跟读两遍。如果是因为句型句式不熟悉，我就把这个句子单独提出来分析一下，然后用这个句型再造两个句子。其实一篇一分钟左右的文章，如果我们每天坚持用这四大步骤练一遍的话，一个月下来，听力水平一定会突飞猛进。 </p>
<p>　在继续讲如何提高听力水平以前，先回答一下网友提得比较典型的听力中的问题；</p>
<p>　　问题：晓楠姐，真是听托福听到绝望了，我觉得有以下几个问题，可能也是很多人的问题，您在下一篇文章看看能不能谈一谈：1、段子长，容易走神，咋整啊?&nbsp; 2 、听了挺多，可是还是有很多词不懂，虽然有些名词不会影响做题，但是影响听力过程啊。3 、听的过程有时候听得都是零散的单词，不知道整个句子啥意思。4、基于1-3，于是我崩溃了&#8230;&#8230;</p>
<p>　　我分别来说一下吧。</p>
<p>　　4基于1-3，于是我崩溃了&#8230;&#8230;：如果看完我的回答，你还是崩溃。那我就崩溃了！</p>
<p>　　1、段子长，容易走神，咋整啊?&nbsp; ：走神问题，是我以前在课上经常会提起的。我们经常讲：态度决定一切。大家对待走神，也得首先端正态度，明白听力走神是正常的，不走神才是不正常的。1分钟走一次神是正常的，1秒钟走一次神就不正常了。我们练听力一个重要的目标，不是练到听听力时不走神，而是练到同等时间里，走神的频率和长度越来越少；更要练习就算走神了，也能马上收回注意力。而不是边走神，边提醒自己不能走神；边提醒自己不能走神边走神。进入这个恶性循环。</p>
<p>　　新托福iBT听力的段子确实比较BT，每篇都很长。但是，咱中国不是有句话叫：言多必失嘛。句子说得越多，重复的机会反而越大，一句没听到，后面经常还会有其它信息提示你刚才错过了的内容。所以，大家不要畏惧段落变长了，而应该庆幸我们获取信息点的地方多了。之所以你会觉得痛苦，是因为每次你走神时，你都觉得自己很罪恶。而且坚信你走神的地方，是出题的地方。这其实是个心理因素。走神除了由心理因素影响外，还有就是你听不懂时就容易走神。</p>
<p>　　改变它的办法就是提高整体听力水平。水平不切实提高，听力走神的问题就不能得到大幅度的改善。比如，听听力决不能是一个词一个词的理解意思，这样万一碰到一个词不认识或者反应慢了，就会不自觉地停在那里想，导致走神。听力最重要的是把握节奏PACE。你千万不能停下来想，一定要接着往前听。Don't stop! Follow up。至于如何提高把握理解句子的能力，请参照我相关的提高听力水平的博文。呵呵。</p>
<p>　　2、 听了挺多，可是还是有很多词不懂，虽然有些名词不会影响做题，但是影响听力过程啊。：从问的第一和第二个问题，我可以看出，这位同学在听力中欠缺的就是我上面回答的听力的节奏PACE。第一个问题的回答也同样适用于这个问题。你可以仔细体会一下。另外，关于把握听力的节奏这点，其实说起来容易做起来难。大家遇到没听懂的，会不自然地放慢速度，停下来想。解决的一个办法是：多熟悉句型结构，这样就能更好地判断出听到的内容，尤其是不会的单词是否影响句意的理解。一旦判断出这个词听不听得懂根本不重要时，自然就会很坦然的接着听的。可如果你对句型把握的不好，就会觉得每个词似乎都很重要。解决的另一个方法就是大量泛听。我下一篇文章会讲如何泛听。</p>
<p>　　3、 听得过程有时候听得都是零散的单词，不知道整个句子啥意思。：你这个问题，我在如何练习听写里讲了。请参照如何提高英语水平之听力篇（二）练习。</p>
<p>　　好，我接下来继续讲如何提高听力水平。</p>
<p>　　上一篇讲了精听的一个重要练习方法：听写。精听包括听写，但不局限于听写。精听材料的选择要根据自己的学习目地来定。如果是为了准备考试，那么一定要具体到考哪个考试，就精听这个考试的真题。比如学校的英语考试，精听的材料就应该是平时上课时指定的英语教材，考托福、雅思、四六级、考研、英语专八等，那就是应该精听历年的真题。用这些材料练习精听的目地，一是为了考试时做对题目；二是为了充分熟悉了解特定考试考察的内容范围；三是为了熟悉出题人的思路。同学们容易走入的一个误区是：老师，真题太珍贵太有限了。我觉得我提前把它们都做了的话，就给浪费了。我是不是应该先从模拟题或者其它的材料入手呢？等水平差不多了再来做真题？</p>
<p>　　我不得不再次强调上篇文章提到过的80/20效率法则。请大家做事抓核心，抓事物的主要矛盾。在考试分数提高上，没有任何一种材料对你的帮助可以大过历年来的真题。不要总带着猜题压宝的心理，觉得我多做一套模拟题，没准儿考场上就能多碰上一道。其实，与其做50套不同的模拟题，不如把10套真题每套做5遍。花的时间是同样的，但效果差异会相当大。记住，人这一辈子犯新的错误的机会不多的。稍留心你就会发现，很多时候，在不同的情况下，自己犯的居然是同一类错误。</p>
<p>　　学英语也是同样，重要的是善于总结自己常犯的错误。我记得曾经一个高考状元谈为什么自己得了状元时说：当很多同学高三时忙着做很多新的模拟题时，我在忙着总结从高一到高三现在所有做过题目中的错题。我把这些做错的题目都整理在一个本子上，结果发现自己进步飞快。我平时在班上并不是最优秀的，但因为后期复习阶段，我觉得自己采取了比较正确的学习方法，所以取得了事半功倍的效果。</p>
<p>　　引用王菲笑忘书里的歌词&#8220;不再犯同一个错误&#8221;。从现在开始，精听做题时，不能再只求量，不管质。质和量都需要保证。这里面的核心工作就是，每次做一套题，都必须记录自己做题的过程。这和听写不一样，不是让你写下来听到的字词，而是记录自己选答案的过程。比如这道题如果是用排除法做出的，你用一种符号标注；是连蒙带猜选的答案，更得标注出来；是不太肯定的状态下选的一个答案，也得标识。总之，除了自己坚定选的答案以外，别的选项都必须用你自己习惯的不同的符号标注记录下来。这样才能在精听完题目之后，有针对性的提高。否则如果你是蒙对了的，你不做记号，误以为自己掌握了这个知识点，谁能保证下次还这么幸运蒙对呢。如果是不肯定的状态下选对的，说明这个知识点还很薄弱，不及时记录，怎么知道在这儿存在问题呢。俗话说：以史为镜嘛。</p>
<p>　　切记，自己做的题目答案不要写在书上，也不能随便拿张纸选答案，对完答案就扔掉。而是应该专门用一个本子记录。这样当你再重新做这套题时，可以把两次做的答案错的题目进行比较，也更容易发现自己学习中的漏洞和问题。把答案直接写在书上的坏处，一是下次再做这套题时会受这次选的答案的影响。二是如果擦去已选的答案，就无法把两次做的情况进行比较。不要每次做题都在同一个层次上挣扎，要通过不断地发现问题，解决问题，到下一个层面上去奋斗！ </p>
<p>　　关于泛听，大家问得最多的就是到底要泛到什么程度。是泛泛地听吗？听什么？听多久？有同学问过我说，每天刷牙洗脸的时候开着录音机听，每天骑自行车的时候戴着耳机听，甚至是晚上失眠时，一听英语就睡着了。在这些情况下，都不知道自己在听什么，这样泛听到底对提高听力水平有没有帮助？我要告诉大家的是，这其实是提高听力最有效的手段，就是每天只要有空，就戴着耳机听英语。之所以一些同学没有提高，或提高缓慢，是因为没有做到&#8220;每天&#8221;和&#8220;只要有空&#8221;。&nbsp;&nbsp; </p>
<p>　　我用我自己的经历和另一位新东方托福名师的例子，来跟大家讲讲这样的练习方式。我当年上大学的时候每次考听力基本都是第一，而且我当时也没觉得听力对我来说特别难。我们宿舍有九个女生，有一次在宿舍聊天，有人就问：&#8220;张晓楠，为什么你的听力这么好？&#8221;说实在的，当时我根本就不知道什么学习方法，我自己也不知道为什么好。但一个室友的一句话点醒了梦中人，她说：&#8220;我知道。因为张晓楠每天总是戴着耳机在听。&#8221;可是很遗憾，我当时每天听的全是港台流行歌曲，根本没听英文啊。她说：&#8220;听什么无所谓，总之你老是戴着耳机听，就把耳脉打通了。&#8221;当时大家笑作一团，我也瞬间觉得自己似乎在练什么武侠神功，还耳脉！</p>
<p>　　不过笑过之后，我想起来一件事情，马上觉得我的室友说得很有道理。我从高中的时候就自觉自发自愿自主的产生了对英语的兴趣，那个年代，都是从初中开始学英语，大学以前从来没上过什么听力口语课，学的是经典的哑巴英语，所以那时也没人告诉过我什么精听、泛听的概念。初中学英语，觉得是为老师而学。高中才觉得真正喜欢上英语。于是出于兴趣，每天没事儿就拿着磁带挂着耳机听。听了以后也没什么直接的感觉，没觉得听力水平提高。但后来意识到，泛听最大的好处就是，对英语语言的语音语调语汇句型，有了基本的感观认识，在参加考试过程中心理上就不会有障碍，不会紧张。那时可选择的材料非常少，我听的是《走遍美国》，那是我第一次觉得直观地接触到美国人真实的生活、文化、社会，让我更喜欢听了。那时住宿，宿舍熄灯早，我于是就黑着听，直到听睡着为止。我就这么泛听了两三年，不知不觉中，英语听力水平已经大幅提高。后来总结时感觉，如果当时懂得的话，加上精听，两者相辅相成，一定提高的更快。</p>
<p>　　我喜欢一句话：能充分利用零散时间的人，才是最有可能成功的人。整块儿的时间谁都能看到能把握，而人和人的区别，更多时候是来自于细微处对自己的把控力。我虽然不算成功，但是我总是努力学习别人的优点。同时，吾日三醒吾身，争取做得更好。我当时作为新东方学生的一段利用零散时间的经历，也为我听力水平的提高，带来了很好的效果。</p>
<p>　　那时我骑自行车去北京新东方学习。我上的是暑假班，一共四十天的课，单程路上要骑两个多小时，意味着每天来回有五个多小时的时间在路上。早上八点半上课，十一点下课。太阳没出来就要出门，中午阳光正灿烂哪，又得往回骑。第一天骑完，我就问自己，每天这五个多小时的宝贵生命，难道就这样被我浪费了吗？我想我骑着自行车还能干嘛？我总不能看书吧。我想唯一可以做的事情就是戴着耳机听英语。那时不像现在有MP3，Ipod，我那时拿的是个录音机，用个绳子拴在自行车后座上。戴的耳机是那种罩在耳朵上比较大的，小的容易伤耳朵。从那天开始，我就跟个飞行员似的，在炎炎烈日中，戴着那副大耳机。我骑了四十天自行车，每天戴五个多小时的耳机听英语。其实，我并没有多少注意力是在耳朵里的英文上的，我我骑车子还得看路看车看红绿灯吧。我还是个喜欢挑战自我的人，一路上跟自己比赛。比如，今天我用八分钟骑到了这棵树，明天我就想试试能不能用七分钟骑到。就在这种情况下，四十天之后，我惊讶地发现，之前觉得听起来可能还有点小问题的材料，居然已经没有障碍了。</p>
<p>　　另外一个例子，就是新东方一个托福阅读名师的例子。他阅读写作水平都很高，听力比起那两项来，稍逊风骚。他就问我，到底这个听力该怎么提高。我对他说：你工作这么忙，估计也没时间坐下来练什么听力的精听，你就只要用空就挂着耳机听英语吧。他是个态度特别端正、做事特别认真的人，从那之后，无论在哪儿见到他，甚至大家一起聚会吃饭，他都戴着耳机在听英语。半年之后，他跟我讲：这样果真有效啊！</p>
<p>　　之前的文章，我也提到，出国时，听力技能是英语听说读写中必须最先解决的。你总得先听懂对方，才有可能把你更深邃的思想表达给他听吧。我就经常听到中国人跟外国人交流时，外国人问一个选择句，比如说：你喜欢吃苹果还是桔子。这个中国人斩钉截铁的回答：Yes。外国人懵了，不知道他为什么回答yes，但咱们自己人应该明白吧。因为他只听到了前半部分，没听清是个选择句，他以为人家问他你是不是喜欢苹果。</p>
<p>　　说了这么多，大家最感兴趣的是学习材料。我先在这里告诉大家一个原则：教材的好坏差异，并没有我们想象的那么大。如果任何一本正规出版社出的正规英语教材，你把它认真研究通研究透，你的水平早就提高了。就是因为我们盲目在这些客观学习材料上挑来挑去，而没有从自身主观学习态度上找原因或作改变，才导致我们浪费了大量的时间。我在这里推荐的材料，会对大家有帮助。但绝对不是说只有这些材料才能让你提高英语听力水平。大家完全可以根据自己的英语程度和喜好去选择。</p>
<p>　　走遍美国。</p>
<p>　　疯狂英语。注意，我这里说的不是李阳的&#8220;疯狂英语&#8221;，而是国内首创的英语学习有声读物。</p>
<p>　　记录片。比如探索频道、历史频道的很多材料都可以用来练习。</p>
<p>　　美国的朗读版的书（当然如果是考雅思或者其它听力，就根据考试中朗读者的口音选取相应的材料）。之所以有很多这样的材料，最早是因为希望盲人也可以享受到好书籍中的智慧。后来知道很多人工作繁忙，坐下来看书的时间有限。于是可以通过CD在车里听这些书的朗读版。比如克林顿的《我的一生》，大家就可以在网上找到下载听听。克林顿被称为美国历史上最有演讲天赋的总统，演讲时基本不需要稿子。他的声音非常优美。那本书就是他自己朗读的。既练了听力，又听了一本好书。何乐而不为。</p>
<p>　　CNN的英语新闻也是可以拿来泛听的。但我建议大家在听CNN时，不要去听他们比较偏时政的新闻材料，因为你很有可能是不了解背景信息，所以导致听得稀里糊涂。可以选些专题性比较强的报导去听。</p>
<p>　　国外教授讲课的实录材料。国外学校和其它网站上有很多教授或学者就某一学科或某一话题的讲解、演讲、讨论。大家下载下来泛听一下，能对国外学校校园和学术生活有个进一步的了解，同时也帮助大家提高听力水平。</p>
<p>　　STEP BY STEP。这是我当年作为英语专业的学生，用的听力必备教材。这套教材一共四册，虽然老，但是编排得还是很系统的。如果大家是没有考试压力，就为了提高听力水平，可以用它来做精听练习。但如果时间紧、任务重，泛听就可以了。</p>
<p>　　电视剧电影对白。比如流行多年的《老友记》。记住，这个材料不用拿来练，更适合用来练泛听。如果你是看着电视练听力的，记住一定不要打开对白，中英文字幕都不要看。最好是录在mp3里，用零散时间戴着耳机泛听，效果更好。之所以不建议大家看电视画面，就是很多听不懂的情况下，看着画面里人物的表情和场景，也能猜出个大概。这种情况下，你在锻炼的就不是你耳朵的功夫了。为什么盲人听力比较好？如果明白这个道理，大家也应该能理解。所以如果要提高听力水平，就不要看字幕和画面。现在流行的电视剧很多。大家根据喜好去选择就可以，当然电影材料也是类似的操作方法。</p>
<p>　　我说一下选电视剧和电影材料的原则。一、材料的语速最好比你习惯或考试的速度快一些。为什么要这样？如果你平时都泛听语速快的材料，这样考试时在你心情比较紧张的情况下，你也不会觉得考试的材料语速很快。就如同举重运动员平时训练时，基本都会举起比真正比赛时更重的重量。二、材料的难度最好比你的水平高一些，比考试材料也难一些。比如，平时泛听的材料里有更多你听不出不认识的生词，有更多你不熟悉的话题场景，有更多复杂的句型结构。这样做的目的和第一点类似，就是平时对自己要求高一些，考场上就会轻松许多。电影电视方面，什么样题材符合这点呢？比如法律、政治题材，都有这个特点。政客律师说话，逻辑性强，用词复杂，比较难懂，语速还快。像当年的《费城故事》、《白宫奇缘》都是挺经典的电影。三、发音应该是和你要参加的考试相同或相似的。比如如果参加托福，你就要充分熟悉美式英语的发音。比如很多动画片的配音，和托福考试里的相去甚远，你说你看动画片提高托福听力水平，效果就不会太明显。四、一定要选对白多的电影电视剧。叙事类的，爱情电影，对白就会比较丰富。如果是战争题材，满耳朵估计听得都是轰炸声，听力没练好，耳朵因被过分刺激而暂时失聪就不好了。</p>
<p>　　可别小看这一点。大家都知道，一个人在听力水平不好时，总觉得是录音材料效果不好，声音听不清，所以习惯性地把声音调得很大。这是大家一定要避免的。这样做的结果是，你的耳朵会疲劳得非常快，而且会觉得听得脑袋疼，还真的可能会导致听觉能力下降的。不知道你们有没有听过一个人总用Ipod听摇滚，他开着音乐，旁边人都听得清清楚楚，结果他失聪了，于是他状告Ipod索赔！所以，大家不可小视。平时练的时候，一定要把音量调到比自己听着舒服的声音还小一点的声音来练英语听力。这样的话，你的注意力会更集中的去听，也不会那么快就感到疲劳。记住，你觉得听力声音效果不好时，可能是因为你的水平暂时还没有到达材料的要求，而并非真的不清楚。</p>
<p>　　推荐了这么多，还是记住我那句话，千万不要贪多嚼不烂。人一辈子不需要做很多事情，把一件事情做好，你就成功了。</p>
<img src ="http://www.blogjava.net/fastzch/aggbug/328598.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2010-08-12 07:44 <a href="http://www.blogjava.net/fastzch/archive/2010/08/12/328598.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WINRAR打包时，去掉SVN或CVS版本控制信息文件</title><link>http://www.blogjava.net/fastzch/archive/2010/04/12/318065.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Mon, 12 Apr 2010 07:21:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2010/04/12/318065.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/318065.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2010/04/12/318065.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/318065.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/318065.html</trackback:ping><description><![CDATA[看了以前同事写的blog，发现工作中用到了一些小技巧，分享给大家：<br />
<br />
1，过滤CVS控制信息文件：<br />
右击文件夹--&gt;Add to archive...--&gt;Files --&gt; Files to exclude
<p>输入:&nbsp; *\CVS *\CVS\* *\.#* 即可</p>
<br />
2，如果是SVN的话，输入&nbsp; *\.svn *\.svn\*&nbsp; 即可<br />
当然，SVN也可以用其自带的export功能先导出，然后再打包。
 <img src ="http://www.blogjava.net/fastzch/aggbug/318065.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2010-04-12 15:21 <a href="http://www.blogjava.net/fastzch/archive/2010/04/12/318065.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学生制作演唱超牛串烧歌曲《换大米进行曲》经典，笑死ME鸟……</title><link>http://www.blogjava.net/fastzch/archive/2010/03/16/315562.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Tue, 16 Mar 2010 03:04:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2010/03/16/315562.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/315562.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2010/03/16/315562.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/315562.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/315562.html</trackback:ping><description><![CDATA[超强的经典歌曲接龙串烧《换大米进行曲》，据说是中国传媒大学的学生作品，比古巨基的串烧还要猛哈，雷死人呐不偿命啊～爱上一个不回家的人，有啥不一样~搞笑 死了都要爱，在电线杆上多嘴&#8230;&#8230;
<br />
<embed src="http://player.youku.com/player.php/sid/XMTQ0NzcwNDM2/v.swf" quality="high" width="480" height="400" align="center" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed><img src ="http://www.blogjava.net/fastzch/aggbug/315562.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2010-03-16 11:04 <a href="http://www.blogjava.net/fastzch/archive/2010/03/16/315562.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个程序员的2009</title><link>http://www.blogjava.net/fastzch/archive/2010/03/11/315217.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Thu, 11 Mar 2010 15:31:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2010/03/11/315217.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/315217.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2010/03/11/315217.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/315217.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/315217.html</trackback:ping><description><![CDATA[<span style="font-family: 楷体_GB2312"><em>本不打算记这个的，今天突然看到&#8220;兔八哥&#8221;的记录，觉得文风挺好，我也想记记，以后可以回顾回顾。<br style="font-family: " />
</em></span><br />
1月，继续出差生活，忙着某电信行业核心业务系统试点项目最后的验收，就在元旦前的几个晚上，两台服务器的grep命令丢失（太奇怪了，后来查了半个月原因，还是没分析出来原因），导致watchdog程序启动了近20K个进程，最终系统崩溃，幸好是试点，只有300万用户在几个小时无法通话。从此，带领一帮兄弟24小时值班，正是这次机会，让我学到了很多24值班安排的经验，现在看来，4个人是有点忙不过来的。<br />
<br />
2月，春节期间没有回家，一个人独自在机房值守，到是清闲，麦当劳吃得我反胃，导致胃疼，直到最后需要胃药的帮助。也因为此，领导一直记在心里，常常提及，说明付出总是有回报的。<br />
<br />
3月，为入网证连续工作72小时，靠红牛提神，最终通过。后来每每客户提及此事，总用好听的话说我是他们的兄弟，领导又一次用这样的话鼓励我。之后回武汉看父母。<br />
下旬，受邀参加&#8220;IBM WebSphere技术专家沙龙（华南区广州站）&#8221;，这一期的主题是安全方面的，作为主讲嘉宾，我跟同行们一起探讨开源的安全框架——&#8220;Spring Security&#8221;。<br />
<br />
4月，有入网证了就好说，顺利拿下两个网元，为新版本的事儿开始规划，让我对OMC有了全面的认识。比较郁闷的事情也由此发生了，同样是客户的政治斗争，美其名曰：平衡。为了寻开心，第一次爬了白云山，发现人运动一下还是很舒服的，在广州吃到还算正宗的热干面。<br />
中旬，飞上海转昆山，为某ERP系统做performace调优，并跟大家一起探讨了如何做系统架构设计。<br />
<br />
5月，继续被平衡游戏玩得郁闷，找同事和领导吐过两次苦水，同时，也跟将同事变为朋友。常常跟领导聊天的凌晨三点，跟他学了不少智慧，人由此变得更大器，更成熟。<br />
值班的工作终于结束，不过还得带着一帮兄弟做开发，也是常常加班。<br />
<br />
6月，广州的天很热，开始比较讨厌坐交通车，爱上打的。努力工作，为新版本上线做准备，开始写各种文档，发挥我的强项，基本上重要的文档都是我亲自操刀。其实写文档比较锻炼一个人的结构力，锻炼一个人的考虑问题的完备性。<br />
<br />
7月，广州的BRT建设导致大面积塞车，变得更讨厌城市生活，几乎天天路过Starbucks，可从没进去过，因为马上就到家了。<br />
<br />
8月，开始筹划考OCP，并寻找代理机构，获得领导的报销审批（不过最后没使用）。经历几个月的斗争，大家都有点心力不支，我也有点累，萌生退意。<br />
<br />
9月，基本上在机房上线实施搞了前前后后一个多月，沉浸在AIX和Redhat的世界里，做了很多次压测，结果还算理想。同时，对系统水平和垂直扩展有了深刻的认识。咳嗽不止，进机房太冷，开始咳，回酒店就好了，前后持续20天左右，比较痛苦，后来有了机房恐惧症，一是怕冷，二是舍不得酒店10M的宽带。提醒要去机房的人，多穿点。<br />
接到现在公司的电话，谈了几轮，彼此感觉不错，回武汉基本搞定新offer。决定放弃年终还算不错的奖金，提出离职，领导听了我的几句话，没说什么，只说这是他的成功，虽然我知道他心里很难过，很想留我。其实也不是对当下的工作不满意，领导对我很好，老总说什么条件只要我提就满足，客户的平衡游戏基本上也结束了，只是考虑到未来，职位，培训机会，薪水三方面因素，去意已决。<br />
<br />
10月，回武汉过十一，在家宅了7天。开始准备工作移交的事，很多同事为我送行，前前后后吃饭喝酒搞了半个多月，很感动！男同事，女同事，看起来都很羡慕我，我也说了很多赞美他们的话，因为他们真的都很优秀！至今厉厉在目。一个客户公司的朋友说要开车送我去机场，我婉拒了，实在有点难为情，虽然我们成了真正的朋友。<br />
明显感觉领导有时候心情不好，我知道是我的离开闹的，我变得似乎很成熟，开始学会安慰他。<br />
离开前还参加了公司组织的活动，去香江野生动物园玩了一午，晚上吃自助餐，第一次吃哈根达斯，觉得跟普通的ice-cream没什么区别。<br />
<br />
11月，回武汉，并到新公司报道，努力工作，一上就解决了几个performance的问题，很快适应新环境，接着用从未用过的Flex开发了一个stream player，幸好action script跟Java差不多，几个小时功夫，就上手了。工作语言切换到英文，一开始不太习惯，写封邮件需要花较长时间，发现每天要花1小时左右的时间写邮件，常常为语法的事想半天，突然觉得语法还是很有用的。同时，发现新公司也有一些不太好的地方，工作效率不高，但自认为我到以后，这方面有所改善，基本上做到了及时响应。<br />
<br />
12月，大冬天的，要起早赶车，感觉今年武汉的冬天特别冷，深入研究了MP3格式的一些细枝末节，对MPEG格式的音频部分有了较全面的了解。东西终于算是做出来了，头头们还算满意，开会时还特地表扬我们team，让我担心的比较难溶入团队的恐惧荡然无存。回想起曾经给同事说过一句话：无论在哪里，在哪个项目，做什么，我都能学到东西。再一次印证，其实关键是自己要有自己的思考。英文写作水平有所改进，需继续加强！<br />
常常去startbucks，点上一杯我的最爱：芒果星冰乐，发现坐在里面我可以静下心来听听英语。<br />
报名开始参加驾校的学习，遭遇教我打死盘子的教练（后来才知道这是不行的）。终于搞定银行的7折利率优惠，NND，又一次被民生银行的霸王条款强奸，导致比别人晚了一年享受国家政策。同时也搞定了拖了好几年的房产证。<br />
<br />
就2009的流水帐小结一下：<br />
0，很感谢上一任领导对我的帮助，让我学会了如何大器。<br />
1，计划的OCP因为换工作没有完成，现在开始犹豫是否还要继续？或可以考虑直接考Oracle 11G的OCP，如果有OCM，是不是可以去Oracle工作？个人比较喜欢Oracle。<br />
2，从11月回武汉结束近2年的出差的日子，过得挺忙的，要把拖了这长时间的私人事务一一处理完，还算充实。<br />
3，觉得今年需要完整学习一下语法，同时需要补强常用词组的用法。<br />
4，技术方面，今年不太想有太大的建树，跟项目走，目前看来，可能需要对Flex有更深入的研究。另外有一个想法就是想自学一下websphere process.<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/fastzch/aggbug/315217.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2010-03-11 23:31 <a href="http://www.blogjava.net/fastzch/archive/2010/03/11/315217.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>检测浏览器是否为IE的最简单的方法</title><link>http://www.blogjava.net/fastzch/archive/2010/03/02/314276.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Tue, 02 Mar 2010 05:35:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2010/03/02/314276.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/314276.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2010/03/02/314276.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/314276.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/314276.html</trackback:ping><description><![CDATA[俄国老毛子在科技方面还是很厉害的，他们发现了一个检测是否是IE最简单的方法，仅用6个字符就搞定了，如下：<br />
!-[1,]<br />
<br />
以下是测试代码：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img id="Codehighlighter1_23_64_Open_Image" onclick="this.style.display='none'; Codehighlighter1_23_64_Open_Text.style.display='none'; Codehighlighter1_23_64_Closed_Image.style.display='inline'; Codehighlighter1_23_64_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_23_64_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_23_64_Closed_Text.style.display='none'; Codehighlighter1_23_64_Open_Image.style.display='inline'; Codehighlighter1_23_64_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_23_64_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_23_64_Open_Text"><span style="background-color: #f5f5f5; color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="background-color: #f5f5f5; color: #0000ff">var</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;isIE&nbsp;</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;</span><span style="background-color: #f5f5f5; color: #000000">!-</span><span style="background-color: #f5f5f5; color: #000000">[</span><span style="background-color: #f5f5f5; color: #000000">1</span><span style="background-color: #f5f5f5; color: #000000">,];&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />alert(</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">isIE:</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">isIE);<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></div>
<br />
太强了！
<img src ="http://www.blogjava.net/fastzch/aggbug/314276.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2010-03-02 13:35 <a href="http://www.blogjava.net/fastzch/archive/2010/03/02/314276.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>［转］丈夫日记</title><link>http://www.blogjava.net/fastzch/archive/2009/12/15/306030.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Tue, 15 Dec 2009 08:00:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2009/12/15/306030.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/306030.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2009/12/15/306030.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/306030.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/306030.html</trackback:ping><description><![CDATA[<p>比较少转载东西，今天转点儿轻松心情的，抱歉，不知道来源。<br />
</p>
<p>&gt;&gt; &gt; ※&nbsp;&nbsp;&nbsp; 太太出差一周<br />
&gt;&gt; &gt; 1. 昨天太太出差，所以今天太太不在家。没有晚饭吃<br />
&gt;&gt; &gt; 2. 今天太太又不在家。又没有晚饭吃。<br />
&gt;&gt; &gt; 3. 今天太太还是不在家。还是没有晚饭吃。<br />
&gt;&gt; &gt; 4. 今天太太还是不在家。探望父母，在父母家吃晚饭。<br />
&gt;&gt; &gt; 5. 今天太太还是不在家。探望姐妹，在妹妹家吃晚饭。<br />
&gt;&gt; &gt; 6. 今天太太还是不在家。探望老友，老友太太也不在家。没有晚饭吃。<br />
&gt;&gt; &gt; 7. 今天太太还没回家。打电话问太太何时回家。</p>
<p>&gt;&gt; &gt; ※&nbsp;&nbsp;&nbsp; 陪太太下棋<br />
&gt;&gt; &gt; 1. 今天周六，在家下棋，连赢太太五局。没有晚饭吃。<br />
&gt;&gt; &gt; 2. 今天周日，在家下棋，连输太太五局。晚上太太给我炖肉吃。<br />
&gt;&gt; &gt; 3. 今天周六，跟太太商量好我先赢两局再输三局。然后陪太太下棋。</p>
<p>&gt;&gt; &gt; ※&nbsp;&nbsp;&nbsp; 爱太太是个问题<br />
&gt;&gt; &gt; 1. 今天太太问我是否爱她，立即答复说是。太太问我是否仔细考虑过，答复说：<br />
都回答得习惯了，所以没有考虑。没有晚饭吃。<br />
&gt;&gt; &gt; 2. 今天考虑了半天才回答太太说我爱她。没有晚饭吃。<br />
&gt;&gt; &gt; 3. 今天不肯回答太太是否爱她。没有晚饭吃。</p>
<p>&gt;&gt; &gt; ※&nbsp;&nbsp;&nbsp; 亲与被亲<br />
&gt;&gt; &gt; 1. 今天晚饭评论太太手艺。饭后被罚刷碗。<br />
&gt;&gt; &gt; 2. 今天太太讲了一个笑话，我没有笑。花了一个小时哄太太笑。<br />
&gt;&gt; &gt; 3. 今天捉到太太早晨上班忘记关灯。罚太太五块。<br />
&gt;&gt; &gt; 4. 今天被太太捉到在家里吸烟。被罚五十块。<br />
&gt;&gt; &gt; 5. 今天早晨上班前亲太太一下。上班迟到了。<br />
&gt;&gt; &gt; 6. 今天周六，早晨太太亲了我一下。所有家务都归我做了。</p>
<p>&gt;&gt; &gt; ※&nbsp;&nbsp;&nbsp; 关于购物<br />
&gt;&gt; &gt; 1. 周六太太要逛街，我称累推却。没有午饭吃。发誓明天去，终得晚饭。<br />
&gt;&gt; &gt; 2. 周日逛街，太太为我购两衫。一件300，一件200。<br />
&gt;&gt; &gt; 3. 周一至珠宝店，购项链一串送给太太。价1500。<br />
&gt;&gt; &gt; 4. 今天说太太胖了。晚上太太减肥，没有晚饭吃。<br />
&gt;&gt; &gt; 5. 今天太太穿新衣，问我好看否，答复\&#8221;凑合\&#8221;。晚上自己洗衣。</p>
<p>&gt;&gt; &gt; ※&nbsp;&nbsp;&nbsp; 日记发表之后&#8230;&#8230;<br />
&gt;&gt; &gt; 1. 今天将日记发表，得稿费若干，交与太太。晚饭比平时丰盛两倍。<br />
&gt;&gt; &gt; 2. 今天太太看到发表的日记，太太一个人吃饭，我一个人刷碗。</p>
<p><br />
本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/yzsind/archive/2009/09/27/4602453.aspx</p>
<img src ="http://www.blogjava.net/fastzch/aggbug/306030.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2009-12-15 16:00 <a href="http://www.blogjava.net/fastzch/archive/2009/12/15/306030.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flash内存强制回收</title><link>http://www.blogjava.net/fastzch/archive/2009/12/03/304579.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Thu, 03 Dec 2009 02:30:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2009/12/03/304579.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/304579.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2009/12/03/304579.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/304579.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/304579.html</trackback:ping><description><![CDATA[最近做的Flex项目里面，需要不断的加载一些东西，然而这些东西一旦使用后就不再有用了，所以还是使用强制GC比较节省RAM.<br />
<br />
<div><span style="background-color: #eeeeee; font-size: 13px; "><span style="color: #0000ff; "><span class="Apple-tab-span" style="white-space: pre; "> </span>&nbsp;&nbsp; &nbsp;try</span><span style="color: #000000; ">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">new</span><span style="color: #000000; ">&nbsp;flash.net.LocalConnection().connect(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">foo</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">new</span><span style="color: #000000; ">&nbsp;flash.net.LocalConnection().connect(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">foo</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff; ">catch</span><span style="color: #000000; ">&nbsp;(e:Error){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br />
<br />
在Flex 4中，直接调用flash.system.System.gc()方法就可以了。<br />
<br />
<br />
<img src ="http://www.blogjava.net/fastzch/aggbug/304579.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2009-12-03 10:30 <a href="http://www.blogjava.net/fastzch/archive/2009/12/03/304579.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一次JQuery性能优化实战</title><link>http://www.blogjava.net/fastzch/archive/2009/06/14/282159.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Sun, 14 Jun 2009 06:39:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2009/06/14/282159.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/282159.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2009/06/14/282159.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/282159.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/282159.html</trackback:ping><description><![CDATA[<p>同事写了段JQuey的代码，在某些机器上，会出现IE假死的性能问题。<br />
<br />
我测试了一下代码花费的时间，在我的机器上，会花费600多毫秒，但在某些机器上会花费6秒多（10倍的增长），这样就导致了IE的假死。而且发现与IE版本无关，在大多数机器上会都只需要600多毫秒，不过CPU会有10%以上的瞬间提长。<br />
<br />
先来看看出问题的代码：</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">$(</span><span style="color: #000000">"</span><span style="color: #000000">.eXtremeTable</span><span style="color: #000000">"</span><span style="color: #000000">).replaceWith($(html).find(</span><span style="color: #000000">"</span><span style="color: #000000">.eXtremeTable</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />$(</span><span style="color: #000000">"</span><span style="color: #000000">#levelGroup</span><span style="color: #000000">"</span><span style="color: #000000">).replaceWith($(html).find(</span><span style="color: #000000">"</span><span style="color: #000000">#levelGroup</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />$(</span><span style="color: #000000">"</span><span style="color: #000000">#scriptDiv</span><span style="color: #000000">"</span><span style="color: #000000">).replaceWith($(html).find(</span><span style="color: #000000">"</span><span style="color: #000000">#scriptDiv</span><span style="color: #000000">"</span><span style="color: #000000">));</span></div>
其实这段代码很简洁，只是将用AJAX取过来的数据替换一部分当前页面的数据，但性能确实不够好。<br />
<br />
开始找原因，看看到底是什么慢？<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">$(</span><span style="color: #000000">"</span><span style="color: #000000">.eXtremeTable</span><span style="color: #000000">"</span><span style="color: #000000">).replaceWith($(html).find(</span><span style="color: #000000">"</span><span style="color: #000000">.eXtremeTable</span><span style="color: #000000">"</span><span style="color: #000000">));</span></div>
将此行代码分拆，逐元素去分析各自花费的时间：<br />
$(".eXtremeTable")　　花费20毫秒左右；<br />
$(html).find(".eXtremeTable")　　花费200毫秒左右；<br />
replaceWith()　　花费10毫秒左右；<br />
不难定位到是由于$(html).find(".eXtremeTable")这种方式引起的。<br />
（这都是在我机器上的测试结果，而且每次可能不完全一样）<br />
<br />
简单的可以这样优化：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;newPage</span><span style="color: #000000">=</span><span style="color: #000000">$(html);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />$(</span><span style="color: #000000">"</span><span style="color: #000000">.eXtremeTable</span><span style="color: #000000">"</span><span style="color: #000000">).replaceWith(newPage.find(</span><span style="color: #000000">"</span><span style="color: #000000">.eXtremeTable</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />$(</span><span style="color: #000000">"</span><span style="color: #000000">#levelGroup</span><span style="color: #000000">"</span><span style="color: #000000">).replaceWith(newPage.find(</span><span style="color: #000000">"</span><span style="color: #000000">#levelGroup</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />$(</span><span style="color: #000000">"</span><span style="color: #000000">#scriptDiv</span><span style="color: #000000">"</span><span style="color: #000000">).replaceWith(newPage.find(</span><span style="color: #000000">"</span><span style="color: #000000">#scriptDiv</span><span style="color: #000000">"</span><span style="color: #000000">));</span></div>
但仔细想想，这样仍然会造成在某些机器上2秒以上的时间消耗，照样是不可接受的。<br />
<br />
遂采用比较原始的办法，修改源程序如下：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&nbsp;　　</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;tab</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">&lt;</span><span style="color: #000000">span&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">\</span><span style="color: #000000">"</span><span style="color: #000000">data\</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">';<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;pos</span><span style="color: #000000">=</span><span style="color: #000000">html.indexOf(tab)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;content</span><span style="color: #000000">=</span><span style="color: #000000">html.substr(pos</span><span style="color: #000000">+</span><span style="color: #000000">tab.length);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;pos2</span><span style="color: #000000">=</span><span style="color: #000000">content.indexOf('</span><span style="color: #000000">&lt;/</span><span style="color: #000000">span</span><span style="color: #000000">&gt;</span><span style="color: #000000">');<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;content</span><span style="color: #000000">=</span><span style="color: #000000">content.substr(</span><span style="color: #000000">0</span><span style="color: #000000">,pos2);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">data</span><span style="color: #000000">"</span><span style="color: #000000">).innerHTML</span><span style="color: #000000">=</span><span style="color: #000000">content;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;$(".eXtremeTable").replaceWith($(html).find(".eXtremeTable"));</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;counter</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">&lt;</span><span style="color: #000000">td&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">\</span><span style="color: #000000">"</span><span style="color: #000000">counter\</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;align</span><span style="color: #000000">=</span><span style="color: #000000">\</span><span style="color: #000000">"</span><span style="color: #000000">right\</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;width</span><span style="color: #000000">=</span><span style="color: #000000">\</span><span style="color: #000000">"</span><span style="color: #000000">300\</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">';<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos</span><span style="color: #000000">=</span><span style="color: #000000">html.indexOf(counter)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content</span><span style="color: #000000">=</span><span style="color: #000000">html.substr(pos</span><span style="color: #000000">+</span><span style="color: #000000">counter.length);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos2</span><span style="color: #000000">=</span><span style="color: #000000">content.indexOf('</span><span style="color: #000000">&lt;/</span><span style="color: #000000">table</span><span style="color: #000000">&gt;</span><span style="color: #000000">');<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;content</span><span style="color: #000000">=</span><span style="color: #000000">content.substr(</span><span style="color: #000000">0</span><span style="color: #000000">,pos2</span><span style="color: #000000">+</span><span style="color: #000000">'</span><span style="color: #000000">&lt;/</span><span style="color: #000000">table</span><span style="color: #000000">&gt;</span><span style="color: #000000">'.length);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">counter</span><span style="color: #000000">"</span><span style="color: #000000">).innerHTML</span><span style="color: #000000">=</span><span style="color: #000000">content;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;$("#levelGroup").replaceWith($(html).find("#levelGroup"));</span><span style="color: #008000"><br />
<br />
</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;sel</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">&lt;</span><span style="color: #000000">div&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">\</span><span style="color: #000000">"</span><span style="color: #000000">scriptDiv\</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;style</span><span style="color: #000000">=</span><span style="color: #000000">\</span><span style="color: #000000">"</span><span style="color: #000000">display:none;\</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">'<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos</span><span style="color: #000000">=</span><span style="color: #000000">html.indexOf(sel)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content</span><span style="color: #000000">=</span><span style="color: #000000">html.substr(pos</span><span style="color: #000000">+</span><span style="color: #000000">sel.length);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos2</span><span style="color: #000000">=</span><span style="color: #000000">content.indexOf('</span><span style="color: #000000">&lt;/</span><span style="color: #000000">div</span><span style="color: #000000">&gt;</span><span style="color: #000000">');<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;content</span><span style="color: #000000">=</span><span style="color: #000000">content.substr(</span><span style="color: #000000">0</span><span style="color: #000000">,pos2</span><span style="color: #000000">+</span><span style="color: #000000">'</span><span style="color: #000000">&lt;/</span><span style="color: #000000">div</span><span style="color: #000000">&gt;</span><span style="color: #000000">'.length);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">scriptDiv</span><span style="color: #000000">"</span><span style="color: #000000">).innerHTML</span><span style="color: #000000">=</span><span style="color: #000000">content;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;$("#scriptDiv").replaceWith($(html).find("#scriptDiv"));</span></div>
现在此段代码花费的时间几乎为0毫秒。<br />
<br />
OK，IE再也不假死了。 <br />
<br />
问题分析：<br />
原因应该就出在jQuery(html)这个方法上，官方文档解释如下：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">根据提供的原始&nbsp;HTML&nbsp;标记字符串，动态创建由&nbsp;jQuery&nbsp;对象包装的&nbsp;DOM&nbsp;元素。&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />你可以传递一个手写的&nbsp;HTML&nbsp;字符串，或者由某些模板引擎或插件创建的字符串，也可以是通过&nbsp;AJAX&nbsp;加载过来的字符串。但是在你创建&nbsp;input&nbsp;元素的时会有限制，可以参考第二个示例。当然这个字符串可以包含斜杠&nbsp;(比如一个图像地址)，还有反斜杠。当你创建单个元素时，请使用闭合标签或&nbsp;XHTML&nbsp;格式。例如，创建一个&nbsp;span&nbsp;，可以用&nbsp;$(</span><span style="color: #000000">"</span><span style="color: #000000">&lt;span/&gt;</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;或&nbsp;$(</span><span style="color: #000000">"</span><span style="color: #000000">&lt;span&gt;&lt;/span&gt;</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;，但不推荐&nbsp;$(</span><span style="color: #000000">"</span><span style="color: #000000">&lt;span&gt;</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">--------------------------------------------------------------------------------</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />Create&nbsp;DOM&nbsp;elements&nbsp;on</span><span style="color: #000000">-</span><span style="color: #000000">the</span><span style="color: #000000">-</span><span style="color: #000000">fly&nbsp;from&nbsp;the&nbsp;provided&nbsp;String&nbsp;of&nbsp;raw&nbsp;HTML.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />You&nbsp;can&nbsp;pass&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;plain&nbsp;HTML&nbsp;Strings&nbsp;written&nbsp;by&nbsp;hand,&nbsp;create&nbsp;them&nbsp;using&nbsp;some&nbsp;template&nbsp;engine&nbsp;or&nbsp;plugin,&nbsp;or&nbsp;load&nbsp;them&nbsp;via&nbsp;AJAX.&nbsp;There&nbsp;are&nbsp;limitations&nbsp;when&nbsp;creating&nbsp;input&nbsp;elements,&nbsp;see&nbsp;the&nbsp;second&nbsp;example.&nbsp;Also&nbsp;when&nbsp;passing&nbsp;strings&nbsp;that&nbsp;may&nbsp;include&nbsp;slashes&nbsp;(such&nbsp;as&nbsp;an&nbsp;image&nbsp;path),&nbsp;escape&nbsp;the&nbsp;slashes.&nbsp;When&nbsp;creating&nbsp;single&nbsp;elements&nbsp;use&nbsp;the&nbsp;closing&nbsp;tag&nbsp;or&nbsp;XHTML&nbsp;format.&nbsp;For&nbsp;example,&nbsp;to&nbsp;create&nbsp;a&nbsp;span&nbsp;use&nbsp;$(</span><span style="color: #000000">"</span><span style="color: #000000">&lt;span/&gt;</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;or&nbsp;$(</span><span style="color: #000000">"</span><span style="color: #000000">&lt;span&gt;&lt;/span&gt;</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;instead&nbsp;of&nbsp;without&nbsp;the&nbsp;closing&nbsp;slash</span><span style="color: #000000">/</span><span style="color: #000000">tag.&nbsp;<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
因为要构建一个完整的DOM，所以需要花费较长的时间。<br />
<br />
至于为何在某些机器上出现高达6秒多的时间消耗，百思不得其解，请高手指点！<br />
<br />
<font color="#ff0000" size="2">特别提示：<br />
本Blog所有内容不得随意转载，版权属于作者所有。如需转载请与作者联系（</font><a href="mailto:fastzch@163.com"><font style="background-color: #ffffff" color="#ff0000" size="2">fastzch@163.com</font><font color="#1a8bc8"></font></a><font style="background-color: #ffffff" color="#ff0000" size="2">）。未经许可的转载，本人保留一切法律权益。</font> 
<img src ="http://www.blogjava.net/fastzch/aggbug/282159.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2009-06-14 14:39 <a href="http://www.blogjava.net/fastzch/archive/2009/06/14/282159.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Perl学习心得</title><link>http://www.blogjava.net/fastzch/archive/2009/06/04/279928.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Wed, 03 Jun 2009 16:48:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2009/06/04/279928.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/279928.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2009/06/04/279928.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/279928.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/279928.html</trackback:ping><description><![CDATA[1，写文件时，一定要在变量与要写的内容间有空格，否则不能正常写入。<br />
错误的代码如下：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">open</span><span style="color: #000000">(OUTFILE</span><span style="color: #000000">,</span><span style="color: #000000">&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&gt;outfile.txt</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">);<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;OUTFILE(</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">Here&nbsp;is&nbsp;an&nbsp;output&nbsp;line.\n</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">);<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div>
正确的代码如下：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">open</span><span style="color: #000000">(OUTFILE</span><span style="color: #000000">,</span><span style="color: #000000">&nbsp;</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">&gt;outfile.txt</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">);<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;OUTFILE　&nbsp;(</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">Here&nbsp;is&nbsp;an&nbsp;output&nbsp;line.\n</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000">);</span></div>
看明白了吗？<br />
<br />
2，
<img src ="http://www.blogjava.net/fastzch/aggbug/279928.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2009-06-04 00:48 <a href="http://www.blogjava.net/fastzch/archive/2009/06/04/279928.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Perl学习笔记（一）</title><link>http://www.blogjava.net/fastzch/archive/2009/05/31/279124.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Sat, 30 May 2009 16:23:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2009/05/31/279124.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/279124.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2009/05/31/279124.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/279124.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/279124.html</trackback:ping><description><![CDATA[作为一个合格的架构师，不了解好的脚本语言，是一处不小的硬伤，所以我要补课！<br />
<br />
<p>perl 被设计为90%处理文本，10%针对其它情况。<br />
在Perl内部，没有整型，全当双精度浮点型来处理。<br />
双引号字符串内会变量内插</p>
<p>字符串可用&#8220;.&#8221;操作符连接。<br />
字符串重复操作符&#8220;x&#8221;，可将左边的字符串重复多少次，如"f"x3&nbsp; # "fff"</p>
<p>变量的名字由&#8220;$&#8221;开头，后接变量名。</p>
<p>用户输入用&lt;STDIN&gt;<br />
chomp函数，去掉字符串尾的换行符。chomp是一个函数，作为函数，它有一个返回值。$b=chomp &lt;STDIN&gt;; #返回值是1。<br />
在perl中，（）通常可以省略。</p>
<p>undef值:Perl程序员在使用新变量时，经常不初始化，从而将变量作为0或空串使用。要分辨是undef还是真正的空串，可以用defined函数，它将在undef时返回false，其余返回true。如果想自己声明undef值，可以使用undef:，如：<br />
$a=undef;</p>
<p>(1..100)，这种定义方式包含100个整数的列表。&#8220;..&#8221;是range oprator。<br />
在Perl中，字符串列表会经常使用，有一种简便的方法可以不用输入大量的引号，而达到类似的功能，那就是使用qw。如：<br />
qw(abc abcd abcde abcdef) #同（"abc","abcd","abcde","abcdef"）<br />
qw表示quoted words或者&#8220;quoted by whitespace&#8221;。Perl将它们当作单引号字符串处理，不能像双引号那样在qw中使用\n和$var。<br />
Perl中还允许用任何符号来作为分界符，如下，也一样：<br />
qw! fred barney betty wilma dino !<br />
qw# fred barney betty wilma dino # <br />
qw( fred barney betty wilma dino )<br />
qw{ fred barney betty wilma dino }<br />
qw[ fred barney betty wilma dino ]<br />
qw&lt; fred barney betty wilma dino &gt;<br />
列表赋值：($fred, $barney, $dino) = (&#8220;flintstone&#8221;, &#8220;rubble&#8221;, undef);<br />
变量交换（swap函数，很方便也很邪乎)：<br />
($fred, $barney) = ($barney, $fred) #交换两个变量<br />
($betty[0],$betty[1]) = ($betty[1],$betty[0]);</p>
<p>数组不能成为列表的一个元素的原因是数组只能包含标量值，不能包含其它的数组。<br />
@copy = @quarry;#将一个数组的值拷贝到另一个数组中</p>
<p>push的第一个参数或者pop的唯一参数必须是数组变量。他们对数组的结尾进行操作。<br />
shift和unshift对一个数组的开头进行操作。</p>
<p>和标量类似，数组也可以插入双引号的字符串中，插入的数组元素会自动由空格分开。</p>
<p>Perl最常用的默认变量：$_，如下例：<br />
$_ ="Yabba dabba doo\n"<br />
print; </p>
<p>reverse函数会返回逆转的列表，它不会改变其参数的值，所以如果返回值没有赋值给某个变量，那这样操作是没有什么意义的。sort函数也一样。</p>
<p>&nbsp;</p>
<p><br />
一个给定的表达式在不同的上下文中其含义是不同的。<br />
如：一个数组的&#8220;name&#8221;，在列表上下文中，它返回列表元素，在标量上下文中，它返回数组元素的个数。<br />
数组@people的真实名字是people。@只是一个限定词（qualifier）。<br />
甚至普通的赋值也产生不同的上下文：<br />
@people = qw( fred barney betty );<br />
@list=@people; #3个people的列表<br />
$n=@people; #数字3<br />
可以用scalar函数在上下文中将列表转换为标量。如：<br />
@rocks = qw(talc quartz jade obsidian);<br />
print "I have ", scalar @rocks, "rocks!\n"</p>
<p>文件结束符：*nix系统中用Ctrl+D，在DOS中，用Ctrl+Z。</p>
<p><br />
定义一个子程序的方式如下：<br />
sub marine {<br />
&nbsp; $n + = 1; <br />
&nbsp; print "Hello, sailor number $n!\n";<br />
}<br />
如果两个子程序同名，则后一个将覆盖前一个。<br />
可以使用子程序的名字（带有&amp;）来调用子程序。<br />
将参数传递给子程序中的方法是，在程序后面接括号，括号内存放参数列表。<br />
在Perl中，会自动将参数列表自动存放在一个叫做@_的数组中。也就是说此子程序参数的第一个值存放在$_[0]中，第二个存放在$_[1]中，依次类推。</p>
<p>可以任意时候使用my创建私有变量。如：<br />
sub max {<br />
&nbsp; my($m,$n); <br />
&nbsp; ($m,$n) = @_; #可以这样写，将声明和赋值放一起:my($m,$n)=@_; <br />
&nbsp; if($m &gt; $n) {<br />
&nbsp;&nbsp;&nbsp; $m<br />
&nbsp; } else{<br />
&nbsp;&nbsp;&nbsp; $n<br />
&nbsp; }<br />
}<br />
在调用Perl的函数时，可以省略&amp;，但函数的定义必须在调用之前。如果子程序和Perl一个内嵌程序同名，则必须使用&amp;来调用它。</p>
<p><br />
while (defined($line = &lt;STDIN&gt;)) {<br />
&nbsp; print "I saw $line";<br />
}<br />
使用defined来检测输入是否结束。<br />
&lt;&gt;（尖括号操作符）是一种特殊的行输入操作。<br />
在Unix中，-(连接号)代表标准输入流。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/fastzch/aggbug/279124.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2009-05-31 00:23 <a href="http://www.blogjava.net/fastzch/archive/2009/05/31/279124.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用Notepad2替换掉Vista系统中自带的NotePad</title><link>http://www.blogjava.net/fastzch/archive/2009/05/03/268719.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Sun, 03 May 2009 12:03:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2009/05/03/268719.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/268719.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2009/05/03/268719.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/268719.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/268719.html</trackback:ping><description><![CDATA[
		<p>NotePad2是一个我很喜欢的记事本，比Windows自带的记事本强大，但又没有EditPlus或UltraEdit那么耗费RAM，最关键是的她是一个免费的软件。自从我的操作系统换成Vista后就一直没用成这么好的软件，今天花了点时间研究了一下，终于成功安装。将安装步骤分享给大家，自己也记录下。<br /><br />1，下载NotePad2，地址如下：<br /><a href="http://www.crsky.com/soft/3958.html">http://www.crsky.com/soft/3958.html</a><br />2，解压下载完的文件，找到notepad2.exe，复制一份此文件，分别将两个文件改名为：notepad.exe和notepad.exe.mui。<br />3，进入C:/windows目录找到notepad.exe，进入C:/windows/zh-cn/目录下找到notepad.exe.mui这两个文件，分别点右键，执行“管理员取得所有权”，然后用第二步改好文件名的notepad2软件替换掉这两个文件。<br />4，进入C:/windows/system32目录找到notepad.exe，进入C:/windows/system32/zh-cn/目录下找到notepad.exe.mui这两个文件，分别点右键，执行“管理员取得所有权”，然后用第二步改好文件名的notepad2软件替换掉这两个文件。<br />5，大功告成，随便双击一个.txt文件，试试效果。</p>
<img src ="http://www.blogjava.net/fastzch/aggbug/268719.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2009-05-03 20:03 <a href="http://www.blogjava.net/fastzch/archive/2009/05/03/268719.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Office Word使用问题解决方法</title><link>http://www.blogjava.net/fastzch/archive/2009/04/06/264144.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Mon, 06 Apr 2009 12:04:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2009/04/06/264144.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/264144.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2009/04/06/264144.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/264144.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/264144.html</trackback:ping><description><![CDATA[工作中常常遇到一些Offiece Word使用的问题，一开始还以为是Word有问题了，经过多番尝试，才知道是使用时有些讲究。<br />记录下来，分享给大家：<br /><br />1，Word不能插入特殊符号的解决办法：<br />word文档如果不能插入特殊符号，把word文档左边的文档结构图关掉，就可以添加特殊符号了。 <br /><br />2，选中区不能替换掉，很郁闷，必须先用BackSpace键删除，而且Delete键也不启作用，怎么办？<br />解决：工具-&gt;选项-&gt;编辑-&gt;键入内容替换所选内容，将此项选中。<br /> <img src ="http://www.blogjava.net/fastzch/aggbug/264144.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2009-04-06 20:04 <a href="http://www.blogjava.net/fastzch/archive/2009/04/06/264144.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>［惊奇］MD5crk.com网站变成了卖毒品的网站</title><link>http://www.blogjava.net/fastzch/archive/2009/04/03/263705.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Fri, 03 Apr 2009 03:59:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2009/04/03/263705.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/263705.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2009/04/03/263705.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/263705.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/263705.html</trackback:ping><description><![CDATA[曾几何时，MD5算法号称无法破解，但我们的王小云教授在2004年8月17日的美国加州圣巴巴拉的国际密码学会议（Crypto’2004）上做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告，公布了MD系列算法的破解结果。宣告了固若金汤的世界通行密码标准MD５的堡垒轰然倒塌，引发了密码学界的轩然大波。<br /><br />MD5破解工程权威网站http://www.md5crk.com/ 是为了公开征集专门针对MD5的攻击而设立的，网站于2004年8月17日宣布：“中国研究人员发现了完整MD5算法的碰撞；Wang, Feng, Lai与Yu公布了MD5、MD4、HAVAL-128、RIPEMD-128几个 Hash函数的碰撞。这是近年来密码学领域最具实质性的研究进展。使用他们的技术，在数个小时内就可以找到MD5碰撞。……由于这个里程碑式的发现，MD5CRK项目将在随后48小时内结束”。<br /><br />今天，我又一次好奇的登入MD5crk.com，发现变成了一个卖廉价毒品的网站，真是搞不懂这帮老外了？<br />网站的标题：Buy Cheap Adipex no prescription online! Order discount Adipex diet pills without a prescription - lowest prices guaranteed!<br />截图：<br /><img src="http://www.blogjava.net/images/blogjava_net/fastzch/7477/r_Snap1.jpg" /><br /><img src ="http://www.blogjava.net/fastzch/aggbug/263705.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2009-04-03 11:59 <a href="http://www.blogjava.net/fastzch/archive/2009/04/03/263705.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring Security 参考手册 中文版</title><link>http://www.blogjava.net/fastzch/archive/2009/02/17/253740.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Mon, 16 Feb 2009 17:49:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2009/02/17/253740.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/253740.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2009/02/17/253740.html#Feedback</comments><slash:comments>16</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/253740.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/253740.html</trackback:ping><description><![CDATA[
		<p>Acegi被Spring吸收后，有较大的变化，最近看这个的过程中，搜集整理了官方文档的中文版，并制作成CHM文件，现分享给大家！<br />有需要的朋友请<a title="点此进入下载页面" href="http://download.csdn.net/source/997686" target="_blank">点此进入下载页面<br /></a><br /></p>
<img src ="http://www.blogjava.net/fastzch/aggbug/253740.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2009-02-17 01:49 <a href="http://www.blogjava.net/fastzch/archive/2009/02/17/253740.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VBA中判断日期的合法性</title><link>http://www.blogjava.net/fastzch/archive/2009/01/10/250806.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Sat, 10 Jan 2009 06:03:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2009/01/10/250806.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/250806.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2009/01/10/250806.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/250806.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/250806.html</trackback:ping><description><![CDATA[VBA中判断日期的合法性超级简单，不多说了，请看代码：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">Private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">Sub</span><span style="COLOR: #000000"> CommandButton1_Click()<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span><span style="COLOR: #0000ff">If</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">IsDate</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">2009-02-29 00:00:00</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">) </span><span style="COLOR: #0000ff">Then</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">MsgBox</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">aaa</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">Else</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">MsgBox</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">bbb</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span><span style="COLOR: #0000ff">End</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">If</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">End Sub</span></div><img src ="http://www.blogjava.net/fastzch/aggbug/250806.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2009-01-10 14:03 <a href="http://www.blogjava.net/fastzch/archive/2009/01/10/250806.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于HTML中onSubmit属性的触发时机</title><link>http://www.blogjava.net/fastzch/archive/2008/10/24/236362.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Fri, 24 Oct 2008 03:33:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2008/10/24/236362.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/236362.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2008/10/24/236362.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/236362.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/236362.html</trackback:ping><description><![CDATA[
		<span lang="EN-US">
				<font size="2">
						<font color="#ff0000">本Blog所有内容不得随意转载，版权属于作者所有。如需转载请与作者联系（</font>
				</font>
				<a href="mailto:fastzch@163.com">
						<font size="2">
								<font style="BACKGROUND-COLOR: #ffffff" color="#ff0000">fastzch@163.com</font>
								<font color="#1a8bc8">
								</font>
						</font>
				</a>
				<font style="BACKGROUND-COLOR: #ffffff" color="#ff0000" size="2">）。<br />未经许可的转载，本人保留一切法律权益。<br />一直以来，发现有某些人完全不尊重我的劳动成果，随意转载，提醒一下那些人小心哪天惹上官司。</font>
		</span>
		<br />
		<br />今天同事一大早问我一个他觉得比较奇怪的问题：form的onsubmit属性中的方法在提交时为什么没反应？经过了解发现状况如下：<br />他写的页面中form有onsubmit属性，并指定了一个javascript函数，期望form在提交前执行这个函数，以处理一些检查等动作，但form的提交并不是像我们通常使用的input:submit这样的button去做的，而是用一个普通input:button，在onclick属性中指定了一个javascript函数，在这个函数里面再执行form的submit()函数。<br />示意代码如下：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;!</span><span style="COLOR: #000000">DOCTYPE HTML PUBLIC </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">-//W3C//DTD HTML 4.0 Transitional//EN</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">HTML</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">HEAD</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script language</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javascript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_123_202_Open_Image" onclick="this.style.display='none'; Codehighlighter1_123_202_Open_Text.style.display='none'; Codehighlighter1_123_202_Closed_Image.style.display='inline'; Codehighlighter1_123_202_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_123_202_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_123_202_Closed_Text.style.display='none'; Codehighlighter1_123_202_Open_Image.style.display='inline'; Codehighlighter1_123_202_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> t()</span><span id="Codehighlighter1_123_202_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_123_202_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> f</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">document.getElementById(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">f</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            f.submit();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            alert('</span><span style="COLOR: #000000">333</span><span style="COLOR: #000000">');<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">HEAD</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">BODY</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">form id</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">f</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> onsubmit</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">alert('2222');</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">input type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">button</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> value</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">button</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> onclick</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">t();</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">form</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">BODY</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">HTML</span><span style="COLOR: #000000">&gt;</span></div>此时，页面弹出了“333”的提示，但没有弹出“2222”的提示。<br /><br />分析了一下原因：onsubmit属性的触发时机是在form用input:submit这样的button提交时才会触发，否则不会触发。<br />后来，在官方文档上也找到了如下说明，证明了我的这一分析，如下：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">The submit method does not invoke the onsubmit event handler. Call the onsubmit event handler directly. When using Microsoft® Internet Explorer </span><span style="COLOR: #000000">5.5</span><span style="COLOR: #000000"> and later, you can call the fireEvent method </span><span style="COLOR: #0000ff">with</span><span style="COLOR: #000000"> a value of onsubmit </span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000"> the sEvent parameter.</span></div><br />为了证实这一分析，我做了一个完整的测试：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;!</span><span style="COLOR: #000000">DOCTYPE HTML PUBLIC </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">-//W3C//DTD HTML 4.0 Transitional//EN</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">HTML</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">HEAD</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script language</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javascript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_123_198_Open_Image" onclick="this.style.display='none'; Codehighlighter1_123_198_Open_Text.style.display='none'; Codehighlighter1_123_198_Closed_Image.style.display='inline'; Codehighlighter1_123_198_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_123_198_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_123_198_Closed_Text.style.display='none'; Codehighlighter1_123_198_Open_Image.style.display='inline'; Codehighlighter1_123_198_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> t()</span><span id="Codehighlighter1_123_198_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_123_198_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> f</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">document.getElementById(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">f</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            f.submit();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            alert('</span><span style="COLOR: #000000">333</span><span style="COLOR: #000000">');<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">HEAD</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">BODY</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">form id</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">f</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> onsubmit</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">alert('2222');</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">input type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">submit</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> value</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">submit</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">input type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">button</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> value</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">button</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> onclick</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">t();</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">form</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">BODY</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">HTML</span><span style="COLOR: #000000">&gt;</span></div>点击submit按钮即可出现“2222”提示，点击button的话，会出现“333”提示。<img src ="http://www.blogjava.net/fastzch/aggbug/236362.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2008-10-24 11:33 <a href="http://www.blogjava.net/fastzch/archive/2008/10/24/236362.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SecureCRT Script 学习笔记</title><link>http://www.blogjava.net/fastzch/archive/2008/09/29/231793.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Mon, 29 Sep 2008 04:51:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2008/09/29/231793.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/231793.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2008/09/29/231793.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/231793.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/231793.html</trackback:ping><description><![CDATA[
		<span lang="EN-US">
				<font size="2">
						<font color="#ff0000">本Blog所有内容不得随意转载，版权属于作者所有。如需转载请与作者联系（</font>
				</font>
				<a href="mailto:fastzch@163.com">
						<font size="2">
								<font style="BACKGROUND-COLOR: #ffffff" color="#ff0000">fastzch@163.com</font>
								<font color="#1a8bc8">
								</font>
						</font>
				</a>
				<font style="BACKGROUND-COLOR: #ffffff" color="#ff0000" size="2">）。<br />未经许可的转载，本人保留一切法律权益。<br />一直以来，发现有某些人完全不尊重我的劳动成果，随意转载，提醒一下那些人小心哪天惹上官司。</font>
				<font size="4">
				</font>
				<br />
		</span>
		<br />SecureCRT支持ActiveX script engines，包括VBScript和JScript (Microsoft’s version of JavaScript)两种脚本。<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">Note：如果你想使用脚本自动运行方式的话，需要在session option中进行设置。<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br />脚本可以用任何文本编辑器来开发。Script头部用来识别脚本语言和SecureCRT脚本接口的版本，脚本头部的每一行必须以#开头，头部包括<strong>$language</strong>行和<strong>$interface</strong>行。例如，下面是一个简单的脚本。<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000"># $language </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">VBScript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /># $interface </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">1.0</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">Sub</span><span style="COLOR: #000000"> Main<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #008000">'</span><span style="COLOR: #008000"> Display SecureCRT's version</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">MsgBox</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">SecureCRT version is: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> crt.Version<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">End Sub</span></div><p>代码通常放在main子过程，引擎在执行main子过程前，将转换并执行全局代码(脚本代码定义在任何子过程之外)，如果你有一些初始化处理的话，可以使用这一特性。<br /><br />如果想终止main过程，用VBScript的话，可以用Exit Sub语句。如：</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">Sub</span><span style="COLOR: #000000"> Main<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  condition </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> DoSomething()<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">If</span><span style="COLOR: #000000"> condition </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">Then</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">'</span><span style="COLOR: #008000"> Error, bailout</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">Exit</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">Sub</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">End</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">If</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">End Sub</span></div><p>SecureCRT有一些内建的对象，可以通过顶级应用对象或子对象调用。这些对象都有一些属性和方法。例如：</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">Dim</span><span style="COLOR: #000000"> dlg<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">Set</span><span style="COLOR: #000000"> dlg </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> crt.Dialog<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />dlg.Prompt(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Login:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)</span></div><p><br /><br />下面分享给大家一个通过N个跳板机上传文件的FTP脚本：<br /></p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">#$language </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">VBScript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#$interface </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">1.0</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">Sub</span><span style="COLOR: #000000"> main<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #008000">'</span><span style="COLOR: #008000"> turn on synchronous mode so we don't miss any data</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">  crt.Screen.Synchronous </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">True</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #008000">'</span><span style="COLOR: #008000"> Wait for a string that looks like "login: " or "Login: "</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">  </span><span style="COLOR: #008000">'</span><span style="COLOR: #008000"> Occasionally, a host needs to be kicked to display a</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">  </span><span style="COLOR: #008000">'</span><span style="COLOR: #008000"> login prompt.</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">If</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">Not</span><span style="COLOR: #000000"> crt.Screen.WaitForString(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ogin: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">)) </span><span style="COLOR: #0000ff">Then</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    crt.Screen.Send vbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ogin: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">End</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">If</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">user0</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">assword:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pwd0</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">#</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">cd /tmp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">#</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #008000">'</span><span style="COLOR: #008000">ftp to Machine1</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp IP1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">): </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">user1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">assword:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pwd1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp&gt; </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  filename </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> crt.Dialog.Prompt(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Please enter your filename.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Enter filename</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">)  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">cd /tmp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp&gt; </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">binary</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp&gt; </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">put </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> filename </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp&gt; </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">bye</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">#</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">   <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">telnet IP1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">If</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">Not</span><span style="COLOR: #000000"> crt.Screen.WaitForString(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ogin: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">)) </span><span style="COLOR: #0000ff">Then</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    crt.Screen.Send vbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ogin: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">End</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">If</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">user1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">assword:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pwd1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">cd /tmp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #008000">'</span><span style="COLOR: #008000">ftp to Machine2</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp IP2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">): </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">user2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">assword:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pwd2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp&gt; </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">cd /tmp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp&gt; </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">binary</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp&gt; </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">put </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> filename </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp&gt; </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">bye</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">   <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">telnet IP2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">If</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">Not</span><span style="COLOR: #000000"> crt.Screen.WaitForString(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ogin: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">)) </span><span style="COLOR: #0000ff">Then</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    crt.Screen.Send vbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ogin: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">End</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">If</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">user2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">assword:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pwd2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">#</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">cd /tmp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">#</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">'</span><span style="COLOR: #008000">ftp  to Machine3</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp IP3</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">): </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">user3</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">assword:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pwd3</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp&gt; </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">cd /tmp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp&gt; </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">binary</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp&gt; </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">put </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> filename </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp&gt; </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">bye</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">#</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">   <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">telnet IP3</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">If</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">Not</span><span style="COLOR: #000000"> crt.Screen.WaitForString(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ogin: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">)) </span><span style="COLOR: #0000ff">Then</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    crt.Screen.Send vbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ogin: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">End</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">If</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">user3</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">assword:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pwd3</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">#</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">cd /tmp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">#</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">'</span><span style="COLOR: #008000">ftp  to Machine4</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp IP4</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">): </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">user4</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">assword:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pwd4</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp&gt; </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">binary</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp&gt; </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">put </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> filename </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp&gt; </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">bye</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">#</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">   <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">telnet IP4</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">If</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">Not</span><span style="COLOR: #000000"> crt.Screen.WaitForString(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ogin: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">)) </span><span style="COLOR: #0000ff">Then</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    crt.Screen.Send vbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ogin: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">End</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">If</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">user4</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">assword:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Send </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pwd4</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000"> VbCr<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.WaitForString </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  crt.Screen.Synchronous </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">False</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">End Sub</span></div><p><br /> </p><img src ="http://www.blogjava.net/fastzch/aggbug/231793.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2008-09-29 12:51 <a href="http://www.blogjava.net/fastzch/archive/2008/09/29/231793.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OpenSource Camp(广州站)游记</title><link>http://www.blogjava.net/fastzch/archive/2008/09/21/230266.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Sun, 21 Sep 2008 07:58:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2008/09/21/230266.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/230266.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2008/09/21/230266.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/230266.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/230266.html</trackback:ping><description><![CDATA[
		<p>
				<font size="4">
						<span lang="EN-US">
								<font size="2">
										<font color="#ff0000">本Blog所有内容不得随意转载，版权属于作者所有。如需转载请与作者联系（</font>
								</font>
								<a href="mailto:fastzch@163.com">
										<font size="2">
												<font style="BACKGROUND-COLOR: #ffffff" color="#ff0000">fastzch@163.com</font>
												<font color="#1a8bc8">
												</font>
										</font>
								</a>
								<font style="BACKGROUND-COLOR: #ffffff" color="#ff0000" size="2">）。<br />未经许可的转载，本人保留一切法律权益。<br />一直以来，发现有某些人完全不尊重我的劳动成果，随意转载，提醒一下那些人小心哪天惹上官司。</font>
								<br />
						</span>
				</font>
				<font size="4">
						<strong>
								<br />引子</strong>
				</font>
				<br />之所以说是游记，是因为觉得参加此次的活动对于我来说没有什么收获，我只能权当是去旅游了一下。活动的地点在广州鼎龙国际大酒店(GuangZhou Donlord International Hotel)，会议室还算不错，印象最深刻的是那一层的Water Closet，地上和墙上全都是Mosaic，这可得花不少钱，似乎是我第一次去这么好的地方解决三急中的一急。<br /><br /><font size="4"><strong>听品高的人介绍移动增值业务平台的架构</strong></font><br />当Peter Cheng介绍说今天的活动中有品高的人介绍移动增值业务平台架构的时候，心里还有一点点期待。演讲者好像是品高的一位架构师，总共花费了大约半个小时的时间来介绍。我想，这对于深入介绍一个架构来说，是远远不够的，时间毕竟有限。<br />在我听完这次演讲后，就只知道他们用了ActiveMQ，并且经历了4.0--&gt;5.0--&gt;5.1--&gt;4.0的这样一个过程。其它的就是看了他用他们自己开发的短信网关的模拟器，终端(手机)的模拟器秀了一下平台能成功发送了一条短信。别的就看也没什么了。<br />要说，这半个小时也不短了，可是没有听到什么有用的东西。禁不住要说，别人8分钟的电梯演讲能拉VC，这半个小时的演讲就这么浪费了？多可惜。<br />其实我觉得我们更想听的是：<br />1，系统有扩展性，维护性，稳定性，性能，安全等要求，我们的架构如何在满足功能性需求的基础上，满足这些非功能性的需求。<br />2，架构如何变迁？以适应日益频繁的变化。<br />3，如何提高团队的开发效率等等。<br />而不是秀一张图在那里，然后就说用了ActiveMQ，说用了几个什么版本。<br />我对此次演讲的评价就是失败。或许是演讲者没有准备的原因吧，他说他讲的这些是给移动的人讲的东西(暗暗的想，移动的人真SB，居然就这样被忽悠了)。<br /><br /><font size="4"><strong>听金山的朋友忽悠“蟒营”和过程改进(私下交流)</strong></font><br />金山的那位哥们儿应该算是个牛人，是他们公司SEPG成员，从场下交流时给我的名片的Title上看，是一个过程改进的经理，主要跟大家忽悠了如何培训Python方面新人，总体感觉交流的经验还是很不错的，确实是来自于实践的，因为我也有过类似的培训Java方面新人的经历。<br />这方面，Blogjava有一位另外的朋友有详细的记录。可参考：<a href="/killme2008/archive/2008/09/21/230220.html">http://www.blogjava.net/killme2008/archive/2008/09/21/230220.html</a><br />会后有私下交流了一下过程改进方面的一些东西，他提到了一个观点，是比较正确的，“自上而下，树立标竿”。当然，这与金山的的文化是分不开的，因为金山经历了这么多年，每条产品线都有自己的一套方法去管理，不太好去撼动。想想，我们公司内不也是如此吗？虽不像金山那样，但常常也有当时答应得好好的按Process做，但实际上就是不这样干的事情。<br />他们对于过程改进中需要的一些工具，主要是在用Python开发，我想这也是个不错的选择，毕竟这样的工具不像Java那样笨重。<br />另外一位似乎也是来自金山的朋友介绍了Python中的WSGI，但似乎口才方面并不怎么样，建议他精心的准备，并多锻炼。<br /><br /><font size="4"><strong>其它</strong></font><br />还有介绍开源在集群中应用，老外谈Agile，JavaScript和JQuery的几个session，我没有去听，不知道大家感觉如何，可以分享一下。<br /><br /><strong><font size="4">后记<br /></font></strong>文章中主要是一些对此次活动的思考，可能有一些不太好听的话，希望能对大家以后举办这样的活动有所帮助。如果不认同的话，就当我是发发牢骚好了。下次的活动如果还是这样的状况的话，我就不会去了，毕竟我并不差那件带有浓厚商业色彩的T-Shirt穿。<br /><br /><font size="4"><strong>更多的参考讯息</strong></font><br />1，官网：<a href="http://www.opensourcecamp.org.cn/">http://www.opensourcecamp.org.cn/</a><br />2，Facebook社区：<a href="http://www.facebook.com/group.php?gid=5626789741">http://www.facebook.com/group.php?gid=5626789741</a></p>
<img src ="http://www.blogjava.net/fastzch/aggbug/230266.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2008-09-21 15:58 <a href="http://www.blogjava.net/fastzch/archive/2008/09/21/230266.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>美女教我们打领带</title><link>http://www.blogjava.net/fastzch/archive/2008/08/26/224886.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Tue, 26 Aug 2008 15:23:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2008/08/26/224886.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/224886.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2008/08/26/224886.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/224886.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/224886.html</trackback:ping><description><![CDATA[常常打领带，可这样的打法还是第一次，分享给大家。<br /><object height="342" width="400"><param name="movie" value="http://www.tudou.com/v/hTU3Nd3x5eo" /><param name="allowScriptAccess" value="always" /><param name="wmode" value="transparent" /><embed src="http://www.tudou.com/v/hTU3Nd3x5eo" type="application/x-shockwave-flash" width="400" height="342" allowfullscreen="true" wmode="transparent" allowscriptaccess="always"></embed></object><img src ="http://www.blogjava.net/fastzch/aggbug/224886.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2008-08-26 23:23 <a href="http://www.blogjava.net/fastzch/archive/2008/08/26/224886.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>