Badral's personal blog
Интернет миний ертөнцийг хардаг цонх …

February, 2008Archive for

Програм хангамжийн инженер болох гэж буй залууст

Tuesday, February 26th, 2008

За сүүлийн 2 сард 4-5 залуус хувийн имэйл хаягаар “програм хангамжийн инженер болохын тулд юу юуг давуу үзэж судлах вэ?” гэсэн асуулт тавьж зөвлөгөө хүсчээ. Ер нь сүүлийн үед сардаа бараг нэг ийм хүсэлт ирж байгаа тул энэ тухай блог дээрээ нэг бичээд тавьчихъя гэж бодлоо. За би өөрийн бодол, өөрийн туршлага, амьдрал дээрээ тулгуурлан бичье. Энэхүү бичлэгийг бичихийнхээ өмнө би ер нь зөвлөгөө өгөх хэмжээнд хүн мөн үү биш үү гэж удтал бодсоны эцэст КТМС-ыг төгсөөд монголд ажиллаж байгаа нэгэн залуугийн надтай ярилцаж байхдаа “их сургуульд сурч байхад, эсвэл ядаж төгсөөд гарах үед эргэлзээгүй чиглүүлээд өгөх хүн алга байна даа” гэж байсан санаанд ороод ямар ч гэсэн өөрийн хэмжээнд байгаа зүйлээ бичье гэж бодлоо.
За эхлээд та бүхэн энэ блогийг эхлэж байхад бичсэн Програм хангамжийн инженер гэж хэн бэ? гэсэн бичлэгийг уншсан байх гэж бодож байна. Үгүй бол эхлээд нэг гүйлгээд харна уу. Юуны өмнө хэн болох гэж байгаагаа мэдэх нь чухал!
Тэнд дурдсан гол санаа нь программист болон програм хангамжийн инженер 2 ялгаатай шүү гэдэг ойлголт. Нэг нь математик талыг барьж хийсвэр загвар гаргаж, програмчлалын код бичдэг бол нөгөөх нь (энэ сэдвийн гол баатар) инженерчлэлийг барьж амьдрал дээр буй бодит зүйлс ба өрнөж буй процесс, үйл ажиллагаа зэргийг загварчлан компьютерт системчлэн оруулдаг гэх үү дээ. Энэ утгаараа програм хангамжийн инженерчлэл нь компьютерын шинжлэх ухааны хамгийн хүнд салбарт ордог шинэхэн салбар. Үнэхээр дэлхий дээрх бодит үйл явц нь нэгэн утгатай бус, янз бүрийн олон талт, бяцханаас эхлээд нүсэр, үргэлжилсэн том ч байдаг тул түүнийг загварчилж компьютерын хэл дээр буулгана гэдэг амаргүй л дээ. Мөн нэг ялгаа нь программист хүн аливаа зүйлийг хурдан хүлээж авч ойлгоод, онолын мэдлэгээ аль болох их ашиглан оновчтой кодчилол, сайн алгоритм бичиж чаддаг байх ёстой бол програм хангамжийн инженер нь түүний хийх зүйлийг системийн нэг хэсэг (implementation) гэж үзээд бүхий л системийн загварыг гаргаж системчлэх болон холбох чадвартай байх ёстой. Үүний тулд та ямар ч программистын бичсэн кодыг хэд гүйлгэж хараад аль болох түргэн ойлгочих чадвартай байхгүй бол горьгүй.
Инженер болон инженерчлэл (уг нь инженерийн шинжлэх ухаан гэхдээ хэрэглэхэд арай л урт байсан юм) гэдэг гадаад үг манай зарим хүнд нилээн учир битүүлэг сонсогддог тул нэг өгүүлбэрээр тайлбарлая.

Инженер нь шинжлэх ухааны онолын хэрэглээн дээр суурилсан бөгөөд амьдрал дээр техникийн мэдлэг болон аргачлалал, туршлагаар батлагдсан, системтэй мэдлэгээр тодорхойлогдох мэргэжил юм.

Инженерчлэл нь хэрэглээнд хандан, амьдралд хэрэгжүүлэхээр судалж шинжилсэн, байгалийн шинжлэх ухааны мэдлэгийг ашиглан техникийн судалгаа болон хөгжүүлэл эсвэл байгууламж болон үйлдвэрлэлийн аргачлалыг хийдэг шинжлэх ухаан юм.

