Tommy 碎碎念

Tommy Wu's blog

Nginx 的 userdir 設定
post by tommy @ 03 十二月, 2011 12:08

Nginx 本身沒有支援 Userdir 的模組, 不過, 可以很容易的用 location 的方式來設定. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
Lifetype 在 nginx 的 rewrite 處理
post by tommy @ 03 十二月, 2011 11:56

Lifetype 同樣只提供 Apache 的 rewrite 處理, 所以... 我們一樣需要轉換為 nginx 的方式. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
Gallery2 在 nginx 底下的 rewrite 處理
post by tommy @ 02 十二月, 2011 16:51

由於 Gallery2 只有提供 Apache 的 rewrite 設定, 所以當轉換到 nginx 使用的時候, 就要想辦法自己來改寫. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
Nginx/FastCGI/PHP-FPM 相關設定
post by tommy @ 02 十二月, 2011 16:48

上個月中開始, 逐步將家裡機器裡頭的 Apache/mod_php 改成 Nginx/FastCGI/PHP-FPM 來運作. 經過了近兩個星期的嚐試, 目前看起來應該是可以完整的取代了. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
PuTTY 0.61 視窗標題修正
post by tommy @ 15 十一月, 2011 12:45

原本都是使用 PieTTY 來連線, 不過由於這軟體久沒有更新, 且下拉式的選單在連線數量變多時, 有點不怎麼好用, 加上目前的 PuTTY 版本在 UTF-8 的情形下, 可以設定英文字型就能正確的顯示與輸入中文, 而且有支援 Win7 的 JumpList 功能, 所以常用的連線也可以很方便的使用, 所以最近又改回使用 PuTTY 了. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
phpmsnclass v1.11
post by tommy @ 15 十一月, 2011 11:03

更新 phpmsnclass 版本為 1.11. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
HD300B 非官方 firmware 裡頭奇怪的 IP....
post by tommy @ 15 十一月, 2011 08:14

這幾個月來, 常常發現在家裡使用網路的時候, 我的其中一台機器 ssh 連線常常被突然中斷, 要隔一段時間才可以再連上. 因為那台是備用的 firewall, 平時也用不到, 所以碰到時就算了, 並沒有特別去處理它.

不過... 昨天又碰到這情形, 被斷線時剛好在機器旁, 所以就看了一下, 發現 ssh 連不上, 就改用 telnet 試看看... 結果, 居然出現不同的登入畫面, 難道這 IP 被別人入侵我家的網路拿去用了嗎?  雖然這 IP 不在我的 DHCP 發放範圍內, 不過還是先看一下 AP 上頭有沒有無線的用戶登入, 結果也沒有... 有線的應該不會有人由外頭接到家裡, 也應該不可能.... 那是我自己的機器嗎?

用 arp -a 看一下相關的 mac address, 發現這 IP 的 mac address 果然不是我那台機器的... 而且... 與另一台機器 HD300B 的另一個 IP 是相同的 mac address.... 真是奇怪, 明明在 HD300B 上頭, 就只有設定一組 IP, 怎麼會出現另一個 IP 呢?

找了一下我用的 firmware 的說明, 也沒說會有另一個 IP... 不過有說到登入的 root 密碼, 所以就登入進去看看, 果然看到那機器除了 eth0 是所設定的 IP 外, 另外有一個 eth0:0 就是設成 192.168.0.11, 剛好與我連不上的另一台 firewall 一樣...

grep 一下裡頭的檔案, 發現在 /usr/local/etc/myinit.sh 裡頭, 果然有指令去設定這個 IP.... 真是的, 這作者自己內部網路用的 IP, 怎麼會放出 firmware 時不拿掉呢? 不然也註明一下, 讓使用者知道會多出這麼一個 IP... 把這檔案改了以後, 目前用起來就正常了.

Del.icio.us Furl HEMiDEMi Technorati MyShare
限制 SMF 的驗證碼只輸入前四碼
post by tommy @ 03 十一月, 2011 12:02

最近發現之前用的 Join Check 方式, 似乎新的 bot 已經有能力處理了, 所以... 就再改一下驗證碼的檢查方式. 採用的是不管原本顯示幾碼的驗證碼, 但是只要求使用者輸入前四碼. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
gcin for windows 在 windows 7 使用時, tray icon 的顯示設定沒有作用?
post by tommy @ 24 八月, 2011 17:50

