<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3088507211020672384</id><updated>2015-10-12T14:09:39.690+08:00</updated><category term="gimp"/><category term="icpc"/><category term="iphone"/><category term="linux"/><category term="opera"/><category term="ubuntu"/><category term="程式"/><title type='text'>ccpz&#39;s blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.ytchiang.net/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://blog.ytchiang.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>ccpz</name><uri>http://www.blogger.com/profile/09628084994964002172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3088507211020672384.post-250186930456481643</id><published>2011-04-16T21:21:00.003+08:00</published><updated>2011-04-16T21:27:15.425+08:00</updated><title type='text'>chrome extension: Auto HD for YouTube</title><content type='html'>&lt;div&gt;之前用&lt;a href=&quot;https://chrome.google.com/extensions/detail/kaielpkecabnggniojjhghggjedkecfj?hl=zh-tw&quot;&gt;這個&lt;/a&gt; extension 來讓 youtube 自動開最高畫質&lt;div&gt;不過剛剛發現他被停用，去啟動時出現：&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-lf5ENcAEeY8/TamY2PTC_SI/AAAAAAAABEo/NGoYsIBXx0Y/s1600/1.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 388px; height: 198px;&quot; src=&quot;http://2.bp.blogspot.com/-lf5ENcAEeY8/TamY2PTC_SI/AAAAAAAABEo/NGoYsIBXx0Y/s400/1.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5596172069571329314&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;雖然說是加入分享功能，不獲還是算了吧，&lt;a href=&quot;https://chrome.google.com/extensions/detail/ceabifbfdgibpkmbmlmnckcdlphlbfba?hl=zh-tw&quot;&gt;YouTube quality selector&lt;/a&gt; 看來可以當替代品&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ytchiang.net/feeds/250186930456481643/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.ytchiang.net/2011/04/chrome-extension-auto-hd-for-youtube.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/250186930456481643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/250186930456481643'/><link rel='alternate' type='text/html' href='http://blog.ytchiang.net/2011/04/chrome-extension-auto-hd-for-youtube.html' title='chrome extension: Auto HD for YouTube'/><author><name>ccpz</name><uri>http://www.blogger.com/profile/09628084994964002172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-lf5ENcAEeY8/TamY2PTC_SI/AAAAAAAABEo/NGoYsIBXx0Y/s72-c/1.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088507211020672384.post-4379386020803143916</id><published>2010-05-07T20:53:00.001+08:00</published><updated>2010-05-07T20:53:01.042+08:00</updated><title type='text'>DNSSEC</title><content type='html'>&lt;p&gt;之前看到一些消息，5/5 開始所有的 Root DNS 都會測試 DNSSEC，到 7/1 就會正式上路，也就是說到 7/1 第一層的認證就會開始運作了。接下來只要等其他的 TLD 給 root 簽過以後，就可以對目前使用中的 Domain Name 簽，這過程大概還要 1~2 年的時間吧。到時對岸應該很頭痛吧 XD 常見的 DNS 劫持都不能用了。&lt;/p&gt;  &lt;p&gt;大概看了一些文件，其實概念蠻簡單的，就是套用了 PKI 的架構，然後上層 Domain 就扮演 CA 的角色做 key 認證。所以要從 root 開始，之後是 TLD，最後使用中的 domain 才有人幫忙認證。所以現在先留一些文件，等之後 VeriSign 開始做 TLD 的 DNSSEC 再說吧。&lt;/p&gt;  &lt;p&gt;Ref:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href=&quot;http://blog.techscrawl.com/2009/01/06/dnssec-101/&quot; target=&quot;_blank&quot;&gt;DNSSEC 101&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href=&quot;http://blog.techscrawl.com/2009/01/13/enabling-dnssec-on-bind/&quot; target=&quot;_blank&quot;&gt;Enabling DNSSEC on BIND&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href=&quot;http://www.isc.org/files/DNSSEC_in_6_minutes.pdf&quot; target=&quot;_blank&quot;&gt;DNSSEC in 6 minutes&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href=&quot;http://fedoraproject.org/wiki/Features/DNSSEC&quot; target=&quot;_blank&quot;&gt;Features/DNSSEC – FedoraProject&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href=&quot;http://phorum.study-area.org/index.php?topic=60268.0&quot; target=&quot;_blank&quot;&gt;酷！學園 - DNSSEC 入門介紹&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  </content><link rel='replies' type='application/atom+xml' href='http://blog.ytchiang.net/feeds/4379386020803143916/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.ytchiang.net/2010/05/dnssec.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/4379386020803143916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/4379386020803143916'/><link rel='alternate' type='text/html' href='http://blog.ytchiang.net/2010/05/dnssec.html' title='DNSSEC'/><author><name>ccpz</name><uri>http://www.blogger.com/profile/09628084994964002172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088507211020672384.post-6822951096154443479</id><published>2010-05-06T09:46:00.001+08:00</published><updated>2010-05-06T09:46:33.296+08:00</updated><title type='text'>Intel 對 USB 3.0 的態度</title><content type='html'>&lt;p&gt;Intel 對 USB 3.0 的支援都一直拖拖拉拉的。NEC 已經做出晶片，也已經有商品上市，可是 Intel 那就是沒消息。剛剛看到這篇癮科技的新聞：&lt;a href=&quot;http://chinese.engadget.com/2010/05/05/intel-demonstrates-light-peak-on-a-laptop-says-10gbps-speeds-ar/&quot; target=&quot;_blank&quot;&gt;Intel 在筆電上示範 Light Peak，超過 10Gbps 的速度只是個開始&lt;/a&gt; 突然有種恍然大悟的感覺 XD 原來 Intel 想推自己的連接阜，而且接頭還和 USB 相容，很明顯就是要推這，不想弄 USB 3.0。再回頭看看 USB 3.0 草案時的一些爭議：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href=&quot;http://news.cnet.com/8301-13924_3-9961783-64.html&quot; target=&quot;_blank&quot;&gt;Nvidia, AMD vie with Intel over USB 3.0&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href=&quot;http://news.cnet.com/8301-13924_3-10016929-64.html&quot; target=&quot;_blank&quot;&gt;Intel USB 3.0 update resolves dispute with Nvidia, AMD&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href=&quot;http://www.techspot.com/news/36821-nvidia-confirms-intel-wont-back-usb-30-until-2011.html&quot; target=&quot;_blank&quot;&gt;Nvidia confirms Intel won&#39;t back USB 3.0 until 2011&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;當初放棄這麼快，背後原因果然不單純 XD 就是決定自己弄一套，不和 USB 繼續玩下去了。&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://blog.ytchiang.net/feeds/6822951096154443479/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.ytchiang.net/2010/05/intel-usb-30.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/6822951096154443479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/6822951096154443479'/><link rel='alternate' type='text/html' href='http://blog.ytchiang.net/2010/05/intel-usb-30.html' title='Intel 對 USB 3.0 的態度'/><author><name>ccpz</name><uri>http://www.blogger.com/profile/09628084994964002172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088507211020672384.post-6599405380151025284</id><published>2010-04-21T13:58:00.001+08:00</published><updated>2010-04-21T13:58:13.868+08:00</updated><title type='text'>迅雷</title><content type='html'>&lt;p&gt;前幾天看 Apache log 時,發現了一個奇怪的現象：&lt;/p&gt;  &lt;pre class=&quot;csharpcode&quot;&gt;* - - [21/Apr/2010:13:21:41 +0800] &lt;span class=&quot;str&quot;&gt;&amp;quot;GET *** HTTP/1.1&amp;quot;&lt;/span&gt; 206 65911 &lt;span class=&quot;str&quot;&gt;&amp;quot;***&amp;quot;&lt;/span&gt; &lt;span class=&quot;str&quot;&gt;&amp;quot;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Log 出現很多抓這個檔案的 Entry，不過這檔案並沒有公開的連結，而且 User-Agent 都一樣。用&lt;a href=&quot;http://li2z.cn/2009/10/31/nginx-block-user_agent/&quot; target=&quot;_blank&quot;&gt;這裡&lt;/a&gt;的 script 統計之後發現這個 User-Agent 佔了很大一部分：&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;csharpcode&quot;&gt;# cat /var/log/apache2/access.log | awk -F\&amp;quot; &lt;span class=&quot;str&quot;&gt;&#39;{A[$(NF-1)]++}END{for(k in A)print A[k],k}&#39;&lt;/span&gt; | sort -n | tail&lt;br /&gt;672 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.4; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.30729)&lt;br /&gt;754 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)&lt;br /&gt;1080 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)&lt;br /&gt;1092 Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http:&lt;span class=&quot;rem&quot;&gt;//help.yahoo.com/help/us/ysearch/slurp)&lt;/span&gt;&lt;br /&gt;1579 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1045 Safari/532.5&lt;br /&gt;2003 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1045 Safari/532.5&lt;br /&gt;2017 Mozilla/5.0 (compatible; Googlebot/2.1; +http:&lt;span class=&quot;rem&quot;&gt;//www.google.com/bot.html)&lt;/span&gt;&lt;br /&gt;2778 Microsoft-IIS/0.0 (&lt;span class=&quot;kwrd&quot;&gt;internal&lt;/span&gt; dummy connection)&lt;br /&gt;&lt;font color=&quot;#ff0000&quot;&gt;13463 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)&lt;/font&gt;&lt;br /&gt;26297 Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)&lt;/pre&gt;&lt;br /&gt;&lt;style type=&quot;text/css&quot;&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, &quot;Courier New&quot;, courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;找了一些資料以後，果然和我猜測的一樣，是迅雷在搞鬼(因為看到很多 IP 都是大陸來的)：&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://www.gsea.com.cn/blog/post/255/&quot; target=&quot;_blank&quot;&gt;将迅雷拒于Linux服务器门外&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;照上面的方法用 mod_rewrite 把它的 User-Agent 檔掉，雖然 User-Agent 不可靠，現在要檔他只能用這種方法了。&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;csharpcode&quot;&gt;RewriteEngine On&lt;br /&gt;&lt;br /&gt;#Anti Thunder (Xunlei)&lt;br /&gt;&lt;br /&gt;RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1\)$  [NC,OR]&lt;br /&gt;RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0\)$  [NC,OR]&lt;br /&gt;RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla/5\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0\)$  [NC,OR]&lt;br /&gt;RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1;\ \)$   [NC,OR]&lt;br /&gt;RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0;\ \.NET\ CLR\ 3\.5\.20706\)$  [NC,OR]&lt;br /&gt;RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1;\ SV1;\ \.NET\ CLR\ 1\.1\.4322;\ \.NET\ CLR\ 2\.0\.50727\)$  [NC]&lt;br /&gt;&lt;br /&gt;RewriteRule  ^.*\.(gif|jpg|bmp|zip|rar|exe|mp3|swf)$   /   [NC,F]&lt;/pre&gt;&lt;br /&gt;&lt;style type=&quot;text/css&quot;&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, &quot;Courier New&quot;, courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type=&quot;text/css&quot;&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, &quot;Courier New&quot;, courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;  </content><link rel='replies' type='application/atom+xml' href='http://blog.ytchiang.net/feeds/6599405380151025284/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.ytchiang.net/2010/04/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/6599405380151025284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/6599405380151025284'/><link rel='alternate' type='text/html' href='http://blog.ytchiang.net/2010/04/blog-post.html' title='迅雷'/><author><name>ccpz</name><uri>http://www.blogger.com/profile/09628084994964002172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088507211020672384.post-5729676403128858202</id><published>2010-04-13T20:54:00.002+08:00</published><updated>2010-04-13T20:56:57.566+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iphone"/><category scheme="http://www.blogger.com/atom/ns#" term="opera"/><title type='text'>Opera Mini for iPhone</title><content type='html'>&lt;p&gt; &lt;a href=&quot;http://lh5.ggpht.com/_FybS-pFs_iQ/S8RpYHLw6oI/AAAAAAAAA4g/677Xg1MF4qQ/s1600-h/image%5B4%5D.png&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_FybS-pFs_iQ/S8RpZDZHOoI/AAAAAAAAA4k/aSOOGGIm4bI/image_thumb%5B2%5D.png?imgmax=800&quot; width=&quot;357&quot; height=&quot;116&quot; /&gt;&lt;/a&gt;   &lt;a href=&quot;http://itunes.apple.com/tw/app/opera-mini-web-browser/id363729560?mt=8&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;as_available_appstore_icon_20091006&quot; border=&quot;0&quot; alt=&quot;as_available_appstore_icon_20091006&quot; src=&quot;http://lh3.ggpht.com/_FybS-pFs_iQ/S8Rp79JXGNI/AAAAAAAAA5Y/WJB3jT8Un6A/as_available_appstore_icon_20091006%5B3%5D.png?imgmax=800&quot; width=&quot;164&quot; height=&quot;65&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;拖了 20 天以後，想不到居然過了 (Apple 吃錯藥了嗎)。看他之前的&lt;a href=&quot;http://www.youtube.com/watch?v=OpTCS3g-cBY&quot; target=&quot;_blank&quot;&gt;宣傳&lt;/a&gt;說的這麼神，早上就弄了一個日本 AppStore 帳號去抓下來用用看。只能說期待太高了╮(－_－)╭，之後大概還是以 Safari 為主吧。&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_FybS-pFs_iQ/S8RpZjWJzLI/AAAAAAAAA4o/SdrWVXuGqWE/s1600-h/gG%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;照片&quot; border=&quot;0&quot; alt=&quot;照片&quot; src=&quot;http://lh6.ggpht.com/_FybS-pFs_iQ/S8RpaWfsR8I/AAAAAAAAA4s/pQxHp6GdbiI/gG_thumb%5B1%5D.jpg?imgmax=800&quot; width=&quot;210&quot; height=&quot;313&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;這張是啟動畫面，上方是 Opera 首創的 Speed Dial, 下面是 Tab 切換&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_FybS-pFs_iQ/S8RpbJAFC4I/AAAAAAAAA4w/5u6fG_XpeVA/s1600-h/gG%202%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;照片 2&quot; border=&quot;0&quot; alt=&quot;照片 2&quot; src=&quot;http://lh6.ggpht.com/_FybS-pFs_iQ/S8RpcQNMVII/AAAAAAAAA40/b6_nxCWbNp4/gG%202_thumb%5B1%5D.jpg?imgmax=800&quot; width=&quot;210&quot; height=&quot;313&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://lh6.ggpht.com/_FybS-pFs_iQ/S8RpdPA1wlI/AAAAAAAAA44/rBez8QKM3eQ/s1600-h/gG%203%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;照片 3&quot; border=&quot;0&quot; alt=&quot;照片 3&quot; src=&quot;http://lh6.ggpht.com/_FybS-pFs_iQ/S8Rpd3GmXyI/AAAAAAAAA48/q_PnNYW70wY/gG%203_thumb%5B1%5D.jpg?imgmax=800&quot; width=&quot;209&quot; height=&quot;312&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;這兩張是開啟聯合新聞網的畫面，雖然和 safari 一樣可以連點放大，可是就只能放大成右圖的大小，不能用 twist finger 自定放大倍率，連 safari 都做的到了，Opera 居然沒這功能 orz &lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_FybS-pFs_iQ/S8Rpeewv6AI/AAAAAAAAA5A/JBX7gNlZQSI/s1600-h/gG%204%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;照片 4&quot; border=&quot;0&quot; alt=&quot;照片 4&quot; src=&quot;http://lh4.ggpht.com/_FybS-pFs_iQ/S8RpfCwHa0I/AAAAAAAAA5E/isVwfBMbJ5w/gG%204_thumb%5B1%5D.jpg?imgmax=800&quot; width=&quot;205&quot; height=&quot;305&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Acid3 測試結果，有97分，不過畫面怪怪的。&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_FybS-pFs_iQ/S8RpfxAaGGI/AAAAAAAAA5I/_xbLIdZHAPM/s1600-h/gG%202%5B10%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;照片 2&quot; border=&quot;0&quot; alt=&quot;照片 2&quot; src=&quot;http://lh5.ggpht.com/_FybS-pFs_iQ/S8Rpg_hB1PI/AAAAAAAAA5M/HExdZv0bMyQ/gG%202_thumb%5B4%5D.jpg?imgmax=800&quot; width=&quot;209&quot; height=&quot;312&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://lh3.ggpht.com/_FybS-pFs_iQ/S8RphXtlZPI/AAAAAAAAA5Q/NMmgIUCLlLs/s1600-h/gG%5B7%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;照片&quot; border=&quot;0&quot; alt=&quot;照片&quot; src=&quot;http://lh6.ggpht.com/_FybS-pFs_iQ/S8RpiFedhNI/AAAAAAAAA5U/yfVzE_ez-4k/gG_thumb%5B3%5D.jpg?imgmax=800&quot; width=&quot;210&quot; height=&quot;313&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;開一個 google reader 看 web app 的效果，登入表單上就沒 Safari 那麼友善了。在Safari 還有上一個/下一個按鈕，可以跳到其他欄位，可是在Opera 中就只能用手去點欄位。登入後看到的只有很簡單的純文字網頁，不過這也不能怪 Opera，他送出的 User-agent 是這樣：&lt;/p&gt;  &lt;p&gt;Opera/9.80 (J2ME/MIDP; Opera Mini/5.0.0176/1150; U; zh) Presto/2.4.15&lt;/p&gt;  &lt;p&gt;所以 Google 大概當做一般的 Opera Mini 來提供網頁吧，根據&lt;a href=&quot;http://dev.opera.com/articles/view/opera-mini-request-headers/&quot; target=&quot;_blank&quot;&gt;這裡&lt;/a&gt;的說法，可以從 X-OperaMini-Phone-UA，X-OperaMini-Phone 去得到手機資訊，所以就看 Google 要不要支援 Opera Mini for iPhone 了。畢竟之前 iPhone 的 web app 只需考慮 safari 就好，接下來如果 Opera 的使用者多了，大家才會漸漸考慮到支援 Opera。&lt;/p&gt;  &lt;p&gt;總而言之，雖然抓網頁和 Rendering 速度比 safari 快一些，但是 UI 和一些小地方的設計還是不比 safari  好。Opera 可能只是單純做移植，沒有考慮對 iPhone 特化，所以用起來還是沒 sfafari 順手。只能希望他會繼續更新了。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ytchiang.net/feeds/5729676403128858202/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.ytchiang.net/2010/04/opera-mini-for-iphone.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/5729676403128858202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/5729676403128858202'/><link rel='alternate' type='text/html' href='http://blog.ytchiang.net/2010/04/opera-mini-for-iphone.html' title='Opera Mini for iPhone'/><author><name>ccpz</name><uri>http://www.blogger.com/profile/09628084994964002172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_FybS-pFs_iQ/S8RpZDZHOoI/AAAAAAAAA4k/aSOOGGIm4bI/s72-c/image_thumb%5B2%5D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088507211020672384.post-2395552056533060793</id><published>2010-01-07T08:46:00.001+08:00</published><updated>2010-01-07T08:47:03.055+08:00</updated><title type='text'>App Store 好快的審核速度</title><content type='html'>&lt;p&gt;昨天把一些 iPhone Application 更新一點功能，之前審核都要等兩個禮拜，所以丟上去以後就沒管他。想不到早上就和我說通過了：&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_FybS-pFs_iQ/S0UvBFpOiJI/AAAAAAAAAsc/H93g8Phx9_o/s1600-h/image%5B8%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_FybS-pFs_iQ/S0UvBtYAJ7I/AAAAAAAAAsg/34C-bZ94C3c/image_thumb%5B4%5D.png?imgmax=800&quot; width=&quot;492&quot; height=&quot;106&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;這速度太驚人了，害我早上在趕著寫新功能的介紹orz&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://blog.ytchiang.net/feeds/2395552056533060793/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.ytchiang.net/2010/01/app-store.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/2395552056533060793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/2395552056533060793'/><link rel='alternate' type='text/html' href='http://blog.ytchiang.net/2010/01/app-store.html' title='App Store 好快的審核速度'/><author><name>ccpz</name><uri>http://www.blogger.com/profile/09628084994964002172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_FybS-pFs_iQ/S0UvBtYAJ7I/AAAAAAAAAsg/34C-bZ94C3c/s72-c/image_thumb%5B4%5D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088507211020672384.post-6025100122437631076</id><published>2009-12-04T08:49:00.000+08:00</published><updated>2009-12-04T09:01:17.688+08:00</updated><title type='text'>Google DNS: 8.8.8.8, 8.8.4.4</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://googleblog.blogspot.com/2009/12/introducing-google-public-dns.html&quot;&gt;Official Google Blog: Introducing Google Public DNS&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Google 現在連 Public DNS 都弄出來，看來真的要包山包海了。&lt;a href=&quot;http://code.google.com/speed/public-dns&quot; target=&quot;_blank&quot;&gt;Google Code&lt;/a&gt; 上有一些設計說明，最近 Google 推廣速度上還真是不遺餘力，先是用 Chrome 示範瀏覽器可以跑多快，現在又用 Public DNS 示範 DNS Server 如何加強速度和安全性。Traceroute 後看來台灣也有 Server：&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;traceroute to 8.8.8.8 (8.8.8.8), 64 hops max, 40 byte packets     &lt;br /&gt; 1&amp;#160; not-a-legal-address ()&amp;#160; 0.613 ms&amp;#160; 0.795 ms&amp;#160; 0.381 ms      &lt;br /&gt; 2&amp;#160; not-a-legal-address ()&amp;#160; 0.861 ms&amp;#160; 0.827 ms&amp;#160; 0.709 ms      &lt;br /&gt; 3&amp;#160; 140.113.0.105 (140.113.0.105)&amp;#160; 0.593 ms&amp;#160; 0.689 ms&amp;#160; 0.849 ms      &lt;br /&gt; 4&amp;#160; Nctu-NonLegal-address (203.72.36.2)&amp;#160; 1.232 ms&amp;#160; 0.965 ms&amp;#160; 1.107 ms      &lt;br /&gt; 5&amp;#160; * TAOYUAN-G35-G0-2-HSINCHU.IX.kbtelecom.net (203.133.92.165)&amp;#160; 3.465 ms&amp;#160; 2.925 ms      &lt;br /&gt; 6&amp;#160; u23-5.u203-187.IX.kbtelecom.net (203.187.23.5)&amp;#160; 2.760 ms&amp;#160; 2.178 ms&amp;#160; 3.195 ms      &lt;br /&gt; 7&amp;#160; u23-98.u203-187.IX.kbtelecom.net (203.187.23.98)&amp;#160; 2.424 ms&amp;#160; 2.349 ms&amp;#160; 2.440 ms      &lt;br /&gt; 8&amp;#160; 72.14.196.9 (72.14.196.9)&amp;#160; 2.701 ms&amp;#160; 3.037 ms&amp;#160; 3.068 ms      &lt;br /&gt; 9&amp;#160; 209.85.243.26 (209.85.243.26)&amp;#160; 3.018 ms      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; 209.85.243.30 (209.85.243.30)&amp;#160; 3.570 ms&amp;#160; 3.368 ms      &lt;br /&gt;10&amp;#160; 209.85.250.103 (209.85.250.103)&amp;#160; 3.725 ms      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; 209.85.250.101 (209.85.250.101)&amp;#160; 3.625 ms      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; 209.85.243.23 (209.85.243.23)&amp;#160; 3.421 ms      &lt;br /&gt;11&amp;#160; 209.85.241.162 (209.85.241.162)&amp;#160; 8.867 ms      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; 209.85.241.154 (209.85.241.154)&amp;#160; 7.030 ms      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; 209.85.241.158 (209.85.241.158)&amp;#160; 12.492 ms      &lt;br /&gt;12&amp;#160; google-public-dns-a.google.com (8.8.8.8)&amp;#160; 4.337 ms&amp;#160; 4.185 ms&amp;#160; 4.029 ms&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;除了展示技術外，或許對之後 Chrome OS 也有幫助？如果預設用自己家的 DNS，可以避免使用者被奇怪的 DNS 檔掉。而且從 DNS query 上還可以統計到蠻多資料，更狠一點的話還可以學 OpenDNS 統計常見的 typo，導到自己的頁面去。&lt;/p&gt;  </content><link rel="related" href="http://googleblog.blogspot.com/2009/12/introducing-google-public-dns.html" title="Google DNS: 8.8.8.8, 8.8.4.4"/><link rel='replies' type='application/atom+xml' href='http://blog.ytchiang.net/feeds/6025100122437631076/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.ytchiang.net/2009/12/google-dns-8888-8844.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/6025100122437631076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/6025100122437631076'/><link rel='alternate' type='text/html' href='http://blog.ytchiang.net/2009/12/google-dns-8888-8844.html' title='Google DNS: 8.8.8.8, 8.8.4.4'/><author><name>ccpz</name><uri>http://www.blogger.com/profile/09628084994964002172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088507211020672384.post-4653264827523543598</id><published>2009-12-02T22:42:00.001+08:00</published><updated>2009-12-02T22:42:03.116+08:00</updated><title type='text'>Windows 7 的資料夾共用</title><content type='html'>&lt;p&gt;之前換了 Windows 7 之後，除了 Super Bar 要重新適應外，大致上感覺還不錯。不過在資料夾共用上碰到一些問題，照之前 Vista 的設法，在進階共用中直接把帳號加進去，卻發現實驗室的電腦就是連不到。於是就開了 Wireshark 來聽：&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_FybS-pFs_iQ/SxZ8s3sgHfI/AAAAAAAAAqs/e7spUbVwZ0Q/s1600-h/image%5B4%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_FybS-pFs_iQ/SxZ8toYXULI/AAAAAAAAAqw/oj4GXgFUHiM/image_thumb%5B2%5D.png?imgmax=800&quot; width=&quot;805&quot; height=&quot;201&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;可以看出來 TCP 連線沒辦法建立，至少不是連上後又被中斷，所以推測和資料夾共用的設定應該沒關係。就想說來看看防火牆的設定了，在&lt;strong&gt;控制台\系統及安全性\Windows 防火牆&lt;/strong&gt; 的進階設定中，按 Port 排序就可以看到和 TCP Port 445 相關的設定：&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_FybS-pFs_iQ/SxZ8uClGGOI/AAAAAAAAAq0/jAkdQecTjr0/s1600-h/image%5B11%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_FybS-pFs_iQ/SxZ8ukLWGoI/AAAAAAAAAq4/7EoXuqvA8jM/image_thumb%5B5%5D.png?imgmax=800&quot; width=&quot;286&quot; height=&quot;349&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;原來 Windows 7 預設只能讓同一個 Subnet 的電腦連，難怪在不同網段的電腦都連不到。手動把 Lab 電腦 IP 加上去以後就可以正常連啦。&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://blog.ytchiang.net/feeds/4653264827523543598/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.ytchiang.net/2009/12/windows-7.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/4653264827523543598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/4653264827523543598'/><link rel='alternate' type='text/html' href='http://blog.ytchiang.net/2009/12/windows-7.html' title='Windows 7 的資料夾共用'/><author><name>ccpz</name><uri>http://www.blogger.com/profile/09628084994964002172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_FybS-pFs_iQ/SxZ8toYXULI/AAAAAAAAAqw/oj4GXgFUHiM/s72-c/image_thumb%5B2%5D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088507211020672384.post-3774028718747107338</id><published>2009-11-20T21:56:00.002+08:00</published><updated>2009-11-20T21:57:22.987+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gimp"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Ubuntu 10.4 不預設安裝 Gimp</title><content type='html'>&lt;p&gt;在&lt;a href=&quot;http://linux.slashdot.org/story/09/11/19/1342230/GIMP-Dropped-From-Ubuntu-1004&quot;&gt;這篇&lt;/a&gt;新聞中看到，Ubuntu 覺得 Gimp 對入門使用者來說太難用，所以決定 10.4 以後不預設安裝了。雖然上面有一些反對聲音，不過這決定也還合理。Gimp 對初學者想改一下圖片的話，的確很難上手。而且對進階使用者來說，安裝一下也不會太困難吧？&lt;/p&gt;  &lt;p&gt;只是移除以後編修功能要用什麼軟體取代？看了一下現在內建的軟體，大概只有 F-Spot 有編輯功能，不過太簡單了，而且他的主要功能是管理照片，不是編輯圖片。如果有一個類似 &lt;a href=&quot;http://www.getpaint.net/&quot;&gt;Paint.net&lt;/a&gt; 的簡單、功能完整的軟體就好了。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ytchiang.net/feeds/3774028718747107338/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.ytchiang.net/2009/11/ubuntu-104-gimp.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/3774028718747107338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/3774028718747107338'/><link rel='alternate' type='text/html' href='http://blog.ytchiang.net/2009/11/ubuntu-104-gimp.html' title='Ubuntu 10.4 不預設安裝 Gimp'/><author><name>ccpz</name><uri>http://www.blogger.com/profile/09628084994964002172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088507211020672384.post-5374541664846857238</id><published>2009-11-14T18:29:00.001+08:00</published><updated>2009-11-14T18:29:00.257+08:00</updated><title type='text'>Microsoft 也採到 GPL 地雷了</title><content type='html'>&lt;p&gt;這次 Windows 7 上市，MS 終於重視到沒有光碟機的人，提供了一套 &lt;a href=&quot;http://store.microsoft.com/Help/ISO-Tool&quot; target=&quot;_blank&quot;&gt;Windows 7 USB/DVD Download Tool&lt;/a&gt; 讓 USB 隨身碟也可以用來安裝 Windows 7。不過前幾天&lt;a href=&quot;http://tech.slashdot.org/story/09/11/07/1547214/Did-Microsoft-Borrow-GPL-Code-For-a-Windows-7-Utility&quot; target=&quot;_blank&quot;&gt;有人&lt;/a&gt;發現這套工具有參考了 &lt;a href=&quot;http://www.codeplex.com/ImageMaster&quot; target=&quot;_blank&quot;&gt;ImageMaster&lt;/a&gt; 這套處理映像檔的程式碼，而且他是用 GPL v2 釋出，這下當然就採中地雷啦。&lt;/p&gt;  &lt;p&gt;不過 Microsoft 反應也很快，過幾天就說會按照 GPL &lt;a href=&quot;http://news.slashdot.org/story/09/11/13/2311232/Microsoft-Takes-Responsibility-For-GPL-Violation+(Slashdot:+Slashdot)&quot; target=&quot;_blank&quot;&gt;公開原始碼&lt;/a&gt;，大概是這工具也沒有什麼商業機密吧。之前很多公司碰到這種是都是相應不理，直到&lt;a href=&quot;http://gpl-violations.org/&quot; target=&quot;_blank&quot;&gt;上了法院&lt;/a&gt;才解決。&lt;/p&gt;  &lt;p&gt;另一方面來看，這問題在 Code review 階段有辦法避免嗎？ GPL 的 project 不可能每個都看過，Programmer 可能只取其中一部分，忽略版權宣告，Review 階段似乎蠻難發現這問題。&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://blog.ytchiang.net/feeds/5374541664846857238/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.ytchiang.net/2009/11/microsoft-gpl.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/5374541664846857238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/5374541664846857238'/><link rel='alternate' type='text/html' href='http://blog.ytchiang.net/2009/11/microsoft-gpl.html' title='Microsoft 也採到 GPL 地雷了'/><author><name>ccpz</name><uri>http://www.blogger.com/profile/09628084994964002172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088507211020672384.post-4796860585829152503</id><published>2009-11-12T07:22:00.001+08:00</published><updated>2009-11-12T12:22:04.490+08:00</updated><title type='text'>東京住宿 - コンフォートホテル東京東日本橋</title><content type='html'>&lt;p&gt;這次自己找旅館時，在樂天和 Jalan 上猶豫好久。每一家看起來都還不錯，日文的評價看不太懂，中意的旅館又找不太到中文的討論。最後想說只住一晚，就挑一間交通方便，評價別太差就好。於是就找上這間&lt;a href=&quot;http://www.choice-hotels.jp/cfenihon/index.php&quot; target=&quot;_blank&quot;&gt;コンフォートホテル東京東日本橋&lt;/a&gt;。這間旅館在JR総武本線馬喰町駅4番出口，出來左轉就在 7-11 樓上。離東京站也很近，另外去年剛開幕，設備應該會很新，所以就定這間的單人房 &amp;amp; 單人房。&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;名稱：コンフォートホテル東京東日本橋 &lt;/li&gt;    &lt;li&gt;地址：103-0002 東京都中央区日本橋馬喰町1丁目10-11 &lt;/li&gt;    &lt;li&gt;電話：03-5645-3311 &lt;/li&gt;    &lt;li&gt;網址：&lt;a href=&quot;http://www.choice-hotels.jp/cfenihon/index.php&quot; target=&quot;_blank&quot;&gt;http://www.choice-hotels.jp/cfenihon/index.php&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;價格：單人房一晚 6600，雙人 Twin 一晚 9000 (特價) &lt;/li&gt;    &lt;li&gt;&lt;iframe height=&quot;350&quot; marginheight=&quot;0&quot; src=&quot;http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=zh-TW&amp;amp;geocode=&amp;amp;q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E4%B8%AD%E5%A4%AE%E5%8C%BA%E6%97%A5%E6%9C%AC%E6%A9%8B%E9%A6%AC%E5%96%B0%E7%94%BA1%E4%B8%81%E7%9B%AE10-11&amp;amp;sll=25.04099,121.549366&amp;amp;sspn=0.015728,0.024655&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=%E6%97%A5%E6%9C%AC%E6%9D%B1%E4%BA%AC%E9%83%BD%E4%B8%AD%E5%A4%AE%E5%8D%80%E6%97%A5%E6%9C%AC%E6%A9%8B%E9%A6%AC%E5%96%B0%E7%94%BA%EF%BC%91%E4%B8%81%E7%9B%AE%E2%88%92%EF%BC%91%EF%BC%90%E2%88%92%EF%BC%91%EF%BC%91&amp;amp;ll=35.694192,139.782893&amp;amp;spn=0.00305,0.00456&amp;amp;z=17&amp;amp;iwloc=A&amp;amp;output=embed&quot; frameborder=&quot;0&quot; width=&quot;425&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;      &lt;br /&gt;&lt;small&gt;&lt;a style=&quot;text-align: left; color: #0000ff&quot; href=&quot;http://maps.google.com/maps?f=q&amp;amp;source=embed&amp;amp;hl=zh-TW&amp;amp;geocode=&amp;amp;q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E4%B8%AD%E5%A4%AE%E5%8C%BA%E6%97%A5%E6%9C%AC%E6%A9%8B%E9%A6%AC%E5%96%B0%E7%94%BA1%E4%B8%81%E7%9B%AE10-11&amp;amp;sll=25.04099,121.549366&amp;amp;sspn=0.015728,0.024655&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=%E6%97%A5%E6%9C%AC%E6%9D%B1%E4%BA%AC%E9%83%BD%E4%B8%AD%E5%A4%AE%E5%8D%80%E6%97%A5%E6%9C%AC%E6%A9%8B%E9%A6%AC%E5%96%B0%E7%94%BA%EF%BC%91%E4%B8%81%E7%9B%AE%E2%88%92%EF%BC%91%EF%BC%90%E2%88%92%EF%BC%91%EF%BC%91&amp;amp;ll=35.694192,139.782893&amp;amp;spn=0.00305,0.00456&amp;amp;z=17&amp;amp;iwloc=A&quot;&gt;檢視較大的地圖&lt;/a&gt;&lt;/small&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;不過訂好後有一點小不滿的地方，很難用 email 和他們聯繫。先是email位址很難找，最後只好從預約單的寄件者位址猜猜看。而且回信速度也很慢，都是等一個禮拜以上才會回，幸好並沒有什麼複雜的問題，不然一定會等到瘋掉。&lt;/p&gt;  &lt;p&gt;當天因為從新宿出發，搭都営地下鉄新宿線到馬喰横山 (這個站剛好特急車有到)，再走一段路從JR的4號出口出去就到了。他的櫃檯在二樓，搭電梯到二樓後就拿出預約單 Check in 了，二樓還有早餐部和免費電腦、影印機。早餐部在早餐時間外，也可以去用咖啡機泡咖啡來喝。&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_FybS-pFs_iQ/SvtHLCZWsBI/AAAAAAAAAiU/yA7FQuP8468/s1600-h/DSCF0785_1%5B2%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;DSCF0785_1&quot; border=&quot;0&quot; alt=&quot;DSCF0785_1&quot; src=&quot;http://lh4.ggpht.com/_FybS-pFs_iQ/SvtHMEVIudI/AAAAAAAAAiY/4Pji3uDnWRw/DSCF0785_1_thumb.jpg?imgmax=800&quot; width=&quot;244&quot; height=&quot;184&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;拿到門房卡後就直接進房間啦，房間並沒有特別大，不過床蠻大的，躺起來很舒服。&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_FybS-pFs_iQ/SvtHMrowawI/AAAAAAAAAic/zYvPmHsodxQ/s1600-h/DSCF0786_1%5B2%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;DSCF0786_1&quot; border=&quot;0&quot; alt=&quot;DSCF0786_1&quot; src=&quot;http://lh3.ggpht.com/_FybS-pFs_iQ/SvtHNFWLJwI/AAAAAAAAAig/1r9H5PpgKrY/DSCF0786_1_thumb.jpg?imgmax=800&quot; width=&quot;244&quot; height=&quot;184&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;床邊有時鐘，還有房間燈、讀書燈、床腳小燈的開關。&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_FybS-pFs_iQ/SvtHNiaKXXI/AAAAAAAAAik/QrVsAmk36DY/s1600-h/DSCF0787_1%5B2%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;DSCF0787_1&quot; border=&quot;0&quot; alt=&quot;DSCF0787_1&quot; src=&quot;http://lh5.ggpht.com/_FybS-pFs_iQ/SvtHOJ75qRI/AAAAAAAAAio/_z_HjyKuj9g/DSCF0787_1_thumb.jpg?imgmax=800&quot; width=&quot;244&quot; height=&quot;184&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;桌上有最重要的網路線，電視則是液晶電視，TV、BS 都有，還可以直接叫節目表出來，看目前有哪些節目。&lt;/p&gt;  &lt;p&gt;不過進房間後才發現沒冷氣，原來櫃檯有貼公告冬天快到了，房間裡強制使用暖氣。可是那幾天天氣快熱死了，晚上雖然涼一點，也還不到開暖氣的程度。只好把它關掉，好險房間內還不會太悶。&lt;/p&gt;  &lt;p&gt;第二天早上先下去吃早餐，早餐樣式還蠻多的，有飯糰、六七種麵包、生菜、咖啡、果汁、水煮蛋、和兩三種說不出是什麼的湯，整體而言吃起來蠻滿意。&lt;/p&gt;  &lt;p&gt;優點：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;離車站近，一樓有超商 &lt;/li&gt;    &lt;li&gt;網路速度快 &lt;/li&gt;    &lt;li&gt;訂房簡單 &lt;/li&gt;    &lt;li&gt;早餐樣式多 &lt;/li&gt;    &lt;li&gt;環境安靜 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;缺點：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;冷氣統一控制 &lt;/li&gt;    &lt;li&gt;馬喰町駅沒有電梯 &lt;/li&gt;    &lt;li&gt;難用 email 聯絡 &lt;/li&gt; &lt;/ul&gt;  </content><link rel='replies' type='application/atom+xml' href='http://blog.ytchiang.net/feeds/4796860585829152503/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.ytchiang.net/2009/11/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/4796860585829152503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/4796860585829152503'/><link rel='alternate' type='text/html' href='http://blog.ytchiang.net/2009/11/blog-post.html' title='東京住宿 - コンフォートホテル東京東日本橋'/><author><name>ccpz</name><uri>http://www.blogger.com/profile/09628084994964002172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_FybS-pFs_iQ/SvtHMEVIudI/AAAAAAAAAiY/4Pji3uDnWRw/s72-c/DSCF0785_1_thumb.jpg?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088507211020672384.post-5507106934707495496</id><published>2009-11-07T09:36:00.001+08:00</published><updated>2009-11-07T09:36:34.201+08:00</updated><title type='text'>新 Narita Express E259 心得</title><content type='html'>&lt;p&gt;這次去日本剛好看到 10/1 E259 車種要開始運轉的消息，就想看看有沒有機會搭乘 (&lt;a href=&quot;http://www.jreast.co.jp/nex/pdf/timetable_from_narita.pdf&quot;&gt;時刻表&lt;/a&gt;標新型的才是 E259)。想不到17:40下飛機，還來的及趕得到18:48那班 NEX 44 新型列車，這次入境和海關都沒問問題，一下就搞定了XD&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_FybS-pFs_iQ/SvTPEzlk2rI/AAAAAAAAAhk/_-VkiTiN8W4/s1600-h/DSCF0758%20%5B1600x1200%5D%5B2%5D.jpg&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;DSCF0758 [1600x1200]&quot; border=&quot;0&quot; alt=&quot;DSCF0758 [1600x1200]&quot; src=&quot;http://lh4.ggpht.com/_FybS-pFs_iQ/SvTPFKlbEkI/AAAAAAAAAho/BxjegaMCTR0/DSCF0758%20%5B1600x1200%5D_thumb.jpg?imgmax=800&quot; width=&quot;244&quot; height=&quot;184&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;車廂內全景，比舊型明亮多了&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_FybS-pFs_iQ/SvTPFsS-ZmI/AAAAAAAAAhs/QiDvlXSeEzA/s1600-h/DSCF0759%20%5B1600x1200%5D%5B2%5D.jpg&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;DSCF0759 [1600x1200]&quot; border=&quot;0&quot; alt=&quot;DSCF0759 [1600x1200]&quot; src=&quot;http://lh6.ggpht.com/_FybS-pFs_iQ/SvTPF3uus5I/AAAAAAAAAhw/snxfjFx6GEY/DSCF0759%20%5B1600x1200%5D_thumb.jpg?imgmax=800&quot; width=&quot;244&quot; height=&quot;184&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;椅子&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_FybS-pFs_iQ/SvTPGVp86FI/AAAAAAAAAh0/MbnuMR5745k/s1600-h/DSCF0760%20%5B1600x1200%5D%5B2%5D.jpg&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;DSCF0760 [1600x1200]&quot; border=&quot;0&quot; alt=&quot;DSCF0760 [1600x1200]&quot; src=&quot;http://lh3.ggpht.com/_FybS-pFs_iQ/SvTPGyzfMsI/AAAAAAAAAh4/YBl2SmyI0pk/DSCF0760%20%5B1600x1200%5D_thumb.jpg?imgmax=800&quot; width=&quot;244&quot; height=&quot;184&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;行李架可以鎖起來&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_FybS-pFs_iQ/SvTPHMoeLZI/AAAAAAAAAh8/XEAWEl0MUVU/s1600-h/DSCF0756%20%5B1600x1200%5D%5B2%5D.jpg&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;DSCF0756 [1600x1200]&quot; border=&quot;0&quot; alt=&quot;DSCF0756 [1600x1200]&quot; src=&quot;http://lh3.ggpht.com/_FybS-pFs_iQ/SvTPHvXkKxI/AAAAAAAAAiA/hnw1cw1qUAg/DSCF0756%20%5B1600x1200%5D_thumb.jpg?imgmax=800&quot; width=&quot;244&quot; height=&quot;184&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;椅子旁的扶手有插座可以充電&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_FybS-pFs_iQ/SvTPH5hYqKI/AAAAAAAAAiE/dkJkBGyYWzo/s1600-h/DSCF0757%20%5B1600x1200%5D%5B2%5D.jpg&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;DSCF0757 [1600x1200]&quot; border=&quot;0&quot; alt=&quot;DSCF0757 [1600x1200]&quot; src=&quot;http://lh4.ggpht.com/_FybS-pFs_iQ/SvTPIfxORWI/AAAAAAAAAiI/W4qrWjOYFi8/DSCF0757%20%5B1600x1200%5D_thumb.jpg?imgmax=800&quot; width=&quot;244&quot; height=&quot;184&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;全彩 LCD，會顯示目前位置、轉乘路線、車站地圖等等&lt;/p&gt;  &lt;p&gt;另外這裡每輛車都有無線網路，訊號經過 AP 後轉成WiMAX 訊號就可以上網了,可惜要$$才能用。總之以 SUICA+Nex 套票 1500 可以搭到這種車，蠻值得搭的。&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://blog.ytchiang.net/feeds/5507106934707495496/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.ytchiang.net/2009/11/narita-express-e259.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/5507106934707495496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/5507106934707495496'/><link rel='alternate' type='text/html' href='http://blog.ytchiang.net/2009/11/narita-express-e259.html' title='新 Narita Express E259 心得'/><author><name>ccpz</name><uri>http://www.blogger.com/profile/09628084994964002172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_FybS-pFs_iQ/SvTPFKlbEkI/AAAAAAAAAho/BxjegaMCTR0/s72-c/DSCF0758%20%5B1600x1200%5D_thumb.jpg?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088507211020672384.post-3571982257180051587</id><published>2009-11-06T07:36:00.002+08:00</published><updated>2009-11-06T07:37:45.261+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="icpc"/><title type='text'>ICPC Manila 2009</title><content type='html'>&lt;p&gt;雖然這次因為超貴的報名費 (一人 $60) 沒去，不過剛剛在 TopCoder 上看到&lt;a href=&quot;http://forums.topcoder.com/?module=Thread&amp;amp;threadID=653538&amp;amp;start=0&amp;amp;mc=33&quot; target=&quot;_blank&quot;&gt;這篇&lt;/a&gt;討論，看起來好 high XD。居然有六隊破台了 (&lt;a href=&quot;http://felix-halim.net/summary.html&quot; target=&quot;_blank&quot;&gt;scoreboard&lt;/a&gt;)，而且還有人發假 mail 騙題目。之後就有人懷疑題目已經洩漏了 XD&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ytchiang.net/feeds/3571982257180051587/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.ytchiang.net/2009/11/icpc-manila-2009.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/3571982257180051587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/3571982257180051587'/><link rel='alternate' type='text/html' href='http://blog.ytchiang.net/2009/11/icpc-manila-2009.html' title='ICPC Manila 2009'/><author><name>ccpz</name><uri>http://www.blogger.com/profile/09628084994964002172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088507211020672384.post-5581237865124568536</id><published>2009-11-05T18:03:00.002+08:00</published><updated>2009-12-04T08:47:32.762+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="程式"/><title type='text'>Printf 特殊技</title><content type='html'>&lt;p&gt;之前因為一些特殊的原因，才發現 printf 除了一般指定變數類型、長度、對齊之外，也有很多很神奇的功能。這些功能在 man page 都有說，不過沒事都不會去從頭看完吧XD。&lt;/p&gt;  &lt;h5&gt;重複使用變數&lt;/h5&gt;  &lt;p&gt;當有一個變數要用 printf 重複印出來時，一般的作法會是這樣：&lt;/p&gt;  &lt;pre style=&quot;border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px&quot;&gt;&lt;pre style=&quot;background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; main()&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;{&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; var=10;&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;printf&lt;/span&gt;(&amp;quot;&lt;span style=&quot;color: #8b0000&quot;&gt;Dec:%d, hex:%x\n&lt;/span&gt;&amp;quot;, var, var);&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;return&lt;/span&gt; 0;&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;}&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;實際上 printf可以指定讀取第幾個變數 (from FreeBSD 7.2-p4 man page)：&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;An optional field, consisting of a decimal digit string followed by a $, specifying the next argument to access.  If this field is not pro-vided, the argument following the last argument accessed will be used.  Arguments are numbered starting at 1.  If unaccessed arguments in the format string are interspersed with ones that are accessed the&lt;br /&gt;results will be indeterminate.&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;因此可以改寫成這樣，後方不用重複給變數：&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;pre style=&quot;border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px&quot;&gt;&lt;pre style=&quot;background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; main()&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;{&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; var=10;&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;printf&lt;/span&gt;(&amp;quot;&lt;span style=&quot;color: #8b0000&quot;&gt;Dec:%d, hex:%1$x\n&lt;/span&gt;&amp;quot;, var);&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;return&lt;/span&gt; 0;&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;}&lt;/pre&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;動態改變長度，精度&lt;/h5&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;大部分的狀況下，輸出的對齊長度都是寫死如 %10d, %-5s 等等靜態字串。如過需要動態變更長度，大都用 sprintf 之類函數產生 format string。不過 printf 並不需要這麼麻煩的作法，只要告訴他 “這裡的長度從後面的變數指定”就好了：&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;A field width or precision, or both, may be indicated by an asterisk `*&#39; or an asterisk followed by one or more decimal digits and a `$&#39; instead of a digit string.  In this case, an int argument supplies the field width or precision.  A negative field width is treated as a left adjust-ment flag followed by a positive field width; a negative precision is treated as though it were missing.  If a single format directive mixes positional (nn$) and non-positional arguments, the results are ndefined.&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;例如一個初學C常見的問題：輸出以*組成的三角形狀&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;table border=&quot;1&quot;&gt;&lt;tbody&gt;&lt;br /&gt;      &lt;tr&gt;&lt;br /&gt;        &lt;td&gt;&lt;pre&gt;*&lt;br /&gt;**&lt;br /&gt;***&lt;br /&gt;****&lt;/pre&gt;&lt;/td&gt;&lt;br /&gt;      &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;用兩個迴圈很簡單，但是如果善用上面的方法，以一個迴圈就可以做到。&lt;br /&gt;&lt;pre style=&quot;border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px&quot;&gt;&lt;pre style=&quot;width: 100%&quot; color=&quot;#fbfbfb&quot; size=&quot;12px&quot; face=&quot;consolas,&amp;#39;Courier New&amp;#39;,courier,monospace&quot;&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; main()&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;{&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; i=0;&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;for&lt;/span&gt;(i=1;i&amp;lt;=10;i++)&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;printf&lt;/span&gt;(&amp;quot;&lt;span style=&quot;color: #8b0000&quot;&gt;%.*s\n&lt;/span&gt;&amp;quot;, i, &amp;quot;&lt;span style=&quot;color: #8b0000&quot;&gt;****************&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;return&lt;/span&gt; 0;&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px&quot;&gt;}&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;在 %s 中，精度是設定最多輸出幾個字元，如 %.10s 就是最多輸出十個字。因此這裡用*動態改變長度，就可以指定每次輸出不同長度。&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;讀變數以外，也可以寫入變數&lt;/h5&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;一般都認為 printf 是讀取指定的變數，顯示在輸出裝置中。但是 printf 也可以反過來，使用 %n 把數值寫入到變數中。&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;n       The number of characters written so far is stored into the inte-ger indicated by the int * (or variant) pointer argument.  No argument is converted.&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;一些軟體的漏洞，就是因為直接把使用者輸入當成 format string，因此輸入 %n 加上適當的計算，就可以改變 return address，取得程式的控制權了，這也是著名的 &lt;a href=&quot;http://en.wikipedia.org/wiki/Format_string_attack&quot; target=&quot;_blank&quot;&gt;Format String Attack&lt;/a&gt;。&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://blog.ytchiang.net/feeds/5581237865124568536/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.ytchiang.net/2009/11/printf.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/5581237865124568536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/5581237865124568536'/><link rel='alternate' type='text/html' href='http://blog.ytchiang.net/2009/11/printf.html' title='Printf 特殊技'/><author><name>ccpz</name><uri>http://www.blogger.com/profile/09628084994964002172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088507211020672384.post-6050052919371846280</id><published>2009-11-04T20:51:00.001+08:00</published><updated>2009-11-04T20:52:57.498+08:00</updated><title type='text'>Post From Live Writter</title><content type='html'>&lt;p&gt;聽說這東西寫 blog 不錯用, 來寫篇文章&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_FybS-pFs_iQ/SvF45bTiJnI/AAAAAAAAAgg/GPQ7mdxw1Es/s1600-h/Okinawa_ROW852526548%5B2%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;Okinawa_ROW852526548&quot; border=&quot;0&quot; alt=&quot;Okinawa_ROW852526548&quot; src=&quot;http://lh3.ggpht.com/_FybS-pFs_iQ/SvF457VKrBI/AAAAAAAAAgo/HQrkIpKMqXY/Okinawa_ROW852526548_thumb.jpg?imgmax=800&quot; width=&quot;244&quot; height=&quot;132&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://blog.ytchiang.net/feeds/6050052919371846280/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.ytchiang.net/2009/11/post-from-live-writter.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/6050052919371846280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/6050052919371846280'/><link rel='alternate' type='text/html' href='http://blog.ytchiang.net/2009/11/post-from-live-writter.html' title='Post From Live Writter'/><author><name>ccpz</name><uri>http://www.blogger.com/profile/09628084994964002172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_FybS-pFs_iQ/SvF457VKrBI/AAAAAAAAAgo/HQrkIpKMqXY/s72-c/Okinawa_ROW852526548_thumb.jpg?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088507211020672384.post-2084676681106643866</id><published>2009-10-29T08:06:00.000+08:00</published><updated>2009-10-29T08:09:59.555+08:00</updated><title type='text'>第一篇文章</title><content type='html'>發個文章試試看吧, 不知道會持續寫多久</content><link rel='replies' type='application/atom+xml' href='http://blog.ytchiang.net/feeds/2084676681106643866/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://blog.ytchiang.net/2009/10/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/2084676681106643866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088507211020672384/posts/default/2084676681106643866'/><link rel='alternate' type='text/html' href='http://blog.ytchiang.net/2009/10/blog-post.html' title='第一篇文章'/><author><name>ccpz</name><uri>http://www.blogger.com/profile/09628084994964002172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>