<![CDATA[Ulzii.com's Newest Posts]]> http://www.ulzii.com/rss.html Thu, 23 Feb 2012 00:18:45 +0100 Zend_Feed http://blogs.law.harvard.edu/tech/rss <![CDATA[Криллээр хялбар бичицгээе]]> http://www.ulzii.com/post/26/Криллээр-хялбар-бичицгээе.html Ямар нэг нэмэлт гарын драйвэр суулгалгүйгээр криллээр шууд бичих болон өөрийн вэб дээрээ хялбар суулгаж хэрэглэх боломжийг олгож байна. 

]]>
Sun, 27 Nov 2011 23:15:52 +0100
<![CDATA[Файрфокс дахь вэб хөгжүүлэгчид хэрэгтэй багажууд]]> http://www.ulzii.com/post/14/Файрфокс-дахь-вэб-хөгжүүлэгчид-хэрэгтэй-багажууд.html Вэб хөгжүүлэгчиддээ зориулаад өдөр тутмынхаа ажилд байнга хэрэглэж байдаг багажуудаасаа танилцуулахъя. Файрфокс дээр адд он болж ажилладаг болохоор суулгахад хялбар хаана л бол хаана ашиглаж болно гэсэн үг.

 

Firebug

Нэр нь нэг их сайхан боловч дотроо бол алт л агуулж байдаг эд дээ. Үүнийг ашиглаад  хөгжүүлж буй вэбийнхээ HTML кодыг хянах, форматыг шууд өөрчилж туршиж үзэх, сүлжээгээр ямар өгөгдөл яаж дамжиж байгааг харж болохоос гадна жаваскрипт дэбаг хийж болдог. Бас энэ адд он дээр суулгаж ажиллуулж болдог өөр нэмэлтүүд хүртэл гарсан байдаг. Мөн өөрийн жаваскрипт дотроос консолоор нь дамжуулаад дэбаг мэдээлэл харах боломжтой.

 

Web developer

Тоочоод баршгүй олон төрлийн функцууд бий. Чухлаас нь дурдвал вэб хөгжүүлэгч  вэбийнхээ HTML элементүүд, CSS формат болон Cookie-г харах, анализ хийх өөрчилөх боломжтой.

 

Tamper Data

Энэ багаж нь вэбийн HTTP протоколоор дамжиж байгаа өгөгдлүүдийг хянах боломжийг олгож өгдөг.

 

ColorZilla

Вэб хуудас дээр харагдаж байгаа ямар ч бичиг болон зургийн өнгүүдээс сонгож кодоор нь харуулдаг. Үүнээс гадна шинээр өнгө найруулж харж болох хэрэгсэлтэй. Энд тэндээс гоё өнгө харвал шууд л кодыг нь мэдээд авна гэсэн үг.

 

MeasureIt

Дөрвөлжин зурж өргөн өндөрийн хэмжээг нь харуулах маягаар элементүүдийн том жижиг хоорондын зай зэргийг мэдэж авах боломжтой. Дизайний гаргасан вэбийн загварыг HTML рүү шилжүүлэхэд их хэрэг болдог.

IE Tab

Вэбээ Internet Explorer дээр шалгаж үзэх гэвэл үүнийг ашиглаж боломжтой. Мэдээж IE компьютер дээр чинь байхгүй бол шүү дээ.

 

Read It Later

Ямар нэг гоё эсвэл чухал материал интэрнэт дээр олчихоод унших зав байхгүй байвал дараа уншихаар нөөцөлөх боломжийг олгодог.

 

Delicious

Хэрэгтэй вэб хаягуудаа нэг нэгдсэн газар тэгээд буцааж олоход амарханаар хадгалаад байвал ч хэрэгтэй дээ.

 

BabelFish

Хэрэгтэй материалууд л гадаад хэл дээр байгаад байвал үүний тусламжтайгаар сайн мэддэг хэл рүүгээ хөрвүүлээд унших боломжтой. Хэрэглэхэд төвөггүй их амар эд.

 

Энэ хэдтэй байхад ч дутагдаад байх зүйл гарахгүй л боловуу. Мэдээж өшөө илүү файрфокс дээр хэрэглэгддэг сайхан багажууд байвал сэтгэгдэл дээр хуваалцаарай.

]]>
Fri, 25 Nov 2011 21:29:18 +0100
<![CDATA[JSON объекттой ажиллах]]> http://www.ulzii.com/post/24/json-объекттой-ажиллах.html Вэб программ дээр AJAX их хэрэглэгдэж байгаагаас болоод сервер болон хэрэглэгчийн компьютерийн хооронд мэдээлэл их солилцох болсон. Тэгвэл энд хэрхэн мэдээллийг дамжуулж хэрхэн хэрэглэх вэ гэсэн том асуулт яах аргагүй тавигддаг. Үүнд мэдээллийг JSON хэлбэрээр форматалж ажиллавал илүү үр дүнтэй байдаг.

 

JSON -ий хамгийн том давуу талууд нь амархан текст хэлбэртэйгээр байдаг, ямар нэг програмын хэлээс хамааралгүй байдагт оршдог. Энэ давуу талыг ашиглаад миний мэдэх нилээд олон том API үүн дээр суурилсан байдаг. За ингээд олон юм цааш нуршилгүйгээр яаж PHP-ээс ийм объект үүсгэх болон үүнийгээ jQuery ээр ашиглахыг жишээн дээр харуулъя.

