Learning New Things

PHP မှာ ၃ နှစ်ကျော်လောက် လုပ်ခဲ့ပြီး iOS ကို လုပ်တော့မယ်ဆုံးဖြတ်တော့ PHP ကို စွန့်လွှတ်ဖို့ တော်တော်လေး ဒုက္ခရောက်ခဲ့ရတယ်။ iOS ကို full time လုပ်နေရင်းနဲ့ PHP ကိုလည်း လုပ်ခဲ့တယ်။ သို့ပေမယ့် PHP နဲ့ တဖြည်းဖြည်း ဝေးကွာလာတယ်။ PHP ရဲ့ ပြောင်းလဲမှုတွေကို သိပ်ပြီး မလေ့လာအားတော့ပဲ iOS SDK အသစ်ထွက်ရင် ဘာတွေပြောင်းနေလဲ။ Github မှာ ဘာ iOS အတွက် opensource library အသစ်ထွက်လဲ။ ဘာ control တွေက ခေတ်စားနေလဲ စတာတွေကို လေ့လာခဲ့ဖြစ်တယ်။ အခုအချိန်မှာတော့ PHP ကို ရေးတတ် သုံးတတ်ရုံလောက်ပဲ သိတော့တာ အမှန်ပဲ။ တစ်ခါတစ်လေ language အသစ် တစ်ခု နဲ့ platform အသစ်တစ်ခုကို တတ်ကျွမ်းချင်တဲ့အခါမှာ အဲဒီအတွက် အချိန်တွေပေးရတယ်။ လက်ရှိ လေ့လာတာတွေကို စွန့်လွှတ်ရတယ်။

ကျွန်တော်တို့တွေဟာ တစ်ခုခုကို ဆုတ်ကိုင်ထားပြီး လက်မလွှတ်နိုင်တဲ့အခါ နောက်ထပ်တစ်ခုကို မလေ့လာနိုင်တော့ဘူး။ PHP ကနေ iOS ကို လေ့လာတဲ့ အခါမှာ ပြဿနာတွေက web platform ကို မစွန့်လွှတ်နိုင်ဘူး။ ဒါကြောင့် phone gap, titanium စတာတွေကို လေ့လာဖြစ်တယ်။ တကယ်တန်း သေသေချာချာ အကြီးကြီးတွေ လုပ်မယ်ဆိုရင် အဲဒီ platform တွေက mobile phone ပေါ်မှာ ထင်သလောက် မစွမ်းဆောင်နိုင်ဘူးဆိုတာ တဖြည်းဖြည်း နဲ့ ပိုသိလာတယ်။ ဖြည့်ထားတဲ့ ရေခွက် တစ်ခုဟာ နောက်ထပ် ရေထပ်ဖြည့်လို့ မရသလိုပဲ လက်ရှိ language လက်ရှိ platform ကို မစွန့်လွှတ်ပဲ နောက်ထပ် platform အသစ်ကို လေ့လာရာမှာ ခဲ ဆွဲထားသလို နှေးကွေးနေတတ်တယ်။ iOS app development လုပ်ခဲ့တာ ၂ နှစ်ကျော်လောက် ရှိခဲ့ပြီ။ iOS 3 ကနေ စခဲ့တာ အခုဆိုရင် iOS 7 အထိ ရောက်လာပြီ။ iOS 7 SDK အသစ်ထွက်တာနဲ့ ဘာတွေ ပြောင်းလဲသွားလဲ ကြည့်ဖြစ်နေပြီ။ Xcode အသစ်က ဘာတွေ ပိုကောင်းလဲဆိုတာကို အချိန် ၁ နာရီလောက်ပေးပြီး နားထောင်ဖြစ်နေပြီ။ iOS 7 SDK beta နဲ့ beta 2 မှာဆိုရင် API က အများကြီးကွာသွားတယ်။ JavaScriptCore ကို beta 2 မှာ အများကြီး update ထပ်လုပ်ထားပေးတယ်။

