Showing posts with label эмакс. Show all posts
Showing posts with label эмакс. Show all posts

2010/05/20

Мартаж болшгүй соёл

Сүүлийн хэдэн өдрүүдэд энэ бас энэ, тэгээд үүнийг дараа нь түүнийг гэх мэтчилэн нийтлэлүүдийг унших бүр багадаа "чаддаг" байсан монгол бичгээ балбадаг төмөр дээрээ хэрэглэх хүсэл зориг удаан дарсан шампанскийг уулын уруу өнхрүүлж байгаад задалсан мэт зад татан төрөв. Унтан ухантан умартаж байх хооронд минь улс түмэн юу амжуулж байдгийг хайж хэсэг суув, бас харж хэсэг бахдав. Сайн өвөг дээдсээс саяхан хүртэл уламжлагдан ирсэн соёлт ганган босоо бичигтээ санаа сэтгэлээ болон сачийгаа сунаж тасартал зориулахаар шийдлээ.

Ингэж хөөрч догдолсон би бээр нэрээ бичиж нийтэд зарлахаар шийдээд "алив аваад ир, аянга буулгаж буй мэт алдарт бичгээрээ зулайнаас эхлээд өлмий хүртлээ алдаа муруйгүй алдлаад өгье" гэж ирээд л бичих мөчид хүрлээ. Юникод гэгч ертөнц дээрх буянтны ачаар юунд ч торолгүй монгол бичгийнхээ үсэг бүрийн цахим дугаартай дурайсан жагсаалт оллоо. Галт үнэг дээр үсэг нь харуулагдсангүй. Гүйж хайж байгаад CODE2000.TTF үсгийн маяг суулгаж аваад харж хэсэг суув. Мэдээж галт үнэг дээр Контрол товч дарж байгаад хулганы дамраар үсгийн хэмжээг томруулж харж болдог ч латин үсэгнүүд нь хамт томроод хамарнаас минь том болчихдог юм байна. Нэмэлт багана байгаад тэр дотор нь уг үсгийг зураг болгож харуулбал үсгийн маяг суулгаагүй хүнд ч гэсэн үзэгдчихмээр амар юм даа гэсэн бодол ажил дээр юм бодож байгаа хүний дүр үзүүлэн унтаж байх зуур сэрүүн зүүдэнд минь сэв гээд ороод ирлээ. Ингээд нуухаа арилгаад уг хүснэгтийг зургаар харуулсан баганатай болгож хийе гэж бодлоо. Ингэхийн тулд үсэг бүрээр нь зураг үүсгэнэ, багана нэмж тэнд нь зургаа оруулаад вэб болгож экпортлоно гэж бодоход амар ч яаж хийх вэ гэхээр янз бүрийн л арга толгойд орж ирэх байх. Зарим нь жижигхэн бүрхүүлийн програм бичнэ, зарим нь арван найз уруугаа утастаад арван таваар нь хувааж аваад гараараа хувиргаж бичээд буцааж нийлүүлэх ( энэ миний толгойд орж ирсэн анхны бодол ), эсвэл эклипс гэгч дээр жаава мастерууд энд тэндгүй балбаад бэлэн болгочихож ч бас чадах байх. Гэвч эмакс гэгч засварлагч дээр энэ зэргийн юмыг хурууны үзүүрээр хийж болдгийг мэддэггүй нэгэнд нь таниулж, мэддэг нэгэнд нь шоологдохоор гээд хийх алхамаа дүрс бичлэг болгон нэг, хоёр мөн гурав таслан бэлтгэж тавив.

Зорилго бол тодорхой: Эндээс хүснэгтийг нь хуулж аваад, нэмэлт багана үүсгээд, тэнд нь зураг үүсгэж холбож оруулаад, буцаагаад вэб болгож экспортлох. Хийх алхам бүрээ todo гэсэн буферт жагсааж байгаад, гүйцэтгэсэн алхамаа тус бүрд нь чагталж байгааг минь анзаарна биз ээ. Гурав таслах хоёр шалтгаан байлаа. Нэгдүгээр андын зөвлөснөөр зуун мегагаас дээш дүрс бичлэг бүү үйлд, хоёрдугаарт гарын макрогоор бүрхүүлийн тушаал дуудсан бол урт файлд удаан үйлчилж харагдах бөгөөд энэ нь дүрс бичлэгт гацсан юм шиг гөлийж харагдах нь тоогүй санагдсан тул эхний хэдэн мөрөнд ажиллуулж харуулаад дүрс бичлэгээ зогсоон гүйцээж хийчихээд цааш нь үргэлжлүүлж хийв.

Хэрэглэсэн зэвсэг гэвээс: convert гэж imageMagick-н нэг бүрэлдэхүүн тушаал, эмакс болон түүний org горим.

