Tuesday, February 02, 2010

Classic WTF : What the hell enum!?

One day, while I was roaming through Internet, I bump into a article while I was viewing a frequently viewed forum =3

in HeaderDefine.h(This is a header file that will be included in almost every files)


/*----Be sure you have READ this!----
...
...(a long term of manual of this header)
...

I have made this way to make sure
everyone will read this manual.
By Genius Jason
----------------------------------------------/*
enum DECLARE
{
I_HAVE_READ_THE_MANUAL_AND_KNOW_WHAT_I_AM_DOING_THIS = 38106,
I_HAVE_READ_ABOVE_AND_AGGREED_THE_TERM_OF_USE = 39100
};


You might be confused what the hell it is for, ya, it's a trick. While using some function or callback, you have to follow his way or a assert will be invoked :

KaimCore.Init(I_HAVE_READ_ABOVE_AND_.....
KamiCore.CleanupDump(I_HAVE_READ_THE_MANUAL_AND...



"Fuck you Jason you damn moron!"

Game loop in C#

Game update loop is a problem in C#. Of course, first thought of us must be attach the Idle event of Application, like this.


Application.Idle += new EventHandler(OnAppIdle);
Application.Run(mMainFrame);

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

static void OnAppIdle(object sender, EventArgs e)
{
//Do some game loop update here
mMainFrame.DoUpdate();

}



It seems reasonable, we register a listener to Idle event, so it must be run OnAppIdle while application idle, right?

Partially right.

When the application keep going, it will only get message while "When application need to be updated". It means, therefore, if you leave mouse out of this application form(so no MouseMove event sent), it will totally stop, so it will be updated only when getting some message : such like OnMouseMove....etc.

Solution is from Rich, and he found it in sample of MDX applications. Don't ask me how to do it, just need to know use this way to keep the game loop.

We might discuss this in later post =3


static class Program
{
///
/// The main entry point for the application.
///

///
static SceneEditorMain mMainFrame;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

mMainFrame = new SceneEditorMain();
Application.Idle += new EventHandler(OnAppIdle);
Application.Run(mMainFrame);
}

static void OnAppIdle(object sender, EventArgs e)
{
while (AppStillIdle)
{
mMainFrame.DoUpdate();
}
}


private static bool AppStillIdle
{
get
{
NativeMethods.Message msg;
return !NativeMethods.PeekMessage(out msg, IntPtr.Zero, 0, 0, 0);
}
}


}

public class NativeMethods
{
/**/
/// Windows Message
[StructLayout(LayoutKind.Sequential)]
public struct Message
{
public IntPtr hWnd;
public uint msg;
public IntPtr wParam;
public IntPtr lParam;
public uint time;
public System.Drawing.Point p;
}

[System.Security.SuppressUnmanagedCodeSecurity]
[DllImport("User32.dll", CharSet = CharSet.Auto)]
public static extern bool PeekMessage(out Message msg, IntPtr hWnd, uint messageFilterMin, uint messageFilterMax, uint flags);
}

Friday, November 27, 2009

只是「為了呼吸自由空氣,所以你應該...」的話,真是大可不必

說真的,對我來講,如果用linux只是為了覺得與眾不同,還是高人一等,還是只是『想呼吸自由空氣』,那我真的覺得何必這樣。我個人也是非常反MS,可是我之所以用ubuntu只是因為「他對於開發程式的我來講是另外一種選擇,而且很好用」。我也不用諱言說我因為他沒辦法執行Visual Studio 2008所以可能會想把他換回winxp or win7。



很多人把「使用ubuntu linux」想得太異端或者太特別了。我一直認為,會一直用些偏激的語言推廣linux的,多半反而是生手,而真正熟練的使用且知道自己需要的,才是至少有一定使用程度的使用者。投其所好,自己需要什麼就用什麼吧,什麼微軟奴隸那麼難聽的話都大剌剌POST在社群網站上,這真的是... (重點是還用匿名來post,唉)



說真的這種環境下,只要想用,不可能拿不到windows,至少要拿個XP是輕而易舉的。自己需要用哪種作業系統就用吧,用linux並沒有比較高手。



