2009年12月21日 星期一

兩種看法說明一件事...

有人說, 時間是無價的,
也有人說, 時間是不要錢的.

兩種極端的看法, 只決定在態度.

2009年12月14日 星期一

賀 "藍.箱子" 咖啡館開幕

其實就是之前界紹的這間..
有人收到我寄的耳掛包就這間的 :P



2009年12月12日 星期六

[note] Zydas ZD1211 linux AP

這篇要說的是將 ZD1211 架 AP 的筆記.

zd1211 的 driver 在 kernel 裡已經有準備一份 zd1211rw 了, 當然的, 這個只能支援 manager 跟 ad-hoc 兩種模式, 要架 AP 的話首要條件就是網卡要支援 master mode. ok, 支援 master mode 的 driver 來這裡找.

小弟不才, 用的是 CentOS 5.3, 以上的 driver 要重新編譯過才行, 在裝了 gcc 跟所有相關套件 (11個的樣子, 懶的列... 反正 driver 裝完就可以全拔了, 看人高興) 以外, 不要忘了裝 kernel-devel 這個套件包進去. 接著, 請先建好一個工作目錄後再解壓縮上面給的 driver 包, 進去 ar2524drv 裡面 make, 它會自己編譯跟安裝.

driver 裝好了之後開始有一個問題,
zd1211 如果是一開始直接連上某個 AP 這樣沒事,
或是一開始連上某個 AP 後, 再斷線, 再切到 master mode 的話這樣也沒事,
但如果是開機就直接設 master mode 的話, 會直接跳出一大票錯誤訊息, 甚至在切 master mode 時就直接 kernel panic 給你看, 發生原因我不清楚, 我是懷疑跟 AES key 還哪些跟 SSL 有關的 public key 還啥鬼的東西沒建好, 導致 driver 直接當掉. 而且就算沒發生 kernel panic, 也會無法連線, 讓這張無線網卡形同設.

我網卡是一開機後跑一個 script 去設定的:

ifconfig ath0 10.10.10.1 netmask 255.255.255.0 up
iwconfig ath0 essid GasPumpStation //名字自己取....
iwconfig ath0 enc 5978978978 [1] //密碼也自己取....
iwpriv ath0 set_Region 1 //設定 region, 可以略過不設.
iwpriv ath0 set_auth 1 //0:open 1:share key
iwlist ath0 scan //掃瞄有哪些基地台, 這是假動作.
iwpriv ath0 connect 99 //隨便連一個不存在的基地台
iwconfig ath0 mode master //切 master mode....

[後記] 後來發現, 不是 code 的問題, 是機器的問題...
機器用的是 AMD GeodeLX, 而這顆 CPU 正是 Cyrix 6x86MX 這個前朝遺物, 而且 FPU 的 bug 很佛心, 完整的保留下來.. -_- 後來我把 makefile 裡參數加上 -mtune=geode 後, 就一切正常了.. 一開機就進 master mode 也不會當了.. -_-

2009年11月23日 星期一

隨筆

也是一樣的十一月天, 也是一樣下著這樣小雨的早晨, 我向上天祈求一個奇蹟, 也許, 是願望中想要的太多, 貪圖的太多, 這個願望並沒有實現, 但是, 我仍舊很滿足.

在這樣的風裡, 為了躲風吹讓我們緊緊的走在一起, 為了躲雨, 我們擠在那小小的傘裡, 為了躲避人群, 我們擠去那遙遠的店裡用午餐, 我並不會怨恨這樣的冷天吹裂了我的臉, 相反的, 這樣的氣溫, 讓我更能感覺到妳的溫度, 跟妳的存在.

對於那段時間, 我只是隨手寫寫, 我沒有遺憾遺漏了些什麼該做的沒有做, 妳帶給我的這段回憶, 我真的很感謝, 最少, 在人生漫長的冬天中, 有如短暫出現的陽光那麼的珍貴, 雖然短暫的回憶並不是我的願望, 雖然繼續看著這樣的綿綿細雨, 也不是我的希望...

所有的過往, 也許只是隨手可得的路邊野花, 也許是無法握得的花火, 得到固然高興, 失落我也不再心傷, 因為我只想珍惜, 跟把握現在所有的...

我只知道, 我不跨出去, 我永遠都只會站在那雨水中....

2009年11月22日 星期日

[note] msn9 on x64 XP

1.要獨立的 msn 9 安裝包, 不包含其它雜七雜八東西, 因為完整版安裝包會擋 x64 XP..
2.裝好後登入時會出現 80000154 的錯誤, 這是因為欠 msn live 的連線平臺這個元件:
Windows Live Communications Platform.msi
裝上去就可以了, 可以在 msn9 已安裝之後裝這東西.

雖然我現在主力機種是用 x64 win7....

2009年11月18日 星期三

開會

作者: HITACHI (壹週刊見習生) 看板: wisdom
標題: Re: [工作] 開會有沒有意見?
時間: Mon Nov 16 14:46:39 2009

開會再開會,不開怎麼會?本來有點會,開了變不會。
有事要開會,沒事也開會,好事大家追,出事大家推。
人生沒啥會,一直忙開會,大會接小會,神經快崩潰。
教學我不會,學術我慚愧,問我哪項會?只是會開會。
上午有早會,中午有餐會,下午有午會,下班開晚會。
每週開週會,每月開月會,隨時檢討會,年底是年會。
赴會不吃虧,小心選座位,最好坐邊陲,以免招口水。
雖然在開會,誰也不理誰,有人打瞌睡,有人無所謂。
主席是權威,自稱大掌櫃,東吹又西吹,全憑一張嘴。
內容沒準備,聽了活受罪,張飛變岳飛,大家還說對。
台上口沫飛,沒人去領會,手機不時摧,怎麼不散會?
牛皮拚命吹,發言不甘脆,時間在浪費,不知輪到誰?
有人話尖銳,有人語含悲,有人頻獻媚,當眾流了淚。
小聲似蚊蚋,令人真陶醉,大聲如巨雷,就當是狗吠。
打盹要直背,腦袋不能垂,上級若得罪,可是倒大楣。
話語真乏味,實在有夠累,水喝三兩杯,便當又進胃。
說來真慚愧,開會千萬回,面臨要榮退,還是不太會。
闡述這一堆,到底會不會?若是還不會,還要多開會。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.59.19.193

2009年11月15日 星期日

戰神雪風..

這不貼對不起自己良心 XD

二戰中神一樣的打醬油軍艦 跟誰誰倒霉。

二戰中真實的打醬油船
雪風號驅逐艦,日本陽炎級驅逐艦第8艘,甲型驅逐艦。1938.8開工,1940.1.20竣工。

1942年11月12日,護衛“比睿”號戰列艦,比睿號重傷自沉。

1943年3月1日,護航運輸陸軍船隊,雪風號驅逐艦毫發無傷,其余4艘驅逐艦、7艘運輸艦全部被擊沉。

1943年7月12日,班加拉島夜戰,因吃水淺避過1枚魚雷,而艦後方的旗艦“神通”號被這顆魚雷擊沉

1944 年6月19日,菲律賓海海戰(馬裡亞納海海戰),日軍“翔鶴”、“大鳳”、“飛鷹”三艘航母、兩艘油輪及600余架飛機便當,其他4艘航母“隼鷹”、“龍鳳”、“千代田”、“瑞鶴”以及戰列艦“伊勢”、重巡“摩耶”也均有不同程度的負傷。而雪風號則連彈片都沒被擦到一塊。

1944年10月29日,萊特灣海戰,雪風號護航“武藏”號超級戰列艦。武藏號等3艘戰列艦被擊沉,雪風號毫發無傷。

1944年10月28日,護衛“信濃”號超級航空母艦,信濃號被潛艇擊沉

1944年11月21日,隨第3艦隊途經台灣海峽,護航“金剛號”戰列艦,金剛號被潛艇擊沉。其他克死同級驅逐艦的事跡略。

1945年4月7日,日本海軍集結殘存力量,發動孤注一擲的自殺攻擊“菊水作戰”,雪風被編入艦隊,為艦隊的旗艦、大日本帝國海軍的驕傲——“大和”號戰列艦護航。後面的事大家都知道了……大和想不沉都沒有天理了……
此役,聯合艦隊幾乎全軍覆沒,自大和以下,巡洋艦“矢矧”,驅逐艦“濱風”、“磯風”“朝霞”、“霞”均被擊沉或重創後自沉。雪風毫發無損。
戰後,發現雪風的糧倉中居然有一顆未爆的美軍炸彈。這顆炸彈一旦爆炸便可能將雪風船底炸穿而直接沉沒——但它卻是顆啞彈。
菊水之後,日本海軍已名存實亡。剩余的幾艘戰艦躲在各處軍港中苟延殘喘。雪風先後在舞鶴、宮津灣及吳港轉場,經歷了合計15000架次敵機的數十次大規模空襲卻僅中彈一枚,而且又是啞彈!一次空襲中,雪風為了躲避炸彈不慎撞上自家鋪設的水雷,但雪風詛咒再次應驗——水雷引信失靈了!而旁邊的“初霜”號驅逐艦同樣撞上了水雷,當場沉沒。

到1945年8月15日,1941年時的聯合艦隊82艘驅逐艦只有雪風號還浮在水面。
太平洋戰爭期間雪風號航程20萬公裡,僅戰死10人,5任艦長善終,艦體只受過輕傷。
戰後,雪風號被送給GMD海軍,改名丹陽號。其加入國軍海軍那天,劉鄧大軍開始反攻,解放戰爭攻守逆轉

1966年,丹陽號退役,停留海軍官校小港碼頭做練習艦用。

1971年12月8日,丹陽號被解體。同日蔣委員長遭遇神秘車禍,一病不起。

1971年底,雪風的一部分被送回日本,結果72年日本金融危機爆發 。

