ေရႊပြဲလာတုိ႕၏ အားေပးမႈ

၂၀၀၉ ခုႏွစ္ ၾသဂုတ္လ ၁ ရက္ေန႕မွစ၍ လက္မွတ္ေစာင္ေရေပါင္း ေစာင္ တိတိ ေရာင္းခ်ခဲ့ရၿပီး ျဖစ္ပါသည္။

Sunday, October 12, 2008

ငါးထမင္းနယ္ (ရွမ္းထမင္းခ်ဥ္) လုပ္နည္း

ဒီေန႕ သတင္းကၽြတ္ အဖိတ္ေန႕ (သီတင္းကၽြတ္ လဆန္း ၁၄ ရက္ေန႕)။ ေလာရွည္ ေမြးေန႕ေပါ့။ အဲဒါ မမ Red က ေမာင္ေလးေမြးေန႕မုိ႕ ငါးထမင္းနယ္လုပ္ေကၽြးမယ္လုိ႕ မေန႕ညကတည္းကေျပာၿပီး ဒီမနက္ လုပ္ေကၽြးတယ္။ ေပ်ာ္လုိက္တာ။ ေၾသာ္ … ငါ့ကုိ ဂရုစုိက္သားဆုိၿပီ။ စားၿပီးေတာ့ ေမးၾကည့္ေတာ့ သူ႕ေမာင္အရင္းက ေအာက္တုိဘာ ၁၃ ေမြးတာမုိ႕ သူ႕ေမာင္ေလးေမြးေန႕ကုိ လုပ္ေကၽြးတာတဲ့။ ေသေရာ … ။ ဘာပဲျဖစ္ျဖစ္ အေမတုိ႕လုပ္တာ ၾကည့္ထားတာနဲ႕ သူ႕ဆီက ခ်က္နည္းေမးထားတာေလးေတြ ေရာသမေမႊၿပီး ငါးထမင္းနယ္လုပ္နည္းကို တင္ဆက္လိုက္ရပါတယ္။

ပါ၀င္ပစၥည္းမ်ား
ၾကက္သြန္ၿမိတ္        - အနည္းငယ္
နံနံပင္            - အနည္းငယ္
ဆား            - အနည္းငယ္
ခရမ္းခ်ဥ္သီး        - ၃ လံုး
မန္က်ည္းႏွစ္        - အနည္းငယ္
ၾကက္သြန္ျဖဴ        - ၃ လံုး
ငါး (ေရခ်ိဳငါး)        - ၂၅ သားခန္႕
အာလူး             - ၂ လံုးခန္႕
ဆန္            - ၅ လံုး (ထမင္းေပါင္းအိုးနဲ႕ပါလာေသာ ဗူးနဲ႕ ခ်ိန္ပါ၊ ႏုိ႕ဆီဗူး မဟုတ္ပါ)
ပထမဆံုး ငါးနဲ႕ အာလူးကုိ ဆားအနည္းငယ္စီ ထည့္ၿပီး (တအုိးစီ) ျပဳတ္ထားပါ။ အဲဒါေတြ ျပဳတ္ေနတုန္းမွာ ထမင္းကုိလဲ တၿပိဳင္နက္ခ်က္ (ေရ ၇-၈ လံုးေလာက္ထည့္ခ်က္ပါ)၊ မန္က်ည္းႏွစ္ကုိ ေရေႏြးေဖ်ာ၊ ၾကက္သြန္ၿမိတ္နဲ႕ နံနံပင္ကုိ လွီး၊ ၾကက္သြန္ျဖဴ အခြံခြာထားပါ။ ငါးနဲ႕ အာလူးရရင္ (ေရခမ္းျပဳတ္ရပါသည္။) ခရမ္းခ်ဥ္သီးကုိ ျပဳတ္ပါ။ ငါးကုိ အသားႏႊင္၊ အာလူးကုိ ေခ်ပါ။ ခရမ္းခ်ဥ္သီး ျပဳတ္တာ ၿပဲသြားရင္ သူ႕ကုိလဲ ေခ်ပါ။ ၾကက္သြန္ျဖဴေထာင္းပါ။ ညက္လွ်င္ ၾကက္သြန္ျဖဴဆီခ်က္ ခ်က္ပါ။ (ဆီထဲကုိ ၾကက္သြန္ျဖဴ ေထာင္းထားတာ ထည့္ေၾကာ္ပါဟု ဆုိလုိသည္၊ ေရႊ၀ါေရာင္သန္းလာလွ်င္ အုိးေပၚမွခ်၊ ပန္းကန္ထဲ ေျပာင္းထည့္ပါ။ သုိ႕မဟုတ္က တူးလိမ့္မည္။) ၿပီးလွ်င္ ၾကက္သြန္ျဖဴ ဆီခ်က္၊ မန္က်ည္းႏွစ္ႏွင့္ ၾကက္သြန္ၿမိတ္၊ နံနံပင္မွအပ အားလံုးေရာနယ္ပါ။ ၿပီးလွ်င္ အေနေတာင္ အလံုးေလးေတြ လံုးထားပါ။ (ႀကီးႀကီးလံုးလဲ ဘာမွ မျဖစ္ပါ)

စားခ်င္စဖြယ္ပါပဲ
တည္ခင္းရာတြင္ အလံုးကို ပန္းကန္ျပားထဲ ထည့္ျပားၿပီး မန္က်ည္းႏွစ္၊ ၾကက္သြန္ျဖဴ ဆီခ်က္ဖတ္၊ နံနံပင္၊ ၾကက္သြန္ၿမိတ္ျဖဴးၿပီး ျပင္ေပးပါ။ ဂ်ဴးျမစ္ (အစိမ္း) ႏွင့္ တြဲစားလွ်င္ အလြန္ေကာင္းပါသည္။ ငရုတ္သီးႀကိဳက္သူမ်ား ငရုတ္သီးဆီခ်က္ႏွင့္လဲ တြဲဖက္စားသံုးႏုိင္ပါသည္။

