2009年11月27日 星期五

ubuntu、apt、awstats...

今天在機器上面安裝awstats...
弄到一整個很...
透過apt-get安裝的awstats是舊版這也就算了...
畢竟reposity收的不會都是最新的軟體,大多以stable release為主...
但是安裝之後問題一大堆...

awstats是用perl寫的script application...
一堆路徑直接寫死在裡面...
安裝之後要run就給你一堆錯誤...
好不容易修了半天可以動了...
照著網路上看來都一樣的教學去操作(懶的看document)...
結果就是碰到一堆路徑不一樣的問題...

例如下awstats_configure要產生conf檔...
結果缺少awstats.model.conf...
檔案在/usr/share/doc/awstats/examples/awstats.model.conf.gz
而且還壓縮?!

或是文章提到的安裝路徑應該在/usr/local/awstats/
結果在/usr/share/awstats/
主程式應該在/usr/local/awstats/wwwroot/cgi-bin/awstats.pl
結果在/usr/lib/cgi-bin/底下,還是在/usr/lib/底下我也忘了...

整個的安裝過程就一直在updatedb、locate、移動到正確的位置或是改設定中度過...
建議如果要在ubuntu安裝awstats...
不要透過apt去安裝...
直接上官網撈新的來用...
最起碼不會有路徑錯亂的問題...

弄到整個花掉= =

2009年11月23日 星期一

用Ansi C寫一個很蠢的影像壓縮程式...

在PTT的某板上看到有人發了關於影像壓縮的求救文,
基於好心所以推文給點建議,
然後就丟水球來啦~
原來是作業,啥都不要求,
只要求影像壓縮= =,壓縮大小為原先的一半...

因為無聊所以隨便寫了一個給他...
因為懶...所以直接在機器上面寫...
所以先找了個人家寫好的來改...
(原創) 如何使用Standard Library作影像處理? (C/C++) (Image Processing)
大陸那邊的東西,天知道到底是誰原創...
因為愛...所以就不拉library來用...
(實際上是嫌GD跟eazybmp太複雜...我只要讀檔案跟寫檔案而已)

就撈了人家的code過來,拿現成的來改...
讀取跟寫入Bitmap的Header的函式已經寫好了...
只是隔天就在C_and_CPP板上看到有人說這個寫法很爛還被抄來抄去...
完全不考慮Endianness的土炮寫法,
管他媽媽嫁給誰,能用就先不管了,反正不是我的作業...XDDDD

用了一個很爛的作法,
把每個byte的低4位元拿掉,然後把2個bytes合成1個byte,
這樣可以節省一半的空間,但是圖片還原不至於差的太多。
其實這是之前上課提到一個很無聊的東西,一張圖A隱藏在另一張圖B當中,
平常看是圖B,但是當圖片反白的時候看起來就是圖A了...
原理是差不多的XDDDD

寫了兩個Function...

int enc(unsigned char *ori, unsigned char *tar, int xsize, int ysize) {
int x;
int y;

for(y = 0; y != ysize; ++y) {
for(x = 0; x != xsize; ++x) {
if (x % 2 == 0){
*(tar + 3 * (y * xsize + (int)(x/2)) + 2) = *(ori + 3 * (y * xsize + x) + 2) & 240;
*(tar + 3 * (y * xsize + (int)(x/2)) + 1) = *(ori + 3 * (y * xsize + x) + 1) & 240;
*(tar + 3 * (y * xsize + (int)(x/2)) + 0) = *(ori + 3 * (y * xsize + x) + 0) & 240;
}
else{
*(tar + 3 * (y * xsize + (int)(x/2)) + 2) = *(tar + 3 * (y * xsize + (x/2)) + 2) | (*(ori + 3 * (y * xsize + x) + 2) & 240) >> 4;
*(tar + 3 * (y * xsize + (int)(x/2)) + 1) = *(tar + 3 * (y * xsize + (x/2)) + 1) | (*(ori + 3 * (y * xsize + x) + 1) & 240) >> 4;
*(tar + 3 * (y * xsize + (int)(x/2)) + 0) = *(tar + 3 * (y * xsize + (x/2)) + 0) | (*(ori + 3 * (y * xsize + x) + 0) & 240) >> 4;
}
}
}

return 0;
}



int dec(unsigned char *ori, unsigned char *tar, int xsize, int ysize) {
int x;
int y;

for(y = 0; y != ysize; ++y) {
for(x = 0; x != xsize; ++x) {
if (x % 2 == 0){
*(tar + 3 * (y * xsize + x) + 2) = *(ori + 3 * (y * xsize + (int)(x/2)) + 2) & 240;
*(tar + 3 * (y * xsize + x) + 1) = *(ori + 3 * (y * xsize + (int)(x/2)) + 1) & 240;
*(tar + 3 * (y * xsize + x) + 0) = *(ori + 3 * (y * xsize + (int)(x/2)) + 0) & 240;
}
else{
*(tar + 3 * (y * xsize + x) + 2) = (*(ori + 3 * (y * xsize + (int)(x/2)) + 2) & 15) << 4;
*(tar + 3 * (y * xsize + x) + 1) = (*(ori + 3 * (y * xsize + (int)(x/2)) + 1) & 15) << 4;
*(tar + 3 * (y * xsize + x) + 0) = (*(ori + 3 * (y * xsize + (int)(x/2)) + 0) & 15) << 4;
}
}
}

return 0;
}


