<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9307457</id><updated>2024-10-25T17:58:15.657+08:00</updated><category term="book"/><category term="programming"/><category term="AI"/><category term="embedded"/><category term="Python"/><category term="project"/><category term="brain"/><category term="software"/><category term="concept"/><category term="CPP"/><category term="note"/><category term="robot"/><category term="system theory"/><category term="math"/><category term="psyche"/><category term="quote"/><category term="BlogTech"/><category term="C"/><category term="MIT"/><category term="complexity"/><category term="ia"/><category term="neuron"/><category term="review"/><category term="DSL"/><category term="NN"/><category term="impression"/><category term="pattern"/><category term="Linux"/><category term="OO"/><category term="business"/><category term="compiler"/><category term="debug"/><category term="small world"/><category term="unit test"/><category term="universe"/><category term="ALife"/><category term="Blogger"/><category term="DSP"/><category term="Edelman"/><category term="Flash"/><category term="Matlab"/><category term="Tags"/><category term="computer science"/><category term="fiction"/><category term="graphics"/><category term="notation"/><category term="plot"/><category term="protocol"/><category term="scientific"/><category term="sight"/><category term="simulation"/><category term="society"/><category term="soliloquy"/><category term="weightless"/><category term="Clustrmaps"/><category term="Darwin"/><category term="FFT"/><category term="Graph"/><category term="Java"/><category term="SCM"/><category term="Tagboard"/><category term="biology"/><category term="building"/><category term="chaos"/><category term="design"/><category term="exception"/><category term="font"/><category term="freeware"/><category term="functional"/><category term="infomation"/><category term="life"/><category term="literature"/><category term="math model"/><category term="parser"/><category term="philosophy"/><category term="physics"/><category term="puzzle"/><category term="queue"/><category term="random"/><category term="refactoring"/><category term="research"/><category term="retina"/><category term="selection"/><category term="self organization"/><category term="storage"/><category term="AWK"/><category term="BGL"/><category term="BSS"/><category term="Boost"/><category term="CAS"/><category term="CLIPS"/><category term="CSV"/><category term="CWM"/><category term="Chatterbox"/><category term="EEPROM"/><category term="Email"/><category term="Embedology"/><category term="FSM"/><category term="Firefox"/><category term="Foveon"/><category term="GA"/><category term="GNU"/><category term="Greasemonkey"/><category term="Guestbook"/><category term="HTM"/><category term="ICA"/><category term="IDE"/><category term="Internet"/><category term="Land effect"/><category term="Lex"/><category term="Logo"/><category term="Marshall Sylver"/><category term="Mathematica"/><category term="MultiThread"/><category term="NCE"/><category term="NVRAM"/><category term="OS"/><category term="PWM"/><category term="RD"/><category term="RNG"/><category term="SIP"/><category term="UART"/><category term="UI"/><category term="VoIP"/><category term="YAML"/><category term="Yacc"/><category term="agent"/><category term="algebra"/><category term="annotation"/><category term="antenna"/><category term="assertion"/><category term="automation"/><category term="blog"/><category term="bookstore"/><category term="buy"/><category term="collaboration"/><category term="color"/><category term="composition"/><category term="cortex"/><category term="customization"/><category term="decision"/><category term="design patterns"/><category term="diet"/><category term="document"/><category term="documentation"/><category term="engineering"/><category term="expert system"/><category term="fitness of things"/><category term="framework"/><category term="free"/><category term="future"/><category term="gait"/><category term="generator"/><category term="hesitate"/><category term="hierarchy"/><category term="hippocampus"/><category term="human-centric"/><category term="icon"/><category term="imaging"/><category term="immunity"/><category term="individualize"/><category term="intelligence"/><category term="invariant"/><category term="learning"/><category term="literate programming"/><category term="living"/><category term="love"/><category term="memo"/><category term="memory"/><category term="memory-prediction"/><category term="moment"/><category term="money"/><category term="natural selection"/><category term="neocortex"/><category term="network"/><category term="numeric"/><category term="order"/><category term="oscillograph"/><category term="perceptual"/><category term="porting"/><category term="prediction"/><category term="probability"/><category term="probe"/><category term="prolog"/><category term="pythonic"/><category term="rational"/><category term="reading"/><category term="reuse"/><category term="scanner"/><category term="scope"/><category term="scotoma"/><category term="search"/><category term="signature"/><category term="simplicity"/><category term="solution space"/><category term="specialty"/><category term="speech"/><category term="spiking"/><category term="state"/><category term="symmetry"/><category term="tagrolls"/><category term="template"/><category term="thesis"/><category term="timing"/><category term="tools"/><category term="transducer"/><category term="trend"/><category term="version control"/><category term="wisdom"/><category term="wish"/><title type='text'>Yukuan&#39;s Blog</title><subtitle type='html'>readings, thinkings, feelings, ideas, etc. by Yukuan</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default?alt=atom'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default?alt=atom&amp;start-index=26&amp;max-results=25'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>141</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9307457.post-3795957462238841857</id><published>2016-02-15T00:40:00.002+08:00</published><updated>2016-02-15T00:41:13.049+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="book"/><title type='text'>假太陽</title><summary type="text">這則《假太陽》我是還在學時閱讀，那時啃完後覺得滿震撼的。故事是說人類最熟悉的天體，每天抬頭就可以看到的太陽，竟然是假的！原本真的那個太陽供應的能源只夠地球演化出猿猴，現在這個「假」太陽是被「人」調包過的！這則《假太陽》故事有點宗教味道，但又不脫（倪匡筆下）科幻橋段，初次閱讀的應該不少人會跟我一樣，整個腦袋瓜轟轟的吧 XD在 GodspeedLee 的分享下得知《時間迴旋》一書也有假太陽的設定。趁年假，花了一天的時間，順手把《時間迴旋》啃完了。就科幻的部分，《時間迴旋》描寫更細膩，它除了會說明太陽跟地球的演化史外，也針對太陽被替換的方式，提出一系列合理的影響。例如說，夜空沒了星斗，月亮也不見了，甚至極光也消失了。這些是很好的科幻素材，依附在上面的人事物也由此帶出。不過也因為內容描述太過詳盡，加上敘事方式不是很連貫，所以我是覺得有點囉唆。不符合我啃書喜歡挑重點的習慣 :p </summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/3795957462238841857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/3795957462238841857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/3795957462238841857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/3795957462238841857'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2016/02/blog-post.html' title='假太陽'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-2566920110827397884</id><published>2016-02-03T00:31:00.000+08:00</published><updated>2016-02-03T00:31:25.139+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="DSL"/><category scheme="http://www.blogger.com/atom/ns#" term="project"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>Embedded  Systems 中的 Resource 管理</title><summary type="text">開發 Embedded Systems 常常會碰到 f/w 要用到圖、字型、甚至音樂等 resource 的情況。實務上一種處理方式是將這些 resource 轉換後串成一個大的 C array 。然後再用 resource ID 去讀取它們。一些書上稱這種轉換的工具叫 Resource Maker 。不過我不會採取這種作法，雖然還是透過 resource ID 讀取，但不把 resource 轉成 C array ，而是直接轉成 binary 格式，要用時才去 storage 裡 load 進來，因為這樣比較節省記憶體空間。多年前我就用 Python 寫了類似的工具，那時我把這支程式稱作 weave 。後來慢慢精練，演變成今天要介紹的 ResourceLink 。同樣地，這裡我主要也是著重在 ResourceLink 裡用到的領域專用語言，來看看我怎麼描述這些 resource </summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/2566920110827397884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/2566920110827397884' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/2566920110827397884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/2566920110827397884'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2016/02/embedded-systems-resource.html' title='Embedded  Systems 中的 Resource 管理'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-61127504389481132</id><published>2016-01-29T00:57:00.000+08:00</published><updated>2016-02-01T12:55:52.107+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="DSL"/><category scheme="http://www.blogger.com/atom/ns#" term="project"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>利用 LangConvert 工具處理多國語言</title><summary type="text">開發 Embedded Systems 相關應用時，常得處理多國語言。而系統資源受限的的場合，就算掛了 OS，往往也沒內建多國語言。這時候只能捲起袖子自己處理了。自幹的過程，很直覺地，多數人都會想到要有個類似右圖這樣的 Excel 字典檔當作翻譯表。有了翻譯表後，我們還要有個字庫（font）。為了存取字庫裡的字，我們要先決定字序（character order）。有了字序後，我們就能根據字序，把翻譯表裡面的多國語言訊息，一一轉換成字序的串列（a sequence of character orders）。要秀某個訊息時，就根據這個字序列，回過頭把字庫裡的字形（glyph）抽取出來顯示。如果要通吃幾乎各國的語言，一個奢侈的做法是直接用 Unicode 當字序，建立完整的字庫。不過這不適合用在資源受限的場合。多年前，我遇到決定字序的問題時，想了一種簡單又好用的表示法。以 ASCII code</summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/61127504389481132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/61127504389481132' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/61127504389481132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/61127504389481132'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2016/01/langconvert.html' title='利用 LangConvert 工具處理多國語言'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-399822236705676752</id><published>2016-01-24T21:35:00.001+08:00</published><updated>2016-01-28T01:15:15.688+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="DSL"/><category scheme="http://www.blogger.com/atom/ns#" term="project"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>利用 PicCrop 工具來切圖</title><summary type="text">記得小學製作海報時，會用剪貼的方式分工，快速拼湊出一張教室海報。時代進步了，現在大家都用電腦，我好幾次觀察到現在美術人員幫忙設計 UI 時，也常常會先把整體畫出來，然後再一塊塊的剪下來。這些剪下來的圖，還有個貼切的稱呼，叫「切圖」
 現在有很多現成的切圖工具，幾乎都搭配 Photoshop 使用，甚至 Phothoshop 本身對這道工序也提供一定的支援。不過我沒打算在這介紹這些搭配 Photoshop 的圖形化工具，而是想設計一個專用的語言，來執行這個切圖的動作。

