網頁

2005年11月28日 星期一

Java VS C++

digg.com 上面有人提到:「Java Dethrones C++ as King of SourceForge」,然後根據他連結的原始網頁「Java history was made today!」來看:


  1. Java (16738 projects)

  2. C++ (16731 projects)

  3. C (15934 projects)

  4. PHP (12175 projects)

  5. Perl (6209 projects)

  6. Python (4542 projects)

  7. C# (2892 projects)

  8. JavaScript (2779 projects)

  9. Visual Basic (2192 projects)

  10. Delphi/Kylix (1926 projects)

  11. Unix Shell (1845 projects)

  12. Assembly (1608 projects)

  13. PL/SQL (1145 projects)



會發現很有趣的現象啊!

話說回來,C++03都出那麼久了C++他老被那本 TCPL 什麼時候才打算出新版啊? orz

Ultimate Boot CD

一樣還是在 digg 上看來的:Ultimate Boot CD,不過這東西之前機八鴉就已經說他不錯用(都只是口頭說說,找不到證據!沒文章沒真相啦!),官方網頁在:UBCD

另外也想到 aemon 之前跟我提到的 Trinity Rescue Kit 據說不但可以 mount NTFS 也可以清 windows xp 系列的 admin 密碼。機八鴨說搞不好他的名字是從 Matrix 裡面來的? XD。

這種玩具,可能有些人看起來可能不知道用處在那,不過當爆炸的時候這可是能救命的啊!

Matrix Secrets Explained

記得之前沒多久才跟 Aemon 以及機八鴨聊到關於 Matrix 的事,現在在 digg 上就又看到了一篇有趣的標題:The Matrix Explained (almost) 基本上對於線代沒學好的我來說看到 Matrix 不免畏懼幾分。不過仔細的看了看下面的 comment 之後確定應沒不是地雷,點進去應該不會看到一堆矩陣之後鼓起勇氣點了下去,果然是解釋電影的網站啊!網址是「http://matrix-explained.com/」,太閒的時候可以回來看看,他們的認知跟我這邊的版本一部一樣。

Free 60 Project

XBox 出了好幾天了,不過沒有小朋友更沒時間去玩弄。剛剛在 digg 上面又看到(之前便便土司看到的時候就丟給我看過了):Xbox-Linux: Free 60 Project Begins ,乍看到 Free 之下聯想到之前的 FreeBSD/XBox ,不過點進去之後才發現原來是要 port Linux 到 XBox 360,看起來似乎都是在惡搞啊!文章中提到:
- The flash is encrypted with a per-box key
- The key is stored inside the CPU
- The boot ROM is stored inside the CPU
- Also inside the CPU is a hypervisor that verifies the running state of the kernel, making sure there is no modification (RAM checksums), else the Xbox360 panics and blows up!
- The CPU contains RAM inside of it to store the checksums
- All interrupt/exception handling is done by the hypervisor
- All code runs in kernel mode
- The emulator for first generation games can be updated via an official Microsoft download burned to CD by the user, though the CDs' content will be encrypted and signed with public key cryptography.
The Xbox 360's Hard Disk appears to connect to the Xbox 360 via 7-pin SATA, internally the drive connects to the external connector through standard SATA data and power connectors. This should be of some help.

感覺上就是廠商跟 hacker 之間的惡鬥,不過看起來好像還蠻有機會(應該說根本就會)被 port 出來的。逆向工程++!

官方網頁:Free60 Project

另外也是在 digg 上看到的:The best Xbox360 Review ,寫的還蠻不錯的。 多看幾次搞不好會激起小朋友出走的慾望?或許應該叫維尼長輩出手一下?

2005年11月15日 星期二

FreeBSD Sound Driver 偵測

剛剛在抓 FreeBSD 的 Sound Driver 發現有個站的方法不錯,稍微紀錄一下:

kldload snd_driver
cat /dev/sndstat
kldunload snd_driver
kldload sound
kldload snd_xxx (shown above)

然後把下面的東西加到 /boot/loader.conf (以 nforce4 為例)

sound_load="YES"
sound_ich_load="YES"

 

2005年11月9日 星期三

MySQL 升級,phpBB UTF8 化

恩,非常悲苦。為了在 RW 跑個 portupgrade -acCv 受盡苦難。首先我要說,在 FreeBSD 下還是保險起見不要用 -O3 ,代價太大了。這幾天 RW 重編 Apache2 的次數我想不下二十次!到最後發現竟然是 make.conf 裡的 -O3 在搗蛋。而且因為同時炸太多東西了,所以根本很難發現誓死那個。首先, Perl 掰了,然後 trac 的 Python ,然後 php .. 這個教訓告訴我們不要手賤,等等想到再來把 FastCGI 給裝回去吧 -_-。

爆炸最大的大概是 MySQL ,不知道什麼年代開始,RW 的 MySQL 就變成沒有人敢動的版本,永遠都停在 4.0.20 ...某次不小心升級之後所有 database 全爛,也沒有人有空去看 why ,於是偉大的 clode 就不知道去那弄了 4.0.20 的 package 來,反正誰不小心幹掉就直接用 package 硬裝。(很勇敢對吧?)。很不巧,這次又是我手賤,執意要把 MySQL 換上去,並且還想「順便」把裡面的 database 「全面」 UTF8 化,所以代價就是好幾天幾乎都沒睡超過四小時。不過好在,最後似乎轉過去了。雖然中間應該多少損失一些資料。首先,在 MySQL 4.0.20 的時候先把資料給 dump 出來:

