星期三, 10月 31, 2007

[閒聊]瑪法達一週星座運勢 10/31~11/06

剛剛閒來沒事
跑去星座版看本週運勢
在眾多的星座運勢中
瑪法達是我覺得屬一屬二準的
(至少在工作方面啦...)
只要有這三個字在標題出現
我一定必看
- - - -
占星預言
為期三週、多災多難的「水星退行週期」在11月1日寫下句點;「蠍子座之月」仍在前段
;且太陽和諸吉星幾度形成有利角度的本週期,從星座角度解讀,意味著大環境氛圍仍將
難以脫離蠍子座星座調性的過敏、專一、執著、頑強與缺乏陽光,通常也是祕密行動、醜
聞祕辛或黑暗勢力較為活躍的時段。而隨著「水星退行」的結束,從個人、社會到國家在
溝通對話上的波折、誤會與衝突可望緩和。

一些歐美理財占星師認為,先前美股市及新興市場在「水星退行」期間價格表現背離基本
面,利空壓力和修正幅度通常會有反應過度跡象。雖然在國際市場潛在利空因素仍在,未
來一週對照星座顯示的逆轉基調,出現落底反彈的機率很高,適合進場買進,逢低佈局。

就個別星座而言,外在環境亂象銳減的本週期,絕大多數星座可望暫緩喘息、少憂多喜。
開心快樂的當運星遠遠超過愁眉苦臉的低潮星,其中特別需要啦啦隊加油的只有水瓶座和
雙魚座,兩者在情感或事業上的夥伴關係上似乎都遇上了某種瓶勁。運勢蟬聯幸運排行榜
第一的獅子座,好事連莊,際遇令人羨慕到極點;白羊座放電轉強、豔遇最多;蠍子座在
專業領域駕輕就熟、幾乎呼風喚雨;魔羯座攀登名利階梯有成,堪稱各有所穫。

星座排行
1. 獅子座:睥睨群雄、獨步武林、引導潮流(衝刺最猛)
2. 白羊座:星光閃耀、魅力四射、深情款款(情事最順)
3. 蠍子座:後盾雄厚、大權獨攬、良有為伴(滿意最多)
4. 魔羯座:佈局縝密、高瞻遠矚、前程似錦(事業最優)

看到那個豔遇最多我整個想大笑
女王我活到現在也有二十年的歲月
艷遇是什麼東西阿
不存在我的字典裡喔
感覺這次會不準的說
結果往下看到星座運勢

牡羊座
風采耀眼,出類拔萃。氣勢和魄力高居階段性顛峰的這段期間,將輕鬆解決疑難雜症。積
極表現和力拼群雄的結果,更是贏得領先,在公開場合大出風頭。事業精彩有料,賣相佳
,鎖定各類市場無不一網打盡。有新合作提案上門。投資運旺。愛情是情有所歸。

靠...
還真的是新合作提案上門咧
今天下午BOSS群跟設計學院的老師們談互動藝術的東西
似乎打算合作了
跟我借筆電播DVD
我只是上去幫他們用東西阿...
誰知道小黃竟然問我要不要一起聽
囧...
在場的五個人裡面
有四個人是老師
剩下那個就是我
有沒有這麼刺激阿
這是鴻門宴吧!!!
後來因為明慧還沒有題目的關係
老師又叫我去叫阿梅跟rosa上來聽
今天談的內容
主要是設計學院的老師跟我們介紹一些互動藝術裝置
像是360度螢幕(林珮淳老師的水泥車)
PDA美術館(類似蝌蚪學長做的東西)
還有互動式電影(影片會跟觀眾做互動 這個互動會影響到結局 有點像RPG的fu)
梁老師之前上課介紹過的can you see me now 也有提到
我印象比較深刻的是最後一個"BabyLove"
老師說是台灣人自己做的喔!!
這個裝置是這樣的
一個娃娃坐在咖啡杯造型的碰碰車裡面
看起來像咖啡杯
實際上是碰碰車
那個娃娃是播放音樂的裝置
人坐在裡面
隨著每個杯子的旋轉 相撞
播放出來的音樂
也會改變
變成什麼樣 我也不知道
但是 可以肯定的是
是由咖啡杯之間的距離 撞擊 等事件
來觸發音樂改變

我個人認為他想表達的意境應該是"人生"
如果說你坐的那個杯子
播放出來的音樂
代表你的人生
那麼隨著你與其他人的遠近 相撞的速度 角度 彈開的速度
(象徵著和其他人互動的模式)
就會有所不同

最後完成的曲子
就可以代表著

每個人一出生都是一樣的
但是隨著你的際遇 (和哪些杯子相撞...)
最後成救出來的妳
也會不同

老師他們很開心的說著說著
竟然打算以後每個禮拜二都一起咪聽了
還打算找人來寫程式
黃世育在問的時候
阿梅跟rosa竟然裝死
裝死就算了
幹麻一起看我
害我變成那個可能會寫的人


網路學程就要會這個嗎
我看那些智慧學程的也沒有比較會AI阿
老娘修TCPIP是兩年前的事了
早就忘光了好不好

老師們整個打蛇隨棍上
變成我要寫了啦!!

這下糟了
寫不出來真的就丟臉丟到設計學院去了...
囧...

算了
往好的方面想
如果撐過去的話
我應該會變強吧!!
這是個磨練自己的好機會!!

星期一, 10月 29, 2007

[movie]the Nanny Diaries

京華城的DM上寫著
只要消費300
就可以180的價格
購買喜客滿影城的電影票

所以昨天就跟老媽去京華城看電影啦
其實我比較想看"倒數第二個男朋友"
不過我家老媽覺得那個是低級笑料片
她想看"Rush Hour 3"

大概是被小黑的那番
"這啥鬼阿 距離上一部也太久了吧"
"我才不想看咧"
給影響了
我完全的不想看Rush Hour

所以就折衷看了下面這部片
"the Nanny Diaries"
中文片名:豪門保姆日記
--內有劇情 不喜誤入--

這部片呢
並不是那種整場笑到尾的片子
讓我印象深刻的地方是在"哈佛帥哥"
天啊
他真是個大帥哥
眼睛超會放電的!!!

女主角Annie就像患了斯德哥爾摩症候群的患者一樣
對凱雷爾(她照顧的小孩)一家由抗拒,害怕,同情,幫助
她始終想辭職
可是都無法對X太太開口
最後讓他離開的原因
竟然是因為X先生想吃她豆腐
所以X太太開除他
明明就不是他的錯
而且X太太還要他當天就坐車離開
凱雷爾一直追著車子跑
一直哭一直哭
害我都跟著他難過
真的是超down的啦

Annie還發現
X太太竟然裝了保母監視器
他整個超生氣
我還以為他會做什麼咧
也只不過藉著那個監視器錄下一堆話給X夫婦

整部篇讓我印象最深刻的就是那個斯德哥爾摩症候群

因為啊
研究生通常也患有此症狀喔
超有共鳴的啦
我想我是個中度患者吧
啊哈哈哈哈

星期日, 10月 28, 2007

[閒聊]Something about my room

搬家以後
我才發現
我家媽咪
是如此的夢幻
由於我都在學校的關係
所以傢俱裝潢之類的
都是他用的
等我發現跟我心目中的房間不一樣時
已經來不及了

我的房間裡面
有一整面牆的衣櫃
一張很大的床
和ㄧ個很瘦的書櫃

那個床真的很大
我房間裡面有一半以上的面積
都被那張床給佔據
為了這張床
我沒有書桌
ㄧ開始很討厭這張床
討厭整面牆的衣櫃

要怎麼說明How big of my bed呢

我可以從床的左邊
滾滾滾
滾個兩圈
才滾到右邊

ㄧ開始 看這個房間超不順眼的
沒書桌
書櫃又小不拉機
衣櫃那麼大幹麻
我的夢想是有一個
可以和書店裡一樣拉來拉去的書櫃阿

都是那個衣櫃
害我沒有大書櫃
都是那個床
害我沒有書桌