Хэтийн төлөв: Монгол бичгээрээ тэрлэдэг болтлоо тийчлэнэ.

Мартаж болшгүй соёл!

2010/04/29

эмакс бөөндөлт

Саяхан баахан замбараагүй бичсэн php файлуудын зай авалт, догол гэх мэтийг кодын стандартын дагуу яаж янзлах билээ гэж хэсэг энэ тэрүүгээр хайлт хийж доншуучлав. Юу хэлэх гээд байгааг ойгоогүй бол хальт тайлбарлах гээд үзье. Жишээ нь ийм код байлаа гэж бодъё.


Харахад замбараагүй, хаана эхлээд хаана хаалт нь яваад аль хэсэг нь аль хэсэгтээ хамаараад байгааг харж ойлгоход тун хэцүүтэй, ёстой л нөгөө холион бантан харагдаж байгаа биз. Жижиг иймэрхүү файл дээр гараар засах амархан боловч, олон тэгээд том файлууд дээр бол ёстой хэдэн жил болж таарна. Тэгэхээр энийг өнөө гайхал эмаксаар бол төвөггүй хийчихэж байгаа юм. Нэг файл үүсгээд функц биччихнэ:


Энд дуудаж байгаа mumamo гээчийг гүүглдэнэ биз. Тэгээд энэ функцийг ашиглаад л асуудлыг шийднэ дээ :) Ганц нэг файлыг бол: emacs -batch test_file.php -l emacs_format -f emacs-format-function гээд л янзалчихна. Янзалсан скрипт ингэж сайхан харагдаж байна:


Мэдээж олон файл янзална гэвэл тэгээд л бөөнддөг багахан бүрхүүлийн скрипт биччихнэ дээ гэж... :)

Код бичигчдийн үнэнч нөхөр

Дээрх зургийг би нэг жил гаран дэлгэцийнхээ дэвсгэр зураг болгож байлаа.
Босоо тэнхлэгийг нь уг засварлагчийг эзэмшсэн чадвар, хэвтээ тэнхлэгийг нь суралцах хугацаагаар авч үзнэ үү.
Тэр үедээ би ВИМ ийг таньдаг хүн болгондоо сурталчилж байв. Эмакс хэрэглэдэг болсноос минь хойно ч энэ зургийн үнэ цэнэ алдагдаагүй юм. Мэдээж зарим хүмүүс "Хөөрхий энүүнийг хар даа, eclipse, netbeans гэх мэт хамаагүй орчин үеийн засварлагчид байхад даа. Халуун наранд удаан код бичсээр байгаад хачин галзуутай болчихож" гэх байх даа. Нэг нөхрийн тэрлэсэн хуудсыг уншиж байхад нөхөр ингэж бичсэн байсан сан:
"Би ерэн есөн настай байхдаа ч гэсэн эмаксийг нээгээд төвөггүй ажиллачих чалхтай байх болно." (Чалхыг нь би нэмчих шиг боллоо.)
Би одоо тэр хүний үгтэй санал бүрэн дүүрэн нийлж чадна. Монголд дундаж наслалт доогуур юм чинь
"Би далан долоон настай байхдаа ч гэсэн эмакс дээр далдаганаж нэг ирээд давхар давхар товчлуурыг давс хужир цацаж байгаа юм шиг даан ч нэг аагтай цайнаасаа холдоод явчихав уу, энэ дал нуруугаар хатгаад явчихлаа. Хэвтэж нэг амрая даа..."
гэх байх л даа.

2010/04/27

Угз тайлах

Өмнө бичигдсэн Логик програмчлалын жишээг туршиж үзэж байгаад мэдэхгүй хүнд жаахан амтлуулах, өөртөө жаахан сэргээх зорилгоор үүнийг тэрлэе гэж шийдэв.
Би өөртөө энэ логик програмчлалыг эх хэлээрээ Утга Учрын Уялдаа Холбооны Зангилааг Тайлах гэж нэрийдэв (УУУХЗТайлах). "Угз тайлах" гэж байгаа юм шиг уншигдаж байгаа биз?

Би аль болох тун товч цөөхөн үгээр нэг тайлбарлая. Уг хэл дээр програмчлахдаа:

  • эхлээд хөдлөшгүй баримтуудаар юмсын хоорондох уялдааг бэлдэж өгнө. (facts)
  • бэлдсэн баримтуудаараа хооронд нь холбож дүрэм үүсгэнэ ( rules )
  • өгөгдлийн баазаасаа лавлаж асууна ( query)