這個語言要告知原始圖檔，然後再列出每張被切下來的圖的位置、大小、甚至名字等。舉個例子，假設我要把圖中八個紅線匡起來的部分，一一切下來存檔。


最簡單的描述方式，大概就長這樣子：

# source picture
#---------------
ipod-touch-5th-black.png

# x,   y,  </summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/399822236705676752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/399822236705676752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/399822236705676752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/399822236705676752'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2016/01/picture-cropping.html' title='利用 PicCrop 工具來切圖'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-5139302309187554639</id><published>2016-01-17T11:19:00.000+08:00</published><updated>2016-01-28T01:16:39.416+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AWK"/><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="project"/><title type='text'>以 EnumLookup 查詢 C enumerator</title><summary type="text">前陣子我把 AWK 撿回來練習，順便研究一下 Windows 下怎麼跑 GAWK 跟 AWKA 之類的工具。這期間，我想了幾個簡單的題目來練習。其中有個我稱作 EnumLookup 的工具，一些慣 C 的人應該會用到，所以在這裡做個分享。 顧名思義，這個工具的目的是針對 enum ，它可以在多個 C enumerations 上查詢 enumerator 或它們對應的值。這裡是安裝跟執行說明文件，大家可以根據上面的指引，直接下載內含執行檔的下載包來試用。這個工具有個搭配的 enum.bat ，執行後可以雙向查詢：可反覆敲進數字來查對應的名字（enumerator），或者敲入名字（enumerator）來查對應的索引數字。需要注意的是，這個工具沒有真的去實作完整的 C enum parser ，只是認「通常」情況下的 enum 特徵。下面這種寫成一行的寫法，無法正確執行：typedef </summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/5139302309187554639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/5139302309187554639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/5139302309187554639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/5139302309187554639'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2016/01/enum-lookup.html' title='以 EnumLookup 查詢 C enumerator'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-4644663785633257874</id><published>2009-02-01T23:34:00.013+08:00</published><updated>2016-01-24T22:12:57.339+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="DSL"/><category scheme="http://www.blogger.com/atom/ns#" term="font"/><category scheme="http://www.blogger.com/atom/ns#" term="imaging"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="YAML"/><title type='text'>The Menu Show</title><summary type="text">接連多日的年假已接近尾聲，吃吃喝喝之餘，很自然地就想到一個跟吃喝有關的練習。雖然年假前在公司搞的相框產品確實用到各式 UI 選單（menu），但我在這裡要聊的是名副其實的菜單（menu）。  為了製作精美的菜單，我用 Google 搜來幾張食物的圖片準備用作底圖，除了一張用作食物主選單底圖外，其餘三張分別用作飲料類、水果類和蔬菜類等用途。考慮到要製作的菜單不只一張，且每張菜單的內容會一直修改，所以我不打算用繪圖軟體繪製菜單，這個重任當然要照慣例，委託給爬說語。要執行這支程式，必須先以 YAML 語法，利用文字編輯器寫下菜單的內容及呈現方式，存成 menu.yaml 。程式執行時會自動讀進這個描述檔，然後描繪出期望的菜單來。例如說，有張菜單長成這樣：  這是一張飲料類的菜單，它有 Coffee, Juice, Soda Water, Tea 等選項，要產生這張菜單， menu.yaml </summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/4644663785633257874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/4644663785633257874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/4644663785633257874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/4644663785633257874'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2009/02/menu-show.html' title='The Menu Show'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-5722195176587884219</id><published>2008-07-13T17:35:00.004+08:00</published><updated>2016-01-24T22:11:54.341+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="DSL"/><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="Flash"/><category scheme="http://www.blogger.com/atom/ns#" term="notation"/><category scheme="http://www.blogger.com/atom/ns#" term="storage"/><title type='text'>Commands of the NAND</title><summary type="text">到電子商場逛一圈就會發現一堆產品都有 NAND flash 的身影（例如大拇哥，記憶卡，MP3 player，數位相框，甚至 PC 等）。前陣子和 simayi 閒聊時，他就提到：既然大家都愛用 NAND flash ，要是有人為它搞個 IP 或函式庫之類的，勢必可大幅節省開發時間。  相信處理過 NAND flash 的 firmware 人員，在啃讀 datasheet 的過程，難免得謹慎地交叉比對，好好推敲那也佔了不少篇幅的時序圖，以免自己還是不夠小心，誤解文意……不知道大家看了那一疊 waveform 後，有什麼感想？我的看法是，那疊圖雖補足了許多重要細節，卻沒能好好強調重點，抽象度不夠。這根本是在折磨 firmware 人員，使我們構思演算法時綁手綁腳。因此，在 K 完文件後，我為這疊 command waveforms 作的第一件事就是－－提昇抽象度，強調重點，用 </summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/5722195176587884219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/5722195176587884219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/5722195176587884219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/5722195176587884219'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2008/07/commands-of-nand.html' title='Commands of the NAND'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-845738574851864744</id><published>2008-06-30T01:04:00.005+08:00</published><updated>2009-07-04T21:27:18.846+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="Flash"/><category scheme="http://www.blogger.com/atom/ns#" term="storage"/><title type='text'>NAND Flash 簡介</title><summary type="text">

