OSX 有個很方便的功能,可以針對不同的網路環境設定位置 profile,利用切換網路位置來快速調整網路設定。雖然說很方便,但是,每次都要進到網路設定去改,還是有點麻煩。
還好 OSX 有指令可以用來調整,因此我們可以利用指令取得目前使用的無線網路 SSID 來辨斷要切換到哪個網路位置去:
參考:
http://hints.macworld.com/article.php?story=2005010613401823
http://stackoverflow.com/questions/4481005/get-wireless-ssid-through-shell-script-on-mac-os-x
2012-07-25
2012-06-29
如何開啟 Mac OS X 的 tftp server
執行以下兩個指令就會啟動 OSX 內建的 tftp server 了:
sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist
sudo launchctl start com.apple.tftpd
tftp 預設的文件目錄為:
/private/tftpboot
可以修改 /System/Library/LaunchDaemons/tftp.plist 來改變目錄位置(要重啟 tftp server)。
參考來源
sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist
sudo launchctl start com.apple.tftpd
tftp 預設的文件目錄為:
/private/tftpboot
可以修改 /System/Library/LaunchDaemons/tftp.plist 來改變目錄位置(要重啟 tftp server)。
參考來源
2012-03-03
iPhone 如何利用 socks proxy 上網(不需 jailbreak)
iPhone iPad 本身上網的設定並沒有可以利用 socks proxy 的方式,所以我們可以利用自動組態檔的方式來處理,方法如下:
參考:
http://snipplr.com/view/16563/how-to-connect-to-a-socks-proxy-from-an-unjailbroken-iphoneipod-touch/
http://thireus.dareyourmind.net/index.php/thireus-home-news/8-general-announcement/112-pac--ssh-tunneling--iphone--success-
http://thireus.dareyourmind.net/index.php/iphone-hacks/115-how-to-get-socks-proxy-ssh-tunneling-to-work-on-a-jailbroken-iphoneipod-touchipad
- 在電腦(如 192.168.11.1)建立一個 socks proxy ,如利用 ssh:
ssh -N -g -D 1080 某主機ip
在一台 web server 上放置一各自動組態檔,內容如下:
192.168.11.1
function FindProxyForURL(url, host) {
return "SOCKS:1080";
}
紅字的部份是對應 proxy 主機的 ip在 iphone 上使用此自動組態檔即可,如:
http://192.168.11.1/mysupersecretproxy.pac
參考:
http://snipplr.com/view/16563/how-to-connect-to-a-socks-proxy-from-an-unjailbroken-iphoneipod-touch/
http://thireus.dareyourmind.net/index.php/thireus-home-news/8-general-announcement/112-pac--ssh-tunneling--iphone--success-
http://thireus.dareyourmind.net/index.php/iphone-hacks/115-how-to-get-socks-proxy-ssh-tunneling-to-work-on-a-jailbroken-iphoneipod-touchipad
2011-09-23
Git 與 subversion 透過 http proxy
小弟公司對外都要透過 proxy 才能存取,而我又常需要抓取外部 svn 或 github 中的程式碼下來參考,因此研究了一下如何設定 proxy 讓 git 與 svn 使用。
環境:
編輯 ~/.subversion/servers 檔案,設定 globe 的 http-proxy-host 與 http-proxy-port
在 svn checkout 時改用 http 或 https 協定即可:
svn checkout http://flot.googlecode.com/svn/trunk/ flot-read-only
Git
設定好環境變數 http_proxy 與 https_proxy 即可。
在 git clone 時改用 http 或 https 協定即可:
git clone http://github.com/carlhuda/janus.git ~/.vim
參考
http://realchecko.blogspot.com/2007/05/git-over-http-proxy.html
環境:
- MacBook Pro with OSX Lion 10.7.1
- svn, version 1.6.16
- git version 1.7.4.4
編輯 ~/.subversion/servers 檔案,設定 globe 的 http-proxy-host 與 http-proxy-port
在 svn checkout 時改用 http 或 https 協定即可:
svn checkout http://flot.googlecode.com/svn/trunk/ flot-read-only
Git
設定好環境變數 http_proxy 與 https_proxy 即可。
在 git clone 時改用 http 或 https 協定即可:
git clone http://github.com/carlhuda/janus.git ~/.vim
參考
http://realchecko.blogspot.com/2007/05/git-over-http-proxy.html
利用 VirtualBox 附的 VBoxManage 將vmdk/vhd轉換為VDI格式
VBoxManage clonehd source.vmdk target.vdi --format VDI
參考:
http://blog.tenyi.com/2009/12/convert-from-vmdkvhd-to-vdi-format.html
http://nfolamp.wordpress.com/2010/06/10/converting-vmdk-files-to-vdi-using-vboxmanage/
- clonehd : 告訴 VBoxManage 要複制虛擬硬碟檔案
- source.vmdk : 來源檔案
- target.vdi : 目地檔案
- --format VDI : 指定目地檔案的格式,來源檔案的格式似乎會自動判斷
轉換完後就可以在 virtualbox 中建立新的虛擬環境,並使用 target.vdi 進行開機使用了。
參考:
http://blog.tenyi.com/2009/12/convert-from-vmdkvhd-to-vdi-format.html
http://nfolamp.wordpress.com/2010/06/10/converting-vmdk-files-to-vdi-using-vboxmanage/
2011-09-09
CSS 解決網頁連續英數字文字太長而導致版面撐大的問題
一直以來,當網頁遇到連續的英文數字時,總是會無法斷行造成版面被撐大,以前的做法都是在文章中插入 br
來強制換行,今天終於找到利用 css 就可以控制版本並強制換行了。
一開始找到的方式是在 css 加上
結果發現在 Internet Explorer 上是 ok 的,在 Firefox 上是無效的。
後來又找到另外一個方法,在 css 上加上:
然後再利用 wordwrap.xml 來處理:
結果發現這個方式 firefox 最新版本已經不能用了。
最後找到的方法,在 css 上加上:
這樣 ie 與 firefox 都能使用了。
範例: 結果
參考:
http://www.minwt.com/?p=93
http://www.cnblogs.com/analyzer/articles/1285732.html
http://blog.longwin.com.tw/2008/06/css_word_wrap_fix_too_many_word_2008/
http://hacks.mozilla.org/2009/06/word-wrap/
一開始找到的方式是在 css 加上
word-wrap: break-word; word-break: break-all;
結果發現在 Internet Explorer 上是 ok 的,在 Firefox 上是無效的。
後來又找到另外一個方法,在 css 上加上:
word-wrap:break-word; word-break:break-all; -moz-binding: url('./wordwrap.xml#wordwrap'); overflow: hidden;
然後再利用 wordwrap.xml 來處理:
結果發現這個方式 firefox 最新版本已經不能用了。
最後找到的方法,在 css 上加上:
word-wrap:break-word; overflow: auto; width: 600px;
這樣 ie 與 firefox 都能使用了。
範例: 結果
data:text/html;charset=utf-8;base64,Q29uZ3JhdHVsYXRpb25zISBZb3UndmUgZm91bmQgdGhlIGhpZGRlbiBtZXNzYWdlIQ0KDQpUbyBjbGFpbSB5b3VyIHByaXplLCB2aXNpdCBodHRwOi8vZ2V0ZmlyZWZveC5jb20gdG9kYXkhDQoNCkZyZWUgYnJvd3NlciBpbiBldmVyeSBib3ghDQo%3D
參考:
http://www.minwt.com/?p=93
http://www.cnblogs.com/analyzer/articles/1285732.html
http://blog.longwin.com.tw/2008/06/css_word_wrap_fix_too_many_word_2008/
http://hacks.mozilla.org/2009/06/word-wrap/
2011-09-01
如何利用 vnc 控制 android 手機
小弟平常都是電腦利用手機來上網,最近一直在想,是不是有辦法從電腦控制手機,這樣就不用在電腦與手機中間換來換去,後來發現一個好東西:Droid Vnc Server,一個在 android 上執行的 vnc server ,安裝後就可以利用 vnc client 或是 browser 來控制手機了。
使用方式:
安裝完後,直接點選程式清單中的 droid VNC server
進入之後
先按 menu 進行設定 vnc 密碼:
設定 vnc 密碼:

設定完密碼後,就可以啟動 server 了。
如上圖,啟動完 server 後,便會出現 vnc 的連線資訊,可以利用 vnc client 連到 192.168.43.1:5901 或是利用 browser (必需安裝好 java 環境)連到 http://192.168.43.1:5801 即可控制手機了。
另外,因為 vnc 沒有手機上的 home 鍵及 menu 鍵,因此直接由鍵盤上的按鍵來代替:
參考資料
http://opensourceexcedio.wordpress.com/2010/10/28/droid-vnc-server/
使用方式:
安裝完後,直接點選程式清單中的 droid VNC server
進入之後
先按 menu 進行設定 vnc 密碼:

設定完密碼後,就可以啟動 server 了。
如上圖,啟動完 server 後,便會出現 vnc 的連線資訊,可以利用 vnc client 連到 192.168.43.1:5901 或是利用 browser (必需安裝好 java 環境)連到 http://192.168.43.1:5801 即可控制手機了。
另外,因為 vnc 沒有手機上的 home 鍵及 menu 鍵,因此直接由鍵盤上的按鍵來代替:
- 滑鼠右鍵 = home
- Home = home
- Page Up = menu
- Page down = call
- Esc = back
- Del = back
- End = phone sleep
參考資料
http://opensourceexcedio.wordpress.com/2010/10/28/droid-vnc-server/
2011-08-24
如何在 Archlinux 下安裝 ATHEROS AR8151/AR8152 網路卡驅動程式
小弟使用的 Linux 版本為:Archlinux 2010.05 ,因為這個版本內建並不支援 ATHEROS AR8151/AR8152 網路卡,而 archlinux 的官方文件也說明不支援,因此需要自行編譯。 其步驟如下:
解決方式為:
參考資料
http://blog.csdn.net/maosanwan/article/details/6059826
http://code.google.com/p/kyosls/downloads/list
- 首先,要先下載 AR81Family-Linux-v1.0.1.14.tar.gz 。
wget http://kyosls.googlecode.com/files/AR81Family-linux-v1.0.1.14.tar.gz - 解壓縮
tar -xzvf AR81Family-linux-v1.0.1.14.tar.gz ./ - 到 src 目錄編譯並安裝(編譯安裝的驅動位於/lib/modules/版本-generic/kernel/drivers/net/atl1e 目錄下)
cd src
make install - 找入驅動
modprobe atl1e - 查看是否正確
lsmod|grep atl1e
正常的話可以看到
atl1e 57012 0
dmesg|grep Network
正常的話可以看到
Atheros(R) AR8121/AR8113/AR8114/AR8131/AR8132/AR8152 PCI-E Ethernet Network Driver - version 1.0.1.14 - 啟動 eth0
ifconfig eth0 up - 如果一切都正常,再把 atl1e 加上 /etc/rc.conf 的 modules 中即可。
解決方式為:
cd /usr/src/版本/include/linux
ln -s ../generated/autoconf.h .
ln -s ../generated/utsrelease.h .
ln -s ../generated/autoconf.h .
ln -s ../generated/utsrelease.h .
http://blog.csdn.net/maosanwan/article/details/6059826
http://code.google.com/p/kyosls/downloads/list
2011-06-17
Linux console 下如何解開 kernel26.img
- 建立暫存路徑
mkdir /tmp/kernel
- 將 kernel26.img 複制到暫存路徑,並將附檔名改為 .gz
cp /boot/kernel26.img /tmp/kernel/kernel26.gz
- 到暫存目錄 /tmp/kernel 下利用 gunzip 解開 kernel26.gz
cd /tmp/kernel gunzip kernel26.gz
- 目前下會剩下 kernel26 這個檔案,再利用 cpio 解開:
cpio -ivd --no-absolute-filenames < kernel26
2011-01-25
在 apache 中隱藏你的 server 資訊
一般我們安裝完 apache httpd 後,預設錯誤頁面會將 server 的版本資訊顯示出來,這樣是非常危險的,如果剛好那個版本有漏洞就容易遭到駭客入侵。
那如何把這些資訊隱藏呢,只要調整 httpd 的一個設定即可,在 httpd.conf 中把 ServerTokens 的值改為 Prod:
ServerTokens Prod
以下是在 httpd.conf 中的設定值,及 Apache 在 header 的回應
ServerTokens Full
Server: Apache/2.2.15 (Unix) mod_ssl/2.2.15 OpenSSL/1.0.0a DAV/2
ServerTokens OS
Server: Apache/2.2.15 (Unix)
ServerTokens Minor
Server: Apache/2.2
ServerTokens Minimal
Server: Apache/2.2.15
ServerTokens Major
Server: Apache/2
ServerTokens Prod
Server: Apache
所以設定成 ServerTokens Prod 應該是比較好的選擇
參考資料
http://www.backup.idv.tw/viewtopic.php?t=821
2011-01-17
Java 程式如何透過 Proxy 連線
最近因為一些工作上的需要,連線上網都需要穿透公司防火牆的限制。目前是使用 ssh tunnel 的方式加上 proxycap (windows) 或 proxychains (Linux) 穿透,但是 proxycap 或 proxychains 無法應用在 java 程式上,因此找了一下 java 程式使用 proxy 的方法:
- Http Proxy:
在 java 執行參數加上
-Dhttp.proxyHost=proxyServer -Dhttp.proxyPort=proxyPort
或是程式中加上:
System.setProperty("http.proxyHost", "proxyServer");
System.setPropery("http.proxyPort", "proxyPort");
- Socks Proxy:
在 java 執行參數加上
-DsocksProxyHost=proxyServer -DsocksProxyPort=proxyPort
或是程式中加上:
System.setProperty("socksProxyHost", "proxyServer");
System.setPropery("socksProxyPort", "proxyPort");
2011-01-10
VirtualBox 4.0: VERR_SUPLIB_OWNER_NOT_ROOT error
最近把 VirtualBox 升級到 4.0 ,結果發現原來可以跑的 Windows XP VM 不能跑了,一執行就產生 VERR_SUPLIB_OWNER_NOT_ROOT 的錯誤,上網查了一下,原來是 virtualbox 安裝目錄的權限需要是 root 擁有,解決方式如下:
- 找到 vm 裡的 VBox.log ,查看裡面詳細 log: pdmR3LoadR0U: pszName="VMMR0.r0" rc=VERR_SUPLIB_OWNER_NOT_ROOT szErr="The owner is not root: '/usr/lib'"
- log 裡看到 /usr/lib 的目錄擁有者不是 root ,把此目錄改為 root 擁有: chown root /usr/lib
- 修改完成後即可啟動 vm 了。
2009-09-22
批次檔設定 classpath
windows 的批次檔以利用 for 來對目錄中的檔案進行處理,但是 for 在取得環境變數只會在一開始取,因此,如果當我們將批次檔寫成:
set CLASSPATH=
for %i in (*) do set LIST=% CLASSPATH%;%i
echo % CLASSPATH%
並不會建立目前目錄中所有檔案的清單,相反的只會將 CLASSPATH 變數設為最後一個找到的檔案。因為 % CLASSPATH% 只有在 FOR 敘述第一次被讀入時才展開,此時 CLASSPATH 變數是空的。所以我們實際執行的 FOR 迴圈是:
for %i in (*) do set LIST= %i
可是當我照著微軟的說明,將 % 改為 ! ,還是得不到正確的結果:
set CLASSPATH =
for %i in (*) do set LIST=! CLASSPATH!;%i
echo % CLASSPATH%
這部份我還沒找到為什麼不行。後來,在網路上找了一下,發現只要呼叫外部的批次檔或是其它 label 就不會有問題了:
set CLASSPATH =
FOR /f %%I IN ('dir /b *.jar') DO call :cpappend %%I
echo %CLASSPATH%
goto end
:cpappend
set CLASSPATH=%CLASSPATH%;%1
:end
2009-08-27
Chrome 簡繁自動轉換 Extension
之前曾經在重灌狂人的 blog 上看到在簡繁轉換的書籤,在 chrome 上用也是可行,不過總覺的還要多按個紐很麻煩,而且沒辦法處理 google reader ,因此就把那書籤裡面的 script 小修改做成了 chrome 的 extension,這樣就方便許多,看網頁會自動轉成繁體字。
安裝方式:
- 將 chrome 的捷徑加上 --enable-extensions 來啟動 extension 功能
- 重新啟動 chome
- 下載 簡繁轉換 extension 並安裝它
之後網頁就會自動轉成繁體了。
2009-08-19
查詢Linux 系統版本
最近常碰到 Linux 的機器,有時候想要查說目前的 Linux 用的是哪個版本,可以用下面的指令:
#cat /etc/*-release
在 CentOS 5 會出現類似下面的結果:
CentOS release 5 (Final)
在 Red Hat 7.3 會出現類似下面的結果:
Red Hat Linux release 7.3 (Valhalla)
如果是要查核心的版本,可以用下面的指令:
uname -a
2009-06-25
Java 如何偵測目前記憶體可能不足
今天有個同事說,他在操作 Netbeans 時,Netbeans 竟然提示他記憶體可能不足:

不知道 Netbeans 是怎麼做的。後來上網查了一下, JDK 1.5 後提供了 java.lang.management.MemoryMXBean,可以讓我們偵測目前記憶體的用量及狀態:
上面這程式可以列出目前記憶體的使用狀態。
參考資料:
How do you detect low memory situations within the java virtual machine?
J2SE5.0新特性之監控與管理
參考資料:
How do you detect low memory situations within the java virtual machine?
J2SE5.0新特性之監控與管理
Vista + IIS + Access 出現 80004005 錯誤
最近有個同事遇到一個問題,開發好的程式在 Vista 上的 IIS 會沒辦法讀取 access 裡面的資料,後來上網查了一下,發現這個問題還滿常發生的,要解決也很簡單,在命令模式下執行下面三行指令即可:
- %windir%\system32\inetsrv\appcmd set config /section:applicationPools /[name='DefaultAppPool'].processModel.loadUserProfile:false
- icacls %windir%\serviceprofiles\networkservice\AppData\Local\Temp /grant Users:(CI)(S,WD,AD,X)
- icacls %windir%\serviceprofiles\networkservice\AppData\Local\Temp /grant "CREATOR OWNER":(OI)(CI)(IO
看起來因為 %windir%\serviceprofiles\networkservice\AppData\Local\Temp 這目錄的權限不足所造成的問題。
參考資料:
2009-06-08
運用 Windows Time 讓 Windows 進行時間同步
一般我們要進行時間的同步,可以使用 NTPClock 來進行同步。今天發現原來 Windows 有指令可以直接進行電腦時間的同步:
:: 設定要同步的 NTP Server
w32tm /config /update /manualpeerlist:ntp.ntu.edu.tw
:: 開始進行同步
w32tm /resync
如此一來,就不用再去特別下載 NTPClock 了。
註:
Windows Time 這個服務要開啟才能用
參考來源:
2009-06-06
2009-06-05
Chrome Extension
最近因為用 Firefox 常會有卡住的現像,因此改用 Google Chrome 來當我預設的瀏灠器。Chrome 實際用起來還滿不錯的,不過就是沒有像 firefox 那麼多 extension 可以使用。上網找了一下,目前比較急迫的三個需求都有辦法解決了:
訂閱:
文章 (Atom)
分類
- 軟體 (12)
- 單車 (2)
- 程式 (4)
- 網路 (6)
- 環島 (1)
- adblock (1)
- android (2)
- Cloud (1)
- css (1)
- Database (2)
- dot net (1)
- eclipse (2)
- git (1)
- groovy (1)
- html (1)
- ios (5)
- ipad (1)
- iphone (1)
- java (23)
- Javascript (3)
- jquery (1)
- Linux (4)
- mac (4)
- network (1)
- Oracle (1)
- safari (1)
- svn (1)
- test (1)
- titanium (1)
- USB、病毒 (1)
- virtualbox (1)
- vnc (1)
- vpn (1)
- web (1)
- Windows (12)
- xcode (1)
- xp (1)