debian pear install problemi

Posted on January 17th, 2008 in Debian by cagatay

Bir kaç saattir debian sistemime Deki Wiki kurmaya çalışıyor ama

pear install XML_RPC

kısmında takılıyordum. Timu Eren’in blogunda çözüme rastladım. Dediği gibi sistem yerellerini türkçe’den kurtarınca sorun çözüldü.

Yani :

export LC_ALL=”C”

export LANG=”C”

Kendisine saatlerimi kurtardığı için teşekkür ederim.

Excel notları

Posted on March 26th, 2007 in Dökümanlar, Hesap Tablosu by cagatay

Excel eğitimi verdiğim zamanlarda hazırladığım kurs notlarını siteye ekledim. Bu eğitim verilirken Excel 97 kullanılmaktaydı. O yüzden ekran görüntüleri biraz eski kaldı. O zamandan bu zamana döküman üzerinde herhangi bir geliştirme yapmadım. Ama sanırım döküman yeni excel sürümleri ile de büyük ölçüde uyumludur. Dökümanı webe taşırken cc olarak lisansını belirledim.

Eğer zamanım ve yeterli talep de olursa ilerleyen tarihlerde yeni versiyonda hazırlanmış html bazlı yeni sürümünü hazırlayabilirim.

Tabi bunun bir de Open Office sürümünü de hazırllamak söz konusu olabilir ama belki onun için hiç zamanım olmayabilir.

Excel notlarını buradan indirebilirsiniz.

Apache çalıştırılabilinir dosya / dizin ayarı

Posted on March 6th, 2007 in Apache, Dökümanlar, İpucu by cagatay

Python cgi-bin betiklerini cgi-bin dizini dışında kodlamak ve test etmek için apache’ye aşağıdaki direktifleri vermek yeterli :


<Directory "d:/prj/web/script/">
AddHandler cgi-script .py
Options ExecCGI Indexes
</Directory>

RSYNC ile Windows makinelerin Debian/GNU Linux’a yedeklenmesi

Posted on December 15th, 2004 in Debian, Dökümanlar, Linux, Yedekle by cagatay

Uzunca bir süredir ağ içerisinde yer alan kullanıcılara ait windows makinelerinin yedeklenmesi için bir çözüm arayışı içerisindeydim. Sistemin sahip olması gereken özellikler ise şu şekilde sıralayabilirim :

  1. Yedek makinesinin yönetimi kolay olmalı
  2. Sistem ağ üzerinden çalışmalı.
  3. Yalnızca değişen dosyaları yedekleyecek kadar akıllı olmalı.
  4. Çok fazla ağ trafiğine sebep olmamalı
  5. GNU/GPL yazılımlar ile minumum maliyete sahip olmalı
  6. Son kullanıcı için kullanımı kolay olmalı
  7. Kendi başına zamanlanmış yedekler alabilmeli

Talep edilen 1-5 arası özelliklerin sağlanması bakımından rsync en uygun çözüm olarak gözüktü. 6. ve 7. özellikler içinse cygwin projesinden windows için derlenmiş rsync’e ön yüz olarak Delphi ile ufak bir program yazdım. GPL ile lisanslanan bu program ile ilgili detaylara buradan ulaşabilirsiniz.

Rsync sayesinde bir makineden diğer makineye belli bir dizin yapısını olduğu gibi aktarabiliniyor. Bu aktarımda yalnızca değişen dosyalar dikkate alındığı için ilk aktarımdan sonraki aktarımlar oldukça hızlı olabiliyor. Ayrıca düşük bağlantı hızlarında aktarımdan önce dosyaları sıkıştırma yeteneği ile zamandan kazanç sağlayabiliyor. Rsync’in zengin özellikleri ile ilgili detaylı bilgi için man rsync.

Rsyc ile iki şekilde aktarım yapılabiliyor :

  • SSH veya RSH kullanarak uzaktaki makineye bağlanarak kopyalama. Bu durumda uzak makinede rsync olup olmaması önemli olmuyor. İstemci makinede rsync olması yeterli. Ayrıca uzak bağlantı için SSH kullanıldığı durumlarda gönderilen veriler de SSH’ın kalkanı altında üçüncü gözlerden korunmuş oluyor. Yalnız bu durumda uzak makinede geçerli bir kullanıcı hesabı bulunması gerekiyor.
  • Uzak makinede rsync sunucusu kullanarak dosya transferini gerçekleştirmek. Bu yöntemde ise kaynak ve hedef makinelerde rsync olması zorunlu ve hedef makinede de rsync’ın sunucu olarak ayarlanması gerekiyor. Bunun yanı sıra yalnızca kopylama başlangıcında bir yetkilendirme kontrolü var. Onun dışında transfer edilen veriler ayrıca şifrelenmiyor. Dolayısıyla bu yöntemin kamusal alanlarda kullanımının veri güvenliği açısından sakıncalı olduğu akıllardan çıkartılmamalı. Fakat istemci makinelerde ssh ve sunucu makinede de geçerli bir kullanıcı hesabına gerek duymuyor.

