Mar 17, 2017

API ဆိုတာဘာလဲ။

Ko Sagaing
API ဆိုတာ Application Program Interface ဖြစ်ပါတယ်။  Application တစ်ခုနှင့်တစ်ခု ချိတ်ဆက်ပြီး လိုအပ်တဲ့လုပ်ငန်းတွေ ဆောင်ရွက်နိုင်ရန် ဖန်တီးထားတဲ့ ကြားခံ Application တစ်ခုဖြစ်ပါတယ်။  Application တစ်ခုနှင် အခြား Application တစ်ခုတို့ရဲ့ Interface လည်းဖြစ်ပါတယ်။  API မှာ Command (သို့) Function တွေစုစည်းဖန်တီးထားပြီး ၄င်းတို့ကို Request လုပ်တဲ့အခါမှာ သက်ဆိုင်ရာ Response တစ်ခုခုကိုပြန်လည်ပေးပို့တယ်။  API တွေဟာ Cloud Service တွေထဲက (SaaS - Software as a Service နှင့်ဆင်တူတယ်။  Cloud Service တွေအကြောင်းကိုဖတ်ချင်ရင် ကျွန်တော် ဒီနေရာမှာ ရေးသားထားပါတယ်။  API ဆိုတာကို အခုနောက်ပိုင်းမှာ Web နည်းပညာတွေနှင့်အတူတွဲပြီး အမြဲလိုလို ကြားဖူးနေကြပေမယ့် တကယ်တော့ API ဟာ Windows နှင့်အခြား Platform တွေမှာလည်း ရှိပါတယ်။  ဥပမာ MS Windows ထဲက API တွေကို Windows API Index မှာတွေ့နိုင်ပါတယ်။  Windows Application တွေကို VB, C#, Java စသည့် Programming Languages တွေနှင့် ရေးသားဖန်တီးတဲ့အခါမှာ Windows ရဲ့ တစ်ချို့လုပ်ဆောင်ချက်တွေကို မိမိရဲ့ Application ထဲမှာထည့်သွင်း အသုံးပြုချင်တယ်ဆိုရင် Windows API တွေကိုသုံးနိုင်ပါတယ်။  မည်သည့် API ပဲဖြစ်ဖြစ် မိမိရဲ့ Application ထဲမှာထည့်သွင်း အသုံးပြုခြင်းဖြင့် သီးသန့်အစအဆုံးဖန်တီးစရာမလိုပဲ လိုအပ်တာကိုလုပ်ဆောင်နိုင်တာဟာ API တွေရဲ့ အားသာချက်တစ်ခုဖြစ်ပါတယ်။
ဒီပုံကတော့ API တစ်ခုရဲ့ အခြေခံအလုပ်လုပ်ပုံဖြစ်ပါတယ်။  Application 2 ကနေ Application 1 ကို API မှတဆင့် Request တစ်ခုလုပ်တယ်၊ Application 2 ရဲ့ Request ကို Application 1 ရတဲ့အချိန်မှာ သက်ဆိုင်ရာ Response တစ်ခုကို Application 1 က ပြန်လည်ပေးပို့နေတဲ့ ပုံဖြစ်ပါတယ်။

Web Service ဆိုတာဘာလဲ။
Web Service ဆိုတာ API အမျိုးအစားတစ်ခုဖြစ်ပြီး၊ Network (သို့) Internet ထဲက မတူညီတဲ့ Platform တွေပေါ်မှာရှိတဲ့ Application တွေတစ်ခုနှင့်တစ်ခု အပြန်အလှန်ဆက်သွယ်၊ ဆောင်ရွက်နိုင်အောင် ဖန်တီးထားတဲ့ နည်းပညာဖြစ်ပါတယ်။  အဲ့လို ဆက်သွယ်ဆောင်ရွက်တဲ့အခါမှာ Transport Protocol တစ်ခုဖြစ်တဲ့ HTTP ကိုအဓိက အသုံးပြုပါတယ်။ အခြား SMTP, FTP စသည် Protocol တွေလည်း အသုံးပြုကြပါတယ်။ အချက်အလက်တွေ အပြန်အလှန်ပေးပို့တဲ့နေရာမှာ အဓိကအသုံးများတဲ့ Message Protocol တွေကတော့ SOAP နှင့် REST ပဲဖြစ်ပါတယ်။  REST ကို RESTful လို့လည်းခေါ်ကြတယ်။  Wiki ထဲမှတော့ REST ကို Protocol တစ်ခုလို့ ဒီနေရာမှာ ပြောထားတယ်။  သို့သော် REST ဟာ HTTP ကိုအခြေခံပြီး API တွေရေးတဲ့အခါမှာအသုံးပြုတဲ့ Application Architecture တစ်ခုလို့ပြောရင် ပိုမှန်ပါလိမ့်မယ်။  Web Service တွေရဲ့ အခြေခံအားဖြင့် အလုပ်လုပ်ပုံကတော့ Transport Protocol တစ်ခုပေါ်မှာ Message တွေကို Request နှင့် Response လုပ်တာပဲဖြစ်တယ်။

SOAP ဆိုတာဘာလဲ။
SOAP ဆိုတာ XML ကိုအခြေခံတဲ့ Simple Object Access Protocol ဖြစ်ပါတယ်။  SOAP ဆိုတဲ့ Standard နှင့် SOAP အတွက်သတ်မှတ်ချက်တွေကို ဖန်တီးခဲ့တာကတော့ W3C အဖွဲ့ကြီးပဲဖြစ်ပါတယ်။  SOAP ကို HTTP, SMTP နှင့် FTP စသည့် Transport Protocol တွေပေါ်မှာ ဖန်တီးနိုင်ပါတယ်။  SOAP Message တစ်ခုကို Envelope လို့ခေါ်ပါတယ်။  Envelope တစ်ခုမှာ Header နှင့် Body ဆိုတာရှိတယ်၊  Header ပိုင်းမှာ Message အတွက်လိုအပ်တဲ့ လုံခြုံရေးပိုင်းဆိုင်ရာတွေဖြစ်တဲ့ ဥပမာ (Authentication, Encoding စသည်ဖြင့်) ပါဝင်ပြီး Body ပိုင်းမှာတော့ Response လုပ်မယ့် Message ပါဝင်တယ်။  Body က Message တွေကို WSDL - Web Service Definition Language လို့ခေါ်တဲ့ XML ပုံစံကဲ့သို့ရိုးရှင်းသော Language ကိုအသုံးပြုပြီး ဖန်တီးထားတာဖြစ်တယ်။  Body ထဲမှာ နောက်ထပ်ပါဝင်နိုင်တာက Fault ဖြစ်ပါတယ်။  Fault ကတော့ Error (သို့) Response Message နှင့်သက်ဆိုင်တဲ့ အချက်အလက်တွေပါဝင်တယ်။  Fault ကတော့လိုအပ်မှ ထည့်သွင်းအသုံးပြုရတဲ့အပိုင်းဖြစ်တယ်။  SOAP နှင့်ဆင်တူတဲ့ XML-RPC (Remote Procedure Call) ဆိုတဲ့ Web Service အမျိုးအစားလည်းရှိပါတယ်။  အခြားသော Web Service Protocol တွေကို ဒီနေရာမှာ လေ့လာနိုင်ပါတယ်။

အောက်မှာဖော်ပြထားတဲ့ SOAP Request Message နမူနာက W3C.ORG မှဖြစ်ပါတယ်။

POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI"

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <m:GetLastTradePrice xmlns:m="Some-URI">
            <m:tickerSymbol>DIS</m:tickerSymbol>
        </m:GetLastTradePrice>
    </soapenv:Body>
</soapenv:Envelope>

အောက်မှာဖော်ပြထားတဲ့ SOAP Response Message နမူနာက W3C.ORG မှဖြစ်ပါတယ်။

HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <m:GetLastTradePriceResponse xmlns:m="Some-URI">
            <m:price>34.5</m:price>
        </m:GetLastTradePriceResponse>
    </soapenv:Body>
</soapenv:Envelope>
နမူနာ SOAP Message တွေနှင့် အထက်ပါပုံကိုတွဲပြီး ကြည့်မယ်ဆိုရင် DIS (Walt Disney Company) ရဲ့ နောက်ဆုံး အရောင်းအဝယ်ဖြစ်ခဲ့တဲ့ Stock စျေးနှုံးကို SOAP Sender က SOAP Receiver ဆီကို Request လုပ်လိုက်တယ်။  SOAP Receiver ကနေ နောက်ဆုံးစျေးနှုံးကို SOAP Sender ဆီကို Response ပြန်လည်ပေးပို့လိုက်တာပဲဖြစ်တယ်။

REST ဆိုတာဘာလဲ။
REST ဆိုတာ REpresentational State Transfer ဖြစ်ပါတယ်။  Server မှာရှိတဲ့ Resource တွေကို Client တွေ Request လုပ်ခဲ့ရင်၊ Request နှင့်သက်ဆိုင်တဲ့ Response တစ်ခုကို ပြန်လည်ပေးပို့တဲ့ အလုပ်ကိုလုပ်ဆောင်တယ်။ Resource ဆိုတာ Message တစ်ခုဖြစ်နိုင်သလို၊ Image တစ်ခုလည်း ဖြစ်နိုင်တယ်။  REST ရဲ့ အလုပ်လုပ်ပုံက Client နှင့် Server ပုံစံမျိုးဖြစ်တယ်။  REST ဆိုတဲ့နည်းပညာကို Roy Fielding ရဲ့ PhD Thesis ကနေ ၂၀၀၀ ခုနှစ်မှာ စတင်ပေါ်ပေါက်လာခဲ့ပြီး၊ အခုနောက်ပိုင်းမှာ တဖြည်းဖြည်းနှင့် ပေါ်ပြူလာဖြစ်လာတဲ့ နည်းပညာတစ်ခုဖြစ်တယ်။  REST API ကို HTTP ပေါ်မှာ ရိုးရှင်းစွာ Request နှင့် Response ကိုလုပ်ဆောင်နိုင်ပါတယ်။  REST API တစ်ခုကိုအသုံးပြုဖို့၊ မည်သည့် Deployment မှမလုပ်ပဲနှင့်လည်း Browser ကနေလည်း Server ဆီကို Request လုပ်နိုင်ပါတယ်။  Request လုပ်တဲ့အခါမှာလည်း Client နှင့်သက်ဆိုင်တဲ့ Cookies Data နှင့် အခြား State တွေ (ဥပမာ Session Context) ကို Server ထဲမှာသိမ်းဆည်းမှု မလုပ်နိုင်ပါဘူး။  အဲလိုမလုပ်နိုင်တဲ့ အခြေအနေကို Stateless လို့ခေါ်ပါတယ်။ နောက်ပြီး REST မှာရှိတဲ့ Request တစ်ခုစီတိုင်းဟာ Resource တစ်ခုစီကို ရည်ညွှန်းတယ်။ REST ရဲ့ Request တွေဟာ URL တွေနှင့်သတ်မှတ်ထားတာဖြစ်တယ်။

အောက်မှာဖော်ပြထားတဲ့ REST Request နမူနာက Open Weather Map ကဖြစ်ပါတယ်။
http://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b1b15e88fa797225412429c1c50c122a1

အောက်မှာဖော်ပြထားတဲ့ REST Response နမူနာက Open Weather Map ကဖြစ်ပါတယ်။ 
{"coord":{"lon":-0.13,"lat":51.51},"weather":[{"id":300,"main":"Drizzle","description":"light intensity drizzle","icon":"09d"}],"base":"stations","main":{"temp":280.32,"pressure":1012,"humidity":81,"temp_min":279.15,"temp_max":281.15},"visibility":10000,"wind":{"speed":4.1,"deg":80},"clouds":{"all":90},"dt":1485789600,"sys":{"type":1,"id":5091,"message":0.0103,"country":"GB","sunrise":1485762037,"sunset":1485794875},"id":2643743,"name":"London","cod":200}
Request မှာကြည့်လိုက်ရင် ပုံမှန် URL ကဲ့သို့ပဲဖြစ်ပေမယ့် URL နောက်မှာ API Version (2.5)၊ weather (ဒီနေရာထိကို Service Endpoint လို့ခေါ်ပါတယ်။)၊ q=London,uk (ရှာဖွေချင်တဲ့ နိုင်ငံ၊ မြို့အမည်) နှင့် appid (ယာသီအသုံးပြုဖို့ id) စသည့်အချက်အလက်တွေပါတယ်။  ဒီအချက်အလက်ပုံစံကို Query String လို့ခေါ်ပါတယ်။ Response မှာကတော့ JSON Data တွေဖြစ်ပါတယ်။ Response မှာ XML အမျိုးအစားလည်း Response လုပ်နိုင်ပါတယ်။  အခုနမူနာက JSON Data တွေကို Programmer တွေရဲ့ Application ထဲမှာပြန်သုံးတဲ့အခါမှာ Serialization လုပ်ပြီးတော့ အသုံးပြုကြပါတယ်။  Serialization နှင့် Deserialization အကြောင်းကို ဖတ်ချင်ရင် ဒီနေရာမှာ ကျွန်တော်ရေးသားထားပါတယ်။  REST API တွေအလုပ်လုပ်ပုံကို လေ့လာကြည့်ချင်ရင် Fake API ဆိုတဲ့ Website မှာလေ့လာနိုင်ပါတယ်။  REST API ဆိုတာ ဘယ်လိုမျိုးလည်းဆိုတာ စမ်းသပ်ဖို့ရန် ဖန်တီးထားတဲ့ Website ဖြစ်ပါတယ်။  SOAP ထက် ဖန်တီးတည်ဆောက်ရတာလွယ်ပြီး၊ ရိုးရှင်းစွာ အသုံးပြုနိုင်တာကြောင့် REST နှင့် API တွေ တော်တော်များများကို အင်တာနက်ထဲမှာ တွေ့နိုင်ပါတယ်။

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

Feb 28, 2017

ROI (Return On Investment) ဆိုတာဘာလဲ။ ROI နှင့် IT ဘယ်လို ဆက်နွယ်နေလဲ။

Ko Sagaing
ROI ဆိုတာဘာလဲ။  IT (သို့) IS နှင့်သက်ဆိုင်တဲ့ ဆုံးဖြတ်ချက်တွေချတဲ့အခါမှာ ဘယ်လိုအထောက်အကူဖြစ်လဲ။  စသည့်မေးခွန်းမျိုးတွေကို ယခင်ကထက်၊ ယနေ့အချိန်မှာ IT နယ်ပယ်ကလူတွေကို ပိုပြီးမေးခံရလေ့ရှိတဲ့ မေးခွန်းတွေဖြစ်ပါတယ်။  ဒီမေးခွန်းအတွက်အဖြေကလည်း ခက်ခက်ခဲခဲဖြေရမယ့် အဖြေလည်းဖြစ်ပါတယ်။   ခက်ခဲတယ်ဆိုတဲ့ အကြောင်းပြချက်ကတော့ အဓိပ္ပါယ်ဖွင့်ဆိုချက်ကြောင့်ဖြစ်ပါတယ်။  ဥပမာအားဖြင့်ဆိုရင် Accounting နှင့် Finance မှာဖေါ်ပြလေ့ရှိတဲ့ အဓိပ္ပါယ်ဖွင့်ဆိုချက်အရဆိုရင်...

စီးပွားရေးလုပ်ငန်းတစ်ခုရဲ့ အသားတင်ဝင်ငွေ အတိုင်းတာဆိုတာ ၄င်းပိုင်ဆိုင်မှုတွေအားလုံးကနေ ဝင်လာသမျှ အကျိုးအမြတ်တွေဖြစ်ပြီး၊ ROI ကိုတွက်ချက်တဲ့အခါမှာ အခွန်အခတွေပေးပြီးနောက် ရလာတဲ့ အသားတင်အမြတ်ငွေကို ပိုင်ဆိုင်မှုစုစုပေါင်းနှင့်စားခြင်းဖြင့် တွက်ချက်ကြပါတယ်။

လို့ဆိုပါတယ်။

စီးပွားရေးလုပ်ငန်းတစ်ခုလုံးကို ခြုံငုံပြီးသတ်မှတ်ပြောဆိုမှပဲ လက်ခံနိုင်တဲ့အဓိပ္ပါယ်ဖွင့်ဆိုချက်တစ်ခု ဖြစ်ပါလိမ့်မယ်၊ IT Project တစ်ခုတည်း (သို့) Project တစ်ခုအောက်မှာ ထည့်သွင်းစဉ်းစားရမယ့် မတူခြားနားတဲ့ အမျိုးမျိုးသော IT Solutions တွေအတွက် လက်တွေ့ကျကျပြောဆိုဖို့အတွက်ကတော့ ခက်ခဲပါလိမ့်မယ်။

တစ်စုံတစ်ယောက်က ROI အကြောင်းမေးတဲ့အခါမှာ၊  သူတို့အမှန်တယ် မေးခွန်းမေးတာက...

ဒီပိုက်ဆံကနေ ငါဘာတွေပြန်ရမှာလဲ။
ငါကိုသုံးစွဲဖို့ (ရင်းနှီးမြှုတ်နှံဖို့) အတွက် မေးခွန်းထုတ်ခံရပြီးပြီလား။
တကယ့် တန်ကြေးက ဘယ်အရာလဲ။

ဆိုတာမျိုးတွေပဲ ဖြစ်ပါတယ်။
စီးပွားရေးအကျိုးအမြတ်များ - ဆုံးဖြတ်ချက်ချတဲ့သူတွေသိနိုင်ဖို့အတွက် ပြန်ရနိုင်တဲ့အရာများ
အစဉ်အလာအရကတော့ ထိပ်ပိုင်းကစီမံခန့်ခွဲတဲ့သူတွေနှင့် IT နည်းပညာရှင်တွေဟာ ITနှင့်ပတ်သက်တဲ့ ရင်းနှီးမြှုတ်နှံမှုတွေအတွက် ဆွေးနွေးကြတဲ့အခါမှာ ငွေကြေးအကျိုးအမြတ်တွေကိုပဲ အဓိကထားပြီး အများအားဖြင့် စဉ်းစားဆွေးနွေးခဲ့ကြတယ်။ ယနေ့အချိန်မှာတော့ စီးပွားရေးဦးဆောင်သူတွေနှင့် နည်းပညာရှင်တွေဟာ IT နှင့်ပတ်သက်တဲ့ ရင်းနှီးမြှုတ်နှံမှုတွေကနေ ငွေကြေးကဲ့သို့မဟုတ်တဲ့ အကျိုးအမြတ်တွေကိုလည်းပါ ထည့်သွင်းစဉ်းစားလာခဲ့ကြတယ်။

ငွေကြေးအကျိုးအမြတ်ဆိုတာ အဖွဲ့အစည်း၏ ဝင်ငွေထွက်ငွေနှင့် ဘဏ္ဏာငွေတို့အပေါ်မှာ အကျုံးဝင်တဲ့ သက်ရောက်မှုဖြစ်တယ်။  ဥပမာ ကုန်ကျစရိတ်လျှော့ချခြင်း (သို့) အခွန်ဘဏ္ဏာများ တိုးပွားလာခြင်း စသည်တို့ဖြစ်တယ်။

ငွေကြေးမဟုတ်တဲ့ အကျိုးအမြတ်ဆိုတာ ရလဒ်တွေနှင့် လုပ်ငန်းဆောင်ရွက်နိုင်စွမ်းတို့အပေါ်မှာ အကျုံးဝင်တဲ့ သက်ရောက်မှုဖြစ်တယ်။  ဥပမာ ဖောက်သည်တွေရဲ့စိတ်ကျေနပ်မှု တိုးမြှင့်လာခြင်း၊ သတင်းအချက်အလက်စီးဆင်းမှု ပိုမိုကောင်းမွန်လာခြင်း၊ ဆောင်ရွက်မှုအချိန် တိုတောင်းသွားခြင်း စသည်တို့ဖြစ်တယ်။

IT ၏ တန်ဖိုး
ဆုံးဖြတ်ချက်ချတဲ့သူတွေဟာ ရင်းနှီးမြှုတ်နှံမယ့်တန်ဖိုးကို လေ့လာမှုပြုလုပ်ပြီး၊ ၄င်းပေါ်မှာအခြေခံကာ IT Project တွေကို ရွေးချယ်ပြီး ဆုံးဖြတ်ချက်ချတာတွေကို လုပ်ဆောင်ကြတယ်။  IT ၏တန်ဖိုးကို အဖွဲ့အစည်းက ဘာတွေပေးလိုက်ရပြီး၊ ဘာတွေပြန်ရမှာလဲ ဆိုတဲ့ကြားထဲကဆက်နွယ်မှုဖြင့် ဆုံးဖြတ်ကြတယ်။  IT Project တန်ဖိုးကြီးတယ်ဆိုရင် ၄င်းရဲ့ကုန်ကျစရိတ်နှင့် ဆက်နွယ်နေပြီးတော့ အကျိုးအမြတ်ပမာဏလည်း ပိုပြီးကြီးမားမှာ ဖြစ်တယ်။

ဘဏ္ဏာရေး ROI 
လက်တွေ့မှာ အဖွဲ့အစည်းတော်တော်များများဟာ “financial metrics” ကို တစ်ခု (သို့) တစ်ခုထက်ပိုပြီး အသုံးပြုကြတယ်။  ၄င်းတို့ဟာ တစ်ခုချင်း (သို့) စုပေါင်းလျှက် ROI အနေနှင့်ရည်ညွှန်းတယ်။  အဲ့ဒီ metrics တွေမှာ ပါဝင်တာတွေက...

Payback Period (ပြန်လည်ရရှိမယ့် ကာလအပိုင်းအခြား)
Project ရဲ့ကုန်ကျစရိတ်ကို ပြန်လည်ရရှိပြီးနောက် အကျိုးအမြတ်အတွက်လိုအပ်တဲ့ အချိန်ပမာဏ

Net Present Value (လက်ရှိ အသားတင်တန်ဖိုး)
ယခုလက်ရှိငွေကြေးအရ အနာဂတ်အကျိုးအမြတ်တန်ဖိုးကို ပြန်ဆင်သတ်မှတ်ချက်

Internal Rate of Return (မြှုတ်နှံမှုမှပြန်ရနိုင်မယ့် နှုန်းထား)
အတိုးနှုန်းထားတစ်ခုလို ပြင်ဆင်သတ်မှတ်လိုက်ရင် ရနိုင်မယ့်အကျိုးအမြတ်များ

သာဓကဖြင့် ဥပမာဆိုရင်...
$1,500 ကုန်ကျမယ့် Project တစ်ခုကို သင်လုပ်ရမယ်ဆိုကြပါစို့၊ အဲ့ဒီ Project ဟာ ၅နှစ်ကျော်သွားပြီဆိုရင် တစ်နှစ်ကို $1,000 သင်သက်သာလိမ့်မယ်။  ဒါဆိုရင် ဒီ Project ရဲ့ ROI ကဘယ်လောက်ဖြစ်မလဲ။ ဆိုကြပါစို့ ဒီ Project အတွက် 10% ကုန်ကျတယ်လို့ ယူဆကြည့်မယ်ဆိုရင်...အဖြေကို အောက်ဖေါ်ပြပါပုံမှာ မြင်နိုင်ပါတယ်။

Payback Period. အခြေခံပြန်ရမယ့် ကာလအပိုင်းအခြားက တစ်နှစ်ခွဲ
NPV. အကျိုးအမြတ်ရမယ့်တန်ဖိုးက $2,291
IRR. မြှုတ်နှံမှုမှ ပြန်လည်ရနိုင်မယ့် အတိုးနှုန်းထား ပမာဏက 60.38%.

လက်မထောင်ထားတဲ့ အစိမ်းရောင်ပုံလေးတွေညွှန်းဆိုသကဲ့သို့ ဘဏ္ဏာရေးရှုထောင့်တစ်နေရာကနေ ထည့်သွင်းတွက်စဉ်းစားရင်လည်း ထိုက်သင့်တဲ့တန်ဖိုးရှိတယ်လို့ ဆိုနိုင်ပါတယ်။  ဒီလို metrics တွေကို စာအုပ်ထဲမှာလက်နှင့်ချပြီး ဂဏန်းပေါင်းစက်ဖြင့်သော်လည်းကောင်း၊ အလိုလျှောက်တွက်ချက်ပေးနိုင်တဲ့ Software ကို အသုံးပြု၍သော်လည်းကောင်း တွက်ချက်နိုင်ပါတယ်။ (မှတ်ချက်။ အထက်မှာဖေါ်ပြထားတဲ့ပုံဟာ  RMS ၏ အလိုလျှောက်တွက်ချက်ပေးတဲ့ Software FAST ROI for IT Quick Version မှ ကူးယူဖေါ်ပြခြင်း ဖြစ်ပါတယ်။)

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

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

FAQ IT Budgeting ကို ဆီလျှော်အာင် ဘာသာပြန်ဆိုသည်။

အခြားလေ့လာနိုင်သည့် လင့်ခ်များ
ဝီကီပီးဒီးယား Return of Investment
Investinganswers မှ Return of Investment
Investopedia မှ Return of Investment

Feb 25, 2017

Bitcoin နှင့် Blockchain ဆိုတာဘာလဲ

Ko Sagaing

Bitcoin ဆိုတာဘာလဲ။
Bitcoin ဆိုတာ အင်တာနက်ထဲမှာ အသုံးပြုတဲ့ ဒစ်ဂျစ်တယ်ငွေကြေးတစ်ခု ဖြစ်ပါတယ်။  ကာဆီနိုတွေမှာ လောင်းကစားလုပ်ဖို့ ငွေကြေးနှင့်ကွိုင်ပြားကို လဲလှယ်ပြီးမှ ဆော့လို့ရသလိုမျိုးပဲ၊ အင်တာနက်ထဲမှာ ပစ္စည်းတစ်ခုခုကို ဝယ်ဖို့အတွက် ကြားခံအသုံးပြုတဲ့ အင်တာနက်ထဲက Coin ကို Bitcoin လို့ခေါ်ပါတယ်။  ၂၀၀၉ မှာ Bitcoin စတင်ပေါ်ပေါက်ခဲ့ပြီး၊ ၂၀၁၁ နောက်ပိုင်းမှာ ဥပဒေနှင့်မလွတ်ကင်းတဲ့ ပစ္စည်းတွေဖြစ်တဲ့ မူးယစ်ဆေးဝါး၊ လက်နက် စသည်တို့ကို Silk Road လို့ခေါ်တဲ့ Website ကနေ Bitcoin ဖြင့် ကျယ်ကျယ်ပြန်ပြန့် အရောင်းအဝယ်ပြုလုပ်ခဲ့ကြတဲ့ သာဓကရှိတာကြောင့် ယခုအချိန်ထိ Bitcoin ကိုအသုံးပြုဖို့ လူတော်တော်များများ စိုးရွံ့နေလေ့ရှိပါတယ်။  သို့သော်လည်း တဖြည်းဖြည်းနှင့်ကျယ်ပြန့်လာတဲ့ ဒစ်ဂျစ်တယ်ငွေကြေးတစ်ခု ဖြစ်နေပါပြီ။ အင်တာနက်ထဲမှာ ရှိတဲ့ Bitcoin ကိုထိန်းချုပ်ထားတဲ့ ဘဏ်၊ ငွေကြေးအဖွဲ့အစည်း စသည့်ဗဟိုအဖွဲ့အစည်း ဆိုတာမျိုးတွေ မရှိပါဘူး။  အဲ့ဒါကြောင့် Bitcoin ဟာ တရားဝင်လား၊ မဝင်ဘူးလားဆိုတာကတော့ မေးခွန်းထုတ်စရာတစ်ခုပါ။  လက်ရှိအချိန်မှာတော့ နိုင်ငံတော်တော်များများမှာ တရားဝင်ကဲ့သို့သုံးစွဲနေပြီး၊ တစ်ချို့နိုင်ငံတွေမှာတော့ အငြင်းပွားစရာတစ်ခုအနေနှင့် ရှိနေဆဲပါ။ ဘယ်နိုင်ငံတွေမှာ တရားဝင်အနေနှင့် သုံးနေကြလည်း၊ ဘယ်နိုင်ငံတွေမှာ အငြင်းပွားဖွယ်ရာ ဖြစ်နေလဲဆိုတာ CNN Money ကဖေါ်ပြထားတဲ့  ဒီမြေပုံမှာ မြင်တွေ့နိုင်ပါတယ်။  Bitcoin နှင့်ပတ်သက်ပြီး နိုင်ငံအလိုက် ဥပဒေကြောင်းအရ ရှုမြင်မှုတွေကို ဒီနေရာမှာ လေ့လာနိုင်ပါတယ်။  Bitcoin ဆိုတာ Virtual Currency တစ်ခုဖြစ်တာကြောင့်၊ ကာဆီနိုမှာအသုံးပြုတဲ့ Coin ပြားကဲ့သို့ ပုံပန်းသဏ္ဌာန်လည်းမရှိသလို၊ ငွေစက္ကူတွေလို ပုံနှိပ်ထားတာမျိုးလည်း မဟုတ်ပါဘူး။  Bitcoin ကို Cryptocurrency လို့လည်း ပြောနိုင်ပါတယ်။ Bitcoin အပြင်အခြား Cryptocurrency တွေလည်းရှိပါတယ်၊ ၄င်းတို့ကို ဒီနေရာမှာ လေ့လာနိုင်ပါတယ်။  Cryptocurrency ဖြစ်တာကြောင့် Bitcoin မှာ Encryption လို့ခေါ်တဲ့ Key နှင့်လျှို့ဝှက်ထားတဲ့နည်းလမ်းကိုအသုံးပြုထားပြီး လူတစ်ဦးမှ၊ အခြားလူတစ်ဦးဆီကို အင်တာနက်မှတဆင့် လွှဲပြောင်းပေးပို့ရန် ဖန်တီးထားတဲ့ ငွေကြေးပုံစံဖြစ်ပါတယ်။  ဒါကြောင့် Bitcoin ဖြင့် အရောင်းအဝယ်လုပ်ခြင်းကို P2P (Peer to Peer) Transaction လို့လည်းပြောကြပါတယ်။  အင်တာနက်ထဲမှာ Bitcoin ဖြင့်ရောင်းတဲ့ ပစ္စည်းတစ်ခုကိုဝယ်ဖို့ မိမိမှာရှိတဲ့ ငွေကြေး (ဥပမာ USD, EUR စသည်ဖြင့်) ကို Bitcoin ဖြင့်ပြောင်းလဲပြီးမှ ဝယ်လို့ရပါတယ်။  အဲ့လိုဝယ်ယူတဲ့အခါမှာ ပုံမှန်ငွေပေးချေမှုပုံစံတွေကဲ့သို့ ဖြစ်ပေမယ့်၊ Bitcoin နှင့်ပေးချေရင်တော့ ဘဏ်၊ ငွေကြေးအဖွဲ့အစည်း၊ စသည့်ကြားခံအဖွဲ့အစည်းတွေ မပါဝင်တဲ့အတွက် ပိုမိုသက်သာသည့်နှုန်းထားဖြင့် ငွေပေးချေနိုင်ခြင်းက သူ့ရဲ့အားသာချက်တစ်ခုဖြစ်ပါတယ်။ Bitcoin ကိုလဲလှယ်နိုင်တဲ့ ငွေကြေးတန်ဖိုးနှုန်းထားဟာ အခြားငွေကြေးတွေကို လဲလှယ်နိုင်တဲ့ နှုန်းထားတွေကဲ့သို့ အမြဲပြောင်းလဲနေပါတယ်။  Bitcoin နှင့် USD ငွေကြေးလဲလှယ်မှုနှုန်းထားကို Google မှာ ယခုလို တွေ့နိုင်ပါတယ်။  Bitcoin ဟာ အခြားငွေကြေးတွေကဲ့သို့ သူ့မှာလည်း ယူနစ်သက်မှတ်ချက်တွေရှိပါတယ်။  ဥပမာ။ 100μBTC ကို 100 microbitcoin လို့ခေါ်ပြီး 0.0001BTC (BTC=Bitcoin) နှင့်တန်ဖိုးတူတယ်။  100μBTC ကို USD ပြောင်းရင် 0.11USD ရပါတယ်။  Bitcoin နှင့်ပတ်သက်တဲ့ ယူနစ်တွေကို ဒီနေရာမှာ လေ့လာနိုင်ပါတယ်။  Bitcoin ကနေ အခြားငွေကြေးတွေကို ပြောင်းလဲကြည့်ချင်ရင် ဒီနေရာမှာ ပြောင်းလဲကြည့်လို့ရပါတယ်။  Bitcoin ဆိုတဲ့ ဒစ်ဂျစ်တယ်ငွေကြေးကို ဖန်တီးခဲ့တာကတော့ Software Developer တစ်ယောက်လို့ဆိုတဲ့ Satoshi Nakamoto ဖြစ်ပါတယ်။  သို့သော် သူဟာဘယ်သူလည်း၊ လူတစ်ယောက်ကိုရည်ညွှန်းတာလား၊ အဖွဲတစ်ဖွဲ့ကိုရည်ညွှန်းတာလား ဆိုတာကိုတော့ ယခင်ကဘယ်သူမှ သေချာစွာ မသိခဲ့ကြပါဘူး။  သို့သော် ၂၀၁၆ မေလက BBC သတင်း တစ်ခုမှာတော့ သြစတြေးလျနိုင်ငံသား Programmer တစ်ယောက်ဖြစ်တဲ့ Craig Wright ဆိုသူက၊ သူဟာ Nakamoto ဖြစ်ပြီး Bitcoin ကို တီထွင်ခဲ့တဲ့သူလို့ ဝန်ခံပြောကြားခဲ့ပါတယ်။  သို့ပေမယ့် Wright ထုတ်ဖေါ်ပြောကြားခဲ့တဲ့ အထောက်အထားအချို့က လုံလောက်မှုမရှိတာကြောင့် Wright ကို Bitcoin သုံးစွဲနေကြတဲ့ အဖွဲ့အစည်းတွေက ပိုပြီးတိကျသေချာတဲ့ အထောက်အထားတွေပြဖို့ တောင်းဆိုထားပါတယ်။

အောက်ဖေါ်ပြပါပုံမှာ Bitcoin ဖြင့် ပစ္စည်းဝယ်ပြီး ငွေပေးချေနေပုံဖြစ်ပါတယ်။

Bitcoin ကိုဘယ်လိုထုတ်လုပ်လဲ။

Bitcoin ထုတ်လုပ်ဖို့ရန် ကွန်ပျူတာမှာ လိုအပ်တဲ့ ဟာ့ဒ်ဝဲလ်နှင့်ဆော့ဒ်ဝဲလ်တွေကို ထည့်သွင်းတပ်ဆင်ပြီး ထုတ်လုပ်နိုင်ပါတယ်။ သို့သော်အလွယ်တကူ ထုတ်လုပ်နိုင်တဲ့နည်းလမ်းတစ်ခုတော့ မဟုတ်ပါဘူး။ Bitcoin တွေထုတ်လုပ်ခြင်းဆိုတာထက် Bitcoin Mining (တူးဖေါ်ခြင်း) လို့ပြောရင် ပိုမှန်ပါလိမ့်မယ်။ Bitcoin Mining လုပ်ဖို့ ဘယ်လိုစတင်ရမလဲ၊ ဘာတွေလိုအပ်မလဲ ဆိုတာကိုတော့ ဒီနေရာမှာ လေ့လာနိုင်ပါတယ်။ Bitcoin တွေရအောင်တူးဖေါ်တဲ့အခါမှာ တစ်ဦးတစ်ယောက်တည်း တူးဖေါ်ခြင်းဟာ ကုန်ကျစရိတ်များတဲ့အပြင်၊ Bitcoin လည်းအများအပြားမရနိုင်တဲ့အတွက် Bitcoin mining pool လို့ခေါ်တဲ့ Bitcoin တူးဖေါ်တဲ့ အဖွဲ့တွေနှင့် အကျိုးတူ၊ ပူးပေါင်းတူးဖေါ်ခြင်းဟာ ကုန်ကျစရိတ်သက်သာတဲ့အပြင်၊ Bitcoin လည်းအများအပြားရနိုင်သလို၊ အတွေ့အကြုံတွေလည်း ဖလှယ်နိုင်ပါတယ်။  Bitcoin mining pool အကြောင်းနှင့် ပေါ်ပြူလာဖြစ်တဲ့ mining pool အဖွဲ့တွေအကြောင်းကို ဒီနေရာမှာ လေ့လာနိုင်ပါတယ်။  Bitcoin ကိုတူးဖေါ်တဲ့အခါမှာ Bitcoin တွေကိုသိမ်းစည်းဖို့ (သို့) လက်ခံဖို့ Bitcoin Wallet တစ်ခုရှိရပါမယ်။ Bitcoin Wallet ဆိုတာ e-Wallet ဖြစ်ပါတယ်။  လက်ရှိကျွန်တော်တို့ ပတ်ဝန်းကျင်မှာ အသုံးပြုနေတဲ့ Mobile Wallet ကဲ့သို့သော Application တစ်ခုဖြစ်ပါတယ်။

Bitcoin ကို Mining မလုပ်ပဲ ဘယ်လိုရနိုင်လဲ။

Bitcoin ကို Mining မလုပ်ပဲ အခြားနည်လမ်းတွေနှင့်လည်း ရနိုင်ပါတယ်။  အခြားနည်းလမ်းတွေဆိုတာ တချို့အလုပ်တွေကို အွန်လိုင်းကနေလက်ခံပြီး လုပ်ပေးကြတဲ့အခါမှာ၊ လုပ်အားခအတွက် ငွေပေးချေမှုကို အခြားငွေကြေးတွေနှင့်ပေးချေမှု မပြုလုပ်ပဲ Bitcoin နှင့်ငွေပေးချေမှုပြုလုပ်ကြတာကြောင့် ၄င်းမှတဆင့်ရနိုင်တာမျိုးဖြစ်ပါတယ်။နောက်ထပ်နည်းလမ်းတစ်ခုက အွန်လိုင်းမှာ ငွေကြေးတွေရဲ့အတက်အကျပေါ်မူတည်ပြီး (EUR, USD, SGD, CNY, JPY) စသည့်ငွေကြေးတွေကို Trading လုပ်လို့ရပါတယ်။  ငွေကြေးတွေကို Trading ပြုလုပ်ခြင်းကို ForeX (Foreign Exchange) Trading လို့ခေါ်ပါတယ်။  ForeX Trading မှာ Bitcoin ကိုလည်း Trading လုပ်နိုင်ပါတယ်။ Bitcoin ကို BTC အနေနှင့် ForeX Trading လုပ်တဲ့ Website တွေမှာ တွေ့နိုင်ပါတယ်။  Bitcoin ကို ForeX Trading လုပ်ခြင်းအားဖြင့်လည်း ရနိုင်ပါတယ်။  Bitcoin အခမဲ့ရနိုင်တဲ့နည်းလမ်းတွေလည်း ရှိပါတယ်။ အခမဲ့ရတယ်ဆိုပေမယ့်၊ မိမိ၏အချိန်ပေးလိုက်ရတာမျိုး ဖြစ်နိုင်သလို၊ Online Gambling Website တွေကနေ လောင်းကစားဖို့ စိတ်ပါလာအောင် အနည်းအကျဉ်းပေးပြီး ဆွဲဆောင်တာမျိုးတွေလည်း ရှိပါတယ်။ တနည်းနည်းနှင့် ရလာတဲ့ Bitcoin တွေကိုလက်ခံဖို့အတွက်ကတော့ မိမိမှာ Bitcoin Wallet တစ်ခုရှိဖို့တော့လိုပါတယ်။  Bitcoin ရနိုင်တဲ့နည်းလမ်းတွေကို ဒီနေရာမှာ လေ့လာနိုင်ပါတယ်။  Bitcoin ဘယ်လိုအလုပ်လုပ်လည်းဆိုတာ အလွယ်တကူနားလည်နိုင်မယ့် ပုံစံဖြင့် ဒီနေရာမှာ ရှင်းပြထားတာကိုဖတ်ရှုနိုင်ပါတယ်။  Bitcoin Wallet တွေကို ဒီနေရာကနေ Download လုပ်လို့ရပါတယ်။  Play Store နှင့် App Store တွေကလည်း ရှာဖွေပြီး Download နှင့် Install လုပ်လို့ရပါတယ်။

အောက်ဖေါ်ပြပါပုံကတော့ နာမည်ကြီး Bitcoin Wallet တွေဖြစ်ပါတယ်။


Blockchain ဆိုတာဘာလဲ။

Bitcoin နည်းပညာနှင့်အတူ Blockchain နည်းပညာဆိုတာလည်း ပေါ်ထွက်လာပါတယ်။  Bitcoin ကိုအသုံးပြီး အရောင်းအဝယ်တစ်ခုကို ပြုလုပ်ပြီးတဲ့အခါမှာ ဘယ်သူက၊ ဘယ်သူ့ကို၊ ဘယ်နေ့က၊ Bitcoin တန်ဖိုး ဘယ်လောက်လွှဲလိုက်တယ် စသည့် အချက်အလက်၊ စာရင်းတွေကို မှတ်သားထားတဲ့ လယ်ဂျာကို Blockchain လို့ခေါ်ပါတယ်။  Bitcoin နှင့် Transaction တစ်ခုလုပ်ပြီးရင် အဲ့ဒီ Transaction ဟာမှန်ကန်မှုရှိမရှိ စစ်ဆေးခြင်း၊ အတည်ပြုခြင်း (Authentication) ကို Bitcoin အသုံးပြုတဲ့ အသိုင်းအဝိုင်း (Network) ကနေ မှန်ကန်ကြောင်း ထောက်ခံမှု (Approve) ပြုလုပ်ပေးပါတယ်။  Approve ဖြစ်သွားတဲ့ Transaction တစ်ခုဟာ Block (သို့) File တစ်ခုဖြစ်ပါတယ်။  ၄င်း Approve ဖြစ်သွားတဲ့ Transaction ကို လယ်ဂျာထဲမှာ မှတ်သားထားခြင်းဖြင့် Blockchain ဖြစ်တည်နေပါတယ်။ Blockchain ကို တစ်နေရာထဲမှာ သိမ်းဆည်းထားတာမျိုးမဟုတ်ပဲ Bitcoin Network ထဲမှာ ဖြန့်ဝေမှု (Distribute) ပြုလုပ်ပြီး သိမ်းဆည်းထားတာဖြစ်ပါတယ်။  Network ထဲမှာဖြန့်ဝေပြီး သိမ်းဆည်းတာကြောင့် အပြန်အလှန်ဖြန့်ဝေထားတဲ့လယ်ဂျာ (MDL = Mutual Distributed Ledger) လို့လည်းခေါ်ဆိုနိုင်ပါတယ်။  Approve ဖြစ်သွားတဲ့ Transaction ကို ယခင် Transaction ရဲ့နောက်မှာထပ်ထည့်ပြီး Blockchain ထဲမှာ မှတ်သားထားပါတယ်။ Blockchain ထဲမှာ Block (သို့) File တွေဟာ တစ်ခုနှင့်တစ်ခု ချိတ်ဆက်နေပြီး၊ အမြဲတိုးပွားနေတာကြောင့် Blockchain ကို Database တစ်ခုအနေနှင့်မြင်နိုင်ပါတယ်။  နောက်ပြီး Blockchain ထဲက Block ထဲမှာ Cryptography Sign (သို့) Digital Signature လို့ခေါ်တဲ့ လက်ခံနှင့်ပို့သူအတွက် မှန်ကန်ကြောင်းအထောက်အထားပါဝင်သလို၊  Blockchain ထဲမှာရှိတဲ့ Block တွေတစ်ခုနှင့်တစ်ခုကို ချိတ်ဆက်တဲ့အခါမှာ Hashing Function ကိုအသုံးပြုပြီး ချိတ်ဆက်ထားပါတယ်။  Hashing နှင့် Encryption အကြောင်းကိုလေ့လာချင်ရင် ဒီနေရာမှာ ကျွန်တော်ရေးသားထားတာကို ဖတ်ရှုနိုင်ပါတယ်။ Blockchain ကို Open Decentralized Database လို့လည်းခေါ်ကြပါတယ်။ တစ်ဦးတစ်ယောက်တည်း ထိန်းချုပ်ထားတဲ့ Database မဟုတ်တာကြောင့် Open Database လို့ခေါ်ဆိုကြခြင်းဖြစ်ပါတယ်။  Bitcoin Network ထဲမှာ ယခင်ကလုပ်ခဲ့တဲ့ Transaction တွေနှင့် နောက်ဆုံးလုပ်ခဲ့တဲ့ Transaction အချက်အလက်တွေရဲ့ Blockchain ကို ဒီနေရာမှာ မြင်တွေ့နိုင်ပါတယ်။  Bitcoin နှင့်အခြား Cryptocurrency တွေရဲ့ Blockchain ထဲက Transaction အချက်အလက်တွေကို ကြည့်ချင်ရင် ဒီနေရာမှာ တွေ့နိုင်ပါတယ်။ အချက်အလက်တွေထဲမှာ Key နှင့် Hash တွေကိုဖတ်လို့မရတဲ့ စာသားတွေအနေနှင့် မြင်တွေ့ရမှာဖြစ်ပါတယ်။  အဲ့ဒီ Key နှင့် Hash တွေဟာ Transaction လုပ်ခဲ့တဲ့သူတွေနှင့်သက်ဆိုင်တဲ့ အထောက်အထား (Identity) တွေဖြစ်ပြီး၊ Blockchain ရဲ့ အဓိကအစိတ်အပိုင်းတစ်ခုလည်း ဖြစ်ပါတယ်။  Blockchain နည်းပညာကို FinTech Industry ကဲ့သို့ ငွေကြေးနှင့်ပတ်သက်တဲ့လုပ်ငန်းတွေမှာသာမက အခြားလုပ်ငန်းတွေမှာလည်း တဖြည်းဖြည်း ကျယ်ပြန့်စွာအသုံးပြုလာကြပါတယ်။  ဥပမာ။ ကျမ္မာရေးထောက်ခံချက်၊ အွန်လိုင်းမဲပေးခြင်း၊ အရောင်းအဝယ် အွန်လိုင်းစာချုပ်၊ အွန်လိုင်း ထောက်ခံစာ စသည်တို့ဖြစ်ပါတယ်။

အောက်ဖေါ်ပြပါပုံဟာ Blockchain ဘယ်လိုအလုပ်လုပ်လည်းဆိုတဲ့ပုံ ဖြစ်ပါတယ်။


Blockchain နည်းပညာအသုံးပြုထားတဲ့ နာမည်ကြီး Trading နှင့် Investment Website တွေဖြစ်ပါတယ်။

Blockchain Ecosystem ပုံဖြစ်ပါတယ်။


ဆက်စပ်လေ့လာနိုင်မယ့်လင့်ခ်များ
Bitcoin Official Website
အခြေခံ Bitcoin အကြောင်း
Blockchain နည်းပညာအကျဉ်းချုပ်
Blockchain အကြောင်း
ကျွန်တော်တို့ အနာဂတ်ကိုပုံဖေါ်နေတဲ့ Blockchain Application (၅) မျိုး

Feb 6, 2017

Cannot attach the file mdf as database mvc ဆိုတဲ့ Error ဖြေရှင်းခြင်း

Ko Sagaing
ASP.NET MVC မှာ Connection String ထဲမှာ ၁)မှာကဲ့သို့ သတ်မှတ်ထားပြီး၊ နောက်ပိုင်းမှာမှ ၂)မှာကဲ့သို့ AttachDBFilename Attribute ကို ထည့်လိုက်တဲ့အခါမှာ...