mysqldump -uroot rwphpbb > rwphpbb.sql

我 看到很多人說在 dump 的時候要記得設 -default-char-set=latin1 ,我之前也確實必須要這樣設定才能 dump 出正確的檔案,不過不知道是因為之前編的關係還是版本問題,加了之後反而沒辦法 dump ,所以...。然後就把 MySQL 升級,不過因為是用 portupgrade ,他升到了 4.x ,於是我手動幹掉裝成 MySQL 5 (反正要痛苦就一次痛苦個夠,反正這次我做了很充分的備份),不過健忘症發作,忘了下 -default-charset=utf8 ,所以變成在 rc.conf 裡面加上:

mysql_enable="YES"
mysql_args="--default-character-set=utf8"

然後中間經歷了很多 Apache/PHP 的爆炸就略過不提。處理完之後便拿 RW 的 phpBB 來開刀,首先照著我之前那篇 wordpress 的方式把 .sql 檔案轉換好:

*add follow line to .sql file

SET NAMES utf8;
SET CHARACTER_SET_CLIENT=utf8;
SET CHARACTER_SET_RESULTS=utf8;

*use vim to replace charset

(:1,xxxs/latin1/utf8/g)
這裡我是把 big5e 都換成 utf8 ,雖然我不確定對不對...

*use iconv/piconv 轉換 database big5->utf8

piconv -f big5 -t utf8 rwphpbb_utf8.sql > aaa.sql

然後把他匯入 MySQL,在啟動 MySQL 之前先確定剛剛的 rc.conf 已經設定好,這樣才會把預設的 table 蓋成 UTF8 而不用指定,另外就是 my.cnf 的設定,我暫時是
cp /usr/local/share/mysql/my-medium.cnf /var/db/mysql/my.cnf 然後在 [mysqld] 的 section 加上 init_connect = 'SET NAMES UTF8;' (反正都要全面 UTF8 化了),然後蓋 database 、匯入、設定使用者(因為我是把整個資料庫砍掉重鍊)。

*create database

mysqladmin -uroot create rwphpbb

*restore database

mysql -f -u root rwphpbb < aaa.sql
(用-f 是因為我遇到很多錯誤導致做到一半就爛了,所以強制做完,至於錯誤是啥我也不知道 -_-)

*create database user

mysql> GRANT ALL PRIVILEGES ON 資料庫名稱.* to 使用者名稱@localhost IDENTIFIED BY '密碼';

然後接下來處理 phpBB。如果你看到:

phpBB : Critical Error

Could not connect to the database

請 到 config.php 裡面把 $dbms = 'mysql'; 換成 $dbms = 'mysql4'; 然後燒香拜拜看看連不連的上。連上的話沒有意外你會發現一狗票亂碼,不要擔心,這是正常的。我爬了一些文章後發現 phpBB 官方(或者說是台灣語系的站台)並沒有釋出 UTF8 版本的 Language Pack ,所以很不幸的得自己做。不過不難。只是把中文語系那個目錄的 lang_main.php 裡的 $lang['ENCODING'] = 'big5'; 換成 $lang['ENCODING'] = 'UTF-8'; ,然後把 email 目錄裡的所有檔案的第二行 Charset: Big5 換成 Charset: UTF-8就好了。可以參考 這裡 。或是懶得搞的話可以抓我轉好的 phpBB2.0.17 UTF8 中文語系包。 要注意解開前先把你的 lang_chinese_traditional_taiwan 目錄 rename 一下,本來我是想弄個類似 lang_chinese_traditional_taiwan-UTF8 的語系,可是後來發現這樣會爆炸很大,所以只好用原來的 lang_chinese_traditional_taiwan ,所以你可能需要把 lang_chinese_traditional_taiwan rename 成 lang_chinese_traditional_taiwan.big5 之類的。理論上沒意外的話進去應該會看到 UTF8 的畫面了,感動吧!你可能會注意到好像主畫面是 Big5/UTF8 混合,很神奇吧 -_-。找半天不知道是啥原因,想說應該是 cache ,於是把 phpBB2 裡面的 cache/cache2 都幹掉了還是一樣...到最後才發現,原來去新蓋一個討論板他就會清掉了,那不然他不是存在 cache 裡面是存在那啊 -_-?。

剩下的,就等其他人(使用者)遇到問題再說吧,我跟 phpBB 超不熟,連用都沒在用 :~ 。

 

2005年11月7日 星期一

perl locale

現在升級 RW 到 6.0-R (很幸運的升完之後我還連的到他 -_-),然後準備來大升級。卻忽然發現 perl 一直死:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LC_ALL = "zh_TW.Big5",
LC_CTYPE = "en_US.ISO8859-1",
LANG = "zh_TW.Big5"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

