![]() | com.tunn.apk.apk 2214K Download က်ြန္ေတာ္၇ဲ့ app ပါ
|
Monday, August 12, 2013
RAT (သို႔) Trojan ဆိုတာဘာလဲ
အကယ္၍ မ်ား ျခား Computer တစ္ခုရဲ႕ IP address/ Computer
Name ေတြကို သိမယ္ဆိုရင္ ကိုယ္လိုသလို ခ်ဳပ္ကိုင္လို႔ ရတယ္ဆိုတာကို
Hacker's Secret ဆိုတဲ႔ black hand book ကိုဖတ္ဖူးသူတိုင္း သိႏိုင္ပါတယ္။
က်ေနာ့္ဆီမွာ အဲဒီစာအုပ္က ဖ်က္တဲ႔အထဲပါသြားလို႔
ေနာက္မွပဲျပန္ရွာျပီးတင္ေပးပါ့မယ္...။ ကဲ...Trojan Tool ေတြကို
ၾကည့္လိုက္ၾကရေအာင္....
RAT (သို႔) Trojan ဆိုတာဘာလဲ
RAT ဆိုတာ remote acess trojan (သို႔) remote administrator tool တစ္ခုျဖစ္ပါတယ္။
RAT (သို႔) Trojan တစ္ခုနဲ႔ သင္ဘာေတြ လုပ္ႏိုင္ပါသလဲ
သင္ဟာ ဒီ programေတြကို အသံုးျပဳ၍ အေ၀းမွာေနျပီး informationေတြ၊ file ေတြ၊ device ေတြကို target computer ဆီမွ ရယူႏိုင္ပါတယ္။
TRANSMISSION'S UD RAT V1
http://minus.com/ltWgOQfie2SW3
Gmail, Hotmail, etc, Facebook, … Accounts Hacking
တစ္ခုႀကိဳေျပာထားခ်င္တာက … ကၽြန္ေတာ္ ဘာ Hacker မွမဟုတ္ပါ … ဘာမွလည္းမဟုတ္ပါဘူး သားက ခုမွ ေက်ာင္းသားပဲရွိေသးတာ၊ ငယ္ငယ္ေလးပဲခ်ိေသးတာ … ႀကိဳေျပာထားပါတယ္ … ကဲဗ်ာ … စၾက ရေအာင္ …
ဒီလိုဗ် … Facebook တို႔၊ Gmail တို႔ … အစရွိသျဖင့္ေပါ့ဗ်ာ … အေကာင့္ေတြမွာက Username, Password ဆိုၿပီးရွိၾကတယ္ေရာ … Username ကေတာ့ သိၾကတယ္ေပါ့ဗ်ာ … အဲ တစ္ခုလာပီ … Password က်ေတာ့ ပိုင္ရွင္ကလြဲလို႔ တျခားသူမွ မသိၾကတာေလ … မ်ားေသာအားျဖင့္ေပါ့ေနာ္ … ကဲ … သိခ်င္ပီဆိုရင္ … ဘယ္လိုလုပ္မလဲ …
တစ္ရက္က ဒီလိုဗ် … ကၽြန္ေတာ္ႀကံဳဖူးတယ္ … ကၽြန္ေတာ့္ သူငယ္ခ်င္း တစ္ေယာက္ ပါ၊ သူက အင္တာနက္ ခုမွစသံုးခါစ … ဘာမွေတာင္သိေသး တာမဟုတ္ဘူး … Gtalk ေလးစသံုးခါစေပါ့ဗ်ာ … တစ္ရက္က်ေတာ့ ကၽြန္ေတာ့္ကို ေမးလာတယ္ … ငါ့ကိုတဲ့ … Chatting ထဲက ဘဲတစ္ေပြကတဲ့ … ငါ့အေကာင့္ရဲ႕ Security Questions ကို ေမးတယ္ တဲ့ … ေမးေတာ့၊ ငါက အဲဒါဘာလဲ ၊
ဘာလုပ္မလို႔လဲလို႔ ေမးေတာ့ … ငါ့ကိုေျပာျပတဲ့ ငါနင့္အေကာင့္ကို Hack ျပမယ္ဆိုပဲ … (တယ္ေတာ္ပါ လားေပါ့ … :P ) ကၽြန္ေတာ္ေတာင္ ေတာ္ေတာ္ႀကိဳက္သြားတယ္ … ဟီးးး … နင္ကလည္း ျပန္ေျပာလုိက္လို႔ … အဲေလာက္ေတာ္ေနလည္း ျမန္မာမွာေနမေနနဲ႔လို႔ … ႏိုင္ငံျခားထြက္ပီး … လုပ္စားလို႔ ေျပာလုိက္လို႔ … ကၽြန္ေတာ္လည္း ေျပာလုိက္တယ္ … ဟုတ္တယ္ေလ … ဘယ္ႏွယ့္ … Security Question သိမွေတာ့ ဘာထူးေတာ့မလဲ … Password ေျပာျပလုိက္တာကမွ နည္းနည္းခံသာဦးမယ္ … ကဲဗ်ာ … စၾကရေအာင္ …
ယခုနည္းေလးက ကၽြန္ေတာ္တို႔ မ်ားေသာအားျဖင့္ အင္တာနက္အသံုးျပဳတဲ့အခါမွာ Gmail, Website စသည္ျဖင့္ေပါ့ ၾကည့္တဲ့၊ ဖြင့္တဲ့အခါမွာ Browser ကိုအသံုးျပဳၾကရတယ္ေလ … အဲခါမွာ မ်ားေသာအားျဖင့္ နာမည္ႀကီးတဲ့ … Mozilla Firefox ေပါ့ဗ်ာ … အဲ … အဲဒါနဲ႔ပတ္သက္ပီး ယခု တစ္ဆင့္ျခင္း Password တစ္ခုကို ဘယ္လိုယူမလဲဆိုတာေလး နည္းနည္းေလး နည္း လမ္းေလးျပေပး ခ်င္ပါတယ္ ရမရေတာ့ သားလည္း မစမ္းဖူးေတာ့ မသိဘူးေနာ္ … သားေၾကာက္ တယ္ … ၿပီးေတာ့ … ကၽြန္ေတာ္လည္း Hacking စိတ္မ၀င္စားတဲ့အတြက္ေၾကာင့္
(1) http://www.drivehq.com/ ကိုသြား၍ Account ေလးတစ္ခုေလာက္ Sign Up လုပ္လုိက္ပါ။
(2) Remote Firefox Password Stealer ကို Download http://minus.com/
(3) Download လုပ္လုိ႔ရလာတဲ့ WinRAR File ကို Extract လုပ္တဲ့အခါမွာ … ေအာက္ပါပံုအတိုင္း Folder တစ္ခု နဲ႔ Files ႏွစ္ခုကို ေတြ႕ရမွာျဖစ္ပါတယ္။
Remote Firefox Password Stealer
(4) Firefox_Password_Stealer.e
Stealer
(5) Build Button ကို Click လုပ္ပါ။
(6) Firefox_Password_Stealer.e
(7) 100% fud crypter.exe ဆိုေသာ file ကို Open လုပ္ပါ။ ထို႔ေနာက္ စာဖတ္သူ Crypt လုပ္ေသာ filename အမည္ျဖင့္ 100% fud crypter.exe ရွိေသာ folder အတြင္းတြင္ ေနာက္ထပ္ filename.exe ျဖင့္ file တစ္ခုေရာက္ ရွိမွာျဖစ္ပါတယ္ခ
(8) ထို႔ေနာက္ EaSy BindeR ဆိုေသာ folder ကိုဖြင့္၍ အတြင္းမွ Easy Binder.exe ကို Open လုပ္၍ ေစာေစာ က ရရွိထားေသာ file မ်ားကို Bind လုပ္ေပးပါ …
(9) ဒီအဆင့္ထိေရာက္လွ်င္ေတာ့ စာဖတ္သူေနာက္ဆံုး Bind လုပ္၍ ရရွိလာေသာ File ကို စာဖတ္သူ Password သိခ်င္တဲ့ သူဆီကို ပို႔၍ Run ခုိင္းခ်င္ခုိင္း၊ ဒါမွမဟုတ္ စာဖတ္သူကိုယ္တိုင္ Password သိခ်င္တဲ့ လူထုိင္တဲ့စက္မွာ သြားၿပီး Run ခ်င္လည္းရပါတယ္။
စိတ္ႀကိဳက္သာလုပ္ အဓိကက အဲဒီ File ေလး Run ၿပီဆိုတာနဲ႔ စာဖတ္သူ ပထမအဆင့္မွာ Sign Up လုပ္ထား တဲ့ FTP Account ထဲကို စာဖတ္သူလိုခ်င္တဲ့ Password ေတြေရာက္ရွိေန မွာျဖစ္ပါ တယ္ခင္ဗ်ာ … သားေတာ့ မလုပ္ဖူးဘူး … စမ္းခ်င္သူမ်ား , Hack ခ်င္ပါတယ္ဆိုတဲ့ ကိုကိုမ်ား စမ္းခ်င္သပဆို စမ္းသပ္ႏို င္ပါသည္ …
ဒီ Post ႏွင့္ ပတ္သက္၍ မည္သူ႔ကိုမွ် ထိခိုက္ေစလုိျခင္းမရွိပါ၊ ဒီလိုလုပ္လုိ႔ရတယ္ဆိုတာကိုသ
က်ေနာ္စုေဆာင္သိမ္းဆည္ထားသည
Simple Game Creation 2
Game ေသးေသးေလးတစ္ခုေရးရေအာင္ေနာ္..။ အဓိကကေတာ့.. movement
ကုိ..ဘယ္လိုလုပ္လဲ...သိေစ ခ်င္တာပါ..။ ဒီတစ္ခါေတာ့..ရွင္းၿပပါ့မယ္..။
နည္းနည္းနားလည္လာလုိ႔ပါ.. :)
ပထမဆံုး.. Folder တစ္ ခုေဆာက္ ပ့ါမယ္..။ ၾကိဳက္တဲ့ေနရာမွာ ေဆာက္လုိက္ပါ..။
Folder ကုိ.. Game လုိ႔ေပးလိုက္ပါ..။
Game Folder ထဲမွာ.. images ဆုိတဲ့ folder တစ္ခုထပ္ေဆာက္ပါ.။ ၿပီးရင္.. Game Folder ေအာက္မွာပဲ. js ဆိုတဲ့ folder တစ္ခုထပ္ေဆာက္လုိက္ပါမယ္..။ ေအာက္က coding ေလးကုိ. copy ကူးလိုက္ပါ..။
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Simple Canvas Game</title>
</head>
<body>
<script src="js/game.js"></script>
</body>
</html>
notepad မွာ..ထည့္ၿပီး..Game Folder ေအာက္မွာ.. index.html နဲ႔ Save လုိက္ပါ..။
1. Create the canvas
// Create the canvas
var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");
canvas.width = 512;
canvas.height = 480;
document.body.appendChild(canvas);
Canvas ဆိုတာ.. Game ကုိ..ဘယ္ေလာက္ size နဲ႔ ေပၚေစခ်င္တာလညး္ဆိုၿပီး.. ေနရာေလး..သတ္မွတ္လိုက္တာပါ..။
2d နဲ႔ပဲေရးမွာမုိ႔လို႔.. canvas.getContext("2d"); ဆိုၿပီးထည့္ထားတာပါ..။
width နဲ႔ height ကုိသတ္မွတ္ေပးပါမယ္..။
2. Include images
// Background image
var bgReady = false;
var bgImage = new Image();
bgImage.onload = function () {
bgReady = true;
};
bgImage.src = "images/background.png";
အခု.. ေနာက္ခံ background ထည့္ပါမယ္..။
https://github.com/lostdecade/simple_canvas_game/blob/master/images/background.png မွာ. background ေတြ႔ပါလိမ့္မယ္..။
background ေပၚမွာ.. right click ႏွိပ္ၿပီး.. Save Image As ကုိ.ႏွိပ္လိုက္ပါ..။
ပံုကုိ.. Game Folder ေအာက္က images folder ထဲမွာ.backgroundဆုိတဲ့နာမည္နဲ႔...ထည့္လုိက္ပါ..။ bgImage.src = "images/background.png"; က.. background image ကုိ..ထည့္တဲ့ပံုစံပါ..။
3. Game objects
// Game objects
var hero = {
speed: 256, // movement in pixels per second
x: 0,
y: 0
};
var monster = {
x: 0,
y: 0
};
var monstersCaught = 0;
Game ထဲမွာပါတဲ့..အေကာင္ေတြရဲ႔ေနရာကုိ.သတ္မွတ္တာပါ..။
https://github.com/lostdecade/simple_canvas_game/blob/master/images/hero.png မွာ.. Hero ပံုကို.. Save လုပ္လိုက္ပါ..။
Game Folder ေအာက္က...images Folder ထဲမွာ. Save ပါမယ္..။
https://github.com/lostdecade/simple_canvas_game/blob/master/images/monster.png မွာ. monster ပံုကုိ.. Save လုပ္လိုက္ပါ။
Game Folder ေအာက္က...images Folder ထဲမွာ. Save ပါမယ္..။
speed: 256 က..အၿမန္ႏွဳန္းကုိ..သတ္မွတ္တာပါ..။ hero မွာပဲပါပါတယ္.။ game play လိုက္ရင္.. monster က.မေရႊ႔ဘူးေလ..။
hero ပဲ..ေရႊ႔ရမွာပါ..။ ဒါေၾကာင့္.. monster ကုိ.အၿမန္ႏွဳန္းမသတ္ေပးထားပါဘူး..။
x: 0,y: 0 ဆိုတာ. postion သတ္မွတ္တာပါ..။ အေကာင္ေလးေတြရဲ႔ position က.. တစ္ခါနဲ႔တစ္ခါ..မတူလို႔.. 0 ေပးထားတာပါ..။
var monstersCaught = 0; က.. monster ကုိ..ထိမိတဲ့အၾကိမ္အေရအတြက္ပါ..။ စစၿခင္းဆိုေတာ့. 0 ေပးထားတာပါ..။
4. Keyboard Controls
// Handle keyboard controls
var keysDown = {};
addEventListener("keydown", function (e) {
keysDown[e.keyCode] = true;
}, false);
addEventListener("keyup", function (e) {
delete keysDown[e.keyCode];
}, false);
ကစားတဲ့သူက..ေရြ႔လိုက္တဲ့ arrow key ေတြကုိ.. AddEventListener နဲ႔ဖမ္းပါတယ္..။
တကယ္လို႔.. down arrow key ကုိ..ႏွိပ္လိုက္မယ္ဆိုရင္.. keysDown ကုိ.. true ေပးလိုက္ပါတယ္..။
down arrow key ကုိ.. ႏွိပ္ေနရင္းနဲ႔.. up arrow key ကုိ..ေၿပာင္းႏွိပ္ခဲ့မယ္ဆိုရင္..Down ကုိ.. delete လုပ္တဲ့အေနနဲ႔.. delete keysDown[e.keyCode]; ဆိုၿပီး..ဖ်က္လိုက္ပါတယ္..။
5. Reset the game
// Reset the game when the player catches a monster
var reset = function () {
hero.x = canvas.width / 2;
hero.y = canvas.height / 2;
// Throw the monster somewhere on the screen randomly
monster.x = 32 + (Math.random() * (canvas.width - 64));
monster.y = 32 + (Math.random() * (canvas.height - 64));
};
game ကို...အစကေန..ၿပန္ကစားတာပါ..။
အစကေန..ၿပန္ကစားမယ္ဆိုရင္.. hero နဲ႔.. monster ကုိ..ေနရာၿပန္သတ္မွတ္ေပးမွာပါ..။
hero ကုိ..ေနရာသတ္မွတ္ဖို႔... canvas ရဲ႔.. width ကုိ..တည္ 2နဲ႔စား..။ canvas ရဲ႔.. height ကုိ..တည္ 2နဲ႔စား..။ ရတဲ့.အေၿဖအရ.. x ၀င္ရိုးနဲ႔.. y ၀င္ရိုးသတ္မွတ္ပါတယ္..။
monster ကုိေတာ့.. canvas ရဲ႔.. width ထဲက. 64 ႏွဳတ္.. random ေခါက္ၿပီး.. 32 ေပါင္းပါတယ္...။ height လည္း..တူတူပါပဲ..။
coding အားလံုး..ကူးၿပီးလို႔.. game ကစားၿပီး.. refresh လုပ္ၾကည့္ပါ...။
hero ရဲ႔ေနရာက..မေၿပာင္းပါဘူး..။
monster ကေတာ့... refresh တစ္ခါလုပ္တုိင္း..တစ္ခါေၿပာင္းသြားပါတယ္.. ။
6. Update Game Objects
// Update game objects
var update = function (modifier) {
if (38 in keysDown) { // Player holding up
hero.y -= hero.speed * modifier;
}
if (40 in keysDown) { // Player holding down
hero.y += hero.speed * modifier;
}
if (37 in keysDown) { // Player holding left
hero.x -= hero.speed * modifier;
}
if (39 in keysDown) { // Player holding right
hero.x += hero.speed * modifier;
}
ကစားတ့ဲသူက.. hero နဲ႔.. monster ကုိ.. ေပးထားတဲ့.. position ကေန..စိတ္ၾကိဳက္ေရြ႔လိုက္တဲ့.တန္ဖိုးကုိ..တြက္ခ်က္ေပးတာပါ..။
7. Touching
// Are they touching?
if (
hero.x <= (monster.x + 32)
&& monster.x <= (hero.x + 32)
&& hero.y <= (monster.y + 32)
&& monster.y <= (hero.y + 32)
) {
++monstersCaught;
reset();
}
};
hero နဲ႔.. monster နဲ႔... ထိမိသြားတယ္..ဆိုရင္.. monsterCaunght ကုိ.. 1 တိုးပါမယ္...။
game ကုိ..အစကေနၿပန္စပါတယ္..။
အဲ့ဒါေၾကာင့္.. အေပၚက reset the game function ကုိ..လွမ္းေခၚလိုက္ပါတယ္...။
8. Rendering
// Draw everything
var render = function () {
if (bgReady) {
ctx.drawImage(bgImage, 0, 0);
}
if (heroReady) {
ctx.drawImage(heroImage, hero.x, hero.y);
}
if (monsterReady) {
ctx.drawImage(monsterImage, monster.x, monster.y);
}
// Score
ctx.fillStyle = "rgb(250, 250, 250)";
ctx.font = "24px Helvetica";
ctx.textAlign = "left";
ctx.textBaseline = "top";
ctx.fillText("Goblins caught: " + monstersCaught, 32, 32);
};
rendering က.. အေပၚဆံုးက.. canvas နဲ႔. background image နဲ႔..သက္ဆုိင္ပါတယ္..။
Image ေတြကို..ဒီတိုင္းထည့္လုိ႔မရပါဘူး... ctx.drawImage(bgImage, 0, 0); ဆိုၿပီး.ထည့္ရပါတယ္..။
hero နဲ႔.. monster လည္း..ဒီအတိုင္းပါပဲ..။ သူတို႔လည္း..ပံုေတြပဲေလ..။
position က x ၀င္ရိုးနဲ႔... y ၀င္ရိုးအတိုင္းသြားမွာမုိ႔လို႔.. hero.x , hero.y , monster.x , monster.y ဆိုၿပီး..သတ္မွတ္ထားတာပါ..။
ctx.fillStyle = "rgb(250, 250, 250)"; ဆိုေတာ့... Goblins caught: စာသားက.. အၿဖဴေရာင္နဲ႔.ေပၚေနတာပါ..။
font ကုိ. " Helvetica " သံုးထားပါတယ္..။
align က. left ထားၿပီး. basealign ကုိ. top ထားထားလို႔.. Goblins caught: က ..အေပၚ..ဘယ္ဘက္မွာ..ေပၚေနတာပါ..။
ctx.fillText("Goblins caught: " + monstersCaught, 32, 32); ကေတာ့.. monster နဲ႔..ထိမိတဲ့..အၾကိမ္အေရအတြက္ကုိ..ၿပန္ၿပေပးထာတာပါ..။
Are they touching က. monsterCaught ကုိ..ၿပန္ေခၚၿပီး...သံုးထားတာပါ.။
9. Game Looping
// The main game loop
var main = function () {
var now = Date.now();
var delta = now - then;
update(delta / 1000);
render();
then = now;
};
game ကုိ..အၾကိမ္အေရ..ဘယ္ေလာက္နဲ႔..ေဆာ့မယ္ဆိုတာ..အတိအက်မရွိလို႔.. Looping ပတ္ၿပီးသံုးတာပါ..။
update(delta / 1000); render(); က..ဘယ္ game မဆို..ပံုေသပါပဲ..။ Formula လာေပါ့.. :)
10. Start Game
// Let's play this game!
reset();
var then = Date.now();
setInterval(main, 1); // Execute as fast as possible
Game ကုိ..အစကေနကစားေတာ့မယ္ဆိုရင္...အရင္.ေဆာ့ၿပီးသား..အေဟာင္းေတြ..က်န္ခဲ့မွာစိုးလို႔.. reset(); ဆိုတဲ့.. function ကုိ..အရင္လွမ္းေခၚလိုက္တာပါ..။
ၿပီးရင္.. game ကုိ.. looping ပတ္ၿပီးေတာ့.. အေပၚက..အဆင့္ေတြကုိ..တစ္ဆင့္ခ်င္းလွမ္းေခၚၿပီး..အလုပ္လုပ္ပါတယ္..။
Notepad ထဲမွာ..ေရးထည့္ရမယ့္..ပံုစံက..ဒီလိုမ်ိဳးေလးပါ..။
// Create the canvas
var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");
canvas.width = 512;
canvas.height = 480;
document.body.appendChild(canvas);
// Background image
var bgReady = false;
var bgImage = new Image();
bgImage.onload = function ()
{
bgReady = true;
};
bgImage.src = "images/background.png";
// Game objects
var hero = {
speed: 256, // movement in pixels per second
x: 0,
y: 0
};
var monster = {
x: 0,
y: 0
};
var monstersCaught = 0;
// Handle keyboard controls
var keysDown = {};
addEventListener("keydown", function (e) {
keysDown[e.keyCode] = true;
}, false);
addEventListener("keyup", function (e) {
delete keysDown[e.keyCode];
}, false);
// Reset the game when the player catches a monster
var reset = function () {
hero.x = canvas.width / 2;
hero.y = canvas.height / 2;
// Throw the monster somewhere on the screen randomly
monster.x = 32 + (Math.random() * (canvas.width - 64));
monster.y = 32 + (Math.random() * (canvas.height - 64));
};
// Update game objects
var update = function (modifier) {
if (38 in keysDown) { // Player holding up
hero.y -= hero.speed * modifier;
}
if (40 in keysDown) { // Player holding down
hero.y += hero.speed * modifier;
}
if (37 in keysDown) { // Player holding left
hero.x -= hero.speed * modifier;
}
if (39 in keysDown) { // Player holding right
hero.x += hero.speed * modifier;
}
// Are they touching?
if (
hero.x <= (monster.x + 32)
&& monster.x <= (hero.x + 32)
&& hero.y <= (monster.y + 32)
&& monster.y <= (hero.y + 32)
) {
++monstersCaught;
reset();
}
};
// Draw everything
var render = function () {
if (bgReady) {
ctx.drawImage(bgImage, 0, 0);
}
if (heroReady) {
ctx.drawImage(heroImage, hero.x, hero.y);
}
if (monsterReady) {
ctx.drawImage(monsterImage, monster.x, monster.y);
}
// Score
ctx.fillStyle = "rgb(250, 250, 250)";
ctx.font = "24px Helvetica";
ctx.textAlign = "left";
ctx.textBaseline = "top";
ctx.fillText("Goblins caught: " + monstersCaught, 32, 32);
};
// The main game loop
var main = function () {
var now = Date.now();
var delta = now - then;
update(delta / 1000);
render();
then = now;
};
// Let's play this game!
reset();
var then = Date.now();
setInterval(main, 1); // Execute as fast as possible
အဲ့ဒါေတြအားလံုးကုိ.. copy ကူးၿပီး.. Game Folder ေအာက္က.. js Folder ထဲမွာ.. game.js ဆိုၿပီး.. Save လုပ္ပါမယ္.။
အားလံုးၿပီးသြားရင္.. Game Folder ထဲက.. index.html ကုိ.. double click ဖြင့္ၿပီး.. ကစားႏိုင္ပါၿပီ
ဒီေလာက္ဆိုရင္ေတာ့... game တစ္ခုရဲ႔..အေၿခံသေဘာတရားကို...နားလည္မယ္လို႔..ထင္ပါတယ္..။ online မွာလည္း..ရွာၾကည့္ၾကပါ..။ html ကိုသံုးၿပီး..ေရးထားတဲ့.. game ေတြအမ်ားၾကီးပါပဲ..။ super mario လုိမ်ိဳး.. game ကုိ..ကုိယ္တိုင္ထြင္ၾကည့္ၾကေတာ့ေပ့ါေနာ္.. ^_^
Folder ကုိ.. Game လုိ႔ေပးလိုက္ပါ..။
Game Folder ထဲမွာ.. images ဆုိတဲ့ folder တစ္ခုထပ္ေဆာက္ပါ.။ ၿပီးရင္.. Game Folder ေအာက္မွာပဲ. js ဆိုတဲ့ folder တစ္ခုထပ္ေဆာက္လုိက္ပါမယ္..။ ေအာက္က coding ေလးကုိ. copy ကူးလိုက္ပါ..။
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Simple Canvas Game</title>
</head>
<body>
<script src="js/game.js"></script>
</body>
</html>
notepad မွာ..ထည့္ၿပီး..Game Folder ေအာက္မွာ.. index.html နဲ႔ Save လုိက္ပါ..။
1. Create the canvas
// Create the canvas
var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");
canvas.width = 512;
canvas.height = 480;
document.body.appendChild(canvas);
Canvas ဆိုတာ.. Game ကုိ..ဘယ္ေလာက္ size နဲ႔ ေပၚေစခ်င္တာလညး္ဆိုၿပီး.. ေနရာေလး..သတ္မွတ္လိုက္တာပါ..။
2d နဲ႔ပဲေရးမွာမုိ႔လို႔.. canvas.getContext("2d"); ဆိုၿပီးထည့္ထားတာပါ..။
width နဲ႔ height ကုိသတ္မွတ္ေပးပါမယ္..။
2. Include images
// Background image
var bgReady = false;
var bgImage = new Image();
bgImage.onload = function () {
bgReady = true;
};
bgImage.src = "images/background.png";
အခု.. ေနာက္ခံ background ထည့္ပါမယ္..။
https://github.com/lostdecade/simple_canvas_game/blob/master/images/background.png မွာ. background ေတြ႔ပါလိမ့္မယ္..။
background ေပၚမွာ.. right click ႏွိပ္ၿပီး.. Save Image As ကုိ.ႏွိပ္လိုက္ပါ..။
ပံုကုိ.. Game Folder ေအာက္က images folder ထဲမွာ.backgroundဆုိတဲ့နာမည္နဲ႔...ထည့္လုိက္ပါ..။ bgImage.src = "images/background.png"; က.. background image ကုိ..ထည့္တဲ့ပံုစံပါ..။
3. Game objects
// Game objects
var hero = {
speed: 256, // movement in pixels per second
x: 0,
y: 0
};
var monster = {
x: 0,
y: 0
};
var monstersCaught = 0;
Game ထဲမွာပါတဲ့..အေကာင္ေတြရဲ႔ေနရာကုိ.သတ္မွတ္တာပါ..။
https://github.com/lostdecade/simple_canvas_game/blob/master/images/hero.png မွာ.. Hero ပံုကို.. Save လုပ္လိုက္ပါ..။
Game Folder ေအာက္က...images Folder ထဲမွာ. Save ပါမယ္..။
https://github.com/lostdecade/simple_canvas_game/blob/master/images/monster.png မွာ. monster ပံုကုိ.. Save လုပ္လိုက္ပါ။
Game Folder ေအာက္က...images Folder ထဲမွာ. Save ပါမယ္..။
speed: 256 က..အၿမန္ႏွဳန္းကုိ..သတ္မွတ္တာပါ..။ hero မွာပဲပါပါတယ္.။ game play လိုက္ရင္.. monster က.မေရႊ႔ဘူးေလ..။
hero ပဲ..ေရႊ႔ရမွာပါ..။ ဒါေၾကာင့္.. monster ကုိ.အၿမန္ႏွဳန္းမသတ္ေပးထားပါဘူး..။
x: 0,y: 0 ဆိုတာ. postion သတ္မွတ္တာပါ..။ အေကာင္ေလးေတြရဲ႔ position က.. တစ္ခါနဲ႔တစ္ခါ..မတူလို႔.. 0 ေပးထားတာပါ..။
var monstersCaught = 0; က.. monster ကုိ..ထိမိတဲ့အၾကိမ္အေရအတြက္ပါ..။ စစၿခင္းဆိုေတာ့. 0 ေပးထားတာပါ..။
4. Keyboard Controls
// Handle keyboard controls
var keysDown = {};
addEventListener("keydown", function (e) {
keysDown[e.keyCode] = true;
}, false);
addEventListener("keyup", function (e) {
delete keysDown[e.keyCode];
}, false);
ကစားတဲ့သူက..ေရြ႔လိုက္တဲ့ arrow key ေတြကုိ.. AddEventListener နဲ႔ဖမ္းပါတယ္..။
တကယ္လို႔.. down arrow key ကုိ..ႏွိပ္လိုက္မယ္ဆိုရင္.. keysDown ကုိ.. true ေပးလိုက္ပါတယ္..။
down arrow key ကုိ.. ႏွိပ္ေနရင္းနဲ႔.. up arrow key ကုိ..ေၿပာင္းႏွိပ္ခဲ့မယ္ဆိုရင္..Down ကုိ.. delete လုပ္တဲ့အေနနဲ႔.. delete keysDown[e.keyCode]; ဆိုၿပီး..ဖ်က္လိုက္ပါတယ္..။
5. Reset the game
// Reset the game when the player catches a monster
var reset = function () {
hero.x = canvas.width / 2;
hero.y = canvas.height / 2;
// Throw the monster somewhere on the screen randomly
monster.x = 32 + (Math.random() * (canvas.width - 64));
monster.y = 32 + (Math.random() * (canvas.height - 64));
};
game ကို...အစကေန..ၿပန္ကစားတာပါ..။
အစကေန..ၿပန္ကစားမယ္ဆိုရင္.. hero နဲ႔.. monster ကုိ..ေနရာၿပန္သတ္မွတ္ေပးမွာပါ..။
hero ကုိ..ေနရာသတ္မွတ္ဖို႔... canvas ရဲ႔.. width ကုိ..တည္ 2နဲ႔စား..။ canvas ရဲ႔.. height ကုိ..တည္ 2နဲ႔စား..။ ရတဲ့.အေၿဖအရ.. x ၀င္ရိုးနဲ႔.. y ၀င္ရိုးသတ္မွတ္ပါတယ္..။
monster ကုိေတာ့.. canvas ရဲ႔.. width ထဲက. 64 ႏွဳတ္.. random ေခါက္ၿပီး.. 32 ေပါင္းပါတယ္...။ height လည္း..တူတူပါပဲ..။
coding အားလံုး..ကူးၿပီးလို႔.. game ကစားၿပီး.. refresh လုပ္ၾကည့္ပါ...။
hero ရဲ႔ေနရာက..မေၿပာင္းပါဘူး..။
monster ကေတာ့... refresh တစ္ခါလုပ္တုိင္း..တစ္ခါေၿပာင္းသြားပါတယ္.. ။
6. Update Game Objects
// Update game objects
var update = function (modifier) {
if (38 in keysDown) { // Player holding up
hero.y -= hero.speed * modifier;
}
if (40 in keysDown) { // Player holding down
hero.y += hero.speed * modifier;
}
if (37 in keysDown) { // Player holding left
hero.x -= hero.speed * modifier;
}
if (39 in keysDown) { // Player holding right
hero.x += hero.speed * modifier;
}
ကစားတ့ဲသူက.. hero နဲ႔.. monster ကုိ.. ေပးထားတဲ့.. position ကေန..စိတ္ၾကိဳက္ေရြ႔လိုက္တဲ့.တန္ဖိုးကုိ..တြက္ခ်က္ေပးတာပါ..။
7. Touching
// Are they touching?
if (
hero.x <= (monster.x + 32)
&& monster.x <= (hero.x + 32)
&& hero.y <= (monster.y + 32)
&& monster.y <= (hero.y + 32)
) {
++monstersCaught;
reset();
}
};
hero နဲ႔.. monster နဲ႔... ထိမိသြားတယ္..ဆိုရင္.. monsterCaunght ကုိ.. 1 တိုးပါမယ္...။
game ကုိ..အစကေနၿပန္စပါတယ္..။
အဲ့ဒါေၾကာင့္.. အေပၚက reset the game function ကုိ..လွမ္းေခၚလိုက္ပါတယ္...။
8. Rendering
// Draw everything
var render = function () {
if (bgReady) {
ctx.drawImage(bgImage, 0, 0);
}
if (heroReady) {
ctx.drawImage(heroImage, hero.x, hero.y);
}
if (monsterReady) {
ctx.drawImage(monsterImage, monster.x, monster.y);
}
// Score
ctx.fillStyle = "rgb(250, 250, 250)";
ctx.font = "24px Helvetica";
ctx.textAlign = "left";
ctx.textBaseline = "top";
ctx.fillText("Goblins caught: " + monstersCaught, 32, 32);
};
rendering က.. အေပၚဆံုးက.. canvas နဲ႔. background image နဲ႔..သက္ဆုိင္ပါတယ္..။
Image ေတြကို..ဒီတိုင္းထည့္လုိ႔မရပါဘူး... ctx.drawImage(bgImage, 0, 0); ဆိုၿပီး.ထည့္ရပါတယ္..။
hero နဲ႔.. monster လည္း..ဒီအတိုင္းပါပဲ..။ သူတို႔လည္း..ပံုေတြပဲေလ..။
position က x ၀င္ရိုးနဲ႔... y ၀င္ရိုးအတိုင္းသြားမွာမုိ႔လို႔.. hero.x , hero.y , monster.x , monster.y ဆိုၿပီး..သတ္မွတ္ထားတာပါ..။
ctx.fillStyle = "rgb(250, 250, 250)"; ဆိုေတာ့... Goblins caught: စာသားက.. အၿဖဴေရာင္နဲ႔.ေပၚေနတာပါ..။
font ကုိ. " Helvetica " သံုးထားပါတယ္..။
align က. left ထားၿပီး. basealign ကုိ. top ထားထားလို႔.. Goblins caught: က ..အေပၚ..ဘယ္ဘက္မွာ..ေပၚေနတာပါ..။
ctx.fillText("Goblins caught: " + monstersCaught, 32, 32); ကေတာ့.. monster နဲ႔..ထိမိတဲ့..အၾကိမ္အေရအတြက္ကုိ..ၿပန္ၿပေပးထာတာပါ..။
Are they touching က. monsterCaught ကုိ..ၿပန္ေခၚၿပီး...သံုးထားတာပါ.။
9. Game Looping
// The main game loop
var main = function () {
var now = Date.now();
var delta = now - then;
update(delta / 1000);
render();
then = now;
};
game ကုိ..အၾကိမ္အေရ..ဘယ္ေလာက္နဲ႔..ေဆာ့မယ္ဆိုတာ..အတိအက်မရွိလို႔.. Looping ပတ္ၿပီးသံုးတာပါ..။
update(delta / 1000); render(); က..ဘယ္ game မဆို..ပံုေသပါပဲ..။ Formula လာေပါ့.. :)
10. Start Game
// Let's play this game!
reset();
var then = Date.now();
setInterval(main, 1); // Execute as fast as possible
Game ကုိ..အစကေနကစားေတာ့မယ္ဆိုရင္...အရင္.ေဆာ့ၿပီးသား..အေဟာင္းေတြ..က်န္ခဲ့မွာစိုးလို႔.. reset(); ဆိုတဲ့.. function ကုိ..အရင္လွမ္းေခၚလိုက္တာပါ..။
ၿပီးရင္.. game ကုိ.. looping ပတ္ၿပီးေတာ့.. အေပၚက..အဆင့္ေတြကုိ..တစ္ဆင့္ခ်င္းလွမ္းေခၚၿပီး..အလုပ္လုပ္ပါတယ္..။
Notepad ထဲမွာ..ေရးထည့္ရမယ့္..ပံုစံက..ဒီလိုမ်ိဳးေလးပါ..။
// Create the canvas
var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");
canvas.width = 512;
canvas.height = 480;
document.body.appendChild(canvas);
// Background image
var bgReady = false;
var bgImage = new Image();
bgImage.onload = function ()
{
bgReady = true;
};
bgImage.src = "images/background.png";
// Game objects
var hero = {
speed: 256, // movement in pixels per second
x: 0,
y: 0
};
var monster = {
x: 0,
y: 0
};
var monstersCaught = 0;
// Handle keyboard controls
var keysDown = {};
addEventListener("keydown", function (e) {
keysDown[e.keyCode] = true;
}, false);
addEventListener("keyup", function (e) {
delete keysDown[e.keyCode];
}, false);
// Reset the game when the player catches a monster
var reset = function () {
hero.x = canvas.width / 2;
hero.y = canvas.height / 2;
// Throw the monster somewhere on the screen randomly
monster.x = 32 + (Math.random() * (canvas.width - 64));
monster.y = 32 + (Math.random() * (canvas.height - 64));
};
// Update game objects
var update = function (modifier) {
if (38 in keysDown) { // Player holding up
hero.y -= hero.speed * modifier;
}
if (40 in keysDown) { // Player holding down
hero.y += hero.speed * modifier;
}
if (37 in keysDown) { // Player holding left
hero.x -= hero.speed * modifier;
}
if (39 in keysDown) { // Player holding right
hero.x += hero.speed * modifier;
}
// Are they touching?
if (
hero.x <= (monster.x + 32)
&& monster.x <= (hero.x + 32)
&& hero.y <= (monster.y + 32)
&& monster.y <= (hero.y + 32)
) {
++monstersCaught;
reset();
}
};
// Draw everything
var render = function () {
if (bgReady) {
ctx.drawImage(bgImage, 0, 0);
}
if (heroReady) {
ctx.drawImage(heroImage, hero.x, hero.y);
}
if (monsterReady) {
ctx.drawImage(monsterImage, monster.x, monster.y);
}
// Score
ctx.fillStyle = "rgb(250, 250, 250)";
ctx.font = "24px Helvetica";
ctx.textAlign = "left";
ctx.textBaseline = "top";
ctx.fillText("Goblins caught: " + monstersCaught, 32, 32);
};
// The main game loop
var main = function () {
var now = Date.now();
var delta = now - then;
update(delta / 1000);
render();
then = now;
};
// Let's play this game!
reset();
var then = Date.now();
setInterval(main, 1); // Execute as fast as possible
အဲ့ဒါေတြအားလံုးကုိ.. copy ကူးၿပီး.. Game Folder ေအာက္က.. js Folder ထဲမွာ.. game.js ဆိုၿပီး.. Save လုပ္ပါမယ္.။
အားလံုးၿပီးသြားရင္.. Game Folder ထဲက.. index.html ကုိ.. double click ဖြင့္ၿပီး.. ကစားႏိုင္ပါၿပီ
ဒီေလာက္ဆိုရင္ေတာ့... game တစ္ခုရဲ႔..အေၿခံသေဘာတရားကို...နားလည္မယ္လို႔..ထင္ပါတယ္..။ online မွာလည္း..ရွာၾကည့္ၾကပါ..။ html ကိုသံုးၿပီး..ေရးထားတဲ့.. game ေတြအမ်ားၾကီးပါပဲ..။ super mario လုိမ်ိဳး.. game ကုိ..ကုိယ္တိုင္ထြင္ၾကည့္ၾကေတာ့ေပ့ါေနာ္.. ^_^
GMail ထဲတြင္ ေပးပို႔သူရဲ႕ IP address ကိုရွာေဖြျခင္း
IP address ရဲ႕ အေရးပါပံုကို အနည္းနဲ႔ အမ်ားေတာ့ သိေလာက္မယ္ထင္ပါတယ္...။ ဒီ post မွာေတာ့ Gmail နဲ႔ Yahoo Mail ထဲမွာ ကိုယ့္ကို Mail ပို႔လိုက္တဲ႔ သူရဲ႕ IP address ကို ရွာေဖြတဲ႔ နည္းေလးပါ။
GMail ထဲတြင္ ေပးပို႔သူရဲ႕ IP address ကိုရွာေဖြျခင္း
၁။ log in လုပ္
၂။ Mail ဖြင့္ ( ကိုယ္သိခ်င္တဲ႔ Mail ကိုေျပာတာပါ ။ )
၃။ header ရဲ႕ ညာဘက္ေထာင့္ options ထဲမွာ ရွိတဲ႔ Show Original ကို click လိုက္ (ေအာက္မွာျပထားတဲ႔ ပံုထဲက အတိုင္းေပါ့ )

