發表文章

目前顯示的是 9月, 2013的文章

重新開發的DBus Module for Node.js

Stem OS仍持續開發中,最近針對移植到Cubieboard的工作做了很多努力,為了改善穩定性和增加更多功能,我們重新開發了DBus的模組,讓然後直接跳個大版本號到v0.1。但目前仍處於最後測試階段,待穩定後會上傳至NPM,讓任何人都可以使用。有興趣嘗鮮的人,仍可去git repository,從development分支下載回來使用。 新的DBus模組為了縮小footprint,更適合嵌入式應用,避免引入GLib,為了提升效能,也不使用GContext來處理event loop ,而是完全採用純C/C++和libuv來實作。 此外,舊版的模組一直有個問題,就是大多數功能以同步(Sync)方式在執行,也有與非同步(Asynchronous)設計混搭的情況,導致Node.js程式執行上會不順暢,且有嚴重開發邏輯不一致的問題。有鑑於此,在新的實作中,API被重新設計過,全面採用非同步的設計邏輯。為了讓DBus的操作能更貼近JavaScript 的習慣,也模仿EventEmitter的on()和emit()方法去操作Signal。 除了效能和邏輯的改進之外,新的DBus模組支援了同時建立多個connection的能力。這意味著,開發者可以在同一個process上提供多個DBus的服務。利用這個新特色,我們得以減少StemOS系統上常註程式的數量。 最後,需要注意的是,大量的重新設計,讓新模組的API與舊版完全不相容,如你不打算改寫你的程式,就不該升級到v0.1版本。 後記 做了這麼多年OS的東西,各種用途的系統都有不少經驗,但現在仍然覺得到這是個費力又繁複的工作呀。 不過,努力累積成果,搭上Node.js的列車。最後能對人大聲說這是我們自己設計的JavaScript OS,其莫大的成就感將無可替代!

Hacker 精神,就是一種認真過活的精神

在這一年平淡的公務員生涯裡,想起了某人的一句話:『一年的經驗,重覆了 N 次。』,這幾年自己做過了一些案子,也與很多人交流,發現,這現象似乎真的在業界是很常發生的。在工作上,一件事或東西只要搞到不要出問題的程度就好,所以永遠也僅此於做完交差,解決完大多能預期的眼前問題,然後交差。所以,在這樣的生態中,無論對任何事,進一步的探討、研究和改進,都是種奢望,更不用想從東西的根本改善。 在這樣的情況下,我們仍然敢說我們有 N 年經驗嗎? 當然,就國內企業的現況和體質來說,想要活的好、拉高員工薪資都還是個問題。我們目前無法期望國內企業們能像 Google 等一些公司那樣,讓每個員工除了完成工作外,也可以有機會挑戰自我和做天馬行空的嘗試、研究,進而改進和發展出許多能開花結果的東西。 但是,撫心自問,就算工作上、公司不給我們這樣的機會,我們又是否願意自己投資去花這些看似沒立即意義的時間呢? 還記得,在某一次的朋友引見中,認識了年輕時曾在 NeXT(就是 Steve Job 創辦的那家電腦公司,其系統就是現代 Mac OS X 的前身)工作過的人,他大方跟我聊起了許多年輕時的故事。其中,最讓我有感覺的一個故事,就是早在 90 年代,Mach kernel 和 OS 就已經被移植到 X86 架構的 PC 上(註:X86 版的 Mac,是 2005 年之後才有的)。而更重要的是,在當時 Steve Job 完全不知道這件事,是 RD 私底下的熱血行徑。雖然不知是真是假,但我仍一直在思考著,這件事有可能在國內的企業中發生嗎?有多少人會在下班後,仍然花時間去投入這樣的工作?這對理解 Hacker 文化和精神的人,應該不會太過驚訝,但這對許多一般人來說可能永遠無法理解。 回頭看看,我比較幸運,還沒畢業就選擇了創業一路,別人沒辦法給我機會,我給了我自己機會。基本上在發展自己產品的過程中,就是在挑戰自我、不斷的創造、改變和嘗試,所以雖然在業界也打滾了幾年,至少還沒有停止過學習和研究的念頭,更不惜一切追求自己的目標,過程中對自己沒有交差了事,只有達到一個個里程碑。 更幸運的是,身為一個愛 Coding 的傢伙,在偶然的機會一腳踏入了 Open Source 的世界,這世界沒有苟且,隨時隨地都有人虎視耽耽把眼前的軟體做改進。你不自覺就感染了這樣的動力,狠狠的盯注各式各樣的軟體

jsdx-disk 讓你使用 JavaScript 管理儲存裝置

『 Stem OS 』是一個 JavaScript 作業系統,內建 Node.js 和許多 JavaScript 的系統 APIs。如果你有在筆者的開發動態,就會發現 Stem OS 是我們 Mandice 團隊目前的開發重點和產品,我們一直期望能讓懂 JavaScript 的人,都可以來開發系統程式、嵌入式系統,此外,也想運用 JavaScript 語言的流行度,讓嵌入式系統開發門檻降低,使其更為簡單、快速。如果你家中有看似沒用的舊電腦,在安裝 Stem OS 之後,便可以立即用 JavaScript 自行寫一些應用程式,賦予這舊電腦全新的用途。還記得,在今年的 OSDC 活動上,小弟上台給了一場 lightening Talk,即是探討如何將舊電腦改造成一個無紙化傳真機,而改造的時間只需要 5 分鐘,包括安裝 Stem OS 和寫幾行 JavaScript 程式。有興趣的人可以參閱當時的投影片『 JSDC 2013 簡報釋出!NPK 與 JavaScript OS (Stem) 登場! 』。 JavaScript 語言的好處就是用它寫的程式無需編譯,效能也不俗,這意味著,當你在開發 PC 平台之外的嵌入式裝置(如:ARM),你不必再忍受跨平台編譯(cross-compile)的痛苦,可以很快速開發你的應用。此外 Stem OS 已經將系統和硬體的支援都已經為你處理好,也提供許多低階的系統 APIs,且一開機就是跑你的專屬程式,你可以專心的打造自己的嵌入式應用,完全不用再煩腦和花大量時間在系統整合和移植的開發上。 既然 Stem OS 已經將許多系統功能包裝成 APIs,讓 JavaScript 可以透過這些介面從 UI 控制到硬體,代表我們實際上做了很多這方面的準備工作,本文將要提到的 jsdx-disk,便是其中之一。 jsdx-disk 顧名思義是一個控制硬碟的系統 APIs,你可以用他掛載(Mount)、切割磁區(Partition)和格式化(Format)硬碟。更進一步,你可以用他監控系統上的儲存裝置,以及取得這些儲存裝置的硬體資訊,更進一步處理熱插拔(Hotplug)的行為。在 Stem OS 中,我們以 JavaScript 寫了一支常註程式(Daemon),監控熱插拔隨身碟,自動掛載(Automount)的機制,而這功能就是運用了 js