Saturday, April 25, 2009

Coder.mn -ийг нээлттэй эх болголоо

Кодер.мн програмчлалын тэмцээний вэб сайтын эх кодыг нээлттэй болголоо. Кодер дээр жинхэнэ кодерууд цугладаг учраас дуртай сайтынхаа хөгжүүлэлтэнд оролцоно байх аа гэдэг бүрэн итгэж байна. Ер нь анхнаас нь л сайтынхаа эх кодыг нээлттэй болгох санаа төрөөд явсан боловч боломж нөхцөл бүрдэхгүй байсаар өдийг хүрчлээ. Кодыг github дээр тавьсан. Оролцох хүсэлтэй хүмүүс fork хийж аваад хөгжүүлэлтэд оролцохыг уриалж байна.

Хөгжүүлэлтэд оролцоход шаардлагатай зүйл гэвэл rails, git. Бас github дээр хөгжүүлэлт хэрхэн явагддаг тухай мэддэг байх хэрэгтэй. Github бол програмчдын social network билээ. Үнэхээр л дараагийн SourceForge юм. Саяхан issue tracking нэмэгдсэн нь бүр их таалагдсан. Одоо юу хийх шаардлагатай байгаад issue list -ээс нь хараарай.

За ингээд кодерууд аа, Happy Social Coding!

git - Distributed Revision Control

Би CVS ашиглаж байлаа, SVN ашиглаж байлаа. git -ийг зохиосон Линус хэлэхдээ, хэрэв та CVS -ийг хэрэглээд сэтгэл хангалуун байдаг бол толгойдоо "юмтай", харин SVN бол түүхэн дэх хамгийн утгагүй төсөл байсан гэжээ. Бодвол CVS-ээс ялгаагүй гэж байгаа бололтой. git -ийн давуу тал нь төвлөрсөн бус жинхэнэ тархсан систем юм. Хүн болгон өөрийн хувилбар дээр ажиллах бөгөөд commit хийхэд хэнээс ч асуух шаардлагагүй, дараа нь кодоо хаа нэгтээ push хийчихнэ, эсвэл хэн нэг нь чамаас pull хийгээд авчихна, энд ямар нэг permission энэ тэр хэрэггүй, ардчилсан шинжтэй. Төвлөрсөн сэрвэр гэж байхгүй. Жишээ нь өөрийн компьютер дээр ажилаж байхад офлайн ажиллаад commit хийгээд байж болно гэсэн үг. Олон үг ярьхаар хэдэн жишээ үзье дээ.

Нэг директор байгаад тэр дотор байгаа файлуудыг git рүү оруулья.

# cd pjdir
# git init

Файлыг git удирдлага дор оруулья.

# git add myfile.c
эсвэл директорыг тэр чигээр нь...
# git add mydir

Файлыг commit хийж хадгалья

# git commit -m "firt import" myfile.c

Файлуудын төлөвийг харах

# git status

За энэ хүртэл бол ерөнхийдөө SVN эдэртэй төстэй байгааг өмнө нь ямар нэг revision control систем дээр ажиллаж байсан бол ажигласан байх. Гэхдээ энд хийгээд байгаа коммит эд нар бүгд зөвхөн чиний компьютер дээр болж өрнөөд байгаа гэдгийг санаарай. Одоо жинхэнэ ид шидийг үзье гэвэл тархсан байдлаар яаж ажиллахыг хар даа.

Найз Доржийн кодыг холбоё.

# git remote add dorj ssh://computer_of_dorj/path/to/app.git

Одоо Доржийн master мөчрийн кодыг өөрийнх рүүгээ нийлүүллээ.

# git pull dorj master

Тэгээд баахан код бичлээ, тэрийгээ commit хийчлээ. Гэхдээ өөрчлөлтүүд маань миний л компьютер дээр байгаа. Сүүлийн хувилбараа рилийзэд бэлдэж мөчир үүсгээд хадгалчихья.

# git branch beta_branch HEAD^

Рилийз хийх хүнд миний код бэлэн болчлоо гэдгийг мэдэгдлээ. Рилийз хийгч миний кодыг өөрийн компьютер дээрээс ингэж авах нь.

# git remote add ochiro ssh://computer_of_ochiro/path/to/pjdir/pjdir.git
# git pull ochiro beta_branch

Өөр компьютер дээр байгаа git рүү ssh протоколоор хандах хамгийн нууцлал сайтай. Дээрхи жишээнүүдэд дандаа ssh гэсэн байгаа. Бас git://server/path/projectname.git гэж хандаж болно. Гэхдээ энд ч гэсэн цаанаа бол git: гэдэг нь ssh: юм л даа. Энэ бичлэгээ git-ийн танилцуулга төдийгөөр өндөрлөөд цааш лавлаж харах бол хэрэгтэй хэдэн линк үлдээлээ. Нэмж хэлэхэд git-ийн хувьд би үнэхээр сэтгэл хангалуун байгаа шүү, туршаад үзээрэй. Happy Coding!

