git gel nereye kadar

Aslında yazıya doğrudan teslimatları e-posta ile nasıl alırız diye başlayacaktım, lakin önce bir depo oluşturalım dedim. Depo oluşturmak için ben yine daha önceki yazımdaki gibi fonksiyon oluşturmayı tercih ediyorum.

newgit()
{
	if [ -z $1 ]; then
		echo "usage: $FUNCNAME project-name.git"
	else
		gitdir="/home/$USER/git/$1"
		mkdir $gitdir
		pushd $gitdir
		git --bare init
		git --bare update-server-info
		mv hooks/post-update.sample hooks/post-update
		chmod a+x hooks/post-update
		touch git-daemon-export-ok
		popd
	fi
}

Böylelikle newgit depoismi şeklinde depo oluşturmak mümkün oluyor. Daha spesifik işlemler(ACL vs.) için, gitosis kullanmanız gerekebilir.
Neyse gelelim her teslimatın belirttiğimiz e-posta listesine veya kullanıcıya gönderilmesi için ne yapılabilir. Git kurulumunda öntanımlı olarak bu teslimatları e-posta ile gönderen “hook”, “hooks” dizini yerine git paketi ile birlikte gelen doc klasöründe bulunur. Arch Linux’da doc dizinleri silindiği için buradan gerekli “hook”a ulaşabilirsiniz. Farklı bir dağıtımda doc dizini silinmediyse, “/usr/share/doc/git-core/contrib/hooks/post-receive-email” dosyasını ister hooks/post-receive dosyasına sembolik bağ ile bağlayabilir, isterseniz doğrudan dosyayı kopyalayabilirsiniz. Tabii her iki durumda da dosyayı çalıştırılabilir yapmayı unutmamak kaydıyla.

ln -s /usr/share/doc/git-core/contrib/hooks/post-receive-email $PATH_TO_GIT_REPO/hooks/post-receive

Ardından, depo içerisindeki config dosyasına şu satırları ekleyin:

[hooks]
        mailinglist = dev-commits@archlinuxtr.org
        announcelist =
        envelopesender = commitbot@archlinuxtr.org
        emailprefix = [projects]

Arif olan zaten bu satırların anlamını bilir, açıklama gerek yok Smile

Eğer e-posta başlıklarında UNNAMED project yazıyorsa, deponuzdaki description dosyasını düzenlemeniz gerekmektedir. Unutmayın Wink.
Örnek kullanım: burada.

çeviri ipuçları

Gettext (po) ile çeviri yaparken işinize yarayabilecek çeşitli ipuçları ile karşınızdayım efendim.

Evvela, çevirmenlerin korkulu rüyası, sıralama sorununa kalıcı bir çözüm getirelim. Malum İngilizce cümle yapısı ile Türkçe yapısı tamamen farklı olduğu için bazı durumlarda, devrik cümleler ile karşılaşabiliyoruz. Ancak devrik cümle yerine, değişkenleri sıra ile kullanabilmek mümkün. Misal:

There's only %s mb free space left on drive %s

ilk bakışta cümleye nasıl dalsam diye düşünüyor insan. Sonuçta %s değişkenlerinin yanlış kullanımı sonunda, bir karışıklık durumu söz konusu olabilir ve neticede üzücü olabilir. Ya da dalga konusu da olabilirsiniz. Gelelim, böyle bir durumda ne yapabileceğimize. Ecnebinin “order switching” dediği, güzel Türkçe’mizde ise “sıra değişimi” olarak geçen kavramı kullanabiliriz bu konuda. Şöyle ki:

%2$s diski üzerinde %1$s MB boş yer kaldı.

Gettext’in bize sunduğu bu nimet sayesinde, %s değişkenlerini sırası dahilinde istediğimiz düzene koyabiliyoruz. Ne kadar değişken (n tane diyelim) varsa %n şeklinde kullanmak mümkün yani. Yani esas cümledeki %s değişkeninin sırasını belirtmek suretiyle, cümleyi devrik bir hale getirmekten kaçınabiliyoruz.

Gelelim diğer bir ipucuna. Diyelim ki elinizde eski bir tr.po dosyası var ve güncellenmemiş. Pot (şablon) dosyasındaki dizgileri tek tek .po dosyamıza eklemektense, msgmerge aracını kullanarak, şablonda bulunup bizde bulunmayan cümleleri dil dosyamıza rahatça ekleyebiliyoruz:

msgmerge eski.po güncel.po > yeni.po

Komutu ile değişiklikleri ve eklenecek cümleleri otomatik ekleyebilirsiniz.

Bir de klavye kısayolları (menü accelerator) sorununa değinelim. Çok sayıda accelerator kullandık, kafamız allak bullak oldu, bunları doğru mu yaptık acaba? Nitekim birden fazla kısayol tanımlamış olabiliriz. Bunları test etmek için:

msgfmt --check --check-accelerators=_ -o /dev/null dosya.po

Bu komut farklı öğelere aynı kısayol atanmışsa sizi uyaracaktır. Böylece daha sağlıklı bir çeviri yapabilirsiniz.

Bir ipucu da Anıl Özbek‘ten geldi:
TS çeviri dosyalarını yerelleştirmek için Linguist kullanabilir. Eğer çeviri yapabileceğiniz bir şablon dosya yoksa, diğer diller için yapılmış yerelleştirmelerden bir şablon üretebilirsiniz. Örneğin aşağıdaki komutla var olan Almanca yerelleştirmeden sıfır (çeviri olan) bir Türkçe yerelleştirme dosyası üretilebilir:

lconvert –drop-translations yazılım_ismi_de.ts -o yazılım_ismi_tr.ts

Tabii, bunları öğrenmekle kalmayın, çeviri yapmak dile ve millete hizmet etmektir Wink.

GNU/Linux altında Usenet’ten faydalanmak – son

Aslında 3 yazı ile kullanılabilecek istemcileri tanıtmıştım ancak, bazı hususlar gözümden kaçmış. Yazıları da onlara göre değiştirdim.

LottaNZB Türkçe yereli ile patlıyor demiştim ki; geliştiricilerinden biri bana yorum yazana kadar patlıyordu. Kendisi ile ufak bir e-posta trafiği yaşadıktan sonra soruna hızlıca bir çözüm getirdi. Malum Türkçe yerelinde uppercase – lowercase sorunu olduğu için, uygulama bundan ekleniyordu. LottaNZB geliştiricisi Severin Heiniger sorunun basit olduğunu ve kolayca çözülebileceğini söyledikten sonra, bana uygun yamayı gönderdi. (Thank you for the locale fix Big Smile Ayrıca gaza getirip Türkçe çeviri istedi ki, Türkçe çeviriyi launchpad üzerinden hallettim bile.

Sürekli kullandığım için ve anlaşılır bir uygulama olması için, birebir çeviri yerine anlamsal çeviri üzerinde yoğunlaştım, hiç bilgisi olmayan biri bile kolayca kullanabilir artık. Sitesine girememe sorunu ise ISS’in Türkiye’den gelen istekleri reddetmesi gibi görünüyor. Traceroute çektiğimde bunu farkettim.

Gelelim ikinci değişikliğe, nntpgrab’i övdüm durdum da, indirdiği RAR dosyalarını aç(a)maması benim için büyük bir sorun teşkil etti. Bu da buraya not olarak düşsün.

öeeeh-fatura

Eeeeeeeeeeeehhh-devlet ya da kısaca e-devlet olarak tabir ettiğimiz, bürokrasi merdivenlerini azaltmaya yönelik olsa da teknoloji ile zihniyetin uyuşmaması nedeniyle çoğu alanda fiyasko oluşturan olgunun azizliğine uğradım bugün.

Faturamı zamanında yatırmadığım için hattı kapamak yerine sürekli e-fatura sitesine yönlendiriliyor(d)um. Tamam bu güzel ve hoş bir hatırlatma gibi görülebilir. Dün gece, malum faturayı o saatte yatıramayacağım için girip faturalarımı inceledim. Site gayet güzel açılıyordu, SSS bölümü falan var, lakin SSS’de niye “sürekli bu sayfayı görüyorum lan ben” sorusunun cevabını bulamadığım için fazla da karıştırmadım. Lakin Firefox ile düzgün açılıyor, o bakımdan şaşırdım demeyim, zira TTNET’in Firefox ile uyumlu tasarımları olduğunu biliyoruz. Gerçi hatalara falan bakmıyorum en azından görmem gereken içeriği görebiliyorum. Başka devlet sitelerinde bu hassasiyeti göremiyoruz tabii.

Neyse işin zulüm olan yanından bahsedeyim. Gece dikkatli bakamadığım ve açıkçası borcumdan dolayı kapandığını anlamadığım için gündüz sınav dönüşü tekrar bakayım dedim. Lakin ne hikmetse aklı evvelin biri o sayfaya google analytics istatistiklerini almak için kod yerleştirmiş. E fatura sitesinden başka bir yere ulaşmak mümkün olmadığı için sürekli analytics sayfasına çağrı yapılıyor ve sonunda timeout verip, ne fatura sitesi gösteriyor ne de bir bilgi veriliyor. Dolayısıyla durumu bilmeyen biri için ne olduğunu kestirmek çok zor olabilir. Neyse, hatırlatmakta fayda var. ADSL hattınız borcundan dolayı kapanırsa, Adblock gibi birşey ile google analytics’i engelleyip normal bir şekilde e-fatura sitesine girebilirsiniz.

Tabii e-imza konusunda gösterdiği hassasiyet dolayısıyla TTNET’i takdir etmek gerek. Ancak teknoloji ile zihniyeti birbirine karıştıran uygulamalardan vazgeçmesi (bkz: yukarıdaki olay, işine gelmeyen siteye IP yasaklama, işine gelen siteye sadece alan adı sorgularını bloklama gibi) gerek. Engellemenin nasıl yapıldığını eleştiriyorum tabii, engellemenin yapılması kararını mahkemeler verdiği için o konuda yorum yapmak istemiyorum. Ancak o konuda da Yargıtay’ın biraz doktrin incelemesi, cezaların şahsiliği doğrultusunda (bkz: Ceza sorumluluğu şahsîdir. Kimse başkasının fiilinden dolayı sorumlu tutulamaz.) ortaya site kapatmalar konusunda düzgün bir içtihat oluşturması gerektiğine inanıyorum. Hatta bilişim suçları ile mücadele yasalarının Anayasa ile çelişen kısımları göz önüne alındığında, hak ve özgürlüklükleri derinden sarsan bu durumun kişi hak ve özgürlüklerine lehine tekrar düzenlenmesi gerekir.

itinayla spam yapılır

Bu aralar beklediğimden fazla yorum geliyor. Tabii yorum gelince, düstur gereği yorumları önce okuyup sonra içeriğine göre onaylıyorum. Sıkıntı da burada başlıyor. Son günlerde yüksek oranda, Türkçe içerikli olmakla birlikte bir çok spamin geldiğine şahit oldum.
Bu tür spamler özellikle, yazılarınızı çok beğeniyorum, takip ediyorum. Ben de X kullanıcısıyım aynı dertten muzdaribiz tarzı anlam ifade eden yorumlar olsa da, gönderen kimliği, site, e-posta vs. bilgilerini kontrol ettiğimde bu yorumların bariz spam olduğu anlaşılıyor. (Abidik gubidik forum sitelerine, cinsel -ne cinseli düpedüz porno- içerikli sitelere verilmiş linkler)

Spamle mücadele için akismet yeterliydi ama sanırım akismet de çözüm getiremiyor bu soruna. Aslında bu bir sorun mu onu da bilmiyorum, benzer durumlarla karşılaşan var mı merak ediyorum.

Ayrıca spam yapanlara da sevgilerimi gönderiyorum, şu spam işine de Türkçeyi alet ettiler ya; artık ölsem de gam yemem açıkçası. Bu tür saldırılar (amacı da bir öğrensem aslında) yüzünden yakında internet bizim için Türkiye içerisinde bir LAN’dan farklı olmayacak gibi. Giremediğim çoğu siteye proxy yardımıyla girince ister istemez böyle düşünmekte haklı olduğuma kanaat getiriyorum.

Ayrıca şu forum çılgınlığı bitsin lütfen.

GNU/Linux altında Usenet’ten faydalanmak (3)

Efendim, malum hürriyet, milliyet, zilliyet, zürriyet gibi yazı dizisi tadında ilk defa yazdığım için arka arkaya sıralıyorum yazıları. Usenetin ne olduğunu ve ne olmadığını, hellanzb ve nntgrab uygulamalarını tanıdıktan sonra sıra geldi LottaNZB uygulamasına.

LottaNZB’yi çekebilmek için öncelikle büyük bir azim gerekiyor; zira ne hikmetse, lottanzb.org sitesine Türkiye’den erişim yapılamıyor. Buna nasıl anladığıma gelince, ssh tunnel yardımıyla proxy kullanıp lottanzb.org sitesine gir(ebil)mem yeterli oldu. Aslında yadırgamamak lazım lottanzb.org sitesi joomla kullanıyor ve malum bizim kekırlar(bkz. lamer) joomla sitelerine saldırmayı pek sevdikleri için, Türkiye IP bloklarına komple bir yasaklama çekilmiş izlenimi edindim.

Nitelik olarak LottaNZB aslında hellanzb’ye PyGTK kullanılarak yazılmış bir arayüz. Hellanzb’yi daemon kipinde kullandığımız için, LottaNZB ile de bu hellanzb’yi kontrol etmek mümkün oluyor.
Ayrıca, standalone olarak da ve dolayısıyla hellanzb’den bağımsız olarak da kullanılabiliyor.

3 farklı kullanım kipini sunan uygulama, sırasıyla şu kipleri kullanabiliyor:
1. Standalone
2. Hellanzb arayüzü
3. Uzaktaki bir hellanzb sunucusuna arayüz

Standalone olarak, nttpgrab’den farkı, arkaplanda hellanzb’yi çalıştırması. Dolayısıyla tam anlamda bir standalone kullanım sunduğu söylenemez.

İkinci seçenek olan hellanzb arayüzü ise, önceden ayarlanmış ve çalışan hellanzb daemon için kullanılmaktadır. Eğer hellanzb daemon kipinde çalışıyorsa lottanzb açılışta bunu algılayacak ve ona göre davranacaktır. Dolayısıyla bu tür kullanımda hellanzb’nin daemon kipinde çalıştığını bilmeniz, bilmiyorsanız ise, hellanzb’yi daemon kipinde çalıştırmanız gerekmektedir. Bu türlü kullanımda, Ekle’ye tıklayarak bir NZB dosyası seçmeniz, hellanzb’nin o dosyayı otomatik olarak indirmesini sağlayacaktır. Ayrıca kendisi de süreci göstermektedir.

Üçüncü seçenekteki uzaktaki (remote) hellanzb sunucusuna arayüz kipinde ise, başka bir bilgisayardaki hellanzb’yi kontrol etmek mümkün olmaktadır. Dolayısıyla eğer indirme işlemlerinizi başka bir bilgisayarda yapıyorsanız ve hellanzb kullanıyorsanız bu kip tam size göre!

LottaNZB de tıpkı hellanzb gibi, Türkçe yereli ile patlayan uygulamalar arasında yer alıyor. Dolayısıyla, çalışmadığı zaman panik yapmanıza gerek yok. Eğer Türkçe yereli kullanıyorsanız “LANG=C lottanzb” komutu ile çalıştırabilirsiniz.

Konsol ile aşina olmayıp hellanzb kullanmak isteyen kullanıcılar için güzel bir seçenek olarak kullanılabilir. Tabii, her halükarda hellanzb.conf dosyasını yapılandırmak zorundasınız. Aksi takdirde lottanzb çalışmayacaktır.

Geldik böylece yazı dizimizin sonuna. Toplam 3 yazıda Linux’da rahatlıkla (kesinlikle rahat, bu lafımın arkasında duruyorum) Usenet nasıl kullanılır görmüş olduk. Usenet için sunucu arayanlara giganews, newsdemon, astraweb ve ngroups’u önerebilirim. Özellikle giganews ve newsdemon yüksek retention (hatırlama) oranıyla (200-220 gün arası) tercih edilebilecek cinsten. Diğer iki servis sağlayıcı ise cazip kampanyalarla kullanıcıyı cezbediyor. Tabii takdir sizlere kalmış, hangisini kullanacağınıza siz karar vereceksiniz. Ancak naçizane tavsiyem, yüksek hatırlama oranına sahip servis sağlayıcıları tercih etmeniz olacaktır.

Ayrıca, lütfen yorumlarda indeks sitelerine ve farklı nzb kaynaklarına dair yorumda bulunmayınız. Hele davetiye hiç istemeyiniz. Bu konuda katıyım ve kalp kırıcı yorumlarda bulunabilirim. Burası bir warez site değil, bu böyle biline!

GNU/Linux altında Usenet’ten faydalanmak (2)

Serinin ikinci yazısında, diğer favori uygulamam NNTPGrab’den bahsetmek istiyorum. Malum herkes konsol kullanmak istemeyebilir. Konsolu anlamsız da bulabilirsiniz X ortamında çalışmak varken.

Böyle durumlarda ilk alternatifiniz, nntpgrab olsun derim; çünkü kullanımı ve arabirimi en deneyimsiz insanın bile anlayabileceği derecede kolay.
Tıpkı hellanzb gibi, nntpgrab’de sunucu ve istemci kipinde çalışabiliyor. Sunucu derken, uzaktan kontrol amaçlı olduğunu belirtmek isterim, yani bir nntp sunucusu kurmuyorsunuz Wink.

Uzaktan erişim için kullanmayacağınızı varsayarak, standalone tarzı çalıştıracağınızı düşünerek, standalone kullanım konusunda bilgilendirmeye çalışmak istiyorum. NNTPGrab uygulamasını kurduğunuzda, menüye gelecek (muhtemelen Ağ menüsüne gelir, Xfce ve GNOME’da o şekilde, KDE’de de öyle olması lazım emin değilim) olan 3 uygulamayı görebilirsiniz.
Bunlar, NNTPGrab Server, NNTPGrab (Standalone) ve NNTPGrab (Networked) olmak üzere karşımıza çıkıyor.
NNTPGrab Server tıpkı hellanzb’yi servis gibi çalıştırıp, uzaktan çalıştırmayı sağlamaya yönelik. Standalone ise, tahmin edebileceğiniz gibi, direk interaktif olarak programı kullanmaya yönelik. Networked ise, ağ üzerinden kullanımı sağlayan ayrı bir alternatif olarak karşımıza çıkıyor.

NNTPGrab’e web arayüzü için beyin fırtınası yapıldığını da ayrıca belirteyim bu arada.
Gelelim başta da değindiğim gibi, standalone kullanıma. Bu kullanımda yapmanız gereken sadece 2 iş var, bunlar sırasıyla:
1. Configuration sekmesinde sunucunuzu tanımlamak
2. Import NZB’ye tıklayarak NZB’yi seçip dosya indirmeye başlamak.

Bu kadar, bundan sonrası tıpkı ilk yazıda belirttiğim gibi ineği sokup, sosis olarak çıkmasını beklemek. Hellanzb gibi bu uygulama da dosyaları indirip, birleştirip, rar dosyalarını açıp, kullanıma hazır hale getirmek bakımından mükemmel bir kullanışlılık sunuyor.

GUI olduğu için teknik özelliklere fazla girmiyorum, nasıl hesap ekleyeceğimizi görelim:
hesap eklemek

Configuration sekmesinde, ilk sırada yer alan Servers kısmından Add denilerek yukarıdakine benzer şekilde gerekli alanlar doldurulduktan sonra işlem tamamdır. Eğer Usenet hizmeti aldığınız yer SSL desteği de veriyorsa, SSL’yi işaretleyip, SSL için gerekli portu yazabilirsiniz.

Hesap ayarlarınızı tamamladıktan sonra, önceden indirmiş olduğunuz NZB dosyasını, Import NZB’ye tıklayarak, NZB’yi göstererek indirmeye başlayabilirsiniz.
nzb eklemek

Gördüğünüz üzere, nzb dosyasını içe aktardıktan sonra (import yani) istediğiniz dosyaları seçme şansı da veriyor size. İlk defa ekleyeceğiniz bir dosya olacağı için bütün dosyaları seçin (ki öntanımlı hepsi seçilidir) ve ardından Ekle’ye basın. Daha sonra indirme işlemini arkanıza yaslanarak izleyebilirsiniz.

Menüdeki “Download folders” seçeneği ise, indirilen verinin nereye taşınacağını belirtmek amaçlıdır. Yani film indirdiniz diyelim, o film indirme işlemi bittiğinde nereye kopyalanacağını belirliyorsunuz. İndirme işlemi sırasında dosyalar geçici bir dizinde barındırılır. (~/NNTPGrab/Temp). Daha sonra bu dosyalar rar arşivinden çıkarılıp, eğer değiştirmediyseniz, ~/NNTPGrab/Downloads dizinine kopyalanır. (Bilmeyenler için, ~/ kavramı = /home/kullanıcı_adı)

Notifications seçeneği, notification-daemon yardımıyla NNTPGrab’in anlık mesajları pop-up pencereler halinde göstermesini sağlar. İndirme işlemi bittiğinde veya arşivden dosyalar ayıklandığında bildirim görmek istiyorsanız, bu kısımdaki seçenekleri kullanabilirsiniz.

PAR2 handling’e gelince, PAR2 nedir ondan bahsetmek gerekir öncelikle. Usenet’te dosyalar dağınık durduğu için bu dosyalarda tamir edilebilmesi mümkün hatalar oluşabilir. Eksiklikler, bozuk dosyalar vs. gibi durumlarda PAR2 devreye girerek bu dosyaları tamir eder. Genellikle başarılı olur. Başarısız olduğunda ise zaten hata alırsınız ve o NZB’den ümidi kesme zamanının geldiğini anlarsınız. NNTPGrab hemen hemen her dağıtımda bulunan (ki bağımlılık zaten) par2 aracını kullanarak dosya tamir işini gerçekleştirebilir. Aynı durumun hellanzb için de geçerli olduğunu unutmayalım bu arada. Dolayısıyla bu menüden par2 tamir işine dair ayarı yapabilirsiniz. (Zaten 1 tane ayar var Wink)

Display settingsde ise görünüm ayarları bulunmaktadır. Durum göstergesi, dosya boyutu, dosya adı vs. gibi değerlerin görünüp görünmeyeceğine bu menüden karar verebilirsiniz.

Automatic NZB Import ise hellanzb’de anlattığım gibi işi otomatiğe bağlamak için kullanılmaktadır. Yani bir dizine, nzb dosyalarını koyduktan sonra bunların otomatik olarak indirilmeye başlanmasını sağlamak için kullanılır.

Bunun dışında NZB creator gibi güzel bir özelliği de NNTPGrab’i hoş kılan diğer bir husus. Burada arama yapmanızı sağlıyor. Ancak yine de güvenirlilik (güvenlik değil) bakımından bir nzb indeks sitesinden yararlanarak nzb dosyası edinmeniz daha doğru olacaktır.

Böylece NNTPGrab’i de incelemiş olduk. Ben şahsen daha çok konsol kullandığım için hellanzb’yi tercih ediyorum. Ancak hellanzb’ye kıyasla daha sık sürüm çıkarması (ki hellanzb en son kararlı sürümü 2007′de çıkarmış) bakımından tercih edilebilir bir uygulama. Ayrıca uygulamanın Windows ve Mac OS üzerinde de çalışabildiğini ayrıca belirteyim.
Kısacası, konsol ile uğraşmayı sevmeyen kullanıcılar için bu uygulama tam bir biçilmiş kaftan. Hellanzb’ye nazaran tek eksiği, nzb indeks sitelerinden otomatik nzb çekememesi ki bunca özelliğin arasında bunun bir önemi de kalmıyor açıkçası.

Yazı dizisine LottaNZB ile devam etmek üzere, hoşça kalın, esen kalın.

GNU/Linux altında Usenet’ten faydalanmak

Malum sınav zamanı olduğu için pek fazla bilgisayar kullanmak istemiyorum, lakin ufak tefek işlerim için bilgisayarımın açık kalması gerektiğini göz önünde bulundurarak, açık kaldığı sürede boş durmaması için sürekli download yapıyorum sınavlardan sonra izlemek için.

Günümüzde p2p yöntemleri oldukça çeşitli olduğu için her nimetten yararlanmak için de elimden geleni yapıyorum. Telekom’un bana vermiş olduğu kısıtlı upload hızı nedeniyle de p2p’den leecher olarak faydalanan çoğu insandan biriyim de Wink. Rapidshare’dan nefret ettiğim kadar, Bittorrent ve Usenet’i seven bir insanım. Torrent hakkında pek fazla yazılıp çizildiği için torrent konusuna değinmek istemiyorum. Doğrudan Usenet’ten bahsedeyim. Ha tabii ki bu yazı illegal bir bilgi paylaşmıyor, bu yazı sonunda yapacağınız işin illegal olduğunu benim gibi siz de biliyorsunuz. Nitekim, indirdiğiniz filmler, albümler telif haklarını ihlal etmekte.

Neyse, söze evvela usenetin ne olduğunu ne amaçla kullanıldığını, amacından nasıl saptırılabildiğini söylemekle başlayalım. Bu adreste arkadaşımızın yanlış anladığı gibi bir şey değildir usenet.
En temel anlamıyla
“Usenet internetin en eski paylaşım şeklidir. Aynen bir newsgroup gibi çalışır. Binlerce oda vardır ve insanlar dilerse karşılıklı sohbet şeklinde dilerse de dosya yollama şeklinde paylaşılır. Bu paylaşım sansürlenemez ve engellenemez.” [1]

Yani Usenet’i hem tartışmaları okumak, hem de dosya çekmek için kullanabilirsiniz. Herhangi bir news okuyucu (ki e-posta programlarınızın çoğu news protokolünü kullanabilir) ile usenet’teki tartışmaları okumak mümkündür. Lakin, dosya çekmek konusunda biraz paraya kıyıp dosyaları barındıran bir Usenet hizmet sağlayıcıdan hesap edinmeniz gerekiyor. Bu konuda retention değeri yüksek sunucuları tavsiye ederim. (200 gün ve üstü sağlayanları tercih edin).

Hesap edindikten sonra ise, gerek Usenet servis sağlayıcıdan gerekse bu indeksleme yapan bir siteden (site adı vermiyorum) indirmek istediğiniz materyale has NZB dosyalarını indirin. Bu NZB dosyalarını bir .torrent dosyası gibi düşünebilirsiniz. Nitelik olarak pek farkı yok, NZB dosyası istemcinize (birazdan değineceğim) hangi dosyaların çekileceğini gösteren bir dosya niteliğindedir. Dolayısıyla Usenet’ten film, müzik vs. indirmek için, bu NZB dosyalarına ihtiyacınız olacak.

Gelelim istemcilere, ki başlıkla asıl alakalı olan konu bu idi. Bir Windows kullanıcısının 2-3 farklı programla yapabildiği bir Usenet download işini, Linux’da denediğim bütün istemciler tek uygulama ile yapmakta.
Read the rest of this entry »

ck4up – paketçinin kara gün dostu

Kullandığınız dağıtıma katkıda bulunmaya başladığınızda hiç şüphesiz ilk işiniz paket yapma çalışmalarına başlamak oluyor. Tabii her şey paketi yapıp ortaya çıkarmakla bitmiyor. Her şeyin çabucak değiştiğini göz önünde bulundurduğunuzda, paketlerinizin güncellenmesi gerektiği gerçeği ile yüz yüze kalmak gerçeğini de unutmamalısınız. Sonuçta çakma da olsa gerçek de olsa, geliştirici olduğunuzda bakımını üstlenmeniz gereken bir çok pakete sahip olabiliyorsunuz.

Gelelim ck4up nedir? ck4up CRUX geliştiricileri tarafından yazılmış olan ve bir paketin yeni sürümünün çıkıp çıkmadığını md5 kontrolü ile yapan bir araç. Yapılandırma dosyasında verilen direktifler doğrultusunda kendine has bir veritabanı oluşturup, kendi veritabanındaki md5sumları ile sitedekini karşılaştırarak, bir değişiklik olduğunda sizi uyarmasıyla gönüllerde taht kuruyor.

Peki nasıl kullanılıyor? Çok basit, ev dizininizde bir .ck4up dizini oluşturup, içerisine ck4up.conf dosyası yazdıktan sonra yapmanız gereken tek şey, ck4up komutunu vermek. Tabii önemli olan ck4up’ın yapılandırma dosyasını anlamaya çalışmak olacaktır. man ck4up diyerek detaylı anlatıma ulaşabilirsiniz. Bu konuda kendi yapılandırma dosyamdan yola çıkarak örneklerle açıklamaya çalışayım:

 # Define TAR.bz2, gz2 
@GZ@      @NAME@-*?\.[bg]z2?
@ZIP@     @NAME@.*?\.zip?
@OXT@     @NAME@-.*?\.oxt?
@TARBALL@     @NAME@-.*?\.tar\.[bg]z2?
@GC@      http://code.google.com/p/
@SF@      http://sourceforge.net/project/showfiles.php?group_id=
@PI@    &package_id=
#Freshmeat package check
@FM_url@  http://freshmeat.net/projects-xml/@NAME@/@NAME@.xml
@FM_reg@  <latest_release_version>.*</latest_release_version>
@FM@      @FM_url@ @FM_reg@
# Gnu Projects 
@GNU@     http://ftp.gnu.org/gnu/@NAME@   @TAR@
 
zemberek-server md5 @GC@zemberek/downloads/list @TARBALL@
mozzemberek md5 @GC@zemberek/downloads/list @TARBALL@
zpspell md5 http://cekirdek.pardus.org.tr/~baris/@NAME@/ @TARBALL@
maradns md5 http://www.maradns.org/download.html @TARBALL@
zemberek-ooo md5 @GC@zemberek/downloads/list @OXT@
zemberek md5 @GC@zemberek/downloads/list @ZIP@
boncuk md5 @SF@200295@PI@244230 @TARBALL@
musicy md5 @SF@250252@PI@305817 @ZIP@

@TARBALL@,@ZIP@, @OXT@ ve @GZ@ tahmin edebileceğiniz üzere, dosya uzantılarını tavsiye ediyor. Yanlarındaki değerlerde, paketismi-sürüm.uzantı şeklindeki bir regexp’i ifade ediyor. Dolayısıyla çok iyi regexp biliyorsanız, ck4up sizin için çocuk oyuncağı olacaktır.

@GC@ değeri ise, googlecode sitesindeki projeler için bir kısaltma, uzun uzadıya url yazmaktansa, url’nin belirli bir kısmına kadar olan kısmı değişken ile tanımlayabilirsiniz ki, zemberek ile ilgili satırlarda bunu görebilirsiniz. Aynı mevzu, @SF@ değişkeni için de geçerli. Yalnız sourceforge biraz katı, sizi engelleyebiliyor md5 kontrolü sırasında, bu yüzden çok sık ck4up yapmaktan kaçının. (Günde 1 defa yeterli hatta)

Tabii sadece dosya uzantılarına göre de regexp tanımlamak zorunda değilsiniz, @TARBALL@ yazan yerde mesela, onun yerine uygun gördüğünüz bir regexp tanımlayabilirsiniz. Misal;
apache md5 http://www.apache.de/dist/httpd/ httpd-2[0-9.]*

Ayrıca, meta bir siteden yararlanabilirsiniz. Mesela yapılandırma dosyasındaki @FM@, freshmeat üzerinden istediğiniz paketin takibini yapmak için kullanılmaktadır. Dolayısıyla, freshmeat.net üzerinden güncellemesi duyurulan paketi freshmeat.net’i sorgulayarak güncellemelere karşı kontrol altında tutabilirsiniz.
Ayrıca genel bir değişken olan @NAME@ değerini de kullanabilirsiniz. Mesela zemberek paketini ele alalım, http://code.google.com/p/zemberek olan adresi, zemberek md5 code.google.com/p/@NAME@ şeklinde de tanımlayabilirsiniz.

Güncellemeleri takip edeceğiniz sitede sayaç, tarih gibi değişen ifadeler bulunuyorsa bu konuda ck4up sürekli değişiklik uyarısı verecektir. Bu yüzden bunu da göz önünde bulundurmanız tavsiye edilir.
Örneklerden yola çıkarak, yapılandırma dosyanızı oluşturabilirsiniz. Yardım için man ck4up veya web man dosyasını inceleyebilirsiniz.

Komutu ilk verdiğinizde veritabanı dosyası oluşacaktır.

Info: Creating new database /home/ras0ir/.ck4up/ck4up.dbm
zpspell ........ new: http://cekirdek.pardus.org.tr/~baris/zpspell/
zemberek ....... new: http://code.google.com/p/zemberek/downloads/list
maradns ........ new: http://www.maradns.org/download.html
zemberek-ooo ... new: http://code.google.com/p/zemberek/downloads/list
mozzemberek .... new: http://code.google.com/p/zemberek/downloads/list
zemberek-server new: http://code.google.com/p/zemberek/downloads/list
musicy ......... new: http://sourceforge.net/project/showfiles.php?group_id=250252&package_id=305817
boncuk ......... new: http://sourceforge.net/project/showfiles.php?group_id=200295&package_id=244230

Böylece ilk veritabanı oluşturulduğunda böyle bir çıktı verecek.

Daha sonra ck4up komutunu verdiğinizde, güncellenen paket var ise, diff uyarısı vererek paketi kontrol etmenizi isteyecek. Programın güncellendiğini varsayarsak paketinizi güncelleme zamanı gelmiş demektir Smile.

Verbose modda çalışarak, detaylı kontrol yapabilirsiniz:

ras0ir@eventualis [~/.ck4up] % ck4up -v
zpspell ........ ok
zemberek ....... ok
maradns ........ ok
zemberek-server ok
musicy ......... ok
zemberek-ooo ... ok
mozzemberek .... ok
boncuk ......... ok

Şeklinde çıktı aldığınızda, güncelleme yok demektir.

Herkese iyi paketlemeler! Smile

ufak tefek bash fonksiyonları

Efendim, malum, çoğu zaman konsolda çalışmak gerekebiliyor ve akabinde uzun komutlarla (gerçi göreceli bir kavram) uğraşmak can sıkabiliyor. Böyle durumlarda ufak tefek fonksiyonlarla kendinizi tembelleştirebilirsiniz.

Mesela, şahsen .tar.bz2 arşiv dosyalarına -j parametresini vermeyi unuturum, unuttuğum gibi, bazen öyle durumlarda oluyor ki, tar –help kullanır hale bile gelebiliyorum. Neyse, Linux altında hangi dosyayı nasıl açarız tarzı tek tek açıklamak yerine, bu işlemi oluşturduğumuz bir fonksiyonla, komut şeklinde kullanalım. Arif olan zaten neyin nasıl olduğunu fonksiyondan anlar. Aşağıdaki kodları .bashrc (veya .zshrc) dosyanıza ekledikten sonra:

ayikla () {
   if [ -f $1 ] ; then
       case $1 in
           *.tar.bz2)   tar xvjf $1    ;;
           *.tar.gz)    tar xvzf $1    ;;
           *.bz2)       bunzip2 $1     ;;
           *.rar)       unrar x -v $1       ;;
           *.gz)        gunzip $1      ;;
           *.tar)       tar xvf $1     ;;
           *.tbz2)      tar xvjf $1    ;;
           *.tgz)       tar xvzf $1    ;;
           *.zip)       unzip $1       ;;
           *.Z)         uncompress $1  ;;
           *.7z)        7z x $1        ;;
           *)           echo "don't know how to extract '$1'..." ;;
       esac
   else
       echo "'$1' is not a valid file!"
   fi
 }