Thursday, October 2, 2008

ေရးေပးပါ။

ကုိယ္ပုိင္ပန္းခင္းေလးက Tag လုပ္လုိ႕ ေရးလုိက္ရပါတယ္။ စာတမ္းကိစၥနဲ႕ အရမ္းအလုပ္ရႈပ္ေနလုိ႕ ခုမွပဲ ေရးျဖစ္ေတာ့တယ္။ စေရးၿပီ။ 

ကုိယ့္နာမည္ - ေလာရွည္ ေလ။

ကုိယ့္ကုိ သူငယ္ခ်င္းေတြက ဒီလုိေခၚတယ္ - ေထာင္ေထာင္၊ နီယုိ၊ ေမာင္ေလာရွည္၊ ေမေလာေရွာင္။

ဒီမွာေနတယ္ - စင္ကာပူ။

ကုိယ့္ဆီဖုန္းဆက္ခ်င္ရင္ - ေလွ်ာက္လႊာအရင္တင္ပါ။ (Comment ေပးၿပီးေတာ့)။

(ကုိယ့္ရဲ႕ အႀကိဳက္ဆံုးေတြက)

အေရာင္ဆုိရင္ - မုိးျပာေရာင္၊ အ၀ါေရာင္၊ ဖက္ဖူးစိမ္းႏုႏု၊ အနီေရာင္၊ အနက္ေရာင္၊ အျဖဴေရာင္၊ မီးခုိးအမ်ိဳးမ်ိဳး။

အ၀တ္အစားဆုိရင္ - Baggy Jeans, Rappers' Ware။

အစားအစာဆုိရင္ - စားလုိ႕ရတာ အကုန္ (ကုိရီးယားစာ မပါ)။

ပစၥည္းဆုိရင္ - ေရွးေဟာင္း ပစၥည္း ထုႀကီးထည္ႀကီး၊ သစ္သစ္လြင္လြင္ ေတာက္ေတာက္ေျပာင္ေျပာင္။

သီခ်င္းဆုိရင္ - Heavy Rock မွ လြဲ၍။

စာေရးဆရာ - Isaac Asimov။

စာအုပ္ - Foundation Trilogy (Foundation, Foundation and Empire and Second Foundation)။

Life Style - တကၠသိုလ္မွာ သုေတသနလုပ္တဲ့ ပါေမာကၡ၊ (ဒါမွမဟုတ္ အလြန္ေအာင္ျမင္ေသာ နည္းပညာ စြန္႕ဦးတီထြင္ လုပ္ငန္းရွင္)။

ကုိယ့္ရဲ႕၀ါသနာ - ဂိမ္းေဆာ့တယ္၊ ရုပ္ရွင္ၾကည့္တယ္။ (ဂ်ပန္ကာတြန္း ၾကည့္တယ္)။

အလုိခ်င္ဆံုးလက္ေဆာင္ - သိမ္းရလြယ္၊ သယ္ရလြယ္၊ ေပးခ်င္စိတ္ရွိလုိ႕ ေပးတာ အားလံုး။

ကုိယ့္ရဲ႕ အခ်စ္ဆံုးသူက - ေျပာ၀ူး။ သတ္ပစ္လုိက္။

ကုိယ့္ရဲ႕ အေလးစားဆံုးသူက - Roy Mustang (စိတ္ေတာ့မေကာင္း၀ူး၊ ကာတြန္းဇာတ္ေကာင္ ဖစ္ေနတယ္။)

ကုိယ့္ရဲ႕ အခင္ဆံုး သူငယ္ခ်င္းက - မ်ားႀကီးပဲဗ်။

ကုိယ့္ကုိ နားလည္မႈ အေပးႏုိင္ဆံုးက - ညီေလး။

ကုိယ့္ရဲ႕ အမုန္းဆံုးသူက - ေျပာ၀ူး။ (ေျပာရင္ ဒီေကာင္ထြက္ေျပးသြားမွာေပါ့။)

ရင္အခုန္ဆံုးအခ်ိန္ - အေျဖကုိ ေစာင့္ေနရတဲ့ အခ်ိန္ (စာေမးပြဲ ေအာင္စာရင္းလုိဟာမ်ိဳး၊ ပညာသင္ဆု ေလွ်ာက္လႊာ ရလဒ္လုိဟာမ်ိဳးကုိ ဆုိလုိသည္။)

အေၾကာက္ဆံုးအခ်ိန္ - ကုိယ့္ကုိ စိတ္ဆုိးခံရတဲ့အခ်ိန္ (ေဆာ္ပေလာ္တီးမွာ ေၾကာက္ရုိ႕)။

အေပ်ာ္ဆံုးအခ်ိန္ - ညီေလးနဲ႕ Acclaim's WWF Wrestle Mania (16 bit) Sega Genesis Version ကုိ ကြန္ပ်ဴတာေပၚမွာ Emulator နဲ႕ ေဆာ့ရတဲ့အခ်ိန္။

အမွတ္တရေန႕ - ငါးတန္းတုန္းက အတန္းထဲမွာ ပထမရတဲ့ေန႕။

အခ်စ္ဆုိတာ - ညံ့ပါ့၊ ဒါေလးေတာင္ မသိဘူးလား။ (ငါလဲ တိပါ၀ူး)။

အမုန္းဆုိတာ - မသိခ်င္စမ္းပါနဲ႕။

