Archive for the 'Network' Category

支援超多技術的 Multiple File Uploader

這年頭上傳檔案要是沒辦法一次選很多個檔案上傳,可能會有很多人幹樵;從最老牌的swfuploadHTML 5 File API都支援,不過Flash吃資源,而且swfupload的更新速度老實說不快;HTML 5則不是每家瀏覽器都支援。於是,TinyMCE的作者們就寫了plupload,只要瀏覽器支援Google Gears、Flash、Sliverlight、Yahoo Browser Plus,或是HTML 5 File API的其中任何一項,就可以一次選擇很多檔案上傳!

看看支援的功能,除了Multi Threading和Pipeline以外,包括事先縮圖和Drag&Drop都實做出來了,看起來非常exciting啊……

不過我有預感bug應該也會很多就是。

看起來IPv6好像有那麼一點可能性了

最近有一堆IPv4位址即將用完的新聞,連1.0.0.0/8都被拿出來用了;再加上有國外的ISP開始測試提供用戶IPv6服務,看起來是有那麼一點在這幾年開始轉移到IPv6的可能性。

Hinet也開始在光世代線路測試IPv6了,而且是用Dual Stack供裝。據說目前只有一些機房有提供測試,如果剛好連線到的機房沒提供,還要跳線才行。

反正就慢慢來吧……1998年制定的IPv6,也才經過11個年頭而已。

第一個 CPAN Module

CPAN 是 Perl 很重要的資源之一,其中 Perl Modules 更是重點中的重點。之前想要把自己寫的一些 Module 傳上去,不過看到說明中的 “Please allow three weeks for proceeding” 就完全提不起勁了……

後來想說乾脆註冊起來放。沒想到才送出註冊請求兩小時,帳號就開好了……而且還是台灣時間晚上六點這種美國還是清晨六點的時間耶!

所以說,就把一些 SMS::TW::Drivers 放上去了。另外當然也順手做了 FreeBSD Ports,也方便自己使用。

在 terminal 下用 subtitle2vobsub 生出 .idx 與 .sub

必須的程式:mplayersubtitlerippertranscode

首先先抓出該 DVD 內有幾個字幕軌道:

mplayer -dvd-device $RIPDIR dvd://$TITLE -vo null -ao null -frames 0 -v

$TITLE 是該影片位在 DVD 的哪個 Title 中。

輸出結果應該如下:

......
DVD successfully opened.
audio stream: 0 format: ac3 (5.1) language: en aid: 128.
audio stream: 1 format: ac3 (stereo) language: en aid: 132.
number of audio channels on disk: 2.
subtitle ( sid ): 0 language: en
subtitle ( sid ): 1 language: es
subtitle ( sid ): 2 language: pt
subtitle ( sid ): 3 language: ko
subtitle ( sid ): 4 language: zh
subtitle ( sid ): 5 language: th
subtitle ( sid ): 6 language: es
subtitle ( sid ): 7 language: pt
subtitle ( sid ): 8 language: ko
number of subtitles on disk: 9
......

再接下來抓出字幕:

tccat -i $RIPDIR -T $TITLE -L | tcextract -x ps1 -t vob -a 0x24 > subs-zh

註:0×24 為 0×20 + 4 (language:zh 的 index)

再接下來轉成 idx+sub:

subtitle2vobsub -o vobsubs-zh -i $RIPDIR/VIDEO_TS/VTS_01_0.IFO < subs-zh

就會生出 vobsubs-zh.idx 與 vobsubs-zh.sub 了。

HTC Magic 試用

  1. 還蠻容易沾到指紋的……
  2. GMail 跟 Calendar 整合太好用了 XD
  3. 沒有 Google Reader –_-(當然可以用 Browser 上去,只是還要另外登入,沒有跟 GMail 綁在一起)
  4. Google Maps 比起 Windows Mobile 版來說方便很多(不過我只有用過 Smartphone 版的)
  5. 繼續試用中……

設定 samba3 自動安裝 Windows 的印表機驅動程式

如果使用 Windows 來分享印表機,使用者可以在連線到印表機的同時自動安裝好驅動程式;之前以為用 samba 不能作到,不過今天一查資料發現可以,只是會有一些地雷……XD 以下就是簡單的步驟說明:

