Thursday, September 8, 2011

HTML Parser


HTML кодыг боловсруулж тэр дундаас ямар нэгэн мэдээлэл гаргаж авах ажил надад нэлээн олон удаа тохиолдож байв. Тэрний 1 болох Андройд дээр хийсэн ТВ хөтөлбөрийн програмыг дурдаж болно. Энэ апп нь гөгө-гийн нэг хуудсан дах мэдээллийг авч боловсруулаад утасны санах ойд хадгалснаар интернетгүй үед ажиллаж чаддаг.

Нэг ийм зүйл надад тохиолдсон юм. Хэдэн сарын өмнө програм маань ажиллахаа болив. Гайхаад үзтэл нэг мэдээ оруулагч нь "&" тэмдгийг мэдээн дотроо оруулсан, тэгээд HTML хуудас маань алдаатай боллоо. Апп дээр маань энэ алдаатай XML байна гээд ажиллагаагүй таг зогсов. Тэр үед нэг хэрэглэгч маань уг нь их гоё програм байна, сүүлд ажиллахаа больчихлоо засаад өгөөч гэсэн хүсэлт ирсэн боловчиг би засаагүй. Ийм амархан эвдэрдэг юмыг би засаад яах билээ? дараа нэг нөхөр мэдээ оруулж байхдаа ENTER дарчихвал миний апп дахиад ажиллахаа больчихно.

HTML-ээс мэдээ гаргаж авах үед асуудал ийм л болдог. Тэгээд 1 жижигхэн боловсруулагч таг-нд анхаарал хандуулахгүйгээр хийх гээд оролдсон юм. Уг нь их дажгүй, код нь жижигхэн, ашиглахад амархан.

Энэ хуудсан дээрээс мэдээлэл авах гээд үзье л дээ. Цаана нь байгаа кодыг нь харалгүйгээр. Тэгвэл эхлээд би ямар нэгэн ордны нэрийг хайж олно, дараа нь ард нь байгаа арай уртхан хэмжээний текстийг хайна.

Ммм, тэгвэл телевизийн мэдээтэй хуудсыг бодъё. Эхлээд хэд дэх өдөр, ямар нэгэн телевизийн нэр хайна, тэгээд цаг, хөтөлбөрийн нэр.


Тэгвэл валютын ханшийг веб хуудсан дээрээс авъя. Эхлээд ямар нэгэн валютын нэр хайж олно, ойролцоо нь ямар нэгэн тоо байна уу? хайна, олдсонгүйэ оронд нь дахиад нэг валютын нэр олчихлоо. Энэ нэрний хажууд 2 тоо байна. Бодвол авах, зарах нь юм шиг байна.


Тэгэхлээр та миний хэлэх гээд байгаа санааг ойлгосон байх. Веб сайт дээрх үгнүүд өөр хоорондоо холбоотой. Эдгээр үгнүүдийн холбоосыг нь тодорхойлж өгч болох юм бол бид тэрхүү хуудаснаас хэрэгцээтэй мэдээллээ авч болно. Тэгээд энэ санаагаа хэрэгжүүлэхээр пайтон скрипт бичсэн юм. Энэ скрипт маань бид нарын хайж байгаа үгийг олоод цааш нь лавшруулж мөн дараа нь тааралдаж болох үгнүүдийг хайдаг. Гэхдээ та хайж байгаа үгээ REGEX-ээр тодорхойлж өгөх ёстой. Оллоо.мн-ий нүүр хуудсан дээрээс цаг агаарын мэдээ авах замыг тодорхойлъё:

Нүүр хуудаснаас нь бид нар эхлээд "Цаг агаар" гэдэг үгийг хайна. Харамсалтай нь "Цаг агаар" гэдэг үгний оронд "Цаг агаар" гэсэн бичигтэй зураг байна. Уйлаад яахав хажууханд нь "Улаанбаатар хотод" гэсэн текст байна. Доор нь "Х сарын Х" баруун талд нь урдаа тэмдэгтэй хоёр тоо байна. Regex-ээр бичвэл:

"Улаанбаатар хотод" ----> "\d{1,2} сарын \d{1,2}" ----> "[+-]\d+" ----> "[+-]\d+"

Сүүлийн хоёр тоо нь харгалзан өдөр шөнийг заана. Кодыг маань сонирхож байгаа хүн байвал энэ линкээр ороод татаж аваад "example.sh"-ийг ажиллуулаад үзээрэй.

Friday, August 5, 2011

Өнөөгийн залуусын буруу юу? /Дашбалбар. О/

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

Энэ чинь бас буруу, барууныг дууриалаа гэж
Элэг доог хийж, хурал цуглаан болсон юм.
Томоотой бай, дуугуй бай... гэж
Томцуул биднийг сургаад
Өөрсдөө бол архиа ууж, тамхиа татаж,
Өө яахав, та нар удахгуй том болно гэсэн юм.

Больцгоо хэрэггүй! гэдэг хоёрхон үгээр
Болгоож биднийгээ чөдөрлөсөн юм.