အလြမ္းဆုိတာ - ဒါလဲ မသိခ်င္စမ္းပါနဲ႕။ (ေျပာျပလုိ႕မရဘူးကြ။)

သံေယာဇဥ္ဆုိတာ - ျငိတြယ္ျခင္း။

ဘ၀ဆုိတာ - မုိးလင္းတုိင္း ဒီေန႕ ဘာျဖစ္မလဲ သိခ်င္လုိ႕ ရွာေဖြၾကည့္ရတာ။ (ေက်ာ္ၾကည့္လုိ႕လဲ မရဘူး)

သူငယ္ခ်င္းဆုိတာ - မ်ားေလေကာင္းေလ။

ခ်စ္သူဆုိတာ - နည္းေလေကာင္းေလ။ n ေယာက္ရွိရင္ အနည္းဆံုး n-1 ခါ အသည္းကြဲလိမ့္မယ္။ (ဒါေတာင္ တေယာက္ကုိရမွ၊ မရရင္ n ခါအသည္းကြဲလိမ့္မယ္။)

ကုိယ့္ကုိယ့္ကုိယ္ ဒီလုိထင္တယ္ - ဥစၥာေပါ၊ ရုပ္ေခ်ာ၊ သေဘာျဖဴ၊ အူစင္း၊ သမာသမတ္က်၊ အကုန္သိ၊ အကုန္တတ္၊ အကုန္နားလည္၊ ျမင့္ျမတ္၊ စင္ၾကယ္ ... ခြိ ခြိ ။

ကုိယ့္ရဲ႕ လက္စြဲေဆာင္ပုဒ္က - Do It Now !

အေျပာခ်င္ဆံုး စကားတခြန္း - I am very glad to be in this very spot, to give this acceptance speech for this year's Alan Turing Award and to be the first South East Asian to grab this award.


Thursday, July 31, 2008

စိန္႕ပီတာစဘတ္ ၀ိေရာဒိ

ေခါင္းပန္းလွန္တမ္း ကစားၾကရေအာင္။ ပထမ စစခ်င္းမွာ ဒုိင္က ပုိက္ဆံ ၁ က်ပ္ေလာင္းပါမယ္။ ေခါင္း (Head) က်ရင္ စာရႈသူက ပုိက္ဆံ ၁ က်ပ္ ရပါမယ္။ ကစားပြဲလဲ ၿပီးပါမယ္။ တကယ္လုိ႕ ပန္း (Tail) က်သြားရင္ေတာ့ ဒုိင္က ပုိက္ဆံ ၂ က်ပ္ (အရင္တခါ ေလာင္းထားတဲ့ ပမာဏကုိ ၂ နဲ႕ ေျမွာက္ၿပီး) ေလာင္းပါမယ္။ ေခါင္းက်ရင္ စာရႈသူ ပုိက္ဆံ ၂ က်ပ္ရပါမယ္။ ပန္းက်ရင္ေတာ့ ဒုိင္က ပုိက္ဆံ ၄ က်ပ္ (အရင္တခါ ၂ က်ပ္ကုိ ၂ နဲ႕ ေျမွာက္ၿပီး) ေလာင္းပါမယ္။ အဲဒီလုိနဲ႕ ပန္းမက်မခ်င္း ဆက္ေလာင္းသြားမွာ ျဖစ္ပါတယ္။ ဒီကစားပြဲကုိ စာရႈသူ ကစားရမယ္ဆုိရင္ ၀င္ေၾကး ဘယ္ေလာက္ ေပးမွာလဲ။ (ဒါမွမဟုတ္ ၀င္ေၾကးကို ဘယ္ေလာက္ သတ္မွတ္သင့္သလဲ။)

ပထမဆံုး ျဖစ္တန္စြမ္း သီ၀ရီအရ ေမွ်ာ္မွန္းတန္ဖုိး (Expected value) E ကုိ တြက္ၾကည့္ရေအာင္။

E = (½) x 1 + (½ x ½) x 2 + (½ x ½ x ½) x 4 + (½ x ½ x ½ x ½) x 8 + …

E = Sum(k = 1 to infinity) (½)k x 2(k-1) = infinity

ေမွ်ာ္မွန္းတန္ဖုိးဟာ အကန္႕အသတ္မရွိကုိ ျပန္႕ကားထြက္သြား (diverge) ပါတယ္။ အဓိပၸါယ္ကေတာ့ ကစားပြဲ တစ္ပြဲစီတုိင္းမွာ စာရႈသူရမဲ့ (ႏုိင္မဲ့) ပုိက္ဆံက အကန္႕အသတ္မရွိပါတဲ့။ ေမွ်ာ္မွန္းတန္ဖုိးဆုိတာက ျဖစ္တန္စြမ္းဆုိင္ရာ ျဖစ္စဥ္ (Probabilistic event) တစ္ခုကို အေခါက္ေပါင္းမ်ားစြာ ျဖစ္ေစရင္ ပ်မ္းမွ်အားျဖင့္ ရလာမဲ့ တန္ဖုိးပါတဲ့။ အဆံုးသတ္ ေကာက္ခ်က္ခ်ေတာ့ ၀င္ေၾကးဟာ ဘယ္ေလာက္ပဲ ျဖစ္ျဖစ္ ဒီကစားပြဲကုိ ကစားဖုိ႕ တေယာက္ေယာက္က ဖိတ္ေခၚခဲ့ရင္ စာရႈသူ မကစားပဲ မေနပါနဲ႕။ ကစားကုိ ကစားပါ။ ေရရွည္မွာ စာရႈသူဘက္က အသာခ်ည္းပါပဲလုိ႕ အေျဖထြက္လာပါတယ္။

