Friday, February 25, 2011

Drupal CMS

Drupal нь PHP дээр бичигдсэн, GNU General Public License(Чөлөөт програм хангамжийн лиценз)-ээр тараагддаг, үнэгүй, нээлттэй эх бүхий АУС (Агуулгын Удирдлагын Систем - Content Management System) юм. Одоо Drupal дээр хийгдсэн хэдэн зуун мянган хувь хүн, байгууллага, эрдэм шинжилгээ, бизнес ба хамтын ажиллагаа, улс төр, засгийн газрын вэб сайтууд ажиллаж байгаа. Жишээлбэл, АНУ-ын Цагаан Ордон(Whitehouse)-ы сайт http://www.whitehouse.gov, Их Вританий засгийн газрын сайт болох http://data.gov.uk г.м.
Drupal нь Drupal core буюу цөм, хэрэглэгчийн бүртгэлийн мэдээлэл (бүртгэх, засах), цэсний удирдлага, RSS, хуудасны бүтэц болон системийн админы хэсэг зэргийг агуулна.
Бүх платформ дээр ажиллах боломжтой. MySQL, PostgreSQL, SQLite (Microsoft SQL Server) зэрэг баазын сервэрүүд, Apache, IIS веб сервэрүүд дэмжинэ.
Анх Dries Buytaert бичсэн (message board буюу internet forum-аар хөгжүүлсэн) бөгөөд 2001 оноос нээлттэй эхийн төсөл болсон.
Drupal нь Голландын Dutch - дусал гэсэн үгнээс гаралтай.
Drupal-ын хөгжүүлэлтэнд олон хүн тусалснаар түргэн хөгжиж, улам боловсронгуй болсоор байна. 2011 оны 1-р сарын 5-нд Drupal 7.0 хувилбар гарсан.
Цаашдаа сурсан юмаа тавьж байх болно. Санал бодлоо хуваалцаарай.

Wednesday, February 23, 2011

Олон Yahoo! Messenger зэрэг ажиллуулах

Yahoo хэрэглэдэг ихэнх хүмүүс 2-оос доошгүй ID-тай байдаг. Учир нь Public & Private эсвэл Family & Private эсвэл тодорхой Permission-тэй, мөн пракцтай холбоотой байж болох юм. Үүнтэй холбоотой заримдаа хэд хэдэн Messenger-ийг зэрэг ажиллуулах шаардлага гарна. Yahoo! Messenger 1 компьютерт default-оороо ганц ширхэг л нээгдэнэ. Олон нээгддэг болгох маш амархан. Уг нь мессенжер ашигладаг хүн болгон л үүнийг чаддаг байх гэж боддог байлаа. Гэвч үгүй юм байна (Тийм болгоод өгөөч гэсэн request нэг биш удаа ирлээ :)). Олон юм нуршилгүй яаж гэдгийг тайлбарлъя.
1. Start -> All Programs -> Accessories -> Run эсвэл Windows + R.
2. Гарч ирсэн Run цонхны Open талбарт regedit гэж бичээд OK.
3. HKEY_CURRENT_USER -> Software -> yahoo -> pager -> Test.
4. Test дээр баруун клик -> New DWORD (...) Value -> Нэрийг нь Plural гэж өгнө.
5. Plural дээр Right Click (хулганы барууны точийг нь дар) -> Modify -> Value Data дээрхи утгыг 1 болгоно. (Default утга нь 0 байдаг.) Ингээд боллоо.
Энэ арай ядаргаатай санагдаж байна уу? Тэгвэл энэ register файлыг татаж аваад л уншуулчих. (Цаад үйлдэл нь яг адилхан.)


Thursday, February 17, 2011

Бөмбөглөн эрэмбэлэх арга (Bubble Sort)

Энэ аргыг хөөсрүүлэн эрэмбэлэх арга ч гэж нэрлэдэг. Массивын элементүүдийг эхнээс нь зэрэгцээ байгаа хоёр элементийг жишиж өмнөх буюу индексээрээ бага элемент нь хойно байгаа буюу индексээрээ их элементээс их байвал (бууруухаар эрэмбэлэх тохиолдолд бага байвал) энэ хоёр элемэнтийн байрыг солих замаар массивын төгсгөл хүртэл үргэлжлүүлнэ. Тухайлбал, a[i] > a[i+1] бол энэ хоёрын байрыг солино гэсэн үг. Эсрэг тохиолдолд хэвээр үлдээнэ. Ингэсэнээр хамгийн их элемент массивын хамгийн сүүлд байрлана. Дараа нь үлдсэн n-1 элементэд мөн энэ үйлдлийг давтаж, нэг элемент үлдтэл (n==1 болтол) хийнэ.
Жишээ. N элементтэй бодит тоон массивыг өсөхөөр эрэмбэлэ.
1. Си хэл
#include <stdio.h>
#include <stdlib.h>
int main() {
float a[100], temp;
int n, i, j;
printf(" n = ");
scanf("%d", &n);
for(i=0; i<n; i++) {
printf(" a[%d] = ", i);
scanf("%f", &a[i]);
}
for(i=n-1; i>0; i--)
for(j=0; j<i; j++)
if(a[j] > a[j+1]) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
printf("\nKhariu:");
for(i=0; i<n; i++)
printf(" %.2f", a[i]);
system("pause");
}

