Loading
Showing posts with label Tips. Show all posts
Showing posts with label Tips. Show all posts

Being a fan of StackOverflow

StackOverflow.com ဆိုတာ အေမးအေျဖ ဆိ္ုဒ္တစ္ခုပာ။ ကမဿဘာတစ္ဝွမ္းက ပညာရွင္ေတြ ဝင္ေရာက္ေျဖဆိုျကတာေတြ့ရမွာပာ။

Programming နဲပတ္သက္ရင္ ေမးခ်င္တာေမးလို့ရပာတယ္။ Server အေျကာင္းေမးခ်င္ရင္ေတာ့ ServerFault.com ဆိုတာ ရွိပာတယ္။ Windows/Linux အေျကာင္းေမးခ်င္ရင္ေတာ့ SuperUser.com ဆိုတာ ရွိပာတယ္။

ေမးထားတာ ေကာင္းမေကာင္း ေျဖထားတာ အသံုးဝင္မဝင္ စတာေတြကို Vote ေပးလို့ရပာတယ္။

စိတ္ဝင္စားဖို့ အရမ္းေကာင္းပာတယ္။ က်ေနာှ အေနနဲ့ေတာ့ Real-Life Game တစ္ခု ကစားရသလိုပာပဲ။

တစ္ခ်ိန္မွာ ျမန္မာဘာသာနဲ့ အဲသလို ဆိုဒ္တစ္ခုေလာက္ လုပ္ခ်င္ပာတယ္။ Forum ထက္ အမ်ားျကီးေကာင္းပာတယ္။

က်ေနာှ အရင္က သိေပမယ့္ မသံုးျဖစ္ခဲ့ပာဘူး။ ေသခ်ာမိတ္ဆက္ေပးတဲ့ ကို အိေမာင္ကို ေက်းဇူးတင္ပာတယ္။

#Memo - Addng "Go" Language Syntax File to VIM

#Memo - Addng "Go" Language Syntax File to VIM

#if you dont have folder
mkdir ~/.vim/
mkdir ~/.vim/syntax/
touch ~/.vimrc

cp $GOROOT/misc/vim/go.vim ~/.vim/syntax/

echo "autocmd BufNewFile,BufRead *.go set filetype=go">>~/.vimrc

cheers,

Teach Yourself Programming in Ten Years - ပရိုဂရမ္ တကယ္တတ္ဖို့ ဆယ္ ... နွစ္

Teach Yourself Programming in Ten Years

ပရိုဂရမ္ တကယ္တတ္ဖို့ ဆယ္ ... နွစ္ ... အခ်ိန္လိုအပ္ပါတယ္

Peter Norvig (ပီတာ ေနာဗစ္)


လူေတြ ဘာလို့ ဒီေလာက္ ေလာေနျကတာလဲ?

စာအုပ္ဆိုင္ေတြရွိတဲ့ ဘက္ကို သင္ လမ္းေလ်ွာက္ျကည့္ဖူးမွာပါ။ ဂ်ာဗားကို ၇ ရက္အျပတ္သင္၊ Visual Basic၊ ဝင္းဒိုး၊ အင္တာနက္ စတာေတြကို နာရီ အနည္းငယ္၊ သို့ ရက္အနည္းငယ္ နဲ့ အျပတ္သင္ ဆိုတာမ်ိုးေတြေပါ့။

တစ္ခါက Amazon ဆိုတဲ့ ဝဘ္ဆိုဒ္မွာ ဒီလို ရွာျကည့္ဖူးတယ္။

ထုတ္တဲ့ရက္ ၁၉၉၂ ေနာက္ပိုင္း၊ ေခါင္းစဉ္မွာ days ဆိုတာ ပါျပီး (learn (သို့) teach yourself) ဆိုတာလည္းပါတဲ့ စာအုပ္မ်ား ဆိုျပီးေတာ့ရွာျကည့္တာ ၂၄၈ ခု ထြက္လာပါတယ္။ ပထမဦးဆံုး ၇၈ အုပ္ဟာ ကြန္ပ်ူတာစာအုပ္ေတြ ျဖစ္ျပီး (၇၉ ခုေျမာက္ဟာ ဘင္ဂါလီဘာသာကို ၃ဝရက္နဲ့ အျပတ္သင္ဆိုတဲ့ စာအုပ္ျဖစ္တယ္)

ဒါနဲ့ days ဆိုတဲ့ စာလံုးကို hours ဆိုျပီး ေျပာင္းရွာျကည့္မိတယ္။ ၂၅၃ အုပ္ေတာင္ ထြက္လာတာေတြ့ရတယ္။ ၇၇ အုပ္က ကြန္ပ်ူတာစာအုပ္ျဖစ္ျပီး ၇၈ အုပ္ေျမာက္ဟာ (အဂဿငလိပ္သဒဿဒါနဲ့ ေရးပံုေရးနည္းကို ၂၄နာရီနဲ့ အျပတ္သင္) စာအုပ္ျဖစ္တာေတြ့ရတယ္။

စာအုပ္ ၂၀၀ မွာ ၉၆ ရာခိုင္နွုန္းဟာ ကြန္ပ်ူတာ စာအုပ္ေတြ ျဖစ္ေနတာေတြ့ရတယ္။