NSMag ကို ရေးမယ်ဆိုတော့ backend က လိုလာပြီ။ backend ရေးမယ်ဆိုတော့ PHP နဲ့ ရေးမလား Node.js နဲ့ ရေးမလား ဆိုတဲ့ ပြဿနာက ထပ်ဖြစ်လာတယ်။ PHP ထက် node.js ကို ပိုဦးစားပေးလိုက်တယ်။ ဘာကြောင့်လဲဆိုတော့ ကျွန်တော် PHP ထက် node.js ကိုပဲ web အတွက် လေ့လာတော့မယ်လို့ ဆုံးဖြတ်လိုက်လို့ပဲ။ PHP ကတော့ လုံးဝကို စွန့်လွှတ်လိုက်ပြီ။ မလိုအပ်ရင် PHP ထပ် မရေးတော့ဘူးလို့ ဆုံးဖြတ်ထားတယ်။ ဒါမှသာ ကျွန်တော် Node.js ကို လုပ်ဖြစ်မယ်ဆိုတာကို ကျွန်တော် သိနေလို့ပဲ။ Node.js ရေးရင်းနဲ့ အခက်အခဲတွေ ရှိတယ်။ PHP နဲ့ဆိုရင် လွယ်လွယ်နဲ့ ရှင်းလို့ရပေမယ့် Express.JS + Node.js နဲ့ ရအောင် ရေးတယ်။ ရှင်းတယ်။ အဲဒီမှာ ဘာတွေ သွားတွေ့လဲဆိုတော့ Push Notification ပိုင်းမှာ Node.js ကို သဘောကျသွားတယ်။ PHP နဲ့ push လုပ်တုန်းက database မှာ queue သွားလုပ်ပြီး response ပြန်တယ်။ အခုတော့ အဲလိုမလိုတော့ဘူး။ node.js က response ကို client ကို ပြန်လိုက်ပြီး push ကိုတော့ အခြား event မှာ ဆက်လုပ်နေလို့ရတယ်။

NSMag ရဲ့ backend ကိုရေးတော့ reporting တွေအတွက် စဉ်းစားမိတယ်။ စဉ်းစားမိရင်းနဲ့ ဘာလို့ real time reporting က မလွယ်တာလည်းဆိုတာ သဘောပေါက်လာတယ်။ Real time reporting ဖန်တီးဖို့ရာလွယ်ပါတယ်။ သို့ပေမယ့် memory နဲ့ CPU usages က များလွန်းတယ်။ လက်ရှိ Digital Ocean မှာ အနည်းဆုံး ၁ လမှာ US $5 တန်လေး ယူထားတဲ့အတွက် reporting အတွက် အဲဒီလောက် power မသုံးချင်ဘူး။ ဟိုးအရင်တုန်းကတော့ reporting ဆိုတာ database ထဲက data တွေကို ဆွဲထုတ်ပြီး ပြရုံပဲ။ ဘာလို့ real time မရမှာလည်း စဉ်းစားဘူးတယ်။ အခုတော့ စဉ်းစားပုံနည်းနည်းပြောင်းသွားပြီ။ database ထဲက ဆွဲထုတ်ပြီးပြရင် ဘယ်အချိန်တွေမှာ ပြမှာလဲ။ ဘယ်အချိန်တွေမှာ record မှတ်မှာလား။ backend schedule run ပြီးတော့ data တွေကို save လုပ်မလား။ Day တွေကို Group ဖွဲ့ပြီးတော့ Database က ဆွဲထုတ်တာထက် နေ့စဉ် data တွေကို schedule လုပ်ပြီး ဆွဲထုတ်တာဟာ group လုပ်ပြီး ဆွဲထုတ်တာထက် ပိုမြန်သလို ပိုပြီးတော့ သက်သာပါတယ်။ လွန်ခဲ့တဲ့ ၁ နှစ်လောက်က အဲလောက် ရိုးရှင်း လွယ်ကူတဲ့ ပုံစံကို မစဉ်းစားမိဘူး။ reporting ကို database ကနေ ဆွဲထုတ်လိုက်တယ်။ အဲဒီတော့ ဘာဖြစ်လည်းဆိုတော့ ရက်မရှိတဲ့ data တွေကို ပျောက်သွားတယ်။ 25,26,27,28 ဖြစ်ရမယ့် အစား 25,27,28,30 ဆိုပြီး data ရှိတဲ့ရက်တွေကိုပဲ bar chart က ပြပေးနေတယ်။ ဒါကလွဲနေတာ အသေအချာပဲ။ ပုံမှန် နေ့စဉ် schedule လေးထားပြီး run ထားလိုက်ရင် အဲဒီ ပြဿနာ မရှိဘူး။ မရှိတဲ့ နေ့ဆွဲတွေမှာ 0 ပဲ ပြနေလိမ့်မယ်။ Mongodb သုံးတော့ mysql ထက် ပိုစဉ်းစားမိလာတယ်။ MySQL သုံးတုန်းက SQL query တွေ စဉ်းစားဖြစ်တယ်။ Mongodb အသုံးပြုတော့ database မှာ data ကို ဘယ်လိုသိမ်းမလဲ။ ဘယ်လို ပြန်ဆွဲထုတ်ရင် လွယ်မလည်းဆိုတာကို စဉ်းစားမိလာတယ်။ reporting အတွက် ဘယ်လိုမျိုး ဆွဲထုတ်ပြီး ဘယ်လိုမျိုးသိမ်းထားမလဲ။ MySQL နဲ့ Mongodb မှာ နှိုင်းယှဉ်စရာမလိုပါ။ သူ့ဟာနဲ့ သူ တကယ်ကောင်းတာ အမှန်ပါ။ Mongodb ကိုလေ့လာမယ်လို့ ဆုံးဖြတ်ကတည်းက web app ပဲဖြစ်ဖြစ် iOS backend ပဲဖြစ်ဖြစ် mongodb နဲ့ ဖြစ်နိုင်မဖြစ်နိုင် စဉ်းစားတယ်။ MySQL ကို လျော့သုံးဖြစ်လာတယ်။

