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 []

ငါတို့နိုင်ပြီ

ဒီနေ့ မြန်မာ နဲ့ ဗီယက်နမ် ပွဲကို မကြည့်ဖြစ်လိုက်ဘူး။ မကြည့်ဖြစ်ဘူးဆိုတာကလည်း ရုံးချိန် ဖြစ်နေလို့ ဆိုရမယ်။ မလေး နဲ့ ပွဲတိုင်းက အိမ်ရောက်ရောက်ခြင်း ဖွင့်ကြည့်ပြီး အားပေးလိုက်ပေမယ့် ရှုံးသွားခဲ့တယ်။ ဒီနေ့တော့ ရုံးချိန်မှာဆိုတော့ online ကနေ status လေး ကြည့်နေရုံပဲ။ Facebook မှာ မြန်မာ ဂိုးစသွင်းပြီးဆိုတော့ ဝမ်းသာသွားမိတာ အမှန်ပဲ။ တစ်ချိန်တစ်ခါတုန်းက မြန်မာ အသင်းပေါ် မကျေမနပ်ဖြစ်တဲ့ စိတ်တွေ ပျောက်သွားတယ်။ ပြောလည်း ခံရမှာပဲလေ။ ဘယ်လောက်ရုံးရုံး အမြဲတန်း အားပေးနေမိတာပဲ။ မှတ်မိသေးတယ်။ ငယ်ငယ်တန်းက ဗီယက်နမ် နဲ့ ပွဲမှာ အောင်ကျော်ကျော် ထုတ်ခံလိုက်ရတော့ မကျေမနပ်တွေ ဖြစ်လိုက်ရဖြစ်ခြင်း။ အဲတုန်းက ကျွန်တော် ကလေးပဲ ရှိအုံးမယ် ထင်ပါ့။ အဲဒီ ပွဲမှာ ရှုံးသွားလို့ ငိုတောင် ငိုမိတယ်။ နောက်ပိုင်း ဗီယက်နမ် နဲ့ ကန်တိုင်း မြန်မာတွေကို နိုင်စေချင်တယ်။ အဲဒီတုန်းက ခံစားချက် ရင်ထဲမှာ စွဲကျန်ခဲ့တယ်။

ငယ်ငယ်ကတည်းက ဘောလုံးကန်ရင် ဂိုးသမား နေရာပဲ လုပ်လာတော့ ရှေ့တန်း နောက်တန်း အလယ်တန်းတွေထက် ဂိုးသမားတွေကို ပိုသဘောကျတယ်။ အဲဒီ အချိန်အခါတုန်းက ဂိုးသမား အောင်ကျော်ကျော်ကို လေးစား အားကျ မိတာ အမှန်ပဲ။ အဲဒီခေတ်တုန်းက အခုခေတ်လို အင်္ဂလန်ပွဲတွေ ပြနေတာ မဟုတ်ဘူးလေ။ အောင်ကျော်ကျော် ထုတ်ခံရတုန်းက တီဗီ ရှေ့မှာ မကျေမနပ်နဲ့ ဒိုင်လူကြီးကို အားပါးတရ အော်ငိုပြီး ပြောခဲ့တာတွေ မှတ်မိသေးပါ့။ ဒီ ခံစားချက်လေးက တော်တော်နဲ့ မပျောက်သွားပဲ ဗီယက်နမ် ဆို မကျေမနပ် ဖြစ်နေဆဲပဲ။ ဗီယက်နမ် နဲ့ တွေ့လိုက်တိုင်း မြန်မာ တွေ ရှုံးပဲ ရှုံးလွန်းလို့ မကျေမနပ်တွေ ဖြစ်ခဲ့တာ အမှန်ပဲ။

အင်္ဂလိပ်စာတက်တုန်းက ဆရာက သူ ဗီယက်နမ် သွားခဲ့တုန်းက အတွေ့အကြုံ ပြောပြတယ်။ ဗီယက်နမ်တွေက ယဉ်ကျေးတယ်တဲ့။ မြန်မာ ဗီယက်နမ် ဘောလုံးပွဲ TV မှာလာလို့ ဆိုင်မှာ ဆရာထိုင်ကြည့်နေတယ်တဲ့။ ဗီယက်နမ်လည်း နိုင်သွားကော သူတို့တွေ ထ ပျော်ကြတယ်။ ခဏနေတော့ ဆရာတို့က မြန်မာက ဆိုတာ သိတော့ တိုးတိုးနေကြ။ သူတို့က မြန်မာ က ဆိုပြီး ဆိုင်ကလူတွေကို သတိပေးတယ်လို့ ဆရာပြောတာ မှတ်မှတ်ရရပဲ။