ဒါကို ျကည့္ျခင္းအားျဖင့္ လူေတြဟာ ကြန္ပ်ူတာနဲ့ ပတ္သက္ျပီး ေတာှေတာှေလးကို ေလာေနျကတယ္။ ဒါမွ မဟုတ္ ကြန္ပ်ူတာ နည္းပညာေတြကပဲ အျခားဟာေတြနဲ့ ယွဉ္လိုက္ရင္ ဒီေလာက္ လြယ္ကုန္ျပီလား။ ကြမ္တမ္ ရူပေဗဒ၊ ဘင္သိုဗင္ စတာေတြ၊ ယုတ္စြအဆံုး ေခြးေမြးျမူေစာင့္ေရွာက္ဖို့ နည္းေတာင္ ရက္အနည္းငယ္နဲ့ တတ္နည္း ဆိုတဲ့ စာအုပ္မေတြ့ဖူးဘူး။

ဒီအလြယ္တတ္နည္းေတြဟာ သူ့အေျကာင္းနဲ့ သူေတာ့ရွိလိမ့္မယ္။ ဘယ္မွာမွ သံုးစားမရတဲ့ ပရိုဂရမ္ဆိုရင္ေတာ့ လြယ္ရင္လြယ္မွာေပါ့။ အဲလိုမ်ိုးဆိုရင္ေတာ့ ခပ္တံုးတံုး သူေတြေတာင္ ၂၁ရက္နဲ့ တတ္ရင္ တတ္နိုင္လိမ့္မလားပဲ။

ကဲ.. ထားပါေတာ့။ ..

C++ ကို ၃ရက္နဲ့ အျပတ္ ဆိုတဲ့ စာအုပ္ကို နဲနဲ သံုးသပ္ျကည့္ရေအာင္။

- ၃ ရက္နဲ့ ပရိုဂရမ္ တကယ္ ေရးခ်ိန္ ရွိလိုက္မွာ မဟုတ္ပါဘူး။ ကိ္ုယ္ေရးလိုက္တဲ့ ပရိုဂရမ္ရဲ့ ေအာင္ျမင္မွု၊ မေအာင္ျမင္မွုေတြကို သိမွာ မဟုတ္ဘူး။
- တကယ့္ အေတြ့အျကံုရွိတဲ့ ပရိုဂရမ္မွာေတြနဲ့ အလုပ္လုပ္ခြင့္ရွိလိုက္မွာမဟုတ္ဘူး။
- C++ ရဲ့ လက္ေတြ့ အရသာကို သိရမွာ မဟုတ္ဘူး။ လြယ္လြယ္ေျပာရရင္ ေလ့လာဖို့ အခ်ိန္မရဘူး။
- ဒါေျကာင့္ အဲဒီ စာအုပ္ဟာ အေပါှယံေလာက္ပဲ ေျပာသြားနိုင္တာကို ေတြ့ရမွာပါ၊
- ပုတ္ရဟန္းမင္းျကီး အလက္ဇန္းဒါးက ေျပာဖူးတယ္။ နဲနဲပဲ တတ္တာဟာ အနဿတရာယ္ ျကီးမားတယ္တဲ့။

- C++ မွာ ၃ ရက္ဆိုရင္ syntax ေလာက္ေတာ့ သိရင္သိသြားမွာေပါ့ (အျခား ဘာသာစကားကို သိထားတယ္ဆိုရင္)၊ ဒါေပမယ့္ တကယ့္လက္ေတြ့ ဘယ္လိုသံုးရမယ္ဆိုတာ သိလိုက္မွာ မဟုတ္ဘူး။
- ဥပမာ basic ပရိုဂရမ္သမား ဆိုရင္၊ C++ ရဲ့ syntax  ေတြကို ဘယ္လိုသံုးရမယ္ဆိုတာ သိေကာင္းသိလာမယ္။ ဒါေပမယ့္ C++ ရဲ့ တကယ္ေကာင္းတဲ့ ေနရာ၊ မေကာင္းတဲ့ ေနရာေတြကို  သိမွာ မဟုတ္ဘူး။ ဒါေျကာင့္ ဘာမွ အဓိပဿပာယ္မရွိဘူး။
- အလန္ ပါးလစ္ဆိုတဲ့သူေျပာဖူးတယ္ ... ဘာသာစကားတစ္ခုဟာ သင့္ရဲ့ လက္ရွိ ပရိုဂရမ္ စဉ္းစားပံု စဉ္းစားနည္းကို ေျပာင္းလဲေစမွု မရွိဘူးဆိုရင္၊ ေလ့လာရတာ မတန္ပါဘူး တဲ့။
- တကယ္ျဖစ္လာမွာက C++ ရဲ့ တပိုင္းတစ ေလာက္ပဲ နားလည္လိုက္မွာပါ။ ပရိုဂရမ္ တကယ္တတ္ဖို့မဟုတ္ပဲ၊ အလုပ္ဘယ္လိုျပီးေအာင္လုပ္ရမလဲ ဆိုတာ မ်ိုးနဲ့ ပိုျပီး တူတာေတြ့ရပါတယ္။

တကယ္ေတာ့ သံုးရက္ဟာ ဘာမွ မဟုတ္ဘူး ဆိုတာ လုပ္ျကည့္ရင္ သိပါလိမ့္မယ္။

------

ပရိုဂရမ္ကို ေလ့လာဖို့ ဆယ္နွစ္ အခ်ိန္ေပးပါ။