Програм хангамжийн инженер хүний авьяас нь загварчлах бол, хамгийн сайн барих ёстой зүйл нь маш системтэй (цэгцтэй), зарчимч журамтай байх явдал.
Нэгэнт хэрэглээний талын ухаан тул та өөрийн гэсэн арга барилыг ихэвчлэн туршлагаараа өөрөө олж авдаг.
За оршил дууслаа. Гарчигт өгсөн гол сэдэвтээ оръё.
Хэрэв та програм хангамжийн инженер болох гэж байгаа бол юуны өмнө

  1. Addison-Wesley -с гаргасан ном бол ядаж шагайгаад гараараа имрээд харчихад ер нь илүүдэггүй. 😉 Хамаа замбараагүй ялангуяа америк номууд унших хэрэггүй.
    Жинхэнэ шинжлэх ухааны, сайхан эмх цэгцтэй бичигдсэн ном л унших хэрэгтэй. Англи хэл дээр бол
    1. I. Sommerville: Software-Engineering, Addison-Wesley
    2. C. Ghezzi, M. Jazayeri, D. Mandrioli: Fundamentals of Software Engineering, Prentice Hall
    3. Ian Bray. An Introduction to Requirements Engineering, Addison-Wesley
    4. Roger S. Pressman. Software Engineering: a beginner’s guide, McGraw Hill New York, (эхлэгчдэд дажгүй)
    Герман хэл дээр бол
    1. M. Nagl: Softwaretechnik: Methodisches Programmieren im Großen, Springer
    2. H. Balzert: Lehrbuch der Software-Technik 1, 2 Spektrum Akadem. Verlag
    Харамсалтай нь монгол хэл дээр зөвлөчих ном мэдэхгүй юм. Зав зай маань хүрдэг бол нэг сайн ном бичих (муу болчихвол гаргаж хүн хорлох хэрэггүй) мөрөөдөл төдий зүйл надад байдаг боловч бараг л амжихгүй биз ээ.
  2. Янз бүрийн сайн дурын төслүүдэд оролцох. http://sourceforge.net дээр олон мянган төсөл бий. Хэлний бэрхшээлтэй байвал ОпенМН янз бүрийн олон төсөл эхлүүлсэн боловч хүн хүч дутаад байж л байгаа.
    Энэ бол бараг зөвхөн манай мэргэжлийнхэнд л олддог алт шиг сайхан боломж! Хамгийн сайн арга гэж би боддог! GNU, FSF, Unix/Linux, GPL, BSD, Berkeley болон Massachusetts институтууд, SUN, Novell, IBM -д БАЯРЛАЛАА.
  3. Янз бүрийн технологи, програмчлал руу хошууран яаран дайрах хэрэггүй. Мэдээж таны өргөн тархаж хурдан хөгжиж байгаа технологиудыг харах, судлах хэрэгтэй. Гэхдээ эхлээд яагаад энэ амжилт олоод байгааг нь эргэцүүлэн бодож харьцуулах хэрэгтэй. Walther Rathenau -н хэлсэн “БОДОХ ГЭДЭГ БОЛ ХАРЬЦУУЛАХ ЮМ” гэдэг үнэн шүү!
    Аливаа технологи бүр өөрийн гэсэн сайн талтай боловч түүнээ дагаад заавал сул тал байдаг.
    Хөгжлийн араас бүү гүй!
    Та өөрөө л эхлүүлээгүй бол гүйцэхгүй.
    Харин ажиглаж байгаад товчилж алх!
    Өөрөө сэтгэсэн тул гүйцэгдэхгүй.
  4. Амьдралд тааралдаж байгаа зүйлс үйл явдлыг яаж загварчилж болохыг нь дотроо хаяа ядаж бодож байх хэрэгтэй. Амархан зүйлс ч бас их байдаг тул ядаж урам орно.
  5. Хэрэв ямар зүйл сурах гэж байгаа бол төсөлд оролцохдоо заавал менежерийн дүрд тоглох хэрэггүй. Харин сайн менежертэй төслийн туслахаар юм уу ажиглагчаар ороод үзэхэд их зүйл сураад авна.

