Jan 14 2010

Əsgər gedirəm…

Artıq bir neçə gündən sonra əsgər gedirəm. Başqa sözlə, yanvar ayının 21-i artıq hərbi xidmətə gedirəm. Çox güman ki, 1 il ərzində mən blogda bir yenilik edə bilməyəcəm. Blogumdan oxuduğunuz hər cümləyə görə sizə minnətdarlığımı bildirirəm. Əgər kiminsə, üzərimdə haqqı varsa, haqqların halal etsin. Ordumuzu pisləyirlər, bəlkədə mühit çox pisdir. Gedib, görəcəm. Amma söz verirəm ki, pis mühitdə yaxşı xidmət etməyə çalışacam! Üzərimə düşən vəzifəni layiqincə yerinə yetirmək üçün əlimdən gələni edəcəm. Hamınız Allaha əmanət olun! Azərbaycanın güclü olması üçün hər birimiz güclü olmalıyıq. Azərbaycanın inkişaf etməsi üçün hər birimiz inkişaf etməliyik. Hamınıza getdiyiniz yolda uğurlar! Allah amanında! Hələlik!

Bookmark and Share
Jan 08 2010

Linuxda javanı quraşdırmağın qaydası

Linuxda javanı yükləmək üçün, sunın saytına girin. Yüklədikdən sonra chmod ilə jdk-6u17-linux-i586.bin faylını quraşdırıla bilən hala gətirin.

ali@ali-laptop:~/Downloads$  chmod +x jdk-6u17-linux-i586.bin

Ondan sonra ./ ilə proqramı quraşdırın

ali@ali-laptop:~/Downloads$ ./jdk-6u17-linux-i586.bin

yes or no sualına yes cavabın verin.

Do you agree to the above license terms? [yes or no]

Onda sonra jdk1.6.0_17/ qovluğunu /usr/local/bin qovluğuna köçürün.

ali@ali-laptop:~/Downloads$ sudo mv jdk1.6.0_17/ /usr/local/bin/

Aşağıdakı şəkildə simvolik link (qısa yol) yaradın.

ali@ali-laptop:/usr/local/bin$ sudo ln -s jdk1.6.0_17/ jdk

export komandası ilə javanın yolun, istifadəçinin yolları siyahısına əlavə edin.

ali@ali-laptop:/usr/local/bin$ export PATH=$PATH:/usr/local/bin/jdk/bin/

Budur artıq bizdə java işlədi.

ali@ali-laptop:/usr/local/bin$ javac

Əgər hər dəfə komputer açılanda javanın yolunu export etmək istəmirsənsə, onda .bashrc yə yuxarıdakı export komandasın əlavə edin.

ali@ali-laptop:~$ vi .bashrc

Artık javadan istifadə edə bilərsiz

ali@ali-laptop:~$ javac hello.java
ali@ali-laptop:~$ java hello
Hello Java
Bookmark and Share
Jan 06 2010

Javanın işləmə prinsipi

Java necə işləyir? İşləmə prinsip necədir? İlk əvvəl onu deyim ki, java platformadan aslı deyil. (platform independent) İşləmə prinsip isə çox sadədir.

  1. kod (source) – Java dilində proqram yazırsız. Və ya kod yazırsız (source code)
  2. kompilyasiya- Bu kod java kompilyatoru vasitəsi ilə kompilyasiya olunur.
  3. nəticə- Kompilyator yeni fayl yaradır. Bu fayl java bytecode adlanır. Java çalışan hər hansı aparat bunu çağrıla bilən proqrama çevirir. Kompilyasiya olunmuş bytecode platforma cəhətdən müstəqildir.
  4. virtual maşın – Fiziki maşın yox, virtual maşın . Java virtual maşın bytecodu oxuyur və proqramı çağırır (run).
Bookmark and Share
Jan 04 2010

mysqldə istifadəçini silmək

Keçən dəfə mysqldə istifadəçi yaratmağı öyrəndik. Bu dəfə isə, istifadəçini neçə silmək olar ona baxaq. İstifadəçini silmədən əvvəl, istərdim ki, istifadəçinin sahib olduğu haqqlara (privileges) baxaq. Bunun üçün show grants komandasından istifadə olunur. show grants əmrini əlavəsiz yazdıqda, rootun hüquqların göstərir