Эхлээд cервер дээрх өгөгдөл болгоод хэрэглэгчийн мэдээлэлийг товч хэлбэртэйгээр авъя. Бүх хэрэглэгийг мэдээлэлийг авах AJAХ хүсэлт сервер рүү явуулаад доорх мэдээллийг JSON хэлбэртэйгээр буцааж авъя.

$users[\'data\'] = array(
	array(\'name\' => \'Бат\', \'id\' => 1),
	array(\'name\' => \'Болд\', \'id\' => 2),
	array(\'name\' => \'Тулга\', \'id\' => 3),
	array(\'name\' => \'Ган\', \'id\' => 4)
);

echo json_encode($users);

Ингэж хүлээж авсан JSON мэдээл жаваскрипт дээр доорх байдалтай харагдана.

var userData= {\'data\': [
                   { \"name\":\"Бат\", \"id\":\"1\" },
                   { \"name\":\"Болд\", \"id\":\"2\" },
                   { \"name\":\"Тулга\", \"id\":\"3\" },
                   { \"name\":\"ган\", \"id\":\"4\" }
                 ]};

Энэ мэдээллийг ашиглаад хэрэглэгчийн жагсаалтыг өмнө тодорхойлсон див элемэнтэд оруулж харуулахъя. 

$.each(userData.data, function(i, user) {
	$(\'#user_list\').append(user.name + \',\');
});

jQuery-ийн each гэж функцыг ашиглаад маш амарханаар JSON объектыг давталтад оруулж боловсруулж болдог. Дээрх each ажилласны дараа хэрэглэгчид бүх нэрсүүд ийм байдалтай харагдана.

Бат, Болд, Тулга, Ган,

Ямар амарханаар ашиглагдаж байгаа нь энэ бяцхан жишээнээс харагдсан байхаа гэж найдаж байна. За ингээд өндөрлье.

]]>
Wed, 23 Nov 2011 21:47:25 +0100
<![CDATA[Лог файлыг хянах]]> http://www.ulzii.com/post/22/Лог-файлыг-хянах.html Вэб программууд дээр ямар нэг алдааг ч юмуу үйл ажиллагааг хянах зорилгоор лог файлууд үүсгээд түүндээ янз бүрийн мэдээлэл хадгалах нь элбэг байдаг. Гэтэл лог файлыг удаан хугацаагаар ханахгүй орхисноос болоод ч юмуу ямар нэгэн алдаанаас болоод маш их хэмжээтэй болох түүнээс үүдээд серверийн ажиллагааг зогсооход хүрдэг.

Тийм болохоор үүнээс сэргийлээд автоматжуулсан хяналтын скрипт бичээд түүнийгээ cronjob болгоод ажиллуулж орхивол ямар ч байсан сервэр зогсох аюулд хүргэхгүй. Энэ скрипт юу хийх ёстой вэ?

1. Шалгах гэж буй лог файлуудыг олоод хэр их хэмжээтэйг шалгана.

2. Аль нэг файл өгөгдсөн хэмжээнээс том байж таарвал доорх коммандын тусламжтайгаар хэмжээг багасгана.

3. $foo = system(\'tail -c 100kb файлын нэр\'); Энд tail гэсэн юниксийн коммандаар файлаас сүүлчийн 100 килобайтыг тастаж авч байна.

4. Дараань үүнийгээ тухайн лог файлруугаа хадгалаад л болоо.

 

Ингэж файлын хэмжээг багасгах нь серверийн үйл ажиллагаа гацахаас л хамгаал байгаа хэрэг юм шүү. Мэдээж хэрэг энэ лог файл нь алдааны лог бол ямар алдаа гараад байгааг харж кодоо зассан нь илүү чухал болохыг мартуузай ;-)

 

]]>
Fri, 18 Nov 2011 22:00:49 +0100
<![CDATA[Yahoo календараа Андройд утсан дээр оруулах]]> http://www.ulzii.com/post/21/yahoo-календараа-Андройд-утсан-дээр-оруулах.html Хэн нэгэн Андройд утас ашигладаг хүнд хэрэг болох боловуу гээд товч тэмдэглэл хийчихье.

Монголчууд их Yahoo хэрэглэдэгийн адил би ч гэсэн үүнийг ашигладаг л даа. Хамаг л таньж мэдэх хүн Yahoo дээр хаягтай байдаг болохоор амар байдаг юм. Yahoo-ийн календар саяхныг хүртэл үнэхээр хоцрогдсон орчин үеийн хэрэглэгчийн шаардлага хангахааргүй болсон байсан. Харин саяхнаас шинэчлэгдээд их сайхан болсон байсан.

 

Өнөөх гоё болж шинэчлэгдсэн календараа Андройд смарт утсандаа оруулчихъя гэсэн янз бүрийн асуудлуудтай тулгардаг юм байна. Андрой өөрөө Гүүглийнх болохоор өөрийн хаягуудыг бол их амарханаар оруулах боломжтой байдаг. календар энэ тэр дээр нь ямар ч асуудалгүй болж байна билээ. Харин Yahoo-ийн хувьд одоохондоо Андройдод зориулсан Aрр байхгүй болохоор өөр арга зам хайх хэрэгтэй боллоо. Yahoo календараа гар утсанд зориулсан вэбийн тусламжтайгаар удирдаад байх боломжтой ч үнэндээ амтгүй л дээ.

Хамгийн их тарсан арга нь эхлээд Гүүгл календар руу импортолж оруулаад дараа нь утас руугаа оруулах арга байв. Туршаад үзтэл болсонгүй. Гүүглээс Yahoo руу орох мөртлөө эсрэгээр алдаа заагаад болсонгүй. Ингээд ахиад жаахан хайсны эцэст caldav гэгч программаар дамжуулаад шууд утасруугаа оруулах боломжтойг мэдэж аваад турштал амжилттай боллоо.

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

Yahoo календар(Beta буюу шинэ хувилбар. Хэрэв энэ байхгүй бол энэ хаягаар орж хуучныгаа сольж болох юм байна. http://switch.calendar.yahoo.com/m/landing.php)

caldav-аа ачаалаад энэ хаягийг URL дээр өгөөд нэвтэрч ороорой.

https://caldav.calendar.yahoo.com/dav/username/Calendar/calendar_name

 

Тэгээд синхрон хийнгүүт Yahoo календарийн бүх оруулсан зүйлүүд Андройдын календар руу орно. Мэдээж хэрэг Yahoo дээр өөрчилөлт хийвэл ахиад синхрон хийх ёстой. Үүнийг нь бас автоматаар тааруулж болно.

 

За ингээд хаана ч явсан календартайгаа алзахгүй боллоо!

]]>
Sun, 13 Mar 2011 00:33:24 +0100
<![CDATA[Банжигийн талаар]]> http://www.ulzii.com/post/20/Банжигийн-талаар.html За Банжиг гээд хэлэхээр хүн болгон л мэдэх байлгүй. Монголдоо л анхдагчийн нэг портал сайт байсан. Хаяа нэг орж харахад шинэ шинэлэг санаа дэвшүүлж, шинэ үйлчилгээ нээгдэж байгаа харагддаг. Хэдэн жилийн өмнөөс блог жинхэнэ Web 2.0 гээчийн нэг хэсэг болон ид цэцэглэх үеэр нөгөө Банжиг маань ч бас блогийг нэвтрүүлээд авсан нь удалгүй овоо ч олон хэрэглэгчтэй болсон.

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

 

Гэтэл өнөөдөр санамсаргүй Банжиг буцаад сэргээгдэж эхэлж байгаа талаар олж мэдлээ. Лав л блогчидын бичлэг битгий хэл хэрэглэгч нь хүртэл сэргээгдэхээргүй устсан юм шиг байна. Хэрэглэгчидийнх нь хувьд энэ бол асар том хохирол болж байгаа юм. Хичнээн хүний ямар их цаг заваа гаргаж бичсэн зүйлсийг зүгээр л нэг ингээд алга болгочихоод юу боддог бол!

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

 

Хамгийн чухал нь шинээр эхлүүлж байгаа хүмүүс нь энэ өнгөрсөн алдаагаа битгий давтаасай, хэрэглэгчидийнхээ мэдээлэл, хүч хөдөлмөрийг үнэлж сервэр, өгөгдлийн асуудлаа сайн шийдээрэй гэж хэлэх байна. Өгөгдлийн сангаа нөөцөлж авч байвал аминд орох үе эргээд гарна шүү.

]]>
Tue, 01 Feb 2011 23:17:46 +0100
<![CDATA[PHP-д илэрсэн Floating Point гэж алдаа засагдлаа]]> http://www.ulzii.com/post/19/php-д-илэрсэн-floating-point-гэж-алдаа-засагдлаа.html Өнгөрсөн оны сүүлээр PHP дээр ингэж нэрлэгдсэн алдаа илэрээд нилээд ширүүхэн шуугиан болоод хурдан ч засагдлаа. Энд \"2.2250738585072011e-308\" гэсэн утга хөрвүүлэгдэх явцад тухайн сервэрээс хамаараад дуусахгүй давталтанд ордог байна. Үүгээр дамжаад серверийг ажиллахгүй болгох боломжтой. Хэрвээ таний сервэр 32Bit процессортой бөгөөд дээр нь PHP 5.2 юмуу 5.3 хувилбарууд суулгагдсан бол заавал тэр гарсан засварыг нь заавал суулгаарай.

 

Таний систем энэ алдаанд өртсөн эсэхийг шалгаж болох жижиг скриптийг эндээс аваад туршаад үзээрэй. Ачаалахдаа консолоос ачаалах юм шүү.

]]>
Thu, 13 Jan 2011 22:00:37 +0100
<![CDATA[jQuery: DOM Элемэнт сонгох аргууд]]> http://www.ulzii.com/post/16/jquery:-dom-Элемэнт-сонгох-аргууд.html jQuery-тэй ажиллахад хамгийн түрүүнд хийдэг үйлдэл бол ямар нэгэн ажиллах гэж байгаа элемэнтээ сонгох гэж хэлж болно. Тэгвэл ямар аргууд байдгийг доор хүснэгтэд хураангуйлж оруулъя. Яг яаж хэрэглэх талаар сүүлд жишээ бичлэг оруулвал тодорхой болоод явчих байх.

 