ဒီအဆုိ ဘယ္ေလာက္မွန္ႏုိင္လဲ စဥ္းစားၾကည့္ရေအာင္။ ဒီျပႆနာကုိ နီကုိးလပ္စ္ ဘာေနာလီးက ေထာက္ျပကတည္းက ဒီလုိကစားရင္ စာရႈသူဘက္က ဂိန္ကုိ ဂိန္မယ္ဆုိတာ လူေတြက သိပါသတဲ့။ ဒါေပမဲ့ သခ်ၤာနည္းနဲ႕ အေျဖထုတ္ေတာ့ စာရႈသူဘက္က ပြေပါက္တုိးၿပီလုိ႕ အေျဖထြက္ေနတယ္။ ျဖစ္တန္စြမ္း သီ၀ရီကုိ ေျမာင္းထဲပုိ႕ရေတာ့မလား။ ဒီျပႆနာကုိ စိန္႕ပီတာစဘတ္ ၀ိေရာဒိလုိ႕ ေခၚပါတယ္။

စိန္႕ပီတာစဘတ္ ၀ိေရာဒိကုိ အမ်ိဳးမ်ိဳး အေျဖထုတ္ခဲ့ၾကပါတယ္။ သခ်ၤာပညာရွင္ အမ်ားစု လက္ခံထားတာကေတာ့ ေမွ်ာ္မွန္း အသံုးက်မႈ သီ၀ရီ (Expected Utility Theory) ရဲ႕ ရွင္းခ်က္ပါ။ (စာေရးသူ နားမလည္ပါ။ ဖတ္ဖို႕လဲ အခ်ိန္မရွိလုိ႕ပါ။) ဒါေၾကာင့္ စာေရးသူပုိၿပီး အကၽြမ္းတ၀င္ျဖစ္တဲ့ ျဖစ္တန္စြမ္း ခ်ိန္ဆျခင္း (Probability Weighing) နဲ႕ ရွင္းျပပါမယ္။ (ဒီေနရာမွာ စီးပြားေရး ပညာရွင္တခ်ိဳ႕က ဒီကစားပြဲမွာ ဒုိင္ဘက္က နာဖုိ႕ခ်ည္းေသခ်ာေနတာေၾကာင့္ ဘယ္ဒုိင္မွ ဒါမ်ိဳး ေပးေလာင္းမွာမဟုတ္တဲ့အတြက္ အေျဖရွာစရာလဲ မလုိဘူးလုိ႕ ရွင္းၾကပါေသးတယ္။ စာေရးသူ သိပ္သေဘာမက်ပါ။)

ျဖစ္တန္စြမ္း ခ်ိန္ဆျခင္းအရ စာရႈသူ အႏုိင္ရမဲ့ ျဖစ္ရပ္ရဲ႕ ျဖစ္တန္စြမ္းကိုပဲ ဦးတည္တြက္ခ်က္ပါမယ္။ ကစားပြဲကုိ ကစားဖုိ႕ စာရႈသူဟာ ပုိက္ဆံ n က်ပ္ (၃၂ က်ပ္လုိ႕ထားပါ) ေပးရတယ္ဆုိပါေတာ့။ ဒါဆုိရင္ ၁ က်ပ္၊ ၂ က်ပ္၊ ၄ က်ပ္၊ … ၊ n က်ပ္ (၃၂ က်ပ္) ပဲ ျပန္ရရင္ မကိုက္ပါဘူး။ (စာရႈသူဘက္က အေရးမသာပါဘူး။) အဲဒါကို ၁ ထဲကေန ၁ က်ပ္၊ ၂ က်ပ္၊ ၄ က်ပ္၊ … ၊ n က်ပ္ရမဲ့ ျဖစ္တန္စြမ္းေတြကို ႏႈတ္ျပီး ေအာက္ပါအတုိင္း တြက္ရမွာျဖစ္ပါတယ္။

P(You win when you bet n) = 1 – P(1) – P(2) – P(4) - … - P(n) = 1 – P(H…) – P(TH…) – P(TTH) - … - P(Tlog(n)H) = 1 - Sum(k = 1 to n) P(Tlog(k)H)

P(You win when you bet n) = 1 - Sum(k = 1 to log(n)+1) ½k = ½log(n)+1

ေသခ်ာသတိထားၾကည့္ရင္ n ဟာ အကန္႕အသတ္မရွိ ႀကီးလာတာနဲ႕အမွ် စာရႈသူဘက္က ႏုိင္မဲ့ ျဖစ္တန္စြမ္းဟာလဲ သုညနီးပါး ငယ္သြားတာကုိ ေတြ႕ႏုိင္ပါတယ္။ (၂ က်ပ္ဖုိးေလာင္းရင္ ႏုိင္ဖုိ႕အခြင့္အလမ္းက ၄ ပံု ၁ ပံု ရွိေပမဲ့ ၃၂ က်ပ္ဖုိးေလာင္းရင္ေတာ့ ႏုိင္ဖုိ႕အခြင့္အလမ္းက ၆၄ ပံု ၁ ပံု ပဲျဖစ္သြားပါၿပီ။) ဒီ၀ိေရာဒိက ေပးတဲ့ သင္ခန္းစာကေတာ့ ေမွ်ာ္မွန္းတန္ဖိုးတစ္ခုတည္းကုိပဲ ၾကည့္ၿပီး ေနရာတကာ ဆံုးျဖတ္ခ်က္ခ်လုိ႕ မရေၾကာင္းပါပဲ။ တခါတေလမွာ ေမွ်ာ္မွန္းတန္ဖုိးဟာ စုဆံုျခင္း (convergence) မျဖစ္တဲ့အခါမွာ ဒီလုိမ်ိဳး ၀ိေရာဒိေတြ ေပၚေပါက္လာတတ္ေၾကာင္း ေရးသားရင္း စိန္႕ပီတာစဘတ္ ၀ိေရာဒိအေၾကာင္း ေဆာင္းပါးငယ္ကုိ နိဂံုးခ်ဳပ္အပ္ပါတယ္။ စာရႈသူတုိ႕အားလံုး ျဖစ္တန္စြမ္းသီ၀ရီကုိ အသံုးခ်လုိ႕ ေလာဘသား လူလိမ္လူညာတုိ႕ရဲ႕ လိမ္လည္လွည့္စားခံရျခင္းေဘးမွ ကင္းေ၀းပါေစ။

