Cocos 2d-x Demo

Энийг Cocos 2d-x сурч байхдаа хийсэн юм. 1 сарын турш, өдөр бүр 8-16 цаг ажилласан. Clash of Clans-ыг хальт хуулбарлаж хийх гэж оролдсон. Clash of Clans, 1 өдрийн 1,5 сая долларын орлоготой тоглоом гэж бараг бүгд мэдэж байгаа байх. Уг нь үнэхээр хичээвэл боломж бол байгаа л юм шиг санагдсан.

OpenGL / C++

Сүүлийн хэд хоног сурсан зүйлээ хуваалцъя.
Хэлтсээ солисон гэж хэлсэн билүү, үгүй билүү. Front-end engineer болсон. Өмнө нь front-end байсан л даа, хэсэг back-end байж байгаад эргээд front-end болж байгаа санаатай.
Шинэ хэлтэс native тоглоом хийдэг хэлтэс болохоор, OpenGL, болон C++ хэрэглэдэг юм. Аль алинийг нь хийж байсан, тэгэхдээ олон жилийн өмнө. Тэгээд сая хэд хоног сэргээнгээ шинэ зүйл сурч авлаа.

Эхлээд энгийн зүйлээс эхлье. Тоглоомонд, FPS(frames per second) гэж үг бий. Жишээ нь 60fps. Энэ нь секундад 60 удаа зурна гэсэн үг. Өөрөөр хэлбэл 16 миллисекундад чиний бүх тооцоо, бодолт нтр чинь дуусаад зурах зүйлүүд чинь бэлэн байх ёстой гэсэн үг юм. Тэгэхээр performance тал дээр сайн ажиллах ёстой. Ямар нэгэн data-руу хандалт хийх үед loop ерөөсөө хэрэглэж болохгүй, дандаа O(1)-ээр хандах ёстой. Үүний тулд, vector, hash, set гэх мэт өгөгдлийн бүтцүүдийг ашиглана. STL дээр бүгд бэлэн байгаа.

Тэгээд дээрээс нь, сүүлийн үеийн PC-үүд дандаа multi-core болсон. Тоглоомны OpenGL боловсруулах хэсэг(тоглоом гэлтгүй, app-ын core animation хэсэг), ерөнхийдөө main thread дээр боловсруулалт хийгддэг юм. Бүх default event-үүд, update method-ууд main thread дээр дуудагдана. Тэгэхээр тэр дотор шууд бодолт эсвэл data боловсруулалт хийвэл, main thread чинь улам л хоцрох буюу нөгөө 16 миллисекундээс чинь хорогдоод явна л гэсэн үг. Тэгэхээр multi-core оо ашиглаад өөр thread дээр боловсруулалт хийвэл, толгоомын дотоод боловсруулалт чинь, OpenGL тэйгээ зэрэгцэж ажиллана, мөн тооцоо дуусч амжаагүй байсан ч, frame-ээ зураад байх боломж үүсч байгаа юм.
Зүгээр шууд thread ашигласан ч болно, эсвэл GCD(Grand Central Dispatch <– my fav one) гэх мэт library ашигласан ч болно.
Тэгэхдээ thread үүсгэх нь бодсон шиг бас амар эд биш. Memory management-ээ сайн хийх хэрэгтэй. 2 зэрэг ажиллаж байгаа thread 2-уулаа нэг object руу зэрэг хандах үед янз бүрийн асуудал үүснэ.
Жишээ нь, Cocos2d-x гээд engine-ий хувьд, auto releasing pool memory management-тэй. Тэр нь main thread дээр ажиллана. Тэгэхээр жишээ нь, нэг auto-releasing object үүсгээд main thread биш тусдаа thread дээр ашиглаад явж байлаа гэж бодъё. Ашиглаж байх хугацаанд чинь, main thread дээр ажиллаж байгаа main loop нэг бүтэн тойроод, auto releasing object-уудаа memory-оос устгалаа гэж бодъё. Тэгвэл нөгөө thread дээр чинь memory access алдаа үүсээд, тоглоом чинь шууд зогсоно.

Уг нь GCD, Objective-C ын дээд level-ийн framework-ууд гоё ажилладаг юм. Өөрөө автоматаар retain нтр хийгээд. Харин C++ дээр тийм юм байхгүй болохоор, тиймэрхүү зүйлсийг бүгдийг өөрөө хийнэ.