၁)<add connectionstring="Data Source=(LocalDb)\v11.0; Initial Catalog=StockDb;Integrated Security=SSPI;" name="StockDbContext" providername="System.Data.SqlClient"> 

၂)<add connectionstring="Data Source=(LocalDb)\v11.0; AttachDBFilename=|DataDirectory|\StockDB.mdf; Initial Catalog=StockDb;Integrated Security=SSPI;" name="StockDbContext" providername="System.Data.SqlClient"> 

cannot attach the file mdf as database mvc ဆိုတဲ့ error တက်ခဲ့ရင်...

Package Manager Console ထဲသွားပြီး
၁) sqllocaldb.exe stop <ENTER>
၂) sqllocaldb.exe delete <ENTER>

ပြီးရင် Application ကို Run လိုက်တာနှင့် Error ရှင်းသွားပါလိမ့်မယ်။  (မှတ်ချက်။ အခြား အခြေအနေမျိုးမှာလည်း ဖြစ်နိုင်ပါတယ်။)

Feb 2, 2017

.NET Framework ထဲက Entity Framework (EF) အကြောင်း

Ko Sagaing
.NET ထဲမှာ Entity Framework ဆိုတာ ORM (Object Relational Mapping) Framework တစ်ခုပဲဖြစ်တယ်။  ORM ဆိုတာ Object Oriented ပုံစံဖြင့် Database ထဲက Data တွေကို ကိုင်တွယ်ဆောင်ရွက်တဲ့ နည်းလမ်းပဲဖြစ်တယ်။  EF နှင့် Relational Database ကို ချိတ်ဆက်ပြီး CRUD (Create, Read, Update, Delete) အလုပ်တွေကို လုပ်တဲ့အခါမှာ Code အနည်းငယ်သာ ရေးရန်လိုအပ်တယ်။  EF ဟာ တကယ်တော့ ယခင်က .NET Framework ထဲမှာရှိပြီးသား ADO.NET ပေါ်မှာ ဖန်တီးထားတဲ့အတွက် လုပ်ဆောင်ချက်လည်း ပိုမြန်လာတယ်။

