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)

2008年11月29日 星期六

爛比喻 

直接說七個成人就好了,關王建民屁事啊!(王建民:[超幹]躺著也中槍!)。然後沒事又扯營養午餐幹麻?= =

2008年11月27日 星期四

我的記憶力就跟狗屎一樣(2)

上次不知道哪個人問我為什麼要在純抽象類別[?]上強制宣告一個純虛擬解構式[?],我一時忘記原因了。
今天寫到另一個專案時才想到,那是因為C++預設的解構式是非虛擬的,使用預設的版本可能會出錯。
寫出程式的當下都會覺得理所當然,但是三個月後它就會變成莫名其妙的咒文。

2008年11月23日 星期日

我的笑點真的很低

以下是摘自Debian Multimedia Packages的FAQ:
Q.How many people are working on debian-multimedia ?
A. Two. Thibaut Varene for ia64, alpha, hppa, powerpc and ppc 64 archs and myself for i386, amd64, sparc and powerpc archs.
高手果然是孤獨的嗎?那麼多套件才兩個人維護...
Q. Why a so ugly background color ?
A. Because I hate white background. Otherwise my second prefered color is orange. You have the choice...
如果真的改成橘色背景的話,我大概會用Stylish把它改掉吧XD

2008年11月20日 星期四

狂気の劉傑

沒想到我工藤新一竟然會被綁架
看來這次遇到的是個慣犯
為了怕我逃跑
居然把我扒得只剩下內褲
他該不會有戀童癖吧
不過沒關係
我的小YYYYYG腰帶加長有緊急救援
城之內
像你這種軟腳蝦的決鬥者
沒有資格參加我台灣娛樂集團所舉辦的
殺你全家
砍你手腳
怪獸卡大賽
我的童負就靠阿笠博士你了
我工籐新一不能大便真是苦惱

2008年11月16日 星期日

Signal/Slot and template in Qt

Qt的特點就是提供了Signal/Slot機制來提供一個thread-safe的物件溝通功能。
GUI的事件連結通常是用call back機制,也就是元件本身提供可監聽的事件類型,由使用者提供若干函式註冊給這些事件,讓事件發生時會自動喚起使用者自訂函式。JavaScript使用的DOM便是典型例子。
而Signal/Slot的運作方式則是讓使用者在元件上自訂signal[?]和slot[?]。使用者可以在任何執行點上發射signal,而slot則可以和參數相同的任意signal連結。
Qt這麼設計的好處在於它很靈活,事件觸發的種類不再受限於事件模型;在任何執行點上皆可發射signal,也就是說也可以在slot裡再發射另一個signal,甚至於連結時也不只能夠在signal和slot間綁定,還可以使用在signal和signal之間,多對多的連結就更不在話下。
像這種明顯就超出了C++語言範圍的功能,其實作方式就帶來了一些缺點。這個機制大量地依賴一種Meta-Programming的技術,Qt稱之為Meta-Object System;自訂signal/slot時,需要使用moc這個Qt內附的外部工具,先parse類別的宣告,把signal和slot轉成字串,額外定義signal和meta-object處理的code,存成另一個原始檔,再和原本寫好的原始檔連結再一起,才能正常連結。
好了,我想各位看倌看出一個問題點了:moc要求類別的宣告和定義要分開,但是C++能支援分散template編譯的compiler少之又少。這是第一個問題。
另一個問題是,meta-object底層的實作方式是把類別和方法的名稱轉成字串,然後再做一些有點骯髒的處理,這很明顯地和template的具現化方式互相衝突。
因此如果想在template class上使用signal/slot機制的話,必須要先在non-template class宣告signal/slot,再宣告一個template class去繼承它。不過如果連signal/slot的參數都要模版化,要作的手術會更複雜些。

2008年11月7日 星期五

Change Splashy theme on Debian

# splashy_config -s <theme>
# update-initramfs -u
不更新initrd.img的話,開機時還是會使用預設畫面。欲查詢initrd.img內容可看:
# mkdir -p /tmp/initrd
# cd /tmp/initrd
# cat /boot/initrd.img | gzip -d | cpio -i
# find . -name splashy
後記:
前幾天更新的新版會在更改主題之後提示使用者更新initramfs...= =

2008年11月3日 星期一

真糟糕

現在只要伺服器上沒有SubVersion或Git我就不會寫程式了...囧。要同步其他地方寫的code實在太煩了。
故事通常是這樣的:
我在A電腦上的Linux一時興起寫了個程式出來,之後又重開機到Windows Vista上測試跨平台,隔天出門臨時興起又用B筆電的Windows新增功能,再重開機到Linux上之後發現bug,又修正自己犯下的愚蠢錯誤,拿著編譯好的程式到公用電腦上執行發現缺少動態連結檔,遠端連回去下載檔案,成功執行後發現Windows XP好像和Windows Vista不一樣,又回家去改,開了幾個虛擬機器編譯測試...(無窮迴圈)

2008年11月1日 星期六

好Java, Java的奧妙之處就在...

public int function()[] {}
public int[] function() {}
同義。
沒了嗎?還有!
int[][] i;
int[] i[];
int i[][];
神哉javac!

Git pull conflict

如果在用git-pull時出現訊息:
error: Entry '<whatever>' not uptodate. Cannot merge.
有兩個選擇,一個是放棄本地修改(git-reset,git-checkout),另一個就是送交本地更動(git-commit),這樣git-merge才會正常運作。
果然SubVersion和Git的工作邏輯就是不一樣啊...

SVG真有趣

今天在增加KomiX的功能時,缺了Logo[?],只好自己臨時生了一個出來。
先試用了Krita 2.0 Beta2 (1.98),不過真的不是很穩,用了幾分鐘就砍掉了。不是很想用GIMP的情況下,想起了還有Inkscape。使用情況良好,而且預設存檔類型就是SVG,不是用自己的特定格式。
XML果然是超完整的標記語言,連圖檔都可以用XD
只是不同電腦上看起來不太一樣就是了。算了,沒差XD