2009年11月8日 星期日

[轉錄] 離婚協議書

據說原作在 facebook 上, 可是我找不到出處..
這是我引用的出處.

嫁給這個男人五年了,我不知道我是否還愛他。

記得剛新婚的時候,早晨時必定會在他懷抱中醒來,我總是紅著臉不敢說一聲早,怕嘴裡的口氣弄皺了他的眉;漱口杯與牙刷堅持要和他用同款不同色,擺在一起看才有夫妻的感覺;我會幫他打點上班的衣物,什麼襯衫配什麼領帶,經過我的審美才准他穿上身。

起了床到餐桌上,為了他的健康,我每天變換不同花樣的早餐,晴朗的天可能是培根蛋加上烤土司;有些下雨的話,或許來點小米粥搭醬瓜鹹蛋;要是陰天,不如就吃些外頭的燒餅油條和豆漿……招式用到我變不出新把戲,可是我樂此不疲。

除了當一個賢慧的妻子,我亦毫不掩飾對他的熱情,「我愛你」是每天恭送他出門上班一定說的話,然後附加一個親密的吻,即使他大多時候只是淺淺一笑,也足夠我高興個老半天。

但是,五年過去了。
我相信還不到癢的時候,可是,到底是什麼改變了我和他的互動?早晨起床,他的位置往往已空蕩,只能由皺褶的床單證實他確實存在過,即使他偶爾睡過了頭或者小賴一下床,也絕對是急急忙忙由床上跳起來,匆忙的梳洗著衣。

我已經快忘了被他擁抱迎接朝陽的感覺。
盥洗室裡的漱口杯,在幾年前被打破一只後,再也找不到一模一樣的,而另一只因為掉到馬桶裡,所以也換了新的;五年內,牙刷已換了不知幾支,甚至有時我們睡迷糊了,還會用上同一支,什麼口氣的問題都不需要掩飾了。是否一樣顏色,一樣款式,他說這些根本不重要。因此,洗手台上HelloKitty和小叮噹圖樣的兩只漱口杯左右對峙,小叮噹的杯裡插著一支綠色牙刷,是我的;HelloKitty則是空的,因為他前一陣子已改用電動牙刷,擺在架子上。分屬兩個不同故事的漱口杯,以及位於兩個不同位置的牙刷,彷彿在嘲諷我們的夫妻關係,漸行漸遠。

因為他出門的時間早,打點他的衣著已經不再是我的事,他自己會搞定。早餐?很久沒有一起吃了,我同樣不必費盡心思去想菜單、查食譜,反正沒人賞光。

更不用說「我愛你」這句話,還有熱情的早安吻,他無福消受,而且現在說起來也有些矯情仔細想想,五年來,他沒有說過一次「我愛你」,一次也沒有。

**********

我和他相聚的時間,嚴格上來說是從晚上七點開始,也就是他下班回來之後。如果他加班的話,那時間可能要延到十點、十一點。剛結婚的時候,我為了他去學烹飪,「要抓住男人的心,先抓住他的胃」,我深信這個鐵律。
所以,一些餐館名菜常出現在我們餐桌上,宮保雞丁、五更腸旺、蔥油雞、東坡肉……。見他吃得高興,我也開懷,雖然不全是我愛吃的,但是,他愛吃就好。

飯後,我們會依偎在沙發上看電視,我陪他看新聞,聽他評論國政、批判社情;他陪我看八點檔,聽我調侃劇情、大哭大笑。所以我知道行政院長、立法院長是什麼人,他也知道當紅的李世民是誰演的。
我沒有料到的是,五年的時間可以改變這一切。

烹飪班我可以說是半途而廢,不知道從哪天起,他開始干涉我做菜的方法,宮保雞丁他不喜歡太多辣椒,五更腸旺他開始抵制,蔥油雞叫我別淋油,連滷東坡肉要放多少醬油,他都有話說。我做的菜漸漸變得簡單,烹飪班也不想去了,有時候一盤炒青菜、貢丸湯和皮蛋豆腐就打發掉他,他反而沒什麼意見。
我想,我抓不住他的胃。

隨著他加班次數的增加,我們甚少在一起看電視了,除了現任總統是陳水扁,我對於國家大事可說一無所知;而他,問都不用問,台灣霹靂火的男主角是誰他絕對不可能知道。

夫妻之間開始言不及義,他對我說的話,大多都是「不用等我」、「早點睡」,我跟他說的話,也幾乎是「你回來了」、「菜在電鍋熱著」。我們沒有相同的話題,沒有相同的興趣,除了「夫妻」名義上的聯繫,我們的交流空泛的可憐,比普通朋友還不如。多可笑的夫妻關係,不是嗎?

**********

婚前,我們曾描繪著未來的願景,他說要生兩個孩子,先男後女,哥哥可以保護妹妹;我卻認為應該先享受一段兩人生活,生孩子的時情倒不急於一時,只是我不想壞了他的興致,並沒有說出口。

一陣子,他很積極的和我「創造宇宙繼起之生命」,他想要孩子,從他不戴保險套的行為可以看得出來,可是我還不想要,又怕他不高興,於是我背著他吃避孕藥。

猶記那時,他還興沖沖的帶我到醫院探視一名女性朋友,她剛生完一個四千兩百公克的巨嬰,神色萎糜的躺在病床上。我忘不了他隔著一塊玻璃看新生娃娃時,眼中綻放的神采,可是我更忘不了,那位女性朋友用著虛弱的語氣告訴我,她整整痛了一天一夜,才求醫生由自然產改為剖腹產。
……我更不敢生小孩了。

五年後的今天,他似乎已經放棄生小孩這回事,畢竟只有他一頭熱是沒用的。可是,待在他上班之後空洞的房子裡,我突然覺得生個孩子也不錯,至少屋子裡會熱鬧點,我的寂寞,也會少一點。

他早就在數年前就開始用保險套了,我不清楚是什麼讓他改變心意,不過這也鬆了我一口氣,我對避孕藥似乎過敏,不論換什麼牌子最後都落得一個水腫的下場。

我猜他六百多度的近視加閃光,應該看不出我水腫前和水腫後有什不一樣,重點是,他的保險套解決了我一個大麻煩,同時又帶來另一個新煩惱。我現在想要一個孩子了,他卻似乎不想,我不知怎麼跟他開口。更別提他頻繁的加班,晚上常累得倒頭就睡,如果我再開這個口,似乎變相增加他的壓力。兩個人之間,已經夠低潮了,不需要再增加一個會引起衝突的話題。

**********

在我們戀愛的時候,他很喜歡帶我到淡水,坐在河堤旁看落日,沿著碼頭走一遭,可以吃到不同口味的各式小吃。淡水的海產頗富盛名,他似乎是隻識途老馬,總知道哪家是最道地的。有時候,他帶著我坐渡輪到對岸的八里,那裡熱鬧的只有一條路,賣的全是孔雀蛤,兩個人可以吃掉一大盤,還覺得意猶未盡。

他也會和我騎雙人腳踏車沿著淡水老街騎到淡海,再由淡海騎回來,沿路的風景不算十分迷人,但有種質樸的味道,兼之海風鹹鹹的打在臉上,我很享受這種氣氛。當然,坐在腳踏車後座的我三天打漁兩天曬網,心情好的時候才踩兩下,他明知我偷懶,還是賣力的踩。我很懷念,真的,即使過了五年,那段回憶仍然歷歷在目。

婚後到淡水的次數,除了新婚那一陣子,幾乎屈指可數,近兩、三年更是一次都沒去過。每到假日,他不到中午不會起床,我見他這麼疲倦,當然也不會煩他帶我到處走走。

假日照理說,我和他應該可以有些交集,可是他累,我只能自己找事做,和在上班工作的朋友出門逛逛街,聊聊是非,也順便埋怨一下他。至於在家睡覺的他,午、晚飯,自己解決吧!

他不知道,在前幾個月,我耐不住無聊,自個兒坐捷運到了淡水。果然,太久沒有去了,那裡已經變成一個我完全不認識的地方。河堤旁的小吃攤不見了,全部集中在捷運站附近,過去我和他看夕陽的地方整修成一條長堤,僅供散步。路面變得乾淨整潔固然是好,但是收藏著我和他美好記憶的地方,消失了。沒有他的帶路,我找不到道地的海產店,找不到好吃的小吃,自己一個人也騎不了雙人單車,但我驚訝的發現,淡水多了一個漁人碼頭,可以坐公車過去。

漁人碼頭,他的腳步沒有踏上過,我先了他一步,這,是沒有他只有我的經驗。到了漁人碼頭邊,風景美復美矣,卻有種人工雕砌的做作。我以為花了幾百元搭乘藍色公路可以到對岸八里,就像渡輪一般,但那失了古風的遊艇卻繞了一大圈後又開回原點。除了顛簸的船身搖得我頭暈目眩,我記不起來什麼美麗的風景,連孔雀蛤也沒撈到一粒。淡水變了,我和他的回憶,也變了。

**********

某個早上,我特地比他早起,煮了頓睽違已久的豐盛早餐給他。然後,沒有第三者,沒有爭吵。我遞出了離婚協議書。
那是我第一次看到他那麼震驚的表情,如果那天是愚人節,我想我成功了。可是,我不會開那般惡劣的玩笑,他知道我是認真的。他沒有像一般男人一樣,暴跳如雷,開始數落女方的罪狀;也沒有哭哭啼啼,跪下哀求我留下,他只是極力冷靜自己的心緒,默不吭聲的接下協議書,開門,上班,一如往常。

他或許也察覺我們的夫妻關係到了一個瓶頸,也打算仔細考慮離婚的可行性,他近幾年的疏離,我沒有流下一滴眼淚,可是他這天的冷漠,幾乎傾盡我五年的淚水。

