May 10, 2017

Payment Tokenization ဆိုတာဘာလဲ။

sagaing
အင်တာနက်အသုံးပြုတဲ့ ငွေပေးချေမှုလုပ်ငန်းတွေမှာ၊ ငွေပေးချေမှုတစ်ခု လုပ်တိုင်း၊ လုပ်တိုင်း အရေးပါတဲ့အချက်အလက်တွေ ထည့်သွင်းပေးရပါတယ်။  အရေးပါတဲ့အချက်အလက်တွေဆိုတာ ငွေပေးချေသူ၏ အမည်၊ ဖုန်းနံပါတ်၊ ကဒ်နံပါတ်၊ အကောင့်နံပါတ်၊ စတာတွေပါဝင်ပါတယ်။  ဒီလိုအချက်အလက်တွေပါဝင်မှု နည်းနိုင်သမျှနည်းအောင် (သို့) ငွေပေးချေတဲ့ဖြစ်စဉ်ထဲက ဖယ်ထုတ်ထားနိုင်အောင် Tokenization ဆိုတဲ့နည်းပညာကို ငွေပေးချေတဲ့စနစ်တွေမှာ အသုံးပြုလာကြပါတယ်။  Tokenization ဆိုတာ အရေးပါတဲ့အချက်အလက်တွေအစား သီးသန့် ကိန်းဂဏန်း (သို့) သင်္ကေတတွေနှင့် အစားထိုးသတ်မှတ်ပေးခြင်းဖြစ်ပါတယ်။  အရေးပါတဲ့အချက်အလက်တွေလည်း ပျက်စီးဆုံးရှုံးမှုမရှိစေပဲ သီးသန့် လုံခြုံစွာ ထိန်းသိမ်းပေးထားမှာဖြစ်ပါတယ်။ Tokenization ဖြစ်စဉ်ကို ဥပမာအနေနှင့် ဆေးရုံ၊ ဆေးခန်းတွေမှာ မြင်တွေ့နိုင်ပါတယ်။  ၄င်းနေရာတွေမှာ ဆေးဝါးကုသမှုခံယူဖို့အတွက် အရင်ဆုံးတိုကင်နံပါတ် ယူလိုက်သလိုပါပဲ။  မည်သူမည်ဝါထက် တိုကင်နံပါတ်က အရေးပါတဲ့အရာတစ်ခုလို ဖြစ်သွားတဲ့သဘောဖြစ်ပါတယ်။  Tokenization နည်းပညာကိုသုံးခြင်းအားဖြင့် PCI DSS အတွက် ဆောင်ရွက်ရမယ့် လုပ်ငန်းတွေကိုလျှော့ချပေးနိုင်သလို၊ မသမာသောနည်းလမ်းများဖြင့် ငွေပေးချေမှုတွေကို ပိုမိုထိရောက်စွာ ကာကွယ်နိုင်မယ့် နည်းလမ်းတစ်ခုဖြစ်တာကြောင့် ငွေပေးချေမှုစနစ်တွေမှာ အသုံးပြုလာကြခြင်းဖြစ်ပါတယ်။  PCI DSS အကြောင်းကို ဒီပို့စ်မှာ ကျွန်တော်ရေးထားပါတယ်။

Payment Tokenization ဘယ်လိုအလုပ်လုပ်လဲ။

(Payments Cards & Mobile မှ ပုံဖြစ်ပါသည်။)

၁) စျေးဝယ်သူက အွန်လိုင်းက ဝယ်ယူခြင်း (သို့) Reader မှာ Tap လုပ်ပြီးငွေပေးချေခြင်း (ဥပမာ။ Android Pay သို့ Apple Pay) ကို ပြုလုပ်လိုက်တဲ့အခါမှာ စျေးဝယ်သူဆီက Token တစ်ခု စျေးရောင်းသူဆီကို ရောက်သွားပါတယ်။
၂) စျေးရောင်းသူနှင့် ချိတ်ဆက်ထားတဲ့ Acquirer (ဥပမာ။ Bank (သို့) Payment Provider) ဆီကို စျေးဝယ်သူရဲ့ Token ပို့လိုက်ပါတယ်။
၃) စျေးရောင်းသူပို့လိုက်တဲ့ Token ကို Acquirer က Token Network (ဥပမာ။ သက်ဆိုင်ရာ Token Service Provider) ဆီကို တဆင့်ထပ်ပို့လိုက်ပါတယ်။
၄) Token Network ထဲကိုရောက်လာတဲ့ Token ကို Token Vault (Token တွေလုံခြုံအောင်သိမ်းဆည်းထားတဲ့နေရာ) တစ်ခုအဖြစ် ပြောင်းလဲလိုက်တယ်။  Token Vault ဆိုတာက ယေဘူယအားဖြင့် Hash, Token နှင့် Encrypted PAN (Personal Account Number) ၃ခုကို ပေါင်းစပ်ထားတဲ့ အချက်အလက်ဖြစ်ပါတယ်။
၅) Token Network ထဲမှာပဲ ခုနက Token Vault ထဲက Token နှင့် အကောင့်နံပါတ် (PAN) တွေကို  Token Vault Database ထဲမှာ တိုက်ဆိုင်စစ်ဆေးတယ်။
၆) ပြီးရင်ရလာတဲ့ Token နှင့် PAN တွေကို သက်ဆိုင်ရာ ဘဏ်ကိုပို့ပေးလိုက်တယ်။
၇) ဘဏ်ကနေပြီး မှန်ကန်ကြောင်း၊ ပေးချေခွင့်ရှိကြောင်း အတည်ပြုချက်ကို Acquirer ဆီကိုပို့ပေးလိုက်တယ်။
၈) Acquirer ကနေတဆင့် ၄င်းအတည်ပြုချက်ကို စျေးရောင်းသူဆီကို ထပ်မံပို့ပေးလိုက်တယ်။  ဒီလိုနှင့် ငွေပေးချေမှု အောင်မြင်စွာ အထမြောက်သွားတယ်။

