TAG

首都機能移轉 (2) 歌詞 (2) 靠北文 (40) 戲言 (30) 糟糕 (7) ACG (23) Assembly (2) Boost (2) C (31) C++ (69) CMake (4) CSIE (67) Debian (34) Design_Pattern (2) Django (1) Eclipse (1) en_US (13) FFmpeg (3) FoolproofProject (26) FreeBSD (2) Git (4) GNU_Linux (65) IDE (5) Java (11) JavaScript (19) KDE (15) Khopper (16) KomiX (3) Kubuntu (18) Life (1) Lighttpd (2) Mac_OS_X (2) Opera (1) PHP (2) PicKing (2) Programing (21) Prolog (1) Python (7) QSnapshot (2) Qt (30) Qt_Jambi (1) Regular_Expression (1) Shell_Script (7) Talk (98) VirtualBox (7) Visual_Studio (13) Windows (18) zh_TW (36)

2007年10月14日 星期日

ACM換新主機啦~~

我猜大概是在一個月前換的,其實之前就有在開新主機,不過實在是很亂,新帳號只能在新伺服器上解題,然後舊的跟新的題目又不能通用,但是現在已經完全合併了。
今天為了解決學弟的困擾[?],寫了一份code送上去之後發現它強制轉到新主機上。然後問題就來了....我根本就忘了Username是啥= =!折騰了半天之後才不甘心地選註冊新帳號,最後發現原來註冊那裡就有一欄可以填自己以前的註冊號:
搞了半天不是我忘了Username,而是它根本就不存在啊!
接下來只要在Migrate submissions裡填上自己以前的ID和檢號就好了[?]:
現在來看看有什麼不一樣~~這是所有submissions的紀錄,個人覺得以前的比較好,以前只會列出最佳解的紀錄:
這個則是送出結果的總紀錄,這裡就做得很漂亮了:
然後是題目列表,這裡也是很GJ。以前的解題累積紀錄寫得不明不白,可能很少有人知道那個答對率是怎麼算的,現在這樣就一整個簡單明瞭:
送出CODE和該題全球狀態也整合在這頁裡,右上角可以找到這頁,紀錄全球人士的解題狀態還有排名[?]:
送出頁面也有很大的改進,改哪裡呢?對!這次它會寫出編譯器狀態了![?]
然後這是現在的即時submissions頁面....總覺得好像沒有以前的還要顯眼易讀。對了,那個ccuxxxx之類的帳號,我懷疑那是學弟的帳號....
總覺得通常是很忙的時候才會去做那些你平常不想做的事,因為有你更不想做的事要做....[?]

2007年10月8日 星期一

C的字串寫入問題

一般說來,C字串的初始化有三種方法:
char * str1 = "All your base are belong to us.";
char str2[] = "All your base are belong to us.";
char str3[32] = "All your base are belong to us.";
是的,學過C的都知道。
但是,它們底下的意義有點不同;有人會說pointer和array在內部是類似的,可是我認為這是非常危險的想法。
我想先從第三個說回去好了。str3的初始化即為:宣告一個長度為32的字元陣列,並把字串常數放進去;由於字串長度為31,加上C字串的結尾字元,總共是32,沒有問題。str2的初始化則是交給編譯器自行決定一個容納字串的陣列,通常會是剛好能容納該字串的大小。但是str1呢?它的意思是,宣告一個字元指標指向某個字串;好吧,問題出在哪裡?
現在問題是,這個字串到底放在哪裡?你真的有宣告出一個空間來置放它嗎?這個字元指標指向的空間真的是一個你可以控制的實體嗎?
我想答案應該在你試圖更改這個字串的內容時就會出現了。
不管是字串常數或是用getenv之類的函式傳回的字串,你都沒有真正的寫入權。當你需要更動它們的值時,請愛用strcpy;否則你就會被Segmentation fault吃到死。
總之,在對指標作操作時,一定要搞清楚:這個指標指向的空間到底是什麼東西?搞不清楚的話你就會下地獄。
這也是為什麼我說指標是邪惡的東西。C的指標運用毫無安全性可言,它也沒有像C++或JAVA或其他近代高階語言一樣有exception handling,C++雖然還是有pointer和iterator,但是至少有exception來避免程式死亡,或是使用smart pointer來取代pointer,C的情況是爆了就是爆了,然後你要花三倍的時間去研究到底是哪裡存取錯誤。
因此有句話說得好:
你想要的,朕會給你;朕不給的,你不能搶!
by 滿城盡帶bra甲