我有些後悔,這後悔逐漸蔓延,以心臟為一個起點,通傳至我的頭頂及腳趾。但後悔又如何?不快刀斬亂麻,也只是拖著一個平淡如水的日子,兩個人乾耗。我不知道自己對他的愛剩多少,更不清楚他對我的愛剩多少。嫁給他之前,我就知道他沈默寡言;嫁給他之後,自以為能改變他的我,並沒有改變他多少。

我的愛,還不足以改變他,他的愛,亦不足以為我改變,這大概是關鍵所在。柴米油鹽醬醋茶會摧毀愛情的甜蜜,我嚐到了,但這卻是用五年換來的教訓。現在,沒有孩子,沒有牽絆,我也不貪圖他什麼,該是離婚最好的時機吧?抖著手在離婚協議書上簽下名的我,到之後他出去幾個小時了,我仍然在發抖。這是一種未知的惶恐,我,等他給我一個結果。

*********

他冷淡了我五年後,又凌遲了我七天。從離婚協議書交到他手上之後,整整一個星期,他不與我說一句話,也睡了七天的沙發,每天仍然照常上下班,除了更加冷淡,我感覺不到他的喜怒哀樂。
那張協議書,就算扔到垃圾筒裡,還會有觸動垃圾袋的聲音,可是他,一點聲音也沒有,我懷疑他根本不當一回事,一段時間不理會我,只是在看我會不會自己忘了離婚這回事。

我受不了了,他到底要怎麼做?連離婚,也要離得這麼漠然嗎?然而,七天之後的他,結結實實嚇了我一跳。
一早,我聽到他在客廳起床的聲音,隔著門板聽不真切,我卻一直等不到他出去上班的關門聲。
一陣乒乒乓乓的金屬撞擊,取代了他一向安安靜靜的作息,我終於按捺不住起身察看,卻在開門後,聞到了一陣食物的香氣。

「起床了?吃點蛋捲。」他笑著,如新婚時我吻他之後那般淺笑。
我心裡狠狠跳了一下,原以為古井不波的情緒,因他久違的體貼而起了絲絲漣漪。
他還是那麼輕易的,可以撩動我的心。

我不清楚他怎麼可以混到九點、十點還不去上班,他接收到我的疑惑,也只是淡然一笑,身上簡單的服裝一點兒上班的氣息都沒有,可能他,也有工作疲乏吧?
也可能……他要宣判了,關於那張離婚協議書。

看他神色自若的樣子,我默默吃著早餐,幻想著等一下他會說的話。他會不會乾脆的就離婚了?還是,在我面前撕了協議書?不可否認的,我的心,傾向後者。

「我升上經理了。」他的第一句話,出乎我意料,下一句話,卻馬上進入重點,轟得我措手不及,「工作上的事告一段落,現在要好好處理家裡的事。」工作是排在家庭之前嗎?我苦笑。

「工作安頓好,我才能給妳安定的家。」他像在解釋我的疑惑,「所以,告訴我為什麼要離婚?」
他終於問了,臉色變得肅穆。他從來沒有用過這種質疑的口氣與我說話,望著他難得的厲色,我竟一句話也說不出來。

「妳覺得我冷淡妳了嗎?」轉眼,他的態度忽而又變得自嘲,弄得我丈二金剛,「我就知道妳一個人在家老是胡思亂想……」
我和他長談了一整天,數個小時的談話,有五分之四的時間我是在哭的,因為我覺得自己犯了一個滔天大錯。
可是,有些事,沒有那張離婚協議書,我永遠不會知道。
他說,五年來,他確實每天都是抱著我醒來,只是後來他工作忙,起床時間變早,而我仍沈睡著,不知道罷了,有時他還會親親我的臉,看著我貪懶的睡顏,他不忍心叫醒我。

而擺在盥洗室的漱口杯,他根本搞不清楚小叮噹是他的抑或HelloKitty才是他的,他以為粉紅色是女孩子的頻色,所以他一直都是用小叮噹當漱口杯。原來,我們一直在無形間,做著親密的唇齒交流,可憐了HelloKitty,擺在那兒沒人用,成了個裝飾品。

早餐,他吃的都是7-11,他承認很想念我做的早餐,可是他不好意思央我每天做給他,他知道我會擠盡腦汁變花樣,他捨不得看我太累。
「我娶妳,是希望妳享福,不是要妳來當女傭的。」從他這句話開始,我便止不住眼淚。

提到他的衣著,他更是笑我的傻,他看得出來我會為他添新衣服,按顏色花樣在櫃裡整整齊齊的分類擺放,而新婚時期我常幫他搭配,久了他也知道我的喜好,什麼領帶配什麼衣服,他是為我而穿。

至於熱情的早安吻,每天他早在我熟睡間給我了,我卻兀自鑽牛角尖,認為他不需要我的吻。

「你為什麼從不說你愛我呢?」我噙著淚水問他。
「我以為妳知道,否則我們為什麼結婚?」他理所當然回答。

是啊,我知道,我一直都知道,不然我不會嫁給他的,可是,既然知道,我又何必強求他說出來?

女人都是需要一些愛語滋潤的,我想這就是理由,看著我控訴的眼光,我想他也知道理由了。

**********

「妳做的大菜,很好吃,可是那些菜費工夫,也不全是妳喜歡的,所以我寧可妳做些簡單的菜,最好是妳也喜歡吃。」他一句一句的解釋,又讓我掉了一缸淚水,「妳不喜歡吃辣,因此我要妳少放辣椒;妳不吃內臟,那我也不吃;妳怕胖,所以料理時我希望油加少一點;醬油鹽份高,吃多腎臟負擔大,為了妳我健康著想,調味即可,不必加太多。」

只要是我煮的,他都喜歡,想想每次準備食物給他,他沒有一次不是吃光的,到底為什麼我會覺得抓不住他的胃?所以,我也抓住了他的心嗎?

另一件令我驚訝的事,他真的知道台灣霹靂火的男主角是誰,即使猜得不完全正確。

「是劉文聰嗎?還是那個李正賢?晚上在公司加班,同事都會開電視來看,所以我多少也知道一點。」
他撫去我臉上淚痕,笑問:「妳也在看嗎?」「嗯。」我又想哭了,我真是小覷了那個節目的收視率。「當上經理之後會比較少加班,那我們就一起看。」他說得輕鬆,我卻鼻頭一陣酸楚。

我在意的,其實不是看什麼節目,管他行政院長、立法院長是誰,沒有他在身邊,看什麼都索然無味。我發現,只要願意,兩個人什麼事都可以談,連我跟他解釋台灣霹靂火的劇情,一路聊到整容話題,他也聽得津津有味。

是我,是我封閉了自己,以為他不願意聽我說話、不願意對我說話。他心疼我一個人在家裡,聊公司裡的事怕悶壞我,又見我一副不想搭理他的樣子,他每天只能摸摸一鼻子的灰。

無論他跟我說什麼,我都是愛聽的,可是我現在才讓他知道,夫妻兩浪費了幾年的時間在這種誤解之間打轉,他活該,我也活該。「我很少看新聞,都不知道國家最近發生了什麼事。」我這句話出口得有些抱怨。
「好,我以後每天當妳的新聞台。」他溫柔的笑了。

**********

聊到生孩子的事,他先是一陣默然。
「我想生一個孩子。」這時候,我有勇氣說出口了。
「我以為妳不想,剛結婚那一陣子,妳不是一直吃避孕藥?」難得聽到他有些怪罪的語氣。
進一步了解之後,我才發現,他一直知道我在吃藥──或許是我哪次把藥隨便擱在化妝台上,被他看到了,他徹底了解我不想要孩子。

而他也知道,我吃完藥隔天會有水腫的現象,身子骨纖細的我,一雙腳腫得跟象腿一樣,也只有我這種人的鴕鳥心態才會認為他不會發現。後來我養成習慣將藥好好放在抽屜中,他以為我不再吃,怕身子水腫難受,所以他戴起保險套,說來說去,還是為了我。
「妳又水腫了嗎?一直哭個不停,是想把身體裡的水逼出來?」
他居然敢揶揄我?免不了得到我飽以老拳!
他還是想要孩子的,聽完我說想生孩子,他眼下興奮的光芒大大的告訴我這一點。只不過,那抹光芒在閃爍之後隨即斂去,他又正襟危坐的問了我一個問題。
「妳真的想生?」
「想啊,我一個人在家好無聊。」
「只是因為無聊?如果一個人在家無聊,妳想出去學東西、去工作、和朋友去逛街,我不會阻撓妳。」
「你不是也想嗎?」我生氣了,縱然淚眼婆娑沒什麼說服力。
他開始說起那個四千兩百公克的巨嬰,原來那名女性朋友的經驗不僅嚇到我,也嚇到他了。他不希望我生孩子還要受極大的痛苦,什麼剖腹產、自然產,他一點概念也沒有,只知道一定會很痛。他明白我怕痛,所以他捨棄了生孩子的想法。

「我不管,我要生。」明瞭了他的想法後,我更希望替他生一個孩子,身體裡流著我和他血液的孩子。
「那就生吧!」他悄悄的在我耳邊說了一句令我臉紅的話。
「你這麼有精力?不是上班很累嗎?」我狐疑他話裡的真實性。經他解釋,我才恍然大悟,就算工作累,他偶爾也有慾望,有時晚上摟著我,又看我睡得香甜,這種看得到吃不到的痛苦,他只能鬱鬱的悶在自己心裡。

面對他的心意,我,真的無言了。
在我像兩顆水蜜桃的雙眼略為消腫後,他催我換衣服,帶我出門。已經好久沒和他一起出遊了,在兩人間的冷淡破冰後,坐在他身邊竟也給我當初戀愛的感覺。我凝望著他專心駕駛的側臉,將他的動作姿態深深刻在心裡,因為我差點忘了,我和他之間還橫著一個問題。那張離婚協議書。

