ကျတော် Java နဲ့ အင်တာနက်ကဖီးဆိုင် ထိန်းချုပ် ဆောဖ်ဝဲ (translation to Cyber Cafe Management System)စရေးမယ်လုပ်တုန်းက အတော်တော်များများက ကျတော့ကို တားဖူးတယ်။
Java နဲ့ ဆိုရင် Windows ရဲ့ UI Control ပိုင်းတွေမှာ ဝင်ထိန်းလို့ရမှာ မဟုတ်ဖူးလို့ပြောခဲ့ဖူးတယ်..။
ဟုတ်လဲဟုတ်ပါတယ်..။ ကျတော် တစ်ချို့အပိုင်းတွေမှာ ဝင်ပြီး Control လုပ်လို့ မရခဲ့ပါဘူး..။
Program ရေးခဲ့တုန်းကလဲ တစ်ခါထဲနဲ့ပြီးမှာ မဟုတ်မှန်း ကြိုတွက်ပြီးသားဖြစ်လို့ သိပ်မကြိုးစားကြည့်ခဲ့ပါဘူး..။
Project ရေးနေတုန်း တစ်လျှာက်လုံး တွေရတဲ့ ပြဿနာတွေ တော်တော်များများက GUI ပိုင်းမှာပါ..။
အဲဒီအချိန် တုန်းက ကျတော်ကိုယ်တိုင်က သိပ်အရှင်းကြီးမသုံးတက်သေးတဲ့ IDE နဲ့ သူ့ရဲ့ Generate Code ကိုပေးမပြင်ခဲ့တာတွေကိုမကြိုက်လို့ ခေါင်းမာခဲ့တာက တစ်ကြောင်း IDE တွေရဲ့ GUI builder နဲ့ သိပ်မရင်း႖နှီးသေးတာက တစ်ကြောင်း GUI ကို IDE မသုံးပဲ Coding နဲ့ပဲရေးဖို့ဆုံးဖြတ် လိုက်ပါတယ်.။
အဲဒီကစပြီး UI ကို ဒီဇိုင်းဆွဲလိုက် blueprint အတွက် Layout တွေထပ်ဖို့ရေးလိုက်နဲ့ GUI တစ်ခုတစ်ခုကို ပြီးဖို့ တော်တော် အချိန်ပေးလိုက်ရတာအမှန်ပါပဲ.။
အဲဒီလိုလုပ်ရတဲ့အတွက် ကောင်းတဲ့အချက် တစ်ခုရှိတယ်..
အဲဒါက နောက်ပိုင်းမှာ JDK ရဲ့ API အချို့ ရဲ့သုံးပုံသုံးနည်းကို နားလည်သွားစေတာပါပဲ...
ဥပမာ ပြောရရင် ကျတော်တို့ JTable သုံးမယ်ဆိုရင် ဒီအတိုင်း Object ဆောက်ပြီး အဲ့ဒီ Object ထဲ Column တွေသွား ထည့်လိုက်တာမျိုးတွေ လုပ်လို့ရပါတယ်..။ ဒါပင်မဲ့ တစ်ကယ်တန်း ပိုပြီးအသုံးတည့်တာတွေက Model တွေသုံးပြီး JTable ကိုဆောက်သွားတာက ပိုပြီးအသုံးတည့်ပါတယ်။ အဲဒါကိုလည်း ကျတော်စစရေးဖို့လေ့လာတုန်းက Tutorial ထဲမှာလည်းပြောထားတာကို တွေ့ပါတယ်.. ဒါပင်မဲ့ Tutorial ကလမ်းညွန်ပေးတဲ့ သဘောပဲ ရိုးရိုးနဲ့ Model သုံးတာမှာ ကွာခြားချက်ကို တစ်ကယ်တန်းနားလည်ဖို့ကျတော့ Coding နဲ့သေချာစမ်းကြည့်ရတာကမှ ကွင်းကွင်းကြီးမြင်မှာ.။ မဟုတ်ရင် အဲဒီသူပေးထားတဲ့ ရိုးရိုး JTable ကိုပဲ Runtime မှာနောက်ထပ် Row အသစ်ကို Program Run နေတုန်း JTable ထဲထည့်တာကို ဘယ်လိုလုပ်ရမလဲဆိုပြီး စဉ်းစားနေတာနဲ့တင် ပြီးတော့မှာမဟုတ်တာ.။ ဘာလို့လဲဆိုတော့ Java ထဲမှာ အဲဒီ ရိုးရိုး JTable နဲ့ AbstractTableModel က အဲဒီ Feature ကိုလုပ်ဖို့ method မှမရှိတာ.။ အဲမှာ Method မရှိတော့ အစတုန်းကတော့ API Documentaion ထဲလိုက်ရှာသေးတယ်..။ မတွေ့တာနဲ့ ကျတောလည်း TableEvent တွေကို သွားပြီး Listen လုပ်ပြီး RowCount ကို EventFire လုပ်တာနဲ့ +1 ဖြစ်အောင် လုပ်ပြီး Row အသစ်ထည့်မယ်ပေါ့။ ခတ်တာက အဲဒီ TableEvent က သုံးနေကျ EventListener နဲ့ဖမ်းပုံမတူဘူး..။ သူ့ထဲမှာ EventFire က အမျိုးမျိုးရှိတာ TableDataChange တို့ TableStructureChange ဆိုပြီးအဲဒါကို ဖမ်း..။ပြီးမှ Trigger ရမှ လုပ်စေချင်တာလုပ်..။ အဲဒါနဲ့တင် Table Event trigger အပိုင်းကို ရောက်နေပြီလေ..။ ကျတော်တုန်းက အဲဒါကို ကျော်သွားသေးတယ်.. Event ကို Listen လုပ်လို့ရပြီးမှ Runtime မှာ RowCount ကိုသွားပြောင်းတာ ပြောင်း လို့မရခဲ့လို့ စိတ်တောင်လေသွားသေးတယ်..
ကျတော့တုန်းက အဲဒီ Concept ကိုစာအုပ်တွေအကူနဲ့ နားလည်နိုင်ဖို့ကိုတင် ၃ ရက်လောက် အချိန်ယူခဲ့ရတယ်..တစ်ကယ်တန်းကျရင် အဲဒီနေရာမှာ သိတဲ့သူတစ်ယောက်လောက်ကို မေးလိုက်ရင်ပဲ ဘယ် Model ကိုသုံးရင် အိုကေ လဲဆိုတာ ထစ်ခနဲ သိနေပြီ.။
ဒါတွေက တစ်ကယ်တန်းပြောရရင် Lecture ချိန်မှာ လေ့လာသင့်တာ ကျတော်တို့မှာ Project ချိန်မှ အံ့ဩစွာနဲ့ ရေးနေရတာလေ..။ အဲ့တော့ Error ကလဲစိမ်းနေသေးတာပေါ့..။
နောက် တစ်ခါ GUI ရေးနေတုန်းမှာတင် တစ်ခုကြုံရသေးတာက Coding နဲ့ပဲ GUI ကိုဘယ်လိုဆောက်မလဲပေါ့။ အဲဒါနဲ့ GUI အတွက် Button တွေထည့် Label တွေထည့်နဲ့ Dialog တစ်ခုကိုအပီ ဆောက်နေတာပေါ့..။ အားလုံးလဲ Layout တွေနဲ့ နေရာတစ်ကျ ချပြီးရော ထွက်လာတဲ့ Dialog ပုံစံက အချိုးမကျဘူး..။ Dialog ကသေးနေတယ်..။ အောက်မှာ မြင်တဲ့ပုံစံအတိုင်းပေါ့..။
အဲ့တော့ ဘယ်လိုလုပ်ရမလဲပေါ့။ စဉ်စားကြည့်တော့ Dialog ရဲ့ perferredSize ကို ဝင်ပြင်မှရမှာ... ဒါပင်မဲ့ အဲဒါဝင်ပြင်ပြီး size ကို တစ်သပ်မက်ထဲထားလိုက်ရင် Hard Code ပုံစံဖြစ်သွားမှာဆိုတော့ ...
အဲဒါနဲ့ Percentage ပုံစံမျိုး ကိုစဉ်းစားသေး Pack() လုပ်ပြီးထွက်လာတဲ့ပုံစံရဲ့ ကို ၃၀% ပေါင်းပြီး PreferredSize မှာဝင်ပြောင်းမယ် ဆိုပြီးပေါ့..။
ဒါနဲ့ပဲ ပိုရှုတ်တယ် နောက်မှပဲကြည့်လုပ်တာပေါ့ဆိုပြီးဒီအတိုင်းထားထားလိုက်တော့တာပေါ့ ။
(Proof(သက်သေပြချက်): programmer အား boring ဖြစ်စေသောဥပဒေသ)
အဲဒီတုန်းက Solution ကို ကြိုက်တဲ့စာအုပ်မှာ လိုက်ရှာ မတွေစေရဘူးလို့ ကျတော် ရဲရဲကြီးအာမခံရဲတယ်..။ကျတော်ကိုယ်တိုင်လဲ GUI ကိုအလေးပေးရေးထားတဲ့စာအုပ်တွေမှာ ရှာကြည့်ဖူးတယ်.. ဒါတွေက တစ်ကယ်တန်းပြောရရင် Experience နဲ့ဆိုင်တယ်လို့ပဲပြောရမှာပေါ့..။ ကျတော်တောင် Project နောက်ဆုံး မှာ Dialog တစ်ခုကိုရေးရင်း Title ထည့်ဖို့အတွက် Title ဆိုတာ အခြား label တွေထက်ပိုပြီး ကြီးရမှာလေဆိုပြီး Label ရဲ့ size ကိုချဲ့ကြည့်လိုက်မှ Layout က သူအလိုလို ချဲ့ပေးသွားတာ အဲ့ဒါမှ Dialog က အလိုက်သင့်ကြီးလာတာ..။ နောက်ပြီး Border တွေနဲနဲနဲ့ ဝိုင်းလိုက်ရင် ကိုယ်လိုချင်သလောက် ရလာပြီပေါ့..။ မှတ်မိသေးတယ်.. ကျတောအဲ့ဒီ SERVER IP တောင်းတဲ့ Dialog လေးကိုဒီအတိုင်း သိတော့မှပြင်မယ် ဆိုပြီး ထားထားလိုက်တာ နောက်ဆုံး Project ကြီးအဆုံးသပ်မှ ဝင်ပြင်ဖြစ်တယ်။
နောက်ထပ်ပြဿနာတစ်ခုက RMI နဲ့ Object ပြဿနာ...
ကျတော်က အစ တုန်းက RMI (Remote Method Invocation) ကိုသုံးသာသုံးဖူးတာ သိပ်အသိကြီးမဟုတ်သေးဘူး။. အဲဒါတောင်မှ အရင် Lecture ချိန်တွေမှာ စမ်းသုံးဖူးရုံ Hello World လေးရေးရုံလောက်သာ သုံးဖူးတာလေ..။ Project ရေးနေတုန်းဆိုတော့ RMI ကို Server ကနေမှ Client ရဲ့ JVM မှာရှိနေတဲ့ Method ကိုလှမ်းခေါ်ချင်ခေါ် ဒါမှမဟုတ် Client ကနေ Server ဆီက Method ကိုလှမ်း ခေါ်ချင်ခေါ် RMI ကိုသုံးလို့ရတယ်..။ ခတ်တာက အသွားအပြန် ဟိုဖက်က ဒီဘက် Method ကိုခေါ် ဒီဘက်ကလဲ ဟိုဘက် method ကိုခေါ်ချင်ရင်ခေါ်လို့ ရတဲ့ပုံစံ Vice Versa ပုံစံမျိုး လုပ်ချင်တာ..။ အဲဒီလိုကျတော့ ဘယ်လိုလုပ်ရမှန်းကို မသိတော့တာ..။ အဲ့တုန်းက struct တို့ skel တို့နဲ့ သွားပြီး ရှုတ်လိုက်သေး..။ အဲဒါနဲ့ RMI အကြောင်း ရေးထားတဲ့ စာအုပ်တွေလိုက်ဖတ်ကြည့်တော့တာပေါ့..။ RMI အကြောင်းရေးထားတဲ့ စာအုပ်က တော်တော်လေးနည်းတယ်.. သီးသန့်ရေးထားတဲ့ စာအုပ်တွေပေါ့..။ ရှိတဲ့ စာအုပ်တွေကလဲ RMI ကိုအခြေခံထားတဲ့ နည်းပညာ တွေဖြစ်တဲ့ Jini တို့လိုမျိုးနည်းပညာတွေကို ရောက်သွားပြန်ရော...။ အဲဒါနဲ့ စဉ်းစားကြည့်တော့ Jini တို့ကိုပြန်လေ့လာရင် တော်တော်အချိန်ကုန်မှာ အရင်တုန်းကတော့ စာဖတ်ထားတာရှိလို့ တီးမိခေါက်မိရှိတာ...။ အဲဒါနဲ့ အဲဒီစာအုပ်တွေကို ဖယ်ပြီး Java ကိုခြုံ့ရေးထားတဲ့ စာအုပ်တွေမှာ RMI အကြောင်းလေးတွေရှာဖတ်ရတာပေါ့..။
အဲ့လေ Solution ကိုတော့မတွေ့ခဲ့ပါဘူး..။ အဲ့တုန်းက Title နဲ့ စာရှင်းထားတာလောက်ပဲဖတ်နေတာ Code ကိုကျော်ကျော်ပြီးဖတ်နေတာ...။နောက်တော့မှ Code ကလေး တစ်ပိုဒ်လောက်ရေးထားတဲ့ အပိုင်းကိုနည်းတယ်ဆိုပြီး ဖတ်ကြည့်တော့မှ
အဲဒီ Code မှာ Server ကနေခေါ်တဲ့ client ရဲ့ Method တစ်ခုရဲ့ Parameter type က Remote Object ကိုထည့်သုံး ထားတာကိုတွေ့တာ..။ အဲ့တော့ Server က အဲ့ဒီ method ထဲမှာ သူ့ရဲ့ RemoteObject ကို Parameter အနေနဲ့ထည့် ခေါ်လိုက်ရင် client က method ရဲ့ Parameter ကိုသူ့ရဲ့ method ထဲမှာ လှမ်း Assign လုပ်တဲ့ code ကို implement လုပ်ပြီး Server က လှမ်းခေါ်လိုက်တာနဲ့ Server မှာ ရှိတဲ့ Method ကို လှမ်းပြီးခေါ်လို့ရတဲ့ remote obj ကို client ကလှမ်းယူ လိုက်လို့ရပြီပေါ့...။အဲဒါကိုတွေ့တော့မှ သဘောပေါက်တော့တယ်.. Parameter ကိုသုံးပြီး Object ကိုထည့်သွား ပြီး Object ကိုလှမ်းပြီးပို့လို့ရတဲ့ ပုံစံနဲ့ လုပ်တာမျိုးတစ်ခါမှ မရေးဖူးတာအမှန်ပဲ..။
ဒီလိုမျိုးကိစ္စတွေကျတော့ Coding တွေကိုဖတ်မှ သိနိုင်မဲ့ပုံစံတွေဖြစ်နေတယ်..။
နောက်ဆုံးတစ်ခုကတော့ နဲနဲ ထူးဆန်းတာဖြစ်နေလိမ့်မယ်..။ အဲဒါက design နဲ့ coding ပိုင်း အရှုတ်အထွေး
ကျတော် Project ကို develope စလုပ်တုန်းက ကျတော့ မှာ ၂ လလောက်အချိန်ယူထားပြီးဖြစ်တဲ့ design sketch (program logic) တွေကို မတက်တစ်ခေါက်နဲ့ ဆွဲထားတာတွေရှိတယ်..။ အဲ့ဒီ sketch တွေပေါ်အခြေခံပြီးရေးမယ် လုပ်တော့ တစ်ချို့အပိုင်းတွေက ကျန်နေတုန်းဖြစ်နေတယ်.. Design ပိုင်းက အဓိက module အပိုင်းတွေပဲ စဉ်းစားပြီး ဖြစ်နေတာကို အဲ့ဒါနဲ့ အချို့အပိုင်းတွေမှာ (အချိန်တော်တော်များများမှာ )ကိုယ်ဟာကိုယ် coding ရေးနေတဲ့ အချိန်မှာပဲ logic ကိုထည့်စဉ်းစားပြီး implement လုပ်နေရတော့တာပေါ့...။ တစ်ကယ်တန်းပြောရရင် coding ရေးရင်းနဲ့ logic ကိုစဉ်းစားတာ မဆန်းပါဘူး..။ သေးသေးမွားမွားဆိုရင် သိပ်ကိစ္စမရှိပေမဲ့ ကျတော့တုန်းက ဆိုရင် Design တုန်းက နဲနဲလွဲ နေခဲ့တာနဲ့ coding ပိုင်းမှာ စဉ်းစားဖို့ပါလာတဲ့ change PC အတွက် logic ပါ..။ သဘောတရားကတော့ သုံးတဲ့ Customer က သူ့အခုထိုင်နေတဲ့ PC ကနေ တစ်ခြား PC ကိုပြောင်းထိုင်တဲ့အခါ သူ့သုံးနေဆဲ Usage session တစ်ခုလုံး Transfer ဖြစ်သွားတဲ့ သဘောမျိုးပါပဲ..။အဓိက ကတော့ Current PC (အခုစက်) နဲ့ Target PC (ပြောင်းထိုင်သောစက်) ဆိုပြီး အဲဒီနှစ်ခုကို ပြောင်းတဲ့အခါ သူ့ရဲ့ Usage ကို Target PC မှာသွားပြီးထည့်ဖို့ပါဘဲ..။ အဲဒီဟာကို စဉ်းစားပြီးတော့ Coding ထည့် implement လုပ်ပြီး စ run တော့ ပြဿနာက စရော သူက Target PC မှာ ဘာမှ မဖြစ်ဘဲ..။ Current PC မှာ ဒီအတိုင်းပေါ်နေတယ်ပေါ့ ဘာမှ မထူးဘူး..။ အဲဒီ Error မျိုးကို Logic Error မျိုးလို့ခေါ်တာပါ..။ ကျတော်တုန်းက စဉ်းစားတာပေါ့ Logic ကလဲ အခုမှ ပူပူနွေးနွေးစဉ်းစားထားတာ မှားစရာအကြောင်းကို မရှိတာပေါ့..။ တစ်ခုလွဲနိုင်တာCurrent PC ကို lock ခတ်တဲ့ နေရာမှာ အလုပ်မလုပ်လို့ Program ကရှေ့ဆက်ပြီး အလုပ်မလုပ်တာဖြစ်နိုင်တယ်ဆိုပြီး Lock ခတ်တဲ့နေရာကို သွားစစ်ပြန်ရော..။ Code တွေကို အပေါ်ရွေ့အောက်ရွေ့နဲ့ isolate လုပ်ပြီး စမ်းတာပေါ့..
ဒါလဲ Error က ဒီအတိုင်း အဲဒါနဲ့ ဒီအပိုင်းမဟုတ်တန်လောက်ဆိုပြီး Logic ကိုဆွဲထားတဲ့ စာရွက်ကိုကိုင်ပြီး စဉ်းစားတော့တာပေါ့..။ ဒီမှာလဲ မမှားရဘူး အလုပ်လုပ်ရမှာဆိုပြီးခေါင်းထဲမှာ နဲနဲတော့ ထူသွားတယ်..။
အဲ့ဒါနဲ့ပဲ အဲဒီ Logic ကို စဉ်းစားရင်း နဲနဲ Calm down လုပ်ရင်းနဲ့ စဉ်းစားမိတာက current PC မှာ ပဲ run နေပြီး Target PC မှာ ဘာမှ မဖြစ်တော့ implement လုပ်ထားတဲ့ code ကိုသွားကြည့်လိုက်တော့ အဲဒီမှာ ဟိုးအပေါ် ဆုံးနားက target PC အတွက် variable ကို assign လုပ်တဲ့နေရာမှာ current PC ရဲ့ value ကိုရေးထားတာတွေ့တော့တယ်.. ဖြစ်ပုံက Target PC နဲ့ Curent PC ရဲ့ Variable တွေထဲမှာ value က Current PC ပဲထည့်မိထားသလို ဖြစ်နေတာပေါ့.။အဲ့ဒါပြင်ပြီး Run တော့မှပဲ ကိုယ်တော်ချော က သေသေချာချာ ဘာ Error မှ မပြပဲ change PC ဖြစ်တော့တယ်..။
နောက်တော့မှ ငါ မမှားသင့်တဲ့အမှား ဘာကြောင့် မှားရတာလဲ ဆိုပြီး သေသေချာချာ ပြန်စဉ်းစားတော့မှ တစ်ကယ်တန်းပြောရရင် Logic ကိုစဉ်းစားရတာ သိပ်အရှုတ်ကြီးမဟုတ်ဘူး..။ Coding ရေးနေတုန်း စဉ်းစားတဲ့အခါ ကျတော့ အခြေအနေက အာရုံကို နှစ်ခုခွဲထားရတာရယ်.. ခေါင်းထဲမှာ Logic ကစဉ်းစားပြီးဖြစ်နေတော့ ချက်ချင်း coding implement လုပ်တဲ့အခါကျတော့ တစ်လွဲတွေ လျှောက်ရေးမိတာတွေဖြစ်ကုန်ရော..။ အဲ့ဒီအချိန်တုန်းက bug ကိုတွေ့နိုင်ဖို့ ကျတော် နာရီဝက်လောက် အချိန်ပေး လိုက်ရတယ်..တစ်ကယ်တန်းဆိုရင် Logic ကို Program coding မရေးခင် စဉ်းစားလို့ဖြစ်နိုင်ခဲ့ရင်စဉ်းစားပြီး Design ချထားသင့်တယ်..။ ဘာလို့လဲဆိုတော့ Coding ရဲ့ flow ကိုစဉ်းစားနေတုန်းမှာ အပြည့်အ၀ အာရုံစိုက်ထားနိုင်ရင် ခေါင်းထဲပိုရှင်းတယ်လေ.။ကျတော်အထင်တော့ အကောင်းဆုံးက implementation လုပ်နေချိန်မှာ program code ကိုပဲ အလေးပေးပြီးခေါင်းထဲ ထည့်ထားတာက ပိုပြီး Effective ဖြစ်စေတယ်လို့ထင်မိတယ်ဗျ..။
တစ်ကိုယ်ထဲအလူးအလဲ ရေးခဲ့ရတဲ့ အတွေ့အကြုံအနေနဲ့ပြောရရင် Project ရေးဖို့ပဲဖြစ်ဖြစ် လေ့လာဖို့ရှိလာခဲ့ရင် ကိုးကား (Reference) ဖို့စာအုပ်တွေလုံလုံလောက်လောက်ရှိတာ ပိုပြီးအသုံးတည့်တယ်...။
ဘာလို့လဲဆိုတော့ Program က စရေးတဲ့အခါကျရင် တစ်ချို့အပိုင်းတွေက စဉ်းစားတာနဲ့ ထွက်တဲ့အပိုင်းရှိသလို တစ်ချို့အပိုင်းတွေက စာအုပ်ဖတ်ကြည့်တာက စဉ်းစားနေတာထက် ဒါမှမဟုတ် API Documentation ကိုပဲကြည့်ပြီးရေးနေတာထက်စာရင်ပိုမြန်မြန်နားလည်စေတယ်..။ နောက်တစ်ခုက စရေးမယ်ဆိုရင် ဘယ်ကနေရေးရမှန်းမသိတာမျိုး ရှိတက်ပါတယ်..။ဘယ်လိုရေးရမလဲဆိုတာလဲ ဖြစ်လေ့ရှိတက်တယ်.. ကိုယ်ဘာကိုရေးဖို့ ဘာလုပ်ဖို့လိုအပ်လဲ သိအောင်အရင်လုပ်ပြီးမှ လိုအပ်တဲ့ Reference resource ကိုရှာဖို့လုပ်ပါ..။ First things First ပေါ့ဗျာ။ လိုအပ်လို့ လိုအပ်တဲ့ဟာကို လိုက်လေ့လာတာပိုပြီး အလုပ်ဖြစ်တယ်ဗျ ကျတော့ ကိုယ်တွေ့ပါ..။ Ebooks တွေ Software တွေလဲ ဒီနည်းတူပါပဲ တစ်ကယ်လိုအပ်တဲ့အချိန်မှာ အချိန်ပေးပြီး လိုက်ရှာပြီး ဖတ်တဲ့အခါ ကိုယ်လဲ ပိုဖတ်ဖြစ်တယ်. ထိရောက်မူလည်းရှိတယ်..။
ဒီပိုစ်ကတော့ တစ်ကယ်တန်းပြောရင် Own work ကို Review လုပ်တဲ့အနေနဲ့ ရေးထားတာပါ..။ အရင်တုန်းက Project လေးတွေပြီးတိုင်း Review လုပ်လေ့ရှိပါတယ်.. ဒါပင်မဲ့ ဒီလိုမျိုး တော့ Publish လုပ်တာမျိုး ဆောင်းပါး သဘောမျိုး ရေးတာ မလုပ်ဖြစ်ပါဘူး..။ နောက်ပိုင်းမှာတွေ့လို့ဖတ်မိခဲ့ရင် အကျိုးရှိအောင်လို့ ကြိုးစားရေးလိုက်ပါတယ်..။
Wayne replied to Aung Than U's discussion Search Engine မွာရွာရင္ ကၽႊန္ေတာ္တို႔ ကုမၼဏီရဲ႕ ၀က္ဆိုဒ္ကို အေပၚဆံုးမွာ ျမင္ခ်င္လို႔ပါ... Asp.net နဲ႔ ေရးထားတဲ႔ ဆိုဒ္ပါ..သိရင္ ေျပာျပေပးၾကပါ senior မ်ားခင္ဗ်ာ.....© 2012 Created by Ko Chit.
