2012-07-06

Android

Хуучны хобби

Хэсэг хугацаанд хувийн хоббигоор андройдыг жаал нухав. Java хэл дээр бичихгүй нэлээд удаж. Энэ хооронд дан python дээр бичиж байгаад гэнэт бичсэнийг хэлэх үү цэг таслал, хаалт, их хаалт, хувьсагчийн төрөл гээд маш их төвөгтэй санагдсаныг хэлэх хэрэгтэй. Python бол үнэхээр хялбар бичиглэлтэй юм байна. Бас дээр нь Ажиллуулаж турших, Eclipse + ADT + Emulator  маш их санах ой (2gb) хэрэглэж нэлээн нерв хөдлөгсөнийг эс тооцвол маш их дэвшил гарсаныг хэлэх хэрэгтэй. Гэхдээ дор хаяж 4gb ram тай байхгүй бол горьгүй юм байлээ. Өмнөх андройд программ хийж байсан үетэй харьцуулан анзаарсан зүйлүүдээ бичив.
Өмнөх програмыг хийхэд андройдын хувилбар тэр үед 1.6 байсан. Одоо 4.1 гээд гарч байх шиг байна.
Гол надад таалагдсан зүйл нь ADT энэ нь програмынхаа дэлгэцийг тун хялбархан өрөөд тавьчихдаг болсон байна. Өмнө нь энийг шууд XML дээр нь бичдэг байсан юм. Өрж тавих хэсэг нь ачаалал ихтэй бас алдаа ч нэлээд байсан. Одоо Emulator байхгүйгээр 300mb орчим memory хэрэглэж байна.

Дараагийн нэг зүйл нь өмнөх програмаа ажилуулаж үзэхэд асуудалгүй ажиллаж байгаа нь таалагдав. Уул нь тэр зураг яг дүүрээд таардаг байсын. Юм хөгжинө өө гэж :)

Яг дагнаж android дээр юм хийе гэж бодож байгаа бол ямар нэг Android утастай болсон нь хамаагүй цаг хэмнэх юм байлээ. 

2012-04-14

Python Metaclass


Энгийн байна гэдэг бол 
Маш олон асуудалыг шийдэх шидэт түлхүүр

Би ойрд ажил ихтэй код бичээд амралт багатай. Өлөө ирээд нухаж гарна орой болтол нухаад л байна. Гэдэг шиг ажил ихтэй завгүй талдаа л байна. Хавар цаг болоод олон хүмүүс хямралдаад за за хадуурлаа... гол хэсэгрүүгээ ороё.

Нэг сонирхолтой сэдэв нэлээд дээхэн үед Learning python гээд хальт нэг оньсого шиг юм бичсэн тэрний 1-р бичигдсэн Metaclass ийн хэрэглээний талаар товчхон ойлголт өгөх гэж оролдоё. Энэ аргийг маш өргөн хэрэглэж байгаа учраас зарим Framework ийн кодруу харж байгаад жишээ болгоод тайлбарлая. 

Django ийн талаар олон юм нурших нь илүү байх. Харин Django ийн forms.Form классыг бүгд мэдэх байх. Энэ нөхөр хэрхэн ажиллаж байгааг арай өөр өнцөгөөс харая.

Бид form class ийг бичихдээ ихэвчлэн дараах хэлбэрээр бичдэг. 

Loading ....


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

Харин яаж ажиллаад байгааг нь тайлбарлая. Бидны класс forms.Form классаас удамшисан байгаа. Энэ классын зарлалт нь forms.py#L383 мөр дээр байгааг харж болно. Энэ класс нь BaseForm классаас удамшиж байгаа. Мөн нэг __metaclass__ гэсэн талбарт DeclarativeFieldsMetaclass утгыг өгсөн байгааг харж болно. 
Loading ....

Завсарлага 5 мин :)




DeclarativeFieldsMetaclass нь type классаас удамшиж байгаа энэ нь Python ийн үндсэн object классын үүсгэгч класс. энэ класс нь __new__ функцийг дахин тодорхойлож бүх талбарууд (attrs) дээр үйлдэл хийж байгааг харж болно. Энэ функ нь python ийн process үүсэх үед нэг удаа ажилладаж class төрлийн instance ийг үүсгэн бэлтгэж байгаа учираас классийн __init__ функцээс ялгаатай.

Loading ....


Дээрх кодын __new__ функц дотор get_declared_fields функцийн үр дүнг base_fields талбар үүсгэн хадгалаж байгааг харж болно. Энэ base_fields талбарийн хэрэглэж байгаа байдалийг BaseForm classын __init__ функц дотор  self.fields = copy.deepcopy(self.base_fields) гэсэн мөрийг анхаарах хэрэгтэй энэ нь яагаад copy хийж байгаа шалтгаанаа тайлбарлаж бичсэнийн анхааралтай уншаарай. Шалтгаан нь base_fields ийг шинэ Form instance -уудыг үүсгэх үед хэрэглэж байгаа учраас.

За товчхондоо metaclass ийг django дээр иймэрхүү байдалаар хэрэглэж байгаа. Энэ нь тухайн framework ийг хэрэглэж байгаа хүний бичих кодыг багасгах цэгцтэй болгох гэх мэт маш олон давуу талуудыг үүсгэж байгааг харж болно. Мөн Django ийн Model дээр metaclass хэрэглэж байгааг үзэж болно.

Цаашлаад metaclass-ийг удамшилуулах class уудын удамшилд хэрхэн нөлөөлөж байгааг хараахан ойлгож амжаагүй байгаа....

2011-12-03

Restore BUZZ Posts



Золгийн Buzz ийг хаалаа эд нар гээд. Gmail дээр бас нэг илүү тоо гарч ирээд байхлаар нь Disable хийгээдэхсэн чинь өмнө бичиж байсан хэрэгтэй ганц нэг зүйлээ устчихсан байж.


123123123123123132123123 гэж тоог монгол хэллэгрүү буулгавал. Иймэрхүү болж байхын.

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


http://sprinter.miniih.com/index.php/home/post/52 нэрүүдийн авч.
Жижхэн script ээр хөрвүүлэв.

https://gist.github.com/884998 - Python By Анхбаяр Лхагвадорж
https://gist.github.com/890342 - Java Script By Khaschuluu Munkhbayar
https://gist.github.com/1424371 - C# By @ubs121

2011-09-08

Django 1.4 орчуулага


Төслийн орчуулагын сайт https://www.transifex.net/ маань шинэчилэгдээд гоё болсон байна. Төлбөр мөнгөтэй хувилбаруудтай ч болсон байна.
Энэ сайт дээр нэлээд олон OpenSource төслүүдийн орчуулага хийгддэг. Бас open биш төслүүдээ орчуулах боломжтой болсон байна. Гэхдээ энэ нь үнэтэй.

Өмнө нь хэсэг найзуудын тусламжтайгаар Django 1.3-ийн монгол орчуулагыг амжилттай хийж албан ёсны хувилбарт оруулаж чадсан. Харин одоо  Django 1.4 хувилбарын хөгжүүлэлт ид хийгдэж байгаа мөн шинэ орчуулах текстүүд нэлээд нэмэгдсэн байна.
Боломжооро орчуулагад оролцоорой.
https://www.transifex.net/projects/p/django/team/mn/ 

Өмнөх орчуулагын алдаануудын мөн хянах боломжтой.


2011-08-31

Вэбээ SEO той хэрхэн холбох вэ?

Асар Хурдацтай хөгжилийн
хойноос нь гэлдэрсээр л ...

Сүүлийн үед завгүй.... за за угаасаа улиг болцон шалтаг дөө. кк.

Сонирхож судалсан хэдэн зүйлүүд байна аа. Ерөнхий тойм уншаад өөрийнхөөрөө тайлбарлаж бичив. Цөөн хэдэн удаа туршисан боловч үр дүн гайгүй гарсан гэж бодож байгаа. Буруу зөрүү зүйл байвал хэлээрэй. Гялс засаад тавий.

SEO
Би өмнө нь энийг их буруу ойлгож байсан зарим хүмүүст сонин тайлбарлаж байсан бол уучлаарай. Вэбээ бичихдээ хэдэн стандарт тагуудыг ашиглаад болоо гэж бодож байсан биш юм байлээ.
Энэ нь автомат хайлтын системүүдэд вэбийнхээ контентийг зөв ойлгуулахад зориулагдаж гарсан аргууд юм. Хийсэн вэбийн мэдээлэл чинь нууц л биш бол хайлтын системд өртүүлэж хүмүүст хүргэх нь чухал. Үүний тулд вэб дээрээ доорхи хэдэн зарчимын тохируулга хийх хэрэгтэй.
  1. robots.txt энэ файл дээр ихэнхдээ вэбийн аль хэсгийг нуух вэ гэдэгээ бичнэ. Жишээ нь админ хэсэгрүү хайлтын robot уудыг хандуулмааргүй бол доорхи байдалаар.
    User-agent: *
    Disallow: /admin/
    Disallow: /admin.php/
  2. sitemap.xml энэ нь вэб дотор чинь юу юу байгаан гэдэгээ тодорхой xml форматаар бичээд тавчихсан байхад хэрэгтэй. Цөөхөөн хуудастай танилцуулга вэбүүдийн хувьд бол энэ автомат түүлээр  http://www.xml-sitemaps.com/ файлаа үүсгээд тавьчих. 
  3. Meta TAGS энийг ихэнх нь мэдэх байх. SEO д зориулсан цөөхөн таг байдаг.
    Доорх хэдэн таг. Оновчтой бичсэн эсэхээ шалгах багаж бас нэлээд байгаа.
    <title>META Tags Tips - Metadata Elements</title>
    <meta name="keywords" content="tech, ankhaatk, blog, SEO, ">
    <meta name="description" content="" />
  4. Цааш нь http://www.google.com/support/webmasters/ эндээс илүү их мэдээлэл олж чадна.
Schema.org
Энэхүү стандарт ийг хайлтын системийн томчууд нийлэж гаргаж байгаан байх. Удахгүй хэрэгжээх элхэх байх. Энэ нь шинэ attribute ууд ашиглаад вэбийн агуулагын бүтэцийг оновчтой тодорхойлох зорилготой. Дээрх сайтаас дэлгэрэнгүй уншаад үзээрэй.
Жишээ:
<div itemscope itemtype="http://schema.org/Article">
<span itemprop="name">Вэбээ SEO той хэрхэн холбох вэ?</span>
by <span itemprop="author">Анхаа</span>
This article has been tweeted 1203 times and contains 78 user comments.
<meta itemprop="interactionCount" content="UserTweets:1203"/>
<meta itemprop="interactionCount" content="UserComments:78"/>
</div>

Хялбархан тодорхойлох аргыг http://www.google.com/webmasters/+1/button/ эндээс бас авч болно. Дунд хэсэгт байгаа Customize +Snippet хэсэгийг сонирхоорой.

Open GRAPH
Таний хийсэн сайтын хаягийг G+ дээр share хийх. Facebook дээр оруулах үед гарч байгаа мэдээлэлийг анзаарсан уу. Тэр мэдээлэл нь дээрх протоколыг дэмжсэнээр та өөрийн хүссэн текст ээ гаргах боломжтой болно. Энэ протоколыг дэмжихгүй бол доорх утгуудыг автоматаар хайж олно. Энэ үед заримдаа буруу зураг текст гарчидаг.
Харин энэ протоколын дагуу вэб сайтынхаа  толгой хэсэгт тохирох бүтэцийг meta тагуудыг ашиглан тохируулаж өгсөнөөр Google+, GoogleBuzz, Facebook, Twitter зэрэг томоохон системүүдтэй тун эвтэйхэн нийлэх боломжтой.

<html xmlns:og="http://ogp.me/ns#">
<head>
....
<!-- for OPEN Graph -->
<meta property="og:title" content="Вэбээ SEO той хэрхэн холбох вэ?" />
<meta property="og:description" content="Вэбээ SEO той хэрхэн холбох вэ гэдэг талаар товчхон бичив" />
<meta property="og:site_name" content="http://tech-ankhaatk.blogspot.com" />
<meta property="og:type" content="blog" />
<meta property="og:url" content="http://tech-ankhaatk.blogspot.com/2011/08/seo.html" />
<meta property="og:image" content="http://tech-ankhaatk.blogspot.com/images/SEO.jpg" />
<!-- for OPEN Graph END -->
....
</head>
....
</html>
гээд товчхон үүсгээд тавьчихсан байхад болно. Тун энгийн. Аа бас html дээр xmlns:og="http://ogp.me/ns#" энэ байхгүй байхад асуудалгүй ажиллаад л байсан. кк. Гэхдээ боломжтой бол байлгаж байсан дээр байх шүү. Зөв хийсэн эсэх ээ
http://ogp.spypixel.com/Pogo/checker/
сайтын тусламжтайгаар шалгаарай. алдаануудыг чинь сайхан хэлээд өгнө.

Яг стандартыг барьж хийсэн хуудас энэ байна. Share хийгээд үзээрэй. :)
http://novasoft.mn/hr



2011-04-13

Open code

Python, python, python 
бас дахиад python

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

Django Translation MN
Django ийн орчуулагын найруулгыг нь засварлаж 1.3 хувилбарт хэсэг нөхдийн хамтаар орчуулав. Орчуулагад идвэхтэй оролцсон найзууддаа баяраллаа.

Тоог үсэгрүү хөрвүүлэх жижиг скрипт
Тоог үсэгрүү хөрвүүлэх script энийг нэлээд олон хүн хийж байсан байх гэхдээ нээлттэй хэлбэрээр код нь байхгүй дан ямар нэг газар дараастай мартагдсан байдаг байх. Үүнийг python хэл дээр хийж кодыг нээлттэй байрлуулсаныг идвэхтэн ХАСАА дэмжиж JS дээр ажиллах хувилбар хийн мөн нээлттэй байрлуулсан байгаа. Сонирхоод үзээрэй.


Монгол банкны ханш харуулах widget
Энэ жижхэн widget ийг хийх гэж 80 юм болсон. Жижхэн энгийн юм шиг хэрнээ хөөрхөн ажил болов оо. Хажуугаар нь монгол банкны вэб нь солигдоод мөн вэб нь намайг хийж байхад доголдоод баахан нэрэвтүүлэв. Одоо сайхан ажилладаг болсоон. Ажиллахгүй байх үед нь яаахуу эд нар гээд нэлээд нөхцөл тооцсон. Ашиглах зааварыг нь http://monxansh.appspot.com/ ээс үзээрэй. 

2010-11-18

Django translation MN



Саяханаас Django дотор маань Монгол орчуулага орсан байна. Энэ үнэхээр их хэрэгтэй зүйл болсон. Орчуулсан сайн дурынхандаа баяраллаа.

Орчуулага дотор бяцхан алдаа хийсэнээс байна. . Энэ алдаа нь  settings.py дотор language ийг нь mn ээр сонгох үед жанго ийн өөрийн админ хэсэг дээрх хэрэглэгчийн мэдээлэл засах хуудасийн хаана ч дарсан нууц үг солих хуудасруу шилжүүлэж байсан байна.

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

1. Өөрийн django ийн project дотор /conf/locale гэсэн хавтас үүсгэ.

2. Django ийн код дотроос /django/conf/locale/mn хавтасийг өөрийн project ийн /conf/locale хавтасруу хуулах.
python-dist-package нь
ubuntu: /usr/local/lib/python2.6/dist-packages/
windows: c:\python26\libs\site-package\

3. Settings.py дээр доорх тохируулалыг нэмэх.

# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'mn'

# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True

# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale
USE_L10N = True

import os
# Төслийн байрлаж байгаа эхний зам
ROOT_FOLDER = os.path.normpath (os.path.dirname(__file__) )

# Заавал оруулах
LOCALE_PATHS = (
 os.path.join(ROOT_FOLDER, "conf/locale"),

)


4. Орчуулагын алдааг засах /conf/locale/mn/django.po файлын 1304-р мөрийг доорх байдалаар сольно уу.




5. Орчуулагын файлыг эмхтгэх.
python manage.py compilemessages
За ингээд болоо.
Django төслийн монгол орчуулагын төсөлд дараах хаягаар хандаж энд дарж оролцоно уу.

Эх сурвалжууд:

2010-11-10

Django document chm format

Блог бичихгүй нэлээдгүй удлаа.

Django-г хэдэн хүнд заах боломж гарч гарын авлага нь offline байдалаар хэрэглэх шаардлага гараад эвтэйхэн хэрэглэгддэгээр нь chm байдалаар бэлтгэх гээд жаахан судлав.

Django ийн баримтжуулалт нь Sphinx хэлбэрээр бичигдсэн байсан учраас дараах алхамуудаар харьцангүй хялбар хийгдэв.

Бэлтгэл ажил.
Python, Sphnix, байх хэрэгтэй.
Windows байхгүй бол Wine + HTML Help workshop хэрэгтэй.
chm байлыг үзхэд xchm хэрэгтэй.

Баримтжуулалтыг бэлтгэх
1. Download django.
2. Extract archive django
3. Open terminal and change directory to /django/docs
4. make htmlhelp
5. Open HTML Help workshop. // боломжтой бол Windows Дээрээс хийсэн ч болно.
6. File -> Compile...  /django/docs/_build/htmlhelp/Djangodoc.hhp

Ингээд л болоо.

Дээрх аргаар үүсгэсэн chm файлыг дараах холбоос дээр хадгалав.
Зассан: 
Өмнөх үүсгэсэн файлыг Windows Дээр нээхэд асуудал гарч байсан учираас жаахан засвар хийж дахин үүсгэв.
http://bit.ly/dha5vf 
Янз бүрийн асуудал гаруул коммент үлдээгээрэй.
Ubuntu дээр xchm Дээр ашиглахад ямар ч асуудал алга.
Windows дээр  ашиглахад ямар ч асуудал алга.

2010-07-07

Learning Python ...


Сүүлийн үед Python ийг нэлээд их сонирхож судлаж байна. Ажлын шаардлагаар  үр дүнтэй зүйл хийх гэж үзэж таржийна аа.  Ёстой нээрээ юм хөгжино өө гэж дуу алдамаар гоё гоё санаанууд энд тэнд их байна шүү. Хамаагүй зүйл бичүүл байгууллагын нууц задалсан хэрэгт унана. 

Python дээр гоё гэмээр хачин ч гэмээр ойлголтууд их байна аа. Заримаас нь дурдвал.
1. Metaclass - Ерөнхий санаа нь Класс-ийг үүсгэдэг класс гэх юм уу даа. Бид Класс залраж байгаад түүнээс Instance үүсгэж ашигладаг түүнтэй зарчим нь адилхан. 
2. Decorator - Энэ бас их сонирхолтой. функц үүсгэдэг функц гэж хэлж болхоор. Бичлэг нь их эвтэйхэн. 

# Jijighen jishee code
class mydecorator(type):
    def __init__(self, func):
        print "function zarlagdav"
        self.func = func
    def __call__(self, *args, *kwargs):
        print "function buruu ajillav :)"

@mydecorator
def testfuncion(arg1,):
     print "test function"

3. Aspect санаа нь болхоор AOP ийг python дээр хэрэгжүүлсэн байдал. Үүнийг нэлээд дээхэнэ Ochko ахын семинар дээр сонсож байсан боловч ямар хэрэгтэйг нь ойлгохгүй гайхаад өнгөрч билээ. 

4. Inspect шалгагч модуль. Класс болон модуль юу л байна бүгдийг нь хаанаас гаралтай юу вэ гэдэг талаар маш их мэдээлэл өгнө. 

2010-05-22

About Assembla

Саяхан би өөрийн Notebook дээрээ Шинэ ubuntu суулгах үед жаахан асуудал гараад хэд хэдэн удаа format лах хэрэг гарав. Тэгээд хувь хувьсгалын баахан код нааш цааш нь зөөж хадгалах гэж бөөн юм болов оо. Ер нь хүн бүрт л тохиолддог асуудал дөө. Харин IT ийн хүмүүс бидны хувьд бол эх кодууд бол нэлээд чухалд тооцогдоно. Баахан код нааш цааш шилжүүлэж байх үед миний хувийн нэг код гээгдээд сэргээх гээд бараагүй хуулсан сервэр дээрээс буцааж авч байж нэг амь аврагдав.

Тэгээд нэт ухаж гарав. Үнэгүй код хадгалчихаар сервэр юу байна гээд хайв. Нэлээд юм байн аа.
http://stackoverflow.com дээрээс асуултынха хариуг олов. Assembla.com  гэж вэб байна аа. Энэ дээр үнэ нь хамгийн багдаа 4$ гэж харагдаж байгаа боловч үнэгүй Repository авч болхоор байгаа юм. Үнэгүй авсан кодоо Private гээд зөвхөн өөртөө болон бусад  хамтрагчидтайгаа хамт дундаа ашиглаж болно.

assembla.com

Одоо бол хувийн бүх кодуудаа энэ дээр байрлуулаж нэг санаа амрав. Та нар ч гэсэн туршаад үзээрэй. Мөнгийг нь төлөөд ашиглуул нэлээд super эд болтой байлээ шүү. 

2010-03-31

About Google BUZZ!

Сүүлийн үед Google ийн үйлчилгээнүүдийн (free) нэлээд ашиглаж дасаад байна. Саяхан гарсан Buzz гээд үйлчилгээ нь их таалагдаад байгаа. Маш энгийн twitter шиг хэрнэ Харилцан яриа нь их эвтэйхэн харагддаг.

Google ч хүчтэй байна шүү. Twitter ийг бага зэрэг ашигладаг байсан. Зарим зүйл нь одоо сонин харагдах болоод байгаа. Twitter хэтэрхий Simple юм аа. Reply эд нар нь нэг л сонин.


Миний бичсэн нэг бичлэг дээр мэргэжил нэгт хүмүүсийн харилцсан байдлыг доорх линкээр ороод үзээрэй. Энэ нь Gmail дотор бас иймэрхүү харагдаад Reply хийхэд хялбар, Маш хурдан яг л чаталж байгаа юм шиг харилцаж болно .... гээд олон зүйлийн хэлж болно. Та өөрөө сонирхоод үзээрэй.

Танилцуулага бичлэг  нь. 



2010-03-18

Google App Engine

Google  компани саяханаас /Одоо бараг жил гарах болчиж/ AppEngine гэж гаргаад нэлээд эрчимтэй   хөгжүүлэж байна. Үүний хажуугаар боломжийн саналыг програмист бидэнд тавиад байгаа юм. Энэ нь юу вэ гэхээр Appengine /Python, Java, ... удахгүй өөр хэл нэмэгдэнэ/  дээр вэб програмаа бичээд тодорхой лимиттэйгээр үнэгүйгээр байрлуулахаас гадна Google-ийхний өөрсдийн апликэшндээ ашигладаг модулиудыг ашиглах боломжийг олгож байгаа юм байна. 
Лимит нь гэвэл барагийн вэбэнд хангалттай хязгаарлалтуудыг тавьж өгч байгаан.
Өдөрт 1гб upload/download,  2000 майл, CPU time 6.5, .. гэм мэт.  1 өдөрт гээд бодохоор боломжийн санагдаад байгаан. Database нь харин 1гб /Гэхдээ л хангалттай/. Бага санагдуул нэмэж худалдаж авч болно/Энэ нь харин үнэтэй шахуу болоод байгаан/. 
Миний бичсэн жижигхэн вэбийн хандалт нь доорх байдалтай байна.


За цаашлаад бидэнд олгож байгаа боломжуудыг тоочвол. Энэ Engine нь Django ийн 0.96 хувилбараас салбарлан хөгжүүлсэн учраас Django ийн Model, Form, Url, Template Language, ... зэрэг modul-ууд ерөнхийдөө адилхан байгаа болно.
Cron : 
Unix ийн крон script шиг доторхой цаг, хугацаанд ажиллахаар тохируулах боломжтой.


Database :
Google Query  ийг ашиглаж баазтайгаа ажиллана. SQL query ашиглах боломжгүй харин түүний оронд GqlQuery ашиглаж баазтайгаа ажиллана.


Domain:
.appspot.com гэсэн домайн авч болно. Мөн өөр домайнуудтай холбох боломжтой.


Найдвартай байдал: System Status
App Engine нь саяханыг болтол бага сага алдаанууд гарсан гэж байсан боловч сүүлийн үед огт асуудал гаргахгүй тогтвортой ажиллаж байна. 


Google дээр вэбээ байрлуулахыг хүсвэл App Engine дээр кодоо бичээд Google Account аар эрх авах боломжтой. 1 эрхээр 10 вэб тавьж удирдах боломжтой. Эрх авахдаа гар утасныха дугаарыг оруулаад ирсэн мессаж ийг нь Google тохирох газар нь оруулаад болно. / Дураагын урд нь 976 гэж оруулана /







2010-02-28

Django problems

Сүүлийн хэдэн сар Django дээр нэлээд хэдэн зүйл хийж үзлээ. Боломжийн хурдан хугацаанд хийгдэх боловч бас асуудал бэрхшээлүүд нэлээд гарлаа.

Өөрт тулгарсан асуудалуудаасаа хуваалцахаар бичиж байна. Саналуудаа хэлээрэй. Нэгэн төслийг ахлаж кодыг нь Django ашиглан хийхээр болж ажилдаа орцгоов. Багт маань 5 хүн байсаны 4 нь код бичнэ. Цаг хугацааны хувьд бас нэлээд шахуу яаруу төсөл байсан /Дандаа л ийм байдаг/.

Кодын ажлын эхэн үед нь Юу хийх яаж хийхийгээ нэлээд олон удаа ярилцаж хувиарлан авч авсан хүмүүсэд нь боломжийнхоо хэрээр тайлбарлаж өгч байсан. Тэгээд бүгд OK болцгоогоод кодруугаа орцгоов. Кодын хугацаа ч нэлээд дөхөөд кодуудаа нийлүүлээд ажиллах болоод ирсэн чинь нэг л биш ээ. Django дээр биш Python дээр шууд биччихсэн юм шиг аймаар кодууд орж ирээд сандаргав тэдгээрийг засуулах, Django-ийн боломжуудыг ашиглаж яаж хялбараар хийж болох талаар тайлбарлаж өгсөөр нэлээд их цаг алдав. Гэхдээ л үр дүн нь санаанд хүрэхгүй хэвээр байсаар төслийн хугацаа дуусаж базаахгүй дүнтэй төсөл өндөрлөвэй. Дээрээс нь захиалагч талийн хүмүүс янз бүрийн сонин сонин шаардлага, хүсэлтүүдээр дараад .

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

Зарим алдаа нь бас ичмээр алдаанууд. Зарим нь бүр ноцтой алдаанууд. Код бичсэн багийнхан маань зарим нь ч туршилгатай. Зарим нь ч шинэ хүмүүс байсан. Шинэ хүмүүс нь ч аргагүй гэхэд туршилгатай хүмүүсээс тийм үр дүн гарнаа гэж бодоогүй шүү. Шинэ юм гэдэг гоё юм шиг хэрнээ буруу ашиглавал аймшигтай.
Дээрхээс дүгнэлт хийгээд доорхи зүйлсийг заавал хэрэгжүүлэх хэрэгтэй гэж бодогдов.

  1. Ашиглах гэж байгаа шинэ сайн технологийн давуу талуудыг заавал бүгд ойлгож ашиглаж сурсан байх. Django ийн хувьд. Model, ModelManagerClass, Queryset, Extra Query, Template, Template tag, Model form, Widget, CustomField, Validation, .
  2. Ахлаж байгаа хүн нь эсвэл технологийг сайн эзэмшисэн хүн кодын ажил авахгүй багийн хүмүүсийн кодыг хянах зааварлах ажил дээр илүү төвлөрөж ажилласан бол арай эрт бага дээр нь илрүүлэх байсан болуу. 
  3. Хүн бүрт болон захиалагч талийн төлөөлөгчид эцэсийн төслийн үр дүнгийн талаар нэг ойлголттой болтол нь хурал хийх. /Захиалагч талийн хүсэл гэж хэзээ ч дуусахгүй бөөн шаналгаа/
  4. ..... 


Та бүхэн саналуудаа бичнэ үү. 

2010-01-22

Django tips

Recently i started to use django framework.
I'm using Django version 1.0.2 to 1.1.1.

Embeded web application for Windows.
Python + Django + Py2exe + CherryPy + Win32.Service




2010-01-19

App store үнэгүй програм татах

Програмаа өөр монголд байгаа хүний iPhone дээр суулгах янз бүрийн аргуудыг судлаж үзэв. Нэлээд олон арга байдаг юм байна. Хайж байхад таарсан аргуудын ихэнх нь хүчээр суулгах аргууд байдаг бөгөөд энэ нь маш их эрсдэлтэй. Ганц нэгийг нь туршиж үзхэд удаан болоод гацаж эхэлсэн учираас орхив.
Хүчээр суулгах аргууд. iphone Jailbreak гэдэг юм байна.
Сүүлд нь ганц нэгийг туршиж үзсэний дараа аргаа өөрчилөж Appstore оос яаж үнэгүй програмуудыг нь татах вэ?. гэж хайгаад үзсэн чинь харин их эвтэйхэн арга олсон шүү.

Бидэнд хэрэгтэй зүйл бол.
  • Интернэт
  • iTunes
  • iPhone байх хэрэгтэй. USB залгууртайгаа хамт.
1. iTunes ээ асаана.
2. Баруу хэсэгт байгаа Store -> iTunes Store хэсэрүү орно.
3. Аль улсынх вэ гэж асууна. Америкийнхаа гэж сонгоорой. ;) /Манайх энэ ангилалд хэзээ орох юм бол до./

4. Зураг дээр дугуйлсан шиг үнэгүй программ дээр дарж ороорой.
5. Үнэгүй программын татаж авая гэж дарах үед Apple Account гэсэн цонх гарч ирнэ.
6.Шинийг эрх үүсгэх /Create New Account/ гэж сонгоорой. Өмнө ямар нэг эрх үүсгэсэн байгаа бол тэрийгээ засах боломжгүй юм шиг байгаан. Энэ талаар дараа тухтай судлана аа. Одоохондоо шинээр үүсгэчих.
7. Continue дээр дарна.
8. Accept the License Agreement ийн check хийгээд. Continue дээр дарна.

9. Гарах цонхон дээр өөрийн Email ID, Нууц үг, Нууц асуулт төрсөн өдөр зэрэг мэдээлэлээ оруулаад. Continue дарна.

10. Төлбөр төлөх хэсэг байгаа. Энэ нь алхамуудыг эхнээс нь зөв хийсэн бол Дараах сонголт гарч ирнэ.
Мөн бусад хаяг мэдээлэлийг нь зохиогоод оруулчих. Гэхдээ Бүсийн код эд нарын нь зөв сонгоорой. Бүр болохгүй бол доорх мэдээлэлийг оруулаарай. City: New York, State: NY, Zip: 10012, Phone: 212 226-3127.

11. Майл хаягаа шалгах үед iTunes Store Account Verification гэсэн майл itunes ээс ирнэ. Энэ дотор орж Баталгаажуулах холбоос дээр дарж таний шинэ эрх баталгаажина.

12. Баталгаажуулах холбоос нээгдсэний дараа iTunes дээр дараах цонх гарч ирнэ.

Баяр хүргий та itunes рүү хандах эрхтэй боллоо. Энэ эрхээрээ үнэтэй программ татах авах боломжгүй. Үнэгүй програмуудыг нь татаж авч болно.
Болохгүй буруу зөрүү зүйл байвал
comment үлдээгээрэй.

2010-01-18

Android & iPhone

Сүүлийн үед Android, iPhone дээр ганц нэг програм хийж үзлээ.
Ер нь болмоор санагдлаа.

Бага зэрэг харьцуулаад үзэхэд. Android нь бүх үйлдлийн систем дээр хөгжүүлэлтийг нь хийдэг. Харин iPhone ийн хөгжүүлэлтийг зөвхөн mac дээр гэж шаарддаг нь жаахан тийм санагдсан. /Миний notebook mac биш болхоор/. Android-ын Application ийг Java дээр бичнэ. iPhone ийг Objective C бичнэ. Харьцуулаад байвал нэлээд юм болох байх. ...

Android ийн хөгжүүлэлтийн орчиныг үүсгэж аваад хэсэг үзсэн. Өөрийн notebook дээрээ Ubuntu + Sun Java + Eclipse 3.5 +Android plugin суулгаж байгаад үзэж тарсан. Эхлээд нэлээд мунгинаж учирыг нь олохгүй баахан гацсан шүү. Intent, Activity, XML гээд нэлээд будилсаны эцэст арай гэж учирыг нь олж зураг эвлүүлдэг програмаа хийж дуусгав. Мэдээж Галаа ах болон USI ийн залуусын дэмжлэх их хэрэг болсон.

Үүний дараагаар завгүй ажил ихтэй гэж нэлээд хойшлуулагдаж байсан iPhone дээр application хийх даалгавар орж ирсэн учираас Яаралтай Object C, хэл iPhone дээр програм бичих зааварууд ухаж эхэлсэн. Өөрийн notebook дээрээ суулгаад хийж болохгүй нь их төвөгтэй байв. Нэлээд хугацаанд ноцолдсоны эцэст Мэдээ.МН сайтаас мэдээлэл татдаг програм хийж дуусав.

Мэдээ үзэх хэсэг нь.

Хийх ч яахав хийгээд дуусгачихлаа. Тэгсэн нэг том асуудал нь програмыг маань хэрэглэх хүмүүс нь монголд байдаг хэрнээ програмыг ашиглахад хүндрэлтэй. Манай Монгол улс AppStore оос юм татаж авах боломж бүхий улсын жагсаалтанд орж чадаагүй болхоор жаахан тийм. Ядаж Android Market шиг. Үнэгүй программудыг татах эрхийг нь өгчихгүй юм байхдаа AppStore-ийн нөхдүүл.

2009-07-11

Eclipse инсталл хийх

Eclipse нь олон хэл дээр программ хөгжүүлхэд зориулан гаргасан хүчирхэг хөгжүүлэлтийн орчин юм. Eclipse ийг Plugin? уудаар өргөтгөн шинэ шинэ нэмэлт багажуудыг тохируулан ашиглаж болдог. Eclipse ийн Classic хувилбар нь Java дээр хөгжүүлэлт хийхээр тохируулагдан бэлтгэгдсэн байдаг боловч бусад C , C++ , Python зэрэг хэлүүд дээр бичих боломжтой хувилбаруудыг татаж авах боложтой.

Албан ёсны веб хаяг : http://eclipse.org
Сүүлийн хувилбар : Eclipse Ganymede 3.4
Санал болгож байгаа хувилбар : Eclipse Ganymede 3.4 Classic
Татаж авах хаяг : http://www.eclipse.org/downloads/

Системд тавигдах шаардлага:
Sun Java 1.5 аас дээш хувилбар байвал тохиромжтой JRE + JDK хувилбар нь байх хэрэгтэй.
Ажиллах доод үзүүлэлт
Тийм их зүйл шаардахгүй боловч хэвийн ажиллахын тулд доорхи шаардлагыг хангасан байх хэрэгтэй. Чадаагүй бол маш удаан ажиллана.
  • Ram 1024mb байвал тохиромжтой. 512 mb дээр ажиллана.
  • Hard дискэнд боломжийн зай байх хэрэгтэй 500mb аас дээш ч юм уу

Суулгах тохируулах
Eclipse ийг татаж авсаны дараа өөрийн тохиромжтой байрлалд задлаж байрлуулана. Ажиллуулахын өмнө Java тохируулагыг шалгах хэрэгтэй. java -version оор.
Анх ажиллуулах үед workspace зам асуух бөгөөд тохируулахдаа өөрийн тохиромжтой газар тохируулахаа мартуузай.



dn.usi.mn ээс авав.

2007-06-27

Windows программчлал цуврал - 1 Registry

Windows программчлалын эхний хичээл. Эмх цэгцгүй эхлэж байгааг уучлаарай. Дараа нь ерөнхийд нь цэгцэлсэн бичлэгүүдийг оруулан засварлах болно.

Windows үйлдэлийн системд Register гэж байдаг. Энэ нь ерөнхийдөө бол Windows ийн ажиллах тохиргооны файл гэж ойлгож болно. Үүнд маш их зүйлс байдаг. Жишээ нь OS ийн Хувилбар, Лицензийн тухай, Мөн дээр нь суулгасан байгаа программууд гэх мэт бүх л мэдээлэлийг хадгалаж байдаг.


Бид энэ том сангийн хаа нэгтэй өөрийн программдаа хэрэгтэй тохиргоо, Нууцлал зэргийг хийж болно.
Гэхдээ Registry ийг нөөцөлдөг харьцуулдаг программууд их байгаа учираас нууцын чухал мэдээлэлийг хадгалах аюултай анхаарах хэрэгтэй.


Visual Basic 6.0 дээрээс Registry рүү бичдэг эргүүлэн уншидаг бяцхан жишээ хийж үзий. Windows ийн Register тэй ажиладаг код байна уу үзий. API Viewer ийг ашиглан хайлт хийв. Анх ачаалсаныхаа дараа File -> Load text file ийг дараж. WIN32API.TXT ийг сонгоно.
Дээрхи хэсгээс хэрэгцээтэй функцүүдээ сонгон Add дээр нь дарж цуглуулана.
Доорхи кодын Зарлалтын хэсэгт бичиж өгнө. Овоо хэд

'**************************************
' WIN32 API аас сонгосон функцүү
' ____Registry засварла
'**************************************

Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" _
(ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, _
lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, _
ByVal lpData As String, lpcbData As Long) As Long


Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" _
(ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _
ByVal samDesired As Long, phkResult As Long) As Long


Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" _
(ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, _
ByVal dwType As Long, ByVal szData As String, ByVal cbData As Long) As Long


Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long


Declare Function RegCreateKeyEx Lib "advapi32" Alias "RegCreateKeyExA" _
(ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, _
ByVal lpClass As String, ByVal dwOptions As Long, _
ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, _
phkResult As Long, lpdwDisposition As Long) As Long


#If Win32 Then

Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const KEY_ALL_ACCESS = &H3F
Public Const REG_OPTION_NON_VOLATILE = 0&
Public Const REG_CREATED_NEW_KEY = &H1
Public Const REG_OPENED_EXISTING_KEY = &H2
Public Const ERROR_SUCCESS = 0&
Public Const REG_SZ = (1)
#End If

Type SECURITY_ATTRIBUTES

nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Boolean
End Type Кодын хэсэгт доорхийг хуулан тавина уу.
'**************************************
' Name: ____Registry засварлагч
' Description: Register рүү бичих унших функц
'
' By: Анхбаяр.Л
'
' http://tech-ankhaatk.blogspot.com
'


'
' Registry рүү бичих функц
'
Public Function bSetRegValue(ByVal hKey As Long, _
ByVal lpszSubKey As String, _
ByVal sSetValue As String, _
ByVal sValue As String) As Boolean

On Error Resume Next
Dim phkResult As Long
Dim lResult As Long
Dim SA As SECURITY_ATTRIBUTES
Dim lCreate As Long
RegCreateKeyEx hKey, lpszSubKey, 0, "", _
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, _
SA, phkResult, lCreate
lResult = RegSetValueEx(phkResult, sSetValue, 0, _
REG_SZ, sValue, CLng(Len(sValue) + 1))
RegCloseKey phkResult
bSetRegValue = (lResult = ERROR_SUCCESS)

End Function
'
' Registry ээс унших функц
'
Public Function bGetRegValue(ByVal hKey As Long, ByVal sKey As String,_
ByVal sSubKey As String) As String


Dim lResult As Long
Dim phkResult As Long
Dim dWReserved As Long
Dim szBuffer As String
Dim lBuffSize As Long
Dim szBuffer2 As String
Dim lBuffSize2 As Long
Dim lIndex As Long
Dim lType As Long
Dim sCompKey As String

lIndex = 0
lResult = RegOpenKeyEx(hKey, sKey, 0, 1, phkResult)


Do While lResult = ERROR_SUCCESS And Not (bFound)
szBuffer = Space(255)
lBuffSize = Len(szBuffer)
szBuffer2 = Space(255)
lBuffSize2 = Len(szBuffer2)
lResult = RegEnumValue(phkResult, lIndex, szBuffer, lBuffSize, dWReserved, lType, szBuffer2, lBuffSize2)


If (lResult = ERROR_SUCCESS) Then
sCompKey = Left(szBuffer, lBuffSize)


If (sCompKey = sSubKey) Then
bGetRegValue = Left(szBuffer2, lBuffSize2 - 1)
End If
End If
lIndex = lIndex + 1

Loop

RegCloseKey phkResult
End Function

2007-03-12

Fedora core 6

Сүүлийн үед OpenSource оор амьсгалаад байгаа. Ажлынхаа PC ны OS ийг солиж орхив. Баахан багцуудыг суулгаад л байлаа. Бүгдийг нь суулгаад ажлынхаа орчиныг бэлдэх гэж баахан мунгинав. Майл клиент, Eclipse, Java .... гээд л ойр зуурын программуудыг тохируулан суулгав. Ер нь их зүгээр юм аа. Таалагдсан шүү.

Миний суулгасан үйлдэлийн систем Fedora Core 6( Zod) гэдэг хувилбар нь. Олон багц сонголгүйгээр шууд байгаагаар нь суулгахад 5 гега орчим болж байна. Дээр нь ажилынхаа файлуудыг хуулаад 10 орчим гега болж байна. 50 гега-г 30, 20 оор нь хувааж суулгах гэж байсанаа мартаад 50 ийгаа тэр чигт нь Fedora-д өгчихсөн. Дараа нь Partition Editor оор тухтайхан засаж авна аа.

Ер нь бол энэ үйлдэлийн систем хуучин ажиллаж байсан XP ээс дутах юм алга.
OpenOffice2.0, Firefox 1.5, GAIM 1.5 (Messenger), мэдээж shell, C ийг янз бүрийн компайлерууд бүгд байна. Java, C дээр код бичдэг эсвэл янз бүрийн вэб хөгжүүлэлт хийдэг хүнд бол тун боломжийг багажуудтай. Хамгийн гол нь янз бүрийн үнэтэй Crackad сан прогамууд гэж байхгүй бүгд л үнэгүй. Бүр заримыг нь кодыг нь татаж авч байгаад өөрийнхөөрөө засаад ашиглаж боломжтой. Монгол хэлээр бичих Windows ийн share луу хандах зэрэгт ямар ч асуудалгүй. Системийн ерөнхий ажиллагаа нь тогтвортой Windows шиг элдэв Virus-д баригдахгүй амар.

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

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