我要一輩子記住他的模樣,如果他最後仍是簽了名。
可是,他應該不會簽。
否則,他何必和我討論生孩子的事……

「到了。」他停車,我也隨之下車。
海風迎面吹來,是淡水。他也記得這個地方,這個我們記憶珍藏的地方。
「我一直想帶妳來,可是妳假日都和朋友出門,我只好蒙著棉被在家睡覺。」他如此說道。
這是個什麼烏龍?


我體諒他工作累,他體諒我和朋友出門,就這樣,我們錯過了一次又一次的相伴。
「你以後想幹什麼,可以直接說!」我惱火的盯著他。
「妳也是。」他正經八百的回視我,言下之意是要我別五十步笑百步。說來也好笑,我們一直認為自己是在為對方著想,以自己的方式去體貼對方,這種自以為是卻導致了無數個陰錯陽差,一直到我開始懷疑自己不愛他,他也不愛我了,才驚覺這份愛並不是消逝,而是溶入了生活之中,自然的讓人忘了它的存在。

愛情的表現,可以是黏膩、親熱、奉獻、祝福,甚至是退讓,每個人的方式不同,會導致的結果各異。我的方式是盲目的付出,他的方式是全然的關懷,乍看之下兩個人都沒錯,可是無論什麼方式,中間少了一種叫「溝通」的元素,就容易導致裂痕。

我們的婚姻,就是建築在這種缺乏溝通的空中樓閣之上,嫁給這個男人五年了,我以為我漸漸的不愛他,但只是一番簡單的剖白心意,我對他所有的愛再度復活,甚而轉濃。
女人會因男人長久的冷落而對愛情失望,也可以因男人一句話又對愛情充滿希望,我──不想和他離婚,一點兒也不想,當初硬著頭皮簽下名,或許只是賭氣,只是要他正眼看看我,可是……

「那、那張離婚協議書……我要收回來。」
「在公司裡。」他好整以暇,「公司的碎紙機裡。」
這個意思是……?
「妳想離婚,等我成為亡夫時再說吧!」我估量不出他說這句話是不是在開玩笑,不過他又騙到我的淚水。

他真的很愛我……即使他沒有說過。我想,如果我堅持離婚,他會放我走的,他捨不得見我難過,就像他見我掉淚又趕快摟住我一樣。倘若,是他想離婚呢?

恕我自私,我是堅決不會放的,除非等我變成亡妻,同樣因為他捨不得見我難過,我自信可以留住他。

「淡水整個都變了,我都快不認識了。」哄完了我,他連忙帶開話題。
「我來過,我知道有什麼景點。」
「那這次就要靠妳帶路囉。」
是啊,我們可以開創新的回憶,只要有我也有他,什麼時間地點都不成問題。
結婚五年,我又發現了一次愛情。

2009年10月29日 星期四

...............

人總是想活的像個常理一樣的自然,

但偏偏這個世界不會按照常理在走.

2009年10月27日 星期二

我決定...

如果我搬出去住的話, 我家裡不會有電視機...

有電視機也不會拿來撥放新聞, 新聞臺我會通通砍掉...

2009年10月24日 星期六

做自己...

生活中, 為了跟他人相處, 總是會因為某些妥協, 而改變自己的想法做法,
而這樣的環境長久下來, 就像某長輩說的,
你回想不起來原本的你, 應該是長什麼樣子.

於是有些人會以很自我中心來對抗這種現像, 走的極端一點的甚至認為
"大家都該 follow 我的想法, 跟我想法不一樣的就是錯的, 愚蠢的",
這句話的態度, 我只同意前段, 我不同意後段.

的確, 每個人都有強調自己個人特色的自由, 只是要小心這個 "個人特色"
會不會造成他人的麻煩甚至反感, 引起大家共鳴的個人特色, 那個人會
變成偶像, 引起大家反感的個人特色, 那個人會變公敵...

做自己, 但不要做別人討厭的自己, 這是想努力達到的目標.

2009年10月20日 星期二

隨便寫寫...

執著的東西少了, 煩惱也跟著少了,
放下的東西越多, 越覺的自己手上其實抓著太多,
於是,
選擇哪些是我要做的, 哪些是可以放著不管的,
認清目標是什麼, 對於我越來越重要,
因為這不管是工作還是放鬆, 都將更有效率,
而我也越來越勇於放掉手上緊抓著的事或物.

讓我疑惑的, 也正是這些取捨之間,
哪些是我要的, 哪些是可有可無的,
雖然我知道, 最長遠的目標, 就是放開到什麼都不剩.



2009年9月6日 星期日

藍箱子

最近常跑這家, 這家在捷運昆陽站付近, 疫管局 (慢性病防治所) 大門正對面.


這間是一個前珠寶設計師退休下來開興趣的店, 所以會有點不像店.. 
這間也有在自己烘培豆子, 以中南美洲的豆子居多,
總之我很喜歡 :)

2009年8月13日 星期四

一大早就收到這東西...

路人乙是俺以前不正常人類研究所裡的同事...

謎之路人甲 說:
阿你現在更麻?
還是在抓東西喔?

謎之路人乙 說:
對啊
抓著LP
啊,打錯字

謎之路人甲 說:
阿哩勒

謎之路人乙 說:
我在辦公當然手上要抓LP啊,要擠一些白色物體出來用
要用之前還要握緊上上下下一下
才會有白色的東西

謎之路人甲 說:
我覺得我們可以不用在深究下去....
你不用向我解釋那麼詳細..
真的...不用...

謎之路人乙 說:
Liquid Paper:修正液
簡寫是LP

謎之路人甲 說:
好啦! 乖

謎之路人乙 說:
寫錯字當然要抓LP來擠白色物體

2009年8月10日 星期一

新玩具 小鐵CKM50

圖引用自 pchome

之前是為了尋找取代已經爛掉的 CK5, 在逛賣場時才注意到有這款出現, 同時還有 CKS50, CKS70 這兩款, 這幾個系列, 感覺像是小鐵為了洗雪他們家耳塞式耳機 "低音一向不足" 的前恥而來, 尤其是 CKS 系列的產品, 低音已經強到很超過了, 反倒是 CKM 系列的比較平衡一點, 聽 pop 很好用.

因為這對是打算給手機聽 MP3 用的, 隨身聽應用上, 反倒覺的用 CK5 比 CK9 要適合, CKM50 的高音解析能力也許沒有 CK9 透徹, 不過對我所需要的應用而言已經十分稱職了.

2009年8月9日 星期日

ATi Stream SDK 2.0 beta

雖然 AMD 聲稱已經完成整合了, 不過看來裡面根本不是那麼一回事.

"For this release, ATI Stream applications written using OpenCL do not make use of the GPU for
acceleration." 這版更新不包含 CAL 與 brook+, CAL 直接不見, brook+ 現在到 1.4.1 版, 幾近被完全放棄狀態中.

我是不太能理解 AMD 去做 CPU 的 OpenCL 幹啥.....

2009年7月27日 星期一

無聊想到的..

勿以惡小而不為, 勿以善小而為之...

原本以為只是隨便寫寫的玩笑話, 卻越想越覺的很符合所謂第一大國的形像...

真正的恐佈份子,
不是自己身上綁炸彈順路連自己一起炸死那種人,
也不會是整天拿瓦斯桶炸別人全家那種人,
也不會是整天拿著槍對著你頭的人,
也不會是賣槍給以上人物使用的商人,
而是出錢下單, 用以上的人用人命換錢回來的幕後者..

真正的惡魔, 都是那種裝成大好人大善人那種人...

2009年7月25日 星期六

新玩具...

Microsoft Wireless Desktop 3000...

買的誘因:
1.無線
2.手感不錯, 感壓介於青軸跟茶軸間, 但不若 cherry 系那麼深的鍵深.
3.老鼠是五鍵的, 而且左手適用. (左右各一的那種)
4.整體 size 比較小一點. 過去的都很大..

試用一下的感想:
1.一般鍵的手感不錯, 感壓能力介於青軸與茶軸間. 但這鍵盤是靜音取向而非機械手感取向就是.
2.F1-F12 不是直接按, 要用 F-lock 切換, 但 F-lock 會有兩種狀況:
    沒裝專用軟體時, F1 ~ F12 要配合 F-lock 一起按才有功能, 否則預設是沒有功能.
    有裝專用軟體時, F-lock 是切換 hotkey 與 F1~F12 用的.
3.ESC 鍵極端的小, 對我這種用傳統注音輸入法的人覺的很難用.
    F1 ~ F12 也是故意做的很小很淺, 非常難按.
4.老鼠是圓滾滾的, 上下頁鍵很小, 不很好按.
5.老鼠 scroll 是無段的. 這也就算了, 它專用的軟體會把其它老鼠的 scroll 動作也改的很慢.
6.老鼠定位能力跟反應速度個人覺的沒羅技 LX8 好.

簡單來說就是這樣.

2009年7月22日 星期三

一點點心得...

回想過去兩三年來很多工作上, 合作上不愉快的人,
自己的確有很多特性跟自己討厭的人相似, 甚至是相同的.

每每要動怒時我都會想到這個問題, 因為從檢討自己的角度思考,
往往就可以點到對方的最痛處在哪, 藉時對自己想怎麼改進,
對別人怎麼多打一個洞, 下刀都將更準確.

我無法證明它存在, 但我確很莫明的相信這理論的存在,
而且時間過越久, 碰的人越多後, 我越相信...

2009年7月1日 星期三

遙遠的記憶...

很多時候, 這首歌總是可以重新帶給我鬥志, 讓我回想起過去那段曾為了夢想而努力的時光.

2009年6月30日 星期二

不很理想的實驗結果...