2. Паскаль хэл
Program Bubble_Sort;
var
a:array[1..100] of real;
temp: real;
n, i, j: integer;
begin
Write(' n = ');
Read(n);
for i:=1 to n do begin
write(' a[',i,'] = ');
read(a[i]);
end;for i:=n downto 2 do
for j:=1 to i-1 do
if a[j] > a[j+1] then begin
temp := a[j];
a[j] := a[j+1];
a[j+1] := temp;
end;

Write('Khariu:');
for i:=1 to n do
Write(' ', a[i]:0:2);
end.

Tuesday, February 15, 2011

Татцуудаа шинэчиллээ

Блог дээрхи хугацаа нь дууссан, сервэр нь унасан, гацсан татцуудаа (install г.м) 4shared.com руу шилжүүллээ. 4shared.com сайхан share шүү. 10 GB фрий орон зай эзэмдэнэ гэж бод доо. Татахад ч гэсэн хурдан, урамтай. 4shared.com-ыг ашиглаж байгаарай гэж зөвлөе. Ямар нэгэн юм татах хэрэг гарвал хайж туршиж үз. Зөндөө олноороо олдоно.
EngMon тольдоо бага сага өөрчлөлт оруулсан учраас та өмнө татаж авч хэрэглэж байсан бол ахиад татаж аваарай (Гарт утасны толь бичиг).

Saturday, February 12, 2011

Сонгон эрэмбэлэх арга (Selection Sort)

Сонгон эрэмбэлэх арга нь массивын хамгийн бага элементийг олж хамгийн эхний элементтэй сольж, дараа нь удаах хамгийн бага элементийг олж хоёрдох элементтэй солих байдлаар массивын бүх элмент эрэмбэлэгдэж дуустал гүйцэтгэгдэх арга юм.
Хэрэв буурахаар эрэмбэлэх бол хамгийн их элементийг сонгож солино гэсэн үг. Энэ арга нь маш амархан, эсрэгээрээ хурдны хувьд тийм ч сайн арга биш. Ямар ч төрлийн бага өгөгдөлтэй массивын хувьд бол Ок арга.
Жишээ. N элементтэй бүхэл тоон массивыг өсөхөөр эрэмбэлэе.
1. Си хэл
#include <stdio.h>
#include <stdlib.h>
int main() {
int a[100], n, i, j, min, temp;
//Massivyn elementiin too
printf(" n = ");
scanf("%d", &n);
//Massivyn elementuudiig oruulakh
for(i=0; i<n; i++) {
printf(" a[%d] = ", i);
scanf("%d", &a[i]);
}
for(i=0; i<n-1; i++) {
//Khamgiin baga elementiin dugaar buyu indexiig min-d hadgalya
min = i;
for(j=i+1; j<n; j++)
if(a[min] > a[j])
min = j;
//Khamgiin baga elementiig erembelegdeegui khesgiin khamgiin ehnii elementtei bairyg ni solino
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
printf("Khariu:");
for(i=0; i<n; i++)
printf(" %d", a[i]);
system("pause");
}

2. Паскаль хэл
Program SelectionSort; Var a: array[1..100] of integer;
n, i, j, min, temp: integer; Begin
{Massivyn elementiin too}
Write(' n = ');
Read(n);
{Massivyn elementuudiig oruulakh}
for i:=1 to n do begin
Write(' a[',i,'] = ');
Read(a[i]);
end;
for i:=1 to n-1 do begin
{Khamgiin baga elementiin dugaar buyu indexiig min-d khadgalya}
min := i;
for j:=i+1 to n do if(a[min] > a[j]) then min := j;
{Khamgiin baga elementiig erembelegdeegui khesgiin khamgiin ekhnii elementtei bairyg ni solino}
temp := a[i];
a[i] := a[min];
a[min] := temp; end; Write('Khariu:');
for i:=1 to n do Write(' ', a[i]);
End.