我自己這篇文章就是在ubuntu下用BloGTK打出來的,這東西可不比MS的Live Writer差(也許感覺還更好一點),對我來講,linux適合我現在開發環境,所以對我來說就是好用。相對的,我相信也有更多人在windows底下才是適合他們的環境。



不要像那些 Aggressive apple fan 阿...

Monday, November 23, 2009

最近在忙的另外一個Project

另外一個在忙的是比較偏企劃面的Project Infinity,與Iris不同,這個完全是以企劃導向的一個方案。Iris設定上是一個Ogre Wrapper,基本功能已經完備,但是沒有東西給她玩(疑)的情況下,目前沒有需求就沒有任何動作跟推力。

Infinity則是相反面的東西,她主要提供的是一組世界跟一組接口,負責產生以及運算整個世界,然後告訴Iris怎麼把它畫出來以及怎麼控制。這基本上還只是一個概念的產物(以及一堆UML Code),慢慢的會把這東西完備起來。

不過同樣的問題依然存在,恩,美術面... Iris仍然缺乏一組工具來做美術方面的東西,不過由於沒有美術人員,我想應該暫時一樣是陷入需求跟推力的迴圈。不管怎麼樣,先把相對技術門檻比較低的Project Infinity開始動工會好一點(望著一堆UML文件...)

另外,這個可能會當作自己對於Design Pattern的期中考,看看自己到底對Design Pattern了解多少的一種測試。Project Infinity暫時還不會開放給小組人員下載,等把雛形弄出來再說。

Monday, July 20, 2009

Recently Update

Project Iris is still in progress, and Milestone1(aka basic tile construction) will be finished estimated in 2 weeks, then Milestone2 – Game Basic Logic. I am confused by myself designed architecture – which one should take reasonability of updating? and which one should responsible for managing Rendering Window and Root management? Really confused by myself :/


Anyway, I am a bit happy to have more talking with someone =P. Maybe with bad karma I have made, and I shall have more effort to… never mind, hum.


Just meet Cecilia again, in fact, nothing special… maybe a bit to worth scribing into my update. It is a dust covered old memories….

Saturday, July 11, 2009

Soul Hacking - 淺談非物理入侵(2)

Reality Hacking在前面的章節已經談過了,接下來我們要進入更深一層-名字聽起來也更虛幻的一層,Soul Hacking。


Soul Hacking其實是一種心理戰,基本上就是結合心理學的一種入侵方式。我們在設計一個安全系統的時候,通常只會考慮到"如果使用者XXX,我們就要以OOO的方式來對應"(普通的邏輯系統似乎都是這樣寫的,對吧?),而不太會去考慮相反的事情:"如果我們做了XXX,使用者下一部會做什麼?"


最簡單的例子,假設現在有一個安全系統,如果要登入管理層的話,除了使用者的ID以外,還需要多輸入一層管理者密碼,可能很多設計者會這樣設計 : A. 提示使用者輸入ID B:提示使用者輸入第一層密碼 C:提示使用者輸入管理層密碼


聽起來非常合理,不是嗎?所以我們就會給使用者資訊:這個登入流程需要一個ID 需要一個密碼 需要一個管理者密碼。

我們換個角度想,如果我們登入流程變成這樣,換你是入侵者,你會有什麼反應? A. 提示使用者輸入ID B.提示使用者輸入密碼 C. 提示使用者輸入了錯誤的密碼,要求重新輸入:不過事實上,第二層密碼驗證是對的,系統正在等你輸入管理者密碼。


我們在舉個比較簡單的例子,也是大家比較容易碰到的例子。以前,BBS基本上都會要求使用者輸入帳號,如果帳號不存在,系統會提示你這個帳號不存在。可是,現在的PTT,無論你輸入什麼帳號,他都會要求你輸入密碼,也只有"帳號密碼不對!"的提示,而不會告訴你無此帳號還是密碼不對。


這個就是Soul Hacking的一環,跟使用者的心理戰。這是防禦面的說法,下一篇會聊聊攻擊面的說法。

Reality hacking - 淺談非物理入侵