Үндсэн сонгох аргууд.

 

Дүрэм Тайлбар
 *  Бүх элемэнт
 E E тагтай элемэнтүүд
 E F
E таг бүхий элемэнтийн доторхи F тагтай элемэнтүүд
 E > F
E таг бүхий элемэнтийн F тагтай шууд хүүхэд элемэнтүүд
 E + F
E тагтай нэг төвшинд байрлах хамгийн ойрхон F элемэнт
 E ~ F
E тагтай нэг төвшинд байрлах бүх F элемэнт
 E : has(F)
F таг бүхий элемэнт агуулсан Е тагтай элемэнтүүд
 E.C C класстай E тагтай элемэнтүүд
 E#I I id-тай E таг бүхий элемэнтүүд
 E[A] A аттрибут агуулсан бүх Е тагтай элемэнтүүд
 E[A=V] A аттрибутын утга нь яг V гэсэн бүх Е тагтай элемэнтүүд
 E[A^=V] А аттрибутын утга нь V-аар эхэлсэн бүх Е элемэнтүүд
 E[A$=V] А аттрибутын утга нь V-аар төгссөн бүх Е элемэнтүүд
 E[A*=V]  А аттрибутын утга нь V хэсэг агуулсан бүх Е элемэнтүүд 

 

Элемэнтийг DOM -ын байрлалаар олох



 

Дүрэм Тайлбар
:first Хайж байгаа элемэнтийн эхний элемэнтийг олж авахад хэрэглэгдэнэ.
:last Өмнөхийн эсрэгээ буюу хамгийн сүүлийн элемэнтийг олно.
:first-child
Хайж байгаа элемэнтийн хүүхэд элемэнтүүдээс эхнийхийг олно
:last-child
Өмнөхийн эсрэгээр буюу хүүхэд элэмэнтүүдээс эцсийнхийг
:only-child
Хайж байгаа элэмент ганц хүүхэд элемэнттэй бол сонгогдоно
:nth-child(n)
n дэхь хүүхэд элемэнт
:nth-child(even|odd)
тэгш буюу сондгой тоотой байрлал дахь хүүхэд элемэнтүүдийг тус тус буцаана
:nth-child(Xn+Y) Өгөгдсөн томъёогоор олдох тоотой байрлал дахь хүүхэд элемэнтийг сонгоно. Хэрэв 2n+1 гэсэн томъёо байна гэж үзвэл 2дахь элемэнтийн арын элемэнтийг олон болно.
:even Тэгш тоотой байрлал дахь элемэнт
:odd Сондгой тоотой элемэнт. Энэ хоёр аргыг хүснэгтийн мөрүүдийг өөр өнгөөр харуулах зэрэгт ихэвчлэн ашигладаг.
:eq(n) n дэхь элемэнт
:gt(n) n дэхь элемэнтийн арын элемэнтүүд
:lt(n)
n дэхь элемэнтийн өмнөх элемэнтүүд

 

Хэрэглэгчийн шүүлтүүр тавьж сонгох аргууд:

 

:animated сонгож байгаа элемэнт ямар нэгэн байдлаар jQuery-ийн анимацтай байвал
:button  формын товч элемэнтүүд сонгогдоно. Өөрөөр хэлбэл  input[type=submit], input[type=reset], input[type=reset] эсвэл button гэсэнтэй адил
:checkbox Формын checkbox элемэнтүүдийг сонгоно. Ө.х. input[type=checkbox]
:checked Radio юму checkbox элемэнтүүд сонгогдсон байвал
:contains(foo) foo гэсэн текстийг агуулж байвал
:disabled формын disabled элемэнтүүд disabled=\"disabled\"
:enabled өмнөхийн эсрэгээр
:file бүх файл элемэнтүүд. ө.х. input[type=file]
:header Толгой элемэнтүүд буюу h1,h2... гэх мэт.
:hidden Харагдахгүй нууцлагдсан элемэнтүүд
:image Зурган элемэнтүүд, input[type=image]
:input Бүх input элемэнтүүд
:not(filter) өгсөн шүүлтүүрийн эсрэг  болгоно.  input:not(:checkbox) гэвэл checkbox-оос бусад нь.
:parent Зөвхөн хүүхэд бүхий элемэнтүүдийг
:password Пассворд элемэнт, input[type=password]
:radio Radio элемэнтүүд, input[type=radio]
:reset Reset элемэнтүүд, input[type=reset] , button[type=reset]
:selected Select элемэнтийн сонгогдсон элемэнтүүд
:submit Submit элемэнтүүд, input[type=submit] , button[type=submit]
:text Тэкст элемэнт, input[type=text]
:visible  Харагдаж байгаа элемэнтүүд

 

Асуух зүйл байвал сэтгэгдэлээр асууна биз дээ ;-)

]]>
Thu, 07 Oct 2010 22:16:30 +0200
<![CDATA[PHP-Oбъект хандалтат программчилал]]> http://www.ulzii.com/post/13/php-oбъект-хандалтат-программчилал.html PHP-ийн хувьд том ахилт болж чадсан 5 болон 5.3 гэсэн хувилбарууд гарч ирээд нэлээд хугацаа өнгөрчээ. Энэ хооронд объект хандалтат программчилал(ОХП) ерөнхийдөө байр сууриа PHP-ийн ертөнцөд нэгэнт олоод хаа сайгүй л хэрэглэгдэх болсон. Гэхдээ л одоог хүртэл хуучин хэлбэрээр бичдсээр байдаг программчид цөөнгүй байдаг. Тэгвэл одоо үүнийг өөрийн болгож авах цаг нэгэнт болсон байна.

 

PHP5 гарч ирэхээс өмнө жинхэнэ утгаар нь объект хандалтат программчилах боломжгүй байснаас ёстой л шүүмжлэгчидийн бай болдог байсэн гэж хэлж болно. Жинхэнэ утгаараа биш гэдэг нь хамгийн элементар зүйлүүд буюу ерөөсөө класс үүсгээд үүндээ метод болон хувьсагч ашиглаж болохоос өөр зүйл ашиглаж чаддаггүй байсных. За ингээд PHP-д объект хандалтат програмчилалтай хамт орж ирсэн стандартуудаас тайлбарлъя.

 

Хувьсагч болон методын гадны хандалтыг зарлах.

 

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

 

class Person
{
	var private $age;
	var protected $name;
	var public $gender;
}

$person->gender = \'man\';
$person->age = 25;
$person->name = \'Boroldoi\';

 

Классын хувсагч болон функцуудыг зарлахдаа доорхи түлхүүр үгнүүдийн аль нэгийг ашигладаг.

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

Private - гадны хандалтаас хамгаалагдсан. Зөвхөн тухайн классын функцаар дамжуулж хандана.

Protected - гадны хандалтаас хамгаалагдсан. Гэхдээ уг классаас уламжилж авсан классаас шууд хандаж ажиллаж болно.

Эдгээр нь нууцлал хамгаалалт сайтай программ бичихэд чухал үүрэгтэй байдаг.

 

class Person
{
	private $age;
	protected $name;
	public $gender;
}

$person = new Person();

$person->gender = \'man\';
$person->setAge(25);

 

Энд $age шууд хандалт байхгүй бөгөөд зөвхөн ямар нэг public функцын тусламжтайгаар л өөрчилөх боломжтой. Харин $gender өөрөө public гэж зарлагдсан учираас шууд гаднаас утга олгож болж байна.

 

Хийсвэр класс

 

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

 

 

abstract class Person {}

 

 

Интерфейс

 

Интерфейс нь PHP дээр прогрммын бүрэн бүтэн байдалд голлох үүргийг гүйцэтгэдэг. Энэ нь эргээд найдвартай ажиллагааг хангах суурь болдог. Уламжилж авсан класс нь эцэг интерфэйсийнхээ бүх методыг гүйцээх зарлах хэрэгтэй бөгөөд ямар нэг метод дутаж байгаа тохиолдолд алдаа өгдөг. Бүх методыг зарлаж өгсөн ч гэсэн доторх үйлдлүүд нь мэдээж хэрэг өөр өөр байх боломжтой. Жишээ болгоод авахад өгөгдлийн сантай харьцдаг интерфэйс байж болно. Энэ интэрфэйсийг цааш нь өөр өөр өгөгдлийн сангийн хувьд тус бүрд нь тохируулаад программчилж өгөх бөгөөд бүх хийж байгаа үйлдэл буюу методууд нь адилхан байх ёстой. Үүний тусламжтайгаар уг программ өгөгдлийн сан хамааралгүйгээр программчилагдах боложтой болно.

 

 

interface Person{}

 


Алдаа хяналт

 

Энэ нь try catch блок бөгөөд үүний тусламжтайгаар программд гарах алдааг удирдах нэгдсэн системтэй болсон. Тэгвэл энэ блок дотор ажиллаж байгаа кодын алдааг барьж авахын тулд алдаа гарч болох газар throw түлхүүр үгийн тусламжтайгаа шинэ алдааны объектийг үүсгэж өгдөг. Ямар нэг алдаа гарсан тохиолдолд catch дотроо уг алдааг шалгаж үзээд гарсан алдаанаас хамаарсан үйлдлүүдийг хийж болно. Жишээ нь уг алдаанаас болоод дутуу хийгдсэн зүйлүүдийг буцаах гэх мэт.

 

class Calculator
{
	public function __construct() {;}
	
	public function divideNumber($num1, $num2)
	{
	    if ($num2 == 0) {
	        throw new Exception(\'Хувааж байгаа тоо 0 байж болохгүй\');
	    }
		
		return $num1 / $num2;
	}
}

try {
	$calculator = new Calculator();
	$calculator->divideNumber(24, 0);
} catch (Exception $e) {
	echo \'Алдаа гарлаа: \' . $e->getMessage();
}


Энэ тохиолдолд throw түлхүүр үгийг тусламжтайгаар үүсгэсэн алдаа гарна.

 

Дараагийн бичлэгээрээ өөр шинээр нэмэгдсэн обьект хандалттай холбоотой хэрэгсэлүүдийн талаар үргэлжлүүлэн бичье.

 

]]>
Fri, 20 Aug 2010 08:48:12 +0200
<![CDATA[Эвдэрхий цонхны онол]]> http://www.ulzii.com/post/12/Эвдэрхий-цонхны-онол.html Саяхан нэг ийм бичлэг уншсанаа сонирхолтой санагдсан тул та бүхэнд хүргэе гэж бодлоо.


Эвдэрхий цонхны онол гэж юу вэ?

 

Энэ онолыг анх Philip Zimbardo гэж америкийн сэтгэл зүйч эрдэмтэн 1969 гаргаж байжээ. Үндсэн санаа нь ямар нэг байшинд нэг цонх хагархай байснаас үүдээд тэр байшин удахгүй маш олон эвдэрхий цонхтой болж улмаар бүр засаж янзалж боломгүй байдалд хүрдэгийг тодрохойлсон байдаг. Яагаад ийм байдалд хүрдэг шалтгаан нь бол маш энгийн. Нэг байшингын цонх эвдэрлээ гээд аваад үзье. Ямар нэгэн шалтгааны улмаас тэр цонх засагдахгүй хэд хононо. Энэ үед оршин суугчид үүнтэй сэтгэл зүйн хувьд аль хэдийн дасаад тоожиргүй нэг нь тамхины иш, барьж яваа хогоо хаяж эхэлнэ. Тэгтэл ахиад нэг өөр ямар нэг эвдрэл гарахад гарах зардлаас болоод ч юмуу эсвэл зүгээр л засалгүй орхино. За тэгээд л өдрөөс өдөрт муудаад нэг л өдөр нурж унадагийн даваан дээр очно.

 

Энэ онол тэгвэл программ зохиогчидод ямар байдлаар харагдах нь вэ?

 

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

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

]]>
Tue, 10 Aug 2010 23:33:40 +0200
<![CDATA[jQuery хэрэглэх эхний алхам]]> http://www.ulzii.com/post/10/jquery-хэрэглэх-эхний-алхам.html Өмнөх бичлэгээрээ энэхүү жаваскрипт санг яагаад ашиглах болсон мөн ямар давуу талуудтай талаар бичсэн. Тэгвэл одоо олон зүйл нуршилгүйгээр үүнийг хэрхэн өөрийнхөө программчилалд бичих талаар эхэлье.

jQuery-ийн үндсэн сан зөвхөн нэг жаваскрипт файлаас бүрдэх бөгөөд үүнийг эндээс татаж аваад өөрийн хэрэглэх гэж байгаа сервер дээрээ хуулж өгнө. Энэ файлыг HTML дотроо  жаваскрипт холбодог коммандаар холбож өгөх бөгөөд доорхи маягаар харагдана.


<script src=\"your_path/jquery.js\" type=\"text/javascript\"></script>

 

Мэдээж хэрэг файл хуулж өгсөн замаа энд зaaж өгөх нь тодорхой. За ингэж холбоод өгсөний дараа бол үндсэндээ jQuery-ийг бүрэн хэмжээгээр нь ашиглах боломжтой болчихлоо гэсэн үг.

 

jQuery-ийн хамгийн чухал функц бол jQuery() буюу товчилж бичвэл $() юм. Энэ функцийн тусламжтайгаар өөрт хэрэгтэй байгаа DOM хэсгийг цуглуулах бөгөөд үүн дээрээ уламжлаад цаашаа хийх үйлдлүүдээ хийдэг. Тэгвэл ямар нэг элемэнтийг сонгох хэлбэр маш олон янз байдаг. Үүнээс хамгийн хэрэглэгддэгээс жишээ болговол:

 

