public marks

PUBLIC MARKS from YukuanBlog

2009

The Menu Show

接連多日的年假已接近尾聲,吃吃喝喝之餘,很自然地就想到一個跟吃喝有關的練習。雖然年假前在公司搞的相框產品確實用到各式 UI 選單(menu),但我在這裡要聊的是名副其實的菜單(menu)

2008

Commands of the NAND

相信處理過 NAND flash 的 firmware 人員,在啃讀 datasheet 的過程,難免得謹慎地交叉比對,好好推敲那也佔了不少篇幅的時序圖,以免自己還是不夠小心,誤解文意……

NAND Flash 簡介

撬開一張 SD 卡,裡面最引人注目的,當然就是那大大一顆的 NAND flash ,我們餵給 SD 卡的資料都儲存在裡面。在這顆 NAND flash 的旁邊,我們還可看到一顆小一號的 IC ,那就是 NAND flash 的 controller 。 SD 卡儲存的資料要安全可靠,有九成的責任都要算在這顆 controller 。

The Floating Gate

浮動閘(floating gate)一詞會讓我銘記於心,是因為閱讀了《矽眼》,該書提到以浮動閘紀錄類神經元突觸加權值,這是「類比」儲存的一個應用。然而,對多數內嵌系統設計人員來說,浮動閘是用在「數位」儲存的,諸如 EPROM, EEPROM, NOR flash, NAND flash 等。

The Analog Clock

……秒針急急忙忙的去撥動每一根短棒,使它們產生意義。然後分針慢吞吞的做同樣的事,使那些短棒產生另一種意義。三種針的位置和關係不斷變更,在錶面上切割出許多角來,夾住那不可捉摸的時間。……(摘自作文七巧:P86)

The Fraction from a Decimal

定點數運算常用於 embedded systems 中,因為大部分低階的 MCU (例如: 8051, PIC, AVR 等)開發環境雖提供浮點運算,卻是軟體模擬的,除了慢,還明顯佔用原本就少得可憐的記憶體空間。 C/C 語言雖無定點數運算專用語法,程式員卻可通過手動調整,有效以整數運算完成相同效果。

Parser Generators

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

Phases of a Compiler

實作一個程式語言的編譯器(Compiler),它運作時恰好要經歷「分析」及「合成」兩個階段,這實在太妙了,所以我將它整理整理,簡述如下:

Two Ways to Solve a Problem

這些年下來,我反覆觀察到一個現象:程式員各有一套慣用的方法來克服自己遭遇到的問題,這些解題習慣可區分成兩種,工程師多只專精其一,只有少數能任意在兩者間自在地切換。

Make a Secure Code Server

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

Fingering of Keys

按鍵是很普遍的人機介面,也常用於內嵌系統(Embedded Systems)。既然大家那麼愛用按鍵,很自然地, Embedded Systems 軔體開發人員就常常得處理按鍵的偵測、編碼等議題。此外,為了按鍵操作流暢,我們還必須為按鍵設計適當的指法(fingering)及明確、統一的功能定義(function definition)。

2007

The Art of Design

為甚麼好的設計會來自於差的設計呢? Scott 在 Why Good Design Comes from Bad Design 提到攻讀 CMU Computer Science 博士時選了門介面設計課,第一堂課上他發現一位年輕人素描著隨身聽的各種變異版本,而且圖紙上已經堆積了三、四十種不同考量的版本了。 Scott 於是湊過去問這個小伙子「幹嘛費勁畫那麼多草稿?」

SVN & Trac Installation 備忘

說起 Issue Tracking System,要跟 Subversion 搭配良好,且一樣是 freeware 的,當然非 Trac 莫屬。細查之下,乖乖, Trac 竟然要裝那麼多相關套件,且各個套件還要挑正確版本,才可運作良好。 為了避免大家(或將來的自己)白走冤枉路,這裡把要安裝的東西及安裝步驟條列於後:

Machine to Transcendent Mind