Encryption နှင့် Tokenization ဘယ်လိုခြားနားလဲ။

(CryptoCompare မှပုံဖြစ်ပါသည်။)

Encryption နှင့် Tokenization ဟာ အချက်အလက်တွေကို လျှို့ဝှက်၊ ပြန်ဖော်ပေးနည်းလမ်းတွေ (Cryptography) ဖြစ်ပါတယ်။  သို့သော် ဒီနှစ်ခုရဲ့ လုပ်ဆောင်ချက်ကတော့ မတူပါဘူး။  Encryption ဆိုတာကတော့ Public နှင့် Private ဆိုတဲ့ Key ၂ခုနှင့် Encryption Algorithm တစ်ခုကိုအသုံးပြုပြီး အချက်အလက်တွေကို လျှို့ဝှက်ပေးတယ်၊ ပြန်ဖော်ပေးတယ်။  Tokenization မှာ Algorithm တွေ၊ Key တွေ သုံးမထားဘူး။ နောက်ပြီးသက်ဆိုင်ရာ Token နှင့် အချက်အလက်တွေကို Token Vault Database ထဲမှာ သိမ်းထားတယ်၊  Token တွေက ကြုံရာကျပန်းတွေ (Ramdom) ဖြစ်တယ်။  Token တွေဟာ အရေးပါတဲ့အချက်အလက်တွေဖြစ်တဲ့ (ဥပမာ ခရက်ဒစ်ကဒ်နံပါတ်) စသည်တို့နှင့် ချိတ်ဆက်ထားတာကြောင့် တစ်ခုနှင့်တစ်ခု ဆက်နွယ်မှုရှိတယ်။  Token Vault ထဲမှာ Encryption နည်းပညာ ထည့်သွင်းထားတယ်။  Encryption အကြောင်းကိုဖတ်ချင်ရင် ဒီပို့စ်မှာ ကျွန်တော်ရေးသားထားပါတယ်။

Token Service Provider (TSP) များ
Token Service ကိုဘဏ်တွေ နှင့် ငွေပေးချေမှုလုပ်ငန်း ဆောင်ရွက်တဲ့သူတွေ (Payment Provider) တွေများသောအားဖြင့်က ၄င်းတို့ကိုယ်ပိုင် Token Service အတွက် လိုအပ်တာတွေကို သီးသန့်အကုန်ကျမခံတော့ပဲ၊ 3rd Party TSP တွေနှင့် ပူးပေါင်းပြီးလုပ်ဆောင်ကြပါတယ်။  အင်တာနက်ထဲမှာ တွေ့မိသလောက် 3rd Party TSP တွေကတော့ Rambus, OneKey (လက်ရှိစင်ကာပူကဘဏ်တွေမှာ အသုံးပြုနေတဲ့ Keypad နှင့် Token ထုတ်ပေးတာမျိုး), EMVCo, Interac, Visa, Master နှင့် Card Payment Provider တွေလည်း၄င်းတို့ရဲ့ Card အသီးသီးအတွက် Token Service တွေပေးပါတယ်။  အခြား TSP တွေလည်း အများကြီးရှိနိုင်ပါတယ်။

Tokenization နှင့် အချက်အလက်လုံခြုံရေး
နည်းပညာနှင့်သက်ဆိုင်တဲ့ အဖွဲ့အစည်းတွေတော်တော်များများ Encryption နည်းပညာထက်၊ ပိုမိုလုံခြုံပြီး၊ အဆင်ပြေတဲ့ Tokenization နည်းပညာကို လုံခြုံရေးဆိုင်ရာလုပ်ငန်းတွေမှာ တဖြည်းဖြည်းအသုံးပြုလာကြပါတယ်။ တကယ်တော့ လုံခြုံရေးဆိုင်ရာလုပ်ငန်းတွေမှာ Tokenization တစ်ခုတည်းနှင့်မပြီးပါဘူး။  လုပ်ငန်းတစ်ခုရဲ့ နောက်ပိုင်းဖြစ်စဉ်တွေထဲမှာ Encryption တွေလည်းပါရသလို၊ ရှေ့ပိုင်းဖြစ်စဉ်တွေထဲမှာ နောက်ဆုံးပေါ်ဖြစ်တဲ့ Recognition (ဥပမာ လက်ဗွေ၊ မျက်နှာ) နည်းပညာကို ထပ်ဆင့်ပေါင်းထည့်ထားပြီး ပိုမိုလုံခြုံအောင် ဖန်တီးထားကြတာမျိုးတွေလည်း တွေ့နိုင်ပါတယ်။  နောင်အနာဂတ်မှာတော့ ကိုယ်ရေးကိုယ်တာ အချက်အလက်တွေကို ပိုမိုလုံခြုံစွာထိန်းသိမ်းပေးထားနိုင်တဲ့ ပတ်ဝန်းကျင်ကောင်းတွေ တဖြည်းဖြည်း ပေါ်ထွက်လာလိမ့်မယ်လို့​ ယူဆမိပါတယ်။

