Tuesday, September 8, 2009

OOP бол сайжруулсан Copy/Paste

Ийм сонирхолтой дүгнэлтэнд хүрлээ, тэгэхээр яагаад ийм дүгнэлт хийснээ тайлбарлая. Объект хандалтат програмчлалын үндсэн ойлголт болох удамшлын тусламжтайгаар үүсгэгдсэн классуудын диаграмм нь уруугаа харсан мод хэлбэртэйгээр үүсгэгддэг. Модны аль нэг зангилаан дээр өөрчлөлт орвол түүнээс доошхи мөчирнүүд бүгдээрээ тэрхүү өөрчлөлтийг авдаг. Хэрвээ тэр өөрчлөлтийг авахыг хүсэхгүй бол override хийдэг. Нөгөө талаас удамшил ашиглавал ямар нэгэн ижил зорилготой хувьсагч эсвэл функцийн давхцал маш бага гарна. Ингэснээр хамгийн оновчтойгоор өөр өөр хэсгүүдээс copy хийж авсан ашигтай класс үүсэх юм.

Saturday, August 29, 2009

Programming IQ test: Round 1, 2


Фүү сая infoworld.com сайтнаас тест өгсөн чинь 20-иос дөнгөж 9 авлаа даа. Зарим үгийг нь орчуулж чадахгүй юм гэхдээ л оролдоод үзлээ. Харин хоёрдугаар раундад 12 авлаа. Хэр программист болохоо сонирхоорой!
http://www.infoworld.com/d/developer-world/programming-iq-test-round-1-166

Saturday, August 22, 2009

Friday, August 21, 2009

Хонхыг жингэнүүлмээр байвал зүгээр л жингэнүүлэх хэрэгтэй

Он гарснаас хойш програмчлалын нэгэн хэсгийн их нухацтайгаар бодох болсон юм. Энэ нь ямар нэгэн зүйл програмчилж байхад ямар нэгэн тохиолдолд хэзээ ч ажиллахгүй гэдгийг нь мэдсээр байж түүнийг заавал шалгах хэрэгтэй болдог(if,switch бичих хэрэгтэй). Үүнийг зохицуулахын тулд runtime явцдаа өөрийнхөө кодыг RAM-н дээр өөрчилдөг зарим жижигхэн кодуудыг ажиглаж үзэв. Энэ тухайгаа GURU багшдаа хэлэхэд "Наадах чинь боломжтой, гэхдээ үүнийг сонирхвол чи хэзээ ч амжилтанд хүрэхгүй" гэж байсан юм. Намайг буруу ойлгосон байж болох ч би өөрийнхөө хариултыг долоо хоногийн өмнө л оллоо. Сонирхуулъя:
За мессенжерийн нэг программ бичиж байлаа гэж бодъё. Тэгсэн хэн нэг нь мессенжерт орж ирээд buzz хийх үед нь 2 төрлийн notification тохиргооноос хамаарч хийдэг байг.
1. Дуут дохио өгөх
2. Панел дээр жижигхэн мессеж болгож харуулах, нөхцөл ийм байна.
За би хариултаа олоогүй байсан бол яаж шийдэх байснаа харуулъя:

void onBuzz() {
switch(settings.buzzType) {
case makeSound: {
Device.makeSound();
break;
}
case showMessage: {
Panel.showMessage();
break;
}
default: {
throw new SomeException();
}
}
}
Аа харин хариултаа олсныхоо дараа:
abstract class Buzzer {
abstract void buzz();
}
class SoundBuzzer extends Buzzer {
void buzz() {
Device.makeSound();
}
}
class MessageBuzzer extends Buzzer {
void buzz() {
Panel.showMessage();
}
}
тэгээд программ эхлэх үед нь:
Buzzer buzzMaster=new SoundBuzzer();
buzz хийх үед ажиллах функц маань ийм болж хувирна.
void onBuzz() {
buzzMaster.buzz();
}
За ингээд бичиглэл хэмнээгүй ч ажиллах процессийн хувьд нэг switch-г авч хаяад шууд элдэв нэмэлтгүйгээр ажиллуулдаг болгочихлоо. Гоё биш гэж үү?,
Тэгвэл одоо яаж Settings-ээ сольж MessageBuzz болгох уу?
it's easy:
buzzMaster=new MessageBuzzer();

Monday, July 27, 2009

Saturday, July 25, 2009

Жаваскриптийн гүйцэтгэх үүрэг

Жаваскрипт одоо бол нэгэнт жижигхэн браузер дотор ажилладаг хэл гэж хэлэгдэхээ больжээ. Гүүгл корпораци энэ хэлийг маань улам хүчтэй болгохоор шаргуу ажиллаж байна. Саяхан мэдээ мэдээллийг ухаад сууж байхад энэ хэл дээр маань 3D объектуудыг импортолж оруулж ирээд анимэйшн хийх жишээтэй. Бас цаашлаад XML дээр бичигддэг SVG зурагтай нягт хамтарч ажилласнаар галзуу галзуу анимэйшн хийж байна. Интернетэд зориулагдсан netbook-үүдийн ихэнх программууд javascript-ийн тусламжтайгаар жинхэнэ "stunning" эффекттэй болж байна.
Ирэх жил гүүгл корпорацийн нийтэд дэлгэх гэж байгаа нээлттэй эхийн Chrome үйлдлийн систем нь браузерт суурилж интернет рүү түлхүү чиглэсэн, линуксын /*Энэ чинь л линукс байхгүй юу :), Google ч линуксын цөмийг их хэрэглэж байна даа*/ цөмтэй болно. Тэгэхээр тэрний аппликэйшн нь жаваскрипттэй нягт холбоотой л байж таараа.
За одоо яагаад жаваскриптийг сурах хэрэгтэй болж байгаа хэд хэдэн давуу талуудыг дурдах гээд хичээе.
  1. HTML-ийг амь оруулдаг. (өөрөөр хэлбэл html элементүүдийг удирдаж интерактив орчныг бүрдүүлдэг)
  2. Зурган орчинтой ажиллах чадвартай болсон. (svg)
  3. Анимэйшн хийх боломжтой. (Анимэйшнийг янз бүрийн сан/*jQuery, Dojo г.м*/ эсвэл гараа бичих боломжтой)
  4. Сервер лүү хүсэлт илгээж ирсэн мэдээллийг боловсруулах боломжтой. (Бүр сүлжээгээр объект дамжуулдаг гэж байгаа)
За миний толгойд бууж байгаа давуу талууд гэвэл энэ хэд байх шиг байна. Шинэ үе маань Cloud Computing гээч зүйлийг ихээр сонирхох болж экспертүүд аль хэдийн түүнд аппликэйшнээ бичээд эхэлчихжээ. Энэ computing-ийн нэг төрөл болох SaaS /*Software as a Service*/-ийг хэрэгжүүлэхэд жаваскриптийн гүйцэтгэх үүрэг маш их болох юм.
SaaS:
This type of cloud computing delivers a single application through the browser to thousands of customers using a multitenant architecture. On the customer side, it means no upfront investment in servers or software licensing; on the provider side, with just one app to maintain, costs are low compared to conventional hosting (http://www.infoworld.com/d/cloud-computing/what-cloud-computing-really-means-031 хаяг дээрээс авав)
За одоо яагаад Google корпораци adobe-ийн төрлийн бүтээгдэхүүнд тулгуурлаж биш javascript дээр тулгуурлаад байна вэ гэхлээр /*Уучлаарай зөвхөн миний бодол шүү*/ хэрвээ өөр third-party программ хангамжийг энэ том ирээдүйд хэрвээ дэмжих юм бол суурь технологи нь adobe-ийнх болж бүх зүйлийг ганцхан корпорацийн нуруун дээр аваачаад хаячихна. Adobe ч гэсэн энэ талаар судалгаа хийж клиент компьютерууд дээр тусгай орчин үүсгээд веб аппликэйшнийг десктоп болгох runtime environment гаргасныг зарим хүмүүс мэдэх байх Adobe_AIR гээд ajax, html эд нар дээр бичигддэг, мөн зарим нэмэлтийг бий болгож клиентийн файлын сан гэх мэт зүйл рүү хандах боломжоор хангасан байдаг.
Дээрээс нь нэмж хэлэхэд Google корпорацийн гаргасан Chrome браузерийн хэтдээ гаргах хувилбарууд нь компьютерийн суурь луу хандаж тэндээсээ дэмжлэг авах арга замыг эрэлхийлж байна. Өөрөөр хэлбэл браузер дотор ажиллаж байгаа ямар нэгэн видео тоглоом зэрэг нь таны GeForce-оос дэмжлэг авч заримдаа DirectX шаардчихаж магадгүй шүү/*Зүгээр л Joke :)*/ Энэ тал дээр мэдээж бусад зарим газрууд судалгаагаа юу гэж хийлгүй хаячихав. Би зарим нэг эртнээс судалгаа хийж байсан программ хангамжуудыг харж үзлээ. EyeOS гэж браузер дотор байдаг үйлдлийн систем байдаг юм байна. Ажиллагаа нь бол дажгүйэ сонирхож байгаа бол google-дээд үзээрэй линкийг нь мартчихаж. Бас google-н зарим нэгэн үйлчилгээнүүд болох вебд суурилсан документтэй ажилладаг үйлчилгээ, календар, видео гээд л би десктоп аппликэйшнээс илүү болно шүү гэсэн шиг л хэхэ.
Эцэст нь: Жаваскриптийн тухай бичиж байгаад хадуураад google рүү ороод явчихлаа, уучлаарай. Гэхдээ л энэ бол ирээдүй юм шиг санагдаж байна. Миний ажиллуулж байгаа процесс миний компьютер дээр ажиллахгүй өөр нэг өндөр хүчин чадалтай серверийн нөөцийг идэж, ашиглаж байгаа документууд, файлууд маань ямар нэгэн Cloud серверийн хард дискэн дээр байрлах болно. Тэр үед миний компьютерийн үүрэг болж зүгээр л Display-ийн үүргийг гүйцэтгэх байхдаа. Энэ линк дээр веб vs десктоп тухай их гоё бичсэн байна.

Thursday, July 9, 2009

Unified Communication

Манай улсад Мобиком, Юнител эд нар гээд л манайд гар утасны шугамаар үйл ажиллагаа явуулдаг компаниуд нэлээн хэд байдаг. Сүүлд ажиглаж байхад тэдгээрт нэгэн зүйл хүч түрэн орж байгаа нь интернет юм. Магадгүй та өнөөдөр мессеж бичиж байгаа бол удахгүй мобайл мессенжер нь илүү хямдхан илүү хүмүүстэй холбоо барихад хялбар юм байна хэмээн ойлгож магадгүй. Энэ нь ч үнэн юм мессенжерт байхад зарим нэг хүмүүс ихэвчлэн I'm mobile гэх мэт статустай, өдөрт үсрээд л 200 нэгж унаж байна гэдэг. Эндээс юу асуугдах гээд байна вэ гэвэл гар утас хэрэглүүлж байгаа компаниуд маань интернетэд шахагдах бол уу? сонин ч юмуу инээдтэй сонсогдож байж магадгүй гэхдээ үргэлжлүүлээд уншаарай. Мэдээлэл орж ирж байгаа дамжуулж сувгууд маань юугаар орж ирж байна вэ?
1. Сонин
2. Телевиз
3. Интернет
4. Гэрийн утас
5. Гар утасны үйлчилгээ
6. Захидал шуудан ... гээд хөврөх байлгүй.
Сүүлийн үед веб сайтууд болон сонингуудын хооронд чи миний мэдээллийг хулгайллаа би чинийхийг хулгайлсан энэ тэр хэрүүл гарсаар л байна. Бас зарим сонингууд өөрсдийн веб сайттай болж өгүүллэг эд нараа электроноор хүргэхийг сонирхож байна.
Телевизийн хувьд мэдээлэл нь антеннаар биш UTP кабелиар монгол доторх өндөр хурдны интернетээр гэр лүү чинь дижитал хэлбэрээр орж ирдэг бол ямар байна. Галзуу биз!
Гэрийн утасны хувьд утас чинь цахилгаан холбоо компаний дотоод IP хаягтай VoIP технологийг дэмждэг, видео дүрс дамжуулдаг айн хайнга. Тэгэхлээр гадаад руу хүртэл жирийн интернетийн төлбөрөөр ярьдаг болно. Бас бусад ISP-нуудаас интернет авч байгаа айл руу хүртэл маш бага зардлаар ярьж чадна.
Гар утасны хувьд 3G гээд өөрсдийгөө их хурдтай интернетэд холбогдоод байна гээд рекламдаад байдаг. Тэгвэл заавал тэдний ярианы минутын төлбөрийг төлж байснаас Yahoo Messenger-ийн ярьдагтай төстэй программ суулгаад л яриад эхлэвэл лав даг гар утасны компаниуд дампуурах биз.
Захидал шууданг жижигхэн утаснаас мессеж бичиж байгаа юм шиг дараад л yahoo, hotmail эд нар луу биччихдэг. Дараа нь утас нь дуугараад л мессеж ирлээ, энэ IP-гаас хүн залгаж байна гэвэл амьдрал сайхан л байна. Одоо харин монголд маань IPv6 эсвэл бүх эдгээр мэдээлэл дамжуулах сувгуудийг монгол доторх дотоод IP хаяг бас өндөр хурдны сүлжээгээр хангаад өгвөл эдгээр бүх зүйлүүд маань нийлээд л сарын интернетийн төлбөр болох 20.000₮ болох боломжтой юм.