可是隨著日子過去
我發現
我的床
很好睡耶
好軟好軟
才睡了一個暑假
我現在都不習慣其他的床
覺得都好硬喔

嘖嘖

我也變成一個會認床的人了...
跟豌豆公主一樣嗎!????

星期六, 10月 27, 2007

[日誌]越來越墮落

上禮拜不小心把研究生獎助學金的名單留在家裡
所以禮拜三跑回家一趟
結果在客廳看電視到三點
禮拜四下午沒事
想說去仁崇牙科咬模
新光三越10/25開始週年慶
可以咬完模去逛個街


ROSA也想逛街
可是要等他改完作業
想說應該ㄧ兩個小時
反正咬模應該不會很久
晚上11點以前回來就好了
結果等rosa改完

學長又說要不要打個電動
我可以打一打不打丟著沒關係...
打電動真是個敗筆!!

等打完再走都六點了
剛好遇到塞車
診所又都是人
好不容易看完
到新光三越都八點半了
吃完飯
隨便逛一下
就十點了

根本來不及11點以前回去
只好叫高小涵幫我填外宿
載rosa回桃園
再回家裡
都12點多了
其實很累
很想睡覺
可是洗完澡在客廳擦乳液的時候
又被電視馬鈴薯附身
整個看到三點

阿阿阿阿
我到底怎麼了
這樣下去不行阿

回家真的都會不想認真耶
睡到自然醒
看個電視
洗個澡
時間"咻"的一下子就過了
明明就有帶東西想回家用
都原封不動的帶回學校

阿阿阿阿
開始認真考慮不要常回家
不然我會完蛋的!!!

[日誌]Always English

嗯哼!!

主任上次建議我
除了用英文交作業之外
也可以用英文寫mail
藉此練習英文能力
他說我家天仁都寫英文mail給他
他都要上奇摩查字典回信
聽到這有種妙感
不都是學生查字典的嗎
竟然是老師查字典
真是酷耶

剛好我有事情要問論文研討的三位老師
本來是用中文寫的啦
不過我考慮了一下
趁我現在想要練習英文
反正院長的作業都衝了
就一不做二不休
趁這股氣勢衝下去吧

反正
論文研討的三位老師
主任 熊大 跟 開暉

除了開暉老師我不知道之外

之前跟熊大的mail
都是用英文寫的
主任自己也鼓勵我這麼做了
我想老師們應該不會覺得不開心吧
看到學生想有所成長
應該是樂觀其成吧
(I hope so....)

不過我這次問的是重要的事情
怕辭不達意會壞事
所以還是附上了Chinese version

今天聽演講的時候
主任還問我有沒有收到信
他有回信唷
而且還有幫我修改耶

我好感動喔!!!
(灑小花兼轉圈圈~~~~~~)

相信在眾多老師的幫助下
我的英文寫作能力會越來越茁壯的!!!

星期三, 10月 24, 2007

[學習日誌]數位影像處理HW1

昨天在系辦跟主任聊天
聊到我之前看雜誌
七年級的成功人士
裡面有一個人在外商公司當主管
他從大三開始
所有的作業都是英文寫的
其實英文能力很重要
尤其是寫的方面
如果你以後的公司
所有的報告 企劃書之類的
都是用英文寫的
趁當學生的時候多練習
老師還可以幫你改
以後你畢業了
要去哪找這麼多人幫你改文法
看你寫的文章啊
老闆看不下去就是看不下去
你的idea再好都沒有用

想想也對
我覺得醬很好耶
我以前怎麼都沒想到
可能是周圍的人都沒有這樣做
而且我英文這麼破
好怕被人家笑喔

主任跟我說
也許我現在可以試試看
反正 我還是很想出國
很想看看外面的世界
是該提升自己的英文能力了

可是 我現在有作業的
也只有院長的數位影像處理了啊
其他課都沒有作業

剛好院長路過
我就問院長可不可以用英文交作業
他說可以啊
我就趁機跟他說"那你要幫我改文法喔!!"
(真是個強人所難的孩子...)

結果昨天寫作業的時候
真的是超痛苦的
想說用中文寫好再翻譯
不如直接用英文寫
可是用英文整理想法
好困難喔

還好我跟外國人住
跑去問Passion
唔...有些句子看起來很怪
可是Passion又跟我說要這樣寫老師才看的懂

結果今天院長上課的時候
就打開我的作業
好丟臉好丟臉
啊啊啊啊啊

他真的有改耶
不過算是全部都改了...囧
雖然文法應該是沒太大的問題
不過敘述的方式就沒有很好
他在每段的下面
都寫一段是他的話 應該會怎麼表達

我好感動喔~~~
雖然被投影機投影出來很丟臉
可是院長真的有改耶
而且不是打個勾或打叉而已
不只是改
還有說要怎麼安排架構
怎麼樣看起來像有受過訓練的文章
雖然他還沒有全部改完
可是他說他會改完再寄給我喔
超超超超感動的...

星期一, 10月 22, 2007

[日誌]請洗衣服以後快帶去

上禮拜忘記把衣服帶回家洗

所以今天回宿舍之後
想說來洗個衣服好了
不然沒衣服穿


不過宿舍的洗衣機
常常都客滿
每次去都要排隊

所以今天我就跑去七樓看有沒有人在洗衣服
(每層都兩台洗衣機...)

沒想到讓我在洗衣機上看到了這個!!!

內心OS:哇靠 果然是國際宿舍 連Message都是用英文的

馬上跑去看隔壁那台
一看整個大笑!!!


請洗衣服以後快帶去
這是啥鬼!!
眼睛博士翻的嗎!!

雖然隔壁臺的英文也沒有好到哪去
但是這個中文也太酷了吧!!

整個讓我內心笑到滾來滾去!!

趕快跑回房間拿相機拍下這經典的一幕
貼上來給大家笑一下
(哪來的大家...會來的也只有小黑而已XD)

星期日, 10月 21, 2007

[日誌]其他group的咪聽

拖rosa的福
小黃跟梁老師
提了讓小黃的學生參與他們group咪聽的事
像我這麼喜歡東看看西看看的人

怎麼可能放過這個機會
梁老師應該不會介意多一個人吧
所以我就趁這個機會
順理成章的混進去了


上禮拜為了那個點財產的事情
整個很累阿

禮拜四那天還有點不想出去聽
可是又怕梁老師覺得我不貫徹始終
所以還是跑過去聽了

這次是胤桓學長報告
可能是這次比較累

學長講到一半
我就想睡覺了

不過還是讓我獲得了些許的東西
但是那個想法又不夠清楚的讓我可以講出來

梁老師這個group
果然還是比較抽象的東西
相較於一般資工領域做的東西
更偏偏藝術那方面
比較思想

這次學長說的Direct Manipulation
定義了一個"人與電腦的距離"和 "電腦與人之間的距離"
就把語言學的概念
給套進來
梁老師針對這個例子
要我們提出看法

本來我都一直在想說
是"語言"不同造成的距離

就像是客家人聽的懂廣東話
所以客家人 跟 廣東人 之間的距離就比較短
可是客語跟德語 是完全不同的兩個語系
所以他們的距離就差很大

不過梁老師 後來有提到他的看法
她覺得阿
應該是"語意"跟"語句"的概念
語意是說
ㄧ個人(A)腦袋中真正的想法
透過轉換 思考 講成句子
而另一個人(B)接收到這句話之後
再做轉換 翻譯
去思考他這句話的意思
(可能是反話 諷刺之類的...)

嘖嘖
老師果然是老師
那個思考的角度
果然都和我們不一樣

真希望
哪天我也可以有不同的思考角度喔

加油加油!!
gogogo
繼續充實自己
像海綿一樣不停的吸水吧!!!

星期五, 10月 19, 2007

[研究]小偷法則

恩...
雖然沒掛共同指導了
黃世育老師也是有去幫我跟我老闆探聽
小偷法則到底是啥鬼

我好感動喔~~~~
 謎之音:那只不過是因為他們哥倆好聊天剛好聊到而已...

雖然好像是跟阿梅講完
順便跟我講而已

不過我還想是流淚XD