May 7, 2017

ကျွန်တော်တို့ Root Cause (အကြောင်းရင်း) တွေကို ရှာကြရအောင်...

sagaing

ကျွန်တော့်အလုပ်နယ်ပယ်ထဲမှာ Software ဖန်တီးထုတ်လုပ်တဲ့အခါမှာ (သို့) ထုတ်လုပ်ထားတဲ့ Software မှာ Issue (အကြောင်းကိစ္စ) တစ်ခုဖြစ်တယ် (သို့) ရှိလာပြီဆိုရင် အဲ့ဒီ Issue ရဲ့ Root Cause ကိုရှာဖွေလေ့ရှိကြတယ်။  Root Cause ကို သေချာမရှာပဲ (သို့) မတွေ့ပဲနှင့် မိမိစိတ်ထင်တဲ့နေရာကိုပဲ Fix (ပြင်) လိုက်တယ်ဆိုရင် အဲ့ဒီ Software ဟာ အလုပ်လုပ်သလိုတော့ရှိပေမယ့် အခြားနေရာမှာ တခြား Issue တွေထပ်ဖြစ်လာလေ့ရှိတယ်။  လက်ရှိ ကျွန်တော်အလုပ်လုပ်နေတဲ့ ကုမ္ပဏီမှာ အိန္ဒိယ ၄ ယောက်နှင့်တွဲလုပ်ရတယ်။  အဲ့ဒီမှာ ပြဿနာကဘာလည်းဆိုတော့ အဲ့ဒီ ၄ ယောက်မှာ ၂ ယောက်က Issue တွေတော်တော်များများကို ပြင်ရင် Root Cause ကိုသေချာမရှာပဲ ​ပြင်လေ့ရှိကြတာပဲဖြစ်တယ်။  အခြား Issue တွေဖြစ်လာရင် သူပြင်ထားတာကြောင့်ဖြစ်တာမဟုတ်ဘူး သူ့ကြောင့်ဖြစ်တာ စသည်ဖြင့် အပြစ်လွှဲချလေ့ရှိတယ်။  အဲ့ဒီအတွက် စကားအပိုတွေလည်း ပြောရသလို၊ လုပ်ငန်းလည်းမတွင်ကျယ်ဘူး။  (ကြုံတုန်းပြောရရင် လက်ရှိကျွန်တော်တို့ ရုံးမှာအလုပ်လုပ်နေတဲ့ အိန္ဒိယတွေဟာ တွတ်တီးတွတ်တာ ပြောတတ်တာကလွဲလို့ မြန်မာတွေနှင့် ပြည်ကြီးတရုတ်တွေလောက် လုပ်ငန်းမတွင်ကျယ်တာတော့ အမှန်ပဲ။)  လက်ရှိကျွန်တော်တို့နိုင်ငံတွင်းမှာ ဖြစ်ပျက်နေတဲ့ Issue တွေနှင့်ပတ်သက်ပြီး မနက်လင်းလို့ ဖေ့ဘွတ်ဖွင့်ကြည့်လိုက်တာနဲ့ လူတိုင်းအလွယ်တကူသိနိုင်သလို၊ အလွယ်တကူလည်း ပြန်ပြောနိုင်တဲ့ခေတ်ဖြစ်တာကြောင့်၊ ပြောဆိုကြတဲ့အခါမှာ Root Cause (အကြောင်းရင်း) ကို မရှာဖွေပဲ (သို့) မမြင်ပဲ ပြောနေကြတာတွေပဲ အများဆုံးတွေ့ရတယ်။  တကယ်တော့ ပြည်တွင်းမှာရှိတဲ့ နယ်ပယ်အသီးသီးမှာလည်း Root Cause ကို သေချာမရှာဖွေပဲ (သို့) သေချာမမြင်ပဲ လုပ်ဆောင်နေတာတွေ တော်တော်များများတွေ့နိုင်တယ်။  ဥပမာ ဆရာဝန်တစ်ယောက်က လူနာကြည့်တဲ့အခါ လူနာကကိုယ်လက်တွေ ဖောရောင်နေတယ်၊ သွေးပေါင်ချိန်ကြည့်မယ်၊ သွေးပေါင်ချိန်ကတက်နေမယ်၊ သေချာတယ် အဲ့ဒီလူနာကို သွေးကျဆေးတွေပေးလိုက်မယ်။  စသည်ဖြင့် Root Cause ကိုသေချာမရှာပဲ ကုသနေတာမျိုးတွေ ကျွန်တော်တို့ ပတ်ဝန်းကျင်မှာလည်း မြင်တွေ့နိုင်တယ်။  သက်ငယ်မုဒိမ်းမှုတွေဖြစ်တယ်၊ ဖေ့ဘွတ်မှာ မုဒိမ်းလုပ်တဲ့သူကို ဆဲကြဆိုကြတယ်၊ သတ်ချင်ကြတယ်။  တစ်ပတ်လောက်နေရင်  သွေးအေးသွားပြန်ရော...၊ အခုဆိုရင် လူယက်မှု၊ လူသတ်မှုတွေမှာ မြင်ရ၊ ကြားရသလောက် လူငယ်တွေအများဆုံး ဖြစ်နေတာတွေ့ရတယ်။  လူယက်တဲ့သူ၊​ လူသတ်တဲ့လူကို ဖမ်းမိတဲ့သတင်း ပုံနှင့်တစ်ကွ ဖေ့ဘွတ်မှာ တက်လာပြီဆိုရင် ဖေ့ဘွတ်ထဲမှာ အပြစ်ဆိုကြမယ်၊ ဆဲကြမယ်၊ သတ်ချင်ကြမယ်။  Exo အဖွဲ့လာတယ်၊ မတွေ့လိုက်ရလို့ ငိုကြ၊ ယိုကြတဲ့သူတွေကို အပြစ်တင်မယ်၊ ဟားတိုက်ကြမယ်။  စတာတွေကိုကြည့်ချင်းအားဖြင့် ကျွန်တော်တို့လူ့အဖွဲ့အစည်းမှာ Root Cause (အကြောင်းရင်း) ကိုရှာဖွေမှု၊ မြင်နိုင်မှု စွမ်းရည်တွေ အင်မတန်အားနည်းနေတာကို တွေ့နိုင်ပါတယ်။  တစ်ဖက်ကကြည့်မယ်ဆိုရင်လည်း ဒီလိုစွမ်းရည်တွေ ကျဆင်းရခြင်းရဲ့ Root Cause (အကြောင်းရင်း) က ကြီးပြင်းခဲ့တဲ့ လူ့အသိုင်းအဝိုင်းနှင့် ပညာရေးစနစ်တွေကြောင့်လို့ ပြောလို့ရပါတယ်။  ကြံ့ခိုင်ပြီး ကျမ္မာသန်စွမ်းတဲ့ ခန္ဓာကိုယ်ရဖို့ လေ့ကျင့်ခန်းတစ်မျိုးတည်းနှင့် မဟုတ်ပဲ အစားအသောက်နှင့်ပါ အနည်းဆုံး ၆ လလောက်ထိန်းညှိမှရသလိုမျိုးပဲ၊ စိတ်ဓါတ်မြင့်မားပြီး တိုးတက်တဲ့ လူမှုအသိုင်းအဝန်းဖြစ်အောင် အစိုးရနှင့် ပြည်သူပြည်သားတွေ ပူးပေါင်းထိန်းညှိမှရမှာဖြစ်ပါတယ်။  အဲ့ဒီအတွက် ကျွန်တော်တို့ နောင် ၆ နှစ်လည်းဖြစ်ချင်ဖြစ်မယ်၊ နောင် နှစ် ၆၀ လည်းဖြစ်ချင်ဖြစ်မယ်... အဲ့ဒါကြောင့် ကျွန်တော်တို့ Root Cause (အကြောင်းရင်း) တွေကို ရှာကြရအောင်...