撬開一張 SD 卡，裡面最顯眼的，當然就是那大大一顆的 NAND flash ，我們餵給 SD 卡的資料都儲存在裡面；在 NAND flash 旁邊，還可看到一顆小一號的，那就是 controller IC ， 要確保資料的儲存是安全可靠的，有九成的責任都要算在 controller 身上。



在硬體介面方面， NAND Flash 雖有 bus 結構，卻沒去區分 address bus 及 data bus 。在 NAND Flash 上進行任何操作（如 read, write, erase 等），都要透過 command ，且無論 address, data, 或 command，都以同一組 I/O bus 傳輸。

此外， NAND flash 在資料 program 或保存過程，還會隨機出錯，所以廠商才會建議搭配 ECC (Error Correcting Coding)</summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/845738574851864744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/845738574851864744' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/845738574851864744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/845738574851864744'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2008/06/nand-flash.html' title='NAND Flash 簡介'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-3643895506916889954</id><published>2008-06-16T02:24:00.005+08:00</published><updated>2009-05-20T11:23:35.665+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="EEPROM"/><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="Flash"/><category scheme="http://www.blogger.com/atom/ns#" term="NVRAM"/><title type='text'>The Floating Gate</title><summary type="text">

浮動閘（floating gate）一詞會讓我銘記於心，是因為閱讀了《矽眼》，該書提到以浮動閘紀錄類神經元突觸加權值，這是「類比」儲存的一個應用。