Ханан дээрээс Чингүнжав, Мандухай, Цогт тайж биш
Харийн жүжигчний хөргүүд дуугай ширтэнэ.
Монгол хувцас өмсөхөөс ичдэг монгол хүүхдүүдийг
Морьтон ардын үрс гэх үү, та минь ээ? гэж гайхна

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

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

Эцэг дээдсээ мартсан хүмүүс сайн үйлс бүтээх үү!
Эрхэм соёлоо сүйтгэсэн хүмүүс сайхан амьдарч чадах уу!
Үндэс угсаагаа гэснийг нь үгүй хийж орхисон бус уу?
Үнэн үг хэлснийг нь шоронд суулгаж зовоосон биш үү?

Сүсэг бишрэлийг нуга дарж, бид юуг ч хайрлахаа больсон.
Сүрэг хүмүүс болж, чулуужсан мод шиг зүрхтэй болсон.
Олон үеийнхэн бүтээсэн өнөөгөө бид үгүйсгэхгүй ч
"Одоогийн залуус» гэлцдэг тэр л хүмүүсийг гайхнам.

Бид чинь та нарын хүүхдүүд биш гэж үү?
Бие сэтгэлийн чинь тасархай бус уу?
Шилдэг дээдийг үйлдсэн бол, тэр нь ч Та нарынх!
Ширвэдэг мууг хийсэн бол тэр ч бас Та нарынх!

Чингис гэж хэлэхээс айдаг байлаа бид
Чин зоригт дээдсээ нэрлэх эрхгүй явлаа.
Харь холынхон түүний нэрийг бардам хэлж
Хаан эцгээ болгох гэж булаалдаж байлаа.

Эцэг дээдсээ дурсах хувьгүй хүүхдүүдэд
Эрх чөлөө бүрэн гүйцэд олдох уу?
Атаа жөтөө, хов живээр буузны мах шиг хооллож
Аль сайн бялдуучилсан нь үнэд орж байлаа.

Газар нутгаа хайргүй сэндийлж, хөрсийг нь сүйтгэсний
Гай нүглийг хариуцах хүн өнөө хэн ч алга!
Таацын цагаан нуурыг хэн ширгээсэн юм бэ?
Тааж барамгүй оньсого юм гэж уу?

Эцэг дээдсээ бүдүүлэг, эх орноо хоцрогдсон гэж
Элэг зүрхэнд шингээж, эгэл үрсээ хүмүүжүүлээд
Эцэс хойчид нь болохоор энэрэнгүй хайр нэхдэг
Этгээд хачин ёсыг энэ үеийнхэн хэнээс сурав?!...

Wednesday, January 12, 2011

Твиттер

Миний мэдэхээр твиттер бол хүмүүс дээр суурилсан мэдлэг, мэдээ, харилцааны асар том орон зай. Энд твиттерийг харах өнцөг бол твиттерийг мэдээ гэдэг утгаар нь хүлээж авна. Яахав та юу дуртайгаараа тодорхойлоорой гэхдээ энд "мэдээ" гэдэг өнцгөөс нь авч үзье.

Саяхан "ТВ мэдээ" гэдэг програм андройд платформ зориулж бичсэн юм. Хэрэглээ бол өндөр байнаа. Доор хэр статистиктайг гарсныг үзүүлье:

Энд зарим 1 онцлогуудыг дурдах хэрэгтэй. Энэ "ТВ мэдээ" програм зөвхөн монголд ашиглагдана. Яагаад гэвэл зөвхөн монголын ТВ-үүдийн мэдээг үзүүлдэг. 91 утсан дээр идэвхтэй ажиллаж байна. Энэ бага байна уу? Миний хувьд бол Wow. Энэ жил мобикомын ачаар хэд хүртэл өсөх бол? Лав даг нэлээн явна байх. Дээрх програм нь "Gogo" үндэсний портал сайтаас Телевизийн мэдээллүүдийг нь татаж авдаг. Тэнд бидэн шиг хүмүүст (хөгжүүлэгчид) зориулсан мэдээ алгаа (API/RSS байхгүй). Тэгэхээр аргагүй эрхэнд HTML боловсруулагчийг манай анд Erdenezul бичсэн юм. Миний хэлэх гээд байгаа зүйл энэ хүрээд зогсох хэрэгтэй яагаад гэвэл би Андройд ярих гээгүй Твиттер ярих гэж байна.

Твиттер бол асар их мэдээний орон зай. Үүгээр урсан өнгөрч байгаа мэдээг зөвхөн хүнээ дагаснаар хялбархан ангилж чадна. Хэрвээ тэнгис, өргөөгийн жиргээнүүдийг дагавал тэд нар гарч буй, гаргах гэж байгаа киноны мэдээллийг надад өгнө. Хэрвээ "exchange_mn"-ийг дагавал өнөөдрийн ханшийн мэдээг, "weather_mn"-ийг дагавал цаг уурын мэдээ өгнө. Энэ том мэдээллийн орон зайд зөв хүнээ дагаснаар өөртөө хэрэгтэй мэдээллийг олж авч болно.

