Monday, February 02, 2009

Хэрхэн хөгжүүлэгч болох вэ. 1-р хэсэг

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


Уран бүтээлчид, зураач барималч нарт бүгдэд нь урлан гээд ажлынх нь өрөө байх. Яг түүнтэй адил хөгжүүлэгчдэд ч гэсэн хомпуутерт нь виртуалаар басхүү ажлын өрөө, ажлын багаж хэрэгсэл, номын сан, туршилт тест хийх өрөө, аргачлал, уулзалтын өрөө гээд тэр ч бүү хэл шавар зуураад өрлөг хийж байхдаа өөрт таалагдсан аяатайхан хөгжим тоглуулагч хүртэл бий. За тэгээд хүнд ажлын ард гарчихаад алжаал тайлангаа үзэх видео тоглуулагч, өдрийн сонин гарчиглах гээд бүгд л бий л дээ. За тэр ч яахав гол асуудалдаа орсуу. (Дашрамд хэлэхэд ороё, үзье энэ тэр гэсэн дүрмийн алдаа гаргачихдаг үгнүүдээс эвтэйхэн зайлсийнээ, Дамдинсүрэн гуай шинэ үсгийн дүрэм хийж байхад орос сургагч нар заавал оруул гэсээр байгаад ийм балай ь, ъ үсэг оруулцан)

Веб систем хөгжүүлэгчдийн зайлшгүй мэдэх боловсрол болон ажлын орчин:

1. HTML, XML
HTML - HyperText Markup Language
Веб хөгжүүлэгчдэд суурь мэдлэг буюу энгийн гипертехт бүтээгч хэл болох html -ыг зайлшгүй мэдэх хэрэгтэй. Гэхдээ энэ нь маш хялбар энгийн учраас суралцахад нэг их хүндрэл гарахгүй. Энд html tag гэдэг ойлголтоос эхлээд гол гол хэдхэн зүйлсийн учрыг ойлгоод авчихад тэгээд цааш явцын дунд гүнзгийрүүлээд байж болно.
Гипертекст буюу холбоос агуулсан веб хуудасыг дүрслэхэд зориулагдаж гарч ирсэн бөгөөд анх вебсайтууд зөвхөн энэ л хэл дээр бүтээгдэж интернэтэд байрлаж байлаа, одоо ч мөн уг хэл дээр дүрслэгддэг хэвээрээ боловч илүү их өргөн боломжуудаар өргөтгөгдсөн гээд ойлгочихож болно (гэхдээ доор бичигдсэн зүйсээр).

http://www.asuult.net/nemesis/web/
http://www.soyolerdene.com/index.php/posts/category/html

XML - eXtensible Markup Language
Интернэт улам бүр хөгжиж том том вебсайт, агуулгуудаар баяжигдаж, интернэтэд байрлагдсан серверүүд буюу сайтууд өөр хоорондоо агуулга, өгөгдөл солилцох, дамжуулах нөхцөл шаардлагууд урган гарсан бөгөөд уг xml нь өгөгдөлийг илүү бүтэцлэгдсэн мөртлөө маш энгийн байдлаар хэвшүүлж чаддагаараа бусад адил технологиос илүү ихээр дэлгэрсэн.
Хэлбэр нь ерөнхийдөө html -тэй төстэй ба xml tag гэсэн ойлголтыг ашигладаг ба html нь веб хуудасыг дүрслэхэд ашигладаг бол xml нь өгөгдөлийг бүтэцлэн хадгалахад ашиглагддаг.

http://en.wikipedia.org/wiki/Xml
http://www.soyolerdene.com/index.php/posts/103

2. Javascript
Веб хөгжүүлэх технологиуд цааш хөгжихийн хирээр, мөн интернэт болон вебийн хэрэгцээ шаардлага улам бүр өсөн нэмэгдэхийн хирээр веб серверт "ачаалал" өгөхгүйгээр хэрэглэгчийн асуудлыг веб хөтөч дээр шийдэх зорилготойгоор гарч ирсэн гээд буудчихая. Жишээ нь хэрэглэгчээс анкет авах формуудад тухайн хэрэглэгч зөв форматтай мэдээлэл оруулж буй эсэх, тухайн хэрэглэгч ямар төрлийн (IE, Mozilla, Opera, Konquerer) веб хөтөч дээр ажиллаж буйг, тухайн хөтөчийн онцлогт тааруулж вебийн ажиллагааг уян хатан болгох гээд л... client side programming хийхэд үүнийг "тодорхой түвшинд" мэдэх шаардлагатай.

3. Web 2.0 - AJAX, CSS
Эдгээр үгнүүдтэй сүүлийн үед та их таарч буй бизээ. Учир нь эдгээр технологиуд вебийн технологид хувьсгал хийсэн гэж хэлбэл зохино. Веб программыг яг л хэрэглээний програм (application program) түвшинд аваачиж илүү динамик, илүү "sexy" болгосон юм. Өөрөөр хэлбэл веб програмууд гэдэг нь олон хуудсууд хооронд дамжиж, дахин дахин хуудас ачаалдаг явдалыг халж дахин ачаалахгүйгээр javascript XMLHttpRequest object ашиглаж вебээс өгөгдөлийг "цаана" ачаалж авчираад CSS буюу div хэмээх динамик элементэд динамикаар "нааж" чаддаг болсон. Ингэснээр Google, Gmail, Gogo.mn эдэр шиг веб сайтууд төрж, MS Office шиг программыг зөвхөн веб шийдлээр бүтээж хэрэглэгчид зөвхөн веб хөтөч, интернэт холболт л байхад өөрийн локаль компьютерт элдэв суулгац суулгахгүйгээр ажиллах боломжыг олгож буй. (Эдгээрийг илүү дэлгэрэнгүй бичихэд уг талбар багадаж байгаа тул цааш та бүхэн дэлгэрүүлж үзээрэй)

http://en.wikipedia.org/wiki/Web_2.0
http://www.soyolerdene.com/index.php/posts/33
http://www.soyolerdene.com/index.php/posts/category/javascript

3. Programming Language - (PHP - Hypertext Preprocessor)
Интернэт дэхь ихэнхи веб програм/сайтуудыг бүтээсэн, бүтээж буй хэлээр тодроод байгаа. Анх веб програмыг программчлалын Си хэл, BASH shell script, Perl script дээр CGI - Common Gateway Interface ашиглан хийж байсан гэдэг. Учир нь тэр үед зөвхөн веб програм хөгжүүлэхэд зориулагдсан PHP, ASP.Net, CFML, JSP зэрэг хэлүүд төрөөгүй байж.
Уг хэл нь Си хэлний синтакс буюу бичлэгийн дүрэмтэй маш төстэй, Объект хандалтат программчлал дэмждэг, нээлттэй эх кодтой гээд хөгжүүлэгчдийн дэмжлэгийг ихээр авсан учир өнөөг хүртэл хөгжсөн бизээ. Тийм ч учраас веб хөгжүүлэгч болохыг хүсэгчдэд уг хэлийг хувийн зүгээс санал болгож байна. Миний хувьд Java JSP -ээс илүү уг хэлийг ашиглаж өнөөг хүрсэн ба ганц дутагдал буюу таалагддагүй зүйл нь java byte code, c# native code шиг хөрвүүлэгдсэн код үүсгэдэггүй түүхий script code -оор ажилладаг юм, энэ нь нууцлалын хувьд асуудал үүсгэнэ. Гэхдээ энэ бол түүнээс татгалзах шалтгаан одоогоор биш, удахгүй шийдэгдэх байх. (Магадгүй би сайн судлаагүй ч биз)

http://en.wikipedia.org/wiki/PHP
www.php.net

http://www.asuult.net/nemesis/php/

4. Database, SQL Language - (MySQL/PostgreSQL)
Мэдээллийн баазгүй веб програм гэж та сонссон уу. Хэхэ. Манай ахмад үеийн хөгжүүлэгчдийн яриагаар MS SQL битгий хэл Oracle, Interbase гараа ч үгүй байхад мэдээллийг файл руу бүтэцлэн хадгалах, түүнийгээ ачаалж боловсруулалт хийх гээд түмэн асуудал мянган бэрхшээл тулгардаг байж. Өөрсдөө Мэдээллийн бааз боловсруулагч программ бичихээс өөр сонголтгүй. Одоо бол байдал шал өөр. Үнэтэйгээс эхлээд нээлттэй эх бүхий MySQL, PostgreSQL тэргүүтэй веб системд илүүтэй зориулагдсан баазууд ямар ч үнэ төлбөргүй байж байна. Гагцхүү тэдэнтэй "ярьж, харилцах" SQL (Structured Query Language)-ыг сурах хэрэгтэй. Мөн өгөгдөлийг эмх цэгцтэй, илүү сайн уялдаатайгаар төлөвлөж сурах шаардлагатай. CRUD, Join, View, SQL Procedure, Trigger, Transaction, RollBack, Sub query гэх мэт.
Хөгжүүлэгчид, хүмүүс MySQL -ыг илүү их сонссон байдаг боловч туршлагатай хөгжүүлэгчид PostgreSQL -ыг хамаагүй илүү найдвартай гэж хэлэх нь бий. Миний л мэдэхийн 2003 оны үед postgesql аль хэдийнэ transaction, procedure ажиллагаатай байхад mysql сураг ч үгүй л байсан. Та санаж байгаа бол саяхан 5 хувилбараасаа л эдгээр функцианолийг дэмжсэн. Мөн эх код дахь алдаатай мөрний эзлэх хувиараа postgresql хамаагүй бага гэсэн үзүүлэлт ч бий. (Уучлаарай, Нэтээс холбоотой мэдээллийг олохоосоо цагаа харамлав)

www.mysql.com
www.postgresql.com

http://www.asuult.net/mysql.php
http://ariunbolor.wordpress.com/2007/05/30/sql-%D0%B3%D1%8D%D0%B6-%D1%8E%D1%83-%D0%B2%D1%8D/
http://php.az.mn/index.php?module=menu&cmd=content&menu_id=4&id=42

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

4. IDE - Код засварлагч (Eclipse, Dreamveawer, HomeSite, Zend Studio)
Integrated Development Environment буюу Хөгжүүлэгчийн орчин, товчоор код засварлагч гэе. Энэ нь эрхэм хөгжүүлэгч таньд кодоо бичих, засварлах ажилд өгүүлэшгүй тус нэмэр болно. Энд та класс үүсгэх, хаана ямар хувьсагч зарласан, эх код файлууд, хавтасуудтай ажиллах, функц хувьсагч хайх, эх кодод тайлбар хийх гээд олон олон тухлаг, эвтэйхэн байдлыг таньд хангаж өгөх янз бүрийн программын сонголтууд арвин бий. Гэвч эдгээрүүд өөр өөрсдийн давуу болон сул талуудтай байдаг. Гэлээ гэхдээ адуучин хүн уургач морь, холд унадаг хатирч морь, хонинд унадаг номхон морь, аргал түүдэг бядтай морь, айл хэсдэг сайвар морь гээд хэд хэдэн уналгатай байдаг шиг тус бүрийг нь давуу онцлогт нь тааруулж хэрэглээд болоод л байна.
Миний өөрийн хэрэглэдэгээс сонирхуулж дурдвал:
- HomeSite+ 5.5 : Маш тухлаг, хүчирхэг засварлагч. html, css, php засварлахдаа ашиглана. Жишээ нь заавал байнга
гэсэн тааг бичээд байхгүй, шууд Ctrl+b гээл болоо. Кодыг өнгөөр ялгаж харуулна, тухайн бичиж буй мөрийг хүрээлж харагдуулна. Их хэмжээний код дотор бол хэрэглээгүй байгаа хэсгийг эвхээд жижиг болгочихно гэх мэт... Гэхдээ сул талуудтай, debug хийхгүй (Заавал Coldfusion сервэртэй холбогдож байж) design view буюу хөтөч дээр харагдах байдлыг харуулдаггүй, гэхдээ Dreamveiwer -тэй шууд холбогддог учир түүн дээр харчихаж болно.
-Notepad++ : Цонх (Windows) системийн Notepad энгийн текст засварлагчийг илүү сайжируулсан хувилбар. Маш олон төрлийн формат, хэлийг дэмждэг (color view) ба үнэхээр хөгжүүлэгчид өөрсдөдөө дутагдаж байсан засварлагчийг мэдэрч хийж чадсан гэж үнэлдэг. xml, sql, yml, css гээд бүтэцлэг формат бүхий файлуудыг засварлахад өнгөөр сайн ялгаж өгч санамсаргүй алдааг гаргахаас сайн сэргийлдэг.
-Eclipse : Үнэгүй, хүчирхэг засварлагч. Нээлттэй эхийн хөгжүүлэгчдийн хамгийн өргөнөөр ашиглаж буй IDE бол яах аргагүй эклипс. File browse, Debug, SVN, CVS гээд бүхий л хэрэгцээт боломжуудаар сайн хангагдаж буй. Гол дутагдал нь компьютерийн ресуурс буюу ачаалал их өгдөг. 512Мбайт санах ойтой байхдаа арай чуу л гэж ажилладаг байлаа. :)
- Zend Studio : Миний хувьд огт хэрэглэдэггүй. Учир нь төлбөртэй. Яахав крэкдээд хулгайн хуулбар ашиглаж болох ч ашиглахыг огт бодож үзээгүй. Зарим хөгжүүлэгчид худалдаж аваад ашигладаг, магтдаг. Гэхдээ өөр төлбөргүй, нээлттэй эхийн багажууд зөндөө байхад, тэгээд ч Eclipse IDE маань хангалттай байдаг.

http://bolorcms.com/badaa/index.php?/archives/9-Eclipse-PHPEclipse-Aptana-Texlipse.html
http://www.dhtech.com/hujii/archives/3-Zend-Studio-247.html
http://hujii.blog.banjig.net/post.php?post_id=29447

5. Version Control System - (CVS or SVN)
Кодын Хувилбар удирдах систем.
Практикт буюу амьдрал дээр системүүд үргэлж шинэчлэгдэж, шинэ шинэ зорилт, хэрэгцээг хангахаар өргөтгөгдөж, сайжируулагдаж байдаг. Системийн анхны хувилбар нь хэрэглэгчдийн нөхцөл шаардлагын зарим хэсгийг л хангахаар тусгагдаж уг зорилгоо биелүүлсэн гэж бодоё. Дараачийн 2.0 хувилбарт илүү олон зорилт тусгаж болно.
Яг ийм нөхцөлд төслүүд хувилбар удирдах системийг ашиглах зайлшгүй шаардлага гарна. Мөн хувилбар бүрт завсрын хөгжүүлэлтийн явцын дэд хувилбарууд багтах бөгөөд тэдгээрийг нэмэлт, хасалт зэрэг өөрчлөлт бүрийг хөгжүүлэгч бүрээр ангилж хадгалсан баазыг уг систем агуулна. Өөрөөр хэлбэл системийн нэг хувилбараас нөгөөх хувилбар хүрэх хоорондох бүхий л түүхийг агуулж байдаг.
Энэ төрлийнхөөс MS SourceSafe, Borland TeamSource гэх мэт төлбөртэй, CVS SVN гэсэн төлбөргүй нээлттэй эхийн хэрэгсэлүүдийг дурдаж болно. Мэдээж хэн ч аваад ашиглахад үнэгүйгээрээ SVN, CVS -ийг санал болгож байна.
Та Цонх систем ашигладаг бол таньд TortoiseSVN, TortoiseCVS -ийг санал болгож байна. Эдгээр нь бүгд үнэгүй програм юм.

http://www.dulmandakh.com/2009/01/blog-post_05.html
http://buyaa.blogspot.com/2008/10/svn.html

6. Diff, Merge tools
Diff буюу ялгааг харах, merge буюу нэгтгэх хэрэгсэлүүд.
Хувилбар удирдах систем ашиглаж буй үед болон ер нь хөгжүүлэгчдэд хоёр файлуудын ялгааг харж хувилбар хоорондын өөрчлөлтүүдийг ялган харах, улмаар тэдгээрийг хооронд нь нэгтгэхэд эдгээрийг ашиглах нь маш тустай. Цаг завыг чинь хэмнэнэ, алдаа эндэгдэл гарахыг хаана. Эдгээрийг хэрэглэж сурснаар та эхлэн суралцагч байхаа больж туршлагатай хөгжүүлэгчдийн эгнээнд орноо ;)

WinMerge, Meld, Kompare
Эдгээр нь нэг их онц ялгаа байхгүй. Таалагдсанаа сонгож аваарай.

7. Database Design, Management Tool
Баазтай ажиллах үед тэдэнтэй ажиллах тохилог, тухтай боловч тогтвортой сайн ажиллагаатай багаж хэрэгсэл бас хэрэгтэй. Ямар баазтай ажиллах болон зөвхөн бааз удирдах ажиллах эсвэл төсөл хөгжүүлэх явцад аливаа баазыг төлөвлөх, архитектур дизайн гаргах эсэх зэргээс хамаараад дараах багажууд бас үнэ төлбөргүй хирнээ түгээмэл ашигладдаг, хөгжүүлэгчдийн талархлыг хүлээсээр удаж байгаа.

phpMyAdmin - MySQL бааз удирдах веб интерфэйс
phpPgAdmin - PostgreSQL бааз удирдах веб интерфэйс
MySQL Workbench - График интерфэйс бүхий MySQL бааз удирдах, баазын дизайн архитектур зурах хэрэгсэл
DBDesinger4 - График интерфэйс бүхий MySQL, Oracle, MSSQL болон аль ч ODBC бааз удирдах, баазын дизайн архитектур зурах хэрэгсэл

http://bolorcms.com/badaa/index.php?/archives/50-DBDesigner4-on-linux.html
http://bolorcms.com/badaa/index.php?/archives/90-MySQL-Workbench-on-Ubuntu-linux.html

Ингээд өнөөдөртөө эхний хэсгийг өндөрлөе. Дараагийн хэсэгт хөгжүүлэгчийн ширээний Үбүнтү үйлдлийн системээ бэлдэх болон php framework, adodb db layer, веб програмаа тест хийх буюу зүгшрүүлэх зэрэг зүйлсийг багтаахийг хичээсү.
Гарчигийг Хэрхэн нээлттэй эхийн хөгжүүлэгч болох вэ гэж өгснөө энэ нь утгын хувьд нээлттэй эх бүхий систем хөгжүүлэгч болох тухай болчих санагдаад өөрчилөв. Уул санаа нь үнэгүй болон нээлттэй эх бүхий програм, хэрэгсэл ашиглан хөгжүүлэгч болох гэсэн боловч урт болчихлоо.

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



Бичлэг таалагдсан бол сурталчилгаан дээр +1 дарж тус хүргээрэй ;)

4 Comments:

Odkhuu.B said...

ёстой гоё сэдэв хөнджээнэ

Эрхэмээ said...

урам зориг өгч буйд баярлалаа. ;)

Bayana said...

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

xvv said...

Баярлалаа :) Тэр SVN, CVS энэ тэрийг оролдож үзье.. Гоё тодорхой, цэгцтэй мэдээлэл хүргэж байгаад баярлалаа.

blogger templates | Make Money Online