2009-02-25

Windows 下的 su

最近因為用到 PostgreSQL ,而 PostgresSQL 有個限制,不能以【擁有系統管理者權限的使用者】來執行,因此在 Linux 下,就需要以 su 來改變身份去執行,那 windows 下要怎麼辦呢?小弟找到了兩個方法:
  1. sysinternals 裡的 psexec
  2. Windows 內建的 runas
小弟先在系統中建立了一個 postgres 的帳號,然後利用上述兩個軟體來執行。 使用 psexec 的方法如下: psexec -u postgres -p postgres D:\pgsql\bin\postgres -D D:\pgsql\data 使用 runas 的方法如下: %windir%\System32\runas.exe /user:ComputerName\postgres "D:\pgsql\bin\pg_ctl start -D D:\pgsql\data" 使用 psexec 的好處是,可以直接將密碼放在參數上,這樣不用每次都去 keyin 密碼。而使用 runas 的話,每次都要輸入密碼,另外也可以加上 /savecred 參數來存儲存密碼(XP Home 是不能用的)。

2009-02-24

sockstat

之前曾經介紹過如何查看 port 被占住的方式,只是在 Linux 下要下的指令比較長,今天剛好到有人介紹:sockstat,原本是在 freebsd 下用來查看的工具,現在有人將他改寫成 Linux 版,因此 Linux 下也可以使用這好用的工具了。
$ sockstat
USER     PROCESS              PID      PROTO  SOURCE ADDRESS            FOREIGN ADDRESS           STATE
chihchun conduit.real         7902     tcp4   *:3400                    *: *                      LISTEN
chihchun dropboxd             7989     tcp4   10.11.12.231:49912        75.126.170.58:443         CLOSE_WAIT
chihchun pidgin               8651     tcp4   10.11.12.231:46378        66.163.181.178:5050       ESTABLISHED
chihchun ssh                  22871    tcp4   127.0.0.1:6667            *: *                      LISTEN
chihchun ssh                  22871    tcp4   127.0.0.1:6667            127.0.0.1:54522           ESTABLISHED
chihchun ssh                  28346    tcp4   127.0.0.1:1100            *: *                      LISTEN
chihchun ssh                  28346    tcp4   127.0.0.1:2500            *: *                      LISTEN

2009-02-22

好用工具:Junction ( Windows 版的 symbolic link )

Linux 上有個 ln 指令可任意建立 link ( 包括 hard links 與 symbolic links ),這是個很好用的東西,在 Vista 上也有個 mklink 可以用來做相同的事,不過在 Windows XP 之前的環境卻沒有內建相對應的程式,而 Junction 就是一個可以替代的工具。 其使用說明如下:
Junction v1.05 - Windows junction creator and reparse point viewer
Copyright (C) 2000-2007 Mark Russinovich
Systems Internals - http://www.sysinternals.com

The first usage is for displaying reparse point information, and the
second usage is for creating or deleting a NTFS junction point:

usage: junction [-s] [-q] 
    -q     Don't print error messages (quiet)

    -s     Recurse subdirectories

usage: junction [-d]  []
    -d     Delete the specified junction
    example: junction d:\link c:\winnt
新增: junction c:\Profiles\User1\MyDocs "d:\tmp\My Documents" 刪除: junction -d c:\Profiles\User1\MyDocs 如果不是透田 junction 去刪除 link,而是直接用檔案總管去刪除 link,會造成原來的資料被一併刪除,請特別注意。 另外, 有個 NTFS Link ext 可以讓我們使用 GUI 的方式進行 link。 參考: http://amanda_hoic.mysinablog.com/index.php?op=ViewArticle&articleId=1276558

2009-02-21

License Management for java

前陣子公司有打算將產品加上 License 的管控,當初的想法是取得 Mac Address 來加密比對,但沒有實際進行實作,今天剛好看到市面上已經有此相關的產品可以直接拿來套用了,因此先把它記下來: truelicense 是 opensource 的,剛好可以拿來研究嚕。當然,這兩套程式都有提醒說,在使用的時候,記得使用 obfuscation 來為程式碼加密,否則有心人事還是可以很簡單的破解它。

2009-02-07

JNI

目前 java 與 dll 溝通的技術主要有以下幾種:

目前看起來好像是 JNative 比較方便。

參考文章: JNI技術實踐小結

2009-02-03

SSH Tunnel

之前在客戶那,沒辦法使用 msn ,後來發現可以利用 ssh tunnel 來 proxy 連線。在 windows 平台下,我們可以使用 putty 或是 plink 來建立 ssh tunnel,因為這兩個都不支持密碼的在檔,所以我通常是使用 MyEnTunnel ,它是利用 plink 來進行連線,可以存下連線資料,方便我們進行連線。 那我們如何利用 MyEnTunnel 建立一個 socket proxy 呢?其使用部驟如下:
  1. 首先我們下載 MyEnTunnel 及 plink ,然後解壓縮放在一起:
  2. 執行 myentunnel.exe,設定連線資訊,記得勾選【Enable Dynamic SOCKS】:
  3. 點選 Connect,切換到 Status 頁即可看到是否連線成功
當線線成功後,我們就可以讓 firefox 或是 msn 利用此通道進行網頁的連線: Firefox:
  • 選擇【工具】=>【選項】
  • 點選【進階】=>【網路】=>【設定】 選擇【手動設定 Proxy】將最下面的【SOCKS 主機】設定到本機端的 7070 port(對應 MyEntunnel 上所設定的 port),然後我們就可以利用 firefox 連線到 http://myip.easylife.idv.tw/ 來驗證是否是透過 ssh server 連線了。
MSN:
  1. 【選項】=>【連線】=>【進階設定】
  2. 設定 SOCKS 為本機端及 Port 為 7070 按下測試:
  3. 如果 SOCKS 可連線,便可看到以下的訊息
參考: PuTTY自帶的plink.exe實現ssh繞牆技術 PuTTY - SSH Tunnel 運用備忘

2009-02-02

背景執行 Unit Test

Background Unit Testing: New Evolutions in Unit Testing and IDE Integration 裡面介紹了兩個 eclipse 的 plugin 來讓我們即時的執行 Unit Test ,這樣的好處就是我們一改動程式,就可以立即知道是否有造成 unit test 錯誤,感覺相當不錯,可以看看嚕。裡面介紹的兩個工具如下: 第二個還有 idea 的 plugin ,而且是 open source 的,改天有空而且電腦有升級後再來玩玩看。XD