結果 locale -a 看了一下發現,原來 en_US.ISO_8859-1 改成 en_US.ISO8859-1 了。把 /etc/csh.cshrc 跟 ~/.cshrc 改一改之後想說就會好了,沒想到還是爛的。後來很用力的把 perl 給重 make 一次就好了 -_-。

2005年11月6日 星期日

MySQL 5.0.15 亂碼

剛剛用 Portupgrade -aCcv 升級系統,沒想到 Blog 上的字又變成亂碼了。之前才把 MySQL 的資料從 latin1 -> UTF8 ,本來想說可能是自動升級的時候沒有弄好,重裝了還是一樣爛。機八鴨叫我用

mysql> SHOW VARIABLES LIKE 'character_set_%';
mysql> SHOW VARIABLES LIKE 'collation_%';


來看看發生什麼事了,不過看起來:

mysql> SHOW VARIABLES LIKE 'character_set_%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
7 rows in set (0.01 sec)

似乎檔案還是對的,於是 google 了一下,發現其中一招解法是在 wordpress 的 wp-db.php line 56 左右:

// mysql_query("SET NAMES 'utf8';");
// mysql_query("SET CHARACTER SET UTF8;");
$this->select($dbname);

加上 mark 的那兩行,另一招的話則把 my.cnf 丟到 database 的目錄裡面去並且在 [mysqld] 的地方加入:

init_connect = 'SET NAMES UTF8;'

就 ok 了。

2005年10月31日 星期一

wordpress 的 categories

預設的 theme 是不會出現 RSS Feed 的標籤的。但是其實如果有人想要訂閱某個 category 下的文章的話其實 wordpress 早就提供這樣的功能。只要在那個分類目錄的後面加上 /feed/ 的 URI 就會噴出 RSS 格式。至於想要讓出現在 sitebar 上的 categories 直接出現 RSS 的 link (像是鹿小滑那邊一樣),則得稍微設定一下 sitebar 那邊叫出 category 的 function。我現在是改成這樣:

< ?php wp_list_cats('sort_column=name&hide_empty=1&optioncount=1&feed=rss
&feed_image='. get_template_directory_uri().'/images/icon_rss.gif'); ? >

所以在分類旁邊就會出現 RSS 的圖示了。

what does RSS stand for?

剛剛 clode 問這個問題的時候 ekac 給了很有趣的答案 「really slippery stuff」。至於這是什麼意思呢,這就是傳說中的「鹿小滑」的別名「真是滑」。詳細內容沒空寫很清楚,不過可以暫時參觀便便土司寫的這篇

大家請多多 feed RSS grass 吧!

PS. 正解應該是「RDF Site Summary」

2005年10月28日 星期五

64 位元好猛啊!

64 位元真的不是蓋的,好大啊。一般對於 32 bits 的系統來講要把 int 玩到 overflow 似乎不是什麼很困難的事,可是對於 64 bits 的系統來說就很難講。以下就來介紹我昨天被嗆的原因以及試圖要幹的蠢事 XD。

2005年10月27日 星期四

OpenVPN

一陣子以前(好像是今年寒假左右?)曾經為 RW 架了 OpenVPN ,忘了是為什麼了,反正不外乎就是要搞邪惡計畫或者是玩遊戲。之前裝的時候還記得好像剛好是 2.0 RC12 然後剛好出 2.0 RC13 , FreeBSD 的 Ports 還在舊的 1.1.2 的樣子,所以我用手動的方式搞上去的。印象中好像還用 Static Key 搞了很久,期間一直都沒注意到他說如果要用 tap driver 加上 server mode 的話得用 TLS/SSL 而不能用 preshare static key ,然後因此耍了蠻久的白痴。而且那時他沒有提供所謂的 EASY-RSA 這目錄裡的 script ,不然也許是我眼瞎沒找到,所以餵了憑證也生了好久。又因為要為每個人都建憑證大麻煩了,在那邊蓋半天之後才發現原來有 duplicate-cn 的選項讓大家都能用同一份 key ,後來把 key 跟著 OpenVPN GUI for Windows 給包起來給要用的人抓之後才好不容易弄好。

現在由於學校的無線網路 仍然處於門戶大開的階段(完全沒有加密),也因此在我之前的小黑上完全不敢裝 KKMAN / PCMAN 之類的軟體,也不敢連 MUD ,所以在打密碼的時後都得再三確認這網頁到底有沒有加密。雖然說用 ssh tunnel (經由 putty or pietty 來建立)到某台機器的 proxy 可以解決大部分的問題,不過這只限於 http protocol 。也因此又讓我興起了再來裝 OpenVPN 的念頭。擇日不如撞日,於是乎昨天帶完os的課後輔導後就在 LAB 動手了。

2005年10月17日 星期一

DNS 爆炸的問題

看起來似乎找到兇手了。所以前面那篇似乎是錯怪我們偉大的微軟大哥了。本來以為是WindowsXP在討打,結果就算重灌了之後好像情況還是依然沒改善,動不動就會把 blog.cookys.org 指到舊的 ip 去然後爆炸,而且這個問題那位「色小外長輩」好像有跟我反應過,不過機八鴉卻說他都沒遇到,然後拼命嘲笑我說我家台子爆炸了,我猜應該是因為他用 Sharp Reader 來收 RSS 所以都沒感覺,唯一有感覺大概就是RSS噴汁的時候?

問題是出在之前申請的免費 DNS slave:PowerDNS ,今年二月多幫 cookys.org 掛上去的 dns 避免 ADSL 一掛就全部斷光的慘況。不過前一陣子PowerDNS說他們不幹了:

Dear cookys lin,

This message is to inform you of an important change concerning your
PowerDNS Express account.

PowerDNS Express currently provides free dns hosting for over 40.000 domains
worldwide, and this number is still increasing every day.
Unfortunately, we have been suffering from heavy abuse lately. Botnets,
spammers using our mailforwards and repeated DOS attacks have increased our
costs of running this service enormously.

We regret to inform you that, in order to keep providing you with high
quality DNS management, we are forced to stop all free services on PowerDNS
Express as of today.

As a result, your account needs to be upgraded.
Because we would really like to keep you as our customer, we've lowered the
prices of our paid services significantly! Have a look at
http://express.powerdns.com/cshop.php for our new prices.

Please login to your account first to purchase the appropriate packages
and/or remove any unused domains.
Starting October 15th, 2005 we will be disabling accounts that are over balance.

然後我只是沒注意理他,想說掛著那天想到再把他拿掉就好,反正應該沒差。就算那台機器不回依照 DNS 的機制反正還是會查的到。天曉得因為太相信這樣的機制所以就倒楣了。因為PowerDNS的 DNS 「還在線上」、而且「還會回應」,但是「不會更新」。剛剛發現的:

正常的 DNS:

[22:29-/var/log-] $ dig blog.cookys.org @dns.cookys.org

; <> DiG 9.3.0 <> blog.cookys.org @dns.cookys.org
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15828
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 3

;; QUESTION SECTION:
;blog.cookys.org. IN A

;; ANSWER SECTION:
blog.cookys.org. 600 IN A 140.134.26.72

;; AUTHORITY SECTION:
cookys.org. 600 IN NS dns.hysh.tnc.edu.tw.
cookys.org. 600 IN NS dns.twku.net.
cookys.org. 600 IN NS dns.cookys.org.
cookys.org. 600 IN NS dns2.cookys.org.

;; ADDITIONAL SECTION:
dns.twku.net. 600 IN A 61.219.228.78
dns.cookys.org. 600 IN A 220.134.232.80
dns2.cookys.org. 600 IN A 140.134.27.100

;; Query time: 3 msec
;; SERVER: 220.134.232.80#53(dns.cookys.org)
;; WHEN: Sun Oct 16 22:29:56 2005
;; MSG SIZE rcvd: 193

跑去查 PowerDNS 的話:

[22:29-/var/log-] $ dig blog.cookys.org @dns-eu2.powerdns.net

; <> DiG 9.3.0 <> blog.cookys.org @dns-eu2.powerdns.net
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32436
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;blog.cookys.org. IN A

;; ANSWER SECTION:
blog.cookys.org. 600 IN A 210.59.67.2

;; Query time: 343 msec
;; SERVER: 212.72.55.217#53(dns-eu2.powerdns.net)
;; WHEN: Sun Oct 16 22:30:08 2005
;; MSG SIZE rcvd: 49

真是有夠歡樂啊!所以來去去爸爸PowerDNS拿掉之後就等他更新了吧,希望這樣就解決了-_-。

2005年10月14日 星期五

超神奇的網卡 polling

不知道多久之前,好像是 10/4 吧。cvsup 的時候習慣性都會看一下 src 底下的 UPDATING 看看有沒有什麼新鮮事,那時就看到了:

20051001:
        kern.polling.enable sysctl MIB is now deprecated. Use ifconfig(8)
        to turn polling(4) on your interfaces.

而這次在長輩的板又看到,於是跑去翻 mailinglist,找到這篇,然後又到處 google 了一下為什麼反而又換回去 polling 模式,在半信半疑當中升上了 7.0 CURRENT 10/1 之後的版本,不過按了 ifconfig sis0 polling 之後竟然不理我。後來才發現原來 kernel 裡面要加上
options   DEVICE_POLLING
才會動,稍微測了一下,非常的出乎意料之外...當時如果有人路過我旁邊大概會覺得這瘋子很奇怪,嘴巴合不起來對螢幕傻笑是怎樣,來看看吧:

sis0: flags=8843 mtu 1500
        options=8
        inet6 fe80::290:ccff:fe73:c148%sis0 prefixlen 64 scopeid 0x1
        inet 192.168.210.254 netmask 0xffffff00 broadcast 192.168.210.255
        ether 00:90:cc:73:c1:48
        media: Ethernet autoselect (100baseTX )
        status: active

lab# ping -f 192.168.210.1
PING 192.168.210.1 (192.168.210.1): 56 data bytes
.^C
--- 192.168.210.1 ping statistics ---
383228 packets transmitted, 383227 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.087/0.310/2.778/0.342 ms

 


last pid:  5249;  load averages:  0.75,  0.51,  0.27                                                 up 0+07:26:32  22:49:40
56 processes:  2 running, 54 sleeping
CPU states:  3.0% user,  0.0% nice, 30.7% system, 24.3% interrupt, 41.9% idle
Mem: 167M Active, 631M Inact, 136M Wired, 31M Cache, 111M Buf, 2328K Free
Swap: 2019M Total, 2019M Free

 

  PID USERNAME  THR PRI NICE   SIZE    RES STATE    TIME   WCPU COMMAND
 5249 root        1  80    0  4644K   892K RUN      0:10  5.22% ping
  595 cookys      1  79    0  6748K  2160K select   0:18  4.49% screen
 4732 cookys      1  78    0 29364K  2932K select   0:12  2.98% sshd
  545 mysql       3  20    0 64484K 49600K kserel   0:20  0.00% mysqld

然後從 192.168.210.1 看 dumeter:


然後換成 Polling

lab# ifconfig sis0 polling
lab# ifconfig
sis0: flags=8843 mtu 1500
        options=48
        inet6 fe80::290:ccff:fe73:c148%sis0 prefixlen 64 scopeid 0x1
        inet 192.168.210.254 netmask 0xffffff00 broadcast 192.168.210.255
        ether 00:90:cc:73:c1:48
        media: Ethernet autoselect (100baseTX )
        status: active
last pid:  5255;  load averages:  0.84,  0.61,  0.35                                                 up 0+07:29:32  22:52:40
56 processes:  2 running, 54 sleeping
CPU states:  0.7% user,  0.0% nice,  0.0% system,  0.0% interrupt, >99.3% idle
Mem: 175M Active, 608M Inact, 136M Wired, 49M Cache, 111M Buf, 2452K Free
Swap: 2019M Total, 2019M Free

  PID USERNAME  THR PRI NICE   SIZE    RES STATE    TIME   WCPU COMMAND
  595 cookys      1  76    0  6748K  2160K select   0:26  0.00% screen
  545 mysql       3  20    0 64484K 49600K kserel   0:20  0.00% mysqld
 4732 cookys      1  76    0 29364K  2932K select   0:14  0.00% sshd
  572 www         1   4    0 92284K 17048K accept   0:06  0.00% httpd
  669 www         1   4    0 93260K 17960K accept   0:05  0.00% httpd
 5255 root        1  76    0  4644K   892K RUN      0:02  0.00% ping

lab# ping -f 192.168.210.1
PING 192.168.210.1 (192.168.210.1): 56 data bytes
.^C
--- 192.168.210.1 ping statistics ---
91551 packets transmitted, 91550 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.292/0.910/0.952/0.022 ms
一樣從 192.168.210.1 看 Dumeter:


CPU load 減輕暴多!不過看 Dumeter 好像比較慢?實際上用 FTP 抓檔測的結果是:沒差啦,用力用吧。不知道啥時會 MFC ,還是把手邊的機器都來衝 7.0-CURRENT? 這樣好像太 XD 了。

2005年10月12日 星期三

昨天幹的蠢事 - ubench

昨天把硬碟清的差不多了(總共清了四天 -_-,因為其中有一顆 WD 80JB 好像存活了三四年,裡面滿滿的是對我來講比較重要的資料。順便藉著這次機會把之前的 Backup 整理歸類,順便備份到 DVD-R 裡面),想說開始大開殺戒。開始把硬碟亂灌作業系統來玩,當然第一個很好奇的就是 ubench 在這台 deaktop 上的 Gentoo 能夠跑這麼高分,那在 FreeBSD 下會是多少?要嗎就是 Linux 分數偏高所以其他台機器的分數顯得比較低,要嗎就是這台機器真的特別神猛,不過我猜應該是因為 Linux 的關係。

於是我在 WD Raptor上的分割區灌了 FreeBSD 5.4 Release。不過開機的時候遇到很奇怪的問題,因為我用 Gentoo 那時候裝的 Grub 來當作開機管理員。一開進 FreeBSD 之後螢幕就花掉然後不給反應了,看起來就像是因為進了 Graphic Mode 搞得鬼, Google 了半天好像找不到該用啥 keyword 查,想說反正只是測一下 ubench ,乾脆裝到另一顆硬碟效果也一樣。忽然間心血來潮,把 KVM 切成 server 然後 ping desktop ,竟然有反應耶。可是 SSH 是爛掉的,想一想可能是因為剛灌完需要產生 RSA KEY Pair,於是胡亂按了一通然後把他重開機。等了好久,果然莫名其妙 ssh 就通了。

於是我就在 FreeBSD 5.4 下測,沒想到測出來只能用「慘不忍睹」來形容阿。

這是之前在 Gentoo 下測的:

rabbit ubench-0.32 # ./ubench
Unix Benchmark Utility v.0.3
Copyright (C) July, 1999 PhysTech, Inc.
Author: Sergei Viznyuk <sv@phystech.com>
http://www.phystech.com/download/ubench.html
Linux 2.6.11-gentoo-r6 #1 SMP Wed May 25 09:31:04 Local time zone must be set--
ee zic  i686
Ubench CPU:   159850
Ubench MEM:   215002
--------------------
Ubench AVG:   187426 (-march=prescott -msse -msse2 -msse3)

 

這是昨天在 FreeBSD 下測的:

> ubench
Unix Benchmark Utility v.0.3
Copyright (C) July, 1999 PhysTech, Inc.
Author: Sergei Viznyuk <sv@phystech.com>
http://www.phystech.com/download/ubench.html
FreeBSD 5.4-RELEASE FreeBSD 5.4-RELEASE #0: Sun May  8 10:21:06 UTC 2005     roo
t@harlow.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386
Ubench CPU:   109562
Ubench MEM:   117601
--------------------
Ubench AVG:   113581 (Tue Oct 11 06:44:21 CST 2005) (NO_HTT)

然後我忽然想到,那時 Linux 的 Kernel 是有 SMP 下去跑的 Kernel ,天曉得會不會有影響。反正就試看看。於是就很高興的去重新編 kernel 。到後來 make installkernel KERNCONF=SMP 打完的時候,看他 installation finished 之後很習慣性的就按了 alt-ctrl-del ,過了兩秒才想到「幹!!」。我現在是用 server ssh 到桌機上啊,這樣等於是我把 server 給重開了阿 -_-。果不其然,開了 37 天多的 server 就被我 alt-ctrl-del 了。 XD 真是超白痴的。後來編完之後測的結果其實還是很糟糕:

> ubench
Unix Benchmark Utility v.0.3
Copyright (C) July, 1999 PhysTech, Inc.
Author: Sergei Viznyuk <sv@phystech.com>
http://www.phystech.com/download/ubench.html
FreeBSD 5.4-RELEASE-p7 FreeBSD 5.4-RELEASE-p7 #0: Tue Oct 11 07:01:27 CST 2005
   cookys@fleebsd.iecs.us:/usr/obj/usr/src/sys/SMP i386
Ubench CPU:   109382
Ubench MEM:   113730
--------------------
Ubench AVG:   111556 (Tue Oct 11 07:30:57 CST 2005) HTT


於是我又本著好奇的心態想說,會不會是 FreeBSD 5.x 系列寫爛了,搞不好 DragonFlyBSD 從 4.xx 上來的會好一點,於是又去抓他的 LiveCD 來測,測了之後反而比 FreeBSD 還慘,不過因為那版是 1.1 ,聽說 1.2 拿掉很多 lock ..於是又抱著一線希望去抓 1.3-DEVELOPMENT。還是差不多:

 

> ubench
Unix Benchmark Utility v.0.3
Copyright (C) July, 1999 PhysTech, Inc.
Author: Sergei Viznyuk <sv@phystech.com>
http://www.phystech.com/download/ubench.html
DragonFly 1.1-CURRENT DragonFly 1.1-CURRENT #10: Mon i386
Ubench CPU:     98245   99820    107728          108276
Ubench MEM:   107367  112979    135429          134525
-------------------- --------   ------          ------
Ubench AVG:   102806  106399    121578          121400
                     (GCC 2.95) (GCC 3.4 -O2)   (GCC -O3)
                        (1.3-DEVELOPMENT ,April 20)
(Tue Oct 11 17:42:25 CST 2005) (GCC 2.95)


後來又很好奇為什麼 FreeBSD 在編 Kernel 的時候都會把特殊指令集給關掉,於是 Google 了一下發現這篇這篇

 

For speed reasons, we restrict the kernel to using integer instructions
only.  This means we can avoid the considerable expense of
saving/restoring floating point context unnecessarily for syscalls,
interrupts, etc.

...

Note that we *could* concievably set aside a few xmm registers for
faster data copies inside the kernel, but we don't do it yet.  I
believe linux makes %xmm0 and %xmm1 available in the kernel and saves
them with every trap into kernel mode.


 

Whether or not the kernel is compiled with instructions that use these
registers has absolutely no bearing on whether userland code can use
them.  It's purely about trading one optimization (using optimized
opcodes in the kernel) for another (not having to save and restore
dozens of registers to the stack on each syscall).  It might be
interesting to experiment with allowing a certain class of instructions
in the kernel and saving and restoring the associated registers, and
seeing if GCC will actually generate code that is better and overcomes
the save/restore expense.  Any takers?