Дээрх зүйлс нь арга барилаа олж авахад тань туслах болов уу. Ямар ч мэргэжилийнх байсан ялгаагүй аливаа хүн ажлын багаж хэрэгсэлгүй бол хөдөлмөрийн бүтээмж яаж олигтой байх билээ. Програм хангамжийн инженерийг дараах зүйлсгүйгээр төсөөлөх аргагүй. Хэрэв тэдгээрийн ядаж нэгийг нь гаргуун эзэмшиж чадаагүй бол програм хангамжийн инженер биш гээд хэлчихэд буруудахгүй болов уу.

  • Объект хандалтат технологийн хувь UML -гүйгээр төсөөлөх аргагүй. Хамгийн сайн мэддэг, чаддаг байх ёстой зүйл тань энэ. Барилгын инженерийн техникийн зураг зүйтэй л төстэй. Төстэй гэдгийн учир нь зөвхөн физик объект загварчлах бус процесс үйл ажиллагааг нэмж загварчлах ёстой. Барилгын инженер хүн хөдөлгөөнгүй физик объектуудыг загварчилдаг бол програм хангамжийн инженер хүн ихэвчлэн процесс үйл явцийг хөдөлгөөнгүй объекттой холбон загварчилдаг. Харин объект хандалтат бус технологийн хувьд SA (structured analysis) DFD, ERD зэргийг багтаагаад шүү эзэмших хэрэгтэй.
    UML загварчлалын хэрэгслүүд болох ArgoUML, Fujaba, Poseidon, MagicDraw, Objecteering зэргийн аль нэгийг сайн эзэмших. Онцлох нь үнэгүйгээс Fujaba, үнэтэйгээс Poseidon.
  • Юу болохыг нь нарийн мэдэхгүй байж болохгүй хэдэн түлхүүр үгс бичье. Prototyping, Design pattern, MDA, FMC, RDBMS, ODBMS, OO, Agile
    за нилээн олон л байх ёстой. Яг одоо толгойд илүү орж ирсэнгүй.
  • Өгөгдлийн баазын ерөнхий загварчлал хийж сурах. Oracle, SAPDB, MSSQL, MYSQL, PostgreSQL гээд юу байх нь хамаагүй.
  • Та сайн инженер байя гэж бодож байвал олон талт байх хэрэгтэй. Та eclipse, .NET platform-ууд, CVS, SVN -г гарын хуруу шигээ ашиглаж чаддаг болох хэрэгтэй.

