<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-23957702</id><updated>2012-02-17T12:10:25.295+08:00</updated><category term='mobile'/><category term='usi'/><category term='web application'/><category term='clustering'/><category term='continuous integration'/><category term='erlang'/><category term='web'/><category term='windows tips'/><category term='bug'/><category term='coding convention'/><category term='development'/><category term='babylon'/><category term='Programming by Contract'/><category term='community'/><category term='hosting'/><category term='open source'/><category term='time management'/><category term='outsourcing'/><category term='open seminar'/><category term='practice'/><category term='database tuning'/><category term='mongolian'/><category term='japanese'/><category term='tokyo'/><category term='git'/><category term='web 2.0'/><category term='tips'/><category term='software engineering'/><category term='reliability'/><category term='video'/><category term='email'/><category term='nosql'/><category term='unicode'/><category term='performance'/><category term='developer'/><category term='eclipse'/><category term='thought'/><category term='programming paradigm'/><category term='review'/><category term='web 3.0'/><category term='code generation'/><category term='performance tuning'/><category term='web usability'/><category term='хүүхдийн нэр'/><category term='usi dn'/><category term='advice'/><category term='scalability'/><category term='mysql'/><category term='java'/><category term='polyglot programming'/><category term='IoC'/><category term='security'/><category term='Rails'/><category term='stardict'/><category term='програмчлалын хэл'/><category term='development process'/><category term='school'/><category term='password keeper'/><category term='programming contest'/><category term='bash'/><category term='web 1.0'/><category term='hacker'/><category term='eventdriven'/><category term='DI'/><category term='test automation'/><category term='Defensive programming'/><category term='machine translation'/><category term='social networks'/><category term='android'/><category term='java profiling'/><category term='time saver'/><category term='offshore'/><category term='design'/><category term='quality'/><category term='framework'/><category term='inspection'/><category term='testing'/><category term='automation'/><category term='blogging'/><category term='jython'/><category term='english-mongolian'/><category term='interface design'/><category term='web design'/><category term='ruby'/><category term='AOP'/><category term='virtualization'/><category term='hpc'/><category term='multiple booting'/><category term='comment'/><category term='cache'/><category term='coder'/><category term='stone soup'/><category term='github'/><category term='scim'/><category term='IDE'/><category term='Supercomputers'/><category term='Seasar2'/><category term='problem solving'/><category term='static code analyzer'/><category term='my code'/><category term='agile'/><category term='shell'/><category term='python'/><category term='BDD'/><category term='planning'/><category term='boiled frogs'/><category term='computer'/><category term='tuning'/><category term='windows'/><category term='шинэ хандлага'/><category term='programming language'/><category term='Spring'/><category term='firewall'/><category term='standardization'/><category term='Design by Contract'/><category term='teaching'/><category term='hardware'/><category term='linux'/><category term='human resource'/><category term='computer science'/><category term='web stress test'/><category term='tomcat profiling'/><category term='emacs'/><category term='vi'/><category term='cloud computing'/><category term='translation'/><category term='tool'/><category term='patterns'/><category term='ajax'/><category term='howto'/><category term='programming'/><category term='хошин'/><category term='lisp'/><category term='font'/><category term='book'/><category term='pragmatic'/><category term='unix'/><category term='twitter'/><category term='system design'/><category term='history'/><category term='dictionary'/><category term='mathematics'/><category term='antipatterns'/><category term='project management'/><category term='writing'/><category term='profiling'/><title type='text'>Ochko's Strange Loops</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default?start-index=101&amp;max-results=100'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>135</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-23957702.post-4588679999458076144</id><published>2011-01-09T16:33:00.007+08:00</published><updated>2011-01-09T20:10:49.708+08:00</updated><title type='text'>Opening Emacs by keyboard shortcut on Linux and Mac OS X</title><content type='html'>&lt;div&gt;&lt;b&gt;Linux&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Доорхи скрипт нь Линукс систем дээр эмакс нээх зориулалттай. Дараах 3 нөхцлийг тооцно.&lt;div&gt;&lt;ul&gt;&lt;li&gt;эмакс ажиллаагүй байвал ажиллуулна&lt;/li&gt;&lt;li&gt;эмакс ажиллаж байвал ажиллаж байгаа цонхыг идэвхжүүлнэ&lt;/li&gt;&lt;li&gt;параметр заасан тохиолдолд өгөгдсөн файлыг ажиллж байгаа эмакс дотор нээнэ&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;TITLE='=Emacs='&lt;br /&gt;&lt;br /&gt;running=`ps -eo fname | grep emacs | wc -l`&lt;br /&gt;&lt;br /&gt;if [ $running -ne 0 ]&lt;br /&gt;then&lt;br /&gt;  if [ $# -ne 0 ]&lt;br /&gt;  then&lt;br /&gt;    emacsclient -n $*&lt;br /&gt;  fi&lt;br /&gt;  wmctrl -a "$TITLE"&lt;br /&gt;else&lt;br /&gt;  xfce4-terminal --title="$TITLE" --icon="~/.icons/emacs.png" --maximize -x emacs $*&lt;br /&gt;fi&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Энэ скриптийг файлд хадгалаад shortcut заагаад өгчихвөл хаанаас ч эмакс руу ганц shortcut дараад орохоор боллоо.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Mac OS X&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Үүнийг Mac дээр applescript ашиглаад иймэрхүү байдлаар хийж болно. Илүү амар арга байвал санал болгоорой.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;try&lt;br /&gt; set psgrep to (do shell script "ps -o 'tty command' | grep emacs | grep -v grep")&lt;br /&gt; set ttyname to "/dev/" &amp; (first word of psgrep)&lt;br /&gt; tell application "iTerm"&lt;br /&gt;  activate&lt;br /&gt;  tell the first terminal&lt;br /&gt;   tell session id ttyname&lt;br /&gt;    select&lt;br /&gt;   end tell&lt;br /&gt;  end tell&lt;br /&gt; end tell&lt;br /&gt;on error&lt;br /&gt; display dialog "Please enter path:" default answer "~/"&lt;br /&gt; set mydir to text returned of result&lt;br /&gt; tell application "iTerm"&lt;br /&gt;  activate&lt;br /&gt;  tell the first terminal&lt;br /&gt;   tell the first session&lt;br /&gt;    write text "cd " &amp; mydir &amp; " &amp;&amp; emacs"&lt;br /&gt;    set name to "Emacs"&lt;br /&gt;   end tell&lt;br /&gt;  end tell&lt;br /&gt; end tell&lt;br /&gt;end try&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Холбоос:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;https://github.com/ochko/scripts-linux&lt;/li&gt;&lt;li&gt;https://github.com/ochko/scripts-mac&lt;/li&gt;&lt;li&gt;http://iterm.sourceforge.net/scripting.shtml&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-4588679999458076144?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/4588679999458076144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=4588679999458076144' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/4588679999458076144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/4588679999458076144'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2011/01/blog-post.html' title='Opening Emacs by keyboard shortcut on Linux and Mac OS X'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-4226335884893580339</id><published>2011-01-08T13:48:00.002+08:00</published><updated>2011-01-08T14:05:16.071+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='social networks'/><title type='text'>Twitter, Buzz, FB,...</title><content type='html'>Нэг хэсэг хугацаанд Twitter, Buzz, FB зэргийг &lt;b&gt;идэвхгүйгээр&lt;/b&gt; хэрэглэхээр шийдлээ. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Идэвхгүй гэдэг нь зөвхөн өөрт хандсан зүйлсэд хариу үйлдэл хийх бөгөөд зөвхөн мэдээлэх зайлшгүй шаардлагатай үед л шинээр пост хийх байх.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Social net идэвхтэйгээр хэрэглэж эхлэснээс хойш хувийн бүтээмж үлэмж буурсныг ажигласан учраас ингэж шийдлээ. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-4226335884893580339?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/4226335884893580339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=4226335884893580339' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/4226335884893580339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/4226335884893580339'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2011/01/twitter-buzz-fb.html' title='Twitter, Buzz, FB,...'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-4756469919616642384</id><published>2010-12-30T23:49:00.004+08:00</published><updated>2010-12-31T00:32:51.454+08:00</updated><title type='text'>Macbook Pro хэрэглэж эхэлсэн анхны сэтгэгдэл</title><content type='html'>Macbook Pro 8G Ram, 128G SSD тэй захилав. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;SSD&lt;/b&gt;.  Миний хувьд зөөврийн тооцоолуур дээр их хэмжээний өгөгдөл байнга хадагалах шаардлага гардаггүй тул хурдыг нь бодож SSD сонгосон юм. XCode ийг 7 минутанд суулгасан тул эргэлддэг дискнээс дор хаяж 3 дахин хурдан байна гэсэн үг. Энэ бол дотрох эд ангийн хувьд мэдрэгдсэн гол үзүүлэлт.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;RAM&lt;/b&gt;. Виртуал машин дотор өөр өөр үйлдлийн системүүд ажиллуулж туршихад санах ой маш чухал. 8G бол орчин үеийн ямар ч үйлдлийн системийг виртуалаар ажиллуулахад боломжийн юм байлээ.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Дэлгэц&lt;/b&gt;. High resolution antiglare дэлгэцийг сонгосон юм. Сайн талууд гэвэл гялбахгүй, бас орчны гэрэлд тохируулаад автоматаар дэлгэцийн гэрлийн хэмжээ өөрчлөгдөөд байгаа нь нүдэнд тун сайн. Нэг хачирхалтай зүйл нь системийн фонтыг томруулж болдоггүй. Өндөр нарийвлалтай дэлгэц учраас үсгүүд хэт жижиг харагдаад нэг л онцгүй. Хэрэглэдэг програм болгон дээрээ фонтоо тааруулах эсвэл дэлгэцийн нарийвчлалаа багасгах арга байна. Дэлгэцийн нарийвчлалаа багасгасан тохиолдолд бүрсийгээд тийм ч таатай бус. Иймд програм болгон дээр фонтын тохиргоо хийж таарч байгаа. Вэб хөтөч дээр бол фонтоо томруулах амархан, гэтэл зарим програм дээр фонт томруулах сонголт ч байхгүй. Миний хувьд ихэнх цагаа тэрминал дээр өнгөрөөдөг учир тэрминалийн фонт тохируулаад асуудлын 90% шийдэгдсэн гэх үү дээ.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Товчлуур&lt;/b&gt;. Өмнө нь ThinkPad хэрэглэдэг байсан болоод ч тэр үү, Macbook Pro гийн товчлуур шууд гологдож байна лээ. Бүдэг гэрэлтэй үед товчлуурууд араасаа гэрэлтдэг нь дажгүй ч, бүрэнхийд тооцоолуур дээр юм хийж нүдээ хорлох хүн ховор. Товчнууд нь их гүехэн бөгөөд хатуу гэх юм уу даа. Удаан ажилласан үед зарим хурууны өндөг болон эхний үе өвдөөд байсан.  Иймд ихэнхдээ HHKB2 ашиглаж байгаа.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Unibody&lt;/b&gt;. Macbook Pro гаднаасаа маш гоё цэмцгэр. Сүүлийн загварууд Unibody гадартай болсон нь бүр ч гоё харагдуулдаг. Гэхдээ үзэмжээс чухал эргономик гэдэг зүйл бий. Тухайлбал яг бугуйн дор таараад байгаа хурц ирмэг нь Trackpad дээр гар очих үед их зовуурьтай(http://dustwell.com/macbook-pro-sharp-edge.html).&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-4756469919616642384?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/4756469919616642384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=4756469919616642384' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/4756469919616642384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/4756469919616642384'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2010/12/macbook-pro.html' title='Macbook Pro хэрэглэж эхэлсэн анхны сэтгэгдэл'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-2167313754004243597</id><published>2010-09-10T14:12:00.002+08:00</published><updated>2010-09-11T16:47:17.170+08:00</updated><title type='text'>Screen.casts.mn</title><content type='html'>pod.casts.mn ийн код дээр домэйн нэрээр ялгаж харуулдаг код оруулаад screen.casts.mn гээд сайттай болчихлоо. Удахгүй скрийнкаст хийж оруулнаа. Мөн энэ сайтаар дамжуулж өөрийн хийсэн скрийнкастыг зарах боломжийг бүрдүүлэх төлөвлөгөөтэй байна. Гэхдээ энэ бол хэтийн зорилго, одоохондоо хүмүүст хэрэг болох эсэхийг сайн мэдэхгүй л байна.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-2167313754004243597?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://screen.casts.mn' title='Screen.casts.mn'/><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/2167313754004243597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=2167313754004243597' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2167313754004243597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2167313754004243597'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2010/09/screencastsmn.html' title='Screen.casts.mn'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-8139158777628654763</id><published>2010-09-06T15:50:00.002+08:00</published><updated>2010-09-06T21:51:58.863+08:00</updated><title type='text'>Pod.casts.mn</title><content type='html'>Чөлөөт радио нэвтрүүлгийн вэб сайтыг эхлүүлэв. Ихэнх цагийг дизайн дээр зарцуулав.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-8139158777628654763?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://pod.casts.mn/' title='Pod.casts.mn'/><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/8139158777628654763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=8139158777628654763' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8139158777628654763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8139158777628654763'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2010/09/podcastsmn.html' title='Pod.casts.mn'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-5510059236407889300</id><published>2010-08-26T10:54:00.003+08:00</published><updated>2010-08-26T18:33:25.310+08:00</updated><title type='text'>3 kinds of programmer</title><content type='html'>There is 3 kinds of programmer.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Drones&lt;/b&gt;. They just do what they supposed to do. They see their code as a work to be finished anyway to be earned. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Craftsmen&lt;/b&gt;. They use good tools in efficient way to produce useful things for others. They do it by hobby and always improve their skills and methods. They like it. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Inventors&lt;/b&gt;. Most important kind of programmer. All the way similar to craftsman, but if existing tools don't satisfy their needs they will try to create completely new tool or method. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;==========================&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Гурван төрлийн програмч байдаг.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Залхуу&lt;/b&gt;. Зөвхөн өөрт оногдсон ажлыг дуртай дургүй хийдэг. Түүний хувьд код бол зөвхөн цалин авахын тулд компьютер дээр бичиж оруулдаг залхуутай үсэг тоонууд.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Дархан&lt;/b&gt;. Сайн багажаар сайн бүтээл хийхийг мэрийдэг. Үргэлж ур чадвараа дээшлүүлэх, шинэ багаж эзэмжих зуршилтай. Зарим нь код бичихийг хобигоо болгож түүнд дурласан байх нь элбэг.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Зохион бүтээгч&lt;/b&gt;. Энэ хамгийн чухал төрлийн програмч. Бүх талаар дархантай адил боловч, байгаа багажууд сэтгэлд таарахгүй эсвэл арга техник нь хүссэн зүйлийг нь хийхэд чамлагдаад эхэлвэл шууд цоо шинэ зүйлийг бүтээхийг оролддог.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;==========================&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;i&gt;Би бол дундах нь юм шиг байлээ. 3 дахь руу ортол сурах юм их байна аа :)&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-5510059236407889300?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/5510059236407889300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=5510059236407889300' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/5510059236407889300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/5510059236407889300'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2010/08/3-kinds-of-programmer.html' title='3 kinds of programmer'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-3331721299991894325</id><published>2010-08-13T20:15:00.004+08:00</published><updated>2010-08-13T20:46:52.372+08:00</updated><title type='text'>Twicut - Time Signal Bot for Mongolian</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HBpM_2O-5ds/TGU9tn39leI/AAAAAAAABB0/iYyAuReetGE/s1600/Screenshot.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 310px; height: 320px;" src="http://3.bp.blogspot.com/_HBpM_2O-5ds/TGU9tn39leI/AAAAAAAABB0/iYyAuReetGE/s320/Screenshot.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5504873973537412578" /&gt;&lt;/a&gt;&lt;a href="http://twitter.com/twicut"&gt;@twicut&lt;/a&gt; бол маш энгийн твитэр бот юм. Цаг тутам нэг удаа таны timeline дээр янзын гоё цагийн тэмдэгийг тавьж өгнө. Та хэрвээ юу юм бол гэж гайхаж байвал нэг өдрийн турш үүнийг дагаад үз, тэгээд үр дүнг нь хараарай. Таалагдвал найзууддаа санал болгоно биз.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.collegium.or.jp/~naru/doc/kiri_tori/en/"&gt;kiri_tori&lt;/a&gt; хэмээх ботоос санаа авч хийлээ.  Энэ ботын хувьд Японоос гадна дэлхийн зарим том том хотуудын цагийн бүс байсан боловч Улаанбаатарынх байхгүй байсан.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Нэг иймэрхүү бот байвал зүгээр гэж &lt;a href="http://twitter.com/aviraa"&gt;@aviraa&lt;/a&gt; санал болгосон даруйд 20-иод мөр Ruby код бичээд ийм үр дүнд хүрэв.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-3331721299991894325?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/3331721299991894325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=3331721299991894325' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/3331721299991894325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/3331721299991894325'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2010/08/twicut-time-signal-bot-for-mongolian.html' title='Twicut - Time Signal Bot for Mongolian'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_HBpM_2O-5ds/TGU9tn39leI/AAAAAAAABB0/iYyAuReetGE/s72-c/Screenshot.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-6213169339719905100</id><published>2010-07-27T20:12:00.006+08:00</published><updated>2010-09-19T06:18:25.787+08:00</updated><title type='text'>Rails 3, Cucumber, Machinist, Authlogic Gotchas</title><content type='html'>&lt;div&gt;bundle install&lt;/div&gt;&lt;div&gt;rails g rspec:install&lt;/div&gt;&lt;div&gt;rails g machinist:install&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;1. Specify rspec versions in Gemfile If you get "&lt;span class="Apple-style-span"&gt;no such file to load -- action_controller/test_process&lt;/span&gt;" error:&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;gem 'rspec', "&gt;=2.0.0.beta.5", :group =&gt; :test       &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;group :test do                                                                                                                                             &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;  ...                                                                                                   &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;  gem 'rspec-rails',"&gt;=2.0.0.beta.5"&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;  ...&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;end&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;2. Bundle Authlogic from git If you get "&lt;span class="Apple-style-span"&gt;undefined method `before_persisting' for Authlogic&lt;/span&gt;" error:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;gem 'authlogic', :git =&gt; 'http://github.com/binarylogic/authlogic.git'&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Emacs tips&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Feature mode: &lt;a href="http://github.com/michaelklishin/cucumber.el"&gt;http://github.com/michaelklishin/cucumber.el&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Org mode: &lt;a href="http://orgmode.org/guide/Tables.html#Tables"&gt;http://orgmode.org/guide/Tables.html#Tables&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-6213169339719905100?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/6213169339719905100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=6213169339719905100' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6213169339719905100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6213169339719905100'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2010/07/rails-3-cucumber-machinist-authlogic.html' title='Rails 3, Cucumber, Machinist, Authlogic Gotchas'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-7787283517381300849</id><published>2010-07-25T22:36:00.003+08:00</published><updated>2010-07-25T22:43:56.345+08:00</updated><title type='text'>Programming and Mozart’s Requiem</title><content type='html'>A single good programmer working on a single task has no coordination or communication overhead. Five programmers working on the same task must coordinate and communicate. That takes a lot of time...&lt;br /&gt;&lt;br /&gt;The real trouble with using a lot of mediocre programmers instead of a couple of good ones is that no matter how long they work, they never produce something as good as what the great programmers can produce.&lt;div&gt;&lt;br /&gt;Five Antonio Salieris won’t produce Mozart’s Requiem.&lt;br /&gt;Ever. Not if they work for 100 years.&lt;br /&gt;&lt;br /&gt;-Joel Spolsky, software developer, Fog Creek Software&lt;br /&gt;( from Hitting the High Notes)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Нэг даалгавар дээр ажиллаж буй нэг сайн програмчинд харилцаа холбоо болон зохицуулалт хэрэггүй. Нэг ажил дээр таван програмчин ажиллаж байвал тэднийг зохицуулах, тэд нар өөр хоорондоо харилцах зайлшгүй шаардлагатай. Үүнд маш их цаг ордог...&lt;div&gt;&lt;br /&gt;Олон тааруу програмчидыг цөөн сайн програмчдын оронд ажиллуулахын жинхэнэ зовлон бол тэд хир удаан ажиллах нь хамаагүй, тэд хэзээ ч сайн програмчидын бүтээдэгтэй дүйх бүтээлийг гаргаж чаддаггүйд л байгаа юм.&lt;br /&gt;&lt;br /&gt;Таван Антонио Салери нийлсэн ч Моцартын Рэквиэмийг зохиож чадахгүй. Хэзээ ч. Зуун жилээр ажилладаггүй л юм бол.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-7787283517381300849?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/7787283517381300849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=7787283517381300849' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/7787283517381300849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/7787283517381300849'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2010/07/programming-and-mozarts-requiem.html' title='Programming and Mozart’s Requiem'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-5573729325827075398</id><published>2010-05-31T11:47:00.004+08:00</published><updated>2010-05-31T15:54:14.050+08:00</updated><title type='text'>Coder.mn шинэчлэгдлээ</title><content type='html'>Хэд хоног чөлөө заваараа оролдсоор &lt;a href="http://coder.mn/"&gt;coder.mn&lt;/a&gt; сайтыг шинэчиллээ. Хэдхэн цагийн дараа шинэ хувилбар онлайн болсон байх болно. Шинэчлэлт хийсэн зорилго бол илүү энгийн болгох, ажиллагааг сайжруулах байв. Хийгдсэн өөрчлөлтүүд:&lt;div&gt;&lt;ul&gt;&lt;li&gt;Хэрэглэгчийн нэр дотроос зарим содон тэмдэгтүүдийг хассан. Тухайлбал налуу зураас, хаалт гэх мэт. Тэгэхээр зарим хэрэглэгчдийн логин нэр солигдсон байгаа гэсэн үг. Нууц үг сэргээх линкээр ороод бүртгүүлсэн имэйлээ оруулвал хэрэглэгчийн нэрийг нууц үг сэргээх линкийн хамт илгээх болно.&lt;/li&gt;&lt;li&gt;Нууц үг хадгалах энкриптлэл солигдсон. Иймд хуучин нууц үгээрээ орж чадахгүй гэсэн. Вэб дээр нууц үгсийг тэр чигээр хадгалдаггүй учраас нууц үг сэргээх линкээр орж нууц үгээ шинэчлэхээс өөр аргагүй гэсэн үг.&lt;/li&gt;&lt;li&gt;Өөрийн зургийг оруулах боломжийг хассан. Оронд нь gravatar ашиглах болсон. &lt;a href="http://gravatar.com/"&gt;Gravatar.com&lt;/a&gt; руу ороод зургаа оруулчвал coder.mn дээр зураг тань гараад ирэх болно. &lt;/li&gt;&lt;li&gt;Хэрэглэгчийн нэр нууц үгээр орохоос гадна, openid хэрэглэж нэвтрэх боломжтой болсон.&lt;/li&gt;&lt;li&gt;Бодлого, хичээл оруулахад файл хавсаргадаг боломжийг хассан. Хэрэв зураг, код мэтийг хавсаргах шаардлагатай бол&lt;a href="http://tinypic.com/"&gt; tinypic.com&lt;/a&gt;, &lt;a href="http://youtube.com/"&gt;youtube.com&lt;/a&gt; зэрэг вэб сайтууд дээр байрлуулаад линкийг нь оруулах хэрэгтэй. Энэ нь сэрвэр дээр зай хэмнэхдээ биш вэб ачаалагдах хурдыг нэмж байгаа давуу талтай.&lt;/li&gt;&lt;li&gt;Бодлогод оноо оруулахгүй, харин 4 түвшинтэй болгосон. Үүнтэй холбоотойгоор хэрэглэгчдийн нийт оноо бас өөрчлөгдсөн.&lt;/li&gt;&lt;li&gt;Бодлого шалгах системд нилээн өөрчлөлт орсон тул бүх бодолтыг дахин шалгаж оноог шинэчилсэн байгаа. &lt;/li&gt;&lt;li&gt;gcc 4.1 хувилбар луу шилжсэн тул зарим бодолт компайл хийгдэхгүй болсон байсныг зассан. Ихэвчлэн C++ дээр бодсон бодолтод header файл оруулахаа мартсан байсан.&lt;/li&gt;&lt;li&gt;Өмнөх бодлого шалгах систем санах ойн хязгаарыг жаахан алдаатай тооцдог байсныг засахыг оролдсон. Шинэ шалгагчаар үзэхэд зарим бодлого санах ойн хязгаарыг давахгүй болсон тохиолдол гарч байна лээ.&lt;/li&gt;&lt;li&gt;Ажил захиалдаг, хийж гүйцэтгэдэг хэсгийг хассан. Учир нь хэн ч хэрэглэхгүй байсан.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Зарим бага сага өөрчлөлтийг энд дурьдсангүй орхив. Өнөө хүртэл тасалдах, зогсох зэрэг асуудал олон байсан боловч, хэрэглэсээр ирсэн тэвчээртэй кодерууддаа баярлалаа. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Happy Coding!&lt;/div&gt;&lt;div&gt;Маахай Л.Очирхуяг&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-5573729325827075398?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/5573729325827075398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=5573729325827075398' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/5573729325827075398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/5573729325827075398'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2010/05/codermn.html' title='Coder.mn шинэчлэгдлээ'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-2477474471213832083</id><published>2010-04-27T15:24:00.001+08:00</published><updated>2010-04-27T15:27:02.321+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='хүүхдийн нэр'/><title type='text'>Хүүхдэд нэр хайж байна уу?</title><content type='html'>Шинэ хүндээ нэр хайж байна уу? Тэгвэл &lt;a href="http://ner.query.mn/"&gt;Нэр.query.mn&lt;/a&gt; дээрээс үзээрэй. Нэрнээс хайж, үсгийн дарааллаар шүүрдэж эсвэл ангилалаар харж болно. Ойр дотныхноосоо саналыг нь авч цуглуулсан нэрнээсээ санамсаргүйгээр сугалж ч болно. Одоогоор ихэнх Монгол нэрс бүртгэгдсэн байгаа боловч зарим сүүлийн үеийн нэрс дутуу орсон, ангилал бүрэн хийгдээгүй, мөн нэрийн тайлбар сэлт ерөөсөө хийгдээгүй байгаа. Гэвч тайлбар бичих болон ангилал хийх боломж хэн бүхэнд нээлттэй байгаа. Та ороод үзээрэй, таньдаг хүмүүсээс чинь хэн нэг нь хүүхэдтэй болсон бол энэ сайтыг заавал хэлж өгөөрэй. Монголын үрс маш олон болтугай!&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/rxVEnzmMiz0&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/rxVEnzmMiz0&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/dQE3rDZDDwU&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/dQE3rDZDDwU&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-2477474471213832083?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/2477474471213832083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=2477474471213832083' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2477474471213832083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2477474471213832083'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2010/04/blog-post.html' title='Хүүхдэд нэр хайж байна уу?'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-6998861439888306722</id><published>2010-03-28T16:21:00.014+08:00</published><updated>2010-03-30T12:48:19.373+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tokyo'/><category scheme='http://www.blogger.com/atom/ns#' term='community'/><category scheme='http://www.blogger.com/atom/ns#' term='mongolian'/><title type='text'>Санаа нийлвэл явдал нийлнэ</title><content type='html'>Нэг ийм үг байдаг даа. Ноднин бидний хэдэн нөхөд(Токио дахь IT ийнхан, гэхдээ ихэнх нь ирж амжаагүй байх) &lt;a href="http://ochko.blogspot.com/2009/06/it.html"&gt;уулзаад&lt;/a&gt; сайхан ярилцсан. Хамтраад хэрэгжүүлж болох олон гоё санаа гарч ирж байсан. Дараагийн уулзалт хэзээ вэ гэж хүмүүс асууж байна? Удахгүй хийцгээе. Бид нэгдмэл байж чадвал юманд хүрнэ гэдэгт итгэдэг... Би лав энэ уулзалтанд ирэх хүн бүхэнд өөр шигээ л итгэж байна. Яагаад гэвэл та нар миний элэг нэгтнүүд, тэр тусмаа монголын ирээдүйг авч явах залуус. Бид нар л бид нараараа байхгүй бол хэн ч бид нарын өмнөөс хийхгүй. Энэ уулзалтаа таслаж болохгүй байхаа залуус аа... Ядаж л "Том залуус" болтлоо. Том залуус гэж монголын дараа үеийг авч явах, мэдээллийн технологийн чигийг гаргах хүмүүсийг хэлж байна. Энэ бичлэг богино ч гэлээ, энэ хүртэл уншсан бол чи бидний л нэг. Бид үнэмлэхгүй, гишүүнчлэлгүй, гэхдээ бид л бол бид, чи мэдэж байгаа. Мэдээллийн технологийн салбар дахь найзууддаа уриалъя. Чадах бүхнээрээ бие биедээ тусалцгаая! Чадахгүй юмаа сурахыг хичээцгээе! Энэ загвар ашигтай гэдгийг баталсан теорем байдаг. Дараагийн уулзалтанд ирэх хүмүүс коммэнт үлдээгээрэй. Итгэл бүх юмны үндэс юм шүү!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-6998861439888306722?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/6998861439888306722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=6998861439888306722' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6998861439888306722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6998861439888306722'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2010/03/blog-post.html' title='Санаа нийлвэл явдал нийлнэ'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-4102946912210453586</id><published>2010-03-26T00:08:00.002+08:00</published><updated>2010-03-26T00:19:56.613+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nosql'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><title type='text'>Twitter is moving to Cassandra</title><content type='html'>Twitter &lt;a href="http://ochko.blogspot.com/2009/07/nosql.html"&gt;NoSQL&lt;/a&gt; ашиглах&lt;a href="http://ochko.blogspot.com/2009/05/why-twitter-is-down.html"&gt; ёстой байсан&lt;/a&gt; нь гарцаагүй. &lt;a href="http://nosql.mypopescu.com/post/407159447/cassandra-twitter-an-interview-with-ryan-king"&gt;Тэд Cassandra -г сонгожээ&lt;/a&gt;. Ажиллаж буй аврага системийн дэд бүтцийг шинэчлэхдээ “integrate first, then iterate” гэсэн зарчмыг баримтлах юм байна. Яагаад twitter ийн унах, эсвэл ямар нэг шинэчлэлт хийх нь надад хамаатай, хамаатайгаас гадна би блог бичих болов гэж гайхаж магад. Нэгдүгээрт, twitter уначихвал би энэ тухай жиргэж чадахгүй болно(Та ч гэсэн хэрэглэдэг биз дээ :) ). Хоёрт, энэ аврага системийн бүтцээс хөгжүүлэгч, системийн инженер хүний хувьд сурч авах юм байх нь мэдээж.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-4102946912210453586?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/4102946912210453586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=4102946912210453586' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/4102946912210453586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/4102946912210453586'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2010/03/twitter-is-moving-to-cassandra.html' title='Twitter is moving to Cassandra'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-2498156700492192650</id><published>2009-12-30T08:44:00.003+08:00</published><updated>2010-01-03T13:24:30.847+08:00</updated><title type='text'>Оны шилдэг...</title><content type='html'>Япон дахь Монголчуудын Холбооноос Шинэ жилийн цэнгүүн зохиож урилга ирүүлсэн тул оролцлоо. Хүүхдүүдэд өвлийн өвгөн аав бэлэг өгч, тоглоом наадам явуулсан, бас хүүхдүүд дуу дуулж шүлэг уншиж, бүжиг бүжиглээд бага байхад болдог шиг гоё шинэ жилийг зохион байгуулж гэж санагдсан. Томчуудад ч бас олон сайхан арга хэмжээнүүд байсны нэг нь Оны шилдэг шалгаруулах ёслол байв. Toli.query.mn сайт маань Оны шилдэг сайн үйлсээр шалгарав. Хувь нэмэр оруулсан бүх хүмүүст баярлалаа. Энэ шагнал бол ганц минийх бус та бидний бүгдийнх юм. Та нарын хувь нэмэргүйгээр сайт маань босохгүй байх байсан. &lt;a href="http://toli.query.mn/contributors"&gt;Бүгдээрэнд&lt;/a&gt; нь ирж буй шинэ оны мэнд хүргэе!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Холбоос:&lt;/div&gt;&lt;a href="http://www.mongolnews.mn/unuudur.php?n=44228"&gt;Өнөөдөр сонин: Япон дахь монголчууд Оны шилдгээ шалгаруулав&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.inet.mn/?vfile=9tpui7&amp;amp;vmet_id=5096&amp;amp;vmet_main=4975"&gt;INET: Япон дахь Монголчууд оны шилдгээ шалгаруулав&lt;/a&gt;&lt;div&gt;&lt;a href="http://www.tsahimurtuu.mn/24tsag/2009/12/28/1735"&gt;Цахим өртөө : Япон дахь Монголчууд оны шилдгээ шалгаруулав&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-2498156700492192650?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/2498156700492192650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=2498156700492192650' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2498156700492192650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2498156700492192650'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/12/blog-post.html' title='Оны шилдэг...'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-3756074339738081319</id><published>2009-11-13T12:50:00.003+08:00</published><updated>2009-11-13T12:59:52.586+08:00</updated><title type='text'>Монгол үсгийн хүснэгтийг IBus дээр</title><content type='html'>Би уг нь &lt;a href="http://ochko.blogspot.com/2006/04/scim.html"&gt;SCIM ашигладаг&lt;/a&gt; байлаа. Саяхан Үбүнтү 9.10 суулгаснаас хойш SCIM маань Emacs дээр ажиллахаа больчихсон учраас шийдэл хайвал emacs-nox дээр ажилладаг гэж байна. Гэхдээ л ер нь SCIM бол зарим таарамжгүй зүйлс байдаг, ирээдүйд IBus ер нь халааг нь авах төлөвтэй. Ингээд IBus руу шилжлээ. Үсгийн харгалзааны хүснэгт хийхэд SCIM тэй бараг адилхан боловч. Тэрийгээ бинар болгож хөрвүүлэхэд "=" тэмдэг дээр асуудал гарав. Тэгэхээр нь бараг хэрэглэдэггүй харь үсгийг тэр чигт нь хаячихлаа. Github дээр &lt;a href="http://github.com/ochko/ibus-table-mongolian"&gt;ibus-table-mongolian&lt;/a&gt; гээд тавьчихлаа.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-3756074339738081319?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/3756074339738081319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=3756074339738081319' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/3756074339738081319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/3756074339738081319'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/11/ibus.html' title='Монгол үсгийн хүснэгтийг IBus дээр'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-817790360013863710</id><published>2009-11-07T11:57:00.003+08:00</published><updated>2009-11-07T12:18:08.747+08:00</updated><title type='text'>Энгийн гэдэг Төвөгтэй</title><content type='html'>Тийм ээ, &lt;a href="http://avdi.org/devblog/2009/10/29/simplicity-is-complicated/"&gt;Энгийн гэдэг төвөгтэй&lt;/a&gt;. Энэ нийтлэлийг уншаад эргэцүүлж байсан юм санаанд орлоо. Апликэшн програмыг бас бодлогыг ч гэсэн аль болох энгийнээр шийдвэл тэр нь эргээд уран гоёмсог, найдвартай, хурдан зэрэг олон сайн талуудыг бий болгодог билээ. Гэтэл яагаад энгийн програмаас ярвигтай програм нь их бичигдээд байна вэ? Хүмүүс яагаад ярвигтай програм бичихдээ амархан, энгийн бөгөөд оновчтойг хийхдээ хойрго байдаг юм бол? Тэгвэл "&lt;a href="http://www.csd.uwo.ca/~magi/personal/humour/Computer_Audience/The%20Parable%20of%20the%20Two%20Programmers.html"&gt;Хоёр програмчны тухай сургаальт үлгэрийг&lt;/a&gt;" уншаад үзээрэй. Энгийн бөгөөд оновчтой шийдлийг олж гаргах процесс нь өөрөө ярвигтай юм. Маш энгийн, ойлгоход хялбар, хэрэглэхэд амархан програм байлаа гэхэд, тэр програмыг хийхэд бас энгийн хялбар байсан гэж ойлгож болохгүй шүү.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-817790360013863710?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/817790360013863710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=817790360013863710' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/817790360013863710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/817790360013863710'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/11/blog-post_07.html' title='Энгийн гэдэг Төвөгтэй'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-7602854526464568400</id><published>2009-11-06T00:07:00.005+08:00</published><updated>2009-11-06T00:48:40.749+08:00</updated><title type='text'>Заан - Бич, Цээжил, Дага, Хамтар</title><content type='html'>Мартана гэдэг маниас урьдын юм гэдэг. Нас ахихаар(нээх хөгшин) улам л мартамхай болоод хэл сурах, үг тогтооход нэмж цээжилхээсээ илүүтэйгээр мартагдах нь амар болжээ.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Эрдэмтэд ер нь судлаад нас ахихаар мартамхай болдгийг судалсан байдаг. Компьютерээр бол хатуу диск удаад ирэхээрээ олон дахин бичиж усгасаар байгаад зарим хэсэгт нь юм бичигдэхээ байчихдаг, эсвэл бичигдсэн юм нь уншигдахаа байчихдагтай төстэй юмуу даа.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Мартах магадлал нь тухайн зүйлийг уншсан хугацаанаас хамааралтай. Түүнийг мөн л судлаад мартуулахгүй сэргээх аргуудыг зохиожээ. Эдгээр аргуудын нэг дээр суурилсан үг тогтоох(томъёо гэх мэт бусад зүйлст ч хэрэглэж болно) &lt;a href="http://zaan.query.mn/"&gt;вэб систем&lt;/a&gt; хийлээ. Эхнэр болон хоёр бяцхан их мэдэхчүүддээ зориулсан юм.  Хэрэглэж үзээд сэтгэгдлээ хуваалцаарай. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-7602854526464568400?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/7602854526464568400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=7602854526464568400' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/7602854526464568400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/7602854526464568400'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/11/blog-post.html' title='Заан - Бич, Цээжил, Дага, Хамтар'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-5984823654714188976</id><published>2009-10-20T20:44:00.002+08:00</published><updated>2009-10-20T21:19:06.845+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dictionary'/><title type='text'>Монгол Хэлний Тайлбар Толийн эх файл CSV форматаар</title><content type='html'>&lt;a href="http://toli.query.mn/"&gt;Монгол Хэлний Тайлбар тол&lt;/a&gt;ийг stardict болон babylon формат руу хөрвүүлэн татахад бэлэн тавьсан билээ. Зарим хүмүүс судалгаа шинжилгээ болон, бусад зорилгоор ашиглахад хэрэгтэй байна гэсэн тул CSV формат руу бас хөрвүүллээ. &lt;a href="http://toli.query.mn/files"&gt;Татаж авч&lt;/a&gt; хэрэглэхээсээ өмнө &lt;a href="http://toli.query.mn/usage"&gt;Хэрэглэх нөхцөл&lt;/a&gt;тэй нь заавал танилцаарай.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-5984823654714188976?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/5984823654714188976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=5984823654714188976' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/5984823654714188976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/5984823654714188976'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/10/csv.html' title='Монгол Хэлний Тайлбар Толийн эх файл CSV форматаар'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-6626239243045785595</id><published>2009-10-03T21:24:00.004+08:00</published><updated>2009-10-03T22:01:00.353+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><title type='text'>Твитерт юу дутуу вэ?</title><content type='html'>Твитерийн талаар &lt;a href="http://ochko.blogspot.com/2009/05/why-twitter-is-down.html"&gt;өмнө нэг удаа&lt;/a&gt; шүүмжлэн бичсэн билээ. Энэ удаа хэрэглэгчийн үүднээс үргэлжлүүлээд дахин нэг шүүмжилчихье.&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Твитерийг зөвхөн англи хэлтнүүд ашиглана гэж бодсон -&lt;/i&gt; Тааг дээр монголоор бичиж болдоггүй. &lt;/li&gt;&lt;li&gt;&lt;i&gt;Т&lt;/i&gt;&lt;i&gt;витер америкчуудад зориулагдсан - &lt;/i&gt;Улс үндэстэн, хотоор ч юмуу ялгарч тусгаарлагдаж болдоггүй.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Миний санаагаар бол юникодоор бүх зүйл ОК байхаас гадна, хэрэглэгчид ямар нэг ангилал маягийн зүйлийг тааг шиг тодорхойлчихоод(мета-тааг гэчихье), түүгээрээ ангилагдах боломжтой бол зүгээр. Тухайлбал улс, үндэстэн, хот, цамцны өнгө гээд дуртай зүйлээрээ мета-тааг буюу комюнити байгуулж болмоор санагддаг. Мэдээж хүн хэдэн ч мета-тааг сонгож болохоор байх ёстой.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Янз бүрийн хуулабар байдаг л юм чинь твитерийн Монгол хуулбарыг хийж болох л юм. Гэвч нэгдүгээрт, Монгол жиргээчид маань жинхэнэ твитертэйгээ харьцах хэрэгцээ байсаар байна, хоёрдугаар удахгүй твитер маань миний хүсээд байгаа боломжийг хийчихвэл ажлын гарз болно.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Оюутнууд төгсөлтийн ажлаараа хийвэл гоё ажил болно л доо. Твитер API-ийг жаахан судлахад клиент талыг нь нээлттэй эх бүхий твитер клиент дээр суурилаад амархан хийнэ. Харин сервэр тал дээр нь &lt;a href="http://ochko.blogspot.com/2009/07/nosql.html"&gt;NoSQL&lt;/a&gt; ашиглахад яг таарахаар санагддаг. &lt;a href="http://code.google.com/p/redis/"&gt;Redis&lt;/a&gt; ашиглаад твитер маягийн апликэшн хийсэн жишээ байсан дээр суурилаад сэрвэр талаа хийхэд болохгүй зүйл байхгүй.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-6626239243045785595?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/6626239243045785595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=6626239243045785595' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6626239243045785595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6626239243045785595'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/10/blog-post.html' title='Твитерт юу дутуу вэ?'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-5762260710466376378</id><published>2009-09-15T22:09:00.002+08:00</published><updated>2009-09-15T22:48:04.567+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nosql'/><title type='text'>NoSQL гэж юу вэ?</title><content type='html'>Сүүлийн үед NoSQL өгөгдлийн сангууд нилээн эрчимжих хандлага харагдаж байна. Гэхдээ өгөгдлийн сангийн нийт хэрэглээний 1% хувийг ч эзлэх эсэх нь эргэлзээтэй л дээ. RDBMS нь өгөгдлийг хүснэгт зохион байгуулалттайгаар хадгалж, SQL хэл ашиглаад бичлэгүүдийг холбож ханддаг. Жишээ нь JOIN хийх, WHERE нөхцөл ашиглах гэх мэт. SQL хэл өгөгдлийг үнэхээр гарын дор болгож чаддаг боловч нэг асуудалтай - Scale хйих буюу өргөтгөхөд хэцүү байдаг. Нэг машин дээр байсан өгөгдлийн сангаа 2, 3 эсвэл 10 машин дээр ажиллуулах шаардлага гарвал яах бол? Ингэж ажиллуулах нь хэцүү. Ажиллуулж чадлаа гэхэд  JOIN, WHERE гээд сүпер түлхүүр үгс маань удаан ажиллаж эхлэнэ.&lt;br /&gt;&lt;br /&gt;Харин SQL-гүй өгөгдлийн сангуудын хувьд энэ асуудал хялбар шийдэгддэг. Ихэнх нь анхнаасаа тархмал, өргөтгөхөд хялбар байхыг тооцож хийгдсэн учраас. Гэвч NoSQL өөрийн сул талтай. Жишээ нь, SQL-гүйгээр өгөгдлийн сан ашиглаад програм бичнэ гээд төсөөл дөө. Хачин санагдана, учир нь бид ямагт өгөгдлийг хүснэгт хэлбэрээр төсөөлөөд сурчихсанд байгаа юм. Ер нь ч ихэнх тохиолдолд мэдээлэл хүснэгт хэлбэрт байх нь ашиглахад амар байдгаас тэр. SQL-гүй програмыг зохиомжилно гэдэг системийг арай өөр өнцгөөс харахыг шаардана.&lt;br /&gt;&lt;br /&gt;Зарим мэдээлэл заавал хүснэгт хэлбэрт байгаад, SQL ашиглаад байх шаардлагагүй ч байдаг. Чухам ийм л үед тэдгээрийг ашиглах нь зөв. Эсвэл системээ NoSQL өнцгөөс хараад шинээр зохиомжилж болох.&lt;br /&gt;&lt;br /&gt;Эдгээрээс онцлогуудыг дурдвал:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Tokyo Cabinet&lt;/span&gt; - Маш хурдтай, тархаж ажиллах чадвартай, өргөн боломж бүхий key-value store юм. Түлхүүрээр нь ямар нэг мэдээллийг хадгалж, хандах бөгөөд мэдээлэлт нь ямар ч төрлийн өгөгдөл байж болно. Hash, B-Tree, Table гэсэн гурван төлөвт ажиллаж чаддаг. BerkeleyDB-тэй өрсөлдөхүйц key-value store гэхээр олон жилийн хөдөлмөр шингэсэн байхаас аргагүй. Японы Facebook болох Mixi санхүүжүүлдэг гэхээр  тогтвортой гэдэг нь харагдана.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;CouchDB&lt;/span&gt; - Бодит утгаараа concurrent байх боломжтой, учир нь Erlang дээр хийгдсэн. Мөн л key-value store боловч, value нь JSON төрөлтэй. REST интерфэйстэй учраас уян хатан. Бусдаасаа давуу тал нь нэг баазыг өөр тийш хуулах, хоёр баазыг синхрон хийхдээ маш гарамгай.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Cassandra&lt;/span&gt; - Анх Facebook хөгжүүлж эхлээд нээлттэй эх болгосон гэхээр юуг хийхэд бэлэн, нас бие гүйцсэн гэдэг нь баталгаатай. Хэд хэдэн давхар холбоост массиваас тогтоно. Tokyo Cabinet -ийн адилаар зүгээр key-value store байхаас гадна хүснэгт маягаар бүтэцлэж хадгалдаг. Олон машин дээр тархааж ажиллуулахаар зохиогдсон.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Redis&lt;/span&gt; - Tokyo Cabinet төстэй гэхдээ жагсаалт, олонлог гэсэн 2 төрлийн өгөгдлийн бүтцийг value тодроо хадгалах боломжтой. Ихэнх үйлдлийг санах ой дотор хийгээд диск руу байн байн хадгалдаг учраас маш хурдан, гэвч осолдож систем гэнэт зогсвол өгөгдөл алдагдах аюул бий. Тархсан байдлаар ажиллахад тийм сайн биш. Гэхдээ өгөгдлийн сан санах ойд багтах тохиолдолд эхний сонголт байж болох талтай.&lt;/li&gt;&lt;/ul&gt;Дээрхи жагсаалт нөлөө бүхий баазуудыг бүгдийг багтааж чадаагүй. Миний сонирхож амжсан баазууд л энэ юм.&lt;br /&gt;&lt;br /&gt;Яг тохирох эсэхийг хэрэглэж байж л мэдэгддэг хойно, бодитоор хэрэглэж үзсэн хүн байвал сэтгэгдлээ хуваалцана гэдэгт найдаж байна.&lt;br /&gt;&lt;br /&gt;Эх сурвалж:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;http://www.eflorenzano.com/blog/post/my-thoughts-nosql/&lt;/li&gt;&lt;li&gt;http://blog.oskarsson.nu/2009/06/nosql-debrief.html&lt;/li&gt;&lt;li&gt;http://www.igvita.com/2009/02/13/tokyo-cabinet-beyond-key-value-store/&lt;/li&gt;&lt;li&gt;http://www.engineyard.com/blog/2009/key-value-stores-in-ruby/&lt;/li&gt;&lt;li&gt;http://www.engineyard.com/blog/2009/key-value-stores-for-ruby-part-2-tokyo-cabinet/&lt;/li&gt;&lt;li&gt;http://www.engineyard.com/blog/2009/cassandra-and-ruby-a-love-affair/&lt;/li&gt;&lt;li&gt;http://www.engineyard.com/blog/2009/key-value-stores-for-ruby-part-4-to-redis-or-not-to-redis/&lt;/li&gt;&lt;li&gt;http://code.google.com/p/redis/&lt;/li&gt;&lt;li&gt;http://couchdb.apache.org/&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-5762260710466376378?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/5762260710466376378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=5762260710466376378' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/5762260710466376378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/5762260710466376378'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/07/nosql.html' title='NoSQL гэж юу вэ?'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-2881033831922244171</id><published>2009-09-15T12:35:00.003+08:00</published><updated>2009-09-15T12:48:30.831+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stardict'/><category scheme='http://www.blogger.com/atom/ns#' term='dictionary'/><title type='text'>Цэвэлийн толийн Stardict хувилбар гарлаа!</title><content type='html'>Цэвэлийн толийг онлайн болгож эхлэснээс хойш 1 сар өнгөрчээ. Одоогоор 29000 үгийг оруулсан байна. Ингээд анх төлөвлөсөн ёсоор &lt;a href="http://stardict.sourceforge.net/"&gt;Stardict&lt;/a&gt; толийн формат руу хөрвүүлж, &lt;a href="http://toli.query.mn/files"&gt;татаж авахаар&lt;/a&gt; байрлууллаа. Stardict ашигладаггүй хүмүүст энэхүү толь бичгийн програмыг хэрэглэж үзэхийг зөвлөе. Нээлттэй эх бүхий тун сайн програм байдаг юм.&lt;br /&gt;&lt;br /&gt;Бусад ямар формат руу яаж хөрвүүлэх талаар санал хүсэлт зөвлөгөө өгвөл баярлана. Өнөөдрийг хүртэл үнэт цагаа зарцуулан оролцож байгаа, цаашид ч сайжруулан баяжуулах сайн дурынхандаа баярлалаа. Та нар шүү!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-2881033831922244171?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://toli.query.mn/files' title='Цэвэлийн толийн Stardict хувилбар гарлаа!'/><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/2881033831922244171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=2881033831922244171' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2881033831922244171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2881033831922244171'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/09/stardict.html' title='Цэвэлийн толийн Stardict хувилбар гарлаа!'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-2562605690433011040</id><published>2009-09-01T13:11:00.009+08:00</published><updated>2012-01-15T21:00:44.053+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Unix-ийн 40 насны ойд, Домогт хакеруудад</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HBpM_2O-5ds/SpyyxHWZjpI/AAAAAAAAAa8/g189HFVMLVc/s1600-h/Ken_n_dennis.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 311px; height: 202px;" src="http://4.bp.blogspot.com/_HBpM_2O-5ds/SpyyxHWZjpI/AAAAAAAAAa8/g189HFVMLVc/s320/Ken_n_dennis.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5376368612029861522" /&gt;&lt;/a&gt;Өнгөрсөн сард Юникс-ийн 40 насны ой тохиолоо. 1969 оны 8 сард Ken Thompson үйлдлийн системээ анх бичсэн гэдэг. Үйлдлийн системийн kernel, shell, editor, assembler дөрвийг &lt;i&gt;тус бүр 7 хоног&lt;/i&gt;т буюу ерөнхийдөө &lt;i&gt;1 сар&lt;/i&gt; орчим хугацаанд  PDP-7 хэмээх 4 килобайт санах ойтой машин дээр ажиллаж болохуйц үйлдлийн системийг хийчихсэн гэдэг. Цааш Dennis Ritchie-тэй хамтран сайжруулж C дээр бичсэнээр энэхүү гайхамшигт үйлдлийн систем portable болж олон салбарлан тархах нөхцөл болжээ. Маш бага санах ой болоод ядуу нөөцтэй машин дээр анхлан бүтээсэн учраас Юникс маш жижигхэн болоод энгийн байх шаардлага ургасан гэдэг. Энэ нь уг системийг амжилт олоход чухлаар нөлөөлсөн. Таны интернэтэд холбогдож байгаа компаний сүлжээний үндсэн симтемээс эхлээд, гэр ахуйн хэрэгсэл, үйлдвэрийн машинууд, гар утасуудыг хүртэл Юникс төст үйлдлийн систем хөдөлгөж байдаг. Би энэ бичлэгээ ч мөн Юникс төрлийн үйлдлийн систем дээрээс бичиж суугаа минь &lt;a href="http://www.linfo.org/thompson.html"&gt;Ken Thompson&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Dennis_Ritchie"&gt;Dennis Ritchie&lt;/a&gt;, &lt;a href="http://www.linfo.org/linus.html"&gt;Linus Torvalds&lt;/a&gt; гээд бусад олон хакеруудын ачаар билээ. &lt;div&gt;&lt;br /&gt;Юниксын 40 насны ойд, Домогт Ken Thompson болон Dennis Ritchie нарт баяр хүргэе!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;i&gt;(Зургийг &lt;span class="Apple-style-span" style="font-style: normal; "&gt;&lt;i&gt;Wikipedia-с авав.&lt;/i&gt;&lt;/span&gt; Баруун талд Dennis Ritchie, зүүн талд Ken Thompson.)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-2562605690433011040?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/2562605690433011040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=2562605690433011040' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2562605690433011040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2562605690433011040'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/09/unix-40-ken-thompson.html' title='Unix-ийн 40 насны ойд, Домогт хакеруудад'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_HBpM_2O-5ds/SpyyxHWZjpI/AAAAAAAAAa8/g189HFVMLVc/s72-c/Ken_n_dennis.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-2432344312454614816</id><published>2009-08-19T18:59:00.006+08:00</published><updated>2009-09-09T15:33:48.913+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dictionary'/><title type='text'>Я.Цэвэлийн Монгол Хэлний Товч Тайлбар Толь</title><content type='html'>Я.Цэвэлийн Монгол Хэлний Товч Тайлбар Толийг олж авахсан гэж боддог байсан боловч чадахгүй байсаар саяхан&lt;a href="http://wegenerous.blogspot.com/2008/05/blog-post_20.html"&gt; интернэтээс PDF форматаар&lt;/a&gt; олж аваад баярлав. Гэвч сканердаж оруулсан учраас хэрэглэхэд жаахан түвэгтэй юм. Ингээд онлайн болгомоор санагдаад &lt;a href="http://toli.query.mn/"&gt;вэб хийчихлээ&lt;/a&gt;. Олж авсан эх маань сканердсан файл учраас энэхүү вэб дээр одоогоор үг ороогүй байгаа, ганцаараа оруулж бүтэхгүй учраас олны хүчээр босгохоор шийдсэн нь энэ.&lt;br /&gt;&lt;br /&gt;Энэ вэб ямар нэг ашиг орлого олох зорилго одоогоор байхгүй. Хостингийг найзынхаа сэрвэр дээр үнэгүй хийж байгаа, домэйн нэр авахад л мөнгө төлсөн.&lt;br /&gt;&lt;br /&gt;Уг толь маань 30 орчим мянган үгтэй. Үгийн сан арвижаад ирэхээр babylon, stardict, гэх мэт формат руу хөрвүүлэх болно. Мөн шаардлагатай гэж үзвэл &lt;a href="http://www.dict.org/links.html"&gt;dict сэрвэр&lt;/a&gt; ажиллуулж ч магад.&lt;br /&gt;&lt;br /&gt;Та бүхнийг өгөгдлийн санг оруулах ажилд хувь нэмрээ оруулахыг хүсье. Өдөрт нэг үг ч багадахгүй, олны хүч оломгүй далай гэдэг. Гол нь яаралгүй, алдаагүй оруулахыг хичээгээрэй. Хувь нэмрээ оруулагсдын нэр &lt;a href="http://toli.query.mn/users"&gt;Contributors хуудас&lt;/a&gt; дээр харагдах болно.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-2432344312454614816?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/2432344312454614816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=2432344312454614816' title='203 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2432344312454614816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2432344312454614816'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/08/blog-post.html' title='Я.Цэвэлийн Монгол Хэлний Товч Тайлбар Толь'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>203</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-8603726543733480680</id><published>2009-08-13T19:17:00.005+08:00</published><updated>2009-08-13T19:51:16.153+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='time saver'/><title type='text'>Ruby use case : Downloading Монголын Нууц Товчоо</title><content type='html'>Сая нэтээр явж байгаад &lt;a href="http://bit.ly/listen-nuuts-tovchoo"&gt;Монголын Нууц Товчооны audiobook&lt;/a&gt; олов. Татаж авах линк байхгүй болохоор нь веб хуудасны соорсыг харвал config.xml дотор mp3 файлуудын зам байж байна. Гараар татахаас залхуураад рүби дээр нэг &lt;a href="http://pastie.org/582495"&gt;өгүүлбэр бичив&lt;/a&gt;.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Тайлбар:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;1-3 мөр. шаардлагатай сангууд&lt;br /&gt;&lt;/li&gt;&lt;li&gt;5-р мөр. base_url -д байгаа url дээр mp3 тоглуулагч байгаа. mp3 файлуудын замыг агуулж буй config.xml мөн энэ url дотор бий.&lt;/li&gt;&lt;li&gt;7-р мөр. open-uri сангийн open методыг ашиглаж config.xml-ийн агуулгыг аваад, түүнийгээ hpricot сангийн search методоор хайж item гэсэн таагуудыг ялгаж авч байгаа.&lt;/li&gt;&lt;li&gt;8-р мөр. item таагийн агуулгыг inner_html методоор уншаад, түүнийгээ ';' тэмдэгтээр split хийж эхний хэсгийг mp3path-д авч байна &lt;span style="font-style: italic;"&gt;(item тааг доторхи агуулга нь ';' тэмдэгтээр таслагдсан 2 хэсэгтэй ба эхний хэсэг нь mp3 файлын зам байсан.)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;9-р мөр. юниксийн wget командыг ажиллуулж файлыг татахдаа үр дүнг хэвлэнэ. &lt;span style="font-style: italic;"&gt;(`` -ийм хашилтад хийсэн тэмдэгт мөрийг рүби үйлдлийн системийн команд байна гэж ойлгодог. тэмдэгт мөр дотор #{expression} гэсэн зүйл байвал рүби тэр доторхийг validate хийгээд үр дүнг тэмдэгт мөр дотор оруулдаг.)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;script src="http://pastie.org/582495.js"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Unix систем дээр байгаа бол дээрх кодыг downloader.rb файлд хадгалаад, &lt;span style="font-style: italic;"&gt;&lt;br /&gt;#ruby downloader.rb&lt;/span&gt;&lt;br /&gt;гэж ажилуулахад Монголын Нууц товчооны mp3 файлуудтай болно. Хэрэв ямар нэг юм олдохгүй байна гэсэн алдаа гарвал&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#gem install open-uri hpricot&lt;/span&gt;&lt;br /&gt;гэж ашигласан сангуудыг суулгана. Өөр алдаа гарвал хэлээрэй.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-8603726543733480680?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/8603726543733480680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=8603726543733480680' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8603726543733480680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8603726543733480680'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/08/ruby-use-case-downloading.html' title='Ruby use case : Downloading Монголын Нууц Товчоо'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-8802257955190260219</id><published>2009-07-30T14:41:00.003+08:00</published><updated>2009-07-30T15:00:33.341+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coder'/><title type='text'>Тэмцээн зохиож шийдэл гаргуулах</title><content type='html'>&lt;a href="http://www.topcoder.com/"&gt;TopCoder&lt;/a&gt; бол байнгийн үйл ажиллагаатай сайт юм. Алгоритмын тэмцээнүүд явагдахаас гадна, дизайны болон бусад төрлийн тэмцээнүүд байнга явагддаг. Асуудлаа шагналын хамт тэмцээн болгон зарлахад дэлхийн өнцөг булан бүрээс шилдгүүд орж ирээд шийдээд өгнө. Ингэж ажлаа хийлгэх нь мэдээж маш хямд тусна.&lt;br /&gt;&lt;br /&gt;Сүүлийн үед бусад компаниуд ч өөрсдийн асуудлаа шагналтай тэмцээн зохион шийдэх нь түгээмэл болж. Саяхан &lt;a href="http://www.netflixprize.com//leaderboard?limit=10"&gt;Netflix&lt;/a&gt; болоод дууссан бол &lt;a href="http://contest.github.com/"&gt;Github&lt;/a&gt; мөн шинэ тэмцээн зарлачихаж. Кодтой ноцолдох, асуудал шийдэх дуртай бол оролцоод үзээрэй.&lt;br /&gt;&lt;br /&gt;Coder.mn дээр Монгол кодеруудыг цуглуулахын хажуугаар, компани байгууллагуудын асуудлыг шийдүүлэх гүүр болгох зорилго бас байсан билээ.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-8802257955190260219?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/8802257955190260219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=8802257955190260219' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8802257955190260219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8802257955190260219'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/07/blog-post_30.html' title='Тэмцээн зохиож шийдэл гаргуулах'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-773601388108597714</id><published>2009-07-18T21:49:00.004+08:00</published><updated>2009-07-18T22:14:34.048+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='my code'/><category scheme='http://www.blogger.com/atom/ns#' term='coder'/><title type='text'>Coder.mn түр завсарласан тухай</title><content type='html'>Coder.mn сайт маань 6 сарын эхээр зогссон билээ. Үндсэн шалтгаан нь хостингийн асуудал байлаа. Зориулалтын сэрвэр дээр, зориулалтын орчинд(дор хаяж тог баригчтай, хөргүүртэй) суурилуулаагүйгээс ойр ойрхон унадаг байсан. Жирийн вэб сэрвэр бол тог тасрахад бараг гэмтдэггүй л дээ. Кодер.мн сайт бол байнга бодлого бодогдож, шалгагдаж(компайл хийнэ, ажиллуулна гэх мэт) байдаг учраас тог тасрахад их эмзэг.  Дор хаяж өгөгдлийн сан гэмтэнэ. Азгүйтвэл хатуу диск гэмтэнэ. Өнгөрсөн хугацаанд тог тасралтаас болж хэд хэдэн удаа өгөгдлийн сан гэмтсэн ба 2 удаа хатуу диск эвдэрчээ. Мөн програм хангамжид ч хорхой байсныг нуух юун. Тэр болгонд л аль болох түргэн хугацаанд эргээгээд ажиллагаанд оруулдаг байлаа.&lt;br /&gt;&lt;br /&gt;Гэвч хэдий болтол ингэж явах вэ? Хэрэглэгчид болох кодеруудаа залхаалаа шүү дээ үнэндээ. Наанадаад л найдвартай хостинг хэрэгтэй. Уг нь анх төлөвлөхдөө дор хаяж 2 сэрвэр дээр суурилуулах санаа байсан боловч сайт маань өөрөө орлого олох механизмгүй, бас ивээн тэтгэгч олдоогүйн улмаас анхны альфа хувилбарыг туршиж байсан орчин тэр чигээрээ байсаар өдийг хүрчихжээ. Одоо заавал найдвартай хостинг олж байж эргээж ажиллагаанд оруулна гэж бодож сууна. Шинэ боломжуудыг нэмж сайжруулах санаа ч байна. Өдийг хүртэл орж бодлого бодож санал бодлоо солилцдог байсан кодерууддаа баярлаж явдаг шүү. Цаашид ч хамт байх болно гэдэгт тань итгэж байна.&lt;br /&gt;&lt;br /&gt;Удахгүй шинэ Кодер.мн дээр уулзахын ерөөл тавъя!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-773601388108597714?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/773601388108597714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=773601388108597714' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/773601388108597714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/773601388108597714'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/07/codermn.html' title='Coder.mn түр завсарласан тухай'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-6793648502372519935</id><published>2009-07-02T19:23:00.002+08:00</published><updated>2009-07-02T20:00:01.534+08:00</updated><title type='text'>Дэмий юм дэмий</title><content type='html'>Надад нэг Pocket PC байгаа юм. Бараг хэрэглэдэггүй эд л дээ. Үйлдлийн систем нь Window$ Mobile 5. Дээр нь ямар нэг програм суулгахын тулд ихэвчлэн Window$ үйлдлийн системтэй компьютертэй холбох шаардлага гардаг юм.  Харин саяхан эхнэртээ хэрэглүүлэх гээд япон үсэг тогтоох програм суулгах гэсэн чинь Window$ хэрэгтэй болов оо. Ингээд зовлон эхлэж байгаам даа.&lt;br /&gt;&lt;br /&gt;За тэгээд VirtualBox суулгалаа, VirtualBox дотроо нэг хулхины Windows XP суулгачлаа. XP дээрээ ActiveSync гэж програм бас Micro$oft-оос татаж суулгав. Энэ хүртэл ч жаахан цаг л авснаас биш амархаан болчлоо. Ингээд Pocket PC-гээ USB каблиар нь компьтер луугаа залгачлаа. Холбогддоггүй шүү туучий чинь! USB-гээр холбосон бусад бүх төхөөрөмжүүд харагдаад байгаа мөртлөө...&lt;br /&gt;&lt;br /&gt;Нилээн үзлээ..., нэтээс хайгаад л, үзээд байлаа, үзээд байлаа. Бардаггүй ээ. Бууж өглөө. Одоо бодлоо -&lt;span style="font-style: italic;"&gt;Дэмий юм дэмий л юм даа&lt;/span&gt;. Яагаад &lt;span style="font-style: italic;"&gt;дэмий&lt;/span&gt; вэ? гэхээр:&lt;br /&gt;1) Виртуал машин дотор &lt;span style="font-style: italic;"&gt;хулхины&lt;/span&gt; Window$ XP сулгачихаж байгаам&lt;br /&gt;2) Ганц жижиг програм суулгах гэж өчнөөх юм боллоо шдээ, хайран цаг&lt;br /&gt;3) Ер нь энэ Pocket PC дээр яах гэж Window$ Mobile суулгадаг байна аа, програм суулгахад заавал Window$ XP ч юмуу шаарддаг нь &lt;span style="font-style: italic;"&gt;үнэн хөшингө&lt;/span&gt; шийдэл.&lt;br /&gt;&lt;br /&gt;За ингээд болохгүй болохоор нь дээр нь хэдэн кино хуулчихаад хүүхдүүддээ үзүүлж байя гэтэл зөвхөн WMA, ASF форматыг л хүлээн зөвшөөрдөг гэнэ. За тэгээд киногоо ffmpeg -ээр WMA -руу хөрвүүлээд өнөөх дээр чинь үзлээ. Жаахан гарч байгаад ТАГ гацдаг байна шд... Одоо ёстой болъё, дэмий юм дэмий.&lt;br /&gt;&lt;br /&gt;Ингэж дэмий юмаар оролдож суухаар эхнэртээ шинэ компьютер авах, эсвэл энэ дээр байгаа хөшингө үйлдлийн системийг солих. Линуксаар сольчих юмсан. Хэзээ нэгэн цагт оролдож үзнээ. Эрх чөлөө мандтугай!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-6793648502372519935?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/6793648502372519935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=6793648502372519935' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6793648502372519935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6793648502372519935'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/07/blog-post.html' title='Дэмий юм дэмий'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-6562950886636286024</id><published>2009-06-08T09:00:00.005+08:00</published><updated>2010-03-25T22:48:03.359+08:00</updated><title type='text'>Япон дахь Монголчуудын IT уулзалт</title><content type='html'>Хагас сайнд болсон &lt;a href="http://maj.mn/ho/sonor1.html"&gt;уулзалт&lt;/a&gt; дээр миний бие &lt;a href="http://rubyonrails.org/"&gt;RoR&lt;/a&gt; сэдвээр илтгэл тавьлаа. Ерөнхийдөө төсөөлж байсныг бодвол програм хангамжийн чиглэлийн хүмүүс олон ирсэн байлаа.  Бэлдэх хугацаа богино байсан ч яаж ийгээд бэлдээд очсон. Илтгэлийн төгсгөлд алдарт "&lt;a href="http://rubyonrails.org/screencasts"&gt;Creating a weblog in 15 minutes with Rails&lt;/a&gt;" -ийг хийж үзүүлсэн. Ruby болон RoR сурах хүсэлтэй байгаагаа зарим хүмүүс хэлж байсан нь маш их урам өглөө. Цаашид иймэрхүү уулзалтыг зөвхөн IT бус төрөл бүрийн чиглэлээр тогтмол явуулах юм. Уулзалтыг зохион байгуулсан холбооныхон болон хүрэлцэн ирсэн бүгдэд баярлалаа.&lt;br /&gt;&lt;div style="width: 425px; text-align: left;" id="__ss_1546286"&gt;&lt;a style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;" href="http://www.slideshare.net/ochkoo/happy-coding-with-ruby-on-rails/download" title="Happy Coding with Ruby on Rails"&gt;Download&lt;/a&gt;&lt;object style="margin: 0px;" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=maj-ror-090607195912-phpapp01&amp;amp;rel=0&amp;amp;stripped_title=happy-coding-with-ruby-on-rails"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=maj-ror-090607195912-phpapp01&amp;amp;rel=0&amp;amp;stripped_title=happy-coding-with-ruby-on-rails" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"&gt;View more from &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/ochkoo"&gt;ochkoo&lt;/a&gt;.&lt;/div&gt;&lt;div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="300"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=10431627&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=10431627&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-6562950886636286024?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/6562950886636286024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=6562950886636286024' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6562950886636286024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6562950886636286024'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/06/it.html' title='Япон дахь Монголчуудын IT уулзалт'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-9184019275149123611</id><published>2009-06-03T10:27:00.004+08:00</published><updated>2009-06-03T10:48:40.495+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unicode'/><category scheme='http://www.blogger.com/atom/ns#' term='standardization'/><title type='text'>Монгол үсгийн кодын асуудал ба Стандартчилал</title><content type='html'>Монгол үсгийн янз янзын кодчилол хэрэглэдэг байснаас болж үүсдэг асуудал цөөнгүй. Жишээ нь Babylon толиос Stardict толь үүсгэх үед кодын асуудал гарч байсан. Legacy compatibility гэдэг юмыг яах аргагүй дагах болдог учраас одоог хүртэл монгол текстийг хуучин кодчилолоос шинэ рүү хөрвүүлдэг багаж хаа сайгүй л хэрэглэгдэж байна. Өнгөрсөн улиралд Стандартчилалын тухай хичээл үзэх үед энэ ямар чухлыг бас нэг ойлгож билээ. Хичээл дээр хийж байсан илтгэл маань энэ.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:510px;text-align:left" id="__ss_1524934"&gt;&lt;object style="margin:0px" width="510" height="426"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=final-presentation-ochiro-090602212344-phpapp02&amp;rel=0&amp;stripped_title=mongolian-keyboard-drivers-and-pain-of-software-developers" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=final-presentation-ochiro-090602212344-phpapp02&amp;rel=0&amp;stripped_title=mongolian-keyboard-drivers-and-pain-of-software-developers" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="510" height="426"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;Дээхнэ үед гарны драйвэр програмыг бараг програм бичдэг болгон л хийх гэж үздэг байж. Одоо бол Юникод. Стандарт гэдэг асуудлыг ингэж л шийдэж байгаа юм даа. Гэхдээ стандартыг яаж нийтэд push хийх, юуг стандарчилах, аль хэсгийг нь стандартчилах хийгээд аль хэсгийг нь стандартчилахгүй орхих гээд нарийн ширийн юм байдаг л бололтой.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-9184019275149123611?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/9184019275149123611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=9184019275149123611' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/9184019275149123611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/9184019275149123611'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/06/blog-post.html' title='Монгол үсгийн кодын асуудал ба Стандартчилал'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-236759439731481637</id><published>2009-05-23T22:15:00.011+08:00</published><updated>2009-05-23T23:34:03.668+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Emacs-д зориулж гарны тохиргоог өөрчлөв</title><content type='html'>1. CapsLock болон Control товчнуудын үүргийг солив. &lt;a href="http://steve.yegge.googlepages.com/effective-emacs"&gt;Эндээс&lt;/a&gt; уншсан юм.&lt;br /&gt;Доорхи кодыг &lt;span style="font-style: italic;"&gt;~/.Xmodmap&lt;/span&gt; файлд хадгалаад  &lt;span style="font-style: italic;"&gt;xmodmap ~/.Xmodmap&lt;/span&gt; гэсэн командыг &lt;span style="font-style: italic;"&gt;~/.bashrc&lt;/span&gt; эсвэл ~/&lt;span style="font-style: italic;"&gt;.xsession&lt;/span&gt; дотор оруулж өгөх хэрэгтэй(xmodmap-ийн man дээр бий).&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;blockquote&gt;!&lt;br /&gt;! Swap Caps_Lock and Control_L&lt;br /&gt;!&lt;br /&gt;remove Lock = Caps_Lock&lt;br /&gt;remove Control = Control_L&lt;br /&gt;keysym Control_L = Caps_Lock&lt;br /&gt;keysym Caps_Lock = Control_L&lt;br /&gt;add Lock = Caps_Lock&lt;br /&gt;add Control = Control_L&lt;/blockquote&gt;Ингэж солихын давуу тал нь Control товчлуурыг чигчий хуруунд ойртуулж өгч байгаа юм. Маш эвтэйхэн болно доо. Уул нь дээр үеийн оригинал юникс гарнууд дээр &lt;a href="http://imgur.com/10R96.jpg"&gt;ийм&lt;/a&gt; байсан гэсэн. Ер нь Capslock-ийг бараг хэрэглэдэггүй болохоор би лав Хуучин Control товчоо хэвээр нь үлдээгээд харин Capslock-ийг Control болгочихсон. Ингэхийн тулд  дээрх &lt;span style="font-style: italic;"&gt;.Xmodmap&lt;/span&gt; файлын &lt;span style="font-style: italic;"&gt;3 дахь мөрийг&lt;/span&gt; хүчингүй болгох хэрэгтэй(залхуурчихсан).&lt;br /&gt;&lt;br /&gt;2. Scim-ийн тохиргоог солив.&lt;br /&gt;Би яагаад ч юм &lt;span style="font-style: italic;"&gt;Control+space&lt;/span&gt; дарахаар Scim дуудахаар тохируулчихсан байхын(emacs хэрэглэдэггүй байхдаа). Тэр нь Emacs дээр &lt;span style="font-style: italic;"&gt;Mark set&lt;/span&gt; хийдэг командтай давхцаад байсан учраас би &lt;span style="font-style: italic;"&gt;Control+Shift+space&lt;/span&gt; дарж байж &lt;span style="font-style: italic;"&gt;Mark set&lt;/span&gt; хийгээд байсан. Энэ команд маш их хэрэглэгддэг учраас одоо би &lt;span style="font-style: italic;"&gt;Control+space&lt;/span&gt; товчийг scim дуудахад хэрэглэхгүй байхаар болгосон. Alt+grave дарахад scim гарч ирдэг болголоо.&lt;br /&gt;&lt;br /&gt;Ингээд зүүн гар минь бичээд байж дээ, &lt;span style="font-style: italic;"&gt;Control&lt;/span&gt; товчыг чинь ойртуулаад өглөө бас &lt;span style="font-style: italic;"&gt;Mark set&lt;/span&gt; хийхэд хялбар боллоо.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-236759439731481637?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/236759439731481637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=236759439731481637' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/236759439731481637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/236759439731481637'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/05/emacs.html' title='Emacs-д зориулж гарны тохиргоог өөрчлөв'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-4688632330340391654</id><published>2009-05-14T09:15:00.004+08:00</published><updated>2009-05-14T16:31:24.717+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scalability'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><title type='text'>Why twitter is down?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HBpM_2O-5ds/SguBPhOGHLI/AAAAAAAAATw/NgpKjdxnMoc/s1600-h/Screenshot-Twitter+-+Maintenance+-+Mozilla+Firefox.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 264px;" src="http://2.bp.blogspot.com/_HBpM_2O-5ds/SguBPhOGHLI/AAAAAAAAATw/NgpKjdxnMoc/s320/Screenshot-Twitter+-+Maintenance+-+Mozilla+Firefox.png" alt="" id="BLOGGER_PHOTO_ID_5335500287165996210" border="0" /&gt;&lt;/a&gt;Өчигдөр шөнө &lt;a href="http://twitter.com/"&gt;твиттердэх&lt;/a&gt; гэтэл холбогдохгүй байхаар нь шалгатал &lt;a href="http://status.twitter.com/post/106892554/planned-maintenance-on-wednesday-noon-pacific"&gt;төлөвлөсөн ажил&lt;/a&gt; байж.  Ер нь твиттер байн байн төлөвлөсөн болон төлөвлөөгүй зогсолт хийгээд байдгийг анзаарсан байх. Тухайлбал &lt;a href="http://dembot.com/post/25197975/twitter-down-art-collection"&gt;энд&lt;/a&gt; твиттерийн зогссон байгаа агшинуудыг цуглуулчихсан харагдсан. Сүүлийн үед зогсолт цөөрөөд байгаа боловч хангалтгүй гэж хэлэхээр байна. Зөвхөн &lt;a href="http://rubyonrails.org/"&gt;rails&lt;/a&gt; дээр ч биш, ер нь вэб апликэшний хувьд өсөх боломж(scalability) гэдэг чухал.&lt;br /&gt;&lt;br /&gt;Яагаад чухам байн байн зогсоод байдгийг &lt;a href="http://elearningstuff.wordpress.com/2009/04/26/ten-reasons-why-twitter-will-eventually-wither-and-die/"&gt;тайлбарлахыг оролдсон&lt;/a&gt; байдаг. Минийхээр бол нэг сая дагагчтай хэрэглэгчид хүртэл &lt;a href="http://twitterholic.com/"&gt;байдаг гэхээр&lt;/a&gt; твиттер ер нь асар хүнд ачаалалтай сэрвис. Ингээд бодохоор хааяа хааяа зогсох нь аргагүй ч юм уу :). Ямар ч байсан твиттер зогссон үед юугаар орлуулж болох тухай &lt;a href="http://www.techcrunch.com/2009/05/08/twitter-is-down-15-alternative-things-to-do/"&gt;энд&lt;/a&gt; бичсэн байна. Бас явцгүй ч гэмээр &lt;a href="http://whentwitterisdown.com/"&gt;ийм санаа&lt;/a&gt; гаргасан байх юм.&lt;br /&gt;&lt;br /&gt;Мэргэжлийн талаас харахад твиттер бол мессеж дээр тулгуурласан сервис, тэгэхээр ар талаа тэр чиглэл рүү оптимизаци хийх хэрэгтэй юм болов уу. Жишээ нь мессеж боловсруулахдаа &lt;a href="http://erlang.org/"&gt;Erlang&lt;/a&gt; ашиглах, эсвэл өгөгдлийн сангаа тархсан байдлаар ажиллах чадвартай &lt;a href="http://couchdb.apache.org/"&gt;CouchDB&lt;/a&gt; гэх мэт систем рүү шилжүүлж болмоор санагддаг. Гэхдээ хэн мэдэх вэ, мэдээж мундаг &lt;a href="http://twitter.com/Biz"&gt;хүмүүс&lt;/a&gt; л хийж байгаа шүү дээ твиттерийг.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-4688632330340391654?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/4688632330340391654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=4688632330340391654' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/4688632330340391654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/4688632330340391654'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/05/why-twitter-is-down.html' title='Why twitter is down?'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_HBpM_2O-5ds/SguBPhOGHLI/AAAAAAAAATw/NgpKjdxnMoc/s72-c/Screenshot-Twitter+-+Maintenance+-+Mozilla+Firefox.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-1555328240738745317</id><published>2009-05-07T11:37:00.007+08:00</published><updated>2009-05-07T15:32:18.915+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BDD'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>BDD on Rails: Cucumber, Webrat &amp; Factory girl</title><content type='html'>Сүүлийн үед BDD(Behavior Driven Development) их таалагдаж байна аа. Урьд нь TDD(Test Driven Development)-ийг хэрэглэх гээд нэг л болж өгдөггүй байлаа. TDD бол урьдаар тестээ зохиочихоод кодоо бичдэг. Тест бичихийн тулд систем яаж ажиллах ёстойг дотроо ч юмуу, өөр нэг газар хийсэн/бичсэн байх болдог. Ингэхээр тест бичихийн өмнө баахан дизайн хийх/бодох шаардлага гарчихаад байдаг л даа. Харин BDD болохоор систем гаднаасаа хэрэглэгчид яаж харагдах, яаж аашлаж авирлахыг(behave) эхлэж бичээд, түүн дээрээ үндэслээд л TDD хийгээд улаан ногоон гэрэл анивчуулаад явчихна гэсэн үг. Иймд BDD нь TDD-р гол ажлаа амжуулж байгаа юм. Гэхдээ захиалагчид ч, хөгжүүлэгчид ч амар байдлаар.&lt;br /&gt;&lt;br /&gt;Rails дээр &lt;a href="http://cukes.info/"&gt;Cucumber&lt;/a&gt;, &lt;a href="http://wiki.github.com/brynary/webrat"&gt;Webrat&lt;/a&gt;, &lt;a href="http://github.com/thoughtbot/factory_girl/tree/master"&gt;Factory girl&lt;/a&gt; -эднүүсийг ашиглаад үнэхээр баяр баясгалантайгаар BDD хийж болж байна. Cucumber бол энгийн өгүүлбэрээр биччихсэн feature/behavior-ийг тестийн код болгодог гайхамшигт туслах. Webrat нь вэб тестийг browser хэрэглэлгүй хийчдэг. Тест хийхэд өгөгдөл хэрэгтэй, тэгвэл Factory girl чамд туслана.&lt;br /&gt;&lt;br /&gt;Мянга сонсохоор нэг үз гэдэг, цаашихийг эдгээр screencast-ууд болон presentation-ээс үзээрэй. Happy Coding!&lt;br /&gt;&lt;br /&gt;Railscast screencast-ууд:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://railscasts.com/episodes/155-beginning-with-cucumber"&gt;Episode 155: Beginning with Cucumber&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://railscasts.com/episodes/156-webrat"&gt;Episode 156: Webrat&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://railscasts.com/episodes/158-factories-not-fixtures"&gt;Episode 158: Factories not Fixtures&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Бусад линкүүд:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://cukes.info/"&gt;Cucumber&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mwrc2009.confreaks.com/14-mar-2009-15-00-bdd-with-cucumber-ben-mabey.html"&gt;Cucumber Presentation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.github.com/brynary/webrat"&gt;Webrat&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://github.com/thoughtbot/factory_girl/tree/master"&gt;Factory girl&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-1555328240738745317?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/1555328240738745317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=1555328240738745317' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/1555328240738745317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/1555328240738745317'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/05/bdd-on-rails-cucumber-webrat-factory.html' title='BDD on Rails: Cucumber, Webrat &amp; Factory girl'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-2859557828263311106</id><published>2009-04-25T20:25:00.003+08:00</published><updated>2009-04-25T21:09:30.268+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='github'/><category scheme='http://www.blogger.com/atom/ns#' term='coder'/><title type='text'>Coder.mn -ийг нээлттэй эх болголоо</title><content type='html'>&lt;a href="http://coder.mn/"&gt;Кодер.мн&lt;/a&gt; програмчлалын тэмцээний вэб сайтын эх кодыг нээлттэй болголоо. Кодер дээр жинхэнэ кодерууд цугладаг учраас дуртай сайтынхаа хөгжүүлэлтэнд оролцоно байх аа гэдэг бүрэн итгэж байна. Ер нь анхнаас нь л сайтынхаа эх кодыг нээлттэй болгох санаа төрөөд явсан боловч боломж нөхцөл бүрдэхгүй байсаар өдийг хүрчлээ. Кодыг &lt;a href="http://github.com/ochko/codermn/tree/master"&gt;github дээр тавьсан&lt;/a&gt;. Оролцох хүсэлтэй хүмүүс fork хийж аваад хөгжүүлэлтэд оролцохыг уриалж байна.&lt;br /&gt;&lt;br /&gt;Хөгжүүлэлтэд оролцоход шаардлагатай зүйл гэвэл &lt;a href="http://rubyonrails.org/"&gt;rails&lt;/a&gt;, &lt;a href="http://ochko.blogspot.com/2009/04/git-distributed-revision-control.html"&gt;git&lt;/a&gt;. Бас &lt;a href="https://github.com/"&gt;github&lt;/a&gt; дээр хөгжүүлэлт хэрхэн явагддаг тухай мэддэг байх хэрэгтэй. Github бол програмчдын social network билээ. Үнэхээр л дараагийн SourceForge юм. Саяхан issue tracking нэмэгдсэн нь бүр их таалагдсан. Одоо юу хийх шаардлагатай байгаад &lt;a href="http://github.com/ochko/codermn/issues"&gt;issue list&lt;/a&gt; -ээс нь хараарай.&lt;br /&gt;&lt;br /&gt;За ингээд кодерууд аа, Happy Social Coding!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-2859557828263311106?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/2859557828263311106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=2859557828263311106' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2859557828263311106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2859557828263311106'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/04/codermn.html' title='Coder.mn -ийг нээлттэй эх болголоо'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-1783031418822218438</id><published>2009-04-25T00:32:00.003+08:00</published><updated>2009-04-25T02:47:16.321+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><title type='text'>git - Distributed Revision Control</title><content type='html'>Би CVS ашиглаж байлаа, SVN ашиглаж байлаа. git -ийг зохиосон &lt;a href="http://www.youtube.com/watch?v=4XpnKHJAok8"&gt;Линус хэлэхдээ&lt;/a&gt;, хэрэв та CVS -ийг хэрэглээд сэтгэл хангалуун байдаг бол толгойдоо "юмтай", харин SVN бол түүхэн дэх хамгийн утгагүй төсөл байсан гэжээ. Бодвол CVS-ээс ялгаагүй гэж байгаа бололтой. git -ийн давуу тал нь төвлөрсөн бус жинхэнэ тархсан систем юм. Хүн болгон өөрийн хувилбар дээр ажиллах бөгөөд commit хийхэд хэнээс ч асуух шаардлагагүй, дараа нь кодоо хаа нэгтээ push хийчихнэ, эсвэл хэн нэг нь чамаас pull хийгээд авчихна, энд ямар нэг permission энэ тэр хэрэггүй, ардчилсан шинжтэй. Төвлөрсөн сэрвэр гэж байхгүй. Жишээ нь өөрийн компьютер дээр ажилаж байхад офлайн ажиллаад commit хийгээд байж болно гэсэн үг. Олон үг ярьхаар хэдэн жишээ үзье дээ.&lt;br /&gt;&lt;br /&gt;Нэг директор байгаад тэр дотор байгаа файлуудыг git рүү оруулья.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:georgia;" &gt;# cd pjdir&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:georgia;" &gt;# git init&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Файлыг git удирдлага дор оруулья.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;# git add myfile.c&lt;/span&gt;&lt;br /&gt;эсвэл директорыг тэр чигээр нь...&lt;br /&gt;&lt;span style="font-style: italic;"&gt;# git add mydir&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Файлыг commit хийж хадгалья&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;# git commit -m "firt import" myfile.c&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Файлуудын төлөвийг харах&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;# git status&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;За энэ хүртэл бол ерөнхийдөө SVN эдэртэй төстэй байгааг өмнө нь ямар нэг revision control систем дээр ажиллаж байсан бол ажигласан байх. Гэхдээ энд хийгээд байгаа коммит эд нар бүгд зөвхөн чиний компьютер дээр болж өрнөөд байгаа гэдгийг санаарай. Одоо жинхэнэ ид шидийг үзье гэвэл тархсан байдлаар яаж ажиллахыг хар даа.&lt;br /&gt;&lt;br /&gt;Найз Доржийн кодыг холбоё.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;# git remote add dorj ssh://computer_of_dorj/path/to/app.git&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Одоо Доржийн master мөчрийн кодыг өөрийнх рүүгээ нийлүүллээ.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;# git pull dorj master&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Тэгээд баахан код бичлээ, тэрийгээ commit хийчлээ. Гэхдээ өөрчлөлтүүд маань миний л компьютер дээр байгаа. Сүүлийн хувилбараа рилийзэд бэлдэж мөчир үүсгээд хадгалчихья.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;# git branch beta_branch HEAD^&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Рилийз хийх хүнд миний код бэлэн болчлоо гэдгийг мэдэгдлээ. Рилийз хийгч миний кодыг өөрийн компьютер дээрээс ингэж авах нь.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;# git remote add ochiro ssh://computer_of_ochiro/path/to/pjdir/pjdir.git&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;# git pull ochiro beta_branch&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Өөр компьютер дээр байгаа git рүү ssh протоколоор хандах хамгийн нууцлал сайтай. Дээрхи жишээнүүдэд дандаа ssh гэсэн байгаа. Бас git://server/path/projectname.git гэж хандаж болно. Гэхдээ энд ч гэсэн цаанаа бол git: гэдэг нь ssh: юм л даа. Энэ бичлэгээ git-ийн танилцуулга төдийгөөр өндөрлөөд цааш лавлаж харах бол хэрэгтэй хэдэн линк үлдээлээ. Нэмж хэлэхэд git-ийн хувьд би үнэхээр сэтгэл хангалуун байгаа шүү, туршаад үзээрэй. Happy Coding!&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.eecs.harvard.edu/%7Ecduan/technical/git/"&gt;Understanding Git Conceptually&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/pub/software/scm/git/docs/user-manual.html"&gt;Git User's Manual&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://spheredev.org/wiki/Git_for_the_lazy"&gt;Git for the lazy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://git-scm.com/"&gt;The official git web site&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way"&gt;Gitosis&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://github.com/"&gt;GitHub&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-1783031418822218438?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/1783031418822218438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=1783031418822218438' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/1783031418822218438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/1783031418822218438'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/04/git-distributed-revision-control.html' title='git - Distributed Revision Control'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-440397381438243004</id><published>2009-04-21T23:32:00.006+08:00</published><updated>2009-04-28T11:55:10.412+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stardict'/><title type='text'>Он-толийн Англи-Монгол толийг Stardict рүү хөрвүүлэв</title><content type='html'>Өмнө &lt;a href="http://ochko.blogspot.com/2007/03/babylon-stardict.html"&gt;babylon-толийг stardict рүү&lt;/a&gt; хөрвүүлж &lt;a href="http://ochko.blogspot.com/2007/09/stardict.html"&gt;2 толийг гаргасан&lt;/a&gt;. Сая &lt;a href="http://www.on-toli.com/"&gt;он-толийн&lt;/a&gt; Англи-Монгол толийг хөрвүүллээ. &lt;a href="http://www.geocities.com/ochqoo/stardict-ontoli-en-mn.zip"&gt;Татаж аваад&lt;/a&gt; хэрэглээд үзээрэй. Он-толийнхондоо баярлалаа.&lt;br /&gt;&lt;br /&gt;Хэрхэн хөрвүүлэх(Үбүнтү дээр):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:georgia;" &gt;# sudo apt-get install dictconv stardict-tools&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:georgia;" &gt;# dictconv -o on-toli.dic on-toli.com.bgl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:georgia;" &gt;# convert_to_unicode.sh on-toli.dic          &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:georgia;" &gt;# /usr/lib/stardict-tools/tabfile on-toli.dic.unicode&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Тайлбар:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;convert_to_unicode.sh&lt;/span&gt; -гэдэг нь текст файл доторхи крил үсгүүдийг юникод руу сольдог скрипт байгаа юм. Хэрэв та *mon фонтууд(юникод биш) хэрэглэдэг бол юникод руу хөрвүүлэхгүй байсан ч болно. Юникод фонтууд хэрэглэдэг бол ямар нэг аргаар *.dic файлыг юникод болгочихож чадна биз ээ.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-440397381438243004?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/440397381438243004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=440397381438243004' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/440397381438243004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/440397381438243004'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/04/stardict.html' title='Он-толийн Англи-Монгол толийг Stardict рүү хөрвүүлэв'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-568055778249574406</id><published>2009-04-14T19:47:00.004+08:00</published><updated>2009-04-15T12:39:21.896+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='polyglot programming'/><category scheme='http://www.blogger.com/atom/ns#' term='erlang'/><title type='text'>Полиглот програмчлал</title><content type='html'>&lt;div style="text-align: right;"&gt;&lt;span style="font-weight: bold;font-family:times new roman;" &gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;polyglot&lt;/span&gt; ['pɔliglɔt] : &lt;span style="font-style: italic;"&gt;speaking or using many languages, multilingual&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Полиглот програмчлал гэдэг нь олон хэлийг нэг дор хэрэглэх юм. Та өөрийн хийсэн нэг төслийг жишээ болгоод хэдэн хэл ашигласнаа хэл дээ. Нэг л хэл ашиглсан байна уу? Би таая л даа, Жава л биз дээ. Биш үү, тэгвэл .NET байх? Бас л биш үү? За яахав PHP юм болов уу? Таагаагүй бол бууж өглөө, коммэнт дээр ямар ямар хэл байсныг бичээрэй. Ганцхан хэл ашиглаад програм бичдэг цаг аль эрт улиран өнгөрсөн гэдэгтэй санал нэг байгаа байх. Дор хаяж л SQL хэл ашиглаж өгөгдлийн сантайгаа харьцаж байгаа биз. Вэб апликэшн хийдэг бол HTML, Javascript, CSS-ийг ашиглаж л таараа. Ингэхээр програм бичигчид өдөр тутамдаа полиглот програмчлал хийдэг байхнээ. Олон янзын юм хэрэглээд тэр бүгдийг сурах, хооронд нь холбох гэж яршиг түвэг гэх хүн байх нь мэдээж. Тэр ч үнэн л дээ, гэхдээ буруу ашиглавал.&lt;br /&gt;&lt;br /&gt;Скрипт хэлнүүдийг том төсөл хийхэд тохиромжгүй, удаан ажилладаг гэх шүүмжлэл байдаг. Тухайлбал Python, Ruby гэх мэт. Гэтэл эдгээр динамик хэлнүүдийн уян хатан чанар үнэд орох тохиолдол бишгүй. Ийм ч учраас JRuby, Jython, Haskell.net гэх мэтийг хэрэглэх болсон байдаг. Erlang, Haskell зэрэг functional хэлнүүд дээр concurrency буюу олон үйлдлийг зэрэг хийх, бие биеээс хамааралгүй логик голдрилуудыг загварчлах нь маш амарханаас гадна, сүүлийн үеийн технологи болох multicore -уудын бүрэн үр ашгийг үзэж чаддаг. Гол нь ямар зорилгод аль хэлийг ашиглахаа зөв сонгох нь чухал. Ruby хэл бол уян хатан, хэрэглэхэд амархан байдаг динамик хэл. Erlang бол мэссэж дээр тулгуурласан олон үйлдэл зэрэг хийхэд тохиромжтой хэл гэх мэтээр хэлнүүдийн давуу болон сул талыг тооцох хэрэгтэй. Энд олон өөр хэл хэрэглэхийн хажуугаар өөр өөр хандлагууд(Обект хандлагат, Функционал, Динамик г.м) хэрэглэгдэж байгаа нь ойлгомжтой.&lt;br /&gt;&lt;br /&gt;Тухайн тохиолдол болгож асар өндөр хурдтай мэссэж(гүйлгээ ч юмуу, юу ч байж болно) солилцдог вэб апликэшн хийх болжээ гэе. Вэб апликэшнийг хурдан хугацаанд босгохын тулд Rails(Ruby on Rails) фрэймворкыг ашиглаж нүүрэн талаа хийгээд, Erlang дээр ар тал буюу мэссэж боловсруулах болон дамжуулах хөдөлгүүрийг хийж болно.&lt;br /&gt;&lt;br /&gt;Дараа Erlang -ийн тухай бичих болно. Одоогоор "Programming Erlang: Software for a Concurrent World" номыг уншиж байна.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-568055778249574406?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/568055778249574406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=568055778249574406' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/568055778249574406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/568055778249574406'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/04/blog-post.html' title='Полиглот програмчлал'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-9189737690738200834</id><published>2009-01-02T16:15:00.003+08:00</published><updated>2009-01-02T17:27:15.612+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='шинэ хандлага'/><title type='text'>Native Code on Web Browser</title><content type='html'>Веб гэдэг зүгээр хуудас төдий биш апликэшн түвшинд хэрэглэгддэг болсоор удлаа. Javascript, Flash, Java, .NET -гээд алийг ч ашигласан хурдтай бөгөөд найдвартай ажилладаг вэб апликэшн хийнэ гэдэг амар биш. Учир нь вэб апликэшн маань вэб хөтөч(browser) дотор ажилладаг билээ. Саяхан &lt;a href="http://code.google.com/p/nativeclient/"&gt;nativeclient&lt;/a&gt; гээд хөтөч дотор натийв код ажиллуулах төсөл эхэлжээ. Гэтэл байзаарай, энэ чинь Java applet -аас юугаараа ялгаатай юм бэ? Вэб хөтөч дотор натийв код ажиллуулсанаас зүгээр desktop апликэшн ажиллуулсан нь дээр бус уу? -гэх мэт асуултууд гарна. Тэгвэл дараах хэд хэдэн давуу талууд гарч ирэхээр байна.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Одоогоор ашиглагдаж байгаа вэб клиент талын технологиуд бүгд өөрийн гэсэн хэл дээр апликэшнээ бичихийг шаарддаг - Flash(ActonScript), Java applet(Java), Silverligth(C#) гээд бүгд. Javascript дээр хийсэн ч гэсэн Javasript гэдэг хэл дээр л бичнэ. Харин натийв кодыг дуртай хэл дээрээ бичиж болно гэсэн үг. &lt;/li&gt;&lt;li&gt;Натийв апликэшнийн хувьд dll болон so файлуудыг шууд дуудаж ашиглаж болох учраас маш их бэлэн зүйлсийг ашиглах боломж нээгдэж байгаа.&lt;/li&gt;&lt;li&gt;Түгээмэл хэрэглэгдэж байгаа төсөөтэй технологиуд бүгд аль нэг компаний удирдлагад явж байна. Тухайлбал Java бол Sun, Flash бол Adobe, ActiveX бол Microsoft. Харин энэ төсөл бол анхнаасаа нээлттэй эхийнх юм. &lt;/li&gt;&lt;/ol&gt;Мэдээж дутагдалтай талууд ч байгаа. Уншигч танд үүнийг үлдээе.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-9189737690738200834?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/9189737690738200834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=9189737690738200834' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/9189737690738200834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/9189737690738200834'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2009/01/native-code-on-web-browser.html' title='Native Code on Web Browser'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-4520872594786639821</id><published>2008-12-31T14:21:00.005+08:00</published><updated>2008-12-31T14:35:45.723+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='програмчлалын хэл'/><category scheme='http://www.blogger.com/atom/ns#' term='хошин'/><title type='text'>If programming languages were ...</title><content type='html'>Хэрвээ програмчлалын хэл&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cs.caltech.edu/%7Emvanier/hacking/rants/cars.html"&gt;машин байсан бол...&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.aegisub.net/2008/12/if-programming-languages-were-religions.html"&gt;шашин байсан бол...&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://anirudhsanjeev.org/if-programming-languages-were-metal-bands/"&gt;метал хамтлаг байсан бол...&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://leisureguy.wordpress.com/2006/11/30/if-programming-languages-were-women/"&gt;эмэгтэй хүн байсан бол...&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://compsci.ca/blog/if-a-programming-language-was-a-boat/"&gt;завь байсан бол...&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Энэ оны сүүлийн бичлэг. Шинэ оноо сайхан угтаарай. Ирэх ондоо хүн бүхэн амжилт бүтээл аз жаргалаар дүүрэн байх болтугай&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-4520872594786639821?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/4520872594786639821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=4520872594786639821' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/4520872594786639821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/4520872594786639821'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2008/12/if-programming-languages-were.html' title='If programming languages were ...'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-8469133569492681618</id><published>2008-11-18T16:43:00.005+08:00</published><updated>2008-11-18T17:45:01.076+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Open source hardware</title><content type='html'>Электроникийн талаар бага зэрэг судлах шаардлага гартал "нээлттэй эх бүхий хардвэйр" гэсэн юм тааралдав. Нээлттэй хардвэйр гэхээр юу байж таарах вэ? Нээлттэй эх бүхий програм хангамж гэдэг маань юу байдаг билээ; Тухайн програмын эх код нь нээлттэй байгаад, тухайн эх кодыг өөрчлөх, хувилах, түгээх эрх нь нээлттэй байвал нээлттэй эх бүхий програм хангамж гэдэг. Тэгвэл нээлттэй эх бүхий хардвэйрийн  дизайн болоод, түүн дээр ажиллах фирмвэйр(програм) нээлттэй байх ёстой болох нь. Програм хангамжийн соорсыг компайлдаж програм болгоход амархан бол, хардвэйрийн дизайн болоод эх кодыг бодит хардвэйр болгоход тодорхой зардалтай байдгаараа л ялгаатай.&lt;br /&gt;&lt;br /&gt;Сүүлийн жилүүдэд нээлттэй эх бүхий хардвэйрүүд нилээн хийгдэж байгаа. Тухайлбал нээлттэй фирмвэйр бүхий router, wireless card, display adapter мэр сэр үзэгдэх болсон.&lt;br /&gt;&lt;br /&gt;Хардвэйр дизайны нээлттэй эх бүхий &lt;a href="http://www.arduino.cc/"&gt;Arduino гэдэг платформ&lt;/a&gt; саявтархан гарчээ. Энэнээс хэдийг авчихмаар л санагдлаа. Эх нь нээлттэй учраас өөрийн хэрэгцээнд тохируулж өөрчлөөд, хэвлэж өгдөг үйлдвэр лүү файлаа явуулж хийлгэж авч болох гэнэ. Олноор нь авах бол үйлдвэр лүү захиалгаж хийлгэсэн нь хямд тусдаг гэсэн. Манай их дээд сургуулийн хардвэйрийн оюутнууд ямар орчинд лабораторио хийдэг юм бол?. Нээлттэй эх бүхий Arduino платформ сургалтанд ашиглахад яг тохиромжтой санагдлаа.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-8469133569492681618?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/8469133569492681618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=8469133569492681618' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8469133569492681618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8469133569492681618'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2008/11/open-source-hardware.html' title='Open source hardware'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-7654381964727751947</id><published>2008-10-12T17:34:00.002+08:00</published><updated>2008-10-12T18:11:40.118+08:00</updated><title type='text'>Эвдэгдэшгүй нууцлал</title><content type='html'>Европын хэсэг эрдэмтэд эвдэгдэшгүй нууцлал бүхий &lt;a href="http://news.bbc.co.uk/2/hi/science/nature/7661311.stm"&gt;дамжуулах сувгийг туршлаа&lt;/a&gt;. &lt;a href="http://en.wikipedia.org/wiki/Quantum_cryptography"&gt;Квант криптограф&lt;/a&gt; нь &lt;a href="http://en.wikipedia.org/wiki/Uncertainty_principle"&gt;Гейзэнбэргийн тодорхойгүйн зарчим&lt;/a&gt; дээр тулгуурладаг учраас уламжлалт арга шиг дамжуулах сувгаар явах мэдээллийг заавал ямар нэг задлахад хэцүү алгоритмаар кодлож явуулах шаардлагагүй байдаг. Өөрөөр хэлбэл квант мэдээллийг тухайн мэдээлэлд өөрчлөлт оруулалгүйгээр хөндлөнгөөс ажиглах боломжгүй байдаг учраас квант мэдээлэл эсвэл ямар ч алдагдалгүй дамжуулагдана, эсвэл алдаатай болж хувирна гэсэн үг. Ингэхээр хөндлөнгөөс ажиглагч байлаа гэхэд мэдэгдэхгүйгээр мэдээлэлд хандах боломжгүй. Тухайн туршилтаар 200 км орчим стандарт шилэн кабэлиар хэдэн мянган гэрлийн фотоныг дамжуулан, түүгээрээ encryption key -гээ дамжуулж чадсан байна. Квант криптографын санаа анх 20 -иод жилийн өмнө бий болсон бөгөөд амьдралд хэрэгжиж байгаа нь энэ юм.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-7654381964727751947?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/7654381964727751947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=7654381964727751947' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/7654381964727751947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/7654381964727751947'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2008/10/blog-post.html' title='Эвдэгдэшгүй нууцлал'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-8936793360175648583</id><published>2008-09-02T19:17:00.004+08:00</published><updated>2008-09-03T11:03:04.705+08:00</updated><title type='text'>Google шинэ browser гаргах нь</title><content type='html'>Гүүгэл өөрсдийн нээлттэй эх бүхий шинэ хөтөч &lt;a href="http://www.google.com/googlebooks/chrome/"&gt;Google Chrome -ийг комик ном хэлбэрээр&lt;/a&gt; танилцуулжээ. Өнөөдрийг хүртэл бидний хэрэглэж ирсэн хөтөчүүдээс хэд хэдэн онцлогтой юм байна. Табууд нь url-ийнхээ дээр байрлах бөгөөд таб болгон тусдаа процесс байдлаар ажиллана. Ингэснээр нэг вэб хуудас дээр гарсан алдаа бусаддаа нөлөөлөхгүй нь. Мөн &lt;a href="http://code.google.com/p/v8/"&gt;V8&lt;/a&gt; гэдэг javascript engine ийг Webkit rendering engine -тай хослуулах юм. Хэрэглэгч талаасаа нилээн innovative санаануудыг бас тусгажээ. Политик талаасаа Firefox-ийн хэрэглэгчдийг л булаах болов уу, харин IE-д яаж нөлөөлөхийг бүү мэд, ямар ч байсан саяхан гарсан IE 8 -тай зарим талаар төстэй байгаа. Харж л байя, рилийз гарангуут нь суулганаа...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-8936793360175648583?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/8936793360175648583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=8936793360175648583' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8936793360175648583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8936793360175648583'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2008/09/google-browser.html' title='Google шинэ browser гаргах нь'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-1496069951646187448</id><published>2008-08-28T22:39:00.003+08:00</published><updated>2008-08-29T12:52:19.790+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mathematics'/><title type='text'>2^32,582,657-1</title><content type='html'>Математикт 2 -ийн зэрэгтээс нэгээр бага тоонуудыг &lt;a href="http://en.wikipedia.org/wiki/Mersenne_prime"&gt;Мерсенний тоо&lt;/a&gt; гэдэг. Энэ тоо бол одоогоор мэдэгдэж байгаа хамгийн их анхны тоо юм. Мерсений тоог анхных эсэхийг шалгадаг &lt;a href="http://www.blogger.com/Lucas%C3%A2%C2%80%C2%93Lehmer%20test%20for%20Mersenne%20numbers"&gt;Lucas–Lehmer -ийн тест&lt;/a&gt; нь бусад ижил төрлийн тестүүдээс илүү хурдтай учраас одоогоор мэдэгдээд байгаа хамгийн том анхны тоонууд дандаа мерсенний тоонууд байдаг байна. Энэ долоо хоногт &lt;a href="http://mersenne.org/prime.htm"&gt;45 дахь мерсенний анхны тоо&lt;/a&gt; олдсон байж магадгүй бөгөөд яг баттай хариу нь 2 долоо хоногийн дараа дахин шалгасны эцэст гарах нь байна. Гарчиг дээр бичэн одоогоор мэдэгдэж буй хамгийн том анхны тоо нь 9.8 сая оронтой ба &lt;a href="http://www.eff.org/awards/coop"&gt;EFF -ээс зарласан $50,000 -ийн шагналыг&lt;/a&gt; хожсон ажээ. 2 долоо хоногийн дараа 45 дахь мерсений тоо $100,000 хожих эсэх нь тодорхой болно. Хэрэв та ямар нэг аргаар нэг саяаас их оронтой анхны тоог олж чадвал $250,000 -ийн шагналы эзэн болох боломжтой.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-1496069951646187448?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/1496069951646187448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=1496069951646187448' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/1496069951646187448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/1496069951646187448'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2008/08/232582657-1.html' title='2^32,582,657-1'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-8862877830170615476</id><published>2008-08-28T18:11:00.003+08:00</published><updated>2008-08-28T18:32:33.503+08:00</updated><title type='text'>Гурван төрлийн галын хана</title><content type='html'>&lt;a href="http://ochko.blogspot.com/2006/10/blog-post_28.html"&gt;Web Application Firewall -ийн тухай&lt;/a&gt;, бас Internet Firewall -ийг &lt;a href="http://ochko.blogspot.com/2007/02/blog-post_21.html"&gt;галт хана бус галын хана&lt;/a&gt; гэх нь зөв болох дээхнэ бичиж байсан. Тэгвэл &lt;a href="http://ochko.blogspot.com/2008/08/greensql-database-firewall.html"&gt;өмнөх бичлэгээр Database Firewall&lt;/a&gt; гэж бас бичээдэхлээ. Эдгээрийг зарим хүн хольж хутгаж ойлгуузай гэсэн үүднээс доорхи зургийг таталгав.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HBpM_2O-5ds/SLZ-X2-RAEI/AAAAAAAAAGA/POAPxfHyPmI/s1600-h/firewall.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_HBpM_2O-5ds/SLZ-X2-RAEI/AAAAAAAAAGA/POAPxfHyPmI/s400/firewall.png" alt="" id="BLOGGER_PHOTO_ID_5239514164850917442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Тайлбар:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Эхлээд интернэтээс хэрэглэгч хандахад хамгийн түрүүн Internet Firewall хүлээж авна. Тухайн хэрэглэгч зөвшөөрөгдсөн протоколоор, зөвшөөрөгдсөн порт руу хандаж байгаа эсэх гэх мэт шалгалтууд хийгдээд интернэт галын ханаар нэвтэрнэ. Үүлээр дүрсэлсэн хэсэгт интернэтээс хандах бусад сэрвэрүүд байж болох юм. Бидний тохиолдолд энэ хэсэг хамаагүй.&lt;/li&gt;&lt;li&gt;Хэрэглэгч маань вэб апликэшн руу хандахаас өмнө Web Application Firewall* -ийг дамжина. Энд XSS гэх мэт вэб апликэшн хор учруулж болох сэжигтэй зүйлсийг шалгаж нэвтрүүлнэ.&lt;/li&gt;&lt;li&gt;Вэб сэрвэр маань хэрэглэгчид өгөгдлийн сангаас мэдээлэл авч үзүүлэх, эсвэл хэрэглэгчийг илгээсэн өгөгдлийг санд хадгалахийн тулд Database Firewall -ийг дамжина. SQL Injection зэрэг шалгалтуудыг хийгээд өгөгдлийн сан руу хүсэлтийг дамжуулна.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;*Зарим Web Application Firewall -ууд Database Firewall -ийн үүргийг гүйцэтгэж чаддаг.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-8862877830170615476?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/8862877830170615476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=8862877830170615476' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8862877830170615476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8862877830170615476'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2008/08/blog-post_28.html' title='Гурван төрлийн галын хана'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_HBpM_2O-5ds/SLZ-X2-RAEI/AAAAAAAAAGA/POAPxfHyPmI/s72-c/firewall.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-6377165703247980466</id><published>2008-08-28T13:58:00.003+08:00</published><updated>2008-08-28T18:10:35.261+08:00</updated><title type='text'>GreenSQL буюу Database Firewall</title><content type='html'>Вэб апликэшний цоорхойг ашиглаж &lt;a href="http://en.wikipedia.org/wiki/SQL_injection"&gt;SQL injection&lt;/a&gt; хийснээр өгөгдлийн бааз дээр дуртай үйлдлээ хийж болдог. Тэгвэл &lt;a href="http://sourceforge.net/projects/greensql/"&gt;GreenSQL&lt;/a&gt; таны вэб апликэшн болон өгөгдлийн сан хоёрын дунд firewall болж өгөгдлийн сан руу явж байгаа бүх SQL -үүдийг хянах болно. Сэжигтэй буюу inject хийгдсэн SQL -ийг бааз дээр ажилуулахгүй хоосон үр дүн буцаачихдаг.  Вэб апликэшний нууцлалдаа сайн итгэхгүй байвал үүнийг хэрэглэж болно. MySQL дээр үүнийг ашиглан firewall тавих зааврыг &lt;a href="http://www.linux.com/feature/145341"&gt;эндээс&lt;/a&gt; үзээрэй.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-6377165703247980466?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/6377165703247980466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=6377165703247980466' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6377165703247980466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6377165703247980466'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2008/08/greensql-database-firewall.html' title='GreenSQL буюу Database Firewall'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-2476400424857911057</id><published>2008-08-13T12:52:00.005+08:00</published><updated>2008-08-13T14:58:23.494+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cloud computing'/><title type='text'>Үүл</title><content type='html'>Сүүлийн үед &lt;a href="http://en.wikipedia.org/wiki/Cloud_computing"&gt;cloud computing&lt;/a&gt; гэж их яригдаж байна. Үүл гэдэг маань &lt;a href="http://en.wikipedia.org/wiki/Grid_computing"&gt;grid computing&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Cluster_%28computing%29"&gt;clustering&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Data_center"&gt;data center&lt;/a&gt; зэрэг ойлголтуудыг нэгтгэсэн зүйл юм. Data center дотор grid, cluster ууд ажиллах бөгөөд энэ дэд бүтцийг амь оруулж байгаа програм хангамжууд, сервисүүд, бизнес модель бүгд нийлээд үүл гэж ойлгож болно.&lt;br /&gt;&lt;br /&gt;Энгийнээр тайлбарлавал: хэрэглэгч бүх хэрэгцээт програм хангамж, өгөгдөл болон мэдээллээ интернэтэд байрлах сервэр дээр байрлуулж хэрэглэх юм. Мэдээллийн аюулгүй байдал, найдвартай байдал, арчилгаа тордлогоо зэргийг үүлийг ажиллуулж байгаа компани хариуцна. Энэ үйлчилгээнийхээ төлөө хэрэглэгчээс мөнгө авч орлого олно.&lt;br /&gt;&lt;br /&gt;Хэрэглэгч талаас харвал, компьютер тоног төхөөрөмж худалдаж авах, програм хангамж хийх, хийлгэх, эсвэл худалдаж авах, суулгах, арчилах, нууцлалыг хангах, бэкап хийх гэх мэт бизнест шууд нөлөөгүй нэмэлт ажлууд алга болно. Жишээлбэл та нэг онлайн дэлгүүр нээх боллоо гэж бодьё. Сэрвэр худалдаж аваад($3000), програм хангамж хийлгээд($5000), түүнийг арчилж тордох нэг програмчин цалинжуулья. Дээрээс нь сар бүр интернэтийн төлбөр төлөхөөс авахуулаад зардал нэмэгдэнэ. Эхлэж байгаа бизнест дарамттай байх нь ойлгомжтой. Харин бэлэн байгаа онлайн дэлгүүрийг сард 200$ ч юмуу, эсвэл зарсан дүнгийнхээ багахан хувийг өгөөд хэрэглэвэл ямар вэ? Ингээд бодохоор үүл нь аль аль талдаа ашигтай.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://aws.typepad.com/aws/2008/07/white-paper-on.html"&gt;Amazon&lt;/a&gt;, &lt;a href="http://www.google.com/a/help/intl/en/index.html"&gt;Google&lt;/a&gt;, &lt;a href="http://research.yahoo.com/Cloud_Computing"&gt;Yahoo&lt;/a&gt;, &lt;a href="http://www.salesforce.com/"&gt;Salesforce&lt;/a&gt; зэрэг компаниудын араас &lt;a href="http://www.hp.com/hpinfo/newsroom/press/2008/080729xa.html"&gt;HP, Intel&lt;/a&gt;, &lt;a href="http://www.datacenterknowledge.com/archives/2007/Oct/08/google_ibm_team_on_data_center_research.html"&gt;IBM&lt;/a&gt;, &lt;a href="http://slashdot.org/article.pl?sid=08/08/04/1425236&amp;amp;from=rss"&gt;Micorsoft&lt;/a&gt; гээд томцуул өөрсдийн үүлтэй болохоор зүтгэцгээж эхллээ. Үүлийг хүн болгон хэрэглээд эхлэх юм бол IT -ийн салбарт ажиллагсадын тоо цөөрч магадгүй гэж бодож байна. Мэргэжлээ солих, эсвэл мэргэжлээ дээшлүүлэх шаардлага гарна. Дунд болон доод түвшний IT -ийн ажилтнуудын ажлын байр цөөрнө гэсэн үг. SaaS -ийг маш амжилттай явуулж байгаа компани бол Salesforce байна. Эднийх бизнесийн цогц шийдлийг санал болгодог. Google харин төрөл бүрийн апликэшнүүдийг үүл болгож чадаад байна. Amazon хамгийн анхны томоохон үүлийг байгуулж чадсан компани. Эднийх өгөгдлийн сангийн үйлчилгээ болох &lt;a href="http://aws.amazon.com/s3"&gt;S3&lt;/a&gt; -аараа алдартай. Эдгээр компаниудын үйлчилгээ бараг бүгд дагалдах API(&lt;a href="http://www.salesforce.com/developer/"&gt;developer.force.com&lt;/a&gt;, &lt;a href="http://code.google.com/"&gt;code.google.com&lt;/a&gt;) -тай. Бусад үүлгүй компаниуд өөрсдийн апликэшн болон сэрвисүүдээ тэр  API, сангуудыг ашиглаж хийгээд үүлэн дээр байрлуулж болно. Олсон ашиг орлогынхоо тодорхой хувийг өгөх, эсвэл тогтмол тарифтайгаар гэрээ хийж болно.&lt;br /&gt;&lt;br /&gt;Монголын зах зээлийн хувьд үүлийг хэрэглэх гол дэд бүтэц болох интернет нь хэрэглэгчдийн хувьд хараахан хангалттай хурдтай байж чадахгүй, бас хангалттай олон хэрэглэгчдийг хамарч амжаагүй л байна(Гадаадын сайтууд руу холбогдоход хамаагүй удаан байдгийг мэдэх байх). Энэ нь дотоодын IT -ийн компаниудад Монголдоо үүл байгуулах давуу талыг олгож байгаа юм. Дэд бүтэц хангалттай хөгжсөн тохиолдолд Salesforce, Google эд нарын үүлэн дээр ганц хүнтэй компани ч гэсэн өөрийн  сервисийг байрлуулчихаад орлого олоод байх бүрэн боломжтой.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-2476400424857911057?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/2476400424857911057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=2476400424857911057' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2476400424857911057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2476400424857911057'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2008/08/blog-post.html' title='Үүл'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-2889097086063937115</id><published>2008-06-23T15:19:00.009+08:00</published><updated>2008-06-23T15:56:42.260+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HBpM_2O-5ds/SF9U8L-s4zI/AAAAAAAAAFk/hd-SATNANO4/s1600-h/demo-6.png"&gt;&lt;img style="border: medium none ; margin: 0pt 20px 5px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_HBpM_2O-5ds/SF9U8L-s4zI/AAAAAAAAAFk/hd-SATNANO4/s400/demo-6.png" alt="" id="BLOGGER_PHOTO_ID_5214980286502986546" border="0" /&gt;&lt;/a&gt;Гүүгэл цаана чинь шүүгэл дугаргалаа шүү! Android бол &lt;a href="http://www.openhandsetalliance.com/android_overview.html"&gt;Нээлттэй мобайл платформ&lt;/a&gt;. Мобайл ертөнц рүү гүүглийнхэн нээлттэй өвөрмөц арга барилаараа орж байгаа нь энэ андройд.  Линукс үйлдлийн систем дээр Жава програмчлалын хэлийг нэмээд хүн бүхний гарт бариулчихаар юу болохов? Удахгүй хэдхэн сарын дараа яг тэр чинь болох нь дээ. OpenGL, CDMA, GSM, GPS,... гээд орчин үеийн мобайл хэрэглэлд юу байх ёстой билээ бүгд бий. Гар утасны томоохон үйлдвэрлэгчид андройд утас гаргахаа мэдэгдээд байгаа билээ. Японд, Европд, Америкт тэгэхээр Монголд ч ирнэ. Энэ оны сүүлээр хүмүүс андройд утас барьж эхлэх нь бололтой. Андройд нь нээлттэй платформ учраас эдгээр утаснууд нь харьцангуй хямд, мөн харьцангуй өргөн боломжуудтай байх нь ойлгомжтой. Хөгжүүлэгчид аль хэдийн андройд дээр киллер апп-уудыг хийгээд эхэлжээ. Гүүглээс 10 сая долларын шагналын сантай &lt;a href="http://android-developers.blogspot.com/2008/05/top-50-applications.html"&gt;тэмцээн зохиогоод&lt;/a&gt; андройд сонирхогчид ана мана үзэж байна.&lt;br /&gt;&lt;br /&gt;За тэр ч тийм байдаг байж. Гар утас нь үйлдвэрээс гараагүй байхад яаж дээр нь ажиллах програмыг хийх болж байнаа, гэж гайхах нь магад. Би ч нэгийг хийгээд үзчихсэн шүү. GPS дээр суурилсан жижигхэн авто машины зам заагч юм л даа. Яаж андройд дээр програм бичих вэ гэхээр:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Нэгдүгээрт, жава хэл гадарладаг байх хэрэгтэй, эсвэл одооноос сурч болно&lt;/li&gt;&lt;li&gt;Хоёрдугаар, &lt;a href="http://code.google.com/android/intro/installing.html"&gt;SDK-г нь суулгах&lt;/a&gt; хэрэгтэй. Эмулятор буюу дуурайгч нь их сайн ажилладаг(дуурайдаг) юм билээ&lt;/li&gt;&lt;li&gt;Гуравдугаарт, интернэттэй байх(Үүнийг уншиж байгаа болохоор байгаа л биз). Гүүглээс гаргасан андройдын API баримтууд нь одоохондоо тааруу учраас интернэтээс ихэнх зүйлийг олж мэдэх болно&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-2889097086063937115?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/2889097086063937115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=2889097086063937115' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2889097086063937115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2889097086063937115'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2008/06/android.html' title='Android'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_HBpM_2O-5ds/SF9U8L-s4zI/AAAAAAAAAFk/hd-SATNANO4/s72-c/demo-6.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-38366703071343353</id><published>2008-05-05T18:32:00.003+08:00</published><updated>2008-05-17T20:47:06.798+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='teaching'/><title type='text'>Багшийн мэргэжил</title><content type='html'>&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;"The mediocre teacher tells.&lt;br /&gt;The good teacher explains.&lt;br /&gt;The superior teacher demonstrates.&lt;br /&gt;The great teacher inspires."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;--William Arthur Ward&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Хүмүүний хийж чадах буянт үйлсийн нилээн дээгүүрт хүнд юм зааж сургах орно гэж боддог. Анх шохой барьж самбарын өмнө гарч багш гэж дуудуулсан нь 2000 оны намар юм байна.  Тэр жилийнх нь хавар төгсөөд намар нь нэг компанид програмист хийнгээ цагийн багшаар сургуульдаа мэргэжлийн зарим хичээл заангаа магистрантурт сурч байсан үе. 2 сар орчим сургууль ажил 2-ийн хоороонд махийж, эцэст нь програмист болох сонирхол нь дийлээд багшаа ч, магистраа ч хаясанаар багшийн ажил маань түр завсарласан юм.&lt;br /&gt;&lt;br /&gt;Хоёр жилийн өмнөөс компани дээрээ зуны сургалт болон бас бус сургалт семинар энэ тэр гээд мэр сэр хичээл зааж байгаад нодлингоос USI мэргэжлийн сургуульд албан ёсоор багш болж ахиад л самбарын өмнө гарч зогсов. Заасан хичээлийн нэр - "Програмчлал". Агуулга нь гэж Open source -оос авахуулаад Unix philosophy, Design Pattern -уудаас хүртэл түүгээд, Test Driven Developmen болон Refactoring -ийг бас оруулаад, бүр дебаг хийх тухай, тэмдэгт мөр, шелл програмчлал гээд 30 гаруй програм бичихэд хэрэгтэй гэж бодсон сэдвүүдээ хамж шимээд бөөгнүүлчихсэн чинь яг заах болоход хэцүү байсныг нуух юун.&lt;br /&gt;&lt;br /&gt;Амихандаа бусад хичээлүүд дээр заадаггүй, гэхдээ хэрэг болоод байдаг зүйлсийг л багтаах гэсэн юм. Тэгсэн нэг л биш юмаа. Ер нь нэг үгээр хэлэхэд арай болоогүй байхад нь заасан бололтой.  Тэдгээр сэдвүүдийг 2-4 жил програм бичсэн сонсогчдод семинар, эсвэл hands-on лаб байдлаар явуулвал илүү үр дүнтэй, сонсогчид маань бүрэн ойлгох байжээ гэж бодно.&lt;br /&gt;&lt;br /&gt;Сүүлийн лекцийн дараа оюутнуудаасаа хамгийн биед чинь шингэж үлдсэн ямар сэдэв байна вэ? гэхэд 10 аад сэдвээс 3-4 ийг л нэрлэж байгаан, -- ирэх улиралд үлдсэн сэдвүүдийг заахгүй гэж шийдсэн. Цаг нь болохоор өөрсдөө олж уншаад ойлгоно биз. Уг нь цаг хэмнэж миний олон жил болж ойлгосон сурсныг эрт мэдрээсэй сураасай гэж санасан хэрэг.&lt;br /&gt;&lt;br /&gt;Гэхдээ үр дүн нь хоосон биш л байж таарна. Кодын соёл, програм хангамж гэдэг бол зөвхөн код биш гэдгийг наад захын оюутан маань ойлгосон байгаа нь сайшаалтай.&lt;br /&gt;&lt;br /&gt;Би сайн багш биш. Заах арга ухаан, туршлага ч тааруу байж болно. Гэхдээ зүгээр хэлээд(tell) орхилгүй тайлбарлахыг(explain) оролддог, ярьсан зүйлээ хийж үзүүлдэг(demonstrate).  Харин урам зориг өгч онгод оруулж(inspire) чаддаггүй байж мэднээ.&lt;br /&gt;&lt;br /&gt;Anyway, I have done my best.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-38366703071343353?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/38366703071343353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=38366703071343353' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/38366703071343353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/38366703071343353'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2008/05/blog-post.html' title='Багшийн мэргэжил'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-3861351249794517674</id><published>2008-05-05T16:41:00.004+08:00</published><updated>2008-05-05T18:25:23.930+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coder'/><title type='text'>Их дээд сургуулиудын Програмчлалын 18-р олимпиад</title><content type='html'>Ойрмогхон програмчлалын олимпиад маань болоод өнгөрлөө. Энэ жил Тис дээр болов. Манай компани ивээн тэтгэгчдийн нэг тул манайхаас нэг хүн бодлого шалгах комист орох ёстой болж миний бие томилогдвой.&lt;br /&gt;&lt;br /&gt;Зохион байгуулалт ерөнхийдөө гайгүй болсон.  Будлиан энэ тэр бол ороогүй.&lt;br /&gt;&lt;br /&gt;Түрүүлсэн хүүхэд нийт авах ёстой онооны 50% ийг авсан.  3-р байрны хүүхдүүд медалаасаа олон болчихсон. Ерөнхийдөө хүүхдүүдийн түвшин тааруу байнаа гэж харагдаж байгаан, багш нар нь ч хэлж байлээ, одоохондоо Олон Улсын тэмцээнд очоод олигтой амжилт гаргачих хүүхэд гарч ирэхгүй байнаа гэж.. Сайн хүүхдүүдийг улам хөгжүүлээд олон улсын түвшинд хүргээд, нийтэд ил гаргаж рекламдаад мөнгөтэй хүмүүсээр ивээн тэтгүүлээд гадагшаа уралдаан тэмцээнд явуулах бодлого буюу менежмэнт сургуулиудад маань алга.&lt;br /&gt;&lt;br /&gt;Энэ удаагийн тэмцээний бодлогуудын хувьд нэг өөлөх зүйл байсныг нуух юун.  Тестүүд нь дандаа хүнд буюу маш том тестүүд байхаар, өөрийнхөө хэмжээнд оролдоод энгийн тохиолдолд бодчихсон хүүхэд, огт оролдоогүй хүүхэдтэй адилхан 0 оноо авчихаж байгаам. Заавал бүрэн төгс бодолтод оноо өгөх гэж байгаа бол ерөөсөө бүх тестийг давж байж л бүтэн оноогоо авдаг дүрмээр явах хэрэгтэй.&lt;br /&gt;&lt;br /&gt;Багш нар маань ер нь тэмцээнийг автоматжуулсан орчинд хүний оролцоогүйгээр шалгадаг програмтай бол гэж ярьж байсан нь авууштай юм. Мөн заавал Борланд паскал, Борланд си гэхээ больж аль болох нээлттэй эх бүхий програм хангамж ашиглах тал руугаа бага ч гэсэн хандлагатай болсны илрэл нь DevC++ ийг тэмцээний компьютерүүд дээрээ суулгасан байснаар харагдаж, баярлаж л байлаа. Удахгүй ганц, хоёр жилийн дараа лунукс дээр gcc хэрэглээд тэмцээн шүүх автомат систем дээр олимпиадаа явуулдаг болох байх гэдэгт найдаж байна.&lt;br /&gt;&lt;br /&gt;Сургууль болон багш нар маань хүүхдүүдээ эрчимтэйгээр, багаас нь бэлдээд байвал олон улсын тэмцээнүүдээс алтан медаль авах хүүхэд гарч л таараа. Жишээ нь Дарханы RGB сургууль програмчлалаар гүнзгийрүүлж байгаа гэж дуулсан. Хүүхдүүд нь ч бага гэлтгүй их дээд сургуулийн оюутнуудаас дутахааргүй бодлого боддог болчихсон &lt;a href="http://coder.mn"&gt;кодер.мн&lt;/a&gt; дээр манаргаж байна лээ.&lt;br /&gt;&lt;br /&gt;Нээрээ кодер.мн дээр онлайн курс явуулах бодолтой байгаа. Анхан шатны дөнгөж эхлэж байгаа хүүхдүүдээс авахуулаад ахисан шатны олимпиадын түвшний хичээлүүдийг бичээд, бодлого дасгалтай нь хамт оруулмаар байна. Энд мэдээж олон хүний тус нэмэр хэрэгтэй. Та ч гэсэн хичээл бичээд тавьж болно шүү.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-3861351249794517674?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/3861351249794517674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=3861351249794517674' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/3861351249794517674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/3861351249794517674'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2008/05/18.html' title='Их дээд сургуулиудын Програмчлалын 18-р олимпиад'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-3041509833378168323</id><published>2007-12-17T11:11:00.000+08:00</published><updated>2007-12-17T16:21:38.094+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming contest'/><title type='text'>coder.mn</title><content type='html'>Дээхнэ програмчлалын уралдаан тэмцээнийг онлайнаар явуулах вэб сайт &lt;a href="http://ochko.blogspot.com/2007/09/blog-post_19.html"&gt;хийнэ гэж бичиж&lt;/a&gt; байсан билээ. Ингээд нилээд хожуу ч гэсэн вэбийг хийж ажиллагаанд орууллаа.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://coder.mn"&gt;coder.mn&lt;/a&gt; бол програм сонирхогч, оролдогч оюутан залуусыг хөхиүлэн дэмжих, авъяас чадварыг үнэлэх зорилготой сайт юм.&lt;br /&gt;&lt;br /&gt;Вэб сайт дээр тогтмол уралдаан тэмцээнүүдийг зохион явуулахаар төлөвлөж байгаа бөгөөд ивээн тэтгэгчдийг хайж байна. Уг сайтыг ивээн тэтгэснээр мэдээллийн технологи, тэр дундаа програм хангамжийг сонирхогч оюутан залууст өөрийн байгууллага, компанийг таниулахаас гадна, чадварлаг залуу хүний нөөцийг олж авах боломж бүрдэнэ гэж үзэж байгаа.&lt;br /&gt;&lt;br /&gt;Нөгөө талаас оюутан залуус(заавал оюутан, эсвэл залуу байх албагүй л дээ) өөрийн мэдлэг чадварыг харуулан уг сайтын хэрэглэгчдийн жагсаалтад дээгүүр жагссанаар суралцах хугацаандаа тэтгэлэг авах, улмаар мэдээллийн технологийн топ компаниудад ажилд орох, зуны амралтаараа цалинтай ажил хийх, мөн сайт дээр үе үе зарлагдах шагналт ажлуудыг хийж орлого олох боломж нээгдэнэ.&lt;br /&gt;&lt;br /&gt;Дэд хэсгүүдийг товч танилцуулбал:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Эхлэл буюу нүүр хуудсан дээр мэдээ, тусламж, асуулт хариулт, дүрэм журам гэх мэт тогтмол мэдээллийг оруулсан.&lt;/li&gt;&lt;li&gt;Тэмцээний хэсэгт зарлагдсан болон өнгөрсөн тэмцээнүүд, тэмцээний төрлүүд, шагнал, ивээн тэтгэгчид гэсэн мэдээллүүд байгаа.&lt;/li&gt;&lt;li&gt;Хэрэглэгчид хэсэгт бодлого бодсон байдлаар хэрэглэгчдийг жагсаасан байгаа. Таныг энэ хэсэгт дээгүүр жагсана гэдэгт итгэж байна.&lt;/li&gt;&lt;li&gt;Бодлогууд хэсэгт өмнөх тэмцээнүүд дээр дэвшигдсэн бодлогууд байгаа. Таны оноо авах хэсэг бол энэ юм. Мөн энд өөрийн бодлогыг дэвшүүлж болно. Таны илгээсэн бодлогыг нягталж үзсэний дараа хүмүүс бодох юм. Гэхдээ өөрийнхөө дэвшүүлсэн бодлогыг бодож болдоггүй гэсэн хязгаарлалт байдгийг анхаараарай.&lt;/li&gt;&lt;li&gt;Хичээл хэсэгт бодлого бодохтой холбоотой төрөл бүрийн хичээл байх юм, одоогоор цөөхөн байгаа тул таныг хичээл бичиж тавина гэдэгт найдаж байна.&lt;/li&gt;&lt;li&gt;Хэлэлцүүлэг гэсэн хэсэгт ерөнхий зориулалтын болон, тухайлсан бодлогын тухай, тэмцээний тухай, гэх мэт хэлэлцүүлгүүд явагдана.&lt;/li&gt;&lt;li&gt;Ажил хэсэгт захиалгаар хийлгэх ажлуудыг явуулах юм. Захиалагч эрх бүхий хэрэглэгчид тэнд өөрсдийн ажлын шаардлагыг тодорхойлон тавих ба, бусад хэрэглэгчид ажлыг гүйцэтгэнэ. Захиалагчийн шаардлагад хамгийн их нийцсэн гүйцэтгэлд бооцоог өгнө.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;За ер нь та өөрөө &lt;a href="http://coder.mn"&gt;ороод&lt;/a&gt; үзнэ биз дээ.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-3041509833378168323?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/3041509833378168323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=3041509833378168323' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/3041509833378168323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/3041509833378168323'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/12/codermn.html' title='coder.mn'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-959858706429126378</id><published>2007-11-19T11:22:00.000+08:00</published><updated>2007-11-19T11:52:20.367+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Миний Emacs</title><content type='html'>Өмнө emacs ашиглаж сурч байгаа тухай дурдсан. Ойрын үед rails дээр ажиллаад байгаа болохоор emacs-аа rails дээр яаж тохируулснаа бичлээ.(Ерөнхий тохиолдолд бус, өөрийн компьютер дээр яаж суулгаснаараа)&lt;br /&gt;&lt;ol&gt;&lt;li&gt;emacs22 суулгана.&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;$ sudo apt-get install emacs22&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;ruby-elisp суулгана.&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;$ sudo apt-get install ruby-elisp&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;emacs-rails багцийг суулгана.&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;$ cd  $HOME/.emacs.d/ &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;$ svn co svn://rubyforge.org/var/svn/emacs-rails/trunk emacs-rails&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;snippet болон find-recursive багцуудыг мөн $HOME/.emacs.d дотор суулгана.&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;$ wget http://www.kazmier.com/computer/snippet.el&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;$ wget http://www.webweavertech.com/ovidiu/emacs/find-recursive.txt&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;$ mv find-recursive.txt find-recursive.el&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;$HOME/.emacs файл дотор дараах 2 мөрийг нэмж өгнө.&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;(setq load-path (cons "~/.emacs.d/emacs-rails" load-path))&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;(require 'rails)&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;Ингээд rails -ийн тохиргоо болоо. Emacs-аа нээгээд ямар нэгэн rails директори дотор байгаа файл нээхэд тохиргоо зөв болсон эсэх нь мэдэгдэнэ. Болохгүй бол emacs ачаалахад гардаг message үүд дотор алдаа байгаа эсэхийг шалгаарай. Хэрэв криллээр бичсэн текст харагдахгүй байвал фонтны асуудал байна гэсэн үг. Дараах мөрийг $HOME/.emacs дотор нэмж өгөөд болох ёстой. Хэрэв болохгүй бол өөр фонтууд сонгоорой.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;(set-default-font "-Misc-Fixed-Medium-R-Normal--13-120-75-75-C-80-ISO8859-1")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Эх сурвалжууд:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;http://dima-exe.ru/rails-on-emacs&lt;/li&gt;&lt;li&gt;http://www.credmp.org/index.php/2006/11/28/ruby-on-rails-and-emacs/&lt;/li&gt;&lt;li&gt;http://www.cs.huji.ac.il/support/emacs/font.html&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-959858706429126378?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/959858706429126378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=959858706429126378' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/959858706429126378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/959858706429126378'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/11/emacs.html' title='Миний Emacs'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-8203296093328283197</id><published>2007-10-30T11:18:00.000+08:00</published><updated>2007-10-30T11:36:35.879+08:00</updated><title type='text'>The Tao Of Programming</title><content type='html'>A manager went to the master programmer and showed him the requirements document for a new application. The manager asked the master: "How long will it take to design this system if I assign five programmers to it?"&lt;br /&gt;&lt;br /&gt;"It will take one year," said the master promptly.&lt;br /&gt;&lt;br /&gt;"But we need this system immediately or even sooner! How long will it take if I assign ten programmers to it?"&lt;br /&gt;&lt;br /&gt;The master programmer frowned. "In that case, it will take two years."&lt;br /&gt;&lt;br /&gt;"And what if I assign a hundred programmers to it?"&lt;br /&gt;&lt;br /&gt;The master programmer shrugged. "Then the design will never be completed," he said.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-size:85%;"&gt;--&lt;a href="http://www.canonical.org/%7Ekragen/tao-of-programming.html"&gt;The Tao Of Programming&lt;/a&gt;, Book 3 - Design&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-8203296093328283197?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/8203296093328283197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=8203296093328283197' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8203296093328283197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8203296093328283197'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/10/tao-of-programming.html' title='The Tao Of Programming'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-6964447564764523780</id><published>2007-10-29T15:32:00.000+08:00</published><updated>2007-10-29T16:07:00.183+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><category scheme='http://www.blogger.com/atom/ns#' term='planning'/><title type='text'>Найдвартайгаар төлөвлөх нь</title><content type='html'>&lt;div style="text-align: right;"&gt;&lt;span style="font-size:85%;"&gt;Joel Spolsky&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.joelonsoftware.com/items/2007/10/26.html"&gt;Evidence Based Scheduling&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Энэ залуу заримдаа үнэхээр хэрэгтэй зүйлс бичдэг. Энэ удаа ч бас програм хангамж хөгжүүлэх төслийн төлөвлөлтийн тухай маш гоё юм бичсэн байна(хажуугаар нь програмаа жаахан рекламдсан). Гол санаа нь практик нотолгоон дээр үндэслэсэн, хэрэгжүүлэх арга нь онолын үндэстэй. Ер нь төлөвлөлтийг ингэж хийх нь зүйтэй гэж эргэлзээгүй бодоход хүрэв.&lt;br /&gt;&lt;br /&gt;Урьд өмнө би(туршлага их биш л дээ) төлөвлөлт хийчээд хөтлөж байхад 99.99% хувьтай мөртлөө дуусаж өгдөггүй жижиг жижиг ажлууд их гардаг байлаа. Учир нь яг бодитоор уг ажил маань хэдэн хувьтай байгааг, дуусгахад хир хугацаа орохыг тооцоолж чаддаггүй байсан учраас. Ингээд сүүлдээ ажлын ард хувь тавих дургүй болчихсон юм. Миний хувьд ажил 3-хан янзын хувьтай - Эхлээгүй, Эхэлсэн,  Дууссан.&lt;br /&gt;&lt;br /&gt;Одооноос уг өгүүлэлд санал болгосон &lt;a href="http://www.joelonsoftware.com/items/2007/10/26.html"&gt;Evidence Based Schedule&lt;/a&gt; -ийг хэрэгжүүлэхээр шийдлээ. Та ч гэсэн төлөвлөгөө гаргадаг бол үүнийг уншаарай.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-6964447564764523780?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/6964447564764523780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=6964447564764523780' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6964447564764523780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6964447564764523780'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/10/blog-post_29.html' title='Найдвартайгаар төлөвлөх нь'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-8270868265255620215</id><published>2007-10-24T14:29:00.000+08:00</published><updated>2007-10-31T15:25:19.293+08:00</updated><title type='text'>Хийнгээ сурахуй</title><content type='html'>Аливаа юмыг сурах хамгийн сайн арга бол хийнгээ сурах гээд байгаа. Би ч үүнтэй санал нэг байдаг.&lt;br /&gt;&lt;br /&gt;Програмчлагч хүн учраас өөрийнхөө туршлага дээрээс жишээ татья. Нэг шинэ програмыг хэрэглэж сурах болоход эхлээд өөрийн компьютер дээрээ суулгаад, өнөөхөө ажиллуулчихаад ухаж гарна, ухангаа шаардлагатай үед тусламжаас нь хэрэгтэй хэсгээ харчихна.&lt;br /&gt;&lt;br /&gt;Шинэ програмчлалын хэл сурах болвол эхлээд тухайн хэл дээр бичсэн жишээг хөрвүүлж ажиллуулж үзнэ. Дараа нь өөрөө бага сага юм бичиж үзнэ, илүү хүндэвтэр юм хийж үзнэ, чадахгүй зүйл гарвал уншина, судлана, хайна. Тэгэхээр програмчлалын хэл сурахын хувьд, бичээд, уншаад, бичээд, уншаад, ... гээд л хөврөнө дөө.&lt;br /&gt;&lt;br /&gt;Ер нь шинэ зүйлийг бодит шаардлага тулгарсан үед идэвхитэй хурдан сурдаг юм. Хэзээ юунд хэрэглэхээ мэдэхгүй байж өдөр бүр нэмэгдэж байгаа шинэ технологиудаас алийг нь гэж судлах вэ дээ.&lt;br /&gt;&lt;br /&gt;Сүүлийн жишээ дурдахад нэгэн нээлттэй эх бүхий вэб апликэшнийг өргөтгөх гэж python-той учрах шаардлага гарсан юм. Эхлээд нэг анхан шатны ном уншчихья гэснээ залхуураад шууд засах ёстой кодтойгоо ноцолдоод эхэлсэн. Ингээд хэд хэдэн plug-in дээр bug засч, бага сага зүйл өөрөө хийснийхээ дараагаар, python хэлний талаар нэг ном уншиж мэдлэгээ цэгцэлдиймүү гэж бодогдсон, гэхдээ одоо болтол уншаагүй л байна. Харин тэгж байтал rails гэж бас нэг найзтай болоод, түүнийг ашиглаж хэсэг юм хийсний дараа ruby хэлний талаар нэг ном уншдаг юмуу гэж санагдаад л байгаа, мөн л уншиж амжихгүй болов уу. Дараагийн сурах зүйл маань яаруулаад байгаа.&lt;br /&gt;&lt;br /&gt;Гээд бодоод байхад миний хувьд аливаа юмыг хэрэгцээнийхээ хирээр судлаад л, бусдыг нь үлдээчихдэг юм. Яахав, болоод л байна, бусдыг нь дараа хэрэг болох үед нь судлана, наана нь хэрэглэхгүй баахан юм уншихаар угаасаа мартчихдаг хойно, дараа хэрэглэх үед угаасаа л reference харах болдог юм чинь -гэх мэтээр шалтаглана.&lt;br /&gt;&lt;br /&gt;Ингэж сурахад сайн муу талууд бий. Муу тал нь тухай зүйлийн талаархи мэдлэг алаг цоог болно. Яг өөрийн хийж байсан зүйлээ л сураад үлдэнэ. Сайн тал нь нэгдүгээрт хурдан хугацаанд хэрэгтэй зүйлээ эзэмшиж цаг хожно, хоёрдугаарт тухайн хэрэгтэй зүйлийнхээ хүрээнд хангалттай практик эзэмшинэ.&lt;br /&gt;&lt;br /&gt;Эцэст нь дүгнэж хэлэхэд аливаа технологийг эзэмшихдээ эхлээд хийж үзэнгээ нэн түрүүн шаардлагатай практик мэдлэг олж аваад, шаардлагатай бол сүүлд нь системтэй мэдлэгээр баяжуулвал зүгээр юм болуу гэж...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-8270868265255620215?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/8270868265255620215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=8270868265255620215' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8270868265255620215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8270868265255620215'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/10/blog-post.html' title='Хийнгээ сурахуй'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-5825280651084219176</id><published>2007-10-11T19:42:00.000+08:00</published><updated>2007-10-11T12:21:28.993+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming language'/><category scheme='http://www.blogger.com/atom/ns#' term='problem solving'/><title type='text'>Coroutine</title><content type='html'>Coroutine бол жирийн функц процедурын өргөтгөсөн хэлбэр юм. Функцүүд нэг эхлэлтэй байдаг, өөрөөр хэлбэл функцыг дуудахад эхний мөрөөсөө эхлэн ажилладаг. Харин Coroutine нь олон эхлэлтэй байж болно. Юу гэсэн үг вэ гэвэл,  Coroutine-ийг дуудах болгонд өөр өөр мөрөөс эхлэн ажиллаж болдог гэсэн үг. Иймд бидний өдөр тутам хэрэглэдэг функц процедурууд нь Coroutine-ийн нэгэн эгэл тохиолдол.&lt;br /&gt;&lt;br /&gt;Нэгэн жишээ авч үзье. Фибоначийн тоонууд гэдэг нь дарааллын гишүүн нь өмнөх хоёрынхоо нийлбэрээр тодорхойлогддог тоонууд юм. Мэдээж эхний 2 тоо нь өгөгдөх ёстой.&lt;br /&gt;&lt;div style="text-align: center;"&gt;0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610,...&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Дуудах болгонд нэг фибоначийн тоо өгдөг функцийг ruby дээр бичвэл:&lt;br /&gt;&lt;pre&gt;fib = Fiber.new do&lt;br /&gt;  x, y = 0, 1&lt;br /&gt;  loop do&lt;br /&gt;    Fiber.yield y&lt;br /&gt;    x,y = y,x+y&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;20.times { puts fib.resume }&lt;br /&gt;&lt;/pre&gt;Энэ функцыг дуудах болгонд дараагийн фибоначийн тоог буцаах болно. Учир нь resume -ээр дуудах болгонд функц yield гэсэн хэсгээс үргэлжлэн ажилладаг. Дараах хуурмаг C кодыг харья.&lt;br /&gt;&lt;pre&gt;int coroutine Generate_1_2_3() {&lt;br /&gt;  yield 1;  /* Execution begins here upon first call to Generate123 */&lt;br /&gt;  yield 2;  /* execution continues here upon "resume Generate123" */&lt;br /&gt;  yield 3;  /* execution continues here upon second "resume Generate123" */&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;main() {&lt;br /&gt;  printf("%d\n", Generate_1_2_3());  /* prints "1" */&lt;br /&gt;  printf("%d\n", resume Generate_1_2_3()); /* prints "2" */&lt;br /&gt;  printf("%d\n", resume Generate_1_2_3()); /* prints "3" */&lt;br /&gt;}&lt;/pre&gt;Дээрхи кодноос Coroutine нь олон хаалгатай байшин шиг өөр өөр газраар орж, өөр өөр газраар гарч болох нь харагдаж байгаа байх.&lt;br /&gt;&lt;br /&gt;Coroutine-ийг ихэвчлэн Thread-тэй харьцуулж үздэг. Thread-ээс давуу тал нь гэвэл deadlock, synchronization гэх мэт асуудлууд байхгүй. Гэхдээ мэдээж Thread бол зэрэг ажилладаг учраас түүгээрээ давуу.&lt;br /&gt;&lt;br /&gt;Coroutine нь State machine програмчлах, ямар нэгэн дараалсан зүйлсийг үүсгэх, өмнөх фибоначийн жишээ шиг төгсгөлгүй цуваа зэрэгт хэрэглэгддэг. Заримдаа нилээн хүнд бодлогуудыг coroutine ашиглаад хялбархан шийдэх тохиолдол байдаг. Жишээ нь "&lt;a href="http://c2.com/cgi/wiki?SameFringeProblem"&gt;Ижил хөвөөний бодлого&lt;/a&gt;": Хоёр ширхэг хоёртын модны бүх навчнууд зүүнээсээ баруун хүртлээ харгалзан ижил байвал тэр хоёр модыг ижил хөвөөтэй гэнэ. Өгөгдсөн хоёр модыг ижил хөвөөтэй эсэхийг шалга.&lt;br /&gt;&lt;br /&gt;Энэ бодлогыг Lua хэл дээр шийдсэн нь:&lt;br /&gt;&lt;pre&gt;function tree_leaves(tree)&lt;br /&gt;if tree.leaf then&lt;br /&gt;   coroutine.yield(tree.leaf)&lt;br /&gt;else                     &lt;br /&gt;   tree_leaves(tree.left)&lt;br /&gt;   tree_leaves(tree.right)&lt;br /&gt;end                                   &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function same_fringe(tree1, tree2)                             &lt;br /&gt;local iter1 = coroutine.wrap(tree_leaves)&lt;br /&gt;local iter2 = coroutine.wrap(tree_leaves)&lt;br /&gt;for node in iter1, tree1 do                   &lt;br /&gt;   if node ~= iter2(tree2) then              &lt;br /&gt;       return false&lt;br /&gt;   end&lt;br /&gt;end                                                &lt;br /&gt;return iter2() == nil&lt;br /&gt;end&lt;/pre&gt;Coroutine ашиглан шийдсэнээр хийгдэх үйлдэл нь O(n) юм. Та энэ бодлогыг өөрийн мэддэг хэл дээр coroutine ашиглалгүй шийдээд хийгдэх үйлдлийг(O) тооцоод үзээрэй.&lt;br /&gt;&lt;br /&gt;Зарим coroutine -г дэмжсэн програмчлалын хэлүүд:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ruby-lang.org/"&gt;Ruby&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.lua.org/"&gt;Lua&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.perl.org/"&gt;Perl&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Хэрэгцээтэй хуудсууд:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Coroutine"&gt;Википедиа дээрхи тайлбар&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://webseitz.fluxent.com/wiki/CoRoutine"&gt;Товч тодорхойлолт болон, Coroutine дэмждэг хэлүүдийг жагсаалт&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.chiark.greenend.org.uk/%7Esgtatham/coroutines.html"&gt;С хэл дээр хэрхэн хэрэгжүүлж болох тухай&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.akira.ruc.dk/%7Ekeld/research/COROUTINE/"&gt;C++ дээр coroutine нэмэх&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://c2.com/cgi/wiki?CoRoutine"&gt;CoRoutine Товч танилцуулга&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-5825280651084219176?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/5825280651084219176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=5825280651084219176' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/5825280651084219176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/5825280651084219176'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/10/coroutine.html' title='Coroutine'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-2425494046960899841</id><published>2007-10-10T19:08:00.000+08:00</published><updated>2007-10-10T19:47:19.622+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDE'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Хамгийн дажгүй Ruby on Rails IDE</title><content type='html'>Сүүлийн үед &lt;a href="http://www.rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt;(RoR) дээр жижиг сажиг юм хийж үзээд, амтанд нь нилээн орчихлоо. Тэгээд RoR ийн хамгийн дажгүй IDE юу байнав гээд хайсан юм. Хамгийн дажгүй нь &lt;a href="http://macromates.com/"&gt;TextMate&lt;/a&gt; гэж засварлагч дээр &lt;a href="http://wiki.rubyonrails.com/rails/pages/TextMate"&gt;Rails Bundle&lt;/a&gt; гэдгийг суулгаад янзын гэж байна. Тэр золиг нь даан ч үнэтэй, бас &lt;a href="http://www.apple.com/mac/"&gt;Mac&lt;/a&gt; дээр ажилладаг эд юм байна. Ер нь RoR дээр юм хийдэг хүмүүс Mac их ашигладаг бололтой юм билээ, яагаад ч юм бүү мэд, мэддэг хүн байвал тайлбарлаж өгөөрэй. За тэгээд &lt;a href="http://www.radrails.org/"&gt;RadRails&lt;/a&gt; гэж &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; дээр суурилсан нэг юм байна. Eclipse -ийн плагин л даа. Тэр золиг уг нь функцын хувьд их зүгээр юм, даан ч юм л бол гацаж бариад нэг л бишээ, тэгэхээр нь орхичихсон. Дараа нь &lt;a href="http://www.activestate.com/Products/komodo_edit/"&gt;Komodo Edit&lt;/a&gt; -гэж нэг засварлагч олов, гацаж унтрах нь гайгүй, бас өөр дээрээсээ шэлл рүү хандаж барих боловч, бас л их удаан юм, тэгэхээр нь өөр юу байна гээд хайлаа. Тэгээд сая эртний алдарт текст засварлагч &lt;a href="http://en.wikipedia.org/wiki/Emacs"&gt;emacs&lt;/a&gt; дээр RoR код бичих&lt;a href="http://dima-exe.ru/rails-on-emacs"&gt; заавар&lt;/a&gt; олж уншаадахлаа. Түүнийг суулгаад, тохируулаад авсан боломжын байна. Ер нь програм бичихэд нэг л сайн засварлагчийг төгс эзэмших хэрэгтэй гээд байдаг. Урьд нь би юм л бол &lt;a href="http://en.wikipedia.org/wiki/Vi"&gt;vi&lt;/a&gt; дээр онгойлгочихдог байлаа. Одоо бол emacs. Гацаж барихгүй, гартаа оруулаад авсан цагт бүтээмж асар өндөр гэж байгаа. Өмнө нь нэг удаа бас emacs руу оронгоо алдаад юникод текст гаргаж чадалгүй орхичихсон юм. Тэгсэн сая санаадгүй фонтыг нь fixed гээд сонгосон гараад ирсэн болохоор одоо OK. Ер нь компайл хийдэггүй хэлүүдийн хувьд IDE хэрэглэлээ гээд тэгж их бүтээмж нэмэгдэхгүй байх. Гэхдээ refactoring хийх гэх мэт функцүүдтэй бол IDE мэдээж бүтээмж нэмнэ л дээ. Ямар ч байсан ердийн тэкст файлаас авахуулаад скрипт хэлүүд дээр юм бичихдээ дандаа emacs хэрэглэж байхаар шийдлээ. Дараа emacs-ийн шилдэг чанаруудын талаар нэг бичлэг хийх болно.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-2425494046960899841?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/2425494046960899841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=2425494046960899841' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2425494046960899841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2425494046960899841'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/10/ruby-on-rails-ide.html' title='Хамгийн дажгүй Ruby on Rails IDE'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-8156700367878933493</id><published>2007-09-20T15:43:00.002+08:00</published><updated>2009-04-28T11:55:56.998+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stardict'/><title type='text'>Stardict -ийн өөр хоёр толь</title><content type='html'>Babylon-ий  &lt;a href="http://www.babylon.com/dictionary/43556/AACS-English-Mongolian.html"&gt;AACS English-Mongolian&lt;/a&gt; толиос &lt;a href="http://stardict.sourceforge.net/index.php"&gt;Stardict&lt;/a&gt; -ийн англи монгол толийг  үүсгэсэнээ өмнө &lt;a href="http://ochko.blogspot.com/2007/03/babylon-stardict.html"&gt;бичиж байсан&lt;/a&gt; билээ. Энэ удаад өөр 2 толь нэмж байна. Нэг нь babylon-ий &lt;a href="http://www.babylon.com/dictionary/43557/AACS-Mongolian-English.html"&gt;AACS Mongolian-English&lt;/a&gt; толиос хөрвүүлж авсан &lt;a href="http://www.geocities.com/ochqoo/aacs_mon-eng.zip"&gt;монгол-англи&lt;/a&gt; хувилбар, нөгөө нь  &lt;a href="http://www.babylon.com/dictionary/50470/Temuka%27s-English-Mongolian.html"&gt;Temuka's English-Mongolian&lt;/a&gt; толиос хөрвүүлсэн &lt;a href="http://www.geocities.com/ochqoo/temuka_eng-mon.zip"&gt;англи-монгол&lt;/a&gt; хувилбар. AACS-ийн толиуд нь нэг үгийг ихэвчлэн нэгээс хоёр үгээр тайлбарласан байдаг бол, Temuka-гийн толь нь  жишээ өгүүлбэр оруулан нилээд сайн тайлбарласан байна лээ. Temuka болон AACS нарт баярлалаа.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-8156700367878933493?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/8156700367878933493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=8156700367878933493' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8156700367878933493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8156700367878933493'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/09/stardict.html' title='Stardict -ийн өөр хоёр толь'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-7457762655422450258</id><published>2007-09-19T14:18:00.000+08:00</published><updated>2007-09-19T17:02:06.210+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming contest'/><title type='text'>Програмчлалын нээлттэй тэмцээн</title><content type='html'>Өмнө програмчлалын олимпиадын тухай бодож &lt;a href="http://ochko.blogspot.com/2007/09/blog-post_18.html"&gt;явдгаа&lt;/a&gt; бичсэн. Энд програмчлалын тэмцээнийг байнга явуулж сонирхогчдыг өдөөх, урамшуулах зорилготой нэгэн вэб сайт хийх гэж байгаа тухайгаа дуулгахад таатай байна. Вэб сайт маань:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Онлайнаар бодлого шүүдэг, шүүлтийг автоматаар хийдэг байна.&lt;/li&gt;&lt;li&gt;Бодлогыг мөн онлайнаар бүртгэнэ(мэдээж зөв бодлого эсэхийг нягтална)&lt;/li&gt;&lt;li&gt;Өмнөх тэмцээнүүдийн бодлогын сан, төрөл бүрийн статистикүүд, гишүүдийн ранк&lt;/li&gt;&lt;li&gt;Мөн оноогоороо тэргүүлсэн оролцогчдыг шагнаж урамшуулах&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Эхний ээлжинд ийм үндсэн функцүүдтэй байх болно. Шийдэх асуудал бол бодлогыг автоматаар шүүх. Тухайлбал ирж байгаа програм хаана байгаа ямар ч файлыг устгаж, эсвэл системд гаж зүйл хийж болох л доо. Автомат шалгагч маань дор хаяж л C/C++, Java, C#, Pascal -ыг чаддаг байх хэрэгтэй.&lt;br /&gt;&lt;br /&gt;За тэгээд програм сонирхохгч залуус минь, нээлтэй програмчлалын тэмцээндээ бэлдээд хүлээж бай даа.&lt;br /&gt;&lt;br /&gt;Програмчлалын онлайн тэмцээний вэб сайтууд:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://icpc.baylor.edu/icpc/default.htm"&gt;The ACM-ICPC International Collegiate Programming Contest Web Site&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.topcoder.com/tc"&gt;TopCoder&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://acm.uva.es/problemset/"&gt;online-judge.uva.es&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://acm.timus.ru/contest.aspx"&gt;Timus Online Judge&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://acm.mipt.ru/judge/"&gt;Moscow Problem Archive with Online Judge&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://acm.zju.edu.cn/"&gt;Zhejiang University Online Judge&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://acm.pku.edu.cn/JudgeOnline/"&gt;Peking University Online Judge&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://acm.tju.edu.cn/toj/"&gt;Tianjin University ACM-ICPC Online Judge&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://acm.fzu.edu.cn/"&gt;Fuzhou University Online Judge&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://acm.sgu.ru/index.php"&gt;Saratov State University :: Online Contester&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.spoj.pl/problems/classical/"&gt;Sphere Online Judge&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.olymp.krsu.edu.kg/GeneralProblemset.aspx"&gt;Kyrgyzstan University Online Judge&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://acm.fjnu.edu.cn/"&gt;Fujian Normal University Online Judge&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://opc.shaastra.org/"&gt;Shaastra Online Programming Contest&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://acm.hit.edu.cn/OJS/HomePage"&gt;Harbin Institute of Technology Online Judge&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.iarcs.org.in/inoi/programming-contest.php"&gt;Indian Computing Olympiad - Online Programming Contest&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://dwite.ca/"&gt;DWITE Online Computer Programming Contest&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Онлайн програмчлалын тэмцээн явуулахад зориулагдсан нээлттэй програм хангамжууд:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/projects/celiz/"&gt;Celiz Judge System&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/projects/ejoi-judge/"&gt;EjOI Judge System&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/projects/judge-tool/"&gt;Nafis' Programming Contest Judge Tool&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ncc.up.pt/mooshak/"&gt;Mooshak&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/projects/domjudge/"&gt;DOMJudge&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-7457762655422450258?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/7457762655422450258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=7457762655422450258' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/7457762655422450258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/7457762655422450258'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/09/blog-post_19.html' title='Програмчлалын нээлттэй тэмцээн'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-4611795415152067706</id><published>2007-09-18T09:52:00.000+08:00</published><updated>2007-09-19T14:17:13.870+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming contest'/><title type='text'>Програмчлалын олимпиад</title><content type='html'>Монгол Улсын их дээд сургуулийн оютнуудын дунд, бас ерөнхий боловсролын сурагчдын дунд жил бүр програмчлалын олимпиад зохиогддог. Эдгээр олимпиадын талаар өөрийн бодлоо хуваалцья.&lt;br /&gt;&lt;br /&gt;Сүүлийн үед эдгээр олимпиадыг сонирхогчид, оролцогчид, ивээн тэтгэгчид олширч байгаа нь олзуурхууштай зүйл мөн юм. Тухайлбал нодлин жилийн оюутны програмчлалын олимпиадыг МУИС ийн Мэдээлэл Технологийн Сургууль зохион байгуулж, Нэгдүгээр байрын шагнал 1 сая төгрөг байсан билээ. Би тэр олимпиадын шүүгчдийн багт ажилласны хувьд будлиангүй шудрага, зохион байгуулалт ч муугүй болсон гэж бодож байгаа. Гэхдээ миний энд ярих гэсэн зүйл бол зохион байгуулалттай холбоогүй.&lt;br /&gt;&lt;br /&gt;Хүүхдүүд бодлогоо ихэвчлэн, паскал, тэгээд с хэл дээр хийж, орчин нь Windows үйлдлийн систем байв. Бодолтыг шалгахдаа урьдчилан бэлдсэн оролтын файл програмд өгөөд гаралтын файлыг тулгах замаар хийдэг юм байна. Энэ үйлдлийг гараараа хийнэ. Гэхдээ тухайн үед гар ажиллагааг бага зэрэг автоматжуулж скрипт бичээд хэрэглэж байв. Маш олон хүүхдүүд програм нь огт ажиллахгүй гацдаг, эсвэл файлаа зөв уншдаггүй, эсвэл гаралтын файлаа зөв бичдэггүй гэх мэт бодлоготой хамаагүй наад захын алдаануудыг хийсэн байсан нь бэлтгэл муу, өөрөөр хэлбэл олимпиад хэрхэн явагддаг бодлого яаж шалгагддагийг мэддэгүйтэй холбоотой гэж санагдсан.&lt;br /&gt;&lt;br /&gt;Миний бодлоор тэмцээн эхлэхийн өмнө хүүхдүүдээр оролтын файл уншаад бодолтоо гаралтын файлд бичих дасгалыг хийлгэж үзүүлээд, чадахгүй байгаад нь зааж өгөөд, сураагүйг нь тэмцээнд оруулаад хэрэггүй. Энэ дасгалд файлын нэр, директорын бүтэц зэрэг ч хамаатай.&lt;br /&gt;&lt;br /&gt;Дараагийн санал бол ер нь их дээд сургуулиуд, бас арван жилийн сургуулиуд сургалтандаа нээлттэй эхийн програм хангамжуудыг түлхүү ашиглах. Бүр болдоггүй юмаа гэхэд олимпиадын бэлтгэлдээ линукс үйлдлийн систем ашиглах, олимпиадаа линукс дээр явуулах. Олон улсын тэмцээнүүд сүүлийн үед линукс дээр явагддаг болсон байгаа, үүнээс жишээ авах, ингэснээр шалгарсан оюутнууд маань олон улсад очоод өрсөлдөхөд хэрэгтэй.&lt;br /&gt;&lt;br /&gt;Цаашилбал, нээлттэй байдлаар байнга тэмцээн уралдаан явуулж програм бичих сонирхолтой залуусыг дэмжих. Энэ талаар бодсоноо тусдаа бичлэг болгоё.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-4611795415152067706?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/4611795415152067706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=4611795415152067706' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/4611795415152067706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/4611795415152067706'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/09/blog-post_18.html' title='Програмчлалын олимпиад'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-1453172122777078374</id><published>2007-09-03T11:32:00.000+08:00</published><updated>2007-09-03T14:03:40.453+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='password keeper'/><title type='text'>Нууц үг санагч</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;Нэгэн удаа:&lt;/span&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;&lt;br /&gt;-Админ, би нууц үгээ мартчихлаа, сэргээгээд өгөөч!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;-За, өмнөх шигээ нэртэй чинь адилхан болгочихъё, дараа нь сольчих?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;-Өө, сануулсанд баярлалаа...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Бас нэгэн удаа:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;-Админ, миний нууц үгийг сэргээгээд өг, тэгэх үү!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;-Ахиад л чи юу, тэгээд Ftp юм уу?, эсвэл Файл сэрвэр үү?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;-Yahoo?&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Интернэт, вэб технологи хөгжихийн хирээр хүмүүс төрөл бүрийн вэб сайт, сүлжээний апликэшнүүдийг хэрэглэх нь ихэсчээ. Апликэшнүүд десктопоос сүлжээнд, улмаар интернэтэд шилжих үед нэгэн ярвигтай асуудал гарч ирсэн нь, олон хэрэглэгчдийг ялгах, мэдээллийн тусгаар байдал, нууцлалыг хангах явдал юм. Ингээд олон хэрэглэгч хандаж байгаа газар бүрт хэрэглэгчийн нэр, нууц үг гэсэн хослолоор хүмүүсийг ялгах боллоо. Сүлжээн дэх апликешн бүрт хэрэглэгчийн нэр, нууц үгтэй болсон болохоор, тэр бүрийг санах, найдвартай хадгалах шаардлага зүй ёсоор гарч ирэв.&lt;br /&gt;&lt;br /&gt;Амархан нууц өгөхөөр хэн нэгэн тааж болох, хэт их хэцүү бол өөрөө мартчихдаг осол бий. Иймд ихэнх апликэшнүүд хэрэглэгчийн нууц үгийг санаж, дараа холбогдоход асуулгүйгээр нэвтрүүлэх боломжтой байдаг. Энэ нь мэйл клиентийн хувьд тусгай кодчилогдсон файлд, вэб апликешний хувьд session-оор дамжиж ажилладаг. Олон апликешний хандалтийг нэг төвлөрсөн газраас хянах зорилгоор &lt;a href="http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol"&gt;LDAP&lt;/a&gt; зэргийг ашигладаг боловч, интернетийн орчинд түгээмэл биш. Интернэт орчинд &lt;a href="http://openid.net/"&gt;OpenID&lt;/a&gt; зэрэг хэрэглэгчийг нэг хандах эрхээ олон газар хэрэглэх боломж олгодог сэрвисүүд ч байдаг. Хэдий энэ мэтчилэн нэг хандах эрхийг олон өөр газар ашиглах боломжууд бий болсон ч, өөрийн бүх хандах эрх, нууц үгүүдийг бүртгэн хадгалах шаардлага гарна.&lt;br /&gt;&lt;br /&gt;Та нууц үгүүдээ тэмдэглэлийн дэвтэр дээрээ бичээд шургуулгандаа хийж, эсвэл текст файлд бичээд компьютер дээрээ хадгалж ч болно. Мэдээж энэ 2 арга эхнийх нь хэрэглэхэд хэцүү, дараагийнх нь нууцлалын түвшин муу юм. Харин боломжийн нэг арга бол нууц үг хадгалагч програм хангамж хэрэглэж занших юм. Програм таны нууц үгүүдийг тусгай алгоритмаар кодлогдсон файлд хадгалах учир та ганцхан сүпер нууц үгийг л санаж байх хэрэгтэй. Энэ нууц үгээ боломжийн урт, янз бүрийн тэмдэгт агуулсан, гэхдээ та хэзээ ч мартахааргүйгээр сонгоорой(Хэрэв мартчих юм бол найраа байхгүй). Мэдээж бас нэг анхаарах зүйл нь нууц үгтэй файлаа энд тэнд олон газар тараан найдвартай хадгалж авах хэрэгтэй. Би &lt;a href="http://keepass.info/"&gt;KeePass &lt;/a&gt; хэмээх нээлттэй эх бүхий програмыг хэрэглэдэг, та ч бас хэрэглээд үзээрэй.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-1453172122777078374?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/1453172122777078374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=1453172122777078374' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/1453172122777078374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/1453172122777078374'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/09/blog-post.html' title='Нууц үг санагч'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-3438210586288991079</id><published>2007-08-31T15:02:00.000+08:00</published><updated>2007-09-03T11:31:05.111+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mathematics'/><category scheme='http://www.blogger.com/atom/ns#' term='computer science'/><title type='text'>Компьютерийн математик</title><content type='html'>Ихэнх програм зохиогчид, системийн инженерүүд сургуульд үзэж судласан математикийг ер хэрэглэж байгаагүй гэж ярьцгаадаг. Монголын их дээд сургуулиудын сургалтад тусгагддаг математикийн хичээлүүдийн агуулга амьдралаас хол байна уу, гэтэл ерөөсөө манайх ч гэлтгүй дэлхий нийтээрээ л програм зохиогчид, хөгжүүлэгчид математикийг бараг, эсвэл ер хэрэглэгдэггүй бололтой. Тэгсэн мөртлөө сургуульд математик үзээд, заагаад байдаг, хэрэглэхгүй юм бол юунд судлана?,  хэзээ ч хэрэглэгдэхгүй мэдлэг бол мэдлэг биш гэдэг дээ.&lt;br /&gt;&lt;br /&gt;Өнгөн дээрээ ингэж харагдаж, дүгнэгдэхээр байгаа боловч, үнэндээ &lt;a href="http://steve.yegge.googlepages.com/math-every-day"&gt;маш хэрэгтэй&lt;/a&gt;, заавал судлах сэдэв юм. Математикийг судласанаар хүний аливаа зүйлийг задлан шинжлэх, учир холбогдлыг тайлах, дүгнэлт хийх, ер нь асуудал шийдэх чадвар хөгждөг. Иймд математик нь шууд бус байдлаар бүх юманд хэрэглэгдэж байгаа. Ер нь ч матемтикийг хэрэглэдэггүй шинжлэх ухааны салаа мөчир гэж үгүй шүү дээ.&lt;br /&gt;&lt;br /&gt;Програм бичихэд бид ихэвчлэн өмнө баталчихсан, стандарт алгоритмуудыг хэрэглэдэг учраас өдөр тутам математикийн асуудалтай тулгараад байдаггүй нь үнэн. Гэтэл програм бичихэд математикийг зөв хэрэглэж чадвал асуудлыг илүү оновчтой, үр дүнтэй, баталгаатай аргаар шийдэх боломжтой. Нэгэн жишээ татахад, их дээд сургуулиудын дунд зохиогддог програмчлалын олимпиадад хүнд бодлогуудыг матемтик суурь сайтай хүүхдүүд бодчихоод байдаг. Тэд тавигдсан асуудлыг математик үүднээс загварчлаад шийдчихээр эцсийн шийдийг гаргах нь бэлэн томъёонд орлуулж тавих л үйлдэл, тооцоолуур нэг их ашиглагдахгүй гэсэн үг.  Тэгэхээр энэ чинь одоо матемтикийн олимпиад юмуу програмчлалын олимпиад юмуу гээд л маргах жишээтэй. Гэвч ингэж бодох нь хамгийн зөв гэж бодож байна. Програмчлалын олимпиад бол математикийн олимпиад мөн. Харин маргахын оронд тавьж байгаа бодлогоо л зөв сонгох хэрэгтэй, яах аргагүй компьютерээс тусламж авч шийдэхээр бодлого сонгох хэрэгтэй гэх юм уу даа.&lt;br /&gt;&lt;br /&gt;Одоо компьютер, тэр тусмаа програм хангамжийн мэргэжилд математик хир их тусгагдах, ямар математикийг нь судлавал илүү хэрэг болох тухай ярья. Ерөнхийдөө математикийг их үзлээ гээд ер илүүдэх зүйл байхгүй гэж хувьдаа боддог юм. Математик суурь сайтай хүн ямарваа зүйлийг ухаж ойлгох, асуудлыг шийдэх хурд арай илүү байх шиг байдаг.(Өөрөө математикаар төгссөн болохоор тэгж байна гэж бүү бодоорой. Миний хувьд багадаа математик физик сонирхдог, суут математикчид шиг өөрийнхөө нэрээр теорем батлаж үлдээх сэн гэж мөрөөддөг, барахгүй байж бодлого нухдаг хүүхэд байлаа, даан ч авъяас дутсан гэх үү дээ, амжилт үзүүлж чадаагүй :) )&lt;br /&gt;&lt;br /&gt;Их сургуулийн хэрэглээний математикийн ангид Математик анализ, Алгебр геометр, Дискрет математик, Диференциал тэгшитгэл, Вариац тоолол, Оновчтой удирдлагын онол, Магадлалын онол, Математик статистик, бүр Онолын физик хүртэл үзсэн боловч үнэхээр эхэнд дурдсан шиг яг хэрэглэсэн нь цөөн юм, хэрэглэхгүй болохоор салан баавгай шиг гээгээд, мартаад, одоо бараг үлдсэнгүй. Гэтэл би чинь зүгээр математикч биш &lt;span style="font-weight: bold;"&gt;хэрэглээний&lt;/span&gt; матемтикч гэсэн мэргэжилтэй шүү дээ, хэрэглэх ёстой хүн. Одооноос зарим зүйлсийг сэргээж, заримийг нь шинээр судлах санаатай эхний ээлжинд &lt;a href="http://en.wikipedia.org/wiki/Discrete_mathematics"&gt;Дискрет мат&lt;/a&gt; дээр үзсэн юмнуудаа сэргээх хэрэгтэй гэж бодож байна.&lt;br /&gt;&lt;br /&gt;Дискрет математикаас судлах сэдвүүд:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Formal Logic&lt;/li&gt;&lt;li&gt;Propositions, Proofs, Recursion&lt;/li&gt;&lt;li&gt;Analysis of Algorithms&lt;/li&gt;&lt;li&gt;Sets, Functions, Relations&lt;/li&gt;&lt;li&gt;Graph Theory&lt;/li&gt;&lt;li&gt;Number Theory&lt;/li&gt;&lt;li&gt;State Machines&lt;/li&gt;&lt;li&gt;Counting&lt;/li&gt;&lt;li&gt;Generating Functions&lt;/li&gt;&lt;li&gt;Probability&lt;/li&gt;&lt;li&gt;Combinatorics&lt;/li&gt;&lt;li&gt;Turing machines&lt;/li&gt;&lt;li&gt;Formal Languages&lt;/li&gt;&lt;/ul&gt;Ер нь дараа хэзээ нэгэн цагт судлах зүйлс:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Automata_theory"&gt;Automata theory&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Game_theory"&gt;Game theory&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Differential_equation"&gt;Differential Equations&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Formal_methods"&gt;Formal methods&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Cryptography"&gt;Cryptography&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Topology"&gt;Topology&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Calculus"&gt;Calculus&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Neural_network"&gt;Neural networks&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Distributed_algorithms"&gt;Distributed algorithms&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Дээр ярьсан зүйлстэй нэг их холбоогүй боловч, миний сонирхол татдаг физикийн салбарууд:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/String_theory"&gt;String theory&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Quantum_mechanics"&gt;Quantum Mechanics&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Big_Bang"&gt;Big Bang&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://maaxai.blogspot.com/2006/12/blog-post.html"&gt;Хэзээ нэгэн цагт би ниснэ&lt;/a&gt; гэдэг шиг, хэзээ нэгэн цагт бүгдийг нь судлана даа.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-3438210586288991079?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/3438210586288991079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=3438210586288991079' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/3438210586288991079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/3438210586288991079'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/08/blog-post_31.html' title='Компьютерийн математик'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-2802579452550591561</id><published>2007-08-15T12:15:00.000+08:00</published><updated>2007-08-15T14:54:24.474+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='writing'/><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>Ном бичихэд ямар багаж хэрэглэх вэ?</title><content type='html'>Миний нэг мөрөөдөл бол мэргэжлийнхээ чиглэлээр ном бичих юм. Мөрөөдөөд л байвал нэг өдөр номтой болчихгүй нь лав. Иймд өнөөдрөөс номоо бичиж эхлэхээр шийдлээ. Цаг гарвал энд тэнд нь хэдэн мөр нэмэрлээд байхад хэзээ нэгэн цагт дуусгах л болно.&lt;br /&gt;&lt;br /&gt;Ингэхэд номоо ямар форматаар, ямар програм хангамж хэрэглэж бичих вэ? Сургуульд байхад багш нар маань latex дээр бичдэг байсан санагдана, би ч яахав дипломоо Word дээр л халтайлгачихсан. Ер нь бол номыг энгийн хэрэглээний doc, txt гэх мэт форматаар бичдэггүй бололтой юм.  Мэргэжлийн ном бичдэг, хэвлүүлдэг хүмүүс ихэвчлэн ямар форматаар хийдэг юм бол гээд жаахан интернэтээр тэмтэрвэл яах аргагүй &lt;a href="http://www.tug.org/"&gt;tex&lt;/a&gt;/&lt;a href="http://www.latex-project.org/"&gt;latex&lt;/a&gt; л голчлон хэрэглэгддэг юм байна.&lt;br /&gt;&lt;br /&gt;За ингээд ном эхлүүлэх гэсэн биш шинэ юм сурах болвоо. Би угаасаа номоо бичих явцдаа зөндөө юм сурах төлөвлөгөөтэй учраас үүнийг сурах нь зүйн хэрэг гэж бодож байна. Би шинэ юм сурах дуртай, шинэ юм оролдох шиг сайхан зүйл хаа байхав.&lt;br /&gt;&lt;br /&gt;Одоогоор &lt;a href="http://www.lyx.org/"&gt;LyX&lt;/a&gt; гэдэг нээлттэй эхийн програм суулгачихсан оролдож эхлэх гэж байна, latex энэ тэр судлаад байх шаардлагагүй энгийн эд гэж танилцуулга дээр нь байсан болохоор сонгов. Дараа боломж олдвол latex-ийг нухацтай үзнэ дээ.&lt;br /&gt;&lt;br /&gt;Хэрэв танд ном бичих болон tex-ийн талаар туршлага байвал хуваалцахыг хүсье.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-2802579452550591561?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/2802579452550591561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=2802579452550591561' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2802579452550591561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2802579452550591561'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/08/blog-post_15.html' title='Ном бичихэд ямар багаж хэрэглэх вэ?'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-6806661634078990625</id><published>2007-08-14T13:35:00.000+08:00</published><updated>2007-08-14T15:56:57.440+08:00</updated><title type='text'>Эрдэнийн чулуу бадмаараг</title><content type='html'>Ойрд сурталчилгааны шинж чанартай ганц нэг бичлэгийг эс тооцвол, мэргэжлийн юм бичсэнгүй(завгүй байсан л гэж битий хэлж үзээрэй). Гэхдээ энэ удаа шинээр сурч байгаа нэгэн програмчлалын хэлийг танилцуулья. Бодвол та бүхэн дуулсан л биз дээ, &lt;a style="color: rgb(204, 0, 0);" href="http://www.ruby-lang.org/en/"&gt;Ruby&lt;/a&gt; гэж...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HBpM_2O-5ds/RsFaqKFc5LI/AAAAAAAAAEU/Pz5zPS95DEA/s1600-h/ruby.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_HBpM_2O-5ds/RsFaqKFc5LI/AAAAAAAAAEU/Pz5zPS95DEA/s320/ruby.jpg" alt="" border="0" id="BLOGGER_PHOTO_ID_5098455933468337330" border="0" /&gt;&lt;/a&gt;Ruby буюу монголоор &lt;a href="http://www.mongolchess.com/gems/korund.htm"&gt;бадмаараг&lt;/a&gt; гэж зурагт харагдаж байгаа хүрэн өнгөтэй эрдэнийн чулуу билээ. Энэ сайхан чулууний нэрийг авсан програмчлалын хэл чулуу шигээ бас сэтгэл татам байж чадах болов уу? Миний хувьд бол үнэхээр сайхан хэл санагдлаа. Яагаад гэвэл сурахад маш амарханаас гадна, уг хэл дээр бичсэн код ойлгомжтой, бараг л англиар биччихсэн юм шиг уншигдаж байгаа юм. Би энэ хэлийг дөнгөж судлаж эхлэнгүүтээ ruby дээр суурилсан &lt;a href="http://www.rubyonrails.org/"&gt;rails&lt;/a&gt; хэмээх араг ясан дээр нэгэн жижиг програмыг амархаан зангидчихсан. Нэг үгээр хэлэхэд бүтээмж нилээн өндөр байна. Тухайлбал &lt;span style="font-style: italic;"&gt;3.times, 1.megabytes&lt;/span&gt; -гэх мэт "&lt;span style="font-style: italic;"&gt;шидэт&lt;/span&gt;" шинжүүдийг нь хэрэглэхэд ёстой кайф. Ингээд хэрэв би сонирхлыг чинь хандуулж чадсан бол дараах хаягуудаар орж судлаарай.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ruby-lang.org/en/"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_HBpM_2O-5ds/RsFbk6Fc5MI/AAAAAAAAAEc/aRj0aXt-piE/s200/ruby.gif" alt="" border="0" id="BLOGGER_PHOTO_ID_5098456942785651906" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.rubyonrails.org/"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_HBpM_2O-5ds/RsFbw6Fc5NI/AAAAAAAAAEk/3mhHU7qWzAM/s200/rails.png" alt="" border="0" id="BLOGGER_PHOTO_ID_5098457148944082130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://rubyforge.org/"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_HBpM_2O-5ds/RsFdtqFc5OI/AAAAAAAAAEs/zltV_bO3iO8/s200/rubyforge.png" alt="" border="0" id="BLOGGER_PHOTO_ID_5098459292132762850" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-6806661634078990625?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/6806661634078990625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=6806661634078990625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6806661634078990625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6806661634078990625'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/08/blog-post_14.html' title='Эрдэнийн чулуу бадмаараг'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_HBpM_2O-5ds/RsFaqKFc5LI/AAAAAAAAAEU/Pz5zPS95DEA/s72-c/ruby.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-7769357258194153072</id><published>2007-08-14T13:15:00.000+08:00</published><updated>2007-08-28T19:53:32.388+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='outsourcing'/><category scheme='http://www.blogger.com/atom/ns#' term='usi'/><title type='text'>Хялбархан видео боловсруулагч</title><content type='html'>Саяхан нэг video-г жижигхэн засах хэрэгтэй болсон юм. DVD дээрээс хэсэглэж авах ажил. Үүний тулд Ubuntu -ийнхээ synaptic-аар "dvd rip" -гэж нэг хайгаад, "video split" -гэж хайгаад л олдсон програмууд дотроос dvdrip, mpgtx -гэсэн 2 -ийг нь суулгалаа. Эхнийхээр нь dvd форматаас mpg-рүү хөрвүүлж авааад дараа нь &lt;span style="font-style: italic;"&gt;mpgtx -s myvideo.pmg [0:05-2:33]&lt;/span&gt; -гээд л хэрэгтэй хэсгээ салгаад авчихаж байгаа юм даа. Ингээд л болоо, эдгээр програмыг суулгахтай нийлээд 30 минут л зарцуулав, гэхдээ мэдээж бүхэл бүтэн киног хөрвүүлэх энэ тэр бол цаг авах нь гарцаагүй. Ямар ч байсан миний хувьд болоод явчлаа. Нэрээ боловсруулсан видео нь манай компаний тухай мэдээний хэсэг юм. Төрөөс гадаад аутсоорсингийг үнэхээр дэмжээд өгөөсэй дөө.&lt;br /&gt;&lt;br /&gt;&lt;a style="left: 0px ! important; top: 0px ! important;" title="Click here to block this object with Adblock Plus" class="abp-objtab visible ontop" href="http://www.youtube.com/v/_2Uvq3IZvW0"&gt;&lt;/a&gt;&lt;object height="222" width="284"&gt; &lt;param name="movie" value="http://www.youtube.com/v/_2Uvq3IZvW0"&gt;  &lt;embed src="http://www.youtube.com/v/_2Uvq3IZvW0" type="application/x-shockwave-flash" height="222" width="284"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-7769357258194153072?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/7769357258194153072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=7769357258194153072' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/7769357258194153072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/7769357258194153072'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/08/blog-post.html' title='Хялбархан видео боловсруулагч'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-912151792949173551</id><published>2007-07-06T20:32:00.000+08:00</published><updated>2007-07-06T20:45:06.316+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='school'/><title type='text'>Шинэ сургууль</title><content type='html'>Манай компаний дэргэд мэдээллийн технологийн мэргэжлийн &lt;a href="http://iti.usi.mn/"&gt;сургууль&lt;/a&gt; нээгдлээ.  Мэргэжлийн сургууль нь 2 жилийн хугацаатай, програм зохиогч бэлдэх бөгөөд бусад сургуулиудаас онцлог нь практикт илүү ойр агуулгатайгаар сургалтын хөтөлбөрөө баталсан байгаа. (Сургалтын хөтөлбөр боловсруулахад би оролцож өөрийн хэрэгтэй гэж үзсэн зүйлсийг оруулж чадсан учраас сэтгэл их хангалуун байна.) Хоёр жилийн хугацаатай мэргэжлийн үнэмлэх олгох ангиас гадна, нэг жилийн хугацаатай курс мөн хичээллүүлэх юм. Хоёр жилийн сургалтад нь мэргэжлийн хичээлүүдээс гадна яамнаас тавигдсан шаардлагын дагуу ерөнхий эрдмийн хичээлүүдийг мөн үзэх бол, нэг жилийнхэд зөвхөн програмчлалтай холбоотой хичээлүүдийг судлах болно. Сайн суралцагсадыг гадаад дотоодын компаниудад явуулж дадлага хийлгэнэ гэжугаа. За тэгээд сонирхож байвал &lt;a href="http://iti.usi.mn"&gt;вэб сайтаас&lt;/a&gt; нь ороод үзээрэй.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-912151792949173551?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/912151792949173551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=912151792949173551' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/912151792949173551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/912151792949173551'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/07/blog-post_06.html' title='Шинэ сургууль'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-7701152158121020192</id><published>2007-07-03T17:42:00.000+08:00</published><updated>2007-07-18T16:48:50.262+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming language'/><title type='text'>Хэлээр бичих, Хэл дээр бичихийн ялгаа</title><content type='html'>Нэг өгүүлбэрийг хэд хэдэн хэл дамжуулан орчуулаад эргээгэээд анхны хэл рүүгээ орчуулахад нилээд өөр утгатай болчихдог тухай баримт байдаг. Учир нь хэл болгон илэрхийлэх арга, бүтэцтэйгээс гадна, хэлээ дагаад сэтгэлгээ нь ондоо байдаг. Үүнтэй адилаар програмчлалын хэлүүд ч гэсэн зорилго чиглэлээсээ хамаараад өөр өөрийн онцлог бүхий өгүүлбэр зүйн бүтэц, илэрхийлэх арга,  бас сэтгэлгээ, суурь ухагдахуунуудтай. Нэг хэл нь системийн програмчлалд дөхөмтэй байхад нэг нь вэб програмчлалд ойрхон, нөгөө зарим нь бизнес апликэшн хийхэд амархан байх жишээтэй.&lt;br /&gt;&lt;br /&gt;Гадаад үггүй хэл гэж үгүй. Нэг хэлнээс нөгөөд орчуулахад төвөгтэй, эсвэл огт орчуулагдахгүй үгс байдаг учраас тэр байх. Орчин үеийн аль ч хэлнээ гадаад үг заавал хэрэглэгдэж байгаа гэдэгтэй маргах хэрэггүй. Зөвхөн нэг програмчлалын хэл дээр  томоохон програм хангамжийг хийнэ гэдэг ч мөн үгүй болжээ. Иймд орчин цагийн програмчин хүн заавал хэд хэдэн хэл мэдэж байх шаардлагатай болсон байна. Гэхдээ олон хэл сурна гэдэг учиртай.&lt;br /&gt;&lt;br /&gt;Одоо хэлээр бичих, хэл дээр бичихийн ялгааг тайлбарлахыг оролдоё.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Хэл дээр бичнэ&lt;/span&gt; гэдэг нь зөвхөн тухайн хэлнийхээ аялага, хэллэгийн хүрээнд сэтгэж, өөрийнхөө мэддэг тухайн хэлнийхээ боломжид л хязгаарлагдахыг хэлж байна. "Ингээд миний мэддэг орос хэл дууслаа" -гэдэгтэй л агаар нэг гэсэн үг.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Харин хэлээр бичнэ&lt;/span&gt; гэдэг нь ямар хэл дээр бичиж байгаагаас хамааралгүйгээр өөрийн санааг тэр чигээр нь програмдаа буулгахыг хэлж байгаа юм. Санаагаа монголоор ч, англиар ч, японоор ч, зааны ясан эргийн хэлээр ч нэгэн утгатай илэрхийлнэ гэдэг амаргүй. Хэрэгтэй функцээ С-гээр ч, Жава-гаар ч, Basic-ээр ч, Perl -ээр ч адилхан үр дүн өгөх хэмжээнд бичих ч амар бишээ.&lt;br /&gt;&lt;br /&gt;Жинхэнэ програмчин хүн бол бодсон зүйлээ програмчлалын хэлнээс хамааралгүйгээр төсөөлөөд, нөхцөл байдалд тохируулан аль нэг хэл дээр чөлөөтэй буулгаж чаддаг байх ёстой. Хэл болгоны онцлог, давуу болон дутагдалтай чанаруудыг мэдэж байвал, ямар нөхцөлд ямар хэлийг хэрэглэх нь оновчтой болохыг шийдэхэд дөхөмтэй байх болно.&lt;br /&gt;&lt;br /&gt;Ямар нэгэн зүйлд хязгаарлагдалгүй асуудлыг өргөнөөр харж, чөлөөтэй сэтгэж чадсан хүн ихийг бүтээдэг бөгөөд, шийдлийг урьдчилан төсөөлсөн байхад зам зуурт тохиолдох жижиг бэрхшээлүүдийг давах нь шүд угаахын л адил өдөр тутмын ажил билээ.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-7701152158121020192?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/7701152158121020192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=7701152158121020192' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/7701152158121020192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/7701152158121020192'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/07/blog-post.html' title='Хэлээр бичих, Хэл дээр бичихийн ялгаа'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-6934949688391681589</id><published>2007-05-10T19:24:00.000+08:00</published><updated>2007-05-11T14:30:06.704+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hacker'/><title type='text'>Хакэр гэж хэн бэ?</title><content type='html'>Хакер гэхээр хүмүүс ихэвчлэн муу тал руу нь ойлгодог. Гэтэл жинхэнэ мэргэжлийн хүрээний ойлголтоороо бол тийм биш. Их зүйл хийсэн, хүмүүст үнэлэгдсэн сайн програмчид, хөгжүүлэгчдийг мэргэжил нэгт нөхөд нь хакер гэдэг. Муу үйл хийж бусниулагчдыг хар малгайт, сайн үйлстэнгүүдийг цагаан малгайт хакерууд гэж хэлдэг нь ч зохисон нэршил.&lt;br /&gt;&lt;br /&gt;Асуудлыг хэний ч санаанд оромгүй аргаар шийдэх, техникийн нарийн зүйлсийг ухаж төнхөх, бяцхан хоргүй хошигнол хийх зэргээр үйл ажиллагаа нь илрэх тохиолдол байдаг боловч, учрыг ойлговол заавал тийм байх албагүй.&lt;br /&gt;&lt;br /&gt;Eric Steven Raymond-ийн "&lt;a href="http://www.catb.org/%7Eesr/faqs/hacker-howto.html"&gt;How To Become A Hacker&lt;/a&gt;" дээр бичсэнээр хакерууд бүтээж байхад, кракерууд сөнөөдөг гэсэн буй. Ингээд түүний энэ зөвлөгөөг тоймлон бичихийг оролдьё.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Характер&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Хорвоо дэлхий шийдэх асуудлаар дүүрэн&lt;/span&gt;. Алив үр дүнг зүтгэл гаргаж бий болгодог. Хакерууд хүч сорьсон хэцүү асуудлыг шийдэж, түүнээсээ кайф авч, өөрийгөө хурцалж хөгжүүлж байдаг дуршилтай улс.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Аливаа асуудал хоёр дахиа шийдэгдэх ёсгүй&lt;/span&gt;. Тархи бол үнэтэй, хязгаарлагдмал нөөц учраас түүнийг хий дэмий үрэхээс зайлсхийх нь зүйтэй. Хэн нэгний шийдсэн асуудлыг дахин шийдэх нь утгагүй. Ийм учраас хакерууд шийдсэн асуудлаа бусдад дэлгэдэг гэж ойлгож болно. Энэ нь шийдэгдсэн асуудал руу дахин өнгийгөөд хэрэггүй гэсэн үг биш юм. Хакерууд төрөлхийн сониуч зангаараа аливаа шийдлийг заавал сонирхож судалдаг бөгөөд, хэрэв илүү сайн шийдэл байвал түүнийгээ нуудаггүй. Гэхдээ оюун тархиа зарцуулсан ажлаа бүгдийг үнэгүй дэлгэ гэвэл мэдээж шудрага бус - хөлс хүчээрээ ашиг орлого олох нь шудрага хэрэг билээ.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Уйтгартай, ядаргаатай ажил маш хорон&lt;/span&gt;. Залхуутай, олон дахин давтагдсан нэгэн хэвийн ажлийг хийхгүй л байх хэрэгтэй. Учир нь энэ бол хакерийн хамгийн сайн хийж чадах асуудал шийдэх ажлийг хийлгэхгүй цагийг нь дэмий үрж байгаа хэрэг. Ийм учраас энэ нь бусдад ч хортой болж байна. Давтагдсан ажлыг бололцооны хирээр автоматжуулж өөртөө болон бусдад(ялангуяа бусад хакеруудад) тус болох нь зүйтэй.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Эрх чөлөөт хүмүүс&lt;/span&gt;. Хакерууд эрх чөлөөнд дуртай. Өөрийн тооцоолуурыг дураараа тоноглож, ямар програм суулгаж, яаж ашиглахаа тэд хэнээр ч заалгах дургүй. Хэн нэгэн хажууд нь ирж зогсоод юу хийхийг нь заах юм бол жинхэнэ там гэсэн үг. Даргын хий гэсэн зүйл нь ихэнхдээ тийм ч оновчгүй зүйл байх ба, гол ажил болох асуудал шийдэхэд нь садаа болдог. Хакерууд чөлөөтэй сэтгэж, туурвиж, бусадтэй чөлөөтэй хуваалцах дуртай байхад, ямар нэг даргын команданд байна гэдэг бол тэдний зохиосон дүрмэнд захирагдаж, дураараа туурвиж, мэдлэг хуваалцаж чадахгүй болно гэсэн үг. (Тухайлбал Google-ийн хөгжүүлэгчидэд ажлын цагынхаа тодорхой хувийг дуртай юмаа хийхэд нь чөлөөлж өгсөн байдаг. Энэ нь Google-д хакерууд ажиллах бололцоог олгож байгаа юм.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ур чадвар&lt;/span&gt;. Хакер байхын тулд дээрх шинж төрхүүдийг бүрдүүлэх хэрэгтэй, зүгээр бүрдүүлэх биш бүрэн итгэлтэй байх нь чухал. Гэхдээ зөвхөн зан чанар байгаад рок од болчихгүй, олимпийн медал авчихгүй - оюун ухаан, тамир тэнхээ, туршлага, дээр нь асар их хөдөлмөр хэрэгтэй. Тэд барьцалдах, шөргөөцөлдөх, өдөөн хатгалт гэх мэт элдэв шалдавхан зүйлд цаг, ухаан, нэрвээ үрдэггүй, харин тэд ур чадвар, мэдлэг мэргэшилд шүтдэг юм. Ялангуяа хакийн ур чадвараа хөгжүүлэх нь хамгийн чухал, гэхдээ бусад ур чадварууд ч хэрэгтэй. Цөөхөн хүн л хийж чадах онцлог ажлийг чаддаг байна гэдэг сайн, харин оюун ухаан, ур дүй, анхаарал шаардсан ажлийг хийж чаддаг бол бүр сайн. Ур чадварт итгэж, түүний төлөө хичээж чадвал олж авах нь гарцаагүй - иймд хичээнгүй зүтгэл, ажилдаа бүхнээ зориулах зан чанар хамгийн үнэтэй чанар мөн.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;Үндсэн ур чадварууд&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;1. Програм бичих&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Мэдээж энэ бол хакерийн үндсэн ур чадвар. Хэрэв ямар нэг програмчлалын хэл мэддэггүй бол Python-оос эхлэхийг санал болгож байна. Энэ нь сурахад маш хялбар, цэвэрхэн бүтэцтэй учраас эхлэн сурлацагчдад сайхан тохирно. Гэхдээ энэ хэл бол зүгээр нэг тоглоом төдий биш, нилээд хүчирхэг хэл учраас цаашид ч мөн хэрэг болох болно.&lt;br /&gt;&lt;br /&gt;Жава бол програм бичиж сурахад тохиромжтойгоос гадна, хэрэглээ ч их. Python-оос хэцүү ч, арай хурдан ажилладаг код гаргадаг. Гэхдээ орчин үеийн тооцоолууруудын хувьд аль аль нь удаан гэж тооцогдохгүй.&lt;br /&gt;&lt;br /&gt;Эдгээр хоёр хэл дээр програм бичдэг болсноор өөрийгөө хакер болчихлоо гэж бодож болохгүй, програмчин болчихлоо ч гэж саналтгүй. Хакер болохын тулд асуудлыг аль нэг програмчлалын хэлээс хамааралгүй сэтгэж, шийдэж сурах хэрэгтэй. Жинхэнэ хакер хүссэн програмчлалын хэлээ хэдхэн өдрийн дотор л өөрийн болгодог. Иймд нилээд олон хэл сурах хэрэгтэй гэж хэлэх гээд байна.&lt;br /&gt;&lt;br /&gt;Илүү гүнзгий түвшинд програмчилья гэвэл C сурах хэрэгтэй. Энэ бол нилээн доод түвшний хэл, энэ хэл дээр бичигдсэн програм маш хурдан ажиллах боломжтой, гэхдээ програм дотроо санах ойн зохицуулалт гэх мэт машины доод түвшний зохицуулалтуудыг өөрөө хийх хэрэгтэй болдог. Доод түвшний код бичих нь алдаа гаргах магадлалыг ихэсгэх ба, дэбаг хийхэд хамаг цаг зарцуулагдана. Одоо үед тооцоолуурын санах ой болон хурд хангалттай их болсон учраас цагаа хэмнэ, Python.&lt;br /&gt;&lt;br /&gt;Хакеруудын түгээмэл хэрэглэдэг өөр хоёр хэл бол Perl ба Lisp юм. Практик ач холбогдол ихтэй учраас Perl сурах хэрэгтэй. Perl нь динамик вэб хийхэд их ашиглагддаг байсан хэл бөгөөд, одоо ч системийн удирдлагын скриптэд их хэрэглэгддэг хэвээр. Зарим зүйлийг Perl дээр хялбархан хийж болдог ба Python-ийг үүний оронд их хэрэглэх болсон. Гэхдээ өмнө бичигдсэн кодуудыг ойлгохын тулд Perl сурахад илүүдэхгүй.&lt;br /&gt;&lt;br /&gt;Lisp -ийг сурах шалтгаан бол арай өөр. Түүнийг ойлгосны дараа бүх учрыг ухаарах болно. Энэ хэл бол програмчлалийг бусад хэлүүдээс эрс өөрөөр тусгасан байдаг бөгөөд түүнийг сурснаар бусад хэлүүдээс олж авахгүй зүйлийг ойлгож авна. Тэр туршлага нь дахин хэзээ ч Lisp хэрэглэхгүй байсан ч, сайн програмчин болоход хэрэг болно.&lt;br /&gt;&lt;br /&gt;Эдгээр таван хэлийг бүгдийг нь сурчихвал сайн. Гэхдээ програм хэрхэн бичихийг энд бүгдийг заах боломжгүй - энэ бол маш хэцүү зүйл. Ямар ч байсан програм бичихийг номноос юмуу, курс дамжаанд сурдаггүй гэдгийг баттай хэлье. Дадлага хийж програм бичиж, олон сар жилээр тооцоолуурын ард сууж, алдаж онож байж сурдаг юм.&lt;br /&gt;&lt;br /&gt;Програмчлалын хэл сурна гэдэг нь ерөнхийдөө хүний хэл сурахтай төстэй. Уншаад, бичээд, ярьж байж хэл сурдаг бол програмчлалын хэлийг a)код уншаад, b)код бичиж сурна. Програм бичиж сурах хамгийн сайн арга бол : Мастеруудын бичсэн кодыг уншаад, өөрөө жаахан бичиж үзээд, Мастеруудын бичсэн кодыг уншаад арай жаахан их бичээд, гэх мэтээр явсаар өөрөө програмаа бичдэг болтол үргэлжилэх юм.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Нээлттэй эх бүхий Юникс системүүдээс хэрэглэх&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Хакеруудын эзэмших ёстой нэг гол чадвар бол Юникс системийг эзэмшиж, хэрэглэж сурах юм. Линукс, BSD ч юмуу ямар нэг нээлттэй эх бүхий юникс үйлдлийн систем суулгаад, түүнийгээ хэрэглэж сур. Яагаад заавал Линукс гэж, Виндовс байж болохгүй юу гэвэл : Үйлдлийн системийн эх код нээлттэй байснаар хүссэн зүйлээ үзэж, сурж, өөрчилж, турших боломжтой болно. Виндовс гэх мэт хаалттай код бүхий үйлдлийн систем дээр хакер болно гэвэл дуулга өмсөж байгаад бүжиглэхтэй адил.&lt;br /&gt;&lt;br /&gt;Юникс бол Интэрнэтийн үйлдлийн систем. Ийм учраас юниксгүйгээр интэрнэт хакер байж чадахгүй бөгөөд, ийм ч учраас хакерийн ертөнц юниксийн эргэн тойронд цэцэглэдаг. Мөн юникс төрлийн систем дээр програмчлалын сайн багаж хэрэгслүүдийг хэрэглэх, судлах боломж илүү их байдаг.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;3. Вэб ашиглаж, хийж сурах&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Хакеруудын хийсэн зүйлсийн ихэнх нь нүдэнд үзэгдэлгүйгээр үйлдвэрийн газрууд, офисийн амьдрал, их сургуулийн лабораториудад нөлөөлж байдаг бол Вэб өөр юм. Вебийг юм бүхэнд хэрхэн нөлөөлж өөрчилж байгааг улс төрчид ч хэлж байна. Хакер болохын тулд вебийг зөвхөн толилуурдах, мэдээлэл олж авахад бус мэдээлэл солилцоход, хийсэн зүйлээ бусадтай хуваалцахад ашиглаж сурах хэрэгтэй. Вебийн хэл болох HTML -ийг сур, Цаашлаад XHTML үз. Эхлээд юуны түрүүнд өөрийн танилцуулга хуудсыг хийх нь зүйтэй. Гэхдээ хуудсан дээрээ үнэ цэнэтэй агуулга тавих нь хамгийн чухал. Хэнд ч хэрэггүй вэбүүд интэрнэтээр дүүрэн бий, тийм вэб хийгээд утгагүй, цагийн гарз. Өөрийн шийдсэн асуудал, хүнд хэрэгтэй, ялангуяа бусад хакеруудад хэрэгтэй зүйлийг вебээр дамжуулан бусдад түгээ.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Англи хэл&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Англи хэл бол Интернэтийн хэл. Хакерийн ертөнцтэй нэвтрэлцэхийн тулд Англи хэл зайлшгүй билээ. Төрөлх хэл нь нэгтэй ч, хакерууд хоорондоо ихэвчлэн Англи хэлээр харилцдаг болохыг тогтоосон буй. Англи хэл дээр техникийн үг хэллэгүүд төрдөг бөгөөд англи хэлнээс техникийн номыг орчуулах нь ихэвчлэн муутгах талтай байдгыг хэлэх юун.&lt;br /&gt;&lt;br /&gt;Тухайлбал Линус Торвалдс гэдэг Финланд залуу(Линуксийг үндэслэгч) код доторх тайлбараа Англиар бичдэг. Дэлхийн бөмбөрцгөөр тархсан Линукс хөгжүүлэгчдийн сүлжээг бий болгоход түүний Англи хэлний чадвар нөлөөлсөн нь гарцаагүй. Иймд англиар зөвхөн ярих бус, бичиж сурах нь чухал. Англиар тэгж их ярихгүй байж болно, харин бичих нь бол зайлшгүй.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;Соёл&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Ихэнх соёлуудын адил Хакерын соёл нь нэр алдар дээр тулгуурладаг. Гэхдээ хир их мөнгө төгрөг хандивласнаараа бус, хир сайханаараа бус, бусдыг хүссэн зүйлээр нь хангасанаараа бус, харин хир ихийг харамжгүй түгээснээр үнэлэгддэг.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Нээлттэй эх бүхий програм хангамж хийх&lt;/span&gt;. Бусад хакеруудад хэрэгтэй, сонирхолтой, нээллтэй эх бүхий прогам бичих бол хамгийн түгээмэл, уламжлалт хандлага юм. Өөрийн чинь програм хир сайн, хир өргөн тархацтайгаар нэр хүнд чинь үнэлэгдэнэ. (Ихэнх хүмүүс үнэгүй програм, нээлттэй эх бүхий програм 2-ийг ялгадаггүй тал бий. Эх нь хаалттай бол үнэгүй ч байсан хакерууд хэрэглэдэггүй бөгөөд, ер нь хаалттай эх бүхий програмууд үнэтэй байдаг.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Нээлттэй эх бүхий програм хангамжийг тэстлэхэд туслах&lt;/span&gt;. Програм хангамжын хөгжүүлэлтийн ихэнх цаг тэстлэх, дэбаг хийхэд зарцуулагддаг. Ийм учраас нээлттэй эх бүхий програм хангамжийн эхний рилийзүүдэд тэстэрүүд маш ихээр хэрэгтэй байдаг. Хэрвээ нээлттэй эх рүү орж эхлэж байгаа бол програмын шинэ хувилбаруудыг хэрэглэж алдаа сэв олоход туслах юм бол маш их тус хүргэж байгаа гэж үзнэ.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Хэрэгцээтэй мэдээллийг цацах&lt;/span&gt;. Хүн ямар нэг байдлаар хэрэг болохуйц мэдээллийг вэбээр ч юмуу тараах нь мэдлэгэжсэн эриний хакеруудын үүрэг. Зөвхөн энгийн мэдээлэл тавиад зогсохгүй, асуултад хариулах, зөвлөгөө гаргах гэх мэтээр хэн нэгэнд хандсан, үнэхээр хэрэг болох мэдээлэл чухал.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Дэд бүтэцээр дэмжих&lt;/span&gt;. Хакерийн соёл бол сайн дурын үндсэн дээр явагддаг. Сервэрийн хостинг, мэйл листийн удирдлага тордлогоо, хэлэлцүүлгийн сайт ажиллуулах, архивийн сайт ажиллуулах гэх мэт хүнд шууд ажиглагдахгүй боловч хэн нэг нь хийхгүй бол болохгүй ажлууд байдаг. Эдгээрийг хэн нэг нь хийх л ёстой.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Хакерийн соёлыг дэлгэрүүлэх&lt;/span&gt;. Эцэст нь хакерийн соёлыг дэлгэрүүлэхэд хувь нэмрээ оруулж болно. (Жишээлбэл энэ мэтээр хакерийн тухай таниулах :-)) Хакеруудад толгойлогч гэж байдаггүй, харин өөрийн баартууд, хөгшчүүд, гавьяатнууд, түүхчид бий. Гэхдээ хэт их алдар нэрээ дуурсгахыг хичээх нь аюултай, харин түүний оронд өөрийн чадварыг хөгжүүлж, гадагш түгээх мэдлэг мэдээллээ арвижуулах нь дээр.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Стилүүд&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;Хакеруудад түгээмэл байдаг стилүүдэд дараах зүйлс байж болох.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Төрөлх хэл дээрээ сайн бичдэг&lt;/span&gt;. Ихэнх прогамчид төрөлх хэл дээрээ тийм ч сайн бичдэггүй бол ихэнх хакерууд сайн бичдэг.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Тулааны урлаг&lt;/span&gt;. Тулааны урлагыг зодолдохолд хэрэглээд байхгүй ч, азиас гаралтай тулааны урлагуудын сэтгэлгээний зарчим нь хакеруудынхтай дүйдэг.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Бясалгал&lt;/span&gt;. Хакеруудын дунд Зэн их дэлгэрсэн байдаг. Гэхдээ бусад бясалгалын салбарууд ч зүгээр байх.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Хөгжим&lt;/span&gt;. Хөгжим сонсож сурах. Хөгжмийн аль нэг урсгалыг сонирхох. Хөгжмийн ямар нэг зэмсгээр тоглох.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;&lt;span&gt;Цээрлэвэл зохих зүйлс&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Нээх сүртэй, эсвэл ойлгомжгүй нэр сонгож хэрэглэхгүй байх&lt;/span&gt;. Хакерууд өөртөө бардам байдаг бөгөөд, хийсэн зүйлийнхээ хариуцлагыг даах чадвартай. Иймээс тэд кракерууд шиг d00dz гэх мэт нэр ашигладаггүй.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Хэлэлцүүлэг юмуу, мэйл листээр хэрүүл шуугиан дэгдээхгүй байх&lt;/span&gt;. Шудрага бөгөөд шулуун бай, хэн нэг нь гоочлох гээд байвал, тайван хандаж, хөгийн зүйлд цагаа бүү гарзад.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Өөрийгөө хакер гэж өргөмжлөхгүй байх&lt;/span&gt;. Ийм хүмүүс ихэнхдээ хакер биш байдаг бөгөөд, хакерууд үүнд дургүй. Бусад хүмүүс ч тэднийг хакер гэж дуудахад дургүй. Гол учир нь нэрэндээ биш гэдгийг ойлго.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Баахан алдаатай мэйл бичихгүй байх&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://www.catb.org/%7Eesr/"&gt;Raymond&lt;/a&gt; ахын зөвлөгөө ийм байна, сонирхож байвал &lt;a href="http://www.catb.org/%7Eesr/faqs/hacker-howto.html#FAQ"&gt;үргэлжлэлийг&lt;/a&gt; нь уншаарай.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Хакерууд хэрхэн ажилладаг вэ?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;Хэрэв та менежер байгаад хэн нэг хакерийг ажилд авсан бол нэг бол маш их ажил хийлгэнэ, үгүй бол юу ч хийлгэж дөнгөхгүй. Дунд зэрэг гэж үгүй. Учир нь хакерууд ажлыг мөнгөнд татагдаж хийдэггүй, сонирхолтой зүйлээ л хийнэ. Сонирхлоороо хийж байга юмаа хэнээр ч заалгахгүй, чанарын өндөр түвшинд, хурдан хугацаанд хийдэг. Эндээс л нэг хүн арав, зуун хүний ажлыг хийдэг тухай яриа гарсан биз. Ажлын орчны хувьд ихэнх хакерууд гэртээ ажиллах дуртай, учир нь түүний ажил бол зөвхөн ажил биш амьдралынх нь хэв маяг болсон байдаг - идэж ууж, амарч, бясалгаж байхдаа ажилладаг. Иймд хэт хатуу дүрэм журам, чимээ шуугиантай орчинд ажиллах дургүй, чөлөөтэй, тайван, тухлаг орчин эрхэм чухал байдаг гэнэ.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Төгсгөл&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;Хакер болно гэдэг амаргүй, гэхдээ жинхэнэ хакер болоход заавал олон жил шаардлагагүй ч байж болох. Хамгийн гол шинж чанар болох, нээлттэй, эрх чөлөөтэй байдал болоод өөрийгөө хөгжүүлэх ур чадварт шүтсэн хадлага, цөхрөлтгүй зүтгэл нь л тэднийг үнэ цэнэтэй болгож байдаг бизээ.&lt;br /&gt;&lt;br /&gt;Жинхэнэ хакерийг олно гэдэг амаргүй, олсон ч удирдаж жолоодоно гэдэг хялбар биш. Учир нь тэд бол урчууд, онгодоороо туурвигчид, түүнийг нь жолоодоход тун хэцүү. Харин тэднээс гарах санаа, сонирхол, ажлын таашаал дээр нь тулгуурлаад зөв зохицуулалт хийж гэмээнэ  аль аль тал асар их ашиг тусыг хүртэж чадах нь гарцаагүй.&lt;br /&gt;&lt;br /&gt;Эх сурвалжууд&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.catb.org/%7Eesr/faqs/hacker-howto.html"&gt;How To Become A Hacker &lt;/a&gt;- Хэрхэн хакер болох вэ?&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.catb.org/jargon/html/meaning-of-hack.html"&gt;The Meaning of ‘Hack’&lt;/a&gt; - Хак гэдэг хаанаас үүссэн ямар утгатай болохыг түүхэн баримттай нь тайлбарлсан.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.paulgraham.com/gh.html"&gt;Great Hackers&lt;/a&gt; - Хакерууд буюу мэргэшсэн програмчидын тухай Поллын бичвэр.&lt;/li&gt;&lt;li&gt;&lt;a href="http://samizdat.mines.edu/howto/HowToBeAProgrammer.html"&gt;How to be a Programmer: A Short, Comprehensive, and Personal Summary&lt;/a&gt; - Сайн програмчин болоход юу сурах вэ?&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.plethora.net/%7Eseebs/faqs/hacker.html"&gt;The Hacker FAQ&lt;/a&gt; - Ажилтан тань хакер бол түүнтэй хэрхэн ажиллах тухай асуултуудын хариу.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-6934949688391681589?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/6934949688391681589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=6934949688391681589' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6934949688391681589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6934949688391681589'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/04/blog-post_10.html' title='Хакэр гэж хэн бэ?'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-8035835592183233191</id><published>2007-05-08T10:00:00.000+08:00</published><updated>2007-05-08T10:59:09.085+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>MySQL -ийн тухай хэдэн зүйл</title><content type='html'>Үнэгүй, тэгсэн мөртлөө боломжын хурдан, боломжын том өгөгдлын баазыг удирдах  чадвартай учраас MySQL өргөн хэрэглэгддэг болов уу. MySQL хэрэглэх анхан шатны хичээлүүд дээр тэр болгон байхгүй ч,  анхаарвал зүйтэй гэж бодсон хэдэн зүйлийг бичье.  Дараах зүйлсийг мэдэхгүйгээсээ болж олон цагийг үрж, мэдэж аваад олон удаа хэрэглэсэн учраас хэн нэгэнд хэрэг болж юуны магад гэж саналаа.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Бааз үүсгэхдээ&lt;/span&gt;&lt;br /&gt;Хэрэв монгол текст бааз дотроо хадгалах бол:&lt;br /&gt;&lt;pre&gt;create database mydb character set utf8 collate utf8_general_ci;&lt;/pre&gt; гэж үүсгэхээ мартав.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Key lenght&lt;/span&gt;&lt;br /&gt;MySQL -д  key lenght гэдэг ойлголт байдаг. Энэ нь түлхүүрийн урт юм. Одоогоор 1000 байтаас ихгүй байна гэсэн хязгаарлалттай. Энэ нь латин character set-тэй хүснэгтийн хувьд 1000 тэмдэгт, харин юникод талбаруудтай хүснэгтийн хувьд хэд гэж бодож байна? Юникод нь 2 байт учраас 500 тэмдэгт байна гэвэл, үгүй юм байна. MySQL-д юникод тэмдэгт 3 байт эзэлдэг учраас 333 байна.  Бааз үүсгэхдээ түлхүүрийн уртыг тооцоолох хэрэг гарвал үүнийг анхаарах хэрэгтэй.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Repair table&lt;/span&gt;&lt;br /&gt;Заримдаа table эвдэрдэг. Энэ нь ихэвчлэн тог тасалдаж гэнэт унтрах, үйлдлийн системийн доголдол зэргээс болдог. Ийм тохиолдолд хамгийн түрүүнд авах арга хэмжээ бол эвдэрсэн table-ийн файлаа(юмыг яаж мэдэх вэ) өөр газар хуулж авч байгаад  &lt;pre&gt;repair table mytable;&lt;/pre&gt;  гээд үзэх хэрэгтэй. Ихэнх тохиолдолд засагдах болно.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-8035835592183233191?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/8035835592183233191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=8035835592183233191' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8035835592183233191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8035835592183233191'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/05/mysql.html' title='MySQL -ийн тухай хэдэн зүйл'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-2191700557732357667</id><published>2007-04-04T18:42:00.000+08:00</published><updated>2007-04-26T11:47:10.703+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development process'/><title type='text'>Хөгжүүлэлтэд юу зайлшгүй чухал вэ?</title><content type='html'>&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;Саалиа бэлдэхээр&lt;br /&gt;Саваа бэлд&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Улс орон, хот суурин хөгжихийн тулд зам тээвэр, холбоо харилцаа, ус, цахилгаан дулаан зэрэг дэд бүтэц байгаад, мөн дээр нь сайн хууль дүрэм зайлшгүй хэрэгтэй. Үүнтэй адилаар програм хангамжийг хөгжүүлэхэд ч өөрийн гэсэн  дэд бүтэц болоод дүрэм журам чухал. Ингээд хөгжүүлэлтэд зайлшгүй хэрэгтэй зүйлсийг өөрийн бодож байдгаар тайлбарлахыг оролдьё.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ажлын хуваарь буюу бодит байдал&lt;/span&gt;. Ямар ажлыг хэдийд, хэн хийх, хэдийд ямар ямар зүйл бэлэн байх ёстойг тодорхойлсон ажлын хуваарийг боловсруулах, явцыг хянах дэд бүтэц зайлшгүй. Энэ нь жирийн хүснэгт ч байж болно, тусгайлан хөгжүүлсэн систем ч байж болно эсвэл нээлттэй эх бүхий програм хангамж ч байж болно. Хэн ямар ажлийг хийж байгаа, ажил хир урагшилж байгааг &lt;span style="font-weight: bold; font-style: italic;"&gt;бодитоор&lt;/span&gt; харж болдог л байх ёстой. Эндээс үзэхүл, эхний дүрэм бол төлөв байдлыг бодитоор хөтлөж явах ёстой гэсэн зарчим юм. Төлөв байдал гэдэг нь аль нэг ажлийн явц хэдэн хувь байгаа, эсвэл кодон дээр гарсан алдааны тоо, тэр нэг алдааны шийдэгдсэн болоод тэстлэгдсэн эсэх, кодын рилийзийн явц гэх зэрэг орно.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Кодын удирдлага түүхийг өгүүлнэ&lt;/span&gt;. Програмын кодын удирдлага гэдэг маань код дээр олон хөгжүүлэгчид зэрэг ажиллах нөхцлийг бүрдүүлэхийн зэрэгцээ, кодын үүх түүхийг хадгалж байдаг. Хэн нэгний бичсэн код алга болохгүй байх, алдаатай зүйл гарсан бол түүнийг буцааж өмнөх байдалд оруулах зэрэг нь эх кодын удирдлагын системийн үүрэг. Ийм зорилготой CVS, Subversion гэх мэт нээлттэй эх бүхий системүүд түгээмэл хэрэглэгддэг. Кодын удирдлагын системийг зөвхөн эх кодыг хадгалахад бус, тохиргооны файл, төрөл бүрийн скрипт, тэкстэн өгөгдөл гээд бүх л төрлийн текстэн эхүүдийг удирдахад хэрэглэх зориулалттай. Яагаад зүгээр код биш эх код гэдэг гэхээр, ажиллах програмыг шууд бинари байдлаар хийчихдэггүй, тэкст хэлбэрээр эх кодыг бичиж байж түүнээсээ ажиллах програмыг компайлдан гаргаж авдаг. Програмыг өөрчлөх болвол бинари програмыг өөрчлөхгүй, эх кодыг өөрчилнө. Код бол хамгийн анхны програмчин хүний гараас гарч байгаа бүтээгдэхүүн учраас эх гэсэн тодотголыг авдаг. Эх кодоос модуль үүсгэнэ, багцуудыг гаргаж бүрдүүлнэ, бинари програм компайлдана - код бол тэдгээрийн эх үүсгэвэр нь юм. Эх код нь текст хэлбэртэй учраас кодын удирдлагын системүүд текст файлыг хамгийн оновчтойгоор зохицуулан хөтлөж чадна. Тухайлбал кодын дараагийн хувилбар дээр ямар мөрүүд нэмэгдэж ямар мөрүүд хасагдав, юу өөрчлөгдөв гэдгийг бүртгэхэд зөвхөн өөрчлөгдсөн хэсгүүдийг л нэмж хадгална гэсэн үг. Харин бинари файл бол тэгж аль хэсэгт нь өөрчлөлт орсныг тэмдэглэхэд төвөгтэй. Ийм учраас эх кодын удирдлагын систем дээр бинари файл хадгалах нь тохиромжгүй байдгийг анхаарууштай. Түүний оронд бинари файлуудыг файл сэрвэр дээр хадгалж, рилийзүүдээр зохицуулах нь оновчтой.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Алдааны хяналт буюу сургамж&lt;/span&gt;. Код дээр гарсан алдаа болоод, тулгарч байгаа асуудлуудыг ямар нэгэн зохион байгуулалттайгаар бүртгэн хянах зайлшгүй шаардлагатай. Алдаа сэв хэрхэн илэрсэн, алдаа шийдэгдсэн эсэх, хэн түүнийг хариуцаж засварлах, яаж засварлах, засвар хийгдсэн бол дахин нягталж шалгасан эсэх гээд алдааг анх олохоос эхлээд засварлагдаж дуусталх шат дамжлагууд хамрагдаж байхийм. Алдааг хянаснаар ямар нэгэн сэв согог засагдалгүй үлдэх, эзэнгүйдэх, удаашрах зэргээс сэргийлэхээс гадна, өнгөрсөн алдаан дээрээсээ суралцаж дахин давтахгүй байж, өөрийгөө шинжихэд чухал үүрэгтэй.  Иймд ямар нэгэн алдаа, асуудал илэрсэн тохиолдолд тухайн алдааг засаж байж дараагийн кодоо бичиж эхлэснаар тухайн төрлийн алдааг дахин давтахгүй байх юм. Мөн ингэхийн бас нэг давуу нь, тухайн алдаатай хэсгээс улбаалаад бусад дагавар алдаанууд гарч болно, эсвэл тухайн асуудал шийдэгдсэнээр өөр бусад асуудлууд шийдэгдэж болно. Ер нь алдаа сэвүүдийг харж байхад, хоорондоо холбоотой байх нь элбэг шүү дээ.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Тестийн баг буюу сүүлийн тэмээ&lt;/span&gt;. Тестийг хийнэ гэдэг програмыг бичихээс дутуугүй мэдлэг чадвар, туршлага шаардах ажил. Програмыг шинэков бичиж чадна, тестийг бол чадахгүй, хийсэн ч алдаа олох магадлал бага. Ямар ч алдаа агуулж болох програмыг тестлэж, гажиг сэвийг олж тодруулна гэдэг ихээхэн мэдлэг чадвар шаарддаг юм. Ингэхээр тестийг мэргэшсэн баг хийх ёстой бөгөөд, програмын чанарын баталгааг тестийн баг баталгаажуулдгаараа чухал үүрэгтэй. Тестийн багийг тусгайлан байгуулж, бэлдэх, дасгалжуулах, мэргэшүүлэх хэрэгтэй.  Сүүлийн тэмээний ачаа хүнд.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Багажийн дархад буюу автоматжуулагчид&lt;/span&gt;. Монгол дархчууд удам залгах хүндээ дархны багажаа л өвлүүлдэг байж, ур ухааныг ажлаа хийж байхад хажуугаас нь хараад, ажиглаад, сонирхсон юмаа асуугаад, өөрийн авьяасаар бий болгодог байжээ. Дараагийн хүн өвлөж авсан багажыг өөрөө сэлбэж засах ба өөрийн хийх зүйл, урлалд таарч тохирох багажийг нэмж хийсээр дараагийн үед багажны төрөл нэмэгдээд очдог юмсанж. Ингэхээр дархан хүний бүтээлийн хийц нь ур ухаанаас гадна, хэрэглэж байгаа багажаас нь хамааралтай бөгөөд, сайн багажтай, таарч тохирсон багажыг хийж чаддаг дархан сайн юм хийх нь мэдээж. Хөгжүүлэлтийн баг ч, тестийн баг ч, ер нь бусад бүх багуудын хувьд түүлшмит буюу багажийн дархан нь дээрхтэй адилаар хөдөлмөрийн бүтээмж, чанарт шууд нөлөөлнө. Багажийн дархны үүрэг бол багийн гишүүдийг хэрэгтэй багажаар нь хангаж өгөх юм. Хөдөлмөрийг хөнгөвчлөж чадах, хэрэглэхэд хялбар багаж дархалж автоматжуулахаас гадна шинэ технологи судалж, эрэл хайгуул хийж бусдадаа танилцуулж байх учиртай. Хөгжүүлэлтийн багийн түүлшмит автомат код үүсгэгч, төрөл бүрийн хөрвүүлэгч хийж байхад, тэстийн багийн түүлшмит автомат тестийн скриптүүд, симуляторууд хийж суух жишээтэй. Багуудын түүлшмитүүд хоорондоо уялдаа холбоотой байснаар хөгжүүлэлтэд ч, тэстэд ч хэрэглэгдэх багаж хийх болно. Гэхдээ мэдээж юм бүхнийг багажаар, автоматаар хийх гэх нь утгагүй юм. Багаж бол гарын аясаар хөдөлж, санасан бүхнээ хэрэгжүүлэхэд туслах л үүрэгтэй. Жишээ нь бүрэн автомат тэст байх юм бол, тэр тэстийг үнэхээр зөв гэдэгт яаж үнэмших билээ?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Шуурхай байгуулалт&lt;/span&gt;. Байгуулалт(build) гэдэг маань эх кодоос програмыг гаргаж авахыг хэлж байна. Байгуулалт хийхэд ant, make гэх мэт хэрэгслүүдийг түгээмэл ашигладаг. Нэг командаар бүх кодыг компайлдаад ажиллах орчинг бүрдүүлж, тохиргооны файлуудыг хуулаад, цааш бүрэн ажиллах програмыг суулгахад юу хийгдэх ёстой тэр бүгдийг хийчихдэг байхаар байгуулалтын скриптыг хийх ёстой юм. Автоматаар өдөр болгон, эсвэл цаг тутам, эсвэл кодонд өөрчлөлт оруулах бүртээ байгуулалтыг цаг алдаж, зүтгэл гаргалгүйгаар хийдэг, байгуулалтын үед гарсан алдааны мэдээлэл автоматаар илгээгддэг байвал сая байгуулалт гэж үйлдлийг зүй ёсоор хэрэгжүүлж байгаа нь тэр. Ганц архивласан файл юмуу, нэг директори хуулаад л нэг команд ажиллуулахад орчиний тохиргооноос авахуулаад бүх зүйлс бэлэн болж програм ажиллах хэмжээнд байгуулалт хийгдэх ёстой.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Цор ганц, бүгдэд ойлгомжтой спек&lt;/span&gt;. Хийх зүйлийн үзүүлэлт, үүрэг функц, орчин нөхцөлийн тодорхойлолт, хэн хэрэглэх, хэрхэн хэрэглэгдэх, техникийн нөхцөлүүд, хурд хүчний шаардлагууд гээд бүх мэдээллийг боломжын хирээр сайн цуглуулж бүх хөгжүүлэгчид олж үзэх боломжтой ил байрлуулах хэрэгтэй. Спек дээр ялимгүй өөрчлөлт орох бүрт баримтыг шинэчлээд, нийтэд мэдэгдэж байх дүрэмтэй. Ямаршуу зүйл хийх гээд байгаа нь хүн бүрт тодорхой байх ёстой юм. Ямаршуухан ч биш, бүр яг тодорхой байх ёстой. Ингэснээр бүгд ижил ойлголттой байж чадна. Өөр ойлголттой хүмүүс нэг нь ус руу зүтгээд, нэг нь тэнгэр лүү дүүлээд, нэг нь газраар гүйх гээд байдаг 3-н амьтан шиг үр дүн гаргахгүй хүчээ тарамддаг үлгэртэй. Спек зарим газраа тэр дороо мэдэгдэхгүй явцын дунд тодорхой болж болох ч, тэдгээр зүйлсийн одоохондоо тодорхой бус гэдэг нь тодорхой мэдэгдэж байх, хэзээ тодорхой болох нь мөн тодорхой хязгаартай байвал сайн. Мэдээжийн гээд аливаа зүйлийг алгасч болохгүй. Тэдгээр мэдээжийн юмс л тодорхой бус зүйл болж үлддэг.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Рилийзийн удирдлага, төлөвлөлт&lt;/span&gt;. Програмаа рилийз болгож гаргах төрөл бүрийн аргууд байдаг. Альфа, Бета, Пре гэх мэтчилэн шатуудыг дамжсаны эцэст жинхэнэ тогтвортой рилийзийг гаргах нь ерөнхийдөө түгээмэл. Рилийз гаргах цикл, дүрэм журам нь тухайн програм хангамжын чанарт ихээхэн нөлөөтэй байдаг. Иймд сайн програмыг тогтвортой хөгжүүлэхийн тулд оновчтой рилийзийн цикл сонгож, дүрэм журам тогтоож хатуу баримтлах хэрэгтэй. Тухайлбал, шинэ шинж чанаруудыг зөвхөн альфа рилийзэд, вета рилийзэд зөвхөн алдааны засваруудыг гэх мэт байж болно. Ер нь рилийз гэдэг нь хэдийд ямар шинж чанарууд болон сайжруулалтуудыг нэмж оруулах, хэдийд алдаанууд засагдаж дууссан байхыг зохицуулж байх ёстой. Рилийзтэй хамт зайлшгүй дагалдах ёстой зүйл бол өөрчлөлтийг лог(change log), болон рилийзийн тайлбар(release notes) болно.&lt;br /&gt;&lt;br /&gt;Ингээд миний хувьд програм хангамжын хөгжүүлэлтэд зайлшгүй шаардлагатай зүйлс гэвэл, хүний нөөцөөс бусад нь ийм байна. Та бүхэн өөрсдийн санаа болон, нэмэлтийг ирүүлбэл маш их хэрэг болно гэдгийг хэлье.&lt;br /&gt;&lt;br /&gt;Энэ нь тусдаа зүйл гэлээ ч, эцэст нь дурдахгүй өнгөрч чадахгүй нэг юм бол, мэдээж, гар нийлж нэгэн баг болж ажиллах авияаслаг програмчид, мундаг админууд, чадварлаг архитектурчид, овсгоотой менежерүүд чухлаас гадна тэднийг хүч сэлбэх, удмыг залгах хүсэл эрмэлзэл, эрч хүч дүүрэн шинэ залуучууд, тэднийг сургах, хөгжүүлэх, өөдлөн дэвшүүлэх, мэдлэг чадварыг чөлөөтэй нэвтрэлцүүлэх таатай орчин юунаас ч чухал билээ.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-2191700557732357667?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/2191700557732357667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=2191700557732357667' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2191700557732357667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2191700557732357667'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/04/blog-post.html' title='Хөгжүүлэлтэд юу зайлшгүй чухал вэ?'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-4219186218305046252</id><published>2007-03-16T16:59:00.001+08:00</published><updated>2009-04-28T11:48:57.546+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='english-mongolian'/><category scheme='http://www.blogger.com/atom/ns#' term='stardict'/><category scheme='http://www.blogger.com/atom/ns#' term='dictionary'/><category scheme='http://www.blogger.com/atom/ns#' term='babylon'/><title type='text'>Babylon -ий толийг Stardict уруу хөрвүүлэх</title><content type='html'>Виндовсын орчинд &lt;a href="http://www.babylon.com/"&gt;Babylon&lt;/a&gt; гэж сайн толь бичиг байдаг билээ. Энэ толь нь хэрэглэхэд хялбар бөгөөд маш олон &lt;a href="http://www.babylon.com/gloss/glossaries.php"&gt;толь бичигтэй&lt;/a&gt;, гэхдээ үнэтэй. Өөрөөр хэлбэл энэ толийг зүй ёсоор хэрэглэхийн тулд мөнгө төлөх шаардлагатай гэсэн үг.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stardict.sourceforge.net/index.php"&gt;Stardict&lt;/a&gt; нь Linux, FreeBSD, Solaris, Win32 -бүгдэн дээр нь ажилладаг нээлттэй эх бүхий толь бичгийн програм юм. Мөн л нээлттэй эх бүхий &lt;a href="http://stardict.sourceforge.net/Dictionaries.php"&gt;төрөл бүрийн&lt;/a&gt; толь бичгүүдтэй. Гэхдээ толь бичгийн сан нь арай Babylon-д хүрэхгүй, тухайлбал монгол хэлтэй толь бичиг байхгүй байсан юм. Тэгвэл Babylon-оос нээлттэй формат руу хөрвүүлдэг &lt;a href="http://freshmeat.net/projects/dictconv/"&gt;dictconv&lt;/a&gt; гэдэг програмын тусламжтайгаар Babylon-ий Англи-Монгол толийг stardict формат руу хөрвүүллээ.&lt;br /&gt;&lt;br /&gt;Хөрвүүлсэн файлыг &lt;a href="http://www.geocities.com/ochqoo/en-mn.tar.gz"&gt;эндээс&lt;/a&gt; авч болно. Татаж авсан толио   линукс дээр бол &lt;span style="font-style: italic;"&gt;/usr/share/stardict/dic&lt;/span&gt; дотор, Виндовс дээр бол &lt;span style="font-style: italic;"&gt;C:\Program files\stardict\dic\&lt;/span&gt; директори дотор задлаад stardict-ээ ахин ачаалахад шинэ толь нэмэгдсэн байх болно.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-4219186218305046252?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/4219186218305046252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=4219186218305046252' title='22 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/4219186218305046252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/4219186218305046252'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/03/babylon-stardict.html' title='Babylon -ий толийг Stardict уруу хөрвүүлэх'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-1048371385012185209</id><published>2007-03-10T19:34:00.000+08:00</published><updated>2007-03-15T12:29:40.147+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='multiple booting'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Олон үйлдлийн систем нэг дискэн дээр</title><content type='html'>Анх линукс үйлдлийн систем сонирхож эхлэж байхад виндовс суулгачихсан хард дискэн дээрээ нэмж линукс суулгах гэж нилээд юм болдог байв. Нэг удаа виндовсоо ахиж суулгах хэрэг гараад, тэгсэн чинь компьютерээ дахин ачаалтал үйлдлийн систем сонгодог цэс маань гарч ирэхгүй шууд виндовс ачаалагдаж байна. Ингээд эхний гашуун туршлага : виндовс бол найзархаг үйлдлийн систем биш, бусад үйлдлийн системтэй нэг дискэн дээр байхыг хүсдэггүй юм байна. Ингээд дараа нь өөр өөр линуксуудыг нэмж суулгаж туршив, бүр FreeBSD -г нөгөөдүүлтэйгээ хамт суулгаж үзэв. Ингэж олон үйлдлийн систем суулгахад дараалал чухал бөгөөд хамгийн найзархаг бусаас нь эхлэж суулгах хэрэгтэй юм байна гэдгийг ойлгов. Тухайн үед бол Windows-&gt;FreeBSD-&gt;Linux-ууд(Mandrake, RedHat, Debian, Slackware,...) байсан. Тэгэхээр хамгийн найзархаг нь Линукс болж таарч байна. Тэр үед эдгээр үйлдлийн системүүдийг бүгдийг нь хэрэглээд ч гавьсан юмгүй, суулгахаас цааш хэтрээгүй ч хатуу дискний партишнууд болоод үйлдлийн системийн ачаалагчдын талаар жаахан мэдлэгтэй болсон юм.&lt;br /&gt;&lt;br /&gt;Өнөөдөр бидний хамгийн түгээмэл хэрэглэдэг &lt;a href="http://en.wikipedia.org/wiki/IBM_PC-compatible"&gt;PC&lt;/a&gt; нь нэг хатуу дискэн дээр 4 өөс дээшгүй primary partition байхыг зөвшөөрдөг, учир нь дискний &lt;a href="http://en.wikipedia.org/wiki/Master_boot_record"&gt;мастер бүүт бичлэг&lt;/a&gt; дээр 4 өөс дээш паритишн бүртгэгддэггүй. Түүнээс олон партишн үүсгэхийн тулд 4 партишнийхаа аль нэгийг өргөтгөгдсөн партишн(extended partition) болгоод, өргөтгөгдсөн партишн дотроо дуртай тооны логик партишн(logical partition) үүсгэж болно. Логик партишний мэдээлэл нь өргөтгөгдсөн партишний эхний сектороос эхэлдэг. Компьютер асаад хатуу дискний хамгийн эхэнд байрлах бүүт сектороос үйлдлийн систем ачаалах кодыг ажиллуулдаг ба энэ нь секторт(512 байт) үйлдлийн систем ачаалах код, дискний партишнуудын мэдээлэл байрлах ёстой. Ер нь стандартаараа бол мастер бүүт дээр байрлах код нь идэвхтэй партишний эхний сектор луу үйлдлийн систем ачаалах эрхийг шилжүүлдэг. Ингэж партишны эхний сектор руу үйлдлийн систем ачаалах эрхийг шилжүүлэх үйлдлийг гинжин ачаалалт(chain-loading) гэдэг. Өмнө бидний цухас дурдсан олон үйлдлийн систем суулгасан үед хэрэглэдэг үйлдлийн систем сонгох цэс нь энэ эхний сектор дээр сууж байгаад цэснээс сонгох үед харгалзах партишн руу нь үйлдлийн систем ачаалах эрхийг шилжүүлнэ. Тэр үед сонгогдсон партишн дээр мөн үйлдлийн систем сонгох програм суусан байвал дахин тэндээсээ өөр үйлдлийн систем сонгосон ч болно, зүгээр тухай партишн дээрээсээ үйлдлийн системийг ачаалсан ч болно. Ингэхээр гинжин хэлхээс шиг дүр зураг бууж байгаа биз.&lt;br /&gt;&lt;br /&gt;Үйлдлийн систем болгонд ачаалагч програм байх бөгөөд эдгээр нь партишний эхний сектор дээрээс дуудагдаж, үйлдлийн системийн цөм хэсгийг эхлүүлнэ. Үйлдлийн систем ачаалагч болгонд тохиргооны файл бий.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.xs4all.nl/%7Elennartb/bootloaders/"&gt;Линуксийн&lt;/a&gt; хувьд &lt;a href="http://www.gnu.org/software/grub/"&gt;grub&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/LILO_%28boot_loader%29"&gt;lilo&lt;/a&gt; гэж үйлдлийн систем ачаалагчид түгээмэл хэрэглэгддэг. grub -ийг авч үзье. Ер нь үйлдийн систем ачаалагчыг мастер бүүт дээр аль болох суулгахгүйгээр, тухайн партишн дээр нь суулгавал зүгээр. Ингэснээр дараа нь мастер бүүт дээр өөр ачаалагч суулгахад эрх чөлөөтэй болно. Үүний тулд үйлдлийн систем ачаалагчаа  хуулж авах хэрэгтэй. Хуулж аваагүй тохиолдолд, линуксаа логик партишн дээр суулгачихсан бол линукс руугаа дахин орж болохгүй л болчих болов уу. Линукс маань мастер хатуу дискний 2-р партишн дээр суусан гэж үзвэл доорх командаар ачаалагчийг хуулж авч болно.&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;dd if=/dev/hda2 of=/mnt/usb/linux.bin bs=512 count=1&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Windows NT төрлийн үйлдлийн системийг ачаалагч нь &lt;a href="http://www.tburke.net/info/ntldr/ntldr_hacking_guide.htm"&gt;NT Loader&lt;/a&gt; гэж програм байдаг. Энэ програмын тохиргооны файл нь &lt;span style="font-style: italic;"&gt;boot.ini&lt;/span&gt; гэж файл бий. Түрүүн хуулж авсан файлаа С дискэн дээр хуулаад &lt;span style="font-style: italic;"&gt;C:\linux.bin="Linux"&lt;/span&gt; гэсэн мөрийг boot.ini файлд нэмж өгвөл бид линукс руугаа орох боломжтой болно. Мэдээж Виндовс байгаа партишнийг идэвхтэй(active partition) гэж үзэв.&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;[boot loader]&lt;br /&gt;timeout=10&lt;br /&gt;default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS&lt;br /&gt;[operating systems]&lt;br /&gt;multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP" /noexecute=optin /fastdetect&lt;br /&gt;C:\linux.bin="Linux"&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Хэрэв линуксийн партишн нь идэвхтэй бол Линуксийн ачаалагч дээрээ Виндовсийг тохируулж өгнө. grub -ийн тохиргоо нь &lt;span style="font-style: italic;"&gt;/boot/grub/menu.lst&lt;/span&gt; файлд байна. Дараах мөрүүдийг &lt;span style="font-style: italic;"&gt;menu.lst&lt;/span&gt; файлд нэмж өгнө.&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;title Windows XP&lt;br /&gt;root (hd0,3)&lt;br /&gt;makeactive&lt;br /&gt;chainloader +1&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Энд нэг анхаарах зүйл бол хатуу дискний нэрлэлт юм. grub дээр хатуу дискүүд hd0(master harddisk), hd1(slave harddisk) гэх мэт нэрлэгдээд, партишнууд нь (hd0, 3) гэх мэтээр илэрхийлэгдэнэ. (hd0, 3) гэдэг нь мастер хатуу дискний 4 дэх партишнийг илэрхийлнэ. Хэрэв линуксийг мастер хатуу дискэн дээр, виндовсыг дэд(slave) хатуу дискэн дээр суулгасан бол grub дээр нилээд юм бичиж өгөх хэрэгтэй, учир нь виндовс бол мастер хатуу дискэн дээрээс л ажиллана гэсэн амбицтай үйлдлийн систем юм.&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;title           Windows XP&lt;br /&gt;root            (hd1,0)&lt;br /&gt;savedefault&lt;br /&gt;makeactive&lt;br /&gt;map             (hd0) (hd1)&lt;br /&gt;map             (hd1) (hd0)&lt;br /&gt;chainloader     +1&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Энд map гэдэг командаар виндовсыг "зальдаж" байна.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/boot-blocks.html"&gt;FreeBSD&lt;/a&gt; дээр партишнийг slice -гэдэг. slice нь дотроо &lt;a href="http://en.wikipedia.org/wiki/BSD_disklabel"&gt;label&lt;/a&gt;-уудтай. label нь логик партишнтэй төстэй гэж ойлгож болно. FreeBSD суулгахын тулд нэг primary партишний нөөц хэрэгтэй. Хатуу дискэн дээрээ ямар ч партишнгүй хоосон зай үлдээж байгаад суулгана. Ингэхэд мастер бүүт бичлэг дээр нэг ширхэг primary партишн нэмэгдсэн байх ба тэр нь FreeBSD ийн slice юм. BSD -ийн ачаалагчыг мөн мастер бүүт дээр эсвэл өөрийнх нь slice дээр суулгаж болно. Ер нь бол slice дээр нь суулгах нь илүү уян хатан гэж зөвлөх байна.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Эх сурвалжууд:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://jaeger.morpheus.net/linux/ntldr.php"&gt;How to dual-boot Windows NT/2000/XP and Linux using NTLDR&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.geocities.com/epark/linux/grub-w2k-HOWTO.html"&gt;Dual-Boot Linux and Windows 2000/Windows XP with GRUB HOWTO&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.linuxselfhelp.com/gnu/grub/html_chapter/grub_4.html"&gt;How to boot an OS directly with GRUB&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://geodsoft.com/howto/dualboot/grub.htm"&gt;Dual and Multi Booting FreeBSD, Linux, and OpenBSD&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-1048371385012185209?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/1048371385012185209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=1048371385012185209' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/1048371385012185209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/1048371385012185209'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/03/blog-post_10.html' title='Олон үйлдлийн систем нэг дискэн дээр'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-1919545362613181072</id><published>2007-03-09T22:25:00.000+08:00</published><updated>2007-03-09T16:01:47.272+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='system design'/><category scheme='http://www.blogger.com/atom/ns#' term='reliability'/><title type='text'>Системийн найдвартай байдал</title><content type='html'>Саяхан блоггэр.ком дээр алдаа гарсан байсныг зарим хүмүүс анзаарсан байх. Пост оруулах хуудасны оронд HTTP 500 дугаар алдаа гарсан харагдсан.  Мөн эртээрхэн Яхоо мэсэнжэр 2-3 цаг орчим зогссон. Гэхдээ энэ явдлаа урьдчилан зарласан ба, системийн шинэчлэлтийн ажил байсан гэж тайлбарласан. Илүү ойрхон жишээ гэвэл Мобикомын шинэ жилийн түгжрэл, -гээд... Эдгээрийг дурддагийн учир бол Системийн найдвартай байдалын тухай авч үзэх гэсэн юм. Чанартай сайн програм хангамж нь алдаагүй зөв ажиллахаас гадна, осол доголдлын үед яс чанараа харуулдаг билээ.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Найдвартай байдал гэдэг нь : Систем өөрийн үүргийг өгөгдсөн нөхцөл байдалд, тодорхой хугацааны туршид доголдолгүйгээр гүйцэтгэж чадах магадлал юм&lt;/span&gt;. Ер нь 100% найдвартай систем байх боломжгүй. Гэхдээ маш өндөр түвшинд найдвартай байдлыг хангасан системүүд байж болох бөгөөд, тэдгээрийн зэрэглэл нь таван ес(99.999%-ийн найдвартай), зургаан ес(99.9999%-ийн найдвартай) гэх мэт тоогоор илэрхийлэгддэг.&lt;br /&gt;&lt;br /&gt;Тухайн системийг найдвартай эсэхийг шинжлэхэд юун түрүүнд системийн хаа нэг хэсэгт доголдол гарснаар систем бүхэлдээ зогсож болох газруудыг авч үздэг. Өөрөөр хэлбэл нэг цэгийн доголдол буюу single point of failure -уудыг судлана. Ингээд тухайн хэсэг доголдох эх шалтгаанууд юу байж болхыг судлаж, эдгээр шалтгаануудыг аль болох цөөлөх хэрэгтэй. Бүх шалтгааныг урьдчилан сэргийлэх боломжгүй учраас, тухайн хэсгийн эрсдэлийг дизайны түвшинд багасгах аргыг мөн хэрэглэдэг. Жишээ нь сүлжээний картыг нэмж суурилуулах, сэрвэрээ давхарлаж ажиллуулах гэх мэт шийдэл байж болно. Аль нэг сүлжээний карт/сэрвэр ажиллахаа байлаа гэхэд, бусад нь идэвхжиж, системийн хэвийн ажиллагаа үргэлжилсээр байна гэсэн үг.&lt;br /&gt;&lt;br /&gt;Системийн найдвартай ажиллагааны түвшинг &lt;a href="http://en.wikipedia.org/wiki/MTBF"&gt;MTBF&lt;/a&gt;(Mean Time Between Failure) буюу алдаа хоорондын хугацаа гэдэг үзүүлэлтээр илэрхийлэх нь элбэг. Гэхдээ иймэрхүү үзүүлэлт бол магадлал бодоод гаргасан тоо л юм, харин системийн найдвартай ажиллагааг бодитоор үнэмжинэ гэдэг өөрөө том асуудал байдаг. Сүлжээний холболтын найдвартай эсэхийг бол нэг картаа сүлжээнээс салгаад үзчихэж болно. Тэгвэл, гурван жил тасралтгүй ажиллах ёстой системийн найдвартай байдлыг яаж үнэмжших вэ? Гурван жил ажиллуулж турших уу? Сансрын хөлгийн найдвартай ажиллах эсэхийг сансарт хөөргөж тестлэнэ гэвэл асар их зардал гарна гэх мэт.. Иймэрхүү тохиолдолд тестийг дэд хэсгүүдээр нь маш нарийн хийх ч юмуу, эсвэл хиймэл орчинд туршаад бодит ертөнцөд гаргах нь бий. Гэтэл маш нарийн тооцоолж хийсэн ч, туршилт хийлгүй хөөргөнө гэдэг аз туршсан хэрэг болно - зургаан естэй систем ч санаанд ороогүй, тооцоологдоогүй үлдсэн жижиг зүйлээс болж осолдсон тохиолдол байдаг.&lt;br /&gt;&lt;br /&gt;Системийн Найдвартай байдал гэдэг нэгэн бичлэгээр тоймлож барахгүй сонирхолтой, өргөн хүрээтэй сэдэв тул ингээд өндөрлөж, эх сурвалжуудыг тоймлон үлдээе.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Эх сурвалж:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Reliability_engineering"&gt;Reliability engineering&lt;/a&gt;. Найдвартай байдлын инженерчлэлийн тухай Википедиа тайлбар дээр тун ойлгомжтой бичсэн байна.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.jiploo.com/blog/99999-or-five-nines-uptime/"&gt;99.999 or Five Nines Uptime&lt;/a&gt;. Таван ес нь бодит байдал дээр хангалттай байдаг юм бол? Системийн ажиллагаа бүтэн жилийн хугацаанд хэдхэн минут тасалдахад л хэрэглэгчийн итгэл 99 хувиар унах магадлалтай гэнэ.&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Byzantine_failure"&gt;Byzantine fault tolerance&lt;/a&gt;. Баталгаагүй холбооны шугамыг ашиглаж баттай мэдээ солилцох  тухай. Энэ бол эртний Византиний хоёр армийн тухай домгоос гаралтай бодлого юм. Хоёр арми нэгэн хотыг зэрэг дайрах болсон боловч, тэдгээр хоёр армийн хооронд орших хөндийг дайснууд эзэлсэн байгаа. Зэрэг дайрахын тулд аль нэг тал нь хэдийд дайрахаа элч илгээж нөгөө армидаа хэлэх хэрэгтэй. Гэхдээ мэдээг нөгөө арми үнэхээр хүлээж авсан гэдэгт итгэлтэй болж байж л дайрах нь мэдээж. Гэтэл нөгөө арми нь хүлээж авлаа гэдэг хариугаа мөн очсон гэдэгт итгэлтэй болж байж л дайрах хэрэгтэй болно. Гэх мэтээр төгсгөлгүй үргэлжилэх юм. Энэ бодлогод ямар шийдлүүд байж болох вэ?&lt;/li&gt;&lt;li&gt;&lt;a href="http://satc.gsfc.nasa.gov/support/ISSRE_NOV98/software_metrics_and_reliability.html"&gt;Software Metrics and Reliability&lt;/a&gt;. Програм хангамжын найдвартай байдлыг ямар үзүүлэлтээр хэмждэг тухай. Хатуумжын найдвартай байдал нь, ашиглалтын хугацааны сүүл хэсэгт муудаж эхэлдэг бол, програм хангамжынх хугацаа өнгөрөх тусам сайжирдаг байна.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.rebelscience.org/Cosas/Reliability.htm"&gt;Why Software Is Bad and What We Can Do to Fix It&lt;/a&gt;. Програм хангамжын найдвартай байдал хэзээ ч 100% -д хүрэхгүй гэж дээр дурдсан билээ. Тэгвэл яагаад ийм байна вэ? Үүний учир шалтгаан бол бидний програм хангамж маань алгоритм дээр суурилсан, асинхрон байдагт юм байна. Бодит байдал дээр зэрэгцэн өрнөж байгаа процессуудыг цуваа байдлаар буюу алгоритмчлах аргаар загварчилдаг билээ. Харин хүний тархи, электрон хэлхээ зэрэг шиг асинхрон, үзэгдэл дээр тулгуурласан хэлбэрээр загварчилж чадвал хичнээн том системийг ч 100% найдвартай хийх боломжтой гэнэ. Тэгвэл үүнийг хэрхэн хэрэгжүүлэх вэ? Энэхүү &lt;a href="http://www.rebelscience.org/Cosas/COSA.htm"&gt;COSA&lt;/a&gt; төсөлийн зорилго нь энэ юм.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-1919545362613181072?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/1919545362613181072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=1919545362613181072' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/1919545362613181072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/1919545362613181072'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/03/blog-post_09.html' title='Системийн найдвартай байдал'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-3752436396437716970</id><published>2007-03-09T12:30:00.000+08:00</published><updated>2007-03-15T12:57:34.778+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows tips'/><title type='text'>Виндовсыг аргалах нь</title><content type='html'>Аргалах ч биш л дээ, Виндовс дээр хийдэг тохиргоонууд л гэсэн үг.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Windows Explorer дотроос аль нэг директори сонгоод командын мөр ажиллуулах.&lt;/span&gt; Үүний тулд дараах тэкстийг reg өргөтгөлтэй файлд хадгалаад ажиллуулна.&lt;br /&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;Windows Registry Editor Version 5.00&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Directory\shell\Command]&lt;br /&gt;@="Command &amp;Prompt"&lt;br /&gt;[HKEY_CLASSES_ROOT\Directory\shell\Command\command]&lt;br /&gt;@="cmd.exe /k cd \\\"%1\\\""&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Ингэсний дараа дуртай директори дээрээ баруунаараа товшиход "Command Prompt" гэсэн  цэсний сонголт бий болсон байх бөгөөд түүнийг сонговол Командын мөрийг тухай директорид ажиллуулах болно.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Дискүүдийг автоматаар шэйр хийдгийг болиулах. &lt;/span&gt;&lt;span&gt;Доорх текстийг reg өргөтгөлтэй файлд хадгалаад ажиллуулна.&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;Windows Registry Editor Version 5.00&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]&lt;br /&gt;"AutoShareWks"=dword:00000000&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Zip файлыг директори мэтээр харуулахыг болиулах.&lt;/span&gt; Explorer ажиллахад том хэмжээний zip файлуудыг уншихдаа их удаагаад байдаг. Дараах командыг ажиллуулвал zip файлыг директори шиг харуулахаа болино.&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;regsvr32 /u zipfldr.dll&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-3752436396437716970?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/3752436396437716970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=3752436396437716970' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/3752436396437716970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/3752436396437716970'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/03/blog-post_15.html' title='Виндовсыг аргалах нь'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-7531116209153205229</id><published>2007-03-07T23:25:00.000+08:00</published><updated>2007-03-15T12:53:48.928+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>Юникс shell-ийн командууд</title><content type='html'>Юникс орчинд ороход шел дээр ажиллах нь зайлшгүй. Шел дээр ажиллах нь эхлээд залхуутай мэт санагдаж болох ч, энэ нь командууд болон багаж хэрэгслүүдийг хир зөв, үр дүнтэй ашиглаж байгаагаас хамаардаг. Үүний тулд хийж байгаа үйлдлээ хэрхэн илүү хялбар хурдан хийх вэ гэдгийг бодож, интернэтээс туршлага судлаж, шинэ хэрэгсэл, шинэ команд байнга сурч байх хэрэгтэй. Ингээд зарим хэрэг болохуйц командуудыг сийрүүлье.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Ямар шел дээр ажиллаж байгааг харах&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# echo $SHELL&lt;br /&gt;/bin/bash&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Командын гарын авлагыг унших&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# man ls&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Програм хаана байрлаж байгааг харах&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# whereis cp&lt;br /&gt;cp: /bin/cp /usr/share/man/man1/cp.1.gz /usr/share/man/man1p/cp.1p.gz&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Ажиллаж байгаа директори харах&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# pwd&lt;br /&gt;/home/ochiro&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Файлын төрлийг харах&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# file pauker.pau.gz&lt;br /&gt;pauker.pau.gz: gzip compressed data, from MS-DOS&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Файлын эхний 5 мөрийг харах&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# head -n 5 ./tomcat/logs/localhost.2007-03-05.log&lt;br /&gt;Mar 5, 2007 4:36:16 PM org.apache.catalina.core.ApplicationContext log&lt;br /&gt;INFO: ContextListener: contextInitialized()&lt;br /&gt;Mar 5, 2007 4:36:16 PM org.apache.catalina.core.ApplicationContext log&lt;br /&gt;INFO: SessionListener: contextInitialized()&lt;br /&gt;Mar 5, 2007 4:36:17 PM org.apache.catalina.core.ApplicationContext log&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Файлын сүүлийн 5 мөрийг харах&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# tail -n 5 ./tomcat/logs/manager.2007-03-05.log&lt;br /&gt;INFO: HTMLManager: list: Listing contexts for virtual host 'localhost'&lt;br /&gt;Mar 5, 2007 5:15:48 PM org.apache.catalina.core.ApplicationContext log&lt;br /&gt;INFO: HTMLManager: restart: Reloading web application at '/testapp'&lt;br /&gt;Mar 5, 2007 5:15:48 PM org.apache.catalina.core.ApplicationContext log&lt;br /&gt;INFO: HTMLManager: list: Listing contexts for virtual host 'localhost'&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Лог файлын сүүлийн мөрүүдийг ажиглах&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# tail -f ./tomcat/logs/localhost.2007-03-05.log&lt;br /&gt;at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)&lt;br /&gt;at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)&lt;br /&gt;at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)&lt;br /&gt;at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)&lt;br /&gt;at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Хоёр файлын ялгааг олох&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# diff dic.txt dic-new.txt&lt;br /&gt;1a2&lt;br /&gt;&gt; new line&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Удаан ажиллах командыг ард ажиллуулах&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# bin/backup-files.sh &amp;&lt;br /&gt;[1] 26490&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Ард ажиллаж байгаа командуудыг харах&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# jobs&lt;br /&gt;[1]+  Stopped                 bin/backup-files.sh&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Ажиллуулсан командуудынхаа түүхийг үзэх&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# history&lt;br /&gt;1  echo $SHELL&lt;br /&gt;2  whereis cp&lt;br /&gt;3  pwd&lt;br /&gt;4  file pauker.pau.gz&lt;br /&gt;5  head -n 5 TUTORIAL~&lt;br /&gt;6  cp dic.txt dic-new.txt&lt;br /&gt;7  cat dic.txt&lt;br /&gt;8  vi dic-new.txt&lt;br /&gt;9  diff dic.txt dic-new.txt&lt;br /&gt;....&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Файл байхгүй бол үүсгэх&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# touch newfile.txt&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Дискний сул зайг харах&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# df -h&lt;br /&gt;Filesystem            Size  Used Avail Use% Mounted on&lt;br /&gt;/dev/hda2              13G  7.6G  4.5G  63% /&lt;br /&gt;udev                  506M  152K  506M   1% /dev&lt;br /&gt;/dev/hda3              51G   25G   26G  49% /home&lt;br /&gt;/dev/hdb1              38G   25G  2.2G  92% /mnt/FAT32&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Директори доторхи файлуудыг хэмжээгээр нь буурах эрэмбээр жагсаах&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# du -sh archive/* | sort -nrk 1&lt;br /&gt;859M    archive/nihongo&lt;br /&gt;303M    archive/photo&lt;br /&gt;277M    archive/lessons&lt;br /&gt;233M    archive/install&lt;br /&gt;1.8G    archive/books&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Бичсэн скриптдээ ажиллах зөвшөөрөл тавих&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# chmod u+x scripts/upload.sh&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Тооны тооллыг хөрвүүлж харах&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# echo 'obase=10; ibase=16; E59' | bc&lt;br /&gt;3673&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Олон мөр оролт&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;#  bc &lt;&lt;&gt; A&lt;br /&gt;&gt; EOF&lt;br /&gt;10&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Директорын бүтцийг ганц командаар үүсгэх&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# mkdir -p project/{lib/ext,bin,src,doc/{html,txt,pdf},demo/stat/a}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Директорийг архивлах&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# tar cvf /tmp/archive.tar archive&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Файлыг шахах&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# gzip archive.tar&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Архивийн файлыг сонгосон директори луу задлах&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# tar xvf -C dest/to/extract archive.tar.gz&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Эхний команд тэг утга буцаасан тохиолдолд дараагийн команд ажиллана&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# cd directory/exists &amp;&amp;amp; tar xvf ~/archive.tar&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Эхний команд тэг биш утга буцаавал дараагийнх ажиллана&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# cd directory/not/exists || mkdir -p directory/not/exists&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Директори байхгүй бол үүсгээд архивийг задлана&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# cd dest/dir || mkdir -p dest/dir &amp;&amp;amp; tar xvf -C dest/dir ~/archive.tar&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Урт командыг арагш ташуу зураасаар хуваах&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# cd dest/to/extract || \&lt;br /&gt;&gt; mkdir -p est/to/extract &amp;&amp;amp; \&lt;br /&gt;&gt; tar xvf -C est/to/extract ~/archive.tar&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Зарим командуудыг дэд шелд ажиллуулаад гаралтыг admin руу мэйлдэх&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# ( cd dest/to/extract/ || mkdir -p dest/to/extract &amp;&amp;amp; \&lt;br /&gt;&gt; VAR=$PWD; cd ~; tar xvf -C $VAR archive.tar ) \&lt;br /&gt;&gt; | mailx admin -S "Archive contents"&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Зарим командуудыг бүлэглэж ажиллуулаад гаралтыг admin руу мэйлдэх&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# { cp ${VAR}a . &amp;&amp;amp; chown -R guest.guest a &amp;&amp;amp; \&lt;br /&gt;&gt; tar cvf newarchive.tar a; } | mailx admin -S "New archive"&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Эхний командаар гарч ирэх жагсаалтууд дээр өөр команд ажиллуулах&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# ls -1 | xargs file&lt;br /&gt;bin:              directory&lt;br /&gt;desk-books:       directory&lt;br /&gt;Desktop:          directory&lt;br /&gt;diagrams:         directory&lt;br /&gt;dic-new.txt:      UTF-8 Unicode text&lt;br /&gt;dic.txt:          UTF-8 Unicode text&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Файл дотроос текст хайх&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# grep implement TUTORIAL.txt&lt;br /&gt;On systems which do not implement suspending, C-z creates a subshell&lt;br /&gt;function which implements the C-p command.&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Файл дотроос хайхдаа regular expression ашиглах&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# grep ^The TUTORIAL.txt&lt;br /&gt;The characters "&gt;&gt;" at the left margin indicate directions for you to&lt;br /&gt;The first thing that you need to know is how to move around from place&lt;br /&gt;The following commands are useful for viewing screenfuls:&lt;br /&gt;There are several ways you can do this.  You can use the arrow keys,&lt;br /&gt;The location of the cursor in the text is also called "point".  To&lt;br /&gt;There is a whole series of commands that start with CONTROL-x; many of&lt;br /&gt;.......&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;wc хэрэглэлгүйгээр файл дотор хайсан текст хэдэн мөрөнд байгааг тоолох&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# grep -c ^The TUTORIAL.txt&lt;br /&gt;30&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;awk ашиглаж багана сонгож харах&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# ls -l | awk '{print $3 " " $8 }'&lt;br /&gt;&lt;br /&gt;ochiro bin&lt;br /&gt;ochiro desk-books&lt;br /&gt;ochiro Desktop&lt;br /&gt;ochiro diagrams&lt;br /&gt;ochiro dic-new.txt&lt;br /&gt;ochiro dic.txt&lt;br /&gt;........&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Сонгосон баганаас хайх&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# ls --time-style=locale -l | awk '$6 == "Mar"'&lt;br /&gt;drwxr-xr-x 11 ochiro users    3064 Mar  1 14:34 desk-books&lt;br /&gt;drwxr-xr-x  2 ochiro users     784 Mar  2 09:53 Desktop&lt;br /&gt;-rw-r--r--  1 ochiro users      13 Mar  7 13:55 dic-new.txt&lt;br /&gt;drwxr-xr-x  5 ochiro users    2664 Mar  6 10:43 downloads&lt;br /&gt;drwxr-xr-x  2 ochiro users      48 Mar  5 13:55 ftpserver&lt;br /&gt;drwxrwxrwx  7 ochiro users     400 Mar  5 18:03 wbt&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Файл дотроос текст хайж(cursor) солиод(pointer) шинэ файлд хадгалах&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# sed s/cursor/project_name/g TUTORIAL.txt &gt; TUTORIAL_new.txt&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Олон файлаас(*.txt) текст хайж(searchtext) солих(replacetext)&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# find ./ -name *.txt -type f -exec sed -i 's/searchtext/replacetext/' {} \;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Хамгийн их хэрэглэсэн 10 командаа харах&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;# history|awk '{print $2}'|awk 'BEGIN {FS="|"} {print $1}' \&lt;br /&gt;&gt; |sort|uniq -c|sort -nr|head -10&lt;br /&gt;125 ls&lt;br /&gt;32 su&lt;br /&gt;32 cd&lt;br /&gt;26 vi&lt;br /&gt;25 sudo&lt;br /&gt;23 cat&lt;br /&gt;19 ping&lt;br /&gt;19 netstat&lt;br /&gt;19 exit&lt;br /&gt;18 ps&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Сүүлийн нэг цагийн дотор өөрчөгдсөн файлууд&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table border="0" cellpadding="1" cellspacing="1" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#efefef"&gt;&lt;pre&gt;#  find ~ -mmin -60 \! -type d&lt;br /&gt;/home/ochiro/.thunderbird/Mail/Junk&lt;br /&gt;/home/ochiro/.thunderbird/Mail/Sent&lt;br /&gt;/home/ochiro/.thunderbird/Mail/Inbox.msf&lt;br /&gt;/home/ochiro/.thunderbird/Mail/Drafts&lt;br /&gt;/home/ochiro/.thunderbird/Mail/Inbox&lt;br /&gt;/home/ochiro/.thunderbird/Mail/Junk.msf&lt;br /&gt;/home/ochiro/.thunderbird/Mail/Sent.msf&lt;br /&gt;/home/ochiro/.thunderbird/Mail/Drafts.msf&lt;br /&gt;/home/ochiro/TUTORIAL_new.txt&lt;br /&gt;/home/ochiro/dic.txt&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Эх сурвалжууд:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/edu/au-dw-au-unixtips1-i.html"&gt;UNIX tips and tricks for a new user, Part 1: File maintenance tools&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/edu/au-dw-au-unixtips3-i.html"&gt;UNIX tips and tricks for a new user, Part 3: Introducing filters and regular expressions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/edu/au-dw-au-unixtips4-i.html"&gt;UNIX tips and tricks for a new user, Part 4: Some nifty shell tricks&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.gnu.org/software/bash/manual/bashref.html"&gt;Bash Reference Manual&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www-128.ibm.com/developerworks/aix/library/au-badunixhabits.html?ca=lnxw01GoodUnixHabits"&gt;UNIX tips: Learn 10 good UNIX usage habits&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www-128.ibm.com/developerworks/aix/library/au-productivitytips.html"&gt;UNIX tips: Productivity tips&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sparky.rice.edu/%7Ehartigan/awk.html"&gt;AWK&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-7531116209153205229?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/7531116209153205229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=7531116209153205229' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/7531116209153205229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/7531116209153205229'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/03/shell.html' title='Юникс shell-ийн командууд'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-3170890711846864247</id><published>2007-03-06T20:18:00.000+08:00</published><updated>2007-03-13T10:28:07.877+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vi'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>VI - текст засварлагч</title><content type='html'>Анх юникс систем дээр ажиллаж эхлэх үед, тохиргооны файл засах зэрэгт ашиглахын тулд vi текст засварлагчийн командыг хажуудаа хэвлэж наачихсан хирнээ л  мартчихаад байдаг байж билээ. Саяхан нэг юм хийх гэсэн чинь хоёр мөрийг нийлүүлэх, текст солих командуудыг санадаггүй. Ингээд мартсан командаа олж авахын хажуугаар бусад түгээмэл командуудыг мөн харж авав. Мартсан хүмүүст санахад, шинэ сурж байгаад хүнд хичээл болох болов уу гээд бичье.&lt;br /&gt;&lt;br /&gt;vi -нь команд горим, оруулах горим гэсэн хоёр горимтойгоороо бусад текст засварлагч програмуудаас ялгаатай. Цөөхөн товчлуур шаардагддаг энгийн байх, дээр үеийн удаан сүлжээтэй орчинд хэмнэлттэй байх зэрэг нөхцөлүүдээс үүдэж ийм сонин байдлаар хийгдсэн болов уу. vi байхгүй юникс/линукс систем гэж байхгүй. Дараах командаар vi -г ажиллуулна.&lt;br /&gt;&lt;center&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table style="width: 397px; height: 30px;" border="0" cellpadding="1" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#ededed"&gt;&lt;pre&gt;$ vi test.txt &lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;Хэрэв одоо ажиллаж байгаа директорид test.txt -нэртэй файл байвал тэр файлыг нээнэ, байхгүй бол шинэ файл үүсгэнэ. Анх ажиллангуут команд горимд байх ба энэ горимд байх үед товчлуурууд нь команд ажиллуулахад ашиглагдана. Харин текст оруулах горим буюу текст горимд байх үед товчлуурууд дээр дарахад текст бичигдэнэ.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table style="width: 500px; height: 162px;" border="0" cellpadding="1" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr align="center"&gt;&lt;th colspan="2" bgcolor="#ededed"&gt;Горим солих командууд&lt;br /&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center;" bgcolor="#ededed" width="1%"&gt;&lt;b&gt;a&lt;/b&gt;&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;Курсорын араас текст оруулна&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center;" bgcolor="#ededed"&gt;&lt;b&gt;i&lt;/b&gt;&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;Курсорын өмнө текст оруулна&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center;" bgcolor="#ededed"&gt;&lt;b&gt;A&lt;/b&gt;&lt;br /&gt;&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;Мөрийн төгсгөлөөс текст оруулна&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center;" bgcolor="#ededed"&gt;&lt;b&gt;I&lt;/b&gt;&lt;br /&gt;&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;Мөрийн эхнээс текст оруулна&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center;" bgcolor="#ededed"&gt;&lt;b&gt;o&lt;/b&gt;&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;Одоо байгаа мөрний доор шинэ мөр нэмж текст оруулна&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center;" bgcolor="#ededed"&gt;&lt;b&gt;O&lt;/b&gt;&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;Одоо байгаа мөрний дээр шинэ мөр нэмж текст оруулна&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center;" bgcolor="#ededed"&gt;&lt;b&gt;[ESC]&lt;/b&gt;&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;Текст горимоос гарна&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;Курсор шилжүүлэхэд сумтай товчнуудыг хэрэглэж болох боловч зарим тохиолдолд сумтай товчнууд ажиллахгүй байх нь элбэг. Энэ үед h, j, k, l товчнуудыг хэрэглэнэ. Ер нь эдгээр товчийг хэрэглээд сурчвал гараа хол зөөхгүй давуу талтай тул сурахыг эрмэлзэх хэрэгтэй.&lt;br /&gt;&lt;center&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table style="width: 500px;" border="0" cellpadding="1" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr align="center"&gt;&lt;th colspan="2" bgcolor="#ededed"&gt;Нэг зайгаар шилжих&lt;br /&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold; text-align: center;" bgcolor="#ededed"&gt;h&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;урагш нэг тэмдэгт шилжих&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold; text-align: center;" bgcolor="#ededed"&gt;l&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;арагш нэг тэмдэгт шилжих&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold; text-align: center;" bgcolor="#ededed"&gt;j&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;доош нэг мөр шилжих&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold; text-align: center;" bgcolor="#ededed"&gt;k&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;дээш нэг мөр шилжи&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;Нэг нэг зай шилжихээс гадна, үгийн эхэнд очих, мөрийн төгсгөлд очих гэх мэт командууд байна.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table style="width: 500px; height: 162px;" border="0" cellpadding="1" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr align="center"&gt;&lt;th colspan="2" bgcolor="#ededed"&gt;Мөр дотор жилжих&lt;br /&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold; text-align: center;" bgcolor="#ededed" width="20"&gt;b&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;үгийн эхэнд очих&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold; text-align: center;" bgcolor="#ededed"&gt;e&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;үгийн төгсгөлд очих&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold; text-align: center;" bgcolor="#ededed"&gt;w&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;дараагийн үгийн эхэнд очих&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold; text-align: center;" bgcolor="#ededed"&gt;^&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;мөрийн харагдаж байгаа хамгийн эхний тэмдэгт дээр очих&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold; text-align: center;" bgcolor="#ededed"&gt;0&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;мөрийн эхэнд очих&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold; text-align: center;" bgcolor="#ededed"&gt;$&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;мөрийн төгсгөлд очих&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;Дэлгэцээр гүйлгэх харах бол нүүр нүүрээр шилжих командуудийг хэрэглэнэ.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table style="width: 500px; height: 160px;" border="0" cellpadding="1" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr align="center"&gt;&lt;th colspan="2" bgcolor="#ededed"&gt;Дэлгэцээр шилжих командууд&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed" width="20"&gt;CTRL+F&lt;/td&gt;&lt;td bgcolor="#ededed" width="100%"&gt;нэг нүүр хойшлох&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;CTRL+B&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;нэг нүүр урагшлах&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;CTRL+D&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;хагас нүүр хойшлох&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;CTRL+U&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;хагас нүүр урагшлах&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;gg&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;Файлын эхэнд очих&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;G&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;Файлын төгсгөд очих&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;Текст засварлах командууд&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Текстийг устгах үед устгагдсан текст хадгалагдаж үлдэх бөгөөд түүнийг өөр газар хуулж тавьж болдог.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table style="width: 500px;" border="0" cellpadding="1" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th colspan="2" bgcolor="#ededed"&gt;Устгах командууд&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed" width="20"&gt;x&lt;/td&gt;&lt;td bgcolor="#ededed" width="100%"&gt;тэмдэгт устгах&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;dw&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;үгийн курсороос хойших хэсгийг устгах&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;d$&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;мөрийн курсороос хойших хэсгийг устгах&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;D&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;мөрийн курсороос хойших хэсгийг устгах&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;dd&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;мөрийг устгах&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;Солих командаар текстийг өөрчлөхөд, [ESC] товч дарагдтал оруулах үйлдэл үргэлжлэх болно.&lt;br /&gt;&lt;center&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table style="width: 500px;" border="0" cellpadding="1" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th colspan="2" bgcolor="#ededed"&gt;Солих/өөрчлөх командууд&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed" width="20"&gt;r&lt;/td&gt;&lt;td bgcolor="#ededed" width="100%"&gt;тэмдэгтийг өөрчлөх&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;cw&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;үгийн курсороос хойшхи хэсгийг солих&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;c$&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;мөрийн курсороос хойшхи хэсгийг солих&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;C&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;мөрийн курсороос хойшхи хэсгийг солих&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;Ns&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;N ширхэг тэмдэгтийг солих&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;Хайлтын командуудад regular expression ашиглаж болно. Хайлтын командууд нь [ENTER] товчоор төгсөх ёстой.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table style="width: 500px;" border="0" cellpadding="1" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th colspan="2" bgcolor="#ededed"&gt;Хайлтын командууд&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed" width="20"&gt;/text&lt;/td&gt;&lt;td bgcolor="#ededed" width="100%"&gt;текстийг арагш хайна&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;?text&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;текстийг урагш хайна&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;n&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;хамгийн сүүлд хайсан текстийг өмнөх чиглэлд хайна&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;N&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;хамгийн сүүлд хайсан текстийг эсрэг чиглэлд хайна&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;Өгөгдсөн текстийг хайж олоод солиход дараах командыг ажиллуулна.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table style="width: 500px;" border="0" cellpadding="1" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th colspan="2" bgcolor="#ededed"&gt;Хайж солих команд&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed" width="20"&gt;:%s/text1/text2/g[RETURN]&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;text1 ийг text2 оор солино.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;Тэкстийг бусад засварлагч шиг хуулж болох ба, хуулагдсан текст устгагдсан текстийн адил буферт хадгалагдана.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table style="width: 500px;" border="0" cellpadding="1" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th colspan="2" bgcolor="#ededed"&gt;Хуулах командууд&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed" width="20"&gt;yw&lt;/td&gt;&lt;td bgcolor="#ededed" width="100%"&gt;үгийн курсороос хойшхи хэсгийг хуулна&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;y$&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;мөрийн курсороос хойшхи хэсгийг хуулна&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;yy&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;мөрийг хуулна&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;Y&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;мөрийг хуулна&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;Буферт байгаа хуулсан болон устгасан текстийг хаа нэг газар тавихад дараах хоёр командыг хэрэглэнэ.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table style="width: 500px;" border="0" cellpadding="1" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th colspan="2" bgcolor="#ededed"&gt;Буферээс гаргах командууд&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed" width="20"&gt;p&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;буферт байгаа текстийг курсорын өмнө гаргана&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;P&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;буферт байгаа текстийг курсорын араас гаргана&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Буцах болон Давтах команд нь зөвхөн хамгийн сүүлчийн үйлдлийг л буцаана.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table style="width: 500px;" border="0" cellpadding="1" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th colspan="2" bgcolor="#ededed"&gt;Буцах/Давтах команд&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed" width="20"&gt;u&lt;/td&gt;&lt;td bgcolor="#ededed" width="100%"&gt;хамгийн сүүлчийн командыг буцаана&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;CTRL+r&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;буцаасан командыг дахин ажиллуулна&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;.&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;хамгийн сүүлд хийсэн командыг дахин ажиллуулна&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;Ихэнх текст засварлагчид дээр мөрийн эхэнд очоод устгах үйлдэл хийхэд өмнөх мөрийн араас залгагддаг бол vi дээр тэгдэггүй.&lt;br /&gt;&lt;center&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table style="width: 500px;" border="0" cellpadding="1" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th colspan="2" bgcolor="#ededed"&gt;Мөр нийлүүлэх&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed" width="20"&gt;J&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;Мөрийн төгсгөлд дараагийн мөрийг залгана&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;Хадгалах ба гарах командууд нь : аар эхлэх бөгөөд [ENTER] товчоор хэрэгжинэ.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table style="width: 500px;" border="0" cellpadding="1" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th colspan="2" bgcolor="#ededed"&gt;Хадгалах ба гарах командууд&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;:w&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;файлыг хадгална&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;:w NAME&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;файлыг NAME нэрээр хадгална&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;:w! NAME&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;NAME нэртэй файлыг дарж хадгална&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;:wq&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;файлыг хадгалаад засварлагчаас гарна&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;:q&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;засварлагчаас гарна&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-weight: bold;" bgcolor="#ededed"&gt;:q!&lt;/td&gt;&lt;td bgcolor="#ededed"&gt;хийсэн өөрчлөлтүүдийг хадгалалгүйгээр гарна&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;(:) -аар эхэлсэн командуудаас бусад командуудын өмнө давтах тоог оруулж бичсэнээр олон удаа ажиллууж болно. Жишээлбэл &lt;center&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#a0a0a0"&gt;&lt;table style="width: 300px; height: 19px;" border="0" cellpadding="1" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#ededed"&gt;&lt;pre&gt;10dd &lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt; гэж ажиллуулбал 10 мөрийг устгана.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Эх сурвалж&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://www6.software.ibm.com/developerworks/education/au-unixtips2/index.html"&gt;UNIX tips and tricks for a new user, Part 2: The vi text editor&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.rru.com/%7Emeo/useful/vi/vi.rm.html"&gt;VI (and Clone) Editor Reference Manual&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-3170890711846864247?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/3170890711846864247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=3170890711846864247' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/3170890711846864247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/3170890711846864247'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/03/vi.html' title='VI - текст засварлагч'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-9064189807995144697</id><published>2007-03-02T14:16:00.000+08:00</published><updated>2007-03-02T18:06:23.079+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test automation'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>Тестийг автоматжуулах нь</title><content type='html'>Програм хангамжын тест гэдэг нь чанарыг баталгаажуулах, хангах хамгийн чухал хэсэг бөгөөд чанарын шаардлагыг өндөрт тавьсан системийн хөгжүүлэлтэд сайн тестийн инженер, тэстийн баг, тэстийн хөрөнгө оруулалт зайлшгүй. Зарим хөгжүүлэгчид тестийг уйтгартай, үр ашиг багатай, ёс төдий зүйл мэтээр хүлээж авдаг нь тестийг хийх оновчтой, үр ашигтай арга барилыг бий болгоогүй, тестээр системийн алдаа сэвийг илрүүлэх сэтгэхүй байхгүйгээс тэр. Ингээд өөртэйгөө маргаж, энд тэндээс юм ухаж төнхөж байж олсон зүйлээ хуваалцья.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;Програм хангамжын тестийг автоматжуулах, үр ашгийг дээшлүүлэх тухай&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Тэстийг автоматжуулах ажлыг програм хангамж хөгжүүлэлтийн процессын дагуу ул суурьтай авч үзэж, төлөвлөгөөтэй, хөрөнгө хүч, цаг хугацаа зарцуулж, хэрэглэгчтэй, гүйцэтгэгчтэй, хүлээж буй тодорхой үр дүнтэй байж хийх ёстой болохыг энэ талын мэргэжилтнүүд нэгэн дуугаар зөвшөөрдөг.&lt;br /&gt;&lt;br /&gt;Систем хөгжүүлэлтийн ажил юуны түрүүнд шаардлагыг тодруулах буюу хэрэглэгчид юу хэрэгтэй байгааг судласнаар эхэлдэг. Тэстийг автоматжуулах гэдэг маань гараар хийдэг тестийг автоматаар хийх гэж ойлгогдох нь хэнд ч илт. Иймд тэстийг автоматжуулахын өмнө гараар тестийг хийх процесс тодорхой болсон байх ёстой байх нь. Тестийн процесс байхгүй бол, байхгүй юмыг автоматжуулна гэдэг утгагүй. Ингээд эхний заавал хийх ёстой зүйл бол &lt;span style="font-weight: bold;"&gt;тестийн процессыг сайтар тодруулах&lt;/span&gt; юм. Тестийн загвар буюу тэстийг хэрхэн явуулах, ямар багаж хэрэглэх, яаж ажиллуулах, үр дүнг хэрхэн шалгах, тэстийн үед ашиглагдах файлуудын тайлбар, гарын авлагуудыг зэрэг үүнд багтана. Тухайн системийн тухай ерөнхий ойлголттой хэн ч байсан тестийг ажиллуулж дөнгөхөөр хэмжээнд тэстийн процессыг тодорхой болгох хэрэгтэй. Ингэж тодруулах явцад ямар хэсгийг хэрхэн өөрчилөн сайжруулж болох нь тодорч ирэх ч талтай. Үр ашиг муутай тестийн процессийг автоматжуулаад ч гарах үр дүн нь сайжрахгүй. Гараар хийгдэж байгаа тестийн үр ашгийг сайжруулах, илүү боловсронгуй болгох энгийн алхмуудыг хийхдээ, тестийн үр ашиг нь тухайн тестээр алдаа илрүүлэх магадлал, тестийг гүйцэтгэхэд амар хялбар байдал, илрүүлсэн алдааны байрлал болоод шалтгааныг тодорхойлоход хир дөхөмтэй зэргээр хэмжигддэг гэдгийг бодоорой.&lt;br /&gt;&lt;br /&gt;Тэстийн процессыг тодорхой болгон баримтжуулж, зарим сайжруулалтуудыг хийсний дараа автоматжуулах шаардлагаа тодорхойлно. Ямар ч тодорхой хүлээсэн үр дүнгүйгээр ажлаа эхлэх нь автоматжуулагчид болон бусад хүмүүсийг залхаахад хүргэдэг. Ерөнхийдөө бол рилийзийг хурдасгах, тестийн тоог олшруулах, хүн хүчийг хэмнэх, өндөр мэдлэггүй хүмүүсээр тэст хийлгэх, тестийг найдвартай болгох зэрэг үр дүнг хүлээж болно. Харин яг ямар тестүүдийг автоматжуулах вэ? ажлаа хаанаас эхлэх вэ гэдэг асуудал дараагийн шатанд тавигдана.&lt;br /&gt;&lt;br /&gt;Тэстийн автоматжуулалт ихэвчлэн регресс тест буюу өмнө ажиллуулаад шалгачихсан тестүүдийг дахин дахин ажиллуулах хэсгээс эхэлдэг. Кодод өөрчлөлт орох болгонд өмнөх ажиллаж байсан тестүүд хэвийн эсэхийг шалгана гэсэн үг. Нэгэнт ажиллуулаад туршчихсан учраас автоматжуулахад амар байхаас гадна, хамгийн гол нь олон дахин давтагдах учраас автоматжуулснаар олох ашиг нь их юм. Зарим тестийг огт автоматжуулах шаардлагагүй ч байж болно. Тухайлбал ганцхан удаа ажиллаад ахиж ажиллахгүй тэстийг автоматжуулах нь утгагүй. Мөн туйлын ярвигтай тестүүдийг автоматжуулахад их цаг хугацаа, хүч хөдөлмөр шаардах учраас гараар хийж байсан нь дээр. Ийм тестийг хүч зарцуулаад автоматжууллаа ч, тестийн кодод алдаа гарах магадлал их учраас дараа нь тэртэй тэргүй гараар ажиллуулж үнэмших хэрэгтэй болдог. Иймд бүх тестийг захаас аваад автоматжуулах гэхээсээ аль автоматжуулахад амар хирнээ, гарах ашиг нь харагдахуйц хэсгүүдээс эхлэх нь зүйтэй.&lt;br /&gt;&lt;br /&gt;Ямар үр дүн хүлээх, тестийн аль хэсгийг автоматжуулахаа шийдсэн бол системийн хөгжүүлэлтийн дараагийн цикл болох хэрхэн хийх буюу дизайны шат руу орно.&lt;br /&gt;Ингээд:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Record/Playback загвар, &lt;/li&gt;&lt;li&gt;Функционалаар задлах арга, &lt;/li&gt;&lt;li&gt;Түлхүүр үгээр жолоодогдох &lt;/li&gt;&lt;/ul&gt;аргачлалуудыг авч үзье.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Record/Playback&lt;/span&gt; загвар нь хэрэгжүүлэхэд хамгийн хэцүү. Хэрэглэгчийн тест хийж байгаа бүх үйлдлийг бичиж аваад дараа нь автоматаар давтан ажиллуулах гэсэн энгийн арга боловч, төрөл бүрийн график дүрслэлийн орчин, шинэ шинэ технологи зэрэгтэй харьцах шаардлагатай учраас Record/Playback хийдэг програмууд их үнэтэй байдаг. Энэ арга сонсоход сайхан байгаа боловч яг бодит байдал дээр хэрэглэх үед бараг хэрэгцээгүй болчихдог. Учир нь хэрэглэгчийн үйлдлийг бичиж авах үед үүсэх скрипт нь өөрчлөгдөх, дахин засварлахад хүндрэлтэй учраас програмд жижиг засвар ороход тестийг дахин гараар ажиллуулж бичиж авах болдог. Хамгийн гажиг нь тэстийг бичиж авахын тулд тухайн үйлдэл заавал зөв ажиллаж байх ёстой. Тэгэхээр  бичиж байх явцад ихэнх алдаа тохиолдох бөгөөд, алдааг засаж байж бичих үйлдэл дуусна. Ингэхээр гараар тестлэснээс ялгаа байхгүй биз дээ.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Функционалаар задлах арга&lt;/span&gt; нь тестийн тохиолдлуудыг үндсэн үйлдлүүдээр нь задлаж хоорондоо үл хамааралтай ортогональ скриптүүдийг хөгжүүлэх аргачлал юм. Хэрэглэгчийн функцүүд, Бизнесийн Функцийн скриптүүд, Дэд функцийн скриптүүд гэх мэтээр скриптүүдийг үечилж, эдгээр нь хаанаас дуудагдахаас хамаарахгүйгээр өөр өөрийн үйлдлийг гүйцэтгэх чадвартай байна. Жишээлбэл:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Бизнесийн функцүүд : Гүйлгээ хийх скрипт, Мессеж илгээх скрипт&lt;/li&gt;&lt;li&gt;Дэд функцүүд буюу туслах функцүүд : Өгөгдөл харьцуулах, Лог шалгах, Сэрвэр лүү холбогдох&lt;/li&gt;&lt;li&gt;Хэрэглэгчийн функцүүд : Лог файл унших, сүлжээний холболт үүсгэх&lt;/li&gt;&lt;/ul&gt;Хамгийн гадна талд нь Жолоодогч скрипт байж, тестийг ажиллуулна. Жолоодогч скрипт нь дотроо "Тестийн тохиолдлууд"-ыг дуудсан байна. Тэстийн тохиолдол бүр нь тестийн логикийг Бизнес функцийн скриптүүдээр ажиллуулна. Дэд функцүүд болон бусад туслах скриптүүд нь хаанаас ч дуудагдаж болно.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Жолоодогч скрипт:&lt;/u&gt;&lt;br /&gt;* * Орчны тохиргоо болон бусад шаардлагатай үйлдлүүдийг хийж дуусаад "тестийн тохиолдлууд"-ыг дэс дараалан ажиллуулж эхлэнэ.&lt;br /&gt;&lt;u&gt;Тестийн тохиолдлын скрипт:&lt;/u&gt;&lt;br /&gt;* * Тестийн логикийг Бизнес функцийн скриптүүдийг дуудаж ажиллуулна.&lt;br /&gt;&lt;u&gt;Бизнес функцийн скрипт:&lt;/u&gt;&lt;br /&gt;* * Програмын тодорхой функцүүдийг хэрэгжүүлнэ&lt;br /&gt;&lt;u&gt;Дэд функцын скриптүүд:&lt;/u&gt;&lt;br /&gt;* * Бизнес функцыг хэрэгжүүлэхэд шаардлагатай програм дотор түгээмэл ашиглагдах дэд функцүүд.&lt;br /&gt;&lt;u&gt;Хэрэглэгчийн функцүүд:&lt;/u&gt;&lt;br /&gt;* * Ерөнхий, Дэлгэцтэй харьцах, Сүлжээтэй харьцах&lt;br /&gt;* * Эдгээр нь хаанаас ч дуудагдаж болно.&lt;br /&gt;&lt;br /&gt;Тухайлбал Сервэртэй холбогдолт үүсгэх -гэдэг тэстийн тохиолдол дараах байдлаар бичигдэж болно.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Сервертэй холбогдох:&lt;/u&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Тохиргооны файлаас сервэрийн хаягийг унших&lt;/li&gt;&lt;li&gt;Сэрвэртэй холбогдох хүсэлтийг сүлжээгээр илгээх&lt;/li&gt;&lt;li&gt;Хариултыг хүлээж авах&lt;/li&gt;&lt;li&gt;Холбогдсон эсэхийг шалгах&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-style: italic;"&gt;Сэрвэртэй холбогдох хүсэлтийг сүлжээгээр илгээх&lt;/span&gt;- дэд функцыг цааш задалвал:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Сэрвэртэй TCP/IP холболт үүсгэх&lt;/li&gt;&lt;li&gt;Холбогдогдох хүсэлт-ийн мессежийг бэлдэх&lt;/li&gt;&lt;li&gt;Мессежийг TCP/IP холболтоор дамжуулах&lt;/li&gt;&lt;/ol&gt;Дээрхээс харвал "Сэрвэртэй холбогдох хүсэлтийг сүлжээгээр илгээх"- дэд функц нь ерөнхий зориулалтийн "Мессеж илгээх" -гэдэг функц байж болохоор байна. Үүний тулд өгөгдлийг функцээс салгах хэрэгтэй, тестийн тохиолдолд харгалзах өгөгдлүүд болон хүлээх үр дүнг тестийн скриптүүдээс тусдаа файлд хадгалснаар шинэ тестүүдийг үүсгэхэд хялбар болох юм. Энэ арга нь дахин дахин ашиглагдаг скрипт модулиудыг ашиглаж тестийн өгөгдөл болон шалгах нөхцөлийг файлд хадгалснаар нилээд хөдөлмөр хэмнэж байгааг ч, дараах сул талуудтай.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Скрипт хэлний өндөр мэдлэг шаарддаг&lt;/li&gt;&lt;li&gt;Тестийн тохиолдол болгонд хэд хэдэн текст файл шаардлагатай болох учраас эдгээр файлуудыг зохицуулахад хүндрэл гардаг&lt;/li&gt;&lt;li&gt;Тэстчин тестийн төлөвлөгөөг нарийвчилсан өгөгдлийн хамт гаргахын хажуугаар эдгээр өгөгдлүүдийг тусгай форматтайгаар текст файлуудад оруулж тестэнд бэлдэх шаардлагатай.&lt;/li&gt;&lt;li&gt;Энгийн текст файлуудыг анхааралтай үүсгэхгүй бол формат зөрснөөс болж тестийн скриптүүд буруу ажиллаж болно&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Түлхүүр үгээр жолоодогдох арга&lt;/span&gt; буюу &lt;span style="font-weight: bold;"&gt;Тестийн төлөвлөгөөгөөр жолоодогдох арга&lt;/span&gt; нь өмнөх аргын сайн талуудыг шингээхээс гадна ихэнх сул талуудыг үгүйсгэж чаддаг. Ажиллах зарчим ерөнхийдөө адилхан боловч тестийн өгөгдлийг дүрслэх арга нь өөр юм. Шууд хүснэгтэн аргаар бэлдсэн тестийн төлөвлөгөөн дээр тулгуурлаж скриптүүд ажилладаг.&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="1" cellspacing="1" width="600"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td valign="top"&gt;Түлхүүр үг&lt;/td&gt; &lt;td valign="top"&gt;Байрлал&lt;/td&gt; &lt;td valign="top"&gt;Оролт/Шалгах Өгөгдөл&lt;/td&gt; &lt;td valign="top"&gt;Тайлбар&lt;/td&gt; &lt;td valign="top"&gt;OK/NG&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td valign="top"&gt;Connect&lt;/td&gt; &lt;td valign="top"&gt;10.10.10.20&lt;/td&gt; &lt;td valign="top"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td valign="top"&gt;Сэрвэр лүү холбогдох&lt;/td&gt; &lt;td valign="top"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td valign="top"&gt;Send&lt;/td&gt; &lt;td valign="top"&gt;10.10.10.20&lt;/td&gt; &lt;td valign="top"&gt;0x87467348&lt;/td&gt; &lt;td valign="top"&gt;Холбогдох хүсэлт явуулах&lt;/td&gt; &lt;td valign="top"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td valign="top"&gt;Receive&lt;/td&gt; &lt;td valign="top"&gt;10.10.10.20&lt;/td&gt; &lt;td valign="top"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td valign="top"&gt;Хүсэлтийн хариуг хүлээж авах&lt;/td&gt; &lt;td valign="top"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td valign="top"&gt;Check&lt;/td&gt; &lt;td valign="top"&gt;app_log.txt&lt;/td&gt; &lt;td valign="top"&gt;"Connected to server : 10.10.10.20"&lt;/td&gt; &lt;td valign="top"&gt;Холбогдсон эсэхийг шалгах&lt;/td&gt; &lt;td valign="top"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Дээрх хүснэгтийг ямар нэг хүснэгт боловсруулах програмаар бэлдээд текст хэлбэр лүү хөрвүүлэх тул, контроллер скрипт тэр текст файлыг мөр мөрөөр нь уншиж мөрийн эхэнд байх түлхүүр үгэнд харгалзах скриптийг, бусад нүдэн дэх мэдээллийг параметр байдлаар дамжуулан ажиллуулна. Энэ аргын давуу тал нь тестийн төлөвлөгөөг шууд тестийн өгөгдөл болгож ашиглаж байгаагаас гадна, тестийг ажиллуулах хүн зөвхөн түлхүүр үгнүүдийг судлахад л болохоор байгаа. Тестийн өгөгдлөө бэлдээд ганц командаар тестүүдээ ажиллуулах боломжтой боллоо. Мөн дээр хүснэгтийг харж байгаад гараар тестийг ажиллуулах ад ч эвтэйхэн гэдэг нь харагдаж байна.&lt;br /&gt;&lt;br /&gt;Тестийн процессыг сайжруулах, тестийг автоматжуулахад яг хөгжүүлэлтийн орчинтой адил тестийн тусдаа орчин хэрэгтэйг онцлон анхаарах хэрэгтэй. Хөгжүүлэлтэд хэрэглэж байгаатай яг адилхан програм хангамж, тохиргоо, техник байх ёстой.&lt;br /&gt;&lt;br /&gt;Тестийн скрипт гэдэг нь бас л програм хангамж код учраас эх кодын удирдлагаар хангаж, сайн програмчин хуваарилж, хэрэглэгчид болох тестчидэд зориулж тайлбар, гарын авлага хийх нь зүй. Ер нь тест хийнэ гэдэг, зөвхөн тестийг ажиллуулаад OK/NG гэж бичихийн нэр биш, кодыг шинжилж судлаж, ухаж төнхөж байж жинхэнэ утгаар нь хэрэгжүүлдэг болохыг байнга санах хэрэгтэй. Энд тэстийг автоматжуулах тухай ярьж байгаа болохоос автоматаар тэстлэх гэж яриагүй билээ. Тест гэдэг бол системийн ажиллагааг үнэмжих, батлах процесс. Хэрэв тестийг бүрэн автоматжуулсан гэвэл тэстийн үр дүнг хэрхэн үнэмших вэ? Бүрэн автомат байлаа гэвэл, түүнийг өөрийг нь зөв ажиллаж байгааг бас тестлэх хэрэгтэй болно. Иймд гар тест ямагт байх ёстой бөгөөд автоматаар хийж байгаа тестийг хэзээ хүссэн цагтаа гараар хийж шалгах боломжтой байх ёстой. Иймд сайн тестчин хэзээд хэрэгтэй, үнэ цэнэтэй байх болно. Тестчин хүн ажлынхаа зарим хэсгийг автоматжуулснаар тестийн нөхцөлүүдээ баяжуулах, тэстийн скриптээ сайжруулах гээд илүү ашигтай ажилд анхаарал хандуулах боломжтой болно.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;::Дүгнэлт::&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;Тестийг автоматжуулах нь тестлэх гэж байгаа кодыг бичихээс техникийн хувьд ч, менежментийн хувьд ч дутахгүй ажил учраас систем хөгжүүлэлтийн төслийн адилаар хүн хүч, нөөц шаардах ёстой аж. Тэстийг автоматжуулахад зайлшгүй шаардлагатай хүний нөөц бол тестийн скриптийг хөгжүүлэх туршлагатай програмчин, тестийг амжилттайгаар үргэлжлүүлэх сайн тестчиний орон тоо юм. Зөв арга барил сонгож, нөхцөл байдлаар хангаж чадвал тестийг автоматжуулснаар зөвхөн тестийн хувьд ч биш, бүхэл төслийн хувьд үр ашиг гаргаж, системийн чанарыг нэмэгдүүлэх боломжтой.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Хэрэглэсэн эх сурвалжууд:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.testing.com/writings/automate.pdf"&gt;When Should a Test Be Automated?&lt;/a&gt; - Тэстээ автоматжуулах уу үгүй юу? Автоматжуулснаар олох ашиг их үү, алдах зүйл их үү? Автомат тест маань хир урт настай бол? Автомат тестэд орж байгаа код хир тогтвортой вэ? Хэрэв тестүүдээ автоматжуулахаар зэхэж байгаа бол энэ өгүүллийг уншиж үзээрэй.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www-128.ibm.com/developerworks/rational/library/4865.html"&gt;Four lessons for software testers (and their managers)&lt;/a&gt; - Тэстийн багт байх ёстой зан чанаруудын тухай-үргэлж шинийг эрэлхийлж, тэстлэж буй кодоо ухаж шинжиж, дэд хэсгүүдийг интерграц хийж, өөрчлөлтийг ухамсарладаг байх ёстой.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.io.com/%7Ewazmo/papers/seven_steps.html"&gt;Seven Steps to Test Automation Success&lt;/a&gt; - Тэстийг автоматжуулах ажлыг мөн л системийг хөгжүүлэх процессийн дагу хийхийн сацуу, онцлог шинж чанаруудыг тусгах хэрэгтэй тухай маш сайхан бичсэн. Эндээс санаа авах зүйл маш их байгаа.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.informit.com/articles/article.asp?p=379757&amp;seqNum=1&amp;amp;rl=1"&gt;How Effective is Your Test Automation?&lt;/a&gt; - Автомат тэст үнэхээр тестлэх ёстой зүйлээ тэстлэж байгаа болов уу? Хүний оролцоогүй бүрэн автомат тэстэд яаж итгэх вэ? Тэстийн кодонд алдаа байвал яах вэ? Тестийг зөв хэрэгжүүлээгүй бол яах вэ? Гэх мэт автомат тестийн сэжигтэй цэгүүдийг авч үзсэн.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqa-test.com/w_paper1.html"&gt;Totally Data-Driven Automated Testing&lt;/a&gt; - Өгөгдлөөр жолоодогдох автомат тестийг хэрхэн хэрэгжүүлэх тухай, туршлагатай мэргэжилтний бичсэн өгүүлэл. Эндээс тэстийн төлөвлөгөөг хэрхэн автомат тэст болгох санааг олж авав.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;Тэстийн талаарх бусад эх сурвалжууд:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.softwaretestinginstitute.com/Publications.html"&gt;Software Testing Institute&lt;/a&gt; - Software Testing Publications - Тэстийн институтийн вэб дээрх тэстийн талаар хэвлэгдсэн номуудын жагсаалт. Номын жагсаалтаас гадна бусад мэдээлэл нь ч чухал.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqa-test.com/articles.html"&gt;Automated Testing Specialists - Articles&lt;/a&gt; - Автомат тест болон тестийн талаарх өгүүллүүд.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mavericksoftwareconsulting.com/books.htm"&gt;Maverick Software Consulting&lt;/a&gt; -- Books - Програм хангамжын тэст болон тэстийн автоматжуулалтын тухай номын жагсаалт.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kaner.com/articles.html"&gt;Cem Kaner - Publications&lt;/a&gt; - Тэстийн мэргэжилтэн Cem Kaner-ийн материалууд.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-9064189807995144697?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/9064189807995144697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=9064189807995144697' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/9064189807995144697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/9064189807995144697'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/03/blog-post.html' title='Тестийг автоматжуулах нь'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-1250965556131220458</id><published>2007-02-28T13:43:00.000+08:00</published><updated>2007-02-28T16:03:44.941+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming paradigm'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='practice'/><category scheme='http://www.blogger.com/atom/ns#' term='Defensive programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming by Contract'/><category scheme='http://www.blogger.com/atom/ns#' term='Design by Contract'/><title type='text'>Defensive programming</title><content type='html'>&lt;div style="text-align: right;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Төгс програм гэж байхгүй.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Жишээ:&lt;/span&gt; Та зам гарах гэж байна гэж бод. Өмнө тань явган хүний гарц байна, ногоон гэрэл асаж байна, гэвч нэг машин дөхөн ирж явна, ер зогсох шинжгүй, хурдаа саалгүй ойртсоор. Энэ тохиолдолд та машин гарцан дээр ирээд зогсоно гэж итгээд зам хөндлөн гарах уу? эсвэл машин үнэхээр гарцанд тулаад зогсохыг хүлээх үү?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Жишээ:&lt;/span&gt; Цайны газар ороод хоол идэхийнхээ өмнө халбага сэрээгээ арчдаг уу? эсвэл үйлчлэгчийн авчирч өгсөн чигээр нь хоолондоо дүрдэг үү? Дэлгүүрээс хүнсний зүйл авахдаа хугацааг нь хардаг уу? шууд сагсандаа хийдэг үү?&lt;br /&gt;&lt;br /&gt;Дээрх жишээнүүдээр сэрэмжтэй, хянуур чанарын тухай авч үзэх гэсэн юм. Програм бичихэд ч мөн хянуур сэрэмжтэй байхыг &lt;span style="font-weight: bold;"&gt;Defensive programming&lt;/span&gt; гэдэг нэр томъёогоор илэрхийлдэг. Ингээд Defensive programming -ийг хэрэгжүүлэх тухай авч үзье.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Design_by_Contract"&gt;&lt;span style="font-weight: bold;"&gt;Design by Contract буюу Programming by Contract&lt;/span&gt;&lt;/a&gt;. Хүмүүсийн харилцааг зохицуулах амаргүй ажиллагааг шийдэхийн тулд гэрээ контракт гэдэг зүйл бий болжээ. Гэрээнд аль аль талын хүлээх үүрэг, эдлэх эрх болоод гэрээгээ зөрчвөл юу болох талаар заавал оруулсан байх учиртай. Гэрээнд гарын үсгээ зурсан л бол болоо-гэрээнд заасан эрхээ эдлээд, хүлээх үүргээ биелүүлээд явахад асуудал үгүй. Аль нэг тал гэрээгээ зөрвчвөл юу болох нь ч тодорхой.&lt;br /&gt;&lt;br /&gt;Амласнаасаа илүү ч үгүй, дутуу ч үгүйг хийдэг програмыг сайн програм гэвэл, амласан зүйлыг тусгах гэрээ байх ёстой болно, тодорхой зүйл амлаж байгаа бол тодорхой эдлэх эрхтэй байх нь ч зүй. Аливаа програм гүйцэтгэх ажлаа ямар нэг функц процедураар хэрэгжүүлэх тул гэрээ нь функц дээр хэрэгжих болно. (DBC-гэдэг ойлголтыг анх Bertrand Meyer гэдэг хүн Eiffel хэл дээр хэрэгжүүлжээ. Түүний бичсэн "Object-Oriented Software Construction" гэдэг номыг уншаарай.) DBC-нь дараах 3-н зүйл дээр тулгуурлана:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Preconditions.&lt;/span&gt;  Функц ажиллахаас өмнөх нөхцөл. Шаардлага нь биелээгүй тохиолдолд функц ажиллахгүй. Тухайн функцыг дуудаж байгаа тал өмнөх нөхцөлийг биелүүлсэн байх үүрэгтэй. Тухайлбал параметрүүд зөв байх.&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Postconditions. &lt;/span&gt; Функц юу биелүүлсэн байх ёстойг шалгана. Хэрэв эдгээр нөхцөлүүд биелэхгүй бол гэрээгээ биелүүлээгүйд тооцогдоно.&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Class invariants.&lt;/span&gt; Функц ажиллаж дуусахад хөндөгдөхгүй үлдэх ёстой шинж чанарууд. Тухайлбал классын зарим гишүүн хувьсагчдыг өөрчлөхгүй байх нөхцөл байж болно.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Assertion_%28computing%29"&gt;Assertions&lt;/a&gt;.&lt;/span&gt; Хэрэглэгчийг(функцийг дуудаж байгаа бусад функц, бусад програмчид, эцсийн хэрэглэгчид) ямар нэг зүйлийг хийхгүй гэж &lt;span style="font-style: italic;"&gt;тооцоод&lt;/span&gt; хэрэглэж болох нүх сүв орхиж ерөөс болохгүй. Хэрэв ямар нэг зүйл хэзээ ч тохиолдох ёсгүй бол түүнийг тохиолдохгүй гэж үзвэл туршлагатай програмчид заавал үнэмшиж батлахыг эрмэлздэг ба үүнд Assertion-ийг хэрэглэдэг. Тухайн нөхцлийг биелэх, эсвэл биелэхгүйг дотроо &lt;span style="font-style: italic;"&gt;тооцоод&lt;/span&gt; програмаа бичнэ гэдэг нь алдаа гаргахын эхлэл болдог. Дотроо тэгж бодож байгаа бол код дотроо ч оруулж өгөх хэрэгтэй. Гэрээ биелэж байгаа эсэхийг шалгахын тулд &lt;span style="font-style: italic;"&gt;Preconditions болон &lt;/span&gt;&lt;span style="font-style: italic;"&gt;Postconditions&lt;/span&gt; дээр Assertion-ийг ашигладаг. Assertion нь хөгжүүлэлтийн үед алдаа хайж дэбагдах цагийг урьчилан сэргийлэх боловч жинхэнэ орчинд Assertion-ийг тэр хэвээр үлдээвэл ажиллагааны хурдад нөлөөлөлх талтай. Иймд бодит орчинд Assertion-ийг тайлбар болгосноор тэр нь кодын баримтжуулалт болох ёстой юм.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Програмчлалын хэл болон Компайлерийн боломжууд&lt;/span&gt;. Эдгээрийг бололцооны хирээр ашиглах хэрэгтэй. Тухайлбал Eiffel хэл төрөлх байдлаараа contract гэсэн ухагдахуунтай. Мөн компайлерийнхээ анхааруулгын түвшинг хамгийн хатуу дээр тавьж хөгжүүлэлтийн үед ашиглах нь түгээмэл.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Алдааны код болон Онцгой тохиолдлуудын боловсруулалт&lt;/span&gt;. Хөгжүүлэлт хийж байгаа хэлэнд тань Онцгой тохиолдол(Exception) гэсэн ойлголт байдаг бол аль болох боломжит бүх тохиолдлуудыг тооц. Онцгой тохиолдолыг барьж авсан мөртлөө юу ч хийхгүй чимээгүй өнгөрөөх нь амиа хорлож байгаатай ижил гэдгийг ямагт анхаар.(Never do empty catch!) C дээр бол функцыг биелсний дараа алдааны кодыг шалгаж бүх юм хэвийн болохыг үнэмших нь өлзийтэй.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Юу хийж байгаагаа Яагаад хийж байгаатай нь бичих&lt;/span&gt;. Кодынхоо тайлбарт юу хийж байгаагаа бичихын сацуу, яагаад гэдгийг оруулж бай. Эхэнд дурдсан &lt;span style="font-style: italic;"&gt;гэрээ&lt;/span&gt; гэдэг зүйлээ улам батжуулж буй хэрэг. Бусад програмчид кодыг хараад яагаад ингэж байгааг ойлгох юм бол функцыг буруу хэрэглэх нь багасах болно.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;::Дүгнэлт::&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;Defensive programming гэдэг нь нарийн төвөгтэй олон хэсгүүдээс бүтсэн, олон хөгжүүлэгчид оролцсон, зохицуулахад амаргүй нөхцөл байдалд програмыг хийхэд бусад хэсгээс өөрийн кодыг хамгаалах нэг тактик юм. Ингэж чадсанаар хаана ямар хэсэгт буруу байгааг төвөггүйгээр, маргаангүйгээр шууд хэлж чадах болно-мэдээж цаг, хүч хэмнэнэ. Дээр нь хариуцлага тогтоно. Гэвч хэтэрхий Defensive байж бас болохгүй. Хэзээ ч төгс код гэж байдаггүй учраас defensive programming хэрэглэж байгаа ч, нөгөө талаас мөн л төгс код байдаггүй тул хэтэрхий Defensive байж болохгүй-Defensive хэсэг маань өөрөө хэт томорвол алдаатай болох магадлал ихэснэ. Эцэст нь өөрийнхөө кодод ч Defensive хандлагаар хандах хэрэгтэй. Зөв юм хийж байгаадаа итгэлтэй байх сайхан шүү дээ.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Холбоосууд&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://archive.eiffel.com/doc/manuals/technology/contract/"&gt;Building bug-free O-O software: An introduction to Design by Contract&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/gen/design/defensiveprogramming.asp"&gt;Defensive programming - The Code Project - Design and Strategy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-02-2001/jw-0216-cooltools.html?page=1"&gt;iContract: Design by Contract in Java&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.artima.com/intv/contracts.html"&gt;Design by Contract:A Conversation with Bertrand Meyer, Part II&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.embedded.com/1999/9912/9912feat1.htm"&gt;Rules for Defensive C Programming&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-1250965556131220458?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/1250965556131220458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=1250965556131220458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/1250965556131220458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/1250965556131220458'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/02/defensive-programming.html' title='Defensive programming'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-8398252236891872282</id><published>2007-02-21T13:16:00.000+08:00</published><updated>2007-02-21T18:28:23.988+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firewall'/><category scheme='http://www.blogger.com/atom/ns#' term='comment'/><category scheme='http://www.blogger.com/atom/ns#' term='translation'/><title type='text'>Галт хана уу?, Галын хана уу?</title><content type='html'>Сүлжээг гадны халдлагаас хамгаалдаг &lt;a href="http://en.wikipedia.org/wiki/Firewalls"&gt;firewall&lt;/a&gt; гэдэг зүйл буй. Үүнийг монгол хэлнээ &lt;span style="font-style: italic; font-weight: bold;"&gt;галт хана&lt;/span&gt; гэж орчуулж хэрэглээд байдаг. Би ч мөн тэгж орчуулах нь зөв гэж боддог байлаа.&lt;br /&gt;&lt;br /&gt;Барилга барихад гал нэвтрүүлдэггүй хана буюу &lt;a href="http://en.wikipedia.org/wiki/Firewall_%28construction%29"&gt;firewall&lt;/a&gt; гэдэг зүйл байдаг ба тэр нь нэг өрөөнд гарсан галыг бусад өрөө рүү нэвтрэхгүй байлгах үүрэгтэй байдаг юм  гэнэ. &lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Галын хана&lt;/span&gt; муу эсвэл гал хэт их хүчтэй үед нэг өрөөнд гарсан гал бусад өрөө рүү дамжиж барилга тэр чигээрээ шатдаг байна.&lt;br /&gt;&lt;br /&gt;Компьютерийн сүлжээнд хэрэглэдэг firewall нь мөн дээрхтэй агаар нэг - Гаднаас орж ирэх галыг дотогш нэвтрүүлэхгүй байх үүрэгтэйгээс гадна, олон дэд сүлжээнүүдтэй тохиолдолд аль нэг сүлжээнд гарсан галыг бусад сүлжээ рүү дамжуулах ёсгүй. Дээд зэргийн нууцлалтай сүлжээ дэд хэсэг бүртээ галын ханатай байхын учир энэ юм. Мөн компьютер болгон өөртөө галын ханатай байж болно.&lt;br /&gt;&lt;br /&gt;Гал нь гаднах этгээдийг эсэргүүцэх хэрэгсэл биш гаднаас орж ирэх зүйл, харин хана нь тэрхүү галыг эсэргүүцэн хамгаалах утгатай байх нь. &lt;span style="font-style: italic;"&gt;Галт хана&lt;/span&gt; бус &lt;span style="font-style: italic;"&gt;Галын хана&lt;/span&gt; гэвэл зөв юм уу гэж бодлоо.&lt;br /&gt;&lt;br /&gt;Жич: Гүүглийн хайлтаар &lt;a href="http://images.google.mn/images?q=firewall"&gt;firewall&lt;/a&gt; гээд хайвал галыг хааж байгаа(галд шатаж байгаа хана бус) хананы зургуудыг олж харж болно.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-8398252236891872282?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/8398252236891872282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=8398252236891872282' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8398252236891872282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/8398252236891872282'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/02/blog-post_21.html' title='Галт хана уу?, Галын хана уу?'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-2348511948376528811</id><published>2007-02-12T11:37:00.000+08:00</published><updated>2007-02-13T19:17:12.003+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pragmatic'/><category scheme='http://www.blogger.com/atom/ns#' term='practice'/><category scheme='http://www.blogger.com/atom/ns#' term='boiled frogs'/><category scheme='http://www.blogger.com/atom/ns#' term='stone soup'/><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>Чулуутай шөл, Буцалсан мэлхий</title><content type='html'>&lt;div style="text-align: right;"&gt;&lt;span style="font-size:85%;"&gt;"&lt;a href="http://ochko.blogspot.com/2007/01/blog-post_29.html"&gt;Прагматик програмчин&lt;/a&gt;" номын 1-р бүлгээс&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Дайн дуусч, гэр лүүгээ буцаж явсан гурван цэрэг нилээд өлссөн байлаа. Тэгтэл нэгэн жижиг тосгон дайралджээ. Өлссөн цэргүүдийг тосгоныхон цадтал нь дайлах байх гэж бодсоор тосгон руу очтол хэн ч тэгсэнгүй. Дайны тарчиг цагт тосгоныхон хоол хүнсээр гачигдаж хашраад, байгаа бүхнээ бусдаас нуудаг болсон байлаа.&lt;br /&gt;&lt;br /&gt;Гэвч цэргүүд тогоонд ус хийж буцалгангаа дотор нь гурван чулуу хийчхээд, эгээ л амтат шөл болох гэж байгаа мэт галаа тойрон сууцгаав. Гайхсан тосгоныхон харахаар тойрч ирэхэд, "Энэ бол чулуутай шөл" -гэж тайлбарлав. "Тэгээд дотор нь зөвхөн чулуу л байгаа хэрэг үү?" -гэж гайхахад, "Тиймээ, гэхдээ хэдэн лууван нэмээд хийчихвэл хамаагүй амттай болох дог шүү" -гэвэл нэг нь гүйж хариад зоориноосоо хэдэн лууван авч ирлээ.&lt;br /&gt;&lt;br /&gt;Хэдэн хормын дараа, "Ингээд л болоо гэж үү?" -хэмээн хэн нэг нь бас л асуув. -Тийм, гэвч хэдхэн төмс байвал ч бүр янзтай болно доо. Тосгоныхноос ахиал нэг нь зоорь луугаа гүйв.&lt;br /&gt;&lt;br /&gt;Ингээд нэг цаг өнгөрөхөд цэргүүд шөлөндөө гахайн мах, байцаа, сонгино, давс зэргийг нэмж дөнгөв. Хүн болгон зооринд байгаа зүйлээсээ орц нэмсээр байлаа.&lt;br /&gt;&lt;br /&gt;Ийнхүү хэсэг хугацааны дараа тэд тогоо дүүрэн уур нь савссан амтат шөлтэй болоход цэргүүд тогооноос чулуунуудыг гаргаж хаяаад тосгон даяараа ойр хавьд идэж үзээгүй хоолыг хамтдаа сууж зооглоцгоов.&lt;br /&gt;&lt;br /&gt;Энэхүү чулуутай шөлний түүхэнд хэдийвээр цэргүүд тосоныхныг мэхлэж зоорь луу нь гүйлгэж байгаа мэт боловч, гол нь цэргүүд өдөөгч болж, тосгоныхон ганц нэгээрээ хийж дөнгөхгүй үр дүнг хамтран бий болгож байгаа юм. Эцсийн дүнд бүгд хожсон.&lt;br /&gt;&lt;br /&gt;Тэгэхээр одооноос цэргүүдийн аргыг хэрэглэж сур.&lt;br /&gt;&lt;br /&gt;Тухайлбал чи ямар нэг зүйлийг хийхэд юу юу шаардагдах болоод яаж хийхийг мэдэж байж болно. Бүх систем нүдэнд чинь төсөөлөгдөөд байдаг, харин хүмүүсээс очоод зөвшөөрөл хүсэх юмуу тусламж гуйхад янз бүрийн шалтгаан, удаашрал, эсэргүүцэлтэй тулгарчихдаг. Хүн болгон өөрийн эрх ашгийг хамгаалах ба, өөрт байгаа нөөцөөс(цаг, санхүүжилт) амар өгөхгүй.&lt;br /&gt;&lt;br /&gt;Иймд тэдэнд эхлээд чулуутай шөлөө үзүүлэх хэрэгтэй. Үнэхээр болох бүтэх гэж байгаа юм шиг ажлаа эхэл, тэдэнд бараг болчихсон юм шиг харуул. Мэдээж чулуу учраас тэд ингээд болоо юмуу гэж асуух вий. Энэ бол чиний хүлээж байсан зүйл юм-Тэр үед нь нэг их чухал биш юм шиг царайлаад, -Бараг л  тийм дээ, гэхдээ одоо бид иймхэн юм, ингээд нэмчихвэл бүр илүү болно байх гэж хэлээд орхичих. Тэгээд хүлээж байхад тэд аяндаа яг хүсэж байсан юмыг чинь өгөхөөр/нэмэхээр &lt;span style="font-style: italic;"&gt;өөрсдийн санаачлагаар&lt;/span&gt; ирэх болно. Хүмүүст дараа дараагийн ахицуудыг бага багаар нь цухалзуулахад тэд алхам алхамаар ахиулсаар цогц үр дүнд аажим хүрнэ. Хэрэв чи пал хийтэл бүгдийг нэг мөсөн хийх гэж оролдсон бол хана мөргөж, хов хоосон хоцрох байсан байж мэдэх юм.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Зөвлөгөө 5. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Өөрчлөлтийг өдөөж өг.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Нөгөө талаас:&lt;br /&gt;&lt;br /&gt;Чулуутай шөлний түүхийг тосгоныхны талаас авч үзвэл бага багаар ятгалгад автсан байдал харагдана.  Хэтэрхий бачим хүрээнд анхаарлаа төвлөрүүлсэн гэж ойлгож болно. Тосгоныхон зөвхөн чулууны тухай бодоод, бусад зүйлийг мартснаас цэргүүдийн арганд орсон. Бидний өдөр тутмын амьдралд ч ийм нөхцөл байдал бидний толгойг эргүүлэхэд бэлэн байж л байдаг билээ. Төслүүд үл анзаарагдам аажмаар хяналтаас гарчихсан байдаг. Системийн түвшний алдаа сэв, үл мэдэгдэм бага зүйлсээс үүсэж эхэлсэн байдаг. Ингэж явсаар ихэнх төслүүд нэг л өдөр хугацаанаасаа хоцорч эхэлдэг. Систем анхны шаардлагаасаа ганц нэгхэн шинж чанараар зөрсөөр нэг мэдэхэд тэс ондоо болж хувирдаг. Засварууд ар араасаа нэмэгдсээр анхны кодоос юу ч үлдэхгүй болтлоо өөрчлөгддөг. -Үл ажиглагдам жижиг зүйлс хуримтлагдсаар баг болоод ёс дэгийг эвддэг юм.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Зөвлөгөө 6.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Зургийг бүхэлд нь хар.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Үүнийг үнэн эсэхийг нь туршиж үзээгүй ч мэлхийг буцалж буй усанд шидэхэд ойж байгаа мэт үсрээд гарчихдаг гэнэ. Харин мэлхийг хүйтэн усанд хийгээд бага багаар халаахад тэрвээр усны хэм нэмэгдэж байгааг анзааралгүй байсаар болчихдог байна.&lt;br /&gt;&lt;br /&gt;Буцалсан мэлхийн жишээ бол Хагархай цонхны онолоос ондоо юм. Хагархай цонхны тохиолдолд хэн ч хайхрахгүй зүйл гэж бодсоноос баг бүхэлдээ замбараагүйтэлтэй тэмцэх хүсэлгүй болдог. Харн мэлхий бол халуун нэмэгдэж байгааг л мэдрээгүй.&lt;br /&gt;&lt;br /&gt;Битгий мэлхий шиг байгаарай. Зургийг томоор нь хар. Зөвхөн өөрөө юу хийж байгаагаа бус, ойр орчиндоо юу болж байгааг тогтмол эргэн харж шинжиж бай.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Даалгавар.&lt;/span&gt;&lt;br /&gt;Цэргүүд тосгоныхныг аажмаар хуурсан, гэвч тэдний өдөөсөн өөрчлөлт нь бүгдэд сайн зүйл болсон. Гэтэл мэлхийг ч мөн аажим хуурсаар түүнд муу зүйл болж төгсдөг. Одоо та өөрийн бусадтай хамтарч хийх ямар нэг ажлыг өдөөгч дүрд тоглож амжуулах гээд үз. Өөрийн өдөөж байгаа өөрчлөлтөөр чулуутай шөл хийж байна уу, мэлхийтэй шөл хийж байна уу гэдгээ ялгаж чадах уу? Хариулт обьектив уу, субьектив уу?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-2348511948376528811?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/2348511948376528811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=2348511948376528811' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2348511948376528811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2348511948376528811'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/02/blog-post_12.html' title='Чулуутай шөл, Буцалсан мэлхий'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-5697681542779163501</id><published>2007-02-09T10:18:00.000+08:00</published><updated>2007-02-08T13:00:58.992+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open seminar'/><category scheme='http://www.blogger.com/atom/ns#' term='usi dn'/><title type='text'>Нээлттэй семинар зохиогдож эхэллээ</title><content type='html'>Өнөөдрөөс бид &lt;a href="http://dn.usi.mn/tiki-index.php?page=OpenSeminar"&gt;нээлттэй семинар&lt;/a&gt; зохион явуулж эхэллээ. Мэргэжил нэгт нөхөдтэйгээ мэдлэг солилцох, ойртож нягтрах, оюутан залууст зүг чиг мэдээлэл өгөх зорилготой юм.  Энэ семинарууд нь хэн ч оролцох, илтгэл хийхэд нээлттэй. &lt;a href="http://dn.usi.mn/tiki-view_forum.php?forumId=1"&gt;Нийтийн хэлэлцүүлгээр&lt;/a&gt; ямар сэдвээр семинар хийх, хэн бэлдэж явуулах, хаана хэзээ хийх зэргийг ярилцах болно. Ингээд та бүхэн хэлэлцүүлэгт оролцож өөрийн сонирхож буй сэдвийн талаар яриа өрнүүлнэ гэдэгт итгэж байна. Нээлттэй мэдлэг дэлгэрэх болтугай.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-5697681542779163501?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/5697681542779163501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=5697681542779163501' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/5697681542779163501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/5697681542779163501'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/02/blog-post.html' title='Нээлттэй семинар зохиогдож эхэллээ'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-2515537025273780779</id><published>2007-01-30T18:04:00.000+08:00</published><updated>2007-01-30T16:25:10.453+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='machine translation'/><category scheme='http://www.blogger.com/atom/ns#' term='japanese'/><category scheme='http://www.blogger.com/atom/ns#' term='mongolian'/><title type='text'>Япон-Монгол орчуулагч</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Оршил буюу зорилго&lt;/span&gt;&lt;br /&gt;Японтой хамтарч ажиллахад тулгардаг хамгийн анхны бэрхшээл бол хэлний гачаал. Япон хэл сурах хэрэгтэй, гэхдээ хүн бүхэн сурах хэрэгтэй юу? Тэгвэл сайн орчуулгын програмтай болчихвол энэ бэрхшээлийн нилээд хэсгийг хөнгөвчилж өгөх нь мэдээж.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Үндэслэл буюу боломж&lt;/span&gt;&lt;br /&gt;Та Монгол, Япон хэлүүд хоорондоо нилээд төстэй гэж дуулсан уу? Сүүлийн хэдэн сар жаахан үзсэн чинь үнэхээр төстэй юмнууд байх шиг байна аа. Гэхдээ үсэг нь бол шал өөр. Япон хэлэнд ханз, хирагана, катакана гэж 3 янзын үсэг бий, ханз бол тоо томшгүй олон гэсэн. Дүрмэнд нь харин монгол хэлтэй адил төстэй бүтэц их бий. Боломжын хэмжээнд орчуулгын програм хийчихэж болмоор ч юм шиг. Ямар ч байсан Англи-Монгол орчуулгын програм хийхээс лав хэд дахин амархан гэж баттай хэлж чадна.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Санал болон судлагаа&lt;/span&gt;&lt;br /&gt;Ер нь бол хэлний орчуулга гэдгийг нэг ерөнхий програм хийчихээд, хэлний дүрэм болоод өгүүлбэрийн бүтэц, шинэ үг зэргийг бүртгээд өргөжүүлээд явах боломжтой. Ингэж хийх нь л хамгийн оновчтой болов уу. Төрөл бүрийн орчуулгын бэлэн &lt;a href="http://en.wikipedia.org/wiki/List_of_Machine_Translation_software"&gt;багц модулиуд ч байдаг&lt;/a&gt; юм байна. Өнгөц судлахад &lt;a href="http://www.antlr.org/"&gt;ANTLR&lt;/a&gt; боломжын юм шиг санагдлаа. Бас &lt;a href="http://intertrans.sourceforge.net/"&gt;Interlingua&lt;/a&gt; гээд нээлттэй төсөл байна. Гол санаа нь аль ч хэл рүү хөрвөх боломжтой дундын хийсвэр хэлний бүтэц үүсгэх юм. Ингэж чадсан байхад ямар нэгэн хэлийг Interlingua хэл дээр тодорхойлоод л тухайн хэлийг аль ч хэл рүү орчуулах боломжтой болох юм. Гэхдээ миний санахад энэ нь маш хэцүү. Харин ANTLR дээр Монгол ба Япон хэлний дүрмийг оруулах гээд үзвэл яадаг бол гэж. Хамгийн чухал нь хоёр хэлний хооронд хөрвөхүүлэх дүрмээ тодорхойлох юм. Заавал ANTLR байх ч албагүй. Дүрэм байхад дараа нь түүнийг боловсруулах програмыг янз бүрээр хийж болно.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Эхний ажил&lt;/span&gt;&lt;br /&gt;Иймд хэлний бүтэцийг тогтоох(компьютэрээр боловсруулах боломжтой хэлбэрээр) төслийг тусад нь хэрэгжүүлсэн ч болох юм. Үүний тулд хэлний бүтцийг тодорхойлох форматыг бий болгох нь хамгийн эхний ажил болж байна.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Хэрэгжүүлэх хэлбэр&lt;/span&gt;&lt;br /&gt;Энэ төслийг &lt;a href="http://sourceforge.net/"&gt;sourceforge&lt;/a&gt; дээр нээлттэй байдлаар эхлүүлвэл оролцох хүн байна уу? Хэлний зүйг тодорхойлох форматтай болоодохвол жижхэн дүрэм оруулаад, програмынхаа анхны хувилбарыг япон хэл мэддэг хэрэглэгчдээр туршуулах замаар дүрмээ цааш баяжуулаад явах юм. Хэрэглэгчид програмыг туршаад андуу ташаа орчуулж байвал алдааны жагсаалт руу яаж зөв орчуулгах ёстойг бүртгэнэ(мэдээж нилээн дэлгэрэнгүй мэдээлэл оруулна), хөгжүүлэгч түүний дагуу орчуулгын дүрэмд нэмэлт өөрчлөлт, засвар зэргийг хийнэ, ингээд шинэчлэгдсэн дүрмийг програм сэрвэр дээрээс автоматаар татаж авдаг байвал зүгээр. Хэрэглэгчийн өчигдөр алдаа руу бүртгэсэн дүрэм өнөөдөр програмаа ажиллуулж үзэхэд засагдчихсан байвал, гоё биш гэж үү. Зарим хэрэглэгчид өөрсдөө хэрэгцээ болоод онцлог нөхцөлдөө тааруулаад дүрмэнд локал өөрчлөлт оруулдаг байвал бүр таатай. Ингээд дугуй нэгэнт өнхрөөд эхэлчихвэл хөгжүүлэлт маань хэрэглэгчдээр жолоодогдож, дүрэм маань тасралтгүй сайжраад л байх болно.&lt;br /&gt;&lt;br /&gt;Санаа оноо, оролцох сонирхолтой хүмүүс байвал бичээрэй. Хүлээж байгаа шүү.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-2515537025273780779?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/2515537025273780779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=2515537025273780779' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2515537025273780779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/2515537025273780779'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/01/blog-post_1314.html' title='Япон-Монгол орчуулагч'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-6904381421075229015</id><published>2007-01-30T16:05:00.000+08:00</published><updated>2007-01-31T13:33:59.929+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hpc'/><category scheme='http://www.blogger.com/atom/ns#' term='Supercomputers'/><category scheme='http://www.blogger.com/atom/ns#' term='clustering'/><category scheme='http://www.blogger.com/atom/ns#' term='advice'/><title type='text'>Тооцооллын хүчийг ашиглая</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Supercomputer"&gt;Сүпер компьютер&lt;/a&gt;ийг юунд хэрэглэдэг, ямар ач холбогдолтой болохыг тоочоод барахгүй. Сансрын уудмаас эхлээд гариг дэлхийн цаг агаарыг хэдэн жилээр урьдчилан тооцоолж, хүний генийн шинж, физикийн ярвигтай асуудлууд, биологи, хими, нанотехнологи, молекулын загварчлал, өвчнийг анагаах эмийн найрлага, эдийн засгийн прогноз, цөмийн зэвсэг, батлан хамгаалах, криптограф гээд тоо томшгүй олон салбарт ашигладаг.&lt;br /&gt;&lt;br /&gt;Өнөө цагт аливаа улс орныг хичнээн сүпер компьютертэй, тэдгээр нь хир хүчин чадалтай гэдгээр тухайн гүрний хүч чадал, техник технологийн хөгжлийг үнэлж болно гэхэд хилсдэхгүй.&lt;br /&gt;&lt;br /&gt;Дэлхийн хамгийн хурдан сүпер компьютерүүдийг &lt;a href="http://www.top500.org/"&gt;&lt;/a&gt;жилд хоёр удаа шалгаруулж &lt;a href="http://www.top500.org/"&gt;Top 500 сайт&lt;/a&gt; дээр гаргадаг. &lt;a href="http://top500.org/lists/2006/11"&gt;2006 оны сүүлийн хагасын&lt;/a&gt; байдлаар &lt;a href="http://top500.org/system/7747"&gt;IBM BlueGene/L&lt;/a&gt; систем 280.6 teraflops (секундэд 280 трилион үйлдэл) -оор нэгдүгээрт жагсаж, эхний 10 дотор &lt;a href="http://top500.org/site/2540"&gt;Испани&lt;/a&gt;, &lt;a href="http://top500.org/site/371"&gt;Франц&lt;/a&gt;,  &lt;a href="http://top500.org/site/690"&gt;Японы&lt;/a&gt; системүүд багтаж чаджээ.&lt;br /&gt;&lt;br /&gt;Сүпер компьютер бүтээхэд асар их хөрөнгө хүч шаарддаг учраас сүүлийн үед &lt;a href="http://en.wikipedia.org/wiki/Grid_computing"&gt;Грид&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Computer_cluster"&gt;Кластер&lt;/a&gt; технологиудыг өргөнөөр ашиглах болсон. Тухайлбал &lt;a href="http://www.seti.org/"&gt;SETI төсөл&lt;/a&gt; -сансраас ирэх радио дохиог шинжилж биднээс өөр ухаант бие сансрын уудамд байгаа эсэхийг хайхдаа грид технологийг ашигладаг. Хэрвээ та сонирхож байвал өөрийн компьютерийн зарцуулагдахгүй байгаа хүчин чадлыг энэ төсөлд хандивлаж болно. Энэ сүлжээний нийт тооцооллын хүч жилийн өмнө хамгийн хурдан сүпер компьютэрийн хүчин чадлаас давсан гэсэн мэдээ байсан. Грид нь тархсан байрлалтай компьютерүүдээр том хэмжээний тооцооллыг хувааж бодуулах зарчмаар ажилладаг. Тухайн бодлогын хуваагдах шинжээс маш их хамааралтай. Харин кластер бол олон тооны жирийн компьютерүүдийг  нэгдсэн зохион байгуулалттайгаар ажиллуулах технологи юм.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://searchopensource.techtarget.com/originalContent/0,289142,sid39_gci1237399,00.html"&gt;Грид&lt;/a&gt; болон &lt;a href="http://www.linuxhpc.org/"&gt;Кластерт Линуксыг&lt;/a&gt; өргөнөөр ашиглаж байна. Тухайлбал &lt;a href="http://www.beowulf.org/"&gt;Boewulf&lt;/a&gt; - нээлттэй эх бүхий линукс кластер. Цаашлаад нээлттэй эх бүхий &lt;a href="http://terracotta.org/"&gt;Java кластер систем&lt;/a&gt; ч байдаг. Ингээд судлавал хямд үнэ бүхий жирийн компьютерүүд дээр нээлттэй эх бүхий системүүдийг суурилуулснаар кластер систем босгож болох юм.&lt;br /&gt;&lt;br /&gt;Манай Улсад өндөр хүчин чадалтай тооцооллын төвүүд байдаг эсэхийг тодорхой мэдэхгүй ч, хэрэгтэй гэдэг нь мэдээж юм. Хамгийн гол нь өндөр хүчин чадалтай тооцоолуурт хүнд бодлого хэрэгтэй, тооцоолох ажил хэрэгтэй, бодлогын хариу нь бидэнд ач тусаа өгдөг байх хэрэгтэй. Тэгвэл тэр ажил, судалгаа шинжилгээ нь манайд байна уу? Шинжээч судлаачид маань судалгаа шинжилгээндээ тооцоолуурыг ашиглаж сурах, шинжилгээ судалгаагаа орчин үеийн тооцооллын чадамж бололцоонд тулгуурлаж, урьд нь боломжгүй байсан зүйлсийг хийж болно гэдгийг ойлгох нь хамгийн наад захын нөхцөл юм.&lt;br /&gt;&lt;br /&gt;Судалгаа шинжилгээнд тань нарийвчлалтай, асар их хурдтай тооцоолол зайлшгүй хэрэгтэй бол бид өнөөдөр өндөр хүчин чадалтай тооцоолуурыг харьцангуй хямд өртөгөөр бүтээж чадахаар болсоон.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23957702-6904381421075229015?l=ochko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ochko.blogspot.com/feeds/6904381421075229015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23957702&amp;postID=6904381421075229015' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6904381421075229015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23957702/posts/default/6904381421075229015'/><link rel='alternate' type='text/html' href='http://ochko.blogspot.com/2007/01/blog-post_30.html' title='Тооцооллын хүчийг ашиглая'/><author><name>Маахай Л.Очирхуяг</name><uri>https://profiles.google.com/101381802713098409016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-ftbG8ItanZo/AAAAAAAAAAI/AAAAAAAAAAA/3NWuWE3Lx-o/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23957702.post-1983134827563606299</id><published>2007-01-29T15:28:00.000+08:00</published><updated>2007-02-12T15:09:39.814+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pragmatic'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='practice'/><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>Прагматик програмчин</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.pragmaticprogrammer.com/ppbook/index.shtml"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_HBpM_2O-5ds/RbzQpf0m5YI/AAAAAAAAAD0/6PUUqmi7OEQ/s200/020161622X_s.jpg" alt="" id="BLOGGER_PHOTO_ID_5025120695573996930" border="0" /&gt;&lt;/a&gt;"&lt;span style="font-style: italic;"&gt;Прагматик&lt;/span&gt;" гэдэг нь "&lt;span style="font-style: italic;"&gt;туршлагажсан&lt;/span&gt;" гэсэн утгатай латин үнээс гаралтай, харин тэр латин үг нь "&lt;span style="font-style: italic;"&gt;хийх&lt;/span&gt;" гэсэн утгатай грек үгнээс үүсчээ. Энэ бол "&lt;span style="font-weight: bold;"&gt;хийх&lt;/span&gt;" тухай ном юм.&lt;br /&gt;&lt;br /&gt;Зарим өөрт чухал санагдсан зүйлсийг эргэн харахад зориулж тэмдэглэн бичсү.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Прагматик програмчин гэж хэн бэ?&lt;/span&gt;&lt;br /&gt;Хөгжүүлэгч бүр давтагдашгүй өөр өөрийн онцлог шинж, давуу болон сул тал, дуртай болон дургүй зүйлүүдтэй. Үсний засалт, хувцаслалт, хоби, зан араншин шигээ өөрийн гэсэн онцлогтой орчинг бүрдүүлж, өөрийн арга барилаар ажилладаг. Гэхдээ прагматик хөгжүүлэгчдэд байдаг түгээмэл шинж бас бий:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Дасан зохицох чадвар&lt;/span&gt;. Шинэ тэхнологи, шинэ арга барил туршиж оролдох төрөлхийн хорхойтой. Ямар нэгэн шинэ юмыг маш хурдан өөрийн болгож аваад, өмнөх мэдлэг чадвартайгаа хослуулж хэрэглэж чаддаг.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Сониуч.&lt;/span&gt; Асуулт асуух дуртай. Хөөх наадах чинь янзын. Яаж энийг хийсэн бэ? Ajax гэж ямаршуу юм байна? Ruby гэж яадаг хэл вэ? гэх мэтчилэн мэдэхгүй юмаа уг үндсээр мэдэж байж санаа амардаг. Шинэ тоглоомоо нэг ч тоглож үзээгүй байж задлаад тавьчихдаг хүүхэд байдаг даа.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Нухацтай.&lt;/span&gt; Аливаа зүйлд баримтгүйгээр итгэх нь ховор. Баттай баримтан дээр тулгуурлаж байж бодож цэгнэдэг.  &lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Бодит байдлыг эрхэмлэдэг.&lt;/span&gt; Алив асуудлын мөн чанарыг олохыг хичээдэг. Ингэснээр хир хэцүү болох, хир их хугацаа шаардагдахыг бодитоор дүгнэж чадах бөгөөд ийм учраас тэвчээртэй цөхрөлтгүй байдаг.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Өргөн мэдлэгэтэй.&lt;/span&gt; Технологийн маш өргөн хүрээг хамарсан мэдлэгэтэй байхыг хичээж ямагт шинэ мэдээлэлтэй хамт явдаг. Хийж байгаа ажилдаа холбоотой зүйлийг мэддэг байгаад зогсохгүй, ямагт шинэ талбарт шинэ зүйлд хүчээ сориход бэлэн байж чаддаг.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Прагматик програмчин ба баг&lt;/span&gt;&lt;br /&gt;Програм хөгжүүлэлт гэдэг бол инженерчлэл учраас багийн нэг гишүүн ганцаараа бие дааж шийдвэр хийх ёсгүй гэдэг буруу ойлголт юм. Энэ үзлийг архитектурч болоод гүйцэтгэгч нар толгойдоо шингээчих юм бол програм бичнэ гэдэг уйтгартай механик ажил болчихно. Ийм кодерууд жижигхэн асуудал тулгарахад архитектурч дээр очоод үүнийг яаж хийх вэ? дизайн дээр тусгагдаагүй байна гэх мэтчилэн асуудаг бол прагматик програмчин шийдэл гаргаж өөрийнхөө бодсоноор програмчилах дуртай. Иймд архитектурч хүн дизайныг хийхдээ програмчинд аль болох их эрх мэдэл олгохыг эрмэлзэх чухал.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Тасралтгүй оролдлого&lt;/span&gt;&lt;br /&gt;Английн Eton College нь 500-гаад жилийн түүхтэй өвгөн сургууль. Тэнд зочилсон нэгэн жуулчин цэцэрлэгчээс нь хашаан доторх зүлгийг яаж ийм сайхан болгосон тухай асууж гэнэ. -Их амархан, өглөө болгон шүүдрийг нь унагаагаад, өнжөөд нэг удаа засаад, долоо хоногт нэг удаа хогийг нь цэвэрлээд бай гэжээ. Тэгээд л болоо юу гэж жуулчин гайхахад, Үнэхээр тийм шүү, яг ингээд 500 жил үргэжлүүлвэл та ч гэсэн ийм сайхан зүлэгтэй болно гэсэн гэдэг.&lt;br /&gt;&lt;br /&gt;Хосгүй сайхан зүлгэнд өдөр бүр арчилгаа хэрэгтэй шиг сайн програмчин ч гэсэн өөртөө тогтмол арчилгаа хийж байх хэрэгтэй. Менэжмэнтийн зөвлөхүүд Кайзэн гэж япон үг иш татах дуртай байдаг. Энэ нь сайжруулалтыг бага багаар тасралтгүй хийх юм. Өдөр болгон өөрийн ур чадварыг бага багаар сайжруулж, гарын дорх багаж хэрэгсэлээ шинэ зүйлсээр арвижуулж байх хэрэгтэй.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Номын зохион байгуулалт&lt;/span&gt;&lt;br /&gt;Тухайн ном нь эхнээс төгсгөл гэсэн цуваа байдлаар бус харин өөрийн гэсэн агуулгатай жижиг хэсгүүдээс бүтсэн бөгөөд хэсэг бүрийн төгсгөлд холбогдох бусад хэсгүүдийн жагсаалт, өөрийгөө сорих даалгавартай. Чухал зүйлсийг онцолж тэмдэглэсэн 70 ширхэг  зөвлөгөө байгаа.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Урласан зүйлдээ санаа тавь.&lt;/span&gt; Сайн хийхгүй л юм бол програм хангамж хөгжүүлэх гэж суухын хэрэг юув?&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Ажлынхаа тухай бод.&lt;/span&gt; Юу хийж байгаагаа хийж байхдаа бод, ажлынхаа үр дүнг үнэлж цэгнэ. Дараа яаж хийхээ төлөвлө, хэрэгжүүл. Энэ маягаар тасралтгүй үргэлжлүүл. Аливаа зүйлийг бодолгүй бүү хийж бай. Хийж байхдаа бод.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Уучлал гуйх хэрэггүй, сонголт олго.&lt;/span&gt; Буруутныг хайх, хийхэд хэцүү байсан тухай шалтаг тоочихын оронд яавал болж бүтэхийг тайлбарла.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Хагархай цонхтой байж болохгүй.&lt;/span&gt; Алдаа сэв, тааруу код, муу дизайн, дутуу хэсэг зэрэг болохгүй зүйл харагдах л юм бол жижиг гэлтгүй тэр дор нь зас. Замбараагүй байдал аажим аажмаар үүсдэг.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Өөрчлөлтийг өдөөж өг.&lt;/span&gt; Хүмүүсийг хүчлэх хэцүү, түүний оронд ирээдүй ямар байхыг тэдэнд ойлгуулж, тэр сайхан зүйлийг байгуулахад оролцоход нь дэмжлэг үзүүл. Чулуутай шөлийг сана.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Зургийг бүхэлд нь хар.&lt;/span&gt; Жижиг зүйлд хэтэрхий анхаарлаа хандуулснаас ойр орчиндоо юу болоод байгааг анзаарахгүй өнгөрөхөөс болгоомжил. Буцалсан мэлхийг санаарай.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Чанарыг шаардлагын хэсэг болго.&lt;/span&gt; Чанарын шаардлагыг бодитоор тодруулахын тулд захилагчидтайгаа хэлэлц, тохиролц, ойлгуул.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Мэдлэгийн сандаа тогтмол хөрөнгө оруулалт хий.&lt;/span&gt; Өргөн хүрээтэй, риск багатай, ашигтай мэдлэгийг тогтмол эзэмш, мэдлэг эзэмших үйлийг дадал болгож хэвш. Хөрөнгө оруулагчид юу хийдэгтэй адилхан ханд.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Уншсан сонссон юмандаа нухацтай шинжилгээ хий.&lt;/span&gt; Хэвлэл мэдээллээр шуугих цуу, вендоруудын бүтээгдэхүүнээ магтсан өгүүлэл, ягшсан хуучимсаг үзэл зэргийг алсаас харж уншиж байгаа зүйлээ өөрийнхөө өнцгөөс авч үз. Дагаж бүү намир.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Юуг хэлэх, хэрхэн хэлэх, хоёулаа чухал.&lt;/span&gt; Маш сайхан санааг муухан илэрхийлэх юм бол ойлгож хүлээж авахад хэцүү гэдэг нь тодорхой. Сайхан санааг сайн илэрхийлж байж л сайн үр дүнд хүрнэ.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Өөрийгөө бүү давт.&lt;/span&gt; Систем дэх мэдлэг болгон цор ганцхан, бусад хэсэгтээ шууд нөлөө бүхий төлөөлөлөөр дүрслэгдэх ёстой.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Дахин ашиглахад амар байлга.&lt;/span&gt; Ашиглахад хэцүү зүйлийг хүмүүс хэрэглэхгүй. Хийгдчихсэн байгаа зүйлийг олж харах, холбож ашиглах боломжтой орчин нөхцөл бүрдүүл.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Хамааралгүй зүйлс бие биедээ нөлөөлдөггүй байх ёстой.&lt;/span&gt; Бие даасан, өөрийн гэсэн тодорхой ганцхан зорилготой хэсгүүдийг хий. Ортогональ чанар буюу Aspect байдлаар загварчил.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Эцсийн шийдвэр гэж байдаггүй.&lt;/span&gt; Ямар ч шийдвэр чулуун дээр сийлэгддэгүй. Аливаа шийдвэрийг эрэг дээрх элсэн дээр бичигдсэн гэж үзэж, өөрчлөлтийг төлөвлөгөөндөө оруул.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Байгаа олоход гэрэлт сум ашигла.&lt;/span&gt; Туршиж үзээд хир ойр тусч байгааг нь харах замаар байгаа олоход тань гэрэлт сум туслах болно. Бэлдээд, Галлаад, Чиглүүлээд,...&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Сурахын тулд прототайп.&lt;/span&gt; Прототайпыг суралцахын тулд хэрэглэ. Гол ач холбогдол нь бичиж байгаа кодондоо биш, сурж мэдэж авч байгаа зүйлдээ юм гэдгийг сана.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Тухайн салбарт нь ойртуулж програмчил.&lt;/span&gt; Хэрэглэгчийн хэл дээр дизайн ба програмаа хий.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Сүрпризээс зайлсхийхийн ту