Scott

反正就是其實用了的話在 save/restore 的時候會有比較大的 overhead ,所以先關掉。然後其實還有方訪能夠去增加他的效率,那就是跟 Linux 一樣用 %xmm0 and %xmm1 來搞。不過這似乎跟上面的測試沒什麼太大關係就是了,測試數據參考就好。 Linux 在 ubench 的分數上勝出很多是事實 XD。

2005年10月3日 星期一

RSS 爆炸了..

前幾天機八鴨告訴我說我家的 RSS 好像爆炸了,檢查了一下發現他真的炸了..。可是舊的卻是 OK,想說大概是新版的 wordpress 改炸了,因為之前有看到其他人也有說到這問題就不太在意。不過剛剛心血來潮把 wordpress 重新 checkout 一次發現他其實是正常的,所以就暫時換回 default theme 吧。因為 arzel_xt2 其實算舊的 theme 了。有空的話自己改一個吧。

Modify: 後來發現其實 theme 還是能用,所以就又換回來了。不知道是我手賤去改到哪裡。
Modify: 測半天發現是 blogtimes 爆炸 -_-,一 deactive 就好了。
Modify: 參考廖大的文章,發現 blogtimes 最後一行是 newline ..把他砍掉就好了,真是 ~!@#$%^& -_-。