Бүх h1 элемэнтүүд: $(\'h1\')

link класстай span элемэнтүүд: $(\'span.link\')

navi id-тай div-ээс бүх li элемэнтүүд: $(\'div#navi li\')

радио элемэнтүүд: $(\'input[type=\"radio\"]\')

 

гэх мэтчилэн маш олон янзаар ямар нэг DOM хэсгийг болон элемэнтүүдийг сонгож авах боломжтой. 

Ингэж хайж олсон DOM элемэнтүүдээ яаж л бол яаж өөрчилөх болон бусад үйлдлүүдийг хийх боломжтой. жишээ болгоод нэг энгийн жишээ авъя. Бүх h1 элемэнтийг улаан өнгөтэй болгох:

 

$(\'h1\').css(\'color\', \'red\');

Дээрх жишээнүүдээс бас нэг харагдаж байгаа зүйл нь ямар нэг элемэнтүүдийг CSS тэмдэглэгээгээр буюу класс болон id-аар сонгож авч байгаа юм. Үүнээс гадна элементүүдийг шууд ямар нэг аттрибутаар, эцэг хүүхэд элемэнтийн бүтцээр болон хайж олж авах гэсэн олон янзын сонголтууд бий. Эдгээр нь дараа дараагийн жишээнүүд дээр илүү тодорхой тайлбарлагдаад явах нь тодорхой.

Бусад сангуудтай хамт ашиглах

 

Өргөн ашиглагддаг буюу доллар тэмдэгийг хэрэглээд явахад хүндрэл гарах тохиолдол байдаг. Ийм асуудал бусад ямар нэг жаваскрипт сантай хамт ашиглах үед ихээр тохиолддог. Энэ нь зарим бусад сангууд бас доллар тэмдэгтийг хувьсагчаар ашигласан байдагтай холбоотой. Энэ тохиолдолд доллар тэмдэгийг биш өөр хувсагч зарлаж өгч түүнийг цаашдийнхаа кодод ашигладаг. Зарлах бичлэг нь:

 

var $jQ = jQuery.noConflict();

 

Эсвэл энэ noConflict гэсэн функцын утгыг заавал хувсагчид олголгүйгээр шууд


jQuery.noConflict();

 

гэж зарлаад jQuery() гэсэн хэлбэрийг хэрэглэж болно. Их код бичвэл арай урт байдаг болохоос өөрөөр урьдах хувилбараас ялгаа байхгүй. Жаваскрипт файл өөрөө вэбтэй хамт уншигддаг учраас аль болох бага хэмжээтэй байвал зүгээр байдаг гэдгийг энд анхаарах хэрэгтэй.

]]>
Mon, 02 Aug 2010 23:27:08 +0200
<![CDATA[jQuery Javascript Bibliothek]]> http://www.ulzii.com/post/9/jquery-javascript-bibliothek.html jQuery-тэй холбоотой бичлэгүүдийнхээ эхлэлийг үүгээр тавья. jQuery нь Javascript сан бөгөөд сүүлийн үед маш өргөнөөр хэрэглэгдэж байгаа. Үндсэн зорилго нь Javascript программчиллыг маш амархан болон хурдана болгоход чиглэсэн.

 

jQuery-ийн талаар ярихын тулд эхлээд javascript-ийн талаар хэдэн үг дурдъя гэж бодож байна. Javascript нь вэб 2.0 гэж ухагдахуун байхгүй байсан хэдэн жилийн өмнө вэб программуудад одоогийнхтой харьцуулвал маш бага хэрэглэгддэг байсан. Үүгээр программ бичихэд төвөгтэй байсан нь хэрэглэгддэггүй байсан гол шалтгаануудын нэг байв. Вэб хүчээ аван хөгжиж эхэлсэнтэй зэрэгцэн Javascript болон XMLHTTPRequest-үүдийг хослон хэрэглэсэн AJAX гэж нэг шинэ технологий гарч ирэв. Энэ нь ёстой л цаг үеээ олсон хэрэг байсан бөгөөд эндээс Javascript-ийн нэг шинэ үе эхэлсэн гэхэд болно. Ийнхүү Javascript ихээр хэрэглэгдэх болсноос болж шинэ шинэ бэлэн сангууд ар араасаа их гарсан бөгөөд үүний ачаар вэб программчидын ажилд маш их хөнгөлөлт үзүүлсэн. Би ч гэсэн л Javascript дээр бичих дургүй, хэртээ л бол ашигладаггүй байлаа. Заримдаа нэг AJAX ашиглан программ бичих болоход ямар наг бэлэн сан л ашиглахгүй бол их төвөгтэй болж ирсэн. Нилээн харьцуулалт хийж хайсны эцэст jQuery-тэй нөхөрлөж эхэлсэн дээ. Одоо ч бүр амтанд нь ороод салахаа больсон. Хэрэглэхэд маш хялбар мөртлөө маш их зүйлсийг амарханаар хийх боломжийг олгодог нь намайг их татдаг гэхүү дээ.

 

Давуу талууд:

- jQuery нь DOM-д хандаж программчилах ажилыг хөнгөвчилж үүгээр их цаг хэмнэдэг

- Хэрэглэхэд хялбар. Эхлэн сурч байгаа хүмүүст ч хэцүү зүйл байхгүй.

- Javascript-д өөрт нь байдаггүй each, trim, extend гэх мэт нэмэлт функцуудыг оруулж өгсөн.

- DOM-ийн элементүүд дээр хийгддэг үйлдлийг хялбараар удирдах боломжтой. Жишээ нь onclik, mouseover гэх мэт бүх үйлдлүүдийг маш амарханаар холбож өгч болдог.

- Бусад Javascript сангуудтай хүндрэлгүй хамтарч ажиллаж чаддаг

 

Сул талууд:

- Javascript-ийг хаачихсан хэрэглэгчид программ бүрэн хэмжээгээр ажиллахгүй. Гэхдээ энэ асуудал бол одоог хүртэл байсан. Тэгээд ч хэрэглэгчийн хувьд вэб 2.0-ийн үед javascript-гүйгээр интернэт хэрэглэнэ гэдэг бол боломжгүй асуудал болсон.

- Одоог хүртэл хэрэглэхдээ үнэхээр сул тал олоогүй л байгаа даа. Ийм болохоороо ч  хамгийн хэрэглэгдэж Javascript сан болоод байгаа.

 

Хурдны хувьд 1.3 хувилбараас хойш Sizzle Selector гэж Selector Engine-ийг хэрэглэснээр элементүүдийг олох хандаж ажиллах нь эрс хурдан болсон.

 

Оршил хэсгээ ингээд дуусгая. Дараагаар яаж хэрэглэх талаар бичлэгүүдээр цааш нь үргэлжлүүлнэ.

 

]]>
Sat, 24 Jul 2010 11:27:22 +0200
<![CDATA[ZF - Zend Framework]]> http://www.ulzii.com/post/8/zf---zend-framework.html Сүүлийн хэдэн жилд аливаа программчидын хувьд Framework(галигчилж явах гэснээ болилоо. Зарим үгийг галигчилж байснаас цаашид ингээд биччихвэл амар санагдлаа.) гэдэг үг их танил болсон бөгөөд бараг л бүх программын компаниуд, мэргэжилтнүүд өөрсдийнхөө үйл ажиллагаа, ажилдаа ашиглах болсон. Тэгвэл энэ Framework гэж яг юу байна, үүнийг ашигласнаараа ямар ашигтай болоод ингэж ихээр хэрэглэгдэх болов? Хариулт нь харин олон янзаар тайлбарлаж болно. Эдийн засгийн талаас тайлбарлахын бол ерөөсөө ашигтай ажиллахын тулд л ингэж байна аа гээд хэлчихэж болно. программ зохиогчийн зүгээс бол тухайн framework-ийн архитектур дээр тулгуурлаад түүний бэлэн сангаас ашиглаад, гол зүйлдээ анхаарлаа хандуулж ажиллах мөн дараа нь бичсэн кодоо нэг их хүндрэлгүйгээр цааш нь хөгжүүлж болдогт оршино.

За тэгээд PHP дээр бичигдсэн их олон янзын framework-үүд байдгаас сүүлийн жилүүдэд маш хурдацтайгаар хөгжиж байгаа framework  бол Zend Framework. Хүмүүс үүнийг маш ихээр хэрэглэх болсон бас нэг том шалтгаан бол миний бодлоор түүний баталгаатай ирээдүй юм. Zend Framework-ийн ард PHP-ийн үндсэн хөгжүүлэгч компани байдаг болохоор PHP цааш хөгжиж байвал Zend Framework ч гэсэн хөгжсөөр л байх нь гарцаагүй.

 

Давуу тал нь юу байна?

- Zend-Framework нь маш олон бие биенээс нь хамааралгүй хэрэглэж болох класс буюу сангуудаас бүрддэг. Үүн дотор өгөгдлийн сантай ажиллах, хүснэгт бөглөх, хэрэглэгчийн өгөгдлийг шалгах болон шүүх гэх мэт маш олон компонентууд байдаг. Үүний талаар гарын авлага дээр дэлгэрэнгүй тайлбарласан байгаа.

- Нэг бичсэн кодоо буцаагаад өөр ажилд ашиглаад явах боломжтой.

- Гарын авлага, тусламж материал сайтай. Гартаа эзэмшиж авъя гэвэл заавал унших зүйл. Эхлэн суралцаж байгаа хүмүүст энэ нь маш их тус болдог.

- Тэр чигээрээ объект хандалтат технологи дээр суурилсан бөгөөд MVC загвартай

- Хөгжүүлэлт нь тогтмол цаашаа явагдаж байгаа бөгөөд нээлттэй эх бүхий кодтой.

 

Эхлэн суралцах хэцүү юу?

Суралцах хугацаа нь хүм бүрээс өөрөөс нь хамааралтай. Яагаад гэвэл хүн бүрийн PHP-ийн мэдлэг, ерөнхий программ бичиж байсан туршлага гэх зэргээс их шалтгаална. Мэдээж хэрэг алга урвуулахын адил сурчихна гэж бол байхгүй л дээ. Ийм учраас жижиг ойр зуур зүйл дээр үүнийг ашиглаад байх нь яг тохирсон зүйл биш. Нөгөө Харин томоохон төслүүдэд ашиглах нь бүгдийг өөрийн гараар бичсэнээс хамаагүй илүү үр дүнтэй байх бөгөөд нөгөө хамаг цаг заваа гаргаж сурсан нь тус болдог.


MVC - Model View Controller -ийн талаар товчхон:

MVC архитектур сүүлийн жилүүдэд олон тооны framework-үүдэд ихээр ашиглагдах болсон.  PHP бол өөрөө скрипт программын хэл болохоор HTML код дунд холилдоод бичигддэг. Энэ холилдсон код нь томоохон төслүүд дээр маш хурданаар хүндрэлд хүргэдэг. Ер нь бол аливаа нэг программыг эхлэн бичхээсээ цаашаа хөгжүүлж авч явах нь илүү зардалтай бас хүндрэлтэй байдаг. Тийм учраас эхнээсээ л программаа ойлгомжтой зөв бичвэл сүүлд илүү амар байдаг. Хэрхэн амархан уншигддаг ойлгогддог код бичих талаар сүүлд бичлэг оруулна гэж бодож байгаа.

MVC-ийн хувьд программыг ерөнхийд нь гурван бүлэгт хуваадаг. Ингэснээрээ программын кодыг эмх цэгцтэй ойлгомжтой болгож өгнө. Эдгээр нь:

M - Model: Өгөгдлийн баазтай харилцаж ажиллах хэсэг. Үүнээс гадна дүрэм ёсоор бол тухайн программмын логик үйлдлүүд багтана.

V - View: Хэрэглэгчид харагдах хэсэг. ZF дээр View-d зориулсан стандарт тусгай template engine байхгүй ч гэсэн хэрэглэх боломжтой байдаг.

C - Controller: Энэ нь өмнөх хоёр-ын зуучлах үүргийг гүйцэтгэнэ. Өөрөөр хэлбэл хэрэглэгчийн хийсэн үйлдлийг model-д дамжуулах мөн гарсан үр дүнг view-рүү буцааж дамжуулна. Зарим программ зохиогчид энэ хэсэгт бас логик функцуудыг багтааж өгөх тохиолдол байдаг.

Framework хэрэглээгүй тохиолдолд ч гэсэн өөрийнхөө вэб апп-ыг ингэж зохион байгуулж явбал их зүгээр. За ингээд дуусгая.

 

Жич: уншигчиддаа дахин хэлэхэд зарим нэг үг хэллэгүүдийг шууд галигчилж оруулахгүй яваад байгаа нь бага зэрэг хүндрэлтэй байж магадгүй. Дараа дараагынхаа бичлэгүүдэд аль болох оновчтой үг хэллэгүүдийг хэрэглэхийг зорино.

За ингээд өндөрлье. Bye!

]]>
Wed, 21 Jul 2010 00:24:25 +0200
<![CDATA[Миний блог]]> http://www.ulzii.com/post/7/Миний-блог.html Сайн байна уу.

 

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

 

Блог удирдлагын програмын сонголтын хувьд маш олон сонголтууд байсан ч өөрөө бичсэн нь илүү сонирхолтой санагдаад Zend Framework ашиглаад өөрийн гэсэн блог системтэй боллоо. Хүмүүсийн их ашигладаг Wordpress шиг их олон гоё гоё давуу талууд одоохондоо байхгүй ч гэсэн цаашаа хөгжүүлээд явахад төвөггүй.

 

    Миний блогийн гол зорилго нь вэб програмчилал сонирхдог болон энэ салбарт ажилладаг хүмүүстэй өөрийн олж авсан, мэдсэн мэдлэгээсээ хуваалцах тэднээс бас суралцахад чиглэнэ. Агуулгын хувьд PHP, Zend Framework, MySQL, XHTML, CSS, jQuery болон бусад вэт технологитой холбоотой мэдээллүүд оруулахаар бодож байгаа.

 

Хичнээн цаг зав багатай байдаг ч хичээгээд тогтмол бичлэг оруулж байна гэж бодож буй.

 

Миний блогийн байнгын зочин байж санал бодлоо хуваалцаж байгаарай.

Хүндэтгэсэн Өлзий.

]]>
Sun, 11 Jul 2010 11:14:33 +0200