သုေတသန ပညာရွင္ေတြျဖစ္တဲ့ (Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) တို့ကို ျကည့္ပါ။ သူတို့ေတြ သူတို့ရဲ့ ကိုယ္ပိုင္ ပညာရပ္ေတြကို က်ြမ္းက်င္ဖို့ ဆယ္နွစ္ အခ်ိန္ယူခဲ့ျကရပါတယ္။ ခ်က္စ္ ကစားတာ၊ အနုပညာ ဖန္တီးတာ၊ ေျကးနန္း ပို့ေဆာင္တဲ့ပညာ၊ ပန္းခ်ီဆြဲတာ၊ စနဿဒယားတီးတာ၊ ေရကူးတာ၊ တင္းနစ္ ကစားတာ၊ ဦးေနွာက္နဲ့ အာရံုေျကာ ပညာအတြက္ သုေတသန လုပ္တာေတြဟာ တကယ့္ကို အခ်ိန္ေပးခဲ့ရပါတယ္။

အဓိက ေအာင္ျမင္ဖို့ဟာ တစ္မ်ိုးတည္းကို ပဲ ထပ္ခါထပ္ခါ လုပ္ရံုနဲ့ လဲမရပါဘူး။ ကိုယ့္အစြမ္းအစ ထက္ပိုမိုတဲ့ အရာကို အျမဲပဲ ေလ့လာလုပ္ေဆာင္ ျကည့္ေနဖို့  ျဖစ္ပါတယ္။ တျဖည္းျဖည္းနဲ့ ပိုပိုသာလာေအာင္ အမွားကင္းလာေအာင္ ျပုလုပ္နိုင္ဖို့ကို သာလ်ွင္ ထပ္ခါထပ္ခါ လုပ္ေဆာင္ရမွာ ျဖစ္ပါတယ္။

ျဖတ္လမ္းဆိုတာလည္း မရွိပါဘူး။ မိုးဇက္ဆိုတဲ့ အနုပညာ ပါရမီရွင္ဟာ အသက္ ၄ နွစ္ကတည္းက ေတးဂီတကို စလုပ္ခဲ့ေပမယ့္ ကမဿဘာ့အဆင့္အတန္းဝင္ျဖစ္ဖို့ ၁၃နွစ္ ျကာခဲ့ပါတယ္။

Beatles ဟာလည္း ၁၉၅၇ ကတည္းက ကလပ္ေတြမွာ စတင္တီးဆိုေဖ်ာှေျဖခဲ့ေပမယ့္ တကယ္တမ္း ေအာင္ျမင္ခဲ့တာ ၁၀ နွစ္ျကာျပီး ၁၉၆၇ ခုနွစ္မွ ျဖစ္ပါတယ္။

အထက္ပါ အနုပညာရွင္ေတြ အားလံုး အသက္ ၅နွစ္ေလာက္ကတည္းက စတင္ေလ့လာခဲ့ပါတယ္။
အသက္ ၅ နွစ္သားတုန္းက ေလ့က်င့္မွုဟာ တစ္ပတ္ကို ၂နာရီ ၃ နာရီ ဝန္းက်င္ေလာက္ရွိပါတယ္။
အသက္ ၈ နွစ္ေလာက္မွာ ပိုမို စြမ္းေဆာင္လာနိုင္ျပီး တစ္ပတ္ကို ၆ နာရီ ၊ အသက္ ၁၂ နွစ္မွာ တစ္ပတ္ ၈ နာရီ၊ အသက္ ၁၆ နွစ္မွာ ၁၄ နာရီ စသျဖင့္ေလ့လာခဲ့ျပီး အသက္ ၂၀ မွာ တစ္ပတ္ကို နာရီ ၃၀ မ်ွ ရွိပါတယ္။

အသက္၂၀ ေရာက္ေနတဲ့ အခ်ိန္မွာ ေလ့က်င့္ခဲ့တဲ့ အခ်ိန္ေတြကို ေပာင္းျကည့္ရင္ နာရီ ၁၀၀၀၀ ေလာက္ ရွိေနပါတယ္။ အျခား ပံုမွန္ေတာှသူေတြဟာ နာရီ ၈၀၀၀ ေလာက္ပါ။ သူတို့ကို သင္ျပေပးသူေတြဟာေတာ့ နာရီ ၄၀၀၀ ေလာက္ပဲ ရွိပါလိမ့္မယ္။

ဒါေျကာင့္ အတိအက်ေျပာမယ္ဆိုရင္ေတာ့ ၁၀ နွစ္ဆိုတာထက္ နာရီ ၁၀၀၀၀ ေလာက္ ေလ့က်င့္ဖို့ လိုတယ္ဆိုတာပါဘဲ။

ဆာမ်ူရယ္ ဂ်ြန္ဆင္ (1709-1784) က ဒီလို ေျပာခဲ့ပါတယ္  "ဘယ္ေနရာက ထူးခ်ြန္တဲ့သူမဆို ေအာင္ျမင္ဖို့ အတြက္ ဘဝနဲ့ ရင္းျပီး ျကိုးစားလာျကရတာပဲ၊ ေဈးေပါေပါနဲ့ ဝယ္လို့ရတဲ့ဟာ မဟုတ္ဘူး ဆိုတာပါပဲ။"

Chaucer (1340-1400) က ဒီလို ညဉ္းတြားဖူးပါတယ္ ... ဘဝဆိုတာ တိုသေလာက္ တစ္ခုခု က်ြမ္းက်င္ေအာင္ လုပ္ဖို့က ေတာှေတာှျကာတယ္။

