2013年11月21日 星期四

F9 Microkernel 導讀活動 Part 2 - Scheduling




本月的小聚活動,在新的Ville Cafe場地舉辦,很高興有滿多對議程有興趣的朋友來。

照慣例,我都會問一下大家有沒有先看code,不意外大家太忙了忘記看。

筆者還是想重申一下,導讀活動要發揮效果,大家還是得先看看code,
才能把看不懂的部分, 列問題提出來,以利交流討論。


這次的重點在F9 Microkernel的scheduling為什會省電?

 以下是重點摘要式的簡報:



如有誤謬,請不吝指教。

附註: 其實筆者也有一些問題之後,想請教作者:

  • Dynamic timer 部分 ktimer.c 裡有一個 __ktimer_handler 是給 system tick 硬體呼叫的硬體中斷函式,這個部分不是會定時被呼叫,所以這個函式並不是tickless 的部分,會不會造成比較比耗電情況呢?
  • 另一個問題,目前我發現使用 remote gdb 去trace code,發現會讓 F9 Microkernel 發 kernel exception,但在 console 卻看不到輸出的結果,現在筆者還沒有找到頭緒如何修它,希望有人能提點一二。同步發了一個 f9-kernel issue 到 github 上。 

十二月活動時間調查即將開始,請有興趣的朋友不要忘記到 juluos.org 的 facebook 頁上回覆喔!


2013年11月13日 星期三

當軟體工程師遇上 3D 印表機的那些事?




昨日11/12,應 jserv 邀請首次到大學跟同學上課分享"當軟體⼯工程師遇上 3D 印表機的那些事?"這個主題。早上10點搭高鐵到台南,轉台鐵,12點半就到了台南火車站,交通很方便。

第一次來台南成功大學,好久沒進大學了,感覺非常有人文氣息,步調很悠閒。
資工系的教室不太好找,問了三位學生才找到。

我在分享報告前,問了同學一個問題:"請問有任何同學曾經使用3D印表機列印東西嗎?",答案是沒有,令我感到有些驚訝,看來 3D Printing 進入校園還需要一些時日。

本次分享下列這句話:

也是筆者對自己身為軟體工程師的期許。之前,常戲自己是 coding machine,有時一天寫十幾小時程式,近來心境有所改變,來 hack something,讓寫程式不是人生的全部。

以下是本次的簡報:


While software engineer meets 3d printer from Benux Wei

針對大家以下疑問做了補充及修正。

  • 3D建模軟體關係?
  • 有更便宜的 3D printer ?
  • 名詞 PLA ...?


若有其他不清楚或缺漏的問題部分,可在交流討論一下。

2013年11月5日 星期二

廢燈座大改造:我的 iphone 攝影架DIY



源起,愛玩新坃具的筆者,不小心手滑,近月,透過有在賣 3D Printer Kit 的朋友,買 3D Printer Kit 自己動手,組一台 prusa i3 來印一些小玩具。但花了蠻多小朋友的東西總要產生些效益吧!

前一陣子,檯燈壞了,心想丟掉覺得可惜:看到完好燈座支架,自己近來時常需要拍列印成品與同好分享,總覺不太方便邊作業邊九十度拍照,所以便催生本文。

經過一段時間不斷的調校與苦練"菜鳥3D繪圖入門SketchUp 8軟體";總算,自己設計了一個可多角度的旋轉 iphone 座,以下為相關圖片集。

主體連接底板


主體iphone shell

部分零件一覽表

組裝完成的側視圖

結語

在九十度拍照片或錄影的時候,都非常有用,等於多了一隻手 :) 。
==> 廢物燈分身也重新開始它的新旅程。

本次使用到列印作外的零件清單如下:
  • 亞梭的舊燈座 (含一支 20mm m4 縲絲,兩個大滑片)
  • 30mm 縲絲 * 1
  • 15mm  m3 縲絲 * 1
  • 10mm  m3  * 10
  • m3 縲帽 * 12
  • m3 滑片* 4

接著談一下,所使用繪圖軟體 Google SketchUp 8 for Mac (PS: SketchUp 2013 pro 是需要付費,只提供一段時間試用,切記:pro 版所存的檔案, SketchUp 8 是不能開的)

其次,有些很難畫或重複性很高的元件:如 縲絲(帽)、齒輪、彈簧等等,也可選用另一個軟體工程師愛用的程式繪圖軟體 openscad (The Programmers Solid 3D CAD Modeller)

題外話,使用 SketchUp 8 的理由之一,提供 Python Plugin 功能,可用 python 寫程式來擴充功能,筆者添加了一些功能 (如:網站上熱心的網友提供 Gear 齒輪 ...),之後玩得比較熟的話,若有適合的場地的話,考慮來辦個Python Plugin 心得分享小活動。

文未,廣告一下有與趣玩 3D Printer 的朋友,可到 Taiwan 3D Printing 社群 找到非常多的同好喔。

2013年10月17日 星期四

F9 Microkernel 導讀活動 Part 1




今天JULUOS.ORG小聚 -- F9 Microkernel (a.k.a F9) 導讀活動,筆者將最近在拜讀 jserv 發起 F9 專案程式的筆記資料做個整理分享給大家。

