Category Archives: Programming

working with git

Git ကို အရင်ရုံး point-star မှာ စသုံးဖူးတာပါ။ git ဆိုတာကို အရင်တုန်းကတော့ opensource တွေကို download ဆွဲချပြီး သုံးဖို့လောက်ပဲ သုံးဖြစ်တယ်။ point-star မှာ github သုံးရမယ်ဆိုတာနဲ့ github ကို လေ့လာဖြစ်တာပဲ။ github နဲ့ git အစတုန်းက လုံးဝ ကို မကွဲတာ။ github သုံးရင်းနဲ့ git နဲ့ github မတူဘူးဆိုတာ သိလာတာ။ git သုံးတတ်ပြီးနောက်ပိုင်းမှာ github မှာ opensource project တွေ တင်ဖြစ်တယ်။ သို့ပေမယ့် တစ်ယောက်တည်းပဲ ဖြစ်တဲ့အတွက် git အကြောင်းကို ကောင်းကောင်း မသိခဲ့ဘူး။ အရင်ရုံးတုန်းကလည်း တစ်ယောက်တည်းလိုလို ဖြစ်နေတဲ့အတွက် မထူးခြားလှဘူး။ backup သာသာ ရှိပါတယ်။

ဒီရုံးရောက်တော့ repo သုံးမယ် ဆိုတော့ ကျွန်တော်က bitbucket ကို recommend လုပ်ခဲ့တယ်။ သို့ပေမယ့် bitbucket က hg ပဲ support လုပ်တယ်။ ဒါကြောင့် git ထက်စာရင် hg ကို အသုံးပြုဖြစ်ခဲ့တယ်။ အခုနောက်ပိုင်း bitbucket က git support လုပ်တော့ ကျွန်တော်တို့တွေ git ကို ပြောင်းသုံးခဲ့တယ်။ hg နဲ့ git က အတူတူပဲ လို့ ဆိုလို့ရပါတယ်။ သို့ပေမယ့် ကျွန်တော်က git ကို ပိုကြိုက်တယ်။ git က data တွေကို compress လုပ်ပြီး သိမ်းထားတဲ့အတွက်ကြောင့် နေရာ သိပ်မယူဘူးလို့ ဆိုရမလိုပဲ။ Git ကို စသုံးတဲ့အချိန်မှာ ကျွန်တော်တို့ ရုံးက ၂ ယောက်တည်း မဟုတ်တော့တာအတွက်ကြောင့် hg ထက်စာရင် git အကြောင်းကို ပိုသိပါတယ်။

Continue reading

How to manage Git Repository Server with Gitosis?

ပရောဂျက်တစ်ခုချင်းအလိုက် Permission မလိုအပ်ရင်နဲ့ လူနည်းရင်တော့ Authorized Key နဲ့အဆင်ပြေပါတယ်။ ဒါပေမယ့် Permission တွေလိုအပ်လာပြီ နောက်ပြီးတော့ Repository Initialization တွေ User Management တွေလိုလာရင်တော့ Authorized Key နဲ့မလုံလောက်တော့ပါဘူး။ အသုံးများတာကတော့ Gitosis နဲ့ Gitolite သုံးကြပါတယ် ကောင်းတာကတော့ နှစ်ခုလုံးကောင်းပါတယ် တစ်ခုတော့ရှိပါတယ် Gitosis ကတော့ Development ရပ်နေတာ အတော်လေးကြာနေပါပြီ။

Gitosis ကို Setup လုပ်ရတာ သိပ်မခက်ပါဘူး အရင်ဆုံးတော့ Gitosis ကိုသူ့ရဲ့ Repository ကနေ Clone လုပ်ယူရပါတယ်။ အကယ်လို့ Ubuntu လိုသုံးရင်တော့ သူ့ရဲ့ Repo ထဲကနေ apt-get နဲ့ Install လုပ်လို့ရပါတယ် ဒါပေမယ့်သူက User creation တွေပါလုပ်ကုန်လို့ မလိုတဲ့ဟာတွေပါလို့ ကိုယ်တိုင်ပဲ Install လုပ်ယူတာကပိုပြီး ကိစ္စရှင်းပါတယ်။ အောက်မှာပြထားတဲ့ Commands တွေနဲ့ Gitosis ကို Install လုပ်ယူလိုက်ပါ။

root@gitserver:~# git clone git://eagain.net/gitosis.git
root@gitserver:~# cd gitosis
root@gitserver:~# python setup.py install