趁老師剛剛跟我講完
趕快把重點記下來
- - 以下是重點 - - 

我們以一個人的家做舉例
一般人的家
應該都很乾淨
今天如果一個小偷來過
那 屋子就變亂很多

可是第二個小偷來的時候
他還是東翻西翻的找東西啊

但是他弄亂的變化量
就沒有第一個小偷的從乾淨到亂
變那麼多

星期四, 10月 18, 2007

[不爽]在搞什麼鬼啊

幹幹幹幹幹

好不容易財產快點完了
RFID剩下7個TAG和一個SD reader找不到
也跑去隔壁留言給學長
請他看到跟我聯絡


想說晚上跟學姐去吃飯
之後回實驗室
一鼓作氣的衝程式
雖然知道不可能今天寫完全部
可是還是想把interleaved那邊給KO掉
最好是寫到IDCT那邊


誰知道寫寫寫
想說換張圖片測試
竟然給我跑出bug

還不是每張圖都會跑出來
這下囧了

開始陷入抓蟲地獄
一行一行的看
終於發現是zigzagX裡面的數不對造成的問題
可是我明明zigzagX就有給初值啊

很好
開始從syntax開始看
哈哈哈
在DQT(i)這個function之後
zigzagX 這個陣列
就偷偷的被改變了

機耶

沒差
那我在block function一開始的時候
再給zigzagX一次初值


這樣就耗掉我美好的夜晚時光
機機機機
我竟然還停在block那邊
好想掀桌喔!!!

星期三, 10月 17, 2007

[日誌]學弟總審

噗哈哈哈
今天是佐搖學弟專研總審的日子

說來他們也真衰
大家都在上禮拜六和禮拜天審完了
只有他們在今天

為什麼他們今天總審呢

因為啊
他們家的昌哥
幫他們請到的審查老師
都是大大大大咖的狠角色耶
兩個都"教授"的等級喔!!
熊大跟阿貴

熊大就已經很殺了
竟然還有日理萬機的學務長阿貴
真猛!!

他們這組是接著蔡宗賢那組的繼續做的
憑良心講
還真有點弱耶

我覺得去年蔡宗賢那組講的比較好
今年報告的人
感覺很不專業耶
去年蔡宗賢雖然大舌頭
不過感覺就比較熟
而且儀君講的也不錯

學妹開始不到十分鐘
阿貴就開砲了
整場轟轟轟的

我看學妹也不是很懂吧
整個一直看學弟
結過變成學弟和阿貴的對話

他們家昌哥有試圖要跳出來救
不過講一講又變成在錠人

我快笑死

跟阿貴比較之下
熊大瞬間變白臉的角色

整場下來
我看阿貴講的話都比報告的人多了
嘖嘖嘖

還好去年阿坤沒邀請重砲手來
不然當場飆淚吧

後來綠茶還跑來跟我說
他發誓
以後再也不跟女生一組合作了
我青他一眼
他瞬間改口說
是不要不挑過就合作
我是那個OK的

這也太諂媚了吧
學弟~~~

然後之後還試圖解釋
試圖說服我
在系上
十個女生裡面有九個是花瓶的論調


我可是很想當花瓶的好不好
笨一點就不用作太多事
這樣很好啊
不過老娘沒那個條件>"<

算了
沒差
至少我不是笨蛋就好XDD

星期二, 10月 16, 2007

[日誌]咳咳咳


最近天氣多變化
從昨天開始
就開始間歇性的咳嗽

趕快開始猛喝熱水
想說會不會舒服點
把身體的熱帶走

今天早上起來
整個鼻子超難過

一整個口乾舌燥
超難過的啦
趁洗澡的時候
用熱水摀著鼻子
才覺得好一點

後來想想
應該是水喝不夠
為了避免又因為沒有杯子之類的鬼因素
讓我今天水又喝很少
然後惡性循環

今天特地從寢室帶了杯子出門

雖然身體不適
不過今天算有個好咪聽唷
Boss今天心情很好
有聽我講話耶
真開心

雖然老師一開始還是聽不太懂我的意思
他覺得我講太細了
只要跟他說我那function是作啥的就好了啊
可是 可是 人家就是不會解釋那個function是在做啥的啊
只好把程式碼寫在白板上
給老師看啊

不過老師後來有引導我講出來啦
算是有進步
啊哈哈哈

跟老師講完之後又回到S601跟程式奮戰
因為我那個程式已經很大了
不想輕舉妄動造成debug不易的慘痛結果
決定先在紙上寫好架構
反正我廢紙很多

一直寫寫寫改改改的
終於把第一個block解出來了
真開心!!!

加油加油
接下來就要跟那個interleaved的地方PK了!!!
啊哈哈哈哈

星期一, 10月 15, 2007

[心得]原來我不膚淺

禮拜天和小黑與黑媽
三個人到永樂市場買布
(他要用來縫手機套的內裡的)
買完之後
就跑去西門町看電影
本來是想說去美麗華的
不過肚子太餓
就跑去比較近的西門町了
反正那邊也有電影街
沒差
中餐吃的是
前幾天和吳發發沒吃到的"熊一燒肉"
這間店還不錯
冰淇淋種類很多
牌子也用很好
哈根大使 明治莫凡彼
昆布高湯也不錯喝
我個人認為
CP值不錯高
下次還可以考慮去!!
接下來就要進入主題了


色戒這部電影呢
坦白說
我是衝著梁朝偉去的

沒辦法阿
我超喜歡他的
溫文儒雅又有氣質
憂鬱小生路線
一整個就是我的style啊

這次梁朝偉飾演的易先生
在[色.戒]原著裡面
是個獐頭鼠目的男人
不知道是這個原因
還是有年紀了
這次的梁朝偉
近拍 沒有很帥耶

雖然是這樣
我還是好愛他喔
一整個散發出成熟男人的魅力

原來我不膚淺耶
我以前覺得我只是愛他的帥而已
原來我不是因為他很帥所以喜歡他
是因為他很有質感的關係

啊哈哈哈哈
結論是~~
我不是個膚淺的人耶!!!
真開心!!


本來是想寫電影觀後感的
不過我還沒整理好內心的想法

看完電影
整個好惆悵喔
腦海中想的
不是那個激情的畫面
反而是易先生最後坐在那個床邊的畫面


雖然沒有對白
但是那個畫面
整個透露出無奈
也許這就是那個時代下的悲劇吧

如果
他們不是在那樣的情況下相遇
結局會好一點嗎
抑或是
他們永遠也不會相遇...

星期六, 10月 13, 2007

[食記]春喜燒肉


昨天吳發發來學校拿畢業證書
反正我也要回家拿東西
兩隻跑去西門町
吃無煙燒肉

本來想說那邊應該到處都有燒肉店
不用查地址和店名也不會死
遇到哪家就吃哪家

這次依然很幸運
萬華運動中心還有位子

身為一個開車到處趴趴走的人
找停車位可是很重要的事情

萬華運動中心的停車費
一個小時才30元
而且又是有電梯的室內停車場
在西門町那種寸土寸金的地點
實在是好物啊!!!!

沒想到
從停車場出來以後
一路上到處都是火鍋店耶

好不容易看到一家熊一燒肉
感覺是個很厲害的店
冰淇淋是哈根大使 明治 莫凡彼
都超高級的耶

不過客滿
排隊要等到九點
好失落
只好再繼續找

厚來跑到春喜去吃
以前同學會吃過在東區的那家
這次西門町又吃到同一家

我覺得春喜很弱耶
沒有甜點
不過肉還不錯
果然是燒肉店
可是湯是味增湯
很弱
不好喝!!!

下次應該不會考慮再去吧
不過熊一很讓人心動就是了XDD

下次揪團去吧XDD

星期四, 10月 11, 2007

[日誌]混還是認真!?

耶嘿~~
因為今天答應要借俊輝筆電
跟他約八點四十分在宿舍門口
九點就把筆電帶到系辦了
因為小的是助教
要收作業
可是老師給我的那張紙
是開學印的阿
有的人有在上面
有的人沒有的
想想還是在系辦印這堂課同學的名單
等等收作業用吧
才印個東西
跑過去教室
老師就在裡面講話了