Entity Framework ကိုအသုံးပြုနိုင်ဖို့ ဘယ်လိုပြင်ဆင်မလဲ။
ASP.Net MVC Project အသစ်တစ်ခုယူလိုက်မယ်။  Project အမည်ကို SamplePrjEntityFramework လို့ပေးလိုက်တယ်။  (မှတ်ချက်။ EF ကို MVC မဟုတ်တဲ့ Project မှာလည်း အသုံးပြုလို့ရပါတယ်။)


ပြီးရင် Tools ထဲက NuGet Package Manager ထဲမှာ Package Manager Console ကို Click နှိပ်လိုက်တယ်။


Install-Package EntityFramework ဆိုတဲ့ Command ရိုက်ထည့်ပြီး Enter နှိပ်လိုက်ရင် EF ကို Project ထဲမှာ Install လုပ်ပေးလိမ့်မယ်။  လုပ်ပြီးသွားရင် Get-Package Command နှင့် Install လုပ်ထားတဲ့ Version နှင့် Project ထဲမှာရှိတဲ့ Package တွေကို ပြန်စစ်ကြည့်လို့ရတယ်။  EF Tools ကို ဒီနေရာ ကနေ Download လုပ်လို့လည်းရတယ်။

EF နှင့် Data တွေကို ကိုင်တွယ်ဆောင်ရွက်နိုင်တဲ့ နည်းလမ်းများ
EF ကို အသုံးပြုပြီး Data တွေကို ကိုင်တွယ်ဆောင်ရွက်နိုင်တဲ့နည်းလမ်း (၃) မျိုးရှိတယ်။
၁) Entity တွေကို Code ဖြင့်ရေးပြီး စတင်သည့်နည်းလမ်း။  ၄င်းကို Code First Approach လို့ခေါ်တယ်။  Developer တွေက Entity Class တွေကို Code တွေနှင့်ရေးမယ်။  Entity Class တွေရေးပြီးသွားရင် လိုအပ်တဲ့ Configuration Code တွေရေးမယ်။  စသည်ဖြင့် အကုန်လုံး Code တွေရေးပြီး လုပ်ဆောင်တာမျိုးဖြစ်တယ်။