Gitosis ကို Install လုပ်ပြီးပြီဆိုရင်တော့ အရင်ကလုပ်ထားတဲ့ Authorized Key တွေကို ပြန်ပြင်ဖို့လိုပါလိမ့်မယ်။ အရင်ကရေးထားတဲ့ authorized_keys ကိုတစ်နေရာမှာ Backup လုပ်ထားဖို့လိုပါမယ်။ Gitosis မှာတော့ Admin လုပ့်မယ့်လူတစ်ယောက်ကိုတော့ authorized_keys မှာထည့်ပေးပါတယ်။ Admin တာဝန်ယူမယ့်လူရဲ့ Key ဟာ Git user ရဲ့ home အောက်မှာ id_rsa_admin.pub လို့ရှိနေတယ်လို့ ယူဆထားပါတယ်။ နောက်ပြီးတော့ Git User Account ကို Shell Access ပြန်ပေးဖို့လိုပါတယ်။ Gitosis ကိုအောက်မှာပြထားတဲ့ Commands တွေနဲ့ Initialize လုပ်လို့ရပါတယ်။

root@gitserver:~# chsh -s /bin/bash git
root@gitserver:~# su git
git@gitserver:~$ cd ~/
git@gitserver:~$ mv ~/.ssh/authorized_keys ~/.ssh/authorized_keys.backup
git@gitserver:~$ gitosis-init < id_rsa_admin.pub
git@gitserver:~$ chmod 755 ~/repositories/gitosis-admin.git/hooks/post-update

Gitosis မှာထူးခြားတာက Repository တွေကို Manage လုပ်တာက Git နဲ့ပဲလုပ်ပါတယ် Git Server ပေါ်မှာ Management လုပ်ဖို့အတွက် သီးသန့်အနေနဲ့ Repository တစ်ခုပါလာပြီးဖြစ်ပြီးတော့ အဲဒီ့ Repository ထဲက File တွေကိုလိုအပ်သလိုပြင် ပြီးရင်တော့ ပြန်ပြီးတော့ Server ပေါ်ကို Push လုပ်ရပါတယ်။ အောက်မှာပြထားသလို Clone လုပ်ယူလို့ရပါတယ် Clone လုပ်ဖို့အတွက်တော့ Gitosis ကို Configure လုပ်ခဲ့တုံးက id_rsa_admin.pub ရဲ့ပိုင်ရှင်ဖြစ်ဖို့လိုပါမယ်။

git_admin@gitclient:~$ clone git@gitserver:gitosis-admin.git

gitosis-admin ဆိုတဲ့ Repository ထဲမှာ ရှုပ်ရှုပ်ထွေးထွေးမပါပါဘူး keydir ဆိုတဲ့ Folder တစ်ခုရယ် gitosis.conf ဆိုတဲ့ ဖိုင်တစ်ခုရယ်ပဲပါတယ်။ User တစ်ယောက်အသစ်ထည့်ချင်ရင် အရင်ကဆိုရင် Public Key ကို authorized_keys ထဲကိုသွားရေးပေးရတယ်။ Gitosis မှာတော့ username.pub ဆိုပြီး Public Key File ကိုနာမည်ပေးပြီး keydir ထဲကိုကူးထည့် ဆာဗာပေါ်ကိုပြန်ပြီးတော့ Push လုပ်ပေးလိုက်ရုံပါပဲ။ Repository တစ်ခု အသစ်လုပ်မယ်ဆိုရင် အောက်မှာပြထားသလို gitosis.conf ထဲမှာသွားရေးပေးရပါတယ်။ ပြီးရင်တော့ Server ပေါ်ကိုပြန်ပြီးတော့ Push လုပ်ပါ အဲဒါဆိုရင် Gitosis ကလိုအပ်တာတွေကို Initialize လုပ်ပါလိမ့်မယ်။

[group my_repo_write]
writable = myrepo
members = user1 user2

[group my_repo_read]
readonly = myrepo
members = user3 user4

အဲဒါဆိုရင် myrepo ဆိုတဲ့ Repository ထဲမှာ user1 နဲ့ user2 တို့နှစ်ယောက်ဟာ ရေးခွင့်ဖတ်ခွင့်ရှိတယ်။ user3 နဲ့ user4 ကတော့ ဖတ်ခွင့်ပဲရှိတယ်။ အရင်တုံးက Shell တစ်ခုကို Share လုပ်နေတုံးကဆိုရင် အဲလိုဖတ်ခွင့်ပဲပေးပြီး ရေးခွင့်မပေးချင်လို့မရပါဘူး အခုတော့ရပါတယ်။ အရင်တုံးကလို myrepo ကို Server ပေါ်မှာ Initialize လည်းလုပ်ပေးဖို့မလိုအပ်ပါဘူး Repository မရှိသေးလည်း ပထမဆုံးအကြိမ် Client ကနေ Push လုပ်တဲ့အချိန်မှာ Gitosis ကပဲ လုပ်သွားပါလိမ့်မယ်။ အဲဒါတွေပြီးရင်တော့ အောက်မှာပြထားသလို သုံးလို့ရပါပြီ။

user1@gitclient:~$ git init
user1@gitclient:~$ git remote add origin git@gitserver:myrepo.git
user1@gitclient:~$ git push origin master