(ပုံမှာ Herding Cats မှဖြစ်ပါသည်။)

ကိုစစ်ကိုင်း

May 1, 2017

INTERNET of Things (IoT) ဆိုတာဘာလဲ။

sagaing
မျက်မောက်ခေတ်မှာ INTERNET ဆိုတာဘာလဲ...။ ဆိုတဲ့ မေးခွန်းကိုအထွေအထူးရှင်းပြနေစရာမလိုတဲ့ ခေတ်တစ်ခုကို ရောက်နေပါပြီ။  ယခင်က INTERNET ထဲမှာ ကွန်ပျူတာတွေချိတ်ဆက်ပြီး သတင်းအချက်အလက်တွေကို အပြန်အလှန်ပေးပို့ခဲ့ကြပေမယ့်၊ ယခုအချိန်မှာတော့ INTERNET ထဲမှာ ကွန်ပျူတာတစ်မျိုးတည်းနှင့် ချိတ်ဆက်ပြီး သတင်းအချက်အလက်တွေ ရယူတာ၊ ပြန်လည်ပေးပို့နိုင်တာ မဟုတ်တော့ပဲ၊ အခြားလျှပ်စစ်ပစ္စည်းတွေဖြစ်တဲ့ ဥပမာ၊ ဖုန်း၊ တီဗွီ၊ လေယာဉ်၊ ကား၊ ဆိုင်ကယ်၊ လက်ပတ်နာရီ စတာတွေနှင့်ပါ INTERNET ကိုချိတ်ဆက်ပြီး သတင်းအချက်အလက်တွေကို အပြန်အလှန်ပေးပို့နိုင်တာမျိုးကြောင့် INTERNET of Things (IoT) ဆိုတဲ့အခေါ်အဝေါ် ပေါ်ပေါက်လာရခြင်းဖြစ်ပါတယ်။  တကယ်တော့ INTERNET ဆိုတဲ့အခေါ်အဝေါ်ကို လူတော်တော်များများသိကြပေမယ့်၊ INTERNET of Things (IoT) ဆိုတဲ့အခေါ်အဝေါ်ကိုတော့ လူတော်တော်များများ ကြားဖူးချင်မှကြားဖူးပါလိမ့်မယ်။  IoT တွေထဲမှာ ကျွန်တော်တို့နှင့်ရင်းနှီးပြီးသား စက်ပစ္စည်းတစ်ခုဖြစ်တဲ့ ATM (Automated Teller Machine - ငွေထုတ်စက်) တွေဟာ အစောဆုံး IoT တစ်ခုဖြစ်ပါတယ်။

