Wednesday, April 01, 2009

Beat with Techno! 強烈節奏感下的脈動!

「Techno」這個詞其實是可以望文生義的,一看就覺得是有非常強烈的後現代合成音效的感覺,通常來講也應該是DTMers給人最早最先的刻板印象之一。


順便測試一下Blog Tooltips,好像運作很正常 XD


音樂要讓人high方法其實並不算真的很多,清一色幾乎都是重節拍以及重低音,可能再加上一點所謂的trance trick(Trance有個很有趣的中文翻譯,叫作迷魂樂)-好吧,我承認我認為能對RnB(節奏藍調,就是台灣95%的音樂...更簡單的說就是抒情音樂)High的起來的人實在不簡單。當然,並不是低音咚咚咚就能讓人開始搖起頭來,如果人類的大腦聽覺區有那麼好操縱就好了。每個人能夠對應的音樂不盡相同,當然大多數人都共享著共同的頻率就是。


來段最典型的Techno吧

TaQ - Innocent Walls

這首歌會特別被我拉出來提,是因為它居然僅僅只靠一個音當主旋律,就能夠製造出非常迷濛的效果。這也是典型的Techno重視的-不靠音頻上下來讓人覺得震撼,而是強烈的節奏感!就這點來講,其實跟Drum'n'Bass還滿接近的。

Tuesday, March 31, 2009

Innate Horror : The Path

1887991380_e39928254c_b

在今年的 GDC(Game Developer Conference,電玩開發者論壇)上,Tale of Tales這家以exotic風格起家的開發公司,發表了他們的新作品 : The Path。不同於上一部作品The Graveyard,這次的作品好歹...比較讓人看得懂。基本上如果想體會什麼叫做看不懂的作品的話,請去下載The Graveyard的試玩版玩一次就知道了。


The Path基本上是取材於一個老童話Little Red Ribbon hood(小紅帽與大野狼)的故事。其實我想不少人對恐怖的格林童話這本書不太陌生,應該或多或少都知道小紅帽的故事事實上並沒有現在聽到的那麼溫馨可愛(好啦,把一條活生生的狼開腸破肚應該也稱不上溫馨),最早的版本吃掉了就是吃掉了,狼又不是蛇,不會把小紅帽整個活吞下去,當然是啃個稀巴爛在嚼一嚼,也沒有那個會被PETA組織譴責的獵人幫狼動外科手術。


況且,把小紅帽從大野狼肚子拉出來,聽起來就好噁;真不知道為什麼他們會想出那麼噁心的童話說給小孩子聽 = =


這款遊戲我個人對她的評價是,一款黑暗的藝術品。當然這個評價算是有褒有貶,因為藝術品或多或少帶有一點"不是每個人都能理解"的意思在內,這款遊戲自然也是這樣...好吧,應該說,這個工作室做出來的遊戲都是這樣。


整個故事的主軸是以六個年齡姓名都不同的小女孩為中心,她們代表的就是小紅帽的各種年齡跟性格。六個女主角的名字全部都跟血紅有關係,性格從正常的小女孩到"She enjoys seeing the world and life rotten」的扭曲性格都有。這個故事其實本身並沒有一個真正的主軸,甚至她的劇情到底是怎樣都引起了廣泛的討論。當然,不可能會有任何一個企畫會做出完全讓人沒有頭緒的劇情,她仍然是有一定的線索,只是傾向於讓玩家自己去發掘。


Ginger_flowers

Innate Horror,這個字本身的意思是原始恐懼,就是任何讓人直覺不太對,可是卻完全說不出來的那種感覺。這款遊戲將Innate Horrorr發揮到淋漓盡致,路上看起來很正常的熊寶貝,泰迪熊,可是拿起來一看卻是雙頭;明明是很正常的路邊鮮花,可是拿起來的時候女主角心中卻想把它放在一個說不上來到底哪裡詭異的地方;路上會收集到一些看似正常的配件,可是在奶奶家裡面卻又完全變了樣...加上這款遊戲我個人非常推崇的shader效果,把整個氣氛做得非常讓人入戲。


Ruby_forest

