Skip to main content

Posts

Showing posts from 2018

Зөв бичицгээе#1

    Өнөө цагт гэж эхлэхээр л нойр хүрчихдэг гэдэг шиг өнөө цагт зөв бичдэг хүн тун ховор болжээ. Яг үнэндээ өмнө зөв бичдэг байсан юм уу, үгүй юү мэдэхгүй л дээ. Хүмүүс л тэгж яриад байдаг юм :D Ямартай ч одоо бол ховор нь ховор.    Хамгийн аймаар нь буруу бичсэндээ гэмшиж, сурахыг эрмэлзэхийн оронд яаж ийгээд л өөрийгөө өмөөрч, зөвтгөж байдаг. Кирил үсгийн дүрэм монгол хүний бие физиологид тохирохгүй, Дамдинсүрэн гэдэг нөхөр шал дэмий юм зохиосон, би янзын зөв бичдэг байсан чинь дүрмийг өөрчлөөд хаячихжээ, би яг ингэж заалгаж байсан, ингэж бичихээр эвтэйхэн харагдаад байдаг юм, тэгж бичвэл хүмүүс буруу гэж бодно гэх мэт барагдашгүй олон шалтагтай. Зарим нь би программист эсвэл эдийн засагч юм чинь надад алдаагүй бичих шаардлага ерөөсөө байхгүй, гол нь ойлгож байхад л болно гэж зөрүүдэлдэг.    Хүмүүс нүүр тулан харилцах боломжгүй үед мэдээлэл солилцох, бие биенээ ойлгох зорилгоор анх бичиг үүсэж байсан билээ. Хэдэн арван мянган жилийн тэртээх агуйн хана, ...

4 бэрх

