engineer4myanmar မွာ ကၽြန္ေတာ္ ဘလူးဖီးနစ္ အမည္နဲ႔ ေရးသားထားသမွ် ေဆာင္းပါးမ်ား ကို MIT လိုင္စင္ ေအာက္မွာ အခမဲ႔ လြတ္လပ္စြာ ရယူ အသံုးျပဳႏိုင္ပါတယ္။

Pages

Download Android APK of Engineer for Myanmar blog

Monday, March 23, 2015

Raspberry Pi - Headless အသံုး​ျ​ပဳ​န​ည​္းမ်ား


Raspberry Pi ကို ေ​မာ​္​နီ​တာ၊ ကီး​ဘု​တ​္၊ ေ​မာက္စ​္ မ်ား တပ္ဆ​င​္​၍ အသံုး​မျ​ပဳ​ဘဲ နက္ဝက္မွ တ​ဆ​င​္​႔ ခ်ိတ္ဆ​က​္​ၿ​ပီး အသံုး​ျ​ပဳ​ျ​ခ​င​္း​ကို headless အသံုး​ျ​ပဳ​ျ​ခ​င​္း​ဟု ေ​ခ​ၚ​ပါ​သ​ည​္။ Raspberry Pi ကို update, upgrade ျ​ပဳ​လုပ္ဖို​႔​နဲ​႔ အျ​ခား​လို​အပ္တဲ​႔ softwares ေ​တြ​ကို install ျ​ပဳ​လုပ္ဖို​႔​အတြက္ဆို​ရ​င​္ Raspberry Pi ကို အင္တာ​နက္နဲ​႔ ခ်ိတ္ဆက္ထား​ဖို​႔ လို​အပ္ပါ​မ​ယ​္။ အမ်ား​စု​အေ​န​နဲ​႔ ဒီ​အလု​ပ​္ေ​တြ​ကို အင္တာ​နက္ဆိုင္လို ေ​န​ရာမ်ိ​ဳး​ကေ​န​ပဲ ျ​ပဳ​လု​ပ​္ႏိုင္မွာ ျ​ဖစ္ပါ​တ​ယ​္။ ဒါ​ေ​ၾ​ကာ​င​္​႔ အင္တာ​နက္ဆိုင္အ​တြ​င​္း​မွာ Raspberry Pi ကို ပါ​ဝါ နဲ​႔ နက္ဝ​က​္​ႀ​ကိ​ဳး ႏွစ္ခု​တ​ည​္းခ်ိတ္ဆ​က​္​ၿ​ပီး အသံုး​ျ​ပဳႏ​ိုင္ဖို​႔ လို​အပ္ပါ​တ​ယ​္။ ဒီ​န​ည​္း​ဟာ အၿ​မဲ​တ​မ​္း အသံုး​တ​ည​္​႔ေ​န​မွာ​ပဲ ျ​ဖစ္ပါ​တ​ယ​္။ ကို​ယ​္​႔​အိမ္မွာ ကိုယ္အ​သံုး​ျ​ပဳ​မယ္ဆို​လဲ ဒီ​န​ည​္း​နဲ​႔ အသံုး​ျ​ပဳ​ျ​ခ​င​္း​က ပို​အဆ​င​္ေျ​ပ​ပါ​တ​ယ​္။ PC နဲ​႔ သာ​မက၊ laptop, Android Smart Phone, Apple iPhone, iPad စ​တာ​ေ​တြ​နဲ​႔​လဲ ခ်ိတ္ဆ​က​္ အသံုး​ျ​ပဳ ႏိုင္ပါ​တ​ယ​္။   

ေ​ဆာ​င​္း​ပါး​ကို ဒီ​က ရ​ယူ​ေ​ပး​ၾ​က​ပါ။ တင္ရ​တာ အဆင္မေ​ျ​ပေ​သး​လို​႔​ပါ။

