Restful API and php framework

အခုတလော ရုံးမှာ Restful API server ပိုင်းကို ရေးနေရတယ်။ အဲဒီမှာ CodeIgniter Routing Structure နဲ့ အဆင်မပြေတာကို တွေ့လာရတယ်။ Restful API တွေက Controller နဲ့ Model ပဲရှိတယ်။ view ဆိုတာက JSON သို့မဟုတ် XML return ပြန်တဲ့ page ပဲ ရှိတယ်။ အဲဒီတော့ API server ပိုင်းရေးတဲ့ အခါမှာ MVC pattern ဆိုတာက သိပ်အရေးပါတာမဟုတ်ဘူးဆိုတာကို သတိထားမိတယ်။

CodeIgniter ရဲ့ structure က

http://www.domain.com/controller/action/parameter/parameter

controller ကတော့ ရှင်းတယ်။ file တစ်ခု နဲ့ ရေးရလို့။ အဲလိုပဲ action ကလည်း function တစ်ခုနဲ့ ရေးရတော့ တော်တော်လေးကို ရှင်းတယ်။ code ကို ပြန်ဖတ်ရတာလည်း နားလည်တာပေါ့။ သို့ပေမယ့် API တွေ ရေးရတော့ အခုလို ဖြစ်သွားတတ်တယ်။

http://www.domain.com/users/:username/

http://www.domain.com/users/:username/blogs/

http://www.domain.com/users/:username/blogs/:id/

http://www.domain.com/users/:username/blogs/:id/coments/

http://www.domain.com/users/:username/blogs/:id/coments/:id

/:username ဆိုရင် သက်ဆိုင်ရာ user ရဲ့ data တွေ ထွက်လာမယ်။
/:username/blogs ဆိုရင် သူ့ ရဲ့ blog list ထွက်လာမယ်။
/blogs/:id ဆိုရင် blog တွေထဲကမှ id တစ်ခုအတွက် data ထွက်လာမယ်။
/blogs/:id/comments ဆိုရင် comments အကုန်ပေါ့။
/blogs/:id/comments/:id ဆိုရင်တော့ comments တစ်ခုအတွက် id ပေါ့။

အဲဒီမှာ စပြီး ပြဿနာ ဖြစ်တာကတော့ controller က dynamic ဖြစ်နေတာပဲ။ /users/name ဆိုပြီး သုံးပါလားလို့ ဆိုလို့ရပေမယ့် link လမ်းကြောင်းက developers အချို့အတွက် complain တက်စရာ ဖြစ်သွားမှာ အမှန်ပဲ။ ကျွန်တော့် အနေနဲ့လည်း /users/:username ကို /users/name/:username ထက် ပိုသဘောကျတယ်။ တိုသလို လွယ်တယ်။ /name ထည့်လိုက်တဲ့အတွက် /id ကော မရှိဘူးလားဆိုပြီး မေးခွန်းက ရှိလာပြန်တယ်။ Controller ကို သတ်မှတ်လို့ မရတဲ့အတွက် စကတည်းက index မှာပဲ စရမှာပဲပေါ့။ index မှာ username ကို စစ်ပြီးတော့ ရှိခဲ့ရင် သက်ဆိုင်ရာ user ရဲ့ data ကို ပြန်ခေါ်ပြပေးရုံပဲ။
Continue reading

RestKit Framework

RestKit ဆိုတာကတော့ Objective-C အတွက် framework တစ်ခုပါ။ အထိက RestFul API တွေအတွက် ဖန်တီးထားတဲ့ framework တစ်ခုပါ။ ပုံမှန် NSURLRequest နဲ့ အသုံးပြုတဲ့အခါမှာတော့ ရောက်လာတဲ့ JSON file ကို JSON framework ကနေ တဆင့် NSDictionary ပြောင်းရတယ်။ ရတဲ့ NSDictionary တွေက တစ်ခါတစ်လေမှာ Array ဖြစ်နေတာတွေလည်း ဖြစ်တတ်တယ်။ NSDictionary က data တွေကို objectForKey နဲ့ ပြန်ခေါ်ရတယ်။