mysql> show grants;
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                                              |
+----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*76B2F7DFB18920F34514CE533CD72A72AAF3266D' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

. Hər hansı istifadəçinin mysqldəki hüquqlarına isə, show grants for ‘istifadəçi_adı’@'localhost’ əmri ilə baxmaq olar.

mysql> show grants for 'ali'@'localhost';
+------------------------------------------------------------------------------------------------------------+
| Grants for ali@localhost                                                                                   |
+------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'ali'@'localhost' IDENTIFIED BY PASSWORD '*8148C0A6C7EE4212A18CC153794A4C7F1450E651' |
+------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

İndi isə ali istifadəçisin silək. Bunun üçün drop userəmrindən istifadə olunur.

mysql> drop user 'ali'@'localhost';
Query OK, 0 rows affected (0.00 sec)

İstifadəçi silindi. show grant ilə yenidən baxsaq.

mysql> show grants for 'ali'@'localhost';
ERROR 1141 (42000): There is no such grant defined for user 'ali' on host 'localhost'
Bookmark and Share
Dec 30 2009

Ubuntuda real playeri yükləməyin qaydası

Real playeri yükləmək üçün ilk əvvəl real playerin saytında onu götürmək lazımdır. wget vasitəsi ilə bunu edə bilərsiz.

ali@ali-laptop:~$ sudo wget http://www.real.com/realcom/R?href=http://forms.real.com/real/player/download.html?f=unix/RealPlayer11GOLD.bin                                                                                         
[sudo] password for ali:                                                                                     
--2009-12-30 13:32:33--  http://www.real.com/realcom/R?href=http://forms.real.com/real/player/download.html?f=unix/RealPlayer11GOLD.bin                                                                                                     
Resolving www.real.com... 207.188.5.44                                                                                
Connecting to www.real.com|207.188.5.44|:80... connected.                                                             
HTTP request sent, awaiting response... 302 Moved Temporarily                                                         
Location: http://forms.real.com/real/player/download.html?f=unix/RealPlayer11GOLD.bin&href=http%3A%2F%2Fforms.real.com%2Freal%2Fplayer%2Fdownload.html%3Ff%3Dunix%2FRealPlayer11GOLD.bin [following]                                        
--2009-12-30 13:32:44--  http://forms.real.com/real/player/download.html?f=unix/RealPlayer11GOLD.bin&href=http%3A%2F%2Fforms.real.com%2Freal%2Fplayer%2Fdownload.html%3Ff%3Dunix%2FRealPlayer11GOLD.bin                                     
Resolving forms.real.com... 207.188.5.188                                                                             
Connecting to forms.real.com|207.188.5.188|:80... connected.                                                          
HTTP request sent, awaiting response... 302 Temporary Relocation                                                      
Location: http://www.real.com/R/RDX.fail-click.R/software-dl.real.com/307f884b8669f8919706/unix/RealPlayer11GOLD.bin [following]                                                                                                            
--2009-12-30 13:33:00--  http://www.real.com/R/RDX.fail-click.R/software-dl.real.com/307f884b8669f8919706/unix/RealPlayer11GOLD.bin                                                                                                         
Connecting to www.real.com|207.188.5.44|:80... connected.                                                             
HTTP request sent, awaiting response... 302 Temporary Relocation                                                      
Location: http://software-dl.real.com/307f884b8669f8919706/unix/RealPlayer11GOLD.bin [following]                      
--2009-12-30 13:33:01--  http://software-dl.real.com/307f884b8669f8919706/unix/RealPlayer11GOLD.bin                   
Resolving software-dl.real.com... 66.203.123.22                                                                       
Connecting to software-dl.real.com|66.203.123.22|:80... connected.                                                    
HTTP request sent, awaiting response... 200 OK                                                                        
Length: 7535566 (7.2M) [application/octet-stream]                                                                     
Saving to: `RealPlayer11GOLD.bin'                                                                                     
 
100%[============================================================================>] 7,535,566    278K/s   in 27s     
 
2009-12-30 13:33:44 (272 KB/s) - `RealPlayer11GOLD.bin' saved [7535566/7535566]

