Posted in August 27, 2010 ¬ 6:04 amh.diro
以往要用 OpenVPN 架設 VPN 的環境非常麻煩,但現在有了 OpenVPN AS 後,大概只要幾分鐘就可以建立完畢,對家庭使用者來說真的是非常方便。 OpenVPN AS 是以 OpenVPN 為基礎的一個軟體,從官網的描述可以看到:
OpenVPN Access Server (OpenVPN-AS) is a set of installation and configuration tools that simplify the rapid deployment of a VPN remote access solution. It is based on the popular OpenVPN open-source software, making the deployed VPN immediately compatible with OpenVPN client software across [...]
Read the rest of this entry »
Posted in June 26, 2010 ¬ 12:26 amh.diro
要打造一個效能良好的 Multi-Thread Application 是難度相當高的一件事,一般來說第一個會碰到的問題就是因為 synchronization objects 的 contention 造成的效能下降,通常可以用 atomic operator 及 lock-free algorithm 做一些改善。而隨著現在 CPU 的核心數愈來愈多,又把難度向上提高了不少 Orz。其它常碰到的問題包括了:
第一個是 Load imbalance:假設你的電腦是 4 cores,理想上開 4 threads 來做事是最好的,但是這 4 個 threads 要做的事情必需一樣重,不然就會有人是閒閒沒事做,別人操的要死的狀況,如果你是開發演算法,可以考慮用 Intel TBB 中的 task 來解決這個問題。
第二個是 Threading overhead:大家都知道 context switch 是很花時間的,但是並不是說 threads 愈少就一定愈好!這是一個很複雜的問題,留待之後再來討論~
第三個是 Memory Bandwidth Bottleneck:因為每個 thread 它所需要讀取/寫入的資料有可能是毫無關聯的,但因為資料及指令是需要被讀入 L1 Cache 才能執行,因此會大幅增加 cache line miss 的機率,一般來說L2 Cache 比L1 [...]
Read the rest of this entry »
Posted in May 8, 2010 ¬ 11:26 pmh.diro
我希望有一個裝置可以讓我控制家中所有有紅外線的設備(冷氣、電視、MOD…),已經有一些商品化的產品,但是還是想自己做看看。
目前最流行的是用LIRC或Winlirc,不過看起來都是用RS-232的 solution,在現在這個年代用RS-232實在是不大中,我想要研究一下比較現代化的做法。
USB IR 接收/發射器
Tira (USB IR transmitter / receiver)
http://www.home-electro.com/tira2.php
USB-UIRT
http://www.usbuirt.com/
Implementation USB into microcontroller: IgorPlug-USB (AVR) 這個看起來很累人 Orz
http://www.cesko.host.sk/IgorPlugUSB/IgorPlug-USB%20%28AVR%29_eng.htm
另一個看起來比較平易近人而且還有在maintain的 USB IR transmitter/receiver
http://dangerousprototypes.com/2010/01/29/prototype-usb-infrared-remote-control-receivertransmitter/
Project / Resource
Linux Home Automation
http://www.linuxha.com/athome/
OpenRemote
http://openremote.org/display/HOME/OpenRemote
Read the rest of this entry »
Posted in May 6, 2010 ¬ 3:44 amh.diro
在 debug 時最常用到的就是 symbol file / symbol server,然而相信常有 load 不到 symbol file 的經驗,不管怎麼按,怎麼換,不對就是不對,有時覺得明明就放對了,還是不能用 Orz。如果你用的是 VS.NET,應該永遠都只能繼續怨天尤人、哭天搶地了,但如果你用的是 windbg 的話,那麼請照著下面步驟來解決這個問題。
例如我在追查memory leak的時候,去分析一個 address 的 call stack
!heap -p -a 0×12344545
結果得到的 callstack 非常詭異,一看就覺得不可能,或著它很明顯的告訴你「Following frames may be wrong」,那們八成是 symbol 不正確了
首先要先判斷為什麼 load 不到,先用 sym 打開 symbol 的詳細訊息
!sym noisy
此時重新執剛才的指令 !heap -p -a 0×12344545, 此時它便會告訴你它有那些 symbol file 是有問題的
checksum 不正確
如果你確定 symbol (.pdb) 是對的, 或著你是重新用一模一樣的 compiler setting [...]
Read the rest of this entry »
Posted in March 27, 2010 ¬ 11:26 pmh.diro
上次介紹的 TeamCity 預設是不支援 Boost Unit Testing Framework 的,需要額外的 plugin 才能將Boost UTF 的測試報告整合進 TeamCity 中。
首先先到 TeamCity 官方網站下載 plugin,檔案在
http://confluence.jetbrains.net/display/TW/Cpp+Unit+Test+Reporting
裡面有一個 teamcity-boost-1.2.zip for Boost.Test library,下載回來之後解壓縮可以得到三個檔案
teamcity_boost.cpp
teamcity_messages.cpp
teamcity_messages.h
只要將這三個檔案加入你原有的 testing project 中即可,不需更改任何設定。
咦,這麼神奇,為什麼這三個檔可以達到這種效果,答案是它是用了 UTF 中的Global fixture,如果你不知道什麼是 fixture,可以先去查詢一下軟體測試的相關文章。這個 Global fixture 會去處理每個Test Case的測試結果,並加以回報給 TeamCity,整體的整合度還蠻高的,可以看到有那些 Test Case,有那些 PASS 以及那些 FAILED,當然FAILED 的訊息也會完整的呈現。
Read the rest of this entry »
Posted in March 25, 2010 ¬ 11:52 pmh.diro
大教堂和市集(The Cathedral and the Bazaar) 是一篇相當有名的文章,不過之前一直沒有看,直到後來讀了Dreaming in Code 一書後,才把這篇文章仔細讀完。這篇文章是由 Eric Steven Raymond 所寫,內容在描述 Linux 的開發模式(市集)及Raymond 自己仿照這個模式開發 fetchmail 的過程,並探討其為什麼成功,其中列了十幾項格言,有幾項個人還蠻有感覺的,如果你覺得你的團隊現在碰到了一些瓶頸,推薦你可以讀讀這篇文章。
http://www.linux.org.tw/CLDP/OLD/doc/Cathedral-Bazaar.html 這篇文章的翻譯翻的蠻好的,推薦!
[格言 1] 好軟體都是起源於程式發展者要解決切身之痛.
[格言 14] 任何的工具以我們所知道的方法來使用都會有用, 但一個真正了不起的工具會以你從未想過的使用方法來發揮它的功能.
[格言 19] 假如專案發展協調者擁有至少跟網際網路一樣好的媒體, 而他也不靠強制力來領導, 那麼一群人必定勝過一個人.
其中我認為最要的,仍舊是格言 1,因為它背後的含意是”熱忱”,有熱忱才能開發出好的軟體,如果你的團隊不知他為何要打造這個軟體?這個軟體到底有什麼用處?那麼,這個軟體註定不會成為一個優秀的軟體。
Read the rest of this entry »
Posted in December 29, 2009 ¬ 10:19 pmh.diro
http://www.jetbrains.com/teamcity/index.html
持續整合是軟體開發時相當重要的一環,透過持續整合可以了解目前專案的狀態,包含是否能正確編譯、通過測試,甚至是整體的整合是否也運作良好。在現實的軟體開發環境中,其實很有可能因為修改了一行程式碼,便讓整個專案陷入無法編譯或運行結果不正確的狀態,而如果這個專案又是多人開發且高度相依,更有可能會影響到別人的作業。
不但影響別人的工作流暢性,使其離開神馳(flow)的狀態,更會讓程式設計師進入一種非"愉悅"的狀態。而程式設計師一但離開神馳或著進入非愉悅狀態,生產力將大幅下降(請參考Refactoring to Patterns及Peopleware)。
更甚者,每每到了產品要Release的時候,才發現整合不起來,導致在緊要關頭呈現兵荒馬亂的慘況(且嚴重影響士氣)。
以往要做到持續整合(Daily Build + Daily Test),是採用手寫script的方式進行,但是自己就要處理許多部份,包含checkout source code, compile, test, report, email 等,但最近用了JetBrain 的 TeamCity,發現原來世界是這麼的美好 我再也不用手工去打造這個環境了。
Read the rest of this entry »
Posted in December 29, 2009 ¬ 8:45 pmh.diro
上篇講到撥接式BBS,真的是古老的回憶了…
之前最常見的撥接軟體應該就屬 TELIX 及 COMM 最有名了。個人鐘情於 TELIX,因為裡面還可以寫 script,可以拿來架一個小型的BBS站(我的第一個BBS站就這樣誕生了)
不過這種迷你型的BBS站真的只能玩玩而已,因為功能實在太陽春了,幾套比較大型的架站軟體有RA, ProBoard, QBBS, RBBS, QuickBBS, SuperBBS, Maximus等,在我玩的時候QBBS跟RBBS已經退流行了,比較夯的是QuickBBS、SuperBBS還有RA,PB算是後起之秀。我用的SuperBBS 當時是1.1x版,後來應該沒有出到2.0就進入Internet時代了。
Read the rest of this entry »
Posted in December 29, 2009 ¬ 8:27 pmh.diro
以前剛玩Dial-up BBS時,站上的軟體都會壓縮起來,那時候的壓縮格式還蠻多的,現在大概只剩下ZIP還有人在用,剩的應該都快消失了吧。
ZIP(PKUNZIP, PKZIP)
ARJ
ARC
LZH(Lha)
ACE
你還記得幾個呢?
Read the rest of this entry »
Posted in November 21, 2009 ¬ 9:37 pmh.diro
FireScrum 是我目前用過最好用的SCRUM軟體,而且重點是完全免費且open source。FireScrum是一Web-based的軟體,建構在Java, Tomcat, Red5 上面,雖然安裝時要裝蠻多東西的(JDK, Tomcat, Red5, PostgreSQL),不過使用後就會發現還蠻值得的。。
http://www.firescrum.com/
SCRUM的幾個主要特點都有做進來,包括Planning Poker、Backlog Item、TaskBoard、Sprint等。其中的Planning Poker及TaskBoard皆是採用RIA技術,可以多人同時瀏覽、更新,親自體驗一下,真的很炫!(記得要用不同台電腦一起玩這個board)
Read the rest of this entry »