၄။ အဲဒါကို click ျပီးသြားရင္ new tab နဲ႔ page တစ္ခုပြင့္လာပါလိမ့္မယ္။ အဲဒီထဲမွာ hostname တခ်ိဳ႕ နဲ႔အတူ [...] ထဲက နံပါတ္ေတြကေတာ့ ဒီေမးလ္ကို ေပးပို႔လိုက္တဲ႔ သူရဲ႕ IP ျဖစ္ပါတယ္...။ ေအာက္မွာျပထားတဲ႔ ပံုစံေလးေတြအတိုင္းေတြ႔ရနိုင္ပါတယ္...။
Received: from gateway15.websitewelcome.com (gateway15.websitewelcome.com [65.119.112.245])
client-ip=65.119.112.245;
65.119.112.245 က ေပးပို႔သူရဲ႕ IP address ျဖစ္ပါတယ္။ ပို႔လိုက္တဲ႔သူရဲ႕ IP address Track ပါ။
Calculator လုပ္မယ္
ေအာက္ တြင္ေဖၚျပေပးထားတဲ့ .bat code ေလးေတြကို Notepad ထဲ ကူးယူပီးေတာ့ .bat နဲ့ Save လိုက္ပါ...
code:>>>
@ECHO OFF
color f4
title CALCULATOR
ECHO Calculator Version 1
ECHO CREATED BY CHIT TEE
ECHO -----------------------------------------------
ECHO * = MULTIPLY
ECHO + = ADD
ECHO - = SUBTRACT
ECHO -----------------------------------------------
pause
:loop
echo.
echo -----------------------------------------------
SET /p UDefine=
SET /a UDefine=%UDefine%
ECHO =
ECHO %UDefine%
ECHO.
goto loop
ၿပီးရင္ေတာ့ သူ႕ကို ဖြင့္ၿပီးေတာ့ တြက္ခ်က္ၾကေတာ့ ဟီးးး
ECHO Calculator Version 1
ECHO CREATED BY CHIT TEE
ECHO ------------------------------
ECHO * = MULTIPLY
ECHO + = ADD
ECHO - = SUBTRACT
ECHO ------------------------------
pause
:loop
echo.
echo ------------------------------
SET /p UDefine=
SET /a UDefine=%UDefine%
ECHO =
ECHO %UDefine%
ECHO.
goto loop
ၿပီးရင္ေတာ့ သူ႕ကို ဖြင့္ၿပီးေတာ့ တြက္ခ်က္ၾကေတာ့ ဟီးးး
C Programmer ေလ့လာၾကမယ္ အပိုင္း-၁
က်ေနာ္လို C Programmer ကို ေလ့လာျခင္းေနတဲ့ ျပည္တြင္း ျပည္ပမွ မိတ္ေဆြသူငယ္ခ်င္းမ်ား အလြယ္တကူ အဆင္ေျပစြာ ေလ့လာႏိုင္ရန္ က်ေနာ္စတင္ေလ့လာေနတဲ့ C Programmer စာအုပ္မွ ျပန္လည္ မွ်ေဝေပး လိုက္ပါသည္။
Stucture of a C Program
C probram ဆိုတာ function ေတြနဲ႕ တည္ေဆာက္ထားတဲ့ Programအစုပါပဲ။ ဒီအစုထဲမွာ Function တစ္ခု သို႕မဟုတ္ တစ္ခုထက္ပိုၿပီး ပါႏိုင္ပါတယ္။အနည္းဆံုးတစ္ခုေတာ့ ပါကိုပါရမွာပါ။အဲဒီ မပါမျဖစ္ပါရမယ္function ကို main လို႕ေခၚပါတယ္။ mainရဲ႕ သေဘာကေတာ့ C Program တစ္ခုကို runလိုက္မယ္ဆိုလို႕ရွိရင္ mainကို ကနဦးထားၿပီး အလုပ္စလုပ္ရတယ္ေလ။ၿပီးေတာ့မွ သူထဲမွာ ေရးထားတဲ့ intstruction ေတြကိုၾကည့္ၿပီး တစ္ျခာ Function ေတြဆီ သြားလို႕ရတာကိုး။ဒါေၾကာင့္မို႕လို႕ mainဟာ C Prongram ရဲ႕အဓိက ေက်ာရိုးလို႕ေျပာရင္ မမွားပါဘူး။ေကာင္းၿပီး၊ကၽြန္ေတာ္တို႕ C Programming ကို အလြယ္ဆံုးနဲ႕ အျမန္ဆံုးသိျခင္းပါတယ္။
Stucture of a C Program
C probram ဆိုတာ function ေတြနဲ႕ တည္ေဆာက္ထားတဲ့ Programအစုပါပဲ။ ဒီအစုထဲမွာ Function တစ္ခု သို႕မဟုတ္ တစ္ခုထက္ပိုၿပီး ပါႏိုင္ပါတယ္။အနည္းဆံုးတစ္ခုေတာ့ ပါကိုပါရမွာပါ။အဲဒီ မပါမျဖစ္ပါရမယ္function ကို main လို႕ေခၚပါတယ္။ mainရဲ႕ သေဘာကေတာ့ C Program တစ္ခုကို runလိုက္မယ္ဆိုလို႕ရွိရင္ mainကို ကနဦးထားၿပီး အလုပ္စလုပ္ရတယ္ေလ။ၿပီးေတာ့မွ သူထဲမွာ ေရးထားတဲ့ intstruction ေတြကိုၾကည့္ၿပီး တစ္ျခာ Function ေတြဆီ သြားလို႕ရတာကိုး။ဒါေၾကာင့္မို႕လို႕ mainဟာ C Prongram ရဲ႕အဓိက ေက်ာရိုးလို႕ေျပာရင္ မမွားပါဘူး။ေကာင္းၿပီး၊ကၽြန္ေတာ္တို႕ C Programming ကို အလြယ္ဆံုးနဲ႕ အျမန္ဆံုးသိျခင္းပါတယ္။
ရမလာ ရပါတယ္ ။လြယ္တာကို အရင္ေျပာရင္ မလြယ္စရာမရွိပါဘူး။အလြယ္ဆံုးသခၤ်ာပုစၧာေလးတစ္ပုဒ္ကို
C language နဲ႕ ေရးၾကည့္မယ္ေလ၊ program ကေတာ့ စက္ဝိုင္းတစ္ခုရဲ႕ ဧရိယာကိုရွာတဲ့ Program ပါပဲ။
C language နဲ႕ ေရးၾကည့္မယ္ေလ၊ program ကေတာ့ စက္ဝိုင္းတစ္ခုရဲ႕ ဧရိယာကိုရွာတဲ့ Program ပါပဲ။
EXAMPLE 1.1 This C Program reads the radius of a cirxle, calculates its area and then display the calculated result on the screen.
#inciude<stdio.h>
/*program to calculate the area of a circle*/
main()
{
float radius, area
printf ("Enter the radius:");
scanf ("%f",&radius);
area=3.141593*radius*radius;
printf ('Area=%f",area);
ဒီ program ကို run လိုက္မယ္ဆိုလို႕ရွိရင္ computer မွာ အခုလိုေပၚလာမွာပါ။
Enter the radius;_5
Area# 78.539825
(5)ဂဏာန္ကို မ်ဥ္းတားထားတဲ့ အဓိပၸာယ္ကေတာ့ ဒီ data ကုိက်ေနာ္တို႕ ကိုယ္တိုင္း keyboardကေန ရိုက္ထည့္ေပးရမယ္လို႕ ဆိုလိုပါတယ္။မ်ဥ္းတားထားတာကို ေတြ႕ရင္ input data ေတြလို႕မွတ္လိုက္ ပါ ။ ထြက္လို႕ခ်က္လို႕ ရတဲ့အေျဖေတြဆိုရင္ မ်ဥ္းမတားပါဘူး၊ ရွင္းပါတယ္ေနာ္။
ေကာင္းၿပီး EXAMPLE 1.1က C Porgram ကို တစ္ေၾကာင္းခ်င္းအဓိပၸာယ္ ေဖာ္ၾကည့္ရေအာင္။
၁။ C Progam ကို ေရးတဲ့အခါမွာ အမ်ားအားျဖင့္ စာလံုးအေသး (Lowercase letter ) နဲ႕ပဲ ေရးေလ့ရွိပါတယ္။
C Programmer ေတြရဲ႕ စတိုင္းပဲေခၚမလာ မသိဘူး။စာလံုးအႀကီးေတြနဲ႕ ေရးလည္ရေတာ့ရတာပါပဲ။ဒါေပမယ့္ တစ္ခုသတိထားရမွာက C language မွာ Lowercase letter နဲ႕ Uppercase letterတို႕ဟာ အဓိပၸာယ္မတူဘူးေနာ္။
ဘာျပဳလို႕လဲဆိုေတာ့ AUNG.Aung aungဆိုတာေတြဟာ အမ်ဳိးမတူတဲ့ variable nameေတြပါပဲ။ အသံုးျပဳတဲ့ အခါမွာ သတိထားဖို႕ လိုပါတယ္။လိုင္းနံပါတ္(၁)မွာ stdio.h ဆိုတဲ့ header ဖိုင္တစ္ခုပါပါတယ္။
အခု ပုစၧာ မွာ သူမပါလည္ progaram က runပါတယ္။
၂။လိုင္နံပါတ္(၂)မွာ ေရးထားတဲ့ statement ကေတာ့ C programရဲ႕ ရည္ရြယ္ခ်က္ကို သိေအာင္ေတးမွတ္ထားတဲ့ မွတ္ခ်က္တစ္ခုပါပဲ။commentလို႕လည္း ေခၚပါတယ္။ ဒီစာေတြကို ဒီသေကၤတႏွစ္ခု /* */နဲ႕ ေရွ႕ေနာက္ ပိတ္ထားမယ္ဆိုလို႕ရွိရင္ computer ကမွတ္ခ်က္မွန္းသိသြားပါၿပီး။ C program ကိုrun တဲ့အခါမွာ ဒီစာေၾကာင္းေတြ ကို ေက်ာ္သြားပါလိမ့္မယ္။BASIC language က REM နဲ႕သေဘာအတူတူပါပဲ။
၃။ လိုင္းနံပါတ္ (၃) ကေတာ့ main ဆိုတဲ့ function ကိုေရးထားတာပါ။mainေနာက္မွာ ဗလာျဖစ္ေနတဲ့ ကြင္းႏွစ္ခု ရဲ႕ အဓိပၸာယ္ဟာဆိုရင္ဒီ function အတြက္ argument(ျငင္ခံုခ်က္) မရွိဘူးလို႕ဆိုလိုပါတယ္။
၄။ လိုင္းနံပါတ္ (၄)မွာ brace ဆိုတဲ့ သေကၤတတစ္ခု { ကိုေရးထားပါတယ္။ open braceရဲ႕ အဓိပၸာယ္ကေတာ့ main program စၿပီးလို႕ ေျပာလိုက္တာပါပဲ။
၅။ လိုင္းနံပါတ္ (၅)က်ေတာ့ C program မွာ အသံုးျပဳမယ့္ varible ေတြရဲ႕ typeကို declare လုပ္ေပးတာျဖစ္ပါ တယ္။type declaration section လို႕ မွတ္ထားလိုက္ပါ။ radius နဲ႕ areaတို႕ဟာဆိုရင္ ဒႆမကိန္ အမ်ဳိး အစားေတြ (floating-point number) လို႕ေၾကာ္ညာလိုက္တာပဲ ျဖစ္ပါတယ္။
၆။ လိုင္းနံပါတ္(၆) က်ေတာ့ printf ဆိုတဲ့ commmand ကို အသံုးျပဳၿပီး computer screen မွာ Enter the radius ဆိုတဲ့ message ေပၚလာေအာင္ လုပ္ခိုင္းတာပါ။အဲလို လုပ္တာကို computer စကားနဲ႕ေျပာမယ္ရွိရင္ information ကို prompt လုပ္ခိုင္းတယ္လို႕ ေခၚပါတယ္။
၇။ လုိင္းနံပါတ္(၇) မွာက်ေတာ့ scanf ဆိုတဲ့ command ကို သံုးထားတာေၾကာင့္ radiusအတြက္ data ကို keyborad ကေန က်ေနာ္တို႕ရိုက္ထည့္ေပးရမွာျဖစ္ပါတယ္။
၈။ လိုင္းနံပါတ္(၈) ကေတာ့ assignment statemant ပါ။ area ရဲ႕တန္ဖိုးကို ပံုေသနည္းသံုးၿပီး ရွာလိုက္တာပါပဲ။ ဒီ statemant ကို execute(ေဆာင္ရြက္) လုပ္ၿပီးတာနဲ႕ area ရဲ႕တန္ဖိုးဟာ စက္ထဲမွာ အေျဖရေနပါၿပီ။
၉။အခုဆိုရင္ radius နဲ႕area တို႕ရဲ႕ တန္ဖိုးေတြကို computerက သိေနၿပီေလ။ဒါေပမယ့္ က်ေနာ္တို႕က ဒီအေျဖကို မေတာင္းဘဲနဲ႕ computerကအလိုက္သိသိ၊သေဘာေကာင္းစြာနဲ႕ အေျဖထုတ္ေပးမွာ မဟုတ္ ပါဘူး ။ေတာင္းပံုေတာင္းနည္း က လို္င္နံပါတ္ (၉)မွာ ျပထားတဲ့ အတိုင္း printf command ကို သံုးၿပီးေတာင္း၇ပါတယ္။ အဲဒီအခါက်မွ computer screen ေပၚမွာ Area=78.539825 လို႕ ေပၚလာမွာပါ။
၁၀။ က်ေနာ္တို႕ေရးထားတဲ့ C programဟာ ဒီမွာတင္ ဆံုးခန္းတိုင္သြားပါၿပီး။အဲဒါ computer ကိုအသိေပးဖို႕ အတြက္ ေနာက္ဆံုး statement မွာ closing barce } သေကၤတနဲ႕ ပိတ္ေပးလိုက္ပါ။အခုမွ program တကယ္ ၿပီး သြားပါၿပီ။ C program ဆိုတာ ဒါပါပဲ ။ဒါနဲ႕ က်ေနာ္ တစ္ခုအသိေပးဖို႕ က်န္သြားပါတယ္။ ဘာလဲဆိုေတာ့ C program statemant ေတြကို ေရးၿပီးတိုင္း statemant တစ္ခုဆံုးသြားရင္ semicolon(;) သေကၤတနဲ႕ အဆံုးသတ္ေပးဖို႕ မေမ့ပါနဲ႕။ အဲဒါ က်န္သြားရင္ေတာ့ computer က အားႀကီး စိတ္ဆိုးၿပီး အမွားေပးပါလိမ့္မယ္။
၁.၂ C Character Set
C program ဆိုတာ အဓိကအားျဖင့္ေတာ့ constant ၊ variable ၊ expression(ေဖာ္ျပခ်က္) ဆိုတဲ့ item (၁)မ်ဳိးနဲ႕ ဖြဲ႕စည္းထားတာပါ။ ဒီဥစၥာေတြကို ေဖာ္ျပဖို႕အတြက္ C မွာ chararcter set ေတြရွိပါတယ္။
A ကေန Z အထိ uppercase letter ေတြ၊ a ကေန z အထိ lowercase lettter ေတြ၊ သုညကေန ၉ အထိ ဂဏာန္းအကၡရာေတြနဲ႕ အတူတူ special character ေတြလည္း မ်ဳိးစံုပါပဲ။အဲဒီ special character ေတြ ကို ေအာက္ေဖာ္ျပထားပါတယ္။ေလ့လာၾကည့္ပါ။
! * + \ " <
# ( = | { >
% ) ; , } /
ဆက္လက္ေဖာ္ျပပါမည္
ဘာျပဳလို႕လဲဆိုေတာ့ AUNG.Aung aungဆိုတာေတြဟာ အမ်ဳိးမတူတဲ့ variable nameေတြပါပဲ။ အသံုးျပဳတဲ့ အခါမွာ သတိထားဖို႕ လိုပါတယ္။လိုင္းနံပါတ္(၁)မွာ stdio.h ဆိုတဲ့ header ဖိုင္တစ္ခုပါပါတယ္။
အခု ပုစၧာ မွာ သူမပါလည္ progaram က runပါတယ္။
၂။လိုင္နံပါတ္(၂)မွာ ေရးထားတဲ့ statement ကေတာ့ C programရဲ႕ ရည္ရြယ္ခ်က္ကို သိေအာင္ေတးမွတ္ထားတဲ့ မွတ္ခ်က္တစ္ခုပါပဲ။commentလို႕လည္း ေခၚပါတယ္။ ဒီစာေတြကို ဒီသေကၤတႏွစ္ခု /* */နဲ႕ ေရွ႕ေနာက္ ပိတ္ထားမယ္ဆိုလို႕ရွိရင္ computer ကမွတ္ခ်က္မွန္းသိသြားပါၿပီး။ C program ကိုrun တဲ့အခါမွာ ဒီစာေၾကာင္းေတြ ကို ေက်ာ္သြားပါလိမ့္မယ္။BASIC language က REM နဲ႕သေဘာအတူတူပါပဲ။
၃။ လိုင္းနံပါတ္ (၃) ကေတာ့ main ဆိုတဲ့ function ကိုေရးထားတာပါ။mainေနာက္မွာ ဗလာျဖစ္ေနတဲ့ ကြင္းႏွစ္ခု ရဲ႕ အဓိပၸာယ္ဟာဆိုရင္ဒီ function အတြက္ argument(ျငင္ခံုခ်က္) မရွိဘူးလို႕ဆိုလိုပါတယ္။
၄။ လိုင္းနံပါတ္ (၄)မွာ brace ဆိုတဲ့ သေကၤတတစ္ခု { ကိုေရးထားပါတယ္။ open braceရဲ႕ အဓိပၸာယ္ကေတာ့ main program စၿပီးလို႕ ေျပာလိုက္တာပါပဲ။
၅။ လိုင္းနံပါတ္ (၅)က်ေတာ့ C program မွာ အသံုးျပဳမယ့္ varible ေတြရဲ႕ typeကို declare လုပ္ေပးတာျဖစ္ပါ တယ္။type declaration section လို႕ မွတ္ထားလိုက္ပါ။ radius နဲ႕ areaတို႕ဟာဆိုရင္ ဒႆမကိန္ အမ်ဳိး အစားေတြ (floating-point number) လို႕ေၾကာ္ညာလိုက္တာပဲ ျဖစ္ပါတယ္။
၆။ လိုင္းနံပါတ္(၆) က်ေတာ့ printf ဆိုတဲ့ commmand ကို အသံုးျပဳၿပီး computer screen မွာ Enter the radius ဆိုတဲ့ message ေပၚလာေအာင္ လုပ္ခိုင္းတာပါ။အဲလို လုပ္တာကို computer စကားနဲ႕ေျပာမယ္ရွိရင္ information ကို prompt လုပ္ခိုင္းတယ္လို႕ ေခၚပါတယ္။
၇။ လုိင္းနံပါတ္(၇) မွာက်ေတာ့ scanf ဆိုတဲ့ command ကို သံုးထားတာေၾကာင့္ radiusအတြက္ data ကို keyborad ကေန က်ေနာ္တို႕ရိုက္ထည့္ေပးရမွာျဖစ္ပါတယ္။
၈။ လိုင္းနံပါတ္(၈) ကေတာ့ assignment statemant ပါ။ area ရဲ႕တန္ဖိုးကို ပံုေသနည္းသံုးၿပီး ရွာလိုက္တာပါပဲ။ ဒီ statemant ကို execute(ေဆာင္ရြက္) လုပ္ၿပီးတာနဲ႕ area ရဲ႕တန္ဖိုးဟာ စက္ထဲမွာ အေျဖရေနပါၿပီ။
၉။အခုဆိုရင္ radius နဲ႕area တို႕ရဲ႕ တန္ဖိုးေတြကို computerက သိေနၿပီေလ။ဒါေပမယ့္ က်ေနာ္တို႕က ဒီအေျဖကို မေတာင္းဘဲနဲ႕ computerကအလိုက္သိသိ၊သေဘာေကာင္းစြာနဲ႕ အေျဖထုတ္ေပးမွာ မဟုတ္ ပါဘူး ။ေတာင္းပံုေတာင္းနည္း က လို္င္နံပါတ္ (၉)မွာ ျပထားတဲ့ အတိုင္း printf command ကို သံုးၿပီးေတာင္း၇ပါတယ္။ အဲဒီအခါက်မွ computer screen ေပၚမွာ Area=78.539825 လို႕ ေပၚလာမွာပါ။
၁၀။ က်ေနာ္တို႕ေရးထားတဲ့ C programဟာ ဒီမွာတင္ ဆံုးခန္းတိုင္သြားပါၿပီး။အဲဒါ computer ကိုအသိေပးဖို႕ အတြက္ ေနာက္ဆံုး statement မွာ closing barce } သေကၤတနဲ႕ ပိတ္ေပးလိုက္ပါ။အခုမွ program တကယ္ ၿပီး သြားပါၿပီ။ C program ဆိုတာ ဒါပါပဲ ။ဒါနဲ႕ က်ေနာ္ တစ္ခုအသိေပးဖို႕ က်န္သြားပါတယ္။ ဘာလဲဆိုေတာ့ C program statemant ေတြကို ေရးၿပီးတိုင္း statemant တစ္ခုဆံုးသြားရင္ semicolon(;) သေကၤတနဲ႕ အဆံုးသတ္ေပးဖို႕ မေမ့ပါနဲ႕။ အဲဒါ က်န္သြားရင္ေတာ့ computer က အားႀကီး စိတ္ဆိုးၿပီး အမွားေပးပါလိမ့္မယ္။
၁.၂ C Character Set
C program ဆိုတာ အဓိကအားျဖင့္ေတာ့ constant ၊ variable ၊ expression(ေဖာ္ျပခ်က္) ဆိုတဲ့ item (၁)မ်ဳိးနဲ႕ ဖြဲ႕စည္းထားတာပါ။ ဒီဥစၥာေတြကို ေဖာ္ျပဖို႕အတြက္ C မွာ chararcter set ေတြရွိပါတယ္။
A ကေန Z အထိ uppercase letter ေတြ၊ a ကေန z အထိ lowercase lettter ေတြ၊ သုညကေန ၉ အထိ ဂဏာန္းအကၡရာေတြနဲ႕ အတူတူ special character ေတြလည္း မ်ဳိးစံုပါပဲ။အဲဒီ special character ေတြ ကို ေအာက္ေဖာ္ျပထားပါတယ္။ေလ့လာၾကည့္ပါ။
! * + \ " <
# ( = | { >
% ) ; , } /
ဆက္လက္ေဖာ္ျပပါမည္
Java Programming Lesson – 2 [Hello World]
Write the ‘Hello
World’ program
ကဲ
ဒီေန႕ေတာ့ Program စေရးရေအာင္မေန႕က ဘာေတြေျပာသြားသလဲဆုိေတာ့ Java Program
Structure ေလးေတြကိုေရးျပသြားတယ္ေနာ္ အဲမွာမွ Java Run ရင္သုံးတဲ့ JVM
ဆိုတာလည္းေျပာသြား တယ္ေနာ္ .. ကဲကဲ.. ဒီေန႕ေတာ့ Paratical
ပိုင္းလည္းပါလာပီဗ်ိဳ႕..
ကဲ မစခင္..
လိုတာေလးကိုေျပာမယ္… Java က JVM Platform ေပၚမွာ Run တာပါ. ပီးေတာ့ Java ကသူ႕ကိုပိုင္
Own Compiler နဲ႕လုပ္တာခင္ည.. ပီးေတာ့ Java ကို Class File ေျပာင္းပီးတဲ့အခါ Line
by line Java interpreter နဲ႕လုပ္တယ္( အဲေတာ့သူလည္းလုိပါတယ္ ).. ကဲ ဒီလိုမ်ိဳးဟိုတစ္
ဒီတစ္စေလးေတြကို Tools လို႕ေခၚပါတယ္.. ကဲဒီေတာ့ ကၽြန္ေတာ္တို႕ တစ္ခုခ်င္းစီလိုက္ရွာ
ၾကမလား.. ငိငိ. မလိုပါဘူး အဲတာေတြ အကုန္ပါတဲ့ Insall လုပ္လိုက္ရင္ ပီးပါတယ္ခင္ည..
JDK လို႕ေခၚပါတယ္.. Java Development Kids တဲ့
ကဲ မစခင္..
Intro ေလးထပ္၀င္မယ္ေနာ္ မခက္ပါဘူးဗ်… Software
Development ကိုျမန္ေအာင္ Programmer ေတြက IDE ေတြကိုသုံးပီး Develop လုပ္ၾကပါတယ္..
ကၽြန္ေတာ္ကေတာ့ ဟိုး Basic ကေန စပီးသင္ေပးခ်င္ပါတယ္.. IDE မသုံးပဲ.. Compiler ကိုေခၚတာ..
Run တာကအစေပါ့.. Java မွာ Core လို႕ေခၚတဲ့ Command Prompt ကေန Run ရေအာင္ :P
Compiler
ကိုေခၚသုံးတဲ့ Comment က javac Vodakar.java
Run မယ္ဆုိရင္
Java Vodakar (သူက Compile လုပ္လို႕ထြက္လာတဲ့ Class ကို Run တာပါ )
ကဲ စပီေနာ္..
ဖိုက္တင္း…
Requirements
ပထမဆုံး
Desktop မွာ.. JavaLesson ဆုိတဲ့ Folder အသစ္ေဆာက္ေပါ့ (Space မပါေစနဲ႕ေနာ္)
ပီးရင္ ေဒါင္းလို႕ရလာတဲ့
JDK ေလးကို Install လုပ္ေပးပါ. ကၽြန္ေတာ္က JDK Version 6.0 ကိုသုံးပီးသင္မွာပါ.
Version ေတြ အမ်ားၾကီးရိွတယ္ေနာ္… အားရင္ Google ကေနရွာဖတ္ေပါ့.. မခက္ပါဘူးးးး
ကဲဒါေတြက
စတင္ေရးေတာ့ မယ္ အခါ ၾကိဳတင္ျပင္ဆင္ရတာေပါ့ :P ေအာ္ ေရးပီးတိုင္းမွာ.. ခုနက JavaLesson
ဆုိတဲ့ Folder ေအာက္မွာသိမ္းေနာ္..
Start the Java Code
ကဲစေရးပီ..
Notepad ဖြင့္လိုက္ပါ..
ေအာက္က ကုဒ္ကိုလုိက္ကူးေပေတာ့
ပီးရင္ တစ္ေၾကာင္းခ်င္းစီ ဘာက ဘာလုပ္တယ္ဆုိတာရွင္းျပမယ္ :)
public class HelloWorld{
public static void main(String []args){
System.out.println(“Hello World”);
}
}
ကဲ ေရးပီးသြားရင္..
HelloWorld.java နဲ႕ Save ပါ ကိုယ္ၾကိဳက္တဲ့ နာမည္နဲ႕ Save လို႕မရဘူးေနာ္
ကဲရွင္းပီးး
ဒီ Program က ဘာလုပ္တဲ့ ေကာင္လဲဆုိတာ အရင္ေျပာပါ့မယ္… သူက Monitor မွာ Hello World
ဆိုတဲ့ စကားစုေလးကို ေဖၚျပေပးမယ့္ေကာင္ျဖစ္ပါတယ္. ဒီ Program ေလးမွာ စုစုေပါင္း
Statement 5 ေၾကာင္းပါ ပါတယ္.
ပထမဆုံး
Statement ျဖစ္တဲ့
public class HelloWorld{
သူက ေတာ့
မေန႕ကေျပာခဲ့ပါတယ္ မွတ္မိေသးမယ္ထင္ပါရဲ႕ Java Program တစ္ပုဒ္မွာ အနည္းဆုံး Class တစ္ခုရိွရပါမယ္ဆိုတာေလ..
ေအာ္ေမ့ေတာ့မလို႕ အေရးၾကီးတယ္ေနာ္ Programming language တိုင္းက သတ္မွတ္ထားတဲ့ Key
word ေတြနဲ႕အလုပ္လုပ္ပါတယ္.. ဥပမာ ဗ်ာ.. ဖုန္းေတြမွာပါတဲ့ Voice Dialer ေတြလိုေပါ့.
ကိုယ္က Open Calendar လို႕ေျပာလိုက္ရင္ Programer က Open ဆိုတာကို Key word လို႕သတ္မွတ္ထားတာပါ..
Open ေနာက္က ကပ္လိုက္လာတဲ့ စကားလုံးကို ဖြင့္ရမယ့္ Program ( တစ္နည္းအားျဖင့္
Value ေပ့ါ ) အဲလိုသတ္မွတ္ပါတယ္.
ခုလည္းအဲလိုပဲ
ဒီ Statement မွာ Key word ေတြပါပါတယ္. မပါမျဖစ္ပါ.. ေနာက္ပိုင္းသိလာပါလိမ့္မယ္ ဘယ္ဟာက
Key word ဘယ္ဟာက Value .. ဆုိပီးေပါ့
ကဲဒီမွာ
Keyword ေတြက public, class, ေတြျဖစ္တယ္… ဘာလုပ္တာလဲဆုိရင္ public ဆိုတာ မည္သူကိုမဆုိ
ဒီ Class ယူသုံးပို္င္ခြင့္ရိွတယ္လို႕ေျပာတာ. class ဆိုတာကဒီ ေကာင္က Class လို႕ေျပာတာ..
* HelloWorld
ဆိုတာ. သူက Class Name ေပါ့. သတိျပဳရမွာက Save ရင္ ClassName.java နဲ႕ Save ရပါတယ္. *
ကဲဒုတိယ
Statement ေလးကို ဆက္လိုက္ရေအာင္..
ေသခ်ာေလးဖတ္ေပးေစခ်င္ပါတယ္
ေနာက္ပိုင္းဆုိ Logic ေလာက္ပဲေျပာျပေတာ့မွာေလ တစ္ေၾကာင္းခ်င္းလိုက္မရွင္းေတာ့ဘူး..
J
public static void
main(String []args){
သူက ေတာ့
Main Method ေလးပါ.. မေန႕ကေျပာတယ္ေနာ္ Java မွာ စ Run တာနဲ႕ Main method ထဲက
Statement ကိုစ run တယ္ဆုိတာကိုေလ.. :P မသိရင္ျပန္ဖတ္ေနာ္.. ေက်ာ္မသြားနဲ႕.. မခက္ဘူးေနာ္…
မရွင္းရင္ေမးေနာ္. သူကေတာ့ပုံေသပဲ Main method လို႕ေျပာလိုက္တာနဲ႕ အျမဲဒီပုံပဲေရးတယ္….
အဲမွာ Key word ေတြက အကုန္နီးပါးပဲ.. အဲတာ အေသက်က္ထားေနာ္ Java Main Method ဆိုတာ
:P Method တိုင္းဟာ Class ထဲမွာပဲရိွပါတယ္ ..
ကဲတတိယ
အေၾကာင္းးး
System.out.println(“Hello
World”);
သူကေတာ့
Main method ထဲက Statement ပါ.. ဘာလုပ္တာလဲဆိုေတာ့ Monitor ေပၚ Out put ထုတ္တာေပါ့..
ေနာက္ပိုင္းက်ရင္ ဘာလို႕လဲဆုိတာနားလည္မွာပါ.. ရွင္းထားတာေလးေတြပီးရင္. ကိုယ့္ဟာကို
Run ၾကည့္ေနာ္.. ေပ်ာ္သြားလိမ့္မယ္ :P “Hello World ” ဆိုတာက ေပၚခ်င္တဲ့စာသားပါ.. အဲမွာ
“VoDa Kar” ဆုိ အေနာ့္နာမည္ေပါ့. ေပၚပါလိမ့္မယ္. :P
ကဲ 4 ေၾကာင္းေျမာက္..
}
မေန႕က ကၽြန္ေတာ္ေျပာခဲ့တယ္ေလ
Brace ဆိုတဲ့အေၾကာင္း “{}” ဆိုတာေလးေတြကိုသုံးတယ္ဆုိတဲအေၾကာင္း.. ေလ.. Brace တိုင္းမွာ
အဖြင့္ရိွရင္ အပိတ္၇ိွပါတယ္.. ခုဟာက Main method ရဲ႕ အပိတ္ေပါ့..
ငါးေၾကာင္းေျမာက္က
Class ရဲ႕ အပိတ္ေပါ့… J
ကဲရွင္းတာပီးပီေနာ္…
:P
Run the java in the core :P
ကဲဘာမွ မပူနဲ႕
အေနာ္ ပုံေလးေတြနဲ႕ရွင္းေပးမယ္.. ပထမဆုံး Run box ကေန Cmd လို႕ရိုက္ပီး Core ေလးကိုေခၚလိုက္ပါ..
ကဲ Box မည္းမည္းၾကီးေပၚလာပါလိမ့္မယ္. :P ပုံကိုၾကည့္ ေလ..
ပုံမွန္ဆို
javac, တုိ႕ java တုိ႕လို႕ ေခၚရင္မရပါဘူး.. သူတို႕က JDK ထဲမွာပါတာပါ အေနာ္တုိ႕ cmd
ကေန Path လမ္းေၾကာင္းေပးဖို႕လိုပါတယ္..
Path က
..ဥပမာ ခင္ညားစက္က
C: မွာ
Windows တင္ထားရင္ C:\Program Files\Java\jre1.6.0\bin
D: မွာတင္ထားရင္
D:\Program Files\Java\jre1.6.0\bin ေပါ့. Core မွာေပးမွာျဖစ္လို႕ ဒီလိုေလးေပး
Path=C:\Program
Files\Java\jre1.6.0\bin (ေအာက္ကပုံကိုၾကည့္ )
ပီးရင္ ခင္ညားးး
ရဲ႕Desktop ေပၚက JavaLesson ဆိုတဲ့ Folder ကိုေရာက္ေအာင္သြားပါ ..
မသြားတတ္သူမ်ားအတြက္
cd desktop/JavaLesson လို႕ရိုက္လို္က္ (အေနာ္သင္တာ Java ေနာ္ ေနာက္ခါ ဒါမသင္ေပးဘူး
ဒါပဲ ) ….
ပီးရင္..
ေအာက္ကပုံ အတုိင္းပဲ javac HelloWorld.java လို႕ရိုက္အေနာ္ကေတာ့.. LoopJava လို႕ေပးထားတယ္
အဲတာေၾကာင့္ ပုံမွာအာ့လိုျဖစ္ေနတာ. ခင္ဗ်ားတုိ႕က
javac HelloWorld.java လို႕ေပးရမွာေနာ္ :P
တကယ္လို႕သာ
Error ကင္းမယ္ဆုိရင္ (ကင္းမွာပါ.. Copy paste ပဲဟာကို) :P ခင္ညားတို႕ Folder ထဲမွာ
HelloWorld.class ဆိုတာေလးေရာက္ေနလိမ့္မယ္.. အဲဒီမွာ Java ဆိုတာက Compiler ကိုအသိေပးပီး
Compile လုပ္လိုက္တာ.. Run ရမွာက အဲ Class ကို..
Run မယ္ဆုိ
ရင္ java HelloWorld လုိ႔ရိုက္… အေနာ္ကေတာ့ LoopJava ျဖစ္လို႕ ဒီလိုပဲရိုက္တယ္…
:P ခင္ညားတုိ႕ရိုက္ရမွာက javac HelloWorld ေနာ္
ကဲ အေနာ့္
ရဲ႕ Class ဖိုင္လို ခ်င္တယ္ဆုိဒီကေဒါင္းး LoopJava ကို :P
ေဒါင္းပီးရင္
အဲေကာင္ကို Run ခ်င္ရင္ java LoopJava လို႕ရိုက္ :P (Javac ဆိုတဲ့အဆင့္မလုိေတာ့ဘူးေပါ့ဗ်ာ)
ေအာင္ျမင္ၾကပါေစ.
Error တက္ရင္တက္ပါလိမ့္မယ္.. တက္တာေလးကို ဒီမွာ လာမန္႕ခဲ့ပါ.. ဘယ္လို ျပႆၾကဳံရလဲ ရယ္..
ဘာကိုနားမလည္ဘူးဆုိတာရယ္.. နားမလည္တာမ်ားပါလိမ့္မယ္
ဒါေပမယ့္ အားမေလွ်ာ့ပါနဲ႕.. တျဖည္းျဖည္းသိလာလိမ့္မယ္..
:P
VoDa Kar
Java မိတ္ဆက္
• Java ဆိုတာက SUN Micro System ( အစက လူမသိသူမသိ အျခားကလည္း ျဖစ္ႏိုင္တယ္္ေနာ္.) က မိတ္ဆက္ေပးလိုက္တဲ့ programming language တစ္ခု ျဖစ္ပါတယ္.. Platform independent ရယ္ secure ျဖစ္ တဲ့အေပၚမွာ မူတည္ျပီး အသုံးတြင္က်ယ္ပါတယ္..server side, client side desktop application ေတြ သို႕မဟုတ္ mobile phone, smart phone , palmtop , PDA ….ေတြမွာ သုံးျပဳပါ တယ္.embbed device ( like some security car system ) မွာလည္းပဲ အသုံးျပဳၾကပါတယ္..သံုးရင္ အရင္ code ေရး ..ထုံးစံအတိုင္း Compile လုပ္ class ျဖစ္ ..ျပီးေတာ့ သူနဲ႕ကိုက္တဲ့ platform မွာ run ေပါ့..
• ေနာက္တစ္ခုက web application ေတြမွာသုံးတာ ..java script အျဖစ္ေသာ္လည္းေကာင္း၊ java applet အျဖစ္ေသာ္လည္းေကာင္း၊ JSP server sided programming (and also [ .do ] with class ) or Servlets အျဖစ္ ေသာ္လည္းေကာင္း အသုံးျပဳပါတယ္..
Java page တစ္ခုကို ျပႏိုင္ဖို႕အတြက္ ဘယ္ server ေတြ run ဖို႕လိုလည္း?
Php ကို Apache server နဲ႕ တြဲသုံးသလုိပဲ.. JSP ကို လည္း Apache Tomcat Server နဲ႕တြဲသုံးပါ တယ္..Apache Tomcat project ကို internet ေပၚမွာ open source အေနနဲ႕ free ရသဗ်….ဒါက အသုံးမ်ားျပီး လက္လွမ္းမိီတာကို ေျပာလုိက္တာ..ဒါတင္ ဘယ္ကမွာလဲ..အမ်ားၾကီးရွိေသး သဗ်.. Sun က ထုတ္တဲ့ Java web server .. အဲလိုပဲ ကုမၸဏီေပါင္းစုံက ထုတ္ၾကပါေလေရာ.. မ်ားလြန္းလို႕ list လုပ္ထား တဲ့ website ကိုပဲ ညႊန္ပါရေစ… http://www.javaskyline.com/serv.html ကို သြားၾကည့္ ၾကပါေတာ့...
ဘာလို႕ java ကိုသုံးလည္း ?
ဒီလုိရွိတယ္..သူ run ႏိုင္တဲ့ java run time environment ကို ဘယ္ platform မွာ မဆို တင္ႏိုင္ျပီး အသုံးျပဳႏို္င္လို႕ပဲ..ဖုန္းဆိုလည္းတင္လို႕ရတာပဲ..apple မွာလည္းရတာပဲ.. Microsoft windows ေတြ မွာလည္း…ဘာျဖစ္လဲ…? ရတာပဲလို႕…ကဲဒါဆို linux ေတြမွာ ေရာ ရပါ့..
Java runtime environment ရွိ တာနဲ႕ java class ေတြကို run လို႕ ရသဗ်ာ…ဒီေတာ့ ေကာင္းဘူး လား…ေနာက္တစ္ခု…. Applet servlets jsp အဲဒါေတြကေရာ..secure ျဖစ္လို႕သုံးတာ.. ေတြ႕မိ လား..ကမာၻ႕computer တကၠသိုလ္ေတာ္ေတာ္မ်ားမ်ားJava java နဲ႕ ေတာ္ေတာ္ေလး ကို role ေပး တာေလ… ျပီးေတာ့ တခ်ိဳ႕ စီးပြားေရး၀က္ဆိုက္ၾကီး (online banking, mobile company ) ေတြ… java server page ေတြဗ်ား…ဥပမာ.. starhub ဖုန္း၀က္ဆုိက္ ..ေတြ႕မိလား .do ဆိုျပီးေလ…hacking ရန္ကို ေကာင္းေကာင္းကာကြယ္ႏိုင္လို႕ ရယ္ အျခား ေကာင္းကြက္ေတြရွိလို႕သုံးတာ…..java ဖိုင္ေတြ ေရး တာ compile လုပ္တာ run တာ အနဲအက်ဥ္း ေျပာသြားပါမယ္…
Java class တခုရဲ႕ structure ေအာက္မွာ ၾကည့္ပါ
public class program-name {
optional variable declarations and methods
public static void main(String[] args) {
statements
}
optional variable declarations and methods
}
အဲဒါကို hello world ဆိုတဲ့ အစ program တပုဒ္ေရးၾကည့္ရေအာင္
Program name = HelloWorld
Java file name= HelloWorld.java (class နာမည္နွင့္ တူတူျဖစ္၇မယ္)
ကဲစေရးမယ္.. editor ( notepad, textpad, notepad++ or other editor ) တခုခုေခၚလိုက္ ..
ေအာက္က code ေတြ ေရးုလုိက္.
ကုဒ္ခံမယ္။:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World.I M testing baby!");
}
}
save as hello.java လုိ႕ save လိုက္.. ဒါဆို .java extension နဲ႕ ဖိုင္တခုရျပီ.. ဒါက တကယ္လိုခ်င္တဲ့ run မယ့္ class မဟုတ္ပါဘူး..
Java compiler ( javac in JDK ) န႕ဲ compile ျပီးမွသာ class ျဖစ္ျပီး အသုံးျပဳလို႕ ရပါမယ္..
ဘယ္လို compile ၾကမလဲ.. JDK လုိပါတယ္.. jdk ကို sun.com မွ အလကား ေဒါင္းလို႕ရပါတယ္.. ျပီးရင္ class path အတြင္းသြင္းပါ.. My computer ကို right click လုပ္ .. Properties->Advanced-->Environments Variables-->System Variables--> path-->edit--> ; ခ်ျပီး jdk bin path ကို ထပ္ထည့္ပါ..
Jdk path က C --> program files --> java မွာ ၀င္ၾကည့္ၾကည့္
Version ကို လုိက္ျပီး ေျပာင္းမွာပဲ.. က်ေနာ္ဆီမွာ ဒီလို
C:\Program Files\Java\jdk1.5.0_07\bin
ေအာက္က ပုံကို ကိုးကား..
ဒါက first time ပဲလိုတာ java compiler ရွိမယ့္ path ကို windows ရဲ႕ class path အတြင္း သြင္းတယ္ဆိုတာက command promt ကေန javac java ဆိုျပီး type တာနဲ႕ compiler ေနရာကို တန္းသုံးႏုိင္ေအာင္လို႕ပါ..
ခု compile လုပ္ၾကည့္ရေအာင္
Windows logo + R ကို တြဲႏွိပ္ command prompt တက္လာလိမ့္မယ္..
ခုနက HelloWorld.java ကို ထားထားတဲ့ေနရာေအာင္ cd command နဲ႕ directory ေျပာင္း ဥပမာ က်ေနာ္က HelloWorld.java ကို C:\Java ဆိုတဲ့ ဖိုလ္ဒါမွာ သိမ္းတယ္..
ဒီေတာ့ command prompt မွာ ဒီလို ရိုက္မယ္..
cd C:\Java
အဲဒါဆို java file ရွိတဲ့ ေနရာေရာက္ျပီ compile ၾကရေအာင္.ေအာက္က command ေတြဆက္ရိုက္. Javac ဆိုတာ javacompiler ကို ေျပာတာ..jdk bin မွာရွိတယ္..case sensitive ေနာ္...
javac HelloWorld.java
Enter ေခါက္..
ဒါဆို HelloWorld.java ဖုိင္ေဘးမွာ HelloWorld.class ဆိုျပီး class ဖိုင္တဖိုင္ ထြက္လာလိမ့္မယ္.compile ျပီးျပီ..
Run ၾကည့္ရေအာင္ .ေအာက္က command ကို ရိုက္.. enter ေခါက္.
java HelloWorld
ဒါဆို console screen မွာ က်ေနာ္တို႕ေရးထားတဲ့
Hello, World.I M testing baby! ဆိုျပီးေပၚေနလိမ့္မယ္..
What’s HTML?:HTML ...( Notepad ရဲ႕အေရးပါပံု)
HTML အေၾကာင္းေျပာျပီဆိုေတာ့ နည္းနည္းေလး Technical ပိုင္းပုိမ်ားမယ္လုိ႕ ထင္ပါတယ္။ ဒါေပမယ့္ HTML အေၾကာင္းကို introduction ေလာက္ေလးပဲ လုပ္သြားမွာျဖစ္တဲ့ အတြက္ ဘာမွေတာ့ သိပ္အမ်ားၾကီး မပါေသးပါဘူး။သာမန္ ျမန္မာ netizen တစ္ေယာက္အေနနဲ႕ တစ္ေန႕တစ္ေန႕ ၾကည့္ၾကည့္ေနတဲ့ web page ေတြကို ဘယ္လုိ ေဆာက္ထား လဲ ဆိုတဲ့ အေၾကာင္းကို ကိုယ္စီးတဲ့ ႏြား အထီးလား အမလား သိရုံေလာက္ပဲ ေရးသြားမွာပါ။
HTML ဆိုတာဘာလဲ?
HTML ဆိုတာကို အရွည္ေျပာရရင္ေတာ့ Hyper Text Markup Language လုိ႕ေျပာရပါလိမ့္မယ္။ ဟိုလူကေျပာ ဒီလူကေျပာ ေျပာေျပာေနၾကမယ့္ HTML ဆိုတာဟာ ကၽြန္ေတာ္တုိ႕ ဘယ္အခ်ိန္ၾကည့္ၾကည့္ ဘယ္ website ကိုၾကည့္ၾကည့္ ျမင္ရသမွ်ကို web browser ကျပႏုိင္ဖုိ႕ အတြက္ အဓိကလုိတဲ့ file တစ္ခု (သို႕မဟုတ္) text file တစ္ခုပါပဲ။
အခုအခ်ိန္မွာ XHTML ဆိုတဲ့ standard မွီတဲ့ HTML language သာ သံုးေတာ့ေပမယ့္ အဲ့ဒီ့ XHTML ကိုလည္း အမ်ားအားျဖင့္ HTML လုိ႕သာေခၚၾကပါတယ္။
ဘာကြာလည္းေတာ့ ေခါင္းေနာက္သြားမွာ စိုးတဲ့အတြက္ ေနာက္မွပဲ ရွင္းျပပါေတာ့မယ္။ လုိရာကိုပဲေျပာျပီး HTML ဘယ္ကစလဲ? ဘယ္သူထြင္လဲ? ဘယ္တုန္းကလဲ? စတဲ့ သမုိင္းသင္ခန္းစာေတြ ကိုေက်ာ္လုိက္ရေအာင္။
HTML ဘယ္လုိေရးမလဲ?
လြယ္ပါတယ္။ Notepad နဲ႕ ေရးပါတယ္။ တကယ္လုိ႕ notepad နဲ႕ တျဖည္းျဖည္း html ကို နားလည္လာျပီဆိုရင္ web development အတြက္သံုးႏုိင္တဲ့IDEတစ္ခုခုကို ေျပာင္းသံုးျပီး ဆက္ေရးႏုိင္ပါတယ္။
HTML မွာ Tag ေတြကို သံုးျပီး mark up လုပ္ပါတယ္။ Tag အမ်ိဴးအစားေပၚမူတည္ျပီး ဘာျပေပးရမယ္ဆိုတာကို web browser က ၾကည့္ျပီး ျပေပးပါတယ္။
ဥပမာ <a> ဆိုတဲ့ Tag မ်ိဴးကိုေတြ႕ရင္ anchor သုိ႕ link ျပေပးရမယ္၊ <p>...</p> ဆုိတဲ့ tag မ်ိဴးကိုေတြ႕ရင္ ၾကားထဲမွာရွိတဲ့ စာကို paragraph တစ္ခုအေနနဲ႕ ျပေပးရမယ္ေပါ့။
HTML tag ေတြမွာ characteristic ေလး တခ်ိဳ႕ ရွိပါတယ္။ သူတုိ႕ေတြမွာ
- အေၾကာင္းရွိတယ္
- ေဆြမ်ိဴးရွိတယ္
- အစနဲ႕ အဆံုးရွိတယ္
HTML tag ေတြမွာ သူတို႕ကိုယ္ပိုင္ အေၾကာင္းအရာေလးေတြ (Attribute ေတြ) ရွိပါတယ္။
ဥပမာ Link တစ္ခုကိုေရးတဲ့ HTML tag တစ္ခုဟာ
<a href="http://mmhan.net" title="Go to mmhan.net">Go to mmhan.net</a> ဆိုရင္
အဲ့ဒီ anchor link ရဲ႕ attribute ေတြဟာ href နဲ႕ title ပါပဲ။
အဲ့ဒီ့ attribute ေတြဟာ HTML tag ရဲ႕ အလုပ္လုပ္ပံု၊ display ျပပံုကို သတ္မွတ္ပါတယ္။
ဒီဥပမာမွာ href ဆိုတဲ့ attribute ဟာ ဒီ link ကို click ႏွိပ္လုိက္ရင္ ဘယ္သြားမယ္လုိ႕ ေျပာေပးျပီး၊ title ဆိုတဲ့ attribute ဟာ ဒီ link ေပၚမွာ mouse တင္ထားရင္ ဘယ္စာ ျပရမယ္ ဆိုတာမ်ိဴးကို သတ္မွတ္ေပးတာေပါ့။
ေဆြမ်ိဴးရွိတဲ့ HTML tag
ေဆြမ်ိဴးရွိတယ္လုိ႕ ဘာလုိ႕ေျပာရလဲဆိုေတာ့ သူတုိ႕ေတြဟာ Tree Structure နဲ႕ ရွိေနလုိ႕ပါ။ ေအာက္က code ကို တခ်က္ၾကည့္ၾကည့္ပါ။
I’m a child of <div id=”bar”>
Me too!!
I’m sibling of <div id=”bar”>
အဲ့ဒီ့ code မွာေတြ႕ရတဲ့ အတိုင္းပဲ၊ <div id="foo"> ဆုိတဲ့ division tag ဟာ တျခား HTML tag ေတြနဲ႕ယွဥ္ရင္ tree structure ရဲ႕ အေပၚဆံုးမွာရွိေနျပီး၊ သူ႕ရဲ႕ child ေတြ အျဖစ္ <div id="bar"> နဲ႕ <h3> ဆုိတဲ့ heading-3 tag ရွိပါတယ္။HTML ကိုေရးျပီဆိုရင္ အဲ့ဒီ့လုိပဲ tree structure နဲ႕ေရး ရပါတယ္။
အစနဲ႕ အဆံုးရွိတဲ့ HTML tag
HTML ေရးျပီဆိုရင္ အစနဲ႕ အဆံုး tag ေတြ မရွိမျဖစ္ ရွိရပါတယ္။
အေပၚမွာျပသြားတဲ့ code အရ <div id="foo"> ရဲ႕ child ေတြကို အုပ္ထားတဲ့ </div> ဟာ သူ႕ရဲ႕ အဆံုး tag ပါ။<h1> ရဲ႕ အဆံုး tag ဟာ </h1>၊ <h2> ရဲ႕ အဆံုး tag ဟာ </h2> ျဖစ္ျပီး <h3> ရဲ႕ အဆံုး tag ဟာ </h3>၊ ပါ။ဒီေတာ့ အဆံုး tag ကိုေရးခ်င္ရင္ အစ tag ရဲ႕ < အျပီးမွာ / ထည့္ရတယ္ လုိ႕ ေတြ႕ပါလိမ့္မယ္။တစ္ခါတစ္ေလမွာေတာ့ child မရွိတဲ့ HTML tag ေတြရွိတတ္ပါတယ္။
ပံုျပတဲ့ <img> tag ဟာ အဲ့ဒီ့ထဲက တစ္ခုေပါ့။
သူ႕ကိုေရးတဲ့အခါမွာေတာ့
<img src="http://somedomain.com/someimage.jpg" width="100" height="100" /> ဆိုျပီး tag ရဲ႕ အဆံုး > မတိုင္ခင္မွာ / ကိုထည့္ျပီး အဆံုးသတ္ ေပးရပါတယ္။ကဲ အခုေလာက္ဆုိရင္ေတာ့ HTML နဲ႕ ေမးထူးေခၚေျပာ အဆင့္ေလာက္ထိ အကၽြမ္းတ၀င္ရွိသြားျပီေပါ့… HTML အေၾကာင္းကို အေသးစိတ္ေလ့လာမယ္ဆို က်ေနာ္ စာအုပ္တင္ေပး ပါမယ္.......
Subscribe to:
Posts (Atom)
စစ္နိုင္(suran)ူ