Node.js 做一個 NPM 模組更新或安裝的進度條

前陣子因為專案需求,我需要一個在使用 npm 更新或安裝模組時回推提示的方式。原本的想法是直接透過 Node 呼叫 Shell Script 來做這件事情,等 Shell Script 做完就將視為動作完成。

但這樣其實有缺點,除了回送的無用資訊很多之外,那就是我們無法讓更新的動作被主程式所監視,還有最重要的是,這樣的方式沒有辦法做出進度條!這很重要!更新的 UI 上無法顯示進度條是我無法接受的事!

閱讀全文〈Node.js 做一個 NPM 模組更新或安裝的進度條〉

NodeJS – 為 console.log 加上時間與檔案紀錄。

如果你有開發 Node.js 的經驗,一定相當常運用其內建的 console.log() 來作為 Debug 的方式之一。

而當整個系統完成或上線之後,就比較無法使用這種方式去找後續發生的問題,因為我們不見得能看到系統端終端機中的內容,但若為了這個紀錄功能要多寫一個 function 然後替換掉原本拿來 debug 用的 console.log …這也太麻煩了吧。

幸運的是,JavaScript 允許你用 Override 的方式來覆寫原有的程式,改成你所需要的樣子。

等一下我們就要來覆寫 console.log 這個 function 來為它加入時間戳記以及寫入一個檔案作為紀錄的功能。 閱讀全文〈NodeJS – 為 console.log 加上時間與檔案紀錄。〉

如何部屬 Nodejs 程式到 Openshift 上?

Openshift

Opebshift 是由知名的 RedHat 公司所提供的一個雲端服務,它透過 AWS(Amazon Web Service, AWS) 來提供使用者雲端主機的服務,而且是一個幾近完全功能的主機。

你可以在上面啟用 Apache、PHP、JAVA…等的支援,還支援先進的 NodeJS、GO 等新興語言,關於這服務的詳細內容可以參考香腸所撰寫的這篇文章

閱讀全文〈如何部屬 Nodejs 程式到 Openshift 上?〉

Qt Creator – No such file or directory GL/gl.h

最近開始接觸起 Qt 的開發,原因很簡單,他是一個能夠輕易輕易寫出跨平台軟體的一種函式庫。以 C++ 為基底開發語言,這一特性讓我覺得他比起 C# 來,還要更適合於我現在做的許多專題。

不過剛裝起來就碰到問題,而且是編譯一個空白程式的時候遇到的問題。

閱讀全文〈Qt Creator – No such file or directory GL/gl.h〉

AsAWirelessAdapter Update Note.

As A Wireless Adapter UI

簡介