Reality hacking - 這個其實不是很為人所知的名詞,其實是資安理面幾乎是最重要的一環。不管你用多昂貴的多複雜的firewall,多訓練精良的網管,多有效的多層次存取(MLA)系統,公司的資訊仍然是有機會以人為的可能性外流-防火牆檔的住over-exceed request,也許檔的住部分back-oriphance,很不幸的是他們對於員工的大腦跟嘴巴通常無能為力。


"你好,這裡是XX旅行社,您這次出差的轉機機票程序都定好了喔,祝您這次有個愉快的旅行。"


"謝謝,不過我記得這次不是我出國阿,您是不是把我跟李經理的資訊弄錯了呢?"(得到資訊,這次是李經理要出國)


"疑?是這樣嗎,抱歉我查一下。可是從您的員工編號我們看起來的確是您的資料阿,沒關係,不過這個東西我們要在跟您確認一下,也許是我們內部人員KEY錯了,讓您多賺到一天假期呢"

"哈哈,能賺到就好了。"

"抱歉那我在跟您核對一下資料,您的員工號碼是?"


"B83920C0”


"可是查出來的一樣耶,也許是我們內部錯誤,我們換種方法好了,您的出生年月日跟身分證字碼麻煩一下好嗎?"


這樣其實就可以撈到非常多的資料了。一個IT不夠嚴謹的公司,這些資訊已經足夠造成非常大的損害。Reality Hacking並不見得需要像電影情節裡面的hacker一樣,潛入他人公司,分析鍵盤密碼,偷偷接上sniffer...他們需要的也許只是稍微好一點的口才,一些看起來不是很重要的資訊,以及一點運氣。


"哈,看起來的確是我們弄錯了,不好意思,我們去連絡一下李經理,抱歉打擾您的時間。對了,為了表達我們的歉意,最近我們公司有一團因為人數湊不夠,我們願意用成本價湊團,您有興趣的話請上....."


好啦,這個人多傳幾個同事,大概名字身分證字號地址就全部被抓包了,甚至有些人資安習慣很差,每個網站都用一樣的密碼,那只要該網站要加入會員才能看內容,設定個帳號密碼,那大概就可以phish到一堆帳號密碼可以try了。需要任何007情節嗎?需要任何特別的技術設備嗎?都不用。


Reality Hacking就是那麼一回事,可以很複雜,但是也可以那麼簡單。

Thursday, July 09, 2009

可憐的Jason XD

thor = jason says:
*미연 說 (上午 12:26):
晚安!

/*Rayer*/ T.R.I. says:
*...
*韓國妹還真是欲求不滿 連你要睡了都不罷手
*不過那邊更晚耶 一點了
thor = jason says:
*囧
*ya
*不過他說玩就離線了
/*Rayer*/ T.R.I. says:
*看起來是個你可以吃的對象(瞄)
thor = jason says:
* ...
*我還沒出們就跟我說早安

Wednesday, July 08, 2009

Recently Update…for myself

A bit busy here, for either official project or own Iris project. I have learned a new sort of algorithm for Iris-Mimic, but it consumes loki::smallobject technology to perform.


After the great separation, it cost me some days to get recovered. Just let the ugly past pass, I hope so.


Dolice closed her blog, due to her confliction toward her boyfriend. It’s a pity to see a bobby-headed girl’s fantastic diary…. ok, and the invaluable technical note. I can image that racial conflict(she is a Malaysian, and he is a Chinese) between them, as Dolice always complains so. Cultural difference makes hard to communicate… even become a plunk between them two. Good luck, pal.


I think I need a target to chase, after someone talked to me(and makes me so happy :) ), I felt my power recovered then. New living style makes me to feel time is so easily exceeded, and I need more. I need more time to learn, to relax, to enjoy my everyday….and to love. I don’t know what she thinks, but she is my battery … in secret =P


I might have a motivation to become great. As I will…


Coasta Tempo is my favorite song. In fact I don’t like Koreans, but music passed the barrier. Clicky rap plus soft voice makes an excellent combination. Who can ever image K-Rap can be so freshy?


