Archive for the 'Software' Category

移除 Cygwin 的步驟

在 Cygwin 的 FAQ 中有提到:How do I uninstall all of Cygwin?

(1) 列出已安裝 cygwin service:cygrunsrv -L
(2) 停用並移除 Cygwin service:

cygrunsrv --stop [service_name]
cygrunsrv --stop inetd (參照 FAQ 說明)
cygrunsrv --remove [service_name]

(3) 砍掉 cygwin 目錄
(4) 移除註冊碼

HKEY_LOCAL_MACHINE\Software\Cygwin
HKEY_CURRENT_USER\Software\Cygwin

台北面試首日

來台北面試的第一天,捷運就坐錯三次;其中兩次是搭錯方向,另外一次是講電話坐過站。不過幸好都有馬上發現,才不至於傻傻地坐到底 :Q 對於外地人來說,完全沒有南北概念,所以也分不清各站間的先後順序,只知道車來了就跳上去!!

下午的面試安排在三點,大概提早了半小時抵達。過程其實也沒什麼,單純討論職務內容外加一個小測驗。公司主管有些在開會,所以等待的時間前後加起來大概有一小時。公司位在精華地段,忠孝複興站這一帶,辦公室坐落在商業大樓內。整個面試在六點結束,不過仍有一位主管尚在開會,人事部門說:之後會直接採用電話連絡的方式來進訪談,這樣省得我再跑一次。

晚餐後去了天瓏一趟,果然名不虛傳,藏書真的不是普通多。本來是想買《C++ Primer》這本書,結果意外發現 K&R 合撰的經典名著《The C Programming Language》有七折優惠,所以二話不說就帶了一本回家。

退伍感言

十一個月的軍旅生涯正式劃上句點,總算盼到這天了。週末不用收假、晚上安全回報也免了,睡眠品質更是不用說,家中絕對是安靜到破錶。在營上的最後一天,眾人依舊忙著救災,要辦離營手續整天卻找不到長官簽名,這個時間點退伍還真有點尷尬。

不管怎麼樣退伍令還是拿到了,忙了老半天為了就是這張破紙。回首這段日子,真的感謝很多人幫忙。無聊又乏味的歲月,如果人生可以那麼荒唐一次就夠了,是時候該邁向下一階段。

影片旋轉工具:VirtualDub

VirtualDub 是一套在 Windows 下免費的影片處理軟體,列出自己比較常用的功能:

  • 影片旋轉(Rotate),選項在:[Video]-[Filters]-[Add]-[Rotate]
  • 影片壓縮(Compression),選項在:[Video]-[Compression]
  • 截取視訊片段

使用流程大致上是,針對影片進行處理(旋轉、截取),再設定壓縮率(Compression),最後再選存檔(Save as AVI),就會開始進行影片的轉換。

ns2 與 MannaSim Framework

Debian 在 4.0r4 之後,新增了一個 Etch-And-A-Half 專案,主要是增加硬體支援與換用新核心(2.6.24 kernel)。引用 Debian Wiki 說明:

Etch And A Half is an additional set of packages that have been included in Debian Etch, since 4.0r4, to increase the amount of hardware supported by Debian 4.0

至於 MannaSim Framework 是在 ns2 上的一個 extension 用來提供 Wireless Sensor Networks 模擬環境:

The Mannasim Framework is a module for WSN simulation based on the Network Simulator (NS2). Mannasim extends NS2 introducing new modules for design, development and analysis of different WSN applications.

經測試 Mannasim 與 ns2 於下列組合中,可以正常編譯:

  • 作業系統:Debian 4.0r7 (由此取得)
  • 編譯環境:gcc version 4.1.2 20061115 (Debian 4.1.1-21)
  • NS2版本:ns allinone 2.29.3
  • MannaSim:ns-2.29 patch (由此取得)

MannaSim Framework 安裝步驟:

1) 安裝編譯時所需套件:

apt-get install build-essential tcl8.4-dev tk8.4-dev

2) 解開 ns2.29.3 壓縮檔:

tar -zxvf ns-allinone-2.29.3.tar.gz

3) 在 ns-allinone-2.29 目錄下進行 Patch 更新:

patch -p1 < mannasim-patch.diff

4) 進行 ns2 安裝:

./install

ns2 LEACH 協定與節點座標資訊

四月真是個練習程式的好日子,因為又到了每年論文趕稿時刻。左圖描述 MobileNode 類別與 Node 類別兩者間的關係,顯然 MobileNode 是 Node 的延伸類別。在 ns2 中如果想要得知節點的座標資訊,可以使用 getLoc() 這個函式。該函式定義在 mobilenode.h 底下,所以使用前記得引入這個標頭檔。函式內容如下:

class MobileNode : public Node
{
public:
  inline void getLoc(double *x, double *y, double *z) {
  update_position();  *x = X_; *y = Y_; *z = Z_;
  }
}

使用方法是先將 Node 指標強制轉型成 MobileNode 指標再引用該函式。下面是一個小小的範例:

#include "mobilenode.h"
double x,y,z;
Node *p = Node::get_node_by_address(index);
((mobileNode *)p)->getLoc(&x, &y, &z);

回歸正題 LEACH 為 Low-Energy Adaptive Clustering Hierarchy 的簡稱,是一個在 Sensor Network 上廣為人知的路由協定。手頭上拿到一份給 ns2 用的模組(mit.tar.gz)還有安裝文件。因為該模組是針對 ns2.27 進行修正,對於其他版本而言,不可以直接使用取代方式安裝該模組。

比較正確的作法是照著安裝文件中的「檔案列表」,找出該模組新增的區段,然後針對各原始檔複製加入該區段。這些區段其實都用 #ifdef MIT_uAMPS#endif 包圍起來,所以還蠻好辨識,這是模組擴增的部份。

另一個要修改的地方是 Makefile,以便進行LEACH模組的編譯。

* 在 DEFINE list 中加入 -DMIT_uAMPS
* 在 INCLUDEs list 中加入 -I./mit/rca -I./mit/uAMPS
* 在 gaf/gaf.o \ 之前加入
 mit/rca/energy.o mit/rca/rcagent.o \
 mit/rca/rca-ll.o mit/rca/resource.o \
 mac/mac-sensor-timers.o mac/mac-sensor.o mit/uAMPS/bsagent.o \

最後進行 make 收工;至於模組的使用方法跟架構,就留給有心研究的人去試了 :Q