<?xml version="1.0"?>
<rss version="2.0">

<channel>
	<title>Planet Linux of Taiwan</title>
	<link>http://planet.linux.org.tw/</link>
	<language>en</language>
	<description>Planet Linux of Taiwan - http://planet.linux.org.tw/</description>

<item>
	<title>hoamon's sandbox: 有圖有真相</title>
	<guid>tag:blogger.com,1999:blog-398420085248706856.post-139839740788287368</guid>
	<link>http://feedproxy.google.com/~r/HoamonsSandbox/~3/3OFQK6nZFh0/blog-post.html</link>
	<description>&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://picasaweb.google.com/lh/photo/SETf5FucjOW9jg3bJVSO5Q?feat=embedwebsite&quot;&gt;&lt;img src=&quot;http://lh3.ggpht.com/_eKM9lHjTZjs/Sk6_hnpaBxI/AAAAAAAAB7M/lK1UuZrzjS0/s144/P1030666.JPG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;From &lt;a href=&quot;http://picasaweb.google.com/hoamon/zWqGvC?feat=embedwebsite&quot;&gt;光頭照&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;夏天太熱了，尤其是我現在很愛運動。但是頭髮長得密，熱氣排不出去，讓我的頭冒了很多痘痘，索性趁著這個暑假留個光頭。&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://picasaweb.google.com/lh/photo/8niKXqBk_v400kgnDg4EZA?feat=embedwebsite&quot;&gt;&lt;img src=&quot;http://lh5.ggpht.com/_eKM9lHjTZjs/Sk6_iIGqt0I/AAAAAAAAB7Q/Hpu_06ioA-g/s144/P1030667.JPG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;From &lt;a href=&quot;http://picasaweb.google.com/hoamon/zWqGvC?feat=embedwebsite&quot;&gt;光頭照&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/398420085248706856-139839740788287368?l=hoamon.blogspot.com&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/CknrUVU0aqsiasZvjmZePKZHIVo/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/CknrUVU0aqsiasZvjmZePKZHIVo/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/CknrUVU0aqsiasZvjmZePKZHIVo/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/CknrUVU0aqsiasZvjmZePKZHIVo/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/HoamonsSandbox/~4/3OFQK6nZFh0&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>六, 04  7月 2009 10:37:15 +0000</pubDate>
	<author>noreply@blogger.com (何岳峰 hoamon)</author>
</item>
<item>
	<title>kanru: 升一兵！</title>
	<guid>http://blog.kanru.info/?p=624</guid>
	<link>http://blog.kanru.info/archives/624</link>
	<description>&lt;p&gt;終於過了一個階段，很快就可以出來了 &lt;img src=&quot;http://blog.kanru.info/wp-includes/images/smilies/icon_biggrin.gif&quot; alt=&quot;:D&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://omploader.org/vMXg0eQ&quot; alt=&quot;一兵臂章&quot; /&gt;&lt;/p&gt;</description>
	<pubDate>六, 04  7月 2009 10:18:02 +0000</pubDate>
</item>
<item>
	<title>Fred's blog: LXDE的價值不單只是桌面環境</title>
	<guid>tag:blogger.com,1999:blog-4389461234607418203.post-856506601128170667</guid>
	<link>http://fred-zone.blogspot.com/2009/07/lxde.html</link>
	<description>很榮幸受邀，小弟將於八月15、16日所舉辦的『&lt;a href=&quot;http://coscup.org/&quot;&gt;COSCUP 2009 開源人年會&lt;/a&gt;』給予一場議程，在這短短的時間內，會簡短說明 LXDE(Lightweight X11 Desktop Enviroment) 設計理念和目前、未來發展，以及如何善用 LXDE 的真正價值等相關議題。&lt;br /&gt;&lt;br /&gt;為因應行動裝置當道的時代，羽量級操作環境和系統開始成為眾所矚目的焦點，不單硬體，今日的軟體也開始追求省電、省時、省資源，而且，載體也已經從電腦跨 足到PDA、MID、手機等裝置。過去瘋狂消費硬體能力的軟體設計，勢必不再能立足。反觀思考如何開發輕量的系統，就變成了當前最重要的課題之一。而長久以來，LXDE就在這輕量的課題上多有著墨，其除了可以是一個羽量級桌面環境外，更是一個羽量級軟體的集合，可以協助各個行動裝置快速佈署基本的輕量系統平台。&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4389461234607418203-856506601128170667?l=fred-zone.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>六, 04  7月 2009 09:41:36 +0000</pubDate>
	<author>cfsghost@gmail.com (Fred Chien(錢逢祥))</author>
</item>
<item>
	<title>Asho: 體驗multi-thread decode的mplayer</title>
	<guid>tag:blogger.com,1999:blog-3562335153267203512.post-7501885346619440101</guid>
	<link>http://ashotw.blogspot.com/2009/07/multi-thread-decodemplayer.html</link>
	<description>先前閱讀了GeeXbox的 multi-thread decode 的功能，感到非常有興趣，因為我自已有收藏了許多1080p H264的影片，但我的Althon X2 3600+其實撥不太動。看到了Multi-thread decode的功能，當然要好好嘗試，讓我的 CPU 可以播放高清影片。&lt;br /&gt;&lt;br /&gt;影片格式必須是 Mpeg1/2 H264才可以，大部份的高清片都以Mpeg2, H264為主，所以不用擔心。&lt;br /&gt;&lt;br /&gt;先記錄一下做法。&lt;br /&gt;&lt;br /&gt;1. 下載最新的 mplayer:&lt;br /&gt;svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;&lt;br /&gt;2. 下載 FFmpeg-mt:&lt;br /&gt;git clone git://gitorious.org/~astrange/ffmpeg/ffmpeg-mt.git&lt;br /&gt;&lt;br /&gt;3. 更新 mplayer 的libav*目錄&lt;br /&gt;cd mplayer&lt;br /&gt;rm -fr libav*&lt;br /&gt;cp -a ../ffmpeg-mt/libavformat .&lt;br /&gt;cp -a ../ffmpeg-mt/libavcodec .&lt;br /&gt;cp -a ../ffmpeg-mt/libavutil .&lt;br /&gt;&lt;br /&gt;4. 開始編譯和make&lt;br /&gt;./configure&lt;br /&gt;make&lt;br /&gt;make install&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;編譯完成後，隨便拿一個測試影片(網路上也有提供高清的試看)，執行下列指令來撥放：&lt;br /&gt;mplayer -vc ffh264 -lavdopts threads=[N] movie.mp4 (N代表CPU的核心數)&lt;br /&gt;&lt;br /&gt;撥放時用top來看，可以看到 mplayer 的 loading 會超過100%，而且畫面很順，真是開心極了。按照ffmpeg-mt的官方說法，目前除了Atom N330之外，其它雙核以上CPU都可以順暢。&lt;br /&gt;&lt;br /&gt;這應該是C/P值最高的高清撥放功能了。&lt;br /&gt;&lt;br /&gt;提外話，等我買了Nvidia8系列的顯示放後，再來測試 nvidia-libvdpau 的高清撥放功能。&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3562335153267203512-7501885346619440101?l=ashotw.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>五, 03  7月 2009 19:36:51 +0000</pubDate>
	<author>noreply@blogger.com (阿信)</author>
</item>
<item>
	<title>jserv: 演講：探索嵌入式 ARM 平台與 SoC</title>
	<guid>http://blog.linux.org.tw/~jserv/archives/002111.html</guid>
	<link>http://blog.linux.org.tw/~jserv/archives/002111.html</link>
	<description>七月份，小弟將應 [Study-Area] 之邀，給予一場新的教育訓練，主題為「探索嵌入式 ARM 平台與 SoC 」，嘗試實現過去的一個小心願：以淺顯又直觀的方式，去探討 ARM micro-architecture，以下是該議程相關資訊： 議程簡介：雖然 ARM 嵌入式平台早已充斥於我們的日常生活，舉凡手機、導航系統等電子產品，但探討其原理架構的課程，往往有如英文諺語 &quot;an arm and a leg&quot; 背後的意思一般，所費不貲。講者嘗試整理過去幾年開發的心得，以心得分享的方式，免費介紹 ARM 硬體特性與原理，並以一個具體而微的 RTOS 開發，作為探索架構與軟體驗證的對象。 建議聽者背景： (任一) 已熟悉 C 語言程式設計，並參與過 ARM 平台軟體移植者 對 ARM/RISC 架構開發有興趣者 覺得只要有心，什麼都不是問題的熱血人士 預定提綱： ARM7/ARM9/ARM11 硬體架構快速瀏覽 ARM SoC 平台 關鍵概念：...</description>
	<pubDate>五, 03  7月 2009 00:34:42 +0000</pubDate>
</item>
<item>
	<title>PCMan 的 Blog: [紀念] 生平第一次收到病人來函感謝...</title>
	<guid>http://pcman.sayya.org/blog_read.php?id=pcman&amp;article=90</guid>
	<link>http://pcman.sayya.org/blog_read.php?id=pcman&amp;article=90</link>
	<description>上班即將滿一年了，今天還是第一次收到病人來函感謝 :)
&lt;br /&gt;而且還把住院醫師小弟我列在感謝名單的第一位
&lt;br /&gt;我說雖然這病人還只是個孩子，但這孩子還真上道... XD
&lt;br /&gt;
&lt;br /&gt;雖然說上面還有塗改過的錯字，還畫了海綿寶寶跟派大星
&lt;br /&gt;不過十出頭歲，能有這份心意我覺得很感動了。
&lt;br /&gt;本來我們內科應該不會收到這麼小的病人的，要不是他的症狀太奇怪
&lt;br /&gt;應該是要去小兒科才對的吧？
&lt;br /&gt;
&lt;br /&gt;這份感謝函，最讓我印象深刻的是，他住了兩次院，待過兩個病房
&lt;br /&gt;他把所有曾經照顧過他的大小全體醫護人員，整個工作團隊都列了上去
&lt;br /&gt;不像有些病人，永遠...</description>
	<pubDate>四, 02  7月 2009 21:48:48 +0000</pubDate>
