MMWebFonts

MyWebFont က bandwidth ပြည့်လို့ ၁ ရက်လောက် သုံးမရတာ တွေ အခု တလော ခဏခဏ ဖြစ်နေပါတယ်။ ဒါနဲ့ ကျွန်တော့် ဆီ mail ပို့ပြီး သူတို့ရဲ့ server မှာ host တင်ပြီး run မယ်လို့ စာတွေ ပို့ကြတယ်။ သို့သော်လည်းပဲ MyWebFont က Google App Engine အတွက် ရေးထားတာဖြစ်ပြီးတော့ လက်ရှိ Linux server တွေမှာ run လို့မရပါဘူး။

MMWebFonts ဆိုပြီးတော့ mywebfont code အတိုင်းကို PHP နဲ့ ပြန်ပြင်ရေးထားပါတယ်။ hosting ပေါ်မှာ မ run ချင်သူတွေ အနေနဲ့ကတော့ http://mmwebfonts.comquas.com/ ကနေ MyWebFont သုံးသလိုမျိုး external style sheet အနေနဲ့ သုံးလို့ရပါတယ်။ ကိုယ့် hosting မှာ တင်သုံးချင်တယ်ဆိုသူတွေကတော့ source code ကို github မှာ ရယူနိုင်ပါတယ်။

ကျောင်းတွင်း ဒီမိုကရေစီ

Facebook မှာ ခင်မြတ် က ဦးသန့်ရဲ့ ကျောင်းတွင်း ဒီမိုကရေစီ စာအုပ်ကို ပြန်ရိုက်ပြီး တင်ထားပေးပါတယ်။ ပြီးတော့ PDF နဲ့ share ထားတယ်။ message ပို့ပြီးတော့ epub file လုပ်ဖို့အတွက် တောင်းတော့ မူရင်း doc file ကိုပို့ပေးပါတယ်။ ဒါနဲ့ ကိုယ့်ဘာသာကိုယ် online က နေ ပုံတွေ ပြန်ရှာပြီးတော့ cover လုပ်လိုက်တယ်။ epub ပြောင်း ။ mmepub နဲ့ font epub ထည့်။ cover ထည့် လိုက်ပါတယ်။

cover

epub version ကိုတော့ ဒီမှာ download ချနိုင်ပါတယ်။

PDF ကိုတော့ ဒီမှာ ဖတ်ပြီး download original ကို နှိပ်ပြီးတော့ download လည်း ချလို့ရပါတယ်။

Working with git

Git ကို အရင်ရုံး point-star မှာ စသုံးဖူးတာပါ။ git ဆိုတာကို အရင်တုန်းကတော့ opensource တွေကို download ဆွဲချပြီး သုံးဖို့လောက်ပဲ သုံးဖြစ်တယ်။ point-star မှာ github သုံးရမယ်ဆိုတာနဲ့ github ကို လေ့လာဖြစ်တာပဲ။ github နဲ့ git အစတုန်းက လုံးဝ ကို မကွဲတာ။ github သုံးရင်းနဲ့ git နဲ့ github မတူဘူးဆိုတာ သိလာတာ။ git သုံးတတ်ပြီးနောက်ပိုင်းမှာ github မှာ opensource project တွေ တင်ဖြစ်တယ်။ သို့ပေမယ့် တစ်ယောက်တည်းပဲ ဖြစ်တဲ့အတွက် git အကြောင်းကို ကောင်းကောင်း မသိခဲ့ဘူး။ အရင်ရုံးတုန်းကလည်း တစ်ယောက်တည်းလိုလို ဖြစ်နေတဲ့အတွက် မထူးခြားလှဘူး။ backup သာသာ ရှိပါတယ်။

