2009/03/31

Quotes about Laziness

Залхуурал гэгч "эвгүй нөхөр"-ийн талаар суутнууд ийн өгүүлрүүн.

Ларошфуко:


Залхуурал гэдэг хүмүүс бидний хүсэл таашаалын дотроос хамгийн мунхаг нь юм.

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

Залхуурлын амар тайван жаргалыг эдэлж байхдаа бид хамгийн хатуу төлөвлөсөн ажлаа ч мартаж орхидог.

Залхуу хойрго арчаагүй хүмүүс нь ямагт юунд ч хэрэггүй хүмүүс болдог.

Ухарч няцан бэрхшээлээс айж шантран бэлтгэл дасгалыг "Дараа, эвтэй үед" хийхээр хойшлуулж байдаг хүн хэзээ ч амжилт олохгүй.

...Амжилт олоход нь саад бологч нь залхуу байдал мөн.

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

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

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

Юу ч хийхгүй гэдэг чинь залхуугаас л болдог хэрэг.

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

...Юуны өмнө залхуурал гэдэг өвчнөөс салах хэрэгтэй.

Сэтгэлээр унах бол залхуугийн садан мөн.

Н. Г. Чернийшевчкий:

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

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

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

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

2009/03/11

PHP

PHP бол динамик вэб хуудсыг бүтээхэд зориулагдсан вэб програмчлалын хэл юм. Энэ хэлийг 1995 онд Rasmus Lerdof бүтээсэн бөгөөд цаашдын хөгжүүлэлтийг The PHP Group хариуцан ажиллууцаж ажилладаг байна PHP хэл нь PHP license гэдэг нэрийн дор гардаг үнэгүй програм хангамж хэдий ч GNU General Public License (GPL) лицензтэй таардаггүй ба PHP-г хэрэглэхэд тодорхой хязгаарлалтууд байдаг.

PHP нь Script маягийн хэл ба ялангуяа HTML кодчилолд суурилж вэб хөгжүүлэлтэнд хэрэглэгддэг хэл юм. PHP-ийн ихэвчлэн нь вэб сервер дээр суурилагдан ажилладаг бөгөөд сервер дээр хөрвүүлэгдсэний дараа РНР кодоос HTML хуудас бүтээгдэн бидэнд харагддаг. РНР-ийн гайхамшигт чанар бол бүхий л вэб серверүүд ба бараг бүх л үйлдлий систем, платформ дээр ажилладаг. Дэлхий дээр РНР-г ашиглан хийгдсэн 20 сая вэб сайт, РНР-г дэмждэг нэг сая вэб сервер ажиллаж байна.

Түүх

PHP гэдэг нь Personal Home Page гэсэн үгийн товчлол бөгөөд анх 1994 онд Common Gateway Interface binaries бүтээхийн тулд С хэл дээр Rasmus Lerdorf бичсэнээр түүх нь эхэлдэг. Тэрээр анх Perl хэлний script-д багахан өөрчлөлт оруулан өөрийн Personal HomeРage бүтээсэн байна. Энэхүү багажыг анх нь түүний вэб хуудсанд хичнээн хүн зочилж байгааг тоолон мэдээлэх зорилгоор хэрэглэжээ. Тэрээр эдгээр бинар кодуудаа PHP/FI бүтээх Form Interpreter хэмээн нэрлэж, илүү олон боломжуудаар хангаж өгөх болсон ба Өгөгдлийн сантай харьцах, динамик вэбийг бүтээх боломжтой болсон байна. Ингээд 1995 оны 6 сарын 8-д Lerdorf РНР-ийн release хувилбарыг олон нийтэд дэлгэн тависанаар РНР-ийн хөгжил нь эрчээ авчээ. Энэ release хувилбар нь РНР 2 нэртэй байсан ба өнөөгий РНР-ийг үндсэн функцуудийг агуулж байжээ. Түүнд Perl-тэй адил төстэй хувьсагчууд, form handling ба HTML-тэй хамтран хэрэглэгдэх боломж байв. Бичиглэл(syntax) нь Perl-тэй талууд нэлээд байсан ч түүнийг бодвол хязгаарлагдмал, энгийн, илүү болхи байсан юм.