ကြန္ပ်ဴ​တာ​မွ​တ​ဆ​င​္​႔ Raspberry Pi အား Headless ခ်ိတ္ဆက္န​ည​္း
က​ၽြ​န​္ေ​တာ​္​႔​အေ​နျ​ဖ​င​္​႔ Raspberry Pi ကို headless အသံုး​ျ​ပဳ​ရန္အ​တြ​က​္ ပထမ​ဆံုး ကြန္ပ်ဴ​တာ SSH မွ တ​ဆ​င​္​႔ ဝ​င​္ေ​ရာ​က​္ အသံုး​ျ​ပဳ​မ​ည​္ ျ​ဖစ္ပါ​သ​ည​္။ ကြန္ပ်ဴ​တာ​မွ တ​ဆ​င​္​႔ SSH ျ​ဖ​င​္​႔ ခ်ိတ္ဆ​က​္ ႏိုင္ရ​န​္ Raspberry Pi ၏ ip address ကို သိ​ထား​ဖို​႔ လို​ပါ​တ​ယ​္။ ၎​ကို Advanced Port Scanner v1.3 ကို အသံုး​ျ​ပဳ​၍ ရွာ​ေ​ဖြ​မ​ည​္ျ​ဖစ္ပါ​သ​ည​္။ အင္တာ​နက္တြ​င​္ အခ​မဲ​႔ ရ​ယူႏ​ို​င​္​ၿ​ပီး SoftPerfect Network Scanner ကဲ​႔​သို​႔ေ​သာ အျ​ခား Network scanner မ်ား​ကို အသံုး​ျ​ပဳ​၍​လ​ည​္း ရွာ​ေ​ဖြႏ​ိုင္ပါ​သ​ည​္။ Advanced Port Scanner ၏ အား​သာခ်က္မွာ Network ထဲ​တြ​င​္ ေ​ပ​ၚ​လာ​ေ​သာ ip address မ်ား​၏ ပြ​င​္​႔ေ​န​သ​ည​္​႔ ports မ်ား​ကို သိ​ရွိႏ​ို​င​္ျ​ခ​င​္း​ပ​င​္ ျ​ဖစ္ပါ​သ​ည​္။ Raspberry Pi အေ​နျ​ဖ​င​္​႔ SSH port (22) ပြ​င​္​႔ေ​နေသာ ip address မ်ား​ထဲ​မွ တစ္ခု​ခု​ပ​င​္ ျ​ဖ​စ​္ႏိုင္ပါ​သ​ည​္။ (မ်ား​ေ​သာ​အား​ျ​ဖ​င​္​႔ အျ​ခား ip မ်ား​တြ​င​္ SSH port (22) ဖြ​င​္​႔​ထား​ေ​လ​႔ မ​ရွိ​ပါ) နက္ဝက္တြ​င​္ ခ်ိတ္ထား​သ​ည​္​႔ Rpi ၏ ip address ကို ရွာ​ေ​ဖြ​ရ​န​္ Router ၏ ip range ကို ပုံ​တြ​င​္ ျ​ပ​ထား​သ​ည​္​႔​အတို​င​္း (1) ႏွ​င​္​႔ (2) တြ​င​္ ထ​ည​္​႔​သြ​င​္းေ​ပး​ပါ။ (3) Scan ကို ႏွိ​ပ​္​၍ ခ​ဏေ​စာ​င​္​႔​လိုက္လွ်​င​္ နက္ဝက္အ​တြ​င​္း ရွိ​ေ​သာ ip address မ်ား​ႏွ​င​္​႔ ၄​င​္း​တို​႔​၏ ပြ​င​္​႔ေ​နေသာ port မ်ား ကို ျ​ပ​သေ​ပး​မ​ည​္ ျ​ဖစ္ပါ​သ​ည​္။ Open ports မ်ား​ထဲ​မွ 22 Open (ssh) ကို ရွာ​၍ ေ​တြ​႕လွ်​င​္ Raspberry Pi ကို ရွာ​ေ​တြ​႔​ၿ​ပီ​ျ​ဖ​စ​္​၍ ip address ကို မွတ္သား​ထား​ပါ။ Raspberry Pi ကို SSH ျ​ဖ​င​္​႔ ခ်ိတ္ဆ​က​္ႏိုင္ရ​န​္ အင္တာ​နက္တြ​င​္ အခ​မဲ​႔ ရ​ယူႏ​ို​င​္ေ​သာ PuTTY ေ​ဆာ​႔ဖ္ဝဲလ္ကို အသံုး​ျ​ပဳ​မ​ည​္ ျ​ဖစ္ပါ​သ​ည​္။ ပထမ​ဦး​စြာ Host Name (or IP address) ေ​န​ရာ​တြ​င​္ မိမိ ခ်ိတ္ဆက္လို​သ​ည​္​႔ Raspberry Pi ၏ ip address ကို ထ​ည​္​႔​သြ​င​္းေ​ပး​ပါ။ ထို​႔ေ​နာ​က​္ ဆက္သြယ္မႈ စ​တင္ရ​န​္ Open ကို ႏွိပ္လိုက္ပါ။ Raspberry Pi ၏ ip address မွန္လွ်​င​္ ေ​အာက္ပါ​ပံု​အတို​င​္း Login ျ​ပဳ​လု​ပ​္ႏို​င​္​ၿ​ပီ ျ​ဖစ္ပါ​သ​ည​္။ Raspberry Pi ၏ default Login မွာ pi ျ​ဖ​စ​္​ၿ​ပီး password မွာ raspberry ျ​ဖစ္ပါ​သ​ည​္။ ေ​အာက္ပါ​အတို​င​္း ထ​ည​္​႔​သြ​င​္းေ​ပး​လိုက္ပါ။ pi@raspberrypi ~ $ ဟူ​ေ​သာ prompt ကို ေ​တြ​႕​ရ​မ​ည​္ ျ​ဖစ္သ​ည​္။ ၄​င​္း​တို​႔​အန​က​္ pi သ​ည​္ username ျ​ဖ​စ​္​ၿ​ပီး ~ သ​ည​္ user ၏ directory ကို ရည္ညႊ​န​္းျ​ခ​င​္း ျ​ဖစ္သ​ည​္။ ပိုမို​ေ​သခ်ာ​ေ​စ​ရ​န​္ current directory ကို ျ​ပေ​သာ pwd ဆို​သ​ည​္​႔ command ကို သံုး​ၾ​က​ည​္​႔​ပါ။ /home/pi ဟု ျ​ပ​သေ​ပး​မ​ည​္ျ​ဖစ္သ​ည​္။ Changing password Raspberry Pi ရဲ​႕ default user name က pi ျ​ဖ​စ​္​ၿ​ပီး စကား​ဝွက္က raspberry ျ​ဖစ္တယ္ဆို​တာ အား​လံုး သိ​ၾ​က​ၿ​ပီး ျ​ဖစ္ပါ​တ​ယ​္။ စ​တ​င​္ အသံုး​ျ​ပဳ​ၿ​ပီ​ဆို​တာ​နဲ​႔ မိမိ Rpi ကို လံု​ၿ​ခံ​ဳ​မႈ ရွိ​ေ​စ​ရ​န​္ စကား​ဝွက္ကို ခ်က္ခ်​င​္း ေျ​ပာ​င​္း​လဲ​ေ​ပး​သ​င​္​႔​ပါ​တ​ယ​္။ ဒီ​လို​ေျ​ပာ​င​္း​လဲ​ဖို​႔​အတြ​က​္ passwd command ကို ေ​အာက္ပါ​အတို​င​္း အသံုး​ျ​ပဳႏ​ိုင္ပါ​တ​ယ​္။ (current) UNIX password: ဆို​တဲ​႔ ေ​န​ရာ​မွာ လက္ရွိ စကား​ဝွက္ကို ထ​ည​္​႔​သြ​င​္းေ​ပး​ရ​မွာ ျ​ဖ​စ​္​ၿ​ပီး Enter new UNIX password: နဲ​႔ Retype new UNIX password: ဆို​တဲ​႔ ေ​န​ရာ​မွာ​ေ​တာ​႔ မိမိ ျ​ပင္ဆ​င​္ ထ​ည​္​႔​သြ​င​္း​လို​တဲ​႔ စကား​ဝွ​က​္ အသစ္ကို ထ​ည​္​႔​သြ​င​္း​ရ​မွာ​ပါ။ စကား​ဝွ​က​္ေ​တြ ရိုက္ထ​ည​္​႔​တာ​ကို ေ​မာ​္​နီ​တာ​ေ​ပ​ၚ​မွာ ျ​ပ​သေ​ပး​မွာ မ​ဟုတ္ပါ​ဘူး။ ဒါ​ေ​ၾ​ကာ​င​္​႔ တစ္လံုးခ်​င​္း ေ​သေ​သခ်ာခ်ာ ရို​က​္ေ​ပး​ဖို​႔ လို​ပါ​႔​မ​ယ​္။ Update ျ​ပဳ​လု​ပ​္ျ​ခ​င​္း ပထမ​ဦး​ဆံုး အသံုး​ျ​ပဳ​မ​ယ​္​႔ Rpi တို​င​္း​ကို update နဲ​႔ upgrade မျ​ဖစ္မေ​န ျ​ပဳ​လု​ပ​္ေ​ပး​ရ​မွာ ျ​ဖစ္ပါ​တ​ယ​္။ အဲ​ဒီ​လို ျ​ပဳ​လုပ္ဖို​႔ အတြ​က​္ time zone ကို အရ​င​္ သတ္မွ​တ​္ေ​ပး​ရ​ပါ​မ​ယ​္။ sudo dpkg-reconfigure tzdata 60. Rangoon ဆို​တာ က​ၽြ​န​္ေ​တာ​္​တို​႔ ေ​ရြး​ေ​ပး​ရ​မ​ယ​္​႔ Time Zone ပါ။ အဲ​ဒါ​က ေ​နာက္ဆံုး​နား​မွာ ရွိ​ပါ​တ​ယ​္။ Enter ကို တစ္ခ်က္ခ်​င​္း ရို​က​္​ၿ​ပီး ေ​နာက္ဆံုး စာမ်​က​္ႏွာ အထိ​ေ​ရာ​က​္ေ​အာင္သြား​ပါ။ ေ​အာက္မွာ ေ​ဖ​ၚျ​ပ​ထား​တဲ​႔ ေ​န​ရာ​ကို ေ​ရာက္ရ​င​္ ရ​ပ​္​ၿ​ပီး 60 ကို ရိုက္ထ​ည​္​႔ေ​ပး​ၿ​ပီး Enter ေ​ခါ​က​္ေ​ပး​လိုက္ပါ။ Update ျ​ပဳ​လုပ္ဖို​႔​အတြ​က​္ေ​တာ​႔ sudo apt-get update လို​႔ ရိုက္ထ​ည​္​႔ေ​ပး​ရ​မွာ ျ​ဖ​စ​္​ၿ​ပီး upgrade အတြ​က​္ sudo apt-get upgrade လို​႔ ရိုက္ထ​ည​္​႔ေ​ပး​ရ​ပါ​မ​ယ​္။ အဲ​ဒီ လို လုပ္ဖို​႔ အင္တာ​နက္နဲ​႔ ခ်ိတ္ဆက္ထား​ဖို​႔ လို​ပါ​မ​ယ​္။ အခ်ိန္အေ​တာ​္​ၾ​ကာ​လဲ ေ​စာ​င​္​႔​ရ​တတ္ပါ​တ​ယ​္။ Update နဲ​႔ upgrade ေ​တြ ျ​ပဳ​လု​ပ​္​ၿ​ပီး​ၿ​ပီ​ဆို​ရ​င​္ ေ​န​႔၊ ရ​က​္၊ နာရီ​ေ​တြ ျ​ပင္ဆင္ရ​ပါ​ေ​တာ​႔​မ​ယ​္။ လက္ရွိ ေ​န​႔​စြဲ​ကို သိ​ရွိႏ​ိုင္ဖို​႔ နဲ​႔ ျ​ပင္ဆ​င​္ႏိုင္ဖို​႔ date command ကို ေ​အာက္ပါ​အတို​င​္း အသံုး​ျ​ပဳႏ​ိုင္ပါ​တ​ယ​္။ Raspberry Pi Configuration မျ​ဖစ္မေ​န ျ​ပဳ​လုပ္ရ​မ​ည​္​႔ Configureation မ်ား​ကို sudo raspi-config command အသံုး​ျ​ပဳ​၍ ေ​အာက္ပါ​အတို​င​္း လု​ပ​္ေ​ဆာ​င​္ႏိုင္သ​ည​္။ ပထမ​ဦး​စြာ SD card ၏ capacity ကို အျ​ပ​ည​္​႔​အဝ အသံုးခ်ႏ​ို​င​္ေ​စ​ရ​န​္ 1 Expand Filesystem အား ေ​ရြးခ်​ယ​္ေ​ပး​လိုက္ပါ။ ထို​႔​သို​႔ ေ​ရြးခ်​ယ​္ေ​ပး​လိုက္သ​ည​္ႏွ​င​္​႔ ေ​နာက္တ​စ​္​ႀ​ကိ​မ​္ reboot လုပ္အ​ၿ​ပီး​တြ​င​္ SD card ၏ အရြယ္အ​စား​အတို​င​္း Filesystem က်​ယ​္ျ​ပ​န​္​႔​သြား​မ​ည​္ ျ​ဖစ္ပါ​သ​ည​္။ စကား​ဝွက္ကို ေျ​ပာ​င​္း​လဲ​ရန္အ​တြ​က​္ 2 Change User Password ကို ေ​ရြးခ်​ယ​္ႏိုင္ပါ​သ​ည​္။ သို​႔​မ​ဟု​တ​္ အထက္တြ​င​္ ေ​ဖ​ၚျ​ပ​ခဲ​႔ေ​သာ passwd command န​ည​္း​လ​မ​္း​ကို​လ​ည​္း အသံုး​ျ​ပဳႏ​ိုင္ပါ​သ​ည​္။ 3 Enable Boot to Desktop/Scratch ကို​မူ မျ​ဖစ္မေ​န ေ​ရြးခ်​ယ​္ေ​ပး​သ​င​္​႔​ပါ​သ​ည​္။ ေ​ရြးခ်ယ္မႈ အစီ​အစဥ္သ​ည​္ Raspberry Pi ကို မိမိ​တို​႔ အသံုးခ်​မ​ည​္​႔ အေ​ျ​ခ​အေ​နေ​ပ​ၚ မူ​တ​ည​္​၍ စ​ဥ​္း​စား​ေ​ရြးခ်ယ္ရ​မ​ည​္ ျ​ဖစ္ပါ​သ​ည​္။ boot option မ်ား​မွာ ေ​အာက္ပါအတိုင္း ျဖစ္ပါသည္ - 1 Console Text console, requiring login (default) 2 Desktop Log in as user 'pi' at the graphical desktop 3 Scratch Start the Scratch programming environment upon boot Console ကို ေ​ရြးခ်ယ္ပါ​က login ျ​ပဳ​လုပ္ရ​န​္ လို​အပ​္​ၿ​ပီး command မ်ား​ျ​ဖ​င​္​႔​သာ အသံုး​ျ​ပဳႏ​ိုင္မ​ည​္ ျ​ဖစ္သ​ည​္။ အား​သာခ်က္မွာ ျ​မန္ဆန္စြာ လု​ပ​္ေ​ဆာ​င​္ႏိုင္စြ​မ​္း​ရွိ​ၿ​ပီး headless အသံုး​ျ​ပဳ​မည္ဆို​ပါ​က ေ​ရြးခ်ယ္သ​င​္​႔​ပါ​သ​ည​္။ Desktop ကို ေ​ရြးခ်ယ္ပါ​က user 'pi' အေ​နျ​ဖ​င​္​႔ အလို​အေလ်ာ​က​္ login ျ​ပဳ​လုပ္သြား​မ​ည​္ ျ​ဖ​စ​္​ၿ​ပီး Graphical User Interface ျ​ဖ​င​္​႔ အသံုး​ျ​ပဳႏ​ိုင္မ​ည​္ ျ​ဖစ္သ​ည​္။ အား​န​ည​္းခ်က္မွာ အသံုး​ျ​ပဳ​ရ အန​ည​္း​င​ယ​္ ေႏွးေ​ကြး ႏိုင္ပါ​သ​ည​္။ ယခု​မွ စ​တ​င​္ အသံုး​ျ​ပဳ​သူမ်ား​အေ​နျ​ဖ​င​္​႔ ေ​ရြးခ်​ယ​္ေ​ပး​သ​င​္​႔​ပါ​သ​ည​္။ Scratch Scratch programming ေ​ရး​သား​ရ​န​္ အသ​င​္​႔​အေ​န​အထား​ျ​ဖ​င​္​႔ ပြ​င​္​႔​လာ​မ​ည​္ျ​ဖစ္သ​ည​္။ အဆို​ပါ option ကို အထူး​သျ​ဖ​င​္​႔ ကေ​လး​ငယ္မ်ား​အား Scratch programming သ​င​္​ၾ​ကား​ေ​ပး​ရာ​တြ​င​္ လြယ္ကူလွ်​င​္ျ​မန​္ေ​စ​ရ​န​္ ေ​ရြးခ်​ယ​္ႏိုင္ပါ​သ​ည​္။ 4 Internationalisation Options ကေ​တာ​႔ တစ္ခါ ေ​ရြးခ်ယ္ထား​ၿ​ပီး​ရ​င​္ ထပ္မံ ျ​ပင္ဆင္စ​ရာ မ​လို​ေ​တာ​႔​ပါ​ဘူး။ ေ​အာက္ပါ​ပံု​အတို​င​္း option သံုး​ခု ရွိ​ပါ​တ​ယ​္။ I1 Change Locale I2 Change Timezone I3 Change Keyboard Layout အဲ​ဒီ option ေ​တြ​ထဲ​မွာ I2 Change Timezone ကို အထက္မွာ ေ​ဖာ​္ျ​ပ​ထား​ခဲ​႔​တဲ​႔ sudo dpkg-reconfigure tzdata အစား​လဲ အသံုး​ျ​ပဳႏ​ိုင္ပါ​တ​ယ​္။ က်န္တဲ​႔ option ႏွစ္ခု​ကို​ေ​တာ​႔ မ​လို​အပ္ရ​င​္ မေ​ျ​ပာ​င​္း​လဲ​ဘဲ ထား​ႏိုင္ပါ​တ​ယ​္။ 5 Enable Camera ကေ​တာ​႔ Raspberry Pi နဲ​႔ ကင္မ​ရာ တြဲ​ဖ​က​္ သံုး​ဖို​႔​အတြ​က​္ လို​အပ္လာ​မယ္ဆို​ရ​င​္ Enable ျ​ပဳ​လု​ပ​္ေ​ပး​ဖို​႔ ျ​ဖစ္ပါ​တ​ယ​္။ 6 Add to Rastrack ကေ​တာ​႔ မိမိ​တို​႔ Raspberry Pi ကို Pi Map မွာ မွတ္ပံု​တင္ထား​ဖို​႔ အေပ်ာ​္​သေ​ဘာ သံုး​ႏိုင္ပါ​တ​ယ​္။ 7 Overclock Options ကေ​တာ​႔ မိမိ​တို​႔ Raspberry Pi ကို သတ္မွတ္ခ်က္ထ​က​္ ပို​ၿ​ပီး ျ​မန​္ျ​မန္သံုးခ်င္တဲ​႔​အခါ ျ​ပင္ဆ​င​္ႏိုင္ပါ​တ​ယ​္။ ေ​အာက္မွာ ေ​ဖ​ၚျ​ပ​ထား​တဲ​႔​ထဲ​က Median ကို ေ​ရြးခ်ယ္သ​င​္​႔​ပါ​တ​ယ​္။ Overclocking လုပ္တာ​ဟာ Raspberry Pi ကို ပူ​လာ​ေ​စ​မယ္ဆို​ရ​င​္ သတိထား​သ​င​္​႔​ပါ​တ​ယ​္။ 8 Advanced Options ကေ​တာ​႔ A1 ကေ​န A7 အထိ ေ​နာက္ထ​ပ​္ ခုႏ​ွစ္မ်ိ​ဳး ထပ္မံ ပါ​ရွိ​ပါ​တ​ယ​္။ A1 Overscan - ေ​မာ​္​နီ​တာ​မွာ အမဲ​စ​င​္းေ​တြ ျ​မ​င​္ေ​နရ​ရ​င​္ ခ်ိန္ညွိ​ဖို​႔ အသံုး​ျ​ပဳႏ​ိုင္ပါ​တ​ယ​္။ A2 Hostname - Network ထဲ​မွာ အသံုး​ျ​ပဳ​မ​ယ​္​႔ Raspberry Pi ရဲ​႕ နာ​မည္ကို သတ္မွ​တ​္ေ​ပး​ဖို​႔ အသံုး​ျ​ပဳႏ​ိုင္ပါ​တ​ယ​္။ အမ​ည​္ေ​ပး​ရာ​မွာ a to z, 0 to 9 နဲ​႔ hyphen (-) တို​႔​ကို​သာ အသံုး​ျ​ပဳ​ရ​မွာ ျ​ဖ​စ​္​ၿ​ပီး case-insensitive ျ​ဖစ္တဲ​႔​အတြ​က​္ စာ​လံုး​အႀ​ကီး​အေ​သး ကြာ​ျ​ခား​မႈ မ​ရွိ​ပါ​ဘူး။ Hyphen (-) ကို သံုး​တဲ​႔ေ​န​ရာ​မွာ​လဲ အစ နဲ​႔ အဆံုး​မွာ သံုး​ခြ​င​္​႔​မျ​ပဳ​ပါ​ဘူး။ အျ​ခား သေ​ကၤ​တေ​တြ နဲ​႔ space ေ​တြ​ကို အသံုး​ျ​ပဳ​ခြ​င​္​႔ မျ​ပဳ​ပါ​ဘူး။ Hostname ကို အျ​ခား​န​ည​္း​လ​မ​္း အသံုး​ျ​ပဳ​၍​လ​ည​္း ျ​ပင္ဆ​င​္ႏိုင္ပါ​သ​ည​္။ ထို​သို​႔ျ​ပဳ​လုပ္ရ​န​္ /etc/hostname ဟူ​ေ​သာ configuration file ကို sudo nano /etc/hostname command ျ​ဖ​င​္​႔ ဖြ​င​္​႔​ကာ မိမိ​ေ​ပး​လို​ေ​သာ အမည္ကို အစားထိုး သိ​မ​္း​ဆ​ည​္း​လိုက္ရ​မ​ည​္ ျ​ဖစ္ပါ​သ​ည​္။ ထို​႔ေ​နာ​က​္ sudo /etc/init.d/hostname.sh start ဟူ​ေ​သာ command ျ​ဖ​င​္​႔ startup script အား run ေ​ပး​လို​က​္ျ​ခ​င​္းျ​ဖ​င​္​႔ ျ​ပင္ဆင္မႈမ်ား​ကို အတည္တက် ျ​ဖစ္သြား​ေ​စ​မ​ည​္ ျ​ဖစ္သ​ည​္။ A3 Memory Split - က​ၽြ​န​္ေ​တာ​္​တို​႔​အေ​နျ​ဖ​င​္​႔ Raspberry Pi ေ​ပ​ၚ​တြ​င​္ Memory အား GPU အတြ​က​္ မည္မွ် ခြဲ​ေ​ဝေ​ပး​မ​ည​္ ဆို​သည္ကို သတ္မွ​တ​္ေ​ပး​ရ​န​္ လို​အပ္လာ​မ​ည​္ ျ​ဖစ္ပါ​သ​ည​္။ လို​အပ္ခ်က္အေ​ပ​ၚ မူ​တ​ည​္​၍ ခြဲ​ေ​ဝေ​ပး​ရ​မ​ည​္ ျ​ဖ​စ​္​ၿ​ပီး SSH ကို အဓိက သံုး​မည္ဆို​ပါ​က Memory အား​အတ​တ​္ႏိုင္ဆံုး အန​ည​္း​ဆံုး ခြဲ​ေ​ဝေ​ပး​သ​င​္​႔​ပါ​သ​ည​္။ A4 SSH - ၎​သ​ည​္ default အေ​နျ​ဖ​င​္​႔ Enable ေ​ပး​ထား​ျ​ခ​င​္းျ​ဖ​စ​္​ၿ​ပီး SSH အသံုး​မျ​ပဳ​လို​သ​ည​္​႔ အခ်ိန္တြ​င​္ ပိုမို​လံု​ျ​ခံ​ဳ​မႈ ရွိ​ေ​စ​ရ​န​္ Disable ေ​ပး​ထား​ႏို​င​္ေ​ပသ​ည​္။ A5 SPI - PiFace ကို အသံုး​ျ​ပဳ​သ​ည​္​႔ အခါမ်ိ​ဳး​တြ​င​္ လို​အပ္ပါ​က SPI kernel module အား အလို​အေလ်ာ​က​္ loading ျ​ပဳ​လု​ပ​္ေ​ပး​ႏိုင္ရ​န​္ Enable ျ​ပဳ​လု​ပ​္ေ​ပး​ႏိုင္ပါ​သ​ည​္။ A6 Audio - အသံ​နဲ​႔ ပက္သ​က​္​ၿ​ပီး HDMI ကေ​န ဒါ​မွ​မ​ဟု​တ​္ 3.5mm jack ကေ​န အသံ​ထု​တ​္ေ​ပး​ဖို​႔​ကို ေ​ရြးခ်​ယ​္ေ​ပး​ႏိုင္ပါ​တ​ယ​္။ မေ​သခ်ာ​ရ​င​္ 0 Auto မွာ ထား​လိုက္ပါ။ A7 Update ကေ​တာ​႔ raspi-config ကိုယ္တိုင္ကို update ျ​ပဳ​လုပ္ဖို​႔ လို​အပ္တဲ​႔ အခါ​မွာ အသံုး​ျ​ပဳႏ​ိုင္ပါ​တ​ယ​္။ အထက္ပါ option ေ​တြ​ကို အခ်ိန္မေ​ရြး ျ​ပန္လ​ည​္ ျ​ပင္ဆ​င​္ႏိုင္ပါ​တ​ယ​္။ raspi-config ကို ျ​ပန္လ​ည​္ေ​ခ​ၚ​ယူ​လိုက္ရံု​ပဲ ျ​ဖစ္ပါ​တ​ယ​္။ Raspberry Pi - Static IP address ျ​ဖ​စ​္ေ​အာ​င​္ ျ​ပဳ​လုပ္န​ည​္း Note: Raspberry Pi ၏ network setting မ်ား​ကို /etc/network folder ထဲ​ရွိ interfaces ဆို​ေ​သာ text ဖိုင္ထဲ​တြ​င​္ သိ​မ​္း​ဆ​ည​္း​ထား​ပါ​သ​ည​္။ မိမိ​တို​႔ ျ​ပဳ​ျ​ပင္လို​ေ​သာ network setting မ်ား​ကို အဆို​ပါ ဖိုင္ထဲ​တြ​င​္ ျ​ပင္ဆ​င​္ေ​ရး​သား​ႏိုင္ပါ​သ​ည​္။ သို​႔ေ​သာ​္ သတိထား​ရ​မ​ည​္​႔ အခ်က္မွာ ျ​ပင္ဆင္မႈမ်ား မျ​ပဳ​လုပ္မီ အဆို​ပါ မူ​ရ​င​္း interfaces ဖိုင္ကို ပြား​ယူထား​ရ​န​္ျ​ဖစ္ပါ​သ​ည​္။ ထို​သို​႔ ျ​ပဳ​လုပ္ရန္အ​တြ​က​္ ပထမ​ဦး​စြာ /etc/network ေ​န​ရာ​သို​႔ ေ​ရာ​က​္ေ​အာ​င​္ သြား​ရ​ပါ​မ​ည​္။ ထို​႔ေ​နာ​က​္ ls command ကို သံုး​ၿ​ပီး အဆို​ပါ folder အတြ​င​္း​ရွိ ဖိုင္မ်ား​ကို ၾ​က​ည​္​႔​ပါ။ interfaces ဟူ​ေ​သာ ဖိုင္သ​ည​္ က​ၽြ​န​္ေ​တာ​္​တို​႔ ျ​ပင္ဆင္ရ​မ​ည​္​႔ ဖို​င​္ျ​ဖစ္ပါ​သ​ည​္။ interfaces1 သ​ည​္ မူ​ရ​င​္း​ဖိုင္အား ပြား​ယူထား​လို​က​္ျ​ခ​င​္း ျ​ဖစ္ပါ​သ​ည​္။ ထို​သို​႔ ပြား​ယူ​ရ​န​္ sudo cp interfaces interfaces1 ဟူ​ေ​သာ command ကို အသံုး​ျ​ပဳ​ထား​ျ​ခ​င​္း ျ​ဖစ္ပါ​သ​ည​္။ ျ​ပင္ဆင္လို​သ​ည​္​႔ interfaces ဟူ​ေ​သာ ဖိုင္ကို ဖြ​င​္​႔​ရ​န​္ sudo nano interfaces ဟူ​ေ​သာ command ကို သံုး​ပါ။ ေ​အာက္ပါ​အတို​င​္း ျ​မင္ရ​မ​ည​္ ျ​ဖစ္သ​ည​္ - Ctrl + X ကို ႏွိ​ပ​္​၍ ထြက္လိုက္ပါ။ အထက္ပါ​ပံု​တြ​င​္ အနီ​ေ​ရာင္မ်​ဥ​္း​သားထား​ေ​သာ iface eth0 inet dhcp သ​ည​္ က​ၽြ​န​္ေ​တာ​္​တို​႔ လက္ရွိ​သံုး​ေ​နေသာ Ethernet အား router မွ DHCP ျ​ဖ​င​္​႔ အလို​အေလ်ာ​က​္ register ျ​ပဳ​လု​ပ​္ေ​ပး​ေ​သာ IP ကို ရ​ယူ အသံုး​ျ​ပဳ​ရ​န​္ သတ္မွ​တ​္ေ​ပး​ထား​ျ​ခ​င​္း ျ​ဖစ္သ​ည​္။ အဆို​ပါ စာ​ေ​ၾ​ကာ​င​္း​ကို ျ​ပင္ဆ​င​္ေ​ပး​ရ​န​္ လို​အပ္ပါ​သ​ည​္။ ပထမ​ဦး​စြာ လို​အပ​္ေ​သာ သ​တ​င​္း​အခ်က္အ​လက္မ်ား​ကို စု​ေ​ဆာ​င​္း​ရ​မ​ည​္ ျ​ဖစ္ပါ​သ​ည​္။ ifconfig ကို အသံုး​ျ​ပဳ​ပါ။ အထက္ပါ​ပံု​တြ​င​္ HWaddr b8:27:eb:6f:26:2d သ​ည​္ က​ၽြ​န​္ေ​တာ​္ လက္ရွိ အသံုး​ျ​ပဳ​ေ​န​သ​ည​္​႔ Raspberry Pi ၏ Hardware Address သု​ိ​႔​မ​ဟု​တ​္ MAC Address ျ​ဖစ္ပါ​သ​ည​္။ addr:192.168.1.2 သ​ည​္ Router ၏ DHCP မွ ခ်ေ​ပး​ထား​ေ​သာ IP Address ျ​ဖစ္ပါ​သ​ည​္။ ၎​ကို မိမိ​တို​႔ အလို​ရွိ​ေ​သာ IP Address ျ​ဖ​င​္​႔ အစားထိုး ေျ​ပာ​င​္း​လဲ​ရ​မ​ည​္ ျ​ဖစ္ပါ​သ​ည​္။ ထို​သို​႔ ေျ​ပာ​င​္း​လဲ​ရာ​တြ​င​္ ေ​နာက္ဆံုး​အလံုး​ကို​သာ ေျ​ပာ​င​္း​လဲ​ရ​မ​ည​္ျ​ဖ​စ​္​ၿ​ပီး 1 မွ 255 အၾ​ကား​တြင္သာ ထား​ရွိ​ရ​မ​ည​္ ျ​ဖစ္ပါ​သ​ည​္။ ထို​႔ျ​ပ​င​္ အျ​ခား​ကြန္ပ်ဴ​တာမ်ား​ႏွ​င​္​႔ IP Address တူညီ​မႈ မ​ရွိ​ေ​စ​ရ​န​္ ႀ​ကိ​ဳ​တ​င​္ စာ​ရ​င​္းျ​ပဳ​စု စ​ဥ​္း​စား​ထား​ဖို​႔ လို​အပ္မ​ည​္ျ​ဖစ္ပါ​သ​ည​္။ မ်ား​ေ​သာ​အား​ျ​ဖ​င​္​႔ 1 သ​ည​္ server တစ္ခု​ခု​၏ IP Address ျ​ဖ​စ​္ႏို​င​္ေခ်​ရွိ​သ​လို CPE မ်ား အသံုး​ျ​ပဳ​ထား​ပါ​က 254 သ​ည​္ CPE ၏ IP Address ျ​ဖ​စ​္ႏိုင္ပါ​သ​ည​္။ ထို​႔ျ​ပ​င​္ Router အမ်ား​စု​တြ​င​္ default အေ​နျ​ဖ​င​္​႔ DHCP တြ​င​္ IP Address ကို 100 ႏွ​င​္​႔ 255 အၾ​ကား ခ်​ထား​ေ​ပး​ရ​န​္ သတ္မွတ္ထား​ေ​လ​႔ ရွိ​ပါ​သ​ည​္။ ထို​႔ေ​ၾ​ကာ​င​္​႔ static ip ေ​ပး​ရာ​တြ​င​္ 100 ေ​အာက္ရွိ အျ​ခား server မ်ား​ႏွ​င​္​႔ လြတ္က​င​္း​မ​ည​္​႔ IP Address ကို သတ္မွ​တ​္ေ​ပး​ထား​ရ​န​္ အေ​ရး​ႀ​ကီး​ပါ​သ​ည​္။ Bcast - 192.168.1.255 သ​ည​္ Broadcast IP Range ျ​ဖ​စ​္​ၿ​ပီး မွတ္သား​ထား​ရ​န​္ လို​အပ္ပါ​သ​ည​္။ Mask - 255.255.255.0 သ​ည​္ Subnet Mask Address ျ​ဖ​စ​္​ၿ​ပီး မွတ္သား​ထား​ရ​မ​ည​္ ျ​ဖစ္ပါ​သ​ည​္။ ထို​႔ေ​နာ​က​္ လို​အပ​္ေ​နေ​သး​ေ​သာ အခ်က္အ​လက္အခ်ိ​ဳ​႕ ထပ္မံ​ရ​ယူႏ​ိုင္ရ​န​္ netstat -nr ဟူ​ေ​သာ command ကို အသံုး​ျ​ပဳ​ပါ​မ​ည​္။ အထက္ပါ​ပံု​တြ​င​္ က​ၽြ​န​္ေ​တာ​္​တို​႔​အတြ​က​္ လို​အပ္လာ​မ​ည​္​႔ Destination ႏွ​င​္​႔ Gateway ႏွစ္ခု​ကို မွတ္သား​ထား​ရ​ပါ​မ​ည​္။ Destination : 192.168.1.0 Gateway : 192.168.1.1 အထက္ပါ အခ်က္အ​လက္အား​လံုး​ကို မွတ္စု စာ​အုပ္တြ​င​္ ေ​ရး​မွတ္ထား​ရ​မ​ည​္ ျ​ဖစ္ပါ​သ​ည​္။ Raspberry PI casing ေ​ပ​ၚ​တြင္လ​ည​္း ေ​ရး​မွတ္ထား​သ​င​္​႔​ပါ​သ​ည​္။ ထို​႔ေ​နာ​က​္ /etc/network/ folder အတြ​င​္း​ရွိ interfaces ဖိုင္အ​တြ​င​္း ဝ​င​္ေ​ရာ​က​္ ျ​ပင္ဆင္ရ​န​္ sudo nano /etc/network/interfaces ဟူ​ေ​သာ command ကို အသံုး​ျ​ပဳ​မ​ည​္ ျ​ဖစ္ပါ​သ​ည​္။ ေ​အာက္ပါ​ပံု​တြ​င​္ အနီ​ေ​ရာ​င​္ ကြ​င​္း​ခတ္ထား​ေ​သာ စာ​သားမ်ား​သ​ည​္ static ip ရ​ရွိ​ေ​စ​ရ​န​္ ထ​ည​္​႔​သြ​င​္း ျ​ပဳ​ျ​ပင္ထား​ျ​ခ​င​္း​ပ​င​္ ျ​ဖစ္ပါ​သ​ည​္။ address 192.168.1.2 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 Ctrl + X ကို ႏွိပ္ၿပီး ဖိုင္ကို Save လုပ္လိုက္ပါ။ ေ​နာက္တ​စ​္​ႀ​ကိ​မ​္ sudo reboot အၿ​ပီး​တြ​င​္ IP Address မ်ား​ကို scan ျ​ပဳ​လုပ္ရ​န​္ မ​လို​အပ​္ေ​တာ​႔​ဘဲ Raspberry Pi ၏ IP Address သ​ည​္ 192.168.1.2 ျ​ဖစ္သြား​မ​ည​္ ျ​ဖစ္ပါ​သ​ည​္။ ပိုမို ေ​သခ်ာ​ေ​စ​ရ​န​္ ifconfig command သံုး​၍ IP Address အား စ⁠စ​္ေ​ဆး​ၾ​က​ည​္​႔​ပါ။ ထို​႔ေ​နာ​က​္ Gateway Address 192.168.1.1 အား ping ျ​ပဳ​လု​ပ​္​၍ အတ​ည​္ျ​ပဳႏ​ိုင္ပါ​သ​ည​္။ Raspberry Pi ေ​ပ​ၚ​တြ​င​္ TightVNCserver အား install ျ​ပဳ​လု​ပ​္ျ​ခ​င​္း ယခု​အခါ GUI ျ​ဖ​င​္​႔ အသံုး​ျ​ပဳႏ​ိုင္ရန္အ​တြ​က​္ tightvncserver ကို install ျ​ပဳ​လုပ္ရ​မ​ည​္ ျ​ဖစ္ပါ​သ​ည​္။ အသံုး​ျ​ပဳ​ရ​မ​ည​္​႔ command မွာ sudo apt-get install tightvncserver ျ​ဖစ္ပါ​သ​ည​္။ ထို​႔ေ​နာ​က​္ tightvncserver ကို စ​တင္ရ​န​္ အတြ​က​္ sudo tightvncserver ဟူ​ေ​သာ command ကို အသံုး​ျ​ပဳ​ရ​မ​ည​္ ျ​ဖစ္ပါ​သ​ည​္။ ပထမ​ဆံုး​အႀ​ကိ​မ​္ စ​တင္အ​သံုး​ျ​ပဳ​ရာ​တြ​င​္ Desktop အား access ျ​ပဳ​လုပ္ရ​န​္ စကား​ဝွ​က​္ေ​တာ​င​္း​ခံ​လာ​မ​ည​္ ျ​ဖစ္ပါ​သ​ည​္။ စကား​ဝွက္သ​ည​္ စာ​လံုး​ေ​ရ ၈ လံုး​ထ​က​္ မေက်ာ​္​ရ​ပါ။ View-only password သ​ည​္ မ​လို​အပ္သျ​ဖ​င​္​႔ n ႏွိပ္ကာ ေက်ာ​္​သြား​ႏိုင္ပါ​သ​ည​္။ ယခု​အခါ tightvncserver သ​ည​္ password သတ္မွ​တ​္ေ​ပး​ၿ​ပီး ခ်ိတ္ဆက္အ​သံုး​ျ​ပဳ​ရ​န​္ အသ​င​္​႔​အေ​န​အထား​သို​႔ ေ​ရာက္ရွိ​လာ​ၿ​ပီ ျ​ဖစ္ပါ​သ​ည​္။ Start VNC automatically Raspberry Pi ပါ​ဝါ ေ​ပး​လိုက္တာ​နဲ​႔ အလို​အေလ်ာ​က​္ tightvncserver ကို အလုပ္လု​ပ​္ေ​စ​ဖို​႔ လို​အပ္ပါ​တ​ယ​္။ ဒါ​မွ မ​ဟုတ္ရ​င​္ အၿ​မဲ​တ​မ​္း ssh ကေ​န sudo tightvncserver command ကို အၿ​မဲ run ေ​ပး​ေ​န​ၾ​ကရ​မွာ​ပါ။ ဒါ​ေ​ၾ​ကာ​င​္​႔ tightvncserver အတြ​က​္ autorun ဖို​င​္ တစ္ခု တ​ည​္ေ​ဆာက္ပါ​မ​ယ​္။ sudo nano /etc/init.d/tightvncserver ေ​ပ​ၚ​လာ​တဲ​႔ nano editor ထဲ​မွာ ေ​အာက္ပါ ကုဒ္မ်ား​ကို ေ​ရး​ထ​ည​္​႔ေ​ပး​ရ​ပါ​မ​ယ​္။ # First configure the user you want to run this under - this will generally be pi, unless you've created your own users export USER='pi' eval cd ~$USER # Check the state of the command - this'll either be start or stop case "$1" in start) # if it's start, then start vncserver using the details below su $USER -c '/usr/bin/vncserver :1 -geometry 1280x800 -depth 16 -pixelformat rgb565' echo "Starting vncserver for $USER " ;; stop) # if it's stop, then just kill the process pkill Xtightvnc echo "vncserver stopped" ;; *) echo "Usage: /etc/init.d/vncserver {start|stop}" exit 1 ;; esac exit 0 ၿ​ပီး​ရ​င​္ Ctrl+X ကိုႏ​ွိ​ပ​္​ၿ​ပီး Y ကိုႏ​ွိ​ပ​္ျ​ခ​င​္းျ​ဖ​င​္​႔ startup file ကို သိ​မ​္း​ဆ​ည​္းႏိုင္ပါ​ၿ​ပီ။ ေ​နာက္တစ္ခု​က အဲ​ဒီ startup file ကို run လို​႔ ရေ​အာ​င​္ ေ​အာက္ပါ command သံုး​ၿ​ပီး ျ​ပင္ဆ​င​္ေ​ပး​ရ​ပါ​မ​ယ​္။ sudo chmod 755 /etc/init.d/tightvncserver အဲ​ဒီ​ဖိုင္ကို startup sequence ထဲ ထ​ည​္​႔​ဖို​႔​အတြက္ကေ​တာ​႔ ေ​အာက္ပါ command ကို ေ​နာက္ဆံုး run ေ​ပး​ရ​ပါ​မ​ယ​္။ sudo update-rc.d tightvncserver defaults အခု​ဆို​ရ​င​္ Raspiberry Pi စ​တက္တာ​နဲ​႔ VNC Viewer ကေ​န​တ​ဆ​င​္​႔ ခ်ိတ္ဆက္ရ​န​္ အသ​င​္​႔ ျ​ဖ​စ​္ေ​န​ပါ​ၿ​ပီ။ Raspberry Pi ၏ tightvncserver ကို ကြန္ပ်ဴ​တာ​မွ​တ​ဆ​င​္​႔ ဆက္သြ​ယ​္ ထိ​န​္းခ်ဳ​ပ​္ အသံုး​ျ​ပဳ​န​ည​္း ကြန္ပ်ဴ​တာ​ေ​ပ​ၚ​တြ​င​္ tightvnc အား install ျ​ပဳ​လုပ္ပါ​မ​ည​္။ TightVNC ေ​ဆာ​႔ဖ္ဝဲ​သ​ည​္ windows ကြန္ပ်ဴ​တာ​ေ​ပ​ၚ​တြ​င​္ viewer သာ​မက server ပါ တ​င​္ေ​ပး​ျ​ခ​င​္း ျ​ဖစ္ပါ​သ​ည​္။ ဆိုလို​သည္မွာ windows ကြန္ပ်ဴ​တာ​ေ​ပ​ၚ​မွေ​န​၍ Raspberry Pi အား ခ်ိတ္ဆ​က​္ ထိ​န​္းခ်ဳ​ပ​္ အသံုး​ျ​ပဳႏ​ိုင္သ​လို ၎​ကြန္ပ်ဴ​တာ​ကို​လ​ည​္း အျ​ခား​ကြန္ပ်ဴ​တာ တစ္လံုး​ေ​ပ​ၚ​မွ ခ်ိတ္ဆ​က​္ ထိ​န​္းခ်ဳပ္အ​သံုး​ျ​ပဳႏ​ို​င​္ေ​စ​ရ​န​္ ျ​ပဳ​လုပ္ထား​ျ​ခ​င​္း ျ​ဖစ္ပါ​သ​ည​္။ ေ​အာ​က​္ေ​ဖ​ၚျ​ပ​ပါ ပံု​သ​ည​္ ၎​ကြန္ပ်ဴ​တာ​အား အျ​ခား​ကြန္ပ်ဴ​တာမ်ား​မွ ခ်ိတ္ဆ​က​္ ထိ​န​္းခ်ဳ​ပ​္ အသံုး​ျ​ပဳႏ​ို​င​္ေ​စ​ရ​န​္ server setting မ်ား ျ​ပဳ​လု​ပ​္ေ​ပး​ရသ​ည​္​႔ screen ပံု​ျ​ဖစ္ပါ​သ​ည​္။ အနီ​ေ​ရာ​င​္ ျ​ပ​ထား​ေ​သာ ေ​န​ရာ​သ​ည​္ အျ​ခား​ကြန္ပ်ဴ​တာ​မွ ခ်ိတ္ဆက္ရ​န​္ လို​အပ္သ​ည​္​႔ စကား​ဝွက္ထ​ည​္​႔​သြ​င​္း​ရ​မ​ည​္​႔ ေ​န​ရာ ျ​ဖစ္ပါ​သ​ည​္။ အစိ​မ​္းေ​ရာ​င​္ ျ​ပ​ထား​သ​ည​္​႔ ေ​န​ရာ​မွာ မ​သက္ဆိုင္သူမ်ား​က server setting အား ဝ​င​္ေ​ရာ​က​္ျ​ပင္ဆ​င​္ျ​ခ​င​္း မျ​ပဳႏ​ို​င​္ေ​စ​ရ​န​္ administrative password ျ​ပဳ​လုပ္ထား​ႏိုင္သ​ည​္​႔ ေ​န​ရာ​ပ​င​္ ျ​ဖစ္ပါ​သ​ည​္။ အက​ယ​္​၍ ၎​ကြန္ပ်ဴ​တာ​သ​ည​္ Raspberry Pi အား ခ်ိတ္ဆ​က​္ ထိ​န​္းခ်ဳ​ပ​္ အသံုး​ျ​ပဳ​ရန္အ​တြက္သာ ရည္ရြယ္ထား​ပါ​က ခ​ရ​မ​္းေ​ရာင္ဝို​င​္းျ​ပ​ထား​ေ​သာ Do not change ကို ေ​ရြးခ်​ယ​္ေ​ပး​ႏိုင္ပါ​သ​ည​္။ Raspberry Pi ႏွ​င​္​႔ ခ်ိတ္ဆက္ထိ​န​္းခ်ဳ​ပ​္ႏိုင္ရ​န​္ ပံု​တြ​င​္ ျ​ပ​ထား​သ​ည​္​႔ TightVNC Viewer ကို ဖြ​င​္​႔​ပါ။ Remote Host ေ​န​ရာ​တြ​င​္ Raspberry Pi ၏ IP Address:1 ပံု​စံ ရိုက္ထ​ည​္​႔​ပါ။ ဥပမာ - 192.168.1.2:1 ။ ထို​႔ေ​နာ​က​္ Connect ကို ႏွိပ္ပါ။ ေ​အာက္ပါ​ပံု​ကဲ​႔​သို​႔ Vnc Authentication dialog box ေ​ပ​ၚ​လာ​မ​ည​္ျ​ဖစ္ပါ​သ​ည​္။ Password ေ​န​ရာ​တြ​င​္ tightvncserver ကို Raspiberry Pi တြ​င​္ ပထမ​ဆံုး run စဥ္က ေ​ပး​ထား​ခဲ​႔​သ​ည​္​႔ စကား​ဝွက္ကို ထ​ည​္​႔​သြ​င​္းေ​ပး​ပါ။ စကား​ဝွက္မွန္ကန္ပါ​က ကြန္ပ်ဴ​တာ​ေ​ပ​ၚ​တြ​င​္ Raspberry Pi ၏ Desktop ကို ပံု​ပါ​အတို​င​္း ေ​တြ​႔ျ​မ​င​္ ထိ​န​္းခ်ဳ​ပ​္ အသံုး​ျ​ပဳႏ​ို​င​္​ၿ​ပီ ျ​ဖစ္သ​ည​္။ iOS သို​႔​မ​ဟု​တ​္ Android devices မ်ား​မွ တ​ဆ​င​္​႔ Raspberry Pi အား ခ်ိတ္ဆက္န​ည​္း Raspberry Pi ကို iOS devices ဒါ​မွ​မ​ဟု​တ​္ Android devices ေ​တြ​က​လ​ည​္း ခ်ိတ္ဆ​က​္ ထိ​န​္းခ်ဳ​ပ​္ အသံုး​ျ​ပဳႏ​ိုင္ပါ​တ​ယ​္။ iPhone နဲ​႔ ျ​ဖ​စ​္ေ​စ၊ iPad နဲ​႔ျ​ဖ​စ​္ေ​စ Android Phone ေ​တြ​နဲ​႔ Tablet ေ​တြ​နဲ​႔ျ​ဖ​စ​္ေ​စ အသံုး​ျ​ပဳ​န​ည​္းမ်ား​ကို တ​င​္ျ​ပေ​ပး​သြား​မွာ​ပါ။ iOS 8 ပထမ​ဆံုး မိမိ​တို​႔ iPhone သို​႔​မ​ဟု​တ​္ iPad ရဲ​႕ App Store ကေ​န SSH နဲ​႔ VNC server ေ​တြ​ကို ခ်ိတ္ဆ​က​္ႏိုင္ဖို​႔ app ေ​တြ ရွာ​ေ​ဖြ​ၿ​ပီး install လုပ္ထား​ဖို​႔ လို​ပါ​မ​ယ​္။ လက္ရွိ က​ၽြ​န​္ေ​တာ​္ အသံုး​ျ​ပဳ​ေ​န​တဲ​႔ app ေ​လး​ေ​တြ​ကေ​တာ​႔ SSH အတြ​က​္ Serverauditor နဲ​႔ VNC အတြ​က​္ VNC Viewer app ေ​လး​ေ​တြ​ပဲ ျ​ဖစ္ပါ​တ​ယ​္။ Apple Application Store မွာ ေ​နာက္ထ​ပ​္ အခ​မဲ​႔​ရ​တဲ​႔ networking apps ေ​လး​ေ​တြ အမ်ား​အျ​ပား​ရွိ​ပါ​တ​ယ​္။ ေ​အာက္က ပံု​မွာ app အခ်ိ​ဳ​႕​ကို န​မူ​နာ ျ​ပေ​ပး​ထား​ပါ​တ​ယ​္။ iOS8 မွာ က​ၽြ​န​္ေ​တာ​္ အဓိက တြဲ​ဘ​က​္ အသံုး​ျ​ပဳ​တဲ​႔ app သံုး​ခု​ကေ​တာ​႔ ေ​အာက္မွာ ေ​ဖ​ၚျ​ပ​ထား​တဲ​႔ Fing, Serverauditor နဲ​႔ VNC Viewer တို​႔​ပဲ ျ​ဖစ္ပါ​တ​ယ​္။ ၎​တို​႔​ကို Application store မွာ အခ​မဲ​႔ ရ​ယူႏ​ိုင္ပါ​တ​ယ​္။ Fing Fing ကေ​တာ​႔ အေ​ျ​ခ​ခံ​အက်​ဆံုး app ျ​ဖ​စ​္​ၿ​ပီး အျ​ခား app ေ​တြ​နဲ​႔​ပါ ခ်ိတ္ဆ​က​္​ၿ​ပီး အလုပ္လု​ပ​္ႏိုင္စြ​မ​္း​ရွိ​ပါ​တ​ယ​္။ က​ၽြ​န​္ေ​တာ​္ အႀ​ကိ​ဳက္ဆံုး​ကေ​တာ​႔ အနီ​ေ​ရာ​င​္ ကြ​င​္း​ခ​တ​္ျ​ပ​ထား​သ​လို IP Address နဲ​႔​အတူ Raspberry Pi Foundation ဆို​ၿ​ပီး ျ​ပ​သေ​ပး​ႏိုင္တာ​ေ​ၾ​ကာ​င​္​႔ မိမိ​တို​႔ Raspberry Pi ကို အလြယ္တ​ကူ ရွာ​ေ​ဖြႏ​ိုင္တာ​ပဲ ျ​ဖစ္ပါ​တ​ယ​္။ ေ​အာက္မွာ Fing ကေ​န Scan လု​ပ​္ျ​ပ​ထား​ပါ​တ​ယ​္။ Raspberry Pi ကို ရွာ​ေ​တြ​႔​တဲ​႔​အခါ click လုပ္လိုက္ပါ။ ေ​အာက္ပါ ပံု​အတို​င​္း ျ​မင္ရ​ပါ​လိ​မ​္​႔​မ​ည​္။ Scan Services မွာ 4 services ဆို​ၿ​ပီး ေ​ပ​ၚေ​န​တာ ေ​တြ​႕​ရ​ပါ​လိ​မ​္​႔​မ​ယ​္။ Click ျ​ပဳ​လုပ္လိုက္ပါ။ ေ​အာက္ပါ​ပံု​အတို​င​္း ခ်ိတ္ဆ​က​္ႏိုင္တဲ​႔ Services အမ်ိ​ဳး​အစားမ်ား​ကို ျ​ပ​သေ​ပး​မွာ ျ​ဖစ္ပါ​တ​ယ​္။ အဲ​ဒီ services ေ​လးမ်ိ​ဳး​အန​က​္ သံုးမ်ိ​ဳး​ကို ခ်ိတ္ဆက္လို​႔​ရ​ပါ​တ​ယ​္။ ဒီ​ဥပမာ​မွာ​ေ​တာ​႔ 22 ssh နဲ​႔ 5901 vnc-1 တို​႔​ကို ခ်ိတ္ဆ​က​္ျ​ပ​မွာ ျ​ဖစ္ပါ​တ​ယ​္။ ျ​မား​ျ​ပ​ထား​တဲ​႔ ေ​န​ရာ​ေ​တြ​ကို click ျ​ပဳ​လုပ္မယ္ဆို​ရ​င​္ သက္ဆိုင္ရာ app ေ​တြ​ကို ခ်ိတ္ဆ​က​္ႏိုင္တဲ​႔ menu ေ​တြ ေ​ပ​ၚ​လာ​မွာ ျ​ဖစ္ပါ​တ​ယ​္။ မိမိ install လုပ္ထား​တဲ​႔ app ကို ေ​ရြးခ်​ယ​္​ၿ​ပီး ခ်ိတ္ဆ​က​္ႏိုင္ပါ​တယ္ခင္ဗ်ာ။ ပထမ​ဦး​ဆံုး ssh ကို ေ​ရြးခ်ယ္မွာ ျ​ဖစ္ပါ​တ​ယ​္။ ၄​င​္း​မွာ menu ေ​လးမ်ိ​ဳး​ရွိ​တဲ​႔​အန​က​္ Open with ssh ကို ေ​ရြးခ်​ယ​္ေ​ပး​ျ​ခ​င​္း​အား​ျ​ဖ​င​္​႔ Serverauditor ရဲ​႕ Quick Connect အလိုလို​ပြ​င​္​႔​လာ​မွာ ျ​ဖစ္ပါ​တ​ယ​္။ Serverauditor ကို Fing ကေ​န ခ်ိတ္ဆ​က​္ေ​ခ​ၚ​ယူ​ျ​ခ​င​္း မျ​ပဳ​ဘဲ သီး​သန​္​႔ေ​ခ​ၚ​ယူ အသံုး​ျ​ပဳႏ​ိုင္ပါ​တ​ယ​္။ စကား​ဝွက္ထ​ည​္​႔​သြ​င​္းေ​ပး​ၿ​ပီး​ရ​င​္ Connect ျ​ပဳ​လုပ္လို​႔​ရ​ၿ​ပီ​ျ​ဖစ္ပါ​တ​ယ​္။ စကား​ဝွ​က​္ မွန္ကန္ခဲ​႔လွ်​င​္ ေ​အာက္ပါ​ပံု​အတို​င​္း Raspberry Pi ရဲ​႕ command shell ေ​ပ​ၚ​လာ​မွာ ျ​ဖစ္ပါ​တ​ယ​္။ အထက္မွာ ေ​ဖ​ၚျ​ပ​ထား​ခဲ​႔​တဲ​႔ ကြန္ပ်ဴ​တာ အသံုး​ျ​ပဳ ခ်ိတ္ဆက္စဥ္က process မ်ား​အတို​င​္း update လု​ပ​္ျ​ခ​င​္း​နဲ​႔ tightvncserver အပါ​အဝ​င​္ လို​အပ္တဲ​႔ software မ်ား install ျ​ပဳ​လု​ပ​္ေ​ပး​ရ​ပါ​မ​ယ​္။ Raspberry Pi ကို VNC နဲ​႔ ခ်ိတ္ဆ​က​္ႏိုင္ဖို​႔​အတြ​က​္ Fing ရဲ​႕ 5901 vnc-1 service ဆို​တာ​ကို ေ​ရြးခ်​ယ​္ေ​ပး​ရ​မွာ ျ​ဖစ္ပါ​တ​ယ​္။ ထို​အခါ ေ​အာက္ပါ​အတို​င​္း vnc ကို​ဖြ​င​္​႔​ဖို​႔ menu ႏွစ္ခု​ေ​ပ​ၚ​လာ​တဲ​႔​အခါ​မွာ Open with vnc ဆို​တာ​ကို ေ​ရြးခ်​ယ​္ေ​ပး​လိုက္ပါ။ VNC Viewer app ပြ​င​္​႔​လာ​မွာ ျ​ဖစ္ပါ​တ​ယ​္။ ဒါ​မွ​မ​ဟု​တ​္ VNC Viewer app ကို သီး​သန​္​႔ေ​ခ​ၚ​ယူ အသံုး​ျ​ပဳႏ​ိုင္ပါ​ေ​သး​တ​ယ​္။ Confirmation dialog box မွာ OK ကို click ႏွိ​ပ​္ေ​ပး​လိုက္ပါ။ VNC connection ဟာ Encryption ျ​ပဳ​လုပ္မ​ထား​ဘူး ဆို​တာ​ကို သတိ​ေ​ပး​တဲ​႔ စာ​တန​္းေ​တြ ေ​အာက္ပါ​အတို​င​္း ေ​ပ​ၚ​လာ​ပါ​လိ​မ​္​႔​မ​ယ​္။ Connect ကို​သာ ေ​ရြးခ်​ယ​္ေ​ပး​လိုက္ပါ။ VNC connection အတြ​က​္ လို​အပ္တဲ​႔ စကား​ဝွက္ကို ေ​တာ​င​္း​ခံ​လာ​ပါ​လိ​မ​္​႔​မ​ယ​္။ စကား​ဝွက္ထ​ည​္​႔​သြ​င​္း​ၿ​ပီး Done ကို ႏွိပ္လိုက္ပါ။ စကား​ဝွ​က​္ မွန္ကန္သြားလွ်​င​္ ေ​အာက္ပါ​အတို​င​္း Raspberry Pi ကို ခ်ိတ္ဆ​က​္ ထိ​န​္းခ်ဳ​ပ​္ အသံုး​ျ​ပဳႏ​ိုင္သြား​ၿ​ပီ ျ​ဖစ္ပါ​တ​ယ​္။ Android OS SSH ခ်ိတ္ဆ​က​္ အသံုး​ျ​ပဳ​ပံု အဆ​င​္​႔​ဆ​င​္​႔ VNC ခ်ိတ္ဆ​က​္ အသံုး​ျ​ပဳ​ပံု အဆ​င​္​႔​ဆ​င​္​႔ နိ​ဂံုး Raspberry Pi တစ္လံုး​အား network ကေ​န​တ​ဆ​င​္​႔ headless အသံုး​ျ​ပဳ​ပံုမ်ား​ကို အတ​တ​္ႏိုင္ဆံုး ျ​ပ​ည​္​႔ျ​ပ​ည​္​႔​စံု⁠စံု​ျ​ဖ​စ​္ေ​အာ​င​္ ႀ​ကိ​ဳး​စား​တ​င​္ျ​ပေ​ပး​ထား​ပါ​တ​ယ​္။ Android ဖု​န​္း​တစ္လံုး ဒါ​မွ မ​ဟု​တ​္ iPhone တစ္လံုး ရွိ​ရံု​နဲ​႔ Raspberry Pi ကို ခ်ိတ္ဆ​က​္ ထိ​န​္းခ်ဳ​ပ​္ အသံုး​ျ​ပဳႏ​ိုင္တာ​ေ​ၾ​ကာ​င​္​႔ မျ​ဖစ္မေ​န ေ​လ​႔​လာ​ထား​ရ​မ​ယ​္​႔ န​ည​္း​လ​မ​္းေ​တြ​ပဲ ျ​ဖစ္ပါ​တ​ယ​္။ App ေ​တြ​ကေ​တာ​႔ အခ်ိန္နဲ​႔ လို​က​္​ၿ​ပီး ေျ​ပာ​င​္း​လဲ တိုး​တက္လာႏ​ိုင္ပါ​တ​ယ​္။ Raspberry Pi အေ​န​နဲ​႔​လဲ အမ်ား​ႀ​ကီး တိုး​တ​က​္ ေျ​ပာ​င​္း​လဲ​လာ​ဦး​မွာ​ပါ။ ေ​နာင္တစ္ခ်ိန္မွာ Linux သာ​မက Windows ေ​တြ​ကို​ပါ Raspberry Pi ေ​ပ​ၚ​မွာ run ႏိုင္မွာ ျ​ဖစ္ပါ​တ​ယ​္။ အသံုး​ျ​ပဳ​ပံု န​ည​္း​လ​မ​္းေ​တြ အန​ည​္း​င​ယ​္ ေျ​ပာ​င​္း​လဲ​သြား​ႏို​င​္ေ​ပ​မ​ယ​္​႔ ခ်ိတ္ဆ​က​္ လု​ပ​္ေ​ဆာင္မႈ သေ​ဘာ​သ​ဘာ​ဝေ​တြ ကေ​တာ​႔ တူညီ​ေ​န​ဦး​မွာ ျ​ဖစ္တယ္ဆို​တာ တ​င​္ျ​ပ​ရ​င​္ နိ​ဂံုးခ်ဳပ္လိုက္ရ​ပါ​တ​ယ​္။ Dr. ေ​အာင္ဝ​င​္း​ထြ​ဋ​္(BluePhoenix) 21-3-2015 ရည္ညႊ​န​္း​ကိုး​ကားခ်က္မ်ား 1. http://www.howtogeek.com/124849/how-to-remote-control-your-home-computer-from-anywhere-with-vnc/# 2. http://www.noveldevices.co.uk/rp-hostname 3. https://learn.adafruit.com/adafruit-raspberry-pi-lesson-7-remote-control-with-vnc/overview 4. http://myraspberrypiexperience.blogspot.co.uk/2012/08/My%20Raspberry%20Pi%20Experience%20%20Start%20VNC%20automatically.html 5. ေက်း​ဇူး​တင္လႊ​ာ ဘာ​မွ မ​ဟုတ္တဲ​႔ ဒီ​ေ​ဆာ​င​္း​ပါး​ေ​လး​ကို ေ​ရး​ဖို​႔​အတြ​က​္ လို​အပ္ခ်​က​္ေ​တြ အမ်ား​ႀ​ကီး ရွိ​ခဲ​႔​ပါ​တ​ယ​္။ ေက်း​ဇူး တင္ထိုက္သူ​ေ​တြ​လ​ည​္း အမ်ား​ႀ​ကီး​ပါ​ပဲ။ အထူး​သျ​ဖ​င​္​႔ Raspberry Pi, Banana Pi ေ​တြ​ကို ကူညီ​ပံ​႔​ပိုး​ေ​ပး​ခဲ​႔​တဲ​႔ ညီ​ေ​လး စည္သူ​ေ​အာ​င​္၊ ညီ​ေ​လး ေ​န​လ​င​္းေက်ာ​္၊ အကို​ႀ​ကီး ေ​အာ​င​္ေ​ဇာ​္​ဝ​င​္း၊ အခက္အ​ခဲ​ရွိ​ရ​င​္ သိ​လို​သမွ်​ကို ကူညီ​ေျ​ဖ​ရွ​င​္းေ​ပး​ခဲ​႔​တဲ​႔ Ubuntu Myanmar Loco Team မွ ကို⁠ကို​ရဲ၊ iOS ကို ေ​လ​႔​လာႏ​ိုင္ဖို​႔ iPad မ်ား ပံ​႔​ပိုး ကူညီ​ေ​ပး​ခဲ​႔​ၾ​က​သူမ်ား၊ အမည္မေ​ဖာ​္​ဘဲ Open Education အတြ​က​္ စိတ္အား၊ လူ​အား၊ ေ​ငြ​အား​နဲ​႔ ကူညီ​ေ​ထာက္ပံ​႔ေ​ပး​ေ​န​သူမ်ား အား​လံုး​ကို အထူး​ေက်း​ဇူး​တင္ရွိ​ပါ​ေ​ၾ​ကာ​င​္း ဒီ​ေ​န​ရာ​ကေ​န မွတ္တ​မ​္း​တ​င​္ ဂု​ဏ​္ျ​ပဳ​အပ္ပါ​တ​ယ​္ ခင္ဗ်ာ။

