Хамтрагчид

Wednesday, March 30, 2011

Django төслийн бүтэц.

Дараагийн хэсэг рүүгээ орж "Hello World" бичицгээе. Джангог суулгасны дараа "django-admin.py" гэсэн команд шеллд орж ирдэг. Энэхүү скриптийг ашигласнаар бид нар шинээр төсөл үүсгэх боломжтой болно. Шинэхэн төслөө хадгалах хавтас руу ороод:
$ django-admin.py startproject HelloWorld
тушаалыг өгөхөд HelloWorld гэсэн нэртэй хавтас үүсэх ба дотор нь шаардлагатай материалууд дагалдаж сууна.
HelloWorld:
__init__.py
manage.py
settings.py
urls.py
  • Энд "manage.py" скриптийг бид нар төсөлтэй холбоотой бааз шинэчлэх, үүсгэх эсвэл хөгжүүлэлтийн сервер асаах эсвэл шинээр компонент үүсгэх гэх мэт үйлдлүүдийг хийхэд ашиглана.

  • "settings.py" файлд бидний төслийн тохиргоо хадгалагдана. Жишээ нь баазын тохиргоо, темплэйтүүд хадгалж байгаа хавтсыг заах, компонентуудыг нэмэх хасах гэх мэт.

  • "urls.py" файлд mapping буюу "URL"-ээс ямар функц рүү шилжүүлэх буулгалтыг зааварчилж өгнө.


За, саяныхаа үүсгэсэн хавтас руу ороод:
$ python manage.py runserver
тушаалыг өгөөрэй. Энэ линк дээр дарна уу? http://localhost:8000 Дараагийн сэдвээр аппликэшний талаар дэлгэрүүлье.

Monday, August 9, 2010

Dia хөрвүүлэгч

"Dia" гэдэг нэртэй диаграм зурдаг үнэгүй хэрэгсэл байдаг. UML, ERD гээд л янз бүрийн диаграм зурдаг. Байнга код бичээд байх нь жаахан утгагүй санагдаад байдийм. 20 жилийн дараа хүмүүс одоогийнх шигээ бичээд байхгүй нь ойлгомжтой. Тэгээд UML дээр хийсэн диаграмыг янз бүрийн хэл рүү хөрвүүлэх боломжийг олгосон нэгэн жижигхэн хэрэгсэл байдаг нь dia2code юм.

Энэ хэрэгсэл маань оролтоороо "dia" файлыг авч харин гаралтаараа ямар нэгэн хэл дээр классуудыг нь гаргадаг. Хөрвүүлэгчид маань джанго руу хөрвүүлэх хэсэг байхгүй байсан учраас тэрийг нэмж бичсэн юм. Бичсэн ч гэж "Python"-гийн үүсгэгч кодыг нь хуулбарлаж аваад өөрчилсөн хэхэ. Гэхдээ их хэрэгтэй гэж бодож байна.

Суулгахдаа:
$ ./configure
$ make
$ sudo make install гээд өөрөө суучихна. Харин дараагаар нь Джангог ашиглахын тулд:
$ sudo cp dia2django.sh /usr/local/bin/

гэсний дараа dia2django.sh команд идэвхжинэ. Мөн dia2code гэсэн програм ч идэвхжинэ.
Жишээ болгох үүднээс ./test хавтас дотор нэг dia файл директортой хамт байгаа. Энэ директор руу шилжээд:
$ dia2django.sh your_app test.dia

командыг өгөхөд дараах гаралт гарч ирж байгаа бол амжилттай суулгажээ.

from django.db import models

class News(models.Model):
"""Class News
"""
# Attributes:
title = models.CharField()
content = models.TextField()
category = models.ForeignKey(Category)
number_of_hit = models.IntegerField()

# Operations
def __unicode__(self):
"""function __unicode__

returns
"""
return None # should raise NotImplementedError()



class Category(models.Model):
"""Class Category
"""
# Attributes:
title = models.CharField()

# Operations

Татах линк: http://www.mediafire.com/?2pfkuprul5fgzbl

Tuesday, August 3, 2010

Татах, суулгах

Джангог татаж суулгах үйл ажиллагаа нь маш энгийн. Юуны өмнө "Python" татаж суулгах хэрэгтэй. Ихэнх Линуксын тархцууд нь анхнаасаа суусан ирдэг учраас татах ямар ч хэрэггүй байх. Виндовсийн хувьд уучлалт хүсье, би хэрэглэхгүй удаж байгаа саяхан суулгах гэж үзээд ойлгоогүй хэхэ :) (хэн нэг нь бичиж өгвөл баярлана.) Суулгахдаа дараах үйлдлүүдийг дагаарай:
  1. "Албан ёсны сайт"-аар нь орж татаж авах хэрэгтэй.
  2. Амжилттай татаж авсан гэж бодож байна. Дараах коммандуудыг дараалуулан хийнэ үү
    $ tar xzvf Django-1.2.1.tar.gz
    $ cd Django-1.2.1
    $ sudo python setup.py install
  3. Ингээд л болоо ;) Янз бүрийн хувилбарууд байгаа миний хувьд 1.1 эсвэл 1.2-ийг санал болгохоор байна. Өмнөх хувилбарууд нь их боломж муутай санагдсан.
Суулгалт хийсний дараагаар терминал дээрээ "django-admin.py" гээд бичээд үзээрэй. Ямар нэгэн текст үзүүлж байх юм бол амжилттай болжээ гэж ойлгоно. Ерөнхийдөө "/usr/local/lib/python2.6/dist-packages/" хавтас дотор өөрийнхөө модулиудыг авч суудаг. Дараагийн нийтлэл дээрээ 4-6 хэсэгтэй джангогийн үзүүлэн тоглолт буюу эхний алхмуудыг үзүүлэх болно. Надад зарим джангогийн жижигхэн төслүүд байгаа учир тэд нараас эхлэнэ гэж бодож байна. Хамтрах хүн байвал sw06d103[at]gmail[dot]com хаягаар өөрийнхөө мэдээллийг явуулаарай, зэрэгцэж нийтлэл бичихдээ таатай байх болно.

Санал болгох нь (албагүй л дээ, гэхдээ арай л дээр)

Хөгжүүлэлт хийж байхад ихэнхдээ л терминалтай зууралдах болохоор терминал доторх хэрэгслүүдийг хэрэглэдэг байх хэрэгтэй. Миний зүгээс бол "VIM" гэдэг текст засварлагч нь их зүгээр. Хэрвээ суугаагүй байгаа бол "sudo apt-get install vim" гээд л суулгачихна. Түүнийг код уншигч "ctags"-тай хамт хэрэглэвэл их үр дүнтэй. Хэрхэн ашиглах талаар энд жижигхэн заавар бичсэн байгаа. Бас "NERDTree" гэдэг нэмэлтийг аваад суулгачих хэрэгтэй манай Шаавкагийн блог дээр заавар нь байгаа. Тэгээд текст засварлагчдаа доорх тохиргоо хийчихвэл танд л хэрэгтэй.
set encoding=utf8
set paste
set expandtab
set textwidth=0
set tabstop=4
set softtabstop=4
set shiftwidth=4
set autoindent
set backspace=indent,eol,start
set incsearch
set ignorecase
set ruler
set wildmenu
set commentstring=\ #\ %s
set foldlevel=0
set clipboard+=unnamed
syntax on
Энэ текстийг хуулж аваад "/home/your_name" хавтсандаа .vimrc гэдэг нэртэйгээр хадгалчих. Ийм амархан гэж үү? Тиймээ, текст засварлагч маань ажиллахынхаа өмнө тодорхой файлууд байгаа эсэхийг шалгаад тэдгээрийг ажиллуулдаг тэр тохиолдлуудын л нэг нь. Энэ тохиргоог нэг "Python" хэлний тухай номноос хуулбарлан авч байсан юм. Хэрвээ анх удаа энэ текст засварлагчийг хэрэглэж байгаа бол Гансүхийн энэ блог болон Сансрын шувуудын энэ сайтаас хэрхэн ашиглах мэдээлэл аваарай.

Джанго

Сүүлийн 7 сарын хугацаанд энэхүү веб програмчлалын орчинтой танилцсан болохоор өөрийнхөө хэмжээнд бага сага мэддэг болсон. Тэрийгээ хүмүүст хүргэх сонирхолтой байгаа учраас Джангогийн талаар бичиж тэмдэглэж, яаж ашиглавал үр дүнтэй байх вэ? гэдэг талаар баримтжуулж байхаар бодож тогтлоо. Анх компьютерийн програмчлалын элдэв зүйлтэй танилцаж байхдаа дараах зүйлүүдийг би лаг гэж боддог байсан юм. Бараг л бүгдээрээ тэгж боддог байх:
  1. Алгоритмдаа сайн бол би компьютерийг маш сайн ойлгоно. Хэнийг ч дагуулахааргүй мундаг болох юм байна.
  2. Ассемблер, Си хэлнүүдийг сайн мэддэг бол би Cool!
  3. Үйлдлийн системийн ажиллагаанд гүнзгий суралцах хэрэгтэй.
За энэ мэтчилэн Hard-Core юмнууд үргэлжилнэ байх. Энэ зөв санагдаж байж магадгүй. "1"-р хэсэгт алгоритмдаа бүгд сайн байх хэрэгтэй гэхдээ бид нар эрдэмтэн биш. Хэн ч өгөгдлийн сангаас ирж байгаа өгөгдөл дээр "Quick-Sort" алгоритмаар эрэмбэлэлт хийдэггүй. "2"-р хэсэгт Ассемблер бол сурахад илүүц харин Си хэлийг мэддэг л байх хэрэгтэй, шаардлагатай юм хийхгүй бол түүнээс би аль болох дөлнө. "3"-р хэсэгт онолын мэдлэгтэй байхад л хангалттай. Түүний эх код байнга л өөрчлөгдөнө. Дээрээс нь хэлэхэд олон зүйлд суралцах хэрэггүй. 10-н хуруугаа л сайхан ашигладаг байхад болно шүү дээ :)

Джанго хэд хэдэн давуу талтай:
  1. Өгөгдлийн сангаас хамааралгүй. Sqlite, MsSql, MySQL байна уу, үгүй юу, тэр өгөгдлийн сангаас бид нар хамаарч код бичихгүй.
  2. Урьдчилан бэлдэж өгсөн файлууд нь зөв арга барилд сургана (MVC - Model View Controller)
  3. Python хэл дээр бичнэ. Энэ хэл бол үнэхээр гайхалтай. Бүхий л шаардлагатай модуль элдэв зүйлийг асуудалгүй татаж суулгана. Гэхдээ хөрвүүлсэн модулиас аль болох зайлсхийгээрэй! ийш тийшээ шилжүүлэхэд хөрвүүлэх хэрэгтэй болдог. Мянга, мянган модуль пэкежүүд энэ хэл дээр бичигдсэн бүх юм байгаа гэдгийг баттай хэлье. Текст засварлагчаас эхлээд сервер хүртэл бий! Интерпретер хэл учраас бид нар ямар ч DLL, SO, EXE, BIN файл хэрэглэхгүй, цэвэр кодтой нь харилцана "Жинхэнэ адал явдал!" Гоё шүү.
  4. Темплэйтэнд зориулсан тусгай хэлтэй. Python хэл дээр бичлээ гээд "HTML"-ийг python кодоор өрөхгүй шүү дээ.
  5. "URL"-ийг бол янз янзаар нь янзалж болно. Дотоод ажиллагаа нь директор бүтэцгүй.
  6. Веб нь "application" гэж нэрлэгдэх хэд хэдэн дэд хэсгүүдээс тогтдог. Нэг "Апп" нь нөгөө "Апп"-аасаа хамааралтай өөрөөр хэлбэл түүн дээрээ бичигдсэн байж болно. Жишээ нь: Удирдлагын хэсэгт зориулсан "Апп" нь Хэрэглэгчидтэй ажиллах "Апп"-ыг шаарддаг. Урьдчилан бэлдэж ирсэн олон Апп-тай болохоор тэндээс шаардлагатай хэсгүүдээ аваад ашиглаж болно. Хэрвээ хакерын зүрх сэтгэлээр суралцъя гэвэл тэдгээрийн эх код руу үсрээрэй :)
Миний хувьд Джанго дээр хөгжүүлэхэд асуудал бол гарч ирсэн. Зөв юмыг зөв аргаар нь хийвэл асуудал ядаргаатай байлаа ч дараа нь үүсэхгүй. Энэ хэдийгээр хүчээ авч байгаа платформ боловч нийтэд тийм их түгээгүй. Өөрөө сервергүй л бол "Hosting" асуудал. Гэхдээ энэнд бол тийм айхтар санаа зовох хэрэггүй. Google ахын "App Engine"-тай хамт байхад болно. Хэдийгээр би дөнгөж "App Engine"-тай найзалж эхэлж байгаа ч гэсэн тэр талаар хийсэн зүйлүүдээ тэмдэглэж үлдээх болно. Дараагийн нийтлэлүүд дээрээсээ эхлээд Джангод хэдүүлээ гараа дүрж бохирдуулнаа.