Saturday, December 31, 2011

Шинэ оны мэнд


Бүгдээрэнд нь шинэ оны мэнд!



Sunday, November 6, 2011

Та бол хөгжүүлэгч, яагаад хэн нэгэнд ажиллаад байгаа юм бэ?

Хөгжүүлэгч мэргэжил эзэмшснийхээ хувьд та алтны уурхай дээр сууж байна. Ойлгосонгүй юу? үгүйээ, @#$% алтны уурхайн тухай ярьж байна.


Орчин үеийн түүхэнд ямар ч бизнес зөвхөн төсөөлөл, ямар ч маркетингийн модельгүй, өөрийн хөрөнгөгүйгээр эхэлж байгаагүй юм.


Бидний өдөр тутам байнга хэрэглэдэг томоохон вебсайтуудын тухай бодоод үз дээ. Facebook, Twitter, Flickr, Foursquare, Google. Эдгээр сайтууд хөгжүүлэгчдийн толгойн дотор байсан төсөөллөөс эхэлсэн юм. Энэ бүгдийг хийх амархан байсан бол уу? Яав ч, үгүй. Энэ бүхэн зөвхөн орчин үед л хийгдсэн юм. Тийм юм бол та яагаад өнөөдөр хэн нэгний төлөө ажиллад байгаа юм бэ?


Тиймээ би тэгдэг. / бичсэн хүн, орчуулагч 2 санал нэгдэв :) /


Энэ ертөнцөд тийм гайхалтай санаанууд зөндөө байгаад байгаа юм бол хөгжүүлэгч нар яагаад өөрсдийнхөө бизнест юм хийдэггүй юм бэ? Миний бодлоор тодорхой хэдэн өчиг байна. Гэхдээ эд нар хууль бус биш гэдгийг санаарай!


Төөрөгдөл #1: Надад цаг алга


Энэ бол хамгийн нийтлэг байдаг өчиг, энийг сонсох бүрт инээд хүрдэг юм. Та өдөрт хичнээн цагийг ТВ үзэх, XBox, Wii, Playstation тоглоход зарцуулдаг вэ? Ганцхан цаг уу? Тэгвэл хэр хугацааг Facebook, Twitter-т гаргадаг вэ? хэдхэн минут уу?. Өдөр бүр цайны цагаараа юу хийдэг вэ? Энд тодорхой 1 цаг бол байна.


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


Би 31 настай гэрлэсэн, гурван хүүхдийн эцэг. Бүтэн цагаар ажиллаад өдрийн төгсгөлд гэртээ харьж гайхалтай эхнэртэйгээ, хүүхдүүдтэйгээ байдаг. Би нэг талаараа үнэхээр завгүй залуу, гэхдээ л долоо хоногт 20 цаг өөрийнхөө санааг хэрэгжүүлэхийн төлөө ажиллаж чаддаг.


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


Оройдоо хүүхдүүдийг орондоо орсны дараа ихэвчлэн 3-4 цагийг өөрийнхөө ажилдаа зарцуулдаг. Эдгээр өөртөө гаргасан цагуудаа нэмээд үзвэл 7 хоногт шинэ санаан дээрээ хангалттай ажиллаж, үр бүтээлтэй байх боломжтой болдог.


Хэрвээ үнэхээр өөрийнхөө санаанд итгэж хийхийг хүсч байгаа бол та ажлаасаа гаралгүйгээр юмаа хийх цаг танд олдоно.


Төөрөгдөл #2: Надад ерөөсөө санаа олдохгүй байна


Намайг дөнгөж эхэлж байгаатай та адилхан бол хүмүүсийн "Санаа бол юу ч биш", "Би үргэлж шинэ санаа олдог, гэхдээ надад цаг алга" гэж хэлж байсныг сонссон байх. Тэд зүгээр л сууж байгаад ДАРААГИЙН ТОМ ЗҮЙЛ-ийг бодож олохыг хичээнэ (дараагийн Facebook, дараагийн Reddit гэх мэтчилэн). Бүх гайхалтай санаанууд аль хэдийнээ хүмүүс хийчихсэн юм шиг санагдана. Зөвхөн гэр лүүгээ алхахаас өөр бодол орж ирэхгүй.


Тэдгээр том вебсайтуудын үндэслэгчдээс нь боломж гарвал асуугаад үзээрэй "Та нарын дөнгөж эхлэхдээ төсөөлж байсан чинь өнөөдрийнхөөс хэр өөр болсон бэ?". Тэд нар тан руу хараад инээнэ гэдэгт би мөрийцье. Үнэндээ тэдний ихэнх төсөөлөл, төлөвлөгөө нь зөрсөөр өнөөдрийг хүрсэн. Тэдний хүчирхэг байгаагийн гол нууц нь үндэслэгч, зохиогчид нь хэрэглэгчдийн хүсч, хайрлах онцлогийг цаг үргэлж бүтээж нэгтгэж ирсэнд буй.


Тиймээс маш энгийн, хүнд хэрэгтэй зүйлээс эхэл. Тэгээд бага багаар сайжруулаад л бай. Хэрвээ эцсийн үр дүнг нь үзэхийг хүсэж байгаа бол та зөвхөн МӨРӨӨДӨГЧ юм байна. Бүтээ, хүмүүст хэрэглүүл, саналыг нь сонс, зөвлөмжийг нь нутагшуул.


Шинэлэг хөгжилтэй санааг хэрэгжүүлэхдээ би ихэвчлэн эдгээрийг хийдэг:


  • Мэдээ сонс. Хүмүүс шүүмжлэх дуртай. Шүүмжлэл бүхэн шинэлэг санаатай байдаг. Одоо миний хийж байгаа төсөл Бой Скайтуудын 100дах жилийн ойн баяртай холбоотой. Би өөрөө Скаут байсан. Скаутуудын удирдагч ч байлаа. Би тэдгээрийн зовлонг ойлгодог, гэхдээ л мартсан байсан. Зүгээр л радио сонсож, чихээ онгорхой байлгаснаар одоо хийж байгаа санаагаа би олсон юм. Энэ бол жижигхээн маркетингийн орон зай мэт санагдаж байгаа байх, гэхдээ маш олон боломжууд байсаар л байгаа. Хүмүүс юунд дургүй байна, юу тэднийг зовоож байна гэдгийг олж мэд. Тэгээд тэдний төлж чадах зарим бүтээлийг хий.

  • Та юу хийхийг хүсдэг вэ? Юуг өөрийнхөө дотроосоо хүсч дуудаад байна?. Хийж байгаа зүйлээ үнэн сэтгэлээсээ хүс, тэгвэл та байж суухын аргагүй болж шинэлэг санаан дээрээ шууд л үсрээд ормоор санагдана. Эхлэхээсээ өмнө нэг бодоод үзээрэй 24/7 цагаар та санаагаа хэрэгжүүлэхээр хөдөлж чадах уу? Яагаад гэвэл шинэ санаагаа та газраас өргөж авахын тулд мөн хэмжээний хөдөлмөр шаардагдана.

  • Тэмдэглэл хөтөл. Тэмдэглэл хөтлөхөд "Google Docs" сайн нөхөр чинь байх болно. Миний хувьд "Програмуудын Санаанууд" гэдэг документтэй. Шинэ санаа толгойнд минь буух бүрийд хийж байгаа зүйлээ түр зогсоогоод шууд тэмдэглэдэг. Зарим хүмүүс шинэ санаагаа тэмдэглэхийн тулд тэмдэглэлийн дэвтэр орныхоо хажууд тавьдаг гэж сонссон юм байна. Би хэдэн ч удаа машин дотроо, гэртээ харих замдаа "Эврика" гэж хэлж байснаа санадаггүй юм. Тоогоо алдсан. Санаануудаа тэмдэглэж авахгүй бол ирээдүйд дахиад л гарч ирнэ. Тэгээд өөртөө жаахан юм хийчихгүй яав даа гэж халаглана.


Олсон шинэ санаагаа тэр өдөртөө хэзээ ч битгий хэрэгжүүлж бай. Нэг өдөр, хоёр өдөр харзана. Дараагийн 1, 2 жилийг үүн дээр ажиллахад харамсахааргүй болтлоо байвал сайн. Зүгээр л хүмүүст таалагдах эсэхийг нь мэдэхийн хийгээд хэрэггүй. Цагийн гарз л болно. Эхлээд хүмүүсээс асуу, хэн энэ хараал идсэн бүтээгдэхүүнийг худалдаж авахад бэлэн байна?


Төөрөгдөл #3: Надад мөнгө алга


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


Одоогийн төсөл дээрээ би DreamHost дээрээс Джангод зориулж эрх худалдаж авсан. Би энэндээ үнэхээр дуртай, сайн ч үйлчилгээ үзүүлдэг. Google App Engine-ийг үнэгүй хэрэглэж болох байсан ч жилд 100 долларыг бол би төлж чадна. Гэхдээ жинхэнэ хэрэглэгчид олтлоо Chargify руу шилжээд сар бүр төлбөрийг нь төлөөд явъя гэж бодож байна.


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


Төөрөгдөл #4: Би маркетинг, дизайн гээч зүйлийг ёстой мэдэхгүй


Энэ бол өөрийнхөө санааг хэрэгжүүлэхэд саад болох тийм сайн шалтгаан биш. Гэхдээ энийг би хүмүүсийн тулгардаг асуудал гэдгийг хүлээн зөвшөөрч байна. Хөгжүүлэгч хүний хувьд, би худалдаа хийхээс айдаг, утсан дээр дүүжлээстэй байх дургүй. Хүмүүсийг өөрийнхөө сайт руу татах арга замыг хайж олох бас дургүй. Би зүгээр л бүтээх дуртай. Энэ үнэхээр таны асуудал бол танд 2 арга зам байна:


  • Таны юуг хийж чаддаггүйг сайн хийдэг үндэслэгч хай. Тэгээд өөрийнхөө сайн хийж чаддаг зүйлийг хий. Хэрвээ та хөгжүүлэгч бол өөрийнхөө цагийг хэрэглэгчийг сонсох, гайхалтай бүтээгдэхүүн гаргахдаа зарцуул. Худалдаа маркетингийн ажил бол цаг идсэн нүсэр ажил. Энэ хоёр ертөнцөд хоёуланд нь суралцана гэдэг бол маш хэцүү. Таны нөгөө үндэслэгч чинь техникийн хүн байлаа гэж бодъё. Та хоёрын аль нэг нь худалдаа, маркетинг дээрээ илүү чадвартай байх нь тодорхой. Тэгээд аль чаддаг дээрээ илүү цагийг өнгөрөөх болно. Таныг "хөгжүүлэгч" гэдэг бол худалдаа маркетингийн ажилд битгий оролц гэсэн үг огтоос биш юм. Худалдаа маркетингийн талд юу болоод байгааг мэдэх хэрэгтэй. Ингэснээр та "Жон яагаад жинхэнэ хэрэглэгч олж чадахгүй байнаа?, би яагаад бүгдийг хийх ёстой юм?" гэсэн сөрөг сэтгэлгээнээс өөрийгөө аврах болно. Мөн эсрэгээр нь бизнесийн нөхдийг ч гэсэн өөрсдийнхөө ажилд жаахан ч гэсэн оролцуулах хэрэгтэй. Ингэж оролцуулснаар танд худалдан авагч нарт юу таалагдах вэ? энэ бүтээгдэхүүнд юу дутагдаад байна гэдгийг ч хэлж болох шүү дээ.

  • Дээшээ өндий, яаж хийдгийг нь суралц. Энэ юу гэсэн үг вэ гэхлээр кодныхоо хажууд хугацаа өнгөрөөхөөс гадна маркетинг, худалдаа, PR-д суралц гэсэн үг. Энэнд хугацаа шаардагдана, битгий бууж өг! …


Төөрөгдөл #5: Надад тогтвортой орлого хэрэгтэй -- би ажлаасаа гарч чадахгүй нь!


Энэ бол төөрөгдөл гэхээсээ илүүтэйгээр бодит байдал. Та үнэхээр хэн нэгний төлөө өдөр бүр, тэдний гэрээнд заасны дагуу үлдсэн амьдралаа өнгөрүүлмээр байна уу? Үгүй юу. Аанхан энэ мэдээж таниас золиос шаардана. Та үүнийг мэдээгүй байсан бол энэхүү постыг уншихгүй л байсан байх.


Та ажлаа хаяж гараад өөрийнхөө цагийн 100%-ийг шинэ санаан дээрээ төвлөрүүлж болно. Ингэж хийснээр таны програм чанартай болж, тэдгээр хүмүүсийн хармаанаасаа мөнгө гаргахад харамсахааргүй бүтээгдэхүүн хийх болно. Татвараа төлөх, хоол хүнс худалдаж авах хэрэгцээ шаардлага ч гэсэн таны хийж байгаа зүйлийг чанартай болгох болно.


Хэрвээ, та над шиг тэжээх хөөрхөн хүүхдүүдтэй бол ажлаас гарах нь зөвхөн зөв гарц биш юм. Арай л илүү хугацаа шаардагдана. Энийг санаарай "Төөрөгдөл #1: Надад хугацаа алга"


Гайхалтай санаанууд ганцхан шөнийн дотор хэрэгжээд амжилтанд хүрдэггүй. Хугацаа хэрэгтэй. Хэдэн ч жил байж болно. Битгий бууж өг!


Программынхаа прототайпыг гаргаж ирснийхээ дараа танд энэ гайхалтай санаа байна гэж хэлж байсан хүмүүс дээрээ оч(хэн нэгэнтэй саналаа хуваалцсан биз дээ?), тэднээс саналыг нь ав. Ингэх нь өөрийгөө зоригжуулахад маш тустай. Магадгүй та зарим үзэн ядагчтай болчихож магадгүй. Бодоод үзээрэй энэ бол сайн зүйл! хүмүүс чиний төслийг хүсч байхад нь та яг мэдрэлийн судлыг нь очоод хөндчихөж. Тэднээс шүүмжлэлийг нь хүлээж ав, төслөө сайжруул. Сүүлийн нэг зүйл гэвэл таныг гомдоохгүйн тулд энд тэндээс магтаал хэлж байгаа найз нар. Энэ нөхцөлд та юутай үлдэх вэ гэвэл бодит амьдралд хэнд ч хэрэг болохгүй зүйлтэй л хоцорно.


Жинхэнэ хэрэглэгчдийн анхаарлыг татаж тэдэнд хэрэглүүлснийхээ дараа та төсөлдөө санхүүжилт авах талаар бодож болно. Найз нөхөд, гэр бүлийнхнээсээ мөнгө асуу эсвэл Тэнгэрийн хөрөнгө оруулагч хайсан ч болно. Тэдгээр хөрөнгө оруулагчдийг татаж чадахгүй байна гэдэг нь таны төсөл шал хэрэггүй байна гэсэн үг биш юм. Зүгээр л та бүтээгдэхүүнээ сайжруулах хэрэгтэй, илүү их хэрэглэгчдийг тат л гэсэн үг. Цахим ертөнцөд мөнгөтэй болохын тулд танд маш их хэмжээний хөрөнгө эсвэл том төсөл хэрэг болохгүй!


Төөрөгдөл #6: Надад хамтрагч алга


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


Нөгөө талаас, бусдыг өөр шигээ шинэ санаагаа хэрэгжүүлэхийг хүсч байлгахыг хүсэх нь буруу. Та өөрийнхөө төслийн талаар илүү бодож үзсэн, төсөөлсөн байхад бусдаас адилхан зүйл хүсэх боломжгүй юм.


Хамтрагчаа хаанаас хайж болох вэ? Хайж болох хамгийн сайн газар бол та өөрийнхөө мэддэг хүмүүсээс эхэл. Тэдгээр хүмүүсийн зан характер, хүсэл мөрөөдлийг та мэддэг учраас сөргөлдөөн гарах нь бага байдаг.


Gangplank эд нартай төстэй коммунитигийн ойролцоо байдаг бол яваад оч. Тэнд байгаа хүмүүсээс суралц, өөрийнхөө санааг хэлэхээс битгий ай. Тэдний юу хүсэж байгааг нь битгий таа, зүгээр асуу! "Энэ миний санааг хулгайлчихаж магадгүй" гээд өөрийнхөө юу бодож байгааг хэлэлгүй яваад байх нь тэнэг хэрэг. Санаа гэдэг бол 10 цент. Тэд нар таны бодож байгааг таниас илүү хийж чадна гээд айгаад явж байгаа бол та ӨӨРӨӨ том асуудалтай юм байна.



###############################

Эх сурвалж: http://www.intermittentintelligence.com/youre-a-developer-so-why-do-you-work-for-some


Энэ пост надад их үнэн үгтэй санагдаад орчуулчихлаа. Зарим хэсгийг нь хаясан, буруу орчуулсан байж магадгүй. Хөгжүүлэгч нар яагаад бусдад ажилладаг вэ? тэд нар зүгээр л мөнгөтэй, амьдралыг чинь тогтвортой байлгаж чадна. Өнөөдрийн би гэдэг зүүн дээр тогтсон будаа бил үү?. Стив Жобс нэгэнтээ "Өөрийнхөө амьдралаар амьдар" гэж хэлсэн байдаг. Би ч гэсэн өөрийнхөөрөө амьдарна, гэхдээ өөртөө илүү цаг гаргаснаар гараагаа эхлүүлнэ. Ирээдүйд хэн нэгний ажилд биш өөрийнхөө ажилд цагаа харамгүй зарцуулна.

Saturday, October 15, 2011

Джангогийн дутагдал

Ойрын үед хүмүүс сэм сэмхнээр джангог их хэрэглэдэг болжээ. Би ч гэсэн джанго жил хагас илүү хэрэглэж энэ хугацаанд яагаад энэ фрэймворк нь гайхалтай байсан бэ? гэдгийг зөндөө харлаа үзлээ хэрэглэлээ. Гэхдээ юм болгонд дутагдалтай тал байдаг. Магадгүй би ганцаараа энэ дутагдалтай талтай нь учраад засаж чадахгүй мангартаад яваад байж болох юм. Хэрэв тийм бол энэ постыг уншиж дууссаныхаа дараа сэтгэгдлээр үлдээгээрэй :)

Джанго "Dont Repeat Yourself" зарчмыг баримталдаг. Нэг хийсэн зүйлийг дахиж хийж болохгүй гэдэг санаа. Өөрөөр хэлбэл нэг натурал тоо эрэмбэлдэг функц бичсэн бол тэр нь бүхэл тоонууд дээр бас ажилладаг байх хэрэгтэй. Цаашилбал бүхэл тоонуудаас бутархай тоог эрэмбэлж болно. Эндээс зөвхөн тоо биш бас тэмдэгтүүдийг. Харьцуулж болох бүхнийг эрэмбэлдэг байж болно. Харав уу? бид нар "DRY" зарчмыг баримтлаад хаанаас хаа хүртэл явчихав?

натурал тоо --> бүхэл тоо --> бутархай тоо --> тэмдэгт --> харьцуулж болох бүхнийг (Ө.х жавагийн Comparable интерфэйсийг хэрэгжүүлсэн)

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

Джанго апп гэдэг хэсгүүдээс бүрддэг. Хөгжүүлэгчид нь "Апп" гэдгийг "Reusable App" гэж нэрлэх дуртай. Ингэснээр нөгөө "DRY" зарчмаараа "Reusable" аппуудыг гаргаж авдаг. Мэдээж энэ апп нь "Супер" байх хэрэгтэй.

Харин яаж апп нь "Супер" болоод янз янзын веб сайтуудад дахин дахин хэрэглэгдэх вэ? Жишээ болгож джангогийн "contrib.comments" аппыг авч үзье. Энэ нь баазад байгаа "дурын" мөрөнд сэтгэгдэл бичих боломжоор хангадаг. Ямар ч мэдээнд сэтгэгдэл бичиж, сэтгэгдэлд нь сэтгэгдэл бичиж, хэрэглэгчид нь сэтгэгдэл бичиж, хуудсанд нь сэтгэгдэл бичиж, ер нь бүх юманд болно. Энэ ерөөсөө л супер бүгдийг хийдийм байна.

Энэ сэтгэгдэл бичихэд тусалсан апп маань бидэнд таалагдсангүй гэж бодъё. Энэнд жаахан л хэсэг дутагдаж? сэтгэгдлийг нь ангилж спам, спам бишээр нь ялгая. Уг нь баазад хадгалж байгаа сэтгэгдэл дээрээ ганцхан "is_spam" гэдэг талбар нэмчихвэл яг болчих гээд байдаг.

1-р боломж. Бид өөрсдөө "contrib.comments"-ийг ашигладаг "comments" гэдэг апп бичиж болно. Ингэхдээ "OneToOne" холболт ашиглаад "Comment" болгонд өөр нэг хүснэгтийн мөрийг холбоно. Тэрхүү өөр хүснэгт нь "is_spam" гэсэн талбартай.

2-р боломж. Бид нар "comments" гэдэг джанго аппыг өөрчилж болохгүй. Яагаад гэж үү? Пайтон дээр хэн __builtins__ модулыг өөрчлөөд явах вэ дээ, энэнтэй яг адилхан. Тэгвэл энэ "comments" аппыг хуулж аваад өөрсдийнхөөрөө өөрчлөөд явъя. "Новш гэж энэ жижигхэн талбарыг нэмэхийн тулд бүхэлд нь хуулж авах ч гэж дээ" гэж бодно байх. Бүр муу тохиолдолд бидний ашигласан аппууд дотор "contrib.comments"-ийг хэрэглэдэг апп байг л дээ. Тэгвэл бид нар 2 ижилхэн жаахан ялгаатай "comments" гэдэг апптай болно. Хэн ч энийг хүсэхгүй тэгэхээр тэрийг 2 биш 1 болгоё. "contrib.comments"-ийг Dependency-гээрээ нэхдэг нөгөө апп маань шинэ зүйлд дасан зохицохын тулд бас өөрчилж янзлагдах хэрэг гарна. Өөрчилсөн л болхөгжүүлэгчдийн ярих дуртай Reusability гэдэг нь өнхрөөд яваад өглөө.

Энд 1-р боломжийг "Performance"-ийн үүднээс авч үзвэл бид яагаад ч дэмжиж чадахгүй. Яагаад гэвэл "contrib.comments" нь заавал "contrib.contenttypes"-ийг суулгасан байхыг шаарддаг. Энэ contenttypes апп нь баазад бүхий л моделиудын мэдээллийг хадгалдаг. Ингэснээр "сэтгэгдэл" маань тэр моделийн, ийм түлхүүртэй объекттой холбогдоно гэж хадгалагдана. Дээрээс нь сэтгэгдэл өөр 1 талбартай "Join" хийх хэрэгтэй нь бид нарын тодорхойлсон "is_spam" гэсэн талбартай модель болно. Энэ мангар байдлыг "өгөгдлийн сан" дээр ч гэсэн үздэг, миний санаж байгаагаар "OneToOne" холболтыг арилгаад нэгтгэдэг.

Хэрвээ танд энэнээс илүү санаа байгаа бол сэтгэгдэл дээр үлдээгээрэй.

Тэгэхээр миний харж байгаагаар Джанго асуудалтай. DRY зарчмыг гайхалтай баримталдаг ч Extensible биш юм байна. Ийм асуудлаас яаж зайлсхийх вэ? Ийм асуудалтай тулгаралгүй тойрч яв гэдэг үг байдийм байна лээ.

Энэ байдлыг ингэж засч болно байх. Джангогийн аппууд нь бөөн функцүүдийн цуглуулга байдаг. Энэ байдлыг эвдэж класс хэлбэртэй болгох. 1.3 дээр зарим "generic view" нь класс хэлбэртэй болсон байна лээ, гэхдээ л бүр илүү класс хэлбэртэй болгомоор байгаа юм. Бүр аппыг нь нэг том класс болгох хэрэгтэй.

Thursday, September 8, 2011

HTML Parser


HTML кодыг боловсруулж тэр дундаас ямар нэгэн мэдээлэл гаргаж авах ажил надад нэлээн олон удаа тохиолдож байв. Тэрний 1 болох Андройд дээр хийсэн ТВ хөтөлбөрийн програмыг дурдаж болно. Энэ апп нь гөгө-гийн нэг хуудсан дах мэдээллийг авч боловсруулаад утасны санах ойд хадгалснаар интернетгүй үед ажиллаж чаддаг.

Нэг ийм зүйл надад тохиолдсон юм. Хэдэн сарын өмнө програм маань ажиллахаа болив. Гайхаад үзтэл нэг мэдээ оруулагч нь "&" тэмдгийг мэдээн дотроо оруулсан, тэгээд HTML хуудас маань алдаатай боллоо. Апп дээр маань энэ алдаатай XML байна гээд ажиллагаагүй таг зогсов. Тэр үед нэг хэрэглэгч маань уг нь их гоё програм байна, сүүлд ажиллахаа больчихлоо засаад өгөөч гэсэн хүсэлт ирсэн боловчиг би засаагүй. Ийм амархан эвдэрдэг юмыг би засаад яах билээ? дараа нэг нөхөр мэдээ оруулж байхдаа ENTER дарчихвал миний апп дахиад ажиллахаа больчихно.

HTML-ээс мэдээ гаргаж авах үед асуудал ийм л болдог. Тэгээд 1 жижигхэн боловсруулагч таг-нд анхаарал хандуулахгүйгээр хийх гээд оролдсон юм. Уг нь их дажгүй, код нь жижигхэн, ашиглахад амархан.

Энэ хуудсан дээрээс мэдээлэл авах гээд үзье л дээ. Цаана нь байгаа кодыг нь харалгүйгээр. Тэгвэл эхлээд би ямар нэгэн ордны нэрийг хайж олно, дараа нь ард нь байгаа арай уртхан хэмжээний текстийг хайна.

Ммм, тэгвэл телевизийн мэдээтэй хуудсыг бодъё. Эхлээд хэд дэх өдөр, ямар нэгэн телевизийн нэр хайна, тэгээд цаг, хөтөлбөрийн нэр.


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


Тэгэхлээр та миний хэлэх гээд байгаа санааг ойлгосон байх. Веб сайт дээрх үгнүүд өөр хоорондоо холбоотой. Эдгээр үгнүүдийн холбоосыг нь тодорхойлж өгч болох юм бол бид тэрхүү хуудаснаас хэрэгцээтэй мэдээллээ авч болно. Тэгээд энэ санаагаа хэрэгжүүлэхээр пайтон скрипт бичсэн юм. Энэ скрипт маань бид нарын хайж байгаа үгийг олоод цааш нь лавшруулж мөн дараа нь тааралдаж болох үгнүүдийг хайдаг. Гэхдээ та хайж байгаа үгээ REGEX-ээр тодорхойлж өгөх ёстой. Оллоо.мн-ий нүүр хуудсан дээрээс цаг агаарын мэдээ авах замыг тодорхойлъё:

Нүүр хуудаснаас нь бид нар эхлээд "Цаг агаар" гэдэг үгийг хайна. Харамсалтай нь "Цаг агаар" гэдэг үгний оронд "Цаг агаар" гэсэн бичигтэй зураг байна. Уйлаад яахав хажууханд нь "Улаанбаатар хотод" гэсэн текст байна. Доор нь "Х сарын Х" баруун талд нь урдаа тэмдэгтэй хоёр тоо байна. Regex-ээр бичвэл:

"Улаанбаатар хотод" ----> "\d{1,2} сарын \d{1,2}" ----> "[+-]\d+" ----> "[+-]\d+"

Сүүлийн хоёр тоо нь харгалзан өдөр шөнийг заана. Кодыг маань сонирхож байгаа хүн байвал энэ линкээр ороод татаж аваад "example.sh"-ийг ажиллуулаад үзээрэй.

Friday, August 5, 2011

Өнөөгийн залуусын буруу юу? /Дашбалбар. О/

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

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

Больцгоо хэрэггүй! гэдэг хоёрхон үгээр
Болгоож биднийгээ чөдөрлөсөн юм.

Ханан дээрээс Чингүнжав, Мандухай, Цогт тайж биш
Харийн жүжигчний хөргүүд дуугай ширтэнэ.
Монгол хувцас өмсөхөөс ичдэг монгол хүүхдүүдийг
Морьтон ардын үрс гэх үү, та минь ээ? гэж гайхна

Зөв ч бай, буруу ч бай, Та нарт хүсэл бодлоо тулгана
Зөрж маргавал хар дансанд бүртгэж эсэргүү гэгдэнэ.
Ингээд л бид санаа бодлоо нууж сурсан юм
Инээмсэглэж, толгой дохиж, хуурах эрдэм эзэмшсэн юм.

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

Эцэг дээдсээ мартсан хүмүүс сайн үйлс бүтээх үү!
Эрхэм соёлоо сүйтгэсэн хүмүүс сайхан амьдарч чадах уу!
Үндэс угсаагаа гэснийг нь үгүй хийж орхисон бус уу?
Үнэн үг хэлснийг нь шоронд суулгаж зовоосон биш үү?

Сүсэг бишрэлийг нуга дарж, бид юуг ч хайрлахаа больсон.
Сүрэг хүмүүс болж, чулуужсан мод шиг зүрхтэй болсон.
Олон үеийнхэн бүтээсэн өнөөгөө бид үгүйсгэхгүй ч
"Одоогийн залуус» гэлцдэг тэр л хүмүүсийг гайхнам.

Бид чинь та нарын хүүхдүүд биш гэж үү?
Бие сэтгэлийн чинь тасархай бус уу?
Шилдэг дээдийг үйлдсэн бол, тэр нь ч Та нарынх!
Ширвэдэг мууг хийсэн бол тэр ч бас Та нарынх!

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

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

Газар нутгаа хайргүй сэндийлж, хөрсийг нь сүйтгэсний
Гай нүглийг хариуцах хүн өнөө хэн ч алга!
Таацын цагаан нуурыг хэн ширгээсэн юм бэ?
Тааж барамгүй оньсого юм гэж уу?

Эцэг дээдсээ бүдүүлэг, эх орноо хоцрогдсон гэж
Элэг зүрхэнд шингээж, эгэл үрсээ хүмүүжүүлээд
Эцэс хойчид нь болохоор энэрэнгүй хайр нэхдэг
Этгээд хачин ёсыг энэ үеийнхэн хэнээс сурав?!...

Wednesday, January 12, 2011

Твиттер

Миний мэдэхээр твиттер бол хүмүүс дээр суурилсан мэдлэг, мэдээ, харилцааны асар том орон зай. Энд твиттерийг харах өнцөг бол твиттерийг мэдээ гэдэг утгаар нь хүлээж авна. Яахав та юу дуртайгаараа тодорхойлоорой гэхдээ энд "мэдээ" гэдэг өнцгөөс нь авч үзье.

Саяхан "ТВ мэдээ" гэдэг програм андройд платформ зориулж бичсэн юм. Хэрэглээ бол өндөр байнаа. Доор хэр статистиктайг гарсныг үзүүлье:

Энд зарим 1 онцлогуудыг дурдах хэрэгтэй. Энэ "ТВ мэдээ" програм зөвхөн монголд ашиглагдана. Яагаад гэвэл зөвхөн монголын ТВ-үүдийн мэдээг үзүүлдэг. 91 утсан дээр идэвхтэй ажиллаж байна. Энэ бага байна уу? Миний хувьд бол Wow. Энэ жил мобикомын ачаар хэд хүртэл өсөх бол? Лав даг нэлээн явна байх. Дээрх програм нь "Gogo" үндэсний портал сайтаас Телевизийн мэдээллүүдийг нь татаж авдаг. Тэнд бидэн шиг хүмүүст (хөгжүүлэгчид) зориулсан мэдээ алгаа (API/RSS байхгүй). Тэгэхээр аргагүй эрхэнд HTML боловсруулагчийг манай анд Erdenezul бичсэн юм. Миний хэлэх гээд байгаа зүйл энэ хүрээд зогсох хэрэгтэй яагаад гэвэл би Андройд ярих гээгүй Твиттер ярих гэж байна.

Твиттер бол асар их мэдээний орон зай. Үүгээр урсан өнгөрч байгаа мэдээг зөвхөн хүнээ дагаснаар хялбархан ангилж чадна. Хэрвээ тэнгис, өргөөгийн жиргээнүүдийг дагавал тэд нар гарч буй, гаргах гэж байгаа киноны мэдээллийг надад өгнө. Хэрвээ "exchange_mn"-ийг дагавал өнөөдрийн ханшийн мэдээг, "weather_mn"-ийг дагавал цаг уурын мэдээ өгнө. Энэ том мэдээллийн орон зайд зөв хүнээ дагаснаар өөртөө хэрэгтэй мэдээллийг олж авч болно.

За цаг агаарын мэдээг гар утсан дээр үзүүлдэг програм хийе гэж бодъё. Тэгвэл би дахиад "gogo.mn" эсвэл "news.mn"-ий кодыг цэвэрлэдэг скрипт бичих үү? Үгүйэ энэ дэмий байх оронд нь тэрхүү мэдээллийг твиттер дээрээс хайсан нь илүү найдвартай, сайн ажиллана байх.

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

Энэ мэтчилэн твиттерийн тусламжтайгаар яг одоо болж байгаа эсвэл болоод өнгөрсөн мэдээг илүү үр дүнтэйгээр авах боломжтой. Би энд зүгээр толгойнд орсон санаагаа мартахгүйн тулд бичсэн юм хэхэ. Тэрнээс биш хийсэн бүтээсэн зүйл байхгүйг ойлгоорой бүгдээрээ "0" дээр байна. Юм хийцгээе.