INTERNET ကိုချိတ်ဆက်တဲ့ ပစ္စည်းတွေ ဘာလို့များလာတာလဲ။
INTERNET ကိုကျွန်တော်တို့ စသုံးတဲ့အချိန်တုန်းက ယနေ့ခေတ်လို အလွယ်တကူသုံးလို့မရဘူး။  အိမ်မှာတပ်ဆင်ပြီးသုံးမယ်ဆိုရင်တောင် လျှောက်လွှာတင်ဖို့လည်းခက်သလို၊ စျေးနှုံးကလည်းကြီးပါတယ်၊  INTERNET Cafe မှာသွားသုံးမယ်ဆိုရင်တောင် အနည်းဆုံး တစ်နာရီကို ၅၀၀ လောက်ပေးရတယ်။  လက်ရှိအချိန်မှာတော့ INTERNET သုံးနိုင်ဖို့ အရမ်းလွယ်ကူတယ်၊ စျေးနှုံးလည်း သက်သာလာတယ်၊ သုံးတဲ့လူတွေလည်း များလာတယ်၊ အဲ့ဒါကြောင့် INTERNET ကွန်ယက်တွေလည်း တဖြည်းဖြည်းပိုပြီး ကျယ်ပြန့်လာတယ်။  ဒါတောင် ကမ္ဘာ့လူဉီးရေ တစ်ဝက်ကျော်လောက်က INTERNET မသုံးနိုင်ကြသေးဘူး။  သို့ပေမယ့် သုံးနိုင်တဲ့လူဉီးရေကတော့ တစ်နှစ်ထက်တစ်နှစ် တိုးလာတယ်။  ကမ္ဘာ့မှာ INTERNET အသုံးပြုနိုင်တဲ့ စာရင်းဇယားကို Wiki ထဲက ဒီနေရာမှာ ကြည့်နိုင်တယ်။ ကျယ်ပြန့်လာတဲ့ INTERNET နည်းပညာဟာ ကျွန်တော်တို့ရဲ့ လူမှုဘဝပုံစံတွေထဲမှာ မရှိလျှင် မဖြစ်တဲ့အရာတစ်ခုလို တဖြည်းဖြည်း ဖြစ်လာတယ်။  လူမှုဘဝပုံစံထဲမှာ မရှိမဖြစ်အရာတစ်ခုဖြစ်လာတဲ့ INTERNET ဟာ လူမှုဘဝပုံစံထဲက အခြားမရှိမဖြစ်အရာတွေနှင့် ပေါင်းစပ်၊ ချိတ်ဆက်လိုက်တဲ့အခါမှာ ပိုမိုခေတ်မှီသွားပြီး၊ အခြား များပြားတဲ့အကျိုးကျေးဇူးတွေကြောင့် လူမှုဘဝထဲက ပစ္စည်းတွေနှင့်ပေါင်းစပ်၊ ချိတ်ဆက်ပြီး တဖြည်းဖြည်းဖန်တီး သုံးစွဲလာခဲ့ကြတာဖြစ်တယ်။  ဥပမာ ယခင်က ဖုန်းကို အဝေးတစ်နေရာမှာရှိတဲ့ လူအချင်းချင်း စကားပြောဆိုဖို့ရန်ဖန်တီးခဲ့ပေမယ့်၊ မျက်မောက်ခေတ်မှာတော့ Smart Phone ဆိုပြီး IoT ပစ္စည်းတစ်ခုအနေနှင့် မြင်တွေ့နိုင်ပါတယ်။  Smart Phone တစ်လုံးရဲ့ အကျိုးကျေးဇူးတွေက အများကြီးဖြစ်ပါတယ်။  အခုဆိုရင် INTERNET ကိုချိတ်ဆက်နိုင်တဲ့ကားတွေလည်း မြင်တွေ့နိုင်ပါတယ်။  ကားတစ်စင်းဟာ INTERNET ကိုချိတ်ဆက်ထားတယ်ဆိုရင် နေရာတစ်ခုကနေ အခြား နေရာတစ်ခုကိုသွားတဲ့အခါမှာ အမြန်ဆုံးရောက်နိုင်မယ့်လမ်းကြောင်းကို ရှာဖွေပေးနိုင်မယ်၊ မိမိရပ်မယ့်နေရာမှာ ကားပါကင်ရနိုင်မရနိုင် အလွယ်တကူသိနိုင်မယ်၊ ကားမှတဆင့် ဖုန်းခေါ်ဆိုနိုင်မယ်၊ စာပို့နိုင်မယ်၊ နောင်အနာဂတ်မှာဆိုရင် ကားကို Self-Driving အလိုလျှောက်မောင်းနှင်စေနိုင်မယ်။  စသည့်ဖြင့် INTERNET ကို အခြားအရာတွေနှင့် ချိတ်ဆက်လိုက်ခြင်းဖြင့် ရလာတဲ့အကျိုးကျေးဇူးတွေပဲဖြစ်တယ်။  နောက်ပြီးမီးဖိုခေျာင်သုံး ပစ္စည်းတစ်ခုဖြစ်တဲ့ Coffee Maker ကို INTERNET ချိတ်ဆက်ထားနိုင်ပြီး၊ ဖုန်းကတဆင့် သတ်မှတ်ထားတဲ့အချိန်မှာ ကော်ဖီဖျော်ဖို့ လုပ်ဆောင်နိုင်တယ်၊ မိမိသောက်ချင်တဲ့ ကော်ဖီအရသာပုံစံစတာတွေလည်း သတ်မှတ်နိုင်တယ်။  စသည့်ဖြင့် IoT အရာဝတ္ထုပစ္စည်းတွေ လူမှုဘဝပုံစံတွေထဲမှာ တဖြည်းဖြည်းတိုးပွားလာတယ်။

