Tag Archives: node.js

Don’t forget callback

သောကြာနေ့က Server Side ပိုင်းကို prototype ကို Node.js သုံးပြီး ရေးထားတာကို real data နဲ့ စမ်းကြည့်တော့ ပြဿနာ တက်နေတယ်။ Request ပို့လိုက်ပေမယ့် respond က ပြန်မလာဘူး ဖြစ်နေတယ်။ Test data နဲ့ စမ်းတာကတော့ အကုန် အဆင်ပြေတယ်။

ရေးထားတာက

callback တွေကို ဆင့်ကာ ဆင့်ကာ ခေါ်ထားတာကို တွေ့ရမှာပါ။ Node.js မှာ callback တွေ ဆင့်ကာ မခေါ်ချင်ရင် event commit လုပ်လို့ရပါတယ်။ Async ဖြစ်တဲ့အတွက်ကြောင့် sync လိုမျိုး line bye line ပုံစံ မျိုးထက် ပိုစဉ်းစားရခက်တယ်။ non-blocking, asynchronous architecture ဖြစ်တဲ့ အတွက်ကြောင့် Database က နေ data တစ်ခုခြင်းစီ ထုတ်လိုက်ရင် တစ်ခါနဲ့ တစ်ခါ result order တွေ မတူတာတွေ ရှိတတ်တယ်။

အခုလိုမျိုး အဆင့်ဆင့် စစ်ဆေးရတဲ့ ကိစ္စတွေမှာ အရင်ပြီးတာ အရင်ထွက်လာတယ်။ ဟို အရင်ကလိုမျိုး အရင်လာတာ အရင် တွက် မဟုတ်တော့တဲ့ အတွက်ကြောင့် ပိုပြီးမြန်လာတယ်။ သို့ပေမယ့် CPU က 1 processor နောက်ပြီး nginx worker က တစ်ခုပဲ ဆိုရင်တော့ ဘာမှ မထူးပါဘူး။ တကယ်လို့ 2 processor မှာ 4 worker လောက်နဲ့ run လိုက်ရင်တော့ အရမ်းကို သိသာသွားတယ်။

callback တွေ ဆင့်ကာ ဆင့်ကာ ခေါ်ရတဲ့ အချိန်မှာ ပြဿနာလေးတွေ ရှိတတ်တယ်။ တစ်ခါတစ်လေ callback ခေါ်ဖို့ ကျန်ခဲ့တာဆိုရင်တော့ သေပြီပဲ။ အပေါ်က code မှာ များနေတာ ရှိပါတယ်။ အဲဒါကတော့ for loop ကို တန်းခေါ်ထားပြီး array count ကို မစ်ထားတာပဲ။ တကယ်လို့ အဲဒီ လူက phone number သာမရှိရင် callback က return ပြန်တော့မှာ မဟုတ်တော့ဘူး။

Continue reading

Should we use Node.js

အခုတလော Node.js နဲ့ တော်တော်ရေးဖြစ်တယ်။ အဓိကတော့ Backend ပိုင်းပေါ့။ Front End ပိုင်းကတော့ မလုပ်ဖြစ်တာ တော်တော်ကြာပြီလို့ ဆိုရမယ်။ Backend တည်ဆောက်တဲ့ အခါမှာ အရင်က PHP ကိုယ်ပိုင် framework Ava ကို သုံးဖြစ်တယ်။ အခု Node.js ကို သုံးတဲ့အခါမှာတော့ Espresso ကို သုံးဖြစ်တယ်။ Espresso ကို သုံးရင်း ကိုယ်ပိုင် framework လေး ရေးကြည့်ချင်စိတ် ပေါက်လာတယ်။

နောက်ပြီး Google Go နဲ့ Node.js က ဘာ ပိုမှန်လဲဆိုတာကို ငြင်းနေကြတာတွေကိုလည်း ဖတ်ဖြစ်တယ်။ ယေဘူယျပြောရရင်တော့ Go က ပိုမှန်တယ်လို့ ဆိုရမယ်။ သို့ပေမယ့် ဘာ ပိုမှန် မမှန်ဆိုတာကတော့ Server Config လုပ်တာပေါ်မှာ မူတည်တယ်။ Node.js ကို Dual Core processor နဲ့ Worker နှစ်ခုခွဲပြီး အလုပ်လုပ်ခိုင်းရင် Go Lang ထက် အများကြီး မြန်အောင် လုပ်လို့ရပါတယ်။ ဒီ အပိုင်းတွေက Server config နဲ့ Programmar တွေနဲ့ ဆိုင်တယ်။ Go lang မှာ သဘောကျတဲ့ framework လေးကတော့ Revel Web Framework လေးပဲ။ သို့ပေမယ် မစမ်းရသေးတာကတော့ အမှန်ပါ။ Revel ကို code လေးတွေပဲ ဖတ်ကြည့်ရင်း သဘောကျမိတာပါ။