၂) Entity တွေကို Model ဖြင့် စတင်သည့်နည်းလမ်း။  ၄င်းကို Model First Approach လို့ခေါ်တယ်။  
Model တွေကိုဘယ်လိုဖန်တီးလဲ။
Project Menu ကနေ Add New Item ထဲကိုသွားလိုက်ရင် Data ဆိုတာရှိတယ်။  Data ကနေ ADO.NET Entity Data Model ဆိုတာကို Add လုပ်ပြီး Empty EF Designer model ဆိုတဲ့ Item ကိုအသုံးပြုပြီး Model တွေကိုဖန်တီးနိုင်တယ်။

၃) Entity တွေကို Database ဖြင့် စတင်သည့်နည်းလမ်း။  ၄င်းကို Database First Approach လို့ခေါ်တယ်။ Entity ဆိုတာ Database ထဲမှာတော့ Table ဖြစ်တယ်။ Entity တွေအတွက် Table တွေကို Database ထဲမှာ ဖန်တီးတာမျိုးကိုပြောတာဖြစ်တယ်။  Database ကရှိပြီးသားလည်း ဖြစ်နိုင်တယ်။

Code First Approach ဖြင့် EF ကိုလေ့လာခြင်း။
Entity ဆိုတာ Programming ထဲမှာတော့ Class ပဲဖြစ်ပါတယ်။  တစ်စုံတစ်ခုကို ကိုယ်စားပြုတဲ့ Data Class တစ်ခုလို့ပြောရင် ပိုမှန်မယ်။  MVC မှာတော့ Data Model တစ်ခုလို့ပြောရင် ပိုမှန်မယ်။  အဲ့ဒီတော့ Data Model Class တွေကို အရင်ဦးဆုံး ဖန်တီးပေးရမယ်။  ပုံထဲက Models Folder အောက်မှာပြထားတဲ့အတိုင်း Data Model Class နှစ်ခုဖန်တီးလိုက်မယ်။
Position.cs

Employee.cs

enum ဆိုတာဘာလဲ။
Employee Class ထဲက enum ဆိုတာ C# မှာအသုံးပြုတဲ့ Keyword တစ်ခုဖြစ်ပြီး enumeration လို့ခေါ်တယ်။ enumeration ဆိုတာ မပြောင်းလဲပဲရှိနေတဲ့ Value အစုအဝေးတစ်ခုကို ပြောတာဖြစ်တယ်။ enum Value အစုအဝေးတစ်ခုကို ဖန်တီးပြီး အသုံးပြုထားတဲ့အတွက် Data တွေရဲ့ Type ကိုသေချာစွာ သတ်မှတ်သုံးစွဲနိုင်တယ်။  Employee Class မှာ Gender ခွဲခြားသတ်မှတ်ဖို့ သုံးထားတာဖြစ်တယ်။

virtual ဆိုတာဘာလဲ။
virtual ဆိုတာ C# မှာအသုံးပြုတဲ့ Keyword ဖြစ်ပြီး အခြား Class တွေက Employee Class ကိုခေါ်ယူသုံးစွဲတဲ့အခါမှာ (ဥပမာ။ Inheritance လုပ်သုံးတယ်။) ၄င်းရဲ့ Position ဆိုတဲ့ Property ကို override လုပ်ခွင့်ပေးထားခြင်းပဲဖြစ်တယ်။  Override လုပ်တယ်ဆိုတာ မိမိစိတ်ကြိုက် အဲ့ဒီ Property ကိုပြင်ဆင်၊ ချဲ့ထွင်နိုင်တာမျိုးကိုပြောတာဖြစ်တယ်။