然而，對多數內嵌系統設計人員來說，浮動閘是用在「數位」儲存的，諸如 EPROM, EEPROM, NOR flash, NAND flash 等。



無論是 EPROM, EEPROM 或 NOR flash ，早先都是設計來在上面直接跑程式的（不用 copy 到 RAM 上跑，術語叫做 execute in place, XIP），所以有獨立的 data bus 及 address bus 。

為了省空間，後來很多 MCU 都把 EPROM, EEPROM 或 NOR flash 包進同一棵 chip 了，這造成外部的 EEPROM 或 Flash 開始走 serial 路線。 serial EEPROM 或 serial </summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/3643895506916889954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/3643895506916889954' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/3643895506916889954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/3643895506916889954'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2008/06/floating-gate.html' title='The Floating Gate'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-2270319920298148169</id><published>2008-06-07T20:57:00.009+08:00</published><updated>2009-07-04T19:29:15.564+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="graphics"/><category scheme="http://www.blogger.com/atom/ns#" term="math"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>The Analog Clock</title><summary type="text">


……秒針急急忙忙的去撥動每一根短棒，使它們產生意義。然後分針慢吞吞的做同樣的事，使那些短棒產生另一種意義。三種針的位置和關係不斷變更，在錶面上切割出許多角來，夾住那不可捉摸的時間。……（摘自作文七巧：P86）




算一算日子，在現任公司混吃也有九個月了。很幸運的，一進來就參與一顆 ASIC 的開發，從一開始的寫 tools 測試 FPGA 功能，後來的寫 f/w 測試 ASIC ，到最後的參與產品開發。照規劃，一開始只打算拿來秀秀圖，偶爾也秀秀時間日期。後來為了把這顆小 MCU 的能耐完全壓榨出來，前些日子我還幫它加了類比鐘（Analog Clock）。自此，相框就不再僅僅只是相框了：



想起專科的畢業專題，我實作過一組函式庫，用來執行 3D 投影及相關的座標轉換。一晃眼已經十多年了，最近為了完成的這個類比鐘，竟然連描點畫線的程式都得自己手寫……
</summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/2270319920298148169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/2270319920298148169' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/2270319920298148169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/2270319920298148169'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2008/06/analog-clock.html' title='The Analog Clock'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-4207247199327780287</id><published>2008-05-19T00:13:00.003+08:00</published><updated>2009-08-09T16:28:13.716+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="math"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>The Fraction from a Decimal</title><summary type="text">定點數運算常用於 embedded systems 中，因為大部分低階的 MCU （例如： 8051, PIC, AVR 等）開發環境雖提供浮點運算，卻是軟體模擬的，除了慢，還明顯佔用原本就少得可憐的記憶體空間。 C/C++ 語言雖無定點數運算專用語法，程式員卻可通過手動調整，有效以整數運算完成相同效果。