ဒီရုံးရောက်တော့ repo သုံးမယ် ဆိုတော့ ကျွန်တော်က bitbucket ကို recommend လုပ်ခဲ့တယ်။ သို့ပေမယ့် bitbucket က hg ပဲ support လုပ်တယ်။ ဒါကြောင့် git ထက်စာရင် hg ကို အသုံးပြုဖြစ်ခဲ့တယ်။ အခုနောက်ပိုင်း bitbucket က git support လုပ်တော့ ကျွန်တော်တို့တွေ git ကို ပြောင်းသုံးခဲ့တယ်။ hg နဲ့ git က အတူတူပဲ လို့ ဆိုလို့ရပါတယ်။ သို့ပေမယ့် ကျွန်တော်က git ကို ပိုကြိုက်တယ်။ git က data တွေကို compress လုပ်ပြီး သိမ်းထားတဲ့အတွက်ကြောင့် နေရာ သိပ်မယူဘူးလို့ ဆိုရမလိုပဲ။ Git ကို စသုံးတဲ့အချိန်မှာ ကျွန်တော်တို့ ရုံးက ၂ ယောက်တည်း မဟုတ်တော့တာအတွက်ကြောင့် hg ထက်စာရင် git အကြောင်းကို ပိုသိပါတယ်။

Continue reading

Making Rest API – Part 1

ကျွန်တော် PHP နဲ့ REST API အကြောင်းကို တစ်ခေါက်ရေးဖူးပါတယ်။ အဲဒီမှာ CodeIgniter ပြဿနာကို ရေးခဲ့ဖူးပါတယ်။ Slim Framework အကြောင်းကိုလည်း ပြောခဲ့ပါတယ်။ သို့ပေမယ့် Slim Framework ပြဿနာက ကျွန်တော်တို့ routing ပတ်လမ်းကြောင်းတွေ အများကြီး ရေးနေရမှာပဲ။ file တွေ အများကြီးကို ခေါ်ပြီးတော့ run ရမှာဖြစ်တဲ့အတွက်ကြောင့် သဘောမကျလှဘူး။

ဒါနဲ့ CodeIgniter routing နဲ့ Sinatrarb routing ပေါင်းပြီးတော့ Ava framework မှာ ထည့်သွင်းလိုက်ပါတယ်။ ကျွန်တော်တို့ Rest API တစ်ခုကို ရေးကြည့်ရအောင်။ Example အနေနဲ့ blog API တစ်ခု တည်ဆောက်ပါမယ်။ GET , POST , PUT , DELETE တွေကို ကျွန်တော်တို့ အသုံးပြုပါမယ်။

GET ကတော့ ရဖို့အတွက်ပါ။ POST ကတော့ add လုပ်တဲ့ ကိစ္စတွေမှာ သုံးပါမယ်။ PUT ကိုတော့ edit လုပ်ဖို့မှာ အသုံးပြုပါမယ်။ DELETE ကိုတော့ ဖျက်တဲ့ နေရာမှာ အသုံးပြုပါမယ်။
Continue reading

Infrastructure

ဒီနေ့ ရုံးမှာ လက်ရှိလုပ်နေတဲ့ project တစ်ခုအတွက် server ပိုင်း infrastructure တွေကို လိုက်ဖတ်ဖြစ်တယ်။ အဓိက ဖတ်ဖြစ်တဲ့ infrastructure တွေက facebook, foursquare , instagran , digg စတဲ့ လူသုံးများတဲ့ website တွေပါပဲ။

Facebook

လက်ရှိ facebook ကို XHP နဲ့ ရေးပြီးတော့ Hip Hop PHP နဲ့ run ထားပါတယ်။ website ကိုတော့ javascript တွေပဲ သုံးထားတယ်။ C , C++ , Java တွေကို back end မှာ သုံးထားတယ်။ နောက်ပြီးတော့ boost ကိုလည်း သုံးထားပါတယ်။ နောက်ပြီးတော့ အချို့ internal tool တွေကိုတော့ python ကိုသုံးထားပါတယ်။ Chat ပိုင်းကိုတော့ Erlang နဲ့ ရေးထားပါတယ်။ backend service နဲ့ front end web server ကိုတော့ Apache Thrift ကို အသုံးပြုထားပါတယ်။1