За цаг агаарын мэдээг гар утсан дээр үзүүлдэг програм хийе гэж бодъё. Тэгвэл би дахиад "gogo.mn" эсвэл "news.mn"-ий кодыг цэвэрлэдэг скрипт бичих үү? Үгүйэ энэ дэмий байх оронд нь тэрхүү мэдээллийг твиттер дээрээс хайсан нь илүү найдвартай, сайн ажиллана байх.

Эсвэл өнөөдөр, энэ долоо хоногт болох үзвэр үйлчилгээний мэдээг авдаг програмтай болъё. Хэрвээ бид өөрсдөө тийм мэдээ цацдаг үйлчилгээ үзүүлье гэвэл зардал нэлээн орно доо. Өөр нэг вариант нь админ нь хаашаа ч юм алга болсон, мэдээгээ шинэчилдэггүй сайтын кодыг цэвэрлэж байснаас facebook, twitter дээрх драмын театр, кино театруудыг дагаж тэдний мэдээг дахин түгээсэн нь илүү үр дүнтэй.

Энэ мэтчилэн твиттерийн тусламжтайгаар яг одоо болж байгаа эсвэл болоод өнгөрсөн мэдээг илүү үр дүнтэйгээр авах боломжтой. Би энд зүгээр толгойнд орсон санаагаа мартахгүйн тулд бичсэн юм хэхэ. Тэрнээс биш хийсэн бүтээсэн зүйл байхгүйг ойлгоорой бүгдээрээ "0" дээр байна. Юм хийцгээе.

Sunday, December 26, 2010

Wednesday, October 27, 2010

Граф байрлуулах алгоритм

Зарим веб хуудсууд дээр гоё гоё графууд байрлуулсан байдгийг мэдэж байгаа биз ээ. Жишээ нь социал граф байгуулах, ямар нэгэн юмнуудын холбоосыг гаргах гэх мэтчилэн үед ихээр хэрэглэдэг. Энэ миний найз, тэрний найз тэр гээд л яваад өгнө. Мөн нарны аймаг ч байж болох юм байна. Тэр галактикийн тэр од эсвэл гариг. Энэ мэтчилэн граф байгуулах нь өгөгдлийг илүү цэвэрхэн эвтэйхэн харагдуулдаг.


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

Графыг байрлуулах хэд хэдэн арга байдаг юм билээ.
1. Ортогональ байрлуулах. Энэ нь зангилаанууд нөгөөдөх рүүгээ тэгш өнцөг үүсгэж холбох, тооны дэвтрийн нүднүүд дээр байрлуулах гэсэн үг.
2. Оройнуудыг бодит амьдралыг хуулбарлан симуляци хийх. Энэ арга нь их гоё граф үүсгэдэг. Англи нэр нь "Force Based Algorithm"

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


Энэ зурган дээр хар ирмэг нь пүрш, харин тасалдсан шар зураас нь түлхэлцэх хүчийг үзүүлж байна. Шар зураасын дагуу түлхэлцэх үед оройнууд нэг газраа бөөгнөрөхгүй болно.

Граф байгуулах асуудал ингээд дуусахгүй, анхны байрлалыг хэрхэн оновчтой сонгох вэ?

Санамсаргүйгээр байрлуулаад өөрөө тэнцвэртээ орно гээд найдаж болно. Гэвч хүсээгүй тэнцвэрийн нөхцөл гарч ирэх магадлалтай.


Дээрх графын хувьд ийм байвал арай илүү байх:
Дээрх "арай дээр" графыг байгуулахын тулд оройгоо тавихдаа хөршүүдтэйгээ ойрхон, бусад оройнуудаасаа хол байрлуулах хэрэгтэй.

Дээрээс нь үл үзэгдэгч "нар" шиг оройг зурж байгаа дэлгэцнийхээ тэг дунд нь байрлуулах хэрэгтэй. Хэрвээ тэгвэл "нар" маань бусад оройнуудаа өөр лүүгээ татаж зурагдах талбайд дүрсээ татаж оруулах болно. Энэхүү графтай 10 гаруй хоног зууралдсаны эцэст янз бүрийн коднуудаас санаа авсаар эцэст нь иймэрхүү граф байгуулагчтай үлдэж хоцорсон болно :) /* 30 орой 40 ирмэг. Ирмэг нь давхардсан байж магадгүй */
Үр дүн - 1:

Үр дүн-2:



Thursday, September 16, 2010

КтМС чамайг таргалуулна

Анх нэгдүгээр курст байхдаа 4-ийн ах нарыг хараад л пөөх эд нар чинь ямар тарган юм гэхэд Анхаа "бид нар ч гэсэн дөрөвтөө орохоор ийм л болно шд" гэхэд нь их инээж билээ хэхэ. Эхэндээ итгэхгүй байсан ч суудаг хүмүүс хөдөлгөөний дутагдалд орж өөрчлөгддөг нь үнэн юм байна.
Би өмнө нь. Дунд нь тамхи барьсан хар малгайтай нүдний шил тавьсан:

Дараа нь:

Манай Үүрээ өмнө нь:

Дараа нь:

Tuesday, August 3, 2010

Блогоо тусгаарланаа

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

Шинэчлэлт:
Джанготой холбоотой бичлэгүүдээ ийшээ хийж эхэллээ.