Хэлэх гээд байгаа зүйлс ердөө л 3
1. Thread сайн ашигла
2. Auto-releasing object ийг thread руу дамжуулахад retain хий, хэрэглэж дуусаад release хий
3. OpenGL тэй холбоотой process-ууд main thread дээр

Иймэрхүү жижиг зүйлсээ мэдэхгүйгээс болоод, хэд хоног нойргүй, ямар алдаа гараад байгаагийн учрыг олохгүй эргүүтсэн бодит жишээ байгаа тул, та бүгдийг бас битгий тэгж цагаа үрээсэй гэж бодсондоо бичлээ.

WHR-HP-G300N + OpenWrt + OpenVPN + PIA = Privacy

Ойрд блог бичээгүй юм байна. Ажил гэр 2-ын хооронд өдөр өнгөрөөд байгаа болохоор бичих ч зүйл алга.
Сая сүүлийн хэд хоног router-тэй зууралдаад. Би Private Internet Access(цаашид PIA гэж товчлоно) гэдэг компаны Virtual Private Network(цаашид VPN гэж товчлоно) ашигладаг юм. Laptop дээрээ програмыг нь суулгаад нээх асуудалгүй ашиглаж байсан юм. Тэгээд, нэг өдөр VPN-ээ асаачихсан үедээ Chromecast руугаа видео шидэх гэтэл, Chromecast компьютер дээр гарч ирдэггүй. Харин VPN-ээ унтраахаар гарч ирээд байна. Уг нь IP-аар ping хийхээр хариу өгөөд байгаа юм. Харин hostname-ээр нь ping хийхээр хариу өгдөггүй. Тэгээд интернетээр хайж байтал, угаасаа VPN асаачихаар, Chromecast гарч ирэхээ больчихдог юм байна.
Тэгээд шийдэл хайж байтал, router дээрээ OpenVPN-ээ тохируулвал, Local Area Network(цаашид LAN гэж товчлоно) дахь бүх төхөөрөмжүүд интернет рүү гарахдаа VPN-ээр дамжиж гарах юм байна. Угаасаа, ойлгомжтой л доо, зүгээр router дээр OpenVPN тохируулж болдог гэж мэдээгүй байсан юм. Жишээ нь би гэрээсээ www.google.com-руу орлоо гэхэд доорхи зураг шиг мэдээлэл дамжина гэсэн үг.
Untitled Diagram
OpenVPN нь өндөр нууцлалттай тул, намайг интернэтээр юу хийж байгааг мэдэх боломжгүй гэсэн үг. Дээрээс нь PIA нь дэлхийн нэлээн олон оронд сервер-үүдээ байрлуулсан тул, зарим нэг газар зүйн байрлалаар хязгаарлалт хийсэн веб сайт руу хандах боломжтой болж байгаа юм.
Янз бүрийн аргаар VPN үүсгэх боломжтой бөгөөд, миний мэдэхээр PPTP, L2TP/IPSec, OpenVPN. Энэ хуудсан дээр энэ 3 аргыг гоёоор харьцуулсан байна. Ер нь бол PPTP-г ерөөсөө битгий ашигла, болохгүй бол L2TP/IPSec-г ашигла, боломжтой бол OpenVPN-ыг ашигла гэсэн байгаа.
За тэгэхээр router дээрээ OpenVPN тохируулах ажилдаа оръё.

Continue reading…

The Seven Habits of Highly Effective People

Өнөөдөр, Franklin Covey Japan-ээс зохион байгуулдаг нэг сургалтанд суусан юм. Ер нь бол 2 өдрийн сургалт, дараа нь 2 дахь өдрийнхт нь сууна. Энэ сургалт нь “The Seven Habits of Highly Effective People” гэдэг номны дагуу явж байгаа юм. Дажгүй санагдсан болохоор сургалтан дээр ярьсан зүйлүүдийг жаахан сийрүүлье.