定點數運作的原理，簡言之，就是將原來的實數（real number）或者小數（decimal），改寫成分數（fraction）：如果 x 是個含小數的實數，我們可以找來兩個整數（p, q），將它們相除，來近似原來的 x （p/q ~= x）。

實務上人們可能還會要求上述的 q 要是 2 的冪次，因為電腦處理的都是 0, 1 的二進位運算， q 表示成 2 的冪次可以達到較高的精度；另一個原因我想是許多 f/w 程式員都患了 shift 偏執症 :p

有個友人前</summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/4207247199327780287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/4207247199327780287' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/4207247199327780287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/4207247199327780287'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2008/05/fraction-from-decimal.html' title='The Fraction from a Decimal'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-6838892787610903341</id><published>2008-05-12T00:41:00.006+08:00</published><updated>2009-02-02T00:49:37.969+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="compiler"/><category scheme="http://www.blogger.com/atom/ns#" term="parser"/><title type='text'>Parser Generators</title><summary type="text">

在軟體開發過程，我們很可能得寫大量的程式碼來完成一些繁瑣、平凡的工作，避開這個窠臼的辦法就是「自動化」。誠如 Kernighan 和 Pike 在 The Practice of Programming 一書所闡述的，優秀的軟體設計運用幾個基本原則：簡單（simplicity）、清晰（clarity）、一般性（generality）、自動化（automation）。




舉個例子， IC designers 常會跟 f/w 人員一起關起門來，私下協調出各種用途的 registers （memory mapped I/O），這些開放給 f/w 人員使用的 register 介面，會有一份以 Verilog 形式存在，另一份則以 C code 的形式存在，在 IC 開發過程，這些 registers 會經歷多次的變更（例如改名字、改位址、添加 registers、刪減 </summary><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/6838892787610903341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/6838892787610903341'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2008/05/parser-generators.html' title='Parser Generators'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-1274112881148850878</id><published>2008-04-13T14:45:00.003+08:00</published><updated>2008-07-13T17:53:19.547+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="compiler"/><category scheme="http://www.blogger.com/atom/ns#" term="notation"/><title type='text'>Phases of a Compiler</title><summary type="text">先前曾經探討，像我們這種靠寫程式混吃的，最好備有兩把刷子，當發現其中一把刷子無法刷掉問題時，趕緊換上另一把刷刷看。通常一次只要用上一把，就可以把問題刷掉，偏偏有些問題比較棘手，要同時用上兩把刷子，左右開弓，才刷得乾淨！



這些要左右開弓的問題中，有個最典型的例子，那就是實作一個程式語言的編譯器（Compiler），它運作時恰好要經歷「分析」及「合成」兩個階段，這實在太妙了，所以我將它整理整理，簡述如下：


Analysis Phases
  
  Linear Analysis
    
    alias: scanning, lexical analysis
    output: token stream
    language: Regular Expression
    
  Hierarchical Analysis
    
    alias: parsing,</summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/1274112881148850878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/1274112881148850878' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/1274112881148850878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/1274112881148850878'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2008/04/phases-of-compiler.html' title='Phases of a Compiler'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-8398263842293210670</id><published>2008-04-13T13:43:00.010+08:00</published><updated>2009-07-04T19:33:00.931+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="concept"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>Two Ways to Solve a Problem</title><summary type="text">這些年下來，我反覆觀察到一個現象：程式員各有一套慣用的方法來克服自己遭遇到的問題，這些解題習慣可區分成兩種，工程師多只專精其一，只有少數能任意在兩者間自在地切換。

在很多情況下，無論程式員採用哪種作法，都可輕易把問題解掉；但是另有一些問題，卻不是這樣隨性而為就解得掉的－－這就值得我們好好玩味了……



以 1..n 的正整數相加這個例子來說，我知道程式員應該利用現成的副程式，以爬說語來寫，應該要長成這樣：


n = 100
y = sum(range(1, n+1))


假裝我們沒有現成的，像 sum 這樣的副程式可用。那麼，一種可能的寫法如下：


y = 0
for i in range(1, n+1):
    y += i


這是標準的合成（Synthesis）法。以這個例子來說，如果不考慮時間複雜度要 O(n) ，這個方法其實</summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/8398263842293210670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/8398263842293210670' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/8398263842293210670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/8398263842293210670'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2008/04/two-ways-to-solve-problem.html' title='Two Ways to Solve a Problem'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-6714779410377296064</id><published>2008-04-12T16:00:00.003+08:00</published><updated>2008-06-07T22:03:15.425+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="SCM"/><title type='text'>Make a Secure Code Server</title><summary type="text">來這混吃也七個月有餘了，初到公司時正逢新 IC 開發，我受命寫了工具程式以驗證功能，完成了 Boot Loader 以執行外部程式，也開發了應用產品的 firmware 以提供下游客戶 total solution ～～ 