Netbook is a magical tool for me, it can let me do my writing( article or code) while enjoying smelly coffee, and never lost any idea while in anywhere. It is another good investing for me… a bit costly ;P. I bought HP mini 2140HD and cost me around 600USD. It’s funny, while I was in SLC, my house rent goes 450 per month, 600 seems not so much for me. But in Taiwan, it down to 190 per month, so 600 illustary become a big deal. Anyway, it’s a good deal.

Thursday, April 16, 2009

繪圖板入手!

不過第一次拿來玩就... XD

/*Rayer*/ The Adventurer says:
*怎樣,新玩具畫的,畫的不錯吧!
*我把你畫得更漂亮了!

*The Dirge with LUM says:
*我下次碰到你我ㄧ定要打死你.... -_-

Tuesday, April 14, 2009

久違了 Z1!

該死我今天居然忘了帶手機相機出公司!!!

今天特地六點鐘出公司趕車去追214直,除了把吉他送過去收錢(疑XD)以外,就是為了看我以前用的那台Korg Z1!

沒想到完全沒變阿,別死阿XD 一死了就沒材料可以修了!這把琴可是七年以上的老古董呢 :3

I'm still missing past happy days... 當我把插頭插進COM的時候那種奇怪的感覺又湧上了全身,就好像我以前拿著他混音一樣...等等,那台根本沒幾個人看過的ZIP軟碟是怎麼回是 XD

新主人對他還不錯呢...

Saturday, April 11, 2009

So many things to do, so little time

想學的東西還真天殺的多,又想學Ogre(事實上已經學不少了),又想學3d pipeline,清單裡面還有core thread concept, 電吉他...族繁不及被宰

可是我總覺得我浪費了好多時間... 在想其它的事情

有時候還真覺得我會莫名其妙迷失,難怪我老是希望別人帶我,我卻沒辦法帶人 :/

Friday, April 10, 2009

This is the reason I HATE you

You wish me there when you are down..
When I am down, where are you?
When I am MADE down by your, where are you?

stupid nonsense.....

Wednesday, April 08, 2009

活起來了...

最近生理時鐘極端不正常,一回家有時候就呼呼大睡,然後兩三點又爬起來寫code打電動到五點出門-我覺得我快要lich化了 =口= 今天早上出門一看溫度明明有23度,可是上了公車卻冷到不行,加上路上又被雨淋濕...

原來飢寒交迫是這種感覺阿 XD

不過在公車上快死翹翹,進辦公室卻不知道為什麼馬上又有精神生龍活虎了起來,maa...我果然需要人氣阿(?)

Sunday, April 05, 2009

LibIris

剛剛看一下上個更新, 03:41....
在LibIris終於有雛形了,具有基本的輸入功能,以及基本的場景匯入,貼地功能...


好累阿.... -o-||(看看時間)

Iris目前工作進度

其實進度比想像快很多,現在只差resource management的問題要解決,就可以著手開始撰寫LibIris了。

感謝某兩個一天到晚跟我拌嘴的傢伙 - -+ 辛苦你們了

目前來講碰到的問題有幾個 :

  1. OIS輸出入系統非常方便,不過loading實在有點慢,要不要考慮直接自己寫呢?可是OIS又很簡單易用(參照ExampleFrameListener.h)
  2. Resource managing事實上並不是只有parse resources.cfg那麼簡單,尤其是他很多rendering相關的東西全部會塞在script裡面用resource parse,這個要搞懂似乎要花很久。Ogre的material等等資料都是寫成script去parse,這點跟D3D比是方便,可是也令人頭大,因為等於要多學一個語言...我不覺得以後script全部都是由我來寫...
  3. 目前來講如果要把整個example的resource.cfg搬過去用的話(當然,裡面我偷偷做了很多修改),他會parse太多用不到的東西。parse用不到的東西其實問題不大,問題是他parse會去試圖load裡面指向的檔案(比方說.jpg..),一個個砍好像有點累...不過這也提供了不少能用的素材就是...那台機器人不錯 XD

Friday, April 03, 2009

Trying to wipe you out of my head…