Эхлээд ямар хүн бусдын хүндлэлийг хүлээдэг талаар бичье. Ер нь хүн дараах 2 зүйлээс бүрднэ. Чадвар болон зан чанар. 2-уулаа сайн байхгүй бол, өөртэй чинь хамт ажиллах хүсэлтэй хүн төдий л олдохгүй л болов уу. Хичнээн чадвартай байлаа гээд, бусадтай аятайхан харьцаж чадахгүй бол, бусад хүмүүс аяндаа өөрөөс чинь зай бариад эхлэх болно.

За тэгээд тийм мундаг хүн болохын тулд юу хийх ёстой вэ?
Энгийн зүйлээс эхэлцгээе.

Өөрийн сонголтондоо хариуцлагатай байцгаая. Яг одоо өөрийн тань хийж байгаа зүйлүүд бол, ердөө л таны л сонголтын үр дүнгүүд юм. Та ажилдаа, эсвэл хамт ажилдаг хүмүүс, эсвэл үргэлж бүтэшгүй зүйлс өөрөөс чинь шаардах үйлчлүүлэгч нарт дургүй байлаа гэж бодъё. Энд нэг асуулт гарч ирнэ. “Ийм их дургүйг чинь хүргэх зүйлүүд байгаад байхад, яагаад одоогийн ажилтайгаа л зууралдаад байгаа юм бэ? Дургүй л юм бол, больчихож яагаад болохгүй гэж?” Энэ асуултын дараа, ихэнх хүмүүс, “цалингүй бол амьдарч чадахгүй”, “өөр ажил олдохгүй” гэх мэт шалтгаанууд хэлцгээнэ. “За тэгвэл, эцсийн эцэст, чи л өөрийнхөө асуудлаас болж, чи л ийм ажил хийх сонголтыг хийсэн бус уу?” гэсэн асуулт дахиад гарч ирнэ.

Өөрөөр хэлбэл, эцсийн эцэст та өөрөө л энэ замыг сонгосон болж таарна. Тийм болохоор, гомдоллох зүйлгүй өөрийнхөө сонголтонд хариуцлагатай бай.

Дараагийн зүйл бол, өөрийнхөө ертөнцийг харах нүдээ нээ. Мэдээж хүн бүрт ямарваа нэгэн зүйлийг харах өнцөг гэж бий. Харин амжилттай яваа хүмүүс, юмыг олон талаас нь харж сурсан байдаг байна. Хэн нэгэнтэй харьцахад хүндрэлтэй байсан бол, аливаа зүйлийг өөр өнцгөөс харж эхэлсэнээр, арай дээр харьцаж эхлэх ч юм билүү. Юмыг буруу зөв гэж тунгаахаасаа өмнө, өөр өнцгөөс харах гэж оролдож үзэж байсан уу?

Миний бодлоор, Монголд юмыг олон талаас нь хардаггүй хүмүүс их юм шиг санагддаг. Улс төрчид байна. Эсрэг намынх нь хийсэн бүх зүйл буруу, өөрсдийнх нь хийсэн бүх зүйл зөв гэсэн сонин бодолтой хүмүүс. Бас ижил хүйстэн болон, трансжендер хүмүүсийг учир зүггүй ам уралдан муулж суух хүмүүс. 21-р зуун болчихоод байна. 21-р зуун болсон болохоор, гэнэт энэ хүмүүсийн тоо нь ихсээд байгаа зүйл биш. 21-р зуун болоод, эдгээр хүмүүс нуугдах шаардлагагүй болж, дэлхийн олон улс эдгээр хүмүүст, бусадтай адил амьдрах эрхийг нь өгч эхэлж байна. Энэ хорвоо ертөнц зөвхөн таны сайн сайхны төлөө бүрэлдэн бий болоогүй гэдгийг санах ёстой байх. Бас гадаад иргэдийг зодоод яваад байдаг нөхдүүд байна. Юутай яаж тэмцэхээ мэддэггүй ч юм шиг санагддаг. Барилгийн Хятадуудыг оруулж ирдэг гол хүмүүстэй нь тэмцэхгүй байж, бас л нэг гэр орноо тэжээх гэж ирсэн хэдэн Хятадуудыг дарамталцгаана.