Continue reading

MVC

MVC ဆိုတာ Model View Controller ဆိုတာ လူတိုင်း သိနေလောက်ပါပြီ။ သို့ပေမယ့် တော်တော်များများက MVC နဲ့ framework ဆက်စပ်နေတယ်လို့ ထင်ကြပါတယ်။ CodeIgniter က MVC သုံးထားတယ်။ Symfony လည်း MVC သုံးထားတာပဲ။ CakePHP လည်း MVC ပဲ။ ဒါပေမယ့် သုံးပုံ သုံးနည်း မတူကြဘူး။

MVC ဆိုတာ တကယ်တန်းတော့ framework နဲ့ သက်ဆိုင်တာ မဟုတ်တဲ့ architectural pattern တစ်ခုပါ။ အခုတလော ExpressJs ကို သုံးပြီး Mongodb နဲ့ ရေးနေရင်းနဲ့ MVC pattern အကြောင်း သဘောပေါက်လာတယ်။ ပုံမှန် သမာရိုးကျ Web app တွေမှာ controller ရဲ့ အရေးပါပုံ မသိသာ ပေမယ့် routing address တွေ များလာတဲ့ အခါမှာ controller နဲ့ model ချိတ်ဆက်တာ အရမ်းအရေးပါလာတယ်။ သာမာန် Web App တွေမှာ GET နဲ့ POST ကိုပဲ အဓိကသုံးပေမယ့် RESTful မှာတော့ GET , POST , PUT , DELETE ကို အသုံးပြုကြပါတယ်။ Controller အနေနဲ့ GET နဲ့ ဒီ လိပ်စာလာရင် ဒီ model ကို ခေါ်ပြီး ဒါကို လုပ်။ POST ဆိုရင်တော့ ဒါကို လုပ်ဆိုပြီး ခွဲခြမ်း စိတ်ဖြာပေးပြီး ရလာတဲ့ result တွေကို View နဲ့ ပြန်ထုတ်ပြပါတယ်။

Continue reading

Real time Todo list Tatoo

Tatoo အကြောင်းကိုတော့ mz blog မှာ ရေးထားခဲ့ဖူးပါတယ်။ Myanmar Link မှာ node.js အကြောင်းပြောရင်းနဲ့ web socket အကြောင်းလည်း မေးမြန်းလို့ ပြောမိပါတယ်။ ဒါနဲ့ web socket ကို သုံးပြီး real time app sample လေး တစ်ခုလောက် ရေးပြမယ်လို့ စဉ်းစားမိတာကနေ လက်ရှိ ရေးထားတဲ့ tatoo ကို socket.io ကို သုံးပြီး real time လေး ဖြစ်အောင် ပြန်ပြင်ထားလိုက်ပါတယ်။ source code ကိုတော့ github မှာ ရနိုင်ပါတယ်။ database ကိုတော့ Mongodb သုံးထားပြီး technology ကိုတော့ node.js ကို အသုံးပြုထားပါတယ်။ အားတဲ့ တစ်နေ့တော့ mz blog မှာ web socket ကို သုံးပြီး node.js နဲ့ real time chat application ရေးပုံလေး ရေးပါအုံးမယ်။

Asynchronous problem in Node.js

Node.js ကို သုံးနေရင်းသိလာတာက Node.js က Asynchronous ဖြစ်တာကို သိလာတယ်။ Asynchronous ဆိုတော့ ရေလည်မိုက်တာပေါ့ လို့ တွေးထင်ကောင်း ထင်ပါလိမ့်မယ်။ သို့ပေမယ့် ပြဿနာလေးတွေက ရှိလာပြန်ကော။ ပြဿနာ မပြောခင် asynchronous ကြောင့် ကောင်းတာလေးတွေ ရှိပါတယ်။ Database ဖတ်နေတာကို တောက်လျှောက် စောင့်ပြီး တခြားဘာမှ မလုပ်နိုင်ပဲ ဖြစ်နေတာမျိုးတွေ မဖြစ်တော့ဘူးပေါ့။ Asynchronous ကောင်းကျိုးကို ကျွန်တော်တို့ jquery မှာ ajax တွေ မှာ တွေ့ခဲ့ပြီးပါပြီ။ ထွေထွေထူးထူး ပြောစရာ မရှိပါဘူး။