နောက်ပြီး Express.js ကို သဘောကျမိတာတော့ အမှန်ပဲ။ အခုတလော meteor framework က အတော်လေးကို stable ဖြစ်လာပြီ။ သူ့ကို ပြောင်းသုံးဖို့ စဉ်းစားနေတယ်။ အဲလို စဉ်းစားရင်းနဲ့ Express.js မသုံးပဲ meteor နဲ့ မဖြစ်မနေ app တစ်ခုလောက် လုပ်ရအုံးမယ်။ ထပ်ပြီး လေ့လာရအုံးမယ်ဆိုပြီး စဉ်းစားဖြစ်လာတယ်။ ကျွန်တော်တို့တွေ အသစ်သစ်တွေကို ပြောင်းလဲ လေ့လာရင်းနဲ့ အဟောင်းတွေကို မစွန့်လွှတ်ချင်ပဲ စွန့်လွှတ်ခဲ့ရတယ်။ မမေ့ပစ်ချင်ပဲ မေ့ပစ်ခဲ့ရတယ်။ အခုအချိန်မှာ ကျွန်တော် ပထမဆုံး လေ့လာဖြစ်ပြီး တကယ် project တွေလုပ်ခဲ့တဲ့ VB ဆိုတာကို မထိတွေ့ဖြစ်ခဲ့တာ ၃ နှစ်မကတော့ဘူး။ ထို့အတူ C# လည်း အတူတူပါပဲ။

နည်းပညာလောကမှာတော့ အသစ်အသစ်တွေ ထွက်နေမြဲပဲ။ လွန်ခဲ့တဲ့ ၃ နှစ်လောက်က Javascript နဲ့ web server ပိုင်းတွေမှာ ရေးလို့ရမယ်လို့ ဘယ်သူမှ မတွေးထားခဲ့တာ အမှန်ပါ။ အခုအချိန်မှာ Javascript က ပြန်ပြီး ရှင်သန်ထမြောက်လာတယ်။ ကောင်းတာတစ်ခုက အများကြီး ပြန်လေ့လာစရာမလိုတာပဲ။ web developer တိုင်းက javascript ကို တတ်ကြတယ်။ ဒါကြောင့် server ပိုင်းမှာ node.js ကို လေ့လာရတာ ခက်ခက်ခဲခဲ မဟုတ်လှဘူး။ အသစ်သစ်တွေ ထွက်လာတိုင်း လေ့လာလိုက်နဲ့ က တကယ်တန်းတော့ အသက်မွေးဝမ်းကြောင်းအတွက်ဆိုရင် ကောင်းမွန်လှတယ် မဟုတ်လှဘူး။ ဘယ်အရာမှာ သေသေချာချာ မသိသလိုပေါ့။ iOS SDK အသစ်ထွက်တိုင်း ပြန်ပြန်လေ့လာနေရသလို တစ်ခုကနေ နောက်တစ်ခု ပြောင်းသွားပြီး ပြန်ကြည့်လိုက်ရင် အရင်ကနဲ့ တူတော့ မှာ မဟုတ်ဘူး။ PHP ကို တချက်လောက် ပြန်လှည့်ကြည့်မိလိုက်တော့ composer , laravel 4 စတာတွေ ခေတ်စားနေတာ တွေ့တယ်။ ကျွန်တော်နောက်ဆုံး လေ့လာခဲ့တဲ့ codeigniter အကြောင်းကို လူသိပ်ပြောတာ မတွေ့တော့ဘူး။ ASP.NET မှာလည်း ထို့အတူပဲ။ MVC တွေရကုန်ပြီ။ ကျွန်တော် ဟိုးအရင်တုန်းက ရေးခဲ့ဖူးတဲ့ .NET နဲ့ တခြားဆီကို ဖြစ်သွားပြီ။ ဒါကြောင့် platform တစ်ခုကနေ နောက်တစ်ခု ပြောင်းမယ်ဆိုရင် စဉ်းစားရတယ်။ ငါ တကယ်စွန့်လွှတ်နိုင်ပြီလား ဆိုတာပေါ့။ မစွန့်လွှတ်နိုင်လို့ နောင်တချိန် platform အဟောင်းကို ကူးရင် အများကြီး ပြောင်းလဲနေလိမ့်မယ်။