Real Playerin paketin götürdükdən sonra onu yükləmək qaldı. İlk əvvəl Real Playerin bin paketin çağrılabilən (executable) hala gətirək.

ali@ali-laptop:~$ sudo chmod a+x RealPlayer11GOLD.bin

Bundan sonra isə .bin paketin install etmək lazımdır.

ali@ali-laptop:~$ sudo ./RealPlayer11GOLD.bin                                      
Extracting files for Helix installation........................                    
 
Welcome to the RealPlayer (11.0.2.1744) Setup for UNIX
Setup will help you get RealPlayer running on your computer.
Press [Enter] to continue...                                
 
Enter the complete path to the directory where you want
RealPlayer to be installed.  You must specify the full
pathname of the directory and have write privileges to
the chosen directory.
Directory:  [/opt/real/RealPlayer]: 
Copying RealPlayer files...Path setup done.
Succeeded.
installing application icons resource...
installing document icons resource...
......Succeeded.
Configuring Mozilla...
Installing .mo locale files...
Setting selinux context...
Succeeded.
 
RealPlayer installation is complete.
Cleaning up installation files...
Done.

Beləliklə uğurlar RealPlayeri yüklədik.

Bookmark and Share
Dec 26 2009

Yaz

Hz. Peyğembərdən (s.ə.s) uşaq vaxtı bir hədis oxumuşdum: “Biliyinizi yazı ilə möhkəmləndirin”. O vaxt bu sözü o qədər də yaxşı başa düşməmişdim. İndi isə günlər keçdikçə, yeni – yeni biliklər qazandıqca, məsuliyyətlər, istəklər, işlər və s artdıqca yazmağın önəmini başa düşməyə başlayıram. Fərdi inkişaf kitablarının hamısında demək olar ki, yazmağa rast gəlmişəm. “Yaddaşınıza güvənməyin, ağlınıza yeni ideya gəldikdə, yazın. Hədəflərinizi yazın, Planlarınızı yazın. Gündəlik götürüb, etdiyiniz səhvləri, ağılllı fikirləri və s yazın”. Bir sözlə yazmaq çox önəmlidir. Bəzi günlər təmbəllik edib, günün planın yazmıram. Fikirləşirəm, onsuzda flan, flan işləri görəcəm, yazmağın nə mənası? Axşam analiz etdikdə isə, çox az bir iş gördüyümə, vaxtımın mənasız yerə getdiyinə baxıb, qəmlənirəm. Amma yazarkən istər istməz yazmadığım gündən 2-3 dəfə çox iş görə bilirəm.

  • Hədəflərinizi yazın
  • Planlarınızı yazın
    • İl başlamadan, gələn ilin planını yazın
    • Ay başlamadan, gələn ayın planını yazın
    • Həftə başlamadan, həftənin planını yazın
    • Gün başlamadan, günün planını yazın
  • Etdəcəyiniz işləri qeyd edin
  • Zəng vurulacaq adamların siyahısın yazın
  • Görüşəcəyiniz adamların siyahısın yazın
  • Gündəlik, başınızdan keçən maraqlı hadisələri yazın
  • və s

Yazmaq da bir bacarıqdır. İlk əvvəl səhər-səhər (və ya bir gün öncə axşam) durub, günün planını yazmaq, 10 dəqiqə bunun üçün vaxt ayırmaq çətin gəlir. Gündən-günə bu asanlaşır, digər vərdişlər kimi bu adi vərdişə çevrilir. Unutmayın, bizi irəli aparan vərdişləri öyrənmək çətin, onunla yaşamaq asandır. Bizə xeyri olmayan vərdişləri öyrənmək asan, onunla yaşamaq isə çətindir. Bizi irəli aparan, bizə xidmət edən yeni – yeni vərdişlər, bacarıqlar öyrənək. Bu yolda hamımıza uğurlar!

Bookmark and Share
Dec 22 2009