Tuesday, April 21, 2009

Он-толийн Англи-Монгол толийг Stardict рүү хөрвүүлэв

Өмнө babylon-толийг stardict рүү хөрвүүлж 2 толийг гаргасан. Сая он-толийн Англи-Монгол толийг хөрвүүллээ. Татаж аваад хэрэглээд үзээрэй. Он-толийнхондоо баярлалаа.

Хэрхэн хөрвүүлэх(Үбүнтү дээр):

# sudo apt-get install dictconv stardict-tools
# dictconv -o on-toli.dic on-toli.com.bgl
# convert_to_unicode.sh on-toli.dic
# /usr/lib/stardict-tools/tabfile on-toli.dic.unicode

Тайлбар:
convert_to_unicode.sh -гэдэг нь текст файл доторхи крил үсгүүдийг юникод руу сольдог скрипт байгаа юм. Хэрэв та *mon фонтууд(юникод биш) хэрэглэдэг бол юникод руу хөрвүүлэхгүй байсан ч болно. Юникод фонтууд хэрэглэдэг бол ямар нэг аргаар *.dic файлыг юникод болгочихож чадна биз ээ.

Tuesday, April 14, 2009

Полиглот програмчлал

polyglot ['pɔliglɔt] : speaking or using many languages, multilingual

Полиглот програмчлал гэдэг нь олон хэлийг нэг дор хэрэглэх юм. Та өөрийн хийсэн нэг төслийг жишээ болгоод хэдэн хэл ашигласнаа хэл дээ. Нэг л хэл ашиглсан байна уу? Би таая л даа, Жава л биз дээ. Биш үү, тэгвэл .NET байх? Бас л биш үү? За яахав PHP юм болов уу? Таагаагүй бол бууж өглөө, коммэнт дээр ямар ямар хэл байсныг бичээрэй. Ганцхан хэл ашиглаад програм бичдэг цаг аль эрт улиран өнгөрсөн гэдэгтэй санал нэг байгаа байх. Дор хаяж л SQL хэл ашиглаж өгөгдлийн сантайгаа харьцаж байгаа биз. Вэб апликэшн хийдэг бол HTML, Javascript, CSS-ийг ашиглаж л таараа. Ингэхээр програм бичигчид өдөр тутамдаа полиглот програмчлал хийдэг байхнээ. Олон янзын юм хэрэглээд тэр бүгдийг сурах, хооронд нь холбох гэж яршиг түвэг гэх хүн байх нь мэдээж. Тэр ч үнэн л дээ, гэхдээ буруу ашиглавал.

Скрипт хэлнүүдийг том төсөл хийхэд тохиромжгүй, удаан ажилладаг гэх шүүмжлэл байдаг. Тухайлбал Python, Ruby гэх мэт. Гэтэл эдгээр динамик хэлнүүдийн уян хатан чанар үнэд орох тохиолдол бишгүй. Ийм ч учраас JRuby, Jython, Haskell.net гэх мэтийг хэрэглэх болсон байдаг. Erlang, Haskell зэрэг functional хэлнүүд дээр concurrency буюу олон үйлдлийг зэрэг хийх, бие биеээс хамааралгүй логик голдрилуудыг загварчлах нь маш амарханаас гадна, сүүлийн үеийн технологи болох multicore -уудын бүрэн үр ашгийг үзэж чаддаг. Гол нь ямар зорилгод аль хэлийг ашиглахаа зөв сонгох нь чухал. Ruby хэл бол уян хатан, хэрэглэхэд амархан байдаг динамик хэл. Erlang бол мэссэж дээр тулгуурласан олон үйлдэл зэрэг хийхэд тохиромжтой хэл гэх мэтээр хэлнүүдийн давуу болон сул талыг тооцох хэрэгтэй. Энд олон өөр хэл хэрэглэхийн хажуугаар өөр өөр хандлагууд(Обект хандлагат, Функционал, Динамик г.м) хэрэглэгдэж байгаа нь ойлгомжтой.

Тухайн тохиолдол болгож асар өндөр хурдтай мэссэж(гүйлгээ ч юмуу, юу ч байж болно) солилцдог вэб апликэшн хийх болжээ гэе. Вэб апликэшнийг хурдан хугацаанд босгохын тулд Rails(Ruby on Rails) фрэймворкыг ашиглаж нүүрэн талаа хийгээд, Erlang дээр ар тал буюу мэссэж боловсруулах болон дамжуулах хөдөлгүүрийг хийж болно.

Дараа Erlang -ийн тухай бичих болно. Одоогоор "Programming Erlang: Software for a Concurrent World" номыг уншиж байна.