<?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>Aether &#187; 技术</title>
	<atom:link href="http://woooh.com/archives/category/%e6%8a%80%e6%9c%af/feed" rel="self" type="application/rss+xml" />
	<link>http://woooh.com</link>
	<description>My Life</description>
	<lastBuildDate>Sun, 29 Aug 2010 17:16:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>用Xslimmer给Mac OS瘦身</title>
		<link>http://woooh.com/archives/955.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%e7%94%a8xslimmer%e7%bb%99mac-os%e7%98%a6%e8%ba%ab</link>
		<comments>http://woooh.com/archives/955.html#comments</comments>
		<pubDate>Sun, 20 Dec 2009 14:15:43 +0000</pubDate>
		<dc:creator>Aether</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[App]]></category>

		<guid isPermaLink="false">http://woooh.com/?p=955</guid>
		<description><![CDATA[通过删除多余的语言支持或者对PowerPC的支持来瘦身，效果果然很可观……扫描了6G的程序以后，清理了2G的无效文件出去……难怪Mac的程序品质虽然卓绝，但是个个身材都比想象中庞大。 随便选几个离谱的例子： iPhone 410M -&#62; 285M Flash CS4 404M -&#62;221M Adobe illustrator 328M -&#62; 190M Photoshhop CS4 259M -&#62; 144M iMovie 244M -&#62;123M iDVD 127M -&#62; 50M iTunes 155M -&#62; 45.6M Aduim 98.6 -&#62; 35M Safari 43M -&#62; 12M]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="http://grab.by/1iUJ" alt="" width="479" height="611" /></p>
<p>通过删除多余的语言支持或者对PowerPC的支持来瘦身，效果果然很可观……扫描了6G的程序以后，清理了2G的无效文件出去……难怪Mac的程序品质虽然卓绝，但是个个身材都比想象中庞大。</p>
<p>随便选几个离谱的例子：</p>
<ul>
<li>iPhone 410M -&gt; 285M</li>
<li>Flash CS4 404M -&gt;221M</li>
<li>Adobe illustrator 328M -&gt; 190M</li>
<li>Photoshhop CS4 259M -&gt; 144M</li>
<li>iMovie 244M -&gt;123M</li>
<li>iDVD 127M -&gt; 50M</li>
<li>iTunes 155M -&gt; 45.6M</li>
<li>Aduim 98.6 -&gt; 35M</li>
<li>Safari 43M -&gt; 12M</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://woooh.com/archives/955.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>关于Chrome OS和前端</title>
		<link>http://woooh.com/archives/928.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=fontend_and_chrome</link>
		<comments>http://woooh.com/archives/928.html#comments</comments>
		<pubDate>Sat, 12 Dec 2009 17:53:55 +0000</pubDate>
		<dc:creator>Aether</dc:creator>
				<category><![CDATA[互联网]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[评论]]></category>
		<category><![CDATA[Front-End]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[前端]]></category>

		<guid isPermaLink="false">http://woooh.com/?p=928</guid>
		<description><![CDATA[互联网，转眼间三十年了。 中国互联网，转眼间十多年了。 网页标准，转眼间五年多了。 虽然不断有新人还在困惑于标准、团队协作、浏览器兼容性和Hack、样式表架构等各种问题，以及Javascript的各种类库。但对于我来说，该成熟部分在过去几年已经基本成熟了，自从YUI、YSlow、jQuery这些框架出现以来，已经很久没有让我感觉到时代在推进的东西产生。土豆根据《网站性能》一书完成静态文件的版本化，已经是两年前就完成的事情。 只有一个是值得注意的，就是Chrome和Chrome OS。 从广泛认可的观点，Google对于浏览器在过去几年的发展是非常不满意的——不管是IE、Firefox还是Opera，所以它要自己出来作这件事情，把未来的平台打造到足够强大。 足够快，几乎感觉不到启动的速度，互联网入口就准备完毕可以输入网址。Firefox会感觉到明显的加载时间，而IE，直到IE8我都搞不明白，为啥我启动以后在地址栏里面输入网址以后，还会忽然闪一下，结果把我已经输入内容的地址栏给清空了。 性能足够强大，Chrome一开始对Javascript性能的强劲提升就体现出来，只有足够强大的引擎才可以让Javascript作为一种语言计算出更为复杂的结果。 这是关键的两点，而Chrome OS的进一步封装则给与大家对于前端更加广泛的想象——一个足够广泛的平台，足够强大（至少远远超过IE和Firefox），清晰地把前端和后端一分为二。 只有在这样的平台上，前端才会更有作为，才会有更多的事情可以做。]]></description>
			<content:encoded><![CDATA[<p>互联网，转眼间三十年了。<br />
中国互联网，转眼间十多年了。<br />
网页标准，转眼间五年多了。</p>
<p>虽然不断有新人还在困惑于标准、团队协作、浏览器兼容性和Hack、样式表架构等各种问题，以及Javascript的各种类库。但对于我来说，该成熟部分在过去几年已经基本成熟了，自从YUI、YSlow、jQuery这些框架出现以来，已经很久没有让我感觉到时代在推进的东西产生。土豆根据《网站性能》一书完成静态文件的版本化，已经是两年前就完成的事情。</p>
<p>只有一个是值得注意的，就是Chrome和Chrome OS。</p>
<p>从广泛认可的观点，Google对于浏览器在过去几年的发展是非常不满意的——不管是IE、Firefox还是Opera，所以它要自己出来作这件事情，把未来的平台打造到足够强大。</p>
<p>足够快，几乎感觉不到启动的速度，互联网入口就准备完毕可以输入网址。Firefox会感觉到明显的加载时间，而IE，直到IE8我都搞不明白，为啥我启动以后在地址栏里面输入网址以后，还会忽然闪一下，结果把我已经输入内容的地址栏给清空了。</p>
<p>性能足够强大，Chrome一开始对Javascript性能的强劲提升就体现出来，只有足够强大的引擎才可以让Javascript作为一种语言计算出更为复杂的结果。</p>
<p>这是关键的两点，而Chrome OS的进一步封装则给与大家对于前端更加广泛的想象——一个足够广泛的平台，足够强大（至少远远超过IE和Firefox），清晰地把前端和后端一分为二。</p>
<p>只有在这样的平台上，前端才会更有作为，才会有更多的事情可以做。</p>
]]></content:encoded>
			<wfw:commentRss>http://woooh.com/archives/928.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>美丽而优雅的文字</title>
		<link>http://woooh.com/archives/922.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=beautifull_font</link>
		<comments>http://woooh.com/archives/922.html#comments</comments>
		<pubDate>Mon, 23 Nov 2009 06:24:26 +0000</pubDate>
		<dc:creator>Aether</dc:creator>
				<category><![CDATA[互联网]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[评论]]></category>
		<category><![CDATA[Font]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[OS]]></category>

		<guid isPermaLink="false">http://woooh.com/?p=922</guid>
		<description><![CDATA[Old9同学在我的主题《用插件打造如Safari般优美的Firefox》下质疑到： mac下的中文不也蛮好看么？ 我明白这句话的意思，这句话是说，在Mac OS下，中文的显示要比在Windows和很多Linux下面好看多了。这一点我完全没有异议。 可能是我的说法有所缺漏，我的原话是： 中文要显示成这样，需要等Great Firewall倒掉以后再过个十几年吧，如果那之后我们的运气还够好的话。 我在敲这句话的时候，有很多临时闪现的思维因为和正文无关，我已经尽力克制自己，以便关注在主题上。但在本文，我可以专门讨论一下自己的观点。 我认为，一个文明的灵魂之一是它的文字，因为文字承载了思想，而只有尊重自己，尊重自己的文字并且富有余力加以艺术创作的文明才是富有生机的，而我们现在所做的甚至是一贯扼杀自己的文字——你知道我在说什么——我们自己都做不到尊重，怎么可能谈更多呢。 我在网上随手搜索到了一张来自唐代的文字碑拓： 透过这些一千多年以前的文字，我能看到一个连贯的整体思维和美感。我可以随手搜索到更多今人的作品，随便怎么看，大多只能一个一个字体的拼凑罢了，你看不到那种从形态上就直达灵魂交互的美感，每一个字都透着态度，透着思想的力度。 所幸的是，文字所承载的思维传达能力本身还在，所以就算是再难看的字体，我们读懂还是没有问题的。 题外话 就算是后一点，其实已经差距很大，数百年以来，国人自己也知道书不读三秦以下，因为那以后那么多的古迹资料，没有几本是可以像《史记》的文字那样凝练优美，寥寥数笔就勾画出李斯面对仓库老鼠的那种怆然姿态仿佛直面真人，或者如《吕氏春秋》那样精确到可以改一字赏千金。 按照现在的汇率计算，每克250元，每斤折合当代度量250克，一千斤约合眼下RMB62500000，也就是六千两百五十万，按照吕相国、仲父、首富当日的财富和权势可能外带一些威压，他是可以干得出来的。 在我的Google Reader里，有不少来源放在值得一读中，有很多都放在娱乐八卦（含各种新闻）以及有趣的分类，技术和摄影有专类，但有一个分类叫做“说话清爽的”，很可惜，自从这个分类创建以来到现在，只有韩寒在里面。 斯蒂夫·乔布斯在创造当代电脑字体的时候明显没有考虑过中文，而只包括拉丁语系的字母，我们对此不可能有丝毫的抗议或者异议，因为这本来就应该是国人自己的事。而且就算乔布斯对中国没有偏见，而且有心想帮一把，然而字体需要有对本国文化深刻的理解，除了技术以外需要太多太多的东西。 再反过来，抛开文字的形式美感所透露出来的底蕴不论，中文字体或在技术上稍有难度，但是我看到很多以此为借口的开脱——我觉得这些理由都是扯淡的，因为从技术上来说，这不可能比发射神州飞船或者建造三峡大坝更难。 我自认在技术和文化上都力不如人，所以只能期待着那个带着好运的奇迹发生。]]></description>
			<content:encoded><![CDATA[<p>Old9同学在我的主题《<a href="http://woooh.com/2009/11/firefox_addons_as_safari.html" target="_blank">用插件打造如Safari般优美的Firefox</a>》下质疑到：</p>
<blockquote><p>mac下的中文不也蛮好看么？</p></blockquote>
<p>我明白这句话的意思，这句话是说，在Mac OS下，中文的显示要比在Windows和很多Linux下面好看多了。这一点我完全没有异议。</p>
<p>可能是我的说法有所缺漏，我的原话是：</p>
<blockquote><p>中文要显示成这样，需要等Great Firewall倒掉以后再过个十几年吧，如果那之后我们的运气还够好的话。</p></blockquote>
<p>我在敲这句话的时候，有很多临时闪现的思维因为和正文无关，我已经尽力克制自己，以便关注在主题上。但在本文，我可以专门讨论一下自己的观点。</p>
<p>我认为，一个文明的灵魂之一是它的文字，因为文字承载了思想，而只有<strong>尊重自己</strong>，<strong>尊重自己的文字</strong>并且<strong>富有余力加以艺术创作</strong>的文明才是富有生机的，而我们现在所做的甚至是一贯扼杀自己的文字——你知道我在说什么——我们自己都做不到尊重，怎么可能谈更多呢。</p>
<p>我在网上随手搜索到了一张来自唐代的文字碑拓：</p>
<p><img class="alignnone" src="http://images.joyo.com/c/c709221.jpg" alt="" width="302" height="500" /></p>
<p>透过这些一千多年以前的文字，我能看到一个连贯的整体思维和美感。我可以随手搜索到更多今人的作品，随便怎么看，大多只能一个一个字体的拼凑罢了，你看不到那种从形态上就直达灵魂交互的美感，每一个字都透着态度，透着思想的力度。</p>
<p>所幸的是，文字所承载的思维传达能力本身还在，所以就算是再难看的字体，我们读懂还是没有问题的。</p>
<blockquote><p>题外话</p>
<p>就算是后一点，其实已经差距很大，数百年以来，国人自己也知道书不读三秦以下，因为那以后那么多的古迹资料，没有几本是可以像《史记》的文字那样凝练优美，寥寥数笔就勾画出李斯面对仓库老鼠的那种怆然姿态仿佛直面真人，或者如《吕氏春秋》那样精确到可以改一字赏千金。</p>
<p>按照现在的汇率计算，每克250元，每斤折合当代度量250克，一千斤约合眼下RMB62500000，也就是六千两百五十万，按照吕相国、仲父、首富当日的财富和权势可能外带一些威压，他是可以干得出来的。</p>
<p>在我的Google Reader里，有不少来源放在值得一读中，有很多都放在娱乐八卦（含各种新闻）以及有趣的分类，技术和摄影有专类，但有一个分类叫做“说话清爽的”，很可惜，自从这个分类创建以来到现在，只有韩寒在里面。</p></blockquote>
<p>斯蒂夫·乔布斯在创造当代电脑字体的时候明显没有考虑过中文，而只包括拉丁语系的字母，我们对此不可能有丝毫的抗议或者异议，因为这本来就应该是国人自己的事。而且就算乔布斯对中国没有偏见，而且有心想帮一把，然而字体需要有对本国文化深刻的理解，除了技术以外需要太多太多的东西。</p>
<p>再反过来，抛开文字的形式美感所透露出来的底蕴不论，中文字体或在技术上稍有难度，但是我看到很多以此为借口的开脱——我觉得这些理由都是扯淡的，因为从技术上来说，这不可能比发射神州飞船或者建造三峡大坝更难。</p>
<p>我自认在技术和文化上都力不如人，所以只能期待着那个带着好运的奇迹发生。</p>
]]></content:encoded>
			<wfw:commentRss>http://woooh.com/archives/922.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>恢复Firefox的地址栏搜索</title>
		<link>http://woooh.com/archives/917.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=firefox_urlbar_search</link>
		<comments>http://woooh.com/archives/917.html#comments</comments>
		<pubDate>Sun, 22 Nov 2009 19:43:21 +0000</pubDate>
		<dc:creator>Aether</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Search]]></category>

		<guid isPermaLink="false">http://woooh.com/?p=917</guid>
		<description><![CDATA[本来Firefox的地址栏是可以像Chrome那样，输入的不是域名就直接转向搜索的。结果忘了啥时开始就用不了了，老变成一堆乱码。今天特意搜索了一把，找到原因。 http://it.oyksoft.com/firefox-keywordsearch-disableIDN/ 众所周知，FireFox在地址栏直接输入中文便可进行搜索，但有时候由于DNS解析方面的原因，输入中文后回车后就会显示http://xn--8ss/ 这类的东西，而显示的页面为空白。这时怎么办呢？ 解决方法： 在地址中输入about:config进行，“保证会小心”，然后搜索 network.enableIDN 双击，使值变为False即可。 这个选项的意思是： network.enableIDN * Enable Internationalized Domain Names开启国际化域名解析 国际化域名，也就是即将轰轰烈烈上演的中文域名或者日文、韩文等等非英文域名，现在IE7、8已经可以输入中文域名到达网站了，所以火狐也是要支持的，因此 你在输入中文字符时，它会进行IDN解析。个人感觉非英文域名实在是没什么前途的，相反还会降低搜索速度，带来上面这些问题。因此，就将此功能关闭。目前 来讲，不会有任何影响。 about:config后，设置keyword.url 。 用Google设置为：http://www.google.cn/search?q= 至于中文域名，就像原作者的理解一样，我想不出可以给我带来任何的好处，反而我可以立刻想象到无数的坏处，更何况阻断了我使用Google的快捷方式，这种恶意的设置怎么可以存在在我的电脑里！当然要立刻关掉。 现在我可以进一步删掉Firefox工具栏上那个多余的搜索框了。]]></description>
			<content:encoded><![CDATA[<p>本来Firefox的地址栏是可以像Chrome那样，输入的不是域名就直接转向搜索的。结果忘了啥时开始就用不了了，老变成一堆乱码。今天特意搜索了一把，找到原因。</p>
<p><a href="http://it.oyksoft.com/firefox-keywordsearch-disableIDN/" target="_blank">http://it.oyksoft.com/firefox-keywordsearch-disableIDN/</a></p>
<blockquote><p>众所周知，FireFox在地址栏直接输入中文便可进行搜索，但有时候由于DNS解析方面的原因，输入中文后回车后就会显示<a href="http://xn--8ss/" target="_blank">http://xn--8ss/</a> 这类的东西，而显示的页面为空白。这时怎么办呢？<a name="entrymore"></a></p>
<p>解决方法：<br />
在地址中输入about:config进行，“保证会小心”，然后搜索<br />
network.enableIDN<br />
双击，使值变为False即可。</p>
<p>这个选项的意思是：<br />
network.enableIDN * Enable Internationalized Domain Names开启国际化域名解析<br />
国际化域名，也就是即将轰轰烈烈上演的中文域名或者日文、韩文等等非英文域名，现在IE7、8已经可以输入中文域名到达网站了，所以火狐也是要支持的，因此 你在输入中文字符时，它会进行IDN解析。个人感觉非英文域名实在是没什么前途的，相反还会降低搜索速度，带来上面这些问题。因此，就将此功能关闭。目前 来讲，不会有任何影响。</p>
<p>about:config后，设置keyword.url 。<br />
用Google设置为：<a href="http://www.google.cn/search?q=" target="_blank">http://www.google.cn/search?q=</a></p></blockquote>
<p>至于中文域名，就像原作者的理解一样，我想不出可以给我带来任何的好处，反而我可以立刻想象到无数的坏处，更何况阻断了我使用Google的快捷方式，这种恶意的设置怎么可以存在在我的电脑里！当然要立刻关掉。</p>
<p>现在我可以进一步删掉Firefox工具栏上那个多余的搜索框了。</p>
]]></content:encoded>
			<wfw:commentRss>http://woooh.com/archives/917.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>用插件打造如Safari般优美的Firefox</title>
		<link>http://woooh.com/archives/910.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=firefox_addons_as_safari</link>
		<comments>http://woooh.com/archives/910.html#comments</comments>
		<pubDate>Sun, 22 Nov 2009 19:06:34 +0000</pubDate>
		<dc:creator>Aether</dc:creator>
				<category><![CDATA[互联网]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[Addons]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Safari]]></category>

		<guid isPermaLink="false">http://woooh.com/?p=910</guid>
		<description><![CDATA[就因为Foxporxy可以非常方便地驾驭代理的使用，就因为这一个理由我就抛弃了优美、优雅、体贴的Safari。但是被Safari那些窝心小功能宠坏以后，每次用到IE和Firefox类似的地方我都会有噩梦般那种黏黏呼呼不清不楚的感受。 这里和大家分享一些我为了找回这些功能所使用的Firefox插件——感觉好多了。 1、Go to Selection 我们经常会遇到没有加链接的网址，或者因为没有http://的前缀，页面没有自动转换出一个链接，每次都需要“选中-&#62;复制-&#62;粘贴到地址栏-&#62;回车”，Safari自带的窝心功能会自动判断所选部分是否是一个网址（哪怕是没有协议前缀），右键点开的时候就可以轻轻一点，在新的窗口或者标签中打开，这个插件就是模拟了这个功能。 处于简洁性考虑，我在首选项中设置了它和Safari的行为保持一模一样：只在后台开一个新标签。唯一的缺点是，它没有先自动判断我所选择的文字是否是适合在地址栏里面打开的网址，这导致如果我只是选择了一段文字打算右键Google，我的右键菜单里会多出来一个永久性的无意义选项，就像IE和Firefox一贯做的那样，算是还可以忍受的小瑕疵吧。 2、Open Image In New Tab Firefox自带了复制图片链接这个功能，这很好，要知道IE8（可能包括IE9）都不支持这一点。（在IE上面想要知道一个图片的网址是一件非常痛苦的事情，需要在图片上点右键，点击属性，然后通过拖拉选择图片的全部网址，必要的时候需要在选择部分URL的情况下用Ctrol+A全选，然后右键选择复制或者按Ctrol+C复制） 不过还有一种普遍的情况是我其实并不想知道图片的URL，只是想把一个被网页强制缩小限制，并且没有给出全图链接的图片放大，这时Safari会提供一个Open Image In New Tab的功能。这个插件的行为和它一模一样，我经常用。 3、Save File to IE和Firefox的右键菜单里都有链接和图片另存为功能，但Safari默认多提供了一个窝心的功能——为啥每次我都要选择一次我存在哪里呢？这样每次都会产生多一次的点击。所以Safari有Save to dowloads或者Save Image to downloads（如果右键点击到一个图片），这是只需要轻轻一点，下载目标就是自动进入这个目录，完全不干扰我对当前页面的浏览，没有弹出框，不会让人愣一下，然后判断一下，点击确定或者取消…… 如果是中文的Firefox，这个插件的优点之一是会自动本地化，另外它可以进入所设置目录的下级目录——看上去很贴心？huh？很明显，插件的作者并没有完全理解“少就是多”的意思，我最终还是需要付出比Safari多等待一个菜单展开的时间，多少浪费了操作者宝贵的时间。 还需要在Firefox首选项设置里面关闭下载窗口自动弹出，让它在后台静静完成。有需要的时候我自然会打开下载窗口看看进度的，不需要打扰我当前的浏览。 4、Look up in Dictionary 这个插件可能是Mac OS用户专用的，当你在Safari下面遇到不认识的单词，可以轻轻双击然后右键打开Mac OS自带的强大词典，如图（实际使用中可以设定优先读取英译中词典还是直接取英译词典，考虑到翻译的精确性，我一般都选后者，因为我发现经常我查中文词典以后还是一头雾水，无法理解作者的意图，但是英文翻译终于可以一目了然的清爽和精确）： 很可惜的是，在Firefox的页面中内嵌支持的插件还没有，所以只有一个勉强一用聊胜于无的插件，可以选中以后通过右键直接打开Dictionary程序本身，因为Dictionary不是常驻程序，所以多少会耽误一些启动所等待的时间。 我不喜欢其他的字典程序，不管是所收录的词典，程序的轻量和简洁来说，没有其他程序可以比得过Mac OS原生的Dictionary。一个更细微的理由包括，这才是数千年以来人类所积累的经验之一——专供人类的眼睛阅读文字时所使用的字体： 中文要显示成这样，需要等Great Firewall倒掉以后再过个十几年吧，如果那之后我们的运气还够好的话。 5、Menu Editor 作为一个接近完美主义者一直打心里喜欢的东西，通常在装了一大堆插件以后，你本来就臃肿的右键菜单简直就像是杂烩市场，这个插件可以把不喜欢的和用不上的统统干掉。 发送邮件？查看页面属性？打印目标？设置为背景？——太搞笑了。看看我个人的实例图吧，多少的垃圾在里面。有些是放了按钮在Firefox的Toolbar工具栏上（例如截取整个网页成图片的Pearl Page Saver），有些已经放在底部的状态栏的（例如Foxproxy和firebug），我为什么要那么多东西在我的右键里呢？我只需要我需要的东西在那里！给我唯一的入口和路径就行了！ 在这里，至少可以把“链接另存为&#8230;”和“图片另存为&#8230;”这两个带有省略号表示有后续操作的右键菜单选项彻底拿掉了。 6、GrApple Yummy 最后一个不算是插件，而是为Mac OS上的Firefox用户特制的界面主题，安装以后视觉效果大约接近Safari 90％的优雅程度。 其他的一些插件例如Access Flickr、Video [...]]]></description>
			<content:encoded><![CDATA[<p>就因为Foxporxy可以非常方便地驾驭代理的使用，就因为这一个理由我就抛弃了优美、优雅、体贴的Safari。但是被Safari那些窝心小功能宠坏以后，每次用到IE和Firefox类似的地方我都会有噩梦般那种黏黏呼呼不清不楚的感受。</p>
<p>这里和大家分享一些我为了找回这些功能所使用的Firefox插件——感觉好多了。</p>
<p>1、<a href="http://www.tillwiebke.de/tools/gts/index_en.html" target="_blank">Go to Selection</a></p>
<p><img class="alignnone" src="http://www.tillwiebke.de/tools/gts/screenshot_menu2.png" alt="" width="493" height="197" /></p>
<p>我们经常会遇到没有加链接的网址，或者因为没有http://的前缀，页面没有自动转换出一个链接，每次都需要“选中-&gt;复制-&gt;粘贴到地址栏-&gt;回车”，Safari自带的窝心功能会自动判断所选部分是否是一个网址（哪怕是没有协议前缀），右键点开的时候就可以轻轻一点，在新的窗口或者标签中打开，这个插件就是模拟了这个功能。</p>
<p>处于简洁性考虑，我在首选项中设置了它和Safari的行为保持一模一样：只在后台开一个新标签。唯一的缺点是，它没有先自动判断我所选择的文字是否是适合在地址栏里面打开的网址，这导致如果我只是选择了一段文字打算右键Google，我的右键菜单里会多出来一个永久性的无意义选项，就像IE和Firefox一贯做的那样，算是还可以忍受的小瑕疵吧。</p>
<p>2、<a href="https://addons.mozilla.org/zh-CN/firefox/addon/2248" target="_blank">Open Image In New Tab</a></p>
<p><img class="alignnone" src="http://addons.mozilla.org/en-US/firefox/images/t/15180/1184383751" alt="" width="160" height="110" /></p>
<p>Firefox自带了复制图片链接这个功能，这很好，要知道IE8（可能包括IE9）都不支持这一点。（<span style="color: #808080;">在IE上面想要知道一个图片的网址是一件非常痛苦的事情，需要在图片上点右键，点击属性，然后通过拖拉选择图片的全部网址，必要的时候需要在选择部分URL的情况下用Ctrol+A全选，然后右键选择复制或者按Ctrol+C复制</span>）</p>
<p>不过还有一种普遍的情况是我其实并不想知道图片的URL，只是想把一个被网页强制缩小限制，并且没有给出全图链接的图片放大，这时Safari会提供一个Open Image In New Tab的功能。这个插件的行为和它一模一样，我经常用。</p>
<p>3、<a href="https://addons.mozilla.org/zh-CN/firefox/addon/4902" target="_blank">Save File to</a></p>
<p><img class="alignnone" src="https://addons.mozilla.org/en-US/firefox/images/p/15802/1187163012" alt="" width="463" height="355" /></p>
<p>IE和Firefox的右键菜单里都有链接和图片另存为功能，但Safari默认多提供了一个窝心的功能——为啥每次我都要选择一次我存在哪里呢？这样每次都会产生多一次的点击。所以Safari有Save to dowloads或者Save Image to downloads（如果右键点击到一个图片），这是只需要轻轻一点，下载目标就是自动进入这个目录，完全不干扰我对当前页面的浏览，没有弹出框，不会让人愣一下，然后判断一下，点击确定或者取消……</p>
<p>如果是中文的Firefox，这个插件的优点之一是会自动本地化，另外它可以进入所设置目录的下级目录——看上去很贴心？huh？很明显，插件的作者并没有完全理解“少就是多”的意思，我最终还是需要付出比Safari多等待一个菜单展开的时间，多少浪费了操作者宝贵的时间。</p>
<p>还需要在Firefox首选项设置里面关闭下载窗口自动弹出，让它在后台静静完成。有需要的时候我自然会打开下载窗口看看进度的，不需要打扰我当前的浏览。</p>
<p><img class="alignnone" src="http://grab.by/JA7" alt="" width="202" height="87" /></p>
<p>4、<a href="https://addons.mozilla.org/zh-CN/firefox/addon/7261" target="_blank">Look up in Dictionary</a></p>
<p>这个插件可能是Mac OS用户专用的，当你在Safari下面遇到不认识的单词，可以轻轻双击然后右键打开Mac OS自带的强大词典，如图（<span style="color: #808080;">实际使用中可以设定优先读取英译中词典还是直接取英译词典，考虑到翻译的精确性，我一般都选后者，因为我发现经常我查中文词典以后还是一头雾水，无法理解作者的意图，但是英文翻译终于可以一目了然的清爽和精确</span>）：</p>
<p><img class="alignnone" src="http://grab.by/JyC" alt="" width="337" height="292" /></p>
<p>很可惜的是，在Firefox的页面中内嵌支持的插件还没有，所以只有一个勉强一用聊胜于无的插件，可以选中以后通过右键直接打开Dictionary程序本身，因为Dictionary不是常驻程序，所以多少会耽误一些启动所等待的时间。</p>
<p>我不喜欢其他的字典程序，不管是所收录的词典，程序的轻量和简洁来说，没有其他程序可以比得过Mac OS原生的Dictionary。一个更细微的理由包括，这才是数千年以来人类所积累的经验之一——专供人类的眼睛阅读文字时所使用的字体：</p>
<p><img class="alignnone" src="http://grab.by/Jz6" alt="" width="472" height="417" /></p>
<p>中文要显示成这样，需要等Great Firewall倒掉以后再过个十几年吧，如果那之后我们的运气还够好的话。</p>
<p>5、<a href="https://addons.mozilla.org/zh-CN/firefox/addon/710" target="_blank">Menu Editor</a></p>
<p><img class="alignnone" src="http://grab.by/JxT" alt="" /></p>
<p>作为一个接近完美主义者一直打心里喜欢的东西，通常在装了一大堆插件以后，你本来就臃肿的右键菜单简直就像是杂烩市场，这个插件可以把不喜欢的和用不上的统统干掉。</p>
<p>发送邮件？查看页面属性？打印目标？设置为背景？——太搞笑了。看看我个人的实例图吧，多少的垃圾在里面。有些是放了按钮在Firefox的Toolbar工具栏上（例如截取整个网页成图片的Pearl Page Saver），有些已经放在底部的状态栏的（例如Foxproxy和firebug），我为什么要那么多东西在我的右键里呢？我只需要我需要的东西在那里！给我唯一的入口和路径就行了！</p>
<p>在这里，至少可以把“链接另存为&#8230;”和“图片另存为&#8230;”这两个带有省略号表示有后续操作的右键菜单选项彻底拿掉了。</p>
<p>6、<a href="https://addons.mozilla.org/zh-CN/firefox/addon/6703" target="_blank">GrApple Yummy</a></p>
<p><img class="alignnone" src="http://addons.mozilla.org/en-US/firefox/images/t/20791/1245880641" alt="" width="180" height="135" /></p>
<p>最后一个不算是插件，而是为Mac OS上的Firefox用户特制的界面主题，安装以后视觉效果大约接近Safari 90％的优雅程度。</p>
<p>其他的一些插件例如Access Flickr、Video Download Helper、Foxyproxy、Firebug都是大家常见到耳熟能详的插件，这里就不多啰嗦了。</p>
]]></content:encoded>
			<wfw:commentRss>http://woooh.com/archives/910.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>土豆网用户的浏览器使用情况</title>
		<link>http://woooh.com/archives/653.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%e5%9c%9f%e8%b1%86%e7%bd%91%e7%94%a8%e6%88%b7%e7%9a%84%e6%b5%8f%e8%a7%88%e5%99%a8%e4%bd%bf%e7%94%a8%e6%83%85%e5%86%b5-%e7%8a%b6%e5%86%b5</link>
		<comments>http://woooh.com/archives/653.html#comments</comments>
		<pubDate>Thu, 16 Jul 2009 15:28:32 +0000</pubDate>
		<dc:creator>Aether</dc:creator>
				<category><![CDATA[土豆网]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[前端]]></category>
		<category><![CDATA[浏览器]]></category>

		<guid isPermaLink="false">http://woooh.com/?p=653</guid>
		<description><![CDATA[最大的是IE6，72%，IE7占了17%，TT占了5%，具体版本不明，IE8占了2%。这加起来已经96%了。 Firefox，占有3%的份额，从以前的2%提升了已经不少了，剩下的Maxthon、Safari、MyIE、IE4、IE5、Navigator加起来1%。 掐指算算时间。]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-654" title="图片" src="http://woooh.com/wp-content/uploads/图片-11.png" alt="图片" width="417" height="299" /></p>
<p>最大的是IE6，72%，IE7占了17%，TT占了5%，具体版本不明，IE8占了2%。这加起来已经96%了。</p>
<p>Firefox，占有3%的份额，从以前的2%提升了已经不少了，剩下的Maxthon、Safari、MyIE、IE4、IE5、Navigator加起来1%。</p>
<p>掐指算算时间。</p>
]]></content:encoded>
			<wfw:commentRss>http://woooh.com/archives/653.html/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>更换北桥散热片</title>
		<link>http://woooh.com/archives/546.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%e6%9b%b4%e6%8d%a2%e5%8c%97%e6%a1%a5%e6%95%a3%e7%83%ad%e7%89%87</link>
		<comments>http://woooh.com/archives/546.html#comments</comments>
		<pubDate>Sun, 21 Jun 2009 17:09:47 +0000</pubDate>
		<dc:creator>Aether</dc:creator>
				<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://woooh.com/?p=546</guid>
		<description><![CDATA[去年10月份，入手了差不多作为给自己作为生日礼物的PC台式机，24寸的三星显示器配上蓝宝石HD4850毒药版本的显卡，AMD64 5200+的CPU、4G的内存以及1T的硬盘，这是我有生以来用过性能最好的PC配置，也是接触电脑以来几乎是头一次可以开启所有游戏的最高特效——告别了极品飞车诞生以来，令人神魂颠倒的效果就一直仅仅停留在报纸杂志上的时代。 不过唯一的问题在于主板，在CPU和显卡的压迫下过热非常迅速，冬天还好，从春天开始，经常一个游戏十多分就把主板烧到100度然后就自动关机……夏天更是不堪，以至于所有大型游戏进度都陷入停顿。经过刚飞到上海的硬件专家Archey同学分析确认以后，入手一款“九州风神 冰桥9”的北桥散热器，新蛋订货，当天晚上出货，第二天中午送到（辛苦大热天还戴着手套东奔西走的大叔）。 于是立刻装上（图中像是塔一样的那个……）。途中发现我可爱的蓝宝石显卡的风扇上积存了厚厚的一层灰（我的天哪），于是顺便做了清扫，HH同学还细心的清扫了CPU风扇和机箱电源风扇上的灰尘。看来以后需要每半年都清扫一次了。 开机跑了最容易导致死机的《波斯王子4》，一个多小时过去，手摸摸散热片，几乎是没有温度，嗅探器提示主板温度恒定在75摄氏度左右，终于搞定。辛苦Archey、HH和Rudder三位同学的支持：）]]></description>
			<content:encoded><![CDATA[<p>去年10月份，入手了差不多作为给自己作为生日礼物的PC台式机，24寸的三星显示器配上<a href="http://www.newegg.com.cn/Products/ProductDetail.aspx?sysno=54784" target="_blank">蓝宝石HD4850毒药</a>版本的显卡，AMD64 5200+的CPU、4G的内存以及1T的硬盘，这是我有生以来用过性能最好的PC配置，也是接触电脑以来几乎是头一次可以开启所有游戏的最高特效——告别了极品飞车诞生以来，令人神魂颠倒的效果就一直仅仅停留在报纸杂志上的时代。</p>
<p><img src="http://67.195.19.66/3545/3645823645_ea3c5271f4.jpg" alt="" /></p>
<p>不过唯一的问题在于主板，在CPU和显卡的压迫下过热非常迅速，冬天还好，从春天开始，经常一个游戏十多分就把主板烧到100度然后就自动关机……夏天更是不堪，以至于所有大型游戏进度都陷入停顿。经过刚飞到上海的硬件专家Archey同学分析确认以后，入手一款“<a href="http://www.newegg.com.cn/Products/ProductDetail.aspx?sysno=45200" target="_blank">九州风神 冰桥9</a>”的北桥散热器，新蛋订货，当天晚上出货，第二天中午送到（辛苦大热天还戴着手套东奔西走的大叔）。</p>
<p><img src="http://farm3.static.flickr.com/2422/3645637247_d2bfab7be1.jpg" alt="" /></p>
<p>于是立刻装上（图中像是塔一样的那个……）。途中发现我可爱的蓝宝石显卡的风扇上积存了厚厚的一层灰（我的天哪），于是顺便做了清扫，HH同学还细心的清扫了CPU风扇和机箱电源风扇上的灰尘。看来以后需要每半年都清扫一次了。</p>
<p>开机跑了最容易导致死机的《波斯王子4》，一个多小时过去，手摸摸散热片，几乎是没有温度，嗅探器提示主板温度恒定在75摄氏度左右，终于搞定。辛苦Archey、HH和Rudder三位同学的支持：）</p>
]]></content:encoded>
			<wfw:commentRss>http://woooh.com/archives/546.html/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>在Mac OS下创建自动重连、自动保存密码登录的SSH隧道链接</title>
		<link>http://woooh.com/archives/423.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%e5%9c%a8mac-os%e4%b8%8b%e5%88%9b%e5%bb%ba%e8%87%aa%e5%8a%a8%e9%87%8d%e8%bf%9e%e3%80%81%e8%87%aa%e5%8a%a8%e4%bf%9d%e5%ad%98%e5%af%86%e7%a0%81%e7%99%bb%e5%bd%95%e7%9a%84ssh%e9%9a%a7%e9%81%93%e9%93%be</link>
		<comments>http://woooh.com/archives/423.html#comments</comments>
		<pubDate>Thu, 19 Mar 2009 04:06:19 +0000</pubDate>
		<dc:creator>Aether</dc:creator>
				<category><![CDATA[互联网]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[macos]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://woooh.com/?p=423</guid>
		<description><![CDATA[SSH的详细用途就不再重复说明了，总之这是一个很强大的技术。 在这之前你需要一个SSH帐号，你可以在淘宝找到卖家，或者直接在Dreamhost、MT等服务商购买。 创建SSH的Socket隧道链接本身其实很简单，在Mac OS的命令行下面只需要一行就可以了： ssh -D 7777 username@yourhost.com 参看livid的关于SSH/PAC配置的详细说明。 然而每次都需要密码，并且超时断线的时候也需要手工重连，实在是很麻烦的事情，我参考网上的一系列资料拼装了自己的方案，开机自动链接，保存密码输入，断线自动重连。 首先是保存密码输入问题，需要创建密钥，在你的命令行输入： local:~ yourname$&#160;ssh-keygen -t rsa 然后依次回车，输入密码，这个密码和SSH的帐号密码无关。 整个界面看上去类似： local:~ yourname$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/u/kim/.ssh/id_rsa):&#160;【回车】 Enter passphrase (empty for no passphrase): 【第一次密码】 Enter same passphrase again:&#160;【第二次密码】 Your identification has been saved in /u/kim/.ssh/id_rsa. Your [...]]]></description>
			<content:encoded><![CDATA[<p>SSH的详细用途就不再重复说明了，总之这是一个很强大的技术。<br />
在这之前你需要一个SSH帐号，你可以在<a href="http://search1.taobao.com/browse/50008168-111006/n-1----------------------0------0-----------------g,knjuq----------------40--bid-0-all-111006.htm#ListView">淘宝</a>找到卖家，或者直接在Dreamhost、MT等服务商购买。</p>
<p>创建SSH的Socket隧道链接本身其实很简单，在Mac OS的命令行下面只需要一行就可以了：<br />
<span style="color: #990000;">ssh -D 7777 username@yourhost.com</span> 参看<a href="http://livid.cn/doc_view.php?doc_id=5744">livid的关于SSH/PAC配置的详细说明</a>。</p>
<p>然而每次都需要密码，并且超时断线的时候也需要手工重连，实在是很麻烦的事情，我参考网上的一系列资料拼装了自己的方案，开机自动链接，保存密码输入，断线自动重连。</p>
<p>首先是保存密码输入问题，需要创建密钥，在你的命令行输入：<br />
<span style="color: #990000;"><span style="color: black;">local:~ yourname$&nbsp;</span>ssh-keygen -t rsa</span></p>
<p>然后依次回车，输入密码，这个密码和SSH的帐号密码无关。<br />
整个界面看上去类似：<br />
local:~ yourname$ <span style="color: #990000;">ssh-keygen -t rsa</span><br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/u/kim/.ssh/id_rsa):&nbsp;<span style="color: #990000;">【回车】</span><br />
Enter passphrase (empty for no passphrase): <span style="color: #990000;">【第一次密码】</span><br />
Enter same passphrase again:&nbsp;<span style="color: #990000;">【第二次密码】</span><br />
Your identification has been saved in /u/kim/.ssh/id_rsa.<br />
Your public key has been saved in /u/kim/.ssh/id_rsa.pub.</p>
<p>接下来把密钥文件传到你的SSH帐号下：<br />
local:~ yourname$<span style="color: #990000;">&nbsp;cd ~/.ssh</span><br />
local:~ yourname$&nbsp;<span style="color: #990000;">cp id_rsa.pub authorized_keys</span><br />
local:~ yourname$&nbsp;<span style="color: #990000;">scp -p ~/.ssh/authorized_keys hrothgar:.ssh/</span></p>
<p>最后一步会提示你输入SSH帐号的密码，不是你刚才创建密钥的密码。<br />
如果最后一步提示错误，通常是因为远程权限的问题。<br />
你需要用root身份登录到远程机器，为这个SSH帐号创建相关目录，并且设置权限：</p>
<p>在SSH帐号登录的Home目录设置：<br />
root# <span style="color: #990000;">mkdir .ssh</span><br />
root#&nbsp;<span style="color: #990000;">chown username .</span><br />
root# <span style="color: #990000;">chrown username .ssh</span><br />
root#&nbsp;<span style="color: #990000;">chmod go-w . .ssh</span></p>
<p>然后重新执行刚才最后一步。</p>
<p>如果你在Mac OS的用户名和SSH的帐户名一致（推荐），那么你现在可以直接输入：<br />
$<span style="color: #990000;"> ssh yourhost.com</span></p>
<p>系统就会自动提示你输入刚才所创建密钥的密码（弹出一个对话框，而不是命令行里的密码提示），这时，请记得输入正确的密码，并且选择在钥匙环里记住该密码了。这以后你重复使用这个命令，应该就可以自动无缝登录而不需要任何提示了。</p>
<p>如果你使用不同的帐户，试试：<br />
$ <span style="color: #990000;">ssh yourname@yourhost.com</span></p>
<p>如果测试通过，就可以进入最后一步。</p>
<p>OK，最后一步是登录自动连接和断线自动重连，本来也可以用各种命令行实现的，但是我发现了一个更好用的东东：<a href="http://projects.tynsoe.org/en/stm/download.php">SSH Tunnel Manager</a>，你可以下载到最新的2.0版本。</p>
<p>按照以下步骤设置：<br />
1、把程序拖到你的Application目录，运行；<br />
2、在Dock上右键点击选中“登录时打开”。<br />
3、单击程序图标一次，在主界面点击“Configuration”打开配置；<br />
4、单击“+”号创建一个新的连接设置；<br />
5、随便取一个名字，输入你的SSH主机名（例如：yourhost.com）和用户名；<br />
6、点击Option，选中Auto Connect（自动连接）和Enable Socket Proxy（允许Socket代理），填写一个没有被占用，并且数字大于1500的端口号。</p>
<p>关掉设置按钮，现在你可以看到在SSH Tunnel Manager的主窗口里面有你刚才创建的配置和一个灰色的启动按钮，点击启动。</p>
<p>最后一步，在你的浏览器里面设置Socket代理到127.0.0.1:你的端口号。<br />
我自己通常用Safari作为日常浏览，Firefox则对所有URL通过代理。</p>
<p>参考资料：<br />
《<a href="http://kimmo.suominen.com/docs/ssh/">SSH自动登录保存密码指南</a>&nbsp;Getting started with SSH》<br />
以及上文的中文译稿（非常感谢）：《<a href="http://my.opera.com/Leira/blog/show.dml/181210">SSH记住密码，自动登录</a>》<br />
<a href="http://projects.tynsoe.org/en/stm/download.php">SSH Tunnel Manager软件下载</a><br />
<a href="http://linux.chinaunix.net/techdoc/system/2007/12/11/974135.shtml">chmod，chown命令详解</a></p>
]]></content:encoded>
			<wfw:commentRss>http://woooh.com/archives/423.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在Cocoa Objective-C里面判断空字符串</title>
		<link>http://woooh.com/archives/384.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%e5%9c%a8cocoa-objective-c%e9%87%8c%e9%9d%a2%e5%88%a4%e6%96%ad%e7%a9%ba%e5%ad%97%e7%ac%a6%e4%b8%b2</link>
		<comments>http://woooh.com/archives/384.html#comments</comments>
		<pubDate>Thu, 04 Dec 2008 08:15:00 +0000</pubDate>
		<dc:creator>Aether</dc:creator>
				<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://woooh.com/2008/12/%e5%9c%a8cocoa-objective-c%e9%87%8c%e9%9d%a2%e5%88%a4%e6%96%ad%e7%a9%ba%e5%ad%97%e7%ac%a6%e4%b8%b2.html</guid>
		<description><![CDATA[-(Void)YourFunction:(id)sender{ NSString *urlString = [urlInput stringValue]; if (!urlString) { NSLog(@&#8221;NO INPUT.&#8221;); }else { if ([urlString length] == 0) { NSLog(@&#8221;NO INPUT.&#8221;); } else { } } } 这之前我尝试过nil，以及等于空字符串@&#8221;"，似都没有什么效果，最后请教Livid 同学，得到以上传授的办法，感谢。]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">-(</span></span><span style="color: #aa0d91;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">Void</span></span></span><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">)YourFunction:(</span></span><span style="color: #aa0d91;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">id</span></span></span><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">)sender{</span></span><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;"></span></span><br />
<span style="white-space: pre;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;"> </span></span></span><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">NSString *urlString = [urlInput stringValue];</span></span></p>
<div style="font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"><span style="color: #aa0d91;"><span style="color: black; white-space: pre;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;"> </span></span></span><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">if</span></span></span><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;"> (!urlString) {</span></span></div>
<div style="font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"><span style="white-space: pre;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;"> </span></span><span style="white-space: normal;"><span style="white-space: pre;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;"> </span></span></span><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">NSLog(</span></span><span style="color: #c41a16;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">@&#8221;NO INPUT.&#8221;</span></span></span><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">);</span></span></span></span></div>
<div style="font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"><span style="white-space: pre;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;"> </span></span></span><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">}</span></span><span style="color: #aa0d91;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">else</span></span></span><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;"> {</span></span></div>
<div style="font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"><span style="color: #aa0d91;"><span style="color: black; white-space: pre;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;"> </span></span><span style="white-space: normal;"><span style="color: #aa0d91;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">if</span></span></span><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;"> ([urlString length] == </span></span><span style="color: #1c00cf;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">0</span></span></span><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">) {</span></span></span></span></span></div>
<div style="font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"><span style="white-space: pre;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;"> </span></span><span style="white-space: normal;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">NSLog(</span></span><span style="color: #c41a16;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">@&#8221;NO INPUT.&#8221;</span></span></span><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">);</span></span></span><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;"></span></span></span></div>
<div style="font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"><span style="white-space: pre;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;"> </span></span><span style="white-space: normal;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">} </span></span><span style="color: #aa0d91;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">else</span></span></span><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;"> {</span></span></span></span></div>
<div style="font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"><span style="white-space: pre;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;"> </span></span><span style="white-space: normal;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">}</span></span></span></span></div>
<div style="font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"><span style="white-space: pre;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;"> </span></span></span><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">}</span></span></div>
<div style="font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"><span style="font-size: small;"><span style="font-family: 'Courier New', Courier, monospace;">}</span></span></div>
<p>这之前我尝试过nil，以及等于空字符串@&#8221;"，似都没有什么效果，最后请教<a href="http://www.livid.cn/">Livid</a> 同学，得到以上传授的办法，感谢。</p>
<div class="blogger-post-footer"><img src="http://img.tongji.cn.yahoo.com/707938/ystat.gif" alt="" /></div>
]]></content:encoded>
			<wfw:commentRss>http://woooh.com/archives/384.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>如何使用Cocoa Objective-C在一个类(Class)里面呼叫主文档(Docuemnt)的方法(Function)</title>
		<link>http://woooh.com/archives/378.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8cocoa-objective-c%e5%9c%a8%e4%b8%80%e4%b8%aa%e7%b1%bbclass%e9%87%8c%e9%9d%a2%e5%91%bc%e5%8f%ab%e4%b8%bb%e6%96%87%e6%a1%a3docuemnt%e7%9a%84%e6%96%b9%e6%b3%95fun</link>
		<comments>http://woooh.com/archives/378.html#comments</comments>
		<pubDate>Sun, 23 Nov 2008 09:09:00 +0000</pubDate>
		<dc:creator>Aether</dc:creator>
				<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://woooh.com/2008/11/%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8cocoa-objective-c%e5%9c%a8%e4%b8%80%e4%b8%aa%e7%b1%bbclass%e9%87%8c%e9%9d%a2%e5%91%bc%e5%8f%ab%e4%b8%bb%e6%96%87%e6%a1%a3docuemnt%e7%9a%84%e6%96%b9%e6%b3%95fun.html</guid>
		<description><![CDATA[#import &#8220;MyDocument.h&#8221; MyDocument *currentDocument=(MyDocument *)[[NSDocumentController sharedDocumentController] currentDocument]; if(currentDocument==nil){ &#160;&#160; &#160;currentDocument=(MyDocument *)[[NSApp orderedDocuments] objectAtIndex:0]; &#160;&#160; &#160;if(currentDocument==nil){ &#160;&#160; &#160;&#160;&#160; &#160;NSLog(@&#8221;currentDocument playing up.&#8221;); &#160;&#160; &#160;&#160;&#160; &#160;NSBeep(); &#160;&#160; &#160;&#160;&#160; &#160;return nil; &#160;&#160; &#160;} } [currentDocument yourFunctionName]; 来自Eraserhead&#160;的办法。]]></description>
			<content:encoded><![CDATA[<div><span style="font-family: 'Trebuchet MS', sans-serif;"><span style="font-size: small;">#import &#8220;MyDocument.h&#8221;</span></span></div>
<div><span style="font-family: 'Trebuchet MS', sans-serif;"><span style="font-size: small;"><br /></span> </span></div>
<p><span style="font-family: 'Trebuchet MS', sans-serif;"><span style="font-size: small;">MyDocument *currentDocument=(MyDocument *)[[NSDocumentController sharedDocumentController] currentDocument]; </p>
<p></span>  </span>
<div><span style="font-family: 'Trebuchet MS', sans-serif;"><span style="font-size: medium;"><span style="font-size: small;">if(currentDocument==nil){ <br />&nbsp;&nbsp; &nbsp;currentDocument=(MyDocument *)[[NSApp orderedDocuments] objectAtIndex:0]; <br />&nbsp;&nbsp; &nbsp;if(currentDocument==nil){ <br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;NSLog(@&#8221;currentDocument playing up.&#8221;); <br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;NSBeep(); <br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return nil; <br />&nbsp;&nbsp; &nbsp;} <br />} <br />[currentDocument yourFunctionName];</span><br /></span></span><br /><span style="font-family: 'Trebuchet MS'; font-size: 13px;"><br /></span></div>
<div>来自<a href="http://forums.macrumors.com/archive/index.php/t-327165.html">Eraserhead</a>&nbsp;的办法。</div>
<div class="blogger-post-footer"><img src="http://img.tongji.cn.yahoo.com/707938/ystat.gif" /></div>
]]></content:encoded>
			<wfw:commentRss>http://woooh.com/archives/378.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