2007年10月3日 星期三

Damn...損真大

前天我的隨身碟不見了...裡面除了八十幾份的ACM CODE之外,還有Firefox Portable所有設定[?],以及重灌Ubuntu時會用到的Bash Shell等等。
其實我的習慣上都會把用完的東西都塞在我的四次元空間袋裡[?],因此到底是怎麼不見的到現在還是個謎團。
算了,還好裡面沒有國防機密....

2007年9月27日 星期四

VirtualBox 1.5 at Ubuntu Gutsy

通常剛裝完virtualbox-ose之後會出現要求執行/etc/init.d/vboxdrv setup的訊息,不過很有趣的是gutsy裡根本找不到這個檔案。
原因是因為這次的kernel不知道為什麼沒包到vboxdrv的模組,但是可以透過一些步驟建立。
sudo apt-get install virtualbox-ose-source
sudo m-a prepare
sudo m-a auto-install virtualbox-ose
應該可以解決。
另外記得把自己加入vboxusers群組。

2007年9月20日 星期四

鬼文模版什麼時候才拿得掉?

我也不知道....
SyntaxHighlighter耍個性,說不動就不動;Prototype framework在Opera上的表現又怪怪的;CSS更是扯到以前的文章問題,目前大概只剩下自己寫的JavaScript是保證好的OTZ....
最近又開始變得很忙了,可能靜下來打文章的時間也很難。

幾個星期前才發現CSIE的標籤跟ACG的標籤數量完全不成比例,那些說我是オタク的人這下知道了吧?我還不夠格呢![?]

2007年9月17日 星期一

工數教授榮獲好人卡一張!!

原本下定決心要修25學分的某NEET少年,赫然發現他的工程數學被退選,理由竟然是....
重複修習相同科目
感到怪異的NEET少年去查看畢業資格審查表發現....
半年前被當掉的工數竟然過了啊!!!!
NEET少年在此謹頒發給教授好人卡一張XD

2007年9月16日 星期日

Debian Etch on server