ICollection ဆိုတာဘာလဲ။
Position Class ထဲက ICollection ဆိုတာ Collection Interface တစ်ခုဖြစ်တယ်။  C# မှာ Interface တွေကို I စကားလုံးနှင့်စပြီးသတ်မှတ်ထားတယ်။  Collection Class တွေဖြစ်တဲ့ List တို့ Dictionary တို့ကို သတ်မှတ်အသုံးပြုနိုင်တယ်။  လက်ရှိ Code ထဲမှာရေးထားတဲ့ ICollection<Employee> ဆိုတာ Employees တွေပါတဲ့ List တစ်ခုအတွက် သတ်မှတ်ထားတာဖြစ်တယ်။

Position.cs ထဲက...

public virtual ICollection<Employee> Employees { get; set; }

ဒီ Code ဟာတကယ်တော့ Navigation အတွက် အသုံးပြုတာဖြစ်တယ်။  Entity တွေဆိုတာ တစ်ခုနှင့်တစ်ခု ဆက်သွယ်နေလေ့ရှိတယ်။  အဲ့ဒီ ဆက်သွယ်မှုတွေကို One to Many, Many to One, One to One, Many to Many စသည်ဖြင့်ခေါ်ကြတယ်။  ဒီဆက်သွယ်မှုတွေကို Navigation လို့ခေါ်တယ်။  Employee တစ်ယောက်မှာ Position တစ်ခုရှိနိုင်သလို Position တစ်ခုမှာလည်း Employee တွေအများကြီးရှိနိုင်တယ်ဆိုတဲ့ ဆက်သွယ်မှုကိုပြောတာဖြစ်တယ်။

Database တစ်ခုအတွက် Class တွေဖန်တီးခြင်း
Data Model တွေတည်ဆောက်ပြီးသွားပြီဆိုရင် Database Context လို့ခေါ်တဲ့ Database တစ်ခုဖြစ်ပေါ်ဖို့ဖန်တီးပေးရမယ်။  Project ထဲမှာ DataAccessLayer လို့ခေါ်တဲ့ Folder တစ်ခုတည်ဆောက်လိုက်မယ်။


DataAccessLayer Folder ထဲမှာ EmployeeContext.cs နှင့် EmployeeInitializer.cs ဆိုတဲ့ Class နှစ်ခုဖန်တီးလိုက်မယ်။

EmployeeContext.cs


EmployeeInitializer.cs


DbContext ဆိုတာဘာလဲ။
Entity Framework မှာ အရေးပါပဲ Class တစ်ခုဖြစ်ပြီး Entity Class တွေနှင့် Database ကြားထဲမှာ Data နှင့်ပတ်သက်တဲ့ အလုပ်တွေကို ချိတ်ဆက်ပြီး အပြန်အလှန်လုပ်ဆောင်ပေးမယ့် Class တစ်ခုဖြစ်တယ်။ EmployeeContext ကို DbCotext Class ကနေ Inherit လုပ်ပြီး တည်ဆောက်ထားတာဖြစ်တယ်။  C# မှာ Inherit လုပ်ရင် (:) ကိုအသုံးပြုတယ်။  EmployeeContext ဟာ Derived Class ဖြစ်ပြီး DbContext ဟာ Base Class ဖြစ်တယ်။ base("EmployeeContext") က Database Connection String ကို သတ်မှတ်တာဖြစ်တယ်။  Connection String ကို Web.config ထဲမှာ သတ်မှတ်ပေးရမှာဖြစ်တယ်။  နောက်ပိုင်းမှာ တွေ့နိုင်ပါတယ်။

DbSet ဆိုတာဘာလဲ။
Entity Set တစ်ခုကို DbSet လို့ခေါ်တယ်။  Entity ထဲမှာရှိတဲ့ Data တွေကို CRUD (Create, Read, Update, Delete) အလုပ်တွေကို လုပ်ဖို့အတွက်ဖြစ်တယ်။  Entity Set ဟာ Collection တစ်ခုအနေနှင့်တည်ရှိတာဖြစ်တဲ့အတွက် DbSet<Employee> လို့ရေးပေးရတာဖြစ်တယ်။  အမည်ကိုလည်း Employee တွေ အများကြီးရှိမှာမို့လို့ Employees လို့ပေးလိုက်တယ်။  Database တစ်ခုတည်ဆောက်ပြီးသွားတဲ့အခါမှာ Employees နှင့် Positions ဆိုတဲ့ Table နှစ်ခုကို ရလာမှာဖြစ်တယ်။

Initializer Class က ဘာအတွက်လဲ။
Application ကို Run လိုက်တဲ့အခါမှာ Project မှာ Database မရှိခဲ့ဘူးဆိုရင် DbContext က သူ့မှာရှိတဲ့ DbSet တွေနှင့် Database တစ်ခုကို တည်ဆောက်ပေးမယ်။  Database ကို တည်ဆောက်ပြီးသွားရင် တစ်ချို့ Table တွေထဲမှာ Data တွေကို အဆင်သင့် ထည့်သွင်းပေးထားချင်တဲ့အခါမှာ Initializer Class ကိုဖန်တီးပေးရတယ်။ အခု Initializer Class ရဲ့ Base Class က DropCreateDatabaseIfModelChanges ဖြစ်တယ်။ ဒီ Class လုပ်ပေးမှာက DbContext ကဖန်တီးလိုက်တဲ့ Database ကိုနောက်ပိုင်းမှာ ပြင်ဆင်မှုတွေ လုပ်ခဲ့မယ်ဆိုရင် Database အဟောင်းကိုဖျက်ပြီး Database အသစ်ဖန်တီးတဲ့အလုပ်ကို လုပ်ပေးတယ်။  နောက်ပြီး Data အသစ်တွေထည့်လိုက်ရင်လည်း Database ထဲက Table တွေထဲကို ထည့်ပေးမှာဖြစ်တယ်။  လက်ရှိ Code ထဲမှာတော့ Position (၅)ခုကို ForEach Loop နှင့်ပတ်ထည့်ထားပြီး context.SaveChanges() နှင့်သိမ်းထားတယ်။

Web.config ထဲမှာ Configuration များထည့်သွင်းခြင်း
Database အတွက်လိုအပ်တဲ့ Class တွေဖန်တီးပြီးသွားပြီဆိုရင် Web.config ထဲမှာ Database နှင့်သက်ဆိုင်တဲ့ Configuration တွေသတ်မှတ်ပေးရမယ်။


Web.config ထဲက ပုံမှာပြထားတဲ့အတိုင်း entityFramework tag ထဲမှာ Config ကိုထည့်ပေးရမယ်။


context ထဲက type attribute မှာ SamplePrjEntityFramework.DataAccessLayer namespace အောက်မှာရှိတဲ့ EmployeeContext ကိုသတ်မှတ်ပေးရမယ်။ နောက်ပြီး context အောက်မှာ databaseInitializer ရဲ့ Type မှာလည်း EmployeeInitializer ကိုထည့်ပေးရမယ်။  ဒါတွေပြီးသွားရင် Connection String ထည့်ပေးရမယ်။ ပုံမှာပြထားတဲ့အတိုင်း entityFramework tag အပိတ်ရဲ့ အောက်မှာ ထည့်ပေးလိုက်တယ်။


name မှာ Class အမည်အတိုင်းပဲ EmployeeContext ဆိုပြီးသတ်မှတ်ပေးရမယ်။  connectionString ရဲ့ Data Source မှာ (LocalDb) MSSQLLocalDB လို့သတ်မှတ်ထားတယ်။  LocalDb ဆိုတာ SQL Server Express ထဲက Light Database Engine တစ်ခုပဲဖြစ်တယ်။  Visual Studio Environment မှာအလွယ်တကူ အသုံးပြုလို့ရတဲ့ Database Engine ဖြစ်တယ်။ (မှတ်ချက်။ တကယ်အလုပ်လုပ်တဲ့ Production Environment မှာဆိုရင်တော့ SQL Server ကိုပြန်ပြောင်းပေးရမှာဖြစ်တယ်။)  AttachDBFilename မှာ Database File သိမ်းမယ့်နေရာနှင့် အမည်ကို ညွှန်းပေးထားတယ်။  အမည်ကို Employee ပေးထားပြီး နေရာက Project ထဲက App_Data ဆိုတဲ့ Folder နေရာပဲဖြစ်တယ်။ Initial Catalog မှာ Database အမည်ကိုလည်း EmployeeDB ဆိုပြီး နာမည်ပေးလိုက်တယ်။  လောလောဆယ် Application ထဲမှာ Database ရှိမှာမဟုတ်သေးဘူး။ Application ကို Run မှသာ Project ထဲက App_Data Folder ထဲမှာ .mdf နှင့် Database တစ်ခုကို ဖန်တီးပေးမှာဖြစ်တယ်။ လောလောဆယ် Run လို့ရမှာမဟုတ်သေးဘူး ဘာလို့လည်းဆိုတော့ Project မှာ View နှင့် Controller တွေမရှိသေးတာကြောင့်ဖြစ်တယ်။

Controller နှင့် View တွေဖန်တီးခြင်း
Controller Folder မှာ Right Click နှိပ်ပြီး Add မှ Controller ကို Click နှိပ်လိုက်ရင် Dialog Box တစ်ခုထွက်လာမယ်။  Empty Controller ကိုရွေးလိုက်မယ် ပြီးရင် HomeController လို့အမည်ပေးလိုက်မယ်။


ပြီးရင် View() ပေါ်မှာ Right Click နှိပ်ပြီး Add View နှင့် View တစ်ခုထည့်လိုက်မယ်။  View name မှာ Index လို့ပေးမယ်။  Template မှာ Empty (without model) ကိုရွေးပြီး Add ကိုနှိပ်လိုက်ရင် အခုလို View နှင့် Shared View တွေ့ရလာလိမ့်မယ်။

Index.cshtml ထဲမှာလည်း အခုလိုတွေ့ရလိမ့်မယ်။


Index ကို Home လို့ပြောင်းလိုက်မယ်။  ပြီးရင် Shared အောက်က _Layout.cshtml ထဲမှာ Html ActionLink တစ်ခုထည့်လိုက်မယ်။  Home စာသားနှင့် Home Controller ထဲက Index ဆိုတဲ့ ActionResult ကိုအလုပ်လုပ်မှာဖြစ်တယ်။


ပြီးရင်နောက်ထပ် Controller တစ်ခုကို Controller ပေါ်မှာ Right Click နှိပ်ပြီး ထပ်ထည့်လိုက်မယ်။ 


ဒီ Controller ကိုတော့ Entity Framework ကိုအသုံးပြုမယ့် Controller အမျိုးအစားကိုရွေးပေးရမယ်။


Model class မှာ Employee ကိုရွေးမယ် Data context class မှာ EmployeeContext ကိုရွေးမယ်။  ပြီးရင် Add နှင့်ထည့်လိုက်တယ်။  အားလုံးပြီးသွားတဲ့အခါ Employees View နှင့် Code တွေကို အလိုလျှောက် ဖန်တီးပေးလိမ့်မယ်။



တကယ်တော့ ဒီ Code တွေဟာ Auto Generate လုပ်ပေးသွားတာ ဖြစ်တယ်။  Employee View ကို Link လုပ်ဖို့ _Layout.cshtml ထဲက ActionLink အောက်မှာ နောက်ထပ် ActionLink တစ်ခုထပ်ထည့်လိုက်မယ်။

<li>@Html.ActionLink("Employee", "Index", "Employees")</li>

ပြီးရင် Employee Controller ထဲက Code တွေထဲကတစ်ချို့ Code တွေကို ကြည့်မယ်ဆိုရင်...

private EmployeeContext db = new EmployeeContext();

Controller တစ်ခုထဲမှာ Database ထဲက Data တွေနှင့်ပတ်သက်တဲ့အပိုင်းတွေကို ဆောင်ရွက်ချင်တဲ့အခါမှာ DataAccessLayer ထဲမှာ ရေးထားတဲ့ EmployeeContext Class ကိုခေါ်ပြီးအခုလို အသုံးပြုရတာဖြစ်တယ်။

if (id == null)
{
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}

Employee Id က null ဖြစ်ခဲ့ရင် ဆက်လုပ်လို့မရတဲ့အတွက် HttpStatusCodeResult တစ်ခုကို return ပြန်ပေးတာ ဖြစ်တယ်။  HttpStatusCodeResult instance ထဲမှာ HttpStatusCode parameter ထည့်ပေးရမယ်။ HttpStatusCode ထဲမှာ enum values တွေပါတယ်။  လက်ရှိ Code ထဲမှာတော့ BadRequest ဆိုတဲ့ enum value ကိုအသုံးပြုထားတယ်။

ValidateAntiForgeryToken
Create, Edit, DeleteConfirmed စတဲ့ Post Action (၃)ခုမှာ အသုံးပြုထားတဲ့ Attribute တစ်ခုဖြစ်တယ်။ Data တွေပါတဲ့ Form Request တစ်ခုကို Server ဆီပို့တဲ့အခါမှာ မှန်ကန်မှုမရှိတဲ့ Data တွေကိုလက်မခံပဲ ကာကွယ်ပေးတဲ့ Attribute တစ်ခုပဲဖြစ်တယ်။  အဓိကကာကွယ်ပေးတာက Cross-Site Attack လို့ခေါ်တဲ့ Script တွေကို Data တွေနှင့်အတူထည့်သွင်းပြီး Website ကိုတိုက်ခိုက်ခြင်းတွေကိုပဲဖြစ်တယ်။

