Monday, November 29, 2010

Ubuntu - г G - Mobile - ийн интернэтэд холбох - 3

G-Mobile-ийн хэрэглэгчид Ubuntu дээр өөрийн гар утас, модемоо хэрхэн таниулах тал дээр Мөнхбаатар ах бид 2-ын бичлэгүүд багагүй хэрэг болж байсан болов уу. Ubuntu үйлдийн систем маань жилээс жилд хөгжсөөр нэмэлт програм, тохиргоо шаардахгүйгээр CDMA модемуудыг саадгүй "таньдаг" болсоор багагүй хугацааг үджээ (9.04, 10.04, 10.10 хувилбарууд дээр).

Модемоо залгаад асаасны дараа хэсэг хугацаа өнгөрч Idle гэрэл ассаны дараа (Модем ажиллагаанд бэлтгэгдэхэд тодорхой хугацаа шаарддаг) дээд панелын баруун хэсэг дэх Network manager дотор CDMA connection гэсэн сонголтыг хийгээд, улс, Mobile service provider-ыхаа нэрийг оруулаад OK дарна. Үүний дараа сүлжээний Icon дээр right click хийж Edit Connections->Mobile Broadland->Сүлжээнийхээ нэрийг сонгоод Edit->Нэр, нууц үгээ оруулаад Apply хийхэд хангалттай. Одоо Сүлжээний Icon дээрээ click хийгээд Сүлжээнийхээ нэрийг сонгоод бүх юм ОК :)

/* Жич: Modem дотор агуулагдах SIM/UIM картыхаа PIN кодыг урьдчилан хүчингүй болгох шаардлагатай */

Saturday, November 13, 2010

Youtube downloader 2

Үбүнтү дээр хэрэглэх дуртай програмуудын нэг youtube-dl алдаатай ажиллаад

$ youtube-dl [url] команд өгөхөд
[youtube] Setting language
[youtube] NZldlyeR8DU: Downloading video info webpage
[youtube] NZldlyeR8DU: Extracting video information
ERROR: format not available for video

алдаа өгөөд байв. Шийдэл нь:

sudo apt-get remove youtube-dl
sudo wget http://bitbucket.org/rg3/youtube-dl/raw/2010.08.04/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod +x /usr/local/bin/youtube-dl

Update:

Youtube downloader-ийн эх код Github руу нүүсэн байна. Энд дарж ороод шинэчлэгдэн эх кодыг (Python хэл дээрхи) татаж аваад ашиглаж байхыг зөвлөж байна. :)

Saturday, October 2, 2010

Festival: Text Speech software in Ubuntu

Англи хэл дээрх текст хэл дээр текстийг "машин"-аар хэлүүлэх хэрэгцээ шаардлага бишгүй л гардаг. Виндовс дээр Microsoft Sam гэдэг "залуу" бичсэн текстийг уншаад л өгдөг. Харин Ubuntu дээр Festival хэмээх програмын тусламжтай текст уншуулж болох нь ээ.

sudo apt-get install festival

командаар festival-аа суулгаад, ажилуулахдаа

festival

командыг өгсний дараа програмын консол гарч ирнэ.

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

(SayText "Hello World")

Monday, September 27, 2010

Ubuntu дээр Японоор бичих

  1. System => Administration => Language Support
    Keyboard input method system гэдэгт ibus-ийг тохируулна.
    Мөн Install/Remove languages-с япон хэлийг сонгон суулгана.
  2. System => Preferences => IBus Preferences => Input Method
    Japanese - Anthy -г нэмнэ.

Суулгасныхаа дараа Ctrl+Space дарж идэвхижүүлнэ.

Эхний ээлжинд нэрээ бичиж үзэв ガンスフ :)

ひらがな、 カタカナ、 漢字 алинаар нь ч бичсэн маш хялбархан юм байна :)

Эх сурвалж: http://battur.blogspot.com

Saturday, September 25, 2010

Ubuntu дээр phpMyAdmin суулгах

sudo apt-get install phpmyadmin
гээд л суулгачихна.

Харин суулгасныхаа дараа

sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf
sudo /etc/init.d/apache2 reload
командуудыг өгснөөр http://localhost/phpmyadmin гэж дуудаж ажиллуулах боломжтой болно.

Monday, September 6, 2010

Installing & configuring Symfony Framework in Ubuntu

symfony
Recently I switched my main PHP framework to learn another, Symfony. I am running a Ubuntu server and recently upgraded to the new distribution and was looking into how to set up the Symfony framework. If you are a beginner then the sandbox_sf file will do, but if you are looking to set it up for more than one page below will show how to install and set it up so all websites will use it.
ubuntustraplogo
Before starting you will need to install Apache2, PHP5, and MySQL. In Ubuntu that is an easy task completed by the following command that will pretty much cover all the required packages.

1sudo apt-get install phpmyadmin php-pear
This will handle the php, apache and all the modules as well as MySQL :) So now lets get started with Symfony. Below you will setup the channel where you are going to download Symfony using pear PHP module.

1sudo pear channel-discover pear.symfony-project.com
2sudo pear install symfony/symfony-1.2.7
That is it! You have symfony installed on your system for use. Now lets setup a simple project for personal use. The project name I will use is “myproject”, you can use any name that you prefer.
I will move to the directory which is the document root for apache, create my project directory, initialize a new project with symfony and create a new front end.

1cd /var/www
2mkdir myproject
3cd myproject
4symfony generate:project myproject
5symfony generate:app frontend
Next we have to create a symlink that will allow the new project that we just created to use the Symfony libraries and elements installed earlier. With us still within the “/var/www/< project name >”

1cd web/
2ln -s /usr/share/php/data/symfony/web/sf/
Now you can visit your site to see how everything looks:
http://< ip address >/myproject/web/
If you get the image below
congratulations
the installation was successful, you can now create an alias that will allow you to view the project without having to go to the “web/” directory. For that we will need to add a new alias within the sites-enabled folder for apache. I only have one site on my computer so my file is named “000-Default”, yours might be something totally different.

1sudo vi /etc/apache2/sites-enabled/000-default
and just add

01......
02 <Directory /var/www/>
03                Options Indexes FollowSymLinks MultiViews
04                AllowOverride None
05                Order allow,deny
06                allow from all
07        </Directory>
08
09        Alias /myproject "/var/www/myproject/web"  #<-- Add this
10
11        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
12.......
Save, quit and restart Apache. Now all you have to do is go to your address http://< ip address >/myproject and see the image above and you are DONE! :D Now was that easy or what?!? :)
Stay tuned for more Symfony joy.

Friday, May 14, 2010

Activating Apache Mod Rewrite

Ubuntu Apache server дээрх Web Project-доо Rewrite engine ашиглах гэтэл ерөөсөө ажиллахгүй байсан тул энэ алдааг яаж засах талаар жаахан хайгуул хийж шийдлийг олов. Танд ч бас хэрэг болж мэднэ :)

Эхлээд дараах командаар холболт үүсгэнэ.

sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/


sudo gedit /etc/apache2/sites-enabled/000-default

000-default файлыг root эрхээр нээгээд

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
# Commented out for Ubuntu
#RedirectMatch ^/$ /apache2-default/
</Directory>

дээрх агуулга бүхий кодыг олоод AllowOverride хэсгийн ард байгаа None утгыг All болгож өөрчлөөд

sudo /etc/init.d/apache2 restart

командаар server-ээ restart хийхэд асуудалгүй ажиллаж байв :)

Monday, May 3, 2010

PHP: Cookie-н тухай && Remember me нэвтрэлтийн жишээ

Интернэт хэрэглэх явцад cookie гэсэн хэллэг багагүй тааралддаг (цахим хөтөчийн түүх(history)-г цэвэрлэхэд clear cookie гэх мэт хэллэг тааралддаг). Вэб урлахад суралцаж байгаа бол энэ ойлголтыг мэддэг, програмлчилж оновчтой ашиглаж сурах нь зөв юм.

Cookie гэдгийг "хэрэглэгчийн компьютер дээр хадгалагдаж, цахим хөтөчөөр дамжуулан вэб үзэх(сервэрт холбогдох) үед сервертэй 'ойлголцох' мэдээлэл" гэж энгийнээр тайлбарлаж болох юм. Вэб програмд cookie-г ашиглах жишээг дурдвал: нэвтрэх form-г бөглөх хэсэгт "Remember me" буюу "Энэ компьютерт намайг сана" гэсэн сонголт, Yahoo гэх мэт сайтад энэ боломж нь "14 хоног үйлчилнэ" гэх мэт тайлбар харагддаг. Эдгээр боломжуудыг cookie-н тусламжтай хэрэгжүүдэг

дээрхи зураг дээрээс cookie-г ашиглах зарчмыг харж болно.

PHP хэлэнд cookie-г үүсгэхдээ setcookie() функцийг ашигладаг.

<?php
setcookie ( name , value , expire , path, domain , secure );
?>

энэ фунцээр дамжуулах аргументууд нь

нэр -> Утга -> (амьдрах) Хугацаа -> Зам (сайтын) -> Domain -> Хамгаалтын төрөл

гэсэн дараалалтай байна. Гэхдээ дээрхи 6 параметрийг бүгдийг ашиглах албагүй, setcookie("username","ganaa"); гээд 2 параметрээр ч үүсгэж ашиглаж болно.


Аргумент

Тайлбар

Жишээ

Хандах нэр

Утга оноох, хандалт хийх зэрэгт ашиглана

username

Утга

Cookie хувьсагчид харгалзах утга

ganaa

Хугацаа

Cookie-н хүчинтэй хугацаа

time()+60*60*24*14 гэвэл 14 хоногийн туршид үйлчилнэ гэсэн үг. (ceкундээр хэмжигдэнэ)

path буюу зам

Вэб сайтын аль хэсэгт үйлчлэхийг заана. Анхны утга нь / байдаг(тухай сайтын бүх хуудсанд үйлчилнэ гэсэн үг).

jishee.com сайтын jishee.com/test хэсэгт хүчинтэй байлгана гэвэл /test гэж зааж өгч болно.

Domain

Аль дэд домэйн (subdomain) -д үйлчлэхийг заана.

jishee.com сайтын www.jishee.com-д л хүчинтэй байлгахыг хүсвэл www.jishee.com гэж зааж өгч болно. Бүх дэд домэйнуудад хүчинтэй байлгах бол .jishee.com гэж зааж болно.

Secure

Хамгаалалтын зэрэг. 0 1 гэсэн хоёр утгын нэгийг авна. 1 утгыг авсан бол HTTPS хамгаалагдсан холболтыг ашиглагдана.



Одоо cookie-г PHP дээр нэвтрүүлэх жишээнүүдийг туршъя.

cookie хувьсагчид хандахдаа. $_COOKIE[] массивт элемэнтын нэрээр индекс болгон хандах байдлаар ажилладаг.

<?php
setcookie("username","ganaa");
echo 'Cookie created.';
?>

гэсэн код(хуудас)-ыг дуудаж ажиллуулсаны дараа.

<?php
if (!isset($_COOKIE['username']))
{
  echo ("Opps, the cookie isn't set!");
}
else
{
  echo ("The stored username is ". $_COOKIE['username'] . ".");
}
?>

кодыг ажиллуулж үзвэл

The stored username is ganaa.

гэсэн мэдээлэл дэлгэцэнд хэвлэгдэх болно.

Cookie-г устгахдаа setcookie() функцийг мөн ашиглана.

<?php
setcookie("username","", time()-10 );
echo 'Rosebud.';
?>

username-д хоосон утга оноогоод хүчинтэй байх хугацааг өнгөрсөн хугацаанд зааж өгөхөөр хүчингүй болох юм.

Одоо cookie ашиглан Remember me сануулах жишээг үзье.

index.php

<?php
    header("Location: login.php");
?>

login.php

<?php
    //header("text/html; charset");
    session_start();
    if(isset($_COOKIE['usercookie']) && isset($_COOKIE['passcookie'])){
        $_SESSION['user']=$_COOKIE['usercookie'];
    }
    if(isset($_SESSION['user'])){
        header("Location: welcome.php");
    }
?>
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
<title>Нэвтрэх хэсэг</title>
</head>
<body>
<form action="check.php" method="post" name="logform">
<table>
<tr>
<td>
Хэрэглэгчийн нэр:
</td>
<td>
<input type='text' name="user" />
</td>
</tr>
<tr>
<td>
Нууц үг:
</td>
<td>
<input type='password' name="pass" />
</td>
</tr>
<tr style='text-align:right;'>
<td>
<input type='checkbox' name='remember' />Намайг сана :)
</td>
<td>
<input type='submit' value="Нэвтрэх"/>
</td>
</tr>
</table>

</form>
</body>
</html>

check.php

<?php
    session_start();
    
    $username = "ganaa";
    $password = "pass";
    
    
    $user = $_POST['user'];
    $pass = $_POST['pass'];
    
    if($user == $username && $pass == $password){
        $_SESSION['user'] = $user;
        header("Location: welcome.php");
        if(isset($_POST['remember'])){
            setcookie('usercookie', $user, time()+3600);
            setcookie('passcookie', $pass, time()+3600);
        }
    }else{
        header("Location: login.php");
    }
?>

welcome.php

<?php
    session_start();
    if(!isset($_SESSION['user'])){
        header("Location: login.php");
    }
?>
<html>
<head>
<title>Welcome <?php echo $_SESSION['user']; ?> </title>
</head>
<body>
<p>
<a href="logout.php">Log out</a>
</p>
</body>
</html>

logout.php

<?php
    session_start();
    if(isset($_SESSION['user'])){
        unset($_SESSION['user']);
        setcookie("usercookie", "", time()-3600);
        setcookie("passcookie", "", time()-3600);
    }
    session_destroy();
    header("Location: login.php");
?>

Saturday, May 1, 2010

vnstat: Интернэт хэрэглээнийхээ хэмжээг хянах нь

Интернэтийг өдөр тутмын хэрэглээгээ болгосон та бүхэн өөрийн интернэтээр хэдий хэмжээний мэдээлэл урсаж байгааг мэдэхийг хүсдэг болов уу гэж бодож байна. Миний хувьд G-mobile-н дараа төлбөрт багцыг ашигладаг болохоор өөрийн хэрэглээгээ хянахыг бүр ихээр хүсч байв :) Багагүй хайгуул, туршилт хийж энэ үүргийг гүйцэтгэх vnstat хэмээх програмыг оллоо. Ubuntu дээр CLI хувилбарыг хэрхэн суулгах, ашиглах талаар заавар бэлтгэлээ :)
Ubuntu дээр:

$ sudo apt-get install vnstat

командаар vnstat програмаа татаж суулгана.

Харин дараа нь

$ sudo chmod o+x /usr/bin/vnstat
$ sudo chmod o+wx /var/lib/vnstat/

командуудаар харгалзах хавтасны зөвшөөрлийн зэрэг(permission)-ийг тогтоож өгнө.

Сүлжээний урсгалаа хянахын тулд сүлжээнийхээ интерфэйсийг мэдэх шаардлагатай.

$ ifconfig

командаар сүлжээнүүдийхээ талаар мэдээллийг харж болно.

Жишээлбэл eth0 интерфэйс бүхий сүлжээгээр урсаж байгаа мэдээллийн хэмжээг мэдэхийг тулд

$ vnstat -u -i eth0

командаар update хийж,

$ vnstat

командаар, статистикийг харахад дараах байдалтай харагдана:


Database updated: Thu Aug 30 13:40:01 2007

        eth0

           received:          90.65 MB (11.9%)
        transmitted:         666.12 MB (88.1%)
              total:         756.77 MB

                        rx     |     tx     |  total
        -----------------------+------------+-----------
        yesterday     49.94 MB |  378.44 MB |  428.38 MB
            today     17.27 MB |  125.30 MB |  142.57 MB
        -----------------------+------------+-----------
        estimated        29 MB |     218 MB |     247 MB


Энэ програмыг ашиглах командуудын дэлгэрэнгийг

$ vnstat --help

командын тусламжтай илүү дэлгэрэнгүй уншаарай. Амжилт хүсье :)

Friday, April 30, 2010

PHP: Session-ы тухай && Login хийж нэвтрэх энгийн жишээ

Вэб програмчлалд зайлшгүй хэрэглэгддэг ойлголтуудын нэг нь Session юм. "Session" нь англи хэл дээр "хурал, чуулган" гэсэн утга илэрхийлдэг. Харин Вэб програмчлалын хувьд session гэдэг нь хэрэглэгч вэб үзэх(нэвтрэх гэх мэт) сервер дээр тухайн хэрэглэгчтэй холбоотой мэдээлэл(хувьсагч) сервер дээр үүсэх үйл явц хэмээн энгийнээр тайлбарлаж болох юм. Жишээ нь ямар нэг гишүүнчлэл бүхий сайтуудад уншигч, хэрэглэгчид өөрийн хэрэглэгчийн эрхээр нэвтрээд ижил хуудсуудаар "аялахад" тухайн хэрэглэгчид л хамаарах мэдээллүүдийг харуулдаг шүү дээ. Үүнийг session-ы тусламжтай програмчилдаг.

Дээрхи зургаас session-ыг боловсруулах үйл явцыг хялбархан ойлгож болно.

Одоо хэдэн энгийн жишээг PHP дээр нэвтрүүлье.

<?php
    session_start();
?>

Session ашиглахын тулд тухайн хуудасныхаа эхэнд session_start(); функцийг зайлшгүй дуудах ёстой.

<?php
    session_start();
    $_SESSION['hello'] = 'Hello World';
    echo $_SESSION['hello'];
?>

Session-д хадгалагдаж буй өгөгдөл(хувьсагч)-үүд $_SESSION[] массив хувьсагчид хандах байдлаар ажилладаг. Дээрхи жишээнд $_SESSION['hello'] хувьсагчид 'Hello World' утгыг оноож хэвлэж байна.

Дээрхи жишээг амжилттай туршсан бол Session-ы үйл ажиллагааг илүү сайн ойлгохын тулд дараах кодыг өөр эх файлд хадгалаад ажиллуулаад үз.

<?php
    session_start();
    echo $_SESSION['hello'];
?>

Энэ кодын хувьд $_SESSION['hello'] хувьсагчид утга оноогоогүй хэдий ч түрүүчийн файлыг ажиллуулахад үүссэн session-д утга оноогдон сервер дээр учир энэ файлд ч гэсэн $_SESSION['hello'] хувьсагч хүчин төгөлдөр үйлчилнэ гэсэн үг юм. Хичнээн Refresh хийж хуудсыг дахин дахин ачааллаж үзсэн ч зүгээр байгаа биз :)

Одоо session-ы талаар арай дэлгэрүүлэн ойлгоход дөхөм болгох үүднээс саяын эх кодыхоо төгсгөлд бүх session хувьсагчийг устгах session_destroy(); функцийг нэмж дуудаад үз.

<?php
    session_start();
    echo $_SESSION['hello'];
    session_destroy();
?>

Саяын хуудсаа 2 дахин ачааллаад үзвэл 'Hello World' тэмдэгт мөр хэвлэгдэхгүй болж байгааг анзаарсан уу? session_destroy() функц эхний удаа хуудас дуудалтанд биелсэн учир дараа дараачин дуудалтанд $_SESSION['hello'] хувьсагч устсан байгааг үүнээс анзаарч болно.

session устгахад session_destroy() функцээр бүх session-г устгахаас гадна тухайн нэг функцийн хувьд unset() функцийг ашиглах боломжтой.

<?php
session_start();
if(isset($_SESSION['hello']))
    unset($_SESSION['hello']);
?>

Session ашиглан уншигч та бүхэн өөрсдөө сэтгэмжлэн олон янзын жишээ туршиж үзэхийг зөвлөж байна. Миний зүгээс "амьд" жишээ болгох үүднээс нэвтрэх (login) маш энгийн жишээг бичиж үзүүлье.

login.php

<?php
    global $error;
    session_start();
    if(isset($_SESSION['user'])){
        header("Location: welcome.php");
    }
    
?>
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
<title>Нэвтрэх хэсэг</title>
</head>
<body>
<form action="check.php" method="post" name="logform">
<table>
<tr>
<td>
Хэрэглэгчийн нэр:
</td>
<td>
<input type='text' name="user" />
</td>
</tr>
<tr>
<td>
Нууц үг:
</td>
<td>
<input type='password' name="pass" />
</td>
</tr>
<tr>
<td />
<td style='text-align:right;'>
<input type='submit' value="Нэвтрэх"/>
</td>
</tr>
</table>
<?php
                echo $error;
            ?>
</form>
</body>
</html>

check.php

<?php
    session_start();
    $username = "ganaa";
    $password = "pass";
    $user = $_POST['user'];
    $pass = $_POST['pass'];
    if($user == $username && $pass == $password){
        $_SESSION['user'] = $user;
        header("Location: welcome.php");
    }
    else {
        $error = "Хэрэглэгчийн нэр, эсвэл нууц үг буруу байна.";
        include("login.php");
    }
?>

welcome.php

<?php
    session_start();
    if(!isset($_SESSION['user'])){
        header("Location: login.php");
    }
?>
<html>
<head>
<title>Welcome <?php echo $_SESSION['user']; ?> </title>
</head>
<body>
<p>
<a href="logout.php">Log out</a>
</p>
</body>
</html>

logout.php

<?php
    session_start();
    if(isset($_SESSION['user'])){
        unset($_SESSION['user']);
    }
    session_destroy();
    header("Location: login.php");
?>

Session-той холбоотой функц, боломжуудын талаар илүү лавлагааг эндээс үзээрэй :)