Ер нь програм хангамжийн инженер хүний хийдэг ажил нь ихэвчлэн Програм хангамжийн инженер гэж хэн бэ? бичлэгт байгаа диаграмын дагуу явдаг ба эхний үе шатанд асуудлын анализ хийж зорилгоо аль болох бүрэн тодорхой тогтоож чаддаг болох. (Энэ тал дээр би өөрийгөө сул гэж боддог) Үүний тулд та RE буюу Requirements Engineering -г судлах хэрэгтэй.
хоёрдугаар үё шатанд програм хангамжийн архитектур загвар гаргах хэрэгтэй болдог. (энэ дээр өөрийгөө муугүй гэж боддог) Архитектур гаргахдаа та ихэвчлэн дээр дурдсан UML, SA, DB designer ашиглан үндсэн загвар гаргах ба зөвхөн програм хангамжийн загвар бус яаж цааш арчлах концепт, хөгжүүлэх стратегийг гаргах ёстой. Жишээлбэл Control of version, Variant, Configuration management (SVN, CVS хэрэглэгдэнэ. Eclipse-ийн хувьд би дээр нэг Eclipse SVN тэй ажиллах гээд нэг яаж суулгах тухай маш товч юм бичсэн.
Төслийн удирдагчтайгаа ярьж нэг нэгнээ сайн ойлгож авч нэгдсэн нэг ойлголттой болсон байх ёстой. Кодын стандартаа тогтоох хэрэгтэй. Архитектурын загвар тухайн системийн онцлог ч юумуу, хүнд хөнгөнөөс шалтгаалан яаж ч гарч болох ба уламжилалт (SA), Object Oriented (UML) эсвэл Modular (Programming in the Large) гээд янз бүр байж болно. Аль алинаар нь хийх чадвартай болох хэрэгтэй.
Гуравдугаар үе шатанд та ямар ч програмчлалын хэлээр сайхан код бичдэг байх шаардлага гарна. Программ хангамжийн инженер сайн програмист байх хэрэгтэй. 🙂
Дөрөвдүгээр шатанд маш сайн багаар ажиллах чадвартай байх хэрэгтэй бөгөөд бусдынхаа хийж байгаа зүйлсийг нь ядаж багцаалдаж чаддаг байх. Холболт хийхэд асар хэрэгтэй.
Тавдугаар үе шатанд сайн тестлэгч байх хэрэгтэй ба Blackbox, Whitebox, Graybox concept-уудыг ядаж эзэмшсэн байх хэрэгтэй. Энэ тухай интернет багшаас л мэдээд авчихна бизээ.
Зургаа буюу сүүлийн шат таны архитектур хэр гаргасанаас шалгаална даа. Арай ахин шинэ загвар гаргахдаа тулахгүй л байх хэрэгтэй.
За шөнийн 3 өнгөрчихлөө. Нойр хүрээд энэ бичлэгийг сүүлдээ дуусгахын түүс болоод сүүлийн хэдийг нь ч баахан формалдчихав уу даа. Ойлгоно буй за. Юу судлах хийх талаараа жаахан ч гэсэн чиг авсан гэж найдъя. 😉

Бадаа

Openoffice build failed

Monday, February 25th, 2008

За бүтэн сайн өдөр Опенофисын монгол орчуулгаа оруулан опенофисоо шинээр build хийх гэж нилээн нухлаа.
Платформоо доошлуулж хуучин хуучин хувилбар хэрэглэхгүй бол Ubuntu gutsy арай л шинэдээд болж өгдөггүй ээ.
Эхлээд хөрвүүлж эхэлтэл 40 орчим минутын дараа hsqldb дээр тасарчихлаа. Тайланг нь хартал үсрээд л Java 1.5 хэрэглэх ёстой юм байна. Хөгжүүлэгчид мэдэгдтэл дараагийн хувилбартаа л янзлахаас patch байхгүй гэж байна. За жава -гаа 1.5 руу буулгалаа (downgrade). Ахиад эхлүүлтэл гайгүй явж байснаа цагийн дараа libcairo2 пакет дээр гацлаа. Үзтэл gutsy libcairo2 update дэмжигдээгүй байна. Буцаагаад ямар плотформоо тэр чигээр нь feisty болголтой биш sources.list -д feisty repository-г нэмж байгаад зөвхөн libcairo2-г доошлууллаа. Гэтэл gtk+2-dev болон 50 орчим libgnome-dev пакетууд давхар устчихлаа. Эргээгээд суулгах эсвэл шинэчлэх гэхээр libcairo2 шинэчлэгдэх гэж дайраад болдоггүй. Сангийн бинар хувилбарыг нь хадгалаж байгаад буцаагаад шинэчилчихлээ. Тэгээд символик холбоос үүсгээд хуучин libcairo2 руу нь заачихлаа. Овоо явж байнаа. 1 цаг 40 минутын дараа autodoc дээр бас л тасарчихлаа. Уур хүрээд tcsh биш bash (амар зүгээр configuration script бичье гэж үзээд) дээр хөрвүүлэхээр шийдлээ. Дутуу хөрвүүлэлтээ цэвэрлэж байгаад bash script-ээрээ ахин тохиргоо хийгээд эхлүүллээ. Овоо явж байгаад openssl пакет дээр ахиад тасарчихлаа.
За хөөрхий өдөр өнгөрсөн байлаа. Шөнийн 1 цаг болж байв.
Уг нь боломжтойсон бол тусдаа өөр ПК дээр сайхан цэвэрхэн хөгжүүллийн орчин үүсгээд хөрвүүлбэл амархан бөгөөд цэвэрхэн болох нь дамжиггүй л дээ. Яахав тест юм гэж үзээд өдөр тутам хэрэглэдэг систем дээрээ зүтгүүлж үзээд барсангүй ээ. Уг нь feisty дээр хөрвүүлж болж байсан юм.
Одоо арай өөр аргаар үзнээ. Шинэ партишн дээр өөр GNU/Linux дистро эсвэл Ubuntu feisty суулгаж байгаад л тусад нь хийхээс. Гол нь chroot-р хөрвүүлэх боломжгүй болохоор хажуугаар нь хэрэгтэй зүйлсээ хийж чадахгүй цаг түгжигдчихээд байдаг юм.
Энэ долоо хоногийн амралтын өдрүүдээр ахиад нухахаас даа. Багийн гишүүдээс хүлцэл өчье!

Болор Агуулга Удирдах Системийн талаар товчхон

Saturday, February 16th, 2008

За сүүлийн үед зарим нэг сонин хүмүүсээс Болор АУС-ын харилцахаар хачин хачин мэйл ирсэнийг хараад энэ тухай мэдээлчихье гэж бодлоо.
“Suhee” suhee_ba86 эт yahoo.com гэсэн хаягаар “Joomla zaschihsan CMS yum bishuu yamar aimaar unetein.” гэсэн мэйлд хамгийн их эгдүү хүрлээ. Хэрвээ ямар нэг сайт руу ороод уншдаг бол http://cms.bolorsoft.com дотор яаж хийсэн тухай концепт, архитектур нь монгол, англи хэл дээр хүртэл бий.
Харин ч ёстой ямар нэг CMS-c нэг үсэг ч хуулсан зүйл байхгүй тул ам бардам хэлье! Хууллаа заслаа гэхэд явж явж муу joomla-г сонгоно ч гэж юу байхав дээ. Маш нарийн ярьвал LGPL лиценз бүхий 1 ширхэг л өөр хэрэгсэл ашигласан бөгөөд тэр нь TinyMCE editor.
Ямар ч CMS-с санаа авсан юмуу хулгайлсан зүйл байхгүй. Харин ч ямар нэг системийн код харчихвал дуурайгаад өөрөө сэтгэхгүй юм болох вий гэдгээс айгаад ямар нэг зүйл интернэтээр ч хайж үзээгүй ээ бичсэн систем. Вэб програмчлал гадарладаг хүнд бол ч уг нь ямар нэг системийн хуулбар биш болох нь мэдэгдэнэ л дээ. Өөрөө програмын архитектур, загвараа гаргаад концептоо боловсруулаад кодоо ганцаараа бичсэн. Одоогийн байдлаар бүх модуль болон үндсэн системийн эх код 13 МБ болсон байгаа бөгөөд үнийн хувьд өөрийнхөө чадвартай эн зэрэгцэх системүүдээс хэд дахин хямд байгаа. Хэдийгээр олон зарагдаагүй байгаа ч худалдаж авсан хэрэглэгчид ямар ч гэсэн сэтгэл хангалуун байгаа.
Худалдан авч хэрэглэж байгаа хүмүүстэй баталгаа гаргаж өөрийн хийсэн зүйлсээ энэ мэт хардлагаас сэргийлэх үүднээс энэ зун монголд очихдоо зохиогчийн эрх патент гэрчилгээг нь авъя даа. Өөр ч юу хэлэхэв.

Болор толь шинэчлэгдлээ

Wednesday, February 13th, 2008

За өнөөдөр болор толио шинэчиллээ. Гэхдээ туршилтын хувилбар хэвээр. Шалгагдаж байсан 5 000 орчим англи үг 20000 монгол үгийн тайлбартайгаар нэмэгдэж Болор толийн Англи толгой үг 84 815 -д Монгол толгой үг 154 342 -д хүрлээ. Нийт үгс 327 944 -д хүрлээ. Энэ нь англи+монгол гэсэн үгсийн тоо биш бөгөөд 84 815 англи үг салаа утгынхаа хамт 327 944 болсон гэсэн үг юм.
Жишээ үгс болон өгүүлбэрүүд хараахан нэмэгдээгүй бөгөөд ОпенМН багийн орчуулгын ажлын хүрээнд хийгдсэн үгсээс 20 000 нь хараахан ороогүй шалгагдаж байна. Бичиглэлийн алдааг шалгаж дуустал нилээд цаг орох бололтой.
Мөн анагаахын нэр томьёог монголчлох нь тун хүндрэлтэй байгаа тул нилээн дутуу хангалт муутай байсаар байна. Ихэнх нь орос транлитарцаар хэрэглэгддэг юм байна. Тэдгээрийг уг нь шууд англиас нь транскрифтлэвэл дээр санагдаад эргэлзсээр байна. Та бүхэн санал бодлоо хуваалцаарай.
Өмнө мэдээлж байсан даалгаваруудаас хийгдсэнүүдийг дарчихлаа.

  • Хэрэглэгчийн оруулсан үг зөв эсэхийг шалгаад буруу үг бол төстэй үгсийг санал болгох боломж нэмэх
  • Жишээ бичвэрүүдийг шалган нягтлаад нэмэх
  • Хэрэглэгчдэд үг/утга нэмэх, засах болон байхгүй үгсийг хэлэлцэх зэрэг боломжуудыг хангах.
  • Хуучин байсан орчуулсан үгсийг хянаж оруулна. Бүрэн бус
  • Герман<->Монгол чиглэлийг оруулна. Үгсийн сангийн хувьд Англи<->Монгол той тэнцүү хэмжээнд очих болов уу
  • Орос<->Монгол чиглэлийг оруулна. Үгсийн сангийн хувьд Англи<->Монгол той тэнцүү хэмжээнд очих болов уу
  • Веб хувилбарын анхны жинхэнэ хувилбарыг бэлэн болгох
  • P2P зарчмаар ажиллах клиент програм бичих.

Гэхдээ дээрх зүйлсээс гадна хэрэв хэрэглэгч хайсан боловч олдоогүй үгсийг хадгалаж авч байгаа. Одоохондоо би завандаа хааяа орчуулж оруулж байгаа ба яваандаа хэрэглэгч бүрийн хувьд санал оруулах боломж нэмнэ.
Мөн хайлтын хурд 2 дахин нэмэгдсэн болно. Цааш өгөгдлийн бааз нилээд хурдтай өсөхөөс гадна хэрэглэгч ихсэхийг тооцоод техникийн шилдэг шийдэлд жаахан толгойгоо гашилгаж явна.

Цагаан сар ба хар нулимс

Friday, February 8th, 2008

Сайн байцгаана уу? Сар шинэдээ сайхан шинэлэж байна уу. Өнөөдөр 2008 оны 2 сарын 8. Монголын (Дорнын/Сарны байсныг өөрчлөв) цаг тооллоор хаврын тэргүүн сарын шинийн нэгэн.
Өөрийн гэсэн юм бүхэн сайхан. Өвгөдөөс өвлөж авсан цагаан сар маань бүр сайхан. Энэ сайхан баяр нь бидний өвөг дээдэс өвлийн жаврыг өнөтэй даван гарч урин хавартай золголоо гэж, үр хүүхдүүдээ цуглуулан танилцуулах гэж зохиосон баяр гэдэг утгаараа европын зарим том боловч шашны утга агуулгатай баяруудын дэргэд агуу юм даа.
Жил жилийн цагаан сарыг төвөгшөөдөг хандлага их болжээ. Жилдээ нэг гэр орноо хир буртагаас нь салгах юу нь буруу байх билээ??
Харин хар нулимс болох хэд хэдэн зүйл байнаа.
1. Хятадын хог новш болсон барааг оруулж, улсын үнэт хөрөнгө бэлэн мөнгөө хятад руу урсгах хэрэг байдаг юм уу үгүй юм уу. Бэлэг нэрээр нэг нэгндээ дамжуулж тэр хогийг шидэлцэж байхаар үндэсний үйлдвэрлэлийн зүйлсээ билэг тэмдэг маягаар солилцвол яасын? Монголчууд бид 200 жил Манжийн дарлалд байхдаа хэвийн боов ганзгын сурын (хамгийн тэсдэггүй сурын нэг гэдгийг хөдөө өссөн хүмүүс андахгүй) хамт бэлэглээд болоод байдаг байж. Хүүхдүүд цуглуулсан ганзгын сураа бүсэндээ багсайтал хавчуулчихаад түүгээрээ гайхуулдаг байсан гэж аав маань хэлж байсныг санаж байна. Одоо боломжууд эрхбиш арай дээр болсон баймаар.
2. Жил бүрийн цагаан сар дөхөхөөр тэнд ч тэр лам гарч ирж нэг юм яриад энд ч нэг зурхайч орилоод ард түмнийг хэзээ шинэлэхийг мэдэхгүй болтол самууруулах юм. Яг үнэндээ лам нар үүнд хамаатай биш байхаа. Хэрвээ зурхайчид одон орончид мөн бол тэд л үнэн зөв хэлж мэдээлж судлаж байх ёстой. Тэгэхээр манай зурхайчид д ажлаа хийж чадахгүй байна уу даа? Эсвэл ард түмний мухар сүсэг ихссэн байх нь.
Математикч астрономич Jean Meeus сарны үечлэлийг олох маш сайхан алгоритмыг зохиосон байдаг. Түүний “Астрономын алгоритмууд” номон дээр бий. ( Хүсвэл би тэр алгоритмыг нь PHP ч юмуу javascript-р бичээд тавьж ч болох юм)
Түүнээс гадна та бидний хамгийн сайн танилын нэг алдарт Нюьтон маань нарны тоолол сарны тоолол 2-ийг хөрвүүлэх томьёог ч гажилтын хамт зохиосон байдаг шүү дээ.
Энэ жилийн хувьд шинэ сар монголын цагийн бүсээр 2008 оны 2 сарын 7-ны өдрийн 11 цаг 44 минутанд гарч 18:11 жаргасан. Энэ шинэ сар нь битүү буюу хоосон хэлбэрээр дүрслэгддэг тул бид битүүн хэмээн нэрлэж битүүрдэг билээ. Нэр нь хүртэл ийм тодорхой байхад эргэлзэх хэрэггүй. Харин 2008 оны 2 сарын 8 ны өдөр бид шинэлэх нь зөв болж таарч байгаа юм. Хэрэв надад итгэхгүй байвал http://www.timeanddate.com/worldclock/astronomy.html?obj=moon&n=720 хаягаар ороод үзэж болно.
За ирэх жил бас л бөөн маргаан болно бизээ. Ямар ч гэсэн миний үзэж байгаагаар Meeus-ын алгоримтаар монголын цагийн бүсээр ирэх жил 2009 оны 1 сарын 26-ний 15 цаг 56 минутад гарах болно. Тиймээс бид ирэх жил 1 сарын 26-нд битүүрч 27-нд шинэлэх нь зөв юм.
Тэрний дараа жил 2010 оны 1 сарын 15-нд битүүрч 1 сарын 16-нд шинэлэнэ. Харин түүний дараа жил 2011 оны 2 сарын 3-нд битүүрч 4-нд шинэлэх ёстой. Гэх мэтчилэн цаашаа 100, 200 жилээр яг одоо гаргахад ч бэлэн байна. За за би ямар зурхайч биш зурхайчдынхаа ажлыг өмнөөс нь хийхээ болъё! Зурхайч болчих шахлаа. Гэхдээ ирэх жилээс авхуулаад иймэрхүү маргаан бүү гараасай гээд л биччихлээ. Уг нь маргаад байхаар тийм хэцүү зүйл биш шүү дээ.
Та бүхэн маань сар шинэдээ сайхан шинэлээрэй!!!

2008-2-18 -нд хийсэн нэмэлт.
Тоолол, сарны үелэл 2 маань 2 өөр зүйл. Хятадууд/Ветьнамууд шинэ сар гарсан өдрөө 1-н гээд тоолдог байж болно. Монголчууд тэр өдрийг битүүн хэмээгээд 0 гэж тоолдог байж болно. Тэгээд маргаашнаас нь шинийн нэгэн гэж тоолдог байж болно. Энэ нь уг нь илүү ухаалаг санагдаж байгаа. Яг нарийн учрыг би үл мэднэ. Жилийн эхлэлийн шинэ сарын өмнө ингэж 1 хий оруулж засвар хийх нь одон орны нарийн үндэстэй ч байж болно. Тэр Төгс баясгалант ч билүү монголчуудын барьдаг зурхайнх нь тухай уншиж үзэхгүй бол үүний учрыг олохгүй бизээ. Гэхдээ үүнийг заавал мэдэхгүйгээр тооллоо зөв олж болж байгаа юм. 🙂 Дээр хэлсэнчлэн би ямар зурхайч биш. Хар ухаанаар бодож байгаад “шинжлэх ухаантай” 🙂 хавсраад л энэ нийтлэлийг бичсэн болно.

UTF-8 substring function

Wednesday, February 6th, 2008

Сүүлийн үед янз бүрийн монгол вэбүүдийг харж байхад юникод бичвэр автоматаар тасалж авахдаа шууд PHP substr функц ашиглаад нөгөөдүүл нь эвдэрч харагдах нь их болжээ. Жишээлбэл computertimes.mn дээр

Өнөөдөр дэлхийн мэдээллийн технологи (МТ)-ийн зах зээл асар хурдацтайгаар хүрээгээ тэлж улам бүр глобал шинжтэй болж&nbs ; байна. Дэлхий дээр энэ салбарт зардаг мө�…

Сүүлийн 3 цэгийн өмнө UTF-8 тэмдэгт эвдэрсэн байгааг та бүхэн харж байна. Иймэрхүү асуудлуудыг засахад зориулж бичсэн дараах функцыг та бүхэнд толилуулж байна.

function utf8_substr($str, $offset, $length= false) {
preg_match_all(‘~[\x09\x0A\x0D\x20-\x7E]
| [\xC2-\xDF][\x80-\xBF]
| \xE0[\xA0-\xBF][\x80-\xBF]
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}
| \xED[\x80-\x9F][\x80-\xBF]
| \xF0[\x90-\xBF][\x80-\xBF]{2}
| [\xF1-\xF3][\x80-\xBF]{3}
| \xF4[\x80-\x8F][\x80-\xBF]{2}
~xs’, $str, $match);
if ($length !== false) {
$a= array_slice($match[0], $offset, $length);
} else {
$a= array_slice($match[0], $offset);
}
return implode(”, $a);
}

