Saturday, February 1, 2014

Java Tutorial 11

Java Tutorial 11(OOP) part 2

အရင္ပိုစ့္မွာ class ရဲ႕ member function ေတြအေၾကာင္းေျပာခဲ့ပါတယ္၊ အခု member function တစ္ခုျဖစ္တဲ့ constructor ဆိုတဲ့ function အေၾကာင္းကိုေဆြးေႏြးပါမယ္။ constructor ဆိုတာ class ရဲ႕ member function တစ္ခုျဖစ္ပါတယ္၊ ဒီ function ကိုေၾကာ္ျငာတဲ့အခါ constructor ရဲ႕နာမည္ကို class ရဲ႕နာမည္နဲ႔တူေအာင္ေပးရပါတယ္။ class နာမည္က Employee ဆိုရင္ constructor ရဲ႕နာမည္ကလည္း Employee ျဖစ္ရပါမယ္။ constructor ဆိုတဲ့ function ဟာဘာလုပ္တာလည္းလို႔ ေမးစရာရွိပါတယ္။ class ကေန object ေတြကိုဖန္တီးတဲ့ အခ်ိန္မွာ၊ အဲဒီ object ရဲ႕ constructor function ဟာအလိုအေလ်ာက္ ေခၚ(call)ခံရပါတယ္။ Person ဆိုတဲ့ class တစ္ခုရွိတယ္လို႔ ဆိုၾကပါဆို႔၊ ဒီလိုမ်ိဳး Person ppp = new Pserson(); ဆိုၿပီး Person ဆိုတဲ့ class ကေန ppp ဆိုတဲ့ object ကိုဖန္တီးလိုက္တဲ့အခါ၊ ppp object ရဲ႕ constructor function ကအလုပ္လုပ္ပါတယ္။

constructor ေတြမွာ return type မရွိပါဘူး။ constructor ေတြကိုလည္း overload လုပ္ႏိုင္ပါတယ္။ class ေတြမွာ constructor မထည့္ေပးလည္းျဖစ္ပါတယ္၊ မထည့္ရင္ေတာ့ object ေၾကာ္ျငာတဲ့အခါ constructor ကိုေခၚမွာမဟုတ္ပါဘူး။

ဆိုပါေတာ့ User ဆိုတဲ့ class တစ္ခုရွိတယ္၊ သူ႔မွာ overload ျဖစ္ေနတဲ့ constructor function ႏွစ္ခုရွိတယ္။

class User {

String name;

int age;

int phone;

//first Constructor

public User() {

name = “Mr Unknown”;

age = 20;

phone = 000000;

}

//second Constructor

public User(String n, int a, int p) {

name = n;

age = a;

phone = p;

}

}

ဒီ User class နဲ႔ object တစ္ခုကိုတည္ေဆာက္ရာမွာ ဒီလိုမ်ိဳး User uuu = new User(); ေၾကာ္ျငာလိုက္မယ္ဆိုရင္ ပထမ constructor ကအလုပ္လုပ္ပါတယ္။ parameter ေတြထည့္ၿပီးေတာ့ User uuu = new User(“Mg P”, 20, 111111); လို႔ေၾကာ္ျငာမယ္ဆိုရင္ ဒုတိယ constructor ကအလုပ္လုပ္မွာပါ။ ဒုတိယ constructor ရဲ႕အလုပ္လုပ္ပံုက၊ သူ႔ကိုေပးလိုက္တဲ့ parameter ရဲ႕တန္ဖိုးေတြကို object ရဲ႕ field ေတြထဲ ထည့္ေပးလိုက္တာပါ။

Parameter သံုးခုလက္ခံတဲ့ constructor ကိုေၾကာ္ျငာထားတဲ့အတြက္၊ object တည္ေဆာက္ရာမွာ parameter သံုးခုထည့္ေပးရတာပါ။ parameter ႏွစ္ခုပဲထည့္ေပးလို႔မရပါဘူး၊ parameter ႏွစ္ခုကိုလက္ခံတဲ့ constructor မရွိလို႔ပါ။ ဘာ constructor မွမရွိရင္ေတာ့ new User() လို႔ပဲအသံုးျပဳရမွာပါ။

