Friday, January 22, 2010

OpenGL on Linux

Шаравсамбуу андын блог дээрээ нийтэлсэн зааврыг өөртөө мартахааргүй ойр байлгах үүднээс блог руугаа хуулж оруулав.
Үбүнтү дээрээ тохируулсныгаа блог дээрээ тэмдэглэн үлдээж байгаа нь энэ.
Ойрын үед Code::Blocks гэдэг C++ IDE-д дурлаад байнаа. Энэ IDE нь Виндөүс Линукс МакОС алин дээр нь ч гэсэн ажилладаг яг л VS-ийн C++ шиг гээд бодчих гэхдээ компонент засварлагч байхгүй.
Эхлээд C/C++ ийг суулгах хэрэгтэй.

$sudo apt-get install g++ gcc

Дараа нь codeblocks-ийг суулгах хэрэгтэй


$sudo apt-get install codeblocks

Мөн танд код хөгжүүлэлт хийхэд зориулагдсан нэмэлт хэрэгслүүд хэрэг болно

$sudo apt-get install build-essential gdb subversion
$sudo apt-get install automake autoconf libtool
$sudo apt-get install libgtk2.0-dev libxmu-dev libxxf86vm-dev

Харин wxWidgets GUI toolkit -ийг хэрэглэхийг хүсвэл дараах байдалтай
хийгээрэй. Code::blocks нь өөрөө цэвэр wxWidget дээр бичигдсэн байдаг.

$ sudo apt-get install libwxbase2.8-dev wx2.8-headers libwxgtk2.8-dev

Ингээд C::B суугдлаа.
$codeblocks
гэж шууд команд мөрнөөс дуудаж ажиллуулж болно. Application->Programming->Code::Blocks IDE гэж бас ажиллуулж болно.
хамгийн эхний сонголтод "GNU GCC compiler" -ийг сонгоод эхлүүлнэ.

Харин одоо OpenGL-тэй хэсэг эхлэх гэж байна. GLUT-санг өмнө нь дурдаж байсан билээ. Дараах байдалтайгаар суулгана.

$ sudo apt-get install freeglut3 freeglut3-dev

юуны өмнө таны үйлдлийн системд OpenGL ажиллах эсэхийг нэг шалгаад үзээрэй. Ажиллахгүй байвал mesa санг суулгаад үзээрэй. Шалгахдаа
$ glxinfo | grep direct
гэхэд нь
direct rendering : yes
гэсэн хариу өгч байвал асуудалгүй байгаан байна гэж ойлгоорой. no гэж байвал та график картныхаа драйверийг тохируулах хэрэгтэй эсвэл mesa санг шууд суулгаарай.

Харин одоо Code::Blocks дээрээ file->new->project... гэж ороод GLUT project-ийг сонгоно. "Please, Select GLUT's location:" гэж асуухаар нь
/usr замыг зааж өгөөрэй. Ингээд л болоо.

Мөн код блокс дээрээ build цэсний build гэж кодоо компайлддаг эсвэл ctrl+f9 дарсан ч болно. Ажиллуулахдаа build->run гэнэ эсвэл ctrl+f10 гэж болно. Build хийхэд болохгүй байгаад байвал прожект дээрээ mouse2 дараад properties... гэж ороод Build Targets гэсэн хэсэгт таны хөрвүүлэх ёстой соорс кодууд чагтлагдсан байгаа эсэхийг шалгаарай. Чаглагдаагүй бол чагтлаад OK. одоо build , run хийхэд асуудалгүй.

мөн c-cpp гарын авлагыг татаж авахаа битгий мартаарай
$sudo apt-get install c-cpp-reference
Ингэснээр /usr/share/doc/c-cpp-reference/index.html замд орж дэлгэрэнгүй унших боломжтой.

[OpenGL ажиллаж байгаа байдал]







Sunday, January 17, 2010

Youtube - ээс Video татаж авах


YouTube.com - оос бичлэг татаж авах олон software, site - ууд байдаг л даа. Гэхдээ тэдгээрээс хамгийн хялбараар татаж авах нэгэн аргыг сонирхуулах үүднээс оруулмаар санагдав.
Жишээлбэл http://youtube.com/watch?v=cyz13UJlQZM бичлэгийг татаж авахыг хүсч байгаа бол хаягийн мөрөн дээрээс youtube гэсэн хаягийг  voobys гэсэн хаягаар солиод  http://voobys.com/watch?v=cyz13UJlQZM гэсэн хаяг руу ороод үзээрэй. Маш хялбархан болох нь шууд л нүдэнд тусна :)

Gyachi: Yahoo Instant Messenger Client SoftWare on Linux

Linux-д зориулсан үнэгүй бөгөөд хүчирхэг програм хангамжуудын нэг блог Gyachi мэссэнжэрийн програм нь камер, дуу хоолоо дэмждэг. Хэрэглэж байгаа хүмүүст хамгийн их таалагддаг боломж нь гэвэл Invisible хэрэглэгчдийн статусыг шууд Invisible гээд харуулчихдагт байгаа юм :) Гайхалтай биш гэж үү?

Ubuntu дээр суулгах заавар:

sudo gedit /etc/apt/sources.list
  
нээгээд
deb http://ppa.launchpad.net/loell/ubuntu jaunty main
deb-src http://ppa.launchpad.net/loell/ubuntu jaunty main
Мөрүүдийг хамгийн доор нэмээд хадгална.
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xc23b005d874996dc8d03a3c0d0d3c959db2035a6
 

sudo apt-get update
тушаалаар OpenPGP түлхүүрийг хадгалж, source update хийнэ.
     sudo apt-get install gyachi
тушаалаар суулгана. Ингээд Applications -> Internet дотроос мессенжерээ олж нээгээрэй.

Эх сурвалж: Дусал Блог

Monday, January 4, 2010

PHP: Function

Өмнөх жишээнүүдэд функц дуудсан жишээ бичсэн юм байна. Гэхдээ энэ бичлэгтээ функцийн талаар жаахан дэлгэрүүлээд бичье.
PHP-д фунцкцийг дараах байдлаар зарлаж ашигладаг.

function функцийн_нэр(аргументууд){
        //функцийн үйлдүүд
        return буцаах_утга;
        //утга буцаадаггүй функц байж болно
}

Жишээ болгоод утга буцаадаггүй, '*' тэмдэгээр дамжуулсан аргументийн хэмжээтэй квадрат үүсгэж хэвлэх жишээ кодыг харуулъя.

<?php
        function printSquare($a){
                for($i = 0; $i < $a; $i++){
                        for($j = 0; $j < $a; $j++){
                                echo '*';
                        }
                        echo "<br>";
                }
        }
        printSquare(7);
?>
Үр дүн нь:

*******
*******
*******
*******
*******
*******
*******

Утга буцаадаг функцийн жишээ болгож дамжуулсан тооны квадратыг олдог, тооны факториал олох рекурсив функцуудийг бичиж үзүүлэв.
<?php
        function square($a){
                return $a * $a;
        }
        function factorial($a){
                if($a == 0) return 1;
                else return $a * factorial($a - 1);
        }
        $n = 5;
        echo $n." toonii kvadrat zereg: ".square($n)."<br>";
        echo $n." toonii factorial: ".factorial($n)."<br>";
?>

PHP: Loop

Давталтын үйлдэл нь гэсэн яг C/C++ хэлтэй адилхан(PHP хэл маань өөрөө C/C++ синтакс дээр тулгуурлан хөгжүүлэгдсэн).

Өмнөх нөхцөлт давталт:
while(нөхцөл){
        //үйлдлүүд
}

Дараах нөхцөлт давталт:
do{
        //үйлдлүүд
}while(шалгах нөхцөл);

Параметрт давталт:
for(давталт эхлэх үеийн утга оноох; шалгах; утга өөрчлөх){
        //хийгдэх үйлдлүүд
}

Жишээ кодууд:

<?php
        $i = 0;
        while($i < 10){
                echo $i." * ".$i." = ".$i*$i."<br>";
                $i ++;
        }
?>
Үр дүн:
0 * 0 = 0
1 * 1 = 1
2 * 2 = 4
3 * 3 = 9
4 * 4 = 16
5 * 5 = 25
6 * 6 = 36
7 * 7 = 49
8 * 8 = 64
9 * 9 = 81

<?php
        $i = 0;
        do{
                $i ++;
                echo $i." * ".$i." = ".$i*$i."<br>";
        }while($i != 10);
?>

Үр дүн:
1 * 1 = 1
2 * 2 = 4
3 * 3 = 9
4 * 4 = 16
5 * 5 = 25
6 * 6 = 36
7 * 7 = 49
8 * 8 = 64
9 * 9 = 81
10 * 10 = 100

<?php
        for($i = 0; $i < 8; $i ++){
                echo "For loop<br>";
        }
?>

Үр дүн:
For loop
For loop
For loop
For loop
For loop
For loop
For loop
For loop

PHP: If conditional

<?php
        function checkPass(){
                global $pass;
                if($pass == "true_pass"){
                        echo "OK that's true password<br>";
                }
                else{
                        echo "Wrong Password!!!<br>";
                }
        }
        $pass = "wrong_pass";
        checkPass();
?>

Нөхцөл шалгах үйлдэл нь C/C++ хэлтэй адилхан, elseif гэсэн нөхцөл шалгах үйлдэл л C/C++ дээр нэмэгдэж орж байх шив дээ :D
<?php
        /*
        тоог 3т хуваагддаг эсэхийг шалгах,
        үлдэгдэлтэй хуваагддаг ба үлдэгдэл нь 1 байвал "*"
        үлдэгдэл нь 2 байвал "**" хэвлэнэ :D
        */
        function check3($i){
                if( $i % 3 == 0){
                        echo "OK<br>";
                }
                elseif( $i % 3 == 1){
                        echo "*<br>";
                }
                else echo "**<br>";
        }
        check3(68);
?>

C/C++ хэлэнд байдаг нөхцөл шалгах ? оператор ч байгаа :)
<?php
        $a = 55;
        $result = ($a % 2 == 0)?"Even":"Odd";
        echo $a." is ".$result." number";
?>