Hippocrates (c. 400BC) ကေတာ့ ဒီလိုမ်ိုး ေျပာဖူးပါတယ္။ ဘဝဟာ သိပ္တိုတယ္ ... ျကိုးစားမွုက ျကာရွည္ရတယ္၊ အခြင့္အေရးေတြက မျမင္ရသေလာက္ပဲ၊ စမ္းသပ္မွုေတြအတြက္ ေအာင္ျမင္မွုတစ္ခုရဖို့ဟာ အင္မတန္ခက္ခဲတယ္။

-----

ပရိုဂရမ္နဲ့ ပတ္သက္ျပီး ေအာင္ျမင္ဖို့အတြက္ လမ္းေျကာင္းကို ဒီလိုေျပာျပခ်င္ပါတယ္။
 

၁။ အေရးအျကီးဆံုးက တကယ္စိတ္ဝင္စားပါေစ၊ ကိ္ုယ္ဘာေရးလိုက္ေရးလိုက္ ေပ်ာှရြင္မွုရွိပါေစ။ တကယ္ေပ်ာှရြင္မွုရွိမွ ဆယ္နွစ္လုပ္ကိုင္နိုင္သြားဖို့ အင္အားေတြရွိမွာ ျဖစ္ပါတယ္။

၂။ အျခား ပရိုဂရမ္မာေတြနဲ့ စကားေျပာျဖစ္ေအာင္ ျကိုးစားပါ။ အျခားသူေတြေရးထားတဲ့ ပရိုဂရမ္ေတြကို ဖတ္ျဖစ္ေအာင္ျကိုးစားပါ။ ဒါဟာ စာအုပ္ေတြ ဖတ္တာထက္၊ သင္တန္းေတြ တက္တာထက္ ပိုအေရးျကီး ပါတယ္။

၃။ ပရိုဂရမ္ဆိုတာ ေရးျကည့္ရင္းနဲ့ မွ ပိုတတ္တဲ့ အမ်ိုးပါ။ အေသးအမြွား ပရိုဂရမ္ေလးေတြေတာင္ ဖန္ရွင္ အျပည့္အစံုနဲ့ ျဖစ္ေအာင္ေရးပါ။ အျခားသူေတြရဲ့ သံုးသပ္မွုေတြကတဆင့္ ပိုေကာင္းေအာင္လုပ္ျကည့္ပါ။ အမွားေတြကို ျပင္ျဖစ္ေအာင္ ျပင္ျကည့္ပါ။

၄။ အကယ္၍ သင္ဟာ တကဿကသိုလ္ကို လည္း ၄ နွစ္ေလာက္တက္ခ်င္ေသးတယ္လည္းတက္လို့ရပါတယ္။ ဒါဟာ သင့္အတြက္ ပိုျပီး နက္နဲတဲ့ အေတြ့အျကံုတစ္ခုကို ရေကာင္းရပါလိမ့္မယ္။ မတက္ဘူးဆိုရင္လည္း အလုပ္ကေနလဲ ရနိုင္ပါတယ္။ တကဿကသိုလ္ပဲျဖစ္ျဖစ္ အလုပ္ပဲျဖစ္ျဖစ္ စာအုပ္ကေန ေလ့လာရံုဆိုရင္ေတာ့ မလံုေလာက္ပါဘူး။ ကြန္ပ်ူတာ တကဿကသိုလ္ ပညာေရးဟာ ဘယ္သူ့ကိုမွ ပညာရွင္အဆင့္ျဖစ္ေအာင္ ျပုလုပ္မေပးနိုင္ပါဘူး။ ပန္းခ်ီပညာ ဆိုရင္ စုတ္တံ သံုးပံုသံုးနည္းနဲ့ ေဆးစပ္ပံု အေျခခံကို ပဲ သင္ေပးနိုင္မွာ ျဖစ္ပါတယ္။

၅။ အျခား ပရိုဂရမ္မာေတြပါတဲ့ ပေရာဂ်က္တစ္ခုခုကို ဝင္လုပ္ပါ။ တခ်ို့ ပေရာဂ်က္ေတြမွာ ထိပ္သီးျဖစ္ေအာင္ျကိုးစားပါ။ တခ်ို့ပေရာဂ်က္မွာ ေအာက္ဆံုးကလဲ ျဖစ္ရင္ျဖစ္ေနပါေစ။ သင္ထိပ္ဆံုး ေရာက္ေနစဉ္မွာ သင့္စြမ္းရည္ကို အေကာင္းဆံုးအသံုးခ်ပါ။ အျခားသူေတြကိုလည္း သင့္ ေတြးေခါှမွုေတြကို ထုတ္ေဖာှျပသပါ။ သင္ေအာက္ဆံုးမွာ ေရာက္ေနတဲ့ ပေရာဂ်က္ဆိုရင္လည္း ေရွ့က ဆရာ့ဆရာေတြ လုပ္တာကို ေလ့လာပါ၊ သူတို့ လုပ္တာ မလုပ္တာေတြကိုလည္း ဆင္ျခင္သံုးသပ္ပါ။

၆။ အျခားသူေတြရဲ့ ပေရာဂ်က္ေတြကို ေလ့လာပါ။ နားလည္ေအာင္လုပ္ထားပါ။ အကယ္၍ အေရးေပါှအေျခအေန ျပင္ဖို့လိုတာေတြရွိရင္ နဂို ေရးတဲ့သူေတြမရွိရင္ သင္ဝင္ေရးနိုင္ေအာင္ လုပ္ထားပါ။
ေနာက္ျပီး ေနာက္လူ အတြက္လည္း အလြယ္ဆံုးျဖစ္ေအာင္ ပရိုဂရမ္ ဒီဇိုင္း အေကာင္းဆံုးျဖစ္ေအာင္ ျပုလုပ္ထားပါ။