當然,不是每個人都會有那麼深的感覺。這款遊戲其實是相當沉悶的,不管是氣氛上還是動作上。很多人可能玩個五分鐘就受不了這種緩慢的操作性,加上毫無頭緒的故事背景內容。不過,我個人是覺得很多藝術品其實我也看不出個所以然...連肚子痛隨手鬼畫符兩下都可以變成文學墨寶了,我只能說藝術這種東西真的很因人而異 :3 這款遊戲我也是玩了半小時才慢慢覺得她想表達的東西似乎並沒有那麼淺,大野狼是什麼?真的是看起來很可怕的東西嗎?似乎並不見得。


anyway, 這是一款推薦的好遊戲。不過,要是自己的tune跟他對不起來的話,那也不用勉強去硬理解它。畢竟,我也看不懂畢卡索的抽象畫,當然也不是每個人都能對這款遊戲有那麼深的感受 (:

Ruby_bunker

Ginger-fence

Monday, March 30, 2009

Flexible script based module : Mimic

Yes, Mimic, I named it (:

This flexible script runner & modifier is for character design used in Project Iris. The main object of this module is to create a generic, flexible and easy use AI modifier, and even Behavior can be did so.

This module is separated into 4 parts :

1. Mimic Basic Behavior Define :
This part includes "element" of each action or behavior. For example, we can discompose WALKING into "Move" and "Change animation from standing still to walking", and "Slap" can be discomposed into "Walk to someone" "play slap animation" "Do damage to someone" and "Deliver expression to someone". Of course, "Walk to someone" can again dissolve into "Track for someone and get position" "play walking animation" and "Move to position".

For more advanced, any NPC will have to against gravity in every frame, so every NPC will have "Gravity Effect Recalculate" element and will be run every frame.

2. Mimic Basic Object Define :
This part offers basic framework of every object. For example, NPC object will always have such ability : walking, running, talking and basic attack. This part is still in development.

3. Mimic Script Translator :
This part translate script into .chr file. Literally, .chr indeed is .dll structure with numerous symbol callback.

4. Mimic Behavior Manager
This part is literally a wrapper of DllLoader, and do some resource handle for main frame.

Of course everyone can see, the main and the most is MBBD. The most challenging is splitting every action into element. In limited count of element we can compose a large number of actions, and can be managed in run-time. This is Mimic's main propose.

Sunday, March 29, 2009

Iris底層引擎變更 / 開發延期計畫

Iris改用Ogre來開發。

促成這項改變的主要原因是,我跟Dolice討論評估了一下,我們似乎沒辦法負擔由我一個人負責Irrlicht<==>Ogre Fx的開發成本,這個成本太大。況且最重要的是,我個人實在沒辦法負擔在沒支援的情況下一個人負責維護Irrlicht的底層。

One man is all(囧) 當初評估用Irrlicht而不是Ogre的主要原因是,Irrlicht使用上感覺比較方便,而且有很多現成的素材可以使用。不過做到現在才慢慢發現,一個人維護Irrlicht底層是沒辦法很有效率的把我手上現有的東西無痛轉換成Irr要用的格式跟方法。

雖然很想說"當初講好的支援呢",不過現在講這八個字好像沒啥意義 :/ 不過也不是所有都失去了,至少認清了一些開發上會碰到的困難跟現實,對我來講也算是頗有收穫啦。平台切換到Ogre以後,至少可以多一個人協助維護。

Ogre的話需要開發的時間就長很多了,不過至少時程安排可以掌握在我自己手裡的。至少我不用再相信什麼"等你等級練起來再一起KO這個大魔王"這種鬼話,已經有一個現成的勇者可以利用了(奸笑)。

而且,目前能用的工具突然變很多了,連地形產生器都弄好了XD

其實反而有種海闊天空的感覺呢,放手去做吧。其他組員的話那真是抱歉了,main frame要延後了 :~ 我也要再加點油,這次真的是no execuse了 :/

Korg TR61

今天特地去EMI看了一下他們新進的TR61,頗有以前那台老骨董Z1的味道(笑)。可惜我手機兼像機放在台北忘了帶回台中,沒辦法偷拍幾張下來 :/



TR61主打的似乎是輕(對,我用了"似乎"兩個字)。跟她的價格(36000/41000)比起來,她的功能的確是少了一點,很多音色都要買外掛去掛上去(Roland的SS,我受夠你了!)。不過跟她同等級的M50(39500/44000)比起來,似乎C/P又好了一點點 XD 這個頗讓人難以抉擇阿。

不過要是想帶著跑團的話,換我我可能會買M50吧,為什麼我是個Korg控阿(抱頭)

Friday, March 27, 2009

Iris目前工作進度

Dolice最近正在忙Ogre的Partical部分,不過我還滿懷疑能做到什麼地步 :3

我自己則是把Irrlicht慢慢的包成一個能用的東西,包含了自己定義的event跟wrapper。我最近在看code的時候很驚訝的發現,有很多non-SVN的部份我居然不知道要怎麼把它implement進SVN版本,該說Irrlicht在這方面本來就不適合re-boxing嗎...

Iris應該沒辦法趕在愚人節前把in-wrap prototype搞定了,最近事情比想像中的多很多。很多事情不是單靠我跟Dolice就能搞定的阿 :/ 況且這傢伙在美國好像最近也很忙 XD

原來今年日光節約時間提早了,難怪我丟Dolice MSN水球都在睡覺 -_-

目前預定進度應該暫時還是以Trac Ticket為準,反正很多東西還要在思考一下怎麼處理。最近似乎我自己心情也比較亂一點,在公車上也沒心情去看技術文件了,這幾天我發現我在公車上幾乎都在看小說The Devil wears Prada XD.

--

1. Event部分暫時用C#的標準EventArgs做法,不過這個沒有編譯器支援一些原生功能的話還滿...難寫的.

2. Irr用的Event重新Review了一下,似乎可以直接跟EventArgs做interchange.

3. Sound部分的FreeSL最近就會把wrap好的版本加入SVN Iris. 不過要先解決幾個...莫名其妙的Resource ID leak問題,這到底是OpenAL的問題還是FreeSL的問題?

4. 有一個很致命的問題還沒上ticket,就是Irrlicht拿出來的底層device有問題,似乎是因為render state cache機制的關係?這個問題沒解決,這部分就沒辦法上Iris SVN

-
我一定是瘋了才在凌晨四五點還在搞這個....

Recently Update

Recently I finally have some spare time on this blog.

Sometimes I always complain about lacking of time, but seems always let time be leaked. I have got so much to study on, with ambitious, C#, CLR, ECC, Ogre...etc, but lack of motivation.

Ambitious, ironically.

Back to the time which I was been chased, always try to devour as much as knowledge as I can. These days seems pain, but I miss it. In HTC days, I workout like an college attendant, research alike, and study alike. I do really like, as long as it also pain, to consume every information I can get.

Motivation and passion, I have lost of it, I am missing it.

Friday, July 18, 2008

美食獵人時間 : 台北地下街蘭州拉麵

這次的目標是台北車站地下街(不是台北地下街喔)的有勁蘭州拉麵。這家麵標榜的是現作的手工麵+15分鐘沒送上來讓你呷免錢,不過事實上因為帳單上沒記錄時間,所以這次好像沒享受到這福利(笑)

DSC00071

他們的點菜單,這師傅看起來很專注 XD

我們一行人點的紅燒牛肉麵

DSC00073

附湯的炒手乾麵

DSC00075

還有正在作麵的師傅(請看後面,霹啪聲超響的XD)

DSC00076

由於是手打麵的關係,同行的小王說這是他吃過最好吃的麵 XD。我個人則是認為我點的紅燒牛肉+西域湯頭很夠勁。

這家的地址在台北車站地下街靠近往上的樓梯那一側的左邊,消費約140上下,他們的手工麵是我們幾個人非常推薦的一大特點,一定要吃吃看喔 XD

Thursday, July 10, 2008

美食獵人時間:福珍排骨酥麵

今天晚餐就往華陰街的"福珍排骨蘇麵"勘查晚餐。本來沒打算走那麼遠的,不過因為實在太閑了,連塔城街消失的牛肉麵街都勘查過了(這個又是另外一段刺激的故事了,下次再補),就往華陰街人行步道慢慢的去獵食美食。

我跟我朋友點的分別是排骨酥麵跟排骨酥羹麵,這是排骨酥羹麵


我朋友點的,他說感覺上這個羹有點不夠稠 XD 我自己則是點了排骨酥麵


既然是自己點的,就多拉一張近照來看仔細一點吧 A_A 這排骨酥還滿好吃的喔


兩碗都是65大洋,感覺還挺物超所值的。他店裡面供應的不是免洗筷而是鋼筷這點加分不少,不過很不幸的我還是帶著我自己的筷子組啦 :D~ 排骨酥剛送上來的時候看起來有點黑,好像有點炸太久,不過口感是一樣不錯,炸粉的香味配上好喝的蘿蔔湯~~ 算是相當的絕配了。

下次再試試看他們的魷魚羹麵 A_A

Wednesday, April 02, 2008

Maybe a chance to implement a new insight of my fortune?

In fact, I have several opportunities of getting a well-incoming job these days, but I don't like them. Due to lacking of economical pressure, I am very passive in looking for job in these days. I am somehow confused about what I want, and what I will walk to. I am still looking forward to having abroad scholar and staying in US, but due to I am not finish my college, it's seems very hard to apply a graduated school and I must start my studying in college. It's hard to have scholar nowadays, and also hard to apply a good college in US. Although then, I still want to prepare SAT for this use.

I am going to have a game-design short-period studying in Taipei for about 4 months. I think maybe I can get some good entry in my resume if I go to a game-design company for 1 or 2 years, and earn some capital for my further path. Getting some good entry in my resume might my primary object, and in these 4 months, I hope I can dedicate in passing these certifications.

I am still get confused.... anyway.

Saturday, January 19, 2008

年度失望大作 : Hellgate London

從2005年的E3就開始讓人引頸企盼的Hellgate:London(中譯改了幾次,從暗黑之門變成現在的地獄之門倫敦),打著正統Diablo 2製作小組的旗號,成立的一家新的工作室Flagship Studio 的處女航,幾乎擄獲了大多數廣大的D2迷甚至是暴風雪迷的目光。後來一直經過了先期Alpha 測試,經過了Beta測試,問題慢慢浮現出來。

這款遊戲的內容真的足以... 發售了嗎?

誠然以台灣自己的標準來講,開發個兩年多是個不可思議的現象,你看看那個網龍開發一款遊戲甚至只需要半年多!多驚人的效率阿!不過對國外來講開發個三四年並不算太少見的例子,甚至還有開一開開個兩三年就腰斬了(你看看那個Wish就是一個例子)。當初beta只開放到第三章節(整個Hellgate一共五個章節),少數選出來的beta tester才能去接觸到第四章節跟第五章節。基本上在這種情況下,能夠完整測試的也只有到前三章,而當初許多測試者已經發出了一些警告。

「遊戲場景重複性質實在太高了。」

「遊戲主線劇情實在太薄弱了。」

「耐玩性太低,bug也太多了。」

在萬聖節發售當天,開發商超高效率在當日就出了一個Patch0處理一些問題,包含一些嚴重影響遊戲性的臭蟲。的確,開發商的效率是有目共睹的高,不過到底是為什麼要這樣趕鴨子上架?

普通來講,大多數人都認為發行商EA要負絕大多數責任,是EA逼迫開發商在遊戲還沒完全完成的時候就發售的。而另外一方面,開發商旗艦工作室也在這種情勢下發表了將於十二月推出Patch1(擴充內容Stonehenge Chornicles )作為因應。目前來講,這個擴充已經延後了一個月才發表,將於1/21號才能正式上場。這真的能彌補核心部分的不足嗎?我的blog有對這個擴充的評論,不過可能我的標準比較嚴苛,我只能給這個擴充打40分。

不過在談這個未來幾天才會上場的東西之前,還是先談談核其他部分吧。首先,先從這個遊戲的付費機制談起。

要由玩這個遊戲,首先當然要先花一筆錢去購買他的實體包裝。這個對於國內玩家來講可能比較不可思議,不過國外就算是線上遊戲程式也並不會是免費的,而且價格也相當於一個普通的單機遊戲。當你購買這個遊戲以後,你可以用裡面的CD-KEY去網站上登陸一組帳號密碼來進行遊戲,這部分是完全不用額外再付費的。也就是說,當你買了這組遊戲,不用再花額外的錢就可以享受類似B.net 的網上多人遊戲功能。以這方面來講的話,他跟D2是一樣的。

然後你也可以選擇成為他的付費會員,可以享有一些節慶任務,特殊任務,加大的儲物箱以及一些新場景新關卡新物品,包含Stonehenge。

這一切聽起來還滿合理的,普通會員享有額外的連線對戰功能,付費會員享有額外的關卡物品以及更高的遊戲便利性,似乎很正確。

問題就是這樣發生了。

首先是他核心內容(就是你買來就有的內容)做的非常差,重複的場景,過多的臭蟲,都是這款遊戲的致命傷。在上個月開發商在irc 上面跟玩家討論,也承諾會加強核心內容。不過說真的,這種重複到不行的內容,絕非當初買這款遊戲的玩家預期。基本上,免費玩家又玩不到當初承諾的12月大改版--這個不但延到了一月底,而且還僅限於付費會員--這自然引起了很多人不滿。

那付費會員部份呢?不是有Stonehenge可以玩嗎?Stonehenge根本還沒上檔。從十一月開始付費付到現在一月的會員,得到了什麼?也是幾乎什麼都沒得到。加大的置物櫃,一雙還不錯的手套(那是期限限定的任務,付費會員的新角色還沒有咧),能夠創工會的權利... 沒了,這樣值得一個月十塊錢美金?我想恐怕大多數付錢的玩家都會搖頭。

阿還有一個,可以玩一種模式,你死了一次就沒有的Hardcore,恩這是付費會員專屬的喔,真是挺諷刺的。

Stonehenge擴充還沒上,不過已經在測試server上面開放了。基本上我也上去測試了一下,基本上一些老問題仍然沒變,以及當初宣稱的組隊用區域實在也很拉蒙。用到爛的場景一樣照用不誤,整個新場景只有四個,其他也是一直重複個不停。其實我這方面要求不高,場景只要貼圖稍微換一下,氣氛弄得完全不同,這樣我就可以接受了...可惜只有一個場景有這樣重製,其他都還是照樣原封不動的搬過來用,完全沒有做任何改進。

我個人對這個擴充非常不看好,雖然他的確做了不少改進,比方說增進遊戲性,讓他至少看起來比較像一個mmorpg了,不過仍然很糟糕。

就算跟六年前Sony推出的PlanetSide比,仍然還比不過。

我個人並不懷疑旗艦工作室的研發能力,不過看起來他們似乎並不善於消減玩家的失望感。

套一句官方論壇玩家常常拿來消遣別人的話。You have been flagshipped.

Thursday, January 17, 2008

Lamed Expension : Hellgate London - Stonehenge Chronicles


If I have to score this game, I would rank this game with 40/100, YES, YOU SHOULD NOT PASS! (lolz)

Ya, in the point of a hardcore gamer's view, this expansion is rather disappointing. Deficiency in original HG:L still exist in this expansion, for example : repeative scene, dumb bosses, boring gameplay and lacking of replaybility. I can tell that I played once, and never wants another time.

Total gameplay time is about 6-7hr(for my Lv50 Elite Marksman), and half of it is wasted in finding Beast Essence, it is a critical point to adjust.

Ok, lets see whats new in Stonehenge Chronicles.


All Stonehenge expansion consists of 14 zones, respectively Stonehenge base, The Wild for grouping propose, Wake Hallow + 8 zones for questing, and Moloch's Step+Necro fall + Master's Court for final boss fighting. In order to enter 4 wings connect to Wake Hallow, you must collect 4 types of essence. They are Demon(to Hallow Deep=>Heart of Hell), Necro(Skull Step=>Lair of the damned), Spectral(Shadow Pass=>Torment) and Beast(Blood Walk=>The Maw). Each wing has a boss in, you must kill all of them to collect their head. In order to enter Moloch's Step you must have all 4 heads, it is all questline in Stonehenge.

Lets introduce these zones.

Stonehenge :
There is 5 vendors in this base, selling level varies items, and no crafter here. Just like regular station base, it provides nano-forge, augmatrix3k and de-modder. For now it provides no quest, just some guide. There is 3 platform in this area, and maybe you can see some of them are hollowed, maybe for use of further expansion.


Wake Hallow :


This area is a big jungle, a new tileset in this expansion. There are 4 wing area connecting here, they are Demon(Hallow Deep=>Hell's Heart), Necro(Skull step=>Lair of the Damned), Spectral(Shadow Pass=>Torment) and Beast(Blood Walk=>The Maw). In order to enter these sub-area, you must collect each type of essence of 5. For example, 5 necro essence is required if you want to enter Skull Step. Every time you "unlock" the door, the door will remain unlocked until wing boss is killed, no matter you relog, rezone or so. Beast essence is most difficult to obtain, because lots type of beast can never appear in rare quality or above(such like coils, spawning felborn, felborn lashers strikers archmugus or mega-sized revangers). Fastest way to collect beast essence is farming Big Ben in Lower Kingsway Sewers. He have about 0.5 ratio to drop this, so you can almost sure you can get at least 1 in 10 min(about 2-3 runs).

Demon Wing :
Hallow Deep=>Hell's Heart
Boss : Errgoth

Hell's heart uses tileset which is used in St.Paul Hellgate's Hell, and enlarged to about 3-4 times. Boss is named as Errgoth, a greater size version of Shulgoth with decent hitpoints. The major different between him and his brother is he blast high power electric balls instead of inferno flames. He is a dumb boss with weak melee damage, but his electric steam is lethal. In Marksman's case, just like the way to slay his brother, hit and run, and avoid the electric steam.


Necro Wing :
Skull Step=>Lair of the Damned.
Boss : Oriax


Lair of the Damned uses Church tileset, and have some texture improvement. Although it is an old tileset, but this improvement makes great unique optical effect. Oriax himself is a zombie summoner, much more HP, and summons zombie....a greater size and much more powerful Gutgore, the ironfist huge zombie. For marksman he is a formidable foe, because Gutgores is one of worst mob for Marksman. Anyway, just use R+R and get in good position, he would be a history :).

Spectral Wing:
Shadow Pass=>Torment
Boss : The Nicor


Another 314's mind, and of course, much bigger. This is another proof that FSS makes nothing effort in improvement tileset :(. Boss in this area is named The Nicor, looks like flea(Lost One), acts like flea, even hitpoints like flea too. His hitpoints is equal to fleas you can see in some maps, so you may unexpected overrun him without notice, and feel strange why theres lots loot on ground lol. He is nothing worth to report, and always act with a horde of fleas, nothing special.

Beast Wing:
Blood Walk=>The Maw
Boss : Ash


The Maw is just another Wake Hallow, and smaller. Ash is a flying fiend with lethal fireball attack. He have 3 attack mode, regular melee, fire field splash and fireball. His hitpoints is insanely high and he will flying here and there, so you must take a long time to fight him. His fireball is extremely lethal, will 1 hit kill somebody with 180AC, 2.2kHP plus 500ish shield, so when fighting to him, main object is avoiding his sick fireballs.

Boss wing :
Moloch's Step=>The Necro Fall=>Master's Court
Boss : Moloch



Moloch's Step is another another another jungle, nothing special. Necro Fall use crypt tileset, and add some unique features to make it looks better, not bad. Master's Court is the boss room of Moloch. I must admit, Moloch looks really cool, but too weak. He have only 2 attacks, in ranged he uses Flame column stream will ignite player, and in melee range he use tailspin to AE stun players. Both makes weak damage, like Bloodblade(lol).

He seems always drop an amount of Nanoshards, I got 3 in this battle. Just like 4 wings, while you killed Moloch, the warp gate leads to Moloch's Step will be locked, and require 4 heads from slaying his generals again.

Too repeative, a pity =P

Wednesday, December 26, 2007

本日下午茶 : Irish Coffee DIY

DSCI0001.JPG

愛爾蘭咖啡的特色就是烤杯。烤杯的目的在於把烈酒裡面的酒精成分揮發掉,留下酒香的精華,所以基本上愛爾蘭咖啡是沒有很濃的酒味的,今天下午我來試做看看吧。我選用的基底是瓜地馬拉的花神+Brikka做出來的偽Espresso,其實花神不太適合作成這種混合口味的咖啡,不過手上只剩下這個就試試看吧=P。

DSCI0002.JPG

正統Irish理論上是該用鮮奶油的,不過手邊哪可能沒事情就生罐鮮奶油出來?所以用打泡杯打出奶泡來代替。首先先將杯子裡面放入適當的糖(我是用Bajans焦糖,不過這種感覺上不太好,下次換一種品牌),然後混入大約0.5oz的酒。我用的基底酒是Johnnie Walker, 42.5Vol%。普通來講要做IRISH的話通常基底酒濃度至少要40%以上,不然會燒不起來。

DSCI0003.JPG

我只有一隻手沒辦法邊烤邊拍照。基本上烤杯是先一邊旋轉一邊烤下緣,然後等白色蒸氣大量冒出的時候把火移到杯口點火。DSCI0004.JPG

雖然不明顯,不過看到杯子裡面小小的藍色火光了嗎?在杯內燃燒的時候要一直旋轉晃動杯子,這樣才能維持燃燒需要的酒精蒸氣。等到燒完了,杯子裡面的酒精也應該揮發的差不多了,火就會停了。

DSCI0005.JPG

看起來基底咖啡已經煮好了。其實這次試驗出來感覺Brikka不是很適合煮基底,也許該換個方法來避免太重的苦澀味。Johnnie Walker本身就已經有澀味了,加上這種基底可能會有點太重。

DSCI0006.JPG

最後把基底分層,打上奶泡跟牛奶分層,今天下午茶愛爾蘭咖啡就完工了。基本上弄一份這種東西大約要十分鐘左右,成本還不算高,有興趣的可以自己試試看喔。

Monday, September 10, 2007

ACM換新家了

http://icpcres.ecs.baylor.edu/onlinejudge/
不過看起來server挺不穩的 -_-

還在摸索從哪裡submit code....

Tuesday, May 08, 2007

ACM101-The Blocks Problem

Level : 35/100
Concept : Basic Data Structure, Link List Theory, and.... clear mind.
Noticeable Point :
  1. Some complex and reusable code can be extracted as a inline function.
  2. Modularize helps a lot.
Method :
  • Main concept of this solution is not hard. First, we make a structure of each block with these elements :
    1. box* uplink and box* downlink, these two pointer points to upper and lower block in the pile. If uplink == NULL means it is the top of the pile. If downlink == NULL means it is the lowest block in the pile, or alone, and IT STAND ON THE ORIGINAL PLACE.
    2. static int BoxID. This indicates where the original place is, and the number of the block. In fact, by the problem saying, if a block.downlink = NULL, it MUST on its original place, as BoxID.
    3. Constructor and Destructor, which are supposed to control BoxID.
  • Define the function respectively. For example, we can draw a blueprint of procedure that "Move Over" does. First, we find that it need a function to clear all boxes above target, so we must make a clearup(). The procedure is simple, clearup() both target and destination, move target to the top of destination. Then, we must make clearup(), how it does? we find that we need a function to get the top box's position, so we must make a box* gettop(). Do this again and again we will get every function ready. In my works, I have made MoveOnto(), MoveOver(), PileOnto(), PileOver(), gettop(), clearup().
  • Then assemble these components up. It is not very easy to debug, we must do a hard labor to make sure these works fine. Then, output module seems not complex, do it and debut this patiently... yes you will need lots of patient.

ACM100-The 3n+1 Problem

Level : 12/100
Concept : None
Noticeable Points :

  1. Output order must be same to input order
  2. swap is NOT default function of GCC
Method : Brute, anyway :)

The 3n+1 problem

Traditional Chinese Version(Lucky's ACM)

Tuesday, March 20, 2007

Be aware NULL point access violation!

A typical error message such like "Can't write in 0x00000000, access violated.", and mostly be seen with 0x00000000. It is meaningful, and often point to wrong coding habits.

It is very common to distinguish if a new was successfully deploy a memory for a pointer by its return value. As usual, new will return a pointer pointing to a allocated memory which is successfully initialized and ready to be used. If new failed to deploy the memory, it will return NULL back to the pointer. So it is reliable to code in such way :

if(!(ptr = new foo[n]))
ReportErrorAndTerminate("Fail of memory deploying!");

In fact, if we added if to EVERY new, everything will go all right -- except annoying coding style and full of padding code. In old style C, LongJmp/SetJmp had been used in this case. In modern C++, that is catch&try method.

try{
ptr = new foo[n];
ptr2 = new foo2[n];
...
...
}

catch(std::bad_alloc)
{
...
... //necessary process
...
}

catch(...)
{
...
...//catch unknown exceptions
...
}

That's the way how try and catch works. OK, lets recall the topic, why this error message occurs? It is because of bad coding habit and misunderstanding the process of full program. For example, if we forget add if over new :

ptr = new foo[n];

when new returns NULL(means fail to deploy memory), then any operation to the memory that ptr refers :

*ptr = foo("This thing!");

It will occur NULL pointer access violation, and pop-up an error message box with "0x00000000".

In fact, not only new but all pointer-associated operator will return NULL when operating encounters failure -- even most of coder will make this behavior as default. Use try and catch to avoid such case.


Monday, January 01, 2007

Usage of auto_ptr, and about Proxy Class technique

This example is incorrect

auto_ptr <char>pChar;
pChar.reset(new char[20]);

In fact, the standard version of auto_ptr can not handle the pointer with array, because when the auto_ptr destructed, it express "delete something" rather then "delete[] something". I think anyone who slightly understand what different of delete and delete[] will point out it will cause memory leak. But how can we enjoy the convenience of auto_ptr, and use array correctly?

There is a trick(technique?) called "proxy class technique". What proxy class stand for? If we need to operate on something, but the operation is not compatible on this, we can make a class to "warp up" this object, and make it compatible to the operation. For example, since auto_ptr is not suitable for a pointer with array, why not we just wrap this pointer up?

struct proxychar
{
char* target; //this is the object.
proxychar(int n){target = new char[n];}
~proxychar(){delete[] target;}
};

auto_ptr<proxychar> pPC;
pPC.reset(new proxychar(20) );

pPC->target[0] = 'H';
pPC->target[1] = 'i';
pPC->target[2] = '\0';
cout << pPC->target;

Ok, it seems working fine. When pPC is being destroyed, it will call up the destructor of proxychar, and it will delete[] target.

This is a application of proxy class technique, and this technique have other use. In this case, this trick plays well =').

Sunday, December 31, 2006

FON faq and some possible solution.

  1. Some website can not be accessed via domain name : I'm sorry, but this problem have NO solution yet. Since FON's concept of authorization is involved its static DNS(what a "merely" hell idea ='( ), this problem can't be fix in a few further days(Let's hope their DNS update its database more frequently, but it is not easy). Maybe next generation of FON will use gateway served as authorization instead of DNS, but it will change entire FON network system. Therefore, lets pray and wait.
  2. WPA2 encryption is not compatible for some older wireless network adapter : That's no problem at all, you can change setting to adjust it from WPA2 to WEP/WPA, which provide more compatibility to these older adapter. Indeed, disable the encryption is another solution, but it's REALLY not recommended. Also, don't try to tune other part up in wireless page if you don't know what you are doing... serious =P
  3. Some problem occurs when access via encrypted private SSID : The source of this problem is complicated, it seems(I guess =P) involved its DHCP time-out. The authorization/encryption mechanism have some problem, even you are authorized, it seems will NOT tell your network adapter about it, but still tell its build-in DHCP server. DHCP server will time out, and fail to distribute IP to you, then you will see your right-bottom wireless network icon tell you "This device have only limited ability to access network" because it failed to get a IP from DHCP. Just push that message upon the icon down, and press "Fix it" button, use Windows build-in tool to fix it and it will be corrected. If you seems disconnected but the icon have no warning, just right-mouse-button click it, select "Fix the device", let it request a IP from DHCP, and it will be all right. Maybe in public SSID somebody will meet this issue(I don't think so, but who can assure? =P), maybe this is also a solution, too.
  4. Difficulty in setting up AP location in FON map : There is no easy way, just be patient lol. The more precise you set, the more useful of FON map. Please, be patient, you need only to endure this fuzzy system ONCE.