ayikla fonksiyonundan yararlanabilirsiniz. (tabii ki .bashrc’yi tekrar source ettirmek kaydıyla.)
Bundan sonra yapmanız gereken tek şey ayikla dosya şeklinde, istediğiniz dosyayı açmak olacaktır.
Arch kullanırken bazen, sudo /etc/rc.d/xyz start|stop|restart komutlarını yazmak zulüm gibi geliyor. Ha diyeceksiniz, ulan toplasan 20 karakter etmez yazdığın diye; lakin sudo komutunu olabildiğince az kullanmaya çalıştığım için bu şekilde bir yöntem izlemem gerekiyor. Nitekim sistem açıldıktan sonra kök dizinde bir tek /etc/rc.d/* ile muhatap olduğum için bunlara has bir fonksiyonu şu şekilde tanımladım:

srv () {
         sudo /etc/rc.d/$1 $2
}

Böylelikle istediğim servisi srv daemon start|stop|restart ile kullanabiliyorum. Bu örneklerden yola çıkarak basit ama faydalı fonksiyonlar geliştirebilirsiniz. Mesela twitter’a o anki durumunuzu yazabileceğiniz bir fonksiyonu şu şekilde tanımlayabilirsiniz ve twit “durumunuz” şeklinde kullanabilirsiniz:

twit() {
        echo "Kullanıcı: "
        read me
        echo "Şifre: "
        read -s sifre
        echo ""
        curl -u $me:$sifre -d status="$1" http://twitter.com/statuses/update.xml
}

Amacım tabii ki kimseye bash vesaire öğretmek değil; sadece gündelik işleri kolaylaştırmaya yönelik ufak tefek ipuçları vermek, dolayısıyla bash hakkında ileri derecede sorulara yanıt verebilecek düzeyde değilim ve uzun süre de olabileceğimi zannetmiyorum. Ancak öğrenmeniz için harika bir kaynak verebilirim: BASH Programming HOWTO