ဥပမာ။။

ဆိုတဲ့ အထဲမှာ user က ထပ်ပြီးတော့ ပါနေပြန်တယ်။ အဲဒီလိုမျိုး ကိစ္စတွေမှာ NSURLRequest နဲ့ NSDictionary ကို သုံးရတာ တော်တော်လေးကို အဆင့်ဆင့်လုပ်နေရပါတယ်။ RestKit သုံးလိုက်တဲ့ အခါမှာ အလိုအလျောက် ဆောက်ရွက်ပေးသွားတယ်။ ဘယ်လို ဆောက်ရွက်သွားလဲဆိုတာကတော့ Object Mapping ပါ။

Object Relational Mapper ကို PHP မှာ Doctrine နဲ့ တွဲသုံးဖူးတဲ့သူတွေ သိပါလိမ့်မယ်။ နောက်ပြီးတော့ Symfony Framework ကို သုံးခဲ့တဲ့သူတွေ ကောင်းကောင်းနားလည်ပါလိမ့်မယ်။ RestKit က ရောက်လာတဲ့ JSON တွေကို Object အနေနဲ့ ပြောင်းပြီးတော့ ကျွန်တော်တို့ အနေနဲ့ object ကို ပြန်ခေါ်ရုံပါပဲ။

ဆိုတဲ့ JSON format နဲ့ တွဲသုံးဖို့အတွက် NSObject ကို အောက်ကလို ဆောက်ပါတယ်။

ပြီးတဲ့ အခါမှာ mapping ကို အောက်ကလို ချိတ်လိုက်ပါတယ်။

loading ပြန်ခေါ်တဲ့အခါမှာတော့

ဆိုပြီး ပြန်ခေါ်လိုက်တဲ့ အခါမှာ Objects NSArray ထဲမှာ article objects တွေ ဝင်သွားပါပြီ။ ဒါကြောင့် Articles တွေကို လွယ်လွယ်နဲ့ ခေါ်လို့ရသွားပါတယ်။
Continue reading

ZG2Uni with node.js

javascript နဲ့ ရေးထားတဲ့ zawgyi to unicode ကို node.js ပြန်ပြောင်းထားပါတယ်။ node.js နဲ့ အသုံးပြုမယ်ဆိုရင် node.js ကို သွင်းထားဖို့လိုပါတယ်။ node.js က windows မှာလည်း လွယ်လွယ် အသုံးပြုနိုင်ပါတယ်။ windows မှာ အသေးစိတ် သွင်းနည်းကိုတော့ ဒီမှာ ဖတ်ပါ။

https://github.com/saturngod/ZG2Uni_NodeJS/zipball/master ကို download ချလိုက်ပါ။ zip ကို ဖြည်လိုက်ရင် folder ထဲမှာ app.js file ကို တွေ့ပါလိမ့်မယ်။

Continue reading

Zawgyi to Unicode Javascript Converter

အရင်က အသုံးပြုနေတဲ့ http://www.solvewaresolution.net/ က javascript converter က free မဟုတ်တော့သလို သူများတွေကိုလည်း ဖြန့်ဝေပေးခွင့် မရှိတော့တဲ့အတွက်ကြောင့် ကိုယ့်ဘာသာကိုယ် ပြန်ရေးမယ်ဆိုပြီး ရေးဖို့ စဉ်းစားထားတာ တော်တော်ကြာပြီ။ ဘယ်ကနေ စရေးရမှန်း မသိတော့ wiki မှာ ပြထားတဲ့ zawgyi နဲ့ unicode code point တွေကို ကြည့်ပြီး ပြန်ရေးဖြစ်သွားတယ်။ ကိုယ့်ဘာသာကိုယ် ပြန်ရေးဖို့ စဉ်းစားထားတာ ဖြစ်တဲ့အတွက်ကြောင့် အရင်က javascript ကို အသုံးမပြုပဲ ပြောင်းချင်တာလေးတွေကို ကိုယ့် converter လေးနဲ့ ကိုယ့်ဘာသာ စမ်းပြောင်းလိုက် ပြင်လိုက် နဲနဲလေး ရေးလိုက်နဲ့ တော်တော်တောင် ကြာသွားပြီ။ သပ်သပ်ကြီး အချိန်ပေးမရေးတာကြောင့်လည်း ပါတာပေါ့။ အခုတော့ beta 1 အဆင့်ကို ရောက်သွားပါပြီ။
Continue reading