IoT နှင့် Smart ဖြစ်သည့် အရာများ
Smart ဆိုတာနှင့်ပတ်သက်ပြီး Smart Phone, Smart Watch, Smart Home, Smart City စသည်ဖြင့် ကျွန်တော်တို့ပတ်ဝန်းကျင်မှာ အမြဲလိုလို ကြားနေရတဲ့ Smart ဆိုတာတွေဟာ တကယ်တော့ IoT ပဲဖြစ်ပါတယ်။  နောင်အနာဂတ်မှာဖြစ်လာမယ့် Smart Word ကို Libelium ကပုံဖေါ်ထားတာကို အောက်ပါပုံလေးမှာ တွေ့မြင်နိုင်ပါတယ်။

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

Honeywell (HON)HitachiT-Mobile (TMUS)Comcast (CMCSA)
GE (GE)AT&T (T)Cisco (CSCO)IBM (IBM)
Amazon (AMZN)Skyworks (SWKS)Apple (AAPL)Sierra Wireless (SWIR)
Google (GOOGL)Iridium Communications (IRDM)Ambarella (AMBA)ARM Holdings (ARMH)
Texas Instruments (TXN)PTC (PTC)
Fitbit (FIT)
ORBCOMM (ORBC)
Garmin (GRMN)Blackrock (BLK)InvenSense (INVN)Microsoft (MSFT)
Control4 (CTRL)Silicon Laboratories (SLAB)CalAmp (CAMP)LogMeIn (LOGM)
InterDigital (IDCC)Ruckus Wireless (RKUS)Linear Technology (LLTC)Red Hat (RHT)
Nimble Storage (NMBL)Silver Spring Networks (SSNI)Zebra Technologies (ZBRA)Arrow Electronics (ARW)
(BusinessInsider မှ ဇယားဖြစ်ပါတယ်။)

IoT နှင့်ပတ်သက်တဲ့ Platform များ
လက်ရှိစျေးကွက်ထဲမှာ အောက်ဖေါ်ပြပါ IoT Platform တွေကိုမြင်တွေ့နိုင်ပါတယ်။

  • Amazon Web Services
  • Microsoft Azure
  • ThingWorx IoT Platform
  • IBM's Watson
  • Cisco IoT Cloud Connect
  • Salesforce IoT Cloud
  • Oracle Integrated Cloud
  • GE Predix
(BusinessInsider မှ ဖြစ်ပါတယ်။)

Amazon Web Services (AWS) ကတော့ လူသုံးများတဲ့ Platform တစ်ခုဖြစ်ပါတယ်။

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

IoT Ecosystem
အောက်ပါပုံကတော့ IoT ရဲ့ ecosystem ပုံဖြစ်ပါတယ်။ Matt Turck Blog ကပုံဖြစ်ပါတယ်။  ဒီပုံထဲမှာ နယ်ပယ်အသီးသီးမှာ IoT နှင့်ပတ်သက်တဲ့ ပစ္စည်းတွေကို ဖန်တီးထုတ်လုပ်နေတဲ့ အဖွဲ့အစည်းတွေကို မြင်တွေ့နိုင်ပါတယ်။

အခြားဆက်စပ်လင့်ခ်များ
A Simple Explanation of IoT
What is the Internet of Things (IoT)?

Apr 5, 2017

PCI DSS ဆိုတာဘာလဲ။

sagaing
PCI DSS ဆိုတာ Payment Card Industry Data Security Standard ဖြစ်ပါတယ်။  Credit Card (သို့) Debit Card အသုံးပြုသူတွေရဲ့ ကိုယ်ရေးကိုယ်တာအချက်အလက်တွေနှင့် Card နှင့် ငွေပေးချေခဲ့တဲ့ Transaction အချက်အလက်တွေကို လုံခြုံအောင်ကာကွယ်ပေးနိုင်မယ့် မူဝါဒနှင့်လုပ်ငန်းစဉ်တွေပဲဖြစ်ပါတယ်။  ဒီမူဝါဒတွေ၊ လုပ်ငန်းစဉ်တွေ ကို (PCI SSC - Payment Card Industry Security Standards Council) ဆိုတဲ့အဖွဲ့ရဲ့ ဦးဆောင်မှုနှင့် ချမှတ်ထားတာဖြစ်ပြီး၊ PCI DSS ဆိုတာကို ငွေပေးချေကဒ်ကုမ္ပဏီကြီးတွေဖြစ်တဲ့ Visa, MasterCard, Discover နှင့် American Express တို့ပူးပေါင်းပြီး Card ကိုအသုံးပြုပြီး မသမာသည့်နည်းလမ်းတွေဖြင့် ငွေပေးချေမှုတွေ ပပျောက်အောင် ၂၀၀၄ မှာစတင်ပြီးဖန်တီးခဲ့တာဖြစ်ပါတယ်။  PCI DSS ရဲ့ နောက်ထပ် ရည်ရွယ်တစ်ခုက Card အသုံးပြုတဲ့သူတွေရဲ့ အရေးပါတဲ့အချက်အလက်တွေကို ကာကွယ်ပေးဖို့ဖြစ်ပါတယ်။  ၂၀၀၄ ခုနှစ်မှာ စတင်ခဲ့တဲ့ PCI DSS ဟာ အခုဆိုရင် PCI DSS နောက်ဆုံး ဗားရှင်း 3.2 ကို ဧပြီ ၂၀၁၆ မှာထုတ်ပြန်ခဲ့ပါတယ်။  PCI DSS ဗားရှင်းတွေကို Wikipedia မှာ အခုလိုဖေါ်ပြထားပါတယ်။

