31 Temmuz 2012 Salı

cpanel eximstatsi otomatik bosaltmak - python

Eximstats tablonuz zaman zaman şişip, makinanızın diskinde gereksiz yer kaplıyorsa, aşağıdaki python kodu ile bu veritabanınızı boşaltabilirsiniz. Bu dosyayı da cronjob'a eklerseniz, her gün otomatik olarak bu işlem gerçekleşmiş olur.
  import MySQLdb as sql  import sys    connection = sql.connect('localhost','root','mysqlrootsifresi','eximstats')  cursor = connection.cursor()  cursor.execute("show tables")  result=cursor.fetchall()  for x in result:          cursor.execute("truncate %s" % str(x[0]))
Not : python 2.4 üzerinde geliştirilmiştir. 2.7 de veya 3.x te çalışacğaının garantisini veremeyiz. * python-mysql eklentsinin yüklenmiş olması gerekmektedir. Devamı için : cpanel eximstatsi otomatik bosaltmak - python

ExtJs fayda ve zararlari - Extjs kullansak mi?

ExtJs Çok şık Extjs, çok şık bir javascript frameworküdür. Şık demek istemem, gerçekten göze hitap eden ve business ihtiyaçlarını iyi düzeyde karşılayan bir görselde olmasından dolayıdır. Extjs ile bir proje yaparsanız, insanların "gerçekten" hoşuna gider. Komponent Bazlı  Extte oluşturacağınız yapının mimarisi size ait olmakla birlikte, genelde komponent bazlı bir şekilde geliştirmeye çok müsaittir. Data Orinted Ajax isteklerini iyi organize etmesi, data orinted çalışan bir yapıda olması, sizi tasarım konularını nasıl yapacağınızı düşünmekten ziyade, işinizi en hızlı şekilde yapmaya yöneltir. Garip Hatalar.. Extjs de en hızlı şekilde hiç bir şey yapamazsınız. Javascriptte OOP yapıları 20 yıllık tecrübeyle bile biliyor olsanız dahi, Extjs önünüze "a is undefined" gibi bir hata döndürebilir. Bu da milyonlarca satır içinde komik gelebilir size.. Eksik dökümantasyon ve Dökümantasyonda olmayan parametreler (!) Extjs nin paralı desteği var. Ben bu sebeple veya değil, dökümantasyonlarına koyulmamış bir sürü parametre keşfettim bugüne kadar. Bir durum oluyor ve örneğin bir yer gözükmüyor. (extte bu hata çok normal oluyor bir süre sonra..) Foruma girip soruyorsunuz. Bir uzman cevaplıyor. Ancak bahsi geçen parametrenin dökümnatasyonda adı bile geçmiyor... Kısıtlı Örnekler İnternet ortamında genel olarak küçük komponentlerin kullanımını gösteren yerler var ancak, tam bir örnek hiç bir zaman bulamıyorsunuz. Geliştirmesi Zor  Ne kadar iyi bilirseniz bilin, Extjs de garip şeylerde zorlanacaksınız. Bir buton koymak için 2 saat harcayablirsiniz, ki bu gayet normal olabiliyor kurmaya çalıştığınız mimariye göre. Saçlarınız dökülebilir, şimdiden uyarıyorum.   Sonuç : Extjs kullansak mı? Extjs gerçekten çok şık. Web service mantığında çalışabildiğinden + ajax ile arası iyi olduğundan, kullanmayı tercih ediyorum. Sizlere de ancak, biraz uğraşın bakın bakalım içinden çıkabileceğinizi düşünüyorsanız, veya boşa vakit harcamayacağınızı düşünüyorsanız, kullanın. Devamı için : ExtJs fayda ve zararlari - Extjs kullansak mi?

30 Temmuz 2012 Pazartesi

exe dosyasini windowsta servis olarak install etmek

Bu işlem aslında epey basittir. cmd ekranını yonetici yetkileriyle çalıştırınız. (kısayolu varsa ctrl + shift + tıklayın veya sağ tıklayıp yonetici yetkisiyle çalıştır deyin)
  c:/dizine/giden/yol/deneme.exe -d install    //bu komut yükler    c:/dizine/giden/yol/deneme.exe -d start      //bu komut başlatır.  
Devamı için : exe dosyasini windowsta servis olarak install etmek

25 Temmuz 2012 Çarşamba

komut satirindan mysql'e baglanmadan veritabani (database) olusturmak

mysql ile bağlantı kurmadan, komut satırından, mysql ile ilgili işlemleri aşağıdaki komut ile yapabiliriz.
 mysql -uroot -ppass -e 'komut;' 