跟上次不一樣的是, 這次 window size 是用 16x16, 上次是 24x24..
可能樣本不太夠多...

另一個消息是這個...
AMD to Support NVIDIA’s CUDA Technology?


Bill Dally stated: “In the future you’ll be able to run C with CUDA extensions on a broader range of platforms, so I don’t think that will be a fundamental limitation.” Though Dally didn’t name AMD outright, he said: “I am familiar with some projects that are underway to enable CUDA on other platforms.”

AMD 看來自己也很清楚幹 CAL 跟 brook+ 這種多頭馬車的下場是什麼了.
不過這畢竟是八卦, AMD 會不會真的支援 CUDA 看看就好...

2009年6月19日 星期五

嗯嗯...




"【鉅亨網楊祺 上海】 6月5日消息,台積電將對其40nm工藝進行一次重制 (respin),從而解決當前的良品率過低問題,並預計在 本季度末出貨基于新版40nm工藝的GPU核心。如果一切順 利,Radeon HD 4770的缺貨問題將從下個月起得到緩解 ,不過如果最糟糕的形勢估計,就要等到九月份了。"

如果列一張 TSMC 受害產品名單, 我想這張表會十分可觀...

2009年6月14日 星期日

VM workstation 6.5.1 改個設定..

嗯嗯...

不過因為有正職工作了, 芭樂攤的更新會慢了非常多...

2009年6月4日 星期四

VMware Workstation (for linux) 開機自動執行.

這是讓 VMworkstation 在開機時, 連指定 guest OS 都一起開啟. 假設 guest OS 設定檔叫 vmworks.vmx, 在開機會跑的 script (如 /etc/rc.local 裡) 加上:

su -l root -c "vmrun -T ws start vmworks.vmx nogui"

這裡有兩個重點, 第一個, 開機階段時是沒有 gui 可以用的, 所以後面要加 nogui 才可以順利啟動. 第二個, 要加上綠色字這個指令的原因是因為要讓 VMworkstation 找到 license 檔案... 這裡假設都是擺在 /root/ 底下, 因為開機階段時雖然執行權限是 root, 但仍找不到 root 所屬路徑在哪, 所以也找不到 license 檔案在哪, 所以會有 "unknoe error" 的訊息出現....

最近為了弄 VM 的東西搞掉一堆時間...

2009年5月28日 星期四

intel parallel studio 開放下載

當然啦, 是先行試用版...

能找到的新聞只有這個...
"2009年5月26日,北京——英特爾公司今天正式推出英特爾 Parallel Studio 並行程序開發套件,旨在為基於 Microsoft Visual Studio 的 C 與 C++ 程序開發各階段提供簡單、高效的 Parallel Studio 工具,顯著提高應用程序在英特爾多核處理器上的性能。英特爾還同時推出了該開發套件的新插件英特爾 Parallel Advisor Lite,用戶可登錄http://WhatIf.Intel.com網站下載,它可以幫助架構師確定哪些源代碼最適合並行化並提供詳盡的並行化實施建議。"

我比較有興趣的是它有特別強調在 MultiThread 下的 debug 能力..
不過最近沒時間碰, 我連 MPI 都擺著好久沒開刀去試了 =_=



2009年5月22日 星期五

VisualAssistX 後記

這篇是在 WinXP x86 下的筆記, 在 x64 上是不能用的, 在 Windows7 x64 RC7100 上 Visual Studio 要改的 register key 在這個位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0\Languages\File Extensions
其實就是多了紅字那個路徑.

還有, 因為 windows7 下 "c:\document and settings\all users" 這目錄一般是不能存取的 (如果有可以解開不能存取鎖定的方法煩請 report 給我, 我找很久了..), 所以安裝 CUDA SDK 時也請注意不要安裝到它的預設目錄 (預設就是在底下安裝), 把它另外指到 c:\CUDA (也就是 CUDA toolkit 預設安裝目錄) 再開個 SDK 的 folder 給它裝, 然後再把 VistalAssistX 的 reference folder 目錄設定指過去, 就可以了.

雖然我是 debug 了一段時間才把 VAX 裝上去.....
ps. x64  XP 跟 vista 是不是一樣我不確定, 我沒有實驗過.

PCIe測試機後續

因為brook+的部份對記憶體的存取一直有問題, 到剛剛才找出問題點, 那就是 domain 函式不正常.

這個問題在 catalyst 9.5 以前都沒有過, 9.5 開始有這個問題, 而且搞的記憶體讀寫能力更大幅度下降. 
以下是已編譯好的 (PCIeTest090522exe.rar)
與講好要給拖到現在的 source (PCIeTest090522src.rar)

另一個心得就是, 為什麼 ATi stream SDK 裡有兩樣東西, 一個叫 CAL, 一個叫 brook+, 因為這兩個其實是作用一樣的產物, 只是 CAL 沒有編寫 IL  kernel 的能力, brook+ 才有, 而 CAL 可用的功能也較 brook+ 要多, 而且目前的 SDK 裡沒看到有整合的蹟像. 也許在 OpenCL 上做個整合吧? 天知道..

而且不管 brook+ 還 CAL 的 multi-thread 能力比 CUDA 顯的差多了, 有點懶的再玩下去了.

2009年5月20日 星期三

[鬼扯] 當指導教授的實力..

這是真實對話.. 

我研究所論文是做人臉辨識, 有一天我在上我指導教授(以下稱老闆)的樣形識別課時, 他課中問我:

老闆: "瓦斯, 狗怎麼識別?"
瓦斯: "老闆問兩隻腳還四隻腳的?

老闆反應很快, 真的很快, 完全不假思索就回出這一句:

老闆: "兩隻腳的我已經叫你做了, 我問你四隻腳的"

2009年5月18日 星期一

測試機後記..

有問題.. 修改中..

[有請幫忙測試] PCIe 頻寬測試機

這個是 CUDA + Brook+ 的混合開發成果之一, 主要是拿來測顯卡用的 (限 nVidia 可以支援 CUDA 的產品, GF8100 以上. ATi 可以支援 CAL 的產品, HD2350 以上), 如同時有 nv 跟 ati 的顯卡的話就會一起測試. 但不確定能否支援 SLI 或 CF, 因為我沒硬體可以測試.

檔案: http://www9.zippyshare.com/v/82614738/file.html
這是內含 nvcuda.dll 的版本

測出來的數據大約是極限頻寬的 75% 上下, 各位請把測試畫面中的文字剪下貼上回應給我這樣就好, 感謝大家 <(_ _)>


跟以前一樣, 想要研究 source code 的 email 給我或留言給我 email 信箱.

SiFT..

Scale-invariant feature transform..

老實講, 我已經忘記這種特徵抽取法是幹麻用的了 ~_~..

2009年5月14日 星期四

屈原最偉大的發明其實是...

消波塊..

歐盟告 intel...

某人說, 其實背後的故事沒那麼簡單.

http://it.sohu.com/20090514/n263955035.shtml
---------------------------------------------------
【搜狐IT消息】北京時間5月14日消息,據《財富》網站於週三發佈分析文章指出,歐盟委員會於週三對英特爾處以創紀錄的10.6億歐元(約合14.5億美元)罰款,並稱英特爾在與AMD的競爭中濫用市場優勢地位。
歐盟此次逼壓英特爾表明其又與美國大公司展開較量了。

此次英特爾案正值歐盟與微軟長達九年的「戰爭」之後不久,而在去年結束的歐盟-微軟紛爭中,微軟終以被處以兩項罰款而結束了這一曠日持久的「戰役」——2007年被罰6.8億美元、2008年又被處以12億美元的罰款,兩次理由都是微軟濫用市場壟斷地位。
另外,目前還在遭受歐盟壓力的美國大公司還包括萬事達和通用電氣等,前者在2007年被歐盟勒令取消信用卡費用;後者則被歐盟阻止與霍尼韋爾公司進行合併。
---------------------------------------------------

有人這一篇, 節錄部份.


---------------------------------------------------
瓦尼的新政策將使美國的反托辣斯政策,更接近歐盟執委會反托辣斯監管機構的看法。愛荷華大學法學院教授霍文坎說:「這對Google、微軟等科技業巨擘是壞消息,將使原告陣營歡欣鼓舞,令被告焦慮不安,但不會對律師事務所造成衝擊,因為不管站哪邊都有錢賺。」

我知道台灣大家都很愛歐巴馬
即使我在選前到選後都一再講
不要真的以為歐巴馬當選會幫大家帶來公平正義
更有可能的是
他幫美國帶來公平正義
但是美國的公平正義對其他國家來說
可能更接近是一種災難
---------------------------------------------------

也許有人看到有公司被告要賠大錢, 或者很爽或者很幹, 但我覺的這些事情背後要擔心的, 就是幾時會告到自己身上來, 歐盟跟老美這些國家為了錢而眼紅時都是很殘忍的.

2009年5月11日 星期一

自由軟體的崇拜者總是充滿著仇恨..

找 ESX server 資料時看到的一句話..

"Richard Stallman: 把含有Windows的電腦送給兒童, 根本不是在幫他們, 而是把他們曝露在殖民強權之下, 這太糟了, 比什麼都不作還要糟糕."

這些人一輩子都不會知道, 用攻擊別人的口吻並不會讓自己得到尊重, 相反的會得到更多的鄙視.

2009年5月10日 星期日

實現 brook+ 與 cuda 於 VS2008 下的混合開發.

會寫這篇文是因為原本想把 brook+ 跟 cuda 的專案整在一個 project 裡面, 但這樣會碰上資料格式重覆定義的錯誤, 才嘗試將這兩種語言分別以兩個不同的 project 去做成個別的 DLL, 這樣一來也比較方便管理各別的 code.

首先遇上的就是做成 DLL 時 brook+ 與 cuda 各有各要注意的事項, 而在講建立 DLL 之前我要先提怎麼建一個 custom build rules, 以下以 cuda 的為例.