假設印表機已經以 cups 設定好了,並且採用 RAW 模式直接輸出到印表機:

  1. 建立 print$ 這個分享目錄。
    在 smb.conf 中加入:

    [print$]
    path=/home/data/samba/drivers
    browseable=no
    read only=yes
    write list = root
    case sensitive = no
    preserve case = No

  2. 先找台 Windows 機器,連接上印表機並且設定好印表機的分享。假設這台 Windows 機器名字叫做 WINPC:
    # net rpc printer MIGRATE DRIVERS HPLaserJet -U root -S WINPC

    其中 HPLaserJet 是印表機分享的名字,在 Windows 與 cups 上要取一樣的名字。

  3. 如果出現 WERR_ACCESS_DENIED 的錯誤訊息,先試著增加 SePrintOperatorPrivilege 的權限給 root:
    # net rpc rights grant root SePrintOperatorPrivilege -U root

    如果還是不行,檢查 smb.conf 的 [printers] 區段內有沒有 use client driver = yes 的設定,有的話請暫時將它拿掉即可。

  4. 如果要設定 Windows x64 版本的 Driver,就在 WINPC 上安裝 Windows x64 的 Driver,再重新跑一遍 net rpc printer MIGRATE DRIVERS 就可以了。

參考資料:

遠傳電信網站的 SSL 憑證

遠傳電信的數位相框網站登入部份有過SSL,但是因為 Server Certificate Chain 設錯的關係,所以會出現憑證無效的訊息:

fetnet-invalid-cert

fetnet-invalid-cert

早上發現的,剛剛開始寫 Blog 的時候又去了一次,這次看起來修好了……

FreeBSD 設定 kern.ipc.nmbclusters="0" 的問題

中了個令人無言的地雷……

FreeBSD 有一個well-known的參數調整:mbuf clusters的最大值(kern.ipc.nmbclusters)。當使用的mbuf clusters超過設定的最大值時,網路就會不通。不過,我們可以在 /boot/loader.conf 裡面把 kern.ipc.nmbclusters 設為 0,表示不設定最大值,這樣他就會被Kernel Space Memory的大小限制住(一個 mbuf cluster 要吃約 2KB 的Kernel Memory)。

最近我們發現這樣設定的機器在有大量 TCP out-of-order 封包的網路環境下,網路效能表現非常差,於是做了很多交叉比對以及測試。最後發現有這樣問題的機器有兩個特點:netstat -s -p tcp 的結果,out-of-order packets 的 counter 都是 0,而且packets discarded due to memory problems 的 counter 很多。

最後找到 Maillist上的資料,發現在 kern.ipc.nmbclusters 設定為 0 的情況下,net.inet.tcp.reass.maxsegments 也跟著被設定成 0 了,調整回預設值 1600 就解決這個問題了。

FreeBSD 的 kernel debugging & textdump(4)

今天因為某組Web機器當機實在當太嚴重了,因為我們發現問題是出在NFS,所以我們把 KDB 跟 DDB 編進去準備來找問題。

當發生問題的時候,由於機器不會當死,所以可以在Console按Ctrl-Alt-ESC進DDB。進了DDB以後,可以用textdump(4)來紀錄所下的指令以及其output。紀錄的資料會dump在dump device(通常是swap),等下次開機的時候會存到/var/crash裡面。

大概的作法是這樣:

  1. 先Ctrl-Alt-ESC進DDB
  2. textdump set # 開始 textdump
  3. capture on # 下面的指令都要記錄下來
  4. show allpcpu; bt; ps; alltrace; show alllock # 要紀錄的資訊
  5. call doadump # dump到dump device
  6. reset # 重開機

如果發現出來的結果會被截掉的話,要把textdump的capture buffer加大:

sysctl debug.ddb.capture.bufsize=196608

MySQL 5.1 GA

雖然說已經 Generally Available,PIXNET已經踩到好幾次地雷了……
除了 InnoDB 有用錯Index的情形,甚至還有吃到 signal 11就再起不能的事 Orz

如果你現在有空機器,可以試試看 MySQL 5.1 比 5.0 好的 Performance (尤其是 SMP)
而 5.1 的 MyISAM 的表現跟穩定性也不錯。
但是如果你用的是InnoDB,請以alpha的態度對待5.1.30 GA……