၇။ ပရိုဂရမ္ ဘာသာစကား အနည္းဆံုး ဒါဇင္ဝက္ ေလာက္ေတာ့ ေလ့လာပါ။ class ရဲ့ သေဘာသဘာဝေတြ ပါဝင္တဲ့ ဂ်ာဗား တို့ C++ တို့ေတာ့ တစ္ခု အနည္းဆံုးပါဝင္ပါေစ၊ ေနာက္ျပီး ဖန္ရွင္ သေဘာသဘာဝေတြပါဝင္တဲ့ Lisp တို့ ML တို့လိုမ်ိုးကို လည္း တစ္ခုပါဝင္ပါေစ၊ Template သေဘာတရားေတြပါဝင္တဲ့ Prolog တို့ C++ Template လိုဟာမ်ိုးတစ္ခု၊ coroutines လို့ေခါှတဲ့ အပိုင္းေလးေတြခြဲျပီး အလုပ္လုပ္လို့ရတဲ Icon တို့ Scheme လိုဟာမ်ိုးတစ္ခု၊ Sisal လို့ေခါှတဲ့ Parallel အသံုးျပု လို့ရတဲ့ သေဘာထားေတြပါတာမ်ိုးေတြကို ေလ့လာသင့္ပါတယ္။

၈။ ေနာက္ျပီး ပရိုဂရမ္ အခ်က္အလက္တစ္ခု အလုပ္လုပ္ခ်ိန္မွာ အခ်ိန္ ဘယ္ေလာက္ျကာတာတို့၊ memory ေပါှက စာလံုးတစ္လံုးဖတ္ဖို့ ဘယ္ေလာက္ျကာတာတို့၊ cache ပါရင္ ဘယ္ေလာက္ျကာတယ္။ မပါရင္ ဘယ္ေလာက္ျကာတယ္တို့၊ ဟာ့ဒစ္ကေန စာလံုးေတြ ဆက္တိုက္ဖတ္ရင္ ဘယ္ေလာက္ျကာတယ္တို့၊ ဟာ့ဒစ္ရဲ့ ဖတ္ေနတဲ့ ေနရာမဟုတ္ပဲ အျခားေနရာက ဖိုင္ကိုသြားရွာရင္ ဘယ္ေလာက္ျကာတယ္ စသျဖင့္ကို သိထားသင့္ပါတယ္။ ဒါေတြသိထားရင္ အျခား ပရိုဂရမ္ေတြထက္ အလုပ္လုပ္ပံုျခင္း တူရင္ေတာင္မွ ပိုေကာင္းတဲ့ ပိုျမန္တဲ့ ပရိုဂရမ္ကို ျပုလုပ္နိုင္မွာ ျဖစ္ပါတယ္။

၉။ တတ္နိုင္ရင္ ကြန္ပ်ူတာ ဘာသာစကားေတြရဲ့ စံသတ္မွတ္ျခင္းအဖြဲ့ေတြမွာပါ ပါဝင္နိုင္ေအာင္ျကိုးစားပါ။ ANSI C++ ေကာှမတီလဲျဖစ္ရင္ျဖစ္မယ္၊ ကိုယ္ပိုင္ ကုတ္ေရးပံုေရးနည္း စတိုင္ ညွိနွိုင္းပြဲလဲျဖစ္ရင္ျဖစ္မယ္။ ကုတ္တစ္ေျကာင္းေရွ့မွာ စာလံုး အလြတ္ ဘယ္နွခု စသျဖင့္ေပါ့။ ဒါေတြလဲ စနစ္တက်ျဖစ္ေအာင္ လုပ္ျကပါတယ္။ အဲဒီမွာ ပါဝင္ျခင္းအားျဖင့္ ပရိုဂရမ္ရဲ့ သေဘာတရားေတြကို ေရးပံုေရးနည္း စတိုင္စတာေတြကို ပိုမို နားလည္လာမွာပါ။ ဘယ္ပရိုဂရမ္မွာေတာ့ျဖင့္ ဘာကေကာင္းတယ္။ ဘယ္သူေတြက ဘယ္လို သေဘာက်တယ္ ဆိုတာေတြလည္း အေရးပါပါတယ္။
အဲ စတန္းဒတ္ လုပ္ဖို့ကေတာ့ မွန္မွန္ကန္ကန္နဲ့ သဘာဝ က်တဲ့ နည္းလမ္းကို ျမန္ျမန္ဆံုးျဖတ္နိုင္ပါေစ။ (ျကာသြားရင္ လူလက္ခံဖို့ခက္မွာစိုးလို့ျဖစ္မယ္။)

အဲဒါေတြ အကုန္လံုးကို ေခါင္းထဲထည့္ထားပါ။ စာအုပ္ကေန ဘယ္ေလာက္ေလ့လာနိုင္လဲ ဆိုတာ လက္ေတြ့သိျမင္လာပါလိမ့္မယ္။