上星期又重灌了一次Debian Etch[?],趁著還沒忘記的時候留個紀綠好了。
Base System:
進入安裝畫面後,首先選擇的語言是英語,因為要儘可能排除外文支援的問題。之後的地區會自動定標為美洲,記得從Other裡改成Taiwan,因為這會決定預設的套件庫網址。
接下來會詢問是否使用網路的套件庫來源,請選擇yes;至於是否參加套件使用調查計劃,就自行決定吧。
base system裝完後會詢問要安裝哪些整合套件,可以選擇的有桌面環境、基本系統、網路伺服器等,我個人是全部取消,為的是一個乾淨的自訂系統。
全部安裝完成後會要求reboot,請在登入之後立刻更新。
# aptitude update && aptitude upgrade
由於Debian對套件庫的選擇要求很高,因此在stable出現的一定是重要性很高的更新,可以安心的使用。
Firewall:
第一件事當然是建立防火牆。在這裡個人使用的是iptables的前端程式--shorewall。這是一個可以用很簡單的方式去控制iptables的程式。
# aptitude install shorewall
之後到/etc/shorewall/底下去設定它。
一開始應該是只有Makefile和shorewall.conf,先別動它們,先把/usr/share/doc/shorewall/default-config/底下的所有檔案copy到這裡;這是為了防止還沒設定好防火牆之前就被啟動導致無法登入的關係。
首先編輯zones這個檔案;這是定義網路架構各個部分的檔案。像這樣:
#ZONE   TYPE    OPTIONS                 IN                      OUT
#                                       OPTIONS                 OPTIONS
fw      firewall
net     ipv4
fw代表防火牆,net使用ipv4。
然後編輯policy這個檔案;這個檔案算是總規則,沒有在rules裡限制的連線都會被policy限制。範例:
#SOURCE ZONE   DESTINATION ZONE   POLICY   LOG LEVEL   LIMIT:BURST
$FW            net                ACCEPT
net            all                DROP     info
all            all                REJECT   info
從防火牆連出到外部網路的連線全部允許;注意,這是有方向性的,所以不代表外部網路可以連入防火牆。如果不開這個就變成鎖國狀態了。
從外部到所有區域的連線全部丟棄,但是把info的部分寫入syslog[?]。
任何區域間的連線完全禁止,同樣把info紀錄下來。因為只有單一網域,不用考慮太多。
接下來設定interfaces,這是定義zones裡的區域是接在哪個界面上。以下請隨機應變:
#ZONE   INTERFACE      BOARDCAST       OPTIONS
net     eth1           detect
由於在zones裡只有net要定義,防火牆是算整台伺服器,所以不用分界面。boardcast的狀況也請自己判定。
最後終於可以設定rules了;這是設定特定連線的檔案,沒有在這裡定義的連線全部會使用policy的定義。
雖然通常會指定連線方式[?]和port,如:
#ACTION         SOURCE    DESTINATION     PROTO       DEST PORT(S)
ACCEPT          net       $FW             tcp         80
即是允許HTTP的連線進入防火牆。
但是為了方便,shorewall也提供了巨集以安全的設定規則。如:
#ACTION         SOURCE    DESTINATION     PROTO       DEST PORT(S)
HTTP/ACCEPT     net       $FW
這個寫法跟上述等義。巨集列表請參照/usr/share/shorewall/macro.*。
我自己是這麼定的:
#ACTION         SOURCE    DESTINATION     PROTO       DEST PORT(S)
HTTP/ACCEPT     net       $FW
FTP/ACCEPT      net       $FW
SSH/ACCEPT      net       $FW
Ping/DROP       net       $FW
這樣是開HTTP、FTP、SSH三個服務,然後把所有的ping都drop掉。注意FTP不能因為有兩條通道就同時設定20和21,這會導致FTP出問題;你只需要設定21就好,不然就直接使用巨集。
如此就完成規則設定,接下來要開啟shorewall。首先確認/etc/default/shorewall是STARTUP=1,然後/etc/shorewall/shorewall.conf是STARTUP_ENABLED=Yes;這樣才會自動在開機時載入。
接下來只要
# shorewall start
即可。
Reference: ShoreWall
ssh server:
# aptitude install ssh
結束。
ftp server:
FTP server有很多種,可以用apt-cache search ftp-server來查詢;這裡選用proftpd。
# aptitude install proftpd
結束。
Web server:
Well,最著名的還是Apache吧;這裡選用2.2[?]。視情況也要安裝PHP,我選擇5[?]。MySQL也是。
# aptitude install apache2 php5 mysql-server
接下來要設定apache。
所有設定檔都在/etc/apache2/底下。
從這版開始設定方式改為模組式,不再是httpd.conf一線到底;也就是說各部分的設定被分開到不同的檔案,在需要時才include進去。
以下是值得注意的地方:
conf.d/charset:
設定預設編碼。如果有設定編碼,就會強制網頁使用該編碼,而忽視HTML文件的定義。如果設為Off,就是交給HTML文件去定義。建議AddDefaultCharset Off。
mods-available/:
這裡是可用模組,所有可以啟用的設定檔都在這裡。想要啟用就把檔案link到mods-enabled/下即可。
請把php5及userdir相關檔案link起來。如果同時有*.conf和*.load,都要一起link。
mods-enabled/:
這裡是已經啟用的模組,想更改設定內容來這裡改比較快,存檔時會一起更新原本在mods-available/裡的檔案。只有*.conf的檔案才是可更改的,*.load請勿更動。
記得修改userdir.conf,把Options的Indexes去掉,這是為了防止你沒有index.html時Apache自動列出所有檔案的目錄。
設定完成後記得重啟Apache。
暫時就這些了。之後可能會再寫一份quota和limit的設定吧。

2007年9月5日 星期三

A8J系列Laptop的音效卡在ALSA無法正常驅動的問題

一直到最近才去找解法。
總之,如果音效卡是SoundMAX Integrated Digital HD Audio,只要編輯/etc/modprobe.d/alsa-base的內容,加上:
options snd-hda-intel position_fix=1 model=3stack
存檔後重新啟動ALSA的服務就好。
只是主聲道不再是PC speaker,可能會因為不同環境而有所不同吧。