Facebook က 690 billion page views each month ရှိပါတယ်။ လက်ရှိ Internet Traffic 9.5 percent က facebook ကို အသုံးပြုနေတာပါ။ 100 million photo upload နေ့စဉ် ရှိနေပြီးတော့ လစဉ် 30 billion pieces of content ရှိပါတယ်။ 1 million web sites and 550,000 applications က facebook connect ကို အသုံးပြုထားပါတယ်။ လက်ရှိ facebook data center ကိုတော့ Prineville, Oregon မှာ ထားရှိပါတယ်။2 North Carolina data center ကို တည်ဆောက်ဖို့အတွက် facebook က ပြင်ဆင်နေပါတယ်။3

လက်ရှိ data center မှာ အနည်းဆုံး 60,000 servers အသုံးပြုလျက်ရှိပါတယ်။ နောက်ပြီးတော့ MySQL , Memcached, Haystack for photo retrieval, Cassandra, Hadoop and Hive , Scribe for high-speed distributed logging4 , Apache HBase for Messaging5 တို့ကို အသုံးပြုထားပါတယ်။

Facebook ရဲ့ infrastructure အတိအကျကိုတော့ မသိရပေမယ့် server နဲ့ traffic ကို ကြည့်လိုက်တာနဲ့ အခုတော့ အဲလောက်ထိတော့ မလိုသေးပါဘူး။

Continue reading

  1. http://www.quora.com/What-programming-languages-are-used-at-Facebook?q=programming+language+in+facebook []
  2. http://www.datacenterknowledge.com/the-facebook-data-center-faq/ []
  3. https://www.facebook.com/rutherfordDataCenter []
  4. http://royal.pingdom.com/2010/06/18/the-software-behind-facebook/ []
  5. https://www.facebook.com/notes/facebook-engineering/the-underlying-technology-of-messages/454991608919 []

Test Flight SDK

Testflight ကိုတော့ iOS developer တော်တော်များများ သိကြပါလိမ့်မယ်။ iOS app development လုပ်တဲ့ အခါမှာ daily build တွေကို testing လုပ်ဖို့အတွက် testflight က အရေးပါလှပါတယ်။ အရင်တုန်းကတော့ SDK မထုတ်သေးပေမယ့် လွန်ခဲ့တဲ့ လအနည်းက SDK ထုတ်ပေးခဲ့ပါတယ်။ SDK က ဘာတွေ လုပ်လို့ရသလဲဆိုရင်တော့

၁။ Application ကို ဘယ်လောက်ကြာကြာသုံးသလဲဆိုတာကို သိနိုင်တယ်။်
၂။ NSLog နဲ့ ရေးထားတာတွေကို ပြန်ကြည့်လို့ရတယ်။ တနည်းပြောရင် ဘယ် line တွေက အလုပ်လုပ်သွားသလဲ မလုပ်သွားဘူးလဲဆိုတာကို သိနိုင်တယ်။
၃။ App က Crash ဖြစ်သွားခဲ့ရင် crash report ကို သူ့အလိုလို testflight ပေါ် တင်ထားပေးတယ်။ ဒါကြောင့် ဘယ်နေရာမှာ ဘာကြောင့် crash ဖြစ်သွားသလဲဆိုတာကို လွယ်လင့်တကူ သိနိုင်တယ်။
၄။ Check Point တွေထားခဲ့လို့ရတယ်။ ဥပမာ။။ Add friend လုပ်မလုပ် သိရအောင် check point ထားခဲ့တာမျိုးပေါ့။
၅။ In App Update လုပ်နိုင်တယ်။ version အသစ်ကို တင်လိုက်တာနဲ့ tester တွေက update မလုပ်ရသေးပဲ အဟောင်းကို ဖွင့်လိုက်တာနဲ့ update လုပ်လို့ရတယ်ဆိုပြီး notification တက်လာတယ်။
၆။ In-App Question ထည့်လို့ရတယ်။
Continue reading

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