အခုတော့ နိုင်ပါပြီ။ ကျွန်တော်တို့တွေ နိုင်ပါပြီ။ နှစ်ပေါင်းများစွာ ရင်ထဲမှာ မကျေမနပ် ဖြစ်ခဲ့တာတွေ ကျေနပ်သွားရတယ်။ တစ်ခါတည်း ဗီယက်နမ်ကိုလည်း စိတ်မကောင်းပါဘူး လို့ ပြောချင်တယ်။ ရုံးကနေ ပြန်တော့ iPhone ကနေ facebook ဝင် refresh ချချပြီး result ကို စောင့်ကြည့်နေရတယ်။ Lavendar ကနေ Redhill ထိက မြေအောက်ထဲမှာ ဆိုတော့ လိုင်းက မမိဘူး။ စိတ်ကတော့ လှုပ်ရှားနေတာ အမှန်ပဲ။ Redhill ကျော်တော့ 3G မိတာနဲ့ refresh ချလိုက်တော့ ၂ ဂိုး ဖြစ်နေပြီ။ 3G က ခဏ ပျက်သွားတယ်။ ရတော့ refresh ချလိုက်တော့ ၃ ဂိုး ဖြစ်သွားတယ်။ ပျော်လိုက်တာ အရမ်းပဲဗျာ။ refresh တစ်ခါ ချလိုက်တိုင်း ၁ ဂိုး ဝင်ဝင် သွားတယ်။ bus ကားဂိတ်ကို လမ်းလျှောက်သွားရင် refresh ချလိုက်တော့ ၄ ဂိုး ဖြစ်သွားပြီ။ bus ကား လာတော့ refresh ချလိုက်တော့ ၅ ဂိုးမှာ ဖြစ်သွားလေမလား ဆိုပြီး ကြည့်လိုက်ပေမယ့် ၄ ဂိုး ၁ ဂိုးနဲ့ ပွဲပြီးသွားတယ်။ ဘာပဲ ပြောပြော ကျွန်တော်တို့တွေ နိုင်ပြီ။

အိမ်ပြန်ချိန်မှာ လမ်းလျှောက်ရတာ လေထဲမှာ လမ်းလျှောက်နေရသလိုပဲ။ ငါတို့တွေ နိုင်ပြီ။ ကြေးပေမယ့် ကျေနပ်တယ်။ နှစ်ပေါင်းများစွာ ကျွန်တော့် ရင်ထဲမှာ ခံစားနေရတာ ဒဏ်ရာ သက်သာသွားပြီ။ ငါတို့တွေ နိုင်ပြီ လို့ ထပ်ခါ တလဲလဲ ရေရွှတ်နေမိတယ်။ မြောက်ကြွမြောက်ကြွ အရသာကိုလည်း ခံစားရပြီ။ အရှေ့တောင် အာရှ ဘောလုံးပွဲမှာ တတိယလေး ရတာကို မြန်မာတွေ ပျော်နေလိုက်ကြတာဗျာ။

ဒီတစ်ခါ မြန်မာ အသင်းကို သဘောအကျဆုံးပဲ။ ဟန်ဆန်ကိုလည်း တကယ့်ကို ချီးကျူးမိပါတယ်ဗျာ။ နောက်ပြီး မြန်မာ ဘောလုံး အဖွဲ့ချုပ် အပါအဝင် ဘောလုံးသမားတွေကော နည်းပြကော အသင်းအဖွဲ့ဝင်တွေကော အားလုံးကို ကျေးဇူးလည်း အထူးတင်မိပါတယ်။

iOS Resource

iOS developer တွေ အနေနဲ့ အသုံးဝင်တဲ့ resource အချို့တွေက

Cocoa Control

iOS မှာ အခြား သူတွေ အသုံးပြုထားတဲ့ control တွေကို လွယ်လင့် တကူ ရှာဖွေ အသုံးပြုနိုင်ပါတယ်။ တော်တော်များများကတော့ github မှာ share ထားပြီးထားသားပါ။ http://cocoacontrols.com က resource တွေ အားလုံးကို စုစည်းထားပေးတာပါ။ တော်တော်လေးကို အသုံးဝင်ပါတယ်။ ဥပမာ။။ twitter ipad version လိုမျိုး ဖန်တီးချင်တယ်ဆိုရင် လွယ်လင့်တကူ ရှာဖွေနိုင်ပါတယ်။

iOS Weekly

iosdevweekly.com ကို iOS Developer တိုင်း subscribe လုပ်ထားသင့်ပါတယ်။ အပတ်စဉ် iOS devleopment နဲ့ ပတ်သက်ပြီး အသုံးဝင်တဲ့ newsletter တွေ ပို့ပေးပါတယ်။ ပုံမှန်အားဖြင့် News , Design, Code , Tool ဆိုပြီး Section ၄ ခု ပါပါတယ်။