[build rules]
建立 cuda 的 build rules 其實很簡單, 只是設定而已. 先將 C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\NVIDIA CUDA SDK\common\Cuda.rules 這個檔案 copy 到 VS 安裝目錄的 VC\VCProjectDefaults 下 (這兩個目錄都可以用 "搜尋.rules檔案" 找的到). 
檔案丟進去之後, 在 VS 底下隨便選一個 project 名按右鍵選 custom build rules 如圖

尋找一個已經存在的 rules

指到剛剛 cuda.rules copy 到的目錄

選到 cuda.rules

後, 會跟第一個畫面一樣上面會多出現一個 cuda build rules, 而在 cuda 的 project 上請把那設定畫面中 "CUDA build rules" 勾起來, 這樣你這個 project 以後加 .cu 的檔案就會自動套用這個 build rule, 以後加檔案會方便很多!
引用成功後可以在 configuration properties 裡看到有 CUDA build rules, 但 include 的設定是空的! 請在 debug 與 release 兩個 configuration 裡都加進去這行 
"$(CUDA_INC_PATH)"; "$(NVSDKCUDA_ROOT)/common/inc"
Linker 裡 Input->Additional Dependencies 裡加上 cudart.lib cutil32.lib 這兩個.

而 brook+ 沒有 .rules 可用, AMD 官方以 "你可以自己建" 一句話輕鬆帶過. 要建一個簡單可用的 brook+ rules 不難, 但我不知道怎麼自動區分 debug 還 release build, 我目前用的還是舊的筆記 .

[cuda project]
cuda 的檔案因為都是 reference 自 .cu 運作, 但如果給一般 .cpp 裡 include 這些 .cu 檔時, VC9 會出現一堆錯誤 (不知道 threadIdx 是啥, 看不懂 <<<>>> 等等..), 而解法其實也很簡單, 就是再建一個 header 檔裡面說明你要引用的 .cu 檔案裡有哪些 function, 然後再給其它 .cpp 檔案引用這個 header 檔, 就可以正常編譯.
cuda 的 DLL 可以直接用 MFC DLL 的框架, 也可以全部自訂.

[brook project]
brook+ 要建 DLL 時最好不要用 VS 裡的 project wizard 去建, 因為那個會用到 precompile header (stdafx.cpp, stdafx.h) 的關係, 底下每一個 .cpp 檔都要去 include stdafx.h 才可以正常編譯, 但 .br 編譯時是以 "產生" 的方式輸出 .cpp 檔跟兩個 header 檔, 即使在 .br 檔裡加入 #include "stdafx.h" 這行, 最後在輸出的 .cpp 檔裡 stdafx.h 這行也會被排到前三個一定會 include 的 header 檔下面, 然後編譯會有一堆問題.

我的解法是, 開一個空的 project, 裡面啥都沒有, 然後把 brook+ 所有的檔案移過來這個 project 裡, 也要設定好相關的編譯環境 , configuration type 改為 DLL 即可. 

而 project 的 properties 中, linker -> input -> Additional Dependencies 加上該有的 .lib, release mode 是 brook.lib aticalrt.lib, debug mode 是 brook_d.lib aticalrt.lib

沒意外的話都可以編譯的起來了.

2009年5月8日 星期五

2009年5月5日 星期二

S.T.A.L.K.E.R. grenade mod

這個改法對 STALKER 跟 STALKER clear-sky 兩版都可以用.

榴彈其實分兩大類, 榴彈砲 (vog-25/vog-25p/M209) 跟手擲榴彈 (RDG5), 不過兩種的改法都一樣, 只是設定擺在不同檔案裡而已. 首先來講 rdg5 這個手榴彈, 首要的就是在網路上找到武器的 mod 檔案 (.ltx), 裡面要有 wpn_rdg5.ltx, 而且是要擺在
C:\Program Files\Deep Silver\S.T.A.L.K.E.R. - Clear Sky\gamedata\configs\weapons
這個目錄下.
用 untraedit 編輯這個檔案, 修改內容如下:

改成燃燒型態有兩個好處 1.範圍廣 2.連續傷害時間長(這是重點)
如此一來, 只要是手榴彈爆炸, 就等同瓦斯桶爆炸一樣..
如果再把 weapon.ltx 裡 fueican 的參數拿來用的話就等於在丟瓦斯桶了.
這是手榴彈丟出去後的樣子:


榴彈砲則要改 weapon.ltx, 裡面找到這個欄位後, 改法跟 rdg5 一樣:
"[wpn_fake_missile]:identity_immunities,default_weapon_params"
"[wpn_fake_missile1]:identity_immunities,default_weapon_params"
"[wpn_fake_missile2]:identity_immunities,default_weapon_params"
上到下分別是 vog25, vog25p, M209. 以下是 vog25 的效果:



這裡面最可惜的是沒有核彈爆炸的圖可用.....
還有就是 blast 參數建議不要超過 5, 離太近很容易連自己一起炸死.. XD

順路補上一張遠程攻擊的圖片... XD

讓 Visual Assist X 支援 .cu 與 .br

Visual Assist X 是一個 Visual Studio 的輔助工具, 可以方便查閱想引用的 function 名稱, 或變數等等, 這篇文參考自這裡, 不過在這裡我用的是 VS2008 與 Visual Assist X 10.4, 設定較原始文章有點出入.

首先先在 register editor 裡 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\Languages\File Extensions
找到這一行, 把後面那一大串字串 copy 下來:



然後在這個左列新增上字串 ".cu", 裡面的預設值就貼上剛剛 copy 的東西.


這個同上, 新增一字串叫 ".br", 裡面貼一樣的東西.


再來是修改 Visual Assist X 的內定設定, 10.4 用的路徑跟過去有點不一樣, 我這的是
HKEY_CURRENT_USER\Software\Whole Tomato\Visual Assist X\VANet9
將裡面的 ExtSource 後面增加 ".cu;.br;"

再來才是要在 VisualAssist X 的 options 裡額外設定 header 檔擺放路徑, 建議兩個, 一個是 "C:\CUDA\include" 這是 CUDA toolkit 的預設安裝目錄, 一個是 "C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\NVIDIA CUDA SDK\common\inc" 這個是 SDK 預設安裝目錄, 這樣就可以抓的到 cuda 用的一些設設定如 __global__, 可以查的到 cuda 用的 library 名稱跟引入參數型態等等.


附帶一提, cuda sdk 2.1 似乎也會受 path environment 裡有 "()" 符號存在而被影響的問題 (上次於 icc11 文中提到的問題), 影響的結果竟然是 vs9 用的 solution 檔案不能 compile.

2009年5月4日 星期一

brook+ 的測試程式

過了那麼久的時間, 也終於擠出自己的一支程式了, 雖然後面打算要做的還很長.. ~_~

這隻程式簡單的講, 就是計算積分圖 (引自 paul voila "Rapid Object Detection using a Boosted Cascade of Simple Features" (CVPR 2001)) 的計算效率, 如下圖的左圖的運作模式.
這個東西要平行化, 最麻煩的一點就是它要參照前一個像素值的累加值, 不像矩陣轉換可以平行進來平行出去這麼簡單. 於是我採用分開每個列 (column) 各別去積(圖A), 寬有多長, 就拆成多少個 thread 下去跑, 算好的結果, 以轉90度的方式擺放在暫存記憶體內的對應行 (row) 內(圖B). 然後這個暫時性記憶體(圖C)一樣做垂直積分, 積好的值一樣以轉 90 度擺放, 但是是擺放到原本的記憶體內. 這樣就可以完成積分的動作.
這樣做最主要的目地是因為要寫在 brook+ 裡, 因為 brook+ 內無法讀取 output array 內的值, 只能寫, 所以要靠兩段記憶體交互的填充運作下才能達成.. 
如果有人有更高明的手法的話歡迎賜教, 老實講小弟我覺的這方法實在很不理想 ~_~

以下是據發表在 ptt VideoCard 版上的文章修改而來.

這個是小弟我用 brook+ 1.4beta 寫的, 但因為是用 VS2008 編譯的, 所以執行這東西需要一個 VS2008 散佈套件:

http://tinyurl.com/6yv6k2

有一個問題講在前面, 因為這是用 ATi GPU 跑的程式, 所以當執行時間過久, 會造成畫面無法回應, 而 windows 在某一定時間內沒有得到顯示畫面回應的話, 就會 reset GPU. 也就是有人會碰到的 VPU-recovery. (windows XP 是五秒, vista 好像是三秒??)

目前已知如果一邊跑工作管理員的話, 就 100% 會發生 VPU recovery, 下版我會好好修正這問題.

所以建議在跑這隻測試程式時, 將其它使用 CAL 的軟體停止運作, 像 folding@home? (名字忘了..).

第二, 運作途中若遇到畫面停止回應, GPU 被 reset, 程式就可以 ctrl+c 中止掉了, 因為 GPU 內的程式也沒了.

測試內容是計算積分圖, 分別以 x86 float (兩種方法), SSE2, 與 ATi GPU 計算 (兩種方法) 等不同的平臺上比較計算的時間還有結果, 但 16mS 以內算 OS 本身的誤差. 檔案在這:

http://www6.zippyshare.com/v/79337531/file.html

有張廣告圖的右邊, 有個 Download Link 會倒數, 倒數完後才會浮現 "Download" 字樣. (字真的很小..)
sorry 弄半天 SourceFroge 不知道怎麼傳東西上去 T_T

以下說明使用方法 (以下有很多髒話.. 這是小弟我的惡趣味..).