bağlantı kurmadan veritabanı oluşturmaca ise şöyle ;
 mysql -uroot -ppass -e 'create database if not exist [database_name] default character set = [character_set] collate = [collation_name];'; 
-uroot yerine -u{kullanıcı adınız} ve -ppass yerine -p{şifreniz} yazmayı unutmayınız. Devamı için : komut satirindan mysql'e baglanmadan veritabani (database) olusturmak

komut satırından database olusturmak

mysql'de bir database yaratmak istediğimizde ;
 mysql> create database if not exists [database_name]; 
ayrıca şu parametreleri de ekleyebiliriz ;
 mysql> create database if not exists [database_name] default character set = [character_set] collate = [collation_name]; 
Örnek;
 mysql> create database if not exists gokhan default character set = utf8 collate = utf8_unicode_ci; 
oluşturduğumuz yada mevcut olan bir veritabanının özelliklerini görmek için;
 SHOW CREATE DATABASE [database_name]; 
Devamı için : komut satırından database olusturmak

mysql root sifresini degistirmek

mysql'de root şifresi hiç değiştirilmediyse, aşağıdaki komutla root şifresi edinebiliz;
 mysqladmin -u root password [şifre]; 
root şifresini değiştirmek istiyorsak, aşağıdaki komutu kullanabiliriz;
 mysql -u root p;  mysql> use mysql;  mysql> UPDATE user  SET password=PASSWORD('şifre') WHERE User="root";  mysql> flush privileges;
phpmyadmin şifresini değiştimek için de şu işlemi uygulayabiliriz;
 mysql> SET PASSWORD FOR root@localhost=PASSWORD("yenişifre"); 
Devamı için : mysql root sifresini degistirmek

mysql komutları (mysql commands)

Giriş yapmak ;
 [mysql_dir]/bin/mysql -u root -p 
Bir database yaratmak (ek olarak default character set ve collate ekleyebilirsiniz) ;
 mysql> create database [database_name]; 
Tüm databaseleri listelemek ;
 mysql> show databases; 
Bir database seçmek ;
 mysql> use [database_name] ;
Seçtiğimiz databasede bulunan tüm tablaları görmek ;
 mysql> show tables; 
Tablonun yapısını görmek ;
 mysql> describe [table_name] ;
Database silmek ;
 mysql> drop database [database_name] ;
Tablo silmek ;
 mysql> drop table [table_name] ;
Tablodaki bütün verileri görmek ;
 mysql> SELECT * FROM [table_name];
Tablodaki sütunları ve özelliklerini görmek ;
 mysql> show columns from [table_name];
Tablodaki verileri bir kritere göre listelemek ;
 mysql> SELECT * FROM [table_name] WHERE [field_name] = "kriter";
Tabloda name sütunundaki veri 'Ahmet' ve phone sütunundaki veri '123123123' olan verileri listelemek ;
 mysql> SELECT * FROM [table_name] WHERE name = "Ahmet" AND phone = ""123123123";
Tabloda name sütunundaki veri 'Ahmet' olmayan ve phone sütunundaki veri '789789789' olan verileri numara sırasında göre listelemek ;
 mysql> SELECT * FROM [table_name] WHERE name != "Ahmet" AND phone = "789789789" ORDER BY phone;
Tabloda name sütunundaki veri 'Ahmet' ile başlayan ve phone sütununda '123123123' olan verileri listelemek ;
 mysql> SELECT * FROM [table_name] WHERE name = 'Ahmet%' AND phone = "123123123";
Tabloda name sütunundaki veri 'Ahmet' ile başlayan ve phone sütununda '123123123' olan verileri 1,5 aralığında (5 adet) listelemek ;
 mysql> SELECT * FROM [table_name] WHERE name = 'Ahmet%' AND phone = '123123123' LIMIT 1,5 ;
Tabloda rec sütunundaki veri 'a' ile başlayan verileri listelemek ;
 mysql> SELECT * FROM [table_name] WHERE rec RLIKE '^a';
Bir sütundaki unique verileri listelemek ;
 mysql> SELECT DISTINCT [column_name] FROM [table_name];
Tabloda belirlediğimiz sütundaki verileri belirleriğimiz bir artma(ascending - ASC) veya azalma(descenging - DESC) sırasına göre listeler;
 mysql> SELECT [column_1], [column_2] FROM [table_name] ORDER BY [column_2] ASC;
Tablodaki satır sayısını verir ;
 mysql> SELECT count(*) FROM [table_name];
Sütundaki toplam değeri verir ;
 mysql> SELECT SUM(column) FROM [table_name];
BUNU TEKRAR YAP. Tabloları join etme ;
 mysql> ;