Израйлын Technion IIT компаний хөгжүүлэгчид болох Zeev Suraski, Andi Gutmars хоёр РНР-г сул талуудыг засаж янзлан 1997 онд РНР 3 -ийг гаргасан ба нэрээ өөрчлөн PHP: Hypertext Preprocessor болов. Хөгжүүлэлтийн баг нь албан ёсоор PHP/FI 2 -ийн бета туршилтын хувилбарыг 1997 оны 11 сарын 2-нд гаргажээ. Дараа нь РНР 3-ийн нийтийн тест эхэлсэн бөгөөд жинхэнэ хувилбар нь 1998 оны 6-р сард гарсан. Suraski, Gutman нар
РНР-ийн цөмийг шинээр бүтээн Zend Engine-ийг 1999 онд бүтээсэн бөгөөд Израйлын Ramat Gan хотод Zend Technologies-г байгуулсан ажээ.


2000 он 5-р сарын 22-нд РНР 4, Zend Engine 1.0 хамт гарсанаар РНР нэлээдгүй хүчирхэгжсэн ба 2004 оны 6 сарын 13-нд мөн РНР 5, Zend Engine 2 хамтдаа гарчээ. РНР 5 дээр Объект Хандалтат Програмчлалын Технологийг оруулсанаараа нэлээд онцлогтой болж чаджээ. Хамгийн сүүлчийн сайжруулалтыг РНР-ийн хуучин хувилбар болох РНР 4 дээрээ хийсэн бөгөөд 2008 онд РНР 4.4.9 хувилбарыг гаргасан юм. Үүнээс цааш РНР 4 дээр хамгаалалттай холбоотой сайжруулалт хийгдэхгүй гэнэ.

2008 онд гаргасан РНР 5 хувилбар нь зөвхөн хөгжүүлэгдэж байгаа гүйцэд биш тогтвортой хувилбар(Stable version) юм.

Мэдээллийн эх сурвалж: WikiPedia, the free encyclopedia

2009/02/19

Багцын хандалтат классууд

Java хэлийг судалж байгаа найзууддаа Объект Хандалтат аргачлалын онцлогоос тусгасан нэгэн жишээ source-ийг танилцуулъя. Хэдийгээр энэ хэдэн багцын хандалтат коднууд жижигхэн харагдаж байгаа хэдий ч Объект хандалтат технологид суралцахад үндсэн ойлголтыг өгөх болов уу хэмээн бодлоо.
package my.java;
import java.io.*;
public class AskName {
public void Ask() {
System.out.printf("Hello! ");
System.out.printf("What's your name?\n");
}
public String Answer() throws IOException {
InputStreamReader inStream = new
InputStreamReader(System.in);
BufferedReader br = new BufferedReader(inStream);

String name = br.readLine();
return name;
}
}
Main класс-д AskName классын Ask() функцийг дуудахад Hello! What's your name? тэмдэгт мөрийг хэвлээд, Answer() функцээр гараас тэмдэгт мөрийг авч тэр утгыг буцаана.
package my.java;
public class HelloClass {
public String PrintHello(){
return "Hello! ";
}
}
HelloClass классын PrintHello() функц Hello тэмдэгт мөр утгыг буцаана.
package my.java;
import java.io.*;
public class Main{
public static void main(String[]args) throws IOException{
AskName hi = new AskName();
HelloClass he = new HelloClass();

hi.Ask();

System.out.println(he.PrintHello()+hi.Answer());
}
}
Дээрхи классууд my/java директорт хадгалагдахаа мартаж үл болно. Хэрвээ зөв ажиллуулбал дараах үр дүнг үзүүлнэ.

2009/02/08

Java хэлэнд гараас өгөгдөл унших

Java хэлний консол програмд гараас өгөгдөл оруулах хэд хэдэн арга байдаг. Гараас өгөгдөл авахад BufferedReader, InputStreamReader, System гэх мэт классуудыг ашигладаг.
import java.util.Scanner;
public class Stdin{
public static void main(String[]args){
String name;
Scanner in = new Scanner(System.in);
System.out.println("Sain uu! Tanii neriig hen gedeg ve?");
name = in.next();
System.out.println(name+"! "+"Ta heden nastai ve");
int age = in.nextInt();
System.out.println(name+"! Ta "+age+" nastai. :)");
}
}

import java.io.*;

public class Stdin2{
public static void main(String[] args){
try {
BufferedReader br = new BufferedReader(
new InputStreamReader( System.in ) );
System.out.println("a toog oruul!");
String a = br.readLine();
//Гараас өгөгдөл авах
System.out.println("b toog oruul!");
String b = br.readLine();
int s = Integer.parseInt(a)+Integer.parseInt(b);
//Гараас авсан өгөгдлөө Бүхэл тоонд хөрвүүлж байна.
System.out.println(a+" + "+b+" = "+s+"\nOK?");
}
catch(IOException e){
e.printStackTrace();
}
}
}