ကိုယ့်ဘဝကို တိုးတက် ကောင်းမွန်လာအောင် ကိုယ့်ဘာသာကိုယ် ပဲ ဖန်တီးရတယ်။ ကိုယ့်ဘာသာကိုယ်ပဲ ကြိုးစားရတယ်။ အသစ်သစ်တွေကို လေ့လာရာမှာလည်း တကယ်တတ်ချင်ရင် လက်ရှိတတ်ကျွမ်းထားတာတွေကို တစ်ခါတစ်လေမှာ စွန့်လွှတ်ရတယ်။ ဒီနေ့ လေ့လာလိုက်တာနဲ့ မနက်ဖြန်မှာ မတတ်ကျွမ်းနိုင်ပါဘူး။ အဲ Tony Stark (Iron man) က လွဲရင်ပေါ့။ Full Time လုပ်နေတဲ့သူဟာ part time လေ့လာနေတဲ့ သူထက် ပိုပြီးတတ်ကျွမ်းတာ မြန်ပါတယ်။ ကျွန်တော် iOS က part time လေ့လာတဲ့ အချိန်နဲ့ full time အလုပ် ဝင်လုပ်တဲ့ အချိန် လေ့လာမှုအားတွေ အများကြီး ကွာသွားတယ်။ ရွေးချယ်စရာ မရှိတဲ့အတွက် အပင်ပန်းခံပြီး တကယ်လုပ်ရတယ်။ တကယ်လေ့လာရတယ်။ အဲဒီတုန်းက စဉ်းစားမိတယ်။ Web ကနေ iOS ကို ပြောင်းခဲ့မိတာ မှားများ မှားနေပြီလားဆိုပြီးတော့။ မသိတာတွေ အရမ်းများတယ်။ iOS လုပ်နေပြီး Memory Leak တောင် မသိဘူးလား ဆိုပြီး ပြောခံခဲ့ရဘူးတယ်။ Code တွေအကုန်ကလည်း memory leak တွေကလည်း များမှများ။ Memory management ဆိုတာ ဘာမှန်းမသိ။ Allocate လုပ်တယ်ဆိုတာ နားမလည်။ part time လေ့လာတာကတော့ အားတဲ့ အချိန်လေ့လာတာ ဖြစ်တဲ့အတွက် အားစိုက်ထုတ်မှုဟာ full time လုပ်ငန်းခွင်ထဲ လုပ်တာလောက် မရှိတာ အမှန်ပါ။ ဒါကြောင့်လည်း ကျွန်တော် Android ကို တကယ်ကျွမ်းကျွမ်း ကျင်ကျင် မရေးတတ်သေးတာပါ။

အသစ်အသစ်တွေက ထွက်မြဲ ထွက်နေဆဲပါပဲ။ လူကြိုက်မများ မအောင်မြင်တဲ့ ဟာတွေကလည်း တဖြည်းဖြည်းနဲ့ လူသုံးနည်းပြီး ပျောက်ကွယ်သွားမှာပဲ။ အခုအချိန်မှာ pascal , COBOL language တွေ အကြောင်း လူမပြောသလောက်ပါပဲ။ PHP ဟာလည်း တဖြည်းဖြည်းနဲ့ update တွေ လုပ်နေဆဲပါပဲ။ Experience ဆိုတာ နှစ်ကြာလာလေလေ ငါမသိတာတွေ အများကြီးပါလားဆိုတာ ပိုပိုသိလာလေပါပဲ။ အသစ်တွေပဲ ပြောင်းလေ့လာမလား လက်ရှိ platform မှာပဲ ဆက်လေ့လာမလား ဆိုတာကတော့ ကိုယ့်ဆုံးဖြတ်ချက်ပဲ။ platform အသစ်ဆိုရင်တော့ သုည နီးပါး က ပြန်စတဲ့ အခါ ခံနိုင်ရည် ရှိဖို့လိုတယ်။