Method ေတြမွာ return type ဆိုတာရွိပါတယ္၊ သူ႔ကို method ရဲ႕နာမည္ေရွ႕မွာေရးရပါတယ္။ ဘာမွ return မျပန္ရင္ေတာ့ void လို႔ေရးရပါတယ္။ integer တန္ဖိုး return ျပန္ရင္ int လို႔ေရးရပါတယ္၊ object တစ္ခု return ျပန္လို႔လည္းရပါတယ္၊ object ဆိုရင္ေတာ့ object ရဲ႕နာမည္ကိုေရးရပါတယ္။ return ျပန္ဖို႔ function ထဲမွာ “return” ဆိုတဲ့ကုဒ္နဲ႔ return ျပန္မယ့္တန္ဖိုးကို ေရးသားေပးရပါမယ္။

public int IntReturn() {

return 3;

}

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

Return ျပန္တဲ့အခါ function အလုပ္လုပ္တာရပ္သြားပါမယ္၊ return ျပန္တဲ့ကုဒ္ရဲ႕ေအာက္မွာ တျခားကုဒ္ေတြရွိရင္ return ျပန္တဲ့အခါ၊ သူ႔ေအာက္ကကုဒ္ေတြက ဆက္ၿပီးအလုပ္လုပ္မွာ မဟုတ္ပါဘူး။ return ျပန္တဲ့ကုဒ္မရွိရင္ေတာ့ function ထဲကကုဒ္ေတြအကုန္လံုး အလုပ္လုပ္မွာပါ။

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

 

ထုပ္ပိုး စုေဆာင္းျခင္း

Class ေတြအမ်ားႀကီးျဖစ္လာတဲ့အခါ ရွဳပ္ေထြးမွဳမျဖစ္ရေအာင္ အမ်ိဳးအစားတူတဲ့ class ေတြကိုစုေဆာင္းထားဖို႔လိုအပ္ပါတယ္။ အဲဒီအတြက္ java မွာ package ေတြတည္ေဆာက္ၿပီး၊ အမ်ိဳးအစားတူရာ class ေတြကို package ေတြထဲမွာသိမ္းထားလို႔ရပါတယ္။

အမွန္တကယ္ေတာ့ package ဆိုတာ folder တစ္ခုပါပဲ။ ကိုယ့္ရဲ႕ class ထဲမွာရွိတဲ့ ကုဒ္ေတြထဲက  အေပၚဆံုးေနရာမွာ package ဆိုတဲ့ကုဒ္နဲ႔ package နာမည္ကိုေရးရပါမယ္။ ၿပီးေတာ့ အဲဒီကုဒ္ကို package နဲ႔နာမည္တူတဲ့ folder ရဲ႕အထဲမွာသိမ္းရပါမယ္။ ဥပမာ အေနနဲ႔ေအာက္က class မ်ိဳးရွိတယ္ဆိုပါဆို႔။

“SalesClass.java”

package sales;

public class SalesClass {

}

ဒါဆိုရင္ဒီ class ကို “sales” ဆိုတဲ့ folder ေအာက္မွာသိမ္းထားရပါမယ္။

ဒီလိုမ်ိဳး package ေတြခြဲျခားတည္ေဆာက္ျခင္းအားျဖင့္ software အႀကီးေတြကို ေရးရတာလြယ္ကူေစပါတယ္။ နမူနာအေနနဲ႔ ေဈ းေရာင္းတဲ့ software ဆိုပါဆို႔။ ဒါဆိုရင္ ကုန္ပစၥည္းအမ်ိဳးမ်ိဳးကို class ေတြေဆာက္ပါမယ္၊ ဥပမာ food, clothes, electronic, cosmictic, drink စသည္ျဖင့္ class ေတြေဆာက္ပါမယ္၊ ၿပီးေတာ့ ဒီ class ေတြကို item ဆိုတဲ့ package ထဲထည့္ေပးလိုက္ပါမယ္။ ဒါဆိုရင္ makeOrder, cancelOrder, deliverOrder ဆိုတဲ့ class ေတြကိုေတာ့ order ဆိုတဲ့ package ထဲထည့္ေပးလိုက္ပါမယ္။ အဲဒီလိုမ်ိဳး တူရာတူရာ အမ်ိဳးအစားေတြ စုၿပီး class ေတြကိုသိမ္းထားျခင္းျဖင့္၊ ျပဳျပင္ေျပာင္းလဲရတာ အသစ္ထပ္ထည့္ရတာ အေဟာင္းေတြကိုဖ်က္ရတာ ေတြကိုလြယ္ကူေစပါတယ္။

 

Previous : Java Tutorial 10

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 ]