ဒါဆိုရင် Gitosis ကိုသုံးပြီးတော့ Git Repository Server တစ်ခုလုပ်လို့ရပါပြီ ခက်ခက်ခဲခဲမရှိလှပါဘူး Git Repository Server ဟာ Public IP နဲ့ဆိုရင် ဘယ်နေရာကဖြစ်ဖြစ် သုံးလို့ရပါတယ် အခုကတော့ SSH ပေါ်ကနေပဲ အလုပ်လုပ်ပါတယ် အဲဒါကြောင့် မြန်မာနိုင်ငံထဲ ပြန်ရောက်နေလို့ Push လုပ်ချင်လို့ပါဆိုရင်တော့ မဖြစ်နိုင်ပါဘူး။ အဲဒါတွေအတွက်ဆိုရင်တော့ Firewall အများစုဖွင့်ထားတဲ့ http ပေါ်ကနေ Push လုပ်ဖို့ထပ်ပြီးတော့ Setup လုပ်ရပါလိမ့်မယ်။ နောက်အားတဲ့အခါမှ ဆက်ရေးပါဦးမယ်။

How to setup a simple Git Repository Server?

Git Server တစ်ခုလုပ်ယူရတာ သိပ်ပြီးတော့ မခက်ခဲလှပါဘူး ရုံးမှာတစ်ယောက်တစ်ပေါက် Revision Control တစ်ခုခုတင်ပေးပါ ပြောပြောနေလို့ Git Server တစ်ခုလုပ်ပေးဖို့ တာဝန်ကျလာပါတယ်။ Server ပေါ်မှာ Git အတွက် User Account တစ်ခုခွဲထားလို်က်ပြီး Repository တွေကိုသိမ်းလို့ရပါတယ်။ အလွယ်ဆုံးနည်းကတော့ ခွဲထားတဲ့ User Account တစ်ခုနဲ့ အားလုံးသုံးမှာဖြစ်တဲ့အတွက် Password ကိုအားလုံးကို ပေးထားတာထက် Authorized Key နဲ့ဝင်တာ အဆင်အပြေဆုံးပါပဲ။ အောက်မှာပြထားတဲ့ Command တွေနဲ့ git ဆိုတဲ့ User တစ်ယောက်ကို Create လုပ်လို့ပြီး Authorized Key အတွက် Folder တစ်ခုထည့်လို့ရပါတယ်။

root@gitserver:~# adduser -m git
root@gitserver:~# su git
git@gitserver:~$ cd ~
git@gitserver:~$ mkdir .ssh

ပြီးပြီဆိုရင်တော့ ကိုယ့်ရဲ့ Git Server ကိုသုံးမယ့်လူတွေရဲ့ Public Key တွေကို .ssh အောက်ထဲမှာ authorized_keys ဆိုတဲ့ဖိုင် အနေနဲ့ထည့်ပေးရပါမယ်။ ကိုယ့်အထဲမှာ သုံးမယ့်လူတွေရဲ့ Public Key တွေရှိပြီးသားဆိုရင်တော့ အောက်မှာပြထားသလို အလွယ်တကူပဲရေးလို့ရပါတယ်။ ဒါမှမဟုတ်လည်း authorized_keys ကို Editor တစ်ခုနဲ့ဖွင့်ပြီး ထပ်ထပ်ထည့်လည်းရပါတယ် ခက်ခက်ခဲခဲမဟုတ်ပါဘူး။

git@gitserver:~$ cd ~/.ssh
git@gitserver:~$ cat mg_mg_id_rsa.pub >> authorized_keys
git@gitserver:~$ cat ma_ma_id_rsa.pub >> authorized_keys

ဒါဆိုရင် mg_mg_id_rsa.pub နဲ့ ma_ma_id_rsa.pub နှစ်ယောက်ဟာ git ဆိုတဲ့ User Account ကိုသူတို့ရဲ့ Private Key တွေနဲ့ SSH ကို Access လုပ်လို့ရပါပြီ။ Server ဘက်မှာတော့ Repository ကို Initialize လုပ်ပေးဖို့ပဲကျန်တော့တယ်။ အောက်မှာပြထားတဲ့ Command တွေနဲ့လုပ်လို့ရပါတယ်။ Git Repository Initialize လုပ်တာက Server ဖြစ်တဲ့အတွက် Working Directory မလိုပဲလုပ်ရပါတယ် အဲဒီ့အတွက် –bare ဆိုတဲ့ Option တစ်ခုပါဖို့ သတိထားရပါတယ်။

git@gitserver:~$ cd ~
git@gitserver:~$ mkdir myproject.git
git@gitserver:~$ cd myproject.git
git@gitserver:~$ git –bare init