၁၇၂၆ ဇူလုိင္လ ၃၁ ရက္ေန႕မွာ ဆံုးပါးသြားတဲ့ နီကုိးလပ္စ္ ဘာေနာလီးကုိ ဒီေဆာင္းပါးငယ္နဲ႕ ဂုဏ္ျပဳပါတယ္။

Saturday, July 19, 2008

ဇာတ္တူသားစားၾကျခင္း

"သားရဲ လူသား အရုိင္းအစုိင္းတုိ႕ကုိ သတိထားပါ … ဘုရားသခင္၏ ပရုိင္းမိတ္ သတၱ၀ါမ်ားတြင္ သူသည္ ေပ်ာ္ရႊင္ျခင္းအတြက္၊ ရမၼက္အတြက္၊ ေလာဘအတြက္ သတ္ျဖတ္ေလ့ ရွိသည္။ အၾကင္လူသားသည္ သူ၏ ညီရင္းအစ္ကုိကုိ ထုိသူ၏ ေျမအလုိ႕ငွာ သတ္အံ့။ ထုိလူသားတုိ႕ကုိ အေျမာက္အမ်ား မပြားစီးေစလင့္၊ သုိ႕မဟုတ္က ထုိသူတုိ႕သည္ သူ၏ အိမ္ႏွင့္တကြ အသင္၀ံတုိ႕၏ အုိးအိမ္တုိ႕ကုိ သုသာန္တစျပင္သုိ႕ ခမ္းေျခာက္ေစအံ့။" ေကာနီးလပ္စ္၊ ၀ံတုိ႕၏ၿဂိဳဟ္ (၁၉၆၈) ။

ဇူလုိင္ ၁၆ ၂၀၀၈ ခုႏွစ္တြင္ သမုိင္းဘာသာ အဓိကနဲ႕ ၀ိဇၨာဘြဲ႕ရ အမ်ိဳးသမီး တစ္ဦးျဖစ္တဲ့ ခင္ခ်ိဳဦးဟာ စင္ကာပူႏုိင္ငံ အလုပ္ပြဲစား (အိမ္ေဖာ္ပြဲစား) အိမ္ကေန ထြက္ေျပးရင္း (ရုပ္ရွင္ထဲကလုိ အ၀တ္ေတြဆက္ခ်ည္ထားတဲ့ ႀကိဳးနဲ႕ တြယ္ဆင္းထြက္ေျပးရင္း) ျပဳတ္က် ေသဆံုးခဲ့ပါတယ္။ ဒီျဖစ္စဥ္မွာ အလုပ္ပြဲစားကုိ လုပ္ငန္းမကၽြမ္းက်င္မႈ (non-professional)၊ တာ၀န္မဲ့မႈ (not taking enough responsibility for safety of his/her client)နဲ႕ လူ႕အခြင့္အေရး ခ်ိဳးေဖာက္မႈတုိ႕အတြက္ ေလာရွည္ - ကတဲ့ပြဲ အေနနဲ႕ ရႈံ႕ခ်ခ်င္ပါတယ္။

စာရႈသူ စဥ္းစားၾကည့္ပါ။ ေသဆံုးသူ အမ်ိဳးသမီးဟာ သမုိင္းဘာသာနဲ႕ ဘြဲ႕ရထားတဲ့ ပညာတတ္တစ္ေယာက္ပါ။ အဲဒီပညာတတ္ဟာ အိမ္ေဖာ္လုပ္ငန္းကို လုပ္ပါမယ္လုိ႕ အလုပ္ပြဲစားဆီမွာ အလုပ္လာေလွ်ာက္ေတာ့ ပြဲစားအေနနဲ႕ Professional ပီသစြာ သူ႕ရဲ႕ ပညာအရည္အခ်င္းနဲ႕ လုိက္ဖက္မဲ့ အလုပ္ကို ရွာမေပးသင့္ဘူးလား၊ ရွာေပးႏုိင္ဖုိ႕ expertise အလံုအေလာက္မရွိဘူးဆုိရင္လဲ ရွာေပးႏုိင္တဲ့ ပြဲစားဆီကုိ မလႊဲအပ္သင့္ဘူးလား (၀န္ေဆာင္ခကုိေတာ့ ခြဲေ၀ယူရမွာေပါ့ေလ။) ဒါေတြကုိ မလုပ္ပဲနဲ႕ သူေငြေၾကး အက်ိဳးအျမတ္ရရွိေစမဲ့ အိမ္ေဖာ္အလုပ္ကိုပဲ over-qualified ျဖစ္ေနတာကုိ လ်စ္လ်ဴရႈကာ (ေလာဘေဇာတက္ၿပီး) လုပ္ကိုင္ေစခဲ့တယ္။ (ဒီေနရာမွာ အဲဒီအမ်ိဳးသမီးဟာ ေကာ္လာျဖဴ လုပ္ငန္းခြင္၀င္ဖုိ႕ ပညာေရး မျပည့္စံုဘူး ဘာဘာညာညာ ျငင္းခ်က္ထုတ္လုိသူမ်ားကုိ ျပန္လွန္မျငင္းပါ။ ဒါေပမဲ့ ဒီေၾကျငာခ်က္ရဲ႕ ဦးတည္ခ်က္က အရည္အခ်င္းမရွိတဲ့ ဘြဲ႕ရေတြအေၾကာင္းမဟုတ္ပါ။)