AsAWirelessAdapter 這東西其實之前有介紹過(詳見如何於VC#中執行命令提示字元的命令?一文),不過那時候寫的不完整,草草帶過運作原理而已。今天想藉著更新,來跟大家分享在2011年時所寫的這個小程式。

AsAWirelessAdapter 其實就是 As A Wireless Adapter 的無空格句子(我相信大家都看得出來),意思就是,當一個無線交換器,也就是無線基地台的意思。

閱讀全文〈AsAWirelessAdapter Update Note.〉

什麼? Git 可以拿來更新測試網站?

你知道嗎?

Git 不只能夠幫你把你的專案好好地留存許多改版痕跡,它還可以拿來幫你將在你電腦上測試完成的結果,在你push你的commit到你自己私有的git伺服器上時,還可以幫你同步更新到你的測試網站的資料夾呢!

只需要簡單幾個步驟就可以完成這樣的任務,期待嗎? 心動嗎? 讓我們繼續看下去。

閱讀全文〈什麼? Git 可以拿來更新測試網站?〉

[C/C++]陣列參數傳遞

用C寫程式的最大缺點就是,沒有內建一堆好用的 library 讓你去 import 並且直接地使用,所以,C/C++的許多開發者都要自幹或者是去網路上找一些能解決目前所碰到的問題的程式碼來用,或者是自幹一個。

先前因為學校課程的關係,寫了很多的 Java ,結果導致我使用 C 語言時產生一些困擾。因為Java幫開發者寫好了非常多的方法與物件,開發者可以直接引用、建立好物件並打上相應的方法名稱後便可以直接地使用,相當方便。

不過單晶片微控制器的開發上,目前來講很少有人採用java 來開發,一來是缺少相應的編譯器,二來是它過於笨重,不適合在低時脈的微控器上執行。所以,單晶片的開發還是繼續使用有點過時但萬能的C語言(少數採用C++)來開發。

今天,要來向各位介紹的是,如何把陣列當作一個參數在函式中傳遞。

閱讀全文〈[C/C++]陣列參數傳遞〉

C#.Net PDF convert to Image

開始之前,需要安裝 Adobe Reader X Pro 以上的版本,安裝完成後去資料夾底下搜尋『Acrobat.dll

開啟Visual Studio專案,並將『Acrobat.dll』加入參考

接著加入『Microsoft.VisualBasic

將以下程式碼貼上去就可以使用了,註解都幫各位寫好了,想知道原理看參考文獻或是註解文字即可

閱讀全文〈C#.Net PDF convert to Image〉

程式設計條件判斷之章,switch…case。

switch…case這個條件判斷的用法,就如同他的名字一樣的直覺。

switch,中文有切換的意思,而case則有案例的意思。它的運作原理跟 if 非常相似,不過在程式中,閱讀起來有時比if來得簡單也更容易懂,尤其當判斷的結果需要很多種變化時,switch…case就是個不錯用的流程控制語法。

這是一個簡單的switch…case例子: switch case

(來源:Cherng)

不對,這個才是:

閱讀全文〈程式設計條件判斷之章,switch…case。〉

Wii Remote Projects 用Wii的搖桿玩出不一樣的世界 1/2。

Wii Remote Projects is one of Johnny Chung Lee’s projects. 我是有一次在網路上逛到的,雖然這東西有點久,不過對我來說還是挺新鮮的一件事情。 那些影片以及他在TED上的演講都讓我印象深刻,邊看邊驚呼的我,當下決定一定要買一支Wii搖桿回來玩以及測試。 就在一個多星期以前,我入手了這支夢寐以求的Wii搖桿。

挑的是黑色款,因為我還滿喜歡那個鋼琴烤漆的質感,哈!

一支799,不算貴。

Wiimote如何運作?

Wiimote即Wii Remote,也就是那隻搖桿(遙控器)。它的運作原理很有趣,它是利用Bluetooth v1.2與Wii主機連結並且傳送與處理資訊。 內部有一個三軸加速度感測器,前端有一個高靈敏的紅外線攝影機。

它就是利用這個和內部的加速度感應器去知道玩家的位置以及姿勢等等,然後再將這些訊息傳給主機,這時的主機會根據遊戲程式來處理這些資訊。 如果想要知道更多詳細資訊可以參考英文版的Wiki,裡面的資料非常詳盡,包括第三方應用等等的。

如何與電腦連接?

剛剛提到,Wii Remote是透過Bluetooth與Wii主機連線,換句話說,只要我們的電腦有藍芽的接收器,我們就能接收到Wii Remote的資訊,所以想要嘗試看看,請準備一個藍芽接收器,如果電腦有內建那就不用準備啦! 準備妥當之後,請同時按下Wii搖桿上的1、2按鍵,這時底下四個LED燈會不斷閃爍,如果沒有閃爍請檢查你有沒有裝上電池。

然後開啟電腦的藍芽程式,點下加入裝置。

找到Nintendo RVL-CNT-01這個名稱的裝置。

連接的時候不用任何密碼的配對,因為Wii搖桿本身不是設計給電腦使用的,請選擇不需密碼配對的選項,或者是密碼欄留空。

OK!連上。連上電腦後的Wii搖桿4顆LED會不斷閃爍。

怎麼玩? 想要嘗試影片上的功能,請依照想嘗試的功能下載,在這邊我整理給各位:

Wiimote Whiteboard

電子白板的小程式,不支援64位元的系統,使用方式可以參考以下的影片。

Multitouch

這比較麻煩,我目前還沒有成功過,因為我還沒去買紅外線二極體。

老實說,我認為Wiimote若只是拿來做這些應用的話似乎有些太浪費,並且在我測試之後發現會有一些角度問題,雖然這點只要把紅外線LED反過來就可以解決。

但這樣的應用大大的浪費了整支遙控器搭配的按鍵以及內建的許多功能,因此我認為這支搖桿還能做到更多樣的應用,例如說非接觸手勢控制、非接觸手寫辨識、無線電腦控制…等等。 附上執行程式以及原始程式碼,歡迎大家來共同討論這雖然過時但卻有趣的應用吧 =D

—- 撰文記事 —-

這篇文章放了快半年,當我打開草稿發現我自從3月之後就沒有在動過這篇文章時,我深深感到訝異…當然,還有比這篇文章更久的草稿文,哈哈! 是有拍實測影片,但總覺得很爛,又很懶得重拍(眼神死),就一直放到了現在…重點,我還是沒拍 XDD 因為放太久,久到我已經忘記原本是要怎麼規劃這篇文章了,所以,我決定先把這篇文章發表出來,當作第一部分。而第二部分則是實測的部分,這部分我會等新的影片完成之後再放上來。雖然我知道,這個東西在網路上已經有很多人發布,但我總覺得還有更有趣的應用,而腦中那個應用的想法已經完成一部分雛形,測試也OK,只剩下修正了…雖然已經修正半年了… 不管如何,我想先讓大家再認識一次這個有點過時的東西,下次,我會順便發表我的應用 🙂