Дараагийн нэг зүйл бол амьдралын зорилготой байх. Та өөрийнхөө оршуулган дээр байна гэж төсөөлдөө. Таныг таниж мэдэх хүмүүс, урд гаран нэг нэгээрээ таны тухай дурсамжуудыг ярьж байна гэж төсөөл. Та тэр үед, хэн хэнийг урд гарч яриасай гэж хүсч байна? Тэдгээр хүмүүс юу яриасай гэж хүсч байна. Яг л тэдгээр хүмүүс, таны төсөөлсөн шиг зүйл ярихаар, амьдрахыг хичээгээрэй.

Өөр олон зүйл ярьсан ч, яг одоо толгой дотор хөвөрч байгаа нь энэ л байна. Чадвал, дараагийн өдрийн сургалтанд ярьсан зүйлийн талаар бас бичих болноо.

Тэгэхдээ эдгээр зүйлүүд нь, бид бүгд мэддэг ч, амьдралдаа төдийлөн хэрэгжүүлээд байдаггүй, энгийн зүйлүүд юм.

Эцэст нь дараах видеог зориулья.

If life were a painting, and you were the artist
What would you paint?
Which colors would you use?
Grey? Electric blue? Candy-apple red?
Is it a landscape? Is it a still life? A portrait of yourself? Your true love? Your most passionate hopes?
Would you hang it at the center of your home? Or at the center of your office?  Or at the center of your heart?
When others see it…
What will they remember?
Just lines on a canvas? Or a work of art?
This is your life.
Paint a bold picture.
Make it a masterpiece.
Sign your name.

DNA ба бидний амьдрал

Юуны өмнө, би мэргэжлийн хүн биш тул алдсан, эсвэл буруу ойлгосон зүйл байж магадгүй тул, засч залруулах зүйл байвал хэлж өгөөрэй.

Өчигдөр DNA-ын тухай нэвтрүүлэг үзлээ. DNA-д ойролцоогоор 3 тэрбум орчим base pair байдаг ба, тэдгээр нь бидний тухай бүх мэдээллийг агуулдаг юм байна. Сүүлийн үед тэдгээрийг уншиж тайлах туршилтууд маш ихээр явагдаж байгаа бөгөөд, ойрын ирээдүйд 1000$ төлөөд л DNA-ээ тэр чигээр нь бүрэн уншуулдаг цаг ирэх юм шиг байна. Эрүүл мэндийн салбарт ч бас DNA-г өргөнөөр ашиглаж байгаа юм байна. Тэгээд жишээ болгож 2 өвчтөний тухай гаргаж байна.

Эхнийх нь уушигны хорт хавдартай өвчтөн. Хавдар нь нэлээн хүнд шатандаа ороод зогсоо зайгүй ханиалгадаг болсон. Тэгээд эмч нь DNA-ын шинжилгээ хийж хавдар үүсгэж байгаа шалтгааныг нь тодруулаад, тэр шалтгааныг нь эмчлэх гэж оролдтол сарын дараа, ханиалгахаа больж, бас хавдар нь бараг байхгүй болсон байна.

2 дахь нь нэг жаахан хүүхэд. Хоол идэж чаддаггүй. Гэдэс нь цоорхой ч гэлүү дээ. Тэгээд эмч нар яаж ч судлаад ямар өвчин гэдгийг нь оношилж чадахгүй. Тэгээд тэр хүүхдийн DNA-г эрүүл хүний DNA-тэй харьцуулж үзсэн юм байна. Эрүүл хүнийхээс өөр байгаа цуваануудыг судлаад үзтэл XPC гэдэг gene нь тэр өвчнийг гол шалтгаан байж. Тэгээд тэр XPC рүү нь хандсан эмчилгээ хийтэл, хүүхэд эв эрүүл болсон байна.

Саяхан л гэхэд, алдар жүжигчин  Angelina Jolie, хөхний хорт хавдар тусах магадлалтай гээд хөхөө тайруулсан. Тэр магадлалыг тогтоохдоо BRCA гэдэг gene-ы тусламжтайгаар тогтоодог юм байна.