Yeni bir kullanıcı yaratıp root olarak giriş yapma ;
mysql -u root -p  mysql> use mysql;  mysql> INSERT INTO user (Host, User, Password) VALUES ('%', 'username', PASSWORD('password'));  mysql> flush privileges; 
Kullanıcının şifresini değiştirme ;
 mysql> SET PASSWORD FOR 'user'@'hostname' = PASSWORD('password');   mysql> flush privileges;
mysql root password geri almak (mysql server işlemini durduruyoruz, skip-grant-tables yaparak mysql'e root olarak giriş yapıyoruz. yeni şifreyi set ediyoruz, sonra mysql'i restart ediyoruz. );
/etc/init.d/mysql stop  mysqld_safe --skip-grant-tables  mysql -u root  mysql> use mysql;  mysql> UPDATE user SET password=PASSWORD("newrootpassword") WHERE User='root';  mysql> flush privileges;  mysql> quit  /etc/init.d/mysql stop  /etc/init.d/mysql start 
root şifresi hiç değiştirilmediyse, bir şifre vermek için ;
 mysqladmin -u root password newpassoword ;
root şifresini değiştirme ;
 mysqladmin -u root oldpassword newpassword ;
'ahmet' isimli kullanıcıya "pass" şifresi erişim izni verme;
 mysql> use mysql;  mysql> grant usage on *.* to ahmet@localhost identified by 'pass';  mysql> flush privileges; 
Veritabanı için kullanıcıya yetki vermek (2 yolu vardır). ; 1 )
 # mysql -u root -p  mysql> use mysql;  mysql> INSERT INTO db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES ('%','databasename','username','Y','Y','Y','Y','Y','N');  mysql> flush privileges;  ;
2 )
 mysql> grant all privileges on databasename.* to username@localhost;  mysql> flush privileges; ;
Update işlemi ;
 mysql> UPDATE [table_name] SET [column_1] = 'A', [column_2] = 'B' WHERE [field_name] 'user'; 
Tablodan satır silmek ;
 mysql> DELETE FROM [table_name] where [phone] = '123123123';
Dosya izinlerini güncellemek;
 mysql> flush privileges;
Tablodan bir sütun silmek ;
 mysql> ALTER TABLE [table_name] DROP COLUMN [column_name];
Tabloya bir sütun eklemek ;
 mysql> ALTER TABLE [table_name] ADD COLUMN [new_column_name] varchar(30);
Tablodan bir sütunun ismi değiştirme ;
 mysql> ALTER TABLE [table_name] CHANGE [old_column_name] [new_column_name];
Bir sütunu unique hale getirmek ;
 mysql> ALTER TABLE [table_name] ADD UNIQUE ([column_name]);
Tablodaki bir sütunun yapısını düzenlemek (düzenlemeden önce varchar(50) olduğunu varsayalım);
 mysql> ALTER TABLE [table_name] MODIFY [column_name] varchar(30);
Tablodaki bir sütunun unique keyini kaldırmak ;
 mysql> ALTER TABLE [table_name] DROP INDEX [column_name];
CSV dosyasını tabloya aktarmak ;
 mysql> LOAD DATA INFILE 'filename.csv' REPLACE INTO TABLE [table_name] FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (field1, field2, field3)  ;
Tüm veritabanlarını yedeklemek ;
 mysqldump -u root -p --opt > alldatabase.sql ;
Tek bir veritabanını yedeklemek ;
 mysqldump -u root -p --databases databasename1 > database1.sql ;
Bir veritabanından tek bir tabloyu yedeklemek ;
 mysqldump -u root -p databasename tablename > database.table.sql ;
Veritabanı içe aktarmak, onarmak ;
 mysqldump -u root -p databasename < database.sql ;
