Friday, July 15, 2011

7 сарын 15

Ойрдоо хийсэн бүтээсэн юмгүй, дэмийрч, кино үзсэн шигээ л. Өчигдөр харин дэмий тэнэж байгаад Фэйсбүүк кодоо шинээр бичих хэрэгтэй гэсэн утга бүхий гарчигтай нийтлэл олж уншлаа. Тэгээд холбоотой хуудаснууд гээд янз бүрийн юм үзлээ.
Фэйсбүүкийн өгөгдлийн сан, веб сервэр гээд асар том юм байдаг гэж боддог байсан ч миний төсөөлж байснаас хамаагүй том юм. 24/7 ажиллагаатай байлгахын тулд нийтдээ 9000 cache сервэр, 10000 веб сервэр ажиллаж байдаг юм байна. Гэвч өдрөөс өдөрт хэмжээ нь өсч байгаа Фэйсбүүкийн өгөгдлийн хэмжээнд илүү том сав хэрэгтэй. Харамсалтай нь MySQL-н хэмжээ үүнээс цааш өргөтгөх боломжгүй? ингэж ойлголоо. Мэргэжилтнүүдийн үзэж буйгаар MySQL-ээ болиод өөр технологи ашиглах хэрэгтэй ба үүний тулд шинээр апликэйшнээ шинээр бичих хэрэгтэй.
Үүн дээр жишээ татаж байгаа зүйл бол Твиттер саяхан Ruby дээрх кодуудаа Scala руу шилжүүлсэн. Ингэснээр хурд нь сайжирч, илүү уян хатан, өргөтгөх боломж нь ихэссэн гэж байх юм. Анх API нь Ruby дээр, сервэр талдаа С дээр байсан нь ойрын ирээдүйд Ruby -> Scala, C -> Java болох бололтой.
Ямартай ч үүнээс ойлгосон зүйл бол анх ямар нэг систем бүтээхдээ ирээдүйд яаж ч томорч болохыг тооцох хэрэгтэй, бүр өөрийнхөө тооцож байгаагаас илүүгээр өргөтгөх тухай бодож байх хэрэгтэй юм байна. Учир нь бидний өнөөдөр олсон өчүүхэн санаа юунд ч хүргэж болно. Хамгийн энгийн жишээ бол Твиттерийг анх танилцуулах үед хүмүүс бүтэхгүй санаа гэж байсан авч одоо өдөрт 15 тэрбум хандалттай, дараа нь Гүүгл, Фэйсбүүк тус бүр 5 тэрбумаар удаалж байх жишээтэй.

Monday, March 28, 2011

Python гэж хэлийг оролдож үзэв

Хэд хоногийн өмнө олж авсан нэг номоо урд шөнө сууж харж байгаад энэ хэл дээр ганц програм гэх юм уу даа юм бичиж үзлээ. Тоо таадаг, хамгийн энгийн тоглоом. Үндсэн зарчим нь binary search гэдгийг мэднэ гэж бодож байна.
Эхлээд "компьютер" нэг тоо санана, тэрийг нь тааж олно. Дараа нь санасан тоог чинь цаадах чинь олно. Тоо санаагүй хулхидах гэж оролдвол баригдана, гэхдээ тэр нь өөрөө бас жоохон алдаатай.
Indentation хийдэг нь их зүгээр юм шиг боловч, бүтэн кодондоо, эсвэл олон мөр кодонд while loop ч юм уу нэг оруулахад мөр мөрөөр нь урагшлуулах ядаргаатай санагдав. Бүтнээр нь бүгдийг нь хөдөлгөдөг арга бий болов уу?
Бас коммэнт бичих нь их төвөгтэй санагдлаа. # гэж байгаад, үүнээс хойшхийг коммэнт болгож байгаа боловч, C,C++ шиг /* comment */ гэж яаж хийхийг олж мэдсэнгүй.

import random

guessesTaken = 0

print('Hello! What is your name?')
myName = raw_input()

number = random.randint(1,20)
print('Well, ' + myName + ', I am thinking of a number between 1 and 20. ')

while guessesTaken < 6: print('Take a guess.') guess = raw_input() guess = int(guess) guessesTaken = guessesTaken + 1 if guess < number : print('Your guess is low.') if guess > number:
print('Your guess is high.')

if guess == number:
break

if guess == number:
guessesTaken = str(guessesTaken)
print('Good job, ' + myName + '! You guessed my number in ' + guessesTaken + ' guesses!')
if guess!= number:
number = str(number)
print('Nope. The number I was thinking of was ' + number)

print (myName + '! now it is your turn to think a number')
print ('What is your range of guessed number, 1 to ?')
minNumber = 1
maxNumber = raw_input()
maxNumber = int(maxNumber)
n = maxNumber/2
k = (maxNumber+minNumber)/2
answer = 'null'
low = 'low'
high = 'high'
yes = 'yes'

while guessesTaken < n:

mid = (maxNumber+minNumber)/2

print 'I guess %d' % (mid)
answer = raw_input()
guessesTaken +=1

if answer == low:
minNumber = mid
if mid == maxNumber:
print(myName + '! do not try to fool me!')
break

if answer == high:
maxNumber=mid
if mid == minNumber:
print(myName + '! do not try to fool me!')
break

if answer == yes:
break

if answer == yes:
guessesTaken = str(guessesTaken)
print(myName + '! I guessed your number in ' + guessesTaken + ' guesses!')

if answer != yes:
print(myName + '! did you think any number?')

Tuesday, January 11, 2011

Мэдээллийн технологийн зах зээл - дугаар 1.04

Бага байхдаа If i had a million dollar гэж бараг мэдэхгүй дуу аялаад л баян хүн болно гэж мөрөөддөг байлаа. Хэзээнээс ч юм энэ бодол минь алга болчихсон юм. Тэгээд саяхан гэнэт бодлоо, энэ бодол минь алга болоод юугаар солигдсон юм бол? Баян хүн болно гэж бодохдоо ямар аргаар болох гэсэн юм бол?

Энэ хоёр асуултын алинд нь ч хариулж чадсангүй ээ. Ер нь тэгээд мөнгө гэж юу юм болоо? Бидний амьдралдаа бараа таваар солилцохдоо хэрэглэдэг хэрэглэгдэхүүн, бидний хөдөлмөрийг үнэлдэг үнэлгээ гэж хэлбэл дөхөж очих болов уу?

Худлаа үнэн мэдээллийн технологийн мэргэжилтэй бас сурдаг болохоор найз нөхөд, танилуудаас эхлээд хүн бүр л интернэтээс хүмүүс яаж мөнгө олоод байна? Ямар арга байна? Мөнгө хийх арга тэнд л байна гэх юм. Надад үүнд нь тийм ээ гэхээс өөр хариулт олддоггүй юм. Учир нь, Bill Gates, Steve Jobs, Sergei Brin, Larry Page, Mark Zuckerberg гэдэг нэрнүүдийг харахад тодорхой биз ээ. Эдгээр нэрнүүд бол өнөөдөр дэлхий дээрх хамгийн үлгэр жишээ тэрбумтнууд ба бүгд мэдээллийн технологиос төрөн гарагсад.

Өнөөгийн технологийн хурдацтай хөгжилд материаллаг зүйлээсээ програм хангамж илүү хүчирхэг бас чухал, үүнийгээ дагаад илүү орлоготой байж чадна гэдгийг Билл Гейтс олж харсныхаа хүчинд найз Пол Аллэнтайгаа хамт энэ салбар дахь дэлхийн хамгийн анхны тэрбумтнууд болж чадсан байх гэж боддог.

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

Аливаа бизнес хөрөнгө оруулалт хийгдэж байж ашиг олдог. Энэ салбарын давуу тал нь бодит материаллаг хөрөнгө оруулалт шаарддаггүйг надаар хэлүүлэлтгүй бүгд мэднэ. Хамгийн сүүлийн жишээ, дэлхийн хамгийн залуу тэрбумтан Mark Zuckerberg, надаас бас чамаас эхлээд бид бүгдийг "донтуулж" байгаа Facebook гээчийг бий болгогч. Үүний өмнө Google, хоёр жил гаруйн өмнө хүмүүс тэр бүр гүүгл хэрэглээд байдаггүй байсныг сайн санаж байна. Харин жил хагасын өмнөөс хүн бүхэн "гүүглээс асуу" гэдэг болсон. Харин өнөөдөр юу ч ярьсан фэйсбүүк дээр байгаа гэдэг хариулт өгдөг болж. Өнөөдөр сүлжээнд холбогдоогүй писи, писи биш болсон үед энэ хоёр веб рүү хоёулан руу нь биш юм аа гэхэд аль нэг рүү ордоггүй хүн бараг байхаа больжээ.

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

Учир нь яг одоо 2011 оны 1 сар, өнөөдөр дэлхийн 10 писиний 9-өөс олон нь Виндовс үйлдлийн системийг хэрэглэж байна. Анх Майкрософт компани Интернэт Эксплорэртой Виндовс гаргахад Netscape зах зээлээс шахагдаж байлаа. Энэ мэтчилэнгийн жишээн дээр хүмүүс Билл Гейтс гэж нөхөр бүх писиг эзэлсэн шиг бүх програм хангамжуудыг эзлэх нь, үүнд зай байхгүй, үүний эсрэг тэмцье гэдэг улсууд ч бий. Гэтэл үнэндээ энэ зах зээл өөрөө дэндүү том тэлж байна. Байгаа юман дээр зодолдох биш шинийг эрэлхийлж чадсан нь амжилт олно.

Хоёр дахь Билл Гейтс болох боломжгүй болсон ч гэлээ, дараагийн Mark Zuckerberg болох боломж бий. Үүний тулд дараагийн давалгаа юу байх уу гэдгийг олж харах хэрэгтэй болов уу. Давалгаа гэж юу хэлж байгаагаа тайлбарлах үүднээс доорх жагсаалтархуу юмыг гаргалаа.

1. IBM personal computer

2. Microsoft Windows operating system

3. Netscape internet browser

4. Yahoo free e-mail account

5. Google search engine

6. Facebook social network

7. ?

P.S. Хэрвээ та уншаад, дээрх жагсаалтыг хараад, Apple, Mac OS, Unix, Linux, gmail, yahoo search, hi5, blogger, twitter, myspace etc гэдэг зүйлүүд санаанд чинь орж байвал та миний бичсэн юмны санааг ойлгоогүй байнаа гэж бодоорой :-)