接單量產、功能穩定後，準備接手的同事人竟然在新竹－－先前架的 code server 一直都只在台北這邊的內網使用，安全無虞，現在既然要跨到外網了，當然得提防封包被監聽……



原先架設的版本控制系統 SVN 及搭配的問題追蹤系統 Trac ，兩者都是透過 HTTP 協定和用戶端連線，現在為了隱密地傳輸資料，最直接的方案就是改走 HTTPS （HTTP over SSL）協定。

要讓我們的網頁伺服器 Apache 支援 HTTPS ，最省事的作法就是安裝 Apache 時就採用整合了 SSL 的安裝包。很不巧的是我之前用的安裝包是 no_ssl 的版本，所以得</summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/6714779410377296064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/6714779410377296064' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/6714779410377296064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/6714779410377296064'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2008/04/make-secure-code-server.html' title='Make a Secure Code Server'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-2298885652326782350</id><published>2008-04-06T17:14:00.007+08:00</published><updated>2009-02-09T21:04:40.435+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="UI"/><title type='text'>Fingering of Keys</title><summary type="text">按鍵是很普遍的人機介面，也常用於內嵌系統（Embedded Systems）。既然大家那麼愛用按鍵，很自然地， Embedded Systems 軔體開發人員就常常得處理按鍵的偵測、編碼等議題。此外，為了按鍵操作流暢，我們還必須為按鍵設計適當的指法（fingering）及明確、統一的功能定義（function definition）。



不久前筆者設計了一款相框產品，它雖然只有三個按鍵，但除了要能執行基本操作，如上一張、下一張、設定自動換張的間隔時間等；也要能夠流暢地切換功能，如手動換張、自動換張、顯示日期時鐘、功能設定等；此外，最好還能透過這些操作，讓使用者充分感受到它優越的秀圖速度。

老實說，把這些操作通通塞進三個按鍵內並不是多困難的事，比較需要我們傷腦筋的是怎麼讓使用者覺得操作是簡單流暢、符合預期的。

這裡不是要跟你扯怎麼設計美美的畫面，雖然美美的畫面很重要，但畫面設計還是</summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/2298885652326782350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/2298885652326782350' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/2298885652326782350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/2298885652326782350'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2008/04/fingering-of-keys.html' title='Fingering of Keys'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-6177798135738957591</id><published>2007-09-25T19:45:00.000+08:00</published><updated>2013-12-16T02:02:45.745+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="concept"/><category scheme="http://www.blogger.com/atom/ns#" term="design"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><title type='text'>The Art of Design</title><summary type="text">為甚麼好的設計會來自於差的設計呢？ Scott 在 Why Good Design Comes from Bad Design 提到攻讀 CMU Computer Science 博士時選了門介面設計課，第一堂課上他發現一位年輕人素描著隨身聽的各種變異版本，而且圖紙上已經堆積了三、四十種不同考量的版本了。 Scott 於是湊過去問這個小伙子「幹嘛費勁畫那麼多草稿？」，小伙子發楞了好一會才笑著回說：
  
I don&#39;t know what a good idea looks like until I&#39;ve seen the bad ones.  經過時日洗煉， Scott 後來也體會到當初認為多餘的作法，其背後的精神，他提到：
Each new idea I sketched out was more informed than the last. Each bad idea </summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/6177798135738957591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/6177798135738957591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/6177798135738957591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/6177798135738957591'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2007/09/art-of-design.html' title='The Art of Design'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-5839883265960243537</id><published>2007-09-17T00:47:00.000+08:00</published><updated>2007-09-21T23:27:46.553+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="SCM"/><title type='text'>SVN &amp; Trac Installation 備忘</title><summary type="text">上週一（9/10）公司要我把 Subversion 環境架起來。除了很高興公司也打算採行版本控制環境來幫助程式開發外，我還打算一併把 Issue Tracking 系統掛上去。

說起 Issue Tracking System，要跟 Subversion 搭配良好，且一樣是 freeware 的，當然非 Trac 莫屬。細查之下，乖乖， Trac 竟然要裝那麼多相關套件，且各個套件還要挑正確版本，才可運作良好。

為了避免大家（或將來的自己）白走冤枉路，這裡把要安裝的東西及安裝步驟條列於後：




Download

反正就把下列連結清單中的檔案都抓下來，待會再一口氣安裝。


TortoiseSVN-1.4.5.10425-win32-svn-1.4.5.msi
  
  see http://tortoisesvn.net/downloads for other version
</summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/5839883265960243537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/5839883265960243537' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/5839883265960243537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/5839883265960243537'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2007/09/svn-trac-installation.html' title='SVN &amp; Trac Installation 備忘'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-5433318005871061162</id><published>2007-09-09T19:46:00.001+08:00</published><updated>2008-02-17T15:33:28.354+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI"/><category scheme="http://www.blogger.com/atom/ns#" term="book"/><category scheme="http://www.blogger.com/atom/ns#" term="review"/><category scheme="http://www.blogger.com/atom/ns#" term="robot"/><title type='text'>Machine to Transcendent Mind</title><summary type="text">

前些日子把讀過的機器人書整理上來後，網友 HuaHua 留言推薦了《機器人：由機器邁向超越人類心智之路》。後來我特地跑一趟政大書城，翻閱後才想起幾個月前也在這翻過。如今再次翻閱，還是沒抱回去好好端詳，最大原因是此書主要內容，我在其他諸如書、網路、或論文等，幾乎都涉獵過。

昨天到國家圖書館，無意間發現該書竟躺在那，頻頻向我招手……嗯，這次當然不能再錯過 ^__^




與其說這是本講機器（人）的書，不如說它是探討人造智能（AI）或電腦及機器智慧（Machine Intelligence）發展潛能的書。


Autonomous Mobile Robots

這本書最合我胃口的是第二章〈小心！前有機器車〉，探討作者對機器自走車的實務經驗。裡面提到作者 Hans Moravec 在 Mobile Robot Laboratory 接受 Denning Mobile Robotics </summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/5433318005871061162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/5433318005871061162' title='26 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/5433318005871061162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/5433318005871061162'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2007/09/machine-to-transcendent-mind.html' title='Machine to Transcendent Mind'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>26</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-4116084813621478836</id><published>2007-07-31T22:26:00.000+08:00</published><updated>2007-07-31T22:31:50.290+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="book"/><category scheme="http://www.blogger.com/atom/ns#" term="robot"/><title type='text'>Robot Book 閱讀清單</title><summary type="text">也許拜大廠效應（例如 Google、微軟及鴻海等相繼投入）所賜，也或者只因為熱門 Robot 商品接續問市所致，總覺得這陣子 Robot 愛好者有增多的趨勢。
碰巧這陣子我也 K 了好些 Robot 相關的書，內容包括理論及實作，涵蓋了電子、電機、機械、機構等，趁空檔把這些書整理整理，上來和大家分享 ^__^ 






要買 Robot 書，原文部份，天瓏那有專櫃，大家可以去翻閱翻閱；此外，若水堂那有許多相關簡中書，許多甚至是日文或英文書的中譯本，強烈建議去那瞧瞧，絕對不會讓您失望的。
以下就把我認為值得一讀的幾本列出來供大家參考：




  機器人編程技術-基於行為的機器人實戰指南
  （美）[******]

    
    iRobot 創始人之一 Joe Jones 寫的書，內容不但讓人耳目一新，且提供必要的細節
    原文：Robot
      </summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/4116084813621478836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/4116084813621478836' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/4116084813621478836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/4116084813621478836'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2007/07/robot-book.html' title='Robot Book 閱讀清單'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-609587386558325622</id><published>2007-07-15T02:26:00.005+08:00</published><updated>2009-08-09T18:58:21.234+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CSV"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>Python 與 CSV</title><summary type="text">許多資料，像通訊錄或試算表之類的，很適合列表呈現。而 comma-separated values, CSV是微軟牌視窗軟體存放表格資料常用的檔案格式。這種純文字的檔案格式是以逗號（comma）來為每筆（record）資料的欄位（field）作分隔。



舉個實際的例子，不久前我因論文需要，由 Davis 那取得了 1999 年美國千大企業的董事會成員資料。內容包括這些董事（directors）的公司、職稱、年齡等等。

由於我只關心每間公司的董事有哪些，所以就輕快地以 Python 語寫了一個 function ，要電腦讀入這個 CSV 檔後，順便吐出各公司的董事們：