4 responses to “Learning New Things”

  1. Digital Ocean က တစ်လငါးကျပ် နဲ့ တန်လဲတန်တယ် သုံးရတာလဲ မဆိုးဘူး နော်။ အစ်ကို ပြောတာကို ဖတ်ကြည့်တော့မှ ကျွန်တော် PHP ကို စွန့်လွှတ်လို့မရသေးဘူးဆိုတာ သိတော့တယ်။ ထပ်လေ့လာရဦးမယ် ။ တခြား ဟာတွေမှာ ယောင်နေတော့ သူ့ကို အားနည်းသွားတာ မသိလိုက်ဘူး။

  2. ကျွန်တော်ကတော့ အခုမှ လုပ်လို့ ကောင်းတုံးဆိုတော့ စွန့် လွတ်ဖို့ တော့ မလွယ်သေးဘူးဗျ။ ဒါပေမယ့်လည်း တခါတလေတော့လည်း Second Language ဆိုတာကိုလည်း မြည်းစမ်းကြည့်ချင်သေးတယ်။ ဟိုတနေ့ ကတောင် node.js စမ်းကြည့်သေးတယ်။ Lambda function လို့ ပြောရမယ့် PHP မှာတော့ Closure လို့ ခေါ်မယ်ထင်တယ်။ အဲဒီလို ပုံစံနဲ့ အသုံးများတာ သတိထားမိတယ်။ jquery ရေးတဲ့ style နဲ့ ဆင်သလိုလိုပါပဲ။ ဒါပေမယ့် ထဲထဲဝင်ဝင်တော့ မသိသေးဘူးဗျာ။ ရေးရင်းနဲ့ ခဏခဏ မှားတာကိုတွေ့ ရတယ်။ အဆိုးဆုံးက ဘာမှမဟုတ်တဲ့ syntax error ပဲ။ silly ပေါ့ဗျာ။ PHP မှာက snake case က အသုံးများတော့ Node.js မှာ Camel Case ဆိုတော့ ခဏခဏ ကိုမှားနေတာပဲ :D

    1. Node.js နဲ့ database ကို အသုံးပြုပြီး ရေးရင် ပိုသိလာမယ်။ thinking ပိုင်းက နည်းနည်းကွာပေမယ့် HTML , CSS , Javascript စတာတွေကတော့ အတူတူပါပဲ။ backend ပုံစံ ရေးရတာ နည်းနည်းလေးပဲ ကွာသွားတာ။ PHP ကလည်း မလုပ်ပဲ မနေနိုင်လောက်အောင် အသစ်သစ် တွေ ထွက်နေတာကိုဗျ။ လေ့လာစရာတွေ ကုန်မှ မကုန်နိုင်တာ။ ကျွန်တော် PHP နဲ့ WordPress လုပ်တုန်းက wordpress version အသစ်ထွက်တိုင်း API changes တွေ လိုက်ဖတ်ရတယ်။ အဲတုန်းက CodeIgniter သုံးတော့ CodeIgniter အသစ်ထွက်ရင် ဘာတွေ ပြောင်းမလဲဆိုတာကို စောင့်ကြည့်ရတယ်။ လေ့လာစရာတွေက အများကြီးပဲဗျ။

  3. ကျွန်တော်ကတော့ အခုနောက်ပိုင်း PHP အရွေ့က Ruby, Node တွေနဲ့ တူလာတယ်လို့ ခံစားရတယ်။ အရင်က Django Framework ကို လုပ်တုန်းကတော့ အဲဒီ Route ပုံစံမျိုး PHP မှာရှိရင် ကောင်းမှာပဲလို့ တွေးမိတယ်။ အခုတော့ ရှိလာပြီ။ ကျွန်တော်ကတော့ စာသင်နေတဲ့သူဆိုတော့ တပည့်တွေကို ဘယ်လို Concept အထိုင်တွေ ချပေးရမလဲ။ အဲဒီကနေ သူတို့ Development ကို ဘယ်လို ချဉ်းကပ်မလဲ စသည်ဖြင့် သင်ပေးဖြစ်တယ်။ အခုနောက်ပိုင်း အနေအထားအရ Language ကို Neutral ချလိုက်လို့ရလာတယ်။ ကျွန်တော် သင်တဲ့ အတန်းတစ်တန်းမှာတော့ PHP Laravel Framework ကို သင်နေရင်း ROR ကို မိတ်ဆက်ပေးတော့ သူတို့တွေ သိနေကြတယ်ဗျ။ အထူးသဖြင့် Laravel 4 မှာပေါ့။ နောက် Front-end ပိုင်းမှာ Angular.js ကို အဓိကထား သင်ပေးဖြစ်တယ်။

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.