ဒါတွေပြီးရင်တော့ Client အနေနဲ့ သုံးလို့ရပါပြီ။ သုံးခွင့်က mg_mg_id_rsa.pub နဲ့ ma_ma_id_rsa.pub နှစ်ယောက်ကို ပေးထားတဲ့အတွက် အဲဒီ့လူတစ်ယောက်ယောက်ရဲ့ Private Key ရှိတဲ့ ကွန်ပျူတာတစ်လုံးကနေ Clone လုပ်ကြည့်မယ်ဆိုရင် ရပါလိမ့်မယ်။

mgmg@computer:~$ cd ~
mgmg@computer:~$ git clone git@gitserver:myproject.git
mgmg@computer:~$ cd myproject
mgmg@computer:~$ touch README
mgmg@computer:~$ git add .
mgmg@computer:~$ git commit -am “Initial Commit”
mgmg@computer:~$ git push origin master

သုံးလို့ရသွားပြီဆိုပေမယ့် ထပ်ဖြစ်လာတဲ့ ပြဿနာက mg_mg_id_rsa.pub နဲ့ ma_ma_id_rsa.pub နှစ်ယောက်ဟာ git ဆိုတဲ့ User Account ကိုသူတို့ရဲ့ Private Key တွေနဲ့ SSH ကို Access လုပ်လို့ရနေပါတယ်။ အကယ်လို့ သူတို့နှစ်ယောက်ဟာ ဆာဗာပေါ်မှာ Shell Access မလုပ်စေချင်ရင်တော့ git ဆိုတဲ့ User Account အတွက်ပေးထားတဲ့ Shell ကိုပြင်ဖို့လိုပါတယ်။ Git မှာ git-shell ဆိုပြီးပါပြီးသားရှိပါတယ် အဲဒါကိုပဲသုံးစေမယ်ဆိုရင်တော့ Repository List ကလွဲရင်ကြည့်လို့မရအောင် လုပ်ပေးလို့ပါတယ်။

root@gitserver:~# cp -R /usr/share/doc/git-your-version/contrib/git-shell-commands /home/git
root@gitserver:~# chown -R git /home/git/git-shell-commands/
root@gitserver:~# chmod +x /home/git/git-shell-commands/help
root@gitserver:~# chmod +x /home/git/git-shell-commands/list
root@gitserver:~# chsh -s /usr/bin/git-shell git

အထက်မှာပြောခဲ့တဲ့အတိုင်း Setup လုပ်မယ်ဆိုရင် Git Server တစ်ခုအလွယ်တကူ လုပ်လို့ရပါတယ် ဒါပေမယ့် အလွယ်ဆုံးနည်းလမ်း ဖြစ်တဲ့အတွက် လိုအပ်ချက်တွေတိုးလာရင် အဆင်မပြေတော့ပါဘူး။ အခုလုပ်ထားတာက User Account တစ်ခုကို လူအများမျှပြီးသုံးတဲ့နေရာမှာ Public Key တွေကို authorized_keys ထဲကိုရေးပေးရတဲ့အတွက် လူများလာတာနဲ့အမျှ ထိမ်းချုပ်ရခက်ပါတယ် လူတစ်ယောက်ကို ပြန်ဖျက်ဖို့အတွက် authorized_keys ကိုပြန်ဖွင့်ပြီး တစ်ခုစီလိုက်ရှာရတာ အတော်ခက်ခဲ့ပါလိမ့်မယ်။ နောက်တစ်ချက်က လူတိုင်းမှာတူညီတဲ့ လုပ်ပိုင်ခွင့်ဖြစ်နေပါတယ် သုံးခွင့်ရှိတယ်ဆိုတာနဲ့ ရှိသမျှ Repository တွေကို Access လုပ်လို့ရပါတယ်။ အဲဒီလိုအပ်ချက်တွေ တိုးလာရင်တော့ အခြားသော Git Server Management Tools တွေသုံးရပါလိမ့်မယ်။

iosresourcefeature

iOS Resources for developer

iOS developer တွေ အနေနဲ့ အသုံးဝင်တဲ့ resource အချို့တွေက

Cocoa Control

iOS မှာ အခြား သူတွေ အသုံးပြုထားတဲ့ control တွေကို လွယ်လင့် တကူ ရှာဖွေ အသုံးပြုနိုင်ပါတယ်။ တော်တော်များများကတော့ github မှာ share ထားပြီးထားသားပါ။ http://cocoacontrols.com က resource တွေ အားလုံးကို စုစည်းထားပေးတာပါ။ တော်တော်လေးကို အသုံးဝင်ပါတယ်။ ဥပမာ။။ twitter ipad version လိုမျိုး ဖန်တီးချင်တယ်ဆိုရင် လွယ်လင့်တကူ ရှာဖွေနိုင်ပါတယ်။

iOS Weekly