Mən İnanıram …

  • Mən inanıram ki, Allahdan başqa Allah yoxdur!
  • Mən inanıram ki, Məhəmməd (s.ə.s) Allahın rəsulu və elçisidir!
  • Mən inanıram ki, 124 min peyğembər haqqdır!
  • Mən inanıram ki, 12 imam haqqdır!
  • Mən inanıram ki, bu dünyadan sonra o biri dünya var. Cənnət və cəhənnəm haqqdır!
  • Mən inanıram ki, sonuncu imamımız Mehdi (ə.c) qeybdədir. Və bir gün zühur edəcək!
  • Mən inanıram ki, hər şeydə bir xeyir var!
  • Mən inanıram ki, hər bir çətinliyin sonunda bir asanlıq var!
  • Mən inanıram ki, insan hər iki dünyada da xoşbəxt ola bilər!
  • Mən inanıram ki, Allah bizi bizdən çox sevir!
  • Mən inanıram ki, biz bu həyata boşuna yox, bir məqsəd üçün gəlmişik!
  • Mən inanıram ki, hər bir hərəkətimizə görə cavab verəcəyik!
  • Mən inanıram ki, getdiyimiz yolu özümüz seçirik!
  • Mən inanıram ki, xoşbəxt olmaq bizim əlimizdədir!
  • Mən inanıram ki, …
Bookmark and Share
Dec 22 2009

Gülümsə, işlər düzələcək.

Gülümsəmək, çox sirli bir şeydir. Bizim hamımızın başına hər gün çoxlu işlər gəlir. Özümüzü pis hiss edirik, zəif, gücsüz. Çox işimiz olur. Bizi əsəbləşdirirlər.Həyatdan bezirik, özümüzə nifrət edirik. Bir dayan, düşünməyin vaxtıdır. Otur fikirləş gör, həqiqətən də həyat bu qədər pisdir? Görəcəksən ki, həyat heç də pis deyil. Həyat gözəlliklərlə doludur. Həyat enerji ilə qaynıyır.Həyat səni çağırır. Gülümsə. Gülümsə ki , bunların hamısı düzəlsin. Səhər yuxudan duranda ,gülümsəyərək dur günün yaxşı keçsin.Uyda yenə səhər oldu demə, sevin ki, yeni səhər , yeni enerji , yeni istəklə yuxudan qalxırsan. Başqasına gülümsədiyin kimi özünə də gülümsə. Beyinlə bədən sıx əlaqəlidir. Gülümsəyəndə beyinə özümü yaxşı hiss edirəm siqnalları gedir. Bu siqnallarsa, həqiqətən özünü yaxşı hiss etməyi təmin edir. Başqası ilə ünsiyyət quranda gülümsə. Başqasına müsbət enerji ver. Özün enerji al.Gülümsəmək öz həyatımız dəyişdirdiyi kimi başqalarının həyatında dəyişə bilər.Bu videoda bir qızın gülümsəməsinin gör nə qədər adamın özünü xoşbəxt hiss etməsinə səbəb olur.
Nə tökərsən aşına, o da çıxar qaşığına. Başqa gördüyün işlər kimi gülümsəməyində əks təsirin özün görəcəksən. Əgər kinli baxsan, kinli baxacaqlar. Əgər başqalarının sənlə gülərüz davranmasın istəyirsənsə, əvvəl özün gülərüz davranmalısan.
Video

Bookmark and Share
Dec 22 2009

C-də şərt operatoru və dövrlər

Bu gün C-də if, for, while və do-while haqqında yazacam.
Başqa proqramlaşdırma dillərində olduğu kimi C-də də if operatoru, şərt operatoru kimi istifadə olunur. Ümumi forması

if ( )
{
; //ingiliscə statement ,azərbaycanca fikir bəyanat deməkdir
}
else
{
;
}

Məsələn:

#include <stdio.h>
int main()
{
char simvol;
simvol=getchar();/*getchar() bir simvolu oxumaq ucun istifade edilir.*/
if (simvol='a')
printf("Siz a herfin yazdiz \n"); /*eger statement bir emirden ibaretdirse, onda {} blokundan istifade etmemek olar */
else
printf("Siz basqa herf yazdiz \n");
return 0;
}

if operatoru necə işləyir. if açar sözündən sonra mötərizə içərisində biz şərt qoyuruq, əgər şərt doğru olarsa, onda if bloquna məxsus kodlar həyata keçiririlr, əgər yanlış olarsa, onda ifdən sonrakı (yuxarıdakı misalda else bloqundakı) kodlar yerinə yetirilir.
İf operatorunda birdən çox ifadə (şərt ) qoymaq olar. Məsələn:

if (simvol='a' || simvol='A')
printf ("Siz klavyaturadan a herfin daxil etdiniz \n");

Operatorlar bölməsinəd dediyim məntiqi operatorları, şərtdə istifadə etmək olar. Bu halda mən və ya (||) operatorundan istifadə etdim.

if ()
{
...
}
else if ()
{
...
}
else
{
...
}

else if isə bu şəkildə istifadə olunur. Yəni birinci şərt doğru deyilsə, əks halda ikinci şərti yoxlanılır. Bu doğrudursa, bu şərtə məxsus bəyanatlar yerinə yetirilir. Doğru deyilsə onda else bloquna məxsus bəyanatlar yerinə yetirilir.
Proqramlaşdırmada çox vaxt bizim müəyyən dövrdən istifadə etməyimizə ehtiyac yaranır. Əslində dövrdə də şərt qoyursan və burda fərq bir hadisəni birdəfədən çox edirsən. C dilində 3 dövr operatoru var. for, while və do-while dövrləri.
for dövr operatorunun istifadəsi bizə bəlli olan sayda (fiksə olunmuş) dövr olduqda məsləhətdir.Cümlə biraz çətin oldu.Qoy misalda izah edək asan olsun.

#include <stdio.h>
main()
{
int i;
printf("1-den 100-e kimi ededler \n");
for (i=1;i<=100;i++)
printf ("%d\n",i);
}

Hə,burda göründüyü kimi bilirik neçədə başlayıb neçədə qurtaracayıq.Yəni birininci i dəyişəninə 1 mənimsədirik, sonra hər dəfə yoxluyuruq, əgər 100-dən kiçik bərabərdirsə,onda for içindəkilər yerinə yetirilir.100-dən böyük olsa, onda fordan sonrakı əmrlər yerinə yetiriləcək.(indi ki halda proqram sona çatacaq).Ümumi şəkli

for (;;)
{}

Yadıma nə düşdü, dövr operatorunda hər dəfə görəndə ki, i,j bu hərfləri istifadə edirlər mənə maraqlı gəldi.Internetdən oxudum ki, o vaxt Fortran dilində proqram yazanda proqramistlər dövrdə i,j,k kimi dəyişənlərdən istifadə ediblər. Sonradan bu adət halın alıb. i,j,k bunların adı da qalıb dövr dəyişənləri. Sözümüz burda deyil. İndi görək bu while operatoru necə işləyir. Yuxarıdakı kod while üçün bu formada olacaq.

#include <stdio>
main()
{
int i;
printf("1-den 100-e kimi ededler \n");
i=1;
while (i<=1oo)
{
 printf ("%d\n",i);
 i++;
}
}

Burda fikir verdinizsə, i dəyişənin ilkin qiymətini dövrdən əvvəl mənimsətmək lazımdır. while dövrü necə işləyir. Yoxluyur əgər şərt doğrudursa, onda keçir dövrün içinə , şərt yanlışdırsa, dövrdən sonraya. Gördüyünüz kimi çox sadədir. Qaldı do-while.
do-while dövrü while dövrünün xüsusi halıdır.Bu dövr əsasən o vaxt işlədilir ki, dövrün içindəkiləri yerinə yetirmək ən azı bir dəfə vacib olsun. 1-dən 10-a kimi ədədlərin cəmin do-while ilə yazaq.

#include <stdio.h>
int main()
{
int say, cem;
say=0;
cem=0;
do
{
 say=say+1;
 cem=cem+say;
 printf("say=%d,\t, cem=%d \n",say, cem);
}  while (say<10);
 return 0;
}

do-while dövrünün gördüyümüz kimi 2 açar sözü var. do və while. do açar sözü bildirir ki, dövr başladı.while açar sözü isə dövrün sonunda olur və dövrün yerinə yetirilmə şərtlərin müəyyən edir.Yuxarıdakı kodda say=10 olana kimi dövr yerinə yetirilir. Yəni say=10 qiymətin alır. Çünki şərt sonda yoxlanılır. Əgər bunu təkcə while dövrü ilə yazsaydıq, onda while (say<10) bu halda say 10 qiymətin almayacaqdı.Bu dərsdə aşağıdakıları öyrəndik.

  1. if operatoru
  2. for operatoru
  3. while operatoru
  4. do-while operatoru
  5. while və do-while operatorunun fərqi