話說最近才知道 gcin 有 windows 的版本, 所以下載來用了幾天, 在一般的使用上都很正常, 只不過.... 發現在 Windows 7 使用時, 因為我的設定並不會在右下角顯示所有的工具列圖示, 只會顯示我指定的幾個圖示.... 但是, gcin 所使用的那兩個圖示, 不管我怎麼設定, 只要重新執行 gcin (或重開機),  就不會顯示, 而會變成隱藏起來. 而 gcin 的狀態並不會在正常的語言列上顯示, 若沒有看到那兩個圖示, 常常會弄不清楚目前是用那一種輸入法. (奇怪, 在 gcin 的討論區並沒有人反應這個問題, 難道只有我碰到?) (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
join_check, SMF 1.x/2.x 註冊防機器人外掛
post by tommy @ 16 七月, 2011 11:56

這與之前在 php 2.x 用的那個類似, 就是改一下註冊時的 form, 加上兩個選項, 一個要選, 另一個不用才能註冊成功. 這樣子應該可以防止多數的 bot 來註冊.

有需要可以抓回去用, 如果無法正常安裝, 就自己解開來看一下要改那邊吧.

1.x 用的版本:
http://www.teatime.com.tw/~tommy/files/join_check_1_0_0.tar.gz

2.x 用的版本:
http://www.teatime.com.tw/~tommy/files/join_check_2_0_0.tar.gz

Del.icio.us Furl HEMiDEMi Technorati MyShare
disable IPv6 造成 squid3 無法使用 https 連線
post by tommy @ 12 七月, 2011 10:25

這兩天上 pchome 買東西時, 發現要結帳時會無法連線, 查了半天, 查不出有什麼問題, 後來不小心發現, 只要把 proxy 關閉就可以直接連線. 後來進一步測試, 發現所有的 https 連線, 只要透過家裡的 squid proxy 就會無法使用. 看起來像是 squid 所造成的問題. 看一下 squid 的 log, 發現有下面的訊息:

comm_open: socket failure: (97) Address family not supported by protocol

google 查了一下, 這個應該與 IPv6 有關.

上個月我把 IPv6 在 kernel 裡頭編譯成模組, 但因為還未打算使用, 所以並沒有任何的設定, 也沒有載入這個模組. 因為這樣, 反而造成 squid 無法使用 https.

目前的解決方法只有:

  1. 完全不使用 IPv6, 也就是 kernel 或 squid 本身不要加入 IPv6 的支援, 就不會有這個問題.
  2. 不要把 kernel 的 IPv6 關閉 (如 alias net-pf-10 off), 如果怕 IPv6 的異常連線, 可以先用 ip6tables 把預設的 policy 改成 drop.

我目前是先用第二種方式.

Del.icio.us Furl HEMiDEMi Technorati MyShare
網路再升級到 100M/10M 固定制 (6IP)
post by tommy @ 06 七月, 2011 16:27

最近中華電信的網路降價了, 連帶固定制的網路也降價. 不過.... 16M/8M 的方案似乎不被 NCC 認可, 所以... 目前也沒有這個方案了, 之前辦的也沒有隨著這次的降價活動而調整價格.

加上... 新推出的方案, 終於把老客戶優惠給放了回去, 也就是使用光世代一樣可以在網路費享有老客戶優惠 (之前由 ADSL 換到光世代後, 這個優惠就一直不能用).

所以... 在新的價格上, 100M/10M 加上老客戶優惠之後, 反而比 16M/8M 還要便宜一些. 所以... 這次回台灣, 就在上星期五順便去申請改到 100M/10M.

今天早上五點後, 線路就突然斷了, 早上報修後, 告知是機房那邊因為升速就直接改, 結果就不通了. 以往都是施工的人員來現場後才會改設定, 這次居然就直接改了.  結果... 查線的弄了幾個小時, 就直接改成 100M/10M, 不過... 由於工單他們還沒拿到... 還要過幾天再拿過來給我簽. 不過... 至少目前跑起來的確是 100M/10M 了.

速度對 hinet 測試, 都可以跑到 100M/10M, 不過到國外... 就看運氣了, 一般來說, 都還在可以接受的範圍內.

Del.icio.us Furl HEMiDEMi Technorati MyShare
修正 phpmsnclass v1.10 不能傳送離線訊息的問題
post by tommy @ 23 六月, 2011 20:56

這幾個星期, 發現 phpmsnclass 傳送離線訊息的功能似乎失效了. 今天查了一下, 發現原本用來發送的網站 ows.messenger.msn.com 被 Microsoft 改成 127.0.0.1, 也就表示這網站應該是再也不支援了. 所以... 所有使用這個方式傳送離線訊息的 client (可能所有非官方的 client 都是這樣處理), 都失去傳送離線訊息的功能了.

由於官方的 client 還可以使用, 就看一下傳輸的記錄, 發現是改用 UUM 來傳. 但是在 MSNP15 底下, 這個方法會造成斷線, 所以就照著改用 MSNP18 來處理, 目前看起來是可以正常使用了.

由於 MSNP9/MSNP15 似乎都有問題, 所以就直接移除這兩個協定的支援, 目前就只能使用 MSNP18 了 (所需的模組與 MSNP15 一樣).

有需要的請自行到 Google Code 網站去抓 r53 或之後的版本回來用吧.

Del.icio.us Furl HEMiDEMi Technorati MyShare
在 linux 中安裝 Darwin Streaming Server 6.0.3
post by tommy @ 13 六月, 2011 14:30

雖然 Darwin Streaming Server 官方對於 Linux 的支援說法, 是建議使用 5.5.5 或更早以前的版本, 不過, 加上適當的 patch 之後, 要在 Linux 上頭使用 6.0.3 版本也是可以.

網路上可以找到在 unbuntu 上頭安裝的說明, 基本上照著這篇文章的步驟, 就可以讓 DSS 6.0.3 在 Debian 下正常的運作. 所以有需要的就照著做就可以了.

不過這個安裝的說明, 並沒有新增任何開機時執行的指令, 所以如果你需要每次開機時都自動去執行的話, 就自己寫一個 script 去執行  /usr/local/sbin/streamingadminserver.pl 就可以了.

我自己是用下面這個 script 來處理:

#! /bin/sh
#
# dss darwin streaming server
#
 
NAME=dss
DESC="DSS"
 
set -e
 
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
/usr/local/sbin/streamingadminserver.pl
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME "
killall streamingadminserver.pl
killall DarwinStreamingServer
echo "."
;;
restart|force-reload)
$0 stop
sleep 1s
$0 start
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
 