iosdevweekly.com ကို iOS Developer တိုင်း subscribe လုပ်ထားသင့်ပါတယ်။ အပတ်စဉ် iOS devleopment နဲ့ ပတ်သက်ပြီး အသုံးဝင်တဲ့ newsletter တွေ ပို့ပေးပါတယ်။ ပုံမှန်အားဖြင့် News , Design, Code , Tool ဆိုပြီး Section ၄ ခု ပါပါတယ်။

Continue reading

iphone8

Font embed in iPhone Titanium

အရှေ့ မှာတုန်းကတော့ Android Titanium မှာ font embed လုပ်တဲ့ အကြောင်းပြောပြီးပါပြီ။ အခု iphone အတွက် လုပ်ကြည့်ရအောင်။ Android မှာ ရေးထားတဲ့ code အတိုင်းပဲ ရေးပြီးတော့ iphone အတွက် config လေးတွေ နည်းနည်း လုပ်ရပါမယ်။

အရင်ဆုံး project folder အောက်က build ဆိုတဲ့ folder ကို သွားပါ။ အဲမှာ android နဲ့ iphone ဆိုတဲ့ folder ၂ ခုတွေ့ပါမယ်။ iphone ဆိုတဲ့ folder ထဲဝင်ပြီး info.plist ကို copy ကူးပါ။

ပြီးရင်တော့ project folder အောက်မှာ paste လုပ်လိုက်ပါ။

Paste လုပ်ထားတဲ့ info.plist ကို ဖွင်ပြီးတော့ Fonts provoide by application ဆိုပြီး အသစ် တစ်ကြောင်း ထပ်ဖြည့်ပါ။ အလိုလို Array data type ရွေးသွားပေးပါမယ်။ ပြီးရင် item-0 မှာ ကိုယ် အသုံးပြုမယ့် font file ကို ထည့်ပေးပါ။

ပြီးရင် build folder ထဲကို ပြန်သွားပြီး iphone folder တစ်ခုလုံးကို ဖျက်လိုက်ပါ။

ဖျက်ပြီးသွားရင်တော့ Resources folder ကို သွားပြီး font file ကို ထည့်ပါ။

ပြီးရင် compile လုပ်လိုက်ပါ။ အဲဒီ အခါ သူ့အလိုလို build အောက်မှာ iphone porject သွားဆောက်ပါလိမ့်မယ်။ ပြီးသွားရင်တော့ iphone မှာ ဇော်ဂျီ မြင်ရတာကို တွေ့ရပါလိမ့်မယ်ဗျာ။


tizg

Font Embed in Android Titanium

ဒီနေ့ Titanium Mobile SDK အသစ်မှာ Android အတွက် font embed ပါလာပါပြီ။ ဒါကြောင့် Titanium ကို အသုံးပြုပြီး မြန်မာ စာ အသုံးပြုတဲ့ iphone, android app တွေ ရေးလို့ရပါပြီ။ အရင် version တုန်းကတော့ iPhone တစ်ခုတည်းမှာ ရခဲ့ပေမယ့် အခု version မှာတော့ Android အတွက်ပါ ရလာပါပြီ။

How to

Titanium မှာ project အသစ် တစ်ခု ဆောက်လိုက်ပါ။

Continue reading

Screen shot 2011-04-10 at PM 06.24.05

Mobile App Development

Mobile app development နဲ့ ပတ်သက်ပြီး အခြေခံ အဆင်လေးကို presentation လေးလုပ်ထားတာပါ။ MZ ပွဲမှာ ပြမလို့ စဉ်းစားထားပေမယ့် အသံ quality သိပ်မကောင်းတာကြောင့် ပြဖြစ်မယ် မထင်ပါဘူး။ အခုမှ mobile app ကို လုပ်ချင်တဲ့ လူတွေအတွက်တော့ အသုံးဝင်မယ့် video ဖြစ်မယ်လို့ ထင်ပါတယ်။

Thread in Java Gaming

Java ဖြင့် Game အသေးစားများ ရေးသားခြင်း

အားလုံးမင်္ဂလာပါ။ ကဲ ရှည်ရှည်ဝေးဝေး တော့ ပြောမနေတော့ဘူး။ စလိုက်ရအောင်။

Game သဘောတရားကို ဖွင့်ဆိုကြည့်ရင် 3D game မှမဟုတ်ပါဘူး။ CMD(Command Prompt) ထဲမှာ Roll a Dice ကို လုပ်တဲ့ program ကော ၊ argument ပေးပြီး yes no ပေါ်မူတည်ပြီး result ထုတ်ပေးတဲ့ program ကော game ထဲမှာ အကျံုး ၀င်ပါတယ်။ ဒါကြောင့် ဒီလို Command Game လေးတွေအရင်ရေးဖို့ အကြံပေးလိုပါတယ်။ မဟုတ်ပါဘူး။ DOS game လေးတွေရေးတတ်ပါတယ်။ GUI game ကိုမှ ရေးချင်သပဆိုရင်တော့ …. ကဲ ကျနော်လုပ်ထားတာလေးတွေပြောမယ်။ ဒီlevel မှာ ကျနော်က ခင်ဗျားကို java နဲ့ programming ကောင်းကောင်းရေးတတ်တယ်လို့ ယူဆပါတယ်။