Bookmark and Share
Dec 22 2009

C operatorlar

Riyazi operatorlar, hansı riyazi əməliyyatın aparılacağın bildirir.
C də işlədilən operatorlar.
Hesablama : +, -, *, / (bölmə), % (modulus – qalıq)
21 % 5 = 1 (21-i 5-ə böldükdə qalıq 1 olur); 21 / 5= 4;
C də bundan başqa ++,– operatorları var. Və bu operator tək dəyişənlə işləyir. Yəni :
int num= 9;
num++; /* indi num dəyişənin qiyməti 10 oldu */
++ dəyişənin qiymətini artırmaq üçündür , əks — isə dəyişənin qiymətini azaltmaq üçündür. Yəni:
int num=9;
num–; /*indi num dəyişənin qiyməti 8 oldu */
Burda maraqlı bir hissə var. Məsələn belə bir kod yazsaq ,

#include <stdio.h>
 int main()
{
 int num=0;
printf (“num= %d /n”, num); /* %d yəni , sonrakı ədədi onluq        şəkildə çap et. Burda num=0 ekrana çıxacaq */
printf(“num=%d/n”,num++); /* burda da num=0 ekrana çıxacaq, çünki num++ əvvəl num çap edir, sonra isə bir vahid artırır. */
printf(“num=%d/n”,num); /*burda isə num=1 ekrana çıxacaq */
return 0;
}

Bu num++ post increment (sonda artım- azərbaycanca belə olar yəqin) operatoru deyillər. Birdə ++num var. Buna isə pre increment (əvvəldə artım) operatoru deyillər. Yuxarıdakı kodda
printf(“num=%d/n”,++num); /*belə olsa onda num=1 ekrana çıxacaq */
–operatoru da ++ operatoru kimidir.
= operatoru: = operatoruna mənimsəmə operatoru deyillər. Yəni:
x=x+y; /* x+y qiyməti x-ə mənimsədilir. */
Burda da maraqlı bir şey var. x=x+y əgər sol tərəfdəki dəyişən sağ tərəfdə də istifadə olunursa,onda
x+=y bu şəkildə də yazıla bilər (əsasəndə belə yazırlar).
Müqayisə : (böyükdür) , >= (böyük bərabərdir) , <= (kiçik bərabərdir) , != (bərabər deyil) , == (bərabərdir). Təzə proqramlaşdırmaya başlayanların tez-tez etdiyi səhvlərdən biri, == (bərabər) yerinə = (mənimsəmə) operatoru işlətməsidir. Yəni : əgər biz x=y yazırıqsa, bu o deməkdir ki, x-in yaddaşda olan əvvəlki qiyməti y-in qiyməti ilə əvəz olunur. Amma x==y, o deməkdir ki, x-in qiyməti ilə y-in qiymətinin bərabər olub-olmaması yoxlanılır.
Məntiqi: && (və), || (və ya), ! (inkar)
Məntiqi operatorlara bəzən Boolean (Bul) operatorlar deyirlər. Məntiqi operatorlar nə vaxt işlədilir. Məsələn :
int x=7;
int y=5;
(x==7)&&(y==5) bu halda ifadə doğru qiymət qaytaracaq. && operatoru o vaxt doğru (True) qiymət qaytarır ki, hər bir ifadə doğru qiymət alsın. || operatoru isə ifadələrdən heç olmasa biri doğru qiymət alırsa onda ümumi ifadə doğru qiymət qaytaracaq. Yəni (x==4)|| (y==5) nəticəsi doğrudur (məsələn if operatoru işlədəndə , if bu ifadəni yazsaq if yoxlayacaq görəcək ki, doğrudur, onda keçəcək if bloqunda yazdıqlarımızı icra etməyə) .
! isə unary negation (inkar) operatoru adlanır. Əgər ifadə doğru (True) qiymət alırsa ! istifadə etməklə nəticəni yanlış (False ) olaraq dəyişə bilərik.
Həmçini bitlər üzərində əməliyyat aparmaq üçün operatorlar var.

Bookmark and Share

Alibi3col theme by Themocracy