回到家就一直睡不好
無論是午睡或是晚上睡覺
一直在做夢
推論是床太小了...
2008年7月26日 星期六
2008年7月25日 星期五
2008年7月22日 星期二
Decorator - c++
Decorator
C++有些要注意的地方
像是呼叫super class的constructor要在brace前用: Base()
以及呼叫super class的method要用"::"運算子: Base::Method()
#include
using namespace std;
class IComp {
public:
virtual void doSomething() = 0;
};
class fromComp : public IComp {
public:
virtual void doSomething() {
cout << "non Deco" << endl;
}
};
class Deco : public IComp {
public:
Deco(IComp* i) : theOrin(i) {}
virtual void doSomething() {
theOrin->doSomething();
}
virtual ~Deco(){
delete(theOrin);
}
private:
IComp* theOrin;
};
class DecoA : public Deco {
public:
DecoA(IComp* i) : Deco(i) {}
virtual void doSomething() {
cout << "DecoA" << endl;
Deco::doSomething();
}
};
class DecoB : public Deco {
public:
DecoB(IComp* i) : Deco(i) {}
virtual void doSomething() {
cout << "DecoB" << endl;
Deco::doSomething();
}
};
int main()
{
fromComp* a = new fromComp();
a->doSomething();
DecoA* b = new DecoA(a);
b->doSomething();
DecoB* c = new DecoB(a);
c->doSomething();
return 0;
}
2008年7月20日 星期日
2008年7月16日 星期三
2008年7月14日 星期一
2008年7月13日 星期日
http server using python
import BaseHTTPServer
import SimpleHTTPServer
httpd = BaseHTTPServer.HTTPServer(('localhost', 80),
SimpleHTTPServer.SimpleHTTPRequestHandler)
httpd.serve_forever()
沒錯, 以上幾行就是一個http server
python提供了強大的模組庫
但我對於沒有資料類型的參數還是有點不太習慣...
後來想一想, 這根本是完全的泛型阿!
例子中HTTPServer的constructor第二個參數, 傳進去的東西是一個class
利用class委任的方式來處理...這好像是某個pattern應用..builder?
2008年7月12日 星期六
python
昨天又把python拿出來複習一下
我是看"byte of python"這個電子書, 網路上可以下載到
python是一個很有趣的動態語言
compiler interpreter
py --------> pyc(bytecode) -----------> binary code
pyc只是加快速度的手段, 執行的話是直接從.py去執行
以module架構整個程式
如果說JAVA是以class為基本元件, Python無疑是以module為元件
當然module中也可以定義函式或是類別
python是一個物件導向程式語言, 具有物件, 可以繼承, 多型
在宣告時所有的東西都是物件
更精確的說都是"object"這個class
藉由constructor或是一些built-in的(如 =123 表示數字或是 ='abc'表示字串)來達到多型
在宣告時不需要指定其類別
a = 10 #數字
b = 'bc' #字串
c = test(10) # c 是test這個class的一個物件
至於所有的reference都是object
大概是這樣 指向
object(做GC,或是一些資源管理) ------> 本體
在程式的撰寫上相當精簡
利用縮排來表示block, 挺聰明的作法..嘿
這樣就可以避免看code看到眼花, 有些人的寫作風格實在是不敢領教
判斷或是迴圈的描述如下
if a == b:
print 'yes'
elif:
print 'no'
while True:
prnit 'hello'
for obj in range(1, 10):
print obj
跟C還是有點像, 值得一提的是他的 for ... in
提供一個探訪循序資料結構的方法
python 提供了3種內建的資料結構, 相當實用
list -> alist = ['a', 'b', 'c'] #底層應該是linked list, 可以用del刪除節點
tuple -> atuple = ('a', 'b', 'c') #不可變更的list
可以用於字串處理 '%d%d%d' % ('1','2',3') -> '123'
dict -> adict = {'a':1, 'b':2, 'c':3} #hash table
另外還有對循序資料結構進行存取的方法
alist[:] -> 表示從頭到尾
alist[3:] ->從第三的元素到結束
這些存取方式都是複製一份reference出來
物件導向的部份
很單純, 很像用C寫物件導向..尤其是那個method還要提供個self這個參數XD
但語法上還算ok, 跟java一樣所有override的方法都屬於virtual
藉由特殊名稱的method來達到建構,解構,還有運算子複寫 ..ex. __init__, __del___ , __lt__
IO部份,packle這個module提供了dump跟load
那麼我想所有的object都實作了類似java的序列化介面吧.(不確定)
其他部分, 像是
lista = [2, 3, 4]
listb = [i*2 for i in lista if i > 3] #非常牛b的寫法, 實在是粉語意
print listb
還有
def powsum(power, *args):
t = 0
for i in args:
t += pow(i, power)
return t
print powsum(2, 2, 3, 4) #2, 3, 4將會被視為tuple args傳遞
還有
lambda 這玩意相當新奇, 基本上就是動態產生一個function pointer
def power(order):
return lambda s : pow(s, order)
binary = power(2)
print binary(11)
像是這樣
exec用來執行字串形式的code, 用這個似乎可以來做reflection ?
exex 'print "hello"' = print hello
eval用來評估一個字串形式的表達式
eval '3*3' = 6
assert就是斷言,
其實就是做檢查判斷是否成立, 不成立就丟出例外
是一種錯誤處理機制
2008年7月11日 星期五
2008年7月10日 星期四
Return
明天就要離開新竹了
今天去吃了趣味一下, 阿阿, 應該是最後一次了(希望)
意外得知博班學長資格考沒有過...
有點替他傷心, 但又不知道怎麼安慰
只能拍拍肩膀
總之我要離開新竹了
真高興能夠來這邊唸書, 這兩年我過得很快樂, 也學到不少東西
回想起剛來到新竹,人生地不熟
昊志帶我去找房子
多虧好爐的照顧, 常常陪我喝酒看電影以及游泳, 希望他一切順利
還有研究室學長姐的照顧, 一起去吃吃喝喝, 做做研究
然後還有對面研究室的同學, 常常去那邊吃飯,打電動...
IT組的學弟妹, 每次都是找你們吃東西, 真對不住XD
老師對我也很好, 讓我那麼早畢業~
感謝啦
交大的校園真的很美, 綠意盎然
希望以後還有機會回來
2008年7月8日 星期二
2008年7月7日 星期一
2008年7月6日 星期日
2008年7月5日 星期六
吃吃吃
前田屋燒烤跟趣味一下火鍋店
這兩家店應該是兩年來吃最多次的店了, 趣味一下應該不下10次
趣味一下的雞塊, 尤其是剛出爐的, 相當美味
前田屋, 五花豬肉則是很不錯, 肥嫩多汁
其他還有像是
生活館, DoReMe, 歐吉桑壽喜燒, 東京都日本料理, 新幹線燒烤
韓味煮義, 耀武羊威, 林記火鍋店...
西提, 城隍廟小吃, 鴨肉許, 黑貓包, 北門炸ㄍㄨㄟˋ, 披薩, KFC
清大夜市有竹塹園, 客家雞腿飯, 金芝園, 阿金滷味, 鹽酥雞, 3Q雞排, 金城廣東粥
肥仔龍鐵板燒, 銅鑼灣咖哩飯, 烤鴨
清大風雲樓的素食, 很美味
二餐是我最常吃的. 7-11, 難吃的自助餐, 多多咖啡, 二樓的麵店, 三樓的萬年自助餐
港式燒蠟, 蔥抓餅, 老陳雞排飯, 飲料店, 八方雲集, 難吃的麵店, 八寶冰
水果攤...
還有交大校園的鬆餅店, 巧克力鬆餅, 抹茶鬆餅...
學長帶我去台北士林夜市亂吃一堆東西, 雞排, 春捲, 鴨肉餅? ...
我在新竹這兩年也吃了不少東西嘛
2008年7月4日 星期五
2008年7月3日 星期四
C - 在程式運行中取得function name
在傳統的作法可能像是用
void hello()
{
printf("hello");
}
但在C99的規格中出現了 __func__ 及 __FUNCTION__ 去取得函式的名稱
改寫成
void hello()
{
printf(__FUNCTION__);
}
就可以取得函式名稱. 讓Compiler幫你處理
在 .rdata section出現了這段. 其實就是"hello"字串
00403000 <__FUNCTION__.0>:
403000: 68 65 6c 6c 6f
403005: 00 25 73 00 77 6f
the lars and real girl
早上來到研究室
想說看一部輕鬆的電影
所以我選擇了"充氣娃娃之戀" ( lars and real girl )
結果這部片一點都不輕鬆...
Lars是一個27歲的男孩, 是一個非常好的人
他因為某種原因沒辦法跟其它人交往(因為童年的因素)
因此他選擇充氣娃娃當他的女友, 起初大家都以為他瘋了
家人帶她去看心理醫師, 醫師說: 這可能是他在現實生活的絕境中所尋找的出路
而產生的妄想症, 不一定有害
於是家人開始接受他獨特的女友, 鄰居也相當配合...
最後Lars走出來了...
其實這部片子相當溫暖. Lars發現大家都愛著他, 因此才能為他跟他女友做了那麼多事情
2008年7月2日 星期三
2008年7月1日 星期二
我的左派老師
左派, 的意思有相當多種, 從wiki的解釋來看
公平的結果是左;公平的程序是右
反對自由市場造成的不均等為左;而接受之則為右
偏好一個「更大的」政府為左;偏好一個「更小的」政府為右
平等為左;自由為右
一個現世政府為左;一個宗教政府為右
集體主義為左;個人主義為右
革新為左;保守為右
法律支配文化為左;文化支配法律為右
支持跨國家團體為左;僅支持獨立國家和政府為右
國際主義和世界觀為左;國家利益為右
認為人性和社會為可變性的為左;認為它們為固定性的
認為人性本善為左;認為人性本惡為右
社會主義為左;資本主義為右
如果可以把一件事情分為兩面來看待, 世界將會容易許多
與過去看到的講述老師的電影相當不同
如:春風化雨, 這部電影中的老師是個毒蟲, 但他並沒有多壞
偶然在廁所中吸毒被撞見, 而意外發展出一段學生與老師的情節