ကဲ Thread နဲ့စဖွင့်လိုက်ရအောင်။  Thread ဆိုတာ ဥပမာပြောရရင် စားပွဲထိုး တစ်ယောက်ရဲ ့တာဝန် နဲ့တူပါတယ်။ စားပွဲထိုးဆိုတာ သာမန် လဘ္ကရည်ဆိုင်အဆင့်မဟုတ်ပါဘူး။ ဧည့်သည်တွေ ရာချီပြီးလာတဲ့ စားသောက်ဆိုင်တစ်ခုမှာလုပ်နေတဲ့လူပါ။ သူ့ မှာ ဧည့်သည်တစ်ယောက်မက ဆီကနေ အမျိုးမျိုး အော်ဒါတွေကို လက်ခံရပါတယ်။ အဲ့အော်ဒါကို သူက မီးဖိုထဲကို အသိပေးရတယ်။ တခါ အသစ်ဝင်လာတဲ့ဧည့်သည်အတွက် နေရာ ချ၊ ရေချ၊ အော်ဒါကောက် စတာတွေလုပ်ရတယ်။ တခါ တချို ့ဆိုင်တွေမှာဆို အချိုပွဲ တို့ ယမကာတို့ကို စားပွဲထိုးကိုယ်တိုင်ထုတ်ရတာရှိတော့ အဲ့ဒါမျိုးတွေလည်းလုပ်ရတယ်။ ဟင်းပွဲထွက်လာရင်လည်း မှာထားတဲ့ဝိုင်းကို ရောက်အောင် ဂရုစိုက်ရပြန်တယ်။ အဲ့ဒါကြောင့်သူ့မှာ same time မှာဘဲ လုပ်စရာတွေ တပုံချည်းရှိတယ် ။ အဲ့လုပ်စရာတွေကို သူဟာ multitasking မလုပ်နိုင်တဲ့အတွက် သူ့အစီအစဉ်နဲ့သူ စနစ်တကျ လုပ်နိုင်မှသာ သူဟာ လုပ်ငန်းလည်ပတ်နိုင်မှာပေါ့။ ဒါပေမယ့် Computer မှာတော့ သင့်processor ကို စားပွဲထိုးလို့မြင်ကြည့်လိုက်ရင် သူဟာ စားပွဲထိုးထက်သာတာ၊ ဥပမာ သင်ဟာ ဖိုင်တစ်ခုကို ဒေါင်းနေချိန်မှာ ရုပ်ရှင်ကြည့်နေတာမျိုး အစရှိတဲ့ Tasks တွေကို တပြိုင်ထဲလုပ်နေတာကို သတိပြုမိမှာပါ။ Game မှာလည်း လွယ်လွယ်ပြောရရင် နောက်ခံ background ရှိတယ်။ လှုပ်နေမှာလား၊ user input ပေါ်မူတည်ပြီး ရွေ ့ပေးရမှာလား။ တခါ bgsound ဆိုလည်း ဘယ်အခြေအနေအတွက် ဘယ်အသံဆိုတာ ပြောင်းလဲပေးရမယ်လေ။ အဲ့လို အလုပ်တွေအများကြီးကို တစ်ချိန်ထဲမှာ လုပ်နေတာကို java မှာက thread တွေ run နေတယ်လို့ ခေါ်တာပါ။

Thread သုံးဖို့အတွက်က Thread Class ကို extends လုပ်တာဘဲဖြစ်ဖြစ် Runnable Interface ကို Implements လုပ်တာဘဲဖြစ်ဖြစ် သုံးလို့ရပါတယ်။အသေးစိတ်ကိုတော့ Java Thread ဆိုပြီး ဖတ်ကြည့်ရင်တွေ့နိုင်ပါတယ်။ ဘာလို့ဆို အဲ့လောက်လိုက်ပြောရရင် Java Programming ဘက်ကို ပြန်ရောက်သွားပြီး ကာလ ကဆုံးမှာမဟုတ်တော့ဘူးလေ။…..

Continue reading

cocos2d

Install Cocos2d-iphone

Cocos2d ဟာ iPhone 2D Game ရေးဆွဲဖို့အတွက် opensource framework တစ်ခုပါ။ game တွေကိ ုမြန်ဆန်လွယ်ကူအောင် ရေးဆွဲဖို့အတွက် framework တွေထဲက opensource framework တစ်ခုပါ။ အခု iphone အတွက် ဖြစ်တဲ့အတွက်ကြောင့် Mac OS 10.6 နဲ့Xcode ရှိထားဖို့လိုပါတယ်။ Cocos2d က အစက python နဲ့ရေးထားပြီးတော့ objective-c အတွက် သီးသန့် ပြန်ရေးထားတယ်လို့ ဆိုပါတယ်။

