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

<channel>
	<title>小鱼&#38;大黄</title>
	<atom:link href="http://lingzuer.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://lingzuer.com</link>
	<description>执子之手，与子偕老</description>
	<lastBuildDate>Tue, 31 Jan 2012 03:03:12 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>成功CEO希望你了解的15件事情</title>
		<link>http://lingzuer.com/?p=147</link>
		<comments>http://lingzuer.com/?p=147#comments</comments>
		<pubDate>Tue, 31 Jan 2012 03:03:12 +0000</pubDate>
		<dc:creator>lingzuer</dc:creator>
				<category><![CDATA[资讯]]></category>

		<guid isPermaLink="false">http://lingzuer.com/?p=147</guid>
		<description><![CDATA[他山之石可以攻玉，作为一个成长中的初创企业—创意代理iStrategyLabs的CEO，Peter Corbett从其他的CEO身上吸取营养，以下就是他的总结。 Daniel Ek，CEO，Spotify 找出最重要的五件事，然后毫不动摇地专注于此，不断地重复。少即是多。 Dennis Crowley，CEO，FourSquare 不要让别人告诉你自己的想法没有用。如果你觉得某样东西有用，那做就是了。无视那些怀恨在心者。 Sarah Prevette，创始人，Sprouter 只管去做。形成思路，吸收反馈...]]></description>
			<content:encoded><![CDATA[<p align="left">他山之石可以攻玉，作为一个成长中的初创企业—创意代理<a href="http://istrategylabs.com/" rel="external nofollow" target="_blank"><em>iStrategyLabs</em></a>的CEO，<em>Peter Corbett</em>从其他的CEO身上吸取营养，以下就是他的总结。</p>
<p align="left"><strong>Daniel Ek</strong><strong>，</strong><strong>CEO</strong><strong>，</strong><strong>Spotify</strong></p>
<blockquote>
<p align="left">找出最重要的五件事，然后毫不动摇地专注于此，不断地重复。少即是多。</p>
</blockquote>
<p align="left"><strong>Dennis Crowley</strong><strong>，</strong><strong>CEO</strong><strong>，</strong><strong>FourSquare</strong></p>
<blockquote>
<p align="left">不要让别人告诉你自己的想法没有用。如果你觉得某样东西有用，那做就是了。无视那些怀恨在心者。</p>
</blockquote>
<p align="left"><strong>Sarah Prevette</strong><strong>，创始人，</strong><strong>Sprouter</strong></p>
<blockquote>
<p align="left">只管去做。形成思路，吸收反馈，做相应调整，拼命地赶，坚持不懈，永远不要失去你的狂妄。</p>
</blockquote>
<p align="left"><strong>Sarah Lacy</strong><strong>，</strong><strong>CEO</strong><strong>，</strong><strong>PandoDaily</strong></p>
<blockquote>
<p align="left">跟着直觉走。直觉可能会错，但是即便失败你也不会遗憾。如果你无视直觉而失败了才会遗憾。</p>
</blockquote>
<p align="left"><strong>Craig Newmark</strong><strong>，创始人，</strong><strong>Craigslist</strong></p>
<blockquote>
<p align="left">你想别人怎么对待你，你就得怎么对待人。把这一点用到客户服务上。</p>
</blockquote>
<p align="left"><strong>Gary Vaynerchuk</strong><strong>，</strong><strong>CEO</strong><strong>，</strong><strong>VaynerMedia</strong></p>
<blockquote>
<p align="left">为客户工作，而不是媒体或VC。长远看最终用户才是真正重要的。</p>
</blockquote>
<p align="left"><strong>Matt Mullenweg</strong><strong>，</strong><strong>CEO</strong><strong>，</strong><strong>Automattic</strong></p>
<blockquote>
<p align="left">只有重新发明轮子你才需要行动。</p>
</blockquote>
<p align="left"><strong>Jason Goldberg</strong><strong>，</strong><strong>CEO</strong><strong>，</strong><strong>Fab.com</strong></p>
<blockquote>
<p align="left">选择一件事情然后做这件事情—只做着这一件事情—做得比其他任何人都要好。</p>
</blockquote>
<p align="left"><strong> Alexis Ohanian</strong><strong>，</strong><strong>CEO</strong><strong>，</strong><strong>Reddit</strong></p>
<blockquote>
<p align="left">做别人想要的东西。然后比任何其他人都要在乎它，这样你就会做出一件他们热爱的东西来的。</p>
</blockquote>
<p align="left"><strong>Chris Brogan</strong><strong>，总裁，</strong><strong>Human Business Works</strong></p>
<blockquote>
<p align="left">买@ericries（精益初创企业的提出者）的书。然后呢？建设一个平台。今年是重要的一年。</p>
</blockquote>
<p align="left"><strong>Matt Howard</strong><strong>，</strong><strong>CEO</strong><strong>，</strong><strong>ZoomSafer</strong></p>
<blockquote>
<p align="left">初创企业的智慧：CEO的首要工作是不要把钱花光。</p>
</blockquote>
<p align="left"><strong>Brian Wong</strong><strong>，</strong><strong>CEO</strong><strong>，</strong><strong>Kiip</strong></p>
<blockquote>
<p align="left">要一直向他人学习。见到谁不要想着索取什么东西，而是要从他们身上学到东西。</p>
</blockquote>
<p align="left"><strong>Seth Priebatsch</strong><strong>，首席忍者，</strong><strong>SCVNGR</strong><strong>及</strong><strong>LevelUp</strong></p>
<blockquote>
<p align="left">我父亲告诉我的：请求宽恕，而不是允许！</p>
</blockquote>
<p align="left"><strong>Hooman Radfar</strong><strong>，创始人，</strong><strong>Clearspring</strong></p>
<blockquote>
<p align="left">忘记胜利，拥有失败。你的工作就是成为伟大。</p>
</blockquote>
<p align="left"><strong>Alexa Hirschfeld</strong><strong>，</strong><strong>CEO</strong><strong>，</strong><strong>Paperless Post</strong></p>
<blockquote>
<p align="left">用户和员工是企业成功的关键预测指标；媒体和投资者通常要后知后觉几个月。</p>
</blockquote>
<p align="left">Via：<a href="http://gigaom.com/2012/01/28/corbett-15-things-ceos-want-you-to-know/" rel="external nofollow" target="_blank">Gigaom</a></p>
<div></div>
<div><span style="color: #808080;">文章来自<a title="成功CEO希望你了解的15件事情" href="http://www.36kr.com/p/78995.html" rel="bookmark"><span style="color: #808080;">36氪</span></a></span></div>
]]></content:encoded>
			<wfw:commentRss>http://lingzuer.com/?feed=rss2&#038;p=147</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>为程序员量身定制的12个目标</title>
		<link>http://lingzuer.com/?p=143</link>
		<comments>http://lingzuer.com/?p=143#comments</comments>
		<pubDate>Mon, 16 Jan 2012 02:18:35 +0000</pubDate>
		<dc:creator>lingzuer</dc:creator>
				<category><![CDATA[资讯]]></category>

		<guid isPermaLink="false">http://lingzuer.com/?p=143</guid>
		<description><![CDATA[对程序员们来说挑战自我非常重要，要么不断创新，要么技术停滞不前。新年伊始，我整理了12个月的目标，每个目标都是对技术或个人能力的挑战，而且可以年复一年循环使用。 01. 变得有耐心 02. 保持健康 03. 拥抱变化带来的不适应 04. 学习一门新的编程语言 05. 自动化 06. 学习更多数学知识 07. 关注安全 08. 备份你的数据 09. 学习更多理论知识 10. 接触艺术和人文 11. 向新的软件学习 12. 完成一个自己的项目 接下来我会对这些建议逐个介绍。 变得有耐心 程序员们会担心锻炼耐心...]]></description>
			<content:encoded><![CDATA[<p>对程序员们来说挑战自我非常重要，要么不断创新，要么技术停滞不前。新年伊始，我整理了12个月的目标，每个目标都是对技术或个人能力的挑战，而且可以年复一年循环使用。</p>
<p>01. 变得有耐心</p>
<p>02. 保持健康</p>
<p>03. 拥抱变化带来的不适应</p>
<p>04. 学习一门新的编程语言</p>
<p>05. 自动化</p>
<p>06. 学习更多数学知识</p>
<p>07. 关注安全</p>
<p>08. 备份你的数据</p>
<p>09. 学习更多理论知识</p>
<p>10. 接触艺术和人文</p>
<p>11. 向新的软件学习</p>
<p>12. 完成一个自己的项目</p>
<p>接下来我会对这些建议逐个介绍。</p>
<p><strong>变得有耐心</strong><strong><br />
</strong><br />
程序员们会担心锻炼耐心付出的努力得不到应有的回报。其实，培养耐心只要付出很小的投入就能够得到相对而言很大的收获。下面是开始锻炼耐心可以尝试的一个列表，只要全身心投入其中任意一项，都可以在一个月左右脱离门外汉（成为有经验的新手）的阶段：</p>
<p>烹饪、徒步、滑雪、天文、慢跑、木工、武术、舞蹈</p>
<p><strong>保持健康<br />
</strong><br />
程序员通常久坐少动，因此在日常工作中会面临健康问题，但通常都被我们忽略了。一年中花整整一个月来调整你的生活习惯、 饮食和生活环境，这会促使你养成持久、健康的生活习惯。每年去一趟诊所检查血压、胆固醇和血糖，看看这些指标最近有什么变化。如果你的手腕开始疼痛或者已 经疼了很久，马上停掉手上的工作开始与“鼠标手”（重复性劳损）作战。注意你的坐姿，尤其是肩膀和脖子。我使用了矫姿器来帮助治疗。</p>
<p>跟踪你的体重、摄入以及燃烧的卡路里。如果有必要，可以改变生活方式以养成健康的饮食习惯和减肥。（《<a href="http://blog.jobbole.com/485/">Zed Shaw：程序员的常见健康问题</a>》）</p>
<p><img title="程序员的常见健康问题" src="http://img.cnbeta.com/newsimg/120115/1153190104882807.jpg" alt="程序员的常见健康问题" width="149" height="160" />程序员的常见健康问题</p>
<p><strong>拥抱变化带来的不适</strong></p>
<p>在我20刚出头的时候，通过观察身边年纪稍大一些的伙伴我发现有些人停滞不前而另一些则活力充沛，我试着寻找背后的原 因。答案就是舒适感。舒适会让技术停滞不前。当找到一个能够为我所用的系统时，我们会一直使用它。但技术是不断进步的，而那些停留在舒适区的人永远不会意 识到这些进步能够为他们带来好处。不破不立，要让自己适应不舒适的感觉。</p>
<p>下面列出的事情一<strong>开始</strong>可能会让你感到不适应：</p>
<ul>
<li>使用德沃夏克键盘</li>
<li>使用vim替代emacs，反之亦然</li>
<li>不使用鼠标</li>
<li>使用不同的窗口管理器</li>
<li>喝清咖啡不加奶油和糖，或者喝清茶</li>
<li>尝试一个月“流行且无聊的新事物”</li>
<li>一个星期中有一天不开手机</li>
<li>学习使用一种可以单手输入的设备</li>
<li>尝试一个不同的操作系统</li>
<li>一个星期中有一天不上网</li>
<li>试着对饮食加以限制：尝试吃素，成为纯素食主义者，不吃乳制品，等等</li>
<li>每天吃一种你不喜欢的食物</li>
<li>将你习惯使用的胳膊用绷带绑起来</li>
<li>学习用你不习惯的那只手写字</li>
<li>开一个博客</li>
<li>参加公共演讲</li>
<li>一个月听一种你不喜欢的音乐</li>
<li>去医院或退休家庭护理做志愿者</li>
<li>一个星期有一天快生活</li>
<li>去一个与自己文化或语言不同的国家旅行</li>
<li>读一篇广受好评但却不是你喜欢题材的小说</li>
<li>看一场广受好评但却不是你喜欢风格的电影或演出</li>
<li>学会用变速杆（手动）开车</li>
<li>反对你相信的一些事情</li>
<li></li>
</ul>
<p>在一个月的尝试之后，你可以决定是否继续采用新方式，或者找到新方式中好的经验与原有方式的结合点。例如，在我从使用了10年的emacs转向vim时，我会为插入模式设置emacs风格快捷键从而继续使用vim。（《<a href="http://blog.jobbole.com/10250/">25个Vim教程、视频和资源</a>》）</p>
<p><strong>学习一门新的编程语言</strong><strong><br />
</strong><br />
编程语言起起落落。如果只了解一门语言，程序员的解决问题能力以及职业前景都会因此受到限制。花上整整一个月时间吸收一门新语言或者一个新的编程范式，并用它写一个小程序。<br />
下面是一些可以学习但不是非常主流的编程语言：</p>
<p><a href="http://www.racket-lang.org/">Racket</a>、 <a href="http://www.haskell.org/">Haskell</a>、<a href="http://www.scala-lang.org/">Scala</a>、<a href="http://www.erlang.org/">Erlang</a>、<a href="http://www.clojure.org/">Clojure</a>、<a href="http://www.smlnj.org/">SML/NJ</a><a href="http://caml.inria.fr/ocaml/">OCaml</a>、<a href="http://squeak.org/">Squeak</a>、<a href="http://en.wikipedia.org/wiki/Prolog">Prolog</a>、<a href="http://en.wikipedia.org/wiki/Datalog">Datalog</a>.<br />
如果你无所不知，那么你可以实现一门新的编程语言。</p>
<p><strong>自动化</strong><strong><br />
</strong><br />
程序员拥有最强大的待开发技能就是将虚拟<strong>和现实</strong>自动化的能力。如果你从来没有造过一个机器人，那么<a href="http://matt.might.net/articles/ios-multitouch-robot-control/">去做一个吧</a>。至少学会使用<a href="http://www.amazon.com/gp/product/B001USHRYI/ref=as_li_ss_tl?ie=UTF8&amp;amp;amp;tag=ucmbread-20&amp;amp;amp;linkCode=as2&amp;amp;amp;camp=1789&amp;amp;amp;creative=390957&amp;amp;amp;creativeASIN=B001USHRYI">Lego Mindstorms</a>或者玩一玩 <a href="http://www.arduino.cc/">Arduino board</a>。<br />
检查一下你每天的任务，看看其中有哪些可以完全或者部分自动化。自动化在家庭生活里已经有了长足的进步，甚至可以像<a href="http://www.insteon.net/">Insteon</a>那样对系统进行DIY。<br />
投资一个月的时间来进行自动化：</p>
<ul>
<li>调整你的邮箱过滤器或者设置procmail</li>
<li><a href="http://matt.might.net/articles/console-hacks-exploiting-frequency/">为频繁进行的工作编写自动化shell</a><a href="http://matt.might.net/articles/console-hacks-exploiting-frequency/">脚本</a></li>
<li><a href="http://matt.might.net/articles/shell-scripts-for-passive-voice-weasel-words-duplicates/">编写shell</a><a href="http://matt.might.net/articles/shell-scripts-for-passive-voice-weasel-words-duplicates/">脚本帮助写作</a></li>
<li>学会如何使用cron工具</li>
<li>改造橱柜灯由感应控制</li>
<li>尽可能地用无线替代有线</li>
<li>停止手动同步：将信息存到云端</li>
<li>安装一个远程控制音频系统</li>
<li>通过你的服务器控制家里的空调</li>
<li>安装数字监控摄像头</li>
<li>安装数字内部通话系统，儿童监控系统</li>
<li>让咖啡机自动打开</li>
<li>为宠物安装自动给水槽</li>
<li>为宠物安装自动感应门</li>
<li>将Roomba改造成个人信使</li>
</ul>
<p>译注：<br />
procmail：procmail软件包包含一个自动的邮件管理器，可以很好的过滤和排序邮件。<br />
cron：linux下的定时执行工具。</p>
<p>Roomba：Roomba是iRobo公司生产的定时智能机器人。<br />
<strong>学习更多数学知识</strong><br />
计算机科学本质上讲是数学的一个学科。好的数学家中间会产出优秀的程序员。不要让你的数学能力丧失殆尽。</p>
<p>考虑每年花一个月时间复习列表中的一项：</p>
<p>逻辑学、离散数学、微积分、概率论、统计学、抽象代数、数论、范畴论、偏序理论 （《<a href="http://blog.jobbole.com/444/">数学是成就卓越开发人员的必备技能</a>》）</p>
<p><strong>关注安全</strong></p>
<p>很少有程序员具备好的安全习惯。如果你对自己的数字安全很在意，你就会对你写的代码安全性更加关心。确保你在每个站点都使用了唯一的高安全系数密码。使用加密的密码管理器来管理你的密码，例如<a href="http://passwordsafe.sourceforge.net/">PasswordSafe</a>或者<a href="http://www.keepassx.org/">KeePassX</a>。如果你还没有对整个磁盘加密，留出时间完成它。（在Mac上可以轻松完成）<br />
每年都要研究过去12个月中前10位的安全漏洞。他们是如何发生的？在编程中需要怎么做能够避免在你的代码中出现这些漏洞？</p>
<p>下面是另外一些你需要尝试的安全任务：</p>
<ul>
<li>在Apache中加入SSL验证</li>
<li><a href="http://matt.might.net/articles/implementation-of-rsa-public-key-cryptography-algorithm-in-scheme-dialect-of-lisp/">使用</a><a href="http://matt.might.net/articles/implementation-of-rsa-public-key-cryptography-algorithm-in-scheme-dialect-of-lisp/">RSA</a>或AES实现密码系统</li>
<li>试着破译你的无线网络密码</li>
<li>用<a href="http://www.wireshark.org/">WireShark</a>侦听你的网络通讯</li>
<li>设置基于密钥的无密码ssh登录</li>
<li>自己运行nmap；配置你的防火墙</li>
<li>建立端口扫描</li>
<li>为USB驱动器加密</li>
<li>监控日志文件</li>
<li>设置cron任务定期更新你的程序</li>
</ul>
<p>译注：<br />
nmap：linux下的网络扫描和嗅探工具包</p>
<p><strong>备份你的数据</strong><strong><br />
</strong><br />
每年花一些时间检查你的备份策略。<br />
花一个月时间将备份花费的时间减到最小。<br />
使用基于云的备份服务，比如<a href="http://mozy.com/">Mozy</a>和<a href="http://www.carbonite.com/">Carbonite</a>，很容易建立无缝自动备份。<br />
更全面地防御可以选择为每个人分发硬盘，对每台电脑使用像Time Machine这样的自动备份工具进行备份。<br />
对重要文件使用异地远程仓库进行版本控制。</p>
<p><strong>学习更多理论知识</strong></p>
<p>计算机科学有丰富的理论基础。</p>
<p>了解最新进展的同时还要加强对经典开发理论的掌握。</p>
<ul>
<li>每年在下列主题上花一个月时间：</li>
<li>形式语言</li>
<li>自动机与可计算性理论</li>
<li>计算复杂性理论</li>
<li>形式化方法</li>
<li>语义学</li>
<li>算法与数据结构</li>
</ul>
<p>译注：</p>
<p>形式语言：按一定规律构成的句子或符号串的有限或无限的集合。</p>
<p>自动机：是有线状态机（FSM）的数学模型。</p>
<p>可计算性理论：研究计算的可行性和函数算法的理论。又称算法理论。它是算法设计与分析的基础，也是计算机科学的理论基础。</p>
<p>计算复杂性理论：计算复杂性理论是理论计算机科学的分支学科，使用数学方法对计算中所需的各种资源的耗费作定量的分析，并研究各类问题之间在计算复杂程度上的相互关系和基本性质，是算法分析的理论基础。</p>
<p>形式化方法：在逻辑科学中是指分析、研究思维形式结构的方法。</p>
<p>语义学：研究自然语言中词语意义的学科。也可以指对逻辑形式系统中符号解释的研究。</p>
<p>对于刚起步的程序员，可以先看一看下列文章：</p>
<ul>
<li><a href="http://matt.might.net/articles/cek-machines/">用Haskell</a><a href="http://matt.might.net/articles/cek-machines/">编写CEK</a><a href="http://matt.might.net/articles/cek-machines/">风格的解析器（或语义分析器）</a></li>
<li><a href="http://matt.might.net/articles/parsing-with-derivatives/">通过推导进行语法解析</a></li>
<li><a href="http://matt.might.net/articles/red-black-delete/">遗失的方法：如何对Okasaki</a><a href="http://matt.might.net/articles/red-black-delete/">的红黑树执行删除</a></li>
<li><a href="http://matt.might.net/articles/implementation-of-regular-expression-matching-in-scheme-with-derivatives/">通过推导使用Scheme</a><a href="http://matt.might.net/articles/implementation-of-regular-expression-matching-in-scheme-with-derivatives/">进行正则表达式模式匹配</a></li>
<li><a href="http://matt.might.net/articles/implementation-of-nfas-and-regular-expressions-in-java/">将郑则表示转换成非确定性自动机（NFA</a><a href="http://matt.might.net/articles/implementation-of-nfas-and-regular-expressions-in-java/">）</a></li>
</ul>
<p>译注：<br />
CEK：CEK机器是由Matthias Felleisen和Dan Friedman开发的λ-演算的力学模型。<br />
Haskell：一种纯函数式编程语言，以美国数学家Haskell Brooks Curry命名。</p>
<p><strong>接触艺术和人文</strong></p>
<p>工程师往往轻视艺术。他们没有意识到艺术和人文是基础升华的重要因素。史蒂夫·乔布斯乐于指出将技术与人文结合的重要性，事实也却是如此。</p>
<p>艺术和设计原则同样适用于人和计算机之间的交互。不要忽视这些原则。艺术和人文的训练让直觉更加敏锐，而这方面的练习是难以用数字来计量。工程师需要知道如何衡量那些他们不能计量的事物，而不是只是统计他们可以计量的内容。</p>
<p>每年至少有一个月学习下面列出的主题：</p>
<ul>
<li>工业设计</li>
<li>哲学</li>
<li>摄影</li>
<li>绘画</li>
<li>素描</li>
<li>音乐及音乐理论</li>
<li>电影</li>
<li>文学</li>
</ul>
<p>社会科学同样会对计算机科学家有很大帮助，尤其是经济学和哲学。</p>
<p><strong>向新的软件学习</strong><strong><br />
</strong><br />
一个为自己的软件寻找灵感的好办法就是向新的或新型应用程序学习。例如，如果你从来没有尝试过3D建模软件，可以<a href="http://www.blender.org/">尝试</a><a href="http://www.blender.org/">Blender</a>。抑或是，如果你从来没有接触过LaTeX，请真诚地试着去了解它。</p>
<p>在学习过程中，请注意你喜欢什么和讨厌什么。真诚地问自己，这些观察到的内容是否在你的软件中存在。在工作中很难看到自己的缺点，但发现别人的不足却很容易。天下没有哪个父母认为自己的孩子长得难看。请学习看到自己作品的不足。</p>
<p><strong>完成一个自己的项目</strong></p>
<p>如果你整天为别人写代码，那么为自己写程序能让你记得当初为什么会成为程序员。每年为自己选择的项目分配一个月的时间，完成核心功能，将其开源发布。</p>
<p>&nbsp;</p>
<p><span style="color: #888888;">引自：<a href="http://www.cnbeta.com/articles/169509.htm"><span style="color: #888888;">http://www.cnbeta.com/articles/169509.htm</span></a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://lingzuer.com/?feed=rss2&#038;p=143</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>学习nodejs&#8212;安装</title>
		<link>http://lingzuer.com/?p=138</link>
		<comments>http://lingzuer.com/?p=138#comments</comments>
		<pubDate>Wed, 20 Jul 2011 08:06:05 +0000</pubDate>
		<dc:creator>lingzuer</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[NodeJs]]></category>

		<guid isPermaLink="false">http://lingzuer.com/?p=138</guid>
		<description><![CDATA[最近在学 Nodejs，将自己的学习过程记录在这里，希望可以帮到将要学习 Nodejs 的同学。 因为现在安装 Ubuntu 也非常方便，所以我的 Platform 是 Ubuntu 。 其他 Platform 的同学可以到这里看：http://howtonode.org/how-to-install-nodejs 一：安装nodejs: Nodejs官方网站：http://nodejs.org/ Nodejs Github网址：https://github.com/joyent/node git clo...]]></description>
			<content:encoded><![CDATA[<p>最近在学 Nodejs，将自己的学习过程记录在这里，希望可以帮到将要学习 Nodejs 的同学。</p>
<p>因为现在安装 Ubuntu 也非常方便，所以我的 Platform 是 Ubuntu 。</p>
<p>其他 Platform 的同学可以到这里看：<a href="http://howtonode.org/how-to-install-nodejs">http://howtonode.org/how-to-install-nodejs</a></p>
<p>一：安装nodejs:</p>
<p>Nodejs官方网站：<a href="http://nodejs.org/">http://nodejs.org/</a></p>
<p>Nodejs Github网址：<a href="https://github.com/joyent/node">https://github.com/joyent/node</a></p>
<p>git clone git://github.com/joyent/node.git</p>
<p>cd node<br />
./configure<br />
make<br />
sudo make install</p>
<p>但是这样安装的node版本一般都是最新版本的，有可能不是稳定版本(stable versions)，如果不是稳定版本，那么在后面安装 <a title="Express" href="https://github.com/visionmedia/express" target="_blank">Express</a> 的时候就比较麻烦。</p>
<p>所以建议安装node最好是选择安装最新的稳定版本，比如：2011.06.29 v0.4.9 (stable)</p>
<p>官方安装Wiki：<a href="https://github.com/joyent/node/wiki/Installation">https://github.com/joyent/node/wiki/Installation</a></p>
<p>二：安装npm</p>
<p>NPM官方网站：<a href="http://npmjs.org/">http://npmjs.org/</a></p>
<p>NPM Github网址：<a href="https://github.com/isaacs/npm">https://github.com/isaacs/npm</a></p>
<p>One Line Install:</p>
<pre><code>curl http://npmjs.org/install.sh | sh</code></pre>
<pre><span style="font-family: monospace;">或者sudo curl http://npmjs.org/install.sh | sh </span></pre>
<pre></pre>
<p>但是我没有安装成功会报错，截取一段贴出来：</p>
<p>make: <strong>*</strong> [install] 错误 13<br />
npm WARN Not installed in /usr/local/lib/node_modules npm<br />
npm ERR! Could not create /usr/local/lib/node_modules/___npm.npm<br />
npm ERR! error installing npm@1.0.15 Error: EACCES, Permission denied &#8216;/usr/local/lib/node_modules&#8217;<br />
npm ERR! Error: EACCES, Permission denied &#8216;/usr/local/lib/node_modules&#8217;<br />
npm ERR!</p>
<p>然后我就用普通的方法安装了：</p>
<pre>git clone http://github.com/isaacs/npm.git
cd npm
sudo make install</pre>
<pre>三：安装Express</pre>
<pre>Express官方网站：<a href="http://expressjs.com/">http://expressjs.com/</a></pre>
<pre>Express Github官方网址：<a href="https://github.com/visionmedia/express">https://github.com/visionmedia/express</a></pre>
<pre><code>sudo npm install -g express</code></pre>
<pre><span style="font-family: monospace;">安装后目录并不在/home/huangyaowu下，</span></pre>
<pre><span style="font-family: monospace;">而是在：</span>/usr/local/bin/下，</pre>
<pre></pre>
<pre></pre>
<pre>huangyaowu@ubuntu:~$ sudo npm install -g express
[sudo] password for huangyaowu:
/usr/local/bin/express -&gt; /usr/local/lib/node_modules/express/bin/express
express@2.4.3 /usr/local/lib/node_modules/express
├── mime@1.2.2
├── connect@1.6.0
└── qs@0.3.0
huangyaowu@ubuntu:~$</pre>
<pre><span style="font-family: monospace;">运行个例子：</span></pre>
<pre><span style="font-family: monospace;">现在可以在/user/huangyaowu目录下执行：</span></pre>
<pre><span style="font-family: monospace;">express huang</span></pre>
<pre><span style="font-family: monospace;">会新建一下目录：</span></pre>
<pre></pre>
<pre>huangyaowu@ubuntu:~$ express huang
   create : huang
   create : huang/package.json
   create : huang/app.js
   create : huang/public/javascripts
   create : huang/public/images
   create : huang/views
   create : huang/views/layout.jade
   create : huang/views/index.jade
   create : huang/public/stylesheets
   create : huang/public/stylesheets/style.css
huangyaowu@ubuntu:~$</pre>
<pre><span style="font-family: monospace;">然后再cd huang到huang的目录下执行：</span></pre>
<pre><span style="font-family: monospace;">npm install -d</span></pre>
<pre><span style="font-family: monospace;">完成后执行：</span></pre>
<pre><span style="font-family: monospace;">node app.js</span></pre>
<pre><span style="font-family: monospace;">出现这句后：</span></pre>
<pre>Express server listening on port 3000 in development mode</pre>
<pre>在浏览器输入：<a href="http://localhost:3000/">http://localhost:3000/</a></pre>
<pre>四：安装其他</pre>
<pre>安装jsdom:<a href="https://github.com/tmpvar/jsdom">https://github.com/tmpvar/jsdom</a></pre>
<pre>jsdom安装上了，但是在运行的时候说：Cannot call method 'runInContext' of undefined</pre>
<pre>解决办法：<a href="https://github.com/tmpvar/jsdom/commit/4cf155a1624b3fb54b2eec536a0c060ec1bab4ab">https://github.com/tmpvar/jsdom/commit/4cf155a1624b3fb54b2eec536a0c060ec1bab4ab</a></pre>
<pre>npm install<a href="https://github.com/tmpvar/jsdom/tarball/4cf155a1624b3fb54b2eec536a0c060ec1bab4ab">https://github.com/tmpvar/jsdom/tarball/4cf155a1624b3fb54b2eec536a0c060ec1bab4ab</a></pre>
<pre>如果还是不行：</pre>
<pre>git clone <a href="http://github.com/tmpvar/jsdom.git">http://github.com/tmpvar/jsdom.git</a>
cd jsdom
npm link</pre>
<pre>使用的时候一定要注意jsdom的目录，应用的是/lib/jsdom

var jsdom = require('../../node_modules/jsdom/lib/jsdom'),
window = jsdom.jsdom().createWindow();

jsdom.jQueryify(window, 'jquery.js', function() {
window.jQuery('body').append('&lt;div&gt;hello node&lt;/div&gt;');
console.log(window.jQuery('.testing').text());
});</pre>
<pre>安装htmlparser：<a href="https://github.com/tautologistics/node-htmlparser">https://github.com/tautologistics/node-htmlparser</a></pre>
<pre>npm install htmlparser</pre>
<pre></pre>
<pre></pre>
]]></content:encoded>
			<wfw:commentRss>http://lingzuer.com/?feed=rss2&#038;p=138</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>JavaScript中的接口</title>
		<link>http://lingzuer.com/?p=130</link>
		<comments>http://lingzuer.com/?p=130#comments</comments>
		<pubDate>Mon, 16 May 2011 23:59:15 +0000</pubDate>
		<dc:creator>lingzuer</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://lingzuer.com/?p=130</guid>
		<description><![CDATA[在《JavaScript设计模式》一书中，最开始就讲到一个重要的知识点就是“接口”，因为在后面的一些模式都会依赖接口，如：工厂模式、组合模式、装饰者模式、命令模式等。 什么是接口？接口提供了一种用以说明一个对象应该具有哪些方法的手段。 我们将主谓宾提取出来就是：接口提供了一种手段，原来接口就是提供了一种手段，提供了什么手段呢？说明一个对象应该具有哪些方法。 在JavaScript中没有像其他语言那样有 interface 和 implements 关键字，所以一般都是通过使用辅助类和显示地进行模仿，通常有...]]></description>
			<content:encoded><![CDATA[<p>在《JavaScript设计模式》一书中，最开始就讲到一个重要的知识点就是“接口”，因为在后面的一些模式都会依赖接口，如：工厂模式、组合模式、装饰者模式、命令模式等。</p>
<p>什么是接口？接口提供了一种用以说明一个对象应该具有哪些方法的手段。</p>
<p>我们将主谓宾提取出来就是：接口提供了一种手段，原来接口就是提供了一种手段，提供了什么手段呢？说明一个对象应该具有哪些方法。</p>
<p>在JavaScript中没有像其他语言那样有 interface 和 implements 关键字，所以一般都是通过使用辅助类和显示地进行模仿，通常有三种方法：注释法、属性检查法和鸭式辨型法。</p>
<p>“鸭式辨型法”来源自一个名言：“像鸭子一样走路并且嘎嘎叫的就是鸭子”。它把对象实现的方法集作为判断它是不是某个类的实例的唯一标准。这种方法的观点很简单：如果对象具有与接口定义的方法同名的所有方法，那么就可以认为它实现了这个接口。</p>
<p>下面直接看一下如何实现一个接口：</p>
<p>// Interfaces.<br />
var Composite = new Interface(&#8216;Composite&#8217;, ['add', 'remove', 'getChild']);</p>
<p>var FormItem = new Interface(&#8216;FormItem&#8217;, ['save']);<br />
// CompositeForm class<br />
var CompositeForm = function(id, method, action) { // implements Composite, FormItem   &#8230;};<br />
&#8230;<br />
function addForm(formInstance) {</p>
<p>Interface.ensureImplements(formInstance, Composite, FormItem);</p>
<p>// This function will throw an error if a required method is not implemented,</p>
<p>// halting execution of the function.</p>
<p>// All code beneath this line will be executed only if the checks pass.</p>
<p>&#8230;</p>
<p>}</p>
<p>具体实例：</p>
<p>var personInerface = new Interface(&#8216;personInerface&#8217;, ['getName', 'getAge']);<br />
var Person = function(name, age) {</p>
<p>Interface.ensureImplements(this, personInerface);</p>
<p>this.name = name;</p>
<p>this.age = age;</p>
<p>};<br />
Person.prototype = {</p>
<p>getName: function() {</p>
<p>alert(this.name);</p>
<p>},</p>
<p>getAge: function() {</p>
<p>alert(this.age);</p>
<p>}</p>
<p>};<br />
var people = new Person(&#8216;yaowu&#8217;, 18);<br />
people.getAge();</p>
]]></content:encoded>
			<wfw:commentRss>http://lingzuer.com/?feed=rss2&#038;p=130</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Doodle：现代舞先驱玛莎·葛兰姆 117 周年诞辰</title>
		<link>http://lingzuer.com/?p=109</link>
		<comments>http://lingzuer.com/?p=109#comments</comments>
		<pubDate>Wed, 11 May 2011 02:05:40 +0000</pubDate>
		<dc:creator>lingzuer</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://lingzuer.com/?p=109</guid>
		<description><![CDATA[玛莎·葛兰（英语：Martha Graham，1894年5月11日－1991年4月1日），又译为马莎·格雷厄姆，美国舞蹈家和编舞家，也是现代舞蹈史上最早的创始人之一。葛兰姆的作品多以美国人文或是希腊古典神话为主题。今天发布的Google Logo使用了CSS Sprite技术，利用一个初始图片和一张画满各个动作的拼接图片，实现了动画。 初始图片： 拼接图片：]]></description>
			<content:encoded><![CDATA[<p>玛莎·葛兰（英语：Martha Graham，1894年5月11日－1991年4月1日），又译为马莎·格雷厄姆，美国舞蹈家和编舞家，也是现代舞蹈史上最早的创始人之一。葛兰姆的作品多以美国人文或是希腊古典神话为主题。今天发布的Google Logo使用了CSS Sprite技术，利用一个初始图片和一张画满各个动作的拼接图片，实现了动画。<br />
<a href="http://lingzuer.com/wp-content/uploads/2011/03/doogle.png"><img src="http://lingzuer.com/wp-content/uploads/2011/03/doogle-300x112.png" alt="" title="doogle" width="300" height="112" class="alignnone size-medium wp-image-125" /></a></p>
<p>初始图片：<br />
<a href="http://lingzuer.com/wp-content/uploads/2011/03/graham11-hp-start.png"><img src="http://lingzuer.com/wp-content/uploads/2011/03/graham11-hp-start-300x116.png" alt="" title="graham11-hp-start" width="300" height="116" class="alignnone size-medium wp-image-126" /></a></p>
<p>拼接图片：<br />
<a href="http://lingzuer.com/wp-content/uploads/2011/03/graham11-hp-sprite.png"><img src="http://lingzuer.com/wp-content/uploads/2011/03/graham11-hp-sprite-300x176.png" alt="" title="graham11-hp-sprite" width="300" height="176" class="alignnone size-medium wp-image-127" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://lingzuer.com/?feed=rss2&#038;p=109</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>跨平台开发：PhoneGap移动开发框架初探</title>
		<link>http://lingzuer.com/?p=122</link>
		<comments>http://lingzuer.com/?p=122#comments</comments>
		<pubDate>Thu, 31 Mar 2011 07:52:32 +0000</pubDate>
		<dc:creator>lingzuer</dc:creator>
				<category><![CDATA[移动开发]]></category>

		<guid isPermaLink="false">http://lingzuer.com/?p=122</guid>
		<description><![CDATA[原文发表在:http://publish.itpub.net/a2010/1008/1111/000001111212.shtml 目前，随着Google的Android手机和苹果的iphone手机的逐渐普及，越来越多开发者加入到移动应用开发的大军当中。其中，Android应 用是基于Java语言基础上进行开发的，而苹果公司的iphone则是基于C语言开发的。如果开发者编写的应用需要同时在不同的移动设备上运行的话，则必 须要掌握多种开发语言。而为了进一步简化移动应用的编程，Nitobi公司推出了一套开源的...]]></description>
			<content:encoded><![CDATA[<p>原文发表在:http://publish.itpub.net/a2010/1008/1111/000001111212.shtml</p>
<p>目前，随着Google的Android手机和苹果的iphone手机的逐渐普及，越来越多开发者加入到移动应用开发的大军当中。其中，Android应 用是基于Java语言基础上进行开发的，而苹果公司的iphone则是基于C语言开发的。如果开发者编写的应用需要同时在不同的移动设备上运行的话，则必 须要掌握多种开发语言。而为了进一步简化移动应用的编程，Nitobi公司推出了一套开源的移动应用解决方案 PhoneGap(http://www.phonegap.com)。</p>
<p>PhoneGap是一款开源的手机应用开发平台，它仅仅只用HTML和JavaScript语言就可以制作出能在多个移动设备上运行的应用。 PhoneGap将移动设备本身提供的复杂的API进行了抽象和简化，提供了一系列丰富的API供开发者调用，只要你会HTML和Javascript或 者Java语言，就可以利用PhoneGap提供的API去调用各种功能，PhoneGap就能让你可以制作出在各种手机平台上运行的应用，这对移动应用 开发者来说无疑是个福音。  目前，PhoneGap已实现对iPhone/ipad、Android、Symbian,Palm、黑莓各版本绝大部分功能的支持,其中官方文档中对其 支持的详细说明如下图所示：</p>
<p><img src="http://image20.it168.com/201010_500x375/272/ae8d7fe41b2cf106.jpg" alt="" /><br />
在本文中，将以一个简单的能在Android平台上运行的HelloWorld的示例，讲解如何安装PhoneGap的开发框架并配合Eclipse进行开发的过程。</p>
<p>基于Android SDK安装PhoneGap框架</p>
<p>首先，要明白一点，就是要利用PhoneGap框架开发移动应用时，也是必须在开发环境上安装对应移动设备应用的SDK的。比如你要开发一个 运行在Android上的应用，则必须安装 Android的SDK包，开发iphone应用，就要安装iphone  sdk。本文将介绍如何安装基于Android SDK下安装PhoneGap。</p>
<p>无论是开发基于哪种平台的移动应用，首先要到PhoneGap的官方网站下载</p>
<p>PhoneGap包，地址是：http://www.phonegap.com/download，目前最新的版本是0.9.1,下载之后，解压缩后，会发现如下图所示的若干个文件夹<br />
<img src="http://image20.it168.com/201010_500x375/272/4cff1c1bb4178f85.jpg" alt="" /></p>
<p>这里，由于我们是构建Android应用，因此只有phonegap-android对我们是有用的。</p>
<p>由于PhoneGap是通过Ruby语言以及所开发的目标移动设备的SDK一起搭配工作的，因此除了下载PhoneGap外，开发者还必须安装如下的软件(以Android为例)</p>
<p>Android SDK,建议安装最新的版本，比如Android 2.1或者2.2</p>
<p>Eclipse IDE</p>
<p>Apache Ant 1.8.1 (http://ant.apache.org)</p>
<p>JDK 1.5以上</p>
<p>Android 的Eclipse开发插件ADT(http://developer.android.com/sdk/eclipse-adt.html)</p>
<p>Ruby 1.9.1，建议到http://rubyinstaller.org/直接下载1.9.1的版本直接安装。</p>
<p>此外，我们还要对windows下的运行环境变量进行设置。首先我们到控制面板-系统-环境变量中，增加如下几个系统环境变量。</p>
<p>JAVA_HOME:指向所安装的JDK的目录，比如c:\jdk15</p>
<p>ANT_HOME:指向所安装的Apache_ANT目录，比如d:\ant</p>
<p>ANDROID_HOME;指向所安装的Android SDK目录，比如d:\androidsdk</p>
<p>对Path进行设置,分别将ruby,jdk,android sdk,ant加入到原有的path中,如：</p>
<p>c:\ruby\bin;c:\jdk15\bin;d:\ant\bin;d:\androidsdk\tools</p>
<p>其中，下载Ruby 1.9.1的Windows版本后，直接选择安装到指定目录即可。</p>
<p>在完成上面的这些工作后，我们接下来就通过PhoneGap框架的脚手架功能，快速生成一个android的原型程序。</p>
<p>通过PhoneGap生成基于Android的原型程序</p>
<p>1 进入PhoneGap-Android目录，并进入MS-DOS方式，在命令行下，按如下格式执行该命令：</p>
<p>ruby bin/droidgap &#8220;[android_sdk_path]&#8221; [name] [package_name] &#8220;[www]&#8221; &#8220;[path]&#8221;</p>
<p>上述参数说明如下：</p>
<p>其中android_sdk_path指定了android sdk的安装位置，比如：</p>
<p>d:/androidsdk,注意这里不要写成“\”,应该是“/”作为分隔符。</p>
<p>Name：要生成的android应用的名字。</p>
<p>Package_name:生成的android应用中源代码中的包名，注意必须至少有一层的包关系，即com.XXXX的形式。</p>
<p>WWW：这里指应用中存放HTML,Javascipt,CSS的位置目录名称。</p>
<p>PATH:这里指通过PhoneGap生成的项目原型工程的目录位置，注意的是，该目录位置不能指定为eclipse的workspace工作空间内。</p>
<p>下面是一个例子：</p>
<p>ruby bin/droidgap “d:/androidsdk” HelloWorldGap com.phonegap www</p>
<p>“d:/HelloWorldGap”</p>
<p>运行上述命令后，会发现在D盘会生成一个HelloWolrdGap的工程目录，phonegap已经为我们生成了项目的框架了。</p>
<p>将工程导入到ECLIPSE中</p>
<p>如果安装了Android for eclipse的插件ADT后，我们可以将PhoneGap生成的工程导入到Eclipse中去。首先我们打开Eclipse,新建一个Android Project，如下图</p>
<p><img src="http://image20.it168.com/201010_500x375/272/e2df6959f1fe6c99.jpg" alt="" /><br />
其中输入Project name的名称为HelloGapAndroid，其中在Create project from existing source中选择上文中用PhoneGap生成的项目的目录。之后在Eclipse中则会看到如下结构的<br />
<img src="http://image20.it168.com/201010_240x180/272/b04d47ddca454ebb.jpg" alt="" /></p>
<p>可以看到其中assets下的www目录存放了工程中需要用到的HTML、Javascript和CSS文件。此外，还要确认工程的lib目录下面，存在phonegap.jar文件。</p>
<p>接下来我们试着运行下这个工程，会在模拟器中看到如下效果：</p>
<p><img src="http://image20.it168.com/201010_500x375/272/46c23ade5b52b7ac.jpg" alt="" /><br />
运行的结果是显示了PhoneGap中默认显示的index.html页面，其中演示了其中的一些功能，大家可以尝试去试验一下。<br />
编写HelloWorld程序</p>
<p>接下来，我们来在此基础上编写HelloWorld程序。我们切换到index.html中去，在代码模式下，删除原来phonegap生成的代码，写入如下代码：</p>
<p>&lt;!DOCTYPE HTML&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;meta name=&#8221;viewport&#8221; content=&#8221;width=320; user-scalable=no&#8221;  /&gt;      &lt;meta http-equiv=&#8221;Content-type&#8221; content=&#8221;text/html;  charset=utf-8&#8243;&gt;<br />
&lt;title&gt;PhoneGap Android App&lt;/title&gt;<br />
&lt;script type=&#8221;text/javascript&#8221; charset=&#8221;utf-8&#8243; src=&#8221;phonegap.js&#8221;&gt;&lt;/script&gt;<br />
&lt;script type=&#8221;text/javascript&#8221; charset=&#8221;utf-8&#8243;&gt;<br />
var showMessageBox = function() {<br />
navigator.notification.alert(&#8220;Hello World of PhoneGap&#8221;);<br />
}<br />
function init(){<br />
document.addEventListener(&#8220;deviceready&#8221;, showMessageBox, true);<br />
}<br />
&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body onload=&#8221;init();&#8221;  &gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>可以看到，这其实是普通的HTML和Javascript代码。首先在onload触发的方法init中，通过Javascript的回调方法中调用了phonegap封装好的事件</p>
<p>deviceready，这个事件含义是当设备在将其应用程序加载完毕后触发的。在引入phonegap提供的API时，必须通过  的方式引入进行调用。在这里的回调函数showMessageBox中，就调用了phonegap封装好的方法  navigator.notification.alert，这个方法实际上是</p>
<p>显示了一个带文本的提示框，运行结果如下图：<br />
<img src="http://image20.it168.com/201010_500x375/272/fd7c4494c96515a2.jpg" alt="" /></p>
<p>改进HelloWorld程序</p>
<p>接下来我们改进下这个程序，实现的功能是我们可以在文本框里输入名字，然后点确定按钮后，弹出提示窗口显示Hello+你输入的名字。修改程序代码如下：</p>
<p>&lt;!DOCTYPE HTML&gt;</p>
<p>&lt;html&gt;</p>
<p>&lt;head&gt;</p>
<p>&lt;meta name=&#8221;viewport&#8221; content=&#8221;width=320; user-scalable=no&#8221; /&gt;</p>
<p>&lt;meta http-equiv=&#8221;Content-type&#8221; content=&#8221;text/html; charset=utf-8&#8243;&gt;</p>
<p>&lt;title&gt;PhoneGap&lt;/title&gt;</p>
<p>&lt;script type=&#8221;text/javascript&#8221; charset=&#8221;utf-8&#8243; src=&#8221;phonegap.js&#8221;&gt;&lt;/script&gt;</p>
<p>&lt;script type=&#8221;text/javascript&#8221; charset=&#8221;utf-8&#8243;&gt;</p>
<p>var displayHello = function() {</p>
<p>var name =      document.getElementById(&#8220;firstname&#8221;).value;</p>
<p>navigator.notification.alert(&#8220;name&#8221; + name);</p>
<p>}</p>
<p>&lt;/script&gt;</p>
<p>&lt;/head&gt;</p>
<p>&lt;body onload=&#8221;init();&#8221; id=&#8221;bdy&#8221; &gt;</p>
<p>&lt;div id=&#8221;txt&#8221;&gt;</p>
<p>&lt;input   type=&#8221;text&#8221; name=&#8221;firstname&#8221; id=&#8221;firstname&#8221; /&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;div id =&#8221;btn&#8221;&gt;</p>
<p>&lt;a href=&#8221;#&#8221; onclick=&#8221;displayHello();&#8221;&gt;Say Hello&lt;/a&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p>
<p>如果你懂得HTML和Javascript的话，上面的程序实在容易理解。其中我们添加了一个名为firstname的文本框，并且在按钮的 onclick事件中调用的displayHello()方法中通过document.getElementById的Javascript方法获得了用 户输入的名字，然后同样用navigator.notification.alert的方法输出结果，输入的界面和输出的结果如下图所示：<br />
<img src="http://image20.it168.com/201010_500x375/272/bb6bee977c52df9e.jpg" alt="" /></p>
<p><img src="http://image20.it168.com/201010_500x375/272/d6cae7570ba25b94.jpg" alt="" /></p>
<p>总结</p>
<p>通过PhoneGap这套开源框架对开发移动设备SDK的封装，我们今后在开发移动应用时，只需要调用PhoneGap封装好的API，结合 已有的Java、HTML、CSS和Javascript技术，就可以很方便地进行开发了，更多的资料请查看PhoneGap的帮助文档。</p>
]]></content:encoded>
			<wfw:commentRss>http://lingzuer.com/?feed=rss2&#038;p=122</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>text-align: centaur;</title>
		<link>http://lingzuer.com/?p=118</link>
		<comments>http://lingzuer.com/?p=118#comments</comments>
		<pubDate>Thu, 31 Mar 2011 07:12:02 +0000</pubDate>
		<dc:creator>lingzuer</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://lingzuer.com/?p=118</guid>
		<description><![CDATA[&#160; 查看http://textaligncentaur.com/ HTML: &#60;body&#62;    &#60;div id=&#8217;main&#8217;&#62;      &#60;h1&#62;text-align: centaur;&#60;/h1&#62;      &#60;p id=&#8217;message&#8217;&#62;&#60;/p&#62;      &#60;textarea id=&#8221;test&#8221;&#62;&#60;/textarea&#62;    ...]]></description>
			<content:encoded><![CDATA[<p><a href="http://lingzuer.com/wp-content/uploads/2011/03/man-horse.png"><img class="alignnone size-medium wp-image-119" title="man-horse" src="http://lingzuer.com/wp-content/uploads/2011/03/man-horse-224x300.png" alt="" width="224" height="300" /></a></p>
<p>&nbsp;</p>
<p>查看<a href="http://textaligncentaur.com/">http://textaligncentaur.com/</a></p>
<p>HTML:</p>
<p>&lt;body&gt;    &lt;div id=&#8217;main&#8217;&gt;      &lt;h1&gt;text-align: centaur;&lt;/h1&gt;      &lt;p id=&#8217;message&#8217;&gt;&lt;/p&gt;      &lt;textarea id=&#8221;test&#8221;&gt;&lt;/textarea&gt;      &lt;p&gt;        &lt;input id=&#8221;sub&#8221; type=&#8217;button&#8217; value=&#8217;centaur text&#8217; /&gt;      &lt;/p&gt;    &lt;/div&gt;	&lt;script src=&#8221;centaur.js&#8221;&gt;&lt;/script&gt;  &lt;/body&gt;</p>
<p>centaur.js:</p>
<p>(function() {var centaur = &#8216;   x|  xxx|  xxx|  xxx|  xxx|  xxx|  xxx|xxxxxxx      xxxxx|  xxx       xxxxxxx       xxx|  xxx       xxxxxxx       xxx|  xxx       xxxxxxx       xxx|  xxx         xxx         xxx|  xxxx       xxxxx       xxxx|    xxxxxxxxxxxxxxxxxxxxxxxx|         xxxxxxxxxxxxx|           xxxxxxxxxx|           xxxxxxxxxx|           xxxxxxxxxx|           xxxxxxxxxx|          xxxxxxxxxxxxxx              xxxxxxxxxx|         xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|         xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|         xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxx|          xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx   xxxx|           xxxxxxxx                 xxxxxxxxxxxxx     xxxx|            xxxxxx                    xxxxxxxx       xxxx|             xxxx                      xxxxxx        xxx|            xxxx                       xxxxx         xx|           xxxx                       xxxxx          xx|            xxxx                       xxxxx         x|            xxxx                       xxxxx|             xxxx                      xxxx|             xxxx                      xxxx|            xxxxxx                    xxxxxx|            xxxxxx                    xxxxxx|&#8217;;var lipsum = &#8216;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam auctor, leo non varius cursus, sapien nulla fermentum nisl, sit amet faucibus lorem ligula a lorem. Vestibulum scelerisque sem tortor. Nulla dignissim mattis mattis. Proin tincidunt sapien non purus sagittis iaculis ac non urna. Cras sodales dapibus diam, at auctor neque cursus mattis. Vestibulum nec porta urna. Suspendisse eros erat, pulvinar vel facilisis id, gravida vel sapien. Donec aliquam ante sed leo egestas varius. Fusce imperdiet nulla lacinia massa feugiat a commodo justo ullamcorper. Aliquam tincidunt consequat ornare. Vestibulum tristique suscipit nibh eu dignissim. Donec nec elit elit, sit amet pellentesque dolor. Aenean volutpat odio vel turpis posuere eu feugiato.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam auctor, leo non varius cursus, sapien nulla fermentum nisl, sit amet faucibus lorem ligula a lorem. Vestibulum scelerisque sem tortor. Nulla dignissim mattis mattis. Proin tincidunt sapien non purus sagittis iaculis ac non urna. Cras sodales dapibus diam, at auctor neque cursus mattis. Vestibulum nec porta urna. Suspendisse eros erat, pulvinar vel facilisis id, gravida vel sapien. Donec aliquam ante sed leo egestas varius. Fusce imperdiet nulla lacinia massa feugiat a commodo justo ullamcorper. Aliquam tincidunt consequat ornare. Vestibulum tristique suscipit nibh eu dignissim. Donec nec elit elit, sit amet pellentesque dolor. Aenean volutpat odio vel turpis posuere eu feugiato.&#8217;;var get = function(el) { return document.getElementById(el); };var textarea = get(&#8220;test&#8221;);var message = get(&#8220;message&#8221;);var sub = get(&#8220;sub&#8221;);textarea.innerHTML = lipsum;<br />
sub.onclick = function() {	var text = textarea.value.replace(/[^a-zA-Z0-9]/g, &#8221;);    var centaured_text = [];    if(text.length &gt;= centaur.replace(/[^a-zA-Z0-9]/g, &#8221;).length) {      text = text.split(&#8221;).reverse();      for (var i =  0; i &lt; centaur.length; i++) {        var c = centaur[i];        if (c === &#8216;|&#8217;) {          centaured_text.push(&#8216;\n&#8217;);        } else if (c === &#8216; &#8216;) {          centaured_text.push(c);        } else {          centaured_text.push(text.pop());        }      }      textarea.value = centaured_text.join(&#8221;) + text.reverse().join(&#8221;);    } else {      message.innerHTML = &#8220;Cannot Centaur Text: Needs More Letters&#8221;;    }}})();</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://lingzuer.com/?feed=rss2&#038;p=118</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>css3动画</title>
		<link>http://lingzuer.com/?p=116</link>
		<comments>http://lingzuer.com/?p=116#comments</comments>
		<pubDate>Thu, 31 Mar 2011 07:03:59 +0000</pubDate>
		<dc:creator>lingzuer</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://lingzuer.com/?p=116</guid>
		<description><![CDATA[CSS 3D Transformations 见live demo (http://www.satine.org/research/webkit/snowleopard/snowstack.html) (Mac Safari Only，类似于http://www.cooliris.com/的效果)。 &#160; 相关资料 webkit blog介绍animation/2d transforms/3d transforms的三篇文章 http://webkit.org/blog/138/css-anima...]]></description>
			<content:encoded><![CDATA[<h3>CSS 3D Transformations</h3>
<p>见live demo (<a href="http://www.satine.org/research/webkit/snowleopard/snowstack.html" target="_blank">http://www.satine.org/research/webkit/snowleopard/snowstack.html</a>) (Mac Safari Only，类似于http://www.cooliris.com/的效果)。</p>
<p>&nbsp;</p>
<h3>相关资料</h3>
<p><strong>webkit blog介绍animation/2d transforms/3d transforms的三篇文章</strong><br />
<a href="http://webkit.org/blog/138/css-animation/" target="_blank">http://webkit.org/blog/138/css-animation/</a><br />
<a href="http://webkit.org/blog/130/css-transforms/" target="_blank">http://webkit.org/blog/130/css-transforms/</a><br />
<a href="http://webkit.org/blog/386/3d-transforms/" target="_blank">http://webkit.org/blog/386/3d-transforms/</a></p>
<p><strong>W3组织的CSS规范集</strong><br />
<a href="http://www.w3.org/Style/CSS/current-work" target="_blank">http://www.w3.org/Style/CSS/current-work</a></p>
<p><strong>苹果官方关于CSS视觉效果的文档</strong><br />
<a href="http://developer.apple.com/safari/library/documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Introduction/Introduction.html" target="_blank">http://developer.apple.com/safari/library/documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Introduction/Introduction.html</a></p>
<p><strong>css animation的兼容性数据来源</strong><br />
<a href="http://caniuse.com/" target="_blank">http://caniuse.com/</a></p>
<p><strong>3d transform的运用app</strong><br />
<a href="http://www.satine.org/research/webkit/snowleopard/snowstack.html" target="_blank">http://www.satine.org/research/webkit/snowleopard/snowstack.html</a><br />
<a href="http://css-vfx.googlecode.com/svn/trunk/examples/zflow.html" target="_blank">http://css-vfx.googlecode.com/svn/trunk/examples/zflow.html</a><br />
<a href="http://www.fofronline.com/experiments/cube-3d/" target="_blank">http://www.fofronline.com/experiments/cube-3d/</a></p>
<p><strong>css3动画的应用</strong><br />
<a href="http://www.webdesignerwall.com/trends/47-amazing-css3-animation-demos/" target="_blank">http://www.webdesignerwall.com/trends/47-amazing-css3-animation-demos/</a><br />
<a href="http://www.optimum7.com/internet-marketing/web-development/pure-css3-spiderman-ipad-cartoon-jquery-html5-no-flash.html">http://www.optimum7.com/internet-marketing/web-development/pure-css3-spiderman-ipad-cartoon-jquery-html5-no-flash.html</a><br />
<a href="http://www.optimum7.com/css3-man/animation.html" target="_blank">http://www.optimum7.com/css3-man/animation.html</a><br />
<a href="http://hedgerwow.appspot.com/demo/flippage" target="_blank">http://hedgerwow.appspot.com/demo/flippage</a><br />
<a href="http://neography.com/journal/our-solar-system-in-css3/">http://neography.com/journal/our-solar-system-in-css3/</a><br />
<a href="http://css-tricks.com/examples/StarryNightCSS3/">http://css-tricks.com/examples/StarryNightCSS3/</a><br />
<a href="http://www.dmxzone.com/demo/dmxAnimator/effects/slide_out_menu.html">http://www.dmxzone.com/demo/dmxAnimator/effects/slide_out_menu.html</a></p>
<p><strong>css3 animation的入门应用：钟的实现</strong><br />
<a href="http://g-zone.org/test/g-clock/index.html" target="_blank">http://g-zone.org/test/g-clock/index.html</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://lingzuer.com/?feed=rss2&#038;p=116</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>北邮校长在2011届研究生毕业典礼上的讲话</title>
		<link>http://lingzuer.com/?p=112</link>
		<comments>http://lingzuer.com/?p=112#comments</comments>
		<pubDate>Thu, 31 Mar 2011 06:55:13 +0000</pubDate>
		<dc:creator>lingzuer</dc:creator>
				<category><![CDATA[资讯]]></category>

		<guid isPermaLink="false">http://lingzuer.com/?p=112</guid>
		<description><![CDATA[同学们，大家早上好！ 今天，我们如期所至地迎来了一年一度的庆贺研究生毕业盛典。当然，对你们来说这是人生中一个很重要的场景：这是一个独特的分别仪式，师生及同学间相互道别，校园里充满着惆怅与不舍；这是一个庄严的宣告仪式，被知识武装起来的你们即将踏入社会，每一个人都在憧憬着美好的未来！ 刚才，在校同学与老师分别向你们表达了祝福之情，你们也向学校表达了感激之意。现在，请允许我代表学校，向顺利完成学业的2011届近四百名博士生及两千一百名硕士生表示热烈的祝贺！向为你们的成长成才倾注心血和汗水的各位研究生导师、教职员...]]></description>
			<content:encoded><![CDATA[<p>同学们，大家早上好！</p>
<p>今天，我们如期所至地迎来了一年一度的庆贺研究生毕业盛典。当然，对你们来说这是人生中一个很重要的场景：这是一个独特的分别仪式，师生及同学间相互道别，校园里充满着惆怅与不舍；这是一个庄严的宣告仪式，被知识武装起来的你们即将踏入社会，每一个人都在憧憬着美好的未来！</p>
<p>刚才，在校同学与老师分别向你们表达了祝福之情，你们也向学校表达了感激之意。现在，请允许我代表学校，向顺利完成学业的2011届近四百名博士生及两千一百名硕士生表示热烈的祝贺！向为你们的成长成才倾注心血和汗水的各位研究生导师、教职员工表示诚挚的感谢！向全力支持同学们完成学业的各位家长和亲友们表示真诚的谢意！</p>
<p>在你们离校前的最后一次校长演讲中，我感到有非常多的话要说。我想再一次赞美你们在历次大型活动中的出色表现，尤其是在长达数月的北京奥运会和残运会的志愿者经历中，你们为国家赢得了尊严，为北京赢得了微笑，为北邮赢得了声誉，为自己赢得了信赖。我也想借此盘点一下你们留给母校的记忆：例如信通院夏璐等14名同学在研期间申请了16项发明专利；网研院郭少勇、杨新星等19名同学先后21次在全国研究生数学建模竞赛上为北邮赢得了名次。我还想嘱咐你们在今后的道路上，要继续树立远大的理想和高远的境界，修身，齐家，治国，平天下，把自己的成长成才，融入到国家的进步和民族的振兴之中，实现人生更大的价值。</p>
<p>但是，此时此刻我最想跟你们讲的主题是“爱国”，一是爱国之心，就是要用你们的聪明才智让国家更加强大；二是爱国之情，就是要像爱护眼球一样，维护社会的稳定。</p>
<p>首先说一下爱国之心。这两、三个月，世界上发生了一连串的大事。且不说突尼斯、埃及的政体变革，这毕竟是人家的内政；也不说日本的海啸灾害引发的核灾难，毕竟这几年我国也自然灾害频发。我要说的是利比亚，一个小小的国家发生着吸引世界眼球的大事。利比亚反对派发起了一个结果夹生了的反政府运动，面对晕头之后又强势起来的利比亚政府力量，世界列强终于露出了狰狞的嘴脸，他们派出了强大的武装力量，对最高统帅仅仅是上校的弱小军队实施了无情的打击（议论声）。当然，设立禁飞区是联合国授权了的，就是不准有未经联合国授权的飞机在空中飞行。但是，承担禁飞区任务的美法英联军并不这样理解禁飞区的概念，而是借用联合国的授权大肆轰炸利比亚的政府武装力量和军事设施。既然狂轰滥炸不是联合国的授权，我就不再称他们为联合国部队，而是根据出动飞机的情况姑且称之为美法英八国 联军，这不由地让我想起一百多年前中国就曾被英法八国联军践踏过；十年内阿富汗、伊拉克也被美英多国联军给祸害的远不如之前宁静。他们具有砸烂一个国家的强大力量，却没有表现出建设好这些国家的责任心。</p>
<p>我们大家都能看到，利比亚已经陷入到内战状态，美法英八国联军以保护平民不受伤害的名义协助一方去攻打另一方，反而让战火不断延续下去，恐怕得一直打到让一个合法政府彻底倒台为止，也可能会导致利比亚分裂成两个国家，或长期内战，总之都会遭致更多的生灵涂炭。这将是以保护平民之名开头，以更多平民死于战争之实结尾的又一典范。前南斯拉夫不也是在美英多国联军的连续78天的轰炸中解体了吗？</p>
<p>网上有人评价说，现在的世界，列强们先是鼓动别的国家内部自相残杀，然后再帮助这一方去杀另一方，最后可能再把不听话的这一方给除掉。不管怎么说，我们看到的是这样的结果：列强们的逻辑就是世界的逻辑，列强们的道理就是世界的道理。从媒体可以看到俄罗斯总理普京是这样评价这次战争的：“所有这一切都处在保护爱好和平的平民的伪装下。逻辑在哪里？良心在哪里？两样都没有！”“利比亚的情况表明，俄罗斯做出加强自己军力的决定是正确的。”我十分赞同这一观点。一个国家要是不想沦落成利比亚、伊拉克，就必须有强大的自卫实力。国家不强大，就会受欺辱。我们不称霸，但也决不能落到别人想怎么打你就怎么打你的地步！（长时间掌声、欢呼声）强大是需要实力的，这种实力集中体现在科技水平上。因此，报效祖国应该是你们各位的首选。希望你们既要拥有爱国的实力，又能用自己的实力托举起祖国的尊严与强盛！</p>
<p>其次说一下爱国之情。北非与中东的政局动乱，勾引出反华势力的极大期待。希拉里高调要向中国输出民主；美国驻华大使亲自到网络煽动集会的现场去“打酱油”（掌声笑声），恐怕是指望看见突尼斯场景的再现。境外民运分子更是不断利用互联网来煽动网民采取有计划、有步骤的行动以谋求中国政局的混乱，从而火中取栗。现在的问题是，到底是谁希望中国政局动荡，到底是谁希望中国陷入混乱的泥潭之中？</p>
<p>中国现在已经成为世界上第二大经济体了，这难道不算是成功吗？中国经济长期以来以世界上最快的速度增长，西方国家又是在以什么速度发展呢？大经济学家林毅夫教授预言中国的经济在2030年将赶上美国，这难道不是中国政策正确的标志吗？是谁希望我们停止经济发动机而陷入混乱之中？恐怕就是在经济上被我们追赶上或要追赶上的国家吧？假设两个人比武，一方如果完全效仿对方的招术，在战略上怎么可能超越对方？这就是中国在科技上难以超越西方国家的根本原因，因为我们总是亦步亦趋地在科技大国的后面进行研究，缺乏战略创新、行业引领的动力。因此，在相互对抗中，弱方只有运用与对方不同的战法才有机会超越对手。中国的经济状况已经表明中国的制度是成功的，是有利于经济发展的，凭什么我们一定要改换成西方的方式呢？</p>
<p>再说说境外的民运分子。他们轻松地坐在家里，一心想的就是如何仅凭手指敲着键盘，就利用互联网的放大效应来搞乱中国。这就如同网络攻击中的反射式拒绝服务攻击一样，凭借的是网络的倍增效应来攻击目标（议论声）。他们所煽动的集会是要达到什么目的？真的是要诉求个人利益吗？显然不是，因为没有这么多人的个人情况是相同的。我支持个人利益诉求，这也是我公开我的邮箱的原因。我欢迎所有师生直接向我反映问题，因为有问题就应该谋求解决，至少我可以答复什么原因解决不了什么样的问题。但是，不同利益诉求的人聚集在一起会有什么样的共同语言？唯一的共同点就是将个人利益诉求演变成政治利益的诉求。问题是这样就能解决个人利益的诉求吗？最后还不是沦落成境外这些职业政客们的工具？他们不就是指望着享受国外的生活、让公众成为傀儡、然后坐收渔利吗？难道他们回国来主政就能够把中国的经济搞得更好吗？事实上，中国被西方世界所敌视绝不仅仅是意识形态的问题，而是中国在世界上地位日益上升所引发的问题。俄罗斯的政体倒是转换到西方的模式上去了，不是照样被西方世界所敌视吗？</p>
<p>一个国家的政体就如同一座大厦，难道仅仅因为水龙头修不好就要把整幢楼拆除吗？要知道拆掉一幢楼而去重新建设新楼其代价是极其高昂和惨烈的（议论声）。利比亚正在给我们示范着这样的结局，已经有三十余万人逃离了这个国家。既然我们要继续住在这个大厦里，我们就决不能允许任何人对这座大厦进行破坏！因此，爱国就是要爱护我们赖以生存的家园，抵制造谣蛊惑者让中国社会动乱的任何企图。抢盐事件已经给我们以这样的启示：如果大家都能抵制那些谣言与煽动、看透这些蛊惑背后的阴谋与险恶的嘴脸，社会才能够保持稳定。因此，真正的爱国之情就是要像保护自己眼球一样来维护社会的稳定。</p>
<p>同学们，无论你们今后走到哪里、工作在什么岗位，都要一如既往地秉承“厚德、博学，敬业、乐群”的校训，弘扬“团结、勤奋、严谨、创新”的校风，你们所取得的每一项成绩，都是对祖国、对母校最好的支持与回报！我衷心祝愿每一位同学：常怀爱国之心，常抒爱国之情！健康快乐，前程似锦，鹏程万里！</p>
<p>谢谢大家！（来源：北京邮电大学）</p>
]]></content:encoded>
			<wfw:commentRss>http://lingzuer.com/?feed=rss2&#038;p=112</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>css-tricks.com</title>
		<link>http://lingzuer.com/?p=107</link>
		<comments>http://lingzuer.com/?p=107#comments</comments>
		<pubDate>Wed, 30 Mar 2011 04:12:39 +0000</pubDate>
		<dc:creator>lingzuer</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://lingzuer.com/?p=107</guid>
		<description><![CDATA[A web design community.]]></description>
			<content:encoded><![CDATA[<p>A web design community.</p>
]]></content:encoded>
			<wfw:commentRss>http://lingzuer.com/?feed=rss2&#038;p=107</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