Нүүдэлчдийн эртний тоглоомуудын нэг болох шагайгаар тоглож үзээгүй хүн бараг байхгүй биз. Маниусыг ухаан орж байх үед зах зээл хэмээгч рүү дөнгөж орж байсан болоод ч тэр үү, шагайнаас өөр тоглочихмоор юм ч бараг байдаггүй байсан. Морь уралдуулах, шагай таалцах, шагай шүүрэх, дөрвөн бэрх орхих гээд л мөн ч сайхан тоглоомууд байж билээ. Гэснээс зарим хоолны газрууд ширээн дээрээ 4 шагай, мэргэлэх хүснэгтийн хамт тавьсан харагддаг. Хүснэгт нь 24 боломжтой байдаг ба заримдаа тохирох хувилбар олдохгүй, самгардах үе бишгүй тохиолддог. Ингэхэд 4 шагайг хаяхад нийтдээ хэдэн янзаар буух вэ? Алгебрын аргаар амархан тооцоолчхож болно л доо. Гэхдээ илүү хялбар аргаар, ө.х random буюу санамсаргүйгээр тоо сонгох аргаар бодъё. 1, 2, 3, 4 нь харгалзан морь, тэмээ, хонь, ямаа байг. Тэгвэл нэлээн хэдэн удаа (бүх боломжоор буухаар) давтаж санамсаргүйгээр 4 тоо сонгоод, уг 4 тоо өмнө сонгогдсон эсэхийг шалгаад, сонгогдоогүй бол боломжийн тоогоо нэмэгдүүлээд явна гэсэн үг. Нийт боломж (давхардсан тоогоо...

Текстээс хайх Aho-Corasick алгоритм

Alfred V. Aho болон Margaret J. Corasick нарын эрдэмтэд 1975 онд зохиосон. Текстэн өгөгдлөөс олон дэд текстийг нэгэн зэрэг буюу параллель хайж олоход зорилго нь оршдог. Бичих, уншихад хялбар болгох үүднээс текстэн өгөгдлөө текст , хайж олох текстүүдээ үг  гээд нэрлэчихье (Англиар харгалзан  text , dictionary эсвэл text string , pattern string гэж нэрлэдэг). Үг бүрээр давтаж, давталтын алхам бүрд текстийг эхнээс нь дуустал нь давтах байдлаар бол хэн ч олчихно л доо. Харамсалтай нь маш өндөр өртөгтэй, текст уртсаж, үг олшрох тусам тэсвэрлэхийн аргагүй удаан ажиллах учраас тэгж программ бичиж, хүнд хэрэглүүлнэ гэж бол ёстой гонж. Бодит амьдралд ийм төрлийн ямар жишээнүүд байдаг вэ? Текстэн дэх товчилсон үг болон нэр томьёо бүрд тайлбар оруулах Утасны жагсаалт өгөгдсөн бол эздийг нь харгалзуулах Гений дарааллаас тодорхой бүтэцтэй генүүдийг илрүүлэх г.м бичээд байвал дуусашгүй их юм бий. Тэгээд яг яаж вэ?     Гол санаа нь ижил эхлэлтэй үгнүүдийн...

Тун хэрэгцээтэй Oracle query-үүд

Query-г зөв, оновчтой бичих нь программын гүйцэтгэлийн амин сүнс болохоос гадна код бичих, тест хийх, бааг илрүүлэх үеийн ажлыг ихээхэн хөнгөвчилдөг. Энэ постоороо түгээмэл тулгардаг асуудлуудыг энгийнээр шийдэх хэдэн query-г  хүргэе. Зарим нь өдөр тутмын хар бор кодчилолд төдийлөн хэрэглэгддэгүй ч байж магадгүй. Гэхдээ харж байгаагүй юм хэрэг болдоггүй гэдэг шиг мэдэж аваад, хэрэглээд сурчихвал юм болгонд л хэрэг болохыг үгүйсгэхгүй. 1. DUAL table     Oracle дээр 1 мөр, 1 баганатай DUAL table анхнаасаа үүссэн байдаг ба ямар нэгэн илэрхийллийн үр дүнг select хийхэд ашиглавал тохиромжтой. Ж:  select SYSDATE from dual -- Системийн огоог харах select 18 * 10 from dual -- Илэрхийллийн үр дүнг харах 2. Сарын эхний өдрийг харах SELECT TRUNC (SYSDATE, 'MONTH') "First day of current month" FROM DUAL 3. Сарын сүүлийн өдрийг харах SELECT TRUNC (LAST_DAY (SYSDATE)) "Last day of current month" FROM DUAL 4. Сарын өдрийн тоог харах SELECT CAST ...

Regular expression-ий түгээмэл хэрэглээ

    Regular expression нь string буюу текстээс тодорхой бүтэц бүхий хэсгийг хайж олох зорилготой загвар (pattern) юм. Regular expression-г regex гэж товчилдог. Бүх программчлалын хэл дээр regex-тэй ажилладаг класс, функцүүд байдаг ба тухайн хэлний онцлогоос хамаарч класс, функц нь элдэв янзаар бичигддэг боловч regex нь яг адилхан, нэг стандартын дагуу бичигдэнэ. Өдөр тутмын амьдралд түгээмэл тохиолддог зарим асуудал(бодлого)-ыг жава дээр regex ашиглаж хэрхэн хялбар шийдэж болохыг жишээгээр тайлбарлая.     Жава дээр Pattern , Matcher класуудын тусламжтайгаар хэрэгжүүлнэ. 1. Регистрийн дугаар шалгах (Эхний хоёр орон кирил том үсэг, араас нь 8 оронтой тоо) Pattern ptrn = Pattern.compile("([А-Я|Ө|Ү]{2})(\\d{8})"); Matcher matcher1 = ptrn.matcher("БИ88042515"); Matcher matcher2 = ptrn.matcher("AB88042515"); System.out.println(String.format("1: %s; 2: %s", matcher1.matches(), matcher2.matches())); Хариу: 1: true; 2: false Pattern...

Java-н String дээрх чухал 10 ойлголт

     String нь тэмдэгтүүдийн дараалсан цуглуулга бөгөөд маш түгээмэл хэрэглэгддэг. Объект төрөлтэй. Классын нэр:   String . Жава дээр код бичдэг хэн бүхний мэдэж байх ёстой String-н талаарх чухал 10 зүйлийг толилуулбаас... 1. String класс нь java.lang package-д агуулагддаг. java.lang package-н аливаа клаас нь автоматаар импорт хийгдсэн байдаг учраас String классыг импортлохгүйгээр шууд хэрэглэнэ. 2. String нь цаанаа C/C++ хэлтэй адилхнаар тэмдэгтүүдийн массив байдлаар дүрслэгддэг. Ялгаатай нь гэвэл NULL ('\0') тэмдэгтээр төгсдөггүй. 3. String нь immutable объект юм. Энэ нь нэгэнт оноогдсон объектын утгыг өөрчилж болохгүй гэсэн үг. toUpperCase() , toLowerCase() г.м функцээр утгыг нь өөрчилж болдог биз дээ гэж үү? Үнэндээ бол цаанаа цоо шинэ объект үүсдэг. 4. Java дээр операторыг дахин тодорхойлох боломжгүй боловч String дээр + оператор дахин тодорхойлогдсон байдаг ба утгуудыг нь хооронд нь залгахад хэрэглэгддэг. Цаанаа StringBuilder , StringBuffer объ...

Java 8-ын шинэ боломжууд

Java 8 (Java SE 8) нь 2014 оны 3-р сарын 18-нд гарсан. Python мэтийн зарим программчлалын хэл дээр байдаг боловч жавагийн өмнөх хувилбаруудад байгаагүй хэд хэдэн халуухан шинэ боломжууд нэмэгдэж, жавагийн фэнүүдийг багагүй баярлуулж байсан билээ. Эдгээр боломжуудаас хамгийн түгээмэл хэрэглэгддгийг нь цөөхөн үгээр тайлбарлая. 1. forEach() method