эхний хоёрыг нь ерөнхийд нь өгөгдлийн бааз гэж нэрлэдэг. Жижиг анхаарах зүйл бол:
  • хувьсагч нар том үсгээр эхэлж бусад нь жижиг үсгээр бичигддэг.
  • лавласан асуулт болон баримтын бичиглэлт бүгд ЦЭГЭЭР дууссан байх ёстой
  • хоёр үнэн юмны хооронд нь таслал тавьсан бол бөгөөд гэсэн утга илэрхийлдэг.
  • аль нэг нь үнэн байхад болно гэсэн бол ; гэсэн цэг таслалаар илэрхийлдэг.

Жишээ авалгүйгээр юм тайлбарлах шиг хэрэггүй юм гэж үгүй бил ээ. Эхлээд хэдэн хөдлөшгүй баримтууд бэлдэе:


Энд би гурван хөдлөшгүй баримт бэлдэж тавив. Энгийн үгээр үүнийг дараах маягаар тайлан уншиж болох юм:
юндэн нансалмаад хайртай.
нансалмаа юндэнд хайртай.
хоролмаа юндэнд хайртай.
уг нотолгоон дээр тулгуурлаад журамт эрийн дүрэм босгоё:


Энэ бичлэгийг тайлбарлахдаа :- гэснээс нь эхлэе. ХЭРЭВ баруун гар тал нь үнэн бол зүүн гар тал нь үнэн гэж тайлж уншиж болно. Тэгэхээр:
ХЭРЭВ юндэн нансалмаад хайртай БӨГӨӨД хуурдаггүй БОЛ юндэн журамтай эр гэж нийтэд нь тайлж унших хэрэгтэй.
not(хуурдаг) гэсэн бичлэгээс та, not гэсэн англи тушаалаар хуурдаг гэсэн дүрмийн эсрэг утгыг нь хэрэглэнэ гэж ойлгоно уу. Мөн хоёр үнэн гэсэн бичлэгийг дунд нь , гэсэн таслалаар тасалж БӨГӨӨД болж байгааг та ойлгосон буй заа.
Мэдээж л дээ, юндэн нансалмаад хайр зарлаж гүйж байснаа гэнэт хоролмаад хайр зарлаад унавал ямар юмных нь журамт эр байхав дээ. За тэгвэл үүнийгээ энэ хэл дээр илэрхийлэх хэрэгтэй болно.


энэ хуурагчийн дүрмийг та бараг надгүйгээр тайлан уншиж байгаа байлгүй дээ: юндэн Х хүнд хайртай БӨГӨӨД тэр Х нь нансалмаа БИШ бол хууралт юм.
Энд Х гэгч тэр нууц амрагийг нь том үсгээр бичсэнийг нь та анзаарч байгаа биз? Яагаад гэдгийг нь та мэдэж байгаа биз дээ? Мэдээж шүү дээ, ийм бузар булай юмыг олны өмнө илчилж дурайтал харуулах гэж том үсгээр тэмдэглэж байхгүй юу.

Тэр Х бол хувьсагч. Пролог ажиллахдаа бэлдэж өгөгдсөн өгөгдлийн баазаас хайртай(юндэн, Х)-д таарах бүх баримт нотолгооноос хайгаад Х-д тэр таарсан нотолгоог нь оноож өгдөг. Жишээ нь та баазаас дараах маягаар лавлаж асууж болно. Эхлээд юуны өмнө ямар ямар хөдлөшгүй баримт болон дүрэмнүүд баазад байгааг хардаг тушаалтай танилцана уу.



эндээс жишээ нь хайртай(юндэн, Х) гэсэн асуултад таарах баримт байвал харуул гэсэн асуулт асууя:


харж байна уу? Х-н оронд нансалмаа гэсэн бичлэг олдож байгааг харуулж байна.
Ингээд одоо байгаа баримт нотолгоон дээрээ тулгуурлаад юндэнг хэр журамтай эр вэ гээд асуугаад үзье.


Асуулт маань "Юндэн журамтай юу?" гэсэн чинь өөдөөс "true" гэж авч байна даа харин ч нэг. Сонин юм даа, юндэнгийн талаар энэ гадаад нөхөр юугаа хийгээд мэдчихсэн бас баталчихсан явж байдаг байна вэ? Юндэн гуайг хилийн чанадад цагаачилж юмуу хараар ажиллаж байгааг нь утга учрын нарийн зангилааг тайлдаг уг програм харь улс уруу нь утасдаж лавлаад уг хэлээр нь хариулж байгаа юм болов уу. За бүү мэд. Ямар ч байсан журамтай гэдгийг нь баттай хэлж байх шиг байна.