Bind Attribute
Edit နှင့် Create Post Action တွေမှာ Bind Attribute ကိုအသုံးပြုထားပြီး သူ့နောက်မှာ Employee Model သတ်မှတ်ထားတယ်။  Model ထဲက အသုံးပြုချင်တဲ့ Property တွေကို သတ်မှတ်ပြီးအသုံးပြုတာပဲဖြစ်တယ်။

Record ရှာဖွေခြင်း
Table တစ်ခုထဲမှာရှိတဲ့ Record တွေကိုရှာဖွေတဲ့အခါမှာ Find နှင့်ရှာရပါတယ်။  Primary Key သတ်မှတ်ထားတဲ့ Field ကို Find ထဲမှာထည့်ပေးရမှာဖြစ်ပါတယ်။

Employee employee = db.Employees.Find(id);

Record အသစ်ထည့်ခြင်း
Table ထဲကို Record တွေထည့်တဲ့အခါမှာ Add နှင့်ထည့်ပါတယ်။  ပြီးရင်တော့ SaveChanges နှင့် သိမ်းပေးရပါတယ်။

db.Employees.Add(employee);
db.SaveChanges();

Record ဖျက်ခြင်း
Table ထဲမှာရှိပြီးသား Record တစ်ခုကို ဖျက်ချင်တဲ့အခါမှာ၊ ဖျက်ချင်တဲ့ Record ကိုရှာဖွေပြီး Remove နှင့် ဖျက်နိုင်ပါတယ်။  ပြီးသွားရင်တော့ SaveChanges နှင့်ပြန်သိမ်းပေးရပါတယ်။

db.Employees.Remove(employee);
db.SaveChanges();

Entity Framework နှင့် Database ကိုကိုင်တွယ်ပြီး အလုပ်လုပ်တဲ့အခါမှာ Code အများကြီးရေးစရာ မလိုတဲ့အတွက် အချိန်ကုန်သက်သာသွားပါတယ်။

Application ကို Run ခြင်း
Application ကို စတင် Run လိုက်တဲ့အခါမှာ Home Controller ရဲ့ Index View အရင်ပေါ်လာပါလိမ့်မယ်။

Employee ကို သွားလိုက်ရင် Employee Controller ရဲ့ Index ကိုအလုပ်လုပ်တဲ့အခါမှာ Employee List ကို View ထဲမှာပြထားတာဖြစ်တဲ့အတွက် Table တစ်ခုအနေနှင့် ပြပေးမှာဖြစ်တယ်။

Employee Controller ကို စတင်အလုပ်လုပ်တာနှင့် Database ဖိုင်ကို Project ထဲက App_Data Folder ထဲမှာ ဖန်တီးပေးမှာဖြစ်ပါတယ်။


Create New နှင့် Employee Record အသစ်တစ်ခုထည့်ကြည့်လိုက်တယ်။

Create ကို Click နှိပ်လိုက်တယ်...

Employee Record တစ်ခုဝင်သွားတယ်။  Table ရဲ့ ညာဘက်မှာ Edit, Detail နှင့် Delete ဆိုတဲ့ Links တွေပေါ်လာမယ်။   ထည့်လိုက်တဲ့ Record ဟာ Database ထဲကိုရောက်မရောက် စစ်ကြည့်ချင်တယ်ဆိုရင် SQL Server Object Explorer မှတဆင့် Table ထဲမှာ စစ်ကြည့်လို့ရတယ်။


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

Jan 31, 2017

'Ajax' does not exist in the namespace 'System.Web.Mvc' Error ဖြစ်ခြင်း

Ko Sagaing
ASP.Net MVC Empty Project တစ်ခုကိုယူလိုက်တဲ့အခါ Project ထဲမှာပါလာတဲ့ System.Web.Mvc Assembly ဖိုင်ဟာ Old Version ဖြစ်နေခဲ့ရင် Application ကို Run လိုက်တဲ့အခါမှာ အောက်ပါ Error ဖြစ်လေ့ရှိပါတယ်။  အကယ်၍ Empty Project မဟုတ်ပဲ MVC Web Application ဆိုရင်တော့ Error မဖြစ်ပါဘူး။  ဘာလို့လည်းဆိုတာ့ Assembly File ဟာ Updated ဖြစ်တဲ့ File ပါလာလို့ပါ။

ဖြေရှင်းနည်း (၁)
၁) Manage NuGets Package for Solutions ကိုသွားပါ။
၂) Microsoft ASP.NET MVC Package ကို Install လုပ်ပေးလိုက်ပါ။

ဖြေရှင်းနည်း (၂)
၁) Package Manager Console ကိုသွားပါ။
၂) Uninstall-Package Microsoft.AspNet.Mvc Command နှင့် လက်ရှိရှိနေတဲ့ Assembly File ကို Uninstall လုပ်လိုက်ပါ။
၃) Install-Package Microsoft.AspNet.Mvc Command နှင့် Install ပြန်လုပ်လိုက်ပါ။

အဲ့ဒီနည်းလမ်း (၂) ခုထဲကတစ်နည်းနည်းနှင့် ဖြေရှင်းပြီးသွားရင် MVC Assembly File Update ဖြစ်သွားတဲ့အတွက် Error ရှင်းသွားပါလိမ့်မယ်။

Jan 30, 2017

စိတ်အမာရွတ်

Ko Sagaing
လူတစ်ယောက်ရဲ့ ရုပ်ပိုင်းဆိုင်ရာ ဖြူတာ၊ မဲတာ၊ ဝတာ၊ ပိန်တာ ကို အမြင်အားဖြင့်ခွဲခြား သိနိုင်ပေမယ့်၊ စိတ်ပိုင်းဆိုင်ရာ နှင့်ပတ်သက်ပြီး ခွဲခြားသိနိုင်ဖို့ ခက်ခဲတယ်။  လူတစ်ယောက်ရဲ့ စိတ်ပိုင်းဆိုင်ရာကို အခြားသူတစ်ယောက်က ဝေဖန်တဲ့အခါမှာ ဝေဖန်တဲ့လူမှာလည်း သူဝေဖန်လိုက်တဲ့လူနှင့် တူညီတဲ့ စိတ်အခံရှိနေတတ်တယ်လို့ ယူဆတယ်။ ဝေဖန်တယ်ဆိုတာ အပြုသဘောမဆောင်တဲ့ ဝေဖန်ခြင်းမျိုးကိုပြောတာပါ။  တစ်ချို့လည်း မိမိကိုယ်ကို၊ သူတစ်ပါး သနားအောင်ဖြစ်ဖြစ်၊ အထင်ကြီးအောင်ဖြစ်ဖြစ်၊ စိတ်ကသိကအောင့်ဖြစ်အောင် ဖြစ်ဖြစ်၊ အမြဲလိုလို ပြုမူ၊ ပြောဆိုလေ့ရှိကြတယ်။  ဒါမျိုးတွေကို ဖေ့ဘွတ်ထဲက အချို့ပို့စ်တွေ၊ ကွန့်မန့်တွေကိုကြည့်ရင်တွေ့နိုင်တယ်။  ဖေ့ဘွတ်ထဲမှာ မိမိအကြောင်းနှင့်ပတ်သက်ပြီး ပြောဆိုတာမျိုးတွေဖြစ်တဲ့ "ငါ ဘယ်လိုစားတယ်၊ ငါ ဘယ်လိုနေတယ်၊ ငါ ဘယ်လိုပျော်တယ်၊ ငါ ဘယ်သူတွေနှင့် ပေါင်းသင်းနေတယ်၊ ငါ ရိုးသားတယ်၊ ငါ မနာလိုမဖြစ်ဘူး" စသည့်ဖြင့် မြင်တွေ့နိုင်တယ်။ ငယ်စဉ်က မိသားစုမှာငွေကြေး ချို့တဲ့ခဲ့ရင်၊ တစ်ပါးသူအထင်သေးမှာ ကြောက်တဲ့စိတ်၊  မနာလိုစိတ်၊ အမြင်နှင့် အထင်ကြီးစိတ်၊ မိမိကို သနားစေချင်တဲ့စိတ်၊ ကြွားဝါချင်တဲ့စိတ် စသည်ဖြင့် အနည်းအများ ရှိခဲ့ကြတယ်။  ငွေကြေး ချမ်းသာခဲ့ရင် (သို့) အသင့်အတင့်ရှိခဲ့ရင်လည်း တစ်ပါးသူကို အလွယ်တကူ အထင်သေးစိတ်၊ မောက်မာပြီး မာနကြီးတဲ့စိတ်၊ အရာရာကို ပေါ့ပေါ့တန်တန် သဘောထားတဲ့စိတ်၊ အလိုလောဘစိတ် စသည်ဖြင့် အနည်းအများ ရှိခဲ့ကြတယ်။ ဒါတွေဟာ တကယ်တော့ ပတ်ဝန်းကျင်ကြောင့် မိမိစိတ်အခံမှာ ကူးစပ်ခဲ့မှုတွေ၊ စိတ်ဒဏ်ရာတွေနှင့် ဗီဇတွေကြောင့်လို့ ယူဆတယ်။  ကျွန်တော်တို့ လူမှုပတ်ဝန်းကျင် ဆိုတာကလည်း မိမိတို့ပြောဆို၊ ပြုမူနေတဲ့ အချို့အရာတွေဟာ ငယ်ရွယ်သူတွေ အတုယူသွားနိုင်လား၊ အခြားသူတွေ စိတ်ဒဏ်ရာရစေနိုင်လား ဆိုတာမျိုးတွေကို သူတို့ကိုယ်တိုင်တောင် မသိတဲ့လူမျိုးတွေ အများအပြားတွေ့ဖူးတယ်။  ပြင်ပရုပ်ပိုင်းဆိုင်ရာ ထိခိုက်မိလို့ ရရှိခဲ့တဲ့ ဒဏ်ရာတွေကို မြင်နိုင်ပေမယ့်၊ စိတ်ပိုင်းဆိုင်ရာရရှိခဲ့တဲ့ ဒဏ်ရာတွေကို မမြင်နိုင်သလို မိမိတို့ကိုယ်တိုင်တောင် မသိခဲ့တာမျိုးတွေလည်း ရှိတယ်။  တကယ်တော့ ရုပ်ပိုင်းဆိုင်ရာပဲဖြစ်ဖြစ်၊ စိတ်ပိုင်းဆိုင်ရာပဲဖြစ်ဖြစ် ဒီဒဏ်ရာတွေဟာ လူရယ်လို့ဖြစ်လာရင် ကလေးအရွယ်ကစပြီး၊ အသက်ကြီးတဲ့အချိန်အထိ အချိန်မရွေးဖြစ်နိုင်တယ်။  ကလေးအရွယ်မှာ ဒီဒဏ်ရာတွေမဖြစ်ဖို့ ဘိုးဘွား၊ မိဘ၊ ဦးလေး၊ အဒေါ်၊ ညီကိုမောင်နှစ်မ စတာတွေမှာ အဓိကတာဝန်ရှိတယ်။  ငယ်ရွယ်စဉ်မှာပတ်ဝန်းကျင်က ပုံသွင်းပေးလိုက်တဲ့ စိတ်ဓါတ်အခံတွေ၊ ကြုံတွေ့ခဲ့ရတဲ့ စိတ်ဒဏ်ရာတွေနှင့် ဗီဇတွေပေါ်မူတည်ပြီး အသက်ကြီးလာတဲ့အခါ ပတ်ဝန်းကျင်ကို ပြုမူဆက်ဆံလေ့ရှိကြတယ်။  အဲ့ဒါကြောင့် လူအများအမြင်မှာ၊ ရိုင်းတယ်၊ ဆိုးတယ်၊ ယဉ်ကျေးတယ်၊ လိမ္မာတယ်၊ မနာလိုဖြစ်တယ်၊ မောက်မာတယ်၊ ကြွားဝါတယ် စသည်ဖြင့် ဖြစ်လာခဲ့တယ်။ အဲ့ဒါကြောင့် ပတ်ဝန်းကျင်ကောင်းဖို့ အရေးကြီးတယ်လို့ ပြောလေ့ရှိကြသလို၊ ဗီဇကောင်းဖို့လည်းလိုတယ်လို့ ပြောလေ့ရှိကြတယ်။  ဗီဇကောင်းခဲ့ရင် ပတ်ဝန်းကျင်က အတွေ့အကြုံနှင့် ကြိုးစားအားထုတ်မှုတွေကနေ အသိ၊အမြင်တွေ ရနိုင်တယ်။ ဗီဇလည်းကောင်းတယ် သို့သော် ပတ်ဝန်းကျင်က အတွေ့အကြုံတွေကို သင်ယူရမှန်းလည်းမသိခဲ့ဘူး၊ ကြိုးစားအားထုတ်မှုလည်း မရှိခဲ့ဘူးဆိုရင် လူတစ်ယောက်ရဲ့ အကျင့်စရိုက်ဟာ ပြောင်းမှာမဟုတ်သလို၊ ဗီဇမကောင်းခဲ့ရင်လည်း ထိုနည်းတူစွာပဲ ပြောင်းလဲမှာမဟုတ်ဘူး။ ဘယ်သူပဲပြောင်းလဲဖို့ပြောပြော ပြောင်းလဲဖို့ခဲယဉ်းတယ်။  အသက်ကြီးတဲ့အချိန်မှာ ကြုံတွေ့ရမယ့် ပြဿနာ၊ အရေးကိစ္စတွေဟာ ငယ်စဉ်ကထက် ပိုကြီးမားတဲ့အတွက် စိတ်ဒဏ်ရာရခဲ့ရင်လည်း ပိုကြီးမားနိုင်တယ်၊ စိတ်အမာရွတ်လည်း ကြီးကြီးမားမား ကျန်ခဲ့နိင်တယ်။ ပြဿနာ၊ အရေးကိစ္စ ဆိုတာမျိုးကလည်း မမျှော်လင့်ပဲ ရောက်လာလေ့တယ်။  ရောက်လာခဲ့ရင်လည်း စိတ်ဒဏ်ရာကြောင့်၊ ရုပ်မှာဖြစ်ဖြစ်၊ ရုပ်ဒဏ်ရာကြောင့် စိတ်မှာပါဖြစ်ဖြစ် ထပ်ဆင့် ဒဏ်ရာရသွားတာမျိုးတွေလည်း ရှိတယ်။ ဘဝအချိုးအကွေ့မှာ ကြီးမားတဲ့ ပြဿနာ၊ အရေးကိစ္စတွေကြုံတွေ့ဖူးတဲ့လူတိုင်း ခဏတော့ ယိုင်နဲ့သွားကြတယ်။  ပြန်တည့်မတ်ပြီး ရှေ့ဆက်သွားနေစေဦးတော့ အမာရွတ်ကတော့ ကျန်နေဆဲပဲ။  ဒီအမာရွတ်တွေဟာ နောင်ဖြစ်လာနိုင်တဲ့ စိတ်ဒဏ်ရာတွေကို ကာကွယ်ပေးနိုင်တဲ့ တံတိုင်းတွေလိုပဲဖြစ်တယ်။  ဒီတံတိုင်းတွေကြောင့်ပဲ လောကဓံဆိုတာကို ကြံ့ကြံ့ခံနိုင်လာတာမျိုးတွေ ဖြစ်လာကြတယ်။ တကယ့်စစ်မှန်တဲ့ ကိုယ်ချင်းစာစိတ်ဆိုတာ စိတ်အမာရွတ်ကျန်ခဲ့တဲ့သူအချင်းချင်းမှာမှ ရှိနိုင်တာမျိုးပါ။