Wednesday, March 4, 2015

အဂၤလန္ႏိုင္ငံသား ဥာဏ္ႀကီးရွင္ အလန္က်ဴးရင္း

ၿဗိတိသွ် သခၤ်ာပညာရွင္ အလန္ က်ဴးရင္း သည္ ကြန္ပ်ဴတာ သိပၸံဘာသာရပ္ႏွင္႔ အသိဥာဏ္တု (AI) ပညာရပ္မ်ား တည္ေထာင္သူမ်ားတြင္ အေရးအပါဆံုး ပုဂၢိဳလ္ အျဖစ္ သတ္မွတ္ျခင္း ခံရသူျဖစ္သည္။ သခၤ်ာတြက္ခ်က္မႈမ်ားႏွင္႔ အီေကြးရွင္းမ်ားကို ေျဖရွင္းႏိုင္ေသာ စက္တစ္လံုးကို ပထမဆံုး အေသးစိတ္ ၾကံဆ ေဖာ္ျပခဲ႔သူလည္းျဖစ္သည္။ သူလုပ္ေဆာင္ခဲ႔သမွ်တြင္ symbolic logic ဘာသာရပ္၊ numerical analysis၊ electrical engineering ႏွင္႔ mechanical vision of human thought processes စသည္တို႔ ေပါင္းစပ္ ပါဝင္ပါသည္။ အလန္ မသီဆန္ က်ဴးရင္း ကို လန္ဒန္တြင္ ေမြးဖြားခဲ႔သည္။ 