ဒီေနရာမွာ တခုသတိထားမိဖုိ႕က အိမ္ေဖာ္ပြဲစားဆုိတာ စင္ကာပူအစုိးရဆီမွာ စနစ္တက် မွတ္ပံုတင္ၿပီးမွ လုပ္ရတာ။ အိမ္ေဖာ္ကုိ အိမ္ကုိေခၚထားခ်င္တဲ့ အိမ္ရွင္ (အလုပ္ရွင္) ဆုိတာကလဲ ဒီတုိင္းေခၚလုိ႕မရပဲ အစုိးရဆီမွာ အိမ္ေဖာ္ကုိ ဘယ္လုိ ဆက္ဆံရမယ္၊ ဘယ္လုိထားရမယ္၊ ဘာေတြခုိင္းခြင့္ရွိၿပီး ဘာေတြ ခုိင္းလုိ႕မရဘူးဆုိတာေတြကုိ စာေမးပြဲေျဖၿပီးမွ ေခၚခြင့္ရတာ။ ဒီအမ်ိဳးသမီး မေပ်ာ္ဘူးဆုိတာကုိ ဘာလုိ႕ အိမ္ေဖာ္ပြဲစားက မစစ္ေဆးသလဲ။ တကယ္လုိ႕ abuse ျဖစ္ေနတယ္ဆုိရင္ အိမ္ရွင္ (အလုပ္ရွင္) ကုိ ဘာလုိ႕ တရားမစြဲသလဲ။ ဒါေတြဟာလဲ professional မပီသတဲ့ အျပဳအမူေတြျဖစ္တယ္။ ဘက္လုိက္မႈ၊ တရားမမွ်တမႈေတြရဲ႕ သေကၤတေတြျဖစ္တယ္။ တာ၀န္မဲ့တာပဲ ျဖစ္တယ္။

ဒီအမ်ိဳးသမီးဟာ တုိက္ေပၚက တြယ္ဆင္းတယ္လုိ႕ သိရပါတယ္။ တံခါးက ထြက္လုိ႕ရရင္ တုိက္ေပၚက တြယ္မဆင္းဘူး။ ဒီအခ်က္ဟာ သူ႕ကုိ ခ်ဳပ္ေႏွာင္ထားတယ္ဆုိတာကုိ ျပသၿပီး လူ႕အခြင့္အေရး ခ်ိဳးေဖာက္မႈ တရပ္လဲျဖစ္တယ္။ (အိမ္ေဖာ္ပြဲစားမ်ား အိမ္ေဖာ္ကုိ ေသာ့ခတ္ ခ်ဳပ္ေႏွာင္ရန္ အခြင့္အာဏာရွိသည္လုိ႕ ဥပေဒျပဌာန္းခ်က္ ရွိမယ္မထင္ဘူး။)

ဒီကိစၥကုိ ျမန္မာ့အသုိင္းအ၀ုိင္းက အေလးအနက္ထားၿပီး ေနာက္ေနာင္ ဒီလုိအျဖစ္အပ်က္မ်ိဳး မျဖစ္ပြားရေအာင္ ဥပေဒေဘာင္အတြင္းကေန အေျဖရွာသင့္တယ္လုိ႕ ေလးေလးနက္နက္ တုိက္တြန္းပါတယ္။ ကၽြန္းဆြယ္ပလာဇာ (Peninsula Plaza) က ျမန္မာဆုိင္ရွင္တစ္ေယာက္ကုိ အလြတ္သေဘာ ေမးျမန္းရာမွာ ရလာတဲ့ အလုပ္ပြဲစားရဲ႕ အျပစ္ေတြကုိ ဖံုးဖိတဲ့ အေျဖေလးနဲ႕ ေၾကျငာခ်က္ကုိ ရုပ္သိမ္းလုိက္ပါတယ္။

အဲဒီ ေကာင္မေလးကုိက ရြတာ။ ေရာက္တာမွ တလမျပည့္ေသးဘူး။ အိမ္ရွင္က ပံုစံေပးေတာ့ သူစိတ္ညစ္တယ္ေနမွာေပါ့။ (ေဘာ္ေက်ာ့ေနလုိ႕မွ မရတာေလ၊ ဖိလစ္ပုိင္ေတြက ျမန္မာေတြလုိမပ်င္းဘူး။ အလုပ္လုပ္တာ ေတာ္တယ္။) အဲဒါနဲ႕ မေပ်ာ္ဘူးဆုိေတာ့ ေနာက္ Agent ဆီမွာ လာထားတာ။ အဲဒါကုိ ရြစိတက္ၿပီး သူထြက္ေျပးတာေလ။ အ၀တ္ေတြကို ဆက္ၿပီး တြယ္ဆင္းေတာ့ အေပၚမွာ ခ်ည္ထားတဲ့ တုိင္က ျပဳတ္ေတာ့ က်ေသေရာ။ (အလုပ္ကုိ လက္ေၾကာတင္းေအာင္က မလုပ္ခ်င္ဘူး။) အဲဒါနဲ႕ အကုန္ရႈပ္ကုန္ေရာ။

Wednesday, July 9, 2008