昨天國慶日的關係
我整個很開心的放假
課本都沒念
黃老師又跑來開個PDF給我們看
BOSS在台上說甚麼
我完全沒在聽
 沒辦法阿 那個PDF都英文
 我要查字典 沒辦法一心二用阿
 老闆對不起>"<

反正第一節課都沒在聽了
看看隔壁的阿梅開始寫程式
想想我也來寫好了
就跑去系辦開筆電
想抓昨天寫到一半的程式
不過ROSA來系辦找我
他說反正俊輝現在也沒再用
那乾脆拿過去
省得被切螢幕
想想也對
就把把筆電帶到S513-1

不過還是很心虛
所以寫程式也不專心
上課也不專心
不顧後來BOSS有開放時間
才比較能進入狀況

啊啊啊啊~~~
我太弱了
不行!!要意志堅定!!
快點弄完成程式吧

星期三, 10月 10, 2007

[小白]2007/10/10 さらに大きく成長しました。

今天晚上從實驗室看鄭小白的時候
他還是那個小小隻的棉花糖

不過等我做完電腦諮詢回來
洗好澡
把俊輝灌的東西刪掉以後
一連上網
就看到我家的鄭小白
手腳變長
身體變大隻了
真的是超興奮的啦 >O<

不禁想到
相較於笨黑而言
這次的小白
真是個好養的孩子

成長超迅速
只要有文章它就會學到字
而且現在豆子比較好撿嚕

本來為了讓吃不到字的笨黑能夠長大
都把存糧吃光光了

現在小白吃的到網誌
就比較不會消耗存糧

你看
2007-09-26 13:35:37才世代交替
不到一個月的時間
他就長大兩次囉
真開心
雖然有個醜醜的豬鼻子
不過身體是個可愛的棉花糖喔


加油加油~~~~
繼續努力的長大吧!!!
我的孩子鄭小白~~~~

星期二, 10月 09, 2007

[心情]主任都不主任了


昨天晚上洗好澡
正準備關機的時候
俊輝跟我說
主任調走了
What a horrible news!!
大驚之下
整個睡意全消
趕快問怎麼回事

原來是升職阿
從二級主管變成一級主管
其實是件喜事
可是降一來
我就不能藉著去系辦拿公告的機會
順便跟主任聊天了阿

就算我當兩年班代
兩年後的謝師宴
也不能代表全班獻花給菩薩
順便來個擁抱了阿

一想到這個
就悶了阿
菩薩的存在對我而言
是個精神上的寄託耶
何等的重要阿

沒他的開導
我繼續妖魔化下去
越來越像阿修羅怎麼辦...

今天中午去找秀梅的時候
看到主任
趕快咚咚咚的跑過去
剛好主任提到
要把我幫他做的Dororo椅套也帶過去
趕快趁機會問他說是要去哪裡

他跟我說他要吊到一個新成立的部門
是整合前程規劃處跟教學XX處
兩者合而為一
一個教學輔導中心之類的

沒錯啦
我家主任慈眉善目又溫文儒雅
是挺適合輔導別人的

主任跟我說
他新的辦公室是在Q101
一間小小小房間
下禮拜他就要搬過去了
以後還是可以去找他聊天

不過以後他就不是主任了
是"處長"了

超不習慣的啦
我一直以為我畢業前
他都會是主任

唉唉唉
超失落...

星期一, 10月 08, 2007

[日誌]衝了

掙扎了很久
終於決定把程式碼重寫一遍
為了以後程式的發展著想
還是寫一下比較好
不然debug都要超久的!!!

X的 今天我就要衝了
徹夜跟他奮戰
小黑幫我加油!!!
以下是噁心的舊的程式碼
(我貼來衝字數的....)
沒事千萬不要看
會頭暈的!!!!
敬請期待新的程式碼!!