Tablo oluşturma örneği ;
 mysql > CREATE TABLE IF NOT EXISTS `settings` (    `settings_id` int(11) NOT NULL AUTO_INCREMENT,    `settings_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,    `status` enum('on','off') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'on',    PRIMARY KEY (`settings_id`)  ) ;
Bu yazı buradaki yazıdan türkçeye çevirilmiştir. Devamı için : mysql komutları (mysql commands)

18 Temmuz 2012 Çarşamba

Ubuntu MongoDb kurulumu (ubuntu mongodb installation)

MongoDb'yi Ubuntumuza kurmak için, öncelikle install edeceğimiz yerin GnuPG (GNU Privacy Guard) (GPG) keyini bilgisayarımıza tanıtıyoruz. Terminale girip;
  sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10  
yazmamız gerekiyor. (Bu key, MongoDB'nin kendi internet sitesinde verilmiş.) Sonrasında da, MongoDB'yi indireceğimiz yeri bilgisayarımıza tanıtmamız gerekiyor. Bunun için de /etc/apt/sources.list.d dizinini açıyoruz ve burada 10gen.list adında bir dosya yaratıyoruz (touch komutu ile yapabiliriz). Sonrasında bu dosyayı bir editör ile açıp aşağıdaki satırı ekleyip kaydediyoruz.
  deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen  
Ardından terminale girip sudo apt-get update yapıyoruz. Şimdi sıra geldi MongoDB'yi kurmaya! :D Terminalimizi açıp, aşağıdaki satırı uyguluyoruz, ve MongoDB, Ubuntumuza kurulmuş oluyor.
  sudo apt-get install mongodb-10gen  
Terminale mongo yazdığımız zaman MongoDB shell'i karşımıza çıkıyor. Test database'inin test collectionunda deneme yapmamızı sağlıyor ilk açtığımızda. Aşağıdaki satırlarla ufak bir deneme yapabiliriz.
  > db.test.save({a:1})  > db.test.find()  
Bir sonraki yazımda, Ubuntu üzerinde çalışırken MongoDB'yi PHP ile nasıl kullanacağımızı anlatacağım. Devamı için : Ubuntu MongoDb kurulumu (ubuntu mongodb installation)

Obfuscation nedir? (php)

Obfuscation, türkçe karşılığı gizlemek olan bir işlemdir. Bu işlem, yazılımda, kodların anlaşılabilirliğinin daha az olması için yapılmaktadır. Yapılma amacı ise güvenlik ve gizliliktir. Obfuscator dediğimiz araçlar ise, yazdığımız kodları anlaşılabilirliği daha zor hale getiren, yani obfuscate işlemini yapan şeylerdir. İnternette çoğu yazılım dili için olduğu gibi php için de bir sürü obfuscator var. Bunlardan bir tanesi de bu adresteki obfuscator. İşleme de örnek verelim, ilk olarak benim yazdığım deneme.php dosyasını ardından da obfuscate ettikten sonraki halini yazıyorum.
  < ?php    class Deneme{            public function deneme(){          echo "deneme";      }            public function dubluve(){          echo "dubluve";      }        }    $dubluve = new Deneme();  $dubluve->deneme();  echo "
"; $dubluve->dubluve(); ?>
    < ?php class Deneme{public function deneme(){echo"den\x65m\x65";}public function dubluve(){echo"\x64\x75b\x6cuve";}}${"\x47\x4c\x4f\x42\x41\x4cS"}["\x72\x68\x77l\x6f\x65sd\x74"]="\x64\x75\x62\x6c\x75v\x65";${${"\x47\x4c\x4fB\x41L\x53"}["\x72\x68\x77\x6co\x65\x73d\x74"]}=new Deneme();$dubluve->deneme();echo"\x3c\x62r>";$dubluve->dubluve();  ?>  
Bu iki kodun da yaptığı işlemler aynı olacaktır. Yani obfuscation işlemi, kodun işleyişine bir etkide bulunmaz, sadece kodun anlaşılabilirlik derecesini zorlaştırır. Bir nevi kodumuzu kilitlemiş oluyoruz. :) Kodumuzu kilitliyoruz da, ne faydası olacak bunun? diye düşünüyorsanız, haklısınız. Obfuscate işlemini yapmak, kendimizi kandırmaktan başka bir işe yaramıyor ne yazık ki. Örneğin kodlarınız üzerinde düzenleme yapmak ve bugları gidermek sizin için oldukça zor olacaktır, bu bir dezavantaj. Ayrıca encrypt yaptığımız işlemin bir de decrypt hali mevcut. Yani obfuscate yaptığımız kodları, tam tersi bir işlemden geçirerek okunabilir(bilgisayarın değil, bizim okuyabilir olmamızdan bahsediyorum) hale getiren araçlar da mevcuttur. Onun da basit bir örneğine buradan göz atabilirsiniz. Devamı için : Obfuscation nedir? (php)

9 Temmuz 2012 Pazartesi

Sık kullanılan Linux komutları

Bash Komutları

uname -a : bu komut, sistem ve kernel bilgilerini verir. (kernel dediğimiz linux çekirdeğidir.) head -n1 /etc/issue : kullandığımız linux dağıtımını görüntüler. mount : dosya sistemini monte etmeye yarar date : bilgisayarın saatini ve tarihini görüntüler. uptime : sistemin ne kadar süredir kesintisiz çalıştığını, sistemdeki aktif kullanıcı sayısını ve sistemin yük ortalamalarını görüntüler. whoami : Who Am I? komutu, sistemdeki kullanıcı adınızı görüntüler man [command] : man kelimesinden sonra girilen komutun, hangi parametrelerle nasıl kullanılacağına dair bilgi verir.

Bash kısayolları

CTRL - z : o an çalışan komutun çalışmasını durdurur, beklemeye alır. CTRL - c : o an çalışan komutu sonlandırır. CTRL - a : komut yazdığımız sırada, satırın başına gider CTRL - e : komut yazdığımız sırada, satırın sonuna gider CTRL - u : komut satırında, yazdığımız komutun herhangi bir karakterinin üzerindeyken, satırın başından başlayıp bulunduğumuz karaktere kadar olan karakterleri keser CTRL - k : komut satırında, yazdığımız komutun herhangi bir karakterinin üzerindeyken, satırın sonundan başlayıp bulunduğumuz karaktere kadar olan karakterleri keser CTRL - r : girdiğimiz karakterlere göre, yaptığımız aramaları teker teker görüntüler !! : son çalıştırdığımız komutu tekrar çalıştırır. !abc : abc ile başlayan son komutu tekrar çalıştırır. !abc:p : abc ile başlayan, çalıştırdığımız son komutu gösterir. çalıştırmaz, sadece print eder. !* : son çalıştırdığımız komutun parametrelerini gösterir. !$ : son çalıştırdığımız komutun son parametresini gösterir.

Bash Değişkenleri

env : sistemdeki tüm değişkenleri listeler echo $name : name adındaki değişkenin hangi değere sahip olduğunu gösterir export name = value : name değişkenine value değerini atarız. $HOME : ana dizini gösterir. $PATH : path dizinin gösterir.

Dizin Komutları

pwd : o anda bulunduğumuz dizini gösterir. ls : bulunduğumuz dizindeki dosyaları ve klasörleri listeler. mkdir [directory] : yeni bir dizin yaratır. cd [directory] : bulunduğumuz dizinden farklı bir dizine geçmemizi sağlar. cd .. : bir üst dizine çıkmamızı sağlar.

Dosya Komutları

touch [filename] : yeni bir dosya yaratır. cat [file1] [file2] : dosyaları ard arda sıralayarak standart çıkışa yazar less [filename] : satırlarını numaralandırarak dosyanın içeriğini gösterir. file [filename] : Dosyanın türünü gösterir. cp [file1] [file2] : file1 dosyasını file2 dosyasına kopyalar. mv [file1] [file2] : file1 dosyasını file2 dosyasına taşır. bunu dosyayı farklı bir dizine taşırken, ya da dosyanın ismini değiştirirken kullanabiliriz. rm [filename] : dosyayı siler. head [filename] : dosyanın ilk 10 satırını görüntüler. tail [filename] : dosyanın son 10 satırını görüntüler. tail -f [filename] : dosyanın son 10 satırını, değiştikce canlı olarak görüntülemeye devam eder.

İşlem Komutları

ps : o anda kullandığımız işlemleri listeler psaux : o anda bilgisayarın da gerçekleştirdiği tüm işlemleri listeler top : anlık olarak işlemleri gösterir, sistemin ne kadar hafıza kullandığı vb. parametreler anlık olarak değişir. kill [pid] : yukarıdaki komutlarla listelediğimiz işlemlerin her biri bir PID'e sahiptir, bu PID'ı kullanarak işlemi sonlandırabilir.z pkill [name] : listelediğimiz işlemleri bu komutla isimlerini kullanarak da sonlandırabiliriz. killall [name] : name ismi ile başlayan tüm işlemleri sonlandırmaya yarar.

Arama komutları

grep [kelime] [file] : file dosyası içindeki kelime geçen tüm satırları gösterir. grep -v [metin] [file] : dosyada, içinde aranan metin geçmeyen satırları gösterer. grep -o [metin] [file] : dosyada aranan metin varsa, sadece onu gösterir grep -r [metin] [file] : içinde aranan metin geçen satırları sondan başa doğru gösterir grep -i [metin] [file] : büyük-küçük harf duyarlı arama yapar. find /dir/ -name name* : name ismi ile (name*) başlayan dosyaları bulur. find /dir/ -user name* : isminde name kelimesi geçen dosyaları bulur. find /dir/ -mmin num : dizinde, num (num yerine bir sayı yazılacak) dakikadan daha az saniye önce değiştirilmiş dosyaları bulur. whereis [command] : girilen komutun, binary / source / manual dosyalarının nerelerde olduğunu gösterir. locate [filename] : ismi girilen dosyanın bilgisayarda nelerde olduğunu listeler, aynı isme sahip birden çok dosyanın dizinlerini alt alta listeler. sistem indexi içinde arama yapmak gibidir.

IO (input/output) komutları

cmd < file : dosyayı, komut ile birlikte çalıştırır. Örneğin, gedit < deneme.txt yazdığımız zaman, deneme.txt dosyasının içeriğini alır, yeni bir txt dosyasıymış gibi gedit ile açar. cmd1 < (cmd2) : cmd2 komutunun çıktısını, cmd1 komutunun içerisinde kullanır. örneğin, cmd2 komutunda, grep ile bir arama yaparız, bunun çıktısını alıp cmd1 komutunda gedit ile yeni bir metin dosyası ile kullanabiliriz. cmd > file : cmd komutu ile elde edilen çıktıyı file dosyasına yazar. cmd 2> file : komut sırasında oluşan hataları dosyaya yazar cmd &> file : komut sırasında oluşan tüm çıktıları dosyaya yazar

Sırayla komut çalıştırma

cmd1 ; cmd2 : cmd2 komutundan sonra cmd1 komutu çalışır cmd1 && cmd2 : cmd1 komutu başarılıysa, cmd2 komutu çalışır. cmd1 || cmd2 : cmd1 komutu başarılı değilse, cmd2 komutu çalışır. cmd & : komut arkaplanda çalışır

ls komutu parametreleri

ls -a : dizindeki tüm dosya ve klasörleri listeler ls -R : dizindeki dosyaları, klasörleri ve klasörlerin içindeki dosyaları da listeler ls -r : dizindeki tüm dosya ve klasörleri tersten listeler ls -t : dizindeki klasör ve dosyaları son değiştirilme tarihlerine göre listeler ls -S : dosyaları ve klasörleri boyutlarına göre listeler ls -l : dosyaları ve klasörleri, detaylı şekilde listeler. (son değiştrilme tarihleri, oluşturan kullanıcı vs.) ls -1 : her dosya ve klasör ismini tek satır olacak şekilde listeler ls -m : dosya ve klasör isimlerini aralarına virgül koyarak listeler ls -Q : dosya ve klasör isimlerini çift tırnak (" ") içerisinde listeler

Nano komutları

CTRL-R : dosyayı açar CTRL-O : dosyayı kaydeder CTRL-X : dosyayı kapatır ALT-A : text seçmeyi başlatır, yön tuşları ile text seçilebilir CTRL-K : seçilen metni keser CTRL-U : metni yapıştırır ALT-/ : dosyanın sonuna gider CTRL-A : satır başına gider CTRL-E : satır sonuna gider CTRL-C : satırın kaçıncı satır olduğunu ve tüm dosya içerisinde % kaçıncı satır olduğunu gösterir CTRL-_ : belirtilen satıra gider CTRL-W : dosya içinde arama yapar ALT-W : arama yaptıktan sonra bir sonraki metni bulur CTRL-\ : bul ve değiştir işlemini yapar

Screen komutları

screen : yeni bir screen oturumu başlatır screen -r : screen oturumunu kaldığı yerden devam ettirir screen -list : aktif screenleri listeler CTRL-A : screen için ekran komutlarını etkinleştirir CTRL-A c : yeni bir pencere açar CTRL-A n : bir sonraki pencereye geçer CTRL-A p : bir önceki pencereye geçer CTRL-A " : terminalleri gösterir CTRL-A A : bash ismini değiştirmeye yarar CTRL-A K : screen oturumunu bitirir

Dosya izinleri

chmod 775 [file] : dosya modunu 775 olarak değiştirir chmod -R 600 [folder] : klasör modunu 600 olarak değiştirir chown [user]: [g-roup] [file] : dosyanın kullanıcı ve kullanıcı grubunu değiştirmeye yarar

Dosya izin numaraları

4 : okuma (read (r)) 2 : yazma (write (w)) 1 : çalıştırma (execute (x)) Devamı için : Sık kullanılan Linux komutları

8 Temmuz 2012 Pazar

LESS - Dinamik Stil (CSS) Dili

Twitter Bootstrap'i (ayrı bir konuda buna da değinmek gerekir) incelerken LESS ile karşılaştım. Bootstrap, LESS ile tamamen entegre şekilde çalışıyormuş ve gayet de iyi yapıyormuş :) Hemen derinlemesine LESS nedir ne işe yarar diye araştırmaya koyuldum ve sizlere de bahsetmek istedim. LESS, CSS'i dinamik hale getiren bir programlama dili. CSS yazarken dert yandığım değişken ve fonksiyon tanımlama işlevlerini CSS'te kullanılır hale getiriyor. Aslında CSS'te kullanılır hale getiriyor çok doğru olmadı, siz LESS yazıyorsunuz ve LESS derleyicisi onu CSS'e çeviriyor. Gerçekten çok hoşuma gitti. LESS'in sitesinden bir örnekle sizi baş başa bırakayım. Detaylarına sitesinden bakabilirsiniz. Öncelikle LESS kodu:
// LESS kodu  @color: #4D926F;  #header { color: @color; }  h2 { color: @color; }
LESS kodunu derleyince oluşan CSS kodu:
/* Derlenmiş CSS */   #header { color: #4D926F; }  h2 { color: #4D926F; }
Bir de fonksiyonumsu ile ilgili bir örnek alıntılayalım. Önce LESS kodu:
// LESS kodu  .rounded-corners (@radius: 5px) {   border-radius: @radius;   -webkit-border-radius: @radius;   -moz-border-radius: @radius;  }  #header {    .rounded-corners;  }  #footer {   .rounded-corners(10px);   }
Derlenmiş CSS kodu:
/* Derlenmiş CSS */
#header {   border-radius: 5px;   -webkit-border-radius: 5px;   -moz-border-radius: 5px;  }  #footer {   border-radius: 10px;   -webkit-border-radius: 10px;   -moz-border-radius: 10px;  }
Derleme konusu yine sitesinde mevcut. Javascript ile de derlenebiliyor ancak ben beceremedim. Windows için çok kullanışlı bir program buldum; SimpLESS. Kullanımı çok basit. Sadece LESS dosyanızı programa ekliyorsunuz. Kendisi arka planda çalışıyor ve dosyayı gözlemliyor. Dosyada değişiklik olduğu zaman otomatikman CSS dosyasına derliyor. Çok kullanışlı. Devamı için : LESS - Dinamik Stil (CSS) Dili

6 Temmuz 2012 Cuma

diagram designer - sekil cizme ve modelleme programı

Herkes yaptığı sistemi, mimarisini, çalışma şekillerini bir başkasına göstermek ister. Ancak koddan bir şey anlatamazsınız. Üstüne üstlük bir de hevesiniz kaçar.. Diagram designer, yazılımlarınızın mimarisini, akış diagramını, aklınızdakileri aktarabilecğeiniz küçücük (<2MB) ancak çok değerli bir şekil çizme programıdır. SmartDraw, Microsoft zımbırtıları ile çok kasmış ancak, bir türlü rahat edememiş biri olarak, bu programı keşfettiğime çok mutluyum. UML , akış diyagramı (flowchart), sistem tasarımı, vb.. gibi şeyleri rahatça çizebilirsiniz. Hızlı da bir kullanımı var. http://logicnet.dk/DiagramDesigner/ adresinden indirip, http://d16912502.u227.surftown.dk/DiagramDesigner/Templates/ adresinden de tüm çalışma setlerini (paletlerini) indirebilirsiniz. Tavsiye ediyorum. Devamı için : diagram designer - sekil cizme ve modelleme programı

5 Temmuz 2012 Perşembe

Zend framework Zend_Db_Adapter ile veritabani persistent connection olusturma

Zend framework ile Zend_db_adapter kullanarak herhangi bir veritabanına persistent (kalıcı) bğalantı oluşturmak istiyorsanız, config.ini dosyanıza (veya adı application.ini olabilir artık hangisi ise )
database.params.persistent = TRUE
yazmanız yeterli olacaktır. peristent connection nedir merak ediyorsanız, bir önceki yazım için tıklayınız. Devamı için : Zend framework Zend_Db_Adapter ile veritabani persistent connection olusturma

database - mysql persistent connection nedir?

Persistent connection nedir?

Persistent connection, bağlantının sürekli açık tutulduğu bağlanma biçimine denir. Normal olarak, yazılım dilleri bir veritabanına bağlanacağı zaman, bilgisayardaki bir port üzerinden veritabanına bağlantı açar. Daha sonra kodun sonunda, veya isteğe bağlı bir yerine bağlantıyı kapatır. Ayrıca connection kapatılmadıysa, yazılım dillerinde otomatik kapatma seçenekleri de bulunmaktadır. Örneğin 5 sn sonra kapat, 10 sn sonra kapat, biter bitmez kapat gibi seçenekler mevcuttur.

Persistent connection ın avantajları

Veritabanı bağlantısının otomatik. olarak açılıp kapatılması, en az ayar gerektiren şey olabilir. Ancak performansınızı persistent connection ile artırabilirsiniz. Bir web sayfası isteği geldi diyelim. Yazılım dili kodu çalıştırdı. Varsayalım ki 1 Query gerekti bu sayfa için. 1- Hazırda bir bağlantı yok. İşletim sisteminden ilgili portu kullanmak için müsade istedi. 2- Daha sonra ilgili porta bağlandı. 3- Sonra querysini çalıştırdı. 4- Sonucunu ilgili porttan okudu. 5- Kod bitince de mysql bağlantısını kapattı. persistent connection bu noktada, 1. aşamayı hızlandırır, 2. aşamayı direkt ortadan kaldırır, 4. aşamayı hızlandırır ve 5. aşamayı ortadan kaldırır. ... Baktığımızda query önemli bir maliyet olabilir tabi ki querysine göre değişir ancak, yüklü bir serverda bahsettiğim durumun bariz hız kazandıracağı aşikar. ---- Persistent connectionın diğer bir avantajı da , yüksek load altında, saçmalayan bir yapıya müsade etmemesidir. Persistent connection sayınızı yazılım dilinden ayarladığınızda, diyleim ki 200 verdiniz, sitenize aynı anda 1000 kişi bile gelse, serverinizin stabilliğini korur. Otomatik olarak bir sürü bağlantı açtırsaydık, bunları yönetmemiz imkansız olacaktır. (tabi kullanıcılar mysql bağlanamadı hatası alırlar, ancak siteniz çökmez bu daha önemlidir, en önemlisi de sistemi ince ayar yaparak bu ihtiyaçları da karşılayabilir hale getirmeniz sizin elinizdedir.) Mysql olarak anlattık hep, mysql de persistent connection kullanmanız inanılmaz kolay. tek yapacağınız mysql_connect yerine mysql_pconnect kullanmanız. Bir de eğer mysql_close kullanıyorsanız, bunlar kodunuzdan kaldırmanız. (tabi ki başka bir database e bağlanacaksanız o ayrı durum) ----- Bu sadece mysql için değil hemen hemen tüm veritabanlarında ortak olan bir özelliktir. --- Hele ki database serverini ayrı bir server olarak kullanıyorsanız, ve bu makina sadece database e özel bir makina ise şiddetle tavsiye ederim. Ben aktif olarak mysql ve mongoda persistent connection kullanıyorum. dipnot : Mysql ve Mongo persistent connectionları için PHP'de mod_php ile Apache 'yi tercih etmeyiniz. Nginx veya lighthttpd yanında kurulu bir phpfcgi(php fast cgi), yüksek load altında apacheden hem çok daha stabil çalışıyor, hem de performans olarak %500 den fazla hızlı çalışıyor. En önemlisi, yapacağınız ayarları "DOĞRU" olarak çalıştırıyor. Devamı için : database - mysql persistent connection nedir?

3 Temmuz 2012 Salı

Sunucumu Hangi İsletim Sistemi ile kurmaliyim?

Eğer bir sunucu kurmak istiyorsanız, burada sizleri ilgilendiren bir kaç şey paylaşmaya çalışacağım. İlk etapta ne kuracaksanız, hangi amaca yönelik bir sunucu kuracaksanız kurun, Microsoft Mahsüllerinden (klavye, mouse hariç) uzak durun. Her şeyi paralı bilindiği üzere. Ayrıca Windows Serverlar bir miktar stabilliği yakalamış olmasına rağmen, "Windows" kelimesinin altına bastıra bastıra uzuk durun derim. Burada mantıklı bir karar vermek istiyorsanız, community'si gelişmiş, bir işletim sistemi kurmanızın faydalı olacağını belirtirim. Bir web sunucusu kurmak istiyorsanız, Debian, Ubuntu, Centos veya Fedora nın server sürümlerini kurabilirsiniz. (desktop olanı farklı, server olanı farklı. desktop da pekala kuurlabilir ancak performans düşürmeye gerek yok) Bu noktada, az uğraşmak, çok iş yapmak, stabil çalışmak istiyorsanız, Ubuntu veya Debian önerebilirim. Ubuntu 12.04 versiyonu gelecek 5 yıllık bir destek ile birlikte taze yayınlandı. Tavsiye ederim. Program kurması en zahmetsiz olanı, ve en hızlı zamanda en fazla iş yapabileceğiniz bir ortamı çok daha kolay sağlarsınız. Bunun yanında Performansın en ufağı bile sizin için süper bir şey ise, CentOS kurmanızı öneririm. Çünkü bu işletim sistemi gereksiz en ufak bir kaynak bile harcamamaya özen gösteriyor. Yine de program vb kurmanız biraz dertli olsa da, işlerinizi yapabiliyor, stabil bir yapı kuraibliyorsunuz.   Bana sorarsanız eğer, Ubuntu-Server diyorum, 4-5 aydır. Kullanmaya başladıktan sonra, Diğer server işletim sistemlerinde yaşadığım külfetleri gördüm çünkü. Tabi ki bunlar kişisel görüşlerdir, tavsiyedir. Herkesin kararına saygılıyızdır :) Devamı için : Sunucumu Hangi İsletim Sistemi ile kurmaliyim?