Одоо хэдүүлээ хөдлөшгүй хүчтэй үндсэн хуулиа хүртэл хувийн шуналд автаж өөрчилдөг "монгол" "хэнэггүй" "уужим" "балиар бүдүүн" зангаараа түрий барин энд байгаа хөдлөшгүй баримтуудыг өөрчилж нэг үзэх үү? Магадгүй юндэн маань хүний газар хар ажил хийж хоол нойргүй ажиллаж байхдаа эх орондоо үлдсэн хайрт нансалмаагаа хоосон ходоодыг нь тэтгэж хоёр мөөмөөрөө даллан дуудсан хоролмаатай сольж, хормойд шургалсан явдлыг уг нутгийн ардууд нь шөнөөр шургалан гүйж, шуухитнан уухилан, угз тайлах чимээгээр нь мэдээд хайртай(юндэн, хоролмаа) гэсэн sms ч явуулсан байж бас болох юм. За ямар ч байсан



гээд мэдээлэл баттай болсон байг гэж үзье. Ингэхээр журамт эрийн асуудал юрамт эрийн асуудал болон хувирах ёстой доо:


Ааа, ха хаха, ичих нүүрээ элгэндээ наасан юндэн ингэж олны өмнө онигоо болж баригдлаа даа. Энэ гадаад нөхөр шууд хэлж байна ш дээ. FALSE гэж. Би бас муу ч гэсэн худлаа гэдгийг нь ойлгоод байгаа юмаа бас.

За галзуурсан биш ингэж гажиж яанам билээ. Эмакс хэрэглэдэг нөхөр байвал бичсэн файл дээрээ M-x prolog-mode гэж горимыг нь солиод C-c C-l гэж уг файлаа пролог дээр дуудаж хөрвүүлэхээр прологийн асуух самбарыг харуулдаг. Тэндээс та юндэнг журамтай эсэхийг нь асуугаад үз л дээ.

2010/04/23

Эмаксаас тэрлэх

Урьд нь дурлаж баруун гартаа байлгадаг байсан засварлагчаа зүүн гарандаа шилжүүлэн өгч, оронд нь эмакс хэмээх засварлагчийг баруун гартаа барих болсноос хойш хэдэн жил өнгөрчээ. Энэ хооронд бараг бүх зүйлийг эмакс дээр хийхийг зорьж, мөн хийсээр, харин энэ тэрлэлийг эхлүүлэх хүртэл эмаксаас тэрлэж үзээгүй байж. Эхнийхээ хуудсыг тэрлэв. Болж байх юм. Болгох гэж мэдээж хэсэг мангуутлаа л даа.
Ер нь бол хоёр арга ихэвчлэн хэрэглэгддэг бололтой weblogger.el болон e-blog. Би яагаад ч юм эхнийхээр нь оролдож хэсэг хугацаа алдав (гүүгл гуай эхнийхийг нь их олж харуулах юм). Гэтэл нөхрийн илгээсэн нэг хаягийг нээж үзтэл тэр нь миний урдаа барьдаг томчуулын нэг байх нь тэр. Мундаг гуай бас л над шиг ухантаж уур нь хүрээд бичсэн байх юм. Мундаг юм болохоороо мань хүн юу боллоо гэж над шиг уйлаад л сууж байхав дээ, илүү арга олчихож, тэр нь хоёр дахь арга нь юм. Товчхондоо бол энэ хоёр дахь арга нь гүүглийн өөрсдийнх нь гаргасан API-г ашигладаг болохоор алдаа бараг гардаггүй юм байна. Тавигдах ганцхан шаардлага нь ажиллаж байгаа компотитор дээр нь curl суусан байх шаардлагатай. Ингээд e-blog.el файлыг татаж авч нэг газар байрлуулаад .emacs файлдаа дараах оруулгыг нэмсэн бол суулаа гэсэн үг.
;; эмаксаас тэрлэхэд хэрэглэгдэнэ
(load-file "~/elisp/e-blog.el")
Мэдээж ;; тэмдгийн араас бичигдсэн тайлбарыг заавал бичих шаардлагаггүй. Мөн e-blog.el файлын байрлах газрыг зөв зааж өгөх хэрэгтэй (би өөрийнхөө ~/elisp санд хадгалсан). Ингээд эмакс эхэлсний дараа M-x e-blog-new-post тушаал өгөнгүүт тэрлэж эхлэх нь тэр дээ. Танаас хэрэглэгчийн нэр болон нууц үг асууж холбогдсоны дараа таны тэрлэлийн үндсэн гарчгуудыг тань жагсааж харуулах болно. Нэрийн урд нь байгаа нэмэх тэмдэг дээр нь дарснаар тэнд хэдэн тэрлэл байгааг харуулна. Засварлахаар бол мэдээж дээр нь дарахад хангалттай. Харин шинээр тэрлэхээр бол үндсэн гарчиг дээрээ дарна. Ингээд л Гарчиг, Шошго хоёроо оруулаад л дараа нь үндсэн хэсэгт нь санаанд орсноо бичиж дуусгаад C-c C-c дараад л болох нь тэр. Үгүй мөн амар юм даа.