Python ကို သဘောကျပြီး နောက်ပိုင်း CLI program တွေကို python နဲ့ ပဲ ရေးဖြစ်တော့မယ်။ သောကြာနေ့တုန်းက snipplr.com က snippets တွေကို files တွေ အနေနဲ့ ပြန်ခွဲထုတ်ဖို့ program ကိုလည်း python နဲ့ ပဲ ရေးဖြစ်တယ်။ Web App တစ်ခုကိုလည်း python နဲ့ ရေးဖို့ စဉ်းစားနေတော့ Django ကို သွားသတိရတယ်။ မနေ့ကတော့ တနေကုန် Django ဖတ်ဖြစ်တယ်။ Django က လက်ရှိ PHP နဲ့ တော်တာ်ကွာတယ်။ သွင်းရတာ လွယ်တယ်။ testing server လည်း ပါပြီးသားမို့ Apache တို့ Nginx တို့ သွင်းနေစရာမလိုပဲနဲ့ စမ်းလို့ runserver ဆိုပြီး run လိုက်လို့ရတယ်။
Django VS CodeIgniter
Django နဲ့ CI ဘာကွာလဲဆိုရင်တော့ အများကြီးကွာတာတော့ အမှန်ပါပဲ။ CI ကို ၁ နှစ်ကျော် အသုံးပြုလာပြီးနောက်ပိုင်း Django ကို ပြောင်းလဲအသုံးပြုဖို့ ကြိုးစားတာက အရမ်းလွယ်ကူတဲ့ အလုပ်တော့ မဟုတ်ဘူး။ CI က လွယ်လွယ်ကူကူ လေ့လာလို့ ရပေမယ့် Django ကတော့ လေ့လာဖို့ အချိန် ပိုယူရပါတယ်။
ORM
Django က ORM ကို အသုံးပြုထားတဲ့အတွက် CI လိုမျိုး သာမာန် တွေးခေါ်ပုံစံနဲ့ တွေးခေါ် ရေးသားလို့ မရတော့ဘူး။ တနည်းပြောရင် ပုံမှန် တွေးတော် စဉ်းစားတဲ့ နည်းတွေကိုပါ ပြောင်းလဲ လာရပါတယ်။ ORM ဆိုတာကတော့ Object-relational mapping လို့ ခေါ်တာပေါ့။ ORM က database tables တွေကို objects အနေနဲ့ အသုံးပြုသွားတာပါ။ ဥပမာ။။
Model တစ်ခုကို တည်ဆောက်တဲ့ အခါမှာ တစ်ခါတည်း database ကိုပါ တည်ဆောက်သွားတာကို တွေ့ရမှာပါ။ တနည်းဆိုရင် Database ကို သေသေချာချာ မသိပေမယ့် ကောင်းမွန်စွာ တည်ဆောက်လို့ ရလာတယ်။ Time Saving ပိုဖြစ်လာပေမယ့် memory တော့ ပိုစားပါတယ်။ ORM ကို မရင်းနီးတဲ့သူတွေအတွက်တော့ လေ့လာရတာဟာ နည်းနည်း ဂွကျလာပါတယ်။ နားလည်သွားပြီဆိုရင်တော့ ပုံမှန် သမာရိုးကျ development တွေ ထက် ပိုမိုလျင်မြန်စွာ ရေးသားနိုင်တယ်။ Database ကိစ္စအတွက် သိပ်ပြီး ခေါင်းစား စရာမလိုတော့ဘူး။
MVC
CI မှာ controller , view ကို ရေးသားထားတာ ရိုးရှင်လှတယ်။ http://localhost/controller/action ဆိုပြီး ခွဲထားတဲ့အတွက် ရိုးရိုးလေး ရေးနိုင်တယ်။ သို့ပေမယ့် Django က controller နဲ့ model ကို url ပေါ်မှာ မူတည်ပြီး ခွဲထားတာ မဟုတ်ဘူး။ ၁ ရက်လောက်ပဲ Django ကို ဖတ်ထားသေးတယ်ဆိုတော့ controller , model , view ကို ကောင်းကောင်း မခွဲတတ်သေးဘူး။ ကိုယ့်ဘာသာကိုယ်တော့ နားလည်တယ်။ ရေးတတ်ပေမယ့် နားလည်အောင် မရှင်းပြတတ်ဘူး။ တနည်းဆိုရင် သေချာ မတတ်သေးဘူးပေါ့ဗျာ။ တတ်ယောင်ကား အဆင့်ပဲ ရှိသေးတယ်။ MVC ပိုင်းမှာတော့ CI လောက် လွယ်ကူ မရှင်းလင်းတာ အမှန်ပဲ။
Template System
CI က template view ကတော့ ပုံမှန် PHP code တွေနဲ့ ရောထွေးပြီး ရေးလို့ရပေမယ့် Django ကတော့ ကိုယ်ပိုင် template system သုံးထားပါတယ်။ python code တွေ ထည့်လို့ မရသလို များများ စားစားလည်း ရောထွေးပြီး ရေးလို့ မရဘူးပေါ့။ တနည်းပြောရင် Designer တွေအတွက် အလွန် အဆင်ပြေတယ်လို့ ဆိုရလိမ့်မယ်။
URL Pattern
CI မှာတုန်းကတော့ index.php/ နဲ့ သွားရင် ရသလို .htaccess နဲ့ ပြောင်းရေးလိုက်ရင်လည်း ရတယ်။ URL Pattern အတွက် သီးသန့် စဉ်းစားနေဖို့ မလိုဘူး။ နောက်ပြီး controller တစ်ခုကို ဖန်တီးပြီး action ကို ခေါ်ရုံပဲ ဆိုတော့ အရမ်းနားလည်ရလွယ်ကူတယ်။ URL တစ်ခု ဖန်တီးဖို့ အတွက် သီးသန့် ဖန်တီးပေးစရာမလိုပေမယ့် Django မှာတော့ urls.py မှာ သွားထည့်ပေးရပါတယ်။
Regular Expression ကို နားမလည်တဲ့အခါမှာတော့ URL Pattern ကို ရေးဖို့ရာ နည်းနည်းတော့ အခက်တွေ့လိမ့်မယ်။
Admin Page
CI မှာတော့ auto generate admin page မပါပေမယ့် Django မှာတော့ ပါလာပါတယ်။ သို့ပေမယ့် Admin page က model ပေါ်မှာ မူတည်ပြီး တည်ဆောက်ထားတာ ဖြစ်လို့ ကိုယ်လိုချင်တဲ့ ပုံစံအတိုင်း ဟုတ်ချင်မှ ဟုတ်လိမ်မယ်။ ကိုယ့်စိတ်တိုင်းကျ Admin page ကို တည်ဆောက်ချင်ရင်တော့ ကိုယ့်ဘာသာ ကိုယ် ပြန်ရေးတာ အကောင်းဆုံးပါပဲ။ မြန်မြန်သွက်သွက် admin page ဆိုရင် Django က လွယ်လင့် တကူ ဖန်တီးပေးနိုင်ပါတယ်။
Philosophy
framework တစ်ခုကို တစ်ရက်တည်း ဖတ်ရုံနဲ့ နားလည် သဘောပေါက်ဖို့ မလွယ်ပါဘူး။ လက်တွေ့ project မှာ အသုံးပြုပြီး ထပ်ခါထပ်ခါ လေ့လာ နေမှသာ နားလည် သဘောပေါက်လာမှာပါ။ Programming Language တစ်ခုနဲ့ တစ်ခုက philosophy ပိုင်းတွေ မတူကြသလို language တစ်ခုတည်းဖြစ်ပေမယ့် framework တစ်ခုနဲ့ တစ်ခု တည်ဆောက်တဲ့ Philosophy အခြေခံခြင်း မတူညီကြပါဘူး။ တနည်းပြောရရင် language တစ်ခုကိုပဲ လေ့လာတာ ဖြစ်ဖြစ် framework တစ်ခုကို လေ့လာတာပဲ ဖြစ်ဖြစ် ကိုယ် လက်ရှိ နားလည် သဘောပေါက်ထားတဲ့ Philosophy ပိုင်း ကိုတော့ ခဏလောက် မေ့ထားလိုက်တာ အကောင်းဆုံးပဲ။ ငါက CI ရဲ့ တည်ဆောက်ပုံကို ပဲ ကြိုက်တယ်ဆိုပြီး ဆွဲကိုင်ထားရင်တော့ လေ့လာသဘောပေါက်ဖို့ တော်တော် ခက်သွားမှာ အမှန်ပါပဲ၊ ဒီအပတ် အင်္ဂါ ရုံးပိတ်တော့ စာထပ်ဖတ် ဖြစ်မယ်လို့ ထင်ပါတယ်ဗျာ။
Leave a Reply