1.檔案解壓縮開來後, 解到一個地方假設叫 d:\temp (要默記)
2.window key + r, 會跳出 "執行", 打 cmd + [enter]
3.d:
4.cd \temp             (這就是剛剛默記的目錄名)
5.bitchmark.exe 512 512
    內定大小是 4096*4096, 在這裡設 512*512 測小一點, 免的 VPU 又掛點.. 以這個例子在我的機器上執行結果會是這樣:
    found num of 1 CAL hardware
    build the fuck matrix 513 by 513
    Normal Float32 bitch 1 fucking time 0.000000 mS
    Normal Float32 bitch 2 fucking time 0.000000 mS
    SSE2 Float32 bitch fucking time 16.000000 mS
    ATi CAL GPU (float1) bitch fucking time 640.000000 mS
    ATi CAL GPU (float4) bitch 1 fucking time 375.000000 mS
    ATi CAL GPU (float4) bitch 2 fucking time 250.000000 mS
    it's saw fucking good..!
    Press key...

    GPU 方法三在 1536*1536 以上測試會自動關掉, 後述.

6.PCIeSpeedTest.exe
  這是測 PCI-express bus 頻寬的, 但很容易造成顯示卡沒有回應! 這程式也是 ATi 顯示卡限定. 在這隻程式裡, 小弟的 GA-MA770DS3 這片板子 GPU->CPU 的頻寬不到 1Gbyte/s (別人測是 5.3Gbyte/s.. orz). 
執行結果:

Devices found: 1

===> Testing device 0 <===
Device type: RV770
Max resource 2D width/height: 8192/8192
Total GPU memory size: 1024 MB
Total CPU cached space size: 64 MB
Total CPU uncached space size: 128 MB
GPU engine clock: 400 MHz
GPU memory clock: 800 MHz
Number of timing loops: 100
.....[後略]

註1. GPU 方法三因為是實驗中 async multi-thread 方法, 但會在更大矩陣運算時出錯.

程式如果有人想看 source code 的, 請留 email 到我信箱裡索取. :P

2009年4月30日 星期四

一點關於 brook+ 的筆記...

這張圖是個人對 brook+ 的感想... -_-

1.記憶體要用 new ::brook::Stream 去產生 CAL 對應裝置 (不一定是 CPU or GPU) 裡的記憶體空間, 如宣告一個 vector, 一維陣列, 內容物是 float, 要 x 個大小:

unsigned int dim[1] = { x };
::brook::Stream<float> = new ::brook::Stream<float>(1, dim);

如果是二維, 假設是 x * y 大小的話:

unsigned int dim[2] = { x, y };
::brook::Stream<float> = new ::brook::Stream<float>(2, dim);

new 後面接的 1 跟 2 就是 dim 指標的最大深度, 也就是需要幾維, 後面會講到的 domain 也會用到這個概念.

##如果陣列內元素是 float4 或 int4 的話, 它一個元素就是 128bit 寬大小而非 32bit. 雖然這算常識但還是要提一下.
##我不確定最大可以到幾維, 好像是 4.

2."<>" 標記, 指的是一個值, 但是這個值是一個 vector 裡的一個元素, 而是哪一個則看它所屬的thread 是第幾個.

3.kernel function 內可以使用 instance() 取得現在是上述 vector 裡的第幾個元素, 如果是一維的話可以使用
int x=instance().x; 
取得座標點, 二維可以使用:
int2 p = instance().xy;
int x = p.x; //取出 x 座標的範例. 
int y = p.y; //取出 y 座標的範例.

因為 int 裡最大的就是 int4, 內值分別為 int4.x, int4.y, int4.z, int4.w 四個, 所以我猜記憶體最大可用維度應該是四維....

4.盡可能使用 <> 去跑, brook+ 裡會拆成好幾個 thread 去跑 (未證實. 據說這就是 scatter 機能..) 例如以下的 kernel function code:
kernel void copy(float input<>, out float output<>)
{
    output = input;
}
假設 input output 兩個 vector 長度都是 x 的話, 就會拆 x 個 thread 各別去做 data copy 的動作..

5.盡可能使用 <> 另一個理由是因為, array output 在目前的 brook+ 裡只能允許有一個.

6.brook+ 內每個 kernel function 不允許擁有自己的 local memory..

7.kernel function 內索引變數可以活用 int4 來做, 例如:

int4 nIDX = { 0, 0, 0, 0 };
int4 nSTP = { 1, 256, 1, 256 };

fOut = pfSrc[nIDX.x] + pfSrc[nIDX.y] + pfSrc[nIDX.z] + pfSrc[nIDX.w];
nIDX += nSTP;
......

int4 也可以改 float4, brook+ 內允許使用浮點數當索引值..

8.brook+ 內 kernel function 不允許呼叫其它的 kernel function..

9.output <> 的值無法拿來給 kernel function 程式做讀取之用, 要讀取再寫入 (a+=b 的場合) 的話要用 reduce 的寫法:
reduce void reduceGPU(float input<>, reduce float output<>)
{
    output += input;
}
但是 reduce 的限制很多, 只能有兩個參數, 就是這一進一出..
output [] 這種 array 型態的話就可以, 只是當你程式要讀取時, 通常該被更新的值都沒被更新.

10.kernel function 不可以做指標型態轉換, 也不支援 int <=> float 值的轉換.

11.外面要呼叫像第四個那種 copy function, 但只需要 copy 某一個範圍時, 可以下 domain 參數, 例如:
::brook::Stream<float> a[10];
::brook::Stream<float> b[10];
copy(a.domain(2, 6), b.domain(2, 6));
這樣就可以 copy a[2] ~ a[5] 給 b[2] ~ b[5].
附帶說明一點, 在這種寫法下, kernel function 內 instance().x 抓到的起始值是 0, 不會是 2.

brook+  一來它是 data parallel 而不像 nvcc 是 thread parallel 導向的做法, 而因為不管計算 float32 x1 或 float32 x4 (float4) ATi GPU 內部都是以 float32 x 4 在演算, 所以使用 float4 會比只用 float 有效率, 所以在這前提之下, 能夠把資料的平行化處理拆散到多少, 會關係效能以外, 甚至影響計算結果是否正確.

真是難寫死了... 特別是資料平行的演算法 -_-

2009年4月25日 星期六

Bluetooth 3.0

這一代就如同 pcadv 講的除了 BT 原本的協定以外再追加兩樣東西 1. 802.11 網路 (雖然 BT 原本就有自己的網路..), 一是 USB, 這個我有興趣很久了..
雖然看起來感覺像 802.11b/g/n 來跑 BT 3.0 的感覺...

2009年4月23日 星期四

HGST 7K250 爆震對抗記..

當一臺電腦的靜音改裝到某種程度時, 硬碟的噪音問題就會浮現上來, 而且特別是馬達產生的噪音和震動. 以下這兩顆 7K250 160G 服役四年餘間我也享受它的震動帶來的共震音四年 (所以以下都用爆震來形容, 別家的硬碟都沒它誇張), 直到最近才有接近完美的解法... -_-

原本買這機殼的動機就是因為它有硬碟專用的吸震墊, 用來對付有運轉爆震的兩顆 HGST 7K250 之用, 因為 7K250 馬達運轉中的劇烈震動會延著固定架傳到整個機殼, 再造成機殼共震, 整個機殼因為那兩顆硬碟搞的好像在演奏交響樂一樣... -_-

一開始, 裝上這個機殼後, 並不如有想像中的改善, seek 聲音是減少很多很多, 但馬達的爆震完全沒有減少的現像, 後來又再用聯力的 EX-33 改裝, 也不見有多少改善. 直到某天在玩 ace combat 6 玩到一半忽然想到, 可能就是因為架子太牢固, 才會把震波傳到整個機殼上, 於是我做個實驗, 把硬碟架整個移出機殼, 接線則和原本機殼內一樣的組態這要實驗看看, 果然有相當大的改善.

於是我就把機殼內的硬碟架整個改成這樣:

(左圖引自這裡) 左圖是改裝前的樣子, 底部會有一個架子固定整個硬碟架, 改裝就是把那個硬碟架拿掉, 上下塞入海棉等吸震材料夾起來.

改裝步驟裡最麻煩的, 就是拿掉那個硬碟架底座, 因為它有一個釘子铆在內側, 總共要拔掉三根釘子, 還有壓好的鋁帽, 如左圖示.
  
再來就是如右圖這樣, 因為架子已經沒了, 所以只能靠上下夾兩片吸震墊而且夾很緊, 來防止硬碟架的滑動.
如此一來, 我平常看文件寫 code 等 no loading 活動下終於可以耳根子清靜一點了.. -_-

2009年4月22日 星期三

[鬼扯] RAID5 可靠嗎?

其實羅貫中已經預言 RAID5 可不可靠了, 有圖有真像..



2009年4月21日 星期二

小試 icc11 後記..

以下的兩個設定很簡單, 就是把 SSE 選項全拿掉, 但 OpenMP 仍兩者都有.

vc9:
剩 /fp:fast, Enhance Instruction Set 為 No,
其它設定跟上篇一樣, 15531mS

icc11:
/QAXSSE? 與 /QXSSE? 全部取消, /Qfp-Speculationfast 不變, /fp:fast 不變.
15562mS
兩者差距幾乎可以視為是 OS 的干擾而已了...

跟之前 16 秒與 18 秒的差距, 老實講, 這是意料中的事情. 在這之前我把程式裡 feature filter 的部份用 assembly 下去寫 (因為這部份花掉時間佔 95% ), 結果是比 c code 還慢, 當時測試的結論是 SIMD code 如果執行時間很長 (執行超過 15mS 以上) 就會碰上 OS 做 content switch 時做 XMM register 備份, 會額外花掉很多時間在這上面, 而且即使是 x64 OS 下都不例外. 綜合之前跟別人討論 x86 SIMD coding 花的時間反而比一般 float 久的一個結論: "會說用 SSE 跑的會比較快, 沒寫過程式的人才會這樣說".