Hedeflediğim yedekleme sistemi 100′den fazla windows makineye kurulacağı için, kurulumda ve yönetimde de basitlik temel hedefim olduğu için ben ikinci yöntem üzerinden yürümeye karar verdim.

Åžimdi gelelim tanımı yapılan sistemin kurulumuna :

Yedekleme Makinesinde Rsync’ın Sunucu olarak kurulması

Benim kullandığım sistem Debian olduğu için aşağıdaki kurulum yönergelerinden bazıları Debian’a özgü olabilir. Ama en azından diğer GNU/Linux sistemleri için de bir fikir vereceğine inanıyorum.

  1. apt-get install rsync
  2. rsync’in sunucu olarak çalışması için /etc/defaults/rsync dosyasındakiRSYNC_ENABLE=falsedeğerini false‘dan true‘ya çevirmek gerekiyor. Bu dosyada ayrıca rsync ayar dosyasının ismini, rsync’e ek parametreleri de verebiliyoruz
  3. Daha sonra etc altında bir rsyncd.conf ve kullanıcı şifrelerinin tutulacağı şifre dosyası oluşturmamız grekiyor. Åžifrelerin tutulacağı dosyanın adını rsyncd.conf dosyasında belirtiyoruz. Debian’da hazır olarak bir rsyncd.conf dosyası gelmiyor. Dolayısı ile root olarak bu dosyayı bizim yaratmamız gerekiyor. rsyncd.conf dosyası temel olarak iki kısımdan oluşuyor. Başlık kısmında genel parametreleri veriyoruz, modül olarak nitelenen detay kısımda ise yedekleme dizinleri, yetkili kullanıcılar ve diğer özellikler belirtiliyor. Bu sistem için örnek rsyncd.conf dosyası aşağıda :

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    hosts allow = 192.168.100.0/24
    uid = yedek
    gid = yedek
    [cagatay]
    auth users = cagatay
    comment = Cagatay Tengiz
    path = /home/yedek/cagatay
    read only = false
    write only = false
    secrets file = /etc/rsyncd.sec
    [erkan]
    auth users = erkan
    comment = Erkan Kutlumus
    path = /home/yedek/erkan
    read only = false
    write only = false
    secrets file = /etc/rsyncd.sec

    Fark ettiğiniz üzere köşeli parantez ile başlayan kısımlardan öncesi, genel parametreleri içeriyor, köşeli parantezler ile başlayan kısımlar ise modül tanımlarını. Åžimdi her satırın detaylı açıklamasını verelim :

    1. Sunucuya bağlanması izin verilen adres bloğu
    2. Sunucunun çalışacağı kullanıcı kimliği.
    3. Sunucunun çalışacağı grup kimliği.
    4. İlk modül tanımı. Modül başlıkları köşeli parantezler içerisinde veriliyor. Modüllere istediğiniz isimleri vermekte özgürsünüz.
    5. Bu modüle erişmeye hakkı olan kullanıcıların listesi. Fark ettiyseniz yukarıdaki örnek ayar dosyasında modül adı ile kullanıcı adı aynı. Aslında bu böyle olmak zorunda değil. Windows için geliştirdiğim rsync’e önyüz olan programda modül adı=kullanıcı adı varsayımını yaptığım için modül adı ile kullanıcı adı birebir aynı verildi. Åžöyle bir modül tanımı da geçerlidir :
      [anayedek]
      auth users = cagatay, erkan

    6. Modül için açıklama / yorum satırı
    7. Bu modülü kullanarak bağlananların dosyaları sunucuda yerleştirileceği dizin
    8. Yedekleme yapılabilmesi için modül salt okunabilir olmamalı
    9. Yedekten geri dosya yüklenebilmesi için modül salt yazılabilir olmamalı
    10. Modülü kullanmaya yetkili kullanıcılarının, kullanıcı paralolarının tutulduğu dosya adı
    11. ve devamı : Diğer modül tanım(lar)ı

    Daha detaylı bilgi için man rsyncd.conf.

  4. Şimdi yukarıda belirtilen parola dosyasını oluşturmamız gerekiyor. Dosyanın yapısı ise oldukça basit, Kullanıcı_Adı:Parola şeklinde. Parola dosyasını oluşturmak için ise yine root olarak aşağıdaki komutları vermemiz yeterli olacaktır.
    mct:~# echo cagatay:11 > /etc/rsyncd.sec
    mct:~# echo erkan:12 >> /etc/rsyncd.sec
    Böylelikle Çağatay’ın paralosını 11, Erkan’ın parolasını ise 12 olarak belirledik. Son olarak parola dosyasından kullanıcı ve grup haricindeki tüm yetkileri kaldırmamız gerekiyor :
    mct:~# chmod o-rwx /etc/rsyncd.sec
    Aksi takdirde rsync sunucusu güvenlik açısından dosyayı kullanmayı red ediyor ve kullanıcı yetkilendirmesi gerçekleşmiyor.
  5. rsyncd.conf dosyasında rsync’ın yedek kullanıcısı altında çalışacağını belirttik. Bu durumda sistemde bu kullanıcı yaratılmalı ve yine konfigürasyon dosyasında belirtilen dizinler yedek kullanıcısı kullanılarak yaratılmalı :
    mct:~#adduser yedek
    mct:~#su yedek
    yedek@mct:/etc$ cd ~
    yedek@mct:~$ mkdir ~/cagatay
    yedek@mct:~$ mkdir ~/erkan
  6. Son olarak artık rsync sunucumuzu başlatalım :
    mct:~# /etc/init.d/rsync start