Тэгээд тэр нэвтрүүлгийн хөтлөгч залуу нь өөрийнхөө DNA-г https://www.23andme.com/ гэдэг site-аар шинжлүүлж байна. Энэ site-нь шүлснээс хүний DNA-г уншаад, 250 гаруй өвчний тусах магадлалыг гаргадаг юм байна. Дэлхийн хаанаас ч, нэг тусгай саванд шүлсээ хийгээд явуулахад л хангалттай. Оношилж байгаа арга нь, ямар нэгэн өвчтэй хүмүүсийн DNA-г цуглуулаад, тэдгээр хүмүүсийн DNA дахь хоорондоо төстэй, гэхдээ эрүүл хүнийхээс ялгаатай хэсгийг цуглуулж архив үүсгээд, тэгээд тэрэнтэйгээ харьцуулж магадлалыг гаргадаг юм байна.

Мэдээж хүмүүсийн дунд тусаагүй өвчнийхөө тусах магадлалыг мэдэж, сэтгэл санаагаар унаад яахав гэх хүмүүс олон байх. Харин эсрэгээрээ, тусах магадлалаа мэдээд, эртхэн амьдралынхаа хэмнэлийг өөрчлөөд, тусах магадлалаа багасгах нь бас нэгэн сонголт ч байж мэдэх юм.

Бас нээрээ Хятад-д DNA-ын шинжилгээгээр хүүхдүүдийн далд авъяасыг хэлж өгдөг үйлчилгээ нээгдсэн гэсэн.

Монголчууд бид, лам бөө нтр-ээс ирээдүйгээ асуух дуртай хүмүүс. DNA-ын шинжилгээ нь лам, бөө-ийн таамаглалаас арай дээр ч байж болох юм.

FQL(Facebook Query Language)-ын анхан шатны хичээл

Ажил дээр жаахан завтай байсан болохоор, FQL(Facebook Query Language) ашиглан Facebook-ын өгөгдлийн сангаас найзуудынхаа мэдээлэлийг хайх талаар видео хичээл хийлээ.

720p(HD)-ээр үзэхгүй бол бичигнүүд нь харагдахгүй, бас анхан шатны хүмүүст зориулсан хичээл шүү, аймар аймар hacker-ууд нь орж ирээд муулаад байв.

iTerm2 болон Color Themes

Өдийг хүртэл, ихэвчлэн client side програмууд бичиж байсан болохоор IDE ашиглаж бичдэг байлаа. Харин саяхнаас server side програм бичиж үзэж байгаа юм. Өмнөх бичлэг дээр дурдсанаар, server дээрээ шууд code-оо бичээд явах нь амар болохоор Vim ашиглаж байгаа. Харин одоохондоо Vim-ыг сайн ашиглаж чадахгүй байгаа болохоор, mouse ашигладаг болговол арай хялбар юм болов уу гэж бодтол, OS X-ын үндсэн terminal нь mouse-тай нэг л сайн ажиллаж өгдөггүй юм байна. Интернет-ээс хайтал, ALT товч дарангаа mouse дээрээ дарвал болдог л юм шиг байна. Тэгэхдээ л хэрэглэхэд нэг л эвгүй юм. Тэгтэл iTerm2 гээд дажгүй terminal байдаг юм байна. Command+Enter дарангуут шууд дэлгэц дүүрэн болоод, Command+Tab дарангуут шинэ цонх үүсээд, бас Command+Left/Right-аар tab хоорондоо шилжээд амар юм. Бас mouse ажиллана.

Тэгээд нэгэнт олон цагаар iTerm2-ын дэлгэцийг ширтэж суух юм чинь, нүдэнд эвтэйхэн color theme сонгох хэрэгтэй байх. Хайж явтал Tomorrow Theme гээд дажгүй color theme-үүд байна. Зөвхөн iTerm2 гэлтгүй өөр олон IDE болон editor-үүдэд зориулсан file-ууд байна. Миний яг одоо хэрэглэж байгаа нь бол Tomorrow Night гэдэг нь, дараах байдлаар харагдана.

Bash, Vim, Git