ဟုတ်ပြီ။ ကျွန်တော်တို့ အရင်ဆုံး http://www.cocos2d-iphone.org/download မှာ download လုပ်လိုက်ပါ။ stable version က cocos2d-iphone-0.99.4.tar.gz ပါ။ rc version ကတော့ cocos2d-iphone-0.99.5-rc1.tar.gz ပါ။ rc1 အခြေအနေ ရောက်နေတဲ့အတွက် stable မဖြစ်ပေမယ့် တော်တော် အဆင်ပြေပါတယ်။ 0.99.5 နဲ့ o.99.4 က ကွာတဲ့ အချက်တွေ ရှိပါတယ်။ 0.99.5 မှာ iPhone 4 retina display အတွက် hd image တွေ ထည့်လို့ရလာပါတယ်။ 0.99.4 ကတော့  iPhone 4 မှာ hd အနေနဲ့ support မရနိုင်ပါဘူး။ ဒါကြောင့် 0.99.5rc1 ကိုပဲ download ချစေချင်ပါတယ်။

cocos2d-iphone-0.99.5-rc1.tar.gz ကို ဖြည်လိုက်ပါ။ ပြီးရင် terminal ဖွင်ပြီး ဖြည်ထားတဲ့ folder ကို သွားလိုက်ပါ။

Terminal မှာ

$sudo sh install-templates.sh

ဆိုပြီး ရိုက်ပြီး cocos2d ကို သွင်းနိုင်ပါတယ်။ ပြီးရင် xCode ကို ဖွင့်လိုက်ပါ။ Create new project လုပ်လိုက်ရင် cocos2d template ကို user template အောက်မှာ တွေ့ပါလိမ့်မယ်။

အခု cocos2d သွင်းလို့ရသွားပြီဆိုတော့ နောက်ပိုင်း cocos2d နဲ့ game ရေးပုံလေးတွေ ဆက်လက်ရေးသားပေးပါ့မယ်။

gamedev-start

Starting Game Development

အရင်အလုပ် web development ကနေ ဘာမှ မဆိုင်တဲ့ iphone game development ကို ရောက်သွားတော့ စာတွေတော်တော် ပြန်ဖတ်လိုက်ရတယ်။ နောက်ပြီး မသိတာတွေ တော်တော်များများလည်း လေ့လာလိုက်ရတယ်။ Game Devloper လုပ်ချင်တဲ့ သူတွေ အရင်ဆုံး ကိုမြင့်ကျော်သူရေးထားတဲ့ post လေးတွေကို ဖတ်သင့်တယ်။ ကိုမြင့်ကျော်သူကတော့ Game Dev နဲ့ ပတ်သက်လာရင် ဆရာကြီး တစ်ဆူလို့တောင် ဆိုလို့ရမယ်။ မြန်မာနိုင်ငံကနေ နိုင်ငံတကာကို game ရောင်းနေတဲ့ Total Game Studio ဆိုပြီး အောင်မြင်တဲ့ Game Studio တစ်ခုလည်း ရှိတယ်။ ဒါကြောင့် Game Developer မလုပ်ခင်မှာ သူရေးထားတဲ့ post လေးတွေကို ဖတ်သင့်ပါတယ်။
Continue reading

Learn Objective-C : Day 6

ဒီနေ့တော့ Day 6 ရောက်ပါပြီ။ ဒီနေ့က categories လို့ခေါ်တဲ့ cocoa Touch အကြောင်းပါ။ လက်ရှိ object တွေကို implement ထပ်လုပ်တဲ့အကြောင်းပေါ့။ အရင်တုန်းက ရေးခဲ့တဲ့ အပိုင်းတွေကတော့

Other Articles In This Series

Categories

Categories ဆိုတာ ဘာလဲ ? Objective-C tutorials တော်တော်များများမှာ categories ကို တွေ့နိုင်ပါတယ်။ အလွန်ပဲ အသုံးဝင်ပြီးတော့ code ကော သပ်သပ်ရပ်ရပ် ဖြစ်စေတယ်ဆိုလည်း မမှားပါဘူး။ အခုကျွန်တော်တို့တွေ မကြာခင် လေ့လာရတော့မှာပါ။ NSString function မှာ ကျွန်တော်တို့ ကိုယ်ပိုင် function တွေ ထည့်ချင်တဲ့ အခါတွေရှိပါတယ်။ ဥပမာ။။ a chatacters တွေကို 4 ပြောင်းလိုက်တဲ့ function မျိုးပေါ့။ ကျွန်တော်တို့တွေ NSString ကို subclass ရှိပြီး ကိုယ်တိုင် method ကိုယ့်ဘာသာကိုယ် ထည့်သွင်းနိုင်ပါတယ်။ subclass ပိုင်းကို ကျွန်တော်တို့တွေ car class ဆောက်တုန်းက တွေ့မြင်ဖူးမှာပါ။ subclass က တော်တော်ကောင်းမွန်ပါတယ်။ သို့ပေမယ့် categories က ပိုပြီး ပြည့်စုံကောင်းမွန်တယ်လို့ ဆိုလို့ရပါတယ်။