UMDH ျဖင့္ မွတ္ဥာဏ္ယုိေပါက္မ်ားကုိ ရွာေဖြျခင္း

ေအာက္ပါ post ပါအေၾကာင္းအရာမ်ားကုိ Intel® Core™2 Duo E6550 @2.33 GHz, DDR 2 1GB x 4, Microsoft Windows XP Professional Service Pack 2 တပ္ဆင္ထားေသာ ၃၂ ဘစ္ စက္တြင္သာ စမ္းသပ္ထားၿပီး ျဖစ္ၿပီး ေရးသားခ်ိန္တြင္ တတ္ႏုိင္သေလာက္ တိက် မွန္ကန္ေစရန္ ႀကိဳးစားထားေသာ္လည္း post ပါ အေၾကာင္းအရာမ်ား၏ မွန္ကန္တိက် မွီခုိႏုိင္စြမ္းကုိ ေလာရွည္ - ကတဲ့ပြဲမွ အာမမခံပါ။ သံုးစြဲျခင္းေၾကာင့္ တစံုတရာ နစ္နာဆံုးရႈံးမႈ ျဖစ္ပြားလာပါက သံုးစြဲသူ၏ တာ၀န္သာ ျဖစ္ေၾကာင္း ႀကိဳတင္ အသိေပးအပ္ပါသည္။ 

Pointer Arithmetic အသံုးျပဳေသာ အစီအစဥ္ (Program) မ်ားကုိ ေရးသားရာတြင္ ျဖစ္တတ္ေသာ ျပႆနာတစ္ရပ္မွာ ရယူထားေသာ မွတ္ဥာဏ္ (memory) ေနရာ (space) မ်ားကုိ ျပန္လည္စြန္႕လႊတ္ျခင္း (deallocation) မျပဳမိသည့္အခါ အပံု (heap) ထဲတြင္ မွတ္ဥာဏ္ေနရာလြတ္ ကုန္ခမ္း သြားတတ္ျခင္းပင္ ျဖစ္သည္။ အထူးသျဖင့္ အမႈိက္သိမ္းစနစ္ (Garbage Collection System) မပါရွိသည့္ C/C++ ကဲ့သုိ႕ေသာ ဘာသာစကားမ်ားတြင္ အဆုိပါ ျပႆနာသည္ ေကာက္ရုိးပံု အပ္ေပ်ာက္သလုိ ရွာရခက္ေသာ ျပႆနာ တစ္ရပ္ျဖစ္ပါသည္။ Windows NT Platform (Windows NT, Windows 2000, Windows XP and Windows Vista) တြင္ အဆုိပါ ျပႆနာကုိ အေျဖရွာႏုိင္ရန္အတြက္ UMDH ဟုေခၚေသာ အစီအစဥ္တစ္ခုကို Microsoft မွ အခမဲ့ ျဖန္႕ျဖဴးေပးထားရာ ယခုေဆာင္းပါးငယ္တြင္ အဆုိပါ အစီအစဥ္ကုိ အသံုးျပဳပံု အဆင့္ဆင့္ကုိ ေရးသားရွင္းလင္းမည္ ျဖစ္ပါသည္။ 

UMDH သည္ Debugging Tools for Windows package တြင္ပါ၀င္ေသာ အစီအစဥ္တစ္ခု ျဖစ္သည္။ ၄င္းကုိ အသံုးျပဳရန္အတြက္ အဆုိပါ package ကုိ အရင္ဆံုး download လုပ္ရမည္ျဖစ္သည္။ မိမိ အသံုးျပဳမည့္ စနစ္ႏွင့္ ကိုက္ညီရာကုိ ေရြးခ်ယ္ရန္ သတိျပဳပါ။ ထုိ႕ေနာက္တြင္ Windows Symbol Package ကုိ download လုပ္ရယူရမည္ျဖစ္သည္။ Symbol Package ကုိ ေရြးခ်ယ္ရာတြင္ မိမိ debug လုပ္မည့္ အစီအစဥ္ကုိ အသံုးျပဳမည့္ စက္ေမာင္းႏွင္စနစ္ (Operating Systems) ႏွင့္ကုိက္ညီရာကုိ ေရြးခ်ယ္ရမည္ျဖစ္သည္။ (စက္တလံုးတည္းတြင္ debug လုပ္မည္ဆုိပါက အဆိုပါစက္၏ ေမာင္းႏွင္စနစ္ကုိသာ ေရြးပါ။) 

အထက္ပါ အေပ်ာ့ထည္မ်ားကုိ ထည့္သြင္းၿပီးပါက သင္၏ စက္ေမာင္းႏွင္စနစ္ကုိ debug mode ျဖင့္ စႏႈိး (boot) ပါ။ Windows XP Professional တြင္ My Computer ကုိ ညာကလစ္ျဖင့္ ႏွိပ္ပါ။ Properties ကုိေရြးပါ။ Advanced tab ကုိ သြားပါ။ Startup and Recovery Setting ကုိ ႏွိပ္ပါ။ Edit ကုိ ႏွိပ္ပါ။ သင္၏ စက္ေမာင္းႏွင္စနစ္ စာေၾကာင္း ေဘးတြင္ "/debug" ဟုျဖည့္သြင္းပါ။ (ဥပမာ …\WINDOWS="Microsoft Windows XP Professional" /fastdetect /debug အခ်ိဳ႕ကမူ ထုိစာေၾကာင္းကို ၂ ေၾကာင္းကူးၿပီး တစ္ခုတြင္ "/debug" ဟု ထည့္သြင္းတတ္သည္။)

