Centos Subversion Apache mod_dav_svn…

Centos üzerinde Apache sunucusu ile birlikte subversion depolarınızı yayınlayabilirsiniz. Bunun için kurmanız gereken paketler şu şekilde:

Bash
yum install httpd subversion mod_dav_svn

Bu işlem ardından yapmanız gereken şey apache ile ilgili subversion ayar dosyasını düzenlemeniz. Centos zaten bu paketleri kurduğunuz da “/etc/httpd/conf.d/” altına “subversion.conf” adıyla bir dosya oluşturuyor. Fakat bu dosyanın içerisi yorumlanmış şekilde.

Bash
<Location /repos>
   DAV svn
   SVNParentPath /svn/dopalarinin/bulundugu/dizin
</Location>

Bu şekilde basit bir ayar yapabilirsiniz. Bu ayardan sonra web sunucusunu baştan başlatmamız gerekiyor. Artık http://ipadresiniz/repos/depoadi veya http://domain.tld/repos/depoadi adresine girerek svn depolarınıza ulaşabilirsiniz.

Bash
svn co http://ipadresiniz/repos/depoadi

komutu ile doponucu check out yapabilirsiniz. Eğer depoya erişimi şifreli yapmak istiyorsanız.

Bash
<Location /repos>
   DAV svn
   SVNParentPath /svn/dopalarinin/bulundugu/dizin
 
      AuthType Basic
      AuthName "Svn deposu...."
      AuthUserFile /sifrenin/saklanacagi/dosya
      Require valid-user
</Location>

Şeklinde bir ayar dosyası hazırlamanız gerekiyor. Bu şekilde bir giriş kontrolü için “htpasswd” ile kullanıcı hesapları oluşturuyoruz. Bunun için komutumuz:

Bash
htpasswd -b /sifrenin/saklanacagi/dosya kullaniciadi sifre

Buraya kadar, subversin, apache ve apache üzerinden svn yayını yapmak için gerekli adımları uyguladık. Tabi bunlar için svn deposu oluşturmanız da gerekiyor.

Bunun için kullancağınız komut ise:

Bash
svnadmin create /deponu/bulunacagi/dizin/depoadi

Burda dikkat edilmesi gereken şey oluşturacağınız deponun apache ayar dosyasında belirttiğiniz SVNParentPath ile belirtilen dizin altında olması.

Centos üzerinde Php Pecl Mailparse eklentisi…

Centos üzerinde pecl mailparse eklentisini (rpm ile) kurup,  ” php -i | grep ‘mailparse’ ” çalıştırdığınız zaman şöyle bir hata ile karşılaşabilirsiniz:

PHP Warning:  PHP Startup: mailparse: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP    compiled with module API=20060613, debug=0, thread-safety=0
These options need to match
in Unknown on line 0
/etc/php.d/z-mailparse.ini,

Eğer böyle bir durum söz konusu ise çözümü için şu komutları çalıştırmanız yeterli olacaktır:

Bash
rpm -e php-pecl-mailparse
pecl install -n mailparse

Bu komutlar ile öncelikle rpm ile kurduğumuz mailparse’ı kaldırıyoruz, daha sonra “no dependency” yani bağımlılıkları yok sayarak mailparse’ı pecl ile kuruyoruz.

Ek bir not, bu işlem sonrası “/etc/php.d/” (php bu dizin altında ki tüm ini dosyalarını otomatik olarak yüklüyor) altında bulunması gereken “z-mailparse.ini” dosyasının “z-mailparse.ini.rpmsave” halini aldığını fark ettim. Bu dosyayı “z-mailparse.ini” haline getirmeniz gerekiyor.

Microsoft Epic Fail!!!!!!!!

Bu tarz şeyleri yayınlamayı pek sevmem ama gecenin bir yarısı çileden çıkartan Microsoft uygulamalarına iyice kafam bozuldu. Bu yayınlamış olduğum resim işin SUYUNU çıkartan bir olay.

Orjinali için tıklayın..

Yeni bir dönem…

Yaklaşık olarak altı aydır çalıştığım Crypttech firmasında ki görevimden 18 Ocak 2010 tarihinde istifa ettim. Altı aylık çaılışma süresinde çok şey öğrendim, çok güzel zamanlar geçirdim. Altı ay boyunca çalıştığım tüm çalışma arkadaşlarıma teşekkür ediyorum.

Bununla birlikte yeni bir işe merhaba demiş oldum. Artık daha fazla çalışmam ve daha fazla öğrenmem gerekiyor. Kısacası hala İstanbuldayım ve hayat tüm hızını arttırarak devam ediyor…

Gitmek lazım bu şehirden…

Gitmez lazım bu şehirden
Hazır şehir sensizken
Gitmek lazım…

Unutmak herşeyi
Ve bakmadan arkaya
Gitmek lazım bu şehirden…

Bahar yağmurları vurmadan pencereme
Ve hazır sessizken bu şehir
Gitmek lazım
Sessizce…

Vpopmail’e gelen mailleri PHP ile okumak

Vpopmail domainlerinize gelen mailleri okumanız için “.qmail-default” veya “.qmail” dosyasında bir script çalıştırabilirsiniz. Bu dosya vpopmail ile oluşturulmuş domain dizini altında bulunmakta. (Örn. “/home/vpopmail/domains/mydomain/” dizini altında..)

.qmail-default dosyası temel olarak şu yapıda olur:

Bash
| /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox

Eğer user@mydomain.com adresini catch all olarak tanımlamak istiyorsanız şu şekilde bir .qmail-default dosyasına ihtiyacınız var (eğer qmailadmin kullanıyorsanız arayüz kullanarak catch all vb işlemleri yapabiliyorsunuz):

Bash
| /home/vpopmail/bin/vdelivermail '' user@mydomain.com

Gelelim kendi hazırladığımız bir scripti nasıl çalıştıracağımıza. Bunun için dosyamıza şöyle bir satır eklememiz gerekiyor.

Bash
| /script/yolu

Bu şekilde bir satır eklediğiniz de, mydomain.com hesaplarına mail geldiğinde scriptiniz çalışacaktır.

Gelelim Php ile gelen mailleri okumaya. Ben gelen mailleri direk alıp bir dosyaya yazdırıyorum:

PHP
// php://stdin girdi parametresi ile girdileri okuyoruz.
$oku = fopen("php://stdin", "r"); 
if(!$oku) // okuma basarisiz mi diye kontrol ettiriyoruz
{
    // basarisiz ise hata yazdiriyoruz.
    file_put_contents('/home/deneme.txt',"###HATA###",FILE_APPEND);
}
$icerik = $oku; // email içeriğini değişkene atıyoruz.
fclose($oku);
 
// İçeriği dosyaya yazdırıyoruz.
file_put_contents('/home/deneme.txt',$icerik,FILE_APPEND);

Artık elimizde tüm mail bilgilerini (header,body vs..) bir dosyaya aktaran php script’imiz mevcut.

Burda dikkat edilmesi gereken hususlar şunlar:

  • Php scriptimiz çalıştırılabilir olmalı.
  • Scriptimizin başında #/usr/bin/php ibaresi olmalı (vpopmail scripti bu parametre ile çalıştırıcak)
  • Deneme.txt dosyamız yazılabilir izinlere sahip olmalı.

Php ile Memcache kullanımı

Memcache nedir diyenler ayrıntılı olarak buradan bilgi alabilirler. Kısaca açıklamak gerekirse, bellek üzerinde uygulamalarınızın cache olarak tutulmasını sağlayan bu sayede hız ve performans artışı yapan bir sistem. Facebook, wikpedia gibi bir çok büyük proje memcache kullanmakta.

Memcache default olarak 11211 portunu kullanmaktadır. Temel olarak memcache sunucusuna bir anahtar değere sahip içerikler tutulmakta. Siz daha sonra bu anahtarlar aracılığı ile içerikleri çağırabilir veya silebilirsiniz. Ayrıca eklenen içeriğinin ne kadar süreli cache içerisinde tutulacağını belirtebiliyorsunuz.

Debian/Ubuntu türevlerinde kurulum gerçekleştirmek için:

Bash
sudo apt-get install memcached