Өмнөх бичлэг дээр SAKURA Internet гээд компаниас shared host авсан гэж бичиж байсан. Тэгээд тэрэн дээрээ Bash, Vim, Git 3-ыг суулгах болсон юм. Юуны түрүүнд энэ 3 нь юу вэ гэдгийг товчхон дурьдая.

  • Bash гэдэг нь нэгэн төрлийн shell юм. OS X дээр цаанаасаа тохируулчихсан ирдэг юм. Би OS X хэрэглэдэг болохоор, яагаад ч юм Bash дээр дасчихсан. Тийм болохоор суулгая гэж бодсон юм.
  • Vim гэдэг нь command line editor-ын нэг төрөл. Бас Emacs гээд text editor байгаа, гэхдээ олон хүмүүс Vim нь илүү гэлцэх юм билээ. Зарим хүмүүс “GUI-тэй олон хүчтэй editor-ууд байхад яагаад заавал хэрэглэхэд хэцүү command line editor хэрэглэх ёстой юм?” гэж бодож магадгүй. Би ч гэсэн хааяа тэгж боддог. Гэхдээ миний хувьд command line editor ашиглах нэг шалтгаан байдаг. Тэр нь server дээрх file-ыг шууд засварлах явдал юм. Ганц 2 мөр засварлахын төлөө, өөрийнхөө компьютер дээр засварлаад, тэр зассан file-аа FTP эсвэл SSH-ээр server-рүүгээ хуулаад байх төвөгтэй шүү дээ. Сүүлийн үед PHP code-ыг бол дандаа Vim ашиглаад шууд server дээрээ бичээд явдаг болчихсон. Сайн судалвал бараг юм бүхнийг хийж болохоор нэлээн хүчтэй editor юм шиг байна лээ. Бүгдийг нь сурахад хэцүү ч, юуны түрүүнд, copy, paste, undo, redo, search, replace гэх мэт энгийн үйлдлүүдийг сураад авах хэрэгтэй гэж бодож байна.
  • Git гэдэг нь нэгэн төрлийн version control system юм. Өмнө нь Монголд ажилдаг байхдаа SVN гэдэг version control system ашиглаж байсан. Тэгэхдээ дэлхийн чиг хандлага ер нь Git-рүү чиглээд байгаа юм шиг санагдаад байгаа болохоор бичсэн source code-оо Git-ээр удирдаж байхыг санал болгож байна. Мөн GitHub гээд үнэгүй source code-оо байрлуулдаг үйлчилгээ байгаа.

За ингээд SAKURA Internet дахь shared host дээрээ хэрхэн энэ 3-ыг суулгасан талаараа бичье.

Continue reading…

SAKURA Internet болон WordPress

Японд амьдардаг болохоор, бас яагаад ч юм, Япон компани үйлчилгээ сайтай гэдэг мухар сүсэг маягийн зүйлтэй болчихсон болохоор, Японы SAKURA Internet гээд компаниас shared host авлаа. Зөвхөн блог хөтлөх төдий болохоор, standart plan-ыг нь сонголоо. Нэг таалагдсан зүйл нь SSH холболт зөвшөөрөгдсөн. Нээрээ өмнө нь barbayar.com гэсэн хаягтай байсан ч, тэр хаягаа буцааж олж чадаагүйн улмаас barbayar.net гэсэн шинэ хаяг авлаа. Одооноос barbayar.net гэсэн хаягаар явах байх.

Бас блог хөтлөхөд хамгийн тохиромжтой CMS гээд интернетээс хайтал WordPress гэдэг CMS нэлээн дажгүй юм шиг болохоор нь, блогоо түүн дээр хөтлөх боллоо.

WordPress нь Англи хэл дээр, бас би блогоо Монгол хэл дээр хөтөлж байгаа болохоор, зарим нэгэн зүйлийг нь орчуулахыг хүслээ. Баахан интернетээр хайсны үр дүнд бага сага мэдээлэл олж авлаа.

Юуны түрүүнд тохиргооны file(wp-config.php) дээр хэлээ тохируулж өгнө.  Үүний тулд дарах өөрчлөлтийг хийнэ.

Continue reading…

Шинэ блог нээлээ

4 сараас ажилд ороод шинэ амьдрал эхэлсэн болохоор шинэ блог нээлээ. Ажил дээр сурсан шинэ зүйлүүд болон, зарим нэгэн зүйлийн талаар бодсон бодлуудаа бичиж байх. Мэдээж бас өдрийн тэмдэглэл маягаар ч ашиглана. Ер нь хүн сурсан зүйлээ бусадтай хуваалцаж байх хэрэгтэй юм байна гэж бодлоо. Бүгд дор бүрнээ хичээж байснаас хамтдаа мэдлэгээ хуваалцаад явбал илүү хурдацтай хөгжих байх.