Yukarıda bahsedilen 3., 4. ve 5. adımlardaki işlemleri yapan basit bir bash betiği ise aşağıdaki şekilde yazılabilir. :


    #!/bin/bash
    echo “[$1]
    auth_users = $1
    comment = $3
    path = /home/yedek/$1
    read only = false
    write only = false
    secrets file = /etc/rsyncd.sec” >> /etc/rsyncd.confecho $1:$2 >> /etc/rsyncd.sec
    mkdir /home/yedek/$1
    chown -R yedek.yedek /home/yedek/$1

Betiği gözde metin düzenleyicinizde yazdıktan sonra, yedek_kullanicisi_ekle.sh ismiyle kaydedip, çalışma izinlerini verin. Betik, kodundan da kolayca anlaşılabileceği gibi kullanıcı_adı parolası açıklama parametreleri ile çalışıyor :


./yedek_kullanicisi_ekle.sh cagatay 11 Test\ Kullanıcısı

Windows Makinelerde Rsync Kurulumu ve Kullanımı

rsync, windows işletim sistemlerinde cygwin projesi ile hazır derlenmiş olarak elde edilebiliyor. Rsync kullanmak için cygwin’i tam olarak kurmanıza gerek yok aşağıdaki üç dosya aynı dizinde olduğu sürece rsync’i sorunsuz bir şekilde kullanabiliyorsunuz :

  • rsync.exe
  • cygpopt-0.dll
  • cygwin1.dll

Bu üç dosyayı bu adresten sıkıştırılmış olarak elde edebilirsiniz. Yazının yazıldığı tarih (Aralık 2004) itibariye rsync 2.6.3, cygwin 1.5.12-1 sürümünde idi.

Rsync kullanımı oldukça kolay olan bir program. Yukarıda anlatılan şekilde kurulan bir yedekleme sunucusuna yedekleme yapmak için kullanılan komut dizilimi


    rsync [parametreler] [kaynak_dizin(ler) veya dosya(lar)] [kullanıcı@hedef_makina::modul/]

şeklinde. Komutun dizilimini ve parametrelerini, gerçek hayatta uygulanabilecek bir örnek ile açıklamaya çalışırsak :

    1. -v(erbose) : Açıklayıcı ol. vv daha açıklayıcı ol. vvv : daha da açıklayıcı ol.
      -r(ecursive) : Alt dizinlerin içine dal.
      -t(ime) : Dosyaların gerçek zamanlarını yedeklerde koru.
      -R(elative) : Dosyaların dizin yapısını koru.
      –delete : Kaynakta olmayan dosyaları ve dizinleri hedefte de sil.
      –progress : Dosya aktarımı sırasında süreç detayını ver. Yukarıda kullanılmayan ama faydalı olabilecek bir iki parametre de :
      -z : Dosyaları aktarmadan önce sıkıştır. Düşük bağlantı hızları için ideal
      –exclude : Aktarılmayacak dosyaların belirtilmesinde kullanılabilir. Örneğin --exclude "*.mp3"Burada bahsedilmeyen daha birçok parametre için tabii ki man rsync.
    2. C: sürücüsündeki prj dizinin yedeği alınacak. Görüldüğü üzere dizin yapısı linux dizin yapısı şeklinde veriliyor. Ters bölü (\) yerine düz bölü (/) ve sürücü tanımlama için de iki nokta üst üstüste (:) yerine /cygdrive/c/ dizisi. Bu durumda D: sürücüsü altındaki bir dizinden yedek almak için de "/cygdrive/d/bir dizin" yazılmalı. Kaynak dizin belirtilirken dizin ifadesini örnekte olduğu gibi çift tırnak içine almakta fayda var. Böylelikle boşluk ve varsa özel karakterleri \ işareti ile ayrıca belirtmek zorunda kalmazsınız.
    3. Kullanıcı adı ve modüller yukarıda tanımladığımız rsyncd.conf dosyasından geliyor. Modülden sonra istenirse ek dizin tanımı da yapılabilir.
  • 1 2 3
    rsync.exe -vrtR --delete --progress "/cygdrive/c/prj/" cagatay@192.168.100.15::cagatay/