Continue reading

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

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

iPhon 4S

မနေ့က Oct 28 ရက် စင်္ကာပူမှာ iphone စပြီး ရောင်းချပါတယ်။ M1 ကတော့ ၂၈ ရက်နေ့ မနက် ၁၂ နာရီ ( ၂၇ ရက်နေ့ ည ၁၂ နာရီ ) ကတည်းက စတင် ရောင်းချပါတယ်။ Signtel မှာတော့ ညကတည်းက တန်းစီတဲ့ သူတွေ အများအပြားပါပဲ။ ကျွန်တော်ကတော့ လိုင်းအသစ်ကို starhub ကပဲ လျှောက်မယ်လို့ ဆုံးဖြတ်ထားတဲ့အတွက်ကြောင့် online pre order မရလို့ သွားတန်းစီးရပါတယ်။

မနက် ၉ နာရီ ကတည်းက Clementi Mall မှာ စပြီး တန်းစီပါကော။ ၁၀ နာရီမှာ ဆိုင်ဖွင့်ပြီးတော့ ၁၂ နာရီလောက်မှာ ကျွန်တော့်အလှည့်ကို ရောက်လာပါကော။ ကျွန်တော့် အရှေ့က တစ်ယောက်က 32 GB စာရင်း ကောက်ထားတဲ့ အထဲမှာ ပါပြီး အရှေ့ရောက်မှ 32 GB မရှိတော့ဘူးဆိုလို့ ပြဿနာ ဖြစ်ပါလေရော။ 32 GB ၅ လုံးပဲ ရှိတဲ့အတွက် အစောကြီးကတည်းက စာရင်းကောက်ထားပါတယ်။ သို့ပေမယ့် ရောင်းတဲ့သူက အခြား သူကို ၂ လုံး ရောင်းလိုက်တဲ့အတွက် အစောကြီးကတည်းက ကုန်သွားပါလေရော။ ဒါနဲ့ စာရင်းကောက်ထားတာတွေက တလွဲတွေ ဖြစ်ကုန်ပါလေရော။ ဒါနဲ့ ကျွန်တော့် ရှေ့က တစ်ယောက် 16 GB ပြောင်းယူလိုက်ရပါတယ်။

ကျွန်တော့် အလှည့်ရောက်တော့ New Line လျှောက်မှာ ဖြစ်တဲ့အတွက်ကြောင့် Address သေချာအောင် Bank Bill စာရွက်လိုပါတယ်တဲ့။ ” passport လည်းပါလာပါတယ်။ bank bill စာရွက်တော့ မပါလာဘူး။ အိမ်ပြန်ယူရမယ် ။ ပြန်လာရင် Queue ပြန်တန်းစီရမလား” ဆိုတော့ တန်းစီရပါမယ်တဲ့။ အဲလိုပြောပြီးတာနဲ့ နောက်လူ တစ်ယောက်ကို ခေါ်ပါလေရော ။ ကျွန်တော် စကားတောင် ပြီးအောင် မပြောလိုက်ရဘူး။ ဒါနဲ့ အိမ်ပြန် Queue ပြန်တန်းစီပေါ့။ ၁ နာရီခွဲလောက်နေတော့ အရှေ့ကလူတွေက ထွက်သွားလို့ ဘာဖြစ်တာလဲပေါ့ ဆိုပြီး ဆိုင်က ဝန်ထမ်းကို သွားမေးကြည့်လိုက်တော့မှ 16 GB ကော 32 GB ကော out of stock ဖြစ်သွားပြီး။ 64 GB တစ်မျိုးပဲ ကျန်တော့တယ်။ ဒါဆိုရင် ကျွန်တော် ၁ နာရီခွဲ တန်းစီထားတာ အလကားဖြစ်သွားတာပေါ့။ အဲဒီကတည်းက starhub ရဲ့ အလုပ်လုပ်ပုံကို စိတ်တော်တော် ညစ်သွားတယ်။ ၉ နာရီကတည်းက စလိုက်တာ ၁ နာရီထိုးတဲ့ အထိ အချိန်ကုန်သွားတာပဲ အဖတ်တင်လိုက်တယ်။ ဒါနဲ့ Jurong Point သွား။ Starhub မှာ မေး ။ မေးဖို့တေင် တော်တော် စောင့်လိုက်ရတယ်။ မမေးခင်မှာပဲ out of stock ဆိုတဲ့ ဆိုင်းဘုတ်ထောင်ပါလေရော။ ဒါနဲ့ပဲ မရခဲ့ပြန်ဘူး။
Continue reading