but I always failed, just like my attempt to contact with you :(


What Ju have said about you seems so unreal, and don't I believe it. Your cold response toward me, twisted my thought every time. Sometimes I am asked why I seems just drag into a deep thought, how can I reply? On such a uncertainable aptitude…. Did I really silent toward you? why what I feel is contrary?


No doubt I like you, but....just say you don't like me, to release me…

白癡對話再一發

Dolice小姐,妳家的男朋友是怎麼受的了妳的(譴責)

/*Rayer*/ Defy-2 進場大修中 OTZ said:

Of course its not necessery, not properly but might!


/*Mint! I Like it! It is a HINT! :) */ said:
Ok, let me give an example.
When you see sbd get into your city's MRT gate
and sensor beeps twice, it means ONLY he use student ticket
not means he IS a student.
From view of programming, as assuming A inherits B
in public,
we can say B is a kind of A because
it is necessery that


/*Rayer*/ Defy-2 進場大修中 OTZ said:
Ok ok I got it, please talk about something but this...-_-


/*Mint! I Like it! It is a HINT! :) */ said:
because it means

白癡對話/bunk

日光/Pearl (in Illinois) says:

*話說
*巨乳跟羅利給你選
*你會挑哪個
/*Rayer*/ Defy-2 進場大修中 OTZ says:
*我可以都不要嗎T_T
日光/Pearl (in Illinois) says:
*不行 T_T
*因為一邊是巨乳
*一邊是羅莉
*好恐怖啊.........
/*Rayer*/ Defy-2 進場大修中 OTZ says:
*我可以要一個看起來很會運動 B以下的御姐嗎Q<>Q
日光/Pearl (in Illinois) says:
*我在跑戀姬無雙中
*每個女的都是超人啊
/*Rayer*/ Defy-2 進場大修中 OTZ says:
*好吧 羅莉是絕對不可能要的
*那只好巨乳了T_T
日光/Pearl (in Illinois) says:
*XD
/*Rayer*/ Defy-2 進場大修中 OTZ says:
*兩權相害取其輕 -w-
日光/Pearl (in Illinois) says:
*那個胸部比頭還大啊啊!!
/*Rayer*/ Defy-2 進場大修中 OTZ says:
*..e.r...
日光/Pearl (in Illinois) says:
*XD
/*Rayer*/ Defy-2 進場大修中 OTZ says:
*好 羅莉好了
日光/Pearl (in Illinois) says:
*XDDDDD
/*Rayer*/ Defy-2 進場大修中 OTZ says:
*至少在我眼中是人類
日光/Pearl (in Illinois) says:
*噗

Thursday, April 02, 2009

Ogre又卡關了…

這次卡在load資源的地方,居然跟我找不到目錄,不管是相對路徑還是絕對路徑,全部跟我說找 不 到 =口= 明明我工作目錄也設定確定正確了(不然會有一堆.dll找不到,所以這個不可能設錯")。

smgr->setAmbientLight(ColourValue(0.2f, 0.2f, 0.2f, 1.0f));
Light* pPointLight = smgr->createLight("TestPointLight");
pPointLight->setPosition(0, 0, 0);
pPointLight->setDiffuseColour(ColourValue(0.0f, 1.0f, 0.0f, 1.0f));
Entity* pEntity = smgr->createEntity("TestEntity", "./media/meshes/prototype.mesh");


你馬幫幫忙,昨天還好好的,怎麼一過了愚人節馬上開始愚起我來啦 囧

[Edit]找到該死的方法了...

// Load resource paths from config file
ConfigFile cf;
cf.load("resources.cfg");

// Go through all sections & settings in the file
ConfigFile::SectionIterator seci = cf.getSectionIterator();

String secName, typeName, archName;
while (seci.hasMoreElements())
{
secName = seci.peekNextKey();
ConfigFile::SettingsMultiMap *settings = seci.getNext();
ConfigFile::SettingsMultiMap::iterator i;
for (i = settings->begin(); i != settings->end(); ++i)
{
typeName = i->first;
archName = i->second;
ResourceGroupManager::getSingleton().addResourceLocation(
archName, typeName, secName);
}
}

真是有夠....冏...之前之所以沒事情,完全是因為之前是使用它的ExampleApplication介面,介面裡面會自動偷偷的幫你讀取resources.cfg並且把它設定好,可是我們自己做的話並沒有小精靈會偷偷在晚上幫你把這堆code加上去,於是就....