老實講, 不管是 AVX 還是 LNI, 多少抱持著看笑話的心態去看這些指令集.

還有一點補充就是, 這個程式不管是 train 還 detection 都是自己寫的, 不是 OpenCV 的 code 也不是用 IPP.

2009年4月20日 星期一

小試 icc 11..

首先寫在前面的, 安裝前請先注意, 環境變數中 path 裡的東西不可以有 () 出現.. (之前裝 DirectX SDK 手賤一直按 next 後的下場..)

測試程式有兩個, 一個是 paul viola 有篇 "Rapid Object Detection using a Boosted Cascade of Simple Features" (CVPR 2001) 講的 object detection 的 implement, 一個是這個 object detection 裡用的積分圖方法, 把這個積分圖方法獨立出來特別做測試.

icc 跟 vc9 相同 (或相近) 的參數:
/O3 (vc9 是 /ox)
/Ob2 (Any Suitable)
/Ot (Favor Fast Code)
/Oy (Omit Frame Pointers)

icc 的多了:
/Og (Global optimizations)
/Qipo (Interprocedural Optimization)
/GA (Optimizatize for Windows Appilication 不是 Galaxy Angel..)
/Qft-speculationfast (Floating=point speculation)
/QaxSSE2 (Intel Core and NetBrust uArch. w/SSE2)
  (AMD Barcelona 最多可以用到 /QaxSSE3, 不過這裡因為要跟 vc9 比較, 只用 SSE2.)
/QxSSE? 不能設定, 這個會先檢查是不是 intel 自家的 CPU 產品,
        不是的話 compile 會過但不給你跑... 嘿嘿...

/Qprof???? (Profile Guded Optimization) 這項要關掉, 否則會跑不完...

順路一提, 這兩個 VS project 裡都有 brook+ 的檔案, 照過.... :P

首先是第二個程式, 也就是積分圖的運算速度, 有沒有 SSE 的時間差別, 第一個是用一般浮點去計算, 第二個是用 SSE2 指令集下去算, 測試用的是 AMD Phenom 9500 (Agena, 其實就是 Barcelona) 2.2Ghz full-speed, 測試圖就是下面貼的那 ORL face 那張大圖片.

vc9:
bitch 1 fucking time 266.000000 mS
bitch 2 fucking time 78.000000 mS

icc11:
bitch 1 fucking time 178.000000 mS
bitch 2 fucking time 69.000000 mS

浮點有快蠻多的, SSE 就還好而已.

再來是第一支程式, Object detection 抓的是人臉, 測試圖是 ORL face database 把所有 400 人的人臉圖合成一張 4096 x 4096 大小的大圖:
跟第一個程式不一樣的是, 這個有 OpenMP 的支援, 運作途中四顆 CPU 都是 100% full loading.

vc9: 16.75秒
icc11: 18.078秒.

不過, 這隻程式我指標用的非常兇, 以下是這兩個 code 的簡短差別...
1. (SSE bitchmark)
{
        int             nT      =       0;
        int             nB      =       width;

        for(int y=height-1; y>0; --y, ++nT, ++nB)
        {
                for(int x=width-1; x>0; --x, ++nT, ++nB)
                {
                        buf[nB+1] += buf[nB] + buf[nT+1] - buf[nT];
                }
        }
}

2. (Adaboost Object etection)
{
        float   *pdS, *pdT, *pdU, *pdV, *pdW;
        
        pdT             =       buf + width + 1;   
        pdV             =       buf + width;            
        pdU             =       buf + 1;                        
        pdS             =       buf;                               
        pdW             =       pdV + width - 1;
        for(; pdT<zoe; pdT++, pdU++, pdS++, pdV++, pdW+=width)
        {
                for(; pdV<pdW; pdT++, pdU++, pdV++, pdS++)
                {
                        *pdT    +=      *pdU + *pdV - *pdS;
                }
        }






}

目前這隻程式的 optimization 冠軍仍舊是 gcc 3.4.6 cygwin 版...

近一個月 K brook+ 的 sample code 跟 tune 以前的 code 的感想是, 指標能不要用就不要用, 在新一點的 compiler 裡只會跑的更慢 -_-|||b (brook+ 裡直接不能使用指標..)

2009年4月13日 星期一

catalyst 9.4

只是更新版本就沒啥了, 有不一樣的是 9.4 版可以讓 stream 支援 on board VGA (760G, 780V, 780G, 790GX). 

有沒有那實際效益就再說, 手上沒 780G 的板子可以測, 也不確定有沒有 SidePort Memory 會不會有差別..

2009年4月8日 星期三

2009年3月30日 星期一

豆工房 domocoffee

上次去買這間的黃金特配, 特價期間半磅 180, 不過個人覺的比很多半磅 350 起跳的進口豆好很多, 不會非常苦, 沒有酸味, 後韻感覺很溫順.
強力推鑑.
http://www.domocaffe.com.tw/1-index1.htm

google map 這個連店面圖片都有..

2009年3月27日 星期五

ATi catalyst 9.3 newer release (hotfix)

這篇其實不是講 catalyst 9.3, 而是講 9.3 的 hotfix. 雖然那個 hotfix 裡面包了 catalyst control + display driver + system chipset driver 這麼多東西所以要 154Mb.. eola 貼給我我才知道有這東西, 3/16 日就 release, 且 3/19 日就放出來了,但 developer 於 3/21 日的 email 對這個 for XP hotfix 一個字都沒提..

"ATI CAL depends on internal API (application Programming Interface) to communicate with the base display driver. In ATI Catalyst 9.3, there was an inadvertent mismatch introduced between the interface presented by the base display driver and the interface CAL expected. This mismatch only affected CAL under Microsoft Windows XP. Microsoft Windows Vista and Linux distributions are unaffected."
可以解掉 WinXP 底下 brook+ 1.4beta call 不到 CAL 的問題.

上去 AMD 網站挖時倒是看到另一個好玩的東西.. R700 ISA
這是 R600 ISA

vsproject 新增 .br 檔案進去

首先先把 brcc.exe 所在路徑加到環境變數區裡.
1.我的電腦 -> 內容 -> 系統內容 -> 進階 -> 環境變數 -> 系統變數 -> path
  塞一行:
  C:\Program Files\ATI\BRK\sdk\bin;
                   ~~~~~~~隨 stream SDK 版本不同安裝路徑會變...
  目地: 先要讓 console (command mode) 底下可以叫的到 brcc.exe

2.console 下用 brcc 編譯寫好的 code 假設叫 test.br :
  brcc -o test test.br
  目地: 要 brcc 產生 test.cpp test.h test_gpu.h 這三個東西.

3.在 vs project (solution explorer 裡) "Brook Files" folder 加入 "test.cpp"
  此時 test.br 也會被一起加進該 folder 裡.

4.在 test.br 按老鼠右鍵選 properties 裡, Custom Build Step -> General

  "configution " command line 填:
  mkdir brookgenfiles | "$(BROOKROOT)\sdk\bin\brcc_d.exe" -o "$(ProjectDir)\brookgenfiles\$(InputName)" "$(InputPath)"

  "configution " command line 填:
  mkdir brookgenfiles | "$(BROOKROOT)\sdk\bin\brcc.exe" -o "$(ProjectDir)\brookgenfiles\$(InputName)" "$(InputPath)"

  Outputs 則 debug/release 都是填:
  $(ProjectDir)\brookgenfiles\$(InputName).cpp

這樣改好後, 這個 .br 檔案以後就可以在 vs 的 ide 裡編輯與編譯 (ctrl+f7),
即使是重編整個 project 它也會重編譯這個 .br 檔案.

所以那個 .br 檔案裡面一開始就寫個空函式在裡面就好...

然後, brcc 產生的那個 .cpp 檔案也記得要加進去 project 裡面,
否則只是純粹編爽的而已..

2009年3月22日 星期日

2009年3月12日 星期四

HDMI switch 後記..

1.原本走電力線的信號傳輸改用 433Mhz RF 模組, 電力線除了傳輸不很穩定以外, 也無法簡單達到一對多的搖控. (其實這是我搖控信號走電力線最主要的目地..)
2.目前實驗過的 USB chipset 裡只有 nForce4 不能正常抓到切換後的裝置, 即使換過線也一樣. 其它像 intel ICH2/ICH4/ICH7, AMD SB600, VIA/NEC USB controller 甚至 xbox360 的 USB 都正常..
3.切換器附近真的是電線大市集, 現在只接 HDMI 跟 USB 兩種線都覺的亂的不像話... 不知道幾時 HDMI 能有無線的版本...

後記: 有問題的 nforce4 那臺後來換過 USB 線後就正常了, 這證明要走 USB 2.0 線最好不要太爛.. 

2009年3月10日 星期二

follow switch..

這是 HDMI 切換器的外觀照, 改裝前後都沒有改變.. (不改變外觀也是我的目地). 而 HDMI 切換器算是搖控的發射器.
右邊是 HDMI 切換器內部的電路, 用兩顆 PI3HDMI 做切換. 左邊就是信號發送板.
這就是上圖左邊的信號發送板, 信號發送板負責的就是把 "現在選到哪個 channel" 的資料打到電源線上去.


以下是接收器端 (USB 切換器) 的電路.
這是 USB 切換器中供給 USB client 與 HDMI switch 電力的 DC-DC 轉換器
這是負責接收與解析來自電源線上的搖控信號.

這是 USB 切換器的主載板, 除了 USB 切換任務以外還要聯結 power board 跟 received board.
這就是以上三片板子組合起來的樣子.
這是組合好後的側邊照片.
是整組 (HDMI + USB) 切換器的組合照片, 兩個切換器的信號只靠電源線傳送. 藍色的那是 USB hub, 那個自己做太貴了, 買現成的...

電路圖改天補上, 電路圖軟體都丟光了... =_=