為什麼我會想來讀F9 的程式碼呢?
首先,本人偏愛 BSD  License。

接著,之前有稍微看一下F9的程式,覺得寫得滿優雅的,程式看來順眼。記得曾看過關於優雅程式寫作的文章(我忘記那篇出處了>.<)中寫到:一個 .C 檔,最好保持在 300 行以內;一個C函式落在25~30行,目前看到的F9 code 有符合。見賢思齊,之前我的程式碼並沒有完全依循,之後也要再接再勵。

因為場地的關係,活動時間只有一個多小時;講了一些提要的重點,加上 F9 程式進入點的小部分,就沒時間了。之後找時間換個場地,再來辦導讀活動 Part 2。

最後,奉上今日的簡報檔,如有誤謬,請不吝指正。




2013年5月20日 星期一

Maker Faire 2013 工作坊: 無線控制那些事﹣Facebook Like 數值顯示器




上週六、日13:00~14:00時段,應 OSSLab 邀請擔任 Maker Faire 2013 ﹣OSSLab 工作坊的講者。感謝 Cooperma 幫本人拍出沒那麼胖的活動照片。


源起

在創客空間(Taipei HackerSpace)時,那裡朋友們(主要協作創客空間志工: 曲新天)想要做一個把 Facebook 上的 Taipei HackerSpace 讚的數字顯示器,放在實際Hackerspace 的活動地點,讓訪客一進到創客空間便能看到,進而激發按讚的衝動。

歴經多次試驗,第一版只有 1 位數,第二版為4位數。

第二版 4位數字顯示器
成果展示,我們使用  Wifi Router (安裝為OSSLab 客制化openwrt 韌體)+ Arduino Uno + 8 位數字顯示器。 完成的成品如下:




小結

經過本次實際帶工作坊活動,有些小心得,分享給大家。
   一、在設計課程時,要儘量簡化,多預留時間讓大家練習,因為一個小時內,很難讓初學者立刻上手。
   二、不要期待網路會通,本次會場3G/4G 全都連不上。第二日時,COSCUP 線路組成員(thx)親上火線,網路總算在有展示成功抓取到 Facebook Like 的數目(詳見圖一,助教新天展示的顯示器的數字。
   三、因為要現場展示,最好不要用手拿麥克風,用免持式耳麥會比較好。
   四、需要助教協助會好一點,不然帶活動的人會疲於奔命,活動進度也不好控制。

最後,一個活動要辦的好,需要很多人的努力,特別鳴謝 Eric 工作坊活動承辦人的場地協助,以及相關工作人員(新天、Cooperma、Marcus、thx)的辛勞。

2013年4月26日 星期五

初探 ﹣ 驗收測試驅動開發 (ATDD)






記得去年在JuluOSDev 與 Tossug 合辦聚會活動,曾探討了Tdd with python unittest for embedded c 這個主題,非常多朋友熱情參與。

最近這一段時間,筆者又接觸到ATDD (Acceptance Test-Driven Development),
之前大略看了,最近再花些時間研讀,溫故知新一下。

其中主要差異在於TDD 針對單元測試,
而 ATDD 則是對客戶要驗收的需求來實作單元測試。

有個真實小案例:

王小明是一個很盡責的工程小組長,他和小組完成整個程式專案,也都一一通過各成員所撰寫單元測試,整個程式運作穩定正常。

驗收當天,元大頭為主要客戶代表來驗收,交付程式前,產生如下的對話:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

元大頭說:「小明,可以讓我來試試程式符不符合我們的要求。」

王小明很有信心地說:「可以,程式經過我們嚴格的單元測試,目前版本已是穩定版了!」

元大頭試著輸入一些資料,他不小心把網路線弄掉,結果程式跑出一個錯誤,

他皺著眉說:「這是什是意思“Error:ECONNREFUSED”,我看不懂,這是火星文嗎?」

王小明立刻看了一下把線接上,不加思索,直接回說:

「因為網路連不上,網路線鬆掉了,現在接好,您再試試。」

元大頭按下OK後,待重新連線訊息完成,即能正常輸入後,過了一會有些不滿地說:

「咦?剛輸入資料怎麼全不見,小明你不說沒問題嗎?怎麼會這樣!
之前開需求時,不是有提到要讓使用者方便在常用頁快速輸入,也要讓使用者看得懂啊!」

王小明心虛地說:「抱歉!這是我們的失誤,會儘速修正。」
⋯⋯

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

小結:

以上述案例而言,小明的團隊其實有錯誤處理網路斷線的問題(曾見到沒處理的app程式直接閃退),但卻漏掉兩個需求。
  • 易懂的錯誤訊息
  • 常用頁的輸入時,錯誤處理應儘量保持使用者輸入的資料
若使用 ATDD,設法把需求轉成驗收測試單元,再寫程式來通過這些單元測試;
就比較不會發生遺漏使用者需求的情況。當然這個案例只是冰山一角,
ATDD 也不見得是萬靈丹,有任何想法,歡迎一同討論。



參考資料: