04 Mar

Linux’da bir komutun yolunu bulma

Aklıma geldiçe, hoşuma giden, kullanışlı olduğunu düşündüğüm linux shell komutlarını elimden geldiğince buradan paylaşmaya çalışıyorum.
Bu yazacağım komut da gerçekten çok işe yarayan, bilinmesi gereken bir shell komutu.

“which komutu, kendisine parametre olarak verilen, geçerli ortamda çalıştırılabilen POSIX uyumlu kabuk dosyalarının yolunu döndürür. Bunu PATH değişkeninde belirtilen yollarda, arguman olarak verilen çalıştırılabilir dosyaların isimlerini arayıp eşleştirerek yapar.”

Man dosyasında yazan ve benim çevirebildiğim kadarı ile tanımı bu. Biraz karmaşık veya yanlış çevirmiş olabilirim, o yüzden kısaca özetlemek gerekirse çalıştırılabilir bir dosyanın yolunu döndürür. Örneğin

which grep

yazdığımızda bize şöyle bir çıktı verir (linux dağıtımlarına göre değişebilir) :

/bin/grep

Bu da grep komutunun çalıştırılabilir dosyasının /bin klasöründe olduğunu temsil eder.

01 Mar

Linux’da bir dosyanın içeriğini boşaltmak

Büyük dosyalar ile uğraşıyorsunuz, dosyayı silmek yerine sadece içeriğini silmek istiyorsunuz. Ama herhangi bir editör ile açtığınızda takılmalar yaşıyorsunuz ve beklerken saç baş yoluyorsunuz. Buunun daha kolay bir yolu olmalı, böyle eziyete can dayanmaz 🙂
Evet kolay bir yolu var, bir değil iki yolu var (en azından benim bildiğim) :
Birincisi truncate diye bir komut var , ve bununla

truncate dosyaadi

demeniz yeterli. Fakat truncate her linux sürümünde ön tanımlı gelmiyor. Bunu kullandığınız linux dağıtımının paket yöneticisinde yükleyebilirsiniz. Ama onun yerine çok daha kolay ikinci yöntemi kullanarak dosyamızın içeriğini boşaltabiliriz :

:>dosyaadi

Evet hepsi bundan ibaret, dosyanızın içeriğine baktığınızda bomboş olduğunu göreceksiniz. Yalnız şunu unutmayın, bu komutları kullandığınızda size sileyim mi diye sormayacaktır, direkt olarak dosyanın içeriğini boşaltacaktır.

Yeri gelmişken bu konuya bir ekleme daha yapayım. Harddiskde kalan alan miktarını da şu komut ile öğrenebiliriz :

df -h

Gerçi kalan alan miktarını gösteren güzel araçlar mevcut, ama gün olur ssh ile erişmeniz gerekir ve grafiksel bir arayüz bulamazsanız, mutlaka aklınızda bulunması gereken bir komuttur kendisi.

26 Feb

linuxda port bilgisi sorgulama

Bugün öğrendiğim gayet güzel bir şey. Aslında windowsda da var bu komut, ama aynı işlevi görüp görmediğini bilmiyorum.
netstat komutunu bilirsiniz, ben de biliyordum ama bu kadar işime yarayacağı hiç aklıma gelmezdi

netstat -tulpn |grep :80

netstat ı bu parametreler ile çalıştırdığımızda belirttiğimiz portta (80) çalışan, yani o portu dinleyen bir program olup olmadığını gösteriyor bize.
Şahsen benim işime çok yaradı

23 Feb

Resim üzerine yazılan yazının saydamlığını ayarlamak

Uzun bir ara oldu, planlarıma göre çok önceden yazacaktım. Burada konuya giriş yapmış ve son olarak da , resim üzerine yazılan yazının saydamlığını nasıl ayarlayacağıma değineceğimi söylemiştim.
Aslına bakarsanız gerçekten çok kolay bir şekilde bunu yapmak mümkün. Böyle bir şeye ihtiyaç duyduğumda, araştırma yaparken çok farklı örnekler ile karşılaştım. Ve bunların çoğu karmaşık yollar ile anlatılmıştı. Hiçbiri isteklerime uymuyordu. Sadece resim üzerine bir yazı yazacaktım ve bu yazının saydamlığını istediğim gibi ayarlayabilmeliydim.
Ve en sonunda çözümü (aslında ilk bakmam gereken yerde) php manualde gördüm.
Önceki örneğimizden devam edelim :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// resmimizi oluşturuyoruz
$resim=imagecreatetruecolor(200,50);
// resmimizi boyayacağımız rengi oluşturuyoruz
$renk = imagecolorallocate($resim, 176,196,222);
// resmimizi boyuyoruz
imagefill($resim, 0,0, $renk);
// yazı rengimizi belirtiyoruz

             //$yaziRengi = imagecolorallocate($resim, 0,0,0);
// eski örneğimizdeki yazı rengi bu biçimdeydi
// sadece bu satırı aşağıdaki gibi değiştirmek bizim için yeterli
$yaziRengi = imagecolorallocatealpha($resim, 0,0,0,100);
/*
 * burada ek olarak gelen 100 parametresi saydam bir renk
 * oluşturmaya yarıyor. Bu değer küçüldükçe saydamlık azalır,
 * bu değer büyüdükçe saydamlık artar. 127 son değerdir ve
 * bu değeri girdiğinizde yazımızı veya her ne için kullanacaksak
 * o nesne tamamen saydam olacaktır
 */

// yazımızı resmin üstüne yazıyoruz
imagestring($resim, 5, 20, 50/3, 'www.ersindogan.com', $yaziRengi);

// tarayıcıya dosyamızı algılaması için direktif veriyoruz
header('Content-type: image/png');
// ve sonucu çıktılıyoruz
imagepng($resim);
imagedestroy($resim);

Evet ,işte bu kadar. Sadece farklı bir fonksiyon kullanıp bir parametre ekleyerek bu işlemi kolaylıkla gerçekleştirebiliriz. Hazır yeri gelmişken, konu ile alakalı bir fonksyiondan daha bahsederek bitireyim.

imagefttext, bu fonksiyon imagestring gibi resim üzerine yazı yazmamızı sağlar. Ama ekstra bir özelliği daha var, o da resim üzerine istediğimiz bir font (FreeType 2 tipinde) ile yazdırabilmesidir.

array imagefttext ( resource $resim , float $boyut , float $açı , int $x , int $y , int $renk , string $yazıtipi , string $metin [, array $ekbilgi ] )

Fonksiyonun aldığı parametre yukarıdaki gibi, burda dikkat etmeniz gereken yazı tipini verirken, fontun yüklü olduğu tam yolu belirtmenizdir. Fontu bulamaz ise resim üzerine yazı yazılmayacaktır.

21 Feb

Fatal error: Cannot redeclare class Zend_Loader

Bu sorunla karşılaşan arkadaşlar var ise, çözümü çok basitmiş.
Sadece config.ini dosyasındaki

includePaths.library = APPLICATION_PATH “/../library”

satırının önüne noktalı virgül ekleyerek bu sorunu çözebiliriz.

;includePaths.library = APPLICATION_PATH “/../library”

Sorunun temelinde anladığım kadarı ile, Zend Tool çalışırken Zend kütüphanelerini yüklemekte, üstüne bizim uygulamamız da Zend kütüphanelerini yüklemeye çalışınca bu hatayı veriyor.
Ben bu hata ile Zend Tool kullanırken karşılaştım. Önceden oluşturduğum bir projeye ekstra bir modül eklemek istedim bu aracı kullanarak, ama bu sefer bu hatayı verdi.
Hazır çözümü bulmuşken paylaşayım dedim, çokca karşılaşılabilecek bir problem değil ama yine de birilerinin işine yarar sanırım.

01 Feb

WordPress’de yeni gönderi (post) ekleyince hata vermesi

Bir wordpress güncellemesinden sonra başıma gelen bir olaydı bu. WordPress’i güncelledim , herşey yolunda gibi görnüyordu. Ama bir gönderi eklemek istediğimde hata verip gönderiyi kaydetmedi. Sonrasında bunu , php etiketlerine veya hoşuna gitmeyen birşeyler ile karşılaştığında yaptığını fark ettim.
İlk zamanlar , çok fazla yazı yazmadığım için önsemedim, bu şekilde kullanmaya devam ettim. Ama bir gün bir yazı yazarken o kadar sinir etti ki bu durum. Çözüm yolları aramaya başladım, o zaman ne gibi bir problem ile karşı kaşıya olduğumu anlayamadığım için aramalarım boşa gitti.
Ama sonradan tesadüfen okuduğum bir yazıda çözümü gördüm 🙂 Olay sunucuya kurulmuş olan mod_security den kaynaklanıyormuş, bunu düzeltmenin yolu da .htaccess dosyanıza aşağıdaki satırları eklemek.

1
2
3
4
<ifmodule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</ifmodule>

Hepsi bu kadar, bundan sonra yine sinirsiz , stressiz gönderileri eklemeye devam edebilirsiniz

01 Feb

Ubuntuda bilgisayarı TV ye bağlamak

Aslına bakarsanız bu konu yazdığım yazıların profiline uymasada, bu konuyu burda paylaşmak istedim. Çünkü ( bilgisayarınız destekliyor ise ) çok kolay ve gerçekten işe yarayan bir şey.
Malzemeler :
S-video kablosu
svideo-kablosu
Sesi aktarabilmek için ses kablosu
ses-kablosu
Eğer TV de s-video ve ses girişi için gerekli yerler yoksa aşağıdaki gibi bir scart adaptörü
scart-girisi
Kabloları gerekli yerlere bağladıktan sonra scart-kablosuna-baglanmis-composit-ve-svideo-kablolariscartin-tvye-baglanmis-halisvideo-kablosu-ve-bilgisayar-cikisises-cikisi
Bilgisayarda gerekli ayarları yapmaya geldi. Yalnız benim kullandığım sistem ile sizin kullandığınız sistem arasında farklılıklar olabilir. Ama eğer temel mantığına dikkat ederseniz kendi sisteminize uyarlayabilirsiniz diye tahmin ediyorum.
Ben Ubuntu 9.10 ingilizce kullanıyorum ve ekran kartım NVIDIA Geforce 700M.
Ayarları System >Administration>Nvidia X Server Settings
Türkçe karşılığı Sitem > Yönetim >Nvidia X Sunucu Ayarları
bölümünden yapacağız. Bu ekrana geldiğinizde aşağıdaki gibi bir ekran ile karşılaşacaksınız
ubuntuda-bilgisayarin-tvye-baglanmasi
“Dedect Displays” (Ekranları algıla) dedikten sonra TV yi bulacaktır ( eğer bağlantıları yaptıysanız ) .  TV ekranını seçip  configure ( ayarlar) dedikten sonra gelecek olan ekrandan
tv-ayaralri
twinview ( ikiz görüntü ,bilgisayar ekranında işlerinizi yapmaya devam ederken TV ekranında film izlemenize olanak verir) seçip OK dedikten sonra yola devam edeceğiz.
Bu aslında bizim için yeterli, ayarları uygula (Apply) deyip , ayarların uygulanıp uygulanmamasını soran bir onaydan sonra işlem tamamlanacak. Sonra TV de AV tuşu ile uygun AV kanalını seçince ( ben AV2 ye takmıştım , bu yüzden AV2- S i seçtim) görüntüyü TV den görebileceğiz.
Bundan sonrasında birkaç ipucu vereceğim. Birincisi bağlantıyı S-video kablosu ile yaptığımız için AV kanalı seçerken mutlaka S kanalı olan bir AV seçmeliyiz.
Denemelerimde gördüğüm şey, eğer S kanalı olmayan bir AV kanalı seçersem görüntüde inanılmaz titreşimler ve renk kaymaları olduğu idi. TV de iki adet SCART girişi vardı. AV1 de S kanalı olmadığı için AV2 yuvasına takarak kullanıyorum.
İkinci dikkat edilmesi gereken şey, bilgisayarın görüntüsü TV ye aktarılınca kenarda boşluklar kalıyor bunuda nvidia ayar ekranından TV-0 bölümünden “TV OverScan” değerini arttırarak aşabiliriz. Bu değeri kendi ekranınıza göre yapabilirsiniz.
Son olarak TV-0 ekranından Tv ekranınızdaki görüntüler için gerekli ayarları yapabilirsiniz ( renk ayarları, ekran titreşim ayarları)
Aslında konu burada şimdiye kadar yazdığımdan daha uzun olacaktı , ama gereksiz ayrıntılardan kaçınıp biraz sadeleştirmek istedim, umarım işinize yarar.
Hoşça kalın.

24 Sep

“call-time pass-by-reference” is deprecated çözümü

Bu da PHP4 den PHP5 e geçerken karşılaşılması muhtemel bir problemdir . PHP5 de nesneyi parametre olarak göndermek yeterli, PHP5 de nesne her zaman referans olarak gönderildiği için PHP4 deki gibi & işaretini kullanmanıza gerek yok.

function ipucu(&$a){
echo $a->test();
}

yukarıdaki kullanım PHP5 de “call-time pass-by-reference” is deprecated görmenize sebep olur. Doğru kullanımı aşağıdaki gibidir :

function ipucu($a){
echo $a->test();
}

24 Sep

“headers already sent” problemi çözümü

Çok karşılaşılan, artık birçoğumuzun kanıksadığı bir olgu. Çözümü :

Yol 1:
php.ini de
output_buffering=off
anahtarını bulup
output_buffering=on
olarka değiştirip kaydedin ve sunucunuzu yeniden başlatın.

Yol 2:
kodlarınızın başına (daha ekrana herhangi bir çıktı, boşuk dahil; vermeden) ob_start();

yazmanız sorununuzu çözecektir

24 Jun

SSH tunnel ile MySQL e bağlanma (Putty desteği ile)

Ssh tünelleme, ssh protokolu araciligiyla bilgisayariniz ve ssh ile baglandiginiz sunucu arasinda bir tunel kurup, tunellemeye actiginiz portlardaki iletisimi kismen guvenli kilmak seklinde tanimlayabiliriz.

bu islem genelde sifrelenmemis, salt metin seklinde yapilan baglantilari guvenli hale getirmek icin kullanilir. ayrica, sisteminizde belirli portlar kapatilmissa bu portlari acmak icin de bu yontemi kullanabiliriz (*)

Burada işime çok yarayan, sizin de işinize yaracağını düşündüğüm ssh tünelleme ile uzaktaki bilgisayarınızda bulunan MySQL sunucusuna bağlanmayı göstereceğim:

Putty i  indirip çalıştırın.

Putty i çalıştırdığınızda aşağıdaki gibi bir ekran göreceksiniz , host bilgilerini doldurun ve SSH protokolünü seçinEkran 1SSH sekmesini açın ve Tunnel seçeneklerine gelin, “Source port” bölümüne 3306, “Destination port” yazan kısma da yerel ağınızın adresini girip 127.0.0.1:3306 “Add” düğmesine tıklayın. Bu 127.0.0.1:3306 adresine gelen bütün ağ trafiyğinin SSH aracılığı ile uzak sunucudaki 3306 (veritabanı portu) yönlenmesini sağlarTünelleme Ayarı“Sessions” sekmesine geri gidin ve oturumunuza uygun bir ad vererek kaydet düğmesine tıklayınOturumu kaydetmeBöylece son adımı da tamamladık. Artık uzak mysql sunucunuza bağlanmak isterseniz ilk önce putty i çalıştırın,kaydettiğiniz oturumu yükleyin , bağlanın. Artık uzak bilgisayarda bulunan MySQL sunucunuza 127.0.0.1:3306 adresi ile kolayca erişebilirsiniz.