ထုိ႕ေနာက္ System Path Variable ကုိ UMDH (ႏွင့္ Debugging Tools for Windows) ထည့္သြင္းထားေသာ လမ္းညႊန္ (Directory) သုိ႕ ေျပာင္းေပးပါ။ My Computer ကုိ ညာကလစ္ႏွိပ္ၿပီး Properties ကုိေရြးပါ။ Advanced tab ကုိသြားပါ (အထက္ပါအတုိင္းတူတူပင္ျဖစ္သည္။) Environment Variables ကုိ ႏွိပ္ပါ။ System variables မွ path ကုိရွာၿပီး UMDH ရွိရာ လမ္းညႊန္ကုိ ဆီမီး ၉ လံုး (semi-colon) ခံၿပီး ေနာက္ဆံုးတြင္ ထည့္သြင္းပါ။ အားလံုးကုိ အုိေကႏွိပ္ပါ။ စက္ကုိ restart လုပ္ပါ။ 

စက္ျပန္တက္လာလွ်င္ _NT_SYMBOL_PATH ဟုေခၚေသာ Environment Variable ကုိ သင္ Symbol ထည့္သြင္းထားခဲ့ေသာ လမ္းညႊန္သုိ႕ ေျပာင္းေပးရမည္ျဖစ္သည္။ set _NT_SYMBOL_PATH=SRV*c:\Windows\Symbols ဟု အမိန္႕ေပးပါ။ (Symbol မ်ားကုိ အျခား လမ္းညႊန္သို႕ ထည့္သြင္းမိလွ်င္ c:\Windows\Symbols အစား အဆုိပါလမ္းညႊန္၏ လမ္းေၾကာင္းကုိ ျဖည့္သြင္းပါ။) သင့္ အစီအစဥ္အတြက္ gflags ကုိ ခ်ိန္ေပးရန္အတြက္ "gflags /i yourprogram.exe +ust" ဟု အမိန္႕ေပးပါ။ UMDH သံုးစြဲရန္ အသင့္ျဖစ္ပါၿပီ။ 

သင္၏ အစီအစဥ္ကုိ မွတ္ဥာဏ္ယိုေပါက္ (memory leakage) မျဖစ္ခင္ အေနအထားတြင္ ရပ္တန္႕ေစ၍ (breakpoint ေပးလုိက္လွ်င္ အလြယ္ဆံုးျဖစ္သည္) umdh –p:<your_program_process_id> -f:<logfile1_path_with_ext> -g ဟု အမိန္႕ေပးပါ။ (Process Id ကုိ သိရန္အတြက္ tlist ဟု အမိန္႕ေပး၍ ၾကည့္ရႈႏုိင္ပါသည္။) ထုိ႕ေနာက္တြင္ မွတ္ဥာဏ္ယုိေပါက္ အၿပီးေလာက္ဟု ထင္ေသာေနရာသုိ႕ ေရာက္သည္အထိ ဆက္လက္လုပ္ေဆာင္ေစပါ။ umdh –p:<your_program_process_id> -f:<logfile2_path_with_ext> -g ဟု ထပ္မံအမိန္႕ေပးပါ။ 

ယခု သင္၏ အစီအစဥ္ရွိ မွတ္ဥာဏ္ယုိေပါက္မတုိင္မီႏွင့္ မွတ္ဥာဏ္ယိုေပါက္အၿပီး မွတ္ဥာဏ္အသံုးခ်မႈဆုိင္ရာ အခ်က္အလက္မ်ား logfile1 ႏွင့္ logfile2 တုိ႕တြင္ သိမ္းဆည္းၿပီး တည္ရွိေနပါၿပီ။ အဆုိပါ file မ်ားကုိ ႏႈိင္းယွဥ္ၾကည့္ရႈရန္အတြက္ umdh –d –v –l <logfile1_path> <logfile2_path> ဟု ႏွိပ္ပါက အဆုိပါ အစီအစဥ္ ေနရာ ၂ ခုၾကား ရယူထားၿပီး ျပန္မစြန္႕လႊတ္ရေသးသည့္ မွတ္ဥာဏ္ေနရာမ်ားကုိ ေတြ႕ရွိရပါလိမ့္မည္။ ("> <text_file_path>" ဟု အမိန္႕ေနာက္တြင္ ျဖည့္သြင္းၿပီးမွ အမိန္႕ေပးလွ်င္ ဖန္သားျပင္ေပၚတြင္ ေပၚလာမည့္ အေျဖမ်ားကုိ အဆုိပါ text_file_path တြင္ ေရးသားေပးပါသည္။) 

ဥပမာ

+ 4132 ( 4132 - 0) 1 allocs    BackTraceD3

+ 1 ( 1 - 0)    BackTraceD3    allocations

    (blar blar blar)

    MSVCR80D!fprintf+0000029C (f:\rtm\vctools\crt_bld\self_x86\crt\src\fprintf.c, 70)

    YourProject!leakyFunction+000005EB (d:\leaky.cpp, 325)

    (blar blar blar)

    kernel32!RegisterWaitForInputIdle+00000049

ဟုေတြ႕ရွိရပါက မွတ္ဥာဏ္ မွတ္တမ္း ၂ ခုအၾကားတြင္ leakyFunction (leaky.cpp မွ လိုင္းအမွတ္ ၃၂၅) မွ မွတ္ဥာဏ္ ၄၁၃၂ ဘုိက္ရယူထားၿပီး ျပန္မစြန္႕လႊတ္ရေသးသည္ကုိ ေတြ႕ရွိရပါလိမ့္မည္။ 

စာရႈသူ မိတ္ေဆြမ်ား မွတ္ဥာဏ္ယိုေပါက္မ်ားျဖင့္ ေခါင္းကိုက္ရျခင္း ဒုကၡမွ ကင္းေ၀းပါေစ။