Komutu çalıştırdığınızda, rsync sunucucuya bağlanmak için gerekli parolayı komut satırından isteyecektir. Komut satırından girmek dışında iki yöntem ile de parola girişi gerçekleştirilebilir :

  1. Dos ortam değişkeni tanımlanarak :
    c:\>set RSYNC_PASSWORD=parola
  2. Düz metin dosyasından okutarak :
    c:>rsync --pasword-file=“c:\sifre.txt” ….

Sunucudaki dosyaların listesini almak için rsync’i tek dizin girişi ile çalıştırmalısınız :


    C:\>rsync.exe -r cagatay@192.168.100.15::cagatay/

Tüm bu işlemleri komut satırı yerine görsel arabirimden yapmak istediğim ve de yerel ağdaki diğer tüm makinelerin yedeklerinin kolayca alınabilmesi, yönetilebilinmesi için rsync’e ön yüz olan bir program yazdım. GPL lisansı ile dağıtılan bu programın kurulum dosyasına, kaynak kodlarına, ekran görüntülerine vs. http://www.tengiz.net/projeler/yedekle/ adresinden ulaşabilirsiniz. Program temel olarak yukarıda anlatılan kurulum ayarlarına uygun olarak çalışıyor.

Rss Nasıl

Posted on November 25th, 2004 in Dökümanlar by cagatay

RSS Dosyası Yapısı

RSS aslında sitelerin içeriklerini başlıklar şeklinde sunmak için kullanılan bir teknoji ve temeli de bir XML dosyası. Açılımı Rich Site Summary veya Really Simple Syndication. İlk olarak 1999 Netscape tarafından ortaya çıkarılan bu teknoloji daha sonra çeşitli gruplar tarafından geliştirildi. Tarihçe ve versiyonlar ile daha detaylı bilgi için yazının sonundaki kaynaklara başvurulabilinir.

Benim burada ele alacağım RSS sürümü 0.91. Yani en temel ve en basit sürüm. Dosyanın genel yapısı aşağıdaki şekilde oluşturulmalı :

  1. XML giriş açıklayıcı kısmı
  2. RSS sürümünün belirtildiği kısım
  3. RSS’in ait olduğu siteye ait açıklayıcı bilgi ksımı
  4. Ve en nihayetinde konular



<?xml version=”1.0″ encoding=”ISO-8859-9″ ?>
<!DOCTYPE rss PUBLIC “-//Netscape Communications//DTD RSS 0.91//EN” “http://my.netscape.com/publish/formats/rss-0.91.dtd”>

<rss version=”0.91″>
<channel>
<title>

Sitenin Başlığı Buraya Yazılmalı. En fazla 100 karakter olabilir.
</title>

<link>
http://www.sitenin.adresi.
</link>

<description>
Siteyle ilgili kısa açıklama burada yer almalı. HTML vb kodlar içermemeli.
</description>

<language>
RSS’in yayınlandığı dil kodu. Örneğin Türkçe için tr, ingilizce için en girilmeli
</language>

<item>
<title>
Sunulan içeriğin başlığı. En fazla 100 karakter
</title>

<link>
http://içeriğin.gercek.adresi Mutlaka http:// veya ftp:// ile başlamalı ve en fazla 100 karakter olabilir
</link>

<description>
İçeriğe ait özet veya açıklama. En fazla 500 karakter olabilir. Ve HTML kodu içermemeli.
</description>
</item>

<item>
<title>
Sunulan diğer içeriğin başlığı
</title>

<link>
http://diğer.içeriğin.gercek.adresi
</link>

<description>
İçerik özeti
</description>

</item>
</channel>
</rss>
RSS 0.91 sürümünde dosyada en fazla 15 konu başlığına izin verilmekte. Ve yine fark ettiyseniz 100 veya 500 karakterlik kıstlamalar mevcut. Bu kısıtlar RSS 0.92 sürümünde bulunmamakta. RSS 2.0 da ise daha fazla açıklayıcı etiket kullanmak mümkün.

Peki RSS’den haberdar uygulamalara (Örneğin Firefox browser veya arama motorları) sitemizde RSS desteği verdiğimizi nasıl belirteceğiz? Bunun için html dosyasının <head> kısmına aşağıdaki satır eklenmeli :


<link rel="alternate" type="application/rss+xml" title="RSS" href="http://rss.dosyasının.adresi" />

Yararlanılan kaynaklar :

Ayrıca Webrefence RSS bölümünden RSS ile ilgili bir çok kaynağa ulaşılabilir.