然後很好心的順便算了一下PSNR...
用Lena 512x512的圖來跑,PSNR還有8左右的水準...
看的出少掉一些細節,不過也算壓縮了不是?
只是真的很蠢...
蠢到八成不會有人會想寫這種東西放在網路上給人家抓...

完整的code...
20091123_image_compress

結論咧?那位苦主八成連拿來修一修都有困難...
直接跟老師說明年再見吧...

2009年11月18日 星期三

好人必備 - 利用光碟映像檔建立開機隨身碟

從in2板上看來的文章...
#1B0gy8aw (in2) [ptt2.cc] [fwd] Boot ISO from USB Flash Drive
介紹了有人把東西整理出來...

之前在Ubuntu 9.10還9.04就看到這樣的功能,
建立開機隨身碟,同時指定你要的映像檔(如果我沒記錯的話)
只不過沒人把他弄成一個比較容易處理的package...
這個是利用syslinux開機,利用grub做光碟模擬,同時也可以設定開機選單,
剛才試用了一下倒是還蠻方便的。

步驟如下...

  1. 下載http://www.pendrivelinux.com/downloads/BootMyISO/BootMyISO.exe,這是個7zip的自動解壓縮檔,解壓縮後會建立BootMyISO這個資料夾

  2. 執行BootMyISO這個資料夾當中的BootMyISO.bat,接著照畫面的指示進行...大致上就是選擇你的隨身碟磁碟機代號,做個確認的動作,拷貝檔案,寫入開機磁區,最後提醒你如果在Vista下寫入開機磁區需要Administrator權限balabala的,結束之後這個隨身碟就可以開機了(沒意外的話)

  3. 程式本身放了一個memtest86+的映像檔,這是個記憶體測試程式,接著教你怎麼放入其他的映像檔,要用映像檔開機...自然要先把映像檔丟到隨身碟去,檔名避免使用中文或是特殊符號會比較安全。

  4. 用文字編輯器開啟隨身碟根目錄下的menu.lst,這是grub的開機選單設定檔,#開頭是註解,拷貝下列這一整段...
    # title Test ISO
    # find –set-root /testname.iso
    # map /testname.iso (hd32)
    # map –hook
    # root (hd32)
    # chainloader (hd32)

    將註解的#跟空白拿掉,
    更改testname.iso為你的映像檔檔名,
    更改Test ISO為你的選單上妳希望看見的名稱,
    存檔、關閉。

  5. 最後,重新開機,確認BIOS設定為可由USB開機、USB為高優先開機,然後就可以嘗試用USB掛載映像檔開機啦~



我挖出一個非常古老的32MB隨身碟,放MHDD的映像檔進去測試,一切正常,
照這個方法,可以弄個緊急救援用的隨身碟,可謂好人必備工具之一...

原文:
Boot ISO from USB Flash Drive
http://www.pendrivelinux.com/boot-iso-from-usb-flash-drive/

The Pirate Bay 的 Tracker 關閉,走向分散式架構

在gslin大長輩的log看到這篇文章...
The Pirate Bay 的 Tracker 關閉,走向分散式架構
看別人的blog有個好處,只要挑對地方看,通常都是去蕪存菁後的消息XDDD

這篇消息讓我多留意了一下,主要是因為The Pirate Bay的緣故,
通常我也不會去注意TPB的狀況,只要需要謎物的時候會上去找找...
不過畢竟TPB還算是P2P的指標性網站,
他關掉Tracker代表他們認為DHT跟PEX發展的夠成熟了,
靠這兩個就可以連結整個網路上所有的Peer,前提是你開BT停留在網路上的時間要久一點。

某程度上來說,這算是好事,讓BT更接近P2P原先的架構,
如果BT不考慮Torrent的取得,不靠Tracker的話,算是純P2P軟體,
早期對DHT多少還是抱持著強姦網路的心態看待...
不過近期DHT或許改的比較溫和些了,或是比較感覺不出來?
同時這樣的分散式架構,也可避免像是ED2K網路伺服器被抄的狀況。

缺點是,將來的冷門檔就不好撈了...

The Pirate Bay Blog
http://thepiratebay.org/blog/
The Pirate Bay Tracker Shuts Down for Good
http://torrentfreak.com/the-pirate-bay-tracker-shuts-down-for-good-091117/

2009年11月16日 星期一

正妹Doris與盤古唱青花瓷...

很久沒寫了...
東逛西逛逛到Doris的網誌...
Chthonic - Doris...
她真的是正妹...
可是之前跟Freddy結婚的照片怎麼感覺有點肉肉的= =?
風格差異頗大...hm...

原本想放幾張照片讓畫面增色一下...
不過Yam的相簿擋外連,又沒看到啥宣告之類的...
所以還是不撈下來放了...殘念阿~

然後看到一個東西...盤古唱周杰倫的青花瓷...
http://www.youtube.com/watch?v=mt3PMdgbPgM
該怎麼說...一整個惡搞嘛XD

how do i fix an error with libc6-dev-armhf-cross in linux mint upgrade

先前升級公司用的工作機碰到這個問題 Log就不貼了,我手邊也沒有,可以參考下列連結 https://askubuntu.com/questions/1079797/how-do-i-fix-an-error-with-libc6-dev-armhf-cross-in-ubuntu...