//---------------------------------------------------------------------------
#include
#include
#include
#include //檔案處理需要用到
#include
#include
#include "IdGlobal.hpp"//IntToBin()函數要用到
using namespace std;
int size;
int* memblock;
int i,j;
int tempI1;
int tempLength;
int Bits[17];//L1~L16
int LastK[2][2],Tc,Th;
int *Huffsize[2][2],*Huffcode[2][2],**Huffcodebin[2][2],*eHufco[2][2],*eHufsize[2][2],huffmancode_number = 0;
int *HuffVal[2][2];
String tempS1,tempS2,sFileName,*sHuffcode[2][2];
ifstream input;
ofstream output;
int treesize;
int NodeNum = 0;
int num = 0;
class node
{
public:
int data;
int Number;
node *left;
node *right;
node();
/*
if data == -1 表示這只是個中間節點
else data == symbol value;
*/
};
node::node()
{
left=NULL;
right=NULL;
}
class Tree
{
private:
node *root;
int *KeyBin;
public:
Tree();
void insert(int Symbol,int huffmancode,int codelength);
String Print();
String visit(node *s);
};
Tree::Tree()
{
root=NULL;
}
void Tree::insert(int Symbol,int huffmancode,int codelength)
{
if(root == NULL)
{
//表示沒有任何節點->建立一個新的節點
root = new node;
root->Number = NodeNum;
NodeNum++;
root->right = NULL;
root->left = NULL;
}
node *p,*r;
if(codelength != 0)
{
p = root; //p 現在的Node
int bit;
int tempTCode,Ta,length,i = 0;
tempTCode = huffmancode;
int *huffBin;
huffBin = new int[codelength];
length = codelength;
while(length > 0)
{
Ta = tempTCode / 2;
bit = tempTCode - 2 * Ta; // b = 判斷bit
huffBin[codelength - i -1] = bit;
tempTCode = Ta; // 取下一個判斷的bit
length--;
i++;
}
for(i = 0;i < codelength;i++)
{
bit = huffBin[i];
if(bit == 0)//判斷要往左邊(bit == 0)
{
if(p->left != NULL)
{
p->data = -1;
p = p->left;
}
else
{
p->data = -1;
r = new node;
r->Number = NodeNum;
NodeNum++;
r->right = NULL;
r->left = NULL;
p->left = r;
p = r;
r = NULL;
}
}
else if(bit == 1)//判斷要往右邊(bit == 1)
{
if(p->right != NULL)
{
p->data = -1;
p = p->right;
}
else
{
p->data = -1;
r = new node;
r->Number = NodeNum;
NodeNum++;
r->right = NULL;
r->left = NULL;
p->right = r;
p = r;
r = NULL;
}
}
}
p->data = Symbol; //p->Number
p = NULL;
}
}
String Tree::visit(node* s)
{
String VisitS,LeftS,RightS;
VisitS += "節點編號 = " + AnsiString(s->Number);
VisitS += ",data = " + AnsiString(s->data);
if (s->left != NULL)
VisitS += ",左節點=" + AnsiString(s->left->Number);
if (s->right != NULL)
VisitS += ",右節點 =" + AnsiString(s->right->Number);
VisitS += " \n";
if (s->left != NULL)
LeftS = visit(s->left);
if (s->right != NULL)
RightS = visit(s->right);
return VisitS + LeftS + RightS ;
}
String Tree::Print()
{
node *p;
p = root;
String tempS ="";
int i = 0;
tempS += visit(p);
return tempS;
}
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
Tree DC0,DC1,AC0,AC1;
//---------------------------------------------------------------------------
void itob(int Tc,int Th,int GCT)
{
int tempindex = Huffsize[Tc][Th][GCT] - 1;
int tempLength = Huffsize[Tc][Th][GCT];
int tempCode = Huffcode[Tc][Th][GCT];
int tempbin = 0;
String tempSSS;
sHuffcode[Tc][Th][GCT] = " ";
while( tempindex >= 0)
{
if(tempCode >= 0)
tempbin = tempCode % 2;
else
tempbin = 0;
Huffcodebin[Tc][Th][GCT][tempindex] = tempbin;
tempCode = tempCode / 2;
tempindex = tempindex - 1;
}
}
void aaa(int begQ)
{
int aaai;
tempS2 += "PqTq=" + IntToHex(memblock[begQ],2) + "\n";
for(aaai = 1; aaai < 65; aaai++)
{
tempS2 += "Q(";
if(aaai < 11)
tempS2 += "0";
tempS2 += AnsiString(aaai-1) + ")=" + IntToHex(memblock[begQ+aaai],2) + " ";
if((aaai-1) % 8 == 7)
tempS2 +="\n";
}
}
int huffLi(int begH)
{
int temoLiCount,countreturn = 0;
tempS2 += "TcTh=" + IntToHex(memblock[begH],2) + "\n";
if(memblock[begH]/16 ==0) //Tc == 0
{
Tc = 0;
tempS2 += "Tc = 0 - - - - - - > DC Table or lossless table. ";
}
else if(memblock[begH]/16 ==1) //Tc == 1
{
Tc = 1;
tempS2 += "Tc = 1 - - - - - - > AC Table. ";
}
if(memblock[begH]%16 == 0) //Th == 0
{
Th = 0;
tempS2 += "Th = 0\n";
}
else if(memblock[begH]%16 == 1) //Th == 0
{
Th = 1;
tempS2 += "Th = 1\n";
}
for(temoLiCount = 1; temoLiCount < 17; temoLiCount++)
{
Bits[temoLiCount] = memblock[begH+temoLiCount];
tempS2 += "L(";
if(temoLiCount < 10)
tempS2 += "0";
tempS2 += AnsiString(temoLiCount) + ")= ";
tempS2 += "(Hex) " + IntToHex(memblock[begH+temoLiCount],2) +" = (DEC) "+ AnsiString(memblock[begH+temoLiCount])+"   ";
countreturn += memblock[begH+temoLiCount];
if(temoLiCount % 2 == 0)
tempS2 += "\n";
}
return countreturn;
}
void Generate_size_table(int LiCount,int Tc,int Th)
{
int GSTK = 0, GSTL = 1,GSTJ = 1;

Huffsize[Tc][Th] = new int[LiCount+1];
for(GSTL = 1;GSTL < 17;GSTL++)
{
while(GSTJ <= Bits[GSTL])
{
Huffsize[Tc][Th][GSTK] = GSTL;
//tempS2 += "Huffsize(" + AnsiString(GSTK) + ")=" + AnsiString(GSTL) +"\n";
GSTJ++;
GSTK++;
}
GSTJ = 1;
}
Huffsize[Tc][Th][GSTK] = 0;
//tempS2 += "Huffsize(" + AnsiString(GSTK) + ")= 0, ";
LastK[Tc][Th]= GSTK;
tempS2 += "根據L1~L16產生的huffcode在隔壁頁囉,這裡的LASTK = "+ AnsiString(LastK[Tc][Th]) + "\n";
}
void Generate_code_table(int LiCount,int Tc,int Th)
{
int GCTK = 0, GCTSI = Huffsize[Tc][Th][0],GCTCODE = 0;
Huffcode[Tc][Th] = new int [LiCount+1];
sHuffcode[Tc][Th] = new String [LiCount+1];
Huffcodebin[Tc][Th] = new int* [LiCount+1];
HuffVal[Tc][Th] = new int[LiCount+1];
while(Huffsize[Tc][Th][GCTK] != 0)
{
while(Huffsize[Tc][Th][GCTK] == GCTSI)
{
Huffcode[Tc][Th][GCTK] = GCTCODE;
//tempS2 += "Huffcode(" + AnsiString(GCTK) + ")=" + AnsiString(GCTCODE) +"\n";
Huffcode[Tc][Th][GCTK] = GCTCODE;
Huffcodebin[Tc][Th][GCTK] = new int [Huffsize[Tc][Th][GCTK]];//為了每個Huffcode準備好相對應的陣列
itob(Tc,Th,GCTK);
GCTCODE = GCTCODE +1;
GCTK = GCTK +1;
}
if(Huffsize[Tc][Th][GCTK] != 0)
{
while(Huffsize[Tc][Th][GCTK] != GCTSI)
{
GCTCODE = GCTCODE *2;
GCTSI = GCTSI + 1;
}
}
}
Huffcode[Tc][Th][GCTK] = GCTCODE;
}
void Order_codes(int LiCount,int Tc,int Th)
{

}
void HuffmanTable(int begH,int LiCount,int Tc,int Th)
{
int tempLi,tempi,tempj,tempcount = LiCount;
int HMTK = 0;
for(tempi = 0;tempi < 16;tempi++)
{
tempLi = memblock[begH + tempi];
tempj =1;
while(tempj <= tempLi)
{
tempS2 += "V(" + AnsiString(tempi + 1) + "," + AnsiString(tempj)+") = " + IntToHex(memblock[begH + 16 + LiCount - tempcount],2) + " ";
HuffVal[Tc][Th][HMTK] = memblock[begH + 16 + LiCount - tempcount];
if(tempj == tempLi)
tempS2 += "\n";
HMTK++;
tempj++;
tempcount--;
}

}
}
void DQT(int begQ,int qLength)
{
int tempDQT = 0;
tempS2 += "Lq = 16進位的" + IntToHex(qLength,4) + " = 十進位的 " + AnsiString(qLength) + "\n";
qLength -= 2; //扣掉 qLength 的2個byte;
begQ +=2; //skip掉 qLength 的2個byte;
while(qLength > 1 )
{
tempS2 += " - - - - - -- - - - - - - - Qt- - - - - - - - - - - - - - - - - - \n";
aaa(begQ);
begQ = begQ + 65;//一組量化表 = 65個BYTE (PqTq + 64 個element)
qLength = qLength - 65;
}
}
void SOS(int begS,int sLength)
{
int Ns,tempSi = 1,TdTa,Td,Ta;
tempS2 += "Ls = " + IntToHex(sLength,4) + "(十六進位) = 十進位的 " + AnsiString(sLength) + "\n";
tempS2 += "Ns = " + IntToHex(memblock[begS+2],2) + "\n";
Ns = memblock[begS+2];
sLength -= 3; //扣掉 sLength 的2個byte;
begS += 3; //skip掉 sLength 的2個byte;
int wahaha = 0;
// while(sLength > 0)
// {
while(tempSi <= Ns)
{

tempS2 += "Cs" + AnsiString(tempSi)+ " = " + IntToHex(memblock[begS],2)+ " ";
tempS2 += "Td" + AnsiString(tempSi) + "Ta" + AnsiString(tempSi) +" = "+ IntToHex(memblock[begS+1],2)+"\n";
TdTa = memblock[begS+1];
Td = TdTa /16;
Ta = TdTa %16;
tempS2 += "Td" + AnsiString(tempSi) +" = " + AnsiString(Td)+ " --> 選擇了第"+ AnsiString(Td) + "個 DC Entropy table\n";
tempS2 += "Ta" + AnsiString(tempSi) +" = " + AnsiString(Ta)+ " --> 選擇了第"+ AnsiString(Ta) + "個 AC Entropy table\n";
sLength -=2;
begS +=2;
tempSi++;
}
tempS2 += "Ss = " +IntToHex(memblock[begS],2) +"\n";
tempS2 += "Se = " +IntToHex(memblock[begS+1],2) +"\n";
tempS2 += "AhAl = " +IntToHex(memblock[begS+2],2) +"\n";
begS = begS +3;
sLength = sLength +3;
//}
tempS2 += "- - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - \n";
}
void DHT(int begH,int hLength)
{
int tempDHT = 0,LiCount;
tempS2 += "Lh = 16進位的 " + IntToHex(hLength,4) + " = 十進位的 " + AnsiString(hLength) + "\n";
hLength -= 2;
begH += 2;
//tempS2 += "\nbegH = " + AnsiString(begH) + "\nhLength = " + AnsiString(hLength);
while(hLength > 1)
{
//算L1~L16的數量
tempS2 += "第" + AnsiString(huffmancode_number + 1) + "個huffmantable.\n";
LiCount = 0;
LiCount = huffLi(begH); //Licount = L1 ~ L16 的值相加
Generate_size_table( LiCount,Tc,Th);
Generate_code_table(LiCount,Tc,Th);
Order_codes(LiCount,Tc,Th);
huffmancode_number++;
HuffmanTable(begH+1,LiCount,Tc,Th);//根據Li的數量去產生Vij.加上1是因為TcTh佔了1byte;
begH += (LiCount+17); //用來skip上面那行指令--> HuffmanTable(begH)
hLength -=(17 + LiCount);
hLength = hLength;
//tempS2 += "\nbegH = " + AnsiString(begH) + "\nhLength = " + AnsiString(hLength) + "\nLiCount = " + AnsiString(LiCount);
}

}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Open1Click(TObject *Sender)
{
if(OpenPictureDialog1->Execute())
{
String tempT;
char ch;
tempI1 = 0;
int tempI2 = 0,tempget;
sFileName = OpenPictureDialog1->FileName;
TJPEGImage* Jpg = new TJPEGImage;
Jpg->LoadFromFile(sFileName);
Image1->Picture->Bitmap->Assign(Jpg);
input.open(sFileName.c_str(),ios::binary|ios::in|ios::ate);
if(!input)
{
ShowMessage(" ");
}
size = input.tellg();
memblock = new int [size];
input.seekg (0, ios::beg);
tempget = input.get();
tempT = IntToHex(tempget,2);
while(!input.eof())
{
tempS1 += tempT + " ";
memblock[tempI2] = tempget;
tempI1++;
tempI2++;
tempget = input.get();
tempT = IntToHex(tempget,2);
/*if(tempget == 0xff)
tempget = tempget;
*/
if(tempI1 == 16)
{
tempS1 += "\n";
tempI1 = 0;
}
}
input.close();
Label1->Caption = AnsiString(tempS1);
Label2->Caption = AnsiString(tempI2);
}
Button1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
tempS2 = "-我是翻譯分隔線------------------------------------------------------------\n";
i = 0;
tempI1 = 0;
while(i < size)
{
if(memblock[i]== 0xff)
{
tempLength = 0;
if((memblock[i+1] >= 0xc0)&&(memblock[i+1] < 0xc4))
{
//(Start of Frame markers,non-differential,Huffman coding)
if(memblock[i+1] == 0xc0)
tempS2 += IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->Baseline DCT(SOF0)";
if(memblock[i+1] == 0xc1)
tempS2 += "\n" + IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->Extended sequential DCT";
else if(memblock[i+1] == 0xc2)
tempS2 += "\n" + IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->Progressive DCT";
else if(memblock[i+1] == 0xc3)
tempS2 += "\n" + IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->Lossless(Sequential)\n";
tempS2 += "(Start of Frame markers,non-differential,Huffman coding)\n\n";
}
else if(memblock[i+1] == 0xcc)
{
//define arithmetic coding conditioning(s)
tempS2 += "\n" + IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"--> Define arithmetic coding conditioning(s).";
tempS2 += "Arithmetic coding conditioning specification\n";
}
else if(memblock[i+1] == 0xc4)
{
//----FFC4:define Huffman table(s)
tempS2 += "\n"+ IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"--> Define Huffman table(s).\n";
tempLength = memblock[i+2]*256 + memblock[i+3];
tempS2 += "- - - - - - - - Huffman table 開始 - - - - - - - -\n";
DHT(i+2,tempLength);
tempS2 += "-- - - - - - - - Huffman table 結束 - - - - - - - -\n";
}
else if((memblock[i+1] >= 0xc5)&& (memblock[i+1] <= 0xC7))
{
if(memblock[i+1] == 0xc5)
tempS2 += "\n" + IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->Differential sequential DCT";
else if(memblock[i+1] == 0xc6)
tempS2 += "\n" + IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->Differential progressive DCT";
else if(memblock[i+1] == 0xc7)
tempS2 += "\n" + IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->Differential lossless(Sequential)";
tempS2 += "(Start of Frame markers,differential,Huffman coding)\n";
}
else if((memblock[i+1] >= 0xc8)&&(memblock[i+1] <= 0xcb))
{
if(memblock[i+1] == 0xc8)
tempS2 += "\n" + IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->JPG:Reserved for JPEG extensions";
else if(memblock[i+1] == 0xc9)
tempS2 += "\n" + IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->Extended sequential DCT";
else if(memblock[i+1] == 0xca)
tempS2 += "\n" + IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->Extended sequential DCT";
else if(memblock[i+1] == 0xcb)
tempS2 += "\n" + IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->Lossless(Sequential)";
tempS2 += "(Start of Frame markers,non-differential,arithmetic coding)\n";
}
else if((memblock[i+1] >= 0xcd)&&(memblock[i+1] <= 0xcf))
{
if(memblock[i+1] == 0xcd)
tempS2 += "\n" + IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->Differential sequential DCT";
else if(memblock[i+1] == 0xce)
tempS2 += "\n" + IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->Differential progressive DCT";
else if(memblock[i+1] == 0xcf)
tempS2 += "\n" + IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->Differential lossless(Sequential)";
tempS2 += "(Start of Frame markers,differential,arithmetic coding)\n";
}
else if((memblock[i+1] >= 0xd0)&&(memblock[i+1] <= 0xd7))
{
tempS2 += "RSTm*:Restart with modulo 8 count m\n";
}
else if(memblock[i+1] == 0xd8)
tempS2 += IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->Start of Image\n";
else if(memblock[i+1] == 0xd9)
tempS2 += IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->EOI:End of Image\n";
else if(memblock[i+1] == 0xda)
{
tempS2 += IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->SOS:Start of Scan\n";
tempLength = memblock[i+2]*256 + memblock[i+3];
SOS(i+2,tempLength);
}
else if(memblock[i+1] == 0xdb)
{
//--FFDB:定義量化表-------------------------
tempS2 += IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->DQT:Define quantization table\n";
tempLength = memblock[i+2]*256 + memblock[i+3];
tempS2 += "- - - - - - -- - - - - - - - Quqntization Table開始 - - - - - - - - - - - - - - - \n";
DQT(i+2,tempLength);
tempS2 += "- - - - - -- - - - - - - - Quqntization Table結束 - - - - - - - - - - - - - - \n";

}
else if(memblock[i+1] == 0xdc)
tempS2 += IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->DNL:Define number of line\n";
else if(memblock[i+1] == 0xdd)
tempS2 += IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->DRI:Define restart interval\n";
else if(memblock[i+1] == 0xde)
tempS2 += IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->DHP:Define hierarchical progression\n";
else if(memblock[i+1] == 0xdf)
tempS2 += IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->EXP:Expand reference component.\n";
else if((memblock[i+1] >= 0xe0)&&(memblock[i+1] <= 0xef))
{
//--我是給application的tag------------------------
tempS2 += IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->我是給application的tag.\n";
tempLength = memblock[i+2]*256 + memblock[i+3];
tempS2 += " 要跳過" + AnsiString(tempLength)+ "個byte\n";
}
else if((memblock[i+1] >= 0xf0)&&(memblock[i+1] <= 0xfd))
tempS2 += IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->reserved for JPEG extensions.\n";
else if(memblock[i+1] == 0xfe)
tempS2 += IntToHex((memblock[i]),2) + IntToHex((memblock[i+1]),2)+"-->COM:comment\n";
i = i + 2 + tempLength;
tempI1 = 0;
}
else
{
tempS2 += IntToHex((memblock[i]),2) + " ";
i++;
tempI1++;
if(tempI1 == 10)
{
tempS2 += "\n";
tempI1 = 0;
}
}
}
Label3->Caption = AnsiString(tempS2);
Button2->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
//int aaaaa = 127;
String sss;
StringGridDC_0->RowCount = LastK[0][0] + 1;
StringGridDC_1->RowCount = LastK[0][1] + 1;
StringGridAC_0->RowCount = LastK[1][0] + 1;
StringGridAC_1->RowCount = LastK[1][1] + 1;
int intCodeLength,intSymbol,intHuffcode;
int btnTemp= 0,btnTc,btnTh;
String tempSSS;
while( btnTemp< 4)
{
btnTc = btnTemp / 2;
btnTh = btnTemp % 2;
for(i = 0; i <= LastK[btnTc][btnTh];i++)
{
tempSSS = " ";
for(j = 0; j < Huffsize[btnTc][btnTh][i] ;j++)
{
tempSSS += AnsiString(Huffcodebin[btnTc][btnTh][i][j]);
}
sHuffcode[btnTc][btnTh][i] = tempSSS;
if(btnTemp == 0)//TcTh = 00--->DC0
{
StringGridDC_0->Cells[0][i+1] = AnsiString(i);
StringGridDC_0->Cells[1][i+1] = AnsiString(Huffsize[btnTc][btnTh][i]);
StringGridDC_0->Cells[2][i+1] = AnsiString(Huffcode[btnTc][btnTh][i]);
StringGridDC_0->Cells[3][i+1] = AnsiString(sHuffcode[btnTc][btnTh][i]);
StringGridDC_0->Cells[4][i+1] = AnsiString(HuffVal[btnTc][btnTh][i]);
DC0.insert(HuffVal[btnTc][btnTh][i],Huffcode[btnTc][btnTh][i],Huffsize[btnTc][btnTh][i]);
}
if(btnTemp == 1)//TcTh = 01--->DC1
{
StringGridDC_1->Cells[0][i+1] = AnsiString(i);
StringGridDC_1->Cells[1][i+1] = AnsiString(Huffsize[btnTc][btnTh][i]);
StringGridDC_1->Cells[2][i+1] = AnsiString(Huffcode[btnTc][btnTh][i]);
StringGridDC_1->Cells[3][i+1] = AnsiString(sHuffcode[btnTc][btnTh][i]);
StringGridDC_1->Cells[4][i+1] = AnsiString(HuffVal[btnTc][btnTh][i]);
DC1.insert(HuffVal[btnTc][btnTh][i],Huffcode[btnTc][btnTh][i],Huffsize[btnTc][btnTh][i]);
}
if(btnTemp == 2)//TcTh = 10---->AC0
{
StringGridAC_0->Cells[0][i+1] = AnsiString(i);
StringGridAC_0->Cells[1][i+1] = AnsiString(Huffsize[btnTc][btnTh][i]);
StringGridAC_0->Cells[2][i+1] = AnsiString(Huffcode[btnTc][btnTh][i]);
StringGridAC_0->Cells[3][i+1] = AnsiString(sHuffcode[btnTc][btnTh][i]);
StringGridAC_0->Cells[4][i+1] = AnsiString(HuffVal[btnTc][btnTh][i]);
AC0.insert(HuffVal[btnTc][btnTh][i],Huffcode[btnTc][btnTh][i],Huffsize[btnTc][btnTh][i]);
}
if(btnTemp == 3)//TcTh = 11--->AC1
{
StringGridAC_1->Cells[0][i+1] = AnsiString(i);
StringGridAC_1->Cells[1][i+1] = AnsiString(Huffsize[btnTc][btnTh][i]);
StringGridAC_1->Cells[2][i+1] = AnsiString(Huffcode[btnTc][btnTh][i]);
StringGridAC_1->Cells[3][i+1] = AnsiString(sHuffcode[btnTc][btnTh][i]);
StringGridAC_1->Cells[4][i+1] = AnsiString(HuffVal[btnTc][btnTh][i]);
AC1.insert(HuffVal[btnTc][btnTh][i],Huffcode[btnTc][btnTh][i],Huffsize[btnTc][btnTh][i]);
}
}
btnTemp++;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
StringGridDC_0->ColWidths[0] = 35;
StringGridDC_1->ColWidths[0] = 35;
StringGridAC_0->ColWidths[0] = 35;
StringGridAC_1->ColWidths[0] = 35;
//--------------------------------------
StringGridDC_0->ColWidths[1] = 45;
StringGridDC_1->ColWidths[1] = 45;
StringGridAC_0->ColWidths[1] = 45;
StringGridAC_1->ColWidths[1] = 45;
//----------------------------------------
StringGridDC_0->ColWidths[2] = 50;
StringGridDC_1->ColWidths[2] = 50;
StringGridAC_0->ColWidths[2] = 50;
StringGridAC_1->ColWidths[2] = 50;
//----------------------------------------
StringGridDC_0->ColWidths[3] = 110;
StringGridDC_1->ColWidths[3] = 110;
StringGridAC_0->ColWidths[3] = 110;
StringGridAC_1->ColWidths[3] = 110;
//------------------------------------------
StringGridDC_0->ColWidths[4] = 120;
StringGridDC_1->ColWidths[4] = 120;
StringGridAC_0->ColWidths[4] = 120;
StringGridAC_1->ColWidths[4] = 120;
//------------------------------------------
StringGridDC_0->Cells[0][0] = "DC_0";
StringGridDC_0->Cells[1][0] = "Huffsize";
StringGridDC_0->Cells[2][0] = "Huffcode";
StringGridDC_0->Cells[3][0] = "Huffcode(binary)";
StringGridDC_0->Cells[4][0] = "HuffVal";
//------------------------------------------
StringGridDC_1->Cells[0][0] = "DC_1";
StringGridDC_1->Cells[1][0] = "Huffsize";
StringGridDC_1->Cells[2][0] = "Huffcode";
StringGridDC_1->Cells[3][0] = "Huffcode(binary)";
StringGridDC_1->Cells[4][0] = "HuffVal";
//------------------------------------------
StringGridAC_0->Cells[0][0] = "AC_0";
StringGridAC_0->Cells[1][0] = "Huffsize";
StringGridAC_0->Cells[2][0] = "Huffcode";
StringGridAC_0->Cells[3][0] = "Huffcode(binary)";
StringGridAC_0->Cells[4][0] = "HuffVal";
//------------------------------------------
StringGridAC_1->Cells[0][0] = "AC_1";
StringGridAC_1->Cells[1][0] = "Huffsize";
StringGridAC_1->Cells[2][0] = "Huffcode";
StringGridAC_1->Cells[3][0] = "Huffcode(binary)";
StringGridAC_1->Cells[4][0] = "HuffVal";
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button3Click(TObject *Sender)
{
String resultDC0,resultDC1,resultAC0,resultAC1;
resultDC0 = DC0.Print();
resultDC1 = DC1.Print();
resultAC0 = AC0.Print();
resultAC1 = AC1.Print();
Label5->Caption = resultDC0;
Label6->Caption = resultDC1;
Label7->Caption = resultAC0;
Label8->Caption = resultAC1;
}
//---------------------------------------------------------------------------

星期日, 10月 07, 2007

[新聞]一覺到天明非難事 找出失眠原因 調整生活習慣

轉載自YAHOO新聞
《健康生活列車》一覺到天明非難事 找出失眠原因 調整生活習慣
更新日期:2007/10/07 09:12 記者:【姜林文川(高雄市憂鬱症共同照護網主任醫師)】
對於許多失眠的人來說,等著睡著的那段時間總是特別地難熬。而由於身體或心理沒有獲得充分的休息,總覺得沒睡飽隔天精神都會特別差、脾氣特別不好,有時候還會出現嚴重的黑眼圈,對愛美的女性而言,失眠的殺傷力可大了。到底為何會失眠?又該怎麼解決失眠的困擾呢?

一天需要睡多久是因人而異的,一般而言,一個健康的成人每天需要7到9小時的睡眠,但是也有一些人只需要睡5、6個小時,在白天仍然可以勝任他的工作,也有些人非要睡足10小時,白天才能好好工作。

當邁入老年後,真正躺在床上可以睡著的時間會自然而然地減少。簡單地說,每個人需要的睡眠時間沒有定論,只要你主觀感受睡得好,且醒來後精神還不錯,即使只睡4、5個小時也算睡夠了。

引起失眠原因很多,不過歸納起來,主要的原因有下列幾種:

1.心理因素。壓力常是導致短期失眠的主要原因,這些壓力可能來自於工作或學校,也可能來自家庭及婚姻,或是擔心自己、親人的健康。通常短期失眠的情況會隨著這些生活事件的解決而得到改善,不過如果壓力持續出現,或壓力消失了卻沒有處理好短期的失眠,也有可能轉變為長期失眠。

2.生活習慣。某些生活中的小習慣可能會影響睡眠而你並未注意到,例如睡前飲用含咖啡因的飲料(茶、咖啡等)或抽菸、在床上看需要耗腦力的書、睡前洗過熱的澡或有劇烈的運動。另外有些失眠的人睡前會喝點小酒助眠,長久下來不僅有上癮的危險,且因酒精對大腦的作用反而導致失眠得更嚴重。

3.環境因素。例如房間太冷或太熱,住家環境太吵,枕頭的高度、睡眠環境的舒適度等,這些因素都可能影響睡眠。

4.時差。由於跨過數個時區,會使生理時鐘受到擾亂。

5.身體狀況。例如有疼痛、氣喘、呼吸困難、停經症候群等。

6.藥物。某些藥品可能有失眠的副作用,如:抗憂鬱劑。

如果失眠的問題持續超過一星期以上時,且主觀感受生活已受到失眠所困擾,建議求助醫生,協助找出失眠的原因,調整生活習慣,必要時再輔以藥物治療。以下簡單介紹幾種調整睡眠的方法:

1.不要在晚上喝刺激性的飲料,如:茶、咖啡或酒。

2.增加白天的運動量,但避免在睡前從事劇烈運動。

3.當你已有失眠的問題時,不要在白天小睡,以增加白天的疲勞度,晚上較易入眠。

4.營造容易放鬆的入眠環境,增加床的舒適度。

5.床是用來睡覺的,不要在床上工作或看書。

6.躺下超過半小時還睡不著時,請離開床到別的環境作些柔軟、幫助放鬆的活動,或者聽音樂、看看閒書,直到有睡意了再回床上。

星期六, 10月 06, 2007

[日誌]風大雨大颱風天

那個柯羅莎颱風還真是會挑時間來
完全沒颱風假可以放到
而且整個台灣都在暴風半徑裡面
讓人完全不想走出家門

好悶好悶喔
反正現在沒啥事
就來寫個日誌好了

其實之前聽學長他們說
以前實驗室有大咪聽
就是有點像論文研討那樣
大家會在一起
聽某個學生presentation

不過到我們這屆就沒有這樣的慣例了
其實我覺得那個大咪聽很好耶
可以練習自己上台報告的技巧
又可以讓台下的人增加廣度
我整個好羨慕好羨慕
好想好想在我們這屆
恢復這個傳統
也有大咪聽

上次論文研討課的時候
老師們也有講到
要想辦法增加自己的深度與廣度

不僅僅是要在自己的領域
佔有一席之地
也要知道同樣是資工這一塊
其他人都在做什麼

昨天晚上MSN
政瑋跟我提到
她有個想法
想要一年級的聚在一起
我們也來個自己的論文研討
當然一開始是有心要這樣用的人
先當報告的先鋒

我覺得
要全班一起
很難
而且我覺得有個指導者的角色
會比較好
不一定要是老師
學長也可以
畢竟
他們比較多經驗阿
如果我們自己討論討論的
有時候走偏了都不知道

剛好我昨天回家前
有跟劉名洋與陳相如
提到我想要實驗室的大咪聽
看他們的意見
想不想一起這樣做
如果要的話
就各自去問自己的老闆
(總不能我跑去問院長吧XDD)

他們竟然同意耶
真開心!!

本來當時就要衝去問阿坤了
不過ROSA提到
不知道阿梅願不願意
我們這樣自作主張好像不太好

雖然這件事很好
可是要執行的話
每個人的payload會變的比較重
如果沒問過她就先跟老師說的話
阿梅可能會不開心
她之前就有說過他喜歡自己去找老師了

我覺得應該是還好啦
這也是個訓練自己的好機會
阿梅應該OK吧
不是全部的時間都大家一起咪聽
當然要有自己單獨跟老師咪聽的時間阿

不過後來決議還是
同個老闆的學生群自己先討論過
再去跟自己的老闆說
不然到時候
有的有講
有的沒講
不就互婊了

噗哈哈
我家阿坤
就我一個學生
完全不需要去說服別人

等著跟老闆討論這件事就好了

不過
有實驗室大咪聽的話
再加上政瑋提的一年級一起論文研討
我可能就負擔太重了
還是跟阿坤討論看看
聽聽他的建議好了

星期四, 10月 04, 2007

[研究日誌]Frame header in JPEG

唔...
根據BOSS的說法
我似乎已經懂了JPEG規格書了
應該可以寫完JPEG Decoder了

真開心
覺得自己被認同了XDD
不過
因為人家現在的那個程式長的太大了
很礙眼啊
很難Debug
可是程式有問題又超痛苦的
現在想說先整理自己的想法
重新寫一次程式

首先
在Start of Image之後
我們會讀到DQT
也就是define Quantization table
接著會讀到Frame Header
在Frame Header中的資訊對於我們整張圖是很重要的
由規格書P35頁可以知道
除了一開始的tag之外
Frame Header還提供了Lf,P,Y,X,Nf,[C,H,V,Tq]等的資訊
Lf 就是Frame的Length是指這串tag佔了幾個byte
 因為[C,H,V,Tq]可以有很多組啊
所以要跟人家說到多少個byte是我現在要解讀的東西
不然會讀到錯的資訊
然後由Y跟X就可以知道這張影像的大小
New相對應的陣列

可是要new幾個陣列咧
如果一張影像都是灰階
那就不需要那麼多個啦
一個就好!!
這時候Nf就派上用場了
Nf就是Number of Frame component
所以根據這個的值去產生Nf個 X * Y 的陣列

然後啊
JPEG不是有做Downsampling的動作
所以要根據接下來的[C,H,V,Tq]去做還原sampling的動作
那個C只是編號
H和V則是sampling的係數
而Tq則是這個Frame Component 要讀哪個Quantization Table
這就是Frame Header的功用

星期二, 10月 02, 2007

[研究日誌]1002

哇靠
今天早上下午都BOSS的課
真的是超刺激的
早上根本就跟Boss隔空喊話
果然昨天沒把Frame Header和Scan Header
今天會難熬

一開始
Boss還是不懂我的問題在哪
不過他今天感覺就是有備而來
除了把他自己的那本規格書帶來之外
也把之前用Rex.jpg用十六進位讀檔output成的Rex.pdf印出來
整個開始看著兩本討論
我的疑問在於
因為我用wang.jpg去讀檔
發現那個Start of Scan後面
為什麼沒有DRI的TAG
啊這樣我是要怎麼解讀啦
可是老師都是用Rex.jpg去讀
Rex裡面的Start of Scan
後面就直接DRI阿
我問老師這個問題他也楞了一下
不過我有跟他說
可能在Scan Header 和 Frame Header裡面
可以知道
不過我還沒看那邊
我看BOSS要昏倒了
我要去做櫃檯了
先降
晚點再補

星期一, 10月 01, 2007

[研究日誌]Frame header


這陣子為了那個MCU編碼
真的是傷透腦筋
總感覺少了什麼
應該要再有個東西
像是標頭檔之類的
才能夠順利的解出MCU阿

boss一直叫我再多看幾遍
問我Ri是啥鬼
我...我...我...
我真的不知道錒
可是BOSS又說他已經看到了
只是不想跟我講
要我自己去找

煩耶
真的是很不想再看那本都是蝌蚪文的書
可是程式卡在這又不是辦法

想說硬解嘛
又不知道這個MCU要讀哪個table去做解碼

只好耐住性子
認真看規格書P.34的圖和P.37的Scan header syntax
結果在Csj那段發現了個Nf
Nf要去看frame header
oh my god!!!

我當初完全就只知道它是based line DCT 就跳過去姐huffmantable了

該不會這邊的參數是關鍵吧!!
今天晚上要拼了!!

念英文是吧!!
哼...
我跟你拼了!!