PCI DSS ကိုလိုက်နာရန် အဓိကလိုအပ်ချက် (၁၂) ချက်
PCI DSS ကိုလိုက်နာရန် အဓိကအချက် (၁၂) ချက်ကို အမျိုးအစားခွဲခြားသတ်မှတ်တဲ့အခါမှာ ခေါင်းစဉ် (၆) ခုဖြင့် သတ်မှတ်ပါတယ်။

၁)  Build and Maintain a Secure Network
(လုံခြုံစိတ်ချရတဲ့ ကွန်ယက်တစ်ခုကို တည်ဆောက်ခြင်းနှင့် ပြုပြင်ထိန်းသိမ်းခြင်း)
a) Install and maintain a firewall configuration to protect data
(အချက်အလက်တွေကို အကာအကွယ်ဖြစ်စေရန် ဗိုင်းရပ်နှင့် အခြားသောတိုက်ခိုက်မှုတွေကို ကာကွယ်ပေးနိုင်မယ့်ပစ္စည်းတွေကို တပ်ဆင်ခြင်းနှင့် ပြုပြင်ထိန်းသိမ်းခြင်း)
b) Do not use vendor-supplied defaults for system passwords and other security parameters
(ကွန်ပျူတာပစ္စည်းရောင်းချသူတွေ ထည့်သွင်းသတ်မှတ်ပေးထားတဲ့ လျှို့ဝှက်စကားလုံးတွေနှင့် အခြားလုံခြုံရေးဆိုင်ရာ လျှို့ဝှက်စကားလုံးတွေကို ကွန်ပျူတာစနစ်မှာ မပြင်ဆင်ပဲအသုံးမပြုရ)

၂) Protect Cardholder Data
(ကဒ်အသုံးပြုသူတွေရဲ့ အချက်အလက်တွေကိုကာကွယ်ပေးခြင်း)
c) Protect stored data (use encryption)
(သိမ်းဆည်းထားတဲ့အချက်အလက်တွေကို လုံခြုံပြီး၊ ဖတ်လို့မရအောင် ဖုံးကွယ်ထားခြင်းဖြင့် ကာကွယ်ပေးခြင်း)
d) Encrypt transmission of cardholder data and sensitive information across public net
(အများသုံးကွန်ယက်တွေထဲမှာ အချက်အလက်တွေ ဖြတ်သန်းစီးဆင်းမှုနှင့် ပို့လွှတ်မှုတွေမှာ လုံခြုံပြီး၊ ဖတ်လို့မရသည့်နည်းလမ်းဖြင့် ဖုံးကွယ်ပေးခြင်း)

၃) Maintain a Vulnerability Management Program
(အားနည်းချက်တွေကို စီမံခန့်ခွဲမယ့် အစီအစဉ်တစ်ခုကို ထိန်းသိမ်းထားခြင်း)
e) Use and regularly update anti-virus software
(ဗိုင်းရပ်ဆော့ဖ်ဝဲလ်ကို အသုံးပြုခြင်းနှင့် အမြဲမွန်းမံခြင်း)
f) Develop and maintain secure systems and applications
(လုံခြုံစိတ်ချရတဲ့စနစ်တွေနှင့် အသုံးချမယ့်ဆော့ဒ်ဝဲလ်တွေကို ပေါ်ပေါက်လာအောင် လုပ်ဆောင်ခြင်းနှင့် ပြုပြင်ထိန်းသိမ်းခြင်း)

၄) Implement Strong Access Control Measures
(လုပ်ဆောင်မှုတိုင်းအတွက် တိုင်းတာသတ်မှတ်ချက်တွေကို ခိုင်မာစွာ အကောင်အထည်ဖေါ်ခြင်း)
g) Restrict access to data by business need-to-know
(လုပ်ဆောင်တဲ့အချက်အလက်တွေကို သိရန်လိုအပ်တဲ့အလုပ်ကိစ္စအလိုက် ကန်သတ်ထားခြင်း)
h) Assign a unique ID to each person with computer access
(ကွန်ပျူတာအသုံးပြုမှုကို လူတစ်ဦးခြင်းစီအလိုက် သီးသန့် ID ဖြင့် သတ်မှတ်ထားခြင်း)
i) Restrict physical access to cardholder data
(ကဒ်အသုံးပြုသူတွေရဲ့ အချက်အလက်ကို ကိုယ်တိုင်ပါဝင်ဆောင်ရွက်မှု ကန်သတ်ထားခြင်း)

၅) Regularly Monitor and Test Networks
(ကွန်ယက်တွေကို ပုံမှန် စမ်းသပ်ခြင်းနှင့် စောင့်ကြည့်ပေးခြင်း)
j) Track and monitor all access to network resources and cardholder data
(ကွန်ယက်ထဲမှာ ကဒ်အသုံးပြုသူတွေရဲ့ အချက်အလက်တွေနှင့် အခြားရင်းမြစ်တွေကို အသုံးပြုဆောင်ရွက်မှု အားလုံးကို စောင့်ကြည့်ခြင်းနှင့် ခြေရာခံခြင်း)
k) Regularly test security systems and processes
(လုပ်ငန်းစဉ်တွေနှင့် စနစ်တွေရဲ့ လုံခြုံရေးကို ပုံမှန်စစ်ဆေးခြင်း)