က်ေနာှ ကိ္ုယ္တိုင္ စာအုပ္နဲ့ေလ့လာခဲ့ဖူးတယ္။ က်ေနာှ (ေနာဗစ္) ပထမ သားဦး ေမြးတဲ့ အခ်ိန္မွာ How To လို စာအုပ္ေတြ အကုန္ဖတ္ခဲ့ျပီးျပီ။ ဒါေပမယ့္ ဘာမွ မဟုတ္ေသးေျကာင္း ကိုယ္ကိုယ္ကို သိေနပါတယ္။ ေနာက္ ၂နွစ္ခြဲေလာက္ျကာေတာ့ အဲဒီမွာ ျပန္စဉ္းစားျကည့္တယ္။ စာအုပ္ေတြ ျပန္ဖတ္သင့္သလားလို့ ... ေနာက္ဆံုး အဲဒီစာအုပ္ေတြ ျပန္ဖတ္မယ့္အစား ပညာရွင္ေတြ ေရးေနတာေတြကို ေလ့လာတာ၊ ပိုအသံုးဝင္မယ္လို့ ဆံုးျဖတ္ခဲ့တယ္။

Fred Brooks ဆိုတဲ့ သူတစ္ေယာက္ ေဆာ့ဝဲ ဒီဇိ္ုင္း ပညာရွင္ေတြ ေမြးထုတ္ခဲ့ပံုကေတာ့ ဒီလိုပါ။

၁။ ပံုမွန္ စနစ္က်က် ဒီဇိုင္း ပညာရွင္ေတြကို အရင္ဆံုးရွာတယ္။
၂။ သူတို့အတြက္ တိုးတက္ေအာင္ျမင္ဖို ့အတြက္ career လမ္းခ်ေပးတယ္။
၃။ ဒီဇိ္ုင္းသမားေတြ အခ်င္းခ်င္း ေတြ့ဆံု၊ နည္းပညာ ဖလွယ္နိုင္ေအာင္ လုပ္ေပးတယ္။

ဒါဟာ ဘာကိုေျပာသလဲ ဆိုရင္ တခ်ို့သူအေတာှမ်ားမ်ားမွာ အရည္အခ်င္းတစ္ခု ရွိေနျပီးသားပဲ။
အလုပ္က လိုက္ေလ်ွာညီေထြ ျဖစ္မယ္ဆိုရင္ ေအာင္ျမင္တဲ့ ပရိုဂရမ္မာေတြ ျဖစ္လာမွာပဲ လို့ ေကာက္ခ်က္ခ်လို့ရပါတယ္။

---

ဒါေျကာင့္ လက္ရွိ ဂ်ာဗားစာအုပ္ကို သင္ဝယ္မယ္ စဉ္းစားေနတယ္ဆိုရင္ သြားသာ ဝယ္လိုက္ပါ။
သူ့အတိုင္းအတာနဲ့ သူေတာ့ အသံုးက်ပါလိမ့္မယ္။ ဒါေပမယ့္ အဲဒါနဲ့ ၂၄နာရီ အတြင္း၊ ရက္ အနည္းငယ္ အတြင္း၊ သို့ လအနည္းငယ္ အတြင္းမွာေတာ့ သင့္ ဘဝကို ေျပာင္းလဲနိုင္ဦးမွာေတာ့ မဟုတ္ေသးပါဘူး။

ပီတာ ေနာဗစ္ http://norvig.com
---
Original Article : http://norvig.com/21-days.html

တခ်ို့ေနရာေတြမွာ ဆီေလ်ွာှသလို ျပန္ထားျခင္း ျဖစ္ပါတယ္။ မူရင္းဆိုလိုရင္းနဲ့ ကြဲျပားေကာင္း ကြဲျပားပါမည္။ :-)
---

I am learning programming 11 years now, but I am still cant do half of it :P
Well, I am not him :P


Anyway, Cheers,
Mark

#Memo - ls

make ls.bat in windows folder

dir %1 %2 %3 %4 %5 %6 %7 %8 %9

then i can use ls on windows too :P

Getting Direct Download Link from MediaFire

- normal mediafire links are
http://www.mediafire.com/download.php?xxxxxxxxxxx
or
http://www.mediafire.com/?xxxxxxxxxxx

- in the page content, there is a javascript function calling, cu
cu('xxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','zzzzz')

- xxxxxx, and yyyyy.... is important key to retrive direct link

