2011-09-23

Git 與 subversion 透過 http proxy

小弟公司對外都要透過 proxy 才能存取,而我又常需要抓取外部 svn 或 github 中的程式碼下來參考,因此研究了一下如何設定 proxy 讓 git 與 svn 使用。


環境:
  • MacBook Pro with OSX Lion 10.7.1
  • svn, version 1.6.16
  • git version 1.7.4.4
Subversion

編輯 ~/.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

  • 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 加上
	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 鍵,因此直接由鍵盤上的按鍵來代替:

  • 滑鼠右鍵 = 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 的官方文件也說明不支援,因此需要自行編譯。 其步驟如下:
  1. 首先,要先下載 AR81Family-Linux-v1.0.1.14.tar.gz
    wget http://kyosls.googlecode.com/files/AR81Family-linux-v1.0.1.14.tar.gz
  2. 解壓縮
    tar -xzvf AR81Family-linux-v1.0.1.14.tar.gz ./
  3. 到 src 目錄編譯並安裝(編譯安裝的驅動位於/lib/modules/版本-generic/kernel/drivers/net/atl1e 目錄下)
    cd src
    make install
  4. 找入驅動
    modprobe atl1e
  5. 查看是否正確
    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
  6. 啟動 eth0
    ifconfig eth0 up
  7. 如果一切都正常,再把 atl1e 加上 /etc/rc.conf 的 modules 中即可。
如果在第三步驟 make 時發生:Linux kernel source not configured:missing autoconf.h
解決方式為:
cd /usr/src/版本/include/linux
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

  1. 建立暫存路徑
    mkdir /tmp/kernel 
  2. 將 kernel26.img 複制到暫存路徑,並將附檔名改為 .gz
    cp /boot/kernel26.img /tmp/kernel/kernel26.gz 
  3. 到暫存目錄 /tmp/kernel 下利用 gunzip 解開 kernel26.gz
    cd /tmp/kernel gunzip kernel26.gz 
  4. 目前下會剩下 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 的方法:
  1. Http Proxy: 在 java 執行參數加上 -Dhttp.proxyHost=proxyServer -Dhttp.proxyPort=proxyPort 或是程式中加上: System.setProperty("http.proxyHost", "proxyServer"); System.setPropery("http.proxyPort", "proxyPort");
  2. Socks Proxy: 在 java 執行參數加上 -DsocksProxyHost=proxyServer -DsocksProxyPort=proxyPort 或是程式中加上: System.setProperty("socksProxyHost", "proxyServer"); System.setPropery("socksProxyPort", "proxyPort");
紅字的部份就替換為真正的 proxy server 。 Postgres JDBC 連線亦可透過同樣的方法處理。 針對 proxy 需要認證的部份,可參考: http://www.rgagnon.com/javadetails/java-0085.html 參考: http://download.oracle.com/javase/1.4.2/docs/guide/net/properties.html http://efreedom.com/Question/1-3433737/Java-Proxies-Connection-Postgres

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 擁有,解決方式如下:
  1. 找到 vm 裡的 VBox.log ,查看裡面詳細 log: pdmR3LoadR0U: pszName="VMMR0.r0" rc=VERR_SUPLIB_OWNER_NOT_ROOT szErr="The owner is not root: '/usr/lib'"
  2. log 裡看到 /usr/lib 的目錄擁有者不是 root ,把此目錄改為 root 擁有: chown root /usr/lib
  3. 修改完成後即可啟動 vm 了。