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+, GoogleBuzzFacebook, 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