ငယ္စဥ္က ပံုမွန္ေက်ာင္းပညာေရး သင္ၾကားခဲ႔ရသည္။ အေစာပိုင္းကပင္ သိပၸံပညာကို စိတ္ဝင္စားမႈ ရွိခဲ႔သည္။ သခၤ်ာေက်ာင္းသား တစ္ဥိး ျဖစ္လာခဲ႔ေသာ္လည္း ဖီေလာ္ေဆာ္ဖီႏွင္႔ ရူပေဗဒ ဘာသာရပ္မ်ားကို လည္း ေပါင္းစပ္ ေလ႔လာခဲ႔သည္။ ငယ္စဥ္က ရင္းႏွီးသည္႔ ေက်ာင္းေနဖက္တစ္ဦး ေသဆံုးသြားခဲ႔မႈေၾကာင္႔ စိတ္ပိုင္းဆိုင္ရာ ဖိစီး ခံစားခဲ႔ရသည္။ ၁၉၃၅ ခုႏွစ္တြင္ ကိန္းဘရစ္ တကၠသိုလ္ ရွိ ကင္း ေကာလိပ္ သို႔ တက္ေရာက္ သင္ၾကားခဲ႔သည္။ သခၤ်ာပညာရွင္ Kurt Gödel ကိုအားက်၍ symbolic logic ႏွင္႔ စိတ္ပိုင္းဆိုင္ရာ လုပ္ေဆာင္မႈမ်ား ေလ႔လာျခင္းကို ေပါင္းစပ္ႏိုင္ရန္ စတင္ႀကိဳးစားခဲ႔သည္။ 
၁၉၃၇ ခုႏွစ္တြင္ ေရးသားထုတ္ေဝခဲ႔ေသာ "On computable Numbers" ဟူေသာ စာတမ္းတြင္ ပံုေသ တြက္ခ်က္နည္း သို႔မဟုတ္ algorithm ကို သတ္မွတ္ေပးမည္႔ က်ဴးရင္းစက္ ၏ အႏွစ္ခ်ဳပ္ အယူအဆကို စတင္မိတ္ဆက္ေပးခဲ႔သည္။ ထုိ႔ျပင္ ထည္႔သြင္းေပးလိုက္သည္႔ မည္သည္႔ ညႊန္ၾကားခ်က္ကိုမဆို ေဆာင္ရြက္ေပးႏိုင္မည္႔ "universal" Turing machine ကိုလည္း ထုတ္ေဖာ္တင္ျပခဲ႔သည္။
သခၤ်ာပညာရပ္တြင္ အဓိက ျပႆနာတစ္ရပ္ ျဖစ္ေနေသာ "decidability" ကို ေျဖရွင္းေပးခဲ႔သည္။ သူ၏ စြမ္းေဆာင္မႈမ်ားေၾကာင္႔ ေခတ္သစ္ကြန္ပ်ဴတာမ်ားအတြက္ (ကြန္ပ်ဴတာ ပစၥည္းတစ္ခု ဘာလုပ္ႏိုင္သည္ ဆိုသည္႔) တြက္ခ်က္မႈစြမ္းရည္ဆိုင္ရာ သီအိုရီ အသစ္တစ္ခု ေပၚေပါက္လာခဲ႔သည္။ ပါရဂူဘြဲ႕ကို ၁၉၃၈ ခုႏွစ္တြင္ အေမရိကန္ ႏိုင္ငံရွိ ပရင္စတန္ တကၠသိုလ္မွ ရရွိခဲ႔ၿပီး ေနာက္ အဂၤလန္သို႔ ျပန္လာခဲ႔သည္။
  (၁၉၃၉-၁၉၄၅) ခုႏွစ္မ်ားတြင္ ဒုတိယ ကမာၻစစ္ျဖစ္ပြားခဲ႔ျခင္းေၾကာင္႔ က်ဴးရင္း၏ သခၤ်ာပညာရွင္ ဘဝ အဆံုးသတ္ခဲ့ရသည္။  ၿဗိတိသွ် ႏိုင္ငံျခားေရးရံုး တြင္ သိပၸံပညာဆိုင္ရာ အေတြးအေခၚမ်ားကို ဝွက္စာေဖာ္ရာတြင္ အေကာင္းဆံုး ထည္႔သြင္း အသံုးခ်ႏိုင္ခဲ႔သည္႔ ဝွက္စာသမားအျဖစ္ တာဝန္ ထမ္းေဆာင္ခဲ႔သည္။ 
အေက်ာ္ၾကားဆံုး ျဖစ္ရပ္မွာ ဂ်ာမန္ေရတပ္သံုး အီနစ္ဂမာ (Enigma) ဆိုက္ဖာကို ေဖာ္ႏိုင္သည္႔ စက္ကို တည္ေဆာက္ခဲ႔ျခင္းျဖစ္သည္။ သူ၏ ေအာင္ျမင္သည္႔ ဝွက္စာေဖာ္ႏိုင္မႈမ်ားေၾကာင္႔ အႏၲလန္တစ္ သမုဒၵရာတြင္ ဂ်ာမန္ သေဘၤာမ်ားကို ေျခရာခံႏိုင္ခဲ႔ၿပီး စစ္ပြဲတြင္ မဟာမိတ္မ်ား ေအာင္ပြဲခံႏိုင္ရန္ အေရးပါေသာ အားသာခ်က္တစ္ခု ျဖစ္ခဲ႔သည္။ 
တာရင္းကို သူ၏ လုပ္ေဆာင္ခ်က္မ်ားၾကာင္႔ ၿဗိတိသွ် အင္ပါယာ၏ Order of the British Empire (OBE) ဆုတံဆိပ္ကို ခ်ီးျမွင္႔ျခင္း ခံရသည္။ ၁၉၄၆ ခုႏွစ္တြင္ သူ၏ အီလက္ထေရာနစ္ နည္းပညာ အေတြ႕အၾကံဳမ်ားကို အသံုးျပဳ၍ ယခင္က တင္ျပခဲ႔ေသာ universal turing machine ကို ဒီဂ်စ္တယ္ ကြန္ပ်ဴတာ ဒီဇိုင္းအေသးစိတ္ အျဖစ္ ေျပာင္းလဲ ဒီဇိုင္းျပဳလုပ္ခဲ႔သည္။
  အေမရိကန္ သုေတသန သမားမ်ားအေနျဖင္႔ အလားတူ တင္ျပမႈမ်ား ယခင္ကပင္ ျပဳလုပ္ခဲ႔ၿပီး ျဖစ္ေသာ္လည္း တာရင္း၏ ဒီဇိုင္းက နည္းပညာ အသစ္တစ္ခု၏ နယ္ပယ္ကို ဆုပ္ကိုင္ႏိုင္ေလာက္ေအာင္ ပိုမို ခရီးေရာက္ခဲ႔သည္။ သို႔ေသာ္ သူအလုပ္လုပ္ေနေသာ အမ်ိဳးသား ရူပေဗဒ ဓာတ္ခြဲခန္း (National Physical Laboratory) အေနျဖင္႔ သူတင္ျပေသာ ကြန္ပ်ဴတာမ်ိဳး လက္ေတြ႔ မတည္ေဆာက္ျဖစ္ခဲ႔ေပ။ 
၁၉၄၈ ခုႏွစ္တြင္ ကြန္ပ်ဴတာ တည္ေဆာက္မႈလုပ္ငန္းမ်ားကို ဦးေဆာင္လုပ္ကိုင္ရန္ မန္ခ်က္စတာ တကၠသိုလ္သို႔ ေျပာင္းေရြ႕လာခဲ႔သည္။ က်ဴးရင္း အေနျဖင္႔ လူ႔ဦးေဏွာက္လုပ္ႏိုင္သမွ်ကို ကြန္ပ်ဴတာက လုပ္ႏိုင္သည္ဆိုေသာ အေျခခံ အယူအဆကို ဆြဲကိုင္ထားခဲ႔သည္။ ၁၉၅၀ ခုႏွစ္တြင္ တင္ျပခဲ႔ေသာ "တြက္ခ်က္မႈဆိုင္ရာ စက္ပစၥည္းမ်ားႏွင္႔ အသိဥာဏ္" (Computing Machinery and Intelligence) ဟူေသာ စာတမ္းသည္ သိပၸံပညာႏွင္႔ အသိဥာဏ္တု ဘာသာရပ္အတြက္ သီအိုရီတစ္ခုကို မွတ္တိုင္တစ္ခုအျဖစ္ စိုက္ထူႏိုင္ခဲ႔သည္။
တာရင္း တင္ျပခဲ႔ေသာ နည္းလမ္းမွာ ထိုေခတ္က အသံုးျပဳလ်က္ရွိသည္႔ တယ္လီပရင္တာလင္႔ teleprinter link မွ တဆင္႔ ကြန္ပ်ဴတာႏွင္႔ လူသားတို႔ ခ်ိတ္ဆက္ကာ စစ္ေဆးရန္ ျဖစ္သည္။ အကယ္၍ ေမးခြန္းတစ္ခုကို ကြန္ပ်ဴတာမွ ျပန္လည္ေျဖၾကားမႈသည္ လူသားမွ ေပးသည္႔ အေျဖႏွင္႔ ခြဲျခား၍ မရႏိုင္လွ်င္ ကြန္ပ်ဴတာအေနျဖင္႔ အသိဥာဏ္ရွိေၾကာင္း ျပသရာေရာက္သည္ဟု က်ဴးရင္းက အဆိုျပဳခဲ႔သည္။
က်ဴးရင္း၏ စက္အသိဥာဏ္ကို စမ္းသပ္ခ်က္ အယူအဆသည္ ယခုအခ်ိန္အထိ စိတ္ပိုင္းဆိုင္ရာ ဖီေလာ္ေဆာ္ဖီ ဘာသာရပ္ကို ကာလရွည္ၾကာစြာ လႊမ္းမိုးထားခဲ႔ၿပီး မၾကာခဏ ေဆြးေႏြးမႈမ်ား ျပဳလုပ္ခဲ႔ၾကသည္။ ၁၉၅၁ ခုႏွစ္တြင္ က်ဴးရင္းကို ေတာ္ဝင္သိပၸံ အသင္းသားအျဖစ္ လက္ခံခဲ႔သည္။ ေနာက္တစ္ႏွစ္တြင္ သက္ရွိသတၱဝါမ်ား ၏ ပံုစံ ႏွင္႔ ပံုသ႑န္ ေျပာင္းလဲပံုကို သခၤ်ာနည္းျဖင္႔ ရွင္းလင္းထားသည္႔ စာတမ္းတစ္ေစာင္ကို စတင္ထုတ္ေဝခဲ႔သည္။
သို႔ရာတြင္ က်ဴးရင္း၏ ပုဂၢလိက အျဖစ္အပ်က္အခ်ိဳ႕ေၾကာင္႔ သူ၏ ပညာရွင္ဘဝ အဆံုးသတ္ခဲ႔ရသည္။ ၁၉၅၂ ခုႏွစ္တြင္ လိင္တူဆက္ဆံမႈႏွင္႔ ၿဗိတိန္ႏိုင္ငံတြင္ ရာဇဝတ္မႈ က်ဴးလြန္ခဲ႔မႈေၾကာင္႔ တရားရင္ဆိုင္ခဲ႔ရသည္။ သူ႔အား ယံုၾကည္စိတ္ခ်ရမႈ မရွိဟု တရားရံုးမွ သတ္မွတ္ခဲ႔ေသာေၾကာင္႔ ေထာင္ဒဏ္က်ခံရမည္ကို ေရွာင္ၾကဥ္ရန္ အီစတိုဂ်င္ ထိုးသြင္းျခင္းကို လက္ခံခဲ႔ရသည္။
သူက လိင္တူ စိတ္ဝင္စားမႈကို ရွက္ရြံ႕မေနဘဲ ပြင္႔ပြင္႔လင္းလင္း ေဖာ္ျပခဲ႔သည္။ သို႔ေသာ္ ထိုအခ်ိန္က လိင္တူဆက္ဆံမႈကို စိတ္ေရာဂါ တစ္ခုအျဖစ္ သတ္မွတ္ထားသည္ ျဖစ္ရာ ေဆးကုသမႈ ခံယူခဲ႔ရသည္။ ၁၉၅၄ ခုႏွစ္တြင္ ဆိုက္ယာႏိုက္ အဆိပ္သင္႔၍ ေသဆံုးခဲ႔ရသည္။ သူေသဆံုးရသည္႔ အေၾကာင္းရင္းကို ေသခ်ာစြာ မသိရွိရေသာ္လည္း တရားရံုးက မိမိကိုယ္မိမိ သတ္ေသျခင္း အျဖစ္ သတ္မွတ္ခဲ႔သည္။
က်ဴးရင္း၏ ဘဝသည္ ပညာရွင္ဆန္လြန္းသည္။ သူ၏ ဘဝ တစ္ေလ်ာက္လံုး သခၤ်ာပညာ၊ ကြန္ပ်ဴတာ၊ ႏိုင္ငံအတြက္ ဝွက္စာေဖာ္ေပးျခင္း၊ အသိဥာဏ္တုဆိုင္ရာ သီအိုရီမ်ား စသည္တို႔ကို ေလ႔လာတီထြင္ရင္း သူ၏ဘဝ ကို ျမွပ္ႏွံထားခဲ႔သူျဖစ္သည္။ ေအာင္ျမင္မႈမ်ားစြာလည္း ရရွိခဲ႔သည္။ သို႔ရာတြင္ ပုဂၢလိကဘဝ၏ အမွားတစ္ခုအတြက္ ဘဝကို အရႈံးေပး အဆံုးသတ္ခဲ႔ရသျဖင္႔ သူ႔အတြက္ေရာ ႏိုင္ငံအတြက္သာမက သူ၏ နည္းပညာမ်ားကို အသံုးျပဳေနသည္႔ လူအမ်ားပါ ထိခိုက္နစ္နာခဲ႔ရပါသည္။
Dr. ေအာင္ဝင္းထြဋ္
(bluephoenix)
ရည္ညႊန္းခ်က္
"Alan Turing." Microsoft Encarta 2009 DVD. Redmond, WA: Microsoft Corporation, 2008.

Saturday, January 24, 2015

ဒီဂ်စ္တယ္ ေဖာင္တိန္ အေၾကာင္း သိေကာင္းစရာမ်ား



ကၽြန္ေတာ္႔အေနနဲ႔ ျမန္မာျပည္အတြက္ Open Education စနစ္တစ္ခု လိုအပ္တယ္လို႔ ေတြးမိတဲ႔အခ်ိန္ကစၿပီး ပညာေရးအေၾကာင္း၊ သင္ၾကားမႈအေၾကာင္းေတြ ေလ႔လာျဖစ္ခဲ႔ပါတယ္။ သင္ၾကားမႈနဲ႔ သင္ယူမႈေတြမွာ နည္းပညာကို ထိထိေရာက္ေရာက္ အသံုးခ်သင္႔တယ္လို႔ ယူဆမိတာေၾကာင္႔ ေငြေၾကးအသင္႔အတင္႔နဲ႔ ထိထိေရာက္ေရာက္ ေရရွည္သံုးလို႔ရမယ္႔ နည္းပညာမ်ိဳးကို ရွာေနခဲ႔မိပါတယ္။ Youtube ထဲမွာ တကၠသိုလ္မ်ားက သင္ၾကားမႈ ဗီဒီယိုေတြကို ၾကည္႔ရင္း ဒီဂ်စ္တယ္ ေဖာင္တိန္ေတြကို သင္ၾကားမႈမွာ အသံုးခ်သင္႔တယ္ဆိုတာ နားလည္လာပါတယ္။ Penn State တကၠသိုလ္ရွိ Teaching and Learning with Technology က ေရးသားခဲ႔တဲ႔ white paper တစ္ေစာင္ကိုဖတ္ရင္း ျမန္မာျပည္က ဆရာမ်ားအတြက္လည္း အသံုးတည္႔မယ္လို႔ ယူဆတဲ႔အတြက္ ျပန္လည္ ေဝမွ်ေပးရျခင္း ျဖစ္ပါသည္ ခင္ဗ်ား။

နိဒါန္း
ဒီဂ်စ္တယ္ ေဖာင္တိန္မ်ားကို အသံုးျပဳၿပီး လက္ေရးမွတ္စုမ်ား၊ ေရးဆြဲထားေသာ ရုပ္ပံုမ်ား ကို မွတ္သားသိမ္းဆည္းထားႏိုင္သလို အခ်ိဳ႕ ဒီဂ်စ္တယ္ ေဖာင္တိန္မ်ားတြင္ အသံဖမ္းႏိုင္ေသာ စနစ္မ်ားပါ ပါဝင္ပါသည္။ ထို႔ေၾကာင္႔ မွတ္စုထုတ္ျခင္း၊ လုပ္ငန္းခြင္တြင္ အသံုးခ်ျခင္းႏွင္႔ ညႊန္ၾကားခ်က္၊ ရွင္းလင္းခ်က္မ်ား ဖန္တီးျခင္းတို႔ကို ျပဳလုပ္ႏိုင္ပါတယ္။ 
ဒီဂ်စ္တယ္ ေဖာင္တိန္ဆိုတာ ဘာလဲ ?
ဒီဂ်စ္တယ္ ေဖာင္တိန္မ်ားကို အမ်ားဆံုး အသံုးျပဳၾကတာကေတာ႔ ကၽြန္ေတာ္တို႔ရဲ႕ လက္ေရးစာမူေတြ၊ မွတ္စုေတြကို သိမ္းဆည္းဖို႔  ျဖစ္ပါတယ္။ အဲဒီလို ဒီဂ်စ္တယ္အသြင္ ေျပာင္းထားတဲ႔ မွတ္စုေတြကို ေဖာင္တိန္ထဲမွာ၊ ကြန္ပ်ဴတာထဲမွာနဲ႔ cloud ကို အလိုအေလ်ာက္ ေပးပို႔ သိမ္းဆည္းတာေတြ ျပဳလုပ္ ႏိုင္ၾကပါတယ္။
ဒီဂ်စ္တယ္ ေဖာင္တိန္အခ်ိဳ႕ကေတာ႔ အသံသြင္းတဲ႔ စနစ္နဲ႔ မွတ္စုေတြကို ခ်ိတ္ဆက္ထားလို႔ ကၽြန္ေတာ္တို႔ ၾကားသမွ်၊ ေျပာသမွ်၊ ေရးသမွ်ကို ဖမ္းယူသိမ္းဆည္းထားႏိုင္ပါတယ္။ အမ်ားစုကေတာ႔ မွတ္စုေတြကို သိမ္းဆည္းျခင္း၊ စီမံခန္႔ခြဲျခင္းနဲ႔ အျပန္အလွန္ေျပာဆို မွတ္သားထားခ်က္မ်ားကို ကြန္ပ်ဴတာ ဒါမွမဟုတ္ တက္ဘလက္၊ စမတ္ဖုန္းေတြနဲ႔ ခ်ိတ္ဆက္ၿပီး ျပဳလုပ္ႏိုင္ပါတယ္။ Penn State တကၠသိုလ္က Teaching and Learning with Technology အေနနဲ႔ ေအာက္ပါ ဒီဂ်စ္တယ္ ေဖာင္တိန္ ေလးမ်ိဳးကို အသံုးျပဳၿပီး စမ္းသပ္မႈေတြ ျပဳလုပ္ခဲ႔တာပဲ ျဖစ္ပါတယ္။
Wacom Inkling Digital Sketch Pen
Livescribe 2 GB Echo Smartpen
Livescribe 2 GB Sky Wi-Fi Smartpen
Livescribe 3 Smartpen Pro Edition for iPad

ဒီဂ်စ္တယ္ ေဖာင္တိန္ေတြ ဘယ္လို အလုပ္လုပ္သလဲ ?
ဒီဂ်စ္တယ္ေဖာင္တိန္မ်ားသည္ သာမန္ ေဘာပင္ တစ္ေခ်ာင္းကဲ႔သို႔ပင္ ေရးသားႏိုင္ေသာ္လည္း  ဒီဂ်စ္တယ္ မွတ္စုမ်ား သိမ္းဆည္းပံုမွာ တစ္ခုႏွင္႔ တစ္ခု ကြဲျပား ျခားနားသည္။ အခ်ိဳ႕ေဖာင္တိန္မ်ားတြင္ ကင္မရာပါဝင္ၿပီး အခ်ိဳ႕ေဖာင္တိန္မ်ားတြင္မူ စာရြက္ကို ညွပ္ထားရသည္႔ ျပင္ပကိရိယာ အကူအညီျဖင္႔ ေဖာင္တိန္၏ ေရြ႕လ်ားမႈကို ဖမ္းယူ မွတ္သားထားျခင္းပင္ ျဖစ္သည္။ အခ်ိဳ႕ေဖာင္တိန္မ်ားက အထူးျပဳလုပ္ထားသည္႔ စကၠဴကို အသံုးျပဳရၿပီး အခ်ိဳ႕မွာ မည္သည္႔ စကၠဴႏွင္႔မဆို အသံုးျပဳႏိုင္သည္။ အထူးျပဳလုပ္ထားေသာ စကၠဴမွာလည္း ေစ်းခ်ိဳေလ႔ ရွိပါသည္။ 
ေဖာင္တိန္အားလံုးအတြက္ ကြန္ပ်ဴတာေပၚတြင္ ေဆာ႔ဖ္ဝဲလ္ ထည္႔သြင္းေပးရန္ လိုအပ္သည္။ သို႔မွသာ ေဖာင္တိန္ႏွင္႔ ကြန္ပ်ဴတာအၾကား သို႔မဟုတ္ အင္တာနက္ cloud သို႔ ဒီဂ်စ္တယ္ဖိုင္မ်ား သိမ္းဆည္းႏိုင္မည္ ျဖစ္သည္။ 

ဒီဂ်စ္တယ္ေဖာင္တိန္မ်ားရဲ႕ ထူးျခားခ်က္မ်ား
ဆရာ၊ ဆရာမမ်ား အေနျဖင္႔ ဒီဂ်စ္တယ္ ေဖာင္တိန္ကို အသံုးျပဳ၍ သရုပ္ျပပံုမ်ား လွ်င္ျမန္စြာေရးဆြဲႏိုင္ၿပီး ေက်ာင္းသား/သူမ်ားအား ထိေရာက္စြာ ေဝမွ် သင္ၾကားႏိုင္မည္ ျဖစ္သည္။ ထို႔ျပင္ ဆရာ/ဆရာမမ်ား အေနျဖင္႔ ရႈပ္ေထြးသည္႔ အေၾကာင္းအရာမ်ား ရွင္းလင္းႏိုင္ရန္ အိမ္ သို႔မဟုတ္ ရံုးခန္းအတြင္း သရုပ္ျပမႈမ်ား ႀကိဳတင္ျပင္ဆင္ထားႏိုင္ေပသည္။ ေက်ာင္းဝင္းအတြင္း စတူဒီယိုျပင္ဆင္ကာ ရိုက္ကူးမည္႔အစား လွ်င္ျမန္လြယ္ကူေသာ ဒီဂ်စ္တယ္ေဖာင္တိန္ျဖင္႔ ရိုက္ကူးထားမႈမ်ားကို တည္းျဖတ္မႈ အနည္းငယ္ျပဳလုပ္ကာ အြန္လိုင္းသို႔ လႊင္႔တင္ႏိုင္မည္ ျဖစ္သည္။ ထို႔ျပင္ ေက်ာင္းသားမ်ားအေနျဖင္႔ ပေရာဂ်က္မ်ားအေပၚ ေဆြးေႏြးတိုင္ပင္ထားသည္႔ မွတ္စုမ်ားအား ဒီဂ်စ္တယ္ ေဖာင္တိန္မ်ားျဖင္႔ မွတ္သားသိမ္းဆည္းထားၿပီး မွတ္စုအားလံုးကို တစ္ေနရာတည္းတြင္ ျပန္လည္ စုစည္းထားႏိုင္မည္ ျဖစ္သည္။
အတန္းတစ္ခုအတြင္း သင္ၾကားေနသမွ် သင္ခန္းစာမ်ား ကိုလည္း ေက်ာင္းသား တစ္ဦးတည္းက ဒီဂ်စ္တယ္ ေဖာင္တိန္ျဖင္႔ မွတ္စုျပဳလုပ္ကာ ကြန္ပ်ဴတာ သို႔မဟုတ္ Dropbox ကဲ႔သို႔ေသာ cloud-based storage system တစ္ခုအတြင္းတြင္ သိမ္းဆည္းထားႏိုင္မည္။ 
လက္ေရးမူျဖင္႔ ေရးသားရန္ အိမ္စာေပးခံရေသာ ေက်ာင္းသားမ်ား အတြက္လည္း ဆရာ၊ ဆရာမကို မိမိလက္ေရးမူ ေပးအပ္လိုက္ခ်ိန္တြင္ မိမိအတြက္ ေသသပ္ ေကာင္းမြန္ေသာ ဒီဂ်စ္တယ္ မိတၱဴတစ္စံု က်န္ရွိေနေပမည္။ 
Inkling ကဲ႔သို႔ေသာ ဒီဂ်စ္တယ္ ေဖာင္တိန္မ်ားသည္ အလုပ္ခြင္အတြင္း ကလစ္ဘုတ္ေပၚတြင္ ညွပ္ထားေသာ စာရြက္အေပၚ ေရးဆြဲထားသမွ်ကို မွတ္တမ္းတင္ သိမ္းဆည္းႏိုင္ေပသည္။ အခ်ိဳ႕ေသာ အင္တာဗ်ဴးႏွင္႔ လက္ေတြ႕ ေမးျမန္း မွတ္သားရသည္႔ လူမႈေရးပညာ၊ စိတ္ပညာႏွင္႔ မႏုႆေဗဒ ပညာရပ္မ်ိဳးအတြက္ အသံဖမ္းယူႏိုင္ေသာ ဒီဂ်စ္တယ္ေဖာင္တိန္မ်ားက အသံုးဝင္လွၿပီး မွတ္စု ေရးသားေနခ်ိန္တြင္ အသံပါ သြင္းထားႏိုင္ေပသည္။

သင္ၾကားမႈႏွင္႔ သင္ယူမႈအေပၚ အက်ိဳးသက္ေရာက္မႈ
ဒီဂ်စ္တယ္ ေဖာင္တိန္မ်ားကို တစ္ကိုယ္ရည္ မွတ္စုထုတ္သူမ်ားအတြက္ အဓိက ရည္ရြယ္ ဖန္တီးထားျခင္း ျဖစ္သည္။ စာသင္ခန္းအတြင္းမွ ေက်ာင္းသားတစ္ဦးအေနျဖင္႔ သင္ခန္းစာမ်ားကို ဒီဂ်စ္တယ္ မွတ္စု ျပဳလုပ္ကာ ဆာဗာတစ္ခုတြင္ စုစည္းထားႏိုင္သည္။ Handwriting recognition program မ်ားကို အသံုးျပဳ၍ လက္ေရးမူမ်ားကို စာသားအျဖစ္ ေျပာင္းလဲေပးႏိုင္သည္။ သိမ္းဆည္းထားသည္႔ စနစ္အေပၚ မူတည္၍ မွတ္စုမ်ားကို ရွာေဖြယူႏိုင္မည္ ျဖစ္သည္။ ထို႔အျပင္ သင္ၾကားမႈစြမ္းရည္အခ်ိဳ႕ နိမ္႔က်ေနသည္႔ ေက်ာင္းသားမ်ားအတြက္ နည္းျပ၏ အသံႏွင္႔ လက္ေရးမွတ္စု ဓာတ္ပံုမ်ား သိမ္းဆည္းထားႏိုင္ျခင္းေၾကာင္႔ မရွင္းလင္းသည္မ်ားကို အခ်ိန္ယူကာ ျပန္လည္နားေထာင္ ေလ႔က်င္႔ႏိုင္မည္ ျဖစ္သည္။ Penn State ႏွင္႔ Auburn တကၠသိုလ္မ်ားတြင္ အဆိုပါ ေက်ာင္းသားမ်ားအတြက္ ဒီဂ်စ္တယ္ ေဖာင္တိန္မ်ား ပံ႔ပိုးထားရွိပါသည္။ 
နည္းျပမ်ားအတြက္လည္း ပံုဆြဲပရိုဂရမ္မ်ား မလိုအပ္ဘဲ လြယ္လင္႔တကူ သရုပ္ျပပံုမ်ား ေရးဆြဲႏိုင္ေစျခင္းေၾကာင္႔ သင္ၾကားမႈကို ပိုမိုလြယ္ကူ ထိေရာက္ေစပါသည္။ စာရြက္ေပၚတြင္ ေရးဆြဲမွတ္သားထားခ်က္မ်ားႏွင္႔ ဒီဂ်စ္တယ္ ေကာ္ပီတို႔အၾကား ျခားနားမႈမရွိဘဲ အရည္အေသြး ေကာင္းမြန္စြာ ရရွိပါသည္။ ထို႔ျပင္ နည္းျပမ်ားအေနျဖင္႔ တြက္ခ်က္ပံု အဆင္႔ဆင္႔ ရွင္းျပခ်က္မ်ားကို အသံႏွင္႔ ရုပ္ပံု ကိုက္ညီမႈရွိေသာ အေသးစား ဗီဒီယိုသင္ခန္းစာမ်ား ဖန္တီးႏိုင္မည္ ျဖစ္ပါသည္။ သမားရိုးက် ဗီဒီယို ကင္မရာမ်ားထက္ သယ္ေဆာင္ရ ေပါ႔ပါးလြယ္ကူၿပီး ခ်ိန္ညွိရန္ အဆင္ေျပေစသည္။ စမ္းသပ္မႈအရ ၉၀%ေသာ ေက်ာင္းသားမ်ားသည္ သာမန္ မွတ္စုမ်ားထက္ ဒီဂ်စ္တယ္ မွတ္စုမ်ားကို ပိုမိုထိေရာက္ေၾကာင္း ယူဆၾကပါသည္။

အားနည္းခ်က္မ်ား
ဝါယာလက္စနစ္ အဆင္မေျပသည္႔ အေျခအေနမ်ိဳးတြင္ အခ်က္အလက္မ်ားကို စုစည္းရန္ USB မွ တဆင္႔သာ ကြန္ပ်ဴတာႏွင္႔ ခ်ိတ္ဆက္ႏိုင္မည္ ျဖစ္သည္။
ဗီဒီယိုမ်ားကို ဖန္တီးရန္ ေဆာ႔ဖ္ဝဲမ်ားႏွင္႔ အျခားတည္းျဖတ္ျခင္းမ်ား ျပဳလုပ္ရန္ လိုအပ္ေနေသးသည္။
အခ်ိဳ႕ သင္ခန္းစာမ်ားကို မွတ္တမ္းတင္ရန္ နည္းျပ သို႔မဟုတ္ ေက်ာင္း၏ ခြင္႔ျပဳခ်က္ လိုအပ္ႏိုင္သည္။
ဒီဂ်စ္တယ္ေဖာင္တိန္ႏွင္႔ ဆက္စပ္ပစၥည္းမ်ား ကုန္က်စားရိတ္ ျမင္႔မားႏိုင္ေပသည္။

လက္ရွိထိေရာက္စြာ အသံုးျပဳေနၾကသူမ်ား
ေအာက္ေဖာ္ျပပါ တကၠသိုလ္ႏွင္႔ ေကာလိပ္မ်ားတြင္ ထိေရာက္စြာ အသံုးျပဳ၍ သင္ၾကား၊ သင္ယူေနၾကၿပီျဖစ္ပါသည္ -
Auburn
Penn State College of Engineering
Penn State Office for Disability Services
Portland Community College

နိဂံုး
အခ်ဳပ္အားျဖင္႔ဆိုရေသာ္ ဒီဂ်စ္တယ္ ေဖာင္တိန္မ်ားသည္ သင္ၾကားမႈႏွင္႔ သင္ယူမႈ ႏွစ္ခုစလံုးအတြက္ ထိေရာက္ေအာင္ အသံုးခ်ႏိုင္မည္ ဆိုပါက အလြန္အက်ိဳးမ်ားေသာ သင္ေထာက္ကူပစၥည္းမ်ား ျဖစ္ၾကပါသည္။ အထူးသျဖင္႔ Open Education ကဲ႔သို႔ေသာ အြန္လိုင္းႏွင္႔ မီဒီယာ အေျချပဳ အခမဲ႔ လြတ္လပ္ ပညာေရး စနစ္မ်ားအတြက္ အထူးလိုအပ္ေနမည္ ျဖစ္ပါသည္။ သို႔မွသာ နည္းျပမ်ားအေနျဖင္႔ မိမိတို႔ အခမဲ႔မွ်ေဝေပးမည္႔ သ င္ခန္းစာမ်ားကို အားလပ္သည္႔အခ်ိန္တြင္ လြယ္ကူလွ်င္ျမန္စြာ ျပင္ဆင္ထားႏိုင္မည္ ျဖစ္ေၾကာင္း တင္ျပလိုက္ရပါသည္။

ရည္ညႊန္းကိုးကားခ်က္မ်ား
Dr. ေအာင္ဝင္းထြဋ္
(BluePhoenix)
http://www.engineer4myanmar.com

Friday, January 9, 2015

အျမဲတမ္းေက်ာင္းသားတစ္ဦး၏ ေလ႔လာမႈ နည္းလမ္းမ်ား

ဒီေဆာင္းပါးေလးကို ကၽြန္ေတာ္တို႔ အ.ထ.က(၁) သဃၤန္းကၽြန္းရဲ႕ ႏွစ္ (၆၀) ျပည္႔ အထိမ္းအမွတ္ မဂၢဇင္းအတြက္ ေရးသားေပးခဲ႔တာ ျဖစ္ပါတယ္ ခင္ဗ်ာ။ အားလံဳး ဖတ္လို႔ရေအာင္ ဒီေနရာမွာ ျပန္လည္ တင္ေပးျခင္း ျဖစ္ပါတယ္ ခင္ဗ်ာ။

      ကၽြန္ေတာ္အေနနဲ႔ ေက်ာင္းသားဘဝကို အႏွစ္ အစိတ္နီးပါး ျဖတ္သန္းခဲ႔ရပါတယ္။ ေက်ာင္းသားဘဝ ၿပီးျပန္ေတာ႔လဲ ဆရာျပန္ျဖစ္ၿပီး ဆက္လက္ေလ႔လာေနရဆဲပါ။ ကၽြန္ေတာ္႔ကိုယ္ ကၽြန္ေတာ္ အၿမဲတမ္း ေက်ာင္းသားတစ္ေယာက္အျဖစ္ ခံယူၿပီး အဆက္မျပတ္ ေလ႔လာသင္ယူေနပါတယ္။ ဒီပညာသင္ႏွစ္ေတြထဲမွာ ကၽြန္ေတာ္ ႀကံဳခဲ႔ရတဲ႔ အေတြ႕အႀကံဳေလးအခ်ိဳ႕ကို ေနာက္မ်ိဳးဆက္သစ္ ညီငယ္၊ ညီမငယ္မ်ား သင္ခန္းစာယူႏိုင္ေစဖို႔ ေျပာျပခဲ႔ခ်င္ပါတယ္ ခင္ဗ်ာ။ 
ကၽြန္ေတာ္ဟာ သိပ္ေတာ္တဲ႔ ေက်ာင္းသားတစ္ေယာက္ေတာ႔ မဟုတ္ခဲ႔ပါဘူး။ ေျပာစမွတ္ တြင္ရေလာက္ေအာင္လဲ မစြမ္းေဆာင္ႏိုင္ခဲ႔ပါဘူး။ ဒါေပမယ္႔ ကၽြန္ေတာ္႔ရဲ႕ ပညာကို လိုလားငတ္မြတ္တဲ႔စိတ္၊ ထက္သန္တဲ႔စိတ္ နဲ႔ ခံယူခ်က္ေတြေၾကာင္႔ ႏွစ္အၾကာႀကီး ေက်ာင္းသားဘဝကို ခံယူျဖစ္ခဲ႔ပါတယ္။ ဒီေဆာင္းပါးမွာ သာမန္ ေက်ာင္းသား/ေက်ာင္းသူ တစ္ေယာက္အေနနဲ႔ အက်ိဳးရွိရွိ အသံုးခ်ႏိုင္မယ္႔ နည္းလမ္းရိုးရိုးေလးေတြကို တင္ျပေပးသြားမွာပါ။ 
ပထမဆံုး စာဖတ္နည္းကို ေဆြးေႏြးတင္ျပလိုပါတယ္။ ဖတ္စာအုပ္ေတြကို ေလ႔လာမယ္ဆိုရင္ ပထမဆံုး စာအုပ္ကို ရင္းႏွီးေအာင္ လုပ္ရပါတယ္။ မေရာက္ဘူးေသးတဲ႔ ၿမိဳ႕တစ္ၿမိဳ႕ကို အၾကမ္းဖ်ဥ္း ေလ႔လာေရး ဆင္းသလိုမ်ိဳး စာမ်က္ႏွာ စံုသေလာက္ ရွိေအာင္ ခပ္ျမန္ျမန္ လွန္ဖတ္ၾကည္႔ေစခ်င္ပါတယ္။ အဲဒီလို ဖတ္တဲ႔ အခါမွာ ေခါင္းစဥ္ေတြ၊ ရုပ္ပံုေတြ၊ ဇယားေတြ၊ ညီမွ်ျခင္းေတြကိုေတာ႔ ျမင္ဖူးေအာင္ နဲနဲအာရံုစိုက္ၿပီး မွတ္သားေစခ်င္ပါတယ္။ ႏွစ္ေခါက္ေလာက္ အဲဒီလို အၾကမ္းဖ်ဥ္း ဖတ္ၿပီးတဲ႔အခါမွာ မာတိကာကို ေသေသခ်ာခ်ာ ဖတ္ဖို႔ အႀကံျပဳလိုပါတယ္။ မာတိကာဟာ စာအုပ္တစ္အုပ္အတြက္ ေျမပံုတစ္ခုလိုပါပဲ။ ကိုယ္သြားခ်င္တဲ႔ ေနရာေတြကို ထိထိေရာက္ေရာက္ ခရီးဆက္ႏိုင္ဖို႔ အကူအညီေပးပါတယ္။ မွတ္သားလိုတဲ႔ စာမ်က္ႏွာေတြကို bookmark ေတြသံုးၿပီး စနစ္တက် မွတ္သားထားေစခ်င္ပါတယ္။ ကပ္ရ ခြာရ လြယ္ကူၿပီး အေရာင္စံုပါတဲ႔ bookmark ေတြကို ေဆာင္ထားသင္႔ပါတယ္။ 
စာအုပ္ကို တကယ္တမ္း ဖတ္တဲ႔ အခ်ိန္မွာ ကိုယ္စိတ္အဝင္စားဆံုး ေနရာက စဖတ္ႏိုင္သလို အစမွ အဆံုး အစဥ္အတိုင္းလဲ ဖတ္ရႈႏိုင္ပါတယ္။ ဒါေပမယ္႔ ကၽြန္ေတာ္ကေတာ႔ ေက်ာင္းစာအုပ္ေတြနဲ႔ နည္းပညာပိုင္းဆိုင္ရာ စာအုပ္ေတြကို ဖတ္တဲ႔အခါမွာ စာေရးသူအေၾကာင္း၊ အမွာစာနဲ႔ မာတိကာေတြကို ဖတ္ၿပီးတာနဲ႔ စိတ္ဝင္စားစရာ အေကာင္းဆံုးေနရာကေန စဖတ္ျဖစ္ပါတယ္။ ဖတ္ရင္း ေရွ႕က ေဖၚျပထားတဲ႔ အေၾကာင္းအရာမ်ားကို သိဖို႔ လိုအပ္လာမွ ရွာဖတ္ေလ႔ရွိပါတယ္။ အဲဒီလို ေရြးခ်ယ္ဖတ္ဖို႔အတြက္ Index ကို သံုးၿပီး ကိုယ္သိခ်င္တဲ႔ အေၾကာင္းအရာ ပါဝင္တဲ႔ စာမ်က္ႏွာေတြကို ရွာေဖြႏိုင္ပါတယ္။ ေနာက္ဆံုး က်မ္းကိုးစာရင္းထဲက ကိုးကားထားတဲ႔ အျခားစာအုပ္၊ စာတမ္းေတြထဲက ကိုယ္႔အတြက္ အသံုးတည္႔ႏိုင္မယ္႔ စာအုပ္ေတြကို ေျခရာခံၿပီး ရွာေဖြဖတ္ရႈျခင္းျဖင္႔ ပိုမိုျပည္႔စံုတဲ႔ သေဘာတရားေတြကို နားလည္လာမွာ ျဖစ္ပါတယ္။
စာအုပ္ဖတ္ရင္းနဲ႔ မွတ္သားသင္႔တဲ႔ အခ်က္မ်ားကို ေတြ႔ၿပီဆိုရင္ မွတ္စုထုတ္ရမွာ ျဖစ္ပါတယ္။ အေရးႀကီးတဲ႔ အခ်က္အလက္မ်ားကို ကာလာျဖင္႔ highlight လုပ္ကာ မွတ္သားျခင္း၊ ေအာက္ေျခမွတ္စုမ်ား footnote ထုတ္ျခင္း ျပဳလုပ္သင္႔ပါတယ္။ အခ်ိဳ႕ကေတာ႔ စာအုပ္ေတြကို ဘာမွေရးသားမွတ္သားတာ မႀကိဳက္ၾကပါဘူး။ ကၽြန္ေတာ္ကေတာ႔ စာအုပ္ကို အသစ္အတိုင္းထားတာထက္ ေနာက္တစ္ႀကိမ္ ျပန္ဖတ္တဲ႔ အခ်ိန္မွာ အေရးႀကီးတဲ႔ အခ်က္ေတြကို ေရြးခ်ယ္ဖတ္ရႈႏိုင္ဖို႔ သပ္သပ္ရပ္ရပ္ မွတ္သားထားတာကို ပိုသေဘာက်ပါတယ္။   ျဖစ္ႏိုင္ရင္ အေၾကာင္းအရာအလိုက္ မွတ္စု စာအုပ္မ်ားမွာ စနစ္တက် မွတ္သားထားရမွာ ျဖစ္ပါတယ္။ အတန္းႀကီး ေက်ာင္းသားမ်ားနဲ႔ တကၠသိုလ္ေက်ာင္းသားမ်ား အေနနဲ႔ ေက်ာင္းသံုးဖတ္စာအုပ္မ်ားအျပင္ အေၾကာင္းအရာတူၿပီး ရႈေဒါင္႔မတူတဲ႔ အျခားစာအုပ္မ်ားကိုပါ ပူးတြဲ ေလ႔လာသင္႔ပါတယ္။ ဒါေၾကာင္႔ မွတ္စုထုတ္တဲ႔အခါမွာ ဘယ္စာအုပ္၊ ဘယ္ေခါင္းစဥ္၊ ဘယ္စာမ်က္ႏွာမွာ ဘယ္လို ေရးထားတယ္ဆိုတာမ်ိဳး အေသးစိတ္မွတ္သားထားၿပီး အျခားစာအုပ္မ်ားမွာ ေရးသားထားခ်က္မ်ားနဲ႔ ႏႈိင္းယွဥ္ေလ႔လာခ်က္မ်ား ျပဳလုပ္သင္႔ပါတယ္။ 
ေနာက္တစ္ခ်က္က စာဖတ္ရင္း၊ စာေရးနည္းစနစ္ကိုပါ တစ္ၿပိဳင္တည္း ေလ႔လာၾကေစခ်င္ပါတယ္။ ဘယ္လို စာမ်ိဳးကို ဘယ္လို စတိုင္မ်ိဳးနဲ႔ ေရးရမယ္။ ဘယ္လို အစပ်ိဳးရမယ္။ ဘယ္လို အဆံုးသတ္ရမယ္ စသျဖင္႔ ေရးသားနည္း စနစ္မ်ားကိုသာမက သဒၵါ၊ ဝါက်တည္ေဆာက္ပံု၊ စကားလံုး သံုးႏႈန္းပံုမ်ားကိုပါ ေလ႔လာမွတ္သားသင္႔ပါတယ္။ ကိုယ္႔အတြက္ ျပန္လည္ကိုးကားၿပီး အသံုးခ်လို႔ရႏိုင္တဲ႔ စာေၾကာင္း၊ စာပိုဒ္မ်ားကို အေသအခ်ာ ကူးယူထားၿပီး ျပန္လည္ရည္ညႊန္းဖို႔အတြက္ စာအုပ္အမည္၊ စာေရးဆရာ၊ ISBN၊ ထုတ္ေဝသည္႔ခုႏွစ္ စသျဖင္႔ စနစ္တက် မွတ္သားထားဖို႔ လိုအပ္ပါတယ္။ 
ကၽြန္ေတာ္ရုရွမွာ ဘႊဲ႕လြန္တက္စဥ္က နည္းပညာ စာတမ္းမ်ားကို ေရးသား ဖတ္ၾကားခဲ႔ရပါတယ္။ အင္မတန္ ခက္ခဲတဲ႔ အေၾကာင္းအရာေတြကို သူမ်ား ဘာသာစကားနဲ႔ ရွင္းျပဖို႔ ေရးသားဖို႔ဆိုတာ မလြယ္လွပါဘူး။ ကၽြန္ေတာ္က ဘာသာစကားသိပ္မထူးခၽြန္ေပမယ္႔ အႀကံဥာဏ္ေကာင္းေတြ ရွိလို႔ အဆင္ေျပခဲ႔ပါတယ္။ အထက္က ကၽြန္ေတာ္ေျပာခဲ႔ဖူးသလို သူမ်ား စာတမ္းေတြကို ဖတ္ရင္း အသံုးမ်ားေလ႔ရွိတဲ႔ ေရးဟန္ေတြကို စုေဆာင္းခဲ႔ပါတယ္။ စာတမ္းဖတ္ပြဲေတြကို နားေထာင္ၿပီးေတာ႔လဲ တင္ျပပံုေတြကို ေရးမွတ္ထားခဲ႔ပါတယ္။ ကၽြန္ေတာ္ကိုယ္တိုင္ ေရးသား တင္ျပတဲ႔ အခ်ိန္မွာေတာ႔ စုေဆာင္းထားတဲ႔ နမူနာေတြကို အေၾကာင္းအရာ ေျပာင္းလဲၿပီး ျပင္ဆင္ေရးသားႏိုင္ခဲ႔ပါတယ္။ ဒါေၾကာင္႔ ဘယ္လို ေရးသား ေျပာဆိုရမလဲဆိုတဲ႔ အခ်က္ကို ဗ်ာမ်ားေနစရာ မလိုေတာ႔ဘဲ အေၾကာင္းအရာပိုင္းကို အာရံုစိုက္ႏိုင္ခဲ႔ပါတယ္။ 
ကၽြန္ေတာ္႔အေနနဲ႔ ေက်ာင္းသားေတြကို အလယ္တန္းနဲ႔ အထက္တန္းေက်ာင္းသားဘဝမွာ စာစီစာကံုးနဲ႔ Essay ေတြကို ကၽြမ္းကၽြမ္းက်င္က်င္ ေရးသားႏိုင္ေအာင္ ေလ႔က်င္႔ၾကေစခ်င္ပါတယ္။ အဲဒီလို ေလ႔က်င္႔တဲ႔ အခ်ိန္မွာ သူမ်ား ေရးသားထားသမွ်ကို အလြတ္မက်က္ဘဲ ေရးနည္းေရးဟန္ကိုသာ ေလ႔လာေစခ်င္ပါတယ္။ ျဖစ္ႏိုင္ရင္ အကိုးအကား စာအုပ္စာတမ္းမ်ား အသံုးျပဳရံုမွ်သာမက ကိုယ္ေရးသားမည္႔ အေၾကာင္းအရာကို မ်က္ျမင္ကိုယ္ေတြ႕ အခ်ိန္ေပးေလ႔လာၿပီး ဓာတ္ပံု၊ ဗီဒီယို မွတ္တမ္းမ်ား ရယူျခင္း၊ လူေတြ႕ ေမးျမန္းထားမႈမ်ားကိုပါ အသံုးခ်ၿပီး က်က်နန ေရးသားၾကေစခ်င္ပါတယ္။ ဒီေန႔ေခတ္မွာ Discovery channel အပါအဝင္ တီဗီအစီအစဥ္ေကာင္းမ်ားစြာကေန အေၾကာင္းအရာေပါင္းစံုကို အလြယ္တကူ ေလ႔လာႏိုင္ပါတယ္။ အင္တာနက္ကေနလဲ youtube၊ wikipedia စတဲ႔ ေနရာေတြကေန ေလ႔လာႏိုင္ပါတယ္။ ညီငယ္၊ ညီမငယ္တို႔မွာ မွတ္မွတ္သားသား လုပ္တတ္တဲ႔ အက်င္႔ေလးသာ ရွိေနမယ္ဆိုရင္ စာစီစာကံုးနဲ႔ Essay ေရးသားဖို႔ဆိုတာ အရမ္းကို လြယ္ကူပါတယ္။ ေနာင္တစ္ခ်ိန္ အလုပ္ခြင္ထဲမွာ အစီရင္ခံစာ၊ proposal စသျဖင္႔ တင္ၾကရတဲ႔ အခ်ိန္ေတြမွာ အထက္က အေလ႔အက်င္႔ေကာင္းေလးေတြက ညီငယ္၊ ညီမငယ္မ်ားကို အေထာက္အကူ ျပဳမွာ ျဖစ္ပါတယ္။
ဒါ႔အျပင္ ညီငယ္၊ ညီမငယ္မ်ား အေနနဲ႔ ငယ္စဥ္ကထဲက ေန႔စဥ္မွတ္တမ္း ေရးသားျဖစ္ေအာင္ တိုက္တြန္းခ်င္ပါတယ္။ ျမန္မာလူမ်ိဳး အမ်ားစုဟာ မွတ္တမ္း ေရးသားမႈ အပိုင္းမွာ အားနည္းၾကတာကို သတိထားမိပါတယ္။ မွတ္တမ္းေတြ ေရးသားထားျခင္းျဖင္႔ ဘယ္စာအုပ္မွာမွ ရွာမရႏိုင္တဲ႔ ကိုယ္႔ဘဝရဲ႕ အေၾကာင္းအရာေတြကို တစ္စုတစ္စည္းတည္း မွတ္သားထားႏိုင္မွာ ျဖစ္ပါတယ္။ ဒီမွတ္တမ္းေတြထဲကေန သင္ခန္းစာေတြ ျပန္ယူလို႔ရသလို ေနာက္မ်ိဳးဆက္သစ္ေတြ အတြက္လည္း မွတ္သားစရာ အမ်ားႀကီး ခ်န္ထားခဲ႔ႏိုင္မွာပါ။ အေနာက္တိုင္းသားေတြဟာ ဒီလို မွတ္တမ္းေတြကေန သူတို႔ရဲ႕ အေတြ႕အႀကံဳေတြကို တစ္ေယာက္နဲ႔ တစ္ေယာက္ လက္ဆင္႔ကမ္းခဲ႔ၾကၿပီး နယ္ခ်ဲ႕တဲ႔အခ်ိန္၊ ကုန္သြယ္တဲ႔ အခ်ိန္ေတြမွာပါ အသံုးခ်ခဲ႔ၾကတာကို သိရွိမွတ္သားရဖူးပါတယ္။ 
ေနာက္တစ္ခုက မွတ္တမ္းေရးသားရင္း ကိုယ္႔ကိုယ္ကို မွန္ၾကည္႔သလို ျပန္ၾကည္႔ျဖစ္တဲ႔အတြက္ သံုးသပ္ဆင္ျခင္မိတဲ႔ အက်ိဳးေက်းဇူးကို ရႏိုင္ပါတယ္။ တေန႔တာ ကိုယ္ေတြ႕ႀကံဳရသမွ်ေလးကို နဲနဲခ်င္းမွတ္သားခဲ႔ျခင္းျဖင္႔ တစ္ႏွစ္ကုန္ဆံုးတဲ႔အခ်ိန္မွာ အမွတ္ရစရာေတြ အမ်ားႀကီး စုမိလာမွာပါ။ ေနာင္တစ္ခ်ိန္ ကိုယ္လိုအပ္လာလို႔ ဆံုဖူးတဲ႔ လူေတြ၊ အလုပ္အကိုင္ေတြ၊ ေနရာေတြ အေၾကာင္းကို အလြယ္တကူ ျပန္လည္ ရွာထုတ္ႏိုင္မွာ ျဖစ္ပါတယ္။ ဒီလို ေန႔စဥ္မွတ္တမ္းမ်ိဳးကေန ေနာက္ပိုင္း အလုပ္ခြင္ဝင္ၾကရတဲ႔ အခ်ိန္မွာ အလုပ္ခြင္မွတ္စု၊ နည္းပညာမွတ္စု စသျဖင္႔ အရာရာကို စနစ္တက် မွတ္သားထားတဲ႔ အက်င္႔ေကာင္းေလးကို ရရွိသြားႏိုင္မွာ ျဖစ္ပါတယ္။ ေနာင္တစ္ခ်ိန္မွာ စာေရးျခင္း အတတ္ပညာနဲ႔ ေပါင္းစပ္ႏိုင္မယ္ဆိုရင္ စာေရးဆရာေကာင္း တစ္ေယာက္ ျဖစ္လာဖို႔အတြက္ လမ္းစလဲ ျဖစ္ႏိုင္ပါေသးတယ္။
ျဖစ္ႏိုင္ရင္ေတာ႔ IT နည္းပညာကို ငယ္ငယ္ကထဲက ေလ႔လာၿပီး ထိထိေရာက္ေရာက္ အသံုးခ်တတ္ေစခ်င္ပါတယ္။ အမ်ားႀကီး တတ္ဖို႔ မလိုပါဘူး။ အေျခခံက်က် ေသေသခ်ာခ်ာ တတ္ၿပီး ထိထိေရာက္ေရာက္ အသံုးခ်တတ္မယ္ဆိုရင္ Microsoft Office Suit တစ္ခုတည္းနဲ႔ အသက္ေမြးလို႔ရပါတယ္။ ေတာ္ေတာ္လဲက်ယ္ျပန္႔ၿပီး ရံုးအလုပ္မွန္သမွ်ကို ထိထိေရာက္ေရာက္နဲ႔ အဆင္႔ျမင္႔ျမင္႔ လုပ္ႏိုင္မွာ ျဖစ္ပါတယ္။ ျမန္မာျပည္က သင္တန္းေတာ္ေတာ္မ်ားမ်ားမွာ အဲဒီေလာက္ အဆင္႔အထိကို သင္ေပးတာ သိပ္မေတြ႕ရပါဘူး။ ဒါေၾကာင္႔ ကိုယ္႔ဘာသာကိုယ္ ေသေသခ်ာခ်ာ ေလ႔လာရမွာ ျဖစ္ပါတယ္။ Office ကို စာစီစာရိုက္လုပ္ဖို႔၊ စာရင္းဇယား အၾကမ္းဖ်င္းလုပ္ဖို႔၊ Presentation လုပ္ဖို႔ ေလာက္ပဲ သံုးရေကာင္းမွန္း သိေသးရင္ အဆံုးထိ ဆက္ေလ႔လာၾကေစခ်င္ပါတယ္။  ကြန္ပ်ဴတာကို သံုးၿပီး မွတ္စု က်က်နန ထုတ္တတ္ေအာင္၊ database ေတြ ေဆာက္ၿပီး အခ်က္အလက္အေျမာက္အမ်ားကို အလြယ္တကူ ဆက္စပ္ ရွာေဖြ ကိုင္တြယ္တတ္ေအာင္၊ လုပ္ငန္းႀကီး တစ္ခုကို စာရင္းအင္း အက်အန ျပဳစုဖို႔၊ ပံုႏွိပ္ထုတ္ေဝေရးလုပ္ဖို႔၊ အစည္းအေဝးေတြ အတြက္ စုေပါင္းျပင္ဆင္တာ၊ လုပ္ငန္းေတြကို ခြဲျခားလုပ္ကိုင္ၿပီး ျပန္လည္ေပါင္းစပ္တာ စသျဖင္႔ တကယ္အသံုးတည္႔တဲ႔ နည္းလမ္းေတြကို ကြန္ပ်ဴတာနဲ႔ လုပ္တတ္ေအာင္ ႀကိဳးစားၾကရမွာ ျဖစ္ပါတယ္။ 
ဒီေန႔ေခတ္မွာ အဂၤလိပ္စာဟာ သိရံုသိလို႔ မရေတာ႔တဲ႔အတြက္ ေသေသခ်ာခ်ာ တတ္ကၽြမ္းေအာင္ သင္ၾကားၾကေစခ်င္ပါတယ္။ ကၽြန္ေတာ္တို႔ျမန္မာႏိုင္ငံမွာ သူငယ္တန္းကစၿပီး တကၠသိုလ္အထိ အဂၤလိပ္စာကို ဆယ္ႏွစ္ေက်ာ္ သင္ၾကားရေပမယ္႔ သိပ္မထိေရာက္တာကို သတိထားမိပါတယ္။ ကၽြန္ေတာ္ကိုယ္တိုင္က အဂၤလိပ္စာကို ဖတ္တာ၊ ဘာသာျပန္တာ ႏွစ္ခုပဲ ေကာင္းေကာင္းရပါတယ္။ ကၽြန္ေတာ္႔ ညီငယ္၊ ညီမငယ္မ်ားကိုေတာ႔ ဘက္စံုက ထူးခၽြန္ၾကေစခ်င္ပါတယ္။ ဒါေၾကာင္႔ အဂၤလိပ္ေက်ာင္းမွာ Native Speaker နဲ႔ မသင္ၾကရေပမယ္႔ အတတ္ႏိုင္ဆံုး မိမိဘာသာ ေလ႔လာႏိုင္တဲ႔ နည္းလမ္းေတြ ေပးပါ႔မယ္။ အလြယ္ဆံုးနည္းကေတာ႔ ရုပ္ရွင္နဲ႔ ေလ႔က်င္႔ျခင္းပါ။ ဇာတ္ကား ေကာင္းေကာင္း၊ ျဖစ္ႏိုင္ရင္ ႏိုင္ငံေရး၊ လူမႈေရး၊ စီးပြားေရး အေၾကာင္းအရာေတြကို ေဆြးေႏြးခ်က္ေတြ ပါတဲ႔ ဇာတ္ကားမ်ားကို အဂၤလိပ္စာတန္းထိုးတစ္လွည္႔ ျမန္မာ စာတမ္းထိုး တစ္လွည္႔ အႀကိမ္ႀကိမ္ ၾကည္႔ေစခ်င္ပါတယ္။ ျမန္မာစာတမ္းေတြ ကို အလံုးစံု အားမကိုးဘဲ အဘိဓာန္ ေဘးမွာ ခ်ထားၿပီး တိုက္ဆိုင္ စစ္ေဆးကာ ေလ႔လာေစခ်င္ပါတယ္။ ဇာတ္ကားကို အဓိက မၾကည္႔ဘဲ အသံထြက္၊ ေလယူေလသိမ္း၊ ေျပာဆိုသည္႔ စကားလံုးမ်ားကို မွတ္စုထုတ္ကာ မွတ္သားရင္း ေလ႔က်င္႔ႏိုင္ပါတယ္။ အေကာင္းဆံုးက Discovery channel က လာတဲ႔ အေၾကာင္းအရာေတြပါ။ ေနာက္တစ္ခုက သမၼတေတြရဲ႕ မိန္႔ခြန္းေတြ၊ ပညာရွင္ေတြ၊ စီးပြားေရးသမားေတြရဲ႕ မိန္႔ခြန္းနဲ႔ စကားစစ္ထိုးေတြ ျဖစ္ပါတယ္။ 
အဂၤလိပ္ သတင္းစာေတြကိုလဲ အင္တာနက္မွာ အခမဲ႔ဖတ္ရႈႏိုင္ၿပီျဖစ္လို႔ ေလ႔လာစရာေတြက မ်ားလြန္းလွပါတယ္။ ကိုယ္ေလ႔လာမိသမွ်ကို အဂၤလိပ္စာ ေလ႔လာေနတဲ႔ သူငယ္ခ်င္းေတြ၊ ဆရာေတြနဲ႔ ေဆြးေႏြး ေမးျမန္းသင္႔ပါတယ္။ သာဘာျပန္ေလ႔က်င္႔ဖို႔အတြက္ေတာ႔ အဂၤလိပ္ တစ္ေၾကာင္း၊ ျမန္မာ တစ္ေၾကာင္း ေလ႔က်င္႔ ဘာသာျပန္ဆိုကာ နားလည္တတ္ကၽြမ္းသူမ်ားကို စစ္ေဆးခိုင္းသင္႔ပါတယ္။ ကြန္ပ်ဴတာ အသံုးျပဳခြင္႔ရမယ္ဆိုရင္ေတာ႔ Microsoft Encarta နဲ႔ Britannica လိုမ်ိဳး စြယ္စံုက်မ္းေတြကို ထည္႔သြင္း ဖတ္ရႈေစခ်င္ပါတယ္။ အဲဒီလို ေလ႔လာရင္း ကိုယ္မသိေသးတဲ႔ စကားလံုးေတြကို meaning ထုတ္ၿပီး ကိုယ္ပိုင္ အဘိဓာန္ တစ္ခု စုေဆာင္းထားၾကေစခ်င္ပါတယ္။ ေနာင္တစ္ခ်ိန္မွာ အဖိုးတန္လာမွာ ေသခ်ာပါတယ္။ ကၽြန္ေတာ္႔အေနနဲ႔ အဲဒီလို စုေဆာင္းရင္း ရုရွ-အဂၤလိပ္-ျမန္မာ လွ်ပ္စစ္အင္ဂ်င္နီယာအဘိဓာန္ တစ္အုပ္ကို ျပဳစုႏိုင္ခဲ႔ပါတယ္။ 
ကၽြန္ေတာ္႔အေနနဲ႔ ညီငယ္၊ ညီမငယ္မ်ားကို အင္တာနက္သံုးၿပီး ပညာရွာတတ္ေအာင္ ေလ႔လာၾကဖို႔ တိုက္တြန္းလိုပါတယ္။ အင္တာနက္မွာ အေၾကာင္းအရာ ေပါင္းစံု ရွိပါတယ္။ အဖိုးမတန္တဲ႔ အေၾကာင္းအရာေပါင္းစံုလည္း ပါဝင္ပါတယ္။ ကိုယ္က အသံုးခ်တတ္ရင္ အင္တာနက္ဟာ တကၠသိုလ္ႀကီး တစ္ခုလိုပါပဲ။ အသံုးမခ်တတ္ရင္ေတာ႔ အညွီအေဟာက္ေတြ၊ ဒုစရိုက္ေတြနဲ႔ အခ်ိန္ျဖဳန္းတဲ႔ ေနရာတစ္ခု ျဖစ္သြားႏိုင္ပါတယ္။ ကၽြန္ေတာ္ကေတာ႔ အင္တာနက္ကေန ပညာေရးနဲ႔ အလုပ္အကိုင္ အခြင္႔အလမ္းမ်ားကို ရွာၾကေစခ်င္ပါတယ္။ အင္တာနက္မွာ အခမဲ႔ သင္ယူလို႔ရတဲ႔ အြန္လိုင္း တကၠသိုလ္ေတြ ရွိပါတယ္။ ပညာေတာ္သင္ အခြင္႔အေရးေတြလည္း ရွိႏိုင္ပါတယ္။ ဒါကို ေလ႔လာၿပီး အသံုးခ်တတ္ေအာင္ ႀကိဳးစားၾကရမွာပါ။ ႏိုင္ငံျခားကို ေငြေၾကး အေျမာက္အမ်ား အကုန္ခံၿပီး ေက်ာင္းသြားတက္စရာ မလိုဘဲနဲ႔ ျပည္တြင္းကေန တကၠသိုလ္ႀကီးေတြက ဆရာေကာင္းေတြ သင္ေပးေနတဲ႔ သင္ခန္းစာေတြကို youtube ကေန တစ္ဆင္႔ ေလ႔လာႏိုင္ပါတယ္။ ဒါေၾကာင္႔ ကိုယ္႔မွာ အဲဒီ သင္ခန္းစာေတြကို နားလည္ႏိုင္မယ္႔ အဂၤလိပ္စာ အေျခခံရယ္၊ အင္တာနက္ရယ္ ရႏိုင္မယ္ဆိုရင္ ဘာမဆို ေလ႔လာလို႔ ရႏိုင္ၿပီ ျဖစ္ပါတယ္။
နိဂံုးခ်ဳပ္အေနနဲ႔ ညီငယ္၊ ညီမငယ္မ်ားကို မျဖစ္ႏိုင္ဘူးဆိုတာေတြ မေျပာၾကေစခ်င္ဘဲ၊ ျဖစ္ေအာင္လုပ္မယ္႔ စိတ္ဓာတ္ေတြ ေမြးၾကဖို႔ တိုက္တြန္းလိုပါတယ္။ "ငါတို႔မွာ ဘာမွ မရွိဘူး၊ အင္တာနက္မေကာင္းဘူး၊ ပိုက္ဆံ မတတ္ႏိုင္ဘူး" စသျဖင္႔ စိတ္ပ်က္မေနၾကဘဲ ရသမွ် resources၊ ရသမွ် နည္းလမ္းေတြသံုးၿပီး ကိုယ္လက္လွမ္းမီရာ ေလ႔လာသင္ယူၾကေစခ်င္ပါတယ္။ စုေပါင္း ေဆာင္ရြက္ျခင္း အေလ႔အက်င္႔ေကာင္းကိုလည္း ေက်ာင္းသားဘဝမွာ စတင္ က်င္႔သံုးၾကေစခ်င္ပါတယ္။ အထက္က ေျပာခဲ႔တဲ႔ အားနည္းခ်က္၊ လိုအပ္ခ်က္ေတြကို အခ်င္းခ်င္း စည္းစည္းလံုးလံုးနဲ႔ ဝိုင္းဝန္းေလ႔လာၾကမယ္ဆိုရင္ အလြယ္တကူ ေက်ာ္ျဖတ္သြားႏိုင္မွာ ျဖစ္ပါတယ္။ Sharing is caring ဆိုတဲ႔  စကားအတိုင္း ကိုယ္သိတာကို ျပန္လည္ေဝမွ်ေပးဖို႔ လိုအပ္ပါတယ္။ တတ္လာတဲ႔ ပညာမွန္သမွ်ကိုလည္း လိုအပ္ေနတဲ႔ ေနရာတိုင္းမွာ လက္ေတြ႕ အသံုးခ်ႏိုင္ဖို႔ ႀကိဳးစားၾကရဦးမွာပါ။ လက္ေတြ႕ အသံုးမခ်ႏိုင္ေသးတဲ႔ ပညာမွန္သမွ် မျပည္႔စံုေသးဘူးဆိုတာကို သေဘာေပါက္ၾကေစခ်င္ပါတယ္။ ေနာက္ဆံုးအခ်က္အေနနဲ႔ မိမိတို႔မွာ တျခား အရင္းအႏွီး မျပည္႔စံုခဲ႔ရင္ေတာင္ ရိုးသားျခင္းကို အရင္းအႏွီးတစ္ခုအျဖစ္ အသံုးခ်ပါလို႔ မွာခ်င္ပါတယ္။ ညီငယ္၊ ညီမငယ္မ်ား အားလံုး အနာဂတ္ရဲ႕ မ်ိဳးဆက္သစ္ေတြအေနနဲ႔ အစစ အရာရာ ဘက္စံုထူးခၽြန္ၿပီး ႏိုင္ငံအက်ိဳး၊ မိမိအက်ိဳးကို သယ္ပိုးေဆာင္ရြက္ႏိုင္ၾကပါေစလို႔ ဆုမြန္ေကာင္း ေတာင္းေပးလိုက္ပါတယ္ကြယ္။

Dr. ေအာင္ဝင္းထြဋ္
ျပင္ဦးလြင္ၿမိဳ႕

Thursday, January 1, 2015

ႏွစ္သစ္ကူး လက္ေဆာင္ - Calibre ebook management



ႏွစ္သစ္ကူးတဲ႔ အမွတ္တရ အခ်ိန္ေလးမွာ ကၽြန္ေတာ္႔မိတ္ေဆြမ်ားကို လက္ေဆာင္ေလး တစ္ခုေပးခ်င္ပါတယ္။ ကၽြန္ေတာ္႔အေနနဲ႔ ေငြေၾကး မခ်မ္းသာတဲ႔အတြက္ ပိုက္ဆံနဲ႔ ဝယ္လို႔ရတဲ႔ လက္ေဆာင္ေတြကို ဝယ္မေပးႏိုင္ေပမယ္႔ အခမဲ႔ရတဲ႔ အရမ္းေကာင္းတဲ႔ Open Source E-Library Software ေလးတစ္ခုအေၾကာင္း အသိေပးခ်င္ပါတယ္။ နည္းပညာကို ကၽြမ္းက်င္တဲ႔ သူမ်ားအတြက္၊ သိၿပီးသားလူမ်ားအတြက္ မထူးျခားေပမယ္႔ ထိေရာက္ေအာင္ အသံုးျပဳႏိုင္တဲ႔ ေနရာမ်ားစြာရွိေနေသးတာေၾကာင္႔ အသိေပးရျခင္း ျဖစ္ပါတယ္ခင္ဗ်ာ။ 
ကၽြန္ေတာ္ ebook မ်ားကို စတင္စုေဆာင္းခ်ိန္ကစၿပီး အဲဒီ စာအုပ္ေတြမ်ားလာေလေလ ထိန္းသိမ္းရ ခက္ခဲေလေလ ျဖစ္လာပါတယ္။ အထူးသျဖင္႔ အျခားသူမ်ားကို ေဝမွ် ေပးခ်င္တဲ႔အခါမ်ိဳးမွာ ေထာင္ခ်ီေနတဲ႔ စာအုပ္ေတြထဲက ကိုယ္လိုခ်င္တာေတြကို တစ္စုတစ္စည္းတည္း ရွာထုတ္ဖို႔ ခဲယဥ္းလာပါတယ္။ 
ဒါေၾကာင္႔ Ebook Managemanet software မ်ားကို စမ္းသပ္ သံုးခဲ႔ပါတယ္။ တစ္ခုမွ စိတ္တိုင္း မက်ခဲ႔ပါဘူး။ ေနာက္ဆံုး ကၽြန္ေတာ္႔ စီနီယာ ကိုစိုင္းအုန္းျမတ္ဝင္းက Calibre ဆိုတဲ႔ software ေလးကို လာေပးေတာ႔မွပဲ အဆင္ေျပသြားခဲ႔ပါတယ္။ ကၽြန္ေတာ္႔လို စာအုပ္စုေဆာင္းသူေတြနဲ႔ ေက်ာင္းသားေတြ အတြက္ Calibre ကို အသံုးခ်ၿပီး ebooks ေတြ အလြယ္တကူ စီမံခန္႔ခြဲႏိုင္ဖို႔နဲ႔ E-library server အေနနဲ႔ အသံုးခ်ႏိုင္ဖို႔ရည္ရြယ္ၿပီး ေရးသားခဲ႔တာ ျဖစ္ပါတယ္။  
Calibre ကို http://calibre-ebook.com/download ကေန Windows, Mac, Linux အားလံုးအတြက္ အခမဲ႔ download ရယူႏိုင္ပါတယ္။ ၿပီးရင္ အလြယ္တကူ install လုပ္လို႔ ရပါၿပီ။ ပထမဆံုး အႀကိမ္မွာေတာ႔ Library အေနနဲ႔ စာအုပ္ေတြကို သိမ္းရမယ္႔ ေနရာကို ေတာင္းပါလိမ္႔မယ္။ မိမိ ႏွစ္သက္ရာ ေနရာလြတ္ တစ္ခုခုမွာ Folder တစ္ခု သတ္သတ္မွတ္မွတ္ တည္ေဆာက္ၿပီး ေရြးခ်ယ္ေပးလိုက္ပါ။ 


စာအုပ္ေတြ ထည္႔သြင္းဖို႔ အတြက္ကေတာ႔ ပထမဆံုး PDF ဖိုင္ေတြကို အမည္ေသခ်ာ ေပးထားရပါမယ္။ ေပးရမယ္႔ ပံုစံက "စာအုပ္အမည္ -  စာေရးသူအမည္" ဆိုၿပီး ျပင္ဆင္ေပးရပါမယ္။ ဥပမာ "Basic Android Programming - Dr. Aung Win Htut" ဆိုတဲ႔ ပံုစံမ်ိဳးပါ။ စာအုပ္ေတြကို နာမည္ေတြ ေပးၿပီးတာနဲ႔ ေဆာ႔ဝဲရဲ႕ ဘယ္ဘက္ အေပၚေထာင္႔နားက အနီေရာင္ ကြင္းခတ္ျပထားတဲ႔ Add Books ဆိုတဲ႔ ခလုတ္ကို ႏွိပ္ၿပီး စာအုပ္ေတြရွိတဲ႔ ေနရာကိုသြား၊ စာအုပ္မ်ားကို ေရြးခ်ယ္ ထည္႔သြင္းေပးရမွာ ျဖစ္ပါတယ္။ 
မလိုေတာ႔တဲ႔ စာအုပ္ေတြကို ဖယ္ရွားပစ္ဖို႔ အတြက္ကေတာ႔ အဝါေရာင္ ကြင္းခတ္ျပထားတဲ႔ အမိႈက္ပံုးပံုေလးကို ႏွိပ္ရမွာ ျဖစ္ပါတယ္။ 
E-Library Server အေနနဲ႔ အသံုးျပဳခ်င္ရင္ေတာ႔ အျဖဴေရာင္ ကြင္းခတ္ျပထားတဲ႔ ခလုတ္ကို ႏွိပ္ရမွာပါ။ အေသးစိတ္ အသံုးျပဳပံုမ်ားကို ေနာက္မွ ထပ္မံ ေရးသားေပးမွာျဖစ္ပါတယ္ခင္ဗ်ာ။


Sunday, November 23, 2014

OOP in C++ : အပိုင္း (၁၂) – Decision by If…Else

  ဒီအပတ္ သင္ခန္းစာမွာေတာ႔ if…else Statement အေၾကာင္းေလးေတြကို ဆက္လက္ ေဆြးေႏြးသြားမွာ ျဖစ္ပါတယ္။
The if...else Statement
    if statement ဟာ အေျခအေနတစ္ခု မွန္ကန္ရင္ ဘာလုပ္မယ္ဆိုတာကို ေရးသားဖို႔အတြက္ အသံုးျပဳရတာ ျဖစ္ပါတယ္။ ဒါေပမယ္႔ မွားသြားခဲ႔ရင္ေတာ႔ ဘာတစ္ခုမွ လုပ္ေပးမွာ မဟုတ္ပါဘူး။ အခ်ိဳ႕အေျခအေနေတြမွာ မွန္ရင္ တစ္ခုခုလုပ္ၿပီး မွားသြားရင္ေတာ႔ တျခားတစ္ခု လုပ္ေဆာင္ဖို႔ လိုအပ္တာတတ္ပါတယ္။ အဲဒီလို အေျခအေနမ်ိဳးအတြက္ေတာ႔ if…else statement ကို အသံုးျပဳရမွာ ျဖစ္ပါတယ္။ ေအာက္မွာျပထားသလိုပါပဲ if statement ေနာက္မွာ statement တစ္ခု ဒါမွမဟုတ္ တြန္႔ကြင္းနဲ႔ခတ္ထားတဲ႔ multiple statements ေတြ ရွိပါတယ္။ အဲဒီေနာက္မွာ else ကို ေရးၿပီး သူ႔ေနာက္ကလဲ statement တစ္ခု ဒါမွမဟုတ္ တြန္႔ကြင္းနဲ႔ခတ္ထားတဲ႔ multiple statements ေတြ ထည္႔ေရးေပးရမွာ ျဖစ္ပါတယ္။ if ေနာက္က test expression မွန္ခဲ႔မယ္ ဆိုရင္ အဲဒီေနာက္က statement(s) ေတြ အလုပ္လုပ္မွာ ျဖစ္ပါတယ္။ မွားခဲ႔ရင္ေတာ႔ else ေနာက္က statement(s) ေတြ အလုပ္လုပ္မွာ ျဖစ္ပါတယ္။
 အထက္က if example ေလးကို if…else နဲ႔ ျပန္ေရးျပထားပါတယ္။
// ifelse.cpp
// demonstrates IF...ELSE statememt
#include <iostream>
using namespace std;
int main()
{
int x;
cout << “\nEnter a number: “;
cin >> x;
if( x > 100 )
cout << “That number is greater than 100\n”;
else
cout << “That number is not greater than 100\n”;
return 0;
}
ဒီဥပမာေလးမွာ user ထည္႔သြင္းေပးလိုက္တဲ႔ x တန္ဖိုးဟာ 100 ထက္ႀကီးခဲ႔ရင္ cout<< “That number is greater than 100\n”; ဆိုတာကို လုပ္ေဆာင္မွာ ျဖစ္ၿပီး မွားခဲ႔ရင္ေတာ႔ cout << “That number is not greater than 100\n”; ဆိုတာကို လုပ္ေဆာင္ေပးမွာပါ။ နမူနာအေနနဲ႔ 300 နဲ႔ 3 တန္ဖိုးႏွစ္ခု ထည္႔သြင္းေပးလိုက္လို႔ ရလာတဲ႔ ရလာဒ္ေတြကို ေအာက္မွာ ေလ႔လာ ၾကည္႔ႏိုင္ပါတယ္။

Enter a number: 300
That number is greater than 100
Enter a number: 3
That number is not greater than 100
if…else အလုပ္လုပ္ပံုကို flow chat နဲ႔ ေအာက္ပါအတိုင္း ေလ႔လာႏိုင္ပါတယ္။

The getche() Library Function
    ေနာက္ထပ္ဥပမာ တစ္ခုအေနနဲ႔ if…else ကို while loop ထဲမွာ ထည္႔သြင္း အသံုးျပဳျပထားပါတယ္။ ေနာက္တစ္ခုက getche() ဆိုတဲ႔ library function အသစ္တစ္ခုကို သံုးျပထားပါတယ္။ အဲဒီ chcount.cpp ပရိုဂရမ္ေလးဟာ user ထည္႔သြင္းေပးလိုက္တဲ႔ စာလံုးေတြနဲ႔ အကၡရာ အေရအတြက္ေတြကို ေရတြက္ေပးမွာပါ။
// chcount.cpp
// counts characters and words typed in
#include <iostream>
using namespace std;
#include <conio.h> //for getche()
int main()
{
int chcount=0; //counts non-space characters
int wdcount=1; //counts spaces between words
char ch = ‘a’; //ensure it isn’t ‘\r’
cout << “Enter a phrase: “;
while( ch != ‘\r’ ) //loop until Enter typed
{
ch = getche(); //read one character
if( ch==’ ‘ ) //if it’s a space
wdcount++; //count a word
else //otherwise,
chcount++; //count a character
} //display results
cout << “\nWords=” << wdcount << endl
<< “Letters=” << (chcount-1) << endl;
return 0;
}
input ထည္႔သြင္းဖို႔အတြက္ cin နဲ႔ >> ကို အသံုးျပဳေလ႔ ရွိပါတယ္။ ဒီနည္းကို သံုးမယ္ဆိုရင္ user က input တစ္ခု ထည္႔သြင္းေပးလိုက္တိုင္း Enter ေခါက္ရမွာျဖစ္ပါတယ္။ ဒါေပမယ္႔ အခုလို ဥပမာ မ်ိဳးမွာ user က Enter မႏွိပ္ရဘဲ အကၡရာတိုင္းကို ဖတ္သြားဖုိ႔ လိုလာပါၿပီ။ ဒါေၾကာင္႔ getche() ဆိုတဲ႔ library function ကို အသံုးျပဳရမွာ ျဖစ္ပါတယ္။ ၄င္းကို အသံုးျပဳဖို႔ conio.h header file ကို ေၾကျငာေပးရမွာ ျဖစ္ပါတယ္။ input argument ထည္႔ေပးဖို႔ မလိုအပ္ဘဲ user ရိုက္ထည္႔လိုက္သမွ် အကၡရာေတြကို ခ်က္ခ်င္း return ျပန္ေပးမွာ ျဖစ္ပါတယ္။ chcount.cpp ထဲမွာေတာ႔ getche() နဲ႔ ဖတ္လို႔ ရလာတဲ႔ တန္ဖိုးေတြကို ch ထဲ ထည္႔ေပးလိုက္မွာျဖစ္ပါတယ္။ ေနာက္တစ္ခုက getche() function ဟာ user ရိုက္ထည္႔လိုက္သမွ် အကၡရာေတြကို ကြန္ပ်ဴတာမ်က္ႏွာျပင္ေပၚကို echo လုပ္ေပးမွာ ျဖစ္ပါတယ္။ (_getch() function ကေတာ႔ echo ျပန္လုပ္ေပးမွာ မဟုတ္ပါဘူး။ echo ျပန္လုပ္ေပးလို႔လဲ function name ရဲ႕ ေနာက္ဆံုး စကားလံုးမွာ e ထည္႔ထားၿပီး getche ျဖစ္ေနတာပါ။ if…else statement ကေတာ႔ စကားလံုး(word) ေရတြက္ဖို႔ သံုးထားတဲ႔ wdcount ကို space ဆိုတဲ႔ character ေတြ႔တာနဲ႔ တစ္တိုးေပးမွာ ျဖစ္ပါတယ္။ အကၡရာ (character) ေတြ ေရတြက္ဖို႔ သံုးတဲ႔ chcount ကေတာ႔ space ကလြဲခို႔ ဘယ္အကၡရာကိုပဲ ရိုက္ရိုက္ တစ္တိုးေပးမွာ ျဖစ္ပါတယ္။ ဆိုလိုတာက space ကလြဲလို႔ က်န္တဲ႔ အကၡရာေတြကို character လို႔ သတ္မွတ္လိုက္တာပါ။ (ဒီလို စစ္ေဆးတဲ႔ နည္းမွာ အားနည္းခ်က္ေတြ ရွိပါတယ္။ ဒါေပမယ္႔ ဒီေနရာမွာေတာ႔ ဒီဥပမာေလးဟာ လံုေလာက္တယ္လို႔ ယူဆပါတယ္) ။ ေအာက္မွာ နမူနာ ထည္႔သြင္းေပးလိုက္တဲ႔ စာေၾကာင္းေလးကို စကားလံုးနဲ႔ အကၡရာေတြ ေရတြက္ပံု ေလ႔လာၾကည္႔ၾကရေအာင္။

For while and do
Words=4
Letters=13
while statement မွာပါတဲ႔ test expression ကေတာ႔ ch ရဲ႕တန္ဖိုးဟာ ‘\r’ ျဖစ္မျဖစ္ စစ္ေဆးပါတယ္။ တကယ္ေတာ႔ အဲဒီ အကၡရာဟာ ကီးဘုတ္က Enter key ကို ကိုယ္စားျပဳထားတာပါ။ တကယ္လို႔ Enter ေခါက္ခဲ႔ရင္ while loop ကေန ထြက္သြားမွာ ျဖစ္ပါတယ္။

Assignment Expressions
       chcount.cpp ကို assignment expressions နဲ႔ precedence ေတြရဲ႕ အေရးပါပံုနဲ႔ ကုဒ္လိုင္းအခ်ိဳ႕ကို ခ်ံဳ႕ပစ္ႏိုင္တာကိုျပသဖို႔ အနည္းငယ္ ျပင္ေရးျပခ်င္ပါတယ္။ အဲဒီလို ျပင္ေရးလိုက္ျခင္းအားျဖင္႔ ကုဒ္ေတြကို ဖတ္ရတာ တစ္မ်ိဳး ျဖစ္ေနႏိုင္ေပမယ္႔ C နဲ႔ C++ မွာေတာ႔ ေရးရိုးေရးစဥ္ ေရးနည္းတစ္ခုပဲ ျဖစ္ပါတယ္။ ျပင္ေရးထားတဲ႔ chcnt2.cpp  ကို ေလ႔လာၾကည္႔ၾကရေအာင္။
// chcnt2.cpp
// counts characters and words typed in
#include <iostream>
using namespace std;
#include <conio.h> // for getche()
int main()
{
int chcount=0;
int wdcount=1; // space between two words
char ch;
while( (ch=getche()) != ‘\r’ ) // loop until Enter typed
{
if( ch==’ ‘ ) // if it’s a space
wdcount++; // count a word
else // otherwise,
chcount++; // count a character
} // display results
cout << “\nWords=” << wdcount << endl
<< “Letters=” << chcount << endl;
return 0;
}
getche() ကေန return ျပန္ေပးလိက္တဲ႔ တန္ဖိုးကို ch ထဲ ထည္႔ေပးတဲ႔ ကုဒ္ကို အျပင္မွာ သပ္သပ္ မေရးသားေတာ႔ဘဲ while loop ရဲ႕ test expression ထဲမွာ တစ္ခါတည္း ထည္႔သြင္း ေရးသားလိုက္ျခင္းပဲ ျဖစ္ပါတယ္။ ေနာက္ထပ္ၿပီး အဲဒီ တန္ဖိုးကို ‘\r’ ဟုတ္မဟုတ္ စစ္ေဆးေပးပါတယ္။
တကယ္ေတာ႔ (ch=getche()) ဆိုတဲ႔ ကုဒ္ တစ္ခုလံုးက ch ထဲမွာ ရွိတဲ႔ တန္ဖိုးကို ကိုယ္စားျပဳေနတာ ျဖစ္တဲ႔အတြက္ တစ္ခါတည္း မွန္မမွန္ စစ္ေဆးလို႔ ရသြားတာပဲ ျဖစ္ပါတယ္။ C++ မွာ x = y = z = 0; ဆိုၿပီး ေရးသားႏိုင္ပါတယ္။ အဲဒီလို ေရးနည္းမွာ ညာဘက္အစြန္ဆံုး assignment က အရင္ စအလုပ္လုပ္္ၿပီး 0 ကို z ထဲ၊ z တန္ဖိုးကို y ထဲ၊ y တန္ဖိုးကို x ထဲထည္႔မွာ ျဖစ္ပါတယ္။ ဒါေၾကာင္႔ တန္ဖိုးေတြအားလံုးက 0 ျဖစ္သြားပါလိမ္႔မယ္။ (ch=getche()) ဆိုတဲ႔ assignment expression ကို လက္သဲကြင္းနဲ႔ ခတ္ထားတာကို သတိထားမိပါလိမ္႔မယ္။ ဘာလို႔လဲဆိုေတာ႔ assignment operator ဟာ relational operator ထက္ precedence နိမ္႔တဲ႔အတြက္ အရင္အလုပ္လုပ္ေစခ်င္တဲ႔အခါ ကြင္းခတ္ေပးလိုက္ရတာပဲ ျဖစ္ပါတယ္။ တကယ္လို႔ လက္သဲကြင္းသာ မပါခဲ႔ဘူးဆိုရင္ while( ch = (getche() != ‘\r’) ) လို လုပ္ေဆာင္သြားမွာ ျဖစ္ၿပီး ကၽြန္ေတာ္တို႔ မေမွ်ာ္လင္႔ထားတဲ႔ အမွားေတြကို ရင္ဆိုင္ရမွာပါ။
အဲဒီ chcnt2.cpp ထဲမွာပါတဲ႔ while statement ဟာ ေနရာအနည္းငယ္ပဲ ယူေပမယ္႔ အသံုးတည္႔ပါတယ္။ တကယ္ေတာ႔ ၄င္းဟာ test expression တစ္ခုသာမကဘဲ keyboard က ရိုက္ထည္႔လိုက္တဲ႔ အကၡရာ တစ္လံုးကို ch ထဲကိုလည္း ထည္႔ေပးႏိုင္ခဲ႔ပါတယ္။ ဒါေပမယ္႔ ဒီလိုကုဒ္မ်ိဳးကို ပထမဆံုး ျမင္ဘူးကာစမွာေတာ႔ အဓိပၸါယ္ေဖာ္ဖို႔ ခက္ခဲႏိုင္ပါတယ္။
ေနာက္အပတ္ေတြမွာေတာ႔ က်န္ရွိေနေသးတဲ႔ Nested if...else Statements အေၾကာင္းကို ဆက္လက္ ေဆြးေႏြးသြားပါမယ္ခင္ဗ်ာ။ ဤအခန္းဆက္ ေဆာင္းပါးမ်ားဟာ IT ေက်ာင္းသားမ်ားအတြက္ အထူးရည္ရြယ္ၿပီး ေရးသားထားတာ ျဖစ္ပါတယ္။ သင္ရိုးကို ေရးသားျခင္း ျဖစ္တဲ႔အတြက္ တိုက္ရိုက္ ဘာသာျပန္ဆိုျခင္းနည္းကို ေနရာေတာ္ေတာ္မ်ားမ်ားမွာ သံုးထားပါတယ္။ သိလိုသည္မ်ားကို aungwh2013@gmail.com ကို ဆက္သြယ္ၿပီး ေမးျမန္းႏိုင္သလို YCC ေက်ာင္းသားမ်ား အတြက္လည္း ေအာက္ေဖာ္ျပပါ လိပ္စာရွိ ေတာ္ဝင္ ကြန္ပ်ဴတာ စင္တာ၌လည္း ေလ႔လာ စံုစမ္းႏိုင္ပါတယ္ခင္ဗ်ာ။
အကိုးအကား
Object-Oriented Programming in C++(4th edition), Robert Lafore, Copyright©2002 by Sams Publishing: ISBN 0-672-32308-7
Dr. ေအာင္ဝင္းထြဋ္ (bluephoenix)
ေတာ္ဝင္ ကြန္ပ်ဴတာ စင္တာ
၁၇၉ စ၊ သုမဂၤလာ၊ ေစ်းေလး အေနာက္ဘက္၊ ျပင္ဦးလြင္ၿမိဳ႕

Monday, November 17, 2014

OOP in C++ : အပိုင္း (၁၁) - do loop

    ဒီအပတ္ သင္ခန္းစာမွာေတာ႔ က်န္ရွိေနေသးတဲ႔ do loop နဲ႔ အတူ decision လုပ္တဲ႔ အေၾကာင္းေလးေတြကို ဆက္လက္ ေဆြးေႏြးသြားမွာ ျဖစ္ပါတယ္။
The do Loop
    While loop ကို နားလည္သြားၿပီဆိုရင္ do loop ကို သေဘာေပါက္ဖို႔ မခက္ေတာ႔ပါဘူး။ while loop မွာတုန္းက test expression မွန္မွန္ စစ္ေဆးျခင္းကို loop ရဲ႕ အစမွာ ျပဳလုပ္တာ ျဖစ္ပါတယ္။ ဒါေၾကာင္႔ အဲဒီအခ်က္ မွားသြားတာနဲ႔ looping တစ္ႀကိမ္မွ မပတ္ေတာ႔ဘဲ loop ကို ေက်ာ္သြားမွာ ျဖစ္ပါတယ္။ တစ္ခါတစ္ေလမွာ test expression ကို မစစ္ေသးဘဲ loop ကို အနည္းဆံုး တစ္ႀကိမ္ေတာ႔ ပတ္ေစခ်င္တဲ႔ အခါမ်ိဳးေတြ ရွိတတ္ပါတယ္။ အဲဒီအေျခအေနမ်ိဳးမွာဆို do loop ကို while loop အစား အသံုးျပဳရေလ႔ ရွိပါတယ္။ ဒါေၾကာင္႔ do loop မွာ test expression ကို loop အဆံုးမွာ ထားထားတာျဖစ္ၿပီး အနည္းဆံုး တစ္ေခါက္ ပတ္ၿပီးမွ test expression ကို စတင္ စစ္ေဆးတာ ျဖစ္ပါတယ္။ ေအာက္မွာ ေဖာ္ျပထားတဲ႔ divdo.cpp ပရိုဂရမ္ေလးမွာေတာ႔ တည္ကိန္းနဲ႔ စားကိန္း ႏွစ္ခုကို user အား ထည္႔သြင္းေစၿပီး စားလာဒ္နဲ႔ အၾကြင္းကို / နဲ႔ % operator ေတြသံုးကာ ရွာေဖြေပးမွာ ျဖစ္ပါတယ္။ do loop အသံုးျပဳထားပံုေလးကို ဂရုစိုက္ၿပီး ေလ႔လာေစခ်င္ပါတယ္။
// divdo.cpp
// demonstrates DO loop
#include <iostream>
using namespace std;
int main()
{
long dividend, divisor;
char ch;
do //start of do loop
{ //do some processing
cout << “Enter dividend: “; cin >> dividend;
cout << “Enter divisor: “; cin >> divisor;
cout << “Quotient is “ << dividend / divisor;
cout << “, remainder is “ << dividend % divisor;
cout << “\nDo another? (y/n): “; //do it again?
cin >> ch;
}
while( ch != ‘n’ ); //loop condition
return 0;
}

ပရိုဂရမ္ရဲ႕ ကုဒ္အမ်ားစုကို do loop ထဲမွာ ေရးသားထည္႔သြင္းထားတာကို သတိထားမိပါလိမ္႔မယ္။ do loop မွာ loop ရဲ႕ အစကို do ဆိုတဲ႔ keyword နဲ႔ သတ္မွတ္ေပးလိုက္တာ ျဖစ္ပါတယ္။ ေနာက္က တြန္႔ကြင္း အဖြင္႔ အပိတ္ၾကားမွာေတာ႔ loop body ကို ေရးသားထားတာ ျဖစ္ၿပီး အဆံုးသတ္မွာ test expression ထည္႔သြင္းထားကာ semicolon နဲ႔ ပိတ္ေပးရမွာ ျဖစ္ပါတယ္။ (semicolon ထည္႔ဖို႔ မၾကာခဏ ေမ႔တတ္တာကို သတိျပဳပါ)။ do loop ရဲ႕ syntax ကို ေအာက္မွာ ျပထားပါတယ္။


divdo.cpp ပရိုဂရမ္ေလးထဲမွာ တြက္ခ်က္မႈေတြ ၿပီးတဲ႔ ေနာက္မွာ user ကို ေနာက္ထပ္ ဆက္တြက္ခ်င္ေသးလားလို႔ ေမးပါတယ္။ တကယ္လို႔ user က ဆက္တြက္ခ်င္ေသးရင္ y ကို ရိုက္ထည္႔ရမွာ ျဖစ္ၿပီး loop ကို အၿပီးထြက္ခ်င္ရင္ေတာ႔ n ကို ရိုက္ထည္႔ရမွာပါ။ တကယ္တမ္းက test expression မွာ ch != ‘n’ လို႔ စစ္ထားတဲ႔ အတြက္ n မထည္႔သမွ် true ျဖစ္ေနၿပီး loop ကို ပတ္ေနမွာပါ။ n ထည္႔လိုက္ေတာ႔မွ false ျဖစ္သြားတဲ႔ အတြက္ loop ထဲက ထြက္သြားမွာ ျဖစ္ပါတယ္။ ေအာက္မွာ နမူနာ စမ္းသပ္ျပထားပါတယ္။
Enter dividend: 11
Enter divisor: 3
Quotient is 3, remainder is 2
Do another? (y/n): y
Enter dividend: 222
Enter divisor: 17
Quotient is 13, remainder is 1
Do another? (y/n): n
 
When to Use Which Loop
    ကၽြန္ေတာ္တို႔အေနျဖင္႔ မည္သည္႔ေနရာတြင္ မည္သည္႔ loop အမ်ိဳးအစားကို အသံုးျပဳသင္႔သည္ ဆိုသည္႔အခ်က္အား အၾကမ္းအားျဖင္႔ ခြဲျခားထားေလ႔လာႏိုင္ပါသည္။ ဥပမာအားျဖင္႔ loop ပတ္ရမည္႔ အႀကိမ္အေရအတြက္ကို ႀကိဳတင္သိေနခဲ႔ပါက for loop ကို အသံုးျပဳသင္႔ပါသည္။ while loop ႏွင္႔ do loop ကိုေတာ႔ အႀကိမ္အေရတြက္ကို ႀကိဳမသိႏိုင္ဘဲ အေျခအေနတစ္ခုခု (variable value တစ္ခုခု) ေပၚ မူတည္၍ loop မွ ထြက္ရသည္႔ အခါမ်ိဳးတြင္ test expression ျဖင္႔ စစ္ေဆးကာ အသံုးျပဳရသည္။ အဆိုပါ အေျခအေနကို စစခ်င္း စစ္ေဆးသင္႔ၿပီး မမွန္ကန္ပါက loop body အား လံုးလံုး ေက်ာ္သြားရန္ လိုအပ္သည္႔ အေျခအေနမ်ိဳးတြင္ while loop အား အသံုးျပဳရသည္။ Menu ေရးသားျခင္းကဲ႔သို႔ေသာ loop body အား အနည္းဆံုး တစ္ႀကိမ္ လုပ္ေဆာင္ၿပီးမွ လိုအပ္သည္႔ အေျခအေနအား စစ္ေဆးရသည္႔ အေျခအေနမ်ိဳးတြင္ do loop ကို အသံုးျပဳသင္႔သည္။ အထက္ပါ အခ်က္မ်ားသည္ အၾကမ္းဖ်င္း သတ္မွတ္ခ်က္မ်ားသာ ျဖစ္ၿပီး ေရးသားရာတြင္ လြယ္ကူျမန္ဆန္ေစရန္ ရည္ရြယ္သည္။ သို႔ရာတြင္ အဆိုပါ loop မ်ားအားလံုးကို အေျခအေန အားလံုးနီးပါးအတြက္ အသံုးျပဳႏိုင္ေပသည္။ ကၽြန္ေတာ္တို႔ အေနျဖင္႔ မိမိတို႔ ေရးသားေသာ ပရိုဂရမ္အား ရွင္းလင္း က်စ္လစ္ေစရန္ ဂရုျပဳ၍ loop မ်ားကို ေရြးခ်ယ္သြားၾကရမည္ ျဖစ္သည္။



Decisions
    loop မ်ားတြင္ ပါဝင္ေသာ decisions မ်ားသည္ loop body အား ဆက္လက္ လုပ္ေဆာင္သင္႔ မသင္႔ကို သတ္မွတ္ စစ္ေဆးျခင္းပင္ ျဖစ္သည္။ လက္ေတြ႔ဘဝတြင္လည္း ဒီေန႔ အျပင္ထြက္သင္႔ မသင္႔၊ အကၤ်ီဘာအေရာင္ ဝယ္မလဲ? အလည္အပတ္သြားသင္႔သလား? အစရွိေသာ ဆံုးျဖတ္စရာ ကိစၥရပ္မ်ား ၾကံဳေတြ႔ေနၾကရသည္သာျဖစ္သည္။ ပရိုဂရမ္အတြင္း၌လည္း ထိုကဲ႔သို႔ေသာ one-time decision မ်ား ျပဳလုပ္ရန္ လိုအပ္ေပသည္။ test expression ၏ တန္ဖိုးေပၚ မူတည္၍ ဆံုးျဖတ္ခ်က္ခ်ကာ ပရိုဂရမ္၏ အျခားေနရာမ်ားသို႔ ကုဒ္မ်ား jump ျပဳလုပ္ရမည္ ျဖစ္သည္။ C++ တြင္ decisions မ်ားကို နည္းလမ္း အမ်ိဳးမ်ိဳးျဖင္႔ ျပဳလုပ္ႏိုင္ေသာ္လည္း အေရးအႀကီးဆံုးမွာ မတူညီေသာ အေျခအေန ႏွစ္ခုထဲမွ တစ္ခုကို ေရြးခ်ယ္ေပးႏိုင္ေသာ if…else statement ပင္ ျဖစ္သည္။ ၄င္း statement ကို else မပါဘဲ if statement အျဖစ္ ရိုးစင္းစြာ အသံုျပဳႏိုင္သည္။ အေၾကာင္းအရာ အမ်ားအျပားမွ တစ္ခုကို ေရြးထုတ္ယူရန္အတြက္မူ switch statement ကို အသံုးျပဳႏိုင္သည္။ အခ်ိဳ႕ထူးျခားသည္႔ အေျခအေနမ်ိဳးတြင္ conditional operator ကို အသံုးျပဳႏိုင္သည္။ ၄င္းတို႔ အေၾကာင္းကို တစ္ဆင္႔ခ်င္း ေလ႔လာၾကရေအာင္။
The if Statement
    ဆံုးျဖတ္ခ်က္မ်ား ျပဳလုပ္ရာတြင္ if statement သည္ အရိုးရွင္းဆံုး ျဖစ္ပါသည္။ ၄င္းကို ifdemo.cpp တြင္ ေအာက္ပါအတိုင္ ေလ႔လာႏိုင္ပါသည္။
// ifdemo.cpp
// demonstrates IF statement
#include <iostream>
using namespace std;
int main()
{
int x;
cout << “Enter a number: “;
cin >> x;
if( x > 100 )
cout << “That number is greater than 100\n”;
return 0;
}
if statement ေရးတဲ႔ အခါမွာ if ဆိုတဲ႔ keyword ရဲ႕ေနာက္မွာ လက္သဲကြင္း အဖြင္႔အပိတ္နဲ႔ test expression ကို ေရးရပါတယ္။ ေအာက္ပါ if statement ရဲ႕ syntax ကို ပံုမွာ ျပထားပါတယ္။ if statement ဟာ while နဲ႔ အေတာ္ေလးတူတာကို သတိထားမိပါလိမ္႔မယ္။ ျခားနားခ်က္ကေတာ႔ if statement က while လို looping မပတ္ဘဲ test expression မွန္ခဲ႔ရင္ တစ္ႀကိမ္တည္း လုပ္ေဆာင္တာ ျဖစ္ပါတယ္။ while loop မွာေတာ႔ test expression မွန္ေနသမွ် ကာလပတ္လံုး loop ကို ပတ္ေနမွာပါ။ ေနာက္ပံုတစ္ခုမွာ if statement ရဲ႕ လုပ္ေဆာင္ပံုကို flow chat နဲ႔ ျပထားပါတယ္။


ifdemo.cpp ပရိုဂရမ္ေလးရဲ႕ ရလာဒ္ေတြကို ေအာက္မွာ ျပသထားပါတယ္။ ၁၀၀ ထက္ႀကီးတဲ႔ ဂဏန္းဆိုရင္ ပရင္႔ထုတ္ေပးေနမွာ ျဖစ္ၿပီး ၁၀၀ နဲ႔ တူသြားတာ သို႔မဟုတ္ ငယ္သြားခဲ႔ရင္ေတာ႔ ဘာမွ ထုတ္ေပးမွာ မဟုတ္ပါဘူး။
Enter a number: 2000
That number is greater than 100

Multiple Statements in the if Body
        Loop မ်ားကို ေလ႔လာစဥ္က single statement ကို တြန္႔ကြင္း မခတ္ဘဲ ေရးလို႔ ရသလို လိုအပ္ပါက ရွင္းလင္း လြယ္ကူေစရန္ တြန္႔ကြင္းအတြင္းေရးသင္႔ေၾကာင္းႏွင္႔ multiple statements မ်ားအတြက္မူ မျဖစ္မေန တြန္႔ကြင္းအတြင္း ေရးသားရမည္ ျဖစ္ေၾကာင္း သိရွိခဲ႔ပါတယ္။ ယခု if statement မွာလဲ ထိုနည္းတူ တြန္႔ကြင္းအား အသံုးျပဳရမည္ ျဖစ္ပါတယ္။ if2.cpp မွ ေအာက္ပါအတိုင္း ေလ႔လာၾကည္႔ႏိုင္ပါတယ္။

// if2.cpp
// demonstrates IF with multiline body
#include <iostream>
using namespace std;
int main()
{
int x;
cout << “Enter a number: “;
cin >> x;
if( x > 100 )
{
cout << “The number “ << x;
cout << “ is greater than 100\n”;
}
return 0;
}

Enter a number: 12345
The number 12345 is greater than 100
Nesting ifs Inside Loops

        Loop ေတြနဲ႔ decision ေတြဟာ တစ္ခုနဲ႔တစ္ခု nested လုပ္ၿပီး ေရးႏိုင္ၾကပါတယ္။ loop ထဲမွာ decision ေတြကို ငံုထားလို႔ ရသလို decision ေတြထဲမွာလည္း loop ေတြ ထည္႔သြင္း ထားႏိုင္ပါတယ္။ ထိုနည္းတူ loop ေတြထဲမွာ loop ေတြထပ္ငံုလို႔ရၿပီး decision ေတြထဲမွာလည္း decision ေတြ ထပ္ငံုလို႔ ရပါတယ္။ အခု သင္ခန္းစာမွာေတာ႔ for loop အတြင္းမွာ if ကို ငံုထားတဲ႔ prime.cp ဆိုတဲ႔ ပရိုဂရမ္ေလးကို ေလ႔လာၾကည္႔ၾကရေအာင္။ ဒီ ပရိုဂရမ္ေလးက prime number ေတြကို ရွာတဲ႔ ပရိုဂရမ္ေလးပါ။ prime number ဆိုတာ သူကိုယ္တိုင္ရယ္ ၁ ရယ္ကလြဲရင္ က်န္တဲ႔ ဂဏန္းနဲ႔ စားလို႔မျပတ္တဲ႔ တနည္း သုဒၶကိန္း ခြဲလို႔ မရတဲ႔ ကိန္းပဲ ျဖစ္ပါတယ္။ ဥပမာ -2, 3, 5, 7, 11, 13, 17 စတာေတြပဲ ျဖစ္ပါတယ္။

// prime.cpp
// demonstrates IF statement with prime numbers
#include <iostream>
using namespace std;
#include <process.h> //for exit()
int main()
{
unsigned long n, j;
cout << “Enter a number: “;
cin >> n; //get number to test
for(j=2; j <= n/2; j++) //divide by every integer from
if(n%j == 0) //2 on up; if remainder is 0,
{ //it’s divisible by j
cout << “It’s not prime; divisible by “ << j << endl;
exit(0); //exit from the program
}
cout << “It’s prime\n”;
return 0;
}

ဒီဥပမာေလးမွာ user ထည္႔ေပးလိုက္တဲ႔ ဂဏန္းကို n ထဲ ထည္႔လိုက္ပါတယ္။ အဲဒီေနာက္ n ကို for loop ကို အသံုးျပဳၿပီး 2 ကေန  အထိ ဂဏန္းေတြနဲ႔ စားပစ္ပါတယ for(j=2; j <= n/2; j++) ္။ စားကိန္းက loop variable j ျဖစ္ပါတယ္။ အဲဒီ တန္ဖိုးထဲက တစ္ခုခုက n ကိုျပတ္ေအာင္ စားႏိုင္ခဲ႔ရင္ (တနည္း အၾကြင္း သုညျဖစ္ခဲ႔ရင္) n က prime မဟုတ္ေတာ႔ပါဘူး။ အဲဒီလို ဆံုးျဖတ္တဲ႔ အပိုင္းကို if နဲ႔ % operator သံုးၿပီး တြက္ခ်က္ ဆံုးျဖတ္ပါတယ္ if(n%j == 0)။ အကယ္၍ ထည္႔ေပးလိုက္တဲ႔ ဂဏန္းက prime number မဟုတ္ခဲ႔ရင္ user ကို ပရင္႔ထုတ္ၿပီး ျပန္အသိေပးမွာ ျဖစ္ပါတယ္။ စမ္းသပ္ျပထားပါတယ္-

Enter a number: 13
It’s prime
Enter a number: 22229
It’s prime
Enter a number: 22231
It’s not prime; divisible by 11

ေလာေလာဆယ္ ဥပမာမွာေတာ႔ for loop ကို တြန္႔ကြင္းနဲ႔ မခတ္ျပထားပါဘူး။ ဒါကလဲ if statement ကို statement တစ္ခုအျဖစ္သာ ယူဆေၾကာင္း ျပသခ်င္လို႔ပါ။ အရင္က ေျပာခဲ႔သလိုပဲ တြန္႔ကြင္းေတြ ထည္႔သြင္းေရးသားျခင္းက ဖတ္ရႈရလြယ္ကူေစပါတယ္။

Library Function exit()
        Prime မဟုတ္မွန္းသိလို႔ program ကေန ခ်က္ျခင္း ထြက္ခ်င္တဲ႔ အခါမွာ exit() ဆိုတဲ႔ library function ကို အသံုးျပဳသင္႔ပါတယ္။ ဘယ္ေနရာကေနပဲ ျဖစ္ျဖစ္ ပရိုဂရမ္ကို ရပ္ပစ္ၿပီး ထြက္သြားမွာ ျဖစ္ပါတယ္။ သူက return value ျပန္မေပးပါဘူး။ ကြင္းထဲမွာ ထည္႔ေပးလိုက္ရတဲ႔ 0 ကေတာ႔ operating system ကို argument အေနနဲ႔ ပို႔ေပးလိုက္တာပါ။ သာမာန္အားျဖင္႔ successful termination ဆိုတဲ႔ သေဘာကို ေဆာင္ပါတယ္။ အျခားဂဏန္းေတြကေတာ႔ error ရွိေၾကာင္း ေျပာခ်င္တဲ႔ အခါ အသံုးျပဳရပါတယ္။
    ေနာက္အပတ္ေတြမွာေတာ႔ က်န္ရွိေနေသးတဲ႔ if-else အေၾကာင္းကို ဆက္လက္ ေဆြးေႏြးသြားပါမယ္ခင္ဗ်ာ။ ဤအခန္းဆက္ ေဆာင္းပါးမ်ားဟာ IT ေက်ာင္းသားမ်ားအတြက္ အထူးရည္ရြယ္ၿပီး ေရးသားထားတာ ျဖစ္ပါတယ္။ သင္ရိုးကို ေရးသားျခင္း ျဖစ္တဲ႔အတြက္ တိုက္ရိုက္ ဘာသာျပန္ဆိုျခင္းနည္းကို ေနရာေတာ္ေတာ္မ်ားမ်ားမွာ သံုးထားပါတယ္။ သိလိုသည္မ်ားကို aungwh2013@gmail.com ကို ဆက္သြယ္ၿပီး ေမးျမန္းႏိုင္သလို YCC ေက်ာင္းသားမ်ား အတြက္လည္း ေအာက္ေဖာ္ျပပါ လိပ္စာရွိ ေတာ္ဝင္ ကြန္ပ်ဴတာ စင္တာ၌လည္း ေလ႔လာ စံုစမ္းႏိုင္ပါတယ္ခင္ဗ်ာ။

အကိုးအကား
Object-Oriented Programming in C++(4th edition), Robert Lafore, Copyright©2002 by Sams Publishing: ISBN 0-672-32308-7

Dr. ေအာင္ဝင္းထြဋ္ (bluephoenix)
ေတာ္ဝင္ ကြန္ပ်ဴတာ စင္တာ
၁၇၉ စ၊ သုမဂၤလာ၊ ေစ်းေလး အေနာက္ဘက္၊ ျပင္ဦးလြင္ၿမိဳ႕
သင္ေသသြားေသာ္ သင္ဖြားေသာေျမ၊သင္တို႔ ေျမသည္၊ အေျခတိုးျမင္႔၊ က်န္ေကာင္းသင္႔၏...(ေဇာ္ဂ်ီ)