Jan 23, 2017

Cloud ဆိုတာဘာလဲ။

Ko Sagaing
Cloud ဆိုတာ တကယ်တော့ Internet ကို ခေတ်ဆန်ဆန် တင်စားသုံးနှုံးခေါ်ဆိုတဲ့ ယေဘူယ စကားလုံးတစ်လုံးပဲ ဖြစ်ပါတယ်။  Internet ထဲမှာယခင်က Website တွေ၊ သာမာန် Email တွေသာ ကျယ်ကျယ်ပြန့်ပြန့် သုံးစွဲနိုင်ခဲ့ကြပေမယ့်။ နောက်ပိုင်းမှာ ဓါတ်ပုံ၊ သီချင်း၊ ဗွီဒီယို၊ အချက်အလက် စသည့် ဖိုင်တွေပါ သိမ်းဆည်းနိုင်ခဲ့ကြတယ်။ အဲ့ဒီနည်းပညာတွေပေါ်လာတဲ့ အချိန်ကစပြီး Cloud ဆိုတဲ့စကားလုံးလည်း တွင်ကျယ်လာခဲ့တယ်။ Cloud Computing, Cloud Storage, Cloud Server, Cloud Application စသည်ဖြင့် နည်းပညာအသစ်တွေနှင့်စကားလုံးအသစ်တွေလည်း ပေါ်ထွက်လာခဲ့တယ်။ အခုဆိုရင် Cloud ထဲမှာ Storage, Data Processing, Sharing, Communication, Infrastructure စတဲ့အလုပ်တွေကိုပါ လုပ်ဆောင်နိုင်နေပြီဖြစ်တယ်။

Cloud Computing
ကွန်ပျူတာတစ်လုံးကို အသုံးပြုပြီး လုပ်ဆောင်နိုင်တဲ့ လုပ်ငန်းတွေကို Internet Website တွေကနေအကုန်လုံး လုပ်ဆောင်နိုင်တဲ့ နည်းပညာဖြစ်ပါတယ်။  ဖုန်း (သို့) ကွန်ပျူတာကို အင်တာနက်ချိတ်ဆက်ထားရန်သာလိုအပ်ပြီး၊ ကွန်ပျူတာမှာလည်း Operating System (ဥပမာ Windows) နှင့် Browser (ဥပမာ Chrome) ပဲအဓိက ရှိရန်လိုအပ်ပါတယ်။  Cloud Computing ထဲမှာအသုံးပြုနိုင်တဲ့ Applications တွေကို Cloud Application လို့ခေါ်ပါတယ်။  အဲ့ဒီ Application တွေကို အင်တာနက်အသုံးပြုသူတွေအတွက် IT ကုမ္ပဏီတွေက ဝန်ဆောင်မှုပေးထားတာဖြစ်ပါတယ်။  Cloud Computing ထဲက ဝန်ဆောင်မှုတွေကို အဓိက Model (၃)မျိုးနှင့် ခွဲခြားသတ်မှတ်ထားပါတယ်။  အောက်ဖေါ်ပြပါပုံထဲမှာ Cloud Computing ထဲက ဝန်ဆောင်မှု Model (၃)မျိုးနှင့် User ပုံစံ (၃)မျိုးကို တွေ့နိုင်ပါတယ်။


Software as a Service (SaaS)

Computer တစ်လုံးမှာမည်သည့် Application ပဲသုံးချင်သုံးချင် Install မလုပ်ပဲသုံးလို့မရနိုင်ပါဘူး။  Cloud Computing မှာတော့ Install လုပ်စရာမလိုပဲ Cloud ထဲက Application တစ်ခုကို Browser ကနေ အသုံးပြုလို့ရတဲ့ ဝန်ဆောင်မှု Model ကို SaaS လို့ခေါ်ပါတယ်။  SaaS ဟာ တကယ်တော့ End User လို့ခေါ်တဲ့ Application အသုံးပြုမယ့်သူတွေအတွက် ဖြစ်ပါတယ်။ SaaS မှာဖိုင်ကို Storage လုပ်နိုင်တဲ့ Website တွေလည်းပါဝင်ပါတယ်။  ဥပမာဆိုရင် Google Drive, DropBox, Box, iCloud, OneDrive, Mega, pCloud စသည့် Cloud Storage Website တွေဖြစ်ပါတယ်။  Cloud Storage ထဲမှာ ဖိုင်တွေသိမ်းထားခြင်းအားဖြင့် ဘယ်နေရာရောက်ရောက် ဖုန်း (သို့) ကွန်ပျူတာကနေ Cloud Storage ထဲကဖိုင်ကိုဖွင့်ပြီး လိုအပ်တာကို အလွယ်တကူ လုပ်ဆောင်နိုင်တယ်။  (မှတ်ချက်။ ဖုန်း (သို့) ကွန်ပျူတာထဲက ဖိုင်နှင့် Cloud Storage ထဲကဖိုင် Sync (တပြေးတည်းအတူတူ) ဖြစ်အောင် သက်ဆိုင်ရာ Application (ဥပမာ DropBox) ကို Install လုပ်ထားပေးဖို့ လိုအပ်ပါတယ်။)။ Cloud Storage နည်းပညာကြောင့် ဖိုင်တွေကို Cloud ထဲမှာသိမ်းလာကြတဲ့အတွက် USB Stick အသုံးပြုမှုလည်း နည်းသွားခဲ့တယ်။  Cloud Storage ထဲက ဖိုင်တွေကို အလွယ်တကူ Share နိုင်တယ်၊  Stick ကဲ့သို့ပျောက်တာ၊ ပျက်စီးတာမျိုး မဖြစ်နိုင်ဘူး၊ ပိုပြီးလုံခြုံစိတ်ချရတယ်၊ စတာတွေအပြင် USB Stick တစ်ချောင်းထက်ပိုတဲ့ ပမာဏကို Register လုပ်ပြီး အခမဲ့ အသုံးပြုနိုင်တယ်။  ဥပမာ Mega 50GB အထိ၊ Google Drive 15GB အထိ၊ pCloud 10GB အထိ၊ MediaFire 10GB အထိ၊ Box 10GB အထိ Register လုပ်ပြီးအခမဲ့ အသုံးပြုနိုင်ပါတယ်။  အခြား Storage Website တွေလည်း အများကြီးရှိပါသေးတယ်။  တကယ်တော့ ဒီသိမ်းဆည်းနိုင်တဲ့ ပမာဏဟာ တစ်ကိုယ်ရေ အသုံးပြုဖို့အတွက် လုံလောက်မှုရှိပေမယ့်၊ ဒီထက်ပိုသုံးချင်ရင် (သို့) အဖွဲ့အစည်းတစ်ခုမှာ အသုံးပြုမယ်ဆိုရင် ကျသင့်ငွေပေးချေပြီး အသုံးပြုနိုင်ပါတယ်။  SaaS မှာ ရုံးလုပ်ငန်းတွေအတွက် အသုံးပြုနိုင်တဲ့ Application တွေလည်းရှိပါတယ်။ ​ ဥပမာ Google က Office တွေအတွက် ရည်ရွယ်ပြီး ထုတ်လုပ်ထားတဲ့ Application တစ်ခုဖြစ်တဲ့ G Suit ဆိုတာရှိပါတယ်။ G Suit ထဲမှာ ကျွန်တော်တို့အသုံးပြုနေကြ Gmail အပြင် Microsoft Office ကဲ့သို့ Application တွေဖြစ်တဲ့ (DOCS, SHEETS, FORMS, SLIDE, SITES ) စတာတွေကို စုပေါင်းထားတဲ့ Office Suit တစ်ခုဖြစ်ပါတယ်။  G Suit ကို အသုံးပြုဖို့ User တစ်ယောက်အတွက် တစ်နှစ်ကို USD50 ကျသင့်မှာ ဖြစ်ပါတယ်။  Microsoft မှာလည်း Office Applications တွေနှင့် Skype, OneDrive စတာတွေကိုပေါင်းစပ်ထားတဲ့ Office 365 ဆိုတာရှိပါတယ်။  ၄င်းကတော့ တစ်လကို အနည်းဆုံး USD8.25 ကျသင့်မှာဖြစ်ပါတယ်။ Micrsoft ရဲ့ Office 365 ကိုမြန်မာနိုင်ငံမှာလည်း တရားဝင်အသုံးပြုနိုင်ပြီ ဖြစ်ပါတယ်။  အခုဆိုရင် Application တော်တော်များများကို Cloud ကတဆင့်အသုံးပြုနိုင်တာကြောင့် ကွန်ပျူတာမှာ Install မလုပ်လည်းရတဲ့အတွက် အခြားကုန်ကျစရိတ်တွေလည်း သက်သာသွားနိုင်သလို၊ Software ကုမ္ပဏီတွေအနေနှင့်လည်း Pirate Software တွေကိုကာကွယ်ပြီးသားလည်း ဖြစ်သွားပါတယ်။

Platform as a Service (PaaS)

PaaS ဆိုတာ Application Developer တွေနှင့်သက်ဆိုင်တဲ့ ဝန်ဆောင်မှု Model ပုံစံပဲဖြစ်ပါတယ်။  Developer အတွက်လိုအပ်တဲ့ Resource တွေဖြစ်တဲ့ Database Engine တွေ, Scripting Framework တွေ၊ Deployment လုပ်နိုင်တဲ့ Service တွေ၊ Distribute Version Control System တွေ စသည်ဖြင့် Application Development နှင့် Deployment လုပ်တဲ့အခါမှာလိုအပ်တဲ့ Tools တွေကို အကုန်ရနိုင်အောင် ဖန်တီးပေးထားတဲ့ Platform တွေပဲဖြစ်ပါတယ်။  ဒီ Platform တွေထဲမှာ Developer တွေလိုအပ်တဲ့ အလုပ်လုပ်နိုင်ဖို့သက်ဆိုင်ရာ Client Software ကိုစက်ထဲမှာ Install လုပ်ပေးဖို့တော့လိုပါတယ်။  ဥပမာ Cloud ထဲက MySQL Server ကိုလှမ်းအသုံးပြုနိုင်ဖို့ MySQL Workbench (သို့) Toad ကဲ့သို့သော Software လိုပါတယ်။ ဥပမာအနေနှင့် PaaS Model တွေကတော့ Heroku, Google App Engine, Red Hat's OpenShift, Joyent Accelerator စတာတွေပဲဖြစ်ပါတယ်။  Heroku ကို Register လုပ်ပြီး Developer တစ်ယောက်စာအခမဲ့ စမ်းသပ်အသုံးပြုခွင့်ရနိုင်ပါတယ်။  Google App Engine ကိုလည်း Google Account ရှိရင် အခမဲ့အသုံးပြုနိုင်တယ်။  သို့သော် Credit Card အချက်အလက်တွေတော့ ထည့်ပေးဖို့လိုပါတယ်။

Infrastructure as a Service (IaaS)