Categories က ကျွန်တော်တို့တွေကို methods အသစ်တွေကို ရှိနေတဲ့ class မှာ ထပ်ဖြည့်ထည့်ခွင့်ပေးထားပါတယ်။ ဥပမာ။။ 100 NSString Objects ကို သင့် app မှာ သုံးထားတယ်ဆိုပါဆို့။ reverstring function ကို extra method အနေနဲ့ ထည့်ချင်တယ်ဆိုရင်တော့ custom subclass ကို အသုံးပြုနိုင်ပါတယ်။ သို့ပေမယ့် Categories နဲ့ဆိုရင်တော့ ပိုပြီး ရိုးရှင်းပြီး လွယ်ကူတယ်လို့ ဆိုနိုင်ပါတယ်။ နောက်ပြီး ရှိနေဲ့ method တွေကိုလည်း overwrite လုပ်ပြီး အစားထိုးဖို့ကလည်း ဖြစ်နိုင်ပါတယ်။ Continue reading

UITableView Edit to Done Button

ကျွန်တော် UITableView Delete Tutorial မှာ တုန်းက Edit button နှိပ်လိုက်ရင် Delete လုပ်ဖို့အတွက် ပြောင်းသွားပါတယ်။ Edit ပြန်နှိပ်လိုက်ရင် UITableView က Edit ပုံစုံပြောင်းသွားပေမယ့် Edit ကတော့ Done မပြောင်းသွားပါဘူး။ ပြောင်းသွားအောင် နည်းနည်း ပြင်ဖို့လိုပါတယ်။

Continue reading

UITableView Add Tutorial

မနေ့က UITableView Delete ကို ပြောပြီးပါပြီ။ အဲဒီ delete မှာပဲ နည်းနည်း ပြန်ပြင်ပါမယ်။

- (void)viewDidLoad {

ရဲ့ အောက်ဆုံးမှာ အောက်ကလို ဖြည့်လိုက်ပါ။ Add button ကို navigation bar ရဲ့ ညာဘက် ထိပ်ဆုံးမှာ ထည့်လိုက်တာပေါ့။

//Crate Add Button
UIBarButtonItem * addButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self action:@selector(addTable)];
self.navigationItem.rightBarButtonItem=addButton;

Continue reading

UITableView Delete Tutorial

UITableView Tutorial ဆိုပြီးတော့ ကျွန်တော် ရေးပြီးပါပြီ။ ဆက်ပြီးတော့ ထည့်ထားတဲ့ record ကို ပြန်ဖျက်ဖို့ လုပ်ကြည့်ရအောင်။

ပထမဆုံး tableview နဲ့ ချိတ်ဆက်ဖို့အတွက် IBoutlet တစ်ခုကြေငြာဖို့လိုပါတယ်။ အဲဒီတော့ RootViewController.h မှာ ဒီလိုရေးလိုက်ပါတယ်။

#import

@interface RootViewController : UITableViewController {
NSMutableArray *listItem;
IBOutlet UITableView *tableview;
}
@property(nonatomic,retain) NSMutableArray *listItem;
@property(nonatomic,retain) IBOutlet UITableView *tableview;

@end

ပြီးရင်တော့

@synthesize tableview;

ကို RootViewController.m မှာ ဖြည့်ပေးဖို့နဲ့

[tableview release];

ကို dealloc မှာ ထည့်ပေးဖို့ မမေ့ဖို့လိုပါသေးတယ်။

RootViewController.xib ကို ဖွင့်ကြည့်လိုက်ပါ။ Bottom Bar မှာ Toolbar ရွေးလိုက်ပါ။ UITableView မှာ Toolbar ပေါ်လာပါလိမ့်မယ်။

အဲလို ပြောင်းပြီးရင် IBoutlet ချိတ်ဖို့အတွက် File’s Owner ကို click လုပ်ပါ။ ပြီးရင် ဒုတိယ tab ဖြစ်တဲ့ Connections Inspector ကို သွားပါ။ အဲဒီမှာ tableview ဆိုပြီး ပေါ်နေပါလိမ့်မယ်။ အဲဒီ tableview က ညာဘက် စက်ဝိုင်းလေးကို drag ဆွဲပြီး uitableview နဲ့ ချိတ်ပေးလိုက်ပါ။

ပြီးရင်တော့ coding ကို ပြန်သွားပါမယ်။
Continue reading