သို့ပေမယ့် Node.js မှာ ပြဿနာလေး ရှိပါတယ်။ ဒီ code လေးကို တချက်ကြည့်လိုက်ပါ။

အဲဒီ code ကို ကြည့်လိုက်ရင် မှန်တယ်လို့ ထင်ရတယ်။ သို့ပေမယ့် တကယ် run လိုက်ရင် result က အောက်ကလို ဖြစ်သွားတယ်။


Continue reading

Callback in Node.js

Node.js ကို ရေးရင်းနဲ့ တစ်ခု ထူးခြားလာတာကို တွေ့တယ်။ Node.js ဟာ javascript နဲ့ တူသလား ဆိုတော့ ဟုတ် javascript ပါ။ သို့ပေမယ့် မတူပါဘူးလို့ ပြောရမယ့် အဆင့် တစ်ခုထိရောက်နေပြီ ဆိုတာကို သတိထားမိတယ်။ ဘာလို့ ဒီလို ဆိုရတာလဲဆိုတော့ javascript မှာ စဉ်းစားပုံနဲ့ node.js မှာ စဉ်းစားပုံက ကွာခြားလာတာတွေ ကြောင့်ပါ။

လက်ရှိ javascript မှာ ဆိုရင် အများအားဖြင့် အောက်ကလို မျိုး ရေးကြပါတယ်။

သို့ပေမယ့် node.js မှာတော့ အများအားဖြင့် callback နဲ့ ရေးကြတယ်။

callback နဲ့ function return က မတူပေမယ့် callback က ဘာ ပိုထူးလဲဆိုတော့ multi thread ပိုင်းတွေ မှာ သိသာပါတယ်။ function ကတော့ multi thread မသွားပဲ တဆင့်ခြင်းဆီ ကို သွားပါတယ်။ node.js မှာ database ဖတ်နေတဲ့ အပိုင်းနဲ့ တခြားဘက်မှာ data တွေ ထည့်နေတဲ့ အပိုင်း အပြိုင် ရေးထားလို့ရတာပေါ့။ နောက်ပြီးတော့ error checking ပိုင်းတွေမှာလည်း အသုံးဝင်လာပါတယ်။

Continue reading

Node.js Brand

အခု node.js က logo ပြောင်းသွားပါပြီ။ Node.js ကို joynet က sponsor လုပ်ကတည်းက တစ်ခုပြီး တစ်ခု လျင်လျင်မြန်မြန်တိုးတက်လာတယ်။ ကြည့်ရတာ joynet က နောင်တချိန်မှာ 37signals ဖြစ်လာမလားလို့ တောင် တွေးမိတယ်။ Node.js 0.4.9 ထွက်ပြီးတာတောင် မကြာသေးဘူး 0.5.0 unstable ထွက်လာပြီ။ stable ဖြစ်လာအောင်တော့ စောင့်လိုက်အုံးမယ်။ Podcast တစ်ခုမှာ နားထောင်လိုက်တာ Node.js က version 1.0 မှာ javascript တော့ javascript ပဲ။ သို့ပေမယ့် မတူတဲ့ platform တစ်ခု အနေနဲ့ ဖြစ်လာမယ်လို့ ဆိုတာကို နားထောင်လိုက်ရတယ်။ အခုအချိန်မှာ Module တွေ လွယ်လွယ်ရေးလို့ရနေပြီ။ Web Framework တွေ ရေးလို့ရနေပြီ။ သဘောအကျဆုံးနဲ့ မကြိုက်ဆုံး ဖြစ်ပြီး ဒွိဟ ဖြစ်စေတာကတော့ callback ပဲ။ အသုံးတော့ အရမ်းဝင်တယ်။ သို့ပေမယ့် တစ်ခါတစ်လေ return function တွေ သုံးချင်တဲ့ အခါမှာ အဆင်မပြေတာ တွေ ဖြစ်တတ်တယ်။ Version 1.0 မှာတော့ Windows မှာ ရဖို့ သေချာသလောက်ပါပဲ။ Windows Server တွေမှာလည်း Node.js run လို့ရလာမှာပါ။
Continue reading