- set dummy cookie in request header like this,
('Cookie','ukey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
this is important, mediafire do check that cookie, if not there, it will return dummy page

- send request to -
http://www.mediafire.com/dynamic/download.php?qk=xxxxxxxxxxx&pk=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy&r=zzzzz

- in response content, find following infos
var sServer = 'download00000.mediafire.com';
var sQk = 'xxxxxxxxx';
var sFile = 'FILE_NAME.EXT';
Please report this key to support (KKKKKKKKKKKK)

build direct download url form that.

http://download00000.mediafire.com/KKKKKKKKKKKg/xxxxxxxxxxxx/FILE_NAME.EXT

- please note that character g after KKKKKKKKK is needed

- mediafire can use download accelerators, so it is useful when you want to download hundreds of files, first, dump direct links and pass it to download accelerators

Cheers,

#Memo : Telneting into Router with Python (using telnetlib)

% python
>>>
>>> # importing telnetlib
>>> import telnetlib
>>>
>>> # telnet into 192.168.1.1
>>> t=telnetlib.Telnet("192.168.1.1")
>>>
>>> # wait until Username is appear
>>> t.read_until("Username: ")
>>>
>>> # send the username
>>> t.write("<username>\n")
>>>
>>> # wait until Password is appear
>>> t.read_until("Password: ")
>>>
>>> # send the password
>>> t.write("<password>\n")
>>>
>>> # wait until > is appear
>>> t.read_until(">")
>>>
>>> # send the enable password
>>> t.write("<enable>\n")
>>>
>>> # wait till # is appear
>>> t.read_until("#")
>>>
>>> # Now you are in Global Configuration Mode
>>>

Cheers,
Soe Min

mod_python.psp

Asp တို့ Php တို့လို <% %>, <%= %> ဒီဇိုင္းမ်ိုးနဲ့ ေရးခ်င္ရင္

httpd.conf မွာ ေဟာ့ဒီလို ေရးေပးနိုင္ပါတယ္။
<Directory "C:/xampplite/htdocs">
AddHandler mod_python .psp
PythonHandler mod_python.psp
</Directory>

test.psp မွာ ဒီလိုေရးလို့ရပါတယ္။
<%= 'Hello World' %>

လူအေတာ္မ်ားမ်ားျကိုက္ေကာင္းျကိုက္ပါလိမ့္မယ္။ က်ေနာ္ ကေတာ့ သိပ္သေဘာမက်ပါဘူး။
အသံုးမေတာ္ရင္ ကိုယ့္ဆိုဒ္ထဲကို code ေတြ inject လုပ္ျပီး ဆာဗာတစ္ခုလံုး ျကြသြားနိုင္ပါတယ္။

Rgds,
Soe Min

mod_python.publisher

httpd.conf ထဲမွာ PythonHandler test လို့ေရးရင္ test.py ဖိုင္တစ္ခုပဲ run လို့ရပါမယ္။

mod_python.publisher သံုးရင္ *.py ကို run ခိုင္းလို့ရပါတယ္။

<Directory "C:/xampplite/htdocs/">
AddHandler mod_python .py
PythonHandler mod_python.publisher
</Directory>

test.py (ပိုသန့္သြားပါတယ္။ က်ေနာ္ ဒီနည္းကို အျကိုက္ဆံုးပါ)
def index():
return "Hello World!"

ဒါလည္း Hello World! ပဲေပါ္ရပါမယ္။

Cheers,
Soe Min

mod_python with xampp

mod_python ဟာ python ကို web application အေနနဲ့ သံုးလို့ရေအာင္ apache နဲ့ link လုပ္ေပးတဲ့ module ျဖစ္ပါတယ္။

I am using following versions.

xampplite 1.7.1, python 2.5, mod_python 3.3.1

xampplite-win32-1.7.1.exe

python-2.5.4.msi

mod_python-3.3.1.win32-py2.5-Apache2.2.exe

mod_python install လုပ္ရင္ mod_python.so ကို xampp/apache/modules ေအာက္မွာ ျဖန့္ေပးေအာင္ ေရြးေပးလို့ရပါတယ္။ ကိ္ုယ့္ဘာသာကိုယ္ ျဖန့္ရင္လည္းရပါတယ္။

xampp/apache/conf/httpd.conf မွာ ဒီဟာထဲ့
LoadModule python_module modules/mod_python.so

Directory တစ္ခုခုမွာ AddHandler ျဖည့္ေပး ရင္
<Directory "C:/xampplite/htdocs"> 
AddHandler mod_python .py
PythonHandler test
</Directory>

test.py
from mod_python import apache

def handler(req):
req.write("Hello World!")
return apache.OK
ကို run ရင္

Hello World! လို့လာေပါ္ပါမယ္။

Cheers,
Soe Min

bing.com

microsoft search abcd 7z


its display binary data :D heehee, do we need to see binary data or do we understand? :P

may b even exploits can be feed as search data to bing, coz its support binary data :D

Disgby - IM + Email + Social Networks Client

http://www.digsby.com/

wxWidgets ကိုသံုးထားပံုရပါတယ္။ Facebook တို့ twitter တို့ LinkedIn တို့ သံုးတတ္သူေတြ၊
Gtalk ေတြ Yahoo Chat ေတြသံုးတတ္သူေတြဆိုရင္ သင့္ေတာ္မယ္ထင္ပါတယ္။
တစ္ခုတည္းကေန အကုန္လံုးကို ခ်က္လို့ရမယ္ထင္ပါတယ္။ အေကာင့္၂ခု၃ခုရွိေနရင္ေတာင္ combine လုပ္ပစ္ျပီး တစ္ေယာက္အေနနဲ့ လာျပေအာင္ေတာင္ လုပ္လို့ရတယ္ေျပာပါတယ္။
mark as read တို့ report spam တို့ေတာင္ လုပ္ရတဲ့ပံုေပါ္ပါတယ္။
http://www.digsby.com/features.php



some more screenshots
http://www.digsby.com/screenshots.php

ref:
http://www.maximumpc.com/article/features/maximum_pcs_32_totally_essential_apps?page=0%2C3
http://wxwidgets.org/

Cheers,

SWIG (Simplified Wrapper and Interface Generator)

SWIG ဆိုတာ C/C++ နဲ့ ရးေထားတဲ့ ကုတ်တွေကို
Tcl/Tk、Perl、Python、Ruby、PHP、Lua、
Java、C#、Scheme、Ocaml
စတာတွေကနေပြီး ခ်ါေသံုးလို့ရအာေင် လုပ်ပးေတဲ့ wrapper ဖြဈပါတယ်။

ဥပမာ wxWidgets လို့ခ်ါေတဲ့ C++ နဲ့ရးေထားတဲ့ Cross-Platform UI library ကို python ကနေျခိတ်သံုးလို့ရအာေင် လုပ်ထားတဲ့ wxPython ဟာ swig ကိုသံုးပြီး compile လုပ်ထားတာဖြဈပါတယ်။

http://www.swig.org/
http://en.wikipedia.org/wiki/SWIG
http://ja.wikipedia.org/wiki/SWIG

Disabling ipv6 in Ubuntu 9.04

this help me to do that

http://www.ubuntu-inside.me/2009/04/howto-disable-ipv6-at-ubuntu-jaunty.html

Procedures (my way)

1. download 3 debs -> linux-header-all, linux-header-generic, linux-image from here
http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.29/

2. install, 1 -> linux-header-all, 2-> linux-header-generic , 3-> linux-image

3. sudo gedit /boot/grub/menu.lst

4. replace all splash to splash ipv6.disable=1 (you know what i mean :D)

5. reboot it, thats all :-)