def LoadBoards_v0(fn=&#39;direct99.csv&#39;):
    &quot;&quot;&quot;Loads directors of companies from a CSV file and
</summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/609587386558325622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/609587386558325622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/609587386558325622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/609587386558325622'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2007/07/python-csv.html' title='Python 與 CSV'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-7588975658058285189</id><published>2007-07-01T19:59:00.000+08:00</published><updated>2007-07-04T15:36:21.177+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="graphics"/><category scheme="http://www.blogger.com/atom/ns#" term="Logo"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="simulation"/><title type='text'>Logo 也 3D</title><summary type="text">


前陣子 survey 描述機器動作的程式語言時，看到幾個賣像不錯的 Robot 產品，竟不約而同地，都說
Logo
語。


經過一連串的 google 、到處點閱後發現：原來 Logo 早已跳出原先的認知，不再只是給小朋友玩的烏龜繪圖了！



一直以來，我對 Logo 語言並不陌生，因為手邊好些科普書都有提到，例如：


  
    《電腦如何思考》p53
    ，Hillis 以 Logo 為例子，說明程式語言的威力；
  
  
    《沙地上的圖案》p136
    ，〈作為藝術家的烏龜，The turtle as artist〉這節說明了 Papert 的 Logo 及其
    Turtle
    Geometry ；
  
  
    《MIT
    媒體實驗室》p181 ，提到了控制 LEGO 積木的 Logo 語言；
  
  
    《遊習世紀》</summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/7588975658058285189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/7588975658058285189' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/7588975658058285189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/7588975658058285189'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2007/07/logo-3d.html' title='Logo 也 3D'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-5787839217310517920</id><published>2007-06-23T14:53:00.000+08:00</published><updated>2007-06-23T15:21:53.128+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="soliloquy"/><title type='text'>終於通過口試了，呼～</title><summary type="text">突然想起「……什麼什麼道遠的，……」這句話，這條路還真是漫長，果然「畢業遠乎！」。
週四跟口試委員一一握手後，終於可以感受到畢業不遠乎了，呼～


原本這只是個人生涯的小插曲，根本不值一提，不過還是到這昭告一下，讓關心這件事，又不常見面的人為我高興高興 :-)
接下來就收收尾，然後快快樂樂回到街上去（嗯，我果然比較適合沿街混吃，不適合呆在象牙塔內）



Tags: [soliloquy]
</summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/5787839217310517920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/5787839217310517920' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/5787839217310517920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/5787839217310517920'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2007/06/blog-post.html' title='終於通過口試了，呼～'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-6529241354012666551</id><published>2007-05-26T14:31:00.000+08:00</published><updated>2007-06-09T16:47:01.021+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="annotation"/><category scheme="http://www.blogger.com/atom/ns#" term="research"/><category scheme="http://www.blogger.com/atom/ns#" term="Tags"/><title type='text'>你 diigo 了嗎？</title><summary type="text">最近從 William 在推推王整理的精華區軟體好物那知道了一個很好用的工具 diggo ，使用之下，實在太讓人感動了，忍不住上來推廣。

Diggo 提供的社會性書籤（social bookmarking）服務，是以線上在網頁畫重點、下評註為主軸。


套用 CNET 的話說：「如果在一個 3000 字的文章當中，用戶僅僅只需要一句話，那麼用戶就知道在網站上做記號是一件多麼實用的事情」


  它可以在網頁上用直接畫重點（Highlight），下評註（Add Sticky Note）；
  也可以同時看到別人整理的重點及評註；
  甚至還可以根據劃線的某字句跟大家討論；
  讓人感動的是，它同時也會把你評註過的網頁自動 cached 一份起來（以後看到好文，不用辛苦抓網頁備份了）；
  它還可以把選定的相關 bookmarks 一次抽出各篇有畫重點的字句（Extract </summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/6529241354012666551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/6529241354012666551' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/6529241354012666551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/6529241354012666551'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2007/05/diigo.html' title='你 diigo 了嗎？'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9307457.post-779470516298169934</id><published>2007-03-07T21:50:00.000+08:00</published><updated>2007-03-10T01:40:02.012+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogger"/><category scheme="http://www.blogger.com/atom/ns#" term="BlogTech"/><title type='text'>New Blogger 備忘</title><summary type="text">年初 Google 在 Blogger Beta 的 Beta 上打叉後，就一直有股感覺，覺得要被強迫升級似的。可是新舊版的版面樣板語法不同，一些土法煉鋼的小玩意都面臨改寫的命運，所以一直沒騰出時間來做這個升級的動作。

這幾天終於決定好好研究一下，費了三天才把這個 Blog 從舊 Blogger 那，移植到新的 Blogger Beta 。

這版的 Blogger 最重要的改進如下：

提供一套更彈性的語法及 AJAX 介面，方便我們設計版面。
template 設計更模組化，可以局部修改。
終於支援 Labels 了。
現在 Comments 也有 Feed 了。
文章編輯列表除了可以換頁外（之前的版本不行），還可以用 label 索引。


不過還是有幾個令人不甚滿意的地方：

語法變得複雜了。
之前 Previous Posts 會根據各個 blog item 動態調整的效果被</summary><link rel='replies' type='application/atom+xml' href='http://yukuan.blogspot.com/feeds/779470516298169934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9307457/779470516298169934' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/779470516298169934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9307457/posts/default/779470516298169934'/><link rel='alternate' type='text/html' href='http://yukuan.blogspot.com/2007/03/new-blogger.html' title='New Blogger 備忘'/><author><name>York</name><uri>http://www.blogger.com/profile/16278534857437994661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>