komutunu kullanabilirsiniz.

Php5 için memcache desteğini vermek için de:

Bash
sudo apt-get install php5-memcache

komutu ile ilgili paketi kurmanız gerekir.

Bu işlemlerden sonra Php ile memcache’i nesne oluşturarak kullanabilirsiniz. Php içerisinde 19 adet memcache parametresi bulunmaktadır.

Php ile memcache sunucusuna bağlantı komutları:

PHP
$memcache = new Memcache;
$memcache->connect('localhost',11211) or die ("Sunucuya baglanti saglanamiyor...");

Bu şekilde sunucuya bağlandıktan sonra sunucuya veri eklemesi şu şekilde yapılır:

PHP
$memcache->add('anahtar','icerik',false,60);

Bu kodda gördüğünüz üzere sıralama basitçe anahtar->içerik->bayrak->süre şeklinde oluşmuş durumda. Bayrak işaretçisi veriniz sıkıştırılmış olarak saklayıp saklamayacağına bakıyor. “true” olarak ayarlanırsa veriyi sıkıştırılmış olarak saklıyor (zlib).

Memcache sunucusunda bulunan bir içeriği göstermek içinde şu kodu kullanabiliriz:

PHP
$veri = $memcache->get('anahtar');
echo $veri;

Basit anlamda bu şekilde php ile memcache kullanımı yapabilirsiniz. Dikkat edilmesi gereken durum her bir anahtar sadece 1mb lık veri taşıyabiliyor olması.

Syslog ve DNS…

Dün bir müşterimizde ilginç bir sorun yaşadık. Sistemde yanlış dns ayarları bulunması sebebi ile syslog dışardan aldığı tüm verileri 10 saniyelik periyotlarda ve eksik yazmakta idi. DNS ayarının bozuk olduğunu görüp geçerli dns ayarlarını girince durum çözüldü.

Aslında DNS ayarlarının bozuk olduğunu syslog ile yaşadığımız bu sorundan değil firewall’dan gelen loglardan çözdük, fakat bir şekilde düzgün bir dns adresi girince herşey yoluna girmiş oldu.

DNS ile Syslog arasında ki bu ilişkiyi pek anlayamadım, araştırmalarım da pek bir sonuç elde edemedim… Bilen birileri bu soruyu yanıtlarsa çok mutlu olacağım…

İSTAD Bowling Turnuvası…

İstanbul Arhavililer Derneği Yarın(26 Aralık 2009) saat 19:00′da Cevahir Alışveriş Merkezinde bowling turnuvası düzenliyor…

Arhavisitesi.com yayın grubu olarak bizde orada olacağız…

Katılım ve bilgi için:

İlgili Kişi: Sevda Karabal / Kadın Kolları Başkanı

GSM: 0532 605 47 12

Php file_put_contents fonksiyonu…

Php ile bir dosya içerisine bilgi yazmak için kullanılan yol genellikle şudur:

  • fopen() ile dosya açılır,
  • fwrite() ile işlem yapılır,
  • fclose() ile dosya kapatılır…

Bir dosya içerisinde basit bir işlem yapıyorsanız -örneğin dosyanın sonuna bir şeyler eklemek gibi- bu üç fonksiyonu bir arada kullanan file_put_contents fonksiyonu işinize yarayacaktır.

Örnek Kullanım:

PHP
$dosya="deneme.txt";
$icerik ="deneme metni";
file_put_contents($dosya,$icerik);

Bu şekilde bir kullanım yaptığınız zaman, file_put_contents fonksiyonu $icerik degiskeni içerisinde bulunan bilgileri dosyanın üzerine yazar. Eğer amacınız dosyanın sonuna yazmak ise FILE_APPEND parametresini kullanmanız gerekiyor:

PHP
$dosya="deneme.txt";
$icerik ="deneme metni";
file_put_contents($dosya,$icerik,FILE_APPEND);

Buna benzer olarak eğer sadece bir dosyanın içeriğini yazdırmak istiyorsanız file_get_contents fonksiyonunu kullanabilirsiniz…

Özgür Kuru is Stephen Fry proof thanks to caching by WP Super Cache