IaaS ဆိုတာ Network သမားတွေနှင့်သက်ဆိုင်တဲ့ Cloud ထဲက ဝန်ဆောင်မှု Model ပုံစံဖြစ်ပါတယ်။  Cloud ထဲမှာ Server တွေ၊ Storage တွေ၊ Networking နှင့်သက်ဆိုင်တာတွေ၊ စတာတွေကို မိမိလိုသလို သတ်မှတ်ပြီး အဖွဲ့အစည်းတစ်ခုအတွက် Infrastructure ကို Cloud ထဲမှာ တည်ဆောက်နိုင်တဲ့ ဝန်ဆောင်မှု Model ပုံစံဖြစ်ပါတယ်။  Cloud ထဲမှာ တည်ဆောက်တာဖြစ်တာကြောင့် အခြားကုန်ကျစရိတ်တွေလည်း သက်သာသွားနိုင်ပါတယ်။ IaaS နှင့် PaaS နှစ်မျိုးပေါင်းစပ်ထားတဲ့ Model ပုံစံကို  Amazon AWS နှင့် Microsoft Azure မှာတွေ့နိုင်ပါတယ်။  ဥပမာ Amazon AWS မှာဆိုရင် Developer တွေအတွက်လိုအပ်တာတွေ ထည့်သွင်းပေးထားသလို Network သမားတွေအတွက်လည်း Amazon EC2 ဆိုတာထည့်သွင်းထားပါတယ်။ Amazon EC2 ထဲမှာ Virtual Server တစ်လုံးကို မိမိစိတ်ကြိုက် Hardware သတ်မှတ်ချက်နှင့် OS ကိုရွေးချယ်ပြီး တည်ဆောက်လို့ရပါတယ်။  Virtual Server မှာလည်း Network Setting တွေသတ်မှတ်နိုင်ပါတယ်။​ Client တွေအတွက် Virtual Desktop တွေလည်း ဖန်တီးနိုင်ပါတယ်။ Amazon AWS ကို Register လုပ်ပြီး (၁၂)လ အခမဲ့သုံးစွဲနိုင်ပါတယ်။  Register လုပ်တဲ့အခါမှာ Credit Card နှင့်ပတ်သက်တဲ့အချက်အလက်တွေ ထည့်သွင်းပေးဖို့လိုအပ်ပါတယ်။  Microsoft Azure ကိုလည်း Register လုပ်ပြီး ရက်(၃၀) အခမဲ့စမ်းသပ်သုံးစွဲလို့ရပါတယ်။  အခြား Provider တွေဖြစ်တဲ့ Google Compute EngineSoftLayerIBM Cloudburst, Rackspace, HPE ConvergedSystem စသည်ဖြင့် နောက်ထပ် IaaS Provider တွေအများကြီးရှိနိုင်ပါတယ်။  ဒီ Provider တွေသတ်မှတ်ထားတဲ့ စျေးနှုံးတွေက ကျွန်တော်တို့ပြောလေ့ရှိတဲ့ စကားတစ်ခွန်းလို ကြိုက်သလောက်စား ကျသလောက်ရှင်း ဆိုတာမျိုး၊ မိမိသုံးတဲ့ပမာဏပေါ်မူတည်ပြီး နာရီ(သို့)လ အလိုက် စျေးနှုံးသတ်မှတ်ထားတာ ဖြစ်ပါတယ်။  Amazon AWS ရဲ့စျေးနှုံးကို ဒီနေရာမှာ ကြည့်လို့ရပါတယ်။  Microsoft Azure ရဲ့စျေးနှုံးကို ဒီနေရာမှာ ကြည့်လို့ရပါတယ်။ စျေးသက်သက်သာသာနှင့် Virtual Server သီးသန့်သုံးချင်ရင်တော့ Amazon Lightsail ဆိုတာရှိတယ်။ နောက်ပြီး DigitalOcean ဆိုတာလည်း နာမည်ကြီးတယ်။ Amazon Lightsail မရှိခင်ကတည်းက DigitalOcean ဆိုတာရှိခဲ့တာဖြစ်တယ်။ Linode ဆိုတာလည်းရှိတယ်။  အခြားကျန်တာတွေလည်း အများကြီးရှိနိုင်ပါသေးတယ်။

Amazon AWS ထဲမှာ Virtual Private Server တစ်ခုဖန်တီးခြင်း
Virtual Server တစ်ခုတည်ဆောက်ဖို့ Amazon AWS Account တစ်ခုရှိဖို့လိုပါတယ်။  ကျွန်တော်က Network သမားမဟုတ်တဲ့အတွက် Network Setting တွေ မသတ်မှတ်ပဲ သာမာန် Virtual Server တစ်ခုအနေနှင့် တည်ဆောက်ကြည့်တာဖြစ်ပါတယ်။

Amazon AWS ထဲကို Login ဝင်ပြီးသွားရင် Services တွေကို ပုံပါအတိုင်းတွေ့မြင်နိုင်ပါတယ်။  Compute ထဲက EC2 ကို Click နှိပ်လိုက်ပါ။

Click နှိပ်ပြီးသွားရင် အောက်ပါအတိုင်း EC2 Dashboard ကိုတွေ့ရပါလိမ့်မယ်။
လက်ရှိကျွန်တော့် Account ထဲမှာ Server Instances ၂ခုရှိပြီး Run ထားတာကြောင့် Running Instance မှာ 2 ဆိုပြီးတွေ့နိုင်ပါတယ်။  အခုကျွန်တော် Server Instance တစ်ခုတည်ဆောက်မှာဖြစ်တဲ့အတွက် Launch Instance ကို Click နှိပ်လိုက်ရင် အောက်ပါအတိုင်းမြင်တွေ့ရမှာဖြစ်ပါတယ်။
ဒီအဆင့်မှာAmazon Machine Image လို့ခေါ်တဲ့ AMI ကိုရွေးပေးရမှာဖြစ်ပါတယ်။  Windows Server တွေလည်းရှိပါတယ်။ Microsoft Windows Server 2016 Base ကိုရွေးလိုက်ပါတယ်။ AMI ရွေးပြီးတာနှင့်အောက်ပါအတိုင်းမြင်တွေ့ရမှာဖြစ်ပါတယ်။
Instance Type ကိုရွေးချယ်ပေးရမှာဖြစ်ပါတယ်။  ရွေးလိုက်တဲ့အခါမှာ Hardware Specification တွေကိုလည်းမြင်ရမှာဖြစ်ပါတယ်။  ပြီးရင် Next: Configure Instance Details Click နှိပ်ပြီး ဆက်သွားလိုက်ပါတယ်။
ကျွန်တော်ကတော့ Next: Add Storage ကိုဆက်သွားလိုက်ပါတယ်။
အသုံးပြုချင်တဲ့ Storage ပမာဏကို ဒီအဆင့်မှာ သတ်မှတ်ပေးနိုင်ပါတယ်။  ပြီးရင် Next: Add Tags ကိုဆက်သွားလိုက်ပါတယ်။
Value ကို Windows Server 2016 လို့ပေးလိုက်ပါတယ်။  ပြီးတာနှင့် Next: Configure Security Group ကိုဆက်သွားလိုက်ပါတယ်။
ဒီအဆင့်မှာ လိုအပ်တဲ့ Security ကို Configure လုပ်ပေးရမှာဖြစ်ပါတယ်။  ပြီးတာနှင့် Revew and Launch ကိုဆက်သွားလိုက်ပါတယ်။  Review and Launch မှာ သတ်မှတ်ခဲ့တဲ့ Configuration တွေကို ပြန်ကြည့်ပြီးတာနှင့် Launch ကို Click နှိပ်လိုက်ရင် အောက်ပါအတိုင်း မြင်တွေ့ရမှာဖြစ်ပါတယ်။
ဒီအဆင့်မှာ Key Pair လုပ်ဖို့ Key တစ်ခုဖန်တီးပေးရန် Key pair name မှာနာမည်တစ်ခု ရိုက်ထည့်ပြီး Download Key Pair နှင့် Key Download လုပ်လိုက်ရင် ပေးလိုက်တဲ့နာမည်နှင့် .pem ဆိုတဲ့ ဖိုင်တစ်ဖိုင်ရပါလိမ့်မယ်။  ပြီးတာနှင့် Launch Instances ကို Click လုပ်လိုက်ရင် Instance တစ်ခုတည်ဆောက်နေတဲ့အကြောင်းကို ယခုလိုတွေ့ရမှာဖြစ်ပါတယ်။
The following instance launches have been initiated: i-0d1e1fbbb1bc6f205 ကိုနှိပ်လိုက်ရင် အောက်ပါအတိုင်းမြင်တွေ့ရမှာဖြစ်ပါတယ်။
Status Checks မှာ Initializing ဆိုပြီးတွေ့ရမှာဖြစ်ပါတယ်။ Initializing ပြီးတဲ့အထိ ခဏစောင့်ပြီးရင် 2/2 checkes passed ဆိုတဲ့ Status ပြောင်းသွားပြီဆိုရင် Instance ကို Connect လုပ်လို့ရပါပြီ။  Instance မှာ Select ပေးပြီး Connect ကို Click နှိပ်လိုက်ရင် အောက်ပါအတိုင်းမြင်တွေ့ရမှာဖြစ်ပါတယ်။
Get Password နှင့် Password ကို Download လုပ်ထားတဲ့ Key နှင့်ရယူပြီး Remote Desktop Protocol (RDP) ဖြင့် Server ထဲကိုဝင်ပြီး၊ မိမိလိုအပ်တဲ့အလုပ်တွေကို လုပ်နိုင်ပါပြီ။  Windows Server တွေ Connect လုပ်ရင် လွယ်ကူပေမယ့် အခြား Server တွေဖြစ်တဲ့ Linux ကို Connect လုပ်ရင် အနည်းငယ်ရှုပ်ထွေးနိုင်ပါတယ်။

Amazon AWS ထဲမှာ MySQL Server တစ်ခုဖန်တီးခြင်း
AWS ထဲမှာ RDBMS, NoSQL စသည့် Platform တွေနှင့် စိတ်ကြိုက် Database Engine ကိုအသုံးပြုပြီး Database Server တစ်ခုကို တည်ဆောက်လို့ရပါတယ်။  ဒီနမူနာကတော့ MySQL Server တစ်ခုကိုစမ်းပြီးတည်ဆောက်ထားတာဖြစ်ပါတယ်။  Amazon Services တွေထဲမှာ Database ထဲက RDS ကို Click နှိပ်လိုက်ရင် အောက်ပါအတိုင်း မြင်တွေ့ရမှာဖြစ်ပါတယ်။
Get Started Now ကို Click နှိပ်လိုက်ပါ။
Database Engine တွေမြင်ရပါလိမ့်မယ်။  MySQL ကိုရွေးလိုက်ပါ။
ဒီအဆင့်မှာ Production အတွက်လား၊ Development/Testing အတွက်လားဆိုတာကို ရွေးပေးရမှာဖြစ်ပါတယ်။  Dev/Test ကိုရွေးလိုက်ပြီး Next Step ကိုသွားလိုက်ပါ။
Database နှင့်ပတ်သက်ပြီး အသေးစိတ်အချက်အလက်တွေကို ဒီနေရာမှာ သတ်မှတ်ပေးရမှာဖြစ်ပါတယ်။ Version အပါအဝင် DB Instance Class မှာ CPU နှင့် RAM ကိုပါသတ်မှတ်နိုင်ပါတယ်။  ပြီးရင် နောက်ထပ် DB Instance နှင့်သက်ဆိုင်တဲ့ User Name, Password စတာတွေထည့်သွင်းပေးရပါမယ်။  အဲ့ဒါတွေပြီးသွားပြီဆိုရင် Next Step ကိုဆက်သွားလိုက်ပါ။

ဒီအဆင့်မှာလည်း Network နှင့်သက်ဆိုင်တာ၊ Database Name နှင့် Backup Plan စတာတွေသတ်မှတ်ပြီးတာနှင့် Launch DB Instance ကိုနှိပ်ပြီး DB Instance တစ်ခုကိုတည်ဆောက်လိုက်ပါ။  Instance ကိုတည်ဆောက်နေတဲ့ အချိန်မှာခဏစောင့်ပြီး View Instance ကိုနှိပ်လိုက်ရင် ယခုလိုတွေ့ရပါလိမ့်မယ်။
Status မှာ creating ဆိုရင် ခဏစောင့်ပြီး available ပြောင်းသွားရင် အသုံးပြုလို့ရပါပြီ။  အသုံးပြုနိုင်ဖို့ Engine Column က MySQL ဆိုတဲ့နာမည်ဘေးမှာ မြှားခေါင်းလေးကို Click နှိပ်လိုက်ရင် အခုလိုမြင်ရပါလိမ့်မယ်။
Endpoint နောက်က အပြာရောင်စာတန်းက Hostname ဖြစ်ပါတယ်။  အဲ့ဒီ Hostname ကို Copy ကူးပြီး စက်ထဲမှာ Install လုပ်ထားတဲ့ Database Management Software ကနေချိတ်ဆက်ပြီး အသုံးပြုနိုင်ပါပြီ။ အောက်ကပုံမှာ ကျွန်တော့်စက်ထဲမှာ ချိတ်ဆက်ထားတဲ့ပုံဖြစ်ပါတယ်။
တကယ်တော့ ကျွန်တော့်ရဲ့ AWS Account ထဲမှာ MySQL Server Instance နှစ်ခုတည်ဆောက်ထားတာဖြစ်တယ်။  တစ်ခုက Tokyo (Japan) မှာဖြစ်ပြီး၊ နောက်တစ်ခု Singapore မှာ ဖြစ်တယ်။  Amazon AWS မှာ Region အလိုက် Server တွေအများကြီး ရှိတာကြောင့်ဖြစ်တယ်။  တစ်ချို့Services တွေဆို Asia Pacific (Singapore) Region မှာမရနိုင်ဘူးဆိုရင် US Region က Server မှာသုံးလို့ရတယ်။

အနာဂတ်အတွေး

Cloud Computing နည်းပညာပေါ်လာတာကြောင့် Networking နှင့်ပတ်သက်တဲ့ တချို့အလုပ်တွေကို Cloud ထဲမှာ လုပ်ထားပြီးသားဖြစ်တဲ့အတွက် စိတ်ပူစရာမလိုသလို၊ အခြားကုန်ကျစရိတ်တွေလည်းသက်သာသွားတယ်။ Provider တွေကလည်း သူတို့ရဲ့ Cloud Service တွေကိုအသုံးပြုဖို့ Offer တွေအပြိုင်အဆိုင်ပေးကြသလို စီးပွားရေးလုပ်ငန်းမျိုးစုံကလည်း Cloud ထဲကိုတဖြည်းဖြည်း တိုးဝင်နေတာကြောင့် နောင်တစ်ချိန်မှာ အခွင့်အလမ်းအသစ်တွေ၊ ဝန်ဆောင်မှုအသစ်တွေ၊ နည်းပညာအသစ်တွေ ထပ်မံပေါ်ပေါက်လာလိမ့်ဦးမယ်လို့ မျှော်လင့်မိနေတော့တယ်။
ကိုစစ်ကိုင်း၏ မှတ်စုများ. Powered by Blogger.