၆) Maintain an Information Security Policy
(သတင်းအချက်အလက် လုံခြုံရေးမူဝါဒတစ်ခုကို ထိန်းသိမ်းခြင်း)
l) Maintain a policy that addresses Information Security
(သတင်းအချက်အလက်လုံခြုံရေးအမည်ဖြင့် မူဝါဒတစ်ခုကို ထိန်းသိမ်းခြင်း)

PCI Security Standards မှကိုးကားသည်။

PCI ဘာကြောင့် အရေးပါတာလဲ။  MasterCard ကဖေါ်ပြထားတဲ့ PDF ဖိုင်ဖြစ်ပါတယ်။



အခြား ဆက်စပ်လေ့လာရန် လင့်ခ်များ
Payment Security Educational Resources
How to Secure with the PCI Data Security Standard
Assessor & Solutions
PCI DSS v. 3.2: New Requirements Coming to Protect Your Customers’ Wallets

Apr 3, 2017

Windows 10 VM ကို External SSD ထဲထည့်ပြီး MAC မှာ Run တာဘာလို့ အရမ်းနှေးနေတာလဲ

sagaing
စနေနေ့က Portable External Samsung SSD T3 တစ်လုံးဝယ်ခဲ့တယ်။  ပြီးတော့ အရင်ကတည်းက MAC ထဲထည့်ထားတဲ့ Parallel Desktop VM Application ထဲက Windows 10 ကို SSD ထဲထည့်ပြီး Run တော့နှေးလိုက်တာ ဘယ်ပြောကောင်းမလည်း။  SSD မဟုတ်တဲ့ External Hard disk တွေအတိုင်းပဲ တက်လာတဲ့ Windows ဟာ ဘာမှသုံးလို့မရအောင်ကို နှေးလွန်းတယ်။  အမှန်တော့ MAC ထဲမှာပဲထည့်သုံးရင် အဆင်ပြေတယ်၊ ဖြစ်ချင်တော့ MAC ထဲမှာလည်းထည့်ထားတာတွေ ပြည့်နေပြီး၊ MAC ရဲ့ Internal SSD တစ်ဝက်လောက်ကို Windows 10 ကနေရာယူထားတော့၊ Windows ကို သီးသန့်ဖြစ်သွားအောင် External SSD ထဲပြောင်းချင်တာကြောင့် သူငယ်ချင်းတစ်ယောက်ရဲ့ အကြံပြုချက်နဲ့ Samsung 250GB ဆန့်တဲ့ SSD T3 ကိုဝယ်ဖြစ်သွားတယ်။  နှေးနေတဲ့ Windows ကိုမြန်အောင် Google ထဲမှာ ရှာဖတ်ကြည့်တော့ Parallel ကတင်ထားတဲ့ Knowledgebase မှာ ဒီလင့်ခ် ကိုသွားတွေ့တယ်။  ဒါနှင့် SSD ရဲ့မူလ File System ကိုစစ်ကြည့်လိုက်တာ့ Knowledgebase ထဲမှာပြောထားသလို ExFAT ဖြစ်နေတာကြောင့် OSX Extended (Journaled) နှင့် Format ပြန်ချပြီး VM ထည့်သုံးလိုက်တော့မှ မျော်လင့်ထားတဲ့အတိုင်း အရမ်းမြန်လာပြီး Windows သုံးရတာစိတ်ချမ်းသာတော့တယ်။  အခြား VM Application တွေဖြစ်တဲ့ Virtual Box, Fushion စတာတွေနှင့်တော့ မသုံးကြည့်ဘူးဖူး။  SSD ဖြစ်ပြီးအရမ်းနှေးနေခဲ့မယ်ဆိုရင်တော့ File System ဟာလည်း တစ်ခုအနေနှင့် ပြောင်းလဲသတ်မှတ်ရမယ့်  အရာတစ်ခုပဲဖြစ်ပါတယ်။

Mar 17, 2017

API ဆိုတာဘာလဲ။

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 ဘယ်လို ဆက်နွယ်နေလဲ။

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 ဆိုတာဘာလဲ

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 မှာ Hashing လို့ခေါ်တဲ့ အချက်အလက်ကို လျှို့ဝှက်စာအဖြစ်ပြောင်းလဲသိမ်းဆည်းတဲ့နည်းလမ်းကိုအသုံးပြုထားပြီး လူတစ်ဦးမှ၊ အခြားလူတစ်ဦးဆီကို အင်တာနက်မှတဆင့် လွှဲပြောင်းပေးပို့တဲ့အခါမှာလည်း လက်ခံတဲ့သူဆီမှာ အဲ့ဒီလျှို့ဝှက်စာကိုချိတ်ဆက်နိုင်တဲ့ သတ်မှတ်ထားတဲ့လျှို့ဝှက်စာရှိမှသာလျှင်လက်ခံနိုင်အောင် ဖန်တီးထားတဲ့ ငွေကြေးပုံစံဖြစ်ပါတယ်။  ဒါကြောင့် 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 ဖြေရှင်းခြင်း

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) အကြောင်း

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 နှင့်ပတ်သက်လို့ကတော့ ဒီလောက်ပါပဲ။

ကိုစစ်ကိုင်း၏ မှတ်စုများ. Powered by Blogger.