HTML5 Offline

ဒီနေ့ ကိုသီ (Myanmar Tutorial) က ipad မှာ HTML website offline ရအောင် ဘယ်လိုလုပ်ရမလဲဆိုပြီး facebook မှာ မေးထားတာ တွေ့လိုက်တယ်။ ဒါနဲ့ အရင်ကတည်းက ကြားဖူးတဲ့ HTML5 offline လေးကို စမ်းကြည့်ဖြစ်တယ်။ တစ်ခါမှတော့ ipad မှာ မစမ်းဖူးဘူး။

HTML 5 မှာ Cache Manifest ပါလာပါတယ်။ Google Chrome , Safari , firefox , opera စတာတွေမှာ support လုပ်ပါတယ်။

HTML5 cache ကို support လုပ်ဖို့ .htaccess မှာ

AddType text/cache-manifest .manifest

ဆိုပြီး ထည့်ပေးရပါတယ်။
Continue reading

CodeAcedamy

Programming ကိုလေ့လာချင်တယ်။ Programming ဆိုတာ ဘာလဲ။ Programming နဲ့ ပတ်သက်ပြီး ဘာမှ မသိဘူး။ ဒါပေမယ့် လေ့လာကြည့်ချင်တယ်ဆိုတဲ့ သူတွေအတွက် CodeAcedamy က ဖန်တီးပေးထားပါတယ်။ javascript ကို လေ့လာချင်တဲ့ သူတွေအတွက်ကတော့ တော်တော် အဆင်ပြေပါတယ်။ အခု အချိန်မှာတော့ Course က ၂ ခု ပဲ ရှိပါသေးတယ်။ သို့ပေမယ့် contribute လုပ်ထားတဲ့ course တွေကတော့ တော်တော်များများရှိပါတယ်။ အခုထက်ထိတော့ အကုန်လုံးကို တင်မထားသေးပါဘူး။

Continue reading

Socket.io with iOS

သောကြာနေ့က ရုံးမှာ လေ့လာချင်တာ လေ့လာလို့ရအောင် နေ့တဝက် အချိန်ပေးပါတယ်။ ဒါနဲ့ စမ်းချင်နေတဲ့ node.js က socket.io နဲ့ iphone ကို စမ်းပြီး ချိတ်ကြည့်လိုက်တယ်။ နေ့တဝက်လောက်တော့ အချိန်ကုန်သွားတယ်။ လိုချင်တဲ့ library က ရတယ်။ သို့ပေမယ့် socket.io 0.7 နောက်မှာ သုံးမရတာနဲ့ ပြန်ပြင်ထားတဲ့ library ကို သုံးရတယ်။ အဲဒီ library က https://github.com/pkyeck/socket.IO-objc ပါ။

သူက socketio-cocoa https://github.com/fpotter/socketio-cocoa ကို အခြေခံထားတယ်။ socketio-cocoa က 0.7 နောက်ပိုင်းမှာ မရတော့လို့။ နောက်ပြီး အခြား library တွေ ထပ်ဖြည့်ပေးရတယ်။

ထပ်ဖြည့်ပေးရတဲ့ library တွေက

ကဲ ကျွန်တော် စမ်းထားတဲ့ဟာလေးကို အောက်က video မှာ ကြည့်လို့ရပါတယ်။

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 ရေးပုံလေး ရေးပါအုံးမယ်။