Болор толь шинэчлэгдлээ

Monday, February 4th, 2008

Болор толийн вэб хувилбар (http://www.bolor-toli.com) хаягт бий.
Энэ толийг би ОпенМН холбооны орчуулгын үйл ажиллагааг дэмжих, мөн хийгдсэн ажлууд дээр суурилан сайжруулах санаатайгаар эхлүүлсэн боловч зөвхөн мэдээллийн технологи гэж явцууруулалгүй, улам өргөжүүлэн мэргэжлийн салбар тус бүрээр нь ангилан бүхий л монголчууддаа зориулан хийхээр шийдлээ.
Тиймээс өгөгдлийн баазын бүтцээ өөрчлөн хуучин байсан бүх үгсийг устган өөрт байсан эх сурвалжуудыг ашиглан электрон аргаар хянан, шалгаж (нилээд олон скрипт програмууд бичив) нягтлан боловсруулаад туршилтын хувилбарыг шинэчлэн тавилаа. Энэ толь бичгийн програмын архитектур нь цааш хэдэн ч хэлүүд нэмэгдэх боломжтой бүтэцлэгдсэн болно. (Мөн нэг далдын хар санаа нь энэ толийг автомат орчуулгын програмд ашиглахад боломжтой байхуйц бүтэцлэхийг ихэд чармайв. 🙂 )
Тиймээс цаашид герман<->монгол болон орос<->монгол чиглэлүүд нэмэгдэх болно. Одоогийн байдлаар монгол->англи чиглэл нь давхардаагүй тоогоор 136 550 толгой үгстэй бөгөөд англи->монгол чиглэл нь давхардаагүй тоогоор 84 788 хүрч давхардсан тоогоор чиглэл тус бүр 268 451 үгстэй боллоо.
Одоо энэ толь маань одоогоор интернэтэд байгаа бүх англи<->монгол толь бичгүүдээс хамгийн том нь болсон болов уу гэж бодож байна. Тиймээс та бүхэн найз нөхөддөө тарааж болно. 😉

Мөн одоогийн байдлаар жишээ бичвэрүүд ороогүй ба одоо хийж байгаа монгол үг үсгийн алдаа шалгагч mnspell-р (энэ програмын тухай өмнөх бичлэгүүдээс олж уншина уу) шалгаж байгаа ба удахгүй нэмэгдэх болно. Мөн хуучин байсан үгсүүдийг хянан шалгаад нэмэх бөгөөд энэ жилдээ багтан энэ толь бичиг маань давхардсан тоогоор 300 000 нилээн давсан үгтэй болох болов уу.
Одоо цааш юу юу ямар дарааллаар хийхийгээ тодорхойльё!

  • Хэрэглэгчийн оруулсан үг зөв эсэхийг шалгаад буруу үг бол төстэй үгсийг санал болгох боломж нэмэх
  • Жишээ бичвэрүүдийг шалган нягтлаад нэмэх
  • Хэрэглэгчдэд үг/утга нэмэх, засах болон байхгүй үгсийг хэлэлцэх зэрэг боломжуудыг хангах.
  • Хуучин байсан орчуулсан үгсийг хянаж оруулна.
  • Герман<->Монгол чиглэлийг оруулна. Үгсийн сангийн хувьд Англи<->Монгол той тэнцүү хэмжээнд очих болов уу
  • Орос<->Монгол чиглэлийг оруулна. Үгсийн сангийн хувьд Англи<->Монгол той тэнцүү хэмжээнд очих болов уу
  • Веб хувилбарын анхны жинхэнэ хувилбарыг бэлэн болгох
  • P2P зарчмаар ажиллах клиент програм бичих.

Цаашид энэ толийг автомат орчуулгын програм гаргахад ажиглах боломжтой байлгах үүднээс сангийн үгсийн чанарт маш их анхаарал хандуулан ажиллаж байгаа болно.

Эцэст нь энэ толь маань туршилтын шатандаа явсаар байгааг тэмдэглэе.

Та бүхний оюуны мэлмий бат оршиг!

DBDesigner4 on linux

Saturday, February 2nd, 2008

Үнэ төлбөргүй нээлттэй эх бүхий өгөгдлийн баазын дезайн гаргадаг програмын нэг бол яах аргагүй DBDesigner билээ. Түүнийг Үбүнтү дээр rpm -r татаж авч байгаад хамгийн дуртай DEB рүү хөрвүүлэгч хэрэгсэл болох alien -н хэрэглэн dpkg -раа суулгачихдаг байлаа.
Гэтэл дараах байдалтай жаахан болхи харагдахын дээр Create/Drop script ч юм уу ямар нэг клипборд руу хуулах хэрэгтэй зүйлс хуулагддаггүй төвөгтэй байлаа.

Ингээд өчигдөр жаахан гэдэн хөдлөөд ямар нэг аргаар заавал үүнийг засъя гэж бодоод суулаа. Гэтэл хамгийн эхний оролдлогоороо маш амархан засчихав. Магад танд хэрэг болж болох юм. Тийм бол wine ашиглан суулгана уу. Хэрэв та wine хараахан суулгаагүй байгаа бол:

apt-get install wine

гэж суулгана уу.
Ингээд дараах тушаалуудыг дараалан өгнө үү.

#cd /tmp
#wget http://213.115.162.124/external/DBDesigner4/DBDesigner4.0.5.6_Setup.exe
#wine DBDesigner4.0.5.6_Setup.exe

ингээд суулгах явцад дэлгэцийн нүүрэнд холбоос үүсгэх эсэхийг асууна. Тэр үед нь тийм гэчихвэл олоход амар бизээ. 🙂

Иймэрхүү байдалтай харагдахаас гадна клипборд асуудал бүрэн ариллаа. Заавал kylix сан ч ашиглахгүйн дээр харагдац нь ч нүдэнд тухтай боллоо.