</item>
<item>
	<title>瘋狂帽客's Blog: Compress and encrypt directory in Linux</title>
	<guid>tag:blogger.com,1999:blog-27216830.post-4397924017807321359</guid>
	<link>http://go-linux.blogspot.com/2009/07/compress-and-encrypt-directory-in-linux.html</link>
	<description>&lt;div&gt;直接進入實作步驟~&lt;/div&gt;Compress tools: tar&lt;div&gt;Data encrypt tools: AES Crypt (&lt;a href=&quot;http://www.aescrypt.com/&quot;&gt;http://www.aescrypt.com/&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Objective-1, To backup /etc and encrypt it:&lt;/div&gt;&lt;div&gt;1. 壓縮並加密/etc:&lt;/div&gt;&lt;div&gt;# tar cvf - /etc | aescrypt -e -p 123456 -&gt; etc.tar.aes&lt;/div&gt;&lt;div&gt;(-e: encrypt, -p password)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. 測試etc.tar.aes是否有加密:&lt;/div&gt;&lt;div&gt;&lt;div&gt;[root@localhost ~]# file etc.tar.aes&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;etc.tar.aes: data&lt;/span&gt;&lt;/div&gt;&lt;div&gt;[root@localhost ~]# tar tvf etc.tar.aes&lt;/div&gt;&lt;div&gt;tar: This does not look like a tar archive&lt;/div&gt;&lt;div&gt;tar: Skipping to next header&lt;/div&gt;&lt;div&gt;tar: Archive contains obsolescent base-64 headers&lt;/div&gt;&lt;div&gt;tar: Read 300 bytes from etc.tar.aes&lt;/div&gt;&lt;div&gt;tar: Error exit delayed from previous errors&lt;/div&gt;&lt;div&gt;測試結果發現到etc.tar.aes已經被AES加密了，故無法直接以tar觀看壓縮檔的內容。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Objective-2 To decrypt and uncompress data:&lt;/div&gt;&lt;div&gt;1. 將壓縮檔解密:&lt;/div&gt;&lt;div&gt;# aescrypt -d -p 123456 etc.tgz.aes &lt;/div&gt;&lt;div&gt;解密後會新增一檔案為etc.tar&lt;/div&gt;&lt;div&gt;2. 解壓縮:&lt;/div&gt;&lt;div&gt;# tar xvf etc.tar&lt;/div&gt;&lt;div&gt;如此一來便可解開加密過後的壓縮檔了。&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;其它在Linux上常見的加密工具還有openssl與gpg。&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/27216830-4397924017807321359?l=go-linux.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>四, 02  7月 2009 17:30:00 +0000</pubDate>
	<author>noreply@blogger.com (瘋狂帽客)</author>
</item>
<item>
	<title>Suse寂客: Firefox 3.5更新</title>
	<guid>tag:blogger.com,1999:blog-372032103898166440.post-7975626994196746261</guid>
	<link>http://thesusegeek.blogspot.com/2009/07/firefox-35.html</link>
	<description>Firefox3.5版釋出，效能一整個提昇，記憶體配置吃的也比3.0版來的少一點，切換分頁也有比較順暢。也改進了3.0版經常當掉的bug。有在用的人一定要更新。OpenSUSE 11.1:OpenSUSE 11.0:ps.這次改用meta package.</description>
	<pubDate>四, 02  7月 2009 15:31:26 +0000</pubDate>
	<author>noreply@blogger.com (SuseGeek寂客)</author>
</item>
<item>
	<title>dbtsai: 阿宅的成長日記 ~ 第一屆全國DIY精算組裝王大賽</title>
	<guid>http://www.dbtsai.org/blog/?p=1025</guid>
	<link>https://www.dbtsai.org/blog/2000-11-18-computer-assembling-championship/</link>
	<description>&lt;p&gt;高二這年，為了要追網研社社長 (是可愛的小正妹，我可沒斷袖之癖)，我努力獲得她的認可，當了她的助手，成為副社長。阿宅如我以為，只要把電腦學好，可以幫她搞好社務，加上她和前男友 &amp;#8211; 前網研社社長分手，我就可以近水樓台，進而得月。為了補充知識，每天睡醒第一件事情就是上當時最夯的&lt;a href=&quot;http://www.oc.com.tw&quot;&gt;超頻者天堂&lt;/a&gt;，看別人怎樣可以有效率的冷卻 CPU, 可以把時脈推進。對於當時還是窮學生買不起高檔硬體的我，這是多麼迷人阿！那時候週末的娛樂是到建國商場（高雄最大的電腦商場）窩著，不管是看電腦書也好，和正妹店員打屁聊天也好，日子是很愜意的。或許當時就註定我未來要當阿宅到老了&amp;#8230;XD 記得那時候網購還不怎樣盛行，為了買銅水冷器，還從高雄搭著統聯到台北光華商場（台北最大的電腦商場）購買，稍微逛一下台北後，就直接搭車回家了。&lt;/p&gt;
&lt;p&gt;那時候網路上很少有中文的技術資訊，當時我英文也還不怎樣好，為了深入了解電腦運作原理，PCDIY! 月刊就成為每個月必須要做的功課。當時他們在北科大辦一場精算組裝王大賽，規則是獲選進入台北決賽的人，每一組兩個人共給予兩萬塊現金，其中一個人留在現場搶答知識性問題，結果計入總分內。另外一個人拿著錢，到光華商場直接採購電腦組件，看誰可以在最低的預算組到最快的電腦。總分概括數個部分；(1) 拿到經費後，從採買到回來現場的時間 &amp;#8211; 全程採買都是用跑的，抱著戰果跑回北科，真累人阿！(2) 組裝電腦的速度和正確度 (3) 用 3Dmark benchmark 後的電腦效能 (4) 組裝所花費的錢 (5) 理論組答題正確率等等。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1025&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;當時隔壁班阿宅同好林家戊找我一起組隊參加，網路初賽後，我們被選入 10 組的至尊組合內，挑戰台北科大現場的實地決賽。為了增加搬運貨品效率，提早回到現場，我還自備了一個超大行李袋。隔壁組看到，還問我說多少錢要賣&amp;#8230;笑&amp;#8230;我是負責採買的人，小阿宅體力果然不佳，整天都不運動，或許最大的運動就是看那百分百貼圖區赤裸的擁抱圖吧！比賽跑步搬電腦輸很大，喘的跟牛一般但不牛逼阿！不過下一階段用纖纖巧手組裝電腦，比拼速度，這哪會難倒我？平時五指姑娘可不是訓練假的。按著節奏，很流利的將各個裝置就位，那剎那間，怎主機板風雲變色？我可不記得我買的是血紅 PCB. 細看，那纖玉的手指在噴血，隱約見骨。主辦單位招來救護車，第一次坐上，也蠻鮮的。到馬偕醫院急診手術後，回到比賽現場，發現莫名其妙得第二名&amp;#8230;XD. 原來我搭上救護車時，我組員剛好理論題比賽完，接手我的工作。得獎心得錄影，我強調不要買沒有摺邊的機殼，不然下場就是我手那樣。結果被 cut 掉了，大概怕得罪廠商。得獎勝利品是組裝的電腦加上 17 吋 CRT 螢幕。後來我把電腦賣給班上另外一個同學，隔年幫他裝新硬碟時，還看到血漬。&lt;/p&gt;
&lt;p&gt;Anyway, 以下不只是有圖有真相吶！這可是有錄影存證的！阿宅修電腦到全國第二名，奠定以後大學應付各種學妹的基礎。百百種學妹，我可不想握著屠龍刀嘯成之鋒氣到處屠龍，只好發揮快速組裝維修的技巧來瀟灑地帶過。遇到遙迢淑女，這這這&amp;#8230;更可以嘴砲有多會修電腦，在那閨房先幫其電腦健檢一番，再細細的指導電腦的精要。所謂預防勝於治療。無奈何事於願違，常常是在那修電腦時，學妹與其男友嘿呀老地嘿的聊手機，只能對著螢幕發呆，換來一句學長好厲害。&lt;/p&gt;
&lt;p&gt;好像離題了，嗯！這些種種，終於獲得正妹社長認同，願意當我的好朋友。畢業旅行和她一起走遍那六福村，晚上&amp;#8230;我和她一起玩牌。她會塔羅牌，我和她說，我有喜歡的人，不敢告白！她幫我一算，說鐵定把得到阿，你那們帥！隔天用 BBS 告白了，換來 &amp;#8211; 對不起，你是好人 (ps, ㄟ，女主角是我，塔羅牌算自己不準啦！)。第一次了解事實，心被撕裂。阿宅都馬不屈不饒，好人當到底，在多少個夜裡，一個人忍受那錐心刺骨的言語疼痛 &amp;#8211; 你是好人，可以幫我修電腦嗎？&lt;/p&gt;
&lt;p&gt;經過二十幾個年頭，終於了解，男子漢不是那帶著 PSP 在捷運上打著，用 SONY VAIO 在飛機上看藍光影片，用那千百個宅宅的才華來吸引女生的傾慕。男子漢帥氣中出才是王道！&lt;/p&gt;
&lt;p&gt;
					  &lt;!-- ProPlayer by Isa Goksu --&gt;
						&lt;div name=&quot;mediaspace&quot; id=&quot;mediaspace&quot;&gt;&lt;div class=&quot;pro-player-container&quot; width=&quot;960px&quot; height=&quot;720px&quot;&gt;&lt;div id=&quot;pro-player-1025-0&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
						&amp;amp;						
					
&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;</description>
	<pubDate>四, 02  7月 2009 11:23:32 +0000</pubDate>
</item>
<item>
	<title>jserv: COSCUP 2009 即將到來</title>
	<guid>http://blog.linux.org.tw/~jserv/archives/002110.html</guid>
	<link>http://blog.linux.org.tw/~jserv/archives/002110.html</link>
	<description>一年一度的 [COSCUP / 開源人年會] 即將於八月 15 與 16 兩日舉辦，在台灣各地社群共同舉辦之下，逐漸成長茁壯。今年大會有四個主題： Android 和嵌入式系統 雲端運算和 Web 技術 開發者工具 使用者桌面 據聞，因為講題投稿相當踴躍，主辦單位仍在思量，想必也如過往一般精彩可期。本次 [0xlab] 很榮幸能成為 COSCUP 贊助單位，並分享若干議程，涵蓋 Android 3D、Embedded 開發，與 Linux virtualization 等等。期待您的蒞臨指教，謝謝！...</description>
	<pubDate>四, 02  7月 2009 10:44:20 +0000</pubDate>
</item>
<item>
	<title>KDE@Taiwan 正體中文新聞站: KDE 4.3.0 rc1 釋出！</title>
	<guid>tag:blogger.com,1999:blog-1562631594065881825.post-1638282384821922843</guid>
	<link>http://kdetw.blogspot.com/2009/07/kde-430-rc1.html</link>
	<description>預計在七月底釋出的 KDE 4.3.0，於七月一日釋出了 rc1 版本。KDE 4.3 在 Plasma 外觀主題美工上改變了不少，此外據說修正了許多記憶體管理方面的問題。目前 rc1 版本僅供測試用，不建議一般使用者下載使用。&lt;br /&gt;&lt;br /&gt;這裡是 KDE 4.3.0 rc1 的&lt;a href=&quot;http://www.kde.org/announcements/announce-4.3-rc1.php&quot;&gt;釋出宣告&lt;/a&gt;。&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1562631594065881825-1638282384821922843?l=kdetw.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>四, 02  7月 2009 09:12:12 +0000</pubDate>
	<author>coordinator@kde.linux.org.tw (KDE@Taiwan 正體中文翻譯團隊)</author>
</item>
<item>
	<title>Just in Time: 透過 GNU Emacs 將 source code 轉成 HTML</title>
	<guid>tag:blogger.com,1999:blog-2012913445657966463.post-4739989494336181849</guid>
	<link>http://justintime545.blogspot.com/2009/05/gnu-emacs-source-code-html.html</link>
	<description>有在寫部落或是做網頁的人可能多少都會碰過要將原始碼貼上網頁的清況，不過光是貼上原始碼這一大堆文字確實會讓人讀起來很吃力，現在一般人在看原始碼可能都已經習慣了各種編輯程式所提供的 &lt;a href=&quot;http://en.wikipedia.org/wiki/Syntax_highlighting&quot;&gt;syntax highlighting&lt;/a&gt; 語法標注的功能。可惜這些功能通常只能在本機上使用，一般網頁不太會提供這種功能。還好，網路上有已經有很多人提供解決的方法，有些人是用 &lt;a href=&quot;http://en.wikipedia.org/wiki/Client-side&quot;&gt;client 端&lt;/a&gt;的 JavaScript (&lt;a href=&quot;http://en.wikipedia.org/wiki/CSJS&quot;&gt;CSJS&lt;/a&gt;) 來實作，而有些人是透過 &lt;a href=&quot;http://en.wikipedia.org/wiki/Server-side&quot;&gt;server 端&lt;/a&gt;的 &lt;a href=&quot;http://zh.wikipedia.org/w/index.php?title=PHP&amp;amp;variant=zh-tw&quot;&gt;PHP&lt;/a&gt; 來實作 syntax highlighting 語法標注功能。
&lt;br /&gt;&lt;br /&gt;
此外還有另一種方式，就是先將程式或原始碼先透過網路上的服務或是本機的工具程式先轉成 &lt;a href=&quot;http://zh.wikipedia.org/w/index.php?title=HTML&amp;amp;variant=zh-tw&quot;&gt;HTML&lt;/a&gt;，然後再把 HTML 貼到網路上。這種方法雖然沒有 JavaScript 或 PHP 便捷，但是有些網站基於管理或是安全上的理由，並不允許執行使用者的 JavaScript，有時甚至連 CSS 都無法修改，而 PHP 通常則需要有 server 的管理權限，所以這個方法自然有它的優點。因為 &lt;a href=&quot;http://zh.wikipedia.org/w/index.php?title=Emacs&amp;amp;variant=zh-tw&quot;&gt;Emacs&lt;/a&gt; 是我寫程式慣用的編輯器，它不但對許多原始碼都提供 syntax highlighting 的功能，此外&lt;a href=&quot;http://www.gnu.org/software/emacs/manual/html_node/emacs/Indentation.html#Indentation&quot;&gt;自動縮排的功能&lt;/a&gt;也非常好用，所以也使我想開始尋找 Emacs 是否也具有某種機制可以將 &lt;a href=&quot;http://www.gnu.org/software/emacs/manual/html_node/emacs/Buffers.html#Buffers&quot;&gt;buffer&lt;/a&gt; 中 highlight 過的文字轉成 HTML，如此轉好後就可以直接貼到網路上去了。然而經過一番摸索後似乎沒有發現這樣的功能，但是我並沒有因此而放棄，因為 Emacs 還有內建的 &lt;a href=&quot;http://zh.wikipedia.org/w/index.php?title=%E8%84%9A%E6%9C%AC%E8%AF%AD%E8%A8%80&amp;amp;variant=zh-tw&quot;&gt;script 語言&lt;/a&gt;叫做 &lt;a href=&quot;http://en.wikipedia.org/wiki/Emacs_Lisp&quot;&gt;Emacs Lisp&lt;/a&gt; (或 Elisp) 是個很 powerful 的工具，可以透過它來存取編輯器內部的物件以及執行一些程式化的動作。稍微思考一下並嘗試一些 function 做點小試驗，發現要寫這樣一個程式並不會很難，buffer 中的原始碼 Emacs 都已經幫你 highlight 好了，所以只要將文字的屬性抓出來再根據這些資訊在文字加上對應的 HTML &lt;a href=&quot;http://zh.wikipedia.org/w/index.php?title=%E7%BD%AE%E6%A0%87%E8%AF%AD%E8%A8%80&amp;amp;variant=zh-tw&quot;&gt;markup&lt;/a&gt; 就行了。下面這段程式就是今天努力的結果，程式很簡單不到 200 行 (這個 highlight 過的程式碼也是用該程式本身轉出來的):
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0&quot;&gt;&lt;img src=&quot;http://6554864818333717033-a-1802744773732722657-s-sites.googlegroups.com/site/justinlee5455/files/floppy-disk/floppydisk.png?attredirects=0&amp;amp;auth=ANoY7cpEsZu7WWBQ4aTbbP_JrlrOhd9osyFeZayOQVmemY_XURSW7892viJ7Tnp5AUyzbrJoWOYYeWrM1v-BaGcBsJObuX-L6MY5Y_Qf3liaFf0dVisMccgeE1zkc5US7zruvHDjlNK29XRJApgSoLHDCVJYmece-WMH4c0mYlAfDFKVCw1_SinZTLxgXonGSfmgnn3y6oA8DQ1e2lz5CvbUG23fNabqPFeIQ0Xnto8Bav5VueGRWuQ%3D&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0&quot;&gt;下載 faced-buf2htm.el&lt;/a&gt;&lt;!--
&lt;table border='0' style='margin: 0; padding: 0;'&gt;&lt;tr&gt;&lt;td&gt;&lt;p style='margin: 0; padding: 0;'&gt;&lt;a href='http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0'&gt;&lt;img style='border: none;' alt='floppy disk' src='http://6554864818333717033-a-1802744773732722657-s-sites.googlegroups.com/site/justinlee5455/files/floppy-disk/floppydisk.png?attredirects=0&amp;amp;auth=ANoY7cpEsZu7WWBQ4aTbbP_JrlrOhd9osyFeZayOQVmemY_XURSW7892viJ7Tnp5AUyzbrJoWOYYeWrM1v-BaGcBsJObuX-L6MY5Y_Qf3liaFf0dVisMccgeE1zkc5US7zruvHDjlNK29XRJApgSoLHDCVJYmece-WMH4c0mYlAfDFKVCw1_SinZTLxgXonGSfmgnn3y6oA8DQ1e2lz5CvbUG23fNabqPFeIQ0Xnto8Bav5VueGRWuQ%3D' /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='vertical-align: middle;'&gt;&lt;p style='margin: 0; padding: 0;'&gt;&lt;a href='http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0'&gt;下載 faced-buf2htm.el&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
--&gt;&lt;pre class=&quot;outset-box&quot;&gt;&lt;span&gt;;;; &lt;/span&gt;&lt;span&gt;faced-buf2htm.el --- convert buffer text with face properties into HTML
&lt;/span&gt;&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;Copyright (c) 2009 Justin Lee
&lt;/span&gt;
&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;Author: Justin Lee &amp;lt;cf9404@yahoo.com.tw&amp;gt;
&lt;/span&gt;&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;Created: 24 May 2009
&lt;/span&gt;&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;Version: 1.0
&lt;/span&gt;&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;Keywords:
&lt;/span&gt;
&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;This is free software; you can redistribute it and/or modify it
&lt;/span&gt;&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;under the terms of the GNU General Public License as published by
&lt;/span&gt;&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;the Free Software Foundation; either version 2 of the License, or
&lt;/span&gt;&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;(at your option) any later version.
&lt;/span&gt;
&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;This program is distributed in the hope that it will be
&lt;/span&gt;&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;useful, but WITHOUT ANY WARRANTY; without even the implied
&lt;/span&gt;&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
&lt;/span&gt;&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;PURPOSE.  See the GNU General Public License for more details.
&lt;/span&gt;
&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;You should have received a copy of the GNU General Public
&lt;/span&gt;&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;License along with this program; if not, write to the Free
&lt;/span&gt;&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
&lt;/span&gt;&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;MA 02111-1307 USA
&lt;/span&gt;
&lt;span&gt;;;; &lt;/span&gt;&lt;span&gt;Commentary:
&lt;/span&gt;
(&lt;span&gt;defvar&lt;/span&gt; &lt;span&gt;g-r-dat&lt;/span&gt;)
(&lt;span&gt;defvar&lt;/span&gt; &lt;span&gt;g-g-dat&lt;/span&gt;)
(&lt;span&gt;defvar&lt;/span&gt; &lt;span&gt;g-b-dat&lt;/span&gt;)

(&lt;span&gt;defun&lt;/span&gt; &lt;span&gt;get-cdat&lt;/span&gt; (cv0 cv1)
  (cons cv0 (- cv1 cv0)))

(&lt;span&gt;defun&lt;/span&gt; &lt;span&gt;cv2htmcv&lt;/span&gt; (cv cdat)
  (/ (* 255 (- cv (car cdat)))
     (cdr cdat)))

(&lt;span&gt;defun&lt;/span&gt; &lt;span&gt;cvs2htmcvs&lt;/span&gt; (cvs)
  (format &lt;span&gt;&quot;#%02x%02x%02x&quot;&lt;/span&gt;
          (cv2htmcv (nth 0 cvs) g-r-dat)
          (cv2htmcv (nth 1 cvs) g-g-dat)
          (cv2htmcv (nth 2 cvs) g-b-dat)))

(&lt;span&gt;defun&lt;/span&gt; &lt;span&gt;faced-buf2htm-init&lt;/span&gt; ()
  (&lt;span&gt;let&lt;/span&gt; (a-v1 a-v2)
    (setq a-v1 (color-values &lt;span&gt;&quot;black&quot;&lt;/span&gt;))
    (setq a-v2 (color-values &lt;span&gt;&quot;white&quot;&lt;/span&gt;))
    (setq g-r-dat (get-cdat (nth 0 a-v1) (nth 0 a-v2)))
    (setq g-g-dat (get-cdat (nth 1 a-v1) (nth 1 a-v2)))
    (setq g-b-dat (get-cdat (nth 2 a-v1) (nth 2 a-v2)))

    &lt;span&gt;;;  &lt;/span&gt;&lt;span&gt;Make a face with all attribute values being `&lt;/span&gt;&lt;span&gt;unspecified&lt;/span&gt;&lt;span&gt;'. It is merely used to be
&lt;/span&gt;    &lt;span&gt;;;  &lt;/span&gt;&lt;span&gt;overridden by the inherited face(s) (the last parameter of function `&lt;/span&gt;&lt;span&gt;face-attribute&lt;/span&gt;&lt;span&gt;')
&lt;/span&gt;    &lt;span&gt;;;  &lt;/span&gt;&lt;span&gt;for simulating a merge process.
&lt;/span&gt;    &lt;span&gt;;;&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;    &lt;span&gt;;;  &lt;/span&gt;&lt;span&gt;Emacs help info: You can specify more than one face for a given piece of text; Emacs
&lt;/span&gt;    &lt;span&gt;;;  &lt;/span&gt;&lt;span&gt;merges the attributes of all the faces to determine how to display the text. If a
&lt;/span&gt;    &lt;span&gt;;;  &lt;/span&gt;&lt;span&gt;list of faces is used, attributes from faces earlier in the list override those from
&lt;/span&gt;    &lt;span&gt;;;  &lt;/span&gt;&lt;span&gt;later faces.
&lt;/span&gt;    (make-face 'nil-face)))

&lt;span&gt;;;  &lt;/span&gt;&lt;span&gt;&amp;lt;span style='color:red;'&amp;gt;&amp;lt;s&amp;gt;&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;txt&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;/s&amp;gt;&amp;lt;/span&amp;gt;
&lt;/span&gt;(&lt;span&gt;defun&lt;/span&gt; &lt;span&gt;format-faced-txt&lt;/span&gt; (txt face)
  (&lt;span&gt;let&lt;/span&gt; (a-v1 a-v2 a-v3)
    (setq a-v1 txt)
    (setq a-v1 (replace-regexp-in-string &lt;span&gt;&quot;&amp;amp;&quot;&lt;/span&gt; &lt;span&gt;&quot;&amp;amp;amp;&quot;&lt;/span&gt; a-v1))
    (setq a-v1 (replace-regexp-in-string &lt;span&gt;&quot;&amp;lt;&quot;&lt;/span&gt; &lt;span&gt;&quot;&amp;amp;lt;&quot;&lt;/span&gt; a-v1))
    (setq a-v1 (replace-regexp-in-string &lt;span&gt;&quot;&amp;gt;&quot;&lt;/span&gt; &lt;span&gt;&quot;&amp;amp;gt;&quot;&lt;/span&gt; a-v1))
    (setq a-v1 (list a-v1))
    (setq a-v2 a-v1)

    (setq a-v3 (face-attribute 'nil-face &lt;span&gt;:slant&lt;/span&gt; nil face))
    (&lt;span&gt;unless&lt;/span&gt; (eq a-v3 'unspecified)
      (setq a-v1 (cons &lt;span&gt;&quot;&amp;lt;i&amp;gt;&quot;&lt;/span&gt; a-v1))
      (rplacd a-v2 (list &lt;span&gt;&quot;&amp;lt;/i&amp;gt;&quot;&lt;/span&gt;))
      (setq a-v2 (cdr a-v2)))
    (setq a-v3 (face-attribute 'nil-face &lt;span&gt;:weight&lt;/span&gt; nil face))
    (&lt;span&gt;unless&lt;/span&gt; (eq a-v3 'unspecified)
      (setq a-v1 (cons &lt;span&gt;&quot;&amp;lt;b&amp;gt;&quot;&lt;/span&gt; a-v1))
      (rplacd a-v2 (list &lt;span&gt;&quot;&amp;lt;/b&amp;gt;&quot;&lt;/span&gt;))
      (setq a-v2 (cdr a-v2)))
    (setq a-v3 (face-attribute 'nil-face &lt;span&gt;:underline&lt;/span&gt; nil face))
    (&lt;span&gt;unless&lt;/span&gt; (eq a-v3 'unspecified)
      (setq a-v1 (cons &lt;span&gt;&quot;&amp;lt;u&amp;gt;&quot;&lt;/span&gt; a-v1))
      (rplacd a-v2 (list &lt;span&gt;&quot;&amp;lt;/u&amp;gt;&quot;&lt;/span&gt;))
      (setq a-v2 (cdr a-v2)))
    (setq a-v3 (face-attribute 'nil-face &lt;span&gt;:strike-through&lt;/span&gt; nil face))
    (&lt;span&gt;unless&lt;/span&gt; (eq a-v3 'unspecified)
      (setq a-v1 (cons &lt;span&gt;&quot;&amp;lt;s&amp;gt;&quot;&lt;/span&gt; a-v1))
      (rplacd a-v2 (list &lt;span&gt;&quot;&amp;lt;/s&amp;gt;&quot;&lt;/span&gt;))
      (setq a-v2 (cdr a-v2)))
    (setq a-v3 (face-attribute 'nil-face &lt;span&gt;:foreground&lt;/span&gt; nil face))
    (&lt;span&gt;unless&lt;/span&gt; (eq a-v3 'unspecified)
      (setq a-v1 (append (list &lt;span&gt;&quot;&amp;lt;span style='color: &quot;&lt;/span&gt; (cvs2htmcvs (color-values a-v3)) &lt;span&gt;&quot;;'&amp;gt;&quot;&lt;/span&gt;) a-v1))
      (rplacd a-v2 (list &lt;span&gt;&quot;&amp;lt;/span&amp;gt;&quot;&lt;/span&gt;))
      (setq a-v2 (cdr a-v2)))
    a-v1))

(&lt;span&gt;defun&lt;/span&gt; &lt;span&gt;faced-buf2htm-process&lt;/span&gt; (buf1 buf2)
  (&lt;span&gt;let&lt;/span&gt; (a-v1 a-v2 a-v3 a-v4 a-v5)

    (&lt;span&gt;with-current-buffer&lt;/span&gt; buf1
      (setq a-v1 (point-min)))

    (setq a-v3 t)
    (&lt;span&gt;while&lt;/span&gt; a-v3
      (setq a-v2 (next-single-property-change a-v1 'face buf1))
      (&lt;span&gt;unless&lt;/span&gt; a-v2
        (setq a-v2 (&lt;span&gt;with-current-buffer&lt;/span&gt; buf1 (point-max)))
        (setq a-v3 nil))

      (&lt;span&gt;with-current-buffer&lt;/span&gt; buf1
        (setq a-v4 (buffer-substring a-v1 a-v2)))
      (setq a-v5 (get-text-property 0 'face a-v4))
      (&lt;span&gt;with-current-buffer&lt;/span&gt; buf2
        (apply 'insert (format-faced-txt a-v4 a-v5)))

      (setq a-v1 a-v2))

    ))

&lt;span&gt;;;  &lt;/span&gt;&lt;span&gt;Make sure the text properties are updated by scrolling through the whole buffer.
&lt;/span&gt;(&lt;span&gt;defun&lt;/span&gt; &lt;span&gt;update-txt-prop&lt;/span&gt; ()
  (goto-char (point-min))
  (set-window-start (selected-window) (point-min))
  (scroll-up (1- (count-lines (point-min) (point-max)))))

(&lt;span&gt;defun&lt;/span&gt; &lt;span&gt;faced-buf2htm&lt;/span&gt; ()
  (interactive)
  (&lt;span&gt;let&lt;/span&gt; (a-v1)
    (&lt;span&gt;save-excursion&lt;/span&gt;

      (setq a-v1 (get-buffer-create (generate-new-buffer-name &lt;span&gt;&quot;*HtmlFromFacedBuf*&quot;&lt;/span&gt;)))

      (message nil) (message &lt;span&gt;&quot;Updating text properties of the buffer ...&quot;&lt;/span&gt;)
      (update-txt-prop)

      (&lt;span&gt;with-current-buffer&lt;/span&gt; a-v1
        (insert &lt;span&gt;&quot;&amp;lt;pre&amp;gt;&quot;&lt;/span&gt;))

      (message nil) (message &lt;span&gt;&quot;Converting buffer text ...&quot;&lt;/span&gt;)
      (faced-buf2htm-init)
      (faced-buf2htm-process (current-buffer) a-v1)

      (&lt;span&gt;with-current-buffer&lt;/span&gt; a-v1
        (insert &lt;span&gt;&quot;&amp;lt;/pre&amp;gt;&quot;&lt;/span&gt;)
        (html-mode))

      (switch-to-buffer a-v1)

      )))

(&lt;span&gt;provide&lt;/span&gt; '&lt;span&gt;faced-buf2htm&lt;/span&gt;)

&lt;span&gt;;;;  &lt;/span&gt;&lt;span&gt;Code snippets for experiments.
&lt;/span&gt;
&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;(text-properties-at (point))
&lt;/span&gt;&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;(goto-char (next-property-change (point)))
&lt;/span&gt;&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;(goto-char (next-single-property-change (point) 'face))
&lt;/span&gt;&lt;span&gt;;; &lt;/span&gt;&lt;span&gt;(color-values (face-attribute 'font-lock-type-face :foreground))
&lt;/span&gt;
&lt;span&gt;;;  &lt;/span&gt;&lt;span&gt;(defun update-txt-prop ()
&lt;/span&gt;&lt;span&gt;;;    &lt;/span&gt;&lt;span&gt;(goto-char (point-min))
&lt;/span&gt;&lt;span&gt;;;    &lt;/span&gt;&lt;span&gt;(scroll-up (1- (count-lines (point-min) (point-max)))))
&lt;/span&gt;&lt;span&gt;;;&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;span&gt;;;  &lt;/span&gt;&lt;span&gt;(defun update-txt-prop ()
&lt;/span&gt;&lt;span&gt;;;    &lt;/span&gt;&lt;span&gt;(set-window-start (selected-window) (point-min))
&lt;/span&gt;&lt;span&gt;;;    &lt;/span&gt;&lt;span&gt;(beginning-of-buffer)
&lt;/span&gt;&lt;span&gt;;;    &lt;/span&gt;&lt;span&gt;(scroll-up (1- (count-lines (point-min) (point-max)))))
&lt;/span&gt;&lt;span&gt;;;&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;span&gt;;;  &lt;/span&gt;&lt;span&gt;(defun update-txt-prop ()
&lt;/span&gt;&lt;span&gt;;;    &lt;/span&gt;&lt;span&gt;(beginning-of-buffer)
&lt;/span&gt;&lt;span&gt;;;    &lt;/span&gt;&lt;span&gt;(set-window-start (selected-window) (point-min))
&lt;/span&gt;&lt;span&gt;;;    &lt;/span&gt;&lt;span&gt;(scroll-up (1- (count-lines (point-min) (point-max)))))&lt;/span&gt;&lt;/pre&gt;
程式產生出來的 HTML 中，所有的 style 都是內嵌的，因此沒有需要再修改 CSS，不過缺點就是轉出來的 HTML 碼會比較大。
&lt;br /&gt;&lt;br /&gt;
下面是一個由 PHP 所寫成的簡單 &lt;a href=&quot;http://zh.wikipedia.org/w/index.php?title=Hello_World&amp;amp;variant=zh-tw&quot;&gt;hello world&lt;/a&gt; 範例其轉換前後的對照。轉換前的 PHP 原始碼:
&lt;pre class=&quot;outset-box&quot;&gt;&lt;span&gt;&amp;lt;?php&lt;/span&gt;
&lt;span&gt;echo&lt;/span&gt; &lt;span&gt;&quot;Hello, world!&quot;&lt;/span&gt;;
&lt;span&gt;?&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
轉換後的 HTML 原始碼:
&lt;pre class=&quot;outset-box&quot;&gt;&amp;lt;&lt;span&gt;pre&lt;/span&gt;&amp;gt;&amp;lt;&lt;span&gt;span&lt;/span&gt; &lt;span&gt;style&lt;/span&gt;='color: #5f9ea0;'&amp;gt;&lt;span&gt;&amp;amp;lt;&lt;/span&gt;?php&amp;lt;/&lt;span&gt;span&lt;/span&gt;&amp;gt;
&amp;lt;&lt;span&gt;span&lt;/span&gt; &lt;span&gt;style&lt;/span&gt;='color: #a020f0;'&amp;gt;echo&amp;lt;/&lt;span&gt;span&lt;/span&gt;&amp;gt; &amp;lt;&lt;span&gt;span&lt;/span&gt; &lt;span&gt;style&lt;/span&gt;='color: #bc8f8f;'&amp;gt;&lt;span&gt;&quot;Hello, world!&quot;&lt;/span&gt;&amp;lt;/&lt;span&gt;span&lt;/span&gt;&amp;gt;;
&amp;lt;&lt;span&gt;span&lt;/span&gt; &lt;span&gt;style&lt;/span&gt;='color: #5f9ea0;'&amp;gt;?&lt;span&gt;&amp;amp;gt;&lt;/span&gt;&amp;lt;/&lt;span&gt;span&lt;/span&gt;&amp;gt;
&amp;lt;/&lt;span&gt;pre&lt;/span&gt;&amp;gt;&lt;/pre&gt;

&lt;h2&gt;使用方法&lt;/h2&gt;
使用方法很簡單，先將上面的 Elisp load 進來:

&lt;pre class=&quot;outset-box&quot;&gt;M-x load-file&lt;/pre&gt;

上面輸入後會提示你輸入 Elisp 的路徑:

&lt;pre class=&quot;outset-box&quot;&gt;/path/to/faced-buf2htm.el&lt;/pre&gt;

load 完成後 switch 到任何一個要被轉換的 buffer 然後打:

&lt;pre class=&quot;outset-box&quot;&gt;M-x faced-buf2htm&lt;/pre&gt;

等程式跑完後就會自動開一個新的 buffer，裡面就是轉出來的 HTML，複製下來再貼到網路上去即可。
&lt;h2&gt;實作註記&lt;/h2&gt;
程式主要的功能是將文字的 face 屬性擷取出來並轉成 HTML，當時寫完後開了幾個檔來轉轉看，但是發現有時開一個大一點的檔來轉，轉完了以後某些文字竟然沒有 face 屬性。再多試了幾次以後發現這些沒有 face 的文字大多是落在檔案的後段，不過也有一些例外。最後發現原來這些沒 face 的文字幾乎都是在檔案開啟後，在瀏覽 buffer 的過程中沒有被瀏覽到的文字，所以如果在檔案開啟後，按住 page down 鍵不放，讓 Emacs 從頭捲到尾把整個 buffer 瀏覽一遍就不會有這個問題了。猜想這個現象應該是 Emacs 為了節省開啟檔案的時間或為了減少一些不必要的工作，因此未被瀏覽過的 buffer 部份它就不作 syntax highlighting 所以這些文字也就沒有 face 屬性了。接下來的重點就是如何讓這個瀏覽的動作自動化，以強迫所有的文字屬性都有被更新到。試了幾種方法後終於試出來了，就是程式中 update-txt-prop 函數，只要三行就可以做到:

&lt;pre class=&quot;outset-box&quot;&gt;&lt;span&gt;;;  &lt;/span&gt;&lt;span&gt;Make sure the text properties are updated by scrolling through the whole buffer.
&lt;/span&gt;(&lt;span&gt;defun&lt;/span&gt; &lt;span&gt;update-txt-prop&lt;/span&gt; ()
  (goto-char (point-min))
  (set-window-start (selected-window) (point-min))
  (scroll-up (1- (count-lines (point-min) (point-max)))))&lt;/pre&gt;

因為轉出來的文字會被當成 HTML 來使用，因此在文字中具有 HTML 意義的部份都要 escape 掉以免這些文字被當作 HTML 而造成轉換上的失真。例如 HTML 中的 &lt;a href=&quot;http://en.wikipedia.org/wiki/HTML_tag&quot;&gt;tag&lt;/a&gt; 都是用角括號 (即 ...&gt; ) 括起來的，因此轉換時要將文字中大於 (&gt;) 及小於 () 的符號 escape 掉，以避免包夾在中間的中文字被當作 HTML tag，這裡大於及小於可以用對應的 &lt;a href=&quot;http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references&quot;&gt;character entity reference&lt;/a&gt; 來取代，分別為 &amp;amp;gt; 及 &amp;amp;lt; 除此之外用來起始 character entity reference 的 ampersand (&amp;amp;) 同樣也要用 &amp;amp;amp; 取代掉，所以這就是函數 format-faced-txt 前面幾行所做的工作:

&lt;pre class=&quot;outset-box&quot;&gt;(&lt;span&gt;defun&lt;/span&gt; &lt;span&gt;format-faced-txt&lt;/span&gt; (txt face)
  (&lt;span&gt;let&lt;/span&gt; (a-v1 a-v2 a-v3)
    (setq a-v1 txt)
    (setq a-v1 (replace-regexp-in-string &lt;span&gt;&quot;&amp;amp;&quot;&lt;/span&gt; &lt;span&gt;&quot;&amp;amp;amp;&quot;&lt;/span&gt; a-v1))
    (setq a-v1 (replace-regexp-in-string &lt;span&gt;&quot;&amp;lt;&quot;&lt;/span&gt; &lt;span&gt;&quot;&amp;amp;lt;&quot;&lt;/span&gt; a-v1))
    (setq a-v1 (replace-regexp-in-string &lt;span&gt;&quot;&amp;gt;&quot;&lt;/span&gt; &lt;span&gt;&quot;&amp;amp;gt;&quot;&lt;/span&gt; a-v1))
&lt;span&gt;;                &lt;/span&gt;&lt;span&gt;.                 .
&lt;/span&gt;&lt;span&gt;;                &lt;/span&gt;&lt;span&gt;.                 .
&lt;/span&gt;&lt;span&gt;;                &lt;/span&gt;&lt;span&gt;.                 .&lt;/span&gt;&lt;/pre&gt;

小弟目前所想到需要被 escape 的只有這些符號，其它需要 escape 的符號如果各位前輩有發現的話可以跟小弟告知。此外感謝 &lt;a href=&quot;http://lichihua.blogspot.com/&quot;&gt;alan&lt;/a&gt; 在這篇文章的意見中提到在 &lt;a href=&quot;http://www.emacswiki.org/&quot;&gt;EmacsWiki&lt;/a&gt; 上有一個 package 叫 &lt;a href=&quot;http://www.emacswiki.org/cgi-bin/wiki/Htmlize&quot;&gt;Htmlize&lt;/a&gt; 提供類似但更成熟的功能，各位如果覺得 faced-buf2htm.el 的功能不符合需要，也可以試試 Htmlize。
&lt;br /&gt;&lt;br /&gt;
&lt;span class=&quot;video-title&quot;&gt;Demonstration of source code to HTML conversion by Emacs&lt;/span&gt;&lt;br /&gt;


&lt;!-- escape &amp;amp; &lt; &gt;, update-txt-prop, usage, no css modification --&gt;

&lt;!--

&lt;html style=&quot;direction: ltr;&quot; lang=&quot;zh-tw&quot;&gt;
  &lt;head&gt;
    &lt;meta content=&quot;text/html; charset=UTF-8&quot; http-equiv=&quot;content-type&quot;&gt;
    &lt;title&gt;tst&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;br&gt;&lt;br&gt;
    &lt;a href='http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0'&gt;&lt;img style='vertical-align: bottom; border: none;' src=&quot;bigger.png&quot; /&gt;&lt;/a&gt; &lt;a href='http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0'&gt;下載 faced-buf2htm.el&lt;/a&gt;
&lt;br&gt;

    &lt;a href='http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0'&gt;&lt;img style='vertical-align: middle; border: none;' src=&quot;floppydisk.png&quot; /&gt;&lt;/a&gt; &lt;a href='http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0'&gt;下載 faced-buf2htm.el&lt;/a&gt;
&lt;br&gt;
    &lt;a style='border: 0px solid red;' href='http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0'&gt;&lt;img style='vertical-align: middle; margin: 0; padding: 0; border: 1px solid yellow;' src=&quot;floppydisk.png&quot; /&gt;&lt;/a&gt; &lt;a style='border: 0px solid red;' href='http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0'&gt;下載 faced-buf2htm.el&lt;/a&gt;

    &lt;br&gt;&lt;br&gt;

    &lt;table border='1' style='margin: 0; padding: 0;'&gt;
      &lt;tr&gt;
 &lt;td&gt;
   &lt;p style='margin: 0; padding: 0; border: 1px solid green;'&gt;
     &lt;a style='border: 1px solid blue;' href='http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0'&gt;
       &lt;img style='vertical-align: middle; border: 1px solid yellow;' src=&quot;floppydisk.png&quot; /&gt;&lt;/a&gt;
   &lt;/p&gt;
 &lt;/td&gt;
 &lt;td style='vertical-align: middle;'&gt;
   &lt;p style='margin: 0; padding: 0;'&gt;
     &lt;a href='http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0'&gt;下載 faced-buf2htm.el&lt;/a&gt;
   &lt;/p&gt;
 &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;


    &lt;a style='border: 1px solid red;' href='http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0'&gt;
      XXX
    &lt;/a&gt;
    &lt;a style='border: 1px solid red;' href='http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0'&gt;
      XXX
    &lt;/a&gt;
    &lt;a style='border: 1px solid red;' href='http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0'&gt;
      &lt;img style='vertical-align: middle; margin: 0; padding: 0; border: 1px solid yellow;' src=&quot;bigger.png&quot; /&gt;XXX
    &lt;/a&gt;


    &lt;a style='border: 1px solid red;' href='http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0'&gt;
      &lt;img style='vertical-align: middle; margin: 0; padding: 0; border: 1px solid yellow;' src=&quot;floppydisk.png&quot; /&gt;XXX
    &lt;/a&gt;

    &lt;table border='1' style='margin: 0; padding: 0;'&gt;
      &lt;tr&gt;
 &lt;td&gt;
   &lt;a style='border: 1px solid red;' href='http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0'&gt;
     &lt;img style='vertical-align: middle; margin: 0; padding: 1em; border: 1px solid yellow;' src=&quot;floppydisk.png&quot; /&gt;XXX
   &lt;/a&gt;
 &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt; 


    &lt;table border='1' style='margin: 0; padding: 0;'&gt;
      &lt;tr&gt;
 &lt;td&gt;
   XXX
 &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt; 
    &lt;table border='1' style='margin: 0; padding: 0;'&gt;
      &lt;tr&gt;
 &lt;td&gt;
   &lt;a style='border: 1px solid blue;' href='http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0'&gt;
     XXX
   &lt;/a&gt;
 &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;

    &lt;table border='1' style='margin: 0; padding: 0;'&gt;
      &lt;tr&gt;
 &lt;td&gt;
   &lt;p style='margin: 0; padding: 0; border: 1px solid green;'&gt;     
     &lt;img style='border: 1px solid yellow;' src=&quot;floppydisk.png&quot; /&gt;
   &lt;/p&gt;
 &lt;/td&gt;
 &lt;td style='vertical-align: middle;'&gt;
   &lt;p style='margin: 0; padding: 0;'&gt;
     &lt;a href='http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0'&gt;下載 faced-buf2htm.el&lt;/a&gt;
   &lt;/p&gt;
 &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;

    &lt;table border='1' style='margin: 0; padding: 0;'&gt;
      &lt;tr&gt;
 &lt;td&gt;
   &lt;p style='margin: 0; padding: 0; border: 1px solid green;'&gt;
     &lt;a style='border: 1px solid blue;' href='http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0'&gt;
       &lt;img style='border: 1px solid yellow;' src=&quot;floppydisk.png&quot; /&gt;&lt;/a&gt;
   &lt;/p&gt;
 &lt;/td&gt;
 &lt;td style='vertical-align: middle;'&gt;
   &lt;p style='margin: 0; padding: 0;'&gt;
     &lt;a href='http://sites.google.com/site/justinlee5455/files/faced-buf2htm.el?attredirects=0'&gt;下載 faced-buf2htm.el&lt;/a&gt;
   &lt;/p&gt;
 &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;

  &lt;/body&gt;
&lt;/html&gt;

--&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2012913445657966463-4739989494336181849?l=justintime545.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>四, 02  7月 2009 03:46:58 +0000</pubDate>
	<author>noreply@blogger.com (Justin Lee)</author>
</item>
<item>
	<title>DreamerC: 新版 lxmusic 需要您的幫忙</title>
	<guid>tag:blogger.com,1999:blog-9130859201611042024.post-702482326521010277</guid>
	<link>http://feedproxy.google.com/~r/twemu/~3/iOHbrIBX2J4/lxmusic.html</link>
	<description>&lt;a href=&quot;http://4.bp.blogspot.com/_tKXYv6CJ0R8/SktUEd4x9qI/AAAAAAAAABU/W6moOORTqio/s1600-h/Screenshot-LXMusic.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_tKXYv6CJ0R8/SktUEd4x9qI/AAAAAAAAABU/W6moOORTqio/s320/Screenshot-LXMusic.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5353465017778960034&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;新版 0.3 的 lxmusic 已經上傳到 debian mentors, 需要 sid 內的套件才可以使用&lt;br /&gt;&lt;br /&gt;加入至 /etc/apt/sources.lixt&lt;br /&gt;---&lt;br /&gt;deb http://mirror.nttu.edu.tw/debian/ unstable main contrib non-free&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;需要自行編譯&lt;br /&gt;下載網址&lt;br /&gt;&lt;a href=&quot;http://mentors.debian.net/debian/pool/main/l/lxmusic/&quot;&gt;http://mentors.debian.net/debian/pool/main/l/lxmusic/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;編譯前請確定&lt;br /&gt;你現在使用的 xmms 版本為 0.6DrMattDestruction-1 ,&lt;br /&gt;0.3 和舊版 0.2 並不相容&lt;br /&gt;&lt;br /&gt;Debian 編譯流程如下&lt;br /&gt;---&lt;br /&gt;$dget http://mentors.debian.net/debian/pool/main/l/lxmusic/lxmusic_0.3.0-1.dsc&lt;br /&gt;$sudo apt-get install libxmmsclient-dev libxmmsclient-glib-dev libxmmsclient-glib1 libxmmsclient5 xmms2-dev intltool libgtk2.0-dev pkg-config automake python debhelper autotools-dev&lt;br /&gt;$dpkg-souce -x lxmusic_0.3.0-1.dsc&lt;br /&gt;$cd lxmusic-0.3.0 &amp;amp;&amp;amp; debuild&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;如果發現沒聲音的話，請檢查是否安裝了&lt;br /&gt;xmms2-plugin-alsa (音源輸出)&lt;br /&gt;xmms2-plugin-* (此為你需要的解碼, 如 flac ,mpg123 )&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/9130859201611042024-702482326521010277?l=dreamerc.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>三, 01  7月 2009 20:19:16 +0000</pubDate>
	<author>noreply@blogger.com (DreamerC)</author>
</item>
<item>
	<title>AppleBOY's Blog: [Perl] 解決 Wide character in print with UTF-8 mode</title>
	<guid>http://blog.wu-boy.com/?p=1492</guid>
	<link>http://blog.wu-boy.com/2009/07/01/1492/</link>
	<description>&lt;p&gt;最近在寫 Perl 的程式，發現在正規比對的時候，print 出中文資料會出現 &amp;#8220;&lt;span&gt;Wide character in print at&lt;/span&gt;&amp;#8221; 的 warning 訊息，在 google 找到一篇解決方法：&lt;a href=&quot;http://www.jeffhung.net/blog/articles/jeffhung/417/&quot;&gt;Perl with UTF-8 mode&lt;/a&gt;，這篇提出的解決方法有很多種，comment 留言也有提供解法，可以去看一下，還蠻不錯的，那底下是我參考的解法：&lt;/p&gt;
&lt;p&gt;只要在表頭加上：&lt;/p&gt;
&lt;div class=&quot;codecolorer-container perl &quot;&gt;&lt;div class=&quot;perl codecolorer&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; utf8&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;http://perldoc.perl.org/functions/binmode.html&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;binmode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;STDIN&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;':encoding(utf8)'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;http://perldoc.perl.org/functions/binmode.html&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;binmode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;STDOUT&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;':encoding(utf8)'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;http://perldoc.perl.org/functions/binmode.html&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;binmode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;STDERR&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;':encoding(utf8)'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;完整的檔案如下：&lt;/p&gt;
&lt;div class=&quot;codecolorer-container perl &quot;&gt;&lt;div class=&quot;perl codecolorer&quot;&gt;&lt;span class=&quot;co1&quot;&gt;#! /usr/bin/perl -w&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; Carp&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; File&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;Basename&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; LWP&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;Simple&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; WWW&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;Mechanize&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; LWP&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;UserAgent&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; WWW&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;Shorten&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;'0rz'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; Getopt&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;Std&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; DBI&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; utf8&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;http://perldoc.perl.org/functions/binmode.html&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;binmode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;STDIN&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;':encoding(utf8)'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;http://perldoc.perl.org/functions/binmode.html&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;binmode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;STDOUT&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;':encoding(utf8)'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;http://perldoc.perl.org/functions/binmode.html&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;binmode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;STDERR&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;':encoding(utf8)'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;co5&quot;&gt;$_&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=~&lt;/span&gt; &lt;span class=&quot;co2&quot;&gt;m/\s*&amp;lt;div\s*class=&amp;quot;title&amp;quot;&amp;gt;&amp;lt;a\s*href=&amp;quot;.+&amp;quot;&amp;gt;(.+)&amp;lt;\/a&amp;gt;&amp;lt;\/div&amp;gt;\s*/&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span class=&quot;re0&quot;&gt;$pic_desc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;co3&quot;&gt;$1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;a href=&quot;http://perldoc.perl.org/functions/print.html&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;print&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;desc: &amp;quot;&lt;/span&gt; . &lt;span class=&quot;co3&quot;&gt;$1&lt;/span&gt; . &lt;span class=&quot;st0&quot;&gt;&amp;quot; &lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$verbose&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3&gt;Related View&lt;/h3&gt;
&lt;ul class=&quot;related_post&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.wu-boy.com/2009/06/17/1461/&quot; title=&quot;[MySQL] 利用 perl 單行印出 my.cnf&quot;&gt;[MySQL] 利用 perl 單行印出 my.cnf (0)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
	<pubDate>三, 01  7月 2009 16:30:03 +0000</pubDate>
</item>
<item>
	<title>jserv: 針對 ARMv7 優化的 Android</title>
	<guid>tag:blogger.com,1999:blog-1795333590425870072.post-6015709184538132976</guid>
	<link>http://jserv.blogspot.com/2009/07/armv7-android.html</link>
	<description>前文「&lt;a href=&quot;http://jserv.blogspot.com/2009/06/android-gnu-toolchain-gcc-44.html&quot;&gt;升級 Android 內建 GNU Toolchain 到 gcc 4.4&lt;/a&gt;」提及使用更新的編譯器平台，現在追蹤的是 gcc 4.4/4.5，不排除引入 &lt;a href=&quot;http://llvm.org/&quot;&gt;LLVM&lt;/a&gt;，這些準備都是為了允許施加更多優化、展現平台的特性，而在 Android 的 build system 也需要作一些更動，至少涵蓋以下：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;針對硬體平台的編譯參數&lt;/li&gt;&lt;li&gt;Dalvik machine-dependent interpreter implementation (mterp)&lt;/li&gt;&lt;li&gt;針對硬體特徵優化的關鍵軟體，如 BlueZ 中處理音訊 Bluetooth low-complexity, subband codec (SBC) 的實做&lt;/li&gt;&lt;/ul&gt;當然優化是無止盡的，我們只求在合理的工程資源，能解決夠多的技術議題即可。筆者的參考修改可見 &lt;a href=&quot;http://tick.is-a-geek.net/%7Ejserv/android-armv7.patch&quot;&gt;android-armv7.patch&lt;/a&gt;，其中做了以下調整：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;設定 gcc 編譯參數為 &quot;-march=armv7-a -mtune=cortex-a8 -mfpu=neon&quot;，適用於 BeagleBoard (TI OMAP 353x) 平台&lt;/li&gt;&lt;li&gt;額外啟動 gcc 的 &lt;a href=&quot;http://gcc.gnu.org/projects/tree-ssa/vectorization.html&quot;&gt;Auto-vectorization&lt;/a&gt; 優化策略&lt;/li&gt;&lt;li&gt;以 ARM NEON 指令集優化 SBC 的執行效能&lt;/li&gt;&lt;/ul&gt;前期我們還是著重於泛 ARMv7 平台的優化技術，再來就是針對 SoC 平台的 DSP 與特性去作進一步處理。為了證明以上的修改發揮作用，可檢視 libjpeg 是否自動的做了 vectorized，也就是看看有無 ARM NEON 指令集的生成：&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;# ./prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-objdump -d \&lt;br /&gt;out/target/product/generic/obj/STATIC_LIBRARIES/libjpeg_intermediates/jdmerge.o | egrep &quot;v[add|mov]&quot;&lt;br /&gt;1d4:   f2c09012        vmov.i32        d25, #2 ; 0x00000002&lt;br /&gt;1d8:   f3c01210        vmov.i32        d17, #32768     ; 0x00008000&lt;br /&gt;200:   f26048a9        vadd.i32        d20, d16, d25&lt;br /&gt;204:   f22069b8        vmul.i32        d6, d16, d24&lt;br /&gt;208:   f26438a9        vadd.i32        d19, d20, d25&lt;br /&gt;20c:   f2266821        vadd.i32        d6, d6, d17&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;至於 ARM NEON 指令集，這裡不贅述，可參考 ARM 官方文獻 &lt;a href=&quot;http://www.arm.com/products/multimedia/neon/&quot;&gt;NEON Technology&lt;/a&gt;。&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1795333590425870072-6015709184538132976?l=jserv.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>三, 01  7月 2009 14:12:44 +0000</pubDate>
	<author>noreply@blogger.com (jserv)</author>
</item>
<item>
	<title>肥加洛的Linux學習網: Mozilla Firefox 3.5 可以更新了 – openSUSE 11.1</title>
	<guid>http://figaro.neo-info.net/?p=479</guid>
	<link>http://figaro.neo-info.net/?p=479</link>
	<description>&lt;p&gt;Mozilla Firefox 3.5 於昨日釋出之後，OpenSUSE 11.1 的更新頻道中也已經提供下載使用了，有興趣的朋友可以將http://download.opensuse.org/repositories/mozilla/openSUSE_11.1/ 這個頻道加入，操作方式如下所示：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;zypper ar http://download.opensuse.org/repositories/mozilla/openSUSE_11.1/ mozilla&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;zypper up MozillaFirefox&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;目前新版本不支援 Beagle Indexer 1.1.0，也尚未提供更新，因此暫時會被停用。此次版本新增功能如下，有興趣的朋友可以更新使用：( 以下轉載自 &lt;a href=&quot;http://moztw.org/firefox/releases/&quot; target=&quot;_blank&quot;&gt;moztw.org &lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Firefox 3.5 以去年尚開發中的 Gecko 1.9.1 排版引擎為基礎，相對於舊版 Firefox 提供了許多改變，支援新的網頁技術、增進效能，且容易使用。值得一提的功能包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;提供超過 70 種語言支援。（取得您的&lt;a href=&quot;http://moztw.org/en-US/firefox/all.html#languages&quot;&gt;本地化版本&lt;/a&gt;！）&lt;/li&gt;
&lt;li&gt;支援 HTML5 &amp;lt;video&amp;gt; 和 &amp;lt;audio&amp;gt; 元素，包括對 &lt;a href=&quot;http://hacks.mozilla.org/2009/06/update-on-open-video-quality/&quot;&gt;Ogg Theora 編碼影像&lt;/a&gt;和 Vorbis 編碼聲音的原生支援。（&lt;a href=&quot;http://www.mozilla.com/firefox/video/&quot;&gt;在這裡試試！&lt;/a&gt;）&lt;/li&gt;
&lt;li&gt;增進您控制個人隱私資料的工具，包括&lt;a href=&quot;http://support.mozilla.com/en-US/kb/Private+Browsing&quot;&gt;私密瀏覽模式&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;更好的網頁應用程式效能，使用新的 &lt;a href=&quot;https://wiki.mozilla.org/JavaScript:TraceMonkey&quot;&gt;TraceMonkey&lt;/a&gt; JavaScript 引擎。&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.mozilla.com/firefox/geolocation&quot;&gt;地理定位功能&lt;/a&gt;可以將您的地理位置資訊分享給網站。（&lt;a href=&quot;http://www.flickr.com/map&quot;&gt;在這裡試試！&lt;/a&gt;）&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.mozilla.com/webdev/2009/02/12/native-json-in-firefox-31/&quot;&gt;原生的 JSON 支援&lt;/a&gt; 和 &lt;a href=&quot;https://developer.mozilla.org/En/Using_DOM_workers&quot;&gt;網頁工作執行緒&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;Gecko 排版引擎的加強，包括預測解析以加速頁面描繪。&lt;/li&gt;
&lt;li&gt;支援新的網頁技術，例如：動態下載字型、CSS 媒體型態查詢、新的變形與屬性、JavaScript 查詢選擇器、HTML5 本地端儲存及離線應用程式儲存、&amp;lt;canvas&amp;gt; 文字、&lt;a href=&quot;http://hacks.mozilla.org/2009/06/color-correction/&quot;&gt;ICC 設定檔&lt;/a&gt;，以及 SVG 變形特效。&lt;/li&gt;
&lt;/ul&gt;</description>
	<pubDate>三, 01  7月 2009 10:00:17 +0000</pubDate>
</item>
<item>
	<title>Suse寂客: openSUSE 每週新聞第78期</title>
	<guid>tag:blogger.com,1999:blog-372032103898166440.post-7208663962913526775</guid>
	<link>http://thesusegeek.blogspot.com/2009/07/opensuse-78-opensuse-30000-google.html</link>
	<description>本期摘要： openSUSE 論壇已經達到 30,000 使用者  Google 夏日程式碼大賽狀態回報  Jigish Gohil : 使用 SuSEfirewall 防範 SSH 暴力攻擊  metaverse: 給作家使用的更多自由且開源碼工具  openSUSE 論壇: 在 SUSE 中如何開啟 .docx 檔案？本土社群活動：與openSUSE來個夏日約會(6/27)完整閱讀openSUSE Weekly News 繁體中文版第78期openSUSE Weekly News 繁體翻譯計劃openSUSE每週新聞由本土社群完成譯稿後於每週二晚上發佈</description>
	<pubDate>三, 01  7月 2009 08:56:29 +0000</pubDate>
	<author>noreply@blogger.com (SuseGeek寂客)</author>
</item>
<item>
	<title>Fred's blog: 小心移除 GList 裡的 Node</title>
	<guid>tag:blogger.com,1999:blog-4389461234607418203.post-6202435698007210757</guid>
	<link>http://fred-zone.blogspot.com/2009/07/glist-node.html</link>
	<description>最近忙著開發新的 LXNM(Lightweight Network Manager)，但在開發的過程中碰到了一個 Critical Bug，該 Bug 會讓 LXNM Daemon Crashes。難過的是，已經費盡心思卻仍然找不出問題所在，以致浪費好多時間在 debug。最後多虧了 Paulliu 的協助，終於找出了程式中臭蟲，令人想不到的是，問題居然是出在 GList 的操作。&lt;br /&gt;&lt;br /&gt;這問題出在於移除 GList 裡的 Node 之後，再讀取下一個 Node 時會 Crash，這有一個簡化後的錯誤範例：&lt;br /&gt;&lt;div&gt;&lt;pre&gt;GList *node;&lt;br /&gt;&lt;br /&gt;for (node=mylist;node;node=g_list_next(node)) {&lt;br /&gt;    mylist = g_list_delete_link(mylist, node);&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;這樣表面看起來或許沒有錯誤，但以 Link-list 的基礎觀點來看，卻馬上可以發現到問題所在。該程式中，當迴圈進行到第二輪時，會因為 g_list_next()  無法取得下一個 Node 而死在那裡，因為供參考的 Node 已經在第一輪迴圈就被刪除，我們無法取得其 Node-&gt;next，當然就會發生錯誤。因此，需要稍微修改，以避免掉這樣的問題：&lt;br /&gt;&lt;div&gt;&lt;pre&gt;GList *node;&lt;br /&gt;GList *next_node;&lt;br /&gt;&lt;br /&gt;for (node=mylist;node;node=next_node) {&lt;br /&gt;    next_node = g_list_next(node);&lt;br /&gt;    mylist = g_list_delete_link(mylist, node);&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;GLib 提供的 API 包裝，讓懶惰的我們可以很輕鬆的建立和操作 Link-list，當然難免就會不小心寫出像這樣有問題的 Code 來。因此，對程式開發者而言，就算 GLib 再方便好用，資料結構和各種演算法的理論還是無法完全拋棄。&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4389461234607418203-6202435698007210757?l=fred-zone.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>三, 01  7月 2009 08:22:33 +0000</pubDate>
	<author>cfsghost@gmail.com (Fred Chien(錢逢祥))</author>
</item>
<item>
	<title>erin: few notes about android bluetooth</title>
	<guid>tag:blogger.com,1999:blog-6730068706524524033.post-767324296301658370</guid>
	<link>http://i-miss-erin.blogspot.com/2009/05/few-notes-for-android-bluetooth.html</link>
	<description>&lt;span&gt;bluez version3.36 source code in Android git&lt;/span&gt;&lt;span&gt;&lt;br /&gt;git://android.git.kernel.org/platform/external/bluez.git&lt;br /&gt;&lt;br /&gt;&lt;span&gt;start bluetooth manually&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Pull high in BT power&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class=&quot;highlight&quot;&gt;#echo 1 &gt; /sys/class/rfkill/rfkill0/state&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Load BT firmware to hci stack&lt;/span&gt;&lt;br /&gt;&lt;div class=&quot;highlight&quot;&gt;# hciattach -n -s 115200 /dev/ttyHS0 texas 4000000 flow&lt;/div&gt;&lt;br /&gt;Texas module LMP version : 0X3&lt;br /&gt;Texas module LMP sub-version : 0X1126&lt;br /&gt;    internal version freeze: 38&lt;br /&gt;    software version: 2&lt;br /&gt;    chip: brf6300 (4)&lt;br /&gt;Setting speed to 4000000&lt;br /&gt;Texas speed changed to 4000000.&lt;br /&gt;Loading firmware from /etc/firmware/brf6300.bin...&lt;br /&gt;Firmware load successful.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Start HCI device&lt;/span&gt;&lt;br /&gt;&lt;div class=&quot;highlight&quot;&gt;# hciconfig hci0 up&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Start HCI daemon&lt;/span&gt;&lt;br /&gt;&lt;div class=&quot;highlight&quot;&gt;# hcid -s -n -f /etc/bluez/hcid.conf&lt;/div&gt;&lt;br /&gt;hcid[307]: Bluetooth HCI daemon&lt;br /&gt;hcid[307]: Device hci0 has been activated&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Gettingthe current values from dbus:&lt;/span&gt;&lt;br /&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;br /&gt;# dbus-send --system --type=method_call --print-reply --dest=org.bluez /org/bluez/hci0 org.bluez.Adapter.GetMode&lt;br /&gt;# dbus-send --system --type=method_call --print-reply --dest=org.bluez /org/bluez/hci0 org.bluez.Adapter.GetDiscoverableTimeout&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span&gt;Changing to discoverable mode and setting the timeout to 60 seconds&lt;/span&gt;&lt;br /&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;br /&gt;# dbus-send --system --type=method_call --print-reply --dest=org.bluez /org/bluez/hci0 org.bluez.Adapter.SetMode string:discoverable&lt;br /&gt;# dbus-send --system --type=method_call --print-reply --dest=org.bluez /org/bluez/hci0 org.bluez.Adapter.SetDiscoverableTimeout uint32:60&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;check bluetooth is On or Off&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;div class=&quot;highlight&quot;&gt;# ps | grep hci&lt;/div&gt;&lt;br /&gt;325 1002        744 S   /system/bin/hciattach -n -s 115200 /dev/ttyHS0 texas&lt;br /&gt;326 1002       1608 S   /system/bin/hcid -s -n -f /etc/bluez/hcid.conf&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;bluetooth configuration file:&lt;/span&gt;&lt;span&gt;&lt;br /&gt;/etc/bluez/hcid.conf&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;hcid.conf manual&lt;/span&gt;&lt;span&gt;&lt;br /&gt;http://linux.die.net/man/5/hcid.conf&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;check bluetooth device in detail&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;div class=&quot;highlight&quot;&gt;# hciconfig -a&lt;/div&gt;&lt;br /&gt;hci0:    Type: UART&lt;br /&gt;BD Address: 00:22:A5:B8:AD:65 ACL MTU: 1021:4 SCO MTU: 180:4&lt;br /&gt;UP RUNNING PSCAN&lt;br /&gt;RX bytes:2271 acl:18 sco:0 events:66 errors:0&lt;br /&gt;TX bytes:1156 acl:16 sco:0 commands:39 errors:0&lt;br /&gt;Features: 0xff 0xff 0x2d 0xfe 0x9b 0xf9 0x00 0x80&lt;br /&gt;Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3&lt;br /&gt;Link policy: RSWITCH HOLD SNIFF PARK&lt;br /&gt;Link mode: SLAVE ACCEPT&lt;br /&gt;Name: 'g1mokoko'&lt;br /&gt;Class: 0x48010c&lt;br /&gt;Service Classes: Capturing, Telephony&lt;br /&gt;Device Class: Computer, Laptop&lt;br /&gt;HCI Ver: 2.0 (0x3) HCI Rev: 0x0 LMP Ver: 2.0 (0x3) LMP Subver: 0x1126&lt;br /&gt;Manufacturer: Texas Instruments Inc. (13)&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;highlight&quot;&gt;# dmesg | grep Blue&lt;/div&gt;&lt;br /&gt;[    5.751220] Bluetooth: HCI UART driver ver 2.2&lt;br /&gt;[    5.751525] Bluetooth: HCI H4 protocol initialized&lt;br /&gt;[    5.751831] Bluetooth: HCILL protocol initialized&lt;br /&gt;[    5.767395] Bluetooth: L2CAP ver 2.11&lt;br /&gt;[    5.767669] Bluetooth: L2CAP socket layer initialized&lt;br /&gt;[    5.768005] Bluetooth: SCO (Voice Link) ver 0.6&lt;br /&gt;[    5.768524] Bluetooth: SCO socket layer initialized&lt;br /&gt;[    5.782531] Bluetooth: RFCOMM socket layer initialized&lt;br /&gt;[    5.782928] Bluetooth: RFCOMM TTY layer initialized&lt;br /&gt;[    5.783599] Bluetooth: RFCOMM ver 1.10&lt;br /&gt;[    5.783905] Bluetooth: BNEP (Ethernet Emulation) ver 1.3&lt;br /&gt;[    5.784210] Bluetooth: HIDP (Human Interface Emulation) ver 1.2&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Scan nearby bluetooth devices&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;div class=&quot;highlight&quot;&gt;# hcitool scan &lt;/div&gt;&lt;br /&gt;Scanning ...&lt;br /&gt;00:22:43:C6:5B:B9    daydreamer-0&lt;br /&gt;00:18:C5:42:18:78    Erin-Nokia N73&lt;br /&gt;00:1E:52:6D:E8:E9    erin's keyboard&lt;br /&gt;00:0F:79:08:D4:05    GgBlu&lt;br /&gt;00:07:61:4B:20:3B    Bluetooth Travel Mouse&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Check what service it has:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;AVRCP,A2DP,HandsFree, Headset&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;div class=&quot;highlight&quot;&gt;# sdptool browse local&lt;/div&gt;&lt;br /&gt;Browsing FF:FF:FF:00:00:00 ...&lt;br /&gt;Service Name: Audio Source&lt;br /&gt;Service RecHandle: 0x10000&lt;br /&gt;Service Class ID List:&lt;br /&gt;&quot;Audio Source&quot; (0x110a)&lt;br /&gt;Protocol Descriptor List:&lt;br /&gt;&quot;L2CAP&quot; (0x0100)&lt;br /&gt;PSM: 25&lt;br /&gt;&quot;AVDTP&quot; (0x0019)&lt;br /&gt;uint16: 0x100&lt;br /&gt;Profile Descriptor List:&lt;br /&gt;&quot;Advanced Audio&quot; (0x110d)&lt;br /&gt;Version: 0x0100&lt;br /&gt;&lt;br /&gt;Service Name: AVRCP TG&lt;br /&gt;Service RecHandle: 0x10001&lt;br /&gt;Service Class ID List:&lt;br /&gt;&quot;AV Remote Target&quot; (0x110c)&lt;br /&gt;Protocol Descriptor List:&lt;br /&gt;&quot;L2CAP&quot; (0x0100)&lt;br /&gt;PSM: 23&lt;br /&gt;&quot;AVCTP&quot; (0x0017)&lt;br /&gt;uint16: 0x100&lt;br /&gt;Profile Descriptor List:&lt;br /&gt;&quot;AV Remote&quot; (0x110e)&lt;br /&gt;Version: 0x0100&lt;br /&gt;&lt;br /&gt;Service Name: Voice Gateway&lt;br /&gt;Service RecHandle: 0x10002&lt;br /&gt;Service Class ID List:&lt;br /&gt;&quot;Headset Audio Gateway&quot; (0x1112)&lt;br /&gt;&quot;Generic Audio&quot; (0x1203)&lt;br /&gt;Protocol Descriptor List:&lt;br /&gt;&quot;L2CAP&quot; (0x0100)&lt;br /&gt;&quot;RFCOMM&quot; (0x0003)&lt;br /&gt;Channel: 11&lt;br /&gt;Profile Descriptor List:&lt;br /&gt;&quot;Headset&quot; (0x1108)&lt;br /&gt;Version: 0x0100&lt;br /&gt;&lt;br /&gt;Service Name: Voice Gateway&lt;br /&gt;Service RecHandle: 0x10003&lt;br /&gt;Service Class ID List:&lt;br /&gt;&quot;Handsfree Audio Gateway&quot; (0x111f)&lt;br /&gt;&quot;Generic Audio&quot; (0x1203)&lt;br /&gt;Protocol Descriptor List:&lt;br /&gt;&quot;L2CAP&quot; (0x0100)&lt;br /&gt;&quot;RFCOMM&quot; (0x0003)&lt;br /&gt;Channel: 10&lt;br /&gt;Profile Descriptor List:&lt;br /&gt;&quot;Handsfree&quot; (0x111e)&lt;br /&gt;Version: 0x0105&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Connect to bluetooth keyboard&lt;/span&gt;&lt;span&gt;&lt;br /&gt;add these lines to /etc/bluez/hcid.conf&lt;br /&gt;device 00:1E:52:6D:E8:E9 {&lt;br /&gt;name “Bluetooth Keyboard”;&lt;br /&gt;auth enable;&lt;br /&gt;encrypt enable;&lt;br /&gt;}&lt;br /&gt;&lt;div class=&quot;highlight&quot;&gt;# hidd --connect 00:1E:52:6D:E8:E9&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Connect to bluetooth mice&lt;/span&gt;&lt;span&gt;&lt;br /&gt;add these lines to /etc/bluez/hcid.conf&lt;br /&gt;device 00:07:61:4B:20:3B {&lt;br /&gt;name “Bluetooth Mouse”;&lt;br /&gt;}&lt;br /&gt;&lt;div class=&quot;highlight&quot;&gt;# hidd --connect 00:07:61:4B:20:3B&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Confirm the connections&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;div class=&quot;highlight&quot;&gt; hidd --show&lt;/div&gt;&lt;br /&gt;00:1E:52:6D:E8:E9 Bluetooth HID Boot Protocol Device [0000:0000] connected [boot-protocol]&lt;br /&gt;00:07:61:4B:20:3B Bluetooth HID Boot Protocol Device [0000:0000] connected [boot-protocol]&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6730068706524524033-767324296301658370?l=i-miss-erin.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>三, 01  7月 2009 01:37:23 +0000</pubDate>
	<author>icedventilatte17@gmail.com (erin)</author>
</item>
<item>
	<title>黑眼珠: openSUSE 每週新聞第78期已經上線</title>
	<guid>tag:blogger.com,1999:blog-6801276157614040111.post-1814402064695135575</guid>
	<link>http://swyear.blogspot.com/2009/07/opensuse-78.html</link>
	<description>本期摘要：&lt;br /&gt;&lt;ul&gt;&lt;li&gt; openSUSE 論壇已經達到 30,000 使用者 &lt;/li&gt;&lt;li&gt; Google 夏日程式碼大賽狀態回報 &lt;/li&gt;&lt;li&gt; Jigish Gohil : 使用 SuSEfirewall 防範 SSH 暴力攻擊 &lt;/li&gt;&lt;li&gt; metaverse: 給作家使用的更多自由且開源碼工具 &lt;/li&gt;&lt;li&gt; openSUSE 論壇: 在 SUSE 中如何開啟 .docx 檔案？&lt;/li&gt;&lt;/ul&gt;完整閱讀&lt;br /&gt;&lt;a href=&quot;http://zh_tw.opensuse.org/OpenSUSE_Weekly_News/78&quot;&gt;openSUSE Weekly News 繁體中文版第78期&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://zh_tw.opensuse.org/OpenSUSE_Weekly_News&quot;&gt;openSUSE Weekly News 繁體翻譯計劃&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6801276157614040111-1814402064695135575?l=swyear.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>三, 01  7月 2009 00:42:39 +0000</pubDate>
	<author>noreply@blogger.com (swyear)</author>
</item>
<item>
	<title>EdwardLee: 科學濃縮中藥的話題</title>
	<guid>http://blog.bs2.to/post/EdwardLee/18360</guid>
	<link>http://blog.bs2.to/post/EdwardLee/18360</link>
	<description>最近科學濃縮中藥（科中）的話題炒得滿天飛。裡頭似乎是內幕重重，不過，這些內幕有許多都是未經證實。&lt;p&gt;

&lt;a href=&quot;http://anhydride.pixnet.net/blog/post/28249530&quot;&gt;http://anhydride.pixnet.net/blog/post/28249530&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://anhydride.pixnet.net/blog/post/27714806&quot;&gt;http://anhydride.pixnet.net/blog/post/27714806&lt;/a&gt;&lt;p&gt;&lt;br /&gt;這其中，藥廠會比較看重誰的意見呢？顯然是中醫院、診所的中醫師的需求，畢竟他們才是這些藥廠的最大主顧。&lt;p&gt;

但我們小老百姓可沒有想那麼複雜，我們只是想服用較為安全的科中而已。因為各廠的競爭關係，他們所說的話都不可盡信，我們只是想在各種品管方面，有關單位能夠把關好，不管是哪家藥廠的產品，讓我們用得安心，僅此而已。所以，這裡建議出來說話的藥廠、醫師或業務，你們不必說那麼多的內幕，我們想聽的是：&lt;p&gt;

   1. 如果有相反意見，是否請提出檢測數據，而不是空口保證。&lt;br /&gt;
   2. 如果自信藥廠的品管都能做到外國的標準，那麼請衛生署就訂定跟得上外國腳步的標準不就好了？&lt;br /&gt;
   3. 是否能請具公信力的有關單位來檢測，並定期公布檢測內容？這樣豈不是可以無需大家吵來吵去沒有個結果。&lt;p&gt; 

這裡當然不光是針對中藥，西藥也一起來依檢測標準來檢測，並定期公布。許多人認為這是在打壓中醫，我個人認為是敏感了點，像我平常就有在服用科中，所以對這個議題當然是會關注，也當然會選檢測合格的科中來服用，如果各藥廠認為你的產品是合格的，那麼請公開你的檢測資料。&lt;p&gt;

也拜託你們，請不要告訴我不合標準的科中是對人體無害的，那把標準廢掉不就好了，何必多此一事？如果你的邏輯還清楚的話，也請不要告訴我某某食品的更高，我還可以告訴你，深水魚類的重金屬更高。我們要的是一個無污染的最低保證，如此而已，我們當然知道，「鐵落」的含鐵量是很高的。 &lt;p&gt;

&lt;p&gt;&lt;br /&gt;&lt;p&gt;
留言處：&lt;br /&gt;
&lt;a href=&quot;http://hyperrate.com/thread.php?tid=11971&quot;&gt;http://hyperrate.com/thread.php?tid=11971&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</description>
	<pubDate>二, 30  6月 2009 19:59:43 +0000</pubDate>
</item>
<item>
	<title>Fred's blog: 自問，自己「值」每個月兩萬二嗎？</title>
	<guid>tag:blogger.com,1999:blog-4389461234607418203.post-3671739399482863727</guid>
	<link>http://fred-zone.blogspot.com/2009/06/blog-post_30.html</link>
	<description>每天對自己的領域鑽研又鑽研，每日睡夢中總想著明天還有什麼創意可以做，生怕自己一不小心就在這時代中落後。隱約還記得 [&lt;a href=&quot;http://blog.linux.org.tw/%7Ejserv/&quot;&gt;jserv&lt;/a&gt;] 在 IRC 上曾說過：「我們都是被熊追趕的人，只是當下跑在前面還是在後面的差別。」，是的，一旦不小心被其他人所超越了，就只能等著讓熊給抓走，被主流社會給丟棄。&lt;br /&gt;&lt;br /&gt;先不論是否被社會所丟棄，近年來就連進入這場比賽的門票，都並不好拿，景氣不佳導致許多社會新鮮人被職場拒於門外。有鑑於此，教育部為協助畢業生進入職場，提出&lt;span id=&quot;newcontent&quot;&gt;「培育優質人力促進就業計畫」&lt;/span&gt;&lt;span id=&quot;newcontent&quot;&gt;&lt;/span&gt;，簡單來說，政府花每個月兩萬二千元請學生去公司體制上班實習以體驗職場，其詳細內容在此就不多說，不瞭解的人可以透過關鍵字&lt;span id=&quot;newcontent&quot;&gt;「兩萬二&lt;/span&gt;&lt;span id=&quot;newcontent&quot;&gt;」找到&lt;/span&gt;更&lt;span id=&quot;newcontent&quot;&gt;多討論和說明&lt;/span&gt;。雖然，該計劃制度細節和保障一直有所爭議，但就題目來看，出發點良好，所以若有朋友問我是否該參加，我總是鼓勵他們可以去嘗試看看，原因有幾點：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;吸取工作和實務經驗，以增加自身實力和履歷&lt;/li&gt;&lt;li&gt;可藉由實戰瞭解自己不足之處&lt;/li&gt;&lt;li&gt;未來仍有機會繼續留任甚至直接進入正式公司體系&lt;/li&gt;&lt;/ul&gt;當然，也有許多朋友對我的建議嗤之以鼻，並提出他們的論調，我也在此稍做回應：&lt;br /&gt;&lt;br /&gt;&lt;span&gt;每個月兩萬二千元太低，大學生畢業少說 2xxxx ~ 3xxxx&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;雖然我和大家一樣是個學生，但我一直以來就不懂&lt;span id=&quot;newcontent&quot;&gt;「&lt;/span&gt;大學畢業生 2xxxx 元起跳&lt;span id=&quot;newcontent&quot;&gt;」&lt;/span&gt;這價是誰定的？為何人人都可以說的如此&lt;span id=&quot;newcontent&quot;&gt;「&lt;/span&gt;理直氣壯&lt;span id=&quot;newcontent&quot;&gt;」&lt;/span&gt;？照理說，這些定價就像是青菜的價格一樣，是供需法則下的產物，颱風過後市場行情特好，平時就價碼普通甚至免費。同理，當市場不缺人力，各公司職缺不補，你又怎能期望自己一定有好的價碼。&lt;br /&gt;&lt;br /&gt;更者，在這景氣不佳的時代，沒經驗的新鮮人，又能夠帶給公司多少幫助？也可能不幸地，反而增加了公司風險。考量種種，自然人力行情低落，甚至不易有職缺。我們可以想想，在這到處放無薪假又減薪的時機，能力不足的新鮮人，憑什麼要求更高的價碼？更或許該自問，自己「值」每個月兩萬二嗎？若是你是公司老闆，是否需要聘用自己？也許，這反而是莫大恩惠，有工作給你，又給你機會學經驗，何樂而不為？&lt;br /&gt;&lt;br /&gt;&lt;span&gt;只是進去公司做不重要雜務，&lt;/span&gt;&lt;span&gt;當沒保障的&lt;/span&gt;&lt;span&gt;非正式員工且只有一年&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;這點我承認，許多公司私底下暗地裡難聽的說著，要請這種「免錢勞工」賺一筆，反正政府買單又零成本。但是想想，一上了戰場，是不是只做雜務就很難說，難道會脖子上掛牌以區分非正式員工？碰到急事還挑人做？商場上就是戰場，既然在同公司屋簷下，總是會有各種機會接觸到實務。&lt;br /&gt;&lt;br /&gt;此外，雖然表面上只有一年，又不算公司正式資歷，但可能因為熟悉公司內體制，而一年後繼續被正式聘用而留任的機會很高。除非，你覺得自己的能力和實力無法被肯定？倘若是真的一年到了就得拍拍屁股走人，那也只能自認能力不足，甚至應該開心，因為這一年本該能力不足而導致失業，但是卻因參加這計劃有工作又有學到經驗。但要是你覺得自己實力強卻被丟棄，那你更不用怕，因為履歷上又多添一筆，比剛畢業時又更有經驗了。&lt;br /&gt;&lt;br /&gt;&lt;span&gt;這種&lt;/span&gt;&lt;span&gt;雜務&lt;/span&gt;&lt;span&gt;工作，一年後就算留任又能多好&lt;/span&gt;&lt;span&gt;，薪水又不高&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;不知道為何現在學生都有強烈的被害妄想，就這麼肯定這工作一定很爛？業主會永遠把你當台籍傭人使喚？而滿心充斥著懷才不遇被犬欺之感。個人很好奇，是否一間公司有這麼多茶可以端，有這麼多髒廁所可以掃？（茶葉很多，泡不用錢！整間公司的人腸胃都不好，上廁所都亂噴！）&lt;br /&gt;&lt;br /&gt;事實上，公司對新進人員除了金錢上的開銷之外，還有時間上的成本，每個新人都需要一些時間被教育和適應。若是公司可以省去了這一年的教育成本和風險，有足夠時間評估人才，公司一定樂見。當然，任何職缺的補充，最理想是以這些已經被評估過的人為首選。至少，若我是公司經營者，就會這麼做，因為這一年籌碼若好好運用，將可以為公司帶來更大財富和生力軍，為何要短視近利的把這籌碼白白燒光？究竟短視的是業主，還是抱著質疑眼光的學生們？你說呢？&lt;br /&gt;&lt;br /&gt;不過話雖如此，碰到惡質主管或短視的爛公司，只是想榨乾你價值也不是不可能，但這本來就是求職的風險，也只有認了不是嗎？&lt;br /&gt;&lt;br /&gt;&lt;span&gt;後記&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;當做免費又有錢賺的職訓班，似乎更能容易以平常心看待這個計劃。對許多人而言，大學時，沒有累積實質的經驗，現在有機會來補救一下還是不錯。當然，要是你已經有非常足夠的經驗和能力，就應該不用怕沒工作和失業才是，也根本不用去浪費時間研究這計劃有沒有保障了。你應該去找的是高薪的工作。&lt;br /&gt;&lt;br /&gt;自問，自己「值」每個月兩萬二嗎？沒有，賜我「全職」工作一萬八，我就要偷笑了，我自認沒有能力每天有效率的朝九晚五。難怪，我一直只能當打零工的工讀生呀。&lt;br /&gt;&lt;br /&gt;後面有熊！努力跑呀！&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4389461234607418203-3671739399482863727?l=fred-zone.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>二, 30  6月 2009 18:57:55 +0000</pubDate>
	<author>cfsghost@gmail.com (Fred Chien(錢逢祥))</author>
</item>
<item>
	<title>richliu: RVDS Load Linux Kernel Script</title>
	<guid>http://blog.richliu.com/?p=782</guid>
	<link>http://blog.richliu.com/2009/06/30/782/</link>
	<description>&lt;p&gt;用 RVDS 的時候, 如果只是要拿來 Load kernel,  可以用以下這個簡單的 script. 自動 connect 到 Realview ICE, load kernel , run, 再 disconnect.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;connect &amp;#8220;@MPCore_0@RVI&amp;#8221;&lt;br /&gt;
stop&lt;br /&gt;
readfile,raw,nowarn &amp;#8220;&amp;lt;path to &amp;gt;/bootpImage&amp;#8221;=0&amp;#215;100000&lt;br /&gt;
WAIT=OFF&lt;br /&gt;
go&lt;br /&gt;
disconnect,nodebug &amp;#8220;@MPCore_0@RVI&amp;#8221;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;用&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;bglobal, disable &amp;#8220;data abort&amp;#8221;&lt;br /&gt;
bglobal, disable &amp;#8220;prefetch abort&amp;#8221;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;這二個指令在 Trace32 時, 就可以讓 Linux booting 起來, 但是這一招在 RealView ICE 似乎沒有用.&lt;/p&gt;</description>
	<pubDate>二, 30  6月 2009 15:44:07 +0000</pubDate>
</item>
<item>
	<title>hoamon's sandbox: FOClass: 債券殖利率曲線計算</title>
	<guid>tag:blogger.com,1999:blog-398420085248706856.post-8401318320541770714</guid>
	<link>http://feedproxy.google.com/~r/HoamonsSandbox/~3/k14-KOfdGMg/foclass_07.html</link>
	<description>在&lt;a href=&quot;http://hoamon.blogspot.com/2009/05/foclass.html&quot;&gt;前篇文章&lt;/a&gt;中，我們已可算出零息債券的殖利率，但如果要套用在實務上的應用中，我們必須將觀察到的各點作一迴歸函式，讓我們可以找到各天期的殖利率。&lt;br /&gt;&lt;br /&gt;運用原理為 Cubic Spline 方法。假設債券的 Discount 因子為一個三次方程式：&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.codecogs.com/eqnedit.php?latex=D%28t%29%20=%201%20@plus;%20a%5Ctimes%20t%20@plus;%20b%5Ctimes%20t%5E2%20@plus;%20c%5Ctimes%20t%5E3&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://latex.codecogs.com/gif.latex?D%28t%29%20=%201%20+%20a%5Ctimes%20t%20+%20b%5Ctimes%20t%5E2%20+%20c%5Ctimes%20t%5E3&quot; title=&quot;D(t) = 1 + a\times t + b\times t^2 + c\times t^3&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;而每張債券的現金流量再套入下方方程式：&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.codecogs.com/eqnedit.php?latex=PV%20=%20\sum_{i=1}^{n}C_{i}%20\times%20D_{i}&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://latex.codecogs.com/gif.latex?PV%20=%20\sum_{i=1}^{n}C_{i}%20\times%20D_{i}&quot; title=&quot;PV = \sum_{i=1}^{n}C_{i} \times D_{i}&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;可得到類似 3.3a + 1.2b + 5.5c = 30 的等式。像是代入&lt;a href=&quot;http://hoamon.blogspot.com/2009/05/foclass.html&quot;&gt;前篇文章&lt;/a&gt;的九張債券可得如下式子：&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.codecogs.com/eqnedit.php?latex=%5Cbegin%7Bbmatrix%7D%20x_%7B11%7D%20&amp;amp;%20x_%7B12%7D%20&amp;amp;%20x_%7B13%7D%5C%5C%20...%20&amp;amp;%20...&amp;amp;%20...%5C%5C%20x_%7B91%7D%20&amp;amp;%20x_%7B92%7D%20&amp;amp;%20x_%7B93%7D%20%5Cend%7Bbmatrix%7D%20%5Cbegin%7Bbmatrix%7D%20a%5C%5C%20b%5C%5C%20c%20%5Cend%7Bbmatrix%7D%20=%20%5Cbegin%7Bbmatrix%7D%2043.33%5C%5C%20...%5C%5C%203,4%20%5Cend%7Bbmatrix%7D&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://latex.codecogs.com/gif.latex?%5Cbegin%7Bbmatrix%7D%20x_%7B11%7D%20&amp;amp;%20x_%7B12%7D%20&amp;amp;%20x_%7B13%7D%5C%5C%20...%20&amp;amp;%20...&amp;amp;%20...%5C%5C%20x_%7B91%7D%20&amp;amp;%20x_%7B92%7D%20&amp;amp;%20x_%7B93%7D%20%5Cend%7Bbmatrix%7D%20%5Cbegin%7Bbmatrix%7D%20a%5C%5C%20b%5C%5C%20c%20%5Cend%7Bbmatrix%7D%20=%20%5Cbegin%7Bbmatrix%7D%2043.33%5C%5C%20...%5C%5C%203,4%20%5Cend%7Bbmatrix%7D&quot; title=&quot;\begin{bmatrix} x_{11} &amp;amp; x_{12} &amp;amp; x_{13}\\ ... &amp;amp; ...&amp;amp; ...\\ x_{91} &amp;amp; x_{92} &amp;amp; x_{93} \end{bmatrix} \begin{bmatrix} a\\ b\\ c \end{bmatrix} = \begin{bmatrix} 43.33\\ ...\\ 3,4 \end{bmatrix}&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.codecogs.com/eqnedit.php?latex=%5Cbegin%7Bbmatrix%7D%20a%5C%5C%20b%5C%5C%20c%20%5Cend%7Bbmatrix%7D%20=%20%5Cleft%20%28%5Cbegin%7Bbmatrix%7D%20x_%7B11%7D%20&amp;amp;%20x_%7B12%7D%20&amp;amp;%20x_%7B13%7D%5C%5C%20...%20&amp;amp;%20...&amp;amp;%20...%5C%5C%20x_%7B91%7D%20&amp;amp;%20x_%7B92%7D%20&amp;amp;%20x_%7B93%7D%20%5Cend%7Bbmatrix%7D%5E%7Bt%7D%20%5Ccdot%20%5Cbegin%7Bbmatrix%7D%20x_%7B11%7D%20&amp;amp;%20x_%7B12%7D%20&amp;amp;%20x_%7B13%7D%5C%5C%20...%20&amp;amp;%20...&amp;amp;%20...%5C%5C%20x_%7B91%7D%20&amp;amp;%20x_%7B92%7D%20&amp;amp;%20x_%7B93%7D%20%5Cend%7Bbmatrix%7D%5Cright%20%29%5E%7BINV%7D%20%5Ccdot%20%5Cbegin%7Bbmatrix%7D%20x_%7B11%7D%20&amp;amp;%20x_%7B12%7D%20&amp;amp;%20x_%7B13%7D%5C%5C%20...%20&amp;amp;%20...&amp;amp;%20...%5C%5C%20x_%7B91%7D%20&amp;amp;%20x_%7B92%7D%20&amp;amp;%20x_%7B93%7D%20%5Cend%7Bbmatrix%7D%5E%7Bt%7D%20%5Ccdot%20%5Cbegin%7Bbmatrix%7D%2043.33%5C%5C%20...%5C%5C%203,4%20%5Cend%7Bbmatrix%7D&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://latex.codecogs.com/gif.latex?%5Cbegin%7Bbmatrix%7D%20a%5C%5C%20b%5C%5C%20c%20%5Cend%7Bbmatrix%7D%20=%20%5Cleft%20%28%5Cbegin%7Bbmatrix%7D%20x_%7B11%7D%20&amp;amp;%20x_%7B12%7D%20&amp;amp;%20x_%7B13%7D%5C%5C%20...%20&amp;amp;%20...&amp;amp;%20...%5C%5C%20x_%7B91%7D%20&amp;amp;%20x_%7B92%7D%20&amp;amp;%20x_%7B93%7D%20%5Cend%7Bbmatrix%7D%5E%7Bt%7D%20%5Ccdot%20%5Cbegin%7Bbmatrix%7D%20x_%7B11%7D%20&amp;amp;%20x_%7B12%7D%20&amp;amp;%20x_%7B13%7D%5C%5C%20...%20&amp;amp;%20...&amp;amp;%20...%5C%5C%20x_%7B91%7D%20&amp;amp;%20x_%7B92%7D%20&amp;amp;%20x_%7B93%7D%20%5Cend%7Bbmatrix%7D%5Cright%20%29%5E%7BINV%7D%20%5Ccdot%20%5Cbegin%7Bbmatrix%7D%20x_%7B11%7D%20&amp;amp;%20x_%7B12%7D%20&amp;amp;%20x_%7B13%7D%5C%5C%20...%20&amp;amp;%20...&amp;amp;%20...%5C%5C%20x_%7B91%7D%20&amp;amp;%20x_%7B92%7D%20&amp;amp;%20x_%7B93%7D%20%5Cend%7Bbmatrix%7D%5E%7Bt%7D%20%5Ccdot%20%5Cbegin%7Bbmatrix%7D%2043.33%5C%5C%20...%5C%5C%203,4%20%5Cend%7Bbmatrix%7D&quot; title=&quot;\begin{bmatrix} a\\ b\\ c \end{bmatrix} = \left (\begin{bmatrix} x_{11} &amp;amp; x_{12} &amp;amp; x_{13}\\ ... &amp;amp; ...&amp;amp; ...\\ x_{91} &amp;amp; x_{92} &amp;amp; x_{93} \end{bmatrix}^{t} \cdot \begin{bmatrix} x_{11} &amp;amp; x_{12} &amp;amp; x_{13}\\ ... &amp;amp; ...&amp;amp; ...\\ x_{91} &amp;amp; x_{92} &amp;amp; x_{93} \end{bmatrix}\right )^{INV} \cdot \begin{bmatrix} x_{11} &amp;amp; x_{12} &amp;amp; x_{13}\\ ... &amp;amp; ...&amp;amp; ...\\ x_{91} &amp;amp; x_{92} &amp;amp; x_{93} \end{bmatrix}^{t} \cdot \begin{bmatrix} 43.33\\ ...\\ 3,4 \end{bmatrix}&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;透過 OLS(ordinary least square) 方法求出 a, b, c 的適當值後，再代入：&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.codecogs.com/eqnedit.php?latex=Y%28t%29%20=%20%5Csqrt%5Bt%5D%7B%5Cfrac%7B1%7D%7BD%28t%29%7D%7D%20-%201&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://latex.codecogs.com/gif.latex?Y%28t%29%20=%20%5Csqrt%5Bt%5D%7B%5Cfrac%7B1%7D%7BD%28t%29%7D%7D%20-%201&quot; title=&quot;Y(t) = \sqrt[t]{\frac{1}{D(t)}} - 1&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;即可算出殖利率曲線。如下圖：&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_eKM9lHjTZjs/SgJYg1tT3VI/AAAAAAAAB3g/3rtUyq_w1nQ/s1600-h/zero_bond_yield_curve.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_eKM9lHjTZjs/SgJYg1tT3VI/AAAAAAAAB3g/3rtUyq_w1nQ/s400/zero_bond_yield_curve.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5332922229956271442&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;綠色線為零息債券殖利率曲線&lt;/li&gt;&lt;li&gt;紅色線為附息債券殖利率曲線&lt;/li&gt;&lt;/ul&gt;我們可以看到 20~30年期的殖利率下降的十分奇怪。原因是我們的觀察值債券的年期最大只有 20 年，所以這一條函式在預測 20~30 年期的數據應該是有問題。&lt;br /&gt;&lt;br /&gt;相關的 Python 程式如下：&lt;br /&gt;&lt;pre class=&quot;vim&quot;&gt;&lt;span&gt;&lt;b&gt; 1 &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt; &lt;span&gt;&lt;b&gt;CubicSpline&lt;/b&gt;&lt;/span&gt;:&lt;br /&gt;&lt;span&gt;&lt;b&gt; 2 &lt;/b&gt;&lt;/span&gt;    &lt;span&gt;&lt;b&gt;&quot;&quot;&quot; 使用最小平方和原則作三次方方程式的迴歸&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt; 3 &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;    &quot;&quot;&quot;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt; 4 &lt;/b&gt;&lt;/span&gt;    &lt;span&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; &lt;span&gt;&lt;b&gt;__init__&lt;/b&gt;&lt;/span&gt;(self):&lt;br /&gt;&lt;span&gt;&lt;b&gt; 5 &lt;/b&gt;&lt;/span&gt;        self.PVs = array([])&lt;br /&gt;&lt;span&gt;&lt;b&gt; 6 &lt;/b&gt;&lt;/span&gt;        self.X = array([])&lt;br /&gt;&lt;span&gt;&lt;b&gt; 7 &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt; 8 &lt;/b&gt;&lt;/span&gt;    &lt;span&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; &lt;span&gt;&lt;b&gt;addBondData&lt;/b&gt;&lt;/span&gt;(self, PV=&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;, Ci=[], Ni=[]):&lt;br /&gt;&lt;span&gt;&lt;b&gt; 9 &lt;/b&gt;&lt;/span&gt;        self.PV = PV &amp;lt; &lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt; &lt;span&gt;&lt;b&gt;and&lt;/b&gt;&lt;/span&gt; PV &lt;span&gt;&lt;b&gt;or&lt;/b&gt;&lt;/span&gt; -&lt;span&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;*PV&lt;br /&gt;&lt;span&gt;&lt;b&gt;10 &lt;/b&gt;&lt;/span&gt;        &lt;span&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; Ni[&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;] == &lt;span&gt;&lt;span&gt;&lt;b&gt;0:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;11 &lt;/b&gt;&lt;/span&gt;            self.PVs = append(self.PVs, -&lt;span&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;*self.PV-Ci[&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;])&lt;br /&gt;&lt;span&gt;&lt;b&gt;12 &lt;/b&gt;&lt;/span&gt;            self.Ci = array(Ci[&lt;span&gt;&lt;span&gt;&lt;b&gt;1:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;])&lt;br /&gt;&lt;span&gt;&lt;b&gt;13 &lt;/b&gt;&lt;/span&gt;            self.Ni = array([[&lt;span&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;, t, t**&lt;span&gt;&lt;b&gt;2&lt;/b&gt;&lt;/span&gt;, t**&lt;span&gt;&lt;b&gt;3&lt;/b&gt;&lt;/span&gt;] &lt;span&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; t &lt;span&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; Ni[&lt;span&gt;&lt;span&gt;&lt;b&gt;1:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;]])&lt;br /&gt;&lt;span&gt;&lt;b&gt;14 &lt;/b&gt;&lt;/span&gt;        else:&lt;br /&gt;&lt;span&gt;&lt;b&gt;15 &lt;/b&gt;&lt;/span&gt;            self.PVs = append(self.PVs, -&lt;span&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;*self.PV)&lt;br /&gt;&lt;span&gt;&lt;b&gt;16 &lt;/b&gt;&lt;/span&gt;            self.Ci = array(Ci)&lt;br /&gt;&lt;span&gt;&lt;b&gt;17 &lt;/b&gt;&lt;/span&gt;            self.Ni = array([[&lt;span&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;, t, t**&lt;span&gt;&lt;b&gt;2&lt;/b&gt;&lt;/span&gt;, t**&lt;span&gt;&lt;b&gt;3&lt;/b&gt;&lt;/span&gt;] &lt;span&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; t &lt;span&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; Ni])&lt;br /&gt;&lt;span&gt;&lt;b&gt;18 &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;19 &lt;/b&gt;&lt;/span&gt;        self.dt = dot(self.Ci, self.Ni)&lt;br /&gt;&lt;span&gt;&lt;b&gt;20 &lt;/b&gt;&lt;/span&gt;        &lt;span&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; len(self.X):&lt;br /&gt;&lt;span&gt;&lt;b&gt;21 &lt;/b&gt;&lt;/span&gt;            self.X = append(self.X, [self.dt[&lt;span&gt;&lt;span&gt;&lt;b&gt;1:]], axis&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;=&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;b&gt;22 &lt;/b&gt;&lt;/span&gt;        else:&lt;br /&gt;&lt;span&gt;&lt;b&gt;23 &lt;/b&gt;&lt;/span&gt;            self.X = array([self.dt[&lt;span&gt;&lt;span&gt;&lt;b&gt;1:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;]])&lt;br /&gt;&lt;span&gt;&lt;b&gt;24 &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;25 &lt;/b&gt;&lt;/span&gt;        self.PVs[-&lt;span&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;] -= self.dt[&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;]&lt;br /&gt;&lt;span&gt;&lt;b&gt;26 &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;27 &lt;/b&gt;&lt;/span&gt;    &lt;span&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; &lt;span&gt;&lt;b&gt;runOLS&lt;/b&gt;&lt;/span&gt;(self):&lt;br /&gt;&lt;span&gt;&lt;b&gt;28 &lt;/b&gt;&lt;/span&gt;        self.X = matrix(self.X)&lt;br /&gt;&lt;span&gt;&lt;b&gt;29 &lt;/b&gt;&lt;/span&gt;        self.PVs = matrix(self.PVs).T&lt;br /&gt;&lt;span&gt;&lt;b&gt;30 &lt;/b&gt;&lt;/span&gt;        self.b = linalg.inv(self.X.T * self.X) * self.X.T * self.PVs&lt;br /&gt;&lt;span&gt;&lt;b&gt;31 &lt;/b&gt;&lt;/span&gt;        &lt;span&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; self.b&lt;br /&gt;&lt;/pre&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/398420085248706856-8401318320541770714?l=hoamon.blogspot.com&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/2P2I6xHvfmjSKtKHn-eRaThzQEc/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/2P2I6xHvfmjSKtKHn-eRaThzQEc/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/2P2I6xHvfmjSKtKHn-eRaThzQEc/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/2P2I6xHvfmjSKtKHn-eRaThzQEc/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/HoamonsSandbox/~4/k14-KOfdGMg&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>二, 30  6月 2009 13:27:31 +0000</pubDate>
	<author>noreply@blogger.com (何岳峰 hoamon)</author>
</item>
<item>
	<title>肥加洛的Linux學習網: Figaro hate ANT</title>
	<guid>http://figaro.neo-info.net/?p=477</guid>
	<link>http://figaro.neo-info.net/?p=477</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://figaro.neo-info.net/wp-content/uploads/2009/06/090628_肥佳洛與螞蟻.jpg&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-476&quot; title=&quot;090628_肥佳洛與螞蟻&quot; src=&quot;http://figaro.neo-info.net/wp-content/uploads/2009/06/090628_肥佳洛與螞蟻-250x300.jpg&quot; alt=&quot;090628_肥佳洛與螞蟻&quot; width=&quot;250&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>二, 30  6月 2009 00:19:32 +0000</pubDate>
</item>
<item>
	<title>瘋狂帽客's Blog: 20個Linux系統/網路偵測的好工具</title>
	<guid>tag:blogger.com,1999:blog-27216830.post-1802119696806579887</guid>
	<link>http://go-linux.blogspot.com/2009/06/20linux.html</link>
	<description>發現到一篇介紹20個Linux系統/網路偵測工具的好網頁，挺多我沒有使用過的，所以特別收錄起來，FYI。&lt;div&gt;&lt;a href=&quot;http://www.cyberciti.biz/tips/top-linux-monitoring-tools.html&quot;&gt;http://www.cyberciti.biz/tips/top-linux-monitoring-tools.html&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/27216830-1802119696806579887?l=go-linux.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>一, 29  6月 2009 09:57:50 +0000</pubDate>
	<author>noreply@blogger.com (瘋狂帽客)</author>
</item>
<item>
	<title>PCMan 的 Blog: 評價</title>
	<guid>http://pcman.sayya.org/blog_read.php?id=pcman&amp;article=89</guid>
	<link>http://pcman.sayya.org/blog_read.php?id=pcman&amp;article=89</link>
	<description>不知不覺，工作快一年了。能得罪的護理站，大概也都得罪光了...
&lt;br /&gt;雖然嘴巴上都說，不在乎別人的評價，
&lt;br /&gt;但當你其實是很認真在堅持每件事，卻反而被所有人討厭
&lt;br /&gt;朋友逐漸變成敵人的時候，要堅持理想，幾乎是不可能的。
&lt;br /&gt;
&lt;br /&gt;異常事件通報，是醫院內一個讓人又愛又恨的東西，
&lt;br /&gt;本來是用來提昇醫療品質的機制，卻讓我從此在院內黑掉。
&lt;br /&gt;所謂醫療異常事件，是鼓勵醫療人員自己通報發現的各種疏失，
&lt;br /&gt;藉由了解系統性的問題和發生原因，改善流程，來提昇醫療品質的手段
&lt;br /&gt;不以處罰為目的，而是透過根本原因分析，以改善系統缺失為目標。
...</description>
	<pubDate>一, 29  6月 2009 00:05:47 +0000</pubDate>
</item>
<item>
	<title>黑眼珠: 有點囧之夏日約會簡報上線</title>
	<guid>tag:blogger.com,1999:blog-6801276157614040111.post-3497146121372603023</guid>
	<link>http://swyear.blogspot.com/2009/06/blog-post.html</link>
	<description>覺得不滿意，可以看得出來，夜愈深，品質愈差&lt;br /&gt;下次還是不要熬夜&lt;br /&gt;&lt;a href=&quot;http://docs.google.com/Presentation?id=d94scnd_46fxqbmgdt&quot;&gt;http://docs.google.com/Presentation?id=d94scnd_46fxqbmgdt&lt;/a&gt;&lt;br /&gt;原為 odp 檔，但是 google doc 不吃這種格式&lt;br /&gt;依照慣例，轉成 ms 格式總會有點怪怪的&lt;br /&gt;&lt;br /&gt;感謝今日參加的各位朋友捧場&lt;br /&gt;首次上場&lt;br /&gt;小弟準備得不夠充份&lt;br /&gt;真是抱歉&lt;br /&gt;&lt;br /&gt;謝謝今日送我去坐車的那位大哥&lt;br /&gt;還有 sakana 和所有工作人員與參加者&lt;br /&gt;更新：發現少了一頁 1-click install collection&lt;br /&gt;文件重傳並補上&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6801276157614040111-3497146121372603023?l=swyear.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>日, 28  6月 2009 20:18:32 +0000</pubDate>
	<author>noreply@blogger.com (swyear)</author>
</item>
<item>
	<title>FourDollars: apt-get/aptitude update 時 GPG error 問題的發生與尋找解決之道</title>
	<guid>tag:blogger.com,1999:blog-14489808.post-3827129778742443779</guid>
	<link>http://fourdollars.blogspot.com/2009/06/apt-getaptitude-update-gpg-error.html</link>
	<description>&lt;div&gt;剛剛在 Ubuntu 8.10 上執行&lt;br /&gt;&lt;blockquote&gt;sudo aptitude update&lt;br /&gt;&lt;/blockquote&gt;時遇到一個錯誤訊息&lt;br /&gt;&lt;blockquote&gt;W: GPG error: http://download.virtualbox.org intrepid Release: 下列的簽名皆不合法： BADSIG DCF9F87B6DFBCBAE Sun Microsystems, Inc. (xVM VirtualBox archive signing key) &amp;lt;info@virtualbox.org&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;於是就到 &lt;a href=&quot;http://www.virtualbox.org&quot;&gt;http://www.virtualbox.org&lt;/a&gt; 上面去尋找 GPG 這個關鍵字&lt;br /&gt;果然找到了一篇相關的 &lt;a href=&quot;http://www.virtualbox.org/ticket/2744&quot;&gt;bug report&lt;/a&gt; 裡面提到一篇郵件清單上面的文章 &lt;a href=&quot;https://lists.ubuntu.com/archives/ubuntu-users/2005-October/052998.html&quot;&gt;apt-get update problem: GPG error ... The following signatures&lt;br /&gt;	were invalid&lt;/a&gt;&lt;br /&gt;文章當中提到了&lt;br /&gt;&lt;blockquote&gt;rm /var/lib/apt/lists/*&lt;br /&gt;&lt;/blockquote&gt;就可以解決問題了&lt;br /&gt;可是我不想要把 /var/lib/apt/lists/ 底下的東西都刪光光&lt;br /&gt;於是看了一下 /var/lib/apt/lists/ 底下&lt;br /&gt;&lt;blockquote&gt;[前面省略]&lt;br /&gt;archive.ubuntu.com_ubuntu_dists_intrepid_main_source_Sources&lt;br /&gt;archive.ubuntu.com_ubuntu_dists_intrepid_Release&lt;br /&gt;archive.ubuntu.com_ubuntu_dists_intrepid_Release.gpg&lt;br /&gt;archive.ubuntu.com_ubuntu_dists_intrepid_restricted_source_Sources&lt;br /&gt;download.virtualbox.org_virtualbox_debian_dists_intrepid_non-free_binary-i386_Packages&lt;br /&gt;download.virtualbox.org_virtualbox_debian_dists_intrepid_Release&lt;br /&gt;[後面也省略]&lt;br /&gt;&lt;/blockquote&gt;跟之前的錯誤訊息比較看起來只是 VirtualBox 的 Release 這個檔案缺少了相對應的 Release.gpg 檔案&lt;br /&gt;於是就把 download.virtualbox.org_virtualbox_debian_dists_intrepid_non-free_binary-i386_Packages download.virtualbox.org_virtualbox_debian_dists_intrepid_Release 這兩個檔案刪除掉&lt;br /&gt;重新執行&lt;br /&gt;&lt;blockquote&gt;sudo aptitude update&lt;br /&gt;&lt;/blockquote&gt;結果問題就... 還是沒有解決... 冏rz&lt;br /&gt;&lt;br /&gt;好吧... 重新找線索看看發現 /var/lib/apt/lists/ 底下有個唯一的目錄 partial 底下也有 VirtualBox 相關的檔案&lt;br /&gt;&lt;blockquote&gt;partial/&lt;br /&gt;|-- download.virtualbox.org_virtualbox_debian_dists_intrepid_Release&lt;br /&gt;`-- download.virtualbox.org_virtualbox_debian_dists_intrepid_Release.gpg&lt;br /&gt;&lt;/blockquote&gt;那麼試試看把這兩個檔案也刪除掉再執行一次&lt;br /&gt;&lt;blockquote&gt;sudo aptitude update&lt;br /&gt;&lt;/blockquote&gt;結果就... 成功地解決掉這個問題啦~ ^o^&lt;br /&gt;&lt;br /&gt;再看看 partial 目錄底下還是空空的&lt;br /&gt;不過 partial 上層的目錄底下就看到了&lt;br /&gt;&lt;blockquote&gt;download.virtualbox.org_virtualbox_debian_dists_intrepid_non-free_binary-i386_Packages&lt;br /&gt;download.virtualbox.org_virtualbox_debian_dists_intrepid_Release&lt;br /&gt;download.virtualbox.org_virtualbox_debian_dists_intrepid_Release.gpg&lt;br /&gt;&lt;/blockquote&gt;看起來就是 Release 檔案有了相對應的 Release.gpg 檔案&lt;br /&gt;所以才能夠正常地執行~ :-D&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/14489808-3827129778742443779?l=fourdollars.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>日, 28  6月 2009 15:47:12 +0000</pubDate>
	<author>fourdollars@gmail.com (FourDollars)</author>
</item>
<item>
	<title>肥加洛的Linux學習網: What do you do with Linux ?</title>
	<guid>http://figaro.neo-info.net/?p=474</guid>
	<link>http://figaro.neo-info.net/?p=474</link>
	<description>&lt;p&gt;既上次的 geeko 圖像產生工具之後，Novell SLES 11 又有一個可以贏得大獎的活動嚕，那就是 &lt;a href=&quot;http://www.howdoyoulinux.com&quot; target=&quot;_blank&quot;&gt;&amp;#8221; What do you do with Linux ? &amp;#8220;&lt;/a&gt;，有興趣的朋友只要拍下一段影片，告訴大家你和Linux間的愛恨情仇，微妙關係 ( 當然不能講壞的阿 ~ 要拍好的正向的宣導影片 )，那就有機會奪得大獎 ^^&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.howdoyoulinux.com/?cm_mmc=Novell-_-SLE11-_-How+Do+You+Linux-_-WhatDoLinux_wow&quot;&gt;&lt;img src=&quot;http://www.howdoyoulinux.com/badges/badge_whatdoyoudowithlinux.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;當然，如果你也是害羞一族的，沒關係，再這個網站上也提供幾張不錯的 &lt;a href=&quot;http://www.howdoyoulinux.com/?cm_mmc=Novell-_-SLE11-_-How+Do+You+Linux-_-WhatDOLinux_Button#downloadfreebies&quot; target=&quot;_blank&quot;&gt;Geeko 桌布&lt;/a&gt;讓使用者下載使用，還在等什麼呢？立刻拿起你的手機自拍一下吧。&lt;/p&gt;</description>
	<pubDate>日, 28  6月 2009 13:25:21 +0000</pubDate>
</item>
<item>
	<title>Asho: GeeXBox 1.2.2</title>
	<guid>tag:blogger.com,1999:blog-3562335153267203512.post-4221412329732576420</guid>
	<link>http://ashotw.blogspot.com/2009/06/geexbox-122.html</link>
	<description>Detailed Changelog (relative to 1.2.1 release):&lt;br /&gt;&lt;br /&gt;- Multi-threaded video decoding for MPEG-1/2/4 and H.264 codecs.&lt;br /&gt;- Support for newly discovered DVD MovieProtect encryption method.&lt;br /&gt;- Extended DVD CSS descrambiling capabilities.&lt;br /&gt;- Removal of GOOM audio visualization (was causing too much troubles).&lt;br /&gt;- Automount daemon enhancements.&lt;br /&gt;- Upgrade of MPlayer and its set of codecs.&lt;br /&gt;&lt;br /&gt;我很好奇multi-threaded video decoding是怎麼做到的，mplayer有辦法達到multi-thread decode嗎？會不會是GeeXbox團隊自已實做出來的？&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3562335153267203512-4221412329732576420?l=ashotw.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>六, 27  6月 2009 18:02:27 +0000</pubDate>
	<author>noreply@blogger.com (阿信)</author>
</item>

</channel>
</rss>