br объектыг үүсгэсний дараа түүний public String readLine( ) функцийг дуудвал тэр нь бидний бичсэн тэмдэгт мөрийг буцаана. Тиймээс тоон дээр үйлдэл хийх гэж байгаа учир тэмдэгт мөрөө бүхэл тоон төрөлд хөрвүүлж байна.

2009/02/01

Eclipse - тэй ажиллах

Java хэлийг анхлан суралцаж эхэлж байгаа найзууддаа зориулаад Java хэлний нэгэн хүчирхэг хэрэгсэл болох Eclipse дээр хэрхэн ажиллах талаар зөвлөгөө бэлтгэлээ. Юуны өмнө Eclipse, JDK, JRE - г суулгана. Тэдгээрийг суулгасан бол Eclipse програмыг агуулах хавтасанд байрлах eclipse.exe - г ажиллуулахад дараах байдалтай цонх гарч ирнэ. Workspace гэдэг нь бидний Eclipse дээр ажиллахдаа үүсгэсэн source, class, packege, source folder гэх мэт баримтуудыг агуулах хэсэг гэж ойлгож болно. Browse... товчийг дараад өөрийн хүссэн газраа Workspace-ээ үүсгээрэй.

Use this action as the default and do not ask again хэсгийг сонговол дараагийн удаа Workspace сонгохыг асуухгүй болно.


Төсөл үүсгэх

Eclpipse дээр програм бичихийн өмнө эхлээд Project буюу төсөл үүсгэх хэрэгтэй. File-New-Java Project гэсэн дараалаар ороход дараах жижиг цонх гарч ирнэ. Project name гэсэн бичих хэсэгт тухайн үүсгэх төслийн нэрийг бичиж оруулна. (Бидний тохиолдолд LearningJava01)

Contents хэсэгт байрлах сонголтуудын эхний хэсгийг сонговол таны Workspace-д төслийг эхлүүлэх бол хоёр дахь хэсгийг сонгоод Browse хийгээд өөрийн хүссэн газар төслөө эхлүүлж болно.

LearningJava01 төсөл үүссэн байна.

Класс үүсгэх
Өөрийн төслөө эхлүүлсэн бол програмаа бичиж эхэлцгээе. Програмаа бичиж эхлэхдээ өөрийн хүссэн Package дээр хулганы заагчийг аваачин баруун товчийг дарахад гарч ирэх сонголтуудаас New-Class cонголтыг хийхэд дараах жижиг цонх гарч ирэх ба Name хэсэгт классын нэрийг бичиж оруулна. Классын нэрэнд хоосон зай, зарим тэмдэгтүүдийг зөвшөөрдөггүй болохыг анхаараарай.









































Сонголтыг хийсний дараа HelloWorld.java файл үүссэнийг харж байна. Харин одоо HelloWorld.java дээрээ дараах програмыг бичиж ажиллуулцгаая.
public class HelloWorld {
public static void main(String[]args){
System.out.println("Hello World!");
}
}

Програмаа зөв бичсэн бол Ctrl+F11 товчнуудын хослолыг дарж хөрвүүлэх ба консол мөрөнд дараах үр дүнг харуулна.



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

Package үүсгэж ашиглах


Package үүсгэхдээ үүсгэхийг хүссэн хавтас дээр хулганы заагчийг аваачин хулганы баруун товчийг New-Package сонголтыг хийж нэрийг өгнө.

Package дээрээ хулганы баруун товчийг дарж шинэ класс үүсгэе. Үүсгэсэн файлын бичлэгийн эхний мөр package Swing; байгааг анхаараарай. Бичлэг дэх Package-ийн нэр эх файлыг агуулах Package-ийн нэр яв цав тохирч байх ёстой. Харин одоо энэ файл дээрээ Swing ашигласан анхны програмаа бичицгээе. Swing гэдэг нь График байдалтай хэрэглэгчийн интерфэйс үүсгэдэг гол классуудын цуглуулга сан юм. Java SE платформ дээр ажилладаг. (Комьпютер дээр ажилладаг програм бүтээнэ гэсэн үг.)
package Swing;
import javax.swing.*;
public class HelloWorldSwing {
  public static void main( String[] args ) {
      JFrame frame = new JFrame( "Hello!" );
      JLabel label = new JLabel("Hello! Friends!", JLabel.CENTER );
      frame.getContentPane(  ).add( label );
      frame.setSize( 300, 200 );
      frame.setVisible( true );
  }
}
Энэ бичсэн кодоо ажиллуулахад дараах байдалтай прорам ажиллана.
Кодоо ажиллуулж чадсанд баяр хүргэе!

GOOD LUCK!

2009/01/30

Онч мэргэн үгс 2

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

М. Гёте

Онч үгсийг хэрэглэвэл үг цөөн, утга агуу болно.

Марк Твен

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

Марк Аврелий

Эрдэм чадлыг хичээн эс сурваас хэрэглэх цаг дор гэмшмүй
Эрүүл биеэ хичээн эс сувилбаас өвдсөн цаг дор гэмшмүй

В. Инжинаш

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

Роналд Э. Осборн

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

Шопенхуар

Өрөвдөж байгаа нь биш тусалж байгаа нь л нөхөр

Томас Фюллер

Гай зовлон амсахгүй гэвэл ухаантныг түш,
Лай болдог хар санаатнаас хол яв.
Ухаантан мэргэд хор өгсөн ч хүртэж болгоо,
Угаас муу хүн эм өгсөн ч бүү хуурт.

Омар Хайяам

2009/01/18

Java хөгжүүлэгчид

Жава дээр програм хєгжvvлэхэд хэрэглэгддэг олон програмууд байдаг ба тэдгээрийн сайтын линкийг татаж авах линктэй нь тавилаа.

- NetBeans Татаж авах
- Borland JBuilder

- JCreator Татаж авах

- Oracle JDeveloper


Жава дээр бичихэд дээрхи програмуудын аль нэгнээс гадна JDK, JRE - суулгах хэрэгтэй.

JDK(Java Development Kit) буюу Жава хєгжvvлэх багаж нь Жава дээр програм бичихэд хэрэг болдог програм бєгєєд энэ нь source(Эх код)-ыг хөрвүүлэлт хийж Жава Прoграм(Class) болгодог багаж юм.


JRE(Java Runtime Environment) нь жава хэл дээр бичигдсэн програмуудыг ажиллуулах орчныг бүрдүүлдэг програм юм.

JRE Татаж авах

Миний хувьд бодлого бодох, GUI(Graphic User Interface)-ийг кодчилох гэх мэтэд би гэх мэт кодтой ажиллахад Eclipse тун дажгүй санагдсан. Консол нь Windows - ын орчинд ажилладаг гэх мэт.

2009/01/14

QuickSort

Бидний урьд өмнө хэрэглэж байсан бөмбөлөгөн эрэмбэлэлт, оруулалттай эрэмбэлэлт, сонголттой эрэмбэлэлтийн аргууд нь олон тооны элемэнтүүдийн эрэмбэлэх үед хугацаа нэлээд шаарддаг байсан. Харин эрэмбэлэлтийн маш үр өгөөжтэй нэгэн аргыг 1962 онд Ч. Хоар санал болгосон. Энэ аргыг QuickSort буюу хурдан эрэмбэлэлтийн арга хэмээн нэрлэдэг.

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

Харин одоо бүхэл тоон массивын элемэнтүүдийг эрэмбэлэх програмыг рекурс ашиглан бичье.

#include <stdio.h>
int a[100];
int qsort(int m,int l){
int i=m;
int j=l;
int x=a[(m+l)/2];
do
{
while(a[i]<x) i++;
while(a[j]>x) j--;
if(i<=j){
int w=a[i];
a[i]=a[j];
a[j]=w;
i++;
j--;
}
}
while(i<=j);
if (m<j) qsort(m,j);
if (i<l) qsort(i,l);

}
main(){
int n,e;
scanf("%d",&n);
for(e=0; e<n; e++)
scanf("%d",&a[e]);
qsort(0,n-1);
for(e=0; e<n; e++)
printf("%d ",a[e]);
return 0;
}

Харин QuickSort-ыг C/C++ хэлэнд бичиглэл маш багатайгаар алдаа бараг гаргахгүйгээр хэрэглэж боломж байдагийг та бүхэн мэдэх үү?
C/C++ хэлэнд stdlib.h толгой файлд qsort хэмээх функцийг цаанаас нь тодорхойлж өгсөн байдаг ба түүнийг хэрэглэхэд маш хялбар. Энэ функцыг ашиглан бүхэл тоон массивыг эрэмбэлэх жишээг доор үзүүллээ.

#include <stdio.h>
#include <stdlib.h>
int comp(const void*a,const void*b){
int *x=(int*)a;
int *y=(int*)b;
return *x-*y;
}
int main(){
int n;
int a[100];
scanf("%d",&n);
for(int i=0; i<n; i++)
scanf("%d",&a[i]);
qsort(a,n,sizeof(a[0]),comp);
for(int i=0; i<n; i++)
printf("%d ",a[i]);
return 0;
}