Cheers,
Soe Min

#Memo - Windows Update ကို Custom Server Assign လုပ္ျခင္း

gpedit.msc\Administrative Template\Windows Component\Windows Update\

Intranet Microsoft Update - http://192.168.1.x ေပးထားရင္ microsoft site က update မလုပ္ပဲ ေပးထားတဲ့ ေနရာကေနလုပ္ပါတယ္။

#Memo - gpedit.msc မွာ snap-in initialize error တက္ခဲ့လ်ွင္

#Memo 1

windows xp, gpedit.msc run မရဘဲ snap-in initialize error တက္ခဲ့လ်ွင္ %path% မွာ \system32\wbem ကိုထဲ့ရင္ အိုေကပါတယ္။


http://support.microsoft.com/kb/826282/ja

Memo# Py_Unicode Object & wchar_t

Py_UNICODE

- Py_UNICODE is a typedef alias for either unsigned short (UCS2) or unsigned long (UCS4).
- UCS2 and UCS4 Python builds are not binary compatible.

To compile Python with UCS4,
./configure --enable-unicode=ucs4
make && make install

wchar_t

In Unix/Linux
wchar_t is unsigned long (32 bits, 4 bytes)

In Windows
wchar_t is unsigned short (16 bits, 2 bytes)

If you use wchar_t C/C++ in codes and when need to convert to Py_Unicode, your python need to be UCS4 binary.

Cheers,

Crawling the blog html content with python (direct HTML read method, not through RSS)

Crawling the blog html content with python (direct HTML read method, not through RSS)

import codecs,re,urllib2

f = urllib2.urlopen('http://www.soemin.net/2009/04/font-encoding-detection-for-zawgyi-and.html')

htm=re.sub("&#(\d+);",lambda x:unichr(int(x.group(1))),f.read().decode("utf8"))

txt=re.findall('<div[^>]+post-body[^>]+>\s*(.*?)\s*<div[^>]+clear:\s*both[^>]+></div>',htm,re.DOTALL)[0]

codecs.open("crawl.txt", 'w+',"utf8").write(txt)

#its also convert #&4096; to က

results will be like this

ေဇာ္ဂ်ီနဲ့ ယူနီကုတ္ ၅.၁ ခြဲျခားျခင္း (Font Encoding Detection for Zawgyi and Unicode 5.1)

.....

အဓိကအားျဖင့္ကေတာ့
၁။ သေဝထိုး၊ ရရစ္၊ ရပင္းစတာေတြ နဲ့

....

.....

Cheers,

Cheers,
Soe Min

Burglish Update v1.9.2

updates for unicode 5.1 direct input layout (typewriter input)

In Unicode 5.1, သေဝထိုး and ရရစ္ need to store after consonent(က-အ), like this က, ေက

But from user side, most people want to type ဩေဝထိုး first.

so, i reorder the input sequence after you type in burglish test area.

http://burglish.googlepages.com/testarea.htm
or
http://burglish.my-mm.org/latest/trunk/web/testarea.htm

when you type ေက, it will automatically fix က, and ေျက to က , if you have proper unicode 5.1 font(Myanmar3,Padauk,Parabaik) and render engine (eg. latest uniscribe), you will not see like this ျက , you will instead see, ျက

for ေျမာင္, you need to type ေမ ာ ျင ္. it will properly convert to unicode 5.1 compatible one မ ာ ေျင ္.

and few others update.

Zawgyi's some useful shortcuts like,

Shift Q -်ွ
Shift W -်ြွ
Shift E - ်ြ
Shift K -ွု

can also type in Unicode 5.1 (Myanmar3) through Burglish Test Engine

Cheers,
Soe Min

-ize, -ise

acclimatize -ise
authorize ,-ise
amortization , -ise
agonizing,-ise
aggrandizement -ise

>>> r="(\w+iz\w*)\s*,?\s*\-(is\w*)"
>>> [re.sub(r,"\\1",INPUT),re.sub(r,lambda x:x.group(1).replace("iz","is"),INPUT]

[acclimatize,acclimatise]
[authorize,authorise]
[amortization,amortisation]
[agonizing,agonising]
[aggrandizement,aggrandisement]

I am writing dictionary parser from HTML files lately, for few weeks.

Cheers,
Soe Min

က်ေနာ္ဖတ္ေသာ အျခား ဘေလာ့ / ဆိုဒ္မ်ား