2005年9月29日 星期四

微軟在莫名其妙啦!

昨天把 blog.cookys.org 的 dn 給指過來,然後就發生一連串的靈異事件,每次都用的好好的,然後寫完要按 publish 的時候就會跳到舊的那個 blog 去 -_-。所以早上一氣之下就把舊的那台的 apache 給關了,沒想到剛剛就因為這樣 lose 一篇 post -_-,直接找不到網頁 -_-。本來想說是不是我的 serial 弄錯了,結果一看沒有阿,其他機器都查的好好的,似乎只有我桌機在哭 -_-,查了一下發現靈異現象,推測應該跟 dns cache 機制有關:

Microsoft Windows XP [版本 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\cookys>ping blog.cookys.org

Pinging blog.cookys.org [210.59.67.2] with 32 bytes of data:

Reply from 210.59.67.2: bytes=32 time=49ms TTL=52
Reply from 210.59.67.2: bytes=32 time=52ms TTL=52
Reply from 210.59.67.2: bytes=32 time=49ms TTL=52
Reply from 210.59.67.2: bytes=32 time=64ms TTL=52

Ping statistics for 210.59.67.2:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 49ms, Maximum = 64ms, Average = 53ms

C:\Documents and Settings\cookys>nslookup blog.cookys.org
Server:  dns.hinet.net
Address:  168.95.1.1

Name:    blog.cookys.org
Address:  140.134.26.72

C:\Documents and Settings\cookys>

然後我跑去查 Google://windowsxp dns cache 找到一頁看起來有用的:
http://www.vlaurie.com/computers2/Articles/dnscache.htm
然後在跑去命令提示字元下查一次:

Microsoft Windows XP [版本 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\cookys>nslookup blog.cookys.org
Server:  dns.hinet.net
Address:  168.95.1.1

Name:    blog.cookys.org
Address:  140.134.26.72


C:\Documents and Settings\cookys>ping blog.cookys.org

Pinging blog.cookys.org [140.134.26.72] with 32 bytes of data:

Reply from 140.134.172.253: Destination net unreachable.
Reply from 140.134.172.253: Destination net unreachable.

Ping statistics for 140.134.26.72:
    Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms
Control-C
^C
C:\Documents and Settings\cookys>ping blog.cookys.org

Pinging blog.cookys.org [140.134.26.72] with 32 bytes of data:

Reply from 140.134.172.253: Destination net unreachable.
Reply from 140.134.172.253: Destination net unreachable.

Ping statistics for 140.134.26.72:
    Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms
Control-C
^C
C:\Documents and Settings\cookys>nslookup blog.cookys.org
Server:  dns.hinet.net
Address:  168.95.1.1

Name:    blog.cookys.org
Address:  140.134.26.72


C:\Documents and Settings\cookys>

現在是怎樣?這年頭連 DNS 都要玩 RR 嗎? -_-
不管怎樣看起來都是微軟在搞鬼 -_-

2005年9月8日 星期四

好不容易

總算是成功的把 latin1 -> UTF8 ,原來之前失敗的原因竟然是因為我一開始轉出來的檔案是爛的。其實想想,我最一開始轉出來的根後來正確轉出來的大小都是 6xxkb ,但是後來加了 --default-character-set=latin1 之後不知道為啥檔案變成 900k。可是我想說檔案比較大應該才算有轉完,結果沒想到這才是爛的。-_-a

所以到最後,流程大概是這樣:

  1. mysqldump --default-character-set=latin1 -uroot -p --opt wordpress > wordpress.sql
  2. mysqladmin -uroot -p drop wordpress
  3. mysqladmin -uroot -p create wordpress
  4. cp wordpress.sql wordpress_utf8.sql
  5. vi wordpress_utf8.sql
  6. *add
    SET NAMES utf8;
    SET CHARACTER_SET_CLIENT=utf8;
    SET CHARACTER_SET_RESULTS=utf8;
  7. *replace latin1 to utf8 (:1,xxxs/latin1/utf8/g)
  8. iconv -c -f big5 -t utf8 wordpress_utf8.sql
  9. mysql -uroot -p wordpress < wordpress_utf8.sql

之後發現 httpd 一直死:

pid 1165 (httpd), uid 80: exited on signal 11
pid 559 (httpd), uid 80: exited on signal 11
pid 560 (httpd), uid 80: exited on signal 11
pid 1215 (httpd), uid 80: exited on signal 11
pid 561 (httpd), uid 80: exited on signal 11
pid 1499 (httpd), uid 80: exited on signal 11
pid 1503 (httpd), uid 80: exited on signal 11
pid 1500 (httpd), uid 80: exited on signal 11
pid 1537 (httpd), uid 80: exited on signal 11
pid 1536 (httpd), uid 0: exited on signal 10 (core dumped)
pid 28006 (httpd), uid 80: exited on signal 11
pid 28007 (httpd), uid 80: exited on signal 11

試 了半天,把編譯最佳化都關完了,也把 Apache 2.1.4 換回 2.0.54 ,把 php 5.0.4 換成 4.4.0,不過結果一樣狂死。後來靈機一動想到,該不會是 database 裡的 options 作怪,於是跑去裝 phpmyadmin ;把原來的 URI 改好,就會動了 -_-。真是悲苦,不過竟然可以因為這樣搞到 Apache core dump ,也堪稱奇蹟阿。接下來下個步驟就是好好搞定這裡然後開個 plog 。至於舊網址,會先丟一陣子。等我搞定之後自然會把網址導回來。

2005年6月15日 星期三

鴨子的怒吼

拼了一個早上的演算法作業,被老師說看不出來在做什麼。
然後明明都是自己寫的,都被說太陽春。 demo 網路找來的程式的人卻被說 "你們這組比較認真喔"

於是鴨子就暴走了。其實我已經懶的計較了,但是鴨子要暴走我也不會阻止他,反而會加點油下去,反正有人要翻 XD
結果全都出籠了... haha...全部都找到喔 XD
鴨把拔暴走果然強 (Y)

http://www.cs.oswego.edu/~mohammad/classes/csc241/samples/sort/Sort2-E.html

http://www.unf.edu/~wkloster/foundations/
http://www.unf.edu/~wkloster/foundations/KruskalApplet/KruskalApplet.htm

http://www.guides.sk/suuri/maxflow/mfex1.html
http://www.guides.sk/suuri/dijex4.html

http://www-cg-hci.informatik.uni-oldenburg.de/~da/peters/Kalvin/Doku-BN.htm

http://www.cut-the-knot.org/ctk/Mazes.shtml

http://carbon.cudenver.edu/~hgreenbe/sessions/dijkstra/DijkstraApplet.html

http://www.princeton.edu/~rvdb/JAVA/CIV201/shortpaths/shortpaths.html

http://olli.informatik.uni-oldenburg.de/fpsort/Animation.html


http://www2.hig.no/~algmet/animate.html (超多)
http://www2.cs.pitt.edu/~kirk/cs1501/animations/Sort2.html

http://www.dat.ruc.dk/~keld/algoritmik_e99/Applets/Chap08/ShellSort/ShellSort.html
http://www.akira.ruc.dk/~keld/algoritmik_e99/Applets/Chap08/Bubble/BubbleSort.html

http://www.akira.ruc.dk/~keld/algoritmik_e99/Applets/Chap31/GraphW/GraphW.html

2005年4月9日 星期六

postfix/spamassassin

整天都在做著很沒有意義的事。

早上把 postfix 重新整理了一下,順便升級了。下午再跟阿滑討論的情況下把 openwebmail 裡面的那個 SA 設定值弄成能動了。
大致上的問題有幾個,postfix 的 master.cf 裡邊,對於 postfixfilter 的原來設定:

postfixfilter unix - n n - - pipe flags=Rq user=nobody
argv=/usr/local/bin/spamc -d 127.0.0.1 -f -p 783 -t 30 -e /usr/local/sbin/sendmail -i -f ${sender} -- ${recipient}

要改成

postfixfilter unix - n n - - pipe flags=Rq user=nobody
argv=/usr/local/bin/spamc -d 127.0.0.1 -f -p 783 -t 30 -u ${user} -e /usr/local/sbin/sendmail -i -f ${sender} -- ${recipient}

這邊要傳入 uid ,然後在 spamd 的部分,問題是出在啟動的 flag 上:
原本是:
#spamd_flags="-d -L -m 32 -r /var/run/spamd.pid -u nobody -V /usr/local/etc/spamassassin --user-config"

我猜可能是之前升級 perl 的時候用 portupgrade -f 'p5*' 有自動升到 spamassassin ,不然不應該會有問題。升上新版後的 flag 必須弄成:
root     85135  0.0  3.1 21476 20344  ??  Is    6:46下午   0:02.09 /usr/local/bin/spamd -c -d -r /var/run/spamd.pid (suidperl)

不能夠加 -x or --user-config ,跟文件不太一樣...不過兩份文件前後寫的不太一致,應該後面的比較新, -x == --no-user-config 。所以

Apr 8 23:40:58 soul spamd[85136]: Creating default_prefs [/home/scout/55th/alin6345/.spamassassin/user_prefs]
Apr 8 23:40:58 soul spamd[85136]: Cannot write to /home/scout/55th/alin6345/.spamassassin/user_prefs: No such file or directory
Apr 8 23:40:58 soul spamd[85136]: Couldn't create readable default_prefs for [/home/scout/55th/alin6345/.spamassassin/user_prefs]
Apr 8 23:40:58 soul spamd[85136]: processing message for alin6345:1033.
Apr 8 23:41:06 soul spamd[85136]: clean message (6.9/7.5) for alin6345:1033 in 8.2 seconds, 49482 bytes.


他就會正常動作了, openwebmail 裡面設的 spamassassin rule 也能正確的使用。不過有個問題比較大的一點,能不能讓沒有 user_prefs 的傢伙自動去吃 default setting 啊?