這本書最合我胃口的是第二章〈小心!前有機器車〉,探討作者對機器自走車的實務經驗。裡面提到作者Hans Moravec在 Mobile Robot Laboratory 接受 Denning Mobile Robotics 委託,研究如何以二十四個聲納組成的障礙偵測裝置,量測、取得的距離資料,完成自主機器車導航的任務。

Robot Book 閱讀清單

這陣子我也 K 了好些 Robot 相關的書,內容包括理論及實作,涵蓋了電子、電機、機械、機構等,趁空檔把這些書整理整理,上來和大家分享

Python 與 CSV

許多資料,像通訊錄或試算表之類的,很適合列表呈現。而 comma-separated values, CSV是微軟牌視窗軟體存放表格資料常用的檔案格式。這種純文字格式的檔案格式是以逗號(comma)來為每筆(record)資料的欄位(field)作分隔。

Logo 也 3D

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

終於通過口試了,呼~

週四跟口試委員一一握手後,終於可以感受到畢業不遠乎了,呼~

你 diigo 了嗎?

Diggo 提供的社會性書籤(social bookmarking)服務,是以線上在網頁畫重點、下評註為主軸。 套用 CNET 的話說:「如果在一個 3000 字的文章當中,用戶僅僅只需要一句話,那麼用戶就知道在網站上做記號是一件多麼實用的事情」

New Blogger 備忘

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

2006

Motor-controlling PWMs

一個脈寬調變(Pulse-width Modulation, PWM)訊號可控制一顆 DC motor 轉速,或決定一具 servo motor 的方向、位置或轉速。在複雜的機器人身上,常用上好幾顆馬達,因而能以一顆微控制器(microcontroller, uC)產生多組 PWM 訊號是非常實用的。

Analyze the Sunspots

上次以 Python 搭配 matplotlib 改寫張智星老師傅立葉轉換教學例子。後來逛到 Anders Andreasen 的專文,裡面有個分析太陽黑子活動週期的例子,相同的例子竟然也出現在 Mathworks 展示 Matlab FFT 用法的網頁上。既然大家那麼愛用太陽黑子,我也來攪和攪和,再次以 Python 搭配 matplotlib 改寫,以饗各位看官:

Software Anti-interference

為了維持機器正常運作,除了硬體設計上要把雜訊干擾納入考量外,軟體也不可以坐以待斃,以下整理一些簡單、低階的軟體抗雜訊手段:

FFT in Python

張智星老師的 on-line book《音訊處理與辨識》的〈離散傅立葉轉換〉這個章節,有許多運用快速傅立葉轉換(Fast Fourier transform, FFT)的教學,FFT 其實就是 DFT 的快速算法。張老師是以 Matlab 作為程式範例;實際嘗試後,我發現可以很容易將其轉成 Python code ,

Be Pythonic -- 字正腔圓說 Python

Pythonic 一詞被用來形容合於 Python 慣用法的 code 。Pythonic 的 code 除了讓人們更好理解外,機器執行時,也往往更具效率--語言設計者會絞盡腦汁最佳化語言慣用法的執行效率。這在 Python 這類高階、動態的語言,尤其明顯 :)

YukuanBlog's TAGS

search:

limit:50 100 200

ai   alife   annotation   assertion   biology   blogger   blogtech   book   brain   building   business   c   chaos   chatterbox   clustrmaps   compiler   complexity   computer science   concept   cpp   darwin   debug   design   document   dsp   edelman   embedded   embedology   exception   fft   fiction   flash   font   freeware   fsm   functional   gnu   graph   graphics   ia   impression   infomation   invariant   java   life   linux   literature   math   math model   matlab   mit   neocortex   neuron   nn   notation   note   numeric   oo   parser   pattern   philosophy   physics   plot   programming   project   protocol   psyche   puzzle   python   queue   quote   random   rational   rd   refactoring   research   retina   review   RNG   robot   scientific   scm   search   selection   self organization   sight   simulation   small world   society   software   soliloquy   storage   system theory   tagboard   tags   tools   trend   unit test   universe   weightless