exit 0

 

Del.icio.us Furl HEMiDEMi Technorati MyShare
放棄 VMWare Server, 改用 VirtualBox
post by tommy @ 14 五月, 2011 10:17

家裡的伺服器上頭都有裝上 VMWare Server 2.0, 主要就是跑一個 XP 的 VM, 用來讓我可以由遠端使用家裡那台 HP 3050z 的印表機, 除了每個月把小朋友學費轉帳的結果印出來外, 另一個主要的功能就是用來讓我傳真給 etrade (沒辦法, 公司配股是這家管的, 且我們公司不能由電腦直接傳真, 只能印出來再傳, 不過... etrade 轉帳指令要求附上護照影本, 每次印出來再傳都說不清楚, 只好透過家裡的機器直接傳真).  (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
在 Linux 中使用 3TB 的硬碟
post by tommy @ 03 五月, 2011 13:57

其實這似乎沒什麼好寫的, 因為相關的文章應該可以找到很多. 不過, 上星期我自己在裝上 3TB 的硬碟時, 有碰到一些小小的問題, 似乎沒有人提到, 所以就記錄下來. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
wget 1.12 的 win32/win64 版本
post by tommy @ 09 四月, 2011 10:57

雖然 wget 的 source tarball 裡頭, 有包含 windows 的支援, 不過... 似乎不能正常的編譯. 所以做了一些修正, 讓 mingw32/mingw64 可以正常的編譯. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
patch for FileZilla 3.4.0 win64 version
post by tommy @ 07 四月, 2011 14:41

雖然 ftp client 這東西, 似乎沒什麼必要特地使用 64 位元的版本, 不過.... 還是弄了一個 FileZilla win64 的版本來試看看. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
win64 的程式執行時出現 0x000007b 錯誤
post by tommy @ 06 四月, 2011 17:22

最近試著用 mingw64 (其實是用 TDM64-GCC) 來產生 win64 版本的 FileZilla, 不過.... 弄了兩三天, 雖然可以產生 filezilla.exe, 不過一執行就會出現 0x000007b 的錯誤.

用 google 找了一下, 發現這問題通常發生在 64 位元的執行檔, 少了某些 DLL 或使用到某些 32 位元的 DLL 所造成的.

不過.... 我用 Process Explorer 查看了一下所產生的 filezilla.exe 的執行狀態, 並沒有發現有用到 32 位元的 DLL, 且用 dumpbin 或 objdump 查看, 也沒有發現有少那些 DLL.

最後看到了這篇文章,  發現除了 DLL 外, 在 resource 的產生上頭, 也可能會有產生這類混用的情形. 果然在 filezilla 的 windows_manifest.xml 裡頭, 發現 processorArchitecture 是設成 x86, 所以產生的 resource 會是給 win32 使用的, 在製成 win64 的程式時, 一執行就會有 0x000007b 的錯誤.

把 processorArchitecture 改成 * 或 amd64 (建議用 * 就可以, 這樣可以 win32/win64 通用), 果然產生的檔案就可以正常的執行了.

Del.icio.us Furl HEMiDEMi Technorati MyShare
MinGW 使用 gcc 4.5.x 產生的執行檔需要 libgcc_s_dw2-1.dll 與 libstdc++-6.dll 才能執行?
post by tommy @ 24 三月, 2011 15:14

這兩天為了編譯 SciTE (以前都是 VC++ 來編譯), 所以把使用的 MinGWgcc 升級到 4.5.x, 結果, 發現產生的執行檔在執行的時候, 需要 libgcc_s_dw2-1.dll 與 libstdc++-6.dll 才能運作. 網路上查了一下, 發現 gcc 4.5 預設對所有函式庫的連結方式都改成動態連結, 所以做出來的執行檔依據所使用到的函式庫, 往往會需要一些原本不存在 Windows 系統的 dll 才能正常運作.

 (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
MSYS 的 iconv.exe --silent 無法正常運作?
post by tommy @ 24 三月, 2011 13:18

這幾天把我用來編譯 filezilla3MinGW/MSYS 環境改成 gcc 4.5.x (之前是用 gcc 3.4.5), 結果在處理 libgpg-error 時, 會停在這個訊息:

make[3]: Entering directory `/usr/src/libgpg-error-1.10'
set -e; \
for i in $(./potomo --get-linguas ./po); do \
/bin/mkdir -p "/usr/local/share/locale/$i/LC_MESSAGES" || true; \
rm -f "/usr/local/share/locale/$i/LC_MESSAGES/libgpg-error.mo" \
2>/dev/null || true; \
./potomo ./po/$i.po \
"/usr/local/share/locale/$i/LC_MESSAGES/libgpg-error.mo" ; \
done
potomo: '
./po/cs.po' keeping UTF-8
potomo: '
./po/de.po' keeping UTF-8
potomo: '
./po/fr.po' keeping UTF-8
potomo: '
./po/it.po' keeping UTF-8
potomo: '
./po/nl.po' keeping UTF-8
potomo: '
./po/pl.po' converting from ISO-8859-2 to utf-8

查看一下執行的指令, 應該是執行 iconv.exe (會一直使用約 12% 左右的 CPU), 放著不管跑一晚上, 也跑不出結果.

potomo 是一個 bash 的 script, 所以看了一下這地方是處理是:

case "$fromset" in 
utf8|utf-8|UTF8|UTF-8)
echo "potomo: '$infile' keeping $fromset" >&2
msgfmt --output-file="$outfile" "$infile"
;;
*)
echo "potomo: '$infile' converting from $fromset to utf-8" >&2
iconv --silent --from-code=$fromset --to-code=utf-8 < "$infile" |\
sed "/^\"Content-Type:/ s/charset=[a-zA-Z0-9_-]*/charset=utf-8/"|\
msgfmt --output-file="$outfile" -
;;
esac

試著自己把那個 iconv 指令, 果然會停住. 試了一下, 把 --silent 拿掉就正常. 看一下 iconv --help 的說明, --silent 與 -s 是一樣的意思. 同一個指令, 改用 -s 來取代 --silent, 結果居然可以正常執行. 真是一個奇怪的問題.

如果你有碰到 iconv 跑不出來的問題, 可以看看有沒有用到 --silent 吧, 改用 -s 試看看吧.

Del.icio.us Furl HEMiDEMi Technorati MyShare
phpmsnclass v1.10
post by tommy @ 16 二月, 2011 19:25

更新 phpmsnclass 版本為 1.10. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
網路升級到 16M/8M 固定制 (6IP)
post by tommy @ 31 十二月, 2010 23:24

上個星期發現之前中華電信詢問的 16M/8M (固6) 可以申請了, 而且只要 2800 元. 以原本我用的 10M/2M (固6) 就要 2400 (扣掉優惠約 2350 吧) 來看, 這個價格實在太有吸引力了.

回台灣後, 隔天馬上打電話去 0800-080-365 去詢問 (網路與營業處還沒有這個方案, 目前一定要打電話去問), 請他們 email 給我一份申請書, 填好後馬上到附近的中華電信營業處去申請升級.

原本星期一現場人員要來裝機, 結果發現小姐沒有幫我保留原來的 IP, 就先退回. 然後星期二換機房人員打電話來說可以幫我更改速度並保留原 IP, 但... 發現仍需要現場有人要幫忙換個 port.... 就再拖了一天. 總算星期三, 兩邊的人都談好了, 中午左右來施工約一個小時後, 終於完工了.

目前就是用 16M/8M 的網路... 光想到只多花了 400 元, 就把上傳變成原本的 4 倍 (2M -> 8M), 實在很划算. 建議使用 10M/2M (固6) 的使用者, 都可以升級到 16M/8M.

Del.icio.us Furl HEMiDEMi Technorati MyShare
用 MPC-HC 看 .asf 檔案時會停格
post by tommy @ 31 十二月, 2010 23:14

這個月幫老婆的車子裝了一個行車記錄器, 產生的檔案是 mpeg4 編碼的 .asf 檔案. 發現拿到我的電腦上頭用 MPC-HC 播放時, 會有停格的現象. 難道是我的電腦等級太差? 可是它可是一台 i7 的筆電, 加上平時播放一堆 1080p 的檔案都很正常, 實在想不出為什麼.

原本還以為是機器有問題, 錄的時候就停格, 還問了賣家要怎麼處理, 結果... 在退回去前, 用轉檔軟體轉成 h264 的影片, 發現不會停格了. 所以.... 不是錄的問題, 真的是我的電腦播放時造成的停格.

後來發現有人在 MPC (或 MPC-HC) 上頭, 也有類似的問題 (不是 .asf 的檔案). 發生問題時, 似乎都是使用 EVR 自訂的這個視訊輸出, 只要改成 EVR Sync 就可以正常播放. 試了一下 (記得把 MPC-HC 關閉再打開), 果然不會停格了.

Del.icio.us Furl HEMiDEMi Technorati MyShare
bsdiff 處理某些大檔案無法產生檔案的問題
post by tommy @ 02 十二月, 2010 10:05

前一陣子在製作 i8000 的 rom 時, 有利用 bsdiff 來產生比較小的 patch 檔案, 這樣子有些小差異的大檔案, 就可以用一個大檔案加上一些小小的 patch 檔案來取代. 可以節省不少空間.

不過後來幾次, 在 Windows 下執行 bsdiff 指令時, 常常跑一陣子後, 程式就結束, 並沒有產生任何 patch 的檔案, 也沒有任何的錯誤訊息. 在找不出原因時, 就試著把相關檔案丟到 linux 上去處理, 結果.... 試了好幾台機器, 都是一樣的結果. 後來終於在某一台主機上頭, 可以正常處理 (不過.... 似乎也看不出為什麼就這台可以, 其他的不行).

最近比較空閒, 就試著在 VC 裡頭用 debug mode 來跑, 最後好像有出現 stack overflow 的訊息. 看了一下 source code, 這程式是利用遞迴的方式來處理, 所以, 當檔案比較大的時候, 在某些情形下, 可以會造成遞迴次數過多, 而每次函數在呼叫時, 內部的變數是用 stack 來處理, 所以, 次數過多的確可能會造成 stack overflow.

VC 預設的 stack 大小為 1MB, 我們可以利用 /STACK 來指定所要的大小, 在這個程式上, 我設成 /STACK:1000000000 就可以處理我目前所有的檔案 (多數在 100-200MB).

Del.icio.us Furl HEMiDEMi Technorati MyShare
Bad Behavior 已經阻擋了 278 個過去 7 天試圖闖關的垃圾迴響與引用。
Power by LifeType. Template design by JamesHuang. Valid XHTML and CSS