Friday, January 31, 2014

UCSY News for graduation ceremony

ရန္ကုန္ကြန္ပ်ဴတာ တကၠသိုလ္ ၁၆ ၾကိမ္ေျမာက္ ဘြဲ႔ႏွင္းသဘင္ အစမ္းေလ႔က်င႔္ျခင္း အတြက္ Form ႏွင္႔ ဘြဲ႔၀တ္စံုငွားဖို႔အတြက္ Form ကို ယေန႔ ၃၁ ရက္မွ စတင္ျပီး ေက်ာင္းသားေရးရာတြင္ သြားေရာက္ထုတ္ယူႏိုင္ျပီ ျဖစ္ပါတယ္။
ဒီေန႔တြင္ သြားေရာက္မထုတ္ယူႏိုင္ေသာ သူမ်ားအေနနဲ႔လည္း တနလၤာေန႔မွ လာေရာက္ထုတ္ယူႏိုင္ပါတယ္။

လာေရာက္ထုတ္ယူသူေတြအေနနဲ႔ ၃၅၀၀ က်ပ္ကိုပါ ေပးသြင္းရမွာျဖစ္ပါတယ္။ အေၾကာင္းရင္းကေတာ႔ ယခုနစ္ေပးအပ္မည္႔ ဘြဲ႔လက္မွတ္ကို ကတၱီပါသားနဲ႔ကြပ္ျပီး ေပးမွာျဖစ္တဲ႔အတြက္ေၾကာင္႔ပါ။

Form ေတြကို ထုတ္ျပီးျပီဆိုရင္ေတာ႔ ရန္ကုန္တကၠသိုလ္နယ္ေျမထဲမွာရွိတဲ႔ ဘြဲ႔၀တ္စံု အငွားဌာနကို သြားေရာက္ရမွာျဖစ္ပါတယ္။
ဘြဲ႔ဓာတ္ပံု ရိုက္ဖို႔အတြက္လည္း တစ္ခါတည္း ေငြေပးသြင္းခဲ႔ရမွာျဖစ္ပါတယ္။
( Main ထဲကိုေတာ႔ စေန႔ေန႔မွ သြားလည္း ရပါတယ္။)

credit to Spykit ( UCSY ေန႕စဥ္သတင္းစာ )

Wednesday, January 29, 2014

Professional Web Development with PHP – PHP Installation and Configuration

ဒီ tutorial ေလးမွာေတာ့ PHP ကို run ဖို႕ လိုအပ္တဲ့ software ေတြ install လုပ္ဖို႕ကို တင္ျပေပးပါ့မယ္။ PHP ဟာ server side scripting language ျဖစ္တဲ့အတြက္ သူ႕ကို run ဖို႕ web server လိုအပ္မွာ ျဖစ္ပါတယ္။ ျပီးရင္ PHP code ေတြကို parse လုပ္ေပးဖို႕အတြက္ PHP လည္း လိုအပ္မွာ ျဖစ္ပါတယ္။ ဒါ့အျပင္ ေနာက္ပိုင္း projects ေရးတဲ့အခါမွာကို data ေတြကို သိမ္းဖို႕အတြက္ databases လည္း လိုအပ္မွာ ျဖစ္ပါတယ္။


PHP ရဲ႕ manual ထဲမွာေတာ့ တစ္ခုခ်င္းစီကို install လုပ္ျပီး ခ်ိတ္ျပထားပါတယ္။ ဒါေပမယ့္ ကၽြန္ေတာ္ကေတာ့ WAMP server ကို သံုးျပီး ဘယ္လို run ရမလဲဆိုတာကို ရွင္းျပေပးပါ့မယ္။ WAMP server ကို install လုပ္လိုက္ရင္ Apache web server , PHP နဲ႕ MySQL database တို႕ကို install လုပ္ျပီးသား ခ်ိတ္ျပီးသား ျဖစ္တဲ့အတြက္ php projects ေတြကို တစ္ခါတည္း run ႏိုင္ေတာ့မွာ ျဖစ္ပါတယ္။


WAMP server လိုမ်ိဳး တစ္ျခား software ေတြ ရွိပါေသးတယ္ အဲဒါေတြကေတာ့ XAMPP နဲ႕ MAMP တို႕ ျဖစ္ၾကပါတယ္။ WAMP server ကေတာ့ Windows အတြက္ အသံုးျပဳဖို႕ ထုတ္ထားတာ ျဖစ္ပါတယ္။ ဒီ tutorial မွာ WAMP ကို ေရြးခ်ယ္ရတာက ဒီ ႏိုင္ငံမွာ window သံုးတဲ့ users က ပိုမ်ားလို႕ ျဖစ္ပါတယ္။ MAMP ကေတာ့ Mac OS မွာ အသံုးျပဳဖို႕ျဖစ္ပါတယ္။ XAMPP ကေတာ့ cross platform ျဖစ္တဲ့အတြက္ OS တိုင္းမွာ အသံုးျပဳႏ္ိုင္မွာ ျဖစ္ပါတယ္။ ဘယ္ software ကို ပဲ သံုးသံုး Apache web server, PHP နဲ႕ MySQL database ကို ပဲ install လုပ္ေပးမွာ ျဖစ္တဲ့အတြက္ အသံုးျပဳရတာ သိပ္ကြဲျပားမွာ မဟုတ္ပါဘူး။


အရင္ဆံုး WAMP server ကို install လုပ္လိုက္ၾကရေအာင္လားဗ်ာ။ WAMP server ကို install လုပ္ဖို႕ အတြက္ http://www.wampserver.com/en မွာ download လုပ္ရမွာ ျဖစ္ပါတယ္။ တစ္ကယ္လို႕ သင္ရဲ႕ စက္မွာ Microsoft Visual C++ နဲ႕ ပတ္သက္တဲ့ file မရွိဘူးဆိုရင္ အဲဒီ့ website က ေပးတဲ့ link ကေနျပီး download လုပ္ျပီး install လုပ္ထားဖို႕ လိုအပ္မွာ ျဖစ္ပါတယ္။


Download လုပ္ျပီးသြားရင္ေတာ့ down ထားတဲ့ wampserver2.4.exe file ကို click လုိက္ပါ။ ကၽြန္ေတာ္ကေတာ့ ေနာက္ဆံုး ထြက္တဲ့ version ျဖစ္တဲ့ wampserver2.4 နဲ႕ နမူနာလုပ္ျပပါမယ္။ ေအာက္က ပံုအတိုင္းေတြ႕ျမင္ရမွာ ျဖစ္ပါတယ္။


wamp server



Next ကို ႏွိပ္လုိက္ပါ။ ျပီးရင္ I accept the agreement ဆိုတဲ့ radio button ေလးကို select လုပ္ျပီး Next ကို ႏွိပ္လုိက္ပါ။ Destination folder ေရြးခိုင္းတဲ့ အဆင့္ကို ေရာက္ရွိသြားပါျပီ Next ကို ပဲ ဆက္ႏွိပ္လိုက္ပါ။ Create a Quick Launch icon နဲ႕ Create a  Desktop icon တိ္ု႕ကို အသံုးျပဳမယ္ ဆိုရင္ အမွန္ျခစ္ျပီး Next ႏွိပ္လိုက္ပါ။ ျပီးရင္ Install ကို ႏွိပ္လိုက္ပါ။ SMTP နဲ႕ Email လာေတာင္းတဲ့ wizard မွာလည္း Next ကိုပဲ ႏွိပ္လိုက္ပါ။ ျပီးရင္ Launch WampServer 2 now ကို အမွန္ျခစ္ ျခစ္ျပီး Finish button ကို ႏွိပ္လိုက္ပါ။ သင့္ computer ရဲ႕ ညာဘက္ေထာင့္မွာ ေအာက္ကပံုအတိုင္း ေတြ႕ရမွာ ျဖစ္ပါတယ္။


wamp server



ဒါဆိုရင္ေတာ့ WampServer run ေနျပီ ျဖစ္ပါတယ္။ ဒီ tray icon ေလး စိမ္းေနရင္ Apache web server ေရာ MySQL server ေရာ service on ေနျပီ လို႕ ေျပာတာ ျဖစ္ပါတယ္။ တစ္ကယ္လို႕ ဒီ icon ေလး အနီေရာင္ဆိုရင္ေတာ့ သင့္ရဲ႕ Apache web server ေကာ MySQL server ေရာ sevice မ on တဲ့အတြက္ သင္ PHP ကို run လို႕ မရႏိုင္ပါဘူး။ အ၀ါေရာင္ဆိုရင္ေတာ့ သင့္ရဲ႕ server ႏွစ္ခုထဲက တစ္ခုပဲ service on ျပီး က်န္တစ္ခုက service မ on လို႕ ျဖစ္ပါတယ္။ ဥပမာ Apache server ပဲ service on ျပီး MySQL က service မ on တာဆိုရင္ PHP ကိုေတာ့ သင္ run ႏိုင္မွာ ျဖစ္ေပမယ့္ database ကိုေတာ့ access လုပ္လို႕ မရႏိုင္ပါဘူး။ ဒီ icon ေလးကို ႏွိပ္ျပီး Start All Services ကို ႏွိပ္လိုက္ရင္ services ေတြ အားလံုး start ျဖစ္သြားမွာ ျဖစ္ျပီး Stop All Services ကို ႏွိပ္လိုက္ရင္ေတာ့ services ေတြအားလံုး stop ျဖစ္သြားမွာ ျဖစ္ပါတယ္။


Icon ေလးကိုႏွိပ္ျပီး Apache ေပၚကို mouse pointer တင္လိုက္မယ္ဆိုရင္ေတာ့ Version, Service, Apache modules, Alias directories ဆိုတဲ့ folder ပံုစံ icon ေလးေတြပါတဲ့ menu ေလးခုကို ေတြ႕ရမွာ ျဖစ္ပါတယ္။ ဒါ့အျပင္ စာရြက္ပံု icon နဲ႕ httpd.conf, Apache error log, Apache access log စတဲ့ menu သံုးခုကိုလည္း ေတြ႕ရမွာ ျဖစ္ပါတယ္။ ေအာက္ကပံုက မွင္နီနဲ႕ ၀ိုင္းထားတဲ့ ေနရာေလးကို ေျပာတာျဖစ္ပါတယ္။


wamp server



Version ဆိုတဲ့ menu ေလးေပၚကို mouse pointer ေလးတင္လိုက္မယ္ဆိုရင္ Apache ရဲ႕ version number ကို ေဖာ္ျပတာကို ေတြ႕ရမွာ ျဖစ္ပါတယ္။ Service ေပၚကို mouse pointer ေလးတင္လိုက္ရင္ ေအာက္ကပံုလိုမ်ိဳး ျမင္ေတြ႕ရမွာ ျဖစ္ပါတယ္။


wamp server



အဲဒီ့မွာ apache service က start လုပ္ျပီးသား ျဖစ္ေနတဲ့အတြက္ ေၾကာင့္ Start/Resume Service menu က မွိန္ေနတာ ျဖစ္ပါတယ္။ အဲဒီမွာ stop service ကို ႏွိပ္ျပီး service ကို stop လုပ္ႏိုင္သလို တစ္ျခား menu ေတြကိုလည္း စမ္းသပ္သံုးၾကည္႕လို႕ရပါေသးတယ္။ အရမ္းလည္း အေရးမၾကီး မထူးဆန္းတဲ့အတြက္ အေသးစိက္ကိုေတာ့ မေရးေတာ့ပါဘူး။


Apache modules ဆိုတဲ့ menu ေလးကို mouse pointer ေလးတင္လိုက္ရင္ေတာ့ Apache ရဲ႕ module ေတြကို list ေတြနဲ႕ ေဖာ္ျပေပးမွာ ျဖစ္ပါတယ္။ ကိုယ့္ project က လိုအပ္တဲ့ modules ေတြကို အမွန္ျခစ္ ျခစ္လိုက္ရံဳနဲ႕ Apache ရဲ႕ အဲဒီ့ ျခစ္လိုက္တဲ့ modules ကို အသံုးျပဳႏိုင္မွာ ျဖစ္ပါတယ္။ တစ္ခ်ိဳ႕ PHP framework ေတြက Apache ရဲ႕ rewrite module ကို အသံုးျပဳရမွာ ျဖစ္တဲ့အတြက္ အဲလိုအခ်ိန္မ်ိဳးမွာ rewrite_module ဆိုတဲ့ list ေလးကို အမွန္ျခစ္ ျခစ္ေပးဖို႕ လိုအပ္မွာ ျဖစ္ပါတယ္။


Alias directories ကေတာ့ ေက်ာ္ခဲ့ပါေတာ့မယ္ ေနာက္မွ လိုအပ္ရင္ ထပ္ေျပာေပးပါ့မယ္။


httpd.conf ဆိုတဲ့ menu ကို ႏွိပ္လိုက္ရင္ Apache ရဲ႕ configuration file ကို notepad နဲ႕ ဖြင့္ေပးတာကို ေတြ႕ရမွာ ျဖစ္ပါတယ္။ အဲဒီမွာ ဒီလိုမ်ိဳး စာသားေတြကို ေတြ႕ရမွာ ျဖစ္ပါတယ္….


#


# NOTE: Where filenames are specified, you must use forward slashes


# instead of backslashes (e.g., "c:/apache" instead of "c:\apache").


# If a drive letter is omitted, the drive on which Apache.exe is located


# will be used by default.  It is recommended that you always supply


# an explicit drive letter in absolute paths to avoid confusion.


# ကို apache ရဲ႕ configuration file ထဲမွာ comment အေနနဲ႕ အသံုးျပဳတဲ့အတြက္ # ေနာက္ကလိုင္းေတြကို server က skip လုပ္သြားမွာ ျဖစ္ပါတယ္။ ေရွ႕မွာ # မခံထားတဲ့


ServerRoot "c:/wamp/bin/apache/apache2.2.21" ဆိုတဲ့ စာသားေလးကို ေတြ႕ပါလိမ့္မယ္။ အဲဒီ့ စာသားေလးဟာ Apache Web Server software ဘယ္ေနရာမွာ ရွိလဲဆိုတာကို ေဖာ္ျပတဲ့ directory ကို ေရးထားတာ ျဖစ္ပါတယ္။


Listen 80


ဆိုတဲ့ စာသားေလးက post နံပါတ္ကို ရည္ညႊန္းတာ ျဖစ္ပါတယ္။ ကိုက post နံပါတ္ကို ခ်ိန္းခ်င္ရင္ အဲဒီ့ စာသားေလးကို ခ်ိန္းရမွာ ျဖစ္ပါတယ္။ ဥပမာ…Listen 8088 လို႕ ျပင္ေရးလိုက္တာဟာ post နံပတ္ကို ခ်ိန္းလိုက္တာ ျဖစ္ပါတယ္။


ေအာက္ကို ဆက္ဆင္းျပီး ၾကည္႕လိုက္မယ္ဆိုရင္


DocumentRoot "c:/wamp/www/"


ဆိုတဲ့ စာသားကို ေတြ႕ရမွာ ျဖစ္ပါတယ္။ အဲ့ဒီ စာသားကေတာ့ PHP နဲ႕ ေရးထားတဲ့ projects ေတြကို ထည္႕သြင္းရမယ့္ ေနရာ (directory) ကို ရည္ညၽြန္းေဖာ္ျပတာ ျဖစ္ပါတယ္။


<Directory "c:/wamp/www/">


    #


    # Possible values for the Options directive are "None", "All",


    # or any combination of:


    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews


    #


    # Note that "MultiViews" must be named *explicitly* --- "Options All"


    # doesn't give it to you.


    #


    # The Options directive is both complicated and important.  Please see


    # http://httpd.apache.org/docs/2.2/mod/core.html#options


    # for more information.


    #


    Options Indexes FollowSymLinks



    #


    # AllowOverride controls what directives may be placed in .htaccess files.


    # It can be "All", "None", or any combination of the keywords:


    #   Options FileInfo AuthConfig Limit


    #


    AllowOverride all


    #


    # Controls who can get stuff from this server.


    #



#   onlineoffline tag - don't remove


    Order Deny,Allow


    Deny from all


    Allow from 127.0.0.1


</Directory>



အထက္က <Directory "c:/wamp/www/">  က စျပီး </Directory> အထိေရးထားတဲ့ စာသားေတြက ကိုယ္႕ရဲ႕ projects ကို ဘယ္ေနရာကေနျပီး access လုပ္ႏိုင္မလဲလို႕ configure လုပ္ထားတာ ျဖစ္ပါတယ္။ အဲဒီမွာ Allow from 127.0.0.1 လို႕ ေရးထားတဲ့ စာသားေၾကာင့္ သင့္ရဲ႕ စက္တစ္လံုးတည္းသာ ( apache web server ကို install လုပ္ထားတဲ့ စက္) သာ သင့္ရဲ႕ PHP projects ေတြကို access လုပ္ႏိုင္မွာ ျဖစ္တဲ့အတြက္ သင့္ရဲ႕ ကိုယ္ပိုင္ browser ကေနပဲ သင့္ရဲ႕ PHP project ေတြကို ၾကည္႕ႏိုင္မွာ ျဖစ္ပါတယ္။ Deny from all ဆိုတဲ့ စာသားကုိ ျဖတ္ျပီး Allow from all လို႕ ေျပာင္းလိုက္မယ္ ဆိုရင္ေတာ့ သင့္ရဲ႕ projects ကို network ခ်ိတ္ထားတဲ့ တစ္ျခားစက္ေတြရဲ႕ browser ေတြကေနလည္း ၾကည္႕ရွဳႏိုင္မွာ ျဖစ္ပါတယ္။



အခု ဆက္လက္ျပီး MySQL ဆိုတဲ့ menu ေလးေပၚ mouse pointer တင္ၾကည္႕လုိက္ပါဦး ေအာက္က ပံုအတုိင္းေတြ႕ျမင္ရမွာ ျဖစ္ပါတယ္။


wamp server



Version ဆိုတဲ့ menu ကို ႏွိပ္လိုက္ရင္ေတာ့ version ကို ျပထားတာကို ေတြ႕ရပါလိမ့္မယ္။ Service ဆိုတဲ့ menu ကေတာ့ apache ရဲ႕ Service ဆိုတဲ့ menu အတိုင္း service ေတြကို start/stop လုပ္ႏိုင္တဲ့ ေနရာ ျဖစ္ပါတယ္။ အေပၚမွာ ေျပာခဲ့တဲ့ apache ရဲ႕ Service ဆိုတဲ့ menu အတိုင္း အသံုးျပဳႏိုင္တဲ့အတြက္ အေသးစိတ္ကို ထပ္မရွင္းျပေတာ့ပါဘူးေနာ္။


MySQL console ကို ႏွိပ္လိုက္မယ္ဆိုရင္ေတာ့ Command Prompt လိုမ်ိဳး အမည္းေရာင္ screen ကို ေတြ႕ရမွာ ျဖစ္ပါတယ္။ အဲဒီ့ console ကို သံုးျပီး MySQL database ထဲမွာ databases ေတြ တည္ေဆာက္တာ table ေတြတည္ေဆာက္တာကို အသံုးျပဳႏိုင္မွာ ျဖစ္ပါတယ္။ Database Tutorial ကို ေရးေတာ့မွ ပဲ က်န္တဲ့ အေသးစိတ္ကို ဆက္ရွင္းျပေပးပါ့မယ္။ အရင္ဆံုး အဲဒီ့ console ကို သံုးျပီး သင့္ database ရဲ႕ password ကို ခ်ိန္းလိုက္ရေအာင္ေနာ္။ သင့္ database မွာ password မရွိေသးလို႕  ခ်ိန္းခိုင္းရတာ ျဖစ္ပါတယ္။ အဲဒါဆို console ကို ႏွိပ္ျပီး ေအာက္က ပံုထဲမွာ ရိုက္ထားတဲ့ command ေတြအတိုင္း လိုက္ရိုက္လိုက္ပါေနာ္။


Wamp Server



အဓိက ရိုက္ရမယ့္ command ေတြကေတာ့ use mysql, ျပီးရင္ update user set password=password(‘root’) where user=’root’; တို႕ ျဖစ္ပါတယ္။ ပံုမွာ လည္းပါတဲ့အတြက္ ေသခ်ာၾကည္႕ျပီး ရိုက္လိုက္ပါေနာ္။ ျပီးရင္ icon ကို ႏွိပ္ျပီး Restart All Services ကို ႏွိပ္လိုက္ပါေနာ္။ icon ေလးက အစိမ္းေရာင္ေလး ျပန္ျဖစ္သြားရင္ေတာ့ သင့္ database ရဲ႕ password က ခ်ိန္းျပီးသြားျပီး ျဖစ္ပါတယ္။ password က root ျဖစ္ပါတယ္။ command မွာ ရိုက္တုန္းက password(‘root’) လို႕ ထည္႕လိုက္တဲ့အတြက္ေၾကာင့္ သင့္ password က root ျဖစ္သြားတာ ျဖစ္ပါတယ္။ တစ္ကယ္လို႕ command မွာ သင္က password(‘itstudentpro’) လို႕ ရိုက္လိုက္မယ္ဆိုရင္ေတာ့ သင့္ password က itstudentpro ျဖစ္သြားမွာ ျဖစ္ပါတယ္။


ျပီးရင္ PHP menu ေပၚကို mouse pointer ေလးတင္ၾကည္႕ပါဦးေနာ္…ေအာက္ကပံုေလးကို ေတြ႕ရမွာပါ။


wamp server



PHP extensions ကိုပဲ ေျပာေတာ့မယ္ေနာ္ က်န္တဲ့ setting ေတြက မျပင္လည္း သူ႕ရဲ႕ default အတိုင္း အသံုးျပဳရ အဆင္ေျပေနလို႕ ျဖစ္ပါတယ္။ ေျပေနရင္ post က အရမ္းရွည္သြားမွာ စိုးလို႕ပါ။


PHP extensions ကို ႏွိပ္လိုက္မယ္ဆိုရင္ေတာ့ php ရဲ႕ extensions list ေတြကို ေတြ႕ရမွာ ျဖစ္ပါတယ္။ သင္ဟာ PHP နဲ႕ MySQL databases ကို ခ်ိတ္ဆက္ျပီး အသံုးျပဳခ်င္တယ္ဆိုရင္ php_mysql ဆိုတဲ့ list ကို အမွန္ျခစ္ျခစ္ျပီး ေရြးေပးထားရမွာ ျဖစ္ပါတယ္။


ကဲ ကၽြန္ေတာ္ ဒီ installation and configuration အေၾကာင္းကို ေရးလိုက္တာ ေတာ္ေတာ္ေလးရွည္သြားတဲ့အတြက္ေတာင္းပန္ပါတယ္။ ေနာက္ chapter ေတြမွာ PHP အေၾကာင္းကို ဆက္လက္ေဖာ္ျပေပးသြားမွာ ျဖစ္ပါတယ္။ တစ္ကယ္လို႕ ေ၀ဖန္အၾကံျပဳခ်င္လို႕ပဲ ျဖစ္ျဖစ္….ေမးျမန္းဖို႕ပဲ ျဖစ္ျဖစ္ ဆက္သြယ္ခ်င္ရင္ေတာ့ waiphyoaung@ucsy.edu.mm ကုိ email ေပးပို႕ျပီး ေ၀ျဖန္ အၾကံညဏ္ေပးပို႕ ႏိုင္ပါတယ္။


Previous Chapter << PHP Introduction

Tuesday, January 28, 2014

Java Tutorial 10

Java Tutorial 10 (OOP)

Java ဟာ object-oriented programming(OOP) language တစ္ခုျဖစ္ပါတယ္။ OOP program တစ္ခုဟာ object ေတြနဲ႔ပါဝင္ဖြဲ႔စီးထားပါတယ္၊ java program ေတြေတာ္ေတာ္မ်ားမ်ားဟာ object ေတြအမ်ားႀကီးနဲ႔ စုေပါင္းတည္ေဆာက္ထားတာပါ။ object ေတြဟာသူတို႔နဲ႔ သက္ဆိုင္ရာလုပ္ငန္းတာဝန္ေတြကို လုပ္ေဆာင္ေပးႏိုင္ပါတယ္၊ အဲဒီလိုလုပ္ေဆာင္တဲ့အခါမွာ သူတို႔အခ်င္းခ်င္း ပတ္သက္ဆက္ႏြယ္ၿပီး လုပ္ေဆာင္ၾကတာျဖစ္ပါတယ္။ program အႀကီးေတြတည္ေဆာက္တဲ့ အခါမွာ အဲဒီ program ရဲ႕အလုပ္ဟာ အင္မတန္ရွဳပ္ေထြးပါတယ္၊ အဲဒီအခါ အလုပ္ေတြကို အစိတ္အပိုင္းေသးေသးေလးေတြ အျဖစ္ခြဲထုက္လိုက္ရပါတယ္။ အဲဒီ အလုပ္အစိတ္အပိုင္းေလးေတြကို လုပ္ေဆာင္ႏိုင္တဲ့ program အစိတ္အပိုင္းေတြတည္ေဆာက္ၿပီး၊ အဲဒီ program အစိတ္အပိုင္းေတြကို ေပါင္းစပ္လိုက္တဲ့အခါ ကိုယ္လိုခ်င္တဲ့ အလြန္ႀကီးမားတဲ့ software ႀကီးတစ္ခုကိုရရွိပါတယ္။

Object ေတြမွာ အစိတ္အပိုင္းႏွစ္ခုပါဝင္ပါတယ္၊ state (အဂၤါ)ေတြနဲ႔ behavior (အမူအက်င့္ အလုပ္) ဆိုတဲ့ characteristics ေတြပါဝင္ပါတယ္။ ဥပမာ လူဆိုပါေတာ့ လူမွာ ေခါင္းခါးေျခလက္ အရပ္ ကိုယ္အေလးခ်ိန္ စသည္ျဖင့္ state ေတြရွိသလို၊ အစာစားျခင္း သြားလာလွဳပ္ရွားျခင္း စသည္ျဖင့္ behavior ေတြလည္းရွိပါတယ္။

 

Class

Class ဆိုတာ object ရဲ႕တည္ေဆာက္ပံု ပံုၾကမ္းပါပဲ၊ object တစ္ခုဟာ ဘယ္လိုမ်ိဳး ဖြဲ႕စည္းတည္ေဆာက္ထားရမလဲဆိုတာကို class ကသတ္မွတ္ေပးပါတယ္။ ကိုယ္လိုခ်င္တဲ့ object တစ္ခုရေအာင္လို႔ class ထဲမွာပံုၾကမ္းတည္ေဆာက္ထားဖို႔ လိုအပ္ပါတယ္။ ေလာကႀကီးကိုၾကည့္လိုက္ပါ သေဘာတရားတူညီေသာ အမ်ိဳးအစားတူညီေသာ အရာဝတၳဳေတြ သက္ရွိေတြ အမ်ားႀကီးရွိပါတယ္။ ဥပမာအေနနဲ႔ေျပာရရင္ laptop computer ဆိုပါေတာ့ အဲဒီ laptop computer ေတြမွာ brand ေတြအမ်ားႀကီးကြဲျပားေနပါတယ္၊ lenovo, acer, toshiba, hp, dell စသည္ျဖင့္ေပါ့၊ ဒါေပမဲ့သူတို႔ေတြဟာ အမ်ိဳးအစားနဲ႔လုပ္ေဆာင္ခ်က္ေတြ ဆင္တူပါတယ္၊ ဆိုလိုတာက သူတို႔အားလံုးမွာ memory ပါမယ္ CPU ပါမယ္ motherboard ပါမယ္ harddisk ပါမယ္ စသည္ျဖင့္ေပါ့။ အဲဒီလိုအမ်ိဳးအစားတူတဲ့ အတြက္သူတို႔ကို class တူတယ္လို႔ေျပာလို႔ရပါတယ္။ ဒါဆိုရင္ OOP ရဲ႕သေဘာတရားအရဆိုရင္ Lenovo, acer, Toshiba တို႔ဆိုတာ object ေတြပါ၊ laptop computer ဆိုတာကေတာ့ class ပါပဲ၊ ဒီ Lenovo တို႔ acer တို႔ဟာ laptop computer ဆိုတဲ့အမ်ိဳးအစားတူညီၾကပါတယ္။ အဲဒီေတာ့ laptop computer ဆိုတဲ့ class တစ္ခုတည္ေဆာက္ၿပီးေတာ့ lenovo, acer, toshiba, hp, dell စသည္ object ေတြကိုလည္းဖန္တီးႏိုင္ပါတယ္။

 

ဒါဆိုရင္ ဘယ္မ်ိဳး class ေတြ object ေတြတည္ေဆာက္မလဲ။ software တစ္ခုေရးေတာ့မယ္ဆိုရင္ အရင္ဆံုး ဘယ္အစိတ္အပိုင္းေတြ ဘယ္လိုလုပ္ေဆာင္သလဲ ဆိုတာစဥ္းစားသတ္မွတ္ရပါမယ္၊ အဲဒီ software မွာပါဝင္မယ့္ noun(နာမ္) ေတြကိုရွာေဖြရပါမယ္၊ အဲဒီ noun ေတြကို class အျဖစ္ဖန္တီးရပါမယ္။ software မွာပါဝင္တဲ့ verb(ႀကိယာ) ေတြကိုေတာ့ behavior အျဖစ္သတ္မွတ္ရပါမယ္။ ဥပမာဆိုပါေတာ့ ေဈ းဝယ္တဲ့ software တစ္ခုမွာ ပစၥည္းမွာမယ္ဆိုပါေတာ့၊ ဒါဆိုရင္ item, order, customer address စသည္တို႔ကို class ေတြအျဖစ္သတ္မွတ္ရပါမယ္။ ေအာ္ဒါမွာတဲ့ verb ေတြျဖစ္တဲ့ addToCart(), cancelOrder(), deliverOrder() စသည္ျဖင့္ behavior ေတြသတ္မွတ္ေပးရပါမယ္။

 

Class ကိုစတင္အသံုးျပဳျခင္း

Class တစ္ခုကိုေအာက္ကနမူနာအတိုင္း ေၾကာ္ျငာရပါတယ္။

class SampleClass {

 

}

 

တြန္႔ကြင္းထဲမွာ အဲဒီ class ရဲ႕ state(variable) နဲ႔ behavior(function) ေတြထည့္သြင္း ေရးသားေပးရပါမယ္။ variable ကို property လို႔လည္းေခၚလို႔ရပါတယ္၊ function ကိုလည္း method လို႔ေခၚလို႔ရပါတယ္။ class ထဲမွာ property ေတြထည့္သြင္းေၾကာ္ျငာမယ္ဆိုရင္ variable ေၾကာ္ျငာသလိုပါပဲ။

 

variable ေတြကိုသံုးမ်ိဳးခြဲျခားႏိုင္ပါတယ္၊ class ရဲ႕တြန္႔ကြင္းထဲမွာ class ရဲ႕ေအာက္တည့္တည့္မွာ တုိက္ရိုက္ပါဝင္တဲ့ variable ကို field လို႔ေခၚပါတယ္။ method ထဲမွာပါတဲ့ သို႔မဟုတ္ class ရဲ႕တြန္႔ကြင္းမဟုတ္တဲ့ တျခားတြန္႔ကြင္းထဲမွာ ပါတဲ့ variable ကိုေတာ့ local variable လို႔ေခၚပါတယ္။ method ေၾကာ္ျငာတဲ့အထဲမွာ ပါတဲ့ variable ကို parameter လို႔ေခၚပါတယ္။ ဒါဆိုရင္ class တစ္ခုကိုေၾကာ္ျငာၿပီး အဲဒီ class ရဲ႕ field ေတြကိုပါေၾကာ္ျငာတဲ့ နမူနာတစ္ခု ေရးၾကည့္ရေအာင္လား။

 

class LaptopComputer {

public int memorySize;

private string CPU;

public int harddiskSize;

}

 

ဒီမွာတစ္ခုသတိထားမိတာရွိ ပါလိမ့္မယ္၊ private နဲ႔ public ဆိုတဲ့စာကားလံုးေတြပါ။ အဲဒီစကားလံုးေတြကို access modifier လို႔ေခၚပါတယ္၊ တျခား access modifier ေတြလည္းရွိပါတယ္ ဒါေပမဲ့ ေလာေလာဆယ္ ဒီႏွစ္ခုကိုပဲမွတ္သားထားပါ က်န္တာေတြေနာက္မွပဲ ရွင္းျပပါမယ္၊ ဒါမွမဟုတ္ရင္လည္း မိမိဘာသာရွာေဖြေလ့လာၾကည့္ပါ။ private လို႔ေၾကာ္ျငာထားတဲ့ field variable ကိုဒီ class ထဲကေနပဲအသံုးျပဳလို႔ရပါတယ္ တျခားေနရာကေန တျခား class တစ္ခုကေန ယူသံုးလို႔မရပါဘူး။ public လို႔ေၾကာ္ျငာထားရင္ေတာ့ ဘယ္ေနရာကေန ျဖစ္ျဖစ္ယူသံုးလို႔ရပါတယ္။

Member Function

Function ဆိုတာကုဒ္အစုအေဝး တစ္ခုပါ၊ သူကဒီအတိုင္းေနရင္ အလုပ္မလုပ္ပါဘူး၊ သူ႔ကိုအလုပ္လုပ္ဖို႔ေခၚ(call)လိုက္မွ သူကလုပ္တာပါ။ class တစ္ခုကို run လိုက္ရင္အဲဒီ class ထဲက main ဆိုတဲ့ function ကို system ကအလိုအေလ်ာက္ေခၚပါတယ္။ မိတ္ေဆြတို႔ main function ကိုျမင္ဖူးပါတယ္။ function တစ္ခုကိုဘယ္လို ေၾကာ္ျငာရလည္းဆိုတာ ေအာက္မွာၾကည့္ပါ။

public int calculateMemorySize() {

 

}

public ဆိုတာက access modifier ပါသူ႔အေၾကာင္းကို အေပၚမွာရွင္းျပၿပီးပါၿပီ။ function ေတြမွာလည္း access modifier က field variable ကလိုပါပဲ။ int ဆိုတာက return type လို႔ေခၚၾကပါတယ္။ function တစ္ခုကိုေခၚၿပီးရင္ အဲဒီ function ကအလုပ္လုပ္လို႔ၿပီးခ်ိန္မွာ၊ သူတြက္ခ်က္ၿပီးလို႔ ရတဲ့တန္ဖိုးကို function ေခၚတဲ့ေနရာကိုျပန္ေပးပါတယ္။ return ျပန္တဲ့တန္ဖိုးက int အမ်ိဳးအစားဆိုရင္ int လို႔ေရးရၿပီး၊ string ဆိုရင္ string လို႔ေရးရတယ္။ ဘာတန္ဖိုးမွ return မျပန္ရင္ void လို႔ေရးရတယ္။ () လက္သည္းကြင္းရဲ႕ေရွ႕ကေတာ့ function ရဲ႕နာမည္ပဲျဖစ္ပါတယ္။

 

လက္သည္းကြင္းထဲမွာ တန္ဖိုးတစ္ခုခု သို႔မဟုတ္ variable တစ္ခုခုထည့္ေပးလို႔ရပါတယ္။ အဲဒီတန္ဖိုးက parameter လို႔ေခၚပါတယ္။ function အလုပ္လုပ္တဲ့အခါမွာ လိုအပ္တဲ့တန္ဖိုးကို၊ အဲဒီ function ကိုေခၚတဲ့အခါမွာ လက္ဆင့္ကမ္းေပးလိုက္ရပါတယ္။ ဒါကို parameter passing လို႔ေခၚပါတယ္။

 

Function တစ္ခုကိုေခၚမယ္ဆိုရင္ အရင္ေၾကာ္ျငာဖို႔လိုအပ္ပါတယ္၊ ေၾကာ္ျငာထားတဲ့ function ကိုပဲေခၚလို႔ရပါတယ္။ function ရဲ႕နာမည္ကိုေရးျခင္းျဖင့္ function ကိုေခၚဆိုႏိုင္ပါတယ္။

 

public class Computer {

public int memorySize;

public int displayMemorySize() {

System.out.println(memorySize);

}

public static void main(String[] args) {

Computer lenovo = new Computer();

lenovo.memorySize = 4;

lenovo.displayMemorySize(); //function called

}

}

 

ဒီအေပၚကကုဒ္မွာ Computer lenovo = new Computer(); ဆိုတဲ့ကုဒ္ကို သတိထားမိပါလိမ့္မယ္။ အဲဒါက class တစ္ခုရဲ႕ object တစ္ခုကိုေၾကာ္ျငာတဲ့ကုဒ္ပါ။ ဒီကုဒ္မွာဆိုရင္ lenovo ဆိုတာ object ျဖစ္ၿပီးေတာ့၊ Computer ဆိုတာကအဲဒီ object ရဲ႕အမ်ိဳးအစား(type)ပါပဲ။ java မွာ object ဆိုတာ variable တစ္ခုပါပဲ၊ variable ေၾကာ္ျငာသလိုမ်ိဳး object ကိုေၾကာ္ျငာရပါတယ္။ new Computer() ဆိုတဲ့ကုဒ္က Computer ဆိုတဲ့ class ကေနၿပီး object တစ္ခုကိုဖန္တီးလိုက္တာပါ။

lenovo ဆိုတဲ့ object ရဲ႕ member variable ေတြ ဒါမွမဟုတ္ member function ေတြကို ယူသံုးခ်င္တယ္ဆိုရင္၊ အဲဒီ object ရဲ႕ေနာက္ကေန “.” dot ခံၿပီး variable ႏွင့္ function ေတြကိုအသံုးျပဳလို႔ရပါတယ္။ ဒီလိုေပါ့ lenovo.memorySize; ဒါဆိုရင္ lenovo ရဲ႕ field ကိုအသံုးျပဳတာပါ၊ Lenovo.displayMemorySize(); ဆိုရင္ေတာ့၊ displayMemorySize() function ကိုေခၚတာပါ။

method သို႔မဟုတ္ function ေတြကိုေခၚတဲ့ေနရာမွာ parameter ေတြထည့္ေပးႏိုင္ပါတယ္၊ အဲဒီ parameter ေတြက function အလုပ္လုပ္တဲ့ အထဲကိုေရာက္သြားမွာပါ။ function လက္ခံႏိုင္တဲ့ parameter အမ်ိဳးအစားႏွင့္ အေရအတြက္ကိုသာ ေပးပို႔ႏိုင္တာပါ။

Java class တစ္ခုမွာ နာမည္တူတဲ့ method ေတြတစ္ခုထက္ ပိုရွိခြင့္ရွိပါတယ္။ method ေတြဟာနာမည္တူလို႔ရေပမယ့္ method signatures ေတာ့တူလို႔မရပါဘူး၊ ဆိုလိုတာက မတူညီတဲ့ parameter ေတြရွိရပါမယ္။ ဒီလိုနာမည္တူ method ေတြကို overloaded method လို႔ေခၚပါတယ္။ overloaded method ေတြကို system ကခြဲျခားစစ္ေဆးရာမွာ parameter ေတြရဲ႕ type နဲ႔ အေရအတြက္ကို ၾကည့္ၿပီးခြဲျခားပါတယ္။

Previous : Java Tutorial 9

Next : Java Tutorial 11

Monday, January 27, 2014

Professional Web Development with PHP - PHP Introduction

PHP Introduction


PHP ဟာ server-side scripting language တစ္မ်ိဳးျဖစ္ပါတယ္။ server-side language ဆိုတာက Web Server ေပၚမွာ Run ႏိုင္တဲ့ language ကို ေျပာတာျဖစ္ပါတယ္။ PHP ကို general-purpose programming language အေနနဲ႕ အသံုးျပဳႏိုင္ေပမယ့္ အဓိကအားျဖင့္ Web Development လုပ္တဲ့ေနရာမွာသာ အမ်ားဆံုးအသံုးျပဳၾကပါတယ္။ PHP language ကို Desktop application ေတြေရးသားရာမွာ အသံုးျပဳႏိုင္ေပမယ့္ web development အတြက္သာ အဆင္ေျပေျပ အသံုးျပဳႏုိင္မယ့္ language ျဖစ္တဲ့ အတြက္ Web Development လုပ္တဲ့ေနရာမွာပဲ အသံုးျပဳေစခ်င္ပါတယ္။


“PHP: Hypertext Preprocessor” ကို အစြဲျပဳျပီး PHP ဆိုတဲ့ အမည္ကိုေပးထားတာ ျဖစ္ပါတယ္။ PHP ဟာ Open Source language တစ္မ်ိဳးျဖစ္တဲ့အတြက္ free အသံုးျပဳႏုိင္တဲ့ language တစ္မ်ိဳးျဖစ္ပါတယ္။ PHP ဟာ platform dependent မျဖစ္တဲ့အတြက္ Windows, Mac နဲ႕ Linux operating system ေတြေပၚမွာ အဆင္ေျပေျပ run ႏိုင္တဲ့ language တစ္မ်ိဳးျဖစ္ပါတယ္။ PHP ကို free အသံုးျပဳႏိုင္တဲ့ Apache web server ေပၚမွာ အမ်ားဆံုး အသံုးျပဳၾကတာ ျဖစ္တဲ့အျပင္ Microsoft ရဲ႕ ပိုက္ဆံေပးျပီး ၀ယ္ရတဲ့ IIS Web Server ေပၚမွာလည္း အသံုးျပဳႏိုင္တာကို ေတြ႕ရပါတယ္။


PHP ကို ကမၻာေပၚမွာရွိတဲ့ 244 million ထက္မ်ားတဲ့ website ေတြမွာ အသံုးျပဳေနၾကတာျဖစ္တဲ့အျပင္ 2.1 million ေက်ာ္တဲ့ web servers ေတြေပၚမွာ run ေနတာ ျဖစ္ပါတယ္။ ဒါ့အျပင္ TIOPE index community ရဲ႕ တြဲခ်က္မႈအရ PHP ဟာ ကမၻာေပၚမွာရွိတဲ့ programming language ေတြထဲမွာ popularity အဆင့္ ၆ ရရွိထားတဲ့ language လည္း ျဖစ္ပါတယ္။ ကဲ ဒါဆိုရင္ PHP ကို ဘာေၾကာင့္ ေလ့လာသင့္သလဲဆိုတာ သိေလာက္ျပီ ထင္ပါတယ္။


ဆက္လက္ျပီး PHP ျဖစ္ေပၚလာတဲ့ သမိုင္းေၾကာင္း ေလးကိုလည္း ေျပာျပခ်င္ပါေသးတယ္။ ေနာက္ chapter မွသာ PHP run ဖို႕ installation လုပ္ရတာေတြ ဘယ္လိုမ်ိဳး run ရတယ္ဆိုတာေတြကို ဆက္လက္ရွင္းျပေပးပါ့မယ္။


History


PHP ကို ၁၉၉၅ ခုႏွစ္မွာ Rasmus Lerdorf က စတင္တီထြင္ခဲ့တာျဖစ္ျပီး အခုခ်ိန္မွာေတာ့ PHP Group က ဆက္လက္ျပီး ထုတ္လုပ္ေပးေနတာ ျဖစ္ပါတယ္။ Rasmus Lerdorf ဟာ သူရဲ႕ personal homepage ကို maintain လုပ္ဖို႕ ရည္ရြယ္ခ်က္နဲ႕ Common Gateway Interface (CGI) Perl scriptes ေတြကို ေရးသားခဲ့ျပီး PHP ကို စတင္တီထြင္ခဲ့တာျဖစ္ပါတယ္။ သူတီထြင္ခါစက သူ႕ရဲ႕ resume ကို ေဖာ္ျပဖို႕နဲ႕ သူ႕ရဲ႕ web traffic ကို record လုပ္ဖို႕ ရည္ရြယ္ခ်က္နဲ႕ တီထြင္ခဲ့တာ ျဖစ္ပါတယ္။ သူဟာ performance ေကာင္းဖို႕အတြက္ C language ကိုအသံုးျပဳျပီး ေရးသားခဲ့တာျဖစ္တဲ့အျပင္ web forms ေတြကို databases နဲ႕ communicate လုပ္ႏိုင္ေအာင္ ေရးသားခဲ့တာ ျဖစ္ပါတယ္။ အစပိုင္းမွာ “Personal Home Page / Forms Interpreter” သို႕မဟုတ္ PHP/FI         ဆိုျပီး နာမည္ေပးခဲ့တာ ျဖစ္ပါတယ္။


Zeev Suraki နဲ႕ Andi Gutmans တို႕ ႏွစ္ေယာက္ဟာ ၁၉၉၇ ခုႏွစ္မွာ Lerdorf ေရးထားတဲ့ Personal Home Page Tools ကို parser အေနနဲ႕ ျပန္လည္ ေရးသားခဲ့ပါတယ္။  ဒါ့အျပင္ language ရဲ႕ နာမည္ကိုလည္း [PHP: Hypertext Preprocessor] PHP လို႕ နာမည္ေျပာင္းေပးခဲ့ျပီး PHP 3 ကို တရား၀င္အေနနဲ႕ ၁၉၉၈ ခုႏွစ္မွာ launch လုပ္ခဲ့ပါတယ္။ Suraski နဲ႕ Gutmans တို႕ ႏွစ္ေယာက္ဟာ PHP ရဲ႕ core ကို ျပန္လည္ ေရးသားခဲ့ျပီး Zend Engine ကို 1999 ခုႏွစ္မွာ release လုပ္ႏိုင္ခဲ့ပါတယ္။


ဒါကေတာ့ PHP ရဲ႕ သမိုင္းေၾကာင္း အက်ဥ္းေလးပဲ ျဖစ္ပါတယ္။ ကၽြန္ေတာ္ ဆက္လက္ျပီး PHP အေၾကာင္းကို itstudentpro.com website ေလးမွာ ဆက္လက္ေဖာ္ျပေပးသြားမွာ ျဖစ္ပါတယ္။ အခုခ်ိန္မွာ PHP ဟာ အသံုးတြင္က်ယ္ေနတဲ့ language ျဖစ္ေနသလို သူ႕ရဲ႕ framework ေတြဟာလည္း လူသံုးမ်ားေနတဲ့အတြက္ web development ကို ေလ့လာေနတဲ့ IT သမားမ်ားအတြက္ PHP ကို ဆက္လက္ေဖာ္ျပေပးသြားမွာ ျဖစ္ပါတယ္။ အခုခ်ိန္မွာ PHP ဟာ version 5.5.7 ( stable release in December 12, 2013) အထိ ေရာက္ရွိလာေနျပီ ျဖစ္ပါတယ္။


ေနာက္ chapter မွာ PHP ကို run ဖို႕ ဘာေတြ install လုပ္ရျပီး ဘယ္လို အသံုးျပဳရမလဲဆိုတာ ဆက္လက္ေဖာ္ျပေပးသြားမွာ ျဖစ္ပါတယ္။


Next Chapter >> PHP Installation and Configuration

Sunday, January 26, 2014

Java Tutorial 9

Java Tutorial 9

Array ဆိုတာ data အစုအေဝးႀကီးပါ၊ type(အမ်ိဴးအစား) တူေသာ variable ေတြကိုစုထားတဲ့ အစုအေဝးတစ္ခုပါပဲ။ အဲဒီလိုစုေဝးေနေတာ့ ကိုလိုခ်င္တဲ့ data တစ္ခုခ်င္းစီကို အစုအေဝးထဲက ဘယ္လိုဆြဲထုတ္မလဲလို႔ ေမးစရာရွိပါတယ္။ array ထဲက data တစ္ခုခ်င္းစီမွာ ကိုယ္ပိုင္နံပါတ္ကေလးေတြ ရွိၾကပါတယ္၊ လူေတြမွာနာမည္ေတြရွိသလိုေပါ့။ အဲဒီ့ နံပါတ္ေတြကိုေခၚၿပီး သက္ဆိုင္ရာ data ေတြကိုအသံုးျပဳႏိုင္ပါတယ္။ array ထဲက data တစ္ခုခ်င္းစီမွာ index(နံပါတ္) တစ္ခုႏွင့္ value(တန္ဖိုး)တစ္ခုစီရွိၾကပါတယ္။ array ဟာတကယ္ေတာ့ memory ေပၚမွာအခန္းေတြဖြဲ႕ၿပီး data ေတြကိုသိမ္းထားတာပါ၊ အခန္းတစ္ခန္းခ်င္းစီမွာ ကိုယ္ပိုင္နံပါတ္ႏွင့္ အခန္းထဲမွာသိမ္းထားတဲ့ တန္ဖိုးတစ္ခုစီရွိပါတယ္။ ေအာက္ကပံုေလးဟာ official java tutorial page ကေနယူထားတာပါ။

Array

 

Array ရဲ႕အခန္းေတြကိုနံပါတ္မွတ္ရာမွာ ပထမဦးဆံုးအခန္းကို “0”(zero) လို႔မွတ္ပါတယ္၊ ဒုတိယအခန္းကိုေတာ့ “1” မွတ္ပါတယ္။ Array တစ္ခုမွာ length ဆိုတာရွိပါတယ္။ array ရဲ႕ length ဆိုတာကေတာ့ သူ႔ထဲမွာပါဝင္တဲ့ data အေရအတြက္၊ တစ္နည္းေျပာရရင္ အခန္းအေရအတြက္ ပါပဲ။ array ထဲမွာ အခန္း ၅ ခန္း သို႔မဟုတ္ data ၅ ခုပါတယ္ဆိုရင္ သူ႔ရဲ႕ length က ၅ ျဖစ္ပါတယ္။ array ရဲ႕ပထမဆံုးအခန္းကို “0” လို႔ေပးထားတဲ့အတြက္၊ array length က ၅ ျဖစ္တယ္ဆိုရင္ ေနာက္ဆံုးအခန္းရဲ႕နံပါတ္က ၄ ျဖစ္ပါတယ္။ array ေတြကိုကိုင္တြယ္တဲ့အခါ ဒီအခ်က္ကိုသတ္ိထားသင့္ပါတယ္။ array ဆိုတာ type တူတဲ့ variable ေတြကိုစုထားတာ ျဖစ္တဲ့အတြက္ array type ကိုေၾကာ္ျငာတဲ့အခါ ေရွ႕ကပိုစ့္ေတြမွာေျပာထားတဲ့ variable type ေတြကို array ရဲ႕ type အျဖစ္သံုးႏိုင္ပါတယ္၊ class ေတြကိုလည္း array type အျဖစ္သံုးႏိုင္ပါတယ္။ array ေၾကာ္ျငာပံုကို နမူနာၾကည့္ပါဦး။ int[] arr; ဒီလိုမ်ိဴးေၾကာ္ျငာရပါတယ္၊ array ရဲ႕ length ကိုသတ္မွတ္တာက ေတာ့ဒီလိုမ်ိဴးပါ arr=new int[3]; ၊ array ထဲကို data ထည့္ၿပီဆိုရင္ဒီလိုပါ arr[0] = 100; arr[1] = 200; arr[2] = 300; ေအာက္မွာနမူနာ program တစ္ပုဒ္ေပးထားပါတယ္။

“ArrayExample.java”

class ArrayExample {

public static void main(String[] args) {

int[] anArray;              // declares an array of integers

 

anArray = new int[10];      // allocates memory for 10 integers

anArray[0] = 100; // initialize first element

anArray[1] = 200; // initialize second element

anArray[2] = 300; // etc.

anArray[3] = 400;

anArray[4] = 500;

anArray[5] = 600;

anArray[6] = 700;

anArray[7] = 800;

anArray[8] = 900;

anArray[9] = 1000;

 

System.out.println("Element at index 0: " + anArray[0]);

System.out.println("Element at index 1: " + anArray[1]);

System.out.println("Element at index 2: " + anArray[2]);

System.out.println("Element at index 3: " + anArray[3]);

System.out.println("Element at index 4: " + anArray[4]);

System.out.println("Element at index 5: " + anArray[5]);

System.out.println("Element at index 6: " + anArray[6]);

System.out.println("Element at index 7: " + anArray[7]);

System.out.println("Element at index 8: " + anArray[8]);

System.out.println("Element at index 9: " + anArray[9]);

}

}

 

ဒီမွာတျခားေသာ array ေၾကာ္ျငာနည္းေတြျပထားပါတယ္၊ ေလ့လာလိုက္ပါဦး။
byte[] anArrayOfBytes;

short[] anArrayOfShorts;

long[] anArrayOfLongs;

float[] anArrayOfFloats;

double[] anArrayOfDoubles;

boolean[] anArrayOfBooleans;

char[] anArrayOfChars;

String[] anArrayOfStrings;

 

ေၾကာ္ျငာျခင္း၊ တန္ဖိုးထည့္ျခင္း ႏွင့္ အသံုးျပဳျခင္း

String[] strArray; ဒါဟာ array ေၾကာ္ျငာတာပါ။

String strArray[]; ဒီလိုေၾကာ္ျငာလို႔လည္းရပါတယ္။

String[] strArray = new String[10]; ဒါကလည္းေၾကာ္ျငာတာပါပဲ၊ သူကအခန္းအေရအတြက္ကို ပါ

တစ္ခါတည္းေၾကာ္ျငာသြားပါတယ္။

ေၾကာ္ျငာၿပီးရင္ တန္ဖိုးထည့္ရပါတယ္။
anArray[0] = 100; // initialize first element

anArray[1] = 200; // initialize second element

anArray[2] = 300; // etc.


ဒီလိုမ်ိဴး array ကိုဖန္တီးၿပီး တန္ဖိုးထည့္တာကို တစ္ခါတည္းေပါင္းေရးလို႔ရပါတယ္။

int[] intArray = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000};


ဒီလိုလည္းရပါေသးတယ္၊ ကိုယ္ႏွစ္သက္သလိုအသံုးျပဳႏိုင္ပါတယ္။

int[] intArray = new int[] {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000};


array တစ္ခုႏွင့္တစ္ခု ေကာ္ပီကူးရင္ေတာ့ဒီလိုပါ။

ArrayOne = ArrayTwo;


ဒါေပမဲ့ အဲဒီလိုေကာ္ပီကူးရင္ အဲဒီ array ႏွစ္ခုဟာခ်ိတ္ဆက္သြားပါတယ္။ ဆိုလိုတာက array တစ္ခုရဲ႕အခန္းထဲက တန္ဖိုးတစ္ခုေျပာင္းတဲ့အခါ၊ အဲဒီ array နဲ႔ခ်ိတ္ဆက္ထားတဲ့ array ရဲ႕အလားတူအခန္းထဲက တန္ဖိုးဟာလည္း ေျပာင္းလည္းသြားရပါတယ္။

နမူနာေလးကိုၾကည့္ပါဦး။

int[] ArrayOne = {100,200,300};

int[] ArrayTwo = ArrayOne;

ArrayTwo[1] = 500;

ဒီကုဒ္ေလးရဲ႕ အဆံုးမွာ ArrayOne ႏွင့္ ArrayTwo တို႔ရဲ႕တန္ဖိုးေတြဟာ ဒီလိုမ်ိဴးပါ {100,500,300};

ျပင္လိုက္တာက ArrayTwo ရဲ႕ အခန္း ၂ ကိုပါ၊ ခ်ိတ္ဆက္ထားတဲ့အတြက္ ArrayOne ရဲ႕အခန္း ၂ ပါေျပာင္းလဲသြားပါတယ္။


တကယ္လို႔ array ေတြကိုခ်ိတ္ဆက္မွဳမရွိပဲ ကူးခ်င္တယ္ဆိုရင္ Arrays.copyOf(firstArray, firstArray.length); အဲဒီလိုေရးရမွာပါ။ နမူနာကိုၾကည့္ပါ။

int[] ArrayTwo = Arrays.copyOf(ArrayOne, ArrayOne.length);


Loop ႏွင့္ array

ArrayExample.java ဆိုတဲ့နမူနာကိုၾကည့္ၿပီး ထူးျခားတာတစ္ခုေတြ႔ပါလိမ့္မယ္၊ သေဘာတရားတူတဲ့ ကုဒ္ေတြကို ထပ္ကာထပ္ကာေရးထားပါတယ္၊ ဒါဆိုရင္ loop ကိုသံုးမယ္ဆိုရင္ ကုဒ္ေတြကို ထပ္ကာထပ္ကာေရးစရာမလိုေတာ့ပါဘူး။ array ေတြအတြက္သီးသန္႔ စပယ္ရွယ္ loop တစ္မ်ိဴးရွိပါတယ္၊ အဲဒါကေတာ့ “for each” loop လို႔ေခၚပါတယ္။ ဒီလိုေရးရပါတယ္ for( variable : collection ) { } လို႔ေပါ႔။ for each ရဲ႕သေဘာက ဒီ array သို႔မဟုတ္ collection ထဲက data ေတြကိုတစ္လွည့္စီ loop ပတ္မယ္ဆိုတဲ့သေဘာပါ။ collection အေၾကာင္းကိုေတာ့ ေနာက္မွရွင္းျပေတာ့မယ္၊ array ဆိုတာလည္း collection တစ္မ်ိဴးပါပဲ။ ဒီ for each ထဲက collection ဆိုတဲ့ေနရာမွာ ကိုယ္ loop ပတ္ခ်င္တဲ့ array ဒါမွမဟုတ္ collection ကိုထည့္ရပါမယ္။ variable ဆိုတဲ့ေနရာမွာေတာ့ loop ပတ္တဲ့အေခါက္တိုင္းမွာ collection ထဲက data တစ္ခုခ်င္းစီကို ကိုယ္စားျပဳမယ့္ variable ကိုထည့္ရပါမယ္။ ဒီ variable ရဲ႕ type က array ရဲ႕ type နဲ႔တူရပါမယ္။ ေအာက္ကနမူနာကို ေလ့လာၾကည့္ပါဦး သူ႔ရဲ႕အေျဖက ArrayExample.java ရဲ႕အေျဖနဲ႔အတူတူပါပဲ။

“ShrinkOfArrayExample.java”

class ShrinkOfArrayExample {

public static void main(String[] args) {
int[] intArray = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000};

for (int i : intArray) {

System.out.println(i);

}

}

}

 

Command Line Parameters

မိတ္ေဆြတို႔ သတိထားမိၾကမွာပါ String[] args ဆိုတဲ့စာသားကို ခဏခဏျမင္ဖူးမွာပါ။ String[] args ဆိုတာ array ပါပဲဆိုတာေျပာစရာမလိုေတာ့ပါဘူး၊ ဒါေပမဲ့ ေျပာစရာေတာ့ရွိပါတယ္။ main ဆိုတဲ့ method ထဲကကုဒ္ေတြ run တဲ့အခ်ိန္မွာ၊ အဲဒီ args ဆိုတဲ့ array ကိုယူသံုး(access)ခြင့္ရွိပါတယ္။ ဒါဆိုေမးစရာရွိတာက အဲဒီ array ကဘယ္ကေနဘယ္လိုေရာက္တာလဲ။ command line ကေန java ဆိုတဲ့ command ကိုရိုက္ၿပီး၊ java class ဖိုင္ကို run လိုက္တဲ့အခ်ိန္မွာ၊ အဲဒီ command ရဲ႕အေနာက္ကေန စာသားတစ္ခုခု ထည့္ေပးလိုက္လို႔ရပါတယ္။ အဲဒီစာသားက args ရဲ႕တန္ဖိုးအေနနဲ႔ args ရဲ႕အခန္းထဲကိုေရာက္သြားမွာပါ။ ဒီလို command ကို java ExampleClass aaaa bbbb cccc စမ္းၾကည့္လိုက္ ရင္ args{“aaaa”, “bbbb”, “cccc”} ဆိုၿပီးေတာ့ args ရဲ႕အခန္းေတြထဲကို string အေနနဲ႔ဝင္သြားမွာပါ။ နမူနာေလးကိုၾကည့္လိုက္ပါဦး။ ေနာက္ေနဒီလိုမ်ိဴး run ေနာ္၊ java Message hello ဒါမွမဟုတ္ java Message hey hi how အဲဒီလိုမ်ိဴး ပံုစံအမ်ိဴးမ်ိဴး run ၾကည့္ပါ။

“Message.java”

public class Message {

public static void main(String[] args) {

for (int i = 1; i < args.length; i++) {

System.out.println( args[i] );

}

}

}

Previous ; Java Tutorial 8

Next : Java Tutorial 10

Wednesday, January 22, 2014

Samsung Tech Institute mobile app training

Samsung Tech Institute Mobile App Training


Samsung Tech Institute Mobile App Training သင္တန္းကို ရန္ကုန္ကြန္ပ်ဴတာတကၠသုိလ္တြင္ ဒီေန႕  22, January, 2014 ကေနျပီး March 21 2014 ခုႏွစ္အထိ သင္တန္းေပးမွာ ျဖစ္ပါတယ္။ သင္တန္းတက္ေရာက္မယ့္ ေက်ာင္းသူ၊သားမ်ား အေနျဖင့္ ေက်ာင္းကုိ အျမန္ဆက္သြယ္ေပးၾကပါရန္ ေလးစားစြာျဖင့္ ပန္ၾကားအပ္ပါသည္။

ေလးစားစြာျဖင့္

ေ၀ျဖိဳးေအာင္ [ itstudentpro ]

 

Tuesday, January 21, 2014

Java Tutorial 8

Java Tutorial 8(String)

Java မွာ “string” ဆိုတဲ့ variable type တစ္မ်ိဴးရွိပါတယ္၊ သူ႔ကတကယ္ေတာ့ java library ရဲ႕ class တစ္ခုပါပဲ။ character sequence (စကားလံုးအစဥ္တန္း) သို႔မဟုတ္ စာသား ကိုသိမ္းတဲ့ေနရာမွာ string ကိုသံုးပါတယ္။ String ကိုဒီလို String message = “Have a nice day”; အသံုးျပဳရပါတယ္။ string variable ရဲ႕တန္ဖိုးကို “ ” အတြင္းထည့္ေပးရပါတယ္။ ဒီ string variable ရဲ႕တန္ဖိုးကို System.out.print() နဲ႔ထုက္ၾကည့္မယ္ဆိုရင္ စာသားေတြထြက္လာမွာပါ။ String ဟာ java library ရဲ႕ class တစ္ခုျဖစ္တာေၾကာင့္ new နဲ႔ေၾကာ္ျငာလို႔ရပါတယ္၊ ဒီလိုပါ String message = new String(“Have a nice day”); အဲဒီလိုေၾကာ္ျငာလို႔လည္းရပါတယ္။

ဒီ java class ျဖစ္တဲ့ string မွာ function (method) ေတြ member variable ေတြအမ်ားႀကီးရွိပါတယ္၊ member function ႏွင့္ member variable အေၾကာင္းကိုေတာ့ေနာက္မွ အေသးစိတ္ရွင္းျပပါမယ္။ ေလာေလာဆယ္သိထားရမွာက string ရဲ႕ ဘယ္ function ေတြကိုသံုးရင္ဘာေတြျဖစ္တယ္ ဘာေတြလုပ္တယ္ဆိုတာပါပဲ။ string ရဲ႕အရွည္ တစ္နည္းေျပာရရင္ string ထဲမွာပါတဲ့ စကားလံုးအေရအတြက္၊ အဲဒါကိုသိခ်င္ရင္ .length() လို႔ေရးရပါမယ္၊ နမူနာကိုၾကည့္ပါ။

String message = “have a nice day”;

int len = message.length();

System.out.println(len);

 

ဒီနမူနာကုဒ္ကို run ၾကည့္ရင္အေျဖ 15 လို႔ထြက္ပါလိမ့္မယ္၊ သူက “have a nice day” ဆိုတဲ့စာသားကိုေရတြက္လိုက္တာပါ၊ space ေတြကိုပါထည့္သြင္းေရတြက္ပါတယ္။ တကယ္လို႔ “I like java” ဆိုတဲ့စာသားကိုေရတြက္မယ္ဆိုရင္ 11 ဆိုတဲ့အေျဖထြက္လိမ့္မယ္။ ေအာက္မွာေနာက္ထပ္ နမူနာ program တစ္ပုဒ္ထက္ေပးထားပါတယ္။

“StringSample.java”

public class StringSample {

public static void main(String[] args) {

String str1 = “this is string”;

System.out.println(str1.length());

String str2 = “I like java”;

System.out.println(str2.length());

}

}

String ႏွစ္ခုကိုေပါင္းစပ္လို႔ရပါတယ္၊ str1.concat(str2); လို႔ေရးရပါတယ္။ + ကိုသံုးလည္းရပါတယ္၊ str1 + str2; အဲလိုေရးရမွာပါ။ နမူနာကုဒ္ကိုစမ္းၾကည့္ပါ။

String str1 = “Hello ”;

String str2 = “World”;

String str3 = str1.concat(str2);

System.out.println(str1);

System.out.println(str2);

System.out.println(str3);

System.out.println(str1+str2);

String ကေနတျခား variable ေတြျဖစ္တဲ့ Byte, Integer, Double, Float, Long ႏွင့္ Short တို႔ကိုေျပာင္းခ်င္ရင္၊ ေျပာင္းခ်င္တဲ့ variable type ေနာက္ကေန .parse….(var) လို႔ေရး လက္သည္းကြင္းထဲမွာ ေျပာင္းခ်င္တဲ့ variable ကိုထည့္ေပးရပါတယ္။

String str = “11”;

int a = Integer.parseInteger(str);

float b = Float.parseFloat(str);

 

Number ေတြကေန String ကိုေျပာင္းခ်င္ရင္ String.valueOf(var) လို႔ တြန္႔ကြင္းထဲမွာ variable ကိုထည့္ေရးရပါတယ္။

int a = 11;

String str = String.valueOf(a);

ဒီလိုလည္းေရးလို႔ရေသးတယ္။

long b = 11;

String strb = Long.toString(b);

 

String ႏွစ္ခုကိုႏွိဳင္းယွဥ္တဲ့အခါ “==” ဆိုတဲ့ operator ကိုမသံုးရပါဘူး၊ ဒီလို str1.equals(str2); မ်ိဴးေရးရပါမယ္။

String str = “Hello”;

if(str.equals(“Hello”)){

 

} else if(“Hello”.equals(str)) {

 

}

တကယ္လို႔ ကိုယ္ႏွိဳင္းယွဥ္တဲ့ string ႏွစ္ခုမွာ စာလံုးအႀကီးအေသးကို ထည့္သြင္းၿပီးမႏွိဳင္းယွဥ္ခ်င္ရင္ ဒီလို str1.equalsIgnoreCase(str2); ေရးရပါမယ္။

String ထဲမွာပါဝင္တဲ့ စကားလံုးေတြဟာ ကိုယ္ပိုင္ “တည္ေနရာ”(position) ရွိၾကပါတယ္။ ဒီ string ကိုၾကည့္ပါ “Hello” ဒီမွာ “H” ဆိုတဲ့စကားလံုးဟာ position 0 (position zero) ေနရာမွာရွိပါတယ္၊ “o” စကားလံုးဟာ ၄ ေနရာမွာ(position 4) ရွိပါတယ္။ charAt(2) ဆိုတာ position 2 မွာရွိတဲ့စကားလံုးကို ဆြဲထုတ္လိုက္တာပါ။

String str = “Tell me something”;

char a = str.charAt(3);

System.out.println(a);  //output is “l”

System.out.println(str.charAt(5));  //output is “m”

 

String Builder

String အပိုင္းအစေတြကို ခဏခဏေပါင္းစပ္ေနမယ္ဆိုရင္ အခ်ိန္ၾကာပါတယ္၊ ဒီေနရာမွာ string builder ဆိုတဲ့ class ကိုသံုးသင့္ပါတယ္။ string builder နဲ႔ဆိုရင္ string ကို ေပါင္းစပ္လို႔ရတယ္၊ string ထဲကအစိတ္အပိုင္းတစ္ခုကို ဖ်က္လိုက္လို႔ရတယ္၊ အစားထိုးလို႔ရတယ္၊ string ကိုေျပာင္းျပန္လွန္လို႔ရတယ္၊ string ထဲကကိုယ္ႀကိဳက္တဲ့ေနရာမွာရွိတဲ့ character (စကားလံုးကို) ဆြဲထုတ္လို႔ရတယ္။ append() ဆိုတာ string ကိုေနာက္ကေနေပါင္းထည့္တာပါ။

char ch = “H”;

String str = “ello”;

StringBuilder builder = new StringBuilder();

builder.append(ch); // appends a single character

builder.append(str); // appends a string

String completedString = builder.toString();

System.out.println(completedString);

 

reverse() ဆိုတာ string ကိုေျပာင္းျပန္လွန္တာပါ။ ေနာက္ထပ္နမူနာ တစ္ခုပါ။

public class StringBuilderDemo {

public static void main(String[] args) {

String palindrome = "Dot saw I was Tod";

StringBuilder sb = new StringBuilder(palindrome);

sb.reverse();  // reverse it

System.out.println(sb);

}

}

 

StringBuilder အေၾကာင္းကို documention ဖတ္ၿပီးမိမိဘာသာဆက္လက္ ေလ့လာၾကည့္ပါ။

Previous : Java Tutorial 7

Next : Java Tutorial 9

breaking news for master thesis 20th batch of ucsy

Tomorrow, 22/01/2014, Android mobile application training will start.
So all the students who have sent the application form, need to come to UCSY mobile lab on 22/01/2014 , not later than8:30 am , and contact with Daw Sabai Phyu from software department for details information.

credit : Email from Teacher Khin Nwe Ni Tun

Monday, January 20, 2014

Java Tutorial 7

Java Tutorial 7(Control Flow and Condition) part 2

If statement အေၾကာင္းေျပာၿပီးတဲ့ေနာက္ switch statement အေၾကာင္းဆက္ေျပာပါမယ္။ switch ဟာ if ႏွင့္နည္းနည္းဆင္ပါတယ္၊ “if…else if…else if” ႏွင့္သေဘာတရားျခင္း ဆင္ပါတယ္။ ေအာက္ကနမူနာကို ရွင္းျပပါမယ္။

“SwitchSample.java”

public class SwitchSample {

public static void main(String[] args) {

 

int month = 8;

switch (month) {

case 1:  System.out.println("January");       break;

case 2:  System.out.println("February");      break;

case 3:  System.out.println("March");         break;

case 4:  System.out.println("April");         break;

case 5:  System.out.println("May");           break;

case 6:  System.out.println("June");          break;

case 7:  System.out.println("July");          break;

case 8:  System.out.println("August");        break;

case 9:  System.out.println("September");     break;

case 10: System.out.println("October");       break;

case 11: System.out.println("November");      break;

case 12: System.out.println("December");      break;

default: System.out.println("Invalid month"); break;

}

System.out.println(monthString);

}

}

 

ဒီစာသားကိုၾကည့္ပါ “switch(month)” ၊ အဓိပၸါယ္ကေတာ့ month ရဲ႕တန္ဖိုးကိုစစ္ေဆးတာပါ။ “case 1:” ဆိုတဲ့စာသားကေတာ့ month ရဲ႕တန္ဖိုး ၁ ျဖစ္ခဲ့ရင္ ဆိုတဲ့အဓိပၸါယ္ရပါတယ္။ month ရဲ႕တန္ဖိုးကိုစစ္ေဆးၿပီး 1 ျဖစ္ရင္ “case 1:” ရဲ႕အေနာက္ကကုဒ္ေတြ run ပါမယ္၊ break ထိေရာက္ေအာင္ run မွာပါ။ တကယ္လို႔တန္ဖိုးက 2 တို႔ 3 တို႔ျဖစ္မယ္ဆိုရင္ “case 2:” တို႔ “case 3:” တို႔ စသည္ျဖင့္ သက္ဆိုင္ရာ case ေနာက္ကကုဒ္ကို run မွာပါ။ ဘယ္ case နဲ႔မွမညီဘူးဆိုရင္ default ေနာက္ကကုဒ္ကို run မွာပါ၊ default ကိုမထည့္လည္းရပါတယ္။ default မထည့္ရင္ေတာ့၊ ဘယ္ case နဲ႔မွမညီတဲ့အခါ ဘာအလုပ္မွ လုပ္မွာမဟုတ္ပါဘူး။

If ႏွင့္ switch ဟာနည္းနည္းဆင္တယ္ဆိုေတာ့ ဘယ္ေနရာမွာ ဘယ္ဟာကိုသံုးရမလဲဆိုတာ မိမိဘာသာစဥ္းစားဆံုးျဖတ္ရမွာပါ။ if ကေတာ့တန္ဖိုးအမ်ိဴးမ်ိဴး expression အမ်ိဴးမ်ိဴးကို စစ္ေဆးႏိုင္ေပမဲ့၊ switch ကေတာ့တန္ဖိုးတစ္ခုတည္း(single value) ကိုပဲစစ္ေဆးႏိုင္ပါတယ္။ switch မွာဆန္းျပားတဲ့ အခ်က္တခ်က္ရွိပါတယ္၊ break; ဆိုတဲ့ကုဒ္ပါ။ case တစ္ခုကိုအလုပ္လုပ္ၿပီးခ်ိန္ break; ကိုေရာက္တဲ့အခါ ေအာက္က case ေတြကိုဆက္မလုပ္ပဲနဲ႔ switch ရဲ႕အျပင္ကိုထြက္သြားပါတယ္။ break; ကိုထည့္မေရးလည္းရပါတယ္၊ ထည့္မေရးရင္ ေအာက္ကကုဒ္ေတြကို ဆက္လုပ္ပါတယ္၊ break; ဆိုတာ ေရွ႕ဆက္မသြားနဲ႔ရပ္လိုက္ေတာ့ လို႔အဓိပၸါယ္ရပါတယ္။ အေပၚကနမူနာ program ကို break; ဆိုတဲ့ကုဒ္ေတြ ျဖဳတ္ၿပီး run ၾကည့္ပါ။

 

While and Do-While Loops

While ဆိုတာ condition မွန္သေရြ႕ အလုပ္ကိုဆက္လုပ္ေနမွာပါ၊ အေျခအေနမွန္ေနသမွ် ကာလပတ္လံုး တြန္႔ကြင္းထဲကကုဒ္ေတြ ထပ္ကာထပ္ကာဆက္တိုက္ run ေနမွာပါ။ သူ႔ရဲ႕ structure ကဒီလိုပါ၊ “while(condition) { //statements; }” ဒီပံုစံနဲ႔ေရးရပါမယ္။ while ကိုသံုးရင္သတိထားရပါမယ္၊ ဘာေၾကာင့္လဲဆိုေတာ့ condition မွန္ေနရင္ အဆက္မပ်က္ run ေနမွာျဖစ္တဲ့အတြက္ ဘယ္ေတာ့မွမရပ္ပဲ run ေနတာမ်ိဴးျဖစ္တက္ပါတယ္။ ဒါေၾကာင့္ တစ္ခ်ိန္ခ်ိန္မွာ condition မွားသြားတာမ်ိဴးျဖစ္ေအာင္ ေရးထားသင့္ပါတယ္။ ေအာက္ကနမူနာကို run ၾကည့္ပါဦး။

“WhileSample.java”
class WhileSample {

     public static void main(String[] args){

          int count = 1;

          while (count < 11) {  //when condition is true

              //this block is running

               System.out.println("Count is: " + count);

               count++;

          }

     }

}


ဒီနမူနာမွာ “while(count < 11)” ဆိုတာ၊ count တန္ဖိုးဟာ 11 ေအာက္ငယ္ေနသေရြ႕ တြန္႔ကြင္းထဲကကုဒ္ေတြကို run မွာပါ။ တြန္႔ကြင္းထဲမွာ count ကို ၁ တိုးတဲ့ကုဒ္ပါဝင္ပါတယ္၊ ဒါမွ count ရဲ႕တန္ဖိုးဟာ တစ္ခ်ိန္မွာ 11 ႏွင့္ညီၿပီး သို႔မဟုတ္ 11 ထက္ႀကီးၿပီး condition ဟာမွားသြားပါလိမ့္မယ္၊ အဲဒီအခ်ိန္မွာ while ဟာရပ္တန္႔သြားမွာပါ။

Do-while ဆိုတဲ့ statement တစ္မ်ိဴးလည္းရွိပါေသးတယ္။ သူက while နဲ႔ဆင္တူပါတယ္၊ ဒါေပမဲ့ကြာျခားခ်က္ရွိပါတယ္။ while ရဲ႕ flow ကဒီလိုရွိပါတယ္၊ while ကအျမဲတမ္း condition ကိုအရင္စစ္ေဆးပါတယ္၊ ၿပီးမွ condition မွန္မွအလုပ္ဆက္လုပ္ပါတယ္။ do-while မွာက condition စစ္တဲ့ကုဒ္ဟာ တြန္႔ကြင္းရဲ႕ေအာက္မွာရွိပါတယ္၊ ဒီေတာ့ condition မွန္သည္ျဖစ္ေစ မမွန္သည္ျဖစ္ေစ ပထမဦးဆံုးတစ္ေခါက္ေတာ့ သူက run ပါတယ္။ သူ႔ကိုဒီလို “do { statement; } while(condition);” ေရးရပါတယ္။ while ႏွင့္ do-while ကိုႏွိဳင္းယွဥ္ျပထားတဲ့ ေအာက္ကနမူနာကို စမ္းၾကည့္ပါ။

“WhileNDo.java”
class WhileNDo {

     public static void main(String[] args){

          int count = 1;

          while (count > 2) {

            System.out.println(“while”);

          }

          do {

             System.out.println(“do while”);

          } while(count > 2);

     }

}

 

For Loop
While တို႔ Do-while တို႔ဆိုတာ condition မွန္ေနသေရြ႕ run မွာပါ၊ ဘယ္ႏွစ္ႀကိမ္ loop ပတ္မလဲဆိုတာ အေရအတြက္ အတိအက် မသိရပါဘူး။ ဒါေပမဲ့ for ကေတာ့ အႀကိမ္အေရအတြက္ အတိအက်ရွိပါတယ္။ “for(initialization; termination; increment) { statement; }” ဆိုတဲ့ပံုစံအတိုင္းေရးရပါတယ္။ “initialization” ဆိုတဲ့အပိုင္းက စမွတ္ကိုေျပာတာပါ၊ “termination” ဆိုတာဆံုးမွတ္ပါ၊ “increment” ဆိုတာတန္ဖိုးကိုတိုးတဲ့အပိုင္းပါ။

“ForSample.java”

class ForSample {

     public static void main(String[] args){

          for(int i=1; i<11; i++){

               System.out.println("Count is: " + i);

          }

          for(i=1; i<5; i++){

               System.out.println("Now count is lower than five”);

          }

     }

}


ဒီနမူနာမွွာ for ရဲ႕ပထမပိုင္းမွာ variable တစ္ခုေၾကာ္ျငာၿပီး ထည့္ရပါမယ္၊ ေၾကာ္ျငာၿပီးသား variable ကိုထည့္လည္းရပါတယ္၊ သူက loop ရဲ႕စမွတ္ပါပဲ။ for ရဲ႕အလယ္ပိုင္းက condition ပါ၊ ဒီ condition မွန္သေရြ႕ loop ပတ္ေနမွာပါ၊ သူကို loop ရဲ႕ဆံုးမွတ္လို႔ ေျပာလို႔ရပါတယ္။ for ရဲ႕ေနာက္ဆံုးပိုင္းကေတာ့ variable ကိုတန္ဖိုးေျပာင္းတဲ့ အပိုင္းပါ၊ for ရဲ႕စမွွတ္ျဖစ္တဲ့ variable ကိုဆံုးမွတ္ေရာက္ေအာင္ တန္ဖိုးေျပာင္းေပးတဲ့ အပိုင္းပါ။ ဒီကုဒ္ “for(i=1; i<5; i++)” မွာ i ဟာ 1 ကေနစပါတယ္၊ “i<5” ဆိုတဲ့ condition မွန္ေနသေရြ႕ ဒီ loop ကိုပတ္ပါမယ္၊ “i++” ဆိုတာ loop တစ္ခါပတ္ၿပီးတိုင္း i ကို 1 တိုးပါတယ္။


Branching Statements

ဒီ while တို႔ for တုိ႔ဆိုတဲ့ loop ေတြကိုသံုးတဲ့အခါ၊ ဒီ loop ေတြအလုပ္လုပ္ေနခ်ိန္မွာ run ေနတာကိုရုတ္တရက္ ရပ္တန္႔ေစခ်င္ရင္ break ဆိုတဲ့ကုဒ္ကိုသံုးရပါမယ္။ “break;” လို႔ေရးလိုက္ရင္ loop ဟာဆက္မ run ေတာ့ပဲရပ္တန္႔သြားပါတယ္။ “continue” ဆိုတဲ့ကုဒ္ကေတာ့ loop ကိုဆက္ run ခိုင္းတာပါပဲ။

Previous : Java Tutorial 6
Next : Java Tutorial 8

Microsoft fixes Surface Pro 2 problems [ battery problem and sleep problem ]

Microsoft ဟာ သူရဲ႕ surface pro 2 ရဲ႕ problems အခ်ိဳ႕ကို fix လုပ္ေပးလုိက္ပါျပီလို႕ ေၾကျငာခဲ့ပါတယ္။ အခုဆိုရင္ battery life နဲ႕ ပတ္သက္ျပီး ျဖစ္ေနတဲ့ problems ေတြနဲ႕ မလုိအပ္ဘဲ wake up ျဖစ္ေနတဲ့ problem ေတြကို ေျဖရွင္းျပီးပါျပီ လို႕ Microsoft က ေၾကျငာခဲ့ပါတယ္။ ဒီ problems ေတြကို December Windows Update ကို ျပဳလုပ္ထားတဲ့ Surface Pro 2 owner ေတြဟာ အဓိက ခံစားေနရတာ ျဖစ္ပါတယ္။ Microsoft ဟာ ေနာက္ထပ္ software ေတြမွာလည္း problems ေတြကို အတက္ႏိုင္ဆံုး ေျဖရွင္းေပးသြားပါ့မယ္လို႕ ေၾကျငာထားတာကိုလည္း ေတြ႕ရပါတယ္။

Microsoft က ဘယ္လို ေၾကျငာထားတယ္ဆိုတာကို ေအာက္မွ ေဖာ္ျပေပးလိုက္ပါတယ္။

This weekend we released an update that addresses the unexpected wake and battery drain behavior experienced by a small number of Surface Pro 2 customers who installed the December Windows Update. This should have no impact on users already running the October Windows Update. We're working hard to address the remaining Surface Pro 2 items from the December Windows Update.


credit: Engadget


Samsung Galaxy S5 ရဲ႕ tile-based home screen အသစ္

Samsung ဟာ Galaxy S5 ကို ၂၀၁၄ ခုႏွစ္အတြင္းမွာ ထုတ္လုပ္ေရာင္းခ်ဖြယ္ရာ ရွိေနပါတယ္။ ေနာက္ထပ္ထြက္ရွိလာမည္႕ Galaxy S5 ရဲ႕ Home screen ဟာ အရင္က ထုတ္ခဲ့တဲ့ Galaxy s4 နဲ႕ ကြာျခားႏိုင္ျပီး Google ရဲ႕ Google Now လို notifications ပံုစံနဲ႕ Microsoft ရဲ႕ Modern/Metro UI ပံုစံတို႕လိုမ်ိဳး ပံုစံနဲ႕ ပြဲထုတ္လာႏိုင္ဖြယ္ရာရွိပါတယ္။ ဒီ Home Screen ကိုေတာ့ TouchWiz home screen လို႕ နာမည္ေပးထားပါတယ္။ ကၽြန္ေတာ္ အခု ဒီ article နဲ႕ ေဖာ္ျပလုိက္တဲ့ ပံုဟာလည္း Samsung ရဲ႕ real test လုပ္ထားတဲ့ပံုလည္း ျဖစ္ႏိုင္သလို ေကာလဟာလလည္း ျဖစ္ႏိုင္ပါတယ္။ ဒါေပမယ့္ Samsung ရဲ႕ ေအာင္ျမင္ေနတဲ့ Galaxy serices ဖုန္းေတြဟာ ဘယ္လိုအသစ္အဆန္းေတြနဲ႕ ထပ္မံထြက္ေပၚလာမယ္ ဆိုတာကေတာ့ စိတ္၀င္စားဖြယ္ေကာင္းေနပါတယ္။ Galaxy S5 အသစ္ထြက္ရွိလာတဲ့အခါမွာ ဘယ္လို Hardware ေတြကို အသံုးျပဳထားတယ္ ဘယ္လို features ေတြ ပါ၀င္လာတယ္ဆိုတာကို ဆက္လက္ေဖာ္ျပေပးသြားပါ့မယ္။


ေလးစားစြာျဖင့္


Wai Phyo Aung [ itstudentpro ]


credit: engadget

Sunday, January 19, 2014

Java Tutorial 6

Java Tutorial 6(Control Flow and Condition) part 1

တြက္ခ်က္မွဳေတြလုပ္တဲ့အခါ ဘယ္အခ်ိန္မွာ ဘယ္လိုတြက္ခ်က္မွဳေတြလုပ္မယ္ ဘယ္အေျခအေနမွာ ဘာအလုပ္ေတြလုပ္မယ္ဆိုတာ ကိုထိန္းကြပ္တဲ့နည္းလမ္းရွိပါတယ္။ control flow statement ေတြကိုသံုးၿပီးေတာ့ ထိန္းကြပ္ရမွာပါ၊ control flow statement အေၾကာင္းရွင္းျပပါမယ္။ program တစ္ခုမွာ ကိုယ္ေရးတဲ့ကုဒ္ေတြဟာ အစဥ္အတိုင္းအလုပ္လုပ္ပါတယ္၊ တခါတရံမွာ(အေျခအေနတခုမွာ) တခ်ိဳ႕ကုဒ္ေတြကို ေက်ာ္ၿပီးေတာ့ပဲျဖစ္ျဖစ္ ထပ္ခါထပ္ခါပဲျဖစ္ျဖစ္ run ေစခ်င္တယ္ဆိုရင္ control flow statement ေတြကိုသံုးပါမယ္။ ထပ္ရွင္းျပပါမယ္၊ ကုဒ္ေတြဟာသူ႔ flow ႏွင့္သူအစဥ္အတိုင္း run ေနတာပါ ၊ကုဒ္ေတြကိုေက်ာ္ run တာတို႔ ထပ္ကာထပ္ကာ run တာတို႔ဆိုတာ flow ကိုထိမ္းခ်ဴပ္ေျပာင္းလဲလိုက္တာပါပဲ။ ဒါဆိုဘယ္အခ်ိန္မွာ ေျပာင္းလဲရမလဲ၊ ကိုယ္ျဖစ္ေစခ်င္တဲ့ အေျခအေန အခ်ိန္အခါမွာ control flow statement ေတြကိုအသံုးျပဳၿပီးေျပာင္းလဲရပါမယ္။ ဥပမာျပရင္ပိုရွင္းသြားပါလိမ့္မယ္။

ဆိုပါေတာ့ စာေမးပြဲတစ္ခုရဲ႕ အမွတ္စာရင္းေတြကို manage လုပ္တဲ့ program တစ္ခုမွာေပါ႔၊ ေအာင္တဲ့လူေတြရဲ႕စာရင္းကို သိမ္းထားခ်င္တယ္ဆိုပါေတာ့၊ ေက်ာင္းသားတိုင္းကို ေအာင္စာရင္းထဲထည့္လို႔မရဘူး ေအာင္တဲ့ေက်ာင္းသားကိုပဲထည့္ရမယ္။ဒါဆိုေက်ာင္းသား (Student class) စာေမးပြဲေအာင္တဲ့အေျခအေနမွာ(pass ျဖစ္တဲ့အခ်ိန္၊ pass variable က true ျဖစ္တဲ့ခ်ိန္) ဒီေက်ာင္းသားကိုေအာင္စာရင္းထဲထည့္မယ္။ ေအာက္က program ကိုေလ့လာၾကည့္ပါ။

“Student.java”

public class Student {

public static void main(String[] args) {

boolean pass = true;

if(pass == true) //ဒါကစာေမးပြဲေအာင္လားဆိုတဲ့ အေျခအေနကိုစစ္တာပါ

{

//ဒီေနရာမွာ စာေမးပြဲေအာင္ရင္လုပ္ရမယ့္ကုဒ္ေတြကိုေရးရပါမယ္

}

}

}

ဒီ program ထဲကတစ္ခ်ိဳ႕ကုဒ္ေတြကိုရွင္းျပပါမယ္။ ဒီအပိုင္းကိုၾကည့္ပါ။

if(pass == true)

{

//Here is the code to work when the condition is true

}

if(pass == true) ဆိုတာ အေျခအေန(condition) ကိုစစ္ေဆးတာပါ၊ ဒီအေျခအေနမွန္ကန္မွ သူ႔ေအာက္မွာရွိတဲ့ တြန္႔ကြင္း ”{}” ထဲက ကုဒ္ေတြကို run မွာပါ။ ဒီေတာ့ if(  ) ရဲ႕အဓိပၸါယ္က “တစ္ကယ္လို႔ လက္သည္းကြင္းထဲမွာရွိတဲ့ အေျခအေနမွန္ရင္” လို႔အဓိပၸါယ္ရပါတယ္။ ဒါဆိုအဲဒီ လက္သည္းကြင္းထဲ ဘယ္လိုကုဒ္ေတြ ေရးလို႔ရလဲဆိုတာထပ္ရွင္းျပပါမယ္။ conditional ႏွင့္ relational operator ေတြသံုးၿပီးေရးရမွာပါ။

 

Relational Operator

တန္ဖိုးေတြကို ႏွိဳင္းယွဥ္တဲ့ေနရာမွာ အေျခအေနကိုဆန္းစစ္တဲ့အခါမွာ ဒီ operator ေတြကိုသံုးရပါတယ္။ အရင္ဆံုး relational operator ေတြကိုရွင္းျပပါမယ္။ variable ႏွစ္ခုသို႔မဟုတ္ တန္ဖိုးႏွစ္ခုကို ႏွိဳင္းယွဥ္တဲ့အခါဒီ relational operator ေတြကိုသံုးရပါတယ္။ “==” ဆိုတာကို တန္ဖိုးႏွစ္ခုညီသလား မညီဘူးလားလို႕စစ္ေဆးခ်င္ရင္သံုးပါတယ္။ variable ‘a’ ရဲ႕တန္ဖိုး ႏွင့္ variable ‘b’ ရဲ႕တန္ဖိုး ညီသလားစစ္ခ်င္ရင္ ဒီလိုေရးပါ “a==b”။ မညီဘူးလားလို႔စစ္ခ်င္ရင္ “!=” ကိုသံုးရပါတယ္။ အေရွ႕မွာရွိတဲ့တန္ဖိုးဟာ အေနာက္မွာရွိတဲ့တန္ဖိုးထက္ ႀကီးသလားလို႔စစ္ခ်င္ရင္ “>” ကိုသံုးၿပီး၊ ႀကီးသလား သို႔မဟုတ္ ညီသလားလို႔စစ္ခ်င္ရင္ “>=” ကိုသံုးရပါတယ္။ ဒီလိုပါပဲ ငယ္သလားဆိုရင္ “<” သံုးၿပီး၊ ငယ္သလား သို႔မဟုတ္ ညီသလားဆိုရင္ “<=” ကိုသံုးရပါတယ္။ ဒါေတြကို if(  ) ထဲမွာထည့္သံုးႏိုင္ပါတယ္၊ ဒီတြက္ခ်က္မွဳေတြမွန္ကန္မွ if(  ) ေအာက္ကကုဒ္ေတြ အလုပ္လုပ္မွာပါ။ ေအာက္မွာနမူနာ program တစ္ပုဒ္ေပးထားပါတယ္၊ စမ္းသပ္ၾကည့္ပါ။

 

RelationalOp.java”

class RelationalOp {

 

public static void main(String[] args){

int value1 = 1;

int value2 = 2;

if(value1 == value2) System.out.println("value1 == value2");

if(value1 != value2) System.out.println("value1 != value2");

if(value1 > value2) System.out.println("value1 > value2");

if(value1 < value2) System.out.println("value1 < value2");

if(value1 <= value2) System.out.println("value1 <= value2");

}

}

ဒီမွာတစ္ခုေျပာခ်င္တာကေတာ့ if(  ) ေနာက္မွာကုဒ္တစ္ေၾကာင္းပဲ ေရးမယ္ဆိုရင္ တြန္႔ကြင္း {} ထည့္စရာမလိုပါဘူး၊ ကုဒ္တစ္ေၾကာင္းထက္ပိုေရးမွ လိုတာပါ၊ ဒါေပမဲ့ တစ္ေၾကာင္းပဲေရးေရး တစ္ေၾကာင္းထက္ပဲပိုေရးေရး တြန္႔ကြင္းထည့္လည္းကိစၥမရွိပါဘူး။

 

Conditional Operator
boolean expression(boolean တြက္ခ်က္မွဳ) ႏွစ္ခုႏွင့္သံုးရတာပါ။ operator ႏွစ္ခုရွိပါတယ္၊ ပထမက conditional-AND တဲ့ သူ႔ကိုဒီလိုေရးရတယ္၊ expression && expression၊ ဆိုလိုတာက ေရွ႕ကတြက္ခ်က္မွဳေရာ ေနာက္ကတြက္ခ်က္မွဳေရာ မွန္ကန္မွ အေျဖကမွန္ကန္တယ္(true) လို႔ထြက္မွာပါ။ relational operator တုန္းကတြက္ခ်က္မွဳတစ္ခုကမွန္ရင္ အေျခအေနကမွန္ပါတယ္၊ ဒီ conditional-AND operator မွာေတာ့ တြက္ခ်က္မွဳႏွစ္ခုလံုး မွန္မွရမွာပါ။ နမူနာတစ္ခုျပပါမယ္ “if(var1==20 && var2==30)” ဒီကုဒ္မွာ “var1” ဆိုတဲ့ variable ရဲ႕တန္ဖိုးက ၂၀ ျဖစ္ၿပီး “var2” ကရဲ႕တန္ဖိုးက ၃၀ ျဖစ္မွ if(  ) ေအာက္ကကုဒ္ေတြက အလုပ္လုပ္မွာပါ။ ဆိုလုိတာက အေျခအေနႏွစ္ခုလံုးမွန္ကန္မွ if(  ) ေအာက္ကကုဒ္ေတြ run မွာပါ။ အခုကြ်န္ေတာ္ေျပာတာ conditional-AND အေၾကာင္းပါ ဆက္လက္ၿပီး conditional-OR အေၾကာင္းေျပာပါမယ္။

Conditional-OR ကေတာ့ AND ႏွင့္သိပ္မကြာပါဘူး၊ AND ကႏွစ္ခုလံုးမွန္ရၿပီး၊ OR ကေတာ့ႏွစ္ခုထဲက တစ္ခုမွန္ရင္ရပါတယ္၊ OR ကို “||” သေကၤတနဲ႔ေရးရပါတယ္။ “if(var1==20 || var2==30)” ဆိုတဲ့ကုဒ္မွာ အေျခအေနႏွစ္ခုထဲက တစ္ခုမွန္ကန္တာနဲ႔ if(  ) ရဲ႕ကုဒ္ေတြ run ပါတယ္။ conditional operator ေတြနဲ႔ပတ္သတ္တဲ့ နမူနာေအာက္မွာေပးထားပါတယ္။

“ConditionalOp.java”

class ConditionalOp {


     public static void main(String[] args){

          int value1 = 1;

          int value2 = 2;

          int result;

          boolean someCondition = true;

          result = someCondition ? value1 : value2;


          System.out.println(result);


     }

}


အကယ္၍… if()

Conditional operator ေတြကိုအသံုးျပဳၿပီး if() ထဲက condition ကိုစစ္ေဆးရပါမယ္၊ condition က true ျဖစ္ရင္ တြန္႔ကြင္းထဲကကုဒ္ေတြ အလုပ္လုပ္ပါမယ္၊ condition က false ျဖစ္ရင္ေတာ့ တြန္႔ကြင္းထဲကကုဒ္ေတြကို မ run ပဲနဲ႔ ေက်ာ္သြားပါမယ္။ ဒါေပမဲ့ဒီ if(  ) ကcondition ကိုတစ္ဆင့္ထဲစစ္တာပါ၊ condition ကိုအဆင့္ဆင့္ စစ္ေဆးခ်င္တယ္ဆိုရင္ “if(  ) { } else { }” ဆိုတဲ့ေဖာ္ျမဴလာကိုသံုးပါမယ္။ သူ႔သေဘာက “if()” အကယ္၍ဒါမွန္လွ်င္၊ “{ }” ဒါလုပ္ပါ၊ “else” ဒါမမွန္လွ်င္၊ “{ }” ဒါေျပာင္းလုပ္ပါ။ ေအာက္ကကုဒ္ကိုၾကည့္ပါ။

if(var1 == 10) {

System.out.print(“IF”);

} else {

System.out.print(“ELSE”);

}

 

var1 ရဲ႕တန္ဖိုးက ၁၀ ျဖစ္မယ္ဆိုရင္ “IF” ဆိုတဲ့စာသားထြက္လာၿပီး၊ ၁၀ မဟုတ္ရင္ေတာ့ “ELSE” ဆိုတဲ့စာသားထြက္လာပါမယ္။

ေနာက္ထက္ if() တစ္မ်ိဴးက်န္ပါေသးတယ္၊ “if() else if()” ပါပဲ။ သူ႔သေဘာက ပထမ condition ကိုစစ္ေဆးၿပီး မမွန္ရင္ေနာက္ condition ကိုစစ္ပါတယ္။ ေအာက္ကကုဒ္ကိုၾကည့္ပါ။

if(var1 == 10) {

System.out.print(“IF”);

} else if(var1 == 20) {

System.out.print(“ELSE IF”);

}

 

var1 ရဲ႕တန္ဖိုးက ၁၀ ျဖစ္မယ္ဆိုရင္ “IF” ဆိုတဲ့စာသားထြက္လာၿပီး၊ ၂၀ ဆိုရင္ “ELSE” စာသားထြက္လာပါမယ္။ ေနာက္ထက္နမူနာတစ္ခုထက္ၾကည့္ပါဦး။

if(var1 == 10) {

System.out.print(“IF”);

} else if(var1 == 20) {

System.out.print(“ELSE IF”);

} else {

System.out.print(“ELSE”);

}

 

ထိပ္ကစစ္ေဆးမွဳေတြမမွန္ရင္ေနာက္ဆံုး မွာ else ကို run ပါတယ္။ အဆင့္ဆင့္ condition စစ္တဲ့အခါမွာ၊ condition တစ္ခုမွန္ၿပီဆို္တာနဲ႔ ေနာက္ condition ေတြကိုဆက္ၿပီး မ စစ္ေဆးေတာ့ပါဘူး။

 

?: or If-then-else

“?:” သူက conditional operator တစ္မ်ိဴးပါပဲ၊ သူ႔ကိုေရးသားနည္းကဒီလိုပါ၊ “condition ? value1 : value2;” ။ သေဘာတရားကဒီလိုပါ၊ condition မွန္ရင္ value1 ကိုထုတ္ေပးၿပီး မမွန္ရင္ value2 ကိုထုတ္ေပးပါတယ္။ နမူနာ program တစ္ခုေပးထားပါတယ္။

“ConditionalOp2.java”
class ConditionalOp2 {


     public static void main(String[] args){

          int value1 = 1;

          int value2 = 2;

          int result;

          boolean someCondition = true;

          result = someCondition ? value1 : value2;


          System.out.println(result);


     }

}


“someCondition ? value1 : value2;” ဆိုတဲ့ကုဒ္ဟာ “if(someCondition){value1;} else{value2;}” ဆိုတဲ့ကုဒ္ႏွင့္သေဘာတရားျခင္းတူပါတယ္။

Previous Java Tutorial 5
Next : Java Tutorial 7

Having fun with web development - web server (chapter 2)

HTML နဲ႕ေရးထားတယ့္ files ေတြ ကို အင္တာနက္ေပၚကေန အသံုးျပဳလို႕ရတယ့္webpages ေတြျဖစ္ဖို႕ အတြက္ အရင္ဆံုး web server ထဲမွာ ထည့္ထားရတယ္၊ အဲ့ဒီ့ webpages ထဲမွာရိွတယ့္ HTML code ေတြက  web browser(eg-FireFox,Chrome,Safari,Opera,etc..) ေတြကို     သူတို႕ ထဲမွာ ပါတယ့္ content ေတြကို ဘယ္ေနရာမွာထားဖို႕၊ဘယ္လိုေပၚဖို႕ စတာေတြကို သိေအာင္အေၾကာင္းၾကားတယ္ ၊ ျပီးေတာ့ မွ web browsers ကျပန္ျပေပးတာျဖစ္တယ္။

တစ္ၾကိမ္ web server ထဲကိုထည့္ထား ရံုျဖင့္ internet ကိုျဖတ္ျပီးမည္သည့္ web browser ကမဆို ၾကည့္ ႏိုင္တယ္။

အုိေက . web server တို႕ web browser တို႕နဲ႕ပက္သက္ျပီး ေခါင္းရႈပ္မသြားပါနဲ႕အံုး ေအာက္မွာ သူတို႕ ေတြ အလုပ္လုပ္ပံုကိုအက်ဥ္းကို ရွင္းျပထားပါတယ္။

Web server ဘယ္လိုအလုပ္လုပ္လဲ

အလုပ္သမား တစ္ေယာက္အေနနဲ႕ေျပာရ ရင္ သူက တစ္ေန႕လံုး၊တစ္ညလံုး၊ တစ္ႏွစ္လံုး ေတာက္ေလွ်ာက္၂၄ နာရီ အလုပ္လုပ္ရတယ့္ အပင္ပန္းဆံုးလူတစ္ေယာက္ဆိုပါေတာ့။

Web server ၂၄ နာရီ လံုး မနားမေန ဘာေတြလုပ္ေနလဲ?

သူ႕ခမ်ာ ေမွ်ာ္ေနရတာေပါ့ web browser ကေန ဘယ္အခ်ိန္ request ပို႕မလဲ..ပို႕မလဲကို အခ်ိန္ျပည့္ေစာင့္ေနရတာျဖစ္တယ္။ဘယ္လို request ေတြလဲ ေမးရင္ ဥပမာ-ဓါတ္ပံုေတြ၊သီခ်င္းေတြ၊ဗြီဒီယို ေတြ၊ ျပီးေတာ့ web pages ေတြအပါအ၀င္ေပါ့။ အဲ့ဒီေတာ့ web server က အေပၚဥပမာထဲ က request တစ္ခုခုကိုရျပီဆိုရင္ သူရဲ႕ resource ေတြထဲ မွာ ျပန္ရွာတယ္ ျပီးမွ web browser ကို ျပန္ျပီး respond ျပန္တယ္၊ပို႕တယ္ေပါ့ဗ်ာ(ေတြ႕ရင္ ေတြ႕တယ္ ၊ မေတြ႕ ရင္ မေတြ႕ဘူး ကို) ။ အဲဒီ့ေတာ့ web server ဘယ္ေလာက္တာ၀န္ၾကီးလဲ ဆိုတာကိို ခန္႕မွန္းမိမယ္လို႕ ထင္တယ္။ တစ္ကယ္လို႕ ၀င္လာတယ့္ request ေတြကို ကိုယ့္ရဲ႕ web server က handle မလုပ္ႏို္င္ရင္(၀န္မမွ်ရင္ ေပါ့)  အဲသည္လုိ ဆိုရင္ website က တက္မလာေတာ့ဘူးေပါ့  ၊ server down တယ္လို႕ေျပာၾကတာေပါ့။ အက်ဥ္းအားျဖင့္ နားလည္မယ္လို႕ ယူဆပါတယ္။

Web browser ဘယ္လိုအလုပ္လုပ္လဲ

အေပၚက web server အေၾကာင္းဖတ္ျပီးရင္ေတာ့ web browser ဘယ္လို အလုပ္လုပ္လဲ နဲနဲခန္႕မွန္းမိမွာပါ။

web server က browser က ပို႕တယ့္ request ေတြကိုထုိင္ ေစာင့္တယ္ဆိုေတာ့၊ browser က request ေတြထိုင္ပို႕ ေနတယ္ေပ့ါ။ အဲ..သူကေတာ့ ထိုင္ပို႕ ေနတာမဟုတ္ဘူး ။ user(client) ရဲ႕ click ေပၚမွာမူတည္ေသးတယ္။ ဥပမာ-youtube မွာ video ၾကည့္ဖို႕ link တစ္ခုကို ကၽြန္ေတာ္ တို႕ click တယ္ဆိုပါေတာ့ .. browser က ကၽြန္ေတာ္တို႕ click လိုက္တယ့္ video link တစ္ခု ကို request တစ္ခု အေနနဲ႕သိမ္းတယ္ ျပီးေတာ့ server ကိုအေၾကာင္းၾကားတယ္ ၊ အဲ့ေတာ့ server ရေတာ့ respond ျပန္တယ္ အဲ့ဒီ့ေတာ့ ကၽြန္ေတာ္တို႕ video ၾကည့္ရတာေပါ့(connection ေကာင္းတယ္ပဲဆိုၾကပါဆို႕)။ဒါေပမယ့္ တစ္ခ်ိဳ႕အရာ ေတြ မွာ browser က user ရဲ႕ click ဆိုတယ့္ အမိန္႕မရဘဲ နဲ႕ server ကို အလုိလို request သြားလုပ္တာ ရိွတယ္။ဥပမာ-အဲမေျပာခင္ facebook ကေတာ့ လူတိုင္းသိမယ္လို႕ ထင္တယ္ ၊ အေရအတြက္နဲ႕ေျပာရရင္ အနည္းဆံုးမသံုးဘူးဆိုရင္ေတာင္ လူ ၅ေယာက္မွာ account ၇ခု ၈ခုရိွနုိင္တယ္

တစ္ခ်ိဳ႕က ၂ခု ၃ခုေလာက္ဖြင့္ထားၾကလို႕ ၊ အိုေက အဲ့ေလာက္ဆိုလံုေလာက္ျပီ။Browser ကဘယ္လို auto request လုပ္လဲ ဆိုတာကို facebook မွာၾကည့္လို႕ရတယ္။ဘယ္အခ်ိန္လဲ ဆိုေတာ့ new post တစ္ခု auto တက္လာတာကို ေတြ႕ရမယ္ ကၽြန္ေတာ္ တို႕ click စရာမလိုဘဲနွင့္။အဲလို ျဖစ္ေအာင္ၾကေတာ့ အျခား technology တစ္ခု(eg:Ajax) ကိုသံုးရတယ္။သြားခ်င္တယ့္ target က HTML ျဖစ္တယ့္အတြက္။ ဒီေလာက္ဆို browser ၊ server ဘယ္လို ဆက္စပ္လဲ ဆိုတာ သိေလာက္မယ္လို႕ ယူဆတယ္။

Author Name: Nyan Lynn Tun [ itstudentpro ]

<< Previous Chapter [ Having fun with web development - HTML ( chapter 1)]

Having fun with web development - HTML ( chapter-1)

Hypertext Markup Language ေခၚ HTML

HTML လို႕ ေျပာလိုက္ရင္ IT field ထဲကလူေတြ သိျပီးသားျဖစ္ေနလိမ့္မယ္။

အိုေက။ ဒါေပမယ့္ မသိတယ့္ လူေတြလဲ ..ရိွေသး တယ္။

အခု မွ HTML နဲ႕ပက္သက္ျပီး ေလ့လာခ်င္တယ့္ လူေတြ၊

IT field မွာ အခုမွ စေျခခ်မယ့္ ညီကိုေမာင္နွေတြ အတြက္ Knowledge ရေစဖို႕ ဒီtitle ေလးတည္လိုက္တယ္။

Html ဆိုတာ programming language မဟုတ္ပါဘူး။သူက markup language တစ္ခုပါ။

Markup tags ေတြနဲ႕ေရးသားရတယ့္ language တစ္ခုေပါ့၊ ျမန္မာမႈျပဳရရင္ markup အမွတ္အသားလုပ္ထားေသာ၊ tag စာအပိုင္းအစေလးေပါ့ေလ။ ျမင္သာေအာင္ေျပာရရင္

Facebook ၾကီးမွာ ေဘာ္ေဘာ္ေတြနဲ႕ ရိုက္ထားတယ့္ဓါတ္ပံုေတြ တင္ၾကတယ့္အခါမွာ ပံုထဲက သယ္ရင္း ေတြကို လည္း share ခ်င္ရင္ tag လုပ္ေလ့ရိွၾကတယ္။အဲ့မွာ နာမည္ေလးေတြ ေရးျပီး ေတာ့ သူကေတာ့ဘယ္သူ ဘယ္၀ါ ဆိုျပီး သတ္မွတ္လိုက္ၾကတယ္ အမွတ္အသားတစ္ခု အျဖစ္ေပါ့။

ဒီ HTML ကလည္းအဲလိုပဲ ကိုယ္ေပၚေစခ်င္တယ့္ စာသားတစ္ခု ကို အရြယ္ၾကီးေစခ်င္ရင္ ၾကီးခ်င္သလို၊ေသးရင္ေသးခ်င္သလို HTML tag ေတြသံုးျပီးေတာ့ သတ္မွတ္ရတယ့္ markup language တစ္ခု ပါ။HTML tag ေတြကေတာ့စုစုေပါင္း အခု ၁၂၀ ေလာက္ရိွတယ္။ ရပါတယ္

ကိစၥမရိွပါဘူး web page တစ္မ်က္ႏွာေပၚဖို႕အတြက္ အဲ့ဒီ့ေလာက္မလိုအပ္ပါဘူး။ဒါေၾကာင့္

အကုန္မွတ္မိဖို႕ မၾကိဳးစားပါနဲ႕ reference ေတြအမ်ားၾကီးရိွပါတယ္ ကၽြန္ေတာ္ တို႕က exam

ေျဖေနတာ မဟုတ္တယ့္အတြက္ လိုအပ္တယ့္အခ်ိန္မွာ အကူအညီယူလို႕ရပါတယ္။

အိုေက ဒါဆို HTML sentence အေၾကာင္းနဲနဲေျပာရေအာင္-

HTML sentence က ရိုးရွင္းတယ္၊ပံုေသပဲ မေျပာင္းလဲဘူး ဒီဟာေရးရင္ ဒီ output ထြက္တယ္။sentence ပံုစံကို ျမင္ေအာင္ေျပာ ရရင္ သူ႕မွာ လည္း လူေတြလိုပဲ Head ေတြ Body ေတြရိွတယ္။ဒါေပမယ့္ လူေတြမွာပါတယ့္ဟာ အကုန္လံုးသူ႕မွာ မပါသလို ၊ သူ႕မွာ ပါတယ့္ ဟာေတြလဲ လူေတြမွာ မပါဘူးေပါ့(ကပ္သပ္ စဥ္းစားတက္တယ့္ လူေတြကိုေျပာတာပါ J)။အိုေက ထားေတာ့။

HTML ကို tag ေတြနဲ႕ အသံုးျပဳျပီး create လုပ္ထားတယ္လို႕ ေျပာခဲ့တယ္။အဲ့ဒီေတာ့ သူရဲ႕tag ဘယ္လိုဖြဲ႕စည္းထားလဲ ၾကည့္ရေအာင္။

သူ႕မွာ open tag နဲ႕ close tag အစံုေတြ အမ်ားဆံုးပါတယ္။

ဥပမာ- <tagName>ေပၚခ်င္တယ့္စာသား</tagName>

တစ္ခ်ိဳ႕ က self closing tag-

ဥပမာ - </tagName>

နမူနာ ေနနဲ႕

HTML file တစ္ခု ကိုစေရးမယ္ဆိုရင္

<html> ဆိုတယ့္ open tag နဲ႕ </html>ဆိုတယ့္ close tag ၂ခုၾကားမွာေရးရတယ္။

သူ႕အထဲမွာမွ ကၽြန္ေတာ္ ေျပာခဲ့သလို <head></head> ေတြ <body></body> ေတြရိွမယ္။ဒါဆို ေအာက္က ပံုကို ေလ့လာၾကည့္ရေအာင္ ။

html

 

ဒီ screen shot ေလးကို ၾကည့္ျပီး စာအမ်ိဳးအစားခ်င္းတူေပမယ့္ မတူညီတယ့္ html tags ေတြေၾကာင့္ ပံုစံအမ်ိဳးမ်ိဳးနဲ႕ ေနရာအမ်ိဳးအမ်ိဳးထြက္လာတာ သတိျပဳမယ္ လို႕ ယူဆတယ္။

သံုးခဲ့တယ့္ tag ေတြကို ေျပာျပရရင္ -

<html></html>- ဒီ tag ကေတာ့ အားလံုးရဲ႕ အခ်ဳပ္ေပါ့။

<head></head>- head ပုိင္းဆိုေတာ့ <html> ျပီးရင္ ထိပ္ဆံုးကေပါ့။

<title></title> - <head></head> tag အထဲမွာ ရိွရတယ္။သူ႕ထဲမွာထည့္တယ့္စာသားကေတာ့

web page ရဲ႕ tab name(not tag)အေနနဲ႕ ေဖာ္ျပျခင္းခံရတယ္။

<body></body>- body ကေတာ့ web page တစ္ခုလံုးမွာ ေပၚမယ့္ content ေတြကို

သိုေလွာင္ထားတယ့္ ေနရာေပါ့။HTML tag ေတာ္ေတာ္မ်ားမ်ား က

<body></body> tag ထဲမွာပဲ ရိွတယ္လို႕ အရင္သိထားရင္ လံုေလာက္ျပီ။

<h3></h3> - “h” ဆိုတာက heading ကို ကုိယ္စားျပဳတယ္။အေနာက္ က “3” ကအရြယ္အစားကို

ျပတယ္ ။ သူ႕ရဲ႕အရြယ္အစား နံပါတ္က 1 ကေန 6 ထိရိွတယ္၊ <h1></h1> ကေန

<h6></h6> ေပါ့။စာပုဒ္ေတြ ရဲ႕ ေခါင္းၾကီးစာသားအျဖစ္ေပၚခ်င္ရင္ အသံုးျပဳေလ့

ရိွတယ့္ tag ေတြေပါ့။

<p></p> - “p” ကေတာ့ paragraph ကို ကိုယ္စားျပဳတယ္။ information ေတြကို စာပုဒ္ အလိုက္

ေဖၚျပခ်င္တယ့္ အခါေတြမွာအသံုးျပဳေလ့ရိွတယ္။

 

HTML file ဘယ္လိုေရးတာလဲဆိုတာေတာ့ အက်ဥ္းအားျဖင့္သိျပီ။ အဲ့ဒီ့ေနာက္ ဘယ္မွာေရးရမလဲ လို႕ေမးစရာရိွတယ္ ၊ ရွင္းပါတယ္ notepad မွာေရးေပါ့ J ။နဲနဲ ျမင့္တယ့္ editor

တာ သံုးခ်င္ ရင္ Note++ တို႕ Sublime Text တို႕နဲ႕ေရးလို႕ပိုအဆင္ေျပမႈရိွတယ္။

ျပီးေတာ့ file extension ကို .html or .htm နဲ႕ save လုပ္ျပီး double click နွိပ္ရံုနဲ႕ မိမိ မွာရိွတယ့္ web browser မွာ run လိုက္တယ့္ html webpage တက္လာမွာျဖစ္ပါတယ္။

ကဲဒါဆို ဒီေလာက္အထိ နားလည္မယ္လို႕ယူဆတယ္။ က်န္ရိွေနတယ့္ HTML tag ေတြအသံုးျပဳပံုကို

Sample demos မ်ားႏွင့္ေနာက္ tutorial ေတြမွာ နားလည္သေဘာေပါက္လြယ္ေအာင္ အတက္ႏိုင္

ဆံုးေဖာ္ျပသြားပါမယ္။ဒီတစ္ေခါက္ ေတာ့ ဒီေလာက္နဲ႕ပဲနားလိုက္ပါတယ္ ေက်းဇူးတင္ပါတယ္။

အထိန္းအကြပ္မရိွ က်ယ္က်ယ္ျပန္႕ျပန္႕ လြတ္လြတ္လပ္လပ္ ေတြးေခၚနိုင္ၾကပါေစ။

ေမတၱာေရွ႕ထား၍။

Author Name: Nyan Lynn Tun [itstudentpro]

 

<< Previous Chapter [Having fun with web development  - Introduction]          

[Having fun with web development - web server (chapter 2)] Next Chapter>>

Having fun with web development - Introduction

ဒီ tutorial ေလးမစခင္ ကၽြန္ေတာ့ရဲ႕ ညီကိုေမာင္ႏွမေတြ ကို နည္းနည္းေလာက္ေျပာခ်င္ပါတယ္။


ဘယ္ programming languages ကိုပဲ စတင္ေလ့လာေလ့လာ အခု မွၾကားဖူးတယ္ ၊ အထိအေတြ႕ မရိွေသးဘူး၊ သူမ်ားေတြဆီက ခက္တယ္လို႕ၾကားရတယ္ဆုိရင္ပဲ အမ်ားစု က ေတြးျပီး ေၾကာက္ၾကတယ္ ၊ တြန္႕ဆုတ္ၾကတယ္၊ေရွ႕ဆက္တိုးဖို႕ ၀န္ေလးၾကတယ္၊


အဲလို အေတြးေတြ ၀င္ျပီးေတာ့.. တစ္ခ်ိဳ႕ေတြ ဆို မိမိ ေရာက္ေနတယ္ လမ္းေၾကာင္းမွာ ပဲ မလႈပ္မလွ်က္ ရပ္ေနၾကတယ္။ ဒါေၾကာင့္ သူမ်ားေယာင္တိုင္း လိုက္မေယာင္ပါနဲ႕၊


ေျခတစ္ဖက္ခ်င္းဆီ အရင္ လွမ္းလိုက္ပါ အစပိုင္းမွာ
ဆူးေညာင့္၊ ခလုတ္ ေတြ နင္းမိႏိုင္ေပမယ့္ ေနာက္ပိုင္းၾကရင္ အဆင္ေျပေျပျဖတ္ေက်ာ္သြားႏိုင္မွာပါ၊ ကိုယ့္ရဲ႕ target ေတြကို မေရာက္ ေရာက္ေအာင္ သြားမယ္ဆိုတယ့္ စိတ္ဓါတ္ေတာ့လိုတယ္။


“ တစ္ခါမွ အခက္အခဲ မၾကံဳဘူးဖူး” လို႕ေျပာတယ့္လူေတြ ရိွမယ္၊


အဲလို တစ္ခါမွ အခက္အခဲမၾကံဳဖူးတာဟာ တစ္ခါမွခက္ခဲတယ့္အလုပ္ကို မလုပ္ခဲ့ဖူးလို႕ သာ ေျပာခ်င္းျဖစ္တယ္။


သံုးသပ္ၾကည့္ပါ ကိုယ္လုပ္တယ့္အလုပ္ေတြ မွားခဲ့လား ၊ ကိုယ့္ရဲ႕ယွဥ္ျပိဳင္မႈေတြ ရံႈးနိမ့္မႈေတြၾကံဳေနလားဆိုတာ ။ အဲလိုျဖစ္တိုင္းလဲ စိတ္ဓါတ္မက်ပါနဲ႕


အမွား ဆုိတာ သံုးသပ္ဆင္ျခင္တက္ရင္ အမွန္ကိုသိရတယ္
အရံႈး ဆိုတာ လည္း လိမ္မာပါးနပ္ရင္ တစ္ခ်ိန္ အနိုင္ျပန္ရတယ္ ။


လုပ္ပါ အားလံုးက လုပ္ႏိုင္တယ့္လူေတြခ်ည္းပဲ ၊ သူမ်ားလုပ္ႏိုင္ရင္ ကိုယ္လဲလုပ္ႏိုင္ရမွာေပါ့၊


ကိုယ္အားက်ရတယ့္ လူေတြကို ကိုယ့္ရဲ႕ competitor အျဖစ္နဲ႕ထားပါ (ဥပမာ-စတိေဂ်ာ့ခ်္ ၊ ေဘလ္ဂိတ္ ၊ ဇူကာဘက္ခ်္)။ သူတို႕ထက္မသာေတာင္ သူတို႕ေလာက္မျဖစ္ႏုိင္ၾကဘူးလား?


ျဖစ္ႏိုင္ၾကတာေပါ့ သူတို႕ၾကိဳးစား အားထုတ္ ခဲ့တယ့္ လမ္းစဥ္အတိုင္း ကိုယ္လည္းထိုနည္းတူ


လိုက္လုပ္မယ္ဆို ျဖစ္ႏိုင္တာေပါ့။ ရင္ေလာက္တင္မွ ဒူးေလာက္ၾကတာေပါ့ ။ အဲလိုျဖစ္သြား


ၾကည့္ပါလား မိမိ မိသားစု၊ေဆြမ်ိဳး မွအစ ေနာက္ဆံုး မိမိ ႏိုင္ငံပါ မိမိေၾကာင့္ ဂုဏ္ယူ၀န္႕ၾကြားေနရမွာ။


အုိေက ကၽြန္ေတာ့ ရဲ႕ speech နည္းနည္းရွည္သြားရင္ ခြင့္လြတ္၊ အားလံုးကို ျဖစ္ေစခ်င္တယ့္


ဆႏၵ တစ္ခု ေၾကာင့္ပါ။


ဒီေခတ္ မွာ Web နဲ႕မကင္း တယ့္လူ ေတြ မရိွသေလာက္ပဲ၊ သိလို႕ သံုးသည္ ျဖစ္ေစ မသိလို႕


သံုးသည္ျဖစ္ေစ။ အဲ့ဒီေတာ့ လူသံုးမ်ား လာတယ္ဆိုေတာ့ ေခတ္စားလာတယ္ေပါ့။


ျပီးေတာ့ လူတိုင္းနီးပါးရဲ႕ လက္မွာ လည္း mobile phone ေတြရိွလာ ၾကျပီ ဆိုေတာ့ ေနာက္ပိုင္းမွာ


Web နဲ႕ Mobile ကို develop လုပ္တယ့္ industry ေတြအမ်ားဆံုး တြင္က်ယ္လာဖို႕ပဲရိွတယ္။


Window app ေတြ အသံုးျပဳလာမႈကေတာ့ အနည္းစုေပါ့။ အဲ့ဒီေတာ့ ကုိယ္က ရည္ရွည္ရပ္တည္ ႏိုင္ဖို႕


ေျပာင္းလဲေနတယ့္ ေခတ္ ေရစည္းေၾကာင္း ကို မ်က္လံုးဖြင့္ နားစြင့္ေနရမယ္။ အားလံုး ကို


လိုအပ္တယ့္ အခ်ိန္မွာ ေျခဆန္႕ ႏိုင္ဖို႕ အတြက္ ကို္ယ့္ဘက္က foundation ခိုင္ဖို႕လိုတယ္။


ဒီေခါင္းစဥ္ ေအာက္မွာ မိမိကိုယ္တိုင္ web site ေတြ create လုပ္တယ့္အခါမွာ လုိအပ္မယ့္


Technology ေတြကို အခြင့္သင့္ရင္ သင့္သလိုတင္ေပးသြားမွာပါ။


ဆက္လက္ျပီးေတာ့ Client Side language တစ္ခုျဖစ္တဲ့ HTML အေၾကာင္းကို ဆက္လက္ေဖာ္ျပေပးပါ့မယ္....


continue reading to next chapter - Having fun with web development - HTML (chapter 1)


Author Name: Nyan Lynn Tun [ itstudentpro] 

Saturday, January 18, 2014

Android Device ေတြရဲ႔ Battery သက္တမ္းရွည္ေအာင္ ဘယ္လို ျပဳလုပ္ၾကမလဲ။

နာမည္ၾကီး Online Mobile Forum တစ္ခုျဖစ္တဲ႔ XDA မွာ ကြ်န္ေတာ္႔ ဖုန္း Battery က အားခနေလးနဲ႔ ကုန္ေနတယ္ ၊ အဲဒါ ဘယ္လို လုပ္ရမလဲ ၊ ROM ေၾကာင္႔လား ၊ Hardware မေကာင္းလို႔လား ၊ အျခားအေၾကာင္းေတြေၾကာင္႔လား ဆိုတဲ႔ ေမးခြန္းကို ခနခန ေတြ႔ရပါတယ္။ တစ္ကယ္ေတာ့ ဖုန္းတစ္လံုးမွာ ရွိတဲ႔ Battery ရဲ႔ 70% ဟာ သင္႔ရဲ႔ အသံုးျပဳမႈေၾကာင္႔ ကုန္ဆံုးရတာ ျဖစ္ျပီး က်န္တဲ႔ 30% ကသာ က်န္တဲ႔ ဖုန္းတြင္းပိုင္း လုပ္ေဆာင္မႈမ်ားအတြက္ အသံုးခ်တာပါ။

ဘာေၾကာင္႔ ဖုန္း Battery အားအကုန္ ျမန္ရလဲဆိုတာက သင္ဟာ ဖုန္းကို ဘယ္လို အသံုးခ်လဲ ေပၚ မူတည္ေနတယ္ဆိုတာ ေသခ်ာပါတယ္။
သင္က ဖုန္းနဲ႔ ဘယ္လုိ App ေတြကို အမ်ားဆံုးသံုးေလ႔ ရွိလဲ ၊ ဒါမွ မဟုတ္ Wifi ေတြ Bluetooth ေတြကို တစ္ခ်ိန္လံုး ဖြင္႔ထားတတ္သလား
( 3G connection ဟာ 2G ထက္ 30% ေလာက္ Battery ကို ပိုအကုန္ ျမန္ေစပါတယ္ ) ဆိုတာ ေပၚ မူတည္ေနပါတယ္။ ျပီးေတာ႔ သင္ဟာ ဖုန္းကို တစ္ေန႔ ဘယ္ေလာက္ အထိ္ အသံုးျပဳလဲ ဆိုတာလဲ စဥ္းစားရပါမယ္။

Andorid Battery

 

Battery ကို ေခြ်တာ ဖို႔အတြက္ အေျခခံ အခ်က္ေတြက
- GPS, Wifi, Bluetooth စတာေတြကို မလိုအပ္ဘဲ မဖြင္႔ထားပါနဲ႔
- 2G ကို သံုးလို႔အဆင္ေျပေနတဲ႔ အခ်ိန္ဆို 2G ကိုသာ သံုးသင္႔ပါတယ္။ 3G ကို အသံုးျပဳျခင္းက Battery ကို ပို အကုန္ျမန္ေစပါတယ္။
- Antivirus ေတြ ၊ System Tuning App ေတြကို မလိုအပ္ဘဲ အမ်ားၾကီး မသံုးပါနဲ႔။ တစ္ခုဆို လံုေလာက္ပါျပီ။
- Battery Saving App တစ္ခု သာ သံုးစြဲပါ။
- Background Process မ်ားေသာ App မ်ားကို ေလ်ာ႔ သံုးပါ ( ဥပမာ - Antivirus App, facebook, Viber ကဲ႔ သို႔ App မ်ားစြာကို သံုးျခင္းက Battery ကို ပို အကုန္ ျမန္ေစပါတယ္ )
- Screen Brightness ကို ခ်ိန္ညိွ သံုးစြဲပါ။
- မိမိ ဖုန္းႏွင္႔ သင္႔ေတာ္ေသာ ROM ကိုသာ သံုးစြဲပါ။
- ဖုန္း Battery ကို 5% ေအာက္ေရာက္ပါက ပံုမွန္ အားသြင္းပါ။

ေနာက္ထပ္ ဖုန္း Battery ကို ထိန္းသိ္မ္းနိုင္မဲ႔ အခ်က္ အခ်ိဳ႔ကုိ ေဖာ္ျပလိုက္ပါတယ္။

- တစ္ပတ္ တစ္ၾကိမ္ခန္႔ ဖုန္း Battery အား အကုန္ သံုးျပီး ျပည္႔သည္ ထိ ျပန္သြင္းပါ။
- ဖုန္းကို အား အကုန္ သံုးပါ ၊ ထို႔ေနာက္ ဖုန္းပိတ္လိုက္ပါ ၊ ဖုန္းပိတ္ထားသည္႔အတိုင္းပင္ အားအျပည္႔သြင္းပါ။ အားျပည္႔သြားပါက chargre plug ကို ျဖဳတ္ပါ ၊ ဖုန္းမွ Battery ကို ၃ မိနစ္ခန္႔ ျဖဳတ္ထားျပီးမွ ျပန္တတ္ပါ။ အဲလို မ်ိဳး ႏွစ္ပတ္ တစ္ၾကိမ္ေလာက္ ျပဳလုပ္ေပးပါ။
- ဖုန္း အားသြင္းေနခ်ိန္တြင္ Game ေဆာ႔ျခင္း ၊ အင္တာနက္ သံုးျခင္း လံုး၀ မျပဳလုပ္သင္႔ပါ။
- ဖုန္း သံုးေနစဥ္ သာမာန္ထက္ ပူလာပါက Battery ကို ၅ မိနစ္ခန္႔ ျဖဳတ္ထားပါ။

 

Credit : http://www.droidviews.com/batterylife/

SEO Overview: On-Page နဲ႔ Off-Page SEO

SEO မွာ အဓိကသိရမယ့္ အျခားအခ်က္ (၂)ခု ရွိပါေသးတယ္.။ အဲဒါေတြကေတာ့

  1. On-Page SEO နဲ႔

  2. Off-Page SEO ပါပဲ.။


1. On-Page SEO


ကိုယ့္ Website ရဲ႕ စာမ်က္ႏွာေတြေပၚမွာ Keywords ထည့္သြင္းတာ၊ Link ေတြခ်ိတ္ဆက္တာ၊ Broken-link မျဖစ္ေအာင္လုပ္တာ၊ Bots ေတြ အလြယ္တကူ Crawl ႏိုင္ေအာင္လုပ္တာေတြကို On-Page SEO လို႔ေခၚပါတယ္.။ On-Page လုပ္ရာမွာ ပါဝင္တာေတြကေတာ့ HTML <meta> tag နဲ႔ description ေတြ keywords ေတြထည့္သြင္းတာေတြအပါအဝင္ HTML ကို စနစ္တက် SEO Friendly ျဖစ္ေအာင္လုပ္တာ၊ Internal Linking လို႔ေခၚတဲ့ Article တစ္ခုနဲ႔ တစ္ခု ခ်ိတ္ဆက္တာ၊ ကိုယ္လိုခ်င္တဲ့ Keywords ေတြကို ကိုယ့္ Content မွာ ပါဝင္ေအာင္ ထည့္သြင္းတာ၊ အစရွိတာေတြျဖစ္ပါတယ္.။

2. Off-Page SEO


ကိုယ့္ Website ေပၚမွာမဟုတ္ဘဲ အျခား Website ေတြနဲ႔ Search Engine ေတြမွာ လုပ္တဲ့ SEO Method ေတြကို Off-Page SEO လို႔ေခၚပါတယ္.။ ပါဝင္တာေတြကေတာ့ PR ျမင့္တဲ့ အျခားဆိုက္ဒ္ေတြက Link ထိုးဖို႔ အကူအညီေတာင္းတာ၊ သူငယ္ခ်င္း Blog ေတြဆီက Link ေတာင္းတာ၊ Comment ကတဆင့္ Link ရေအာင္လုပ္တာ၊ Link ဝယ္ယူတာ၊ Bookmarking ဆိုက္ဒ္ေတြမွာ ထည့္သြင္းတာ၊ Search Engine ေတြမွာ XML Sitemaps ေတြ ထည့္သြင္းတာ၊ Social Media ေတြမွာ Sharing လုပ္တာေတြ နဲ႔ အျခား Link Wheel လိုမ်ိဳး Link Building ေတြအထိ ပါဝင္ပါတယ္.။

 

Friday, January 17, 2014

20th batch master thesis မ်ားသိေစရန္....

ရန္ကုန္ကြန္ပ်ဴတာတကၠသိုလ္တြင္ Ayeyarwady Bank ႏွင့္ ပူးေပါင္း၍ ေက်ာင္းသားကဒ္ ကို ATM Chip နဲ႕ ေပါင္းျပီး ထုပ္ေပးမည္ ျဖစ္ပါသျဖင့္ မိမိတို႕၏ personal information မ်ားကို လာေရာက္ form ျဖည္႕ေပးၾကပါရန္ ေလးစားစြာျဖင့္ ပန္ၾကားအပ္ ပါသည္။ တတိယႏွစ္၊ Honus ႏွင့္ master course work မ်ား၏ form မ်ားကို Ayeyarwady Bank သို႕ေပးပို႕ျပီး ေနျပီ ျဖစ္ေသာ္လည္း master thesis 20 batch မ်ားမွာ ျဖည္႕သြင္းရန္ က်န္ရွိေနသူမ်ား ရွိေနပါေသးသည္။ တနလၤာေန႕ ေနာက္ဆံုးထား၍ မိိမိတို႕၏ Form မ်ားကို လာေရာက္ျဖည္႕သြင္းေပးၾကပါရန္ ႏွင့္
မလာေရာက္ပါက မိမိတို႕၏ တာ၀န္သာျဖစ္ေၾကာင္း အေၾကာင္းၾကားအပ္ပါသည္။


ATM card service အတြက္ form ျဖည္႕ရမည္ ျဖစ္ပါသည္။ Form တြင္ name, birthday, father name, marital status, gender, address, NRC စတဲ့ အခ်က္မ်ား ျဖည္႕သြင္းရမည္ ျဖစ္ပါသည္။


ဒီ form ကို ျဖည္႕သြင္းျပီး Ayeyarwady Bank ကို ေပးပို႕ျပီးကာမွ ေက်ာင္းသားကဒ္တြင္ ATM chip ထည္႕ကာ ေက်ာင္းသားကဒ္ကို ျပဳလုပ္ေပးႏိုင္မွာ ျဖစ္ပါသျဖင့္ လာေရာက္ေပးသြင္းႏိုင္ပါရန္ အေၾကာင္းၾကားအပ္ပါသည္။

Java Tutorial 5

Java မွာေပါင္းႏုတ္ေျမာက္စားတြက္ခ်က္မွဳေတြ လုပ္ဖို႔ operator ေတြေပးထားပါတယ္၊ ေအာက္ကနမူနာကိုေလ့လာၾကည့္ပါ။
int i = 10;

int j = 5;

int k = i + j; //15

System.out.println(k);

System.out.println(5*2);

System.out.println(10/3); //Answer is 3

System.out.print(10%3); //Answer is 1
Operator Precedence

Java တြက္ခ်က္မွဳေတြလုပ္ႏိုင္ဖို႔ operator ေတြဟာအမ်ားႀကီးပါပဲ၊ ဒီ equation ကိုၾကည့္ပါ (x+7)*(9-y/2) ၊ အဲဒီ့မွာဘယ္တြက္ခ်က္မွဳကို system ကအရင္လုပ္မွာလဲ။ operator ေတြမွာအေရးပါမွဳ အဆင့္သတ္မွတ္ခ်က္(operator precedence)ဆိုတာရွိပါတယ္၊ system ကအဲဒီ့ အေရးပါမွဳအဆင့္အတိုင္း operator ေတြကိုလုပ္ေဆာင္မွာပါ၊ ဆိုလိုတာက precedence ျမင့္တဲ့ operator ေတြကိုအရင္လုပ္ေဆာင္မွာပါ။ ေအာက္မွာ operator precedence ဇယားေပးထားပါတယ္။ ဇယားမွာရွိတဲ့ operator ေတြထဲမွာအေပၚမွာရွိတဲ့ operator ေတြကေအာက္မွာရွိတဲ့ operator ေတြထက္ပိုျမင့္ၿပီး၊ ဘယ္ဘက္က operator ကညာဘက္က operator ထက္ပိုျမင့္ပါတယ္။

Operator Precedence Table

Operator Precedence

 

Assignment Operator

Operator ေတြကိုတစ္ခုခ်င္းစီရွင္းျပသြားပါမယ္။ ပထမတစ္ခုက assignment operator တဲ့၊ သူကို variable ေတြ assign လုပ္တဲ့ေနရာမွာသံုးတယ္ေလ၊ ဒီေကာင္က ညာဘက္မွာရွိတဲ့တန္ဖိုးကို ကူးၿပီး ဘယ္ဘက္မွာရွိတဲ့ variable ထဲထည့္ေပးတယ္၊ တစ္နည္းေျပာရရင္ ညာဘက္ကဟာကို ဘယ္ဘက္ထဲကူးထည့္ေပးတာေပါ့။

int cadence = 0;


int speed = 20;

int gear = 2;

Arithmetic Operator

ေနာက္ operator တစ္ခုက arithmetic operator တဲ့ ေပါင္းႏုတ္ေျမာက္စား လုပ္တဲ့ operator ေပါ့၊ သူက ၅ မ်ိဴးရွိပါတယ္၊ + အေပါင္း, - အႏုတ္, * အေျမာက္, / အစား(စားလဒ္ကိုသာရွာေပးပါတယ္), % အစား(အၾကြင္းကိုပဲရွာေပးပါတယ္)။ Equation ေတြကိုအတိုေကာက္ေရးလည္းရပါတယ္။ x = x + 4; ဟာ x += 4; နဲ႔အတူတူပါပဲ။ + အေပါင္းလကၡဏာကို string ေတြတစ္ခုႏွင့္တစ္ခု ေပါင္းစပ္တဲ့ေနရာမွာသံုးလို႔ရပါတယ္။

 

Unary Operator
Unary operator ကေတာ့ operand တစ္ခုပဲလိုအပ္တဲ့ operator ပါ၊ “++” (Increment operator)ဆိုတာကိန္းတစ္ခုရဲ႕တန္ဖိုးကို တစ္ခုတိုးေပးပါတယ္(တစ္ေပါင္းေပးပါတယ္)၊ “--” (Decrement operator)ဆိုတာကိန္းတစ္ခုကို တစ္ေလွ်ာ့တာပါ၊ “!” (Logical complement) ကေတာ့ Boolean တန္ဖိုးကိုေျပာင္းျပန္ေျပာင္းေပးပါတယ္။


int x = 10;  //x တန္ဖိုးက ၁၀ ပါ


x++;  //x တန္ဖိုးဟာ ၁၁ ျဖစ္သြားပါၿပီ

x--;  //x ဟာ ၁၀ ျပန္ျဖစ္ပါတယ္

boolean check = true;

System.out.print(!check);  //false ဆိုတဲ့တန္ဖိုးထြက္လာပါမယ္

ဒါကေတာ့ နမူနာ class ဖိုင္ပါ၊ စမ္းသပ္ေလ့လာၾကည့္ပါ။

“UnaryOP.java”

class UnaryOP {


     public static void main(String[] args){

          int result = +1; // result is now 1

          System.out.println(result);

          result--;  // result is now 0

          System.out.println(result);

          result++; // result is now 1

          System.out.println(result);

          result = -result; // result is now -1

          System.out.println(result);

          boolean success = false;

          System.out.println(success); // false

          System.out.println(!success); // true

     }

}

“++”(increment) ႏွင့္ “--“(decrement) operator ေတြမွာ prefix ႏွင့္ postfix ဆိုတဲ့အမ်ိဴးအစားႏွစ္မ်ိဴးရွိပါတယ္၊ “++x” ဒီလိုေရးရင္ prefix ပါ၊ “x++” ဒီလိုဆိုရင္ေတာ့ postfix ပါ။ ကြာျခားခ်က္ရွိပါတယ္၊ prefix ကတစ္တိုးၿပီးေတာ့မွ တန္ဖိုးကိုထုတ္ေပးၿပီး၊ postfix ကေတာ့တန္ဖိုးကိုအရင္ထုတ္ေပးၿပီးမွ တစ္တိုးပါတယ္။ ဥပမာျပပါမယ္၊

int x = 5;


System.out.println(++x);  //ဒါဆိုရင္အေျဖက ၆ ပါ

 

int y = 5;

System.out.println(y++);  //ဒါဆိုရင္အေျဖက ၅ ပါ

System.out.println(y);  //အေျဖက ၆ ပါ

ပိုနားလည္ေအာင္ထပ္ရွင္းျပပါမယ္၊ System.out.print(x++); ဆိုတဲ့ကုဒ္တစ္ေၾကာင္းဟာ System.out.print(x); x += 1; ဆိုတဲ့ကုဒ္ႏွစ္ေၾကာင္းနဲ႔တူပါတယ္။

 

အေျခအေနစစ္ေဆးတဲ့ (conditional operator) ကိုေတာ့ေနာက္ပိုစ့္က်မွ “if” အေၾကာင္းႏွင့္တြဲဖက္ရွင္းျပပါမယ္။

Previous : Java Tutorial 4

Next : Java Tutorial 6

Thursday, January 16, 2014

January 2014 အတြက္ top-20 programming languages မ်ား

Programming languages မ်ားကို ေလ့လာေနသူမ်ားအတြက္ ၂၀၁၄ january လမွာ TIOBE က ထုတ္ျပန္လုိက္တဲ့ languages ေတြရဲ႕ top 20 အစဥ္လိုက္ကို ေဖာ္ျပေပးလုိက္ပါတယ္။ ဒီ ဇယားကို ၾကည္႕ျပီး ဘယ္ programming language က  အနာဂတ္အတြက္ အေျခအေနေကာင္းျပီး အလုပ္အကိုင္ အခြင့္လမ္းေတြ ပိုမို ေပးစြမ္းႏိုင္မလဲ ဆိုတာကို ခန္႕မွန္းႏိုင္မွာ ျဖစ္ပါတယ္။ Transact-SQL ကေတာ့ ၂၀၁၃ ခုႏွစ္အတြင္းမွာ အသံုးျပဳႏႈန္းတိုးတက္လာတဲ့အတြက္ TIOBE ရဲ႕ TIOBE programming language award ကို ရရွိခဲ့တာကို ေတြ႕ရပါတယ္။ Transact-SQL ဟာ ဒီ award ကို ရရွိသြားတာဟာ ဘာေၾကာင့္လဲဆိုရင္ Microsoft ရဲ႕ SQLServer database engine ဟာ အသံုးျပဳသူနည္းလာျပီ   popularity နည္းလာလို႕ပဲ ျဖစ္ပါတယ္။


အခုေနာက္ပိုင္း Mobile app develop ဟာ popular ျဖစ္လာတဲ့အေလ်ာက္ JAVA (for android) နဲ႕ Objective-C (for iOS) ေတြဟာ ဇယားမွာ နံပါတ္ ၂ နဲ႕ ၃ ကို ရယူႏိုင္ေနျပီ ျဖစ္ပါတယ္။ C language ကေတာ့ hardware ကို ကိုင္တြယ္ရမယ့္ ေနရာေတြနဲ႕ engineers ေတြ က အသံုးျပဳမႈမ်ားေနတဲ့ အတြက္ နံပါတ္ ၁ ေနရာကို ပိုင္ဆိုင္ထားႏိုင္တာျဖစ္ပါတယ္။ C language ဟာ Hacker ေတြရဲ႕ အသံုးျပဳမႈအမ်ားဆံုး language ထဲမွာ ပါ၀င္တဲ့ language လည္း ျဖစ္ပါတယ္။ အရင္ကာလမ်ားက နံပါတ္အနိမ့္ပိုင္းကုိ ေရာက္ေနေပမယ့္ အခု Window Phone ေတြအတြက္ app ေတြ ေရးသားလာမႈ ရွိလာတဲ့အတြက္ C# language ဟာ နံပါတ္ ၅ ေနရာကို ပိုင္ဆိုင္လာႏိုင္တာ ျဖစ္ပါတယ္။


Web development နဲ႕ ပတ္သက္ျပီး PHP ကေတာ့ နံပါတ္ ၆ ေနရာမွာ ရပ္တည္ႏိုင္ေနတာကို ေတြ႕ရပါတယ္။ PHP ဟာ ေဒးဗစ္မိုယက္ Everton football အသင္းမွာ ရွိေနစဥ္ကာလတုန္းကလို ဇယားရဲ႕ ၆, ၇, ၈, ၉ စတဲ့ေနရာေတြမွာ အတက္အဆင္းလုပ္ေနတာကို ေတြ႕ရပါတယ္။ သူနဲ႕ Visual Basic ကေတာ့ တစ္လွည္႕စီ အတက္အဆင္းလုပ္ေနတတ္ပါတယ္။ Python ဟာလည္း ေလ့လာႏို္င္ရင္ အသံုး၀င္တဲ့ scripting programming language ျဖစ္ပါတယ္။ သူဟာ နံပါတ္ ၈ ေနရာမွာ ေရာက္ေနျပီး သူ႕ရဲ႕ ေအာက္မွာေတာ့ JavaScript က ကပ္ရပ္ေနရာယူထားတာကို ေတြ႕ရပါတယ္။


ဒီ language ေတြရဲ႕ popularity အေျပာင္းအလဲကို TIOBE က လတိုင္းထုတ္ျပန္သလို ကၽြန္ေတာ္ကလည္း ျမန္မာေက်ာင္းသားေတြနဲ႕ developres ေတြအတြက္ ဒီ site ေလးမွာ ျပန္လည္ေဖာ္ျပေပးပါ့မယ္။




TIOBE Index for January 2014

















































































































































































Jan 2014Jan 2013ChangeProgramming LanguageRatingsChange
11C17.871%+0.02%
22Java16.499%-0.92%
33Objective-C11.098%+0.82%
44C++7.548%-1.59%
55C#5.855%-0.34%
66PHP4.627%-0.92%
77(Visual) Basic2.989%-1.76%
88Python2.400%-1.77%
910JavaScript1.569%-0.41%
1022Transact-SQL1.559%+0.98%
1112Visual Basic .NET1.558%+0.52%
1211Ruby1.082%-0.69%
139Perl0.917%-1.35%
1414Pascal0.780%-0.15%
1517MATLAB0.776%+0.14%
1645F#0.720%+0.53%
1721PL/SQL0.634%+0.05%
1835D0.627%+0.33%
1913Lisp0.604%-0.35%
2015Delphi/Object Pascal0.595%-0.32%





အျခားထင္ရွားတဲ့ languages မ်ား....




































































































































































PositionProgramming LanguageRatings
21Logo0.592
22SAS0.585
23PostScript0.520
24Assembly0.495
25PL/I0.488
26ABAP0.474
27COBOL0.461
28Fortran0.412
29Lua0.375
30Ladder Logic0.369
31C shell0.355
32Tcl0.351
33Scala0.337
34RPG (OS/400)0.337
35Max/MSP0.331
36Go0.326
37OpenEdge ABL0.310
38ActionScript0.308
39ML0.292
40Ada0.280
41Common Lisp0.275
42cT0.268
43Haskell0.265
44R0.252
45JScript.NET0.246
46Emacs Lisp0.242
47Prolog0.220
48Modula-30.215
49Scheme0.213
50S-PLUS0.212



မွတ္ခ်က္။     ။ TIOBE ဟာ language ေတြရဲ႕ popularity ကို ပဲ လစဥ္ထုတ္ေပးတာ ျဖစ္ပါတယ္။ အေကာင္းဆံုး language ကို ထုတ္ျပန္တာ     မဟုတ္ပါဘူး။ အေကာင္းဆံုး language ဆိုတာ သင္ေရးမယ့္ project အေပၚမွာလည္း မူတည္ႏိုင္ပါေသးတယ္။ TIOBE ဟာ search engine ေတြက ရွာေဖြမႈမ်ားျခင္းမမ်ားျခင္းဆိုတဲ့ အခ်က္ေတြ developers ေတြ engineers ေတြရဲ႕ အသံုးျပဳမႈအနည္းအမ်ား စတဲ့အခ်က္ေတြေပၚမွာ မူတည္ျပီး popularity ကို တြက္ထုတ္ေ့ပးတာျဖစ္ပါတယ္။



credit: tiobe

ရန္ကုန္ကြန္ပ်ဴတာတကၠသိုလ္ ၏ ဘြဲ႕ႏွင္းသဘင္ အခမ္းအနား - အခ်ိန္

Ph.D(IT), M.C.Sc., M.C.Tech., B.C.Sc.(Hons), B.C.Tech.(Hons), B.C.Sc., B.C.Tech. ဘြဲေလွ်ာက္ထားသူမ်ား အားလံုးအေနျဖင္႔ အစမ္းေလ႔က်င္႔မည္႔ရက္မွာ 7.2.2014(ေသာၾကာေန႔)ျဖစ္ျပီး ဘြဲ႔ႏွင္းသဘင္ က်င္းပမည္႔ရက္ကေတာ႔ 8.2.2014(စေနေန႔) ျဖစ္ပါတယ္။ က်င္းပမည္႔ ေနရာကေတာ႔ ရန္ကုန္တကၠသိုလ္နယ္ေျမရွိ ဘြဲ႔ႏွင္းသဘင္ခန္းမပဲျဖစ္ပါတယ္။ အစမ္းေလ႔က်င္႔မည္႔ရက္ကို ပ်က္ကြက္သူမ်ားအား ဘြဲ႔ႏွင္းသဘင္သို႔ တက္ေရာက္ခြင္႔မျပဳပါ။
ဘြဲ႔၀တ္စံု ငွားရမ္းရန္ ေထာက္ခံစားမ်ားကို (31-1-2014) ေသာၾကာေန႔မွ စျပီး ရန္ကုန္ကြန္ပ်ဴတာတကၠသိုလ္ စာေမးပြဲႏွင္႔ ဘြဲ႔ႏွင္း သဘင္ဌာနတြင္ စတင္ထုတ္ေပးမည္ျဖစ္ပါသည္။


ucsy graduation ceremony


credit to: https://www.facebook.com/UCSY.Daily.News?ref=hl

Updated Skype iOS app for iPhone 5S and new iPads

iPhone 5S နဲ႕ iPad ေတြမွာ အသံုးျပဳေနတဲ့ Skype app ေတြကို update လုပ္ေပးလိုက္ျပီ ျဖစ္ပါတယ္။ update လုပ္ေပးလိုက္တဲ့ အတြက္ high quality video call ေတြေခၚဆိုႏိုင္မွာ ျဖစ္ပါတယ္။ ဒါ့အျပင္ chat notifications ကိုလည္း အရင္ကထက္ပိုေကာင္းေအာင္ update လုပ္ေပးထားတာကို ေတြ႕ရပါတယ္။ iPhones အတြက္ update လုပ္ေပးလို္က္တဲ့ skype app ဟာ two-way video call ကို support ေပးႏိုင္တာကို ေတြ႕ရပါတယ္။ ဒါ့အျပင္ iPad အတြက္ ထုတ္လုပ္ေပးထားတဲ့ Skype app ဟာလည္း iPad Air နဲ႕ iPad mini (with Retina Display) ေပၚမွာ အသံုးျပဳႏုိင္ေအာင္ update လူပ္ေပးလိုက္ျပီ ျဖစ္ပါတယ္။ ဒီ iPad နဲ႕ iPhone အတြက္ update လုပ္ေပးလိုက္တဲ့ Skype app ႏွစ္ခုစလံုးဟာ skype chats အတြက္ push notifications ေတြကို support ေပးႏိုင္မွာ ျဖစ္ပါတယ္။ update လုပ္ေပးလိုက္တဲ့အတြက္ အရင္ကထက္ပိုျပီး devices ေတြနဲ႕ ျမန္ျမန္ဆန္ဆန္ sync လုပ္ႏိုင္ေတာ့မွာ ျဖစ္ပါတယ္။


ေအာက္မွာ download link ေတြေပးလိုက္ပါတယ္ေနာ္….


Free for iPhone (click here for Download)


Free for iPad  (click here for Download)


credit: iMore

Wednesday, January 15, 2014

Java Tutorial 4

Java Tutorial 4 (Variable)

Program တစ္ခုအလုပ္လုပ္ေနခ်ိန္မွာ လိုအပ္တဲ့ data ေတြကို memory ေပၚမွာသိမ္းထားေလ့ရွိပါတယ္၊ ကြ်န္ပ္တို႔ programmer ေတြအေနနဲ႔ဒီ data ေတြကိုဘယ္လိုကိုင္တြယ္မလဲလို႔ ေမးစရာရွိပါတယ္၊ variable ေတြကေနတဆင့္ကိုင္တြယ္ႏိုင္ပါတယ္။ သခ်ၤာသင္ဖူးသူတုိုင္းသိက်မွာပါ သခ်ၤာမွာ x, y ,z ဆိုတဲ့စကားလုံးေတြကို တန္ဖိုးေတြေပးထားၿပီး equation ေတြထဲမွာအဲဒီတန္ဖိုးေတြကို အစားထိုးၿပီးတြက္ပါတယ္။ variable ေတြကအဲဒီသေဘာတရားနဲ႔ဆင္တူပါတယ္၊ variable တစ္ခုကို နာမည္တပ္ေပးလိုက္ၿပီး အဲဒီ variable ထဲကိုတန္ဖိုးတစ္ခုခုထည့္လိုက္ပါမယ္၊ ၿပီးေတာ့အဲဒီ့ variable ရဲ႕နာမည္ကေနတစ္ဆင့္ သူရဲ႕တန္ဖိုးကိုေျပာင္းလဲႏိုင္ပါတယ္။ လူတစ္ေယာက္ရဲ႕နာမည္ကိုေခၚၿပီး အဲဒီ့လူကိုအလုပ္လုပ္ခိုင္းသလိုမ်ိဴး၊ variable ရဲ႕နာမည္ကိုေခၚၿပီး အဲဒီ့ variable ကိုကိုင္တြယ္ႏိုင္ပါတယ္။ variable တစ္ခုကိုတန္ဖိုးတစ္ခုပဲ သိမ္းထားေပးပါတယ္။

Variable တစ္ခုကို system ကသိေအာင္ ဒီလိုေၾကာ္ျငာရပါတယ္။ ဒီသေဘာတရားကို သင္နားမလည္ရင္ စိတ္မပူပါနဲ႔ ဆက္ဖတ္ပါ။

int var1;

 

Variable ရဲ႕အမ်ိဴးအစား

Variable ေတြရဲ႕တန္ဖိုးေတြမွာ အမ်ိဴးအစားေတြကိုယ္စီရွိက်ပါတယ္၊ ဥပမာ variable ရဲ႕တန္ဖိုးဟာ ဂဏန္းလား စကားလံုးေတြလား ဒါမွမဟုတ္တျခား အမ်ိဴးအစားလားဆိုတာသူ႔ရဲ႕ type (အမ်ိဴးအစား)ကသတ္မွတ္ေပးပါတယ္။ java မွာ variable ေၾကာ္ျငာရင္သူ႔ရဲ႕ type ကိုမျဖစ္မေနထည့္ေပးရပါမယ္၊ ဘာေၾကာင့္လဲဆိုေတာ့ java ဟာ strongly typed language တစ္ခုျဖစ္လို႔ပါ၊ ဒါေၾကာင့္ type ကိုသတ္မွတ္ေပးဖို႔လိုပါတယ္။ java မွာအဓိကအက်ဆံုး type က ၈ ခုရွိပါတယ္၊ ၄ ခုက integer type ျဖစ္ပါတယ္၊ ၂ ခုကေတာ့ floating point number type ျဖစ္ပါတယ္၊ ၁ ခုက character type ျဖစ္ၿပီးေနာက္ဆံုးတစ္ခုက Boolean type ျဖစ္ပါတယ္။ ဒီ ၈ ခုလံုးကိုေအာက္မွာရွင္းျပထားပါတယ္။

 

Integer Type

Integer type ဆိုတာ ကိန္းဂဏန္းေတြကိုသိမ္းဖို႔ပါ၊ ကိန္းျပည့္ေတြကိုပဲ သိမ္းဆည္းေပးပါတယ္၊ အေပါင္းကိန္းကိုသာမက အႏုတ္ကိန္းကိုပါသိမ္းေပးႏိုင္ပါတယ္။ ဒါေပမဲ့သူ႔မွာကန္႔သတ္ခ်က္တစ္ခုရွိပါတယ္၊ သတ္မွတ္ထားတဲ့ ကိန္းဂဏန္းေတြကိုသာသိမ္းေပးႏိုင္ပါတယ္။ integer type မွာအမ်ိဴးအစားေလးမ်ိဴးရွိပါတယ္။ ပထမက int ပါ သူ႔ရဲ႕တန္ဖိုးက -2,147,483,648 ကေန 2,147,483, 647 ထိျဖစ္ခြင့္ရွိပါတယ္။ ဒုတိယကေတာ့ short ျဖစ္ပါတယ္ တန္ဖိုးက -32,768 ကေန 32,767 ထိပါ၊ တတိယက long လို႔ေခၚၿပီး တန္ဖိုးက -9,223,372,036,854,775,808 ကေန 9,223,372,036,854,775,807 ထိပါ၊ သူကအမ်ားဆံုးပါပဲ၊ ေနာက္ဆံုးတစ္ခုက byte တဲ့ တန္ဖိုးကေတာ့ –128 ကေန 127 အထိပဲရွိပါတယ္၊ အနည္းဆံုးပါပဲ။ ဒီထဲမွာအသံုးအမ်ားဆံုးကေတာ့ int ပါ။ java မွာရွိတဲ့ဒီတန္ဖိုးေတြက ကိန္းေသေတြပါ၊ ဆိုလိုတာက platform ေတြ operating system ေတြေျပာင္းသြားပါေစ မေျပာင္းလဲတာကေတာ့ ဒီတန္ဖိုးေတြပါပဲ၊ ဒါေပမဲ့ C မွာေတာ့အဲလိုမဟုတ္ပါဘူး၊ C မွာကေတာ့ compiler ေပၚမူတည္ၿပီး တန္ဖိုးအမ်ိဴးမ်ိဴးကြဲပါတယ္၊ 32-bit integer, 16-bit integer စသည္ျဖင့္ေပါ႔။ ဒီေတာ့ C မွာက 32-bit processor ေပၚမွာ run ႏိုင္တဲ့ program ဟာ 16-bit processor ေပၚမွာ run တဲ့အခါ integer overflow (processor ေပၚမွာ integer မသိမ္းႏိုင္တဲ့ error) ျဖစ္လာႏိုင္ပါတယ္။ integer type ျဖစ္တဲ့ variable ေတြေၾကာ္ျငာရာမွာ ရွိသင့္တဲ့ကန္႔သတ္ခ်က္ထက္ ေက်ာ္လို႔မရပါဘူး။ ဥပမာ-

int x = -2147483648;   //ဒါဆိုမွန္ပါတယ္

int x = -2147483649;  //ဒါဆိုမွားပါတယ္

int x = 2000000000;  //ဒါဆိုမွန္ပါတယ္

int x = 3000000000;  //ဒါဆိုမွားပါတယ္

short x = 200;  //ဒါဆိုမွန္တယ္

 

Floating-Point Type

ဒီ type ရဲ႕တန္ဖိုးေတြက ဒသမကိန္းေတြပါ၊ ပထမတစ္ခုက float တဲ့သူ႔ကန္႔သတ္ခ်က္က decimal တန္ဖိုး ၆  လံုး ၇ လံုးေလာက္ရွိပါတယ္၊ ဒုတိယက double ပါသူ႔ကန္႔သတ္ခ်က္က decimal တန္ဖိုး ၁၅ လံုးေလာက္ရွိပါတယ္။ ဒီႏွစ္ခုမွာအသံုးမ်ားတာက double ပါ။ ဒီ floating-point ကိုေငြေၾကးတြက္ခ်က္တဲ့ ေနရာမွာသံုးမယ္ဆိုအဆင္မေျပပါဘူး၊ ဘာေၾကာင့္လဲဆိုေတာ့ ဒသမတန္ဖိုးေၾကာင့္ပါ၊ ဒီကုတ္ System.out.print(2.0 – 1.1); ကို run ၾကည့္ရင္ 0.8999999999999999 လို႔ထြက္လာလိမ့္မယ္၊ 0.9 လို႔ေတာ့ထြက္မွာမဟုတ္ဘူး ဘာေၾကာင့္လဲဆိုေတာ့ floating point ေတြကို binary number system နဲ႔တြက္ထားလို႔ပါ။

 

Char Type

Char type ကိုအဂၤလိပ္အကၡရာ တစ္လံုးကိုေဖာ္ျပတဲ့ေနရာမွာ သံုးပါတယ္။ သူက 16-bit Unicode character ျဖစ္ပါတယ္၊ အနိမ့္ဆံုး '\u0000' ကေနအျမင့္ဆံုး ‘\uffff’ ထိရွိပါတယ္။ တကယ္ေတာ့ဒီ char type ကအသံုးနည္းပါတယ္၊ သူ႔အစား string ကိုသံုးက်ပါတယ္။

 

Boolean Type

ဒီ type ကေတာ့ တန္ဖိုးႏွစ္မ်ိဴးပဲရွိပါတယ္ true ႏွင့္ false ပါပဲ။ အမွား အမွန္ စစ္ေဆးတဲ့ေနရာမွာသံုးပါတယ္။

 

Variable ကိုအသံုးျပဳနည္း

Variable ကိုမသံုးခင္ အရင္ဆံုးေၾကာ္ျငာရပါတယ္၊ variable ေၾကာ္ျငာတဲ့အခါေနာက္ဆံုးမွာ ; ထည့္ေပးရပါမယ္။ ဒီလိုေပါ့ -

double salary;

int days;

boolean isOK;

 

variable ေၾကာ္ျငာတဲ့ေနရာမွာ ေရွ႕ဆံုးက variable type ျဖစ္ၿပီး ေနာက္ကေတာ့ variable ရဲ႕နာမည္ပါပဲ။ variable ရဲ႕နာမည္ဟာ letter(ကိန္းဂဏန္းမဟုတ္ေသာ အကၡရာစဥ္) နဲ႔စတင္ရၿပီး ေနာက္ပိုင္းကေတာ့ letter(အကၡရာစဥ္)ေရာ digit(ကိန္းဂဏန္း)ေရာ ျဖစ္ခြင့္ရွိပါတယ္၊ ဒါေပမဲ့ special character ႏွင့္ space ေတာ့ပါလို႔မရပါဘူး။ variable ရဲ႕နာမည္နဲ႔ java language ထဲမွာပါတဲ့ java language ကအသံုးျပဳတဲ့ စကားလံုးေတြနဲ႔တူလို႔မရပါဘူး၊ ဥပမာ -

int public;  //မွားပါတယ္၊ public ဆိုတာ java ရဲ႕ reserved word ျဖစ္ေနပါတယ္

boolean class;  //မွားပါတယ္

 

စာတစ္ေၾကာင္းထဲမွာ “ , ” ကိုသံုးၿပီး variable ႏွစ္ခုေၾကာ္ျငာလို႔ရပါတယ္။ int i, j;

 

တန္ဖိုးသတ္မွတ္ေပးျခင္း

Variable ေတြကိုတန္ဖိုးမသတ္မွတ္ပဲ သံုးလို႔မရပါဘူး၊ သံုးရင္ error တက္ပါတယ္။ တန္ဖိုးကိုဒီလိုေပးရပါတယ္ -

int i;  //declaration

i = 20;  //တန္ဖိုးသတ္မွတ္ေပးျခင္း

 

တစ္ေၾကာင္းထဲမွာ ေၾကာ္ျငာတာေရာ တန္ဖိုးသတ္မွတ္တာေရာ ေပါင္းေရးလို႔ရပါတယ္။

int i = 20;

 

တန္ဖိုးကို ခဏခဏေျပာင္းလို႔ရပါတယ္။

int days = 12;

days = 7;

 

variable ရဲ႕တန္ဖိုးကို console ေပၚမွာေပၚေစခ်င္ရင္ ဒီလိုေရးရပါတယ္။

int i = 5;

int days = 7;

System.out.println(i);

System.out.print(days);

 

ကိန္းေသ

ကိန္းေသဆိုတာ variable တစ္မ်ိဴးပါပဲ၊ သူ႔ရဲ႕တန္ဖိုးကို တစ္ခါေပးၿပီးရင္ ထပ္ေျပာင္းလို႔မရပါ သူ႔တန္ဖိုးကအေသပါပဲ။ ကိန္းေသ variable ကိုဒီလိုေၾကာ္ျငာပါတယ္။

final double CM_PER_INCH = 2.54;

 

class ရဲ႕ကိန္းေသ variable ကိုေတာ့ static ထည့္ၿပီးေၾကာ္ျငာရပါတယ္။

static final double CM_PER_INCH = 2.54;

 

ေအာက္ကနမူနာကို run ၾကည့္ပါ။ “Paper.java” ဆိုတဲ့ ဖိုင္နာမည္ႏွင့္သိမ္းပါ။

public class Paper

{

public static final double CM_PER_INCH = 2.54; //class’s constant variable

public static void main(String[] args)

{

double paperWidth = 8.5;

double paperHeight = 11;

System.out.println("Paper size in centimeters: "

+ paperWidth * CM_PER_INCH + " by " + paperHeight * CM_PER_INCH);

}

}

 

Previous : Java Tutorial 3

Next : Java Tutorial 5

သင့္ရဲ႕ PC ကို ဖုန္းနဲ႕ Reboot လုပ္ခ်င္ပါသလား ????

Xda forum member တစ္ေယာက္ျဖစ္တဲ့ lastspartan09 ဟာ Droid Remote ဆိုတဲ့ app တစ္ခုကို 2012 ခုႏွစ္တုန္းက တီထြင္ခဲ့ပါတယ္။ ဒီ app ေလးဟာ သင့္ရဲ႕ computer နဲ႕ mobile phone ကို WiFi network နဲ႕ ခ်ိတ္ဆက္ျပီး phone ကေနတစ္ဆင့္ computer ကို shutdown, reboot, hibernate လုပ္ႏိုင္ေအာင္ စီစဥ္ထားတဲ့ app ေလးျဖစ္ပါတယ္။


ဒီ action ေတြကို ရိဳးရွင္းတဲ့ button ေလးခုနဲ႕ user interface ကို တည္ေဆာက္ထားတာကို ေတြ႕ရပါတယ္။ Timer ေပးျပီး သင္ပိတ္ခ်င္တဲ့အခ်ိန္မွာ computer ကို ပိတ္လို႕ရေအာင္ စီစဥ္ထားႏုိုင္တာကိုလည္း ေတြ႕ရပါတယ္။


ေအာက္က LINK မွာ ဘယ္လို အသံုးျပဳရမယ္ဆိုတာနဲ႕ အေသးစိတ္ အခ်က္အလက္ေတြကို ၾကည္႕႐ွဳႏိုင္မွာ ျဖစ္ပါတယ္….


http://forum.xda-developers.com/showthread.php?t=2053721


credit: xda-developers