06 Nisan 2012

KDE'yi tekrar denemeye ne dersiniz?

Ubuntu'nun Unity masaüstü ortamı ve Gnome projesinden Gnome 3, sıradan masaüstü ortamlarından çok daha farklı bir görünüm ve kullanım sunuyor. Bu değişiklikleri seven de var, yerin dibine geçiren de. Fark ettiğim bir durum ise, sevmeyenler (hatta nefret edenler) XFCE, LXDE gibi görece daha hafif ve daha geleneksel masaüstü ortamlarına yöneliyorlar.

KDE masaüstü ortamının 4.0 sürümüyle girdiği tartışmalı durumun tekrar yaşandığını görebiliriz. KDE 4 serisiyle çok köklü değişiklikler yapmıştı. KDE'nin 4.0 sürümü KDE API'sinin sonlandırılmasını ve artık uygulama geliştiricilerin KDE 4'e geçiş yapması gerektiğini ifade ediyordu. Bence yanlış olan bu sürümlendirme stratejisi, pek çok kişiyi ve dağıtımı KDE'nin en son sürümü olan 4.0'a geçmeye yönlendirdiği. Halbuki KDE -yaklaşık- 4.3 sürümüne kadar eski KDE 3'den özellik ve kararlılık bakımından geriydi. Bu dönemde KDE'yi deneyip eksik özelliklerden ve sık yaşanan çökmelerden ağzı yanan pek çok kişi oldu. Unity ve Gnome 3'ten uzaklaşanların KDE'yi bir seçenek olarak değerlendirmemelerinin sebebi, belki de bu kötü deneyim yüzündendir.

Ancak KDE'nin son bir kaç sürümü bu kötü ünü hiç haketmiyor. Gayet sağlam çalışıyor ve ayarlanabilirlik konusunda sınır tanımıyor. Size geleneksel görünümlü bir masaüstü sunarken, isterseniz çok farklı şekillere de bürünebiliyor. Unity'de uygulamaların yer aldığı çubuğu hareket ettirmek bile ek program kurulmasını gerektiriyorken, KDE'nin sunduğu özelleştirilebilirlik buharlı araba - jet uçağı ilişkisini andırıyor.

Örneğin Unity ve Gnome 3'te komut satırından ya da ek programlarla etkinleştirebileceğiniz "klasik" masaüstünü (masaüstünde bir klasör içeriğini göstermek), KDE'de masaüstünüze sağ tıklayıp ulaşabileceğiniz masaüstü ayarlarından "Layout: Folder View" seçeneğini seçerek elde edebiliyorsunuz. "Search and Launch" türündeki bir masaüstünde ise tüm masaüstünü bir uygulama başlatıcısı olarak kullanmanız mümkün. Her tür masaüstünde çeşitli programcıklar (widget) çalıştırıp, onu istediğiniz gibi özelleştirebiliyorsunuz.

"Activity" kavramı ise KDE'nin masaüstü ortamlarına getirdiği yeniliklerden biri. Çoklu masaüstü özelliğinin bir adım ilerisi olan Activity'ler, çalışan uygulamaları, masaüstü ve görünüm ayarlarıyla bilgisayardaki çalışmalarınızı kavramsal bölümlere ayırmanızı sağlıyor. İstediğiniz zaman çalışan programlarla birlikte bir activity'i kapatabiliyorsunuz. Kapalı bir activity ve içindeki programlar hiç kaynak harcamıyor. Activity tekrar çalıştırıldığında ise tüm ayarlarıyla masaüstü, ve activity içinde çalışan programlar tekrar yükleniyor. Hatta destekleyen uygulamalarda programın içindeki durum da kaydedilip tekrar yükleniyor. (Örneğin activity kapatıldığında gwenview resim yöneticisinde açık olan klasör, activity yeniden başlatıldığında hatırlanıyor) Activity kavramıyla ilgili iki ingilizce günlük girdisi burada ve burada.

KDE'yi tekrar denerseniz ilginizi çekecek bir özelliğini bulabilirsiniz. Belki görsel güzelliği, belki özelleştirilebilirliği. Ama 4 serisinin ilk sürümlerinden çok daha iyi olduğunu göreceksiniz.

04 Kasım 2009

Upstart

Ubuntu ve Fedora dağıtımları bir suredir "SysV init" sistemi yerine Upstart ile geliyordu. Upstart, init scriptlerin paralel bir biçimde, belli olaylara bağlı olarak çalıştırılmasını ve durdurulmasını destekliyor. Ancak çeşitli sebeplerden ötürü init scriptleri eski SysV init biciminde bırakıldığı için Upstart'ın özelliklerinden faydalanılmıyordu.

Ubuntu 9.10 surumuyle Upstart'a uyumlu init scriptler geliyor. Sistem, olaylara (örneğin, "ağ bağlantısı sağlandı") tepki vererek, init scriptleri paralel çalıştırarak açılıyor. H-online'da yayınlanan bir yazı, upstart'ın iç işleyişini ve upstart init scriptlerinin nasıl yazılacağını anlatıyor.

Pardus ve Gentoo dağıtımlarının uzun bir süredir kendi init sistemleriyle paralel açılışı desteklediğini belirtmeden geçmeyelim.

26 Temmuz 2009

1979'da son teknoloji

Gizmodo, 1979'un en ünlü teknolojik aletlerini, ve o dönemin yaşam tarzını konu alan bir yazı dizisi yayınladı. Tüm geeklerin (ve/veya nostalji hastalarının) buradakileri bilmesi lazım :)

04 Şubat 2009

Bilgisayarlarınızı kontrol edin

Uzun bir süredir kullanıcı parolarını ele geçirip sistemden sisteme SSH ile atlayan bir takım art niyetli ve/veya meraklı kişiyi takip ediyorduk. Onlar parola ele geçirdikçe ilgili kullanıcıların hesaplarını kilitleyi parolarını değiştirmelerini sağlıyorduk. Ara sıra oynadığımız bu köşe kapmaca fazla sık olmadığı için elle tutulur çok fazla önlem almamıştık.

Bu son bir haftalık bir süre içinde, ele geçirilen kullanıcı hesaplarından girilip, yerel açıklardan faydalanarak pek çok makinada root olunduğunu fark ettik. Root olduktan sonra saldırganımız, ssh sunucusunu ve istemcisini kendi getirdiği sürümlerle değiştiriyor; aynı makinaya bağlanan başka kullanıcıların parolalarını topluyor. ssh istemcisini değiştirerek de, bu ele geçmiş makina üzerinden yapılan diğer ssh bağlantılarındaki parolaları da kaydediyor.

Olayın çapı oldukça geniş, ele geçirilen makina üzerinden geçerek bağlantı kurulan tüm diğer makinalar da ele geçirilmiş. Bunun içinde sunucular, asistanların ve hocaların ofislerindeki makinaları, ve bağlantı kurdukları evlerindeki diğer makinalar da var. Bize yapılan saldırının aynısının kendi makinalarınıza yapılıp yapılmadığına bakmak için aşağıdaki komutları kullanabilirsiniz. Eğer komutlar ekrana çıktı veriyorsa siz de etkilenmişsiniz demektir.

strings /usr/sbin/sshd|grep "password auth from"
strings /usr/bin/ssh|grep "password auth to"
Temiz bir makinada bu komutlar çıktı vermiyor. Ancak komutun çıktı vermemesi makinanıza girilmemiş olduğunu garantilemiyor. Farklı bir yöntem kullanılarak bilgisayarınıza girilmiş olabilir. Eğer komutlar çıktı veriyorsa bizim makinalarımızda kullanılan yöntem ile sizin makinanıza da girildiğinden emin olabilirsiniz.

Saldırganımız çaldığı paroları /usr/share/doc ve /usr/share/locale altındaki dosyalarda şifrelenmiş bir biçimde tutuyor. "file" komutu bunları "data" dosyası olarak gösteriyor. Şüpheli dosyaları aramak için aşağıdaki komutları kullanabilirsiniz. Kurduğunuz paketlere göre /usr/share/doc altında bazı "data" dosyaları bulunuyor olabilir, bunlara tek tek bakarak şüphelerinizi giderebilirsiniz.

find /usr/share/locale/ -exec file {} \; | grep ": data"
find /usr/share/doc/ -exec file {} \; | grep ": data"

İşletim sisteminin farklı olmasının pek faydası olmadı bu saldırıda. Debian ve Ubuntu'nun farklı sürümlerinin yanı sıra Gentoo makinalara da girildiğini tespit ettik. Pardus ya da Fedora gibi başka bir dağıtım kullanıyor olmanız sizi tek başına korumaz; parolanız ele geçirildiğinde sudo ile root olunabilir. Ya da -şimdilik- sadece hesabınızı etkileyen bir keylogger ile root parolası ele geçirilebilir. Neler yapabileceğinizle ilgili aşağıda öneriler var.

Eğer makinanıza girilmişse, makinanıza tekrar güvenebilmek için sıfırdan kurulum yapmalısınız, çünkü saldırgan root olduktan sonra nereye nasıl bir arka kapı koyduğunu bulamazsınız. (Bazı şeyler bulsanız bile hepsini bulduğunuzdan %100 emin olamazsınız).

Yeni kurulum yaptıktan sonra bu tarz bir saldırıdan korunmanın yollarını şöyle sıralayabiliriz:

  • Kurulu paketlere güncelleme geldiğinde bunları hemen uygulayın. Servisleri ya da makinayı yeniden başlatmanız gerekiyorsa bunu ertelemeyin. Kullandığınız dağıtımın güvenlik duyurularını takip edin. (Pardus, Debian, Ubuntu)
  • SSH bağlantılarını sadece sizin kullanıdığınız bir kaç IP adresine sınırlayın.
  • Parola ile girişleri devre dışı bırakın: sadece anahtar çiftleri ile girişe izin verin. Evet çok sert bir önlem ama, IP kısıtlaması uygulayamayacağınız kadar çok kullanıcınız varsa şart. iki yıl köşe kapmaca oynadıktan sonra makinaların kırılabilme eşiğini oldukça yükseltecek olan bu önlemi alacağız, sizlere de tavsiye ederiz. Böylelikle basit bir keylogger kullanarak yakalanan parola ile makinaya girilemeyecek, girilebilmesi için anahtar çiftindeki özel anahtar dosyasının da ele geçirilmesi gerekecek. Nasıl yapacağınızı öğrenmek için SSH ile anahtar çifti kullanımı yazısı faydalı olacaktır.
  • Tek kullanımlık parolalara geçin: diğer iki önlemle birlikte de kullanılabilir. Özel anahtar dosyasının ele geçmesi senaryosuna karşı da korunmuş olursunuz. tek kullanımlık parola(one time password) yazısı yardımcı olabilir.

Son olarak siz de bir kurban iseniz; makinası ele geçirilen sistem yöneticileri için terapi grubumuza bekleriz :)

16 Ocak 2009

e-bergi

İngilizce computation kavramını karşılamak üzere "tasarlanmış" bir kelime berim. Türkçe'nin bilim dili olabilmesi, yabancı dillerdeki kavramları karşılayabilmesi için pratik bir yolun "kök uydurmak" olduğu fikrinden hareketle uydurulmuş bir kök. Dil bilimciler bütün bu "uydurma" süreci hakkında ne der bilmiyorum ama ben "Yüksek Başarımlı Berim" (bkz. HPC) başlıklı toplantılar gördüğümde hiç kulağım yadırgamadı. Tamamen bir alışkanlık meselesi.

Aslında bir de tercih meselesi, bir konu hakkında konuşurken terimlerin İngilizce karşılığını kullanmaktansa, yaygınlaşmamış ve oturmamış bile olsa Türkçe karşılıklarını kullanmayı tercih ediyorum. Bu konudan rahatsız değilim, birileri sözcüğü anlamasa bile İngilizce sözcüğü kullanıp önce anlamalarını sağlıyorum, sonra konuyu Türkçe sözcükle anlatmaya devam ediyorum. Türkçe terimleri yaygınlaştırmada bu yöntemin işe yaradığını gözlemledim, "komik/garip" Türkçe karşılığı çekindiği için kullanmayanları cesaretlendiren bir davranış olduğunu düşünüyorum.

"Bermek" kökünü adında kullanan bir de sanal yayın var, e-bergi. Odak noktaları özgür yazılım ve bilgisayar bilimleri olan, ancak güncel konular, oyunlar ve biyografilerle birlikte geniş bir yelpazede yazılar içeren bir dergi. Nisan 2007'den beri yayında olduğundan ötürü geniş bir eski sayı arşivi var. Arşive bakmanızı özellikle tavsiye ederim, ilginizi çekebilecek bir konuda yazılmış bir yazı bulabilirsiniz. Siz de bir ucundan tutmak isterseniz önce dergiyi hazırlayan ekiple iletişime geçip bir konu belirledikten sonra e-bergi yazarı olabilirsiniz.

Son olarak, günlüğümdeki bazı yazılar Linux Gezegeni'nde de yayınlanıyor, [[hatta bunu okuyorsanız büyük ihtimalle bir gezegen okuyucusunuz :) ]]. Alper Kanat gezegen hakkında yazmış; demiş ki gezegendeki her şey teknik ve/veya linux ile ilgili olmak zorunda değil. Bu görüşe ben de katılıyorum, Truman Show, BBG evi ya da twitter havasında sürmediği sürece, ortak noktaları Linux ve Özgür Yazılım olan insanların günlüklerindeki diğer konuları da takip etmek ilgimi çekiyor.

25 Aralık 2008

İstenmeyen e-postalarla(Spam) mücadele

"Spam" olarak da bilinen "İstenmeyen e-postalar" ile mücadelede çeşitli yöntemler var. Eğer gmail, yahoo, msn gibi web tabanlı e-posta sağlayıcılarını kullanıyorsanız bu sağlayıcının sunduğu olanaklar dışında bir şey kullanamıyorsunuz. Eğer kendi e-posta sunucunuz varsa veya kurumunuzun e-posta sunucusunu kullanıyorsanız [[ ya da kurumunuzun sunucusunu yönetiyorsanız ;) ]], büyük olasılıkla SpamAssassin kullanıyorsunuzdur.

Spamassasin çeşitli kuralları uygulayıp, karalisteleri denetleyip her e-postaya ona göre bir "spam puanı" veriyor. Bir e-postanın spam puanı belirli bir değerin üstüne çıktığında ise istenmeyen e-posta olarak sınıflandırılıyor, ya işaretleniyor ya da posta kutunuza teslim edilmiyor.

Bir süredir bana gelen her istenmeyen postayı kara listelere bildiriyorum. Sizlere de aynısını yapmanızı tavsiye ederim. Ne kadar çok istenmeyen posta şikayet edilirse kara listelerin etkinliği o derece artar. Ayrıca, Türkiye'den bu listelere bildirim -tahminimce- az olduğu için Türkçe gönderilen spamlar hak ettikleri muameleyi görmüyorlar :) Bunun üstesinden birlikte gelebiliriz.

İstenmeyen posta bildiriminin en kolay olduğu iki kara liste uribl ve spamcop. Uribl, e-postaların içinde reklamı yapılan web sayfa adreslerini listeliyor. Spamcop ise, en az iki farklı kişiden şikayet gelmesi durumunda istenmeyen e-postanın kaynaklandığı ip adresini kara listesine ekliyor, bunun yanında bu IP adresinin ve -varsa- reklamı yapılan web sayfasının yer aldığı ağın yöneticisini haberdar ediyor.

spamcop'u kullanmak için özel bir şeye ihtiyacınız yok, üye olup giriş yaptıktan sonra, size gelen istenmeyen e-posta iletisini "Tüm başlık bilgileriyle birlikte" sayfadaki kutuya yapıştırıp, "Process spam" düğmesine basıp bekliyorsunuz. Daha sonra karşınıza bir analiz geliyor, burada e-postanın geldiği ip adresini, bulunduğu ağı ve o ağın yöneticilerinin e-posta adreslerini görüyorsunuz. Reklamı yapılan web sayfası adresleri için de benzer bilgiler görünüyor. "Send Spam Reports Now" düğmesine bastığınızda da ilgilere e-posta gönderiliyor. Daha önce belirttiğim gibi, e-posta göndermenin yanı sıra, yeterli sayıda şikayet geldiğinde spamcop'un kendi kara listesine bu IP adresleri ekleniyor. Detayları spamcop web sayfasında bulabilirsiniz.

uribl sadece spam ile reklamı yapılan web adreslerini listelediği için çalışması biraz farklı. Üye olduktan sonra önce "lookup" sayfasına web adresini yazıp listede yer alıp almadığına bakıyorsunuz "NOT Listed on URIBL" cevabı alırsanız sağ tarafta "request listing" bağlantısına tıklayarak listeleme isteyebilirsiniz. Karşınıza gelecek ekranda "List (required)" kutusunun içinden liste seçmeniz lazım. URIBL'nin farklı listeleme seviyeleri var ancak tüm şikayetlerin "black" listesi üzerine yapılmasını istiyorlar. Bu istenmeyen posta ve web sayfası ile ilgili kısa bir açıklama yapıp aşağıya postayı yapıştırın, ancak yine "tüm başlık bilgileriyle beraber" yapacaksınız unutmayın.

URIBL ile ilgili bir gözlemim; bir web sayfasının kara listeye girmesi için bir insanın onayından geçmesi gerekiyor. Her kabul edilen gönderiniz size "itibar puanı" kazandırıyor. Eğer üye olunca hemen Türkçe spamları raporlarsanız içeriği anlamadıkları için ve puanınız düşük olduğu için listelemeyebiliyorlar. Önceleri sadece İngilizce spamları raporlayıp bir miktar puan aldıktan sonra Türkçeleri de göndermenizi öneririm.

Bir e-postanın tüm başlıklarını(header) nasıl alacağınızı bilmiyorsanız, örneğin Thunderbird'de postanın üzerine tıkladıktan sonra "ctrl+u" klavye kısayolunu veya "Görünüm->Mesaj Kaynağı" menüsünü kullanabilirsiniz.

El ele verip spam ile mücadele edelim. Tabii en büyük mücadele arkadaşlarınızı ve ailenizi, virüs yuvası olup spam göndermekten sürüm sürüm sürünen windows makinalarından kurtarıp onları Linux ile tanıştırmakla olur, belirtmeden geçmeyelim :)

17 Aralık 2008

NFS ve Xen sorunu, çözüm UDP

Saç baş yolduran bir sorunla karşılaşan olursa yaşadıklarımızı yaşamasın diye günlüğe yazma ihtiyacı duydum.

Xen sanal makina altyapısını kullanan sanal makinalarımız var, ve bunlar NFS(Network File System: Ağ Dosya Sistemi) ile bir başka sunucudan kullanıcı ev dizinlerine erişiyorlar.

Bugün ilginç bir şekilde NFS işlemleri yavaşladı, dosyalara erişim ve IMAP sunucusu için elzem olan kilitleme işlemleri çooook uzun sürüyordu. IMAP sunucunun tepki vermediğini düşünen IMAP istemcisi ise (Thunderbird) tekrar tekrar bağlantı açıp sunucunun işini daha da zorlaştırıyordu.

İki koldan yaptığımız internet aramalarından çıkan çözüm önerilerinin tamamını tükettikten sonra (4 saat kadar sürdü bu) bir de IRC'ye sormak istedim. Daha önce de çözümsüz gibi görünen sorunları yaşamış birilerine IRC'de denk geldiğim olmuştu çünkü. Ancak "faydalı cevap/toplam soru" oranı düşük olduğu için yine son çare olarak gördüm. Freenode'da #solaris kanalına sorduk (NFS sunucu solaris, #nfs kanalında 10 kişi vardı ve cevap veren olmadı)

"UDP ile bağlan"

Dedi birisi, ve sorun çözüldü. Ben varsayılan olarak NFS'in UDP üzerinden çalıştığını düşünüyordum, ancak protokol belirtmediğinizde Deban Etch sürümü TCP bağlantısı kuruyormuş. NFS bağlama seçenekleri arasına "proto=udp" ekleyince sorunlar kuş oldu uçtu. Bunu komut satırından yapmak için

mount -t nfs -o proto=udp sunucu:/dizin /hedef
ve autofs kullanıyorsanız /etc/auto.master dosyasında, mevcut seçeneklerin yanına "proto=udp" ayarını aşağıdaki gibi eklemelisiniz.
/dizin map --ghost,intr,proto=udp

Bu meselenin sadece Xen altında çalışan sanal makinalarda ortaya çıktığını tekrar hatırlatayım.


ENGLISH VERSION

Today we had a problem with Xen virtual machines. Their NFS mounts started working very slow. Access to files and file locking were problematic and the IMAP server was crawling.

Web searches did not lead us to a solution, so we asked on #solaris IRC channel on Freenode.

It seems there is a problem with Xen guests, NFS and TCP. Switching to NFS mount over UDP did the trick. Use "-o proto=udp" as an option to mount command, or put "proto=udp" at the end of the map line in /etc/auto.master if you are using autofs. I tought that NFS used UDP by default but Debian Etch does not seem to agree.

29 Ekim 2008

Cumhuriyetimiz 85 yaşında

Bugün Anıtkabir'e gittim, her gittiğimde yaşadığım karmaşık duygular yine içimi kapladı.

Hüzün; yaşananan zorlukların, yapılan fedakarlıkların, feda edilen canların hüznü

Heyecan; bir halkı kurtarmanın, yoktan bir ülke yaratmanın heyecanı, 85 yıl sonra bile fotoğraflardan, panaromalardan, yüzlerden okunuyor

Gurur; güvenebileceği hiç bir şeyi olmadığı halde, dünyanın güçlü devletlerini karşısına alma cesaretini göstermiş, ve sonunda başarılı olmuş bir ülkenin evladı olmaktan duyduğum gurur

Hüzün; ülkemin ne hale getirilmeye çalışıldığını, üstelik bunun ne kadar "başarılmış" olduğunu görmenin hüznü

Heyecan; yurttaşlarımın benzer şeyler hissettiğini görmekten kaynaklanan, "her şey kötüye gitmek zorunda değil, yine başarabiliriz" umudunun verdiği heyecan

Gurur ? Var mı, çok şey yapabiliriz belki de, yeteneklerimiz dahilinde olanın ne kadarını yapabiliyoruz ? Neler yapabiliriz ?

Daha az kalabalık olduğu bir günde Anıtkabir'e gider, müzenin her yanını, her plakayı okuyarak gezerseniz bugüne kadar neler kaçırdığınızı görebilirsiniz. Belki Cumhuriyet'in heyecanını tekrar damarlarınızda hissedersiniz. Belki, güneş açar, içiniz umut dolar. Nöbet değişimi saatlerine denk gelirseniz, satılmış zihinlerin akıttığı bütün o zehire rağmen Türk İnsanı'nın, Türk Askeri'ne ne kadar sevgi duyduğunu gürürsünüz, belki içiniz ferahlar.

12 Ağustos 2008

Debian/Ubuntu'da paket hangi depodan gelecek

Eğer Debian GNU/Linux dağıtımını ya da Ubuntu gibi bir Debian türevini kullanıyorsanız farklı paket depolarını eklemiş olabilirsiniz. Örneğin Debian stable için yeni sürüm paketleri sağlayan backports.org olabilir.

Ancak bir paket kuracağınız zaman hangi depodaki sürümün kurulacağını anlamanın görünür bir yolu yok. apt-get, aptitude veya synaptic'te bunu göremiyorsunuz... diye biliyordum.

Aslında varmış bir yolu apt-cache policy PAKET_ADI. Örneğin debian üzerinde backports.org deposundan kurulan puppet böyle görünüyor;
# apt-cache policy puppet
puppet:
  Installed: 0.24.4-8~bpo40+1
  Candidate: 0.24.4-8~bpo40+1
  Package pin: 0.24.4-8~bpo40+1
  Version table:
 *** 0.24.4-8~bpo40+1 999
          1 http://www.backports.org etch-backports/main Packages
        100 /var/lib/dpkg/status
     0.20.1-1 999
        500 ftp://ftp.metu.edu.tr etch/main Packages
Ayrıca bir ek, backports.org deposundan paket kurmak için sayfasındaki talimatları düzgün okumanız gerekiyor, sonra saçınızı başınızı yolmayın :D Backports deposundan normal şartlar altında hiç paket çekilmiyor, aptitude -t etch-backports install PAKET_ADI ile veya /etc/apt/preferences dosyasında "Pin" kuralları tanımlayarak bu depodaki paketleri kurabiliyorsunuz.

18 Haziran 2008

Apache'de SSL kullanımı

Debian üzerine kurulu Apache web sunucusunda SSL şifrelemesinden yararlanmak için takip edilmesi gereken adımlar aşağıdaki şekilde. Diğer dağıtımlarda da SSL modülünü yükleyip yeni bir Virtual host oluşturmanın yolu farklı olabilir ama genel ayarlar aynı kalıyor.

Öncelikle elinizde bir ssl sertifikası olması lazım. startcom gibi ücretsiz sertifika veren bir yeri tercih edebilirsiniz. Aşağıdaki komutla "self-signed" bir sertifika üretebilirsiniz ancak web tarayıcıların yeni sürümleri bu sertifikalarla karşılaştığında hata mesajı gibi görünen uyarılar gösteriyorlar. Bu komutun sorduğu sorulara size uygun cevapları verin, dikkat etmeniz gereken nokta "Common Name (eg, YOUR name) []:" sorusuna cevap olarak sunucunuzun tam adresini girmelisiniz, bu adres ziyaretçileriniz sayfaya girmek için https://'den sonra yazacakları adres, yani "denemesunucum.example.com" gibi.
openssl req -new -x509 -days 999 -nodes \
-out apache.pem -keyout apache.pem
Sertifikayı /etc/apache2/apache.pem olarak kaydedin. İşlemlerin geri kalanını /etc/apache2/ dizini altında yapın.

"sites-available/default" dosyasının "sites-available/ssl" adında bir kopyasını alın. Bu kopyaladığınız ssl dosyasının baş tarafını aşağıdaki biçimde değiştirin. Kalın ve eğikgörünenler yapacağınız değişiklikler.
NameVirtualHost *:443
<VirtualHost *:443>
  SSLEngine on
  SSLCertificateFile /etc/apache2/apache.pem
sites-available/default dosyasını da aşağıdaki şekilde değiştirin.
NameVirtualHost *:80
<VirtualHost *:80>
ports.conf dosyasına, Apache'nin https portu olan 443. portu dinlemesi için gereken satırı ekleyin.
Listen 80
Listen 443
Aşağıdaki komutlarla Apache'nin SSL modülünü ve yeni eklediğimiz SSL vhostunu etkinleştirin.
a2enmod ssl
cd sites-enabled; ln -s ../sites-available/ssl 001-ssl
Daha sonra güvenlik duvarından 443/tcp portunun açık olduğundan emin olun ve apache servisini yeniden başlatın. Bunu yaptıktan sonra https üzerinden sayfanıza erişip her şeyin düzgün çalıştığından emin olun.

09 Nisan 2008

Bilişim Teknolojilerinde Gelecek

ODTÜ Bilgisayar Topluluğu'nun düzenlediği Bilişim Teknolojilerinde Gelecek etkinliğinde ilgi çekici oturumlar var. Fırsat bulursanız katılmanızı tavsiye ederim.

Öncelikle bilişim teknolojilerinin bilimsel tarafının akademisyenler tarafından ele alındığı "Akademik Açılımlar" oturumu var. Sonra endüstrinin geleceğe dönük öngörülerini dinleyebileceğiniz "ASUS'un IT Stratejileri".

Yahoo! Londra'dan gelen James Broad'ın "Web servisleri ve Web API'leri" oturumundan sonra, "Girişimcilik" konulu bir oturum var. Bu oturumun konukları bir süredir kendi şirketlerinin sahibi olan Bora Güngören ve Eren Bali'nin yanı sıra, lisans eğitimini birlikte tamamladığımız ve Yeni Fikirler Yeni İşler yarışmasının 2006 birincileri olan RotaSoft.

Son olarak, ODTÜ Bilgisayar Topluluğu'nun her sene düzenlediği Programlama Yarışması var. Bu sene 11'ncisi düzenlenen yarışmanın biçimi de değişti ve ekiplerin yarıştığı bir yarışma haline geldi. 19 Nisan'da gerçekleşecek çekişmeli finalin sonuçları da bu etkinlikte açıklanacak. Etkinlik programını aşağıda bulabileceğiniz gibi etkinliğin duyuru sayfasından da programa erişebilirsiniz.

Yer: ODTÜ Kültür Kongre Merkezi B Salonu
Tarih: 20 Nisan 2008 Pazar

  • 12.00 - 13.30 : Bilgisayar Dünyasında Akademik Açılımlar
    • Prof. Dr. Volkan Atalay (Biyoinformatik)
    • Prof. Dr. Fatoş Tünay Yarman-Vural (Görüntü İşleme)
    • Yrd. Doç. Dr. Erol Şahin (Robotik)
    • Dr. Atilla Özgit (İnternet Teknolojileri)
  • 13.45 - 14.15 : ASUS'un IT Stratejileri
    • Kaan Özden (Asus Kanal Yöneticisi)
  • 14.30 - 15.30 : Web Services, API's and Yahoo!
    • James Broad (Developer at Yahoo! London)
  • 15.45 - 17.00 : Bilişim Sektöründe Girişimcilik
    • Bora Güngören (Portakal Teknoloji)
    • Eren Bali (Eofer)
    • Gürkan Caner Birer (RotaSoft)
    • Munir Ercan (RotaSoft)
  • 17.15 - 18.00 : Programlama Yarışması Ödül Töreni
  • 18.00 - 18.30 : Kokteyl

NOT: ODTÜ dışından etkinliğe katılacak misafirlerimizin kampüs girişlerinde sorun yaşamamaları için 17 Nisan akşamına kadar hot-line@cclub.metu.edu.tr adresine katılacaklarını belirten bir e-posta atmaları gerekmektedir.

07 Şubat 2008

SSH ile Şifresiz Giriş

e-bergi'nin Şubat sayısında yayınlanan ve İlke Demir tarafından yazılan bu yazıda, SSH ile şifresiz/parolasız bağlantı yapmanın yolları anlatılıyor.

Bu uzun süredir kişisel hesaplarım için, yakın zamanda da sistem yöneticiliği işleri için kullandığım bir yöntem. SSH anahtar çiftleri ve ssh-agent kullanarak hem güvenli, hem de pratik bir yöntemle şifresiz/parolasız giriş yapabilirsiniz. (*) Burada dikkat edilmesi gereken bir nokta, ssh özel anahtarına mutlaka "passphrase" girilmeli, aksi taktirde dosyayı kopyalayan şakacı bir arkadaşınız, ya da makinanıza giren kötü niyetli bir saldırgan hesaplarınızda istediği gibi at koşturabilir. Passphrase yeterince uzun ve karmaşık seçilmeli ve içinde yetince büyük harf/sayı/abuk karakter barındırmalı.

Her bağlantıda hesabınızın parolasını girmek yerine, her bağlantıda ssh anahtarına passphrase girmek pratikte bir fayda sağlamayacağı için ssh-agent güzel bir çözüm. Bazı dağıtımlarda ssh-agent siz hesabınıza girdiğinizde çalışmaya başlıyor. Bazı dağıtım/masaüstü ortamları için ise dosyalar hazır bekliyor ancak gidip aktifleştirmeniz gerekiyor. Dağıtımınızın adı ile birlikte "ssh-agent" kelimesini ararsanız her açılışta nasıl ssh-agent çalıştırabileceğiniz ve anahtarlarınızı ona ekleyebileceğiniz konusunda detaylı bilgi bulabilirsiniz.

Ben Gentoo ve KDE kullanıyorum, yaptığım şey ise aşağıdaki dosyalarlarla ssh-agent'ı çalıştırmak, kapatmak ve anahtarlarımı sistem açılışında ssh-agent'a yüklemek. Dosyaları çalıştırılabilir hale getirmeyi unutmamak :) ve "gtk2-ssh-askpass" ya da "x11-ssh-askpass" programlarından birini kurmak gerekiyor.

~/.kde/env/ssh-agent.sh
#!/bin/sh
/usr/bin/ssh-agent -s > ~/.ssh/agent-env.sh
. ~/.ssh/agent-env.sh
~/.kde/shutdown/shutdown-ssh.sh
#!/bin/sh
/usr/bin/ssh-agent -k
~/.kde/Autostart/ssh-add.sh
#!/bin/sh
/usr/bin/ssh-add


(*) Bu noktada şifre mi parola mı tartışmasına girmek istemiyorum, doğrusu "parolasız" olacak, ancak ortada yoğun bir "şifre" kullanımı olduğu inkar edilemez bir gerçek, ve bence "password" ya da "pass" kullananlara kıyasla çok fazla da büyütülecek bir mesele değil.

28 Ocak 2008

Günün Konqueror İpucu

Linux masaüstü ortamı olarak KDE kullanıyorum, ve bildiğiniz gibi KDE'nin dosya yöneticisi/web tarayıcısı yazılımı Konqueror.

Yakınlarda Konqueror'un güzel bir özelliğini keşfettim. Bir müzik CD'sini sürücüye taktığınızda, Konqueror'daki "System" kısmından sürücüye giderseniz, adres çubuğunda "system:/media/hdc" gibi bir adrese bakıyor olacaksanız. Buradaki klasörler aracılığıyla müzik CD'sindeki şarkıları wav, ogg, mp3 ya da flac biçimlerinde görebilirsiniz. Bu dosyaları diskinizde bir klasöre kopyalamaya çalıştığınızda, Konqueror devreye girecek ve şarkıları istediğiniz dosya biçimine çevirip öyle kaydedecek. Gidip program çalıştırıp dönüşümleri elle yapmakla uğraşmayacaksınız. Ancak bu işlem için öncelikle gerekli encoder programların kurulmuş olması lazım(mp3 için lame mesela).

Ayrıca yapabileceğiniz bir kaç şey daha var; tüm CD'yi yukarıdaki formatlarda tek bir dosya halinde de çekebiliyorsunuz, 60 dakikalık tek bir dosyanız oluyor, eğer işinize yarayacaksa. Information klasöründen de -CDDB'den bulunabildiyse- şarkıların isimlerine düz metin dosyası biçiminde ulaşabiliyorsunuz.

21 Aralık 2007

OOXML Uluslararası Standart Olmamalıdır

Pek çok ofis uygulamasının uygulamanın halihazırda desteklediği, OASIS ve ISO onaylı, bir standart olan OpenDocument(ODF)[1],[2],[3] varken, Office Open XML(OOXML),* adında yeni bir standart onaylanmaya çalışılıyor. Standartlar herkesin üzerinde ortak karara varıp kabul ettiği ve kullandığı metinlerdir. Bu süreçten geçmiş ve onay almış bir standart varken, aynı alanda yeni bir standart ortaya atmanın gereksizliği aşikar. Bunun yanı sıra OOXML'in pek çok teknik yetersizliği var. Bir kaç örnek;
  • Eski MS Office belgelerine uyumluluk adına tanımlanmış, ancak nasıl işlenmesi gerektiği belirtilmemiş etiketler. Bunlar sadece "şu program gibi davran" diyorlar, örneğin Word95GibiBiçimlendir. Standart "açık" olduğunu iddia ederken, programların bu tarz özellikleri kullanabilmesi için adı geçen programların nasıl çalışığının bilinmesi gerekiyor. Bu ise OpenOffice gibi programların yıllardır uğraşıp halen %100 gerçekleştiremedikleri bir durum.
  • 1900'den önceki tarihler yanlış hesaplanıyor. MS Excel'in eski sürümlerinde, bir hata nedeniyle 1900 yılı artık yıl olarak işleniyordı. Yıllar öncesine dayanan bu hata 2007 yılında uluslararası bir standartta karşımıza çıkıyor ve "tarih/gün hesaplarını hatalı yapın" diyen bir standartımız oluyor. Bu konu hakkında bir yazı.
Liste daha devam ediyor, devamını aşağıda vereceğim adreslerde okuyabilirsiniz.

Ayrıca, OOXML'in içerdiği teknolojilerden bir kısmı patentlenmiş durumda. Patentlerin sahibi ise elindeki patentleri kullanarak Linux kullanan kişileri, şirketleri tehdit eden Microsoft. Standart yeterince açık olsa ve kabul edilse bile, bu standardı kullanan bir programı yazanlara Microsoft tarafından dava açılabilecek.

Peki zaten standardı olan bir konuda, pek çok teknik yetersizliği barındıran ve patent engelleriyle karşı karşıya olan yeni bir standart neden ortaya atıldı? OpenDocument ISO tarafından onaylandıktan sonra, pek çok ülkede hükümetlerin "açık standartlar" kullanma eğilimi artış gösterdi.

Bir devlet düşünün, arşivindeki eski tarihli belgeleri açamıyor, çünkü bu belgeler artık desteklenmeyen bir dosya biçiminde yazılmış. Dosya biçiminin içeriği gizli olduğu için sadece tek bir programla açılabiliyor, ve o şirket artık piyasada yok. Siz olsanız ne yaparsınız ?

Günümüzde böyle bir durum yok şimdilik, ancak bundan 10 yıl, 20 yıl sonra ne olacağını kim garanti edebilir? Bir şirket ürünü desteklemeyi durdurdu diye devlet arşiviniz kaybolup gidecek mi?

İşte açık standartların devletler için önemi bu noktada başlıyor. İçeriği tamamen bilinen bir dosya biçimi, belgenin oluşturulmasından yıllar sonra, belgenin oluşturulduğu program artık yoksa bile açılabilir. Açık standartlarla oluşturulduğu için tüm detayları bilinen dosyayı açmak, içeriğine ulaşacak programları elde etmek mümkün. Bunun önemi görüldükçe bu konuda istekler ortaya çıkmaya, devlet belgerinin hapis kaldığı kapalı dosya biçimlerine itirazlar seslendiriliyor. Çeşitli yasalarla açık standartların kullanılması zorunlu hale getiriliyor.

Bu noktada, aslında OASIS üyesi olan ancak ODF'nin standartlaşması aşamasında işbirliği için yapılan davetleri reddeden Microsoft, kendi Office serisi ürünlerinde kullandığı dosya biçimini XML tabanlı hale getiriyor, zaman kaybetmeden de standart olması için 6000 sayfalık bir belge hazırlanıyor.(Böyle bir şey[RESİM]) Standart olması için ECMA'ya yollanıyor, ECMA'da sadece IBM itiraz ediyor ve OOXML, ECMA standardı oluyor. Sonra ECMA bu devasa belgeyi ISO'ya yolluyor. Kıyamet de orada kopuyor.

Öncelikle ISO'daki ilgili komite OOXML'i "Fast Track" standart olarak işleme koyuyor. Bu yol, üzerinde herkesin anlaştığı, halen kullanılmakta olan ve birden faza bağımsız uygulayıcısı olan standartların bürokrasiye takılmaması için izleniyor. OOXML'e Microsoft dışında katkı yapan birisi yok, MS Office 2007 dışında kullanan program yokken "Fast Track" sürecinin işlemesi bir şeylerin tuhaf olduğunun göstergesi.

Daha sonraki oylama sürecinde, ilgili komiteye katılan üye ülkelerde ani bir artış görülüyor. Bu yeni katılan ülkelerin de neredeyse tamamı OOXML'e evet diyor. Pek çok ülkenin OOXML ile ilgili komitesine Microsoft ile iş yapan şirketlerin çalışanları katılıyor, hatta komite başkanı oluyorlar. İşler o kadar ileri gidiyor ki ulusal komite oylamasındaki usülsüzlüklerden ötürü İsveç "Evet" olan oyunu iptal ediyor. Ancak sonuçta yeterli sayıya ulaşılamıyor ve OOXML standart olamıyor. Ama her şey burada bitmiyor tabii ki, bir oylama daha var.

Bir sonraki aşama 2008 Şubat ayında yapılacak olan çözüm toplantısı(Ballot Resolution Meeting - BRM). Daha önceki oylama sırasında gündeme getirilen 3000'den fazla soruna çözüm aranması için düzenleniyor, ve ülkeler önceki oylarını değiştirebiliyorlar.

Türkiye'yi temsil eden Türk Standartları Enstitüsü ilk oylamada "Evet" oyu vermişti. Şubat ayındaki oylama için neler olacak bilmiyoruz. Ancak sakat bir tasarının standartlaşmaması için kollar sıvandı, bilişim dünyasından konuyla ilgili sesler yükseliyor. Günlüklerinde bu konuyu yazanlar artıyor. Özgürlük İçin sitesindeki çağrıdan sonra TSE Bilgi İşlem Daire Başkanlığı başkanının ve yine aynı dairede çalışan bir uzmanın Şubat toplantısına gideceği bilgisi geliyor TSE'den. Ancak bunun dışındaki sorulara bir cevap yok. *.

Sonra, Konuyu açıklayan bir belge hazırlanıyor. Bu konuyu mümkün olduğunca fazla kişinin dikkatine sunmak için, ve TSE'nin vereceği oyun OOXML'in hak ettiği koca bir "Hayır" olması için çaba sarfedilmesi gerekiyor.

Aşağıda konuyla ilgili derlediğim bağlantıları bulabilirsiniz.

24 Kasım 2007

Bourne Shell Server Pages

"Her dilde web uygulamaları yazabiliyorsak neden Bourne Shell ile yazamayalım" diye düşünülerek hazırlanmış Bourne Shell Server Pages bir yandan gerekli iğneleri batırırken bir yandan da çalışan bir sürüm ortaya koymuş. Üstelik web sunucusu da içinde :)

Bunu sistemimde(Gentoo Linux) çalışır hale getirmek için bir iki ufak değişiklik yaptım, ve bu sayfaya koydum. Buradaki iki .sh dosyasını /usr/local/bin altına, http dosyasını /etc/xinetd.d dizinine koyup, izinleri ayarlayıp xinetd servisini yeniden başlatırsanız, yukarıdaki sayfada örnekleri verilmiş olan *.shit dosyalarını işleyebileceksiniz. Onun dışında html dosyalarını da gayet güzel sunabiliyor :)

[ Ek 2007-11-26: SHSP'nin yazarı benim yaptığım degişiklikleri web sayfasına yansıttı. ]

05 Ekim 2007

Ağ Teknolojileri Tarihçesi

ODTÜ Bilgisayar Topluluğu'nun hazırladığı elektronik dergi olan e-bergi'nin Ekim sayısında "Ağ Teknolojileri Tarihçesi" başlıklı kısa bir yazım yayınlandı. Bu yazıyı yazmama esin kaynağı olan olay ise bölümümüzün fotokopi odasında fi tarihten kalan bir vampir tapa bulmamız oldu. Anlam veremeyenler çok oluyor ama eski bilgisayar ve ağ donanımlarına bayılıyorum.

Daha önce de müzeye gönderilmekte olan iki adet Silicon Graphics(SGI) makinayı kurtarmıştım, bir Oxygen(O2) ve bir Indigo. Belki bir sonraki yazıda da bunları anlatırım. Oxygen'in en çarpıcı özelliklerinden birisi; tüm donanım tek bir vida kullanılmadan birleştirilmiş. Diskini, ses kartını ve güç kaynağını mandallarından tutup çekerek çıkarabiliyorsunuz. Bunlar günümüzde masaüstü makinalarda ve sunucularda olan özellikler; çarpıcı olan ise Oxygen'de anakartı da aynı şekilde çıkarabilmeniz ve de bu makinanın 1996'da tasarlanıp üretilmiş olması.

27 Mayıs 2007

Standartlar Yine Yeniden

Daha önceki yazılarımdan birinde blog sayfasını biraz uğraştıktan sonra standartlara uygun hale getirdiğimi yazmıştım. Aradan bir yıl gibi bir zaman geçtikten sonra blogger'ın yeni özelliklerini kullanmak üzere, sayfa şablonunu güncelledim ve bu standart uyumluluğunun ortadan kaybolduğunu gördüm. Hem XHTML 1.0 hem de HTML 4.01 standartlarına uyumsuz ucube bir sayfa ortaya çıktı. Verilen hata sayısı da uğraşılacak gibi değil, hatalar blogger şablonundan kaynaklanıyor. Günlüğümü doğru düzgün standartlara uygun bir yuvaya kavuşturana kadar sayfamda yer alan "Standartlara Uyalım" kısmını kaldırdım.

Bilgisayar Topluluğu e-dergi

ODTÜ Bilgisayar Topluluğu öğrencilerden oluşan ve amatör ruhla Bilgisayar/Bilişim/Bilgisayar Bilimleri alanında çalışmalar ortaya koyan bir topluluk. Türkiye çapındaki programlama yarışması bu alandaki öncü çalışmalardan birisi. IOI, ACM gibi uluslararası üne sahip yarışmalardan bile önce, Linux ortamına geçen ilk programlama/algoritma yarışması.

Bilgisayar topluluğu'nun yeni bir çalışması da e-dergi. e-bergi ismindeki dergide bilgisayar ve yazılım alanındaki güncel gelişmelerden oyunlara, bilgisayar bilimlerinden sosyal-hukusal konulara kadar geniş bir yelpazede yazılar bulabilirsiniz. Derginin isminin nereden geldiğini merak ediyorsanız, "compute" sözcüğüne Türkçe karşılık olarak önerilen "bermek" sözcüğünden türetilmiş, bu sözcüğün ilginç hikayesini hikayesini Berimsel bir deneme adlı yazıda bulabilirsiniz.

09 Nisan 2007

LDAP, finger, finger-ldap ipucu

Sistemdeki kullanıcıları LDAP veritabanında tutuyorsanız, debian depolarındaki "finger" paketinden çıkan finger komutunun yavaşlığı dikkatinizi çekmiştir. Bunun sebebi finger komutunun bütün kullanıcıların listesini alıp bu liste üzerinde arama yapması, yani her aramada bütün LDAP veritabanını çekiyor. Yine depolarda yer alan finger-ldap bu verimsizliği çözmek için yazılmış, istenen bilgileri verimli çalışan ldap aramalarıyla getirdikten sonra görüntülemesi için klasik finger'a veriyor. Çalıştırmayı ilk denediğimde aramayı düzgün yapmadı, finger-ldap'ın koduna baktığımda LDAP üzerindeki "cn" alanlarında arama yapmaya çalıştığını gördüm. Aşağıdaki gibi iki kullanıcım var
  • uid: gokdeniz; cn: Gokdeniz KARADAG; gecos: Gokdeniz KARADAG
  • uid: e1347590; cn: e1347590; gecos: GOKDENiZ KARADAG
"finger karadag" sadece ilkini gösteriyor. Kullanıcılar fi tarihinde NIS+'tan LDAP'a taşınırken hepsinin cn alanları düzgün olmamış, ancak hepsinin "gecos" alanları düzgün. finger-ldap'a "cn" yerine "gecos" alanlarına bakmasını söylemek için /etc/libnss-ldap.conf dosyasında aşağıdaki gibi bir ayar yapıyoruz.
nss_map_attribute cn gecos
Bunu yaptıktan sonra mutlu mesut finger çekebiliyoruz.
ENGLISH VERSION
If you use LDAP databases for users, you should have noticed the slowness of finger command from debian package "finger". This is because finger command gets the list of all users from LDAP for every finger search. finger-ldap is meant to solve this inefficency by making an efficent ldap search first, then handing the results to traditional finger commant for displaying. My first try with finger-ldap failed, the search was incomplete. When I looked at finger-ldap's code, I saw that that it performed LDAP search over "cn" field. I have two users;
  • uid: gokdeniz; cn: Gokdeniz KARADAG; gecos: Gokdeniz KARADAG
  • uid: e1347590; cn: e1347590; gecos: GOKDENiZ KARADAG
"finger karadag" shows only the first one. When users were migrated from NIS+ to LDAP, not all of them got correct "cn" fields. But they all have correct "gecos" fields. To tell finger-ldap to search "gecos" fields instead of "cn" fields, you should add the following line to /etc/libnss-ldap.conf file.
nss_map_attribute cn gecos
After this, we can successfully finger users.

26 Mart 2007

Programlama yarışması

ODTÜ Bilgisayar Topluluğu'nun her sene düzenlediği programlama yarışmasının onuncusu başladı bile. Programlama Yarışması web sayfasından ön eleme sorularına ve daha detaylı bilgiye ulaşılabilir. Bu yarışmanın önemli bir özelliği de, IOI ve ACM gibi dünya çapındaki programlama yarışmalarından daha önce Linux üzerinde yapılmaya başlanmış olması. Bu sene C ve C++ dillerinin yanına Java da eklenince yelpaze ve katılım biraz daha genişleyecek gibi.

12 Kasım 2006

Kodlama Belaları

Ne demişiz 19 Haziran 2006 tarihinde; "Artık biraz daha rahat olduğuma göre daha çok yazabilirim(ve de okuyabilirim)". Halk arasında durumu çok güzel açıklayan atasözlerini bulmak okuyucuya alıştırma olarak bırakılmıştır. :)

Neyse, bugünkü maceralarımız karakter kodlama sorunları ile ilgili. (encoding) Çeşitli yazılımsal sorunlar nedeniyle web sayfalarında " &ETH; &Yacute; &THORN; &eth; &yacute;" olarak gördüğümüz, yani hangi kodlamayla gösterirseniz gösterin "þ ð ý" olmakta ısrar eden yalancı Türkçe karakterlere yuvaya dönüş operasyonu için aşağıdaki ufak PHP kodunu kullanabilirsiniz. Bu kodu yazdığınız dosyayı utf-8 olarak kaydederseniz çıktınız utf-8, iso-8859-9 kaydederseniz de çıktınız iso-8859-9 kodlamasını taşıyacaktır. [[windows-1254 mü? o da ne? düşünmeyin bile, gidin standart bir kodlama kullanın :)]] Eğer çıktıyı bir dosyaya yönlendirmeyecekseniz, uçbirimde görüntüleyebilmeniz için uçbirim programının da bu kodlama seçimine uyumlu olması gerekir:
#! /usr/bin/php -f
<?php
$instring = file_get_contents($_SERVER['argv'][1]);
$search = array( "&thorn;", "&yacute;", "&eth;", "&Yacute;", "&THORN;", "&ETH;","&ouml", "&uuml;", "&Ouml", "&Uuml;", "&ccedil", "&Ccedil", "&quot;", "&lsquo;", "&rsquo;", "&ldquo;", "&rdquo;");
$replace = array( "ş", "ı", "ğ", "İ", "Ş", "Ğ", "ö", "ü", "Ö", "Ü", "ç", "Ç", '"', "'", "'", '"','"');
fwrite(STDOUT, str_replace($search, $replace, $instring ));
?>

Çalışırken neye benziyor peki ?
$ cat debelen.txt
aktar&yacute;m&yacute; a&THORN;a&eth;&Yacute;daki
$ ./tr-htmlentity.php debelen.txt
aktarımı aŞağİdaki


İkinci belamız, Outlook. Evet bizler zaten standartlara uygun özgür yazılımlar kullanıyoruz [[ değil mi ;) ]] ama şu ya da bu sebeple outlook kullanan birilerini tanıyorsanız, lütfen aşağıda anlatacağım ayarları yaptırın onlara.

Sorun şu, programlar e-posta ve haber grubu iletilerinde hangi kodlamanın kullandığını belirtmezse çeşit çeşit sorunlara yol açıyor ve Türkçe karakterler kendiliğinden düzgün görüntülenemeyebiliyor. Örneğin Thunderbird aşağıdaki gibi bir bilgiyi iletinin içine koyuyor, herkes hangi kodlama olduğunu bilebilir;
Content-Type: text/plain; charset=ISO-8859-9; format=flowed

Ancak Outlook ya da Outlook Express programları alakasız başka şeyler koymasına rağmen kodlamayı belirtmiyor.
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.2869
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2962
X-RFC2646: Format=Flowed; Response

Outlook kullanan yardımsever arkadaşlarımız iletilerin düzgün kodlama içermesi için gereken ayarı tespit etti [[ Teşekkürler Deniz İpek ve Günhan Gülsoy ]]

araçlar-> seçenekler-> gönder-> haber gönderme biçimi-> düz metin ayarları-> ileti biçimi ekranında yapılması gerekenler:
  • "MIME" seçili
  • "Metni kodlama: Yok"
  • "Başlıkta 8-bit karakterlere izin ver" seçili değil
Resimlerde de görebileceğiniz (İngilizce Türkçe) ayarlar yapıldığında aşağıdaki gibi, olması gereken bilgiler de iletinin içinde yer alıyor.
Content-Type: text/plain;
format=flowed;
charset="UTF-8";
reply-type=response

Bir de çok yerinde bir isme sahip DEMORONISER var, o da çok faydalı, kullanın kullandırın.

25 Temmuz 2006

Ubuntu Programları

Bir süredir tatildeyim. Biraz gezdim, dinlendim, bir sürü ıvır zıvırla da uğraştım. Uğraştıklarımdan birisi de Ubuntu'nun paket depolarından güzel programlar bulup çıkarmaktı. Depolar oldukça büyük olduğu için (18000'den fazla paket var) kapsamlı bir inceleme yazmak mümkün değil haliyle. Ama bulduklarımı ve denediklerimi bir liste halinde topladım. Listeyi yaparken GTK/Gnome uygulamalarını tercih ettim, çünkü gnome altından Qt/KDE uygulamalarını çalıştırmak bol miktarda kütüphane yüklediği için yavaş oluyor ve belleği tüketiyor. Genelde gnome için yazılmış programlar "özelliksizlik" sorunundan muzdarip. Çok temel ihtiyaçları güzelce karşılıyor, ancak bunun dışına çıkmaya çalıştığınızda gidebileceğiniz fazla bir yer olmuyor. Listede bunları da belirtmeye çalıştım. Tavsiye ettiğiniz bir program varsa eğer, yorum olarak yazarsanız sevinirim. Sözü fazla uzatmadan listeye geçiyorum.

Metin Düzenleyiciler

  • gedit : Ubuntu ile gelen varsayılan metin düzenleyici. Ahım şahım özellikleri olmamasına rağmen yavaş açılıyor. Dosyayı açtıktan sonra kodlamasını (iso/utf) değiştiremiyorsunuz ve bu bazen can sıkıcı olabiliyor.
  • gtkedit : Çok çok basit(ve böylece hafif) metin düzenleyici. kötü gtk1 görünümü var ama onu bile fark etmeyeceğiniz kadar az özelliği var. Yıldırım hızıyla açılıyor ve çok basit not tutma, metin düzenleme ihtiyaçlarını görüyor.
  • leafpad : Az özellikli, hafif, hızlı ve gtk2'nin güzel arayüzüne sahip bir metin düzenleyici.
  • mousepad : leafpad'in elden geçmiş hali. Menüleri aynı, yazıcı ve utf8 desteği konusunda değişiklik yapıldığı söyleniyor, leafpad'den daha aktif bir proje gibi göründüğü için bunu tercih ediyorum.
  • tea : bol özellikli metin düzenleyici
  • gnotepad+ : pek çok özellik barındıran(html düzenleme, rcs, cvs desteği) ama yine de hafif kalabilmiş bir metin düzenleyici. çirkin gtk1 arayüzüne katlanabilirseniz oldukça hızlı ve kullanışlı olabilir.
  • mped : Ortalama özelliklere sahip bir metin düzenleyici, arayüzünde yer almayan ancak "Execute editor function" altından ulaşabileceğiniz özellikleri var.
  • kate : Bence temel bir metin düzenleyiciden beklenecek her şey kate'te var. (KDE Uygulaması)
  • vim ve emacs : Efsanelerimiz en sonda, yorum yok :D

RSS Okuyucuları

  • blam : Tipik gnome "özelliksizliğine" sahip bir rss okuyucu. rss'leri dizinlere ayıramıyor.
  • liferea : Gayet başarılı bir rss okuyucu, yeterli özelliğe sahip, rss'leri dizinlere ayırabiliyorsunuz. RSS okuyucu olarak bunu tavsiye ediyorum.
  • yarssr : Sistem çekmecesine yerleşen bir rss izleme aracı. Rss'leri programın içinde okumak yerine, sadece güncellendiğini haber almak ve yeni başlıklara bakmak istiyorsanız kullanışlı.

Müzik ve Video Çalarlar, Müzik Araçları

  • amaroK : Müzik çalarlar arasında bence rakipsiz. Denemeden inanmıyor olabilirsiniz, mutlaka tavsiye ederim. (KDE Uygulaması)
  • rythmbox ve banshee : Bu ikisi birbirine çok benziyor, bunlara benzeyen daha başka müzik çalarlara da internette rastlamak mümkün, amarok kadar yeterli değiller. Acilen amaroK için GTK portu yapmam lazım :)
  • beep-media-player : xmms benzeri, hafif, kütüphane desteği olmayan bir müzik çalar.
  • xmms : Bu program uzun zamandır güncellenmiyor, web sayfasında da geyiğini yapmışlar. Abuk bir Solaris sistemdeki tek müzik çalar olduğu durumlar dışında kullanmıyorum.
  • zinf : Kütüphane desteği olan, görünüş olarak beep ve xmms'e benzeyen bir program. Kütüphane ile sorunlar yaşadım ve kullanmıyorum.
  • totem : Kütüphane desteği yok, bir yerlerde bir müzik/video dosyası görünce çift tıklayıp dinlemek için kullanıyorum.
  • mplayer : bir klasik :) Genelde videolar için kullanılıyor.
  • VLC : Mplayer'ın kuzeni, ikisinde birden sorun çıkaran dosyalardan ümidi kesebilirsiniz.
  • mp3wrap : birden fazla mp3 dosyasını ardı ardına ekleyen bir komut satırı aracı
  • mp3splt : mp3 ve ogg dosyalarını bölmeye yarayan bir komut satırı aracı
  • nautilus-script-audio-convert : müzik dosyalarının türünü değiştirmeyi kolaylaştıran nautilus eklentisi, nautilus-script-manager ile kendi hesabınıza kurmanız gerekli önce.

Müzik dosyaları için tag düzenleyiciler

  • cowbell : özellikleri yetersiz, Sadece dosyaları seçip "sanatçı adı" , "Albüm" gibi alanları doldurabiliyorsunuz.
  • exfalso : Dosya isminden etiket doldurma, etikete göre dosyaya isim verme gibi özellikleri olan yeterli bir program. Seçtiğiniz dosyalarda var olan etiketler hakkında bilgi vermesi güzel, "şu kadar şarkıda sanatçı ismi yok" gibi. Parça numaralarını da sürükle bırak ile düzenleyebiliyorsunuz.
  • easy tag : Bol miktarda özelliğe sahip, dosya isminden etiket doldurma, etikete göre dosyaya isim verme özelliklerinin yanında, etiketleri de güzel görünmesi için şekle sokabiliyorsunuz. Seçilen dosyalar hakkında exfalso'daki gibi bilgi vermiyor ve parça numaralarını ayarlamak biraz daha zahmetli.

Not Alma / Bilgi Düzenleme

  • vym : mindmap/Zihin haritası programı. Birbirleriyle ilişkili maddeler tanımlamak ve bunları görselleştirmek için.
  • kdissert : mindmap/Zihin haritası programı. Resimler ekleyebiliyor, çıkan sonucu html veya latex dosyasına çevirip planını kdissert'te yaptığınız bir belgenin taslağını elde edebiliyorsunuz. (KDE Uygulaması)
  • gjots2 : Hiyerarşik olarak notlar almanıza yarayan faydalı bir program. Kaydettiğiniz dosyaları HTML veya Docbook XML biçimine çevirebiliyorsunuz.
  • notecase : gjots'tan daha az özelliğe sahip bir program.
  • kjots: gjots, bu program temel alınarak oluşturulmuş ve aynı dosya biçimini kullanıyorlar(KDE Uygulaması), hemen hemen aynılar.
  • gnome-think : Eski, gnome "özelliksizliğinden" muzdarip ve çirkin gtk1 arayüzüne sahip bir hiyerarşik not tutma aracı. Uzak durun :)
  • zim : Masaüstü wikisi, bir wiki sahibi oluyorsunuz ve sonra bunu diskinize kaydediyorsunuz.

Masaüstü ve Panel Zamazingoları

  • gkrellm : Biraz eski bir program ama halen iş görüyor. Sistemin durumunu (ağ trafiği, sıcaklık, kullanılan bellek, pil doluluğu...) takip etmek için kullanabileceğiniz gibi; saat, ayın hali gibi diğer şeylere de sahip. Üst üste koyabileceğiniz pek çok parçası var(krell isminde). Aynı anda birden fazla gkrellm çalıştırıp bunları istediğiniz şekilde yerleştirebilirsiniz. Görüntüsü kötü gibi ama SigelOS temasını kurarsanız gayet güzel oluyor.
  • gdesklets : gkrellm'den daha janjanlı, ancak çok çok daha fazla kaynak tüketiyor. Web sayfasına gidip yeni deskletler ekleyebiliyorsunuz. Hatta ubuntu'nun gdesklets-data paketindekileri kurmak yerinde web sayfasından daha yeni sürümleri çekebilirsiniz. Gdesklets'in beni rahatsız eden noktası, deskletlerin şekilleri alakasız ve birbiriyle uyumsuz olabiliyor, tam da olması gereken ayarlar eksik olabiliyor. Gkrellm şeklen daha kısıtlayıcı olduğu için görsel uyum sorunu yok ve krellerin çoğunda tatmin edici ayarlar var.
  • deskbar : Panele yerleşen bu eklenti ile siz yazıyorsunuz o size seçenekler sunuyor. Webde arama yapmak, dosyaları ve programları bulmak, sözlüğe bakmak, e-posta göndermek gibi pek çok şey yapabiliyorsunuz.
  • gspot : Panele yerleşen, webde çeşitli arama motorlarından ve imdb gibi veri tabanlarından aramalar yapmak için bir araç, ben firefox'un anahtar kelimelerini daha pratik buluyorum.
  • baobab : Diskinizdeki klasörlerin ne kadar yer kapladığını gösteren faydalı bir program.
  • glipper : Bu faydalı program maalesef ubuntu depolarında bulunmuyor, web sayfasından indirip derlemeniz gerekiyor. Ancak buna değecek bir şey; kopyaladığınız metinleri hafızasında tutuyor, paneldeki simgesine tıklayıp hangi metni yapıştıracağınızı seçebiliyorsunuz. KDE'deki Klipper'ın gnome karşılığı, ancak Klipper'da olduğu gibi seçili metin üzerinde otomatik işlemler yapmıyor.
  • mail-notification : E-posta hesaplarınızı kontrol ediyor yeni bir şeyler varsa sizi uyarıyor. Okunmamış e-postaların konularını ve kimin gönderdiğini görebiliyorsunuz. Bu işi yapan programlar arasında en etkilisi ve en çok özelliğe sahip olanı mail-notification.
  • tilda : KDE'deki yakuake benzeri bir uçbirim(terminal) programı. Bir tuşa bastığınızda FPS oyunlarındaki gibi ekranın üstünden iniyor. Sekmelerle birden fazla uçbirim açabiliyorsunuz ve diğer masaüstlerine geçseniz bile halen tek tuş uzağınızda oluyorlar. Eğer komut satırına sık sık işiniz düşüyorsa mutlaka deneyin.

Metin Dosyaları

  • trscripts ve recode : Dosyaların kodlamasını değiştirmek için kullanılabilecek araçlar.
  • par : Paragrafları güzelce hizaya sokmak için bir araç, komut satırından ya da diğer metin düzenleyiciler (mesela vim) içinden çağırabilirsiniz.
  • tidy : html dosyalarını kontrol etmek, düzeltmek ve biçimlendirmek için bir araç
  • miscfiles : Ciddi anlamda "ıvır-zıvır" içeren düz metin dosyaları, /usr/share/misc altında bulabilirsiniz.
  • mimetex : LaTeX dosyalarından doğrudan gif resimleri üreten bir program.

Şifre Depoları

  • revelation : Gayet başarılı bir şifre depolama programı. Hangi siteye hangi e-posta adresiyle hangi şifreyle üye olduğunuzu hatırlamakta zorlanıyorsanız bunları revelation'a veriyorsunuz, klasörlerle kategorilere ayırıyorsunuz, ve şifrelenmiş bir dosyada saklıyorsunuz. Şifrelerinizi saklamak için başka bir programa geçecekseniz, kaydettiklerinizi pek çok biçimden birini seçerek aktarabiliyorsunuz.
  • gpass : Tipik Gnome özelliksizliği, arama yok, klasör içinde klasör oluşturulamıyor, diğer şifre deposu programlarına aktarma özelliği yok.

Oyunlar

  • sgt-puzzles : pek çok küçük ve eğlenceli oyun içeriyor, oyunlar grafik ortamda çalışıyor.

Ağ ve Sistem Araçları

  • smartmontools : SMART kullanarak sabit disk sağlığını kontrol eden araçlar.
  • os-prober : Bir disk bölümünde hangi işletim sisteminin olduğunu gösteriyor.
  • procinfo : /proc dizinini kullanarak sistem hakkında bilgi edinme aracı.
  • tcptraceroute : TCP üzerinden çalışıyor, böylelikle ICMP paketlerini engelleyen güvenlik duvarları olsa bile çalışıp paketlerin yolunu bulmanızı sağlıyor.
  • dnstracer : DNS sorgunuza hangi sunucunun ne cevap verdiğini görebileceğiniz bir araç.
  • iptraf : ağ trafiğini izlemek ve loglamak için ncurses tabanlı bir araç
  • debian-goodies ve grep-dctrl : deb paketlerini kurcalamak için kullanabileceğiniz bir sürü araç.
  • binfmt-support : Linux'un binary program desteğini sınırsız genişleten binfmt için yardımcılar. mesela binfmtc paketini kurarsanız herhangi bir .c dosyasını doğrudan çalıştırabiliyorsunuz. Denemeye değer :)

Programlama

  • kiki : Düzenli ifadeleri (regular expression) örnek metin üzerinde deneyebileceğiniz bir program.

19 Haziran 2006

Vay be

Mezun oldum sonunda :) Artık "Bilgisayar Mühendisliği eğitimini tamamlayıp Lisans derecesi almıştır" diyen bir diplomam var. "Bilgisayar Mühendisi" olamadık zira ortalıkta "Yetkin Mühendislik" diye bir kavram dönüyor ve bunun adımları bizde uygulandı(Bu konuya başka bir platformda değineceğim). Bölümümüzde bitirme projeleri arasında yapılan yarışmada bizim grubumuz birincilik ödülünü aldı, bu da mezuniyet öncesi sevindirici bir gelişme oldu benim açımdan.

4 yıl okul yetmemiş gibi devam ediyoruz; hem yüksek lisans, hem de asistanlık. Bakalım zaman neler getirecek

Yazmayalı çok olmuş, gerçekten özlemişim. Artık biraz daha rahat olduğuma göre daha çok yazabilirim(ve de okuyabilirim). Sayaç olarak kullandığım reklamları kaldırdım daha düzgün bir sayaç ekledim (Google Analytics) Biliyorum buraya gelenler var, bir kısmı arama motorlarından o belli; bir kısmının da ara sıra "bakalım ne yazmış" diyenlerden olduğunu ümit ediyorum. Yazdıklarımla ilgili bir yorumunuz veya tavsiyeniz varsa, "berbat bir blog" ya da "devam et iyi böyle" demek içinizden geçiyorsa kapım [[ e-posta kutum :) ]] her zaman açık:
gokdeniz.karadag (@salyangoz@) linux.org.tr

Makinamdaki Pardus 1.0 gitti yerine Ubuntu 6.06 Dapper Drake geldi. Çok şirin, çok güzel ve kullanışlı. Gnome uygulamalarındaki ortak seçenek fakirliği bazen sinir etse de KDE'ye kıyasla çok daha şık görünmeye başladı gözüme. [[ Zaten düzenli aralıklarla farklı masaüstü ortamlarına yöneliyorum, sarkaç misali :) ]] Benim için güzel bir gelişme de makinayı ( ASUS M6000R / M6R ) aldığımdan beri süren ACPI süründürüşüne bir son verdim. İki yıldır kıl eden ama bir türlü oturup üzerine eğilmediğim sorunun çözümünün iki satırlık bir yama olduğunu görmek beni afallattı ama sorun da çözüldü. Artık ACPI düzgün çalışıyor (düğmeler, pil durumu vs.) ve yeniden bir heves geldi içime. Bu kadar rahatlayacağımı bilsem daha önce uğraşırdım :)

18 Nisan 2006

Linux altından diğer dosya sistemlerini görebilmek

Linux kullanırken yeni bir diski veya diskinizdeki diğer bölümleri kullanmak istiyorsanız, kesin ve garantili yöntem bu yazıda.

Linux dağıtımları disk bölümlerini /etc/fstab dosyasının içinden okurlar. Kurulum sırasında disk bölümlerinize bağlanacakları yerleri gösterirseniz bir sorun yaşamadan onları kullanmaya başlayabilirsiniz. Ya da dağıtımınızın grafiksel araçlarıyla bu işi halledebilirsiniz. Ama kurulum aşamasını geçtiyseniz veya diskin içini görebildiğiniz halde dosyalara müdahale etme izniniz yok deniyorsa fstab dosyasından bir satırla bu işi halledebilirsiniz.

Bir örnekle başlayalım;
/dev/hda1 /mnt/disk1 vfat utf8=true,rw,fmask=0111,dmask=0000,auto,noatime 0 0
Burada görmekte olduğunuz şey, boşluklarla ayrılmış alanlardan oluşan tek bir satır. Alanların detayları da aşağıda:
  • /dev/hda1: bağlayacağımız disk bölümünün adı. Daha önceden mutlaka duymuş olduğunuz gibi [[ :) ]] hda1, primary master diskin ilk bölümü.
  • /mnt/disk1: bu disk bölümünü nereye bağlayacağınız. Bu dosyayı elle düzenliyorsanız, bu dizini de elle oluşturmanız lazım.
  • vfat: dosya sistemi; ntfs, ext3, reiser, xfs vs. de olabilir. Burada açıklanması gereken bir nokta; Linux'ta ntfs dosya sistemlerine müdahale etmek henüz tam olarak desteklenmiyor. Risk almamak için aşağıdaki "rw"yi "ro" yapın. ntfs'nin iç yapısı tam olarak bilinmediği(açıklanmadığı) için bir takım ters mühendislik yöntemleriyle sorunun üstesinden gelinmeye çalışılıyor. Captive NTFS yardımınıza koşabilir, mümkünse dağıtımınızın paket depolarından indirin. Bazı dağıtımlarda ntfs okumak için gerekli çekirdek modülü de bulunmayabiliyor. "modprobe ntfs" ile şansınızı denedikten sonra da olmuyorsa dağıtımınızın sitesinden/forumlarından gerekli paketleri aramaya bakın.
  • Buradan sonra virgülle ayrılmış bir sürü seçeneğimiz geliyor.
    • utf8=true : dosya sisteminde utf8 kodlamasının kullanılacağını gösterir. Türkçe karakterle sorun yaşamamak için.
    • rw : dosya sisteminin oku/yaz olarak bağlandığını gösterir. İzinler ne olursa olsun burada "ro" derseniz o disk bölümündeki dosyalarda herhangi bir değişiklik yapamazsınız.
    • fmask=0111,dmask=0000 : izinlerimiz. Bu izinler herkese okuma yazma hakkı veriyor, eğer makinanızda başka kullanıcılar varsa böyle yapmayın tabi. Ama fat32 üzerinde kullanıcı/izin bilgisini tutamazsınız. Linux dosya sistemlerinden birini kullanın(ext3, reiserfs ...) fmask ile dosyalardaki çalıştırma iznini kapatıyoruz ki abuk subuk renklere ve simgelere bürünmesinler.
    • auto : Sistemin her açılışında bu dosya sisteminin bağlanmasını söylüyoruz
    • noatime : Dosyalara son erişim zamanını tutmamasını söylüyoruz. Performansa olumlu etkileri var.
  • 0 0 : Boş geçiniz, sıfır olarak kalsın bunlar. [[ çok merak ettiyseniz man fstab size cevap olacaktır]]
Root yetkilerine sahipken fstab'da bu değişiklikleri yaptıktan sonra yine root olarak aşağıdaki komutlardan uygun olanı vermelisiniz ki değişiklikler uygulansın. yeni bir dosya sistemi için yeni bir satır eklediyseniz
mount /dev/hda1
Var olan bir satırdaki seçenekleri değiştirdiyseniz
mount -o remount /dev/hda1

23 Mart 2006

Standartlar, Şenlik, Yarışma

Biraz kurcalayarak ve bir miktar amelelik yaparak şu anda görmekte olduğunuz siteyi HTML 4.01 Transitional standardına uygun hale getirdim, pek de iyi ettim. Hemen logoyu yerleştirdim sayfaya. Siz de tıklayıp kontrol edebilirsiniz uyum derecesini :) Herkes standartlara uymaya özen gösterse pek çok sorunun ortadan kalkacağı aşikar.

5. Linux ve Özgür Yazılım Şenliği yanda da görebileceğiniz gibi 11-14 Mayıs 2006 tarihlerinde ODTÜ Kültür ve Kongre Merkezi'nde yapılacak. Çok güzel ve faydalı bir şenlik olacağından emin olabilirsiniz.

ODTÜ bünyesinde faaliyetlerini sürdüren bir öğrenci topluluğu olan ODTÜ Bilgisayar Topluluğu'nun düzenlediği 9. Geleneksel Programlama Yarışması ön elemeleri devam ediyor. Yarışma, tüm üniversite lisans öğrencilerine açık. Benzerleri arasında Linux işletim sistemi üzerinde düzenlenen ilk yarışma olma ayrıcalığını taşıyan yarışmayla ilgili detaylara, katılım formuna ve sorulara yarışma sayfasından ulaşabilirsiniz.

12 Mart 2006

Bir kaç izin meselesi

İki adet gentoo linux kurulu ve çok sevdiğim makine var elimde, sunuculuk yapıyorlar kendileri. Övünmek gibi olmasın, bir yıla yakın bir zaman boyunca ikisi de açık durdular. Bu süre zarfında gentoo'da çok şey değişti, devfs'ten udev'e geçmek gibi köklü bir değişim oldu. Sunucuların kapanma zamanı geldiğinde hem çekirdekteki devfs desteğini çıkarmak, hem de diğer güncellemelerden faydalanmak için bir de çekirdek güncellemesi yaptım. Güncellemeler ve yeniden başlatma başarılı geçti, mutlu mesut gidiyorduk.

Ancak ufak tefek bir kaç sorun gözüme çarptı. SSH sunucusunun tuttuğu kayıtlarda, sisteme ssh ile her giriş yapanın arkasından şöyle bir hata düşülüyordu;
error: open /dev/tty failed - could not set controlling tty: Permission denied
Ayrıca çok faydalı bir program olan screen'i sıradan bir kullanıcı olarak çalıştırmaya çalıştığımda aşağıdaki hatayı verip kapanıyordu, root iken böyle bir sorun olmuyordu.
No more PTYs
Could not find a PTY
Ve işin ilginç yanı makinalardan sadece birinde oluyordu bu hatalar, diğeri gayet sorunsuzdu.

Elimde birbirine benzer iki makine olduğu için deneme ve karşılaştırma imkanım vardı. Her sorunla karşılaşanın yapması gerektiği gibi, verilen hata mesajlarını Internette arattım. Forumlarda ve e-posta listelerinde ipuçları buldum. Sorunun kaynağı aygıt dosyalarının izinleriydi. Bir şekilde güncelleştirmeler sırasında izinlerde bir sorun çıkmıştı, ve bu sorun sadece bir makinada olmuştu. Çözümü de şuydu; /dev/tty ve /dev/ptmx dosyaları herkesin yazabileceği şekilde durmalıydı. Hemen bir chmod
chmod a+rw /dev/tty /dev/ptmx
Ve sorunlar kaybolur...

Yeri gelmişken bir screen sorununun daha çözümünden bahsedeyim. Normalde vim ile bir dosyayı düzenledikten sonra çıktığınızda, vim'e girmeden önceki komut satırını aynen bulursunuz. Ancak vim'i screen altından çalıştırdığınızda, komut satırının önceki görünümü geri gelmez ve vim ile düzenlediğiniz dosyanın son görünen kısmı ekranda kalır. Bunun çözümü de ~/.screenrc dosyasına
altscreen on
satırını eklemek. Açıkçası bu değişikliğin neler yaptığına bakmadım, screen'in e-posta listelerinden bulduğum bir çözüm ve çalışıyor :)

15 Şubat 2006

İsimler önemlidir, dikkat etmek gerekir

Tanıştıklarınızın isimlerini unutmamanız gerekir, bir şeye isim verirken özen göstermek gerekir, çünkü isimlendireceğiniz şeyle birlikte yaşayacaktır vereceğiniz isim. Evet isimlendirmek betikler için de önem taşıyor, başıma gelen bir olay bunu iyice öğretti bana.

E-posta sunucumuzda postfix'in yanında gri liste programı olarak postgrey kullanıyoruz uzun süredir. Gelen spam miktarında gözle görülür elle tutulur bir azalma yaşadık. Ancak başımıza gelen bazı üzücü durumlar da oldu. Postgrey, kullandığımız bir yıllık süre içinde 3-4 defa çöktü. Program hiç iz bırakmadan hata vermeden sırra kadem basıyordu. Postgrey çöktüğünde e-posta sunucusu postfix karşı tarafa "Bu tarafta bir ayar hatası var, sonra deneyin" cevabını dönüyor, ve bunu da kayda düşüyor. Genellikle kayıtları düzenli olarak takip ettiğim için kısa süre içinde duruma müdahale edip postgrey'i ayağa kaldırıyordum. Bir keresinde ben tatildeyken çöktü ve bir buçuk hafta müdahale edilmedi, geri döndüğümde kimlere e-postaları ulaşmamış ayıklayıp haber vermem gerekti. Buna bir çözüm bulmak için ufak bir betik yazdım, postgrey-kontrol. Eğer postgrey ölürse, durumu bana haber veriyor ve postgrey'i zorla yeniden başlatıyordu, içeriği de şöyle [[ Evet içerikte yazım hatası var :) Halen böyle ]]
ps -ef |grep postgrey| grep -v grep
if [ $? -ne 0 ]
then
   date >> /var/log/postgey-cok.log ;
   mail -s postgrey_coktu root < /var/log/postgey-cok.log
   /etc/init.d/postgrey zap;
   /etc/init.d/postgrey start;
fi
Sonra bunu cron ile düzenli aralıklarla çalışacak şekilde ayarladım.

Buraya kadar her şey normal değil mi ? Değil. postgrey yine çöktü ve bana haber falan gelmedi. Yoğun olduğum için kayıtlara da bakamadım ve yine bir kaç gün kapımızdan geri çevirdik mesajları. Sorunu anlamaya çalıştım. Betik içindeki ilk satırı komut satırına yazıyorum ve dönen değere bakıyorum, 1. Yani çalışan programlar arasında postgrey diye bir şey yok. Komut satırında sonraki if'i de deniyorum, tamam o da çalışıyor. Ama postgrey-kontrol dosyasını çalıştırıyorum tepki yok. Elle düzeltip bir süre daha kendi haline bıraktım :) Ve yine çöktü ! Bu sefer kesin bir çözüm bulmam gerekliydi. Bu arada sorunun olası sebeplerini de postgrey listesine yazıp görüş aldım, halen neden çöktüğü konusunda bir sonuca ulaşamasam da, benim yazdığım betiğin neden çalışmadığını anladım; yazının başında da değindiğim gibi, isim önemlidir. "postgrey-kontrol" betiği çalışırken, ilk satırdaki komutlar 0 dönüyor, çünkü çalışan programlardan birinin adında "postgrey" var, kendisinin :) Betiğin adı postkontrol yapılır, mutlu mesut beklenir; bakalım bir daha ne zaman çökecek ve bu sefer sorunun asıl kaynağını gösterecek bir iz bırakacak mı.

Bu yazıyı yazmamın asıl amacı ise, gri liste faydalı bir şey :-P Hatalı tespitlere fırsat vermeden spamlerden ve virüslerden büyük oranda kurtuluyorsunuz. Eğer e-posta sunucusu çalıştırıyorsanız mutlaka göz atın derim.

02 Şubat 2006

Rahat bir nefes

En sonunda eksik kalan notumu da tamamladim; böylelikle 2005-2006'nın birinci dönemini bitirmiş oldum. Yani teoride bir aydır tatilde olan ben, pratik olarak da tatile girmiş oldum. İşin güzel yanı, tatile başladığım gün ders kayıtlarımı yaptırdım ve pazartesi günü derslerim başlıyor, ne kadar iç açıcı değil mi :)

Ben yine de fırsattan istifade ettim, bir yerleri kurcalamadan duramadım. Kendi kendine güncelleşen sunuculardan birinin ayar dosyalarındaki değişiklikleri yaptım ( bkz. gentoo ve dispatch-conf ) Sonra kendi kendine günceleşememiş diğer sunucunun derdine derman oldum. Gentoo PHP paketlerinde çeşitli değişiklikler olmuş, paketler birleştirilmiş ve kategorileri değiştirilmiş. Gereken yapıldı, yaklaşık yarım saatliğine kapalı duran bir web sunucusu ve küresel ısınmaya bizden biraz daha katkı sonrasında(derle derle derle) yeni PHP çalışmaya hazır. Uykunun ağırlığı ile gözlerim kapanmaya başlarken diğer güncellemeler de yerine oturuyor.

Bu arada günün screen ipucu: Uzuuuuun çıktısı olan bir komutu başlattınız, bu çıktı içinde bakmanız gereken yerler olacak, ama aralıklarla ve düzensiz bir biçimde. Aksilik bu ki komutun çıktısını bir dosyaya yönlendirmeyi de unuttunuz. Screen imdadınıza yetişiyor ve... (screen kullanıyorsunuz değil mi ?) control-a H ile komutumuzun çıktısını bir dosyaya kaydetmeye başlıyoruz ( ve aynı tuş vuruşlarıyla kayıt işlemini bitirebiliyoruz )

28 Aralık 2005

Bozulan grub'ı geri getirmek

Son zamanlarda çıkan pek çok dağıtım grub önyükleyicisiyle geliyor. Ancak çeşitli sebeplerden dolayı grub uçtuğunda onu geri getirmeniz gerekebilir. [[ Bu uçmanın sebepleri olarak, size sormadan kendisini doğrudan MBR'ye yazan işletim sistemlerinden kurmanız gösterilebilir ;) ]]

Çözüm olarak; bir çalışan CD (live CD) ile bilgisayarınızı açın. Bu çalışan CD'nin içinden komut satırını açın ve root yetkilerini alın. "su -" yazmanız yeterli olacaktır büyük ihtimalle. Daha sonra da "grub" komutunu çalıştın. Şimdi sizden bir şeyler yazmanızı bekliyor ( "grub> " yazısından bunu anlayabilirsiniz. )

İşi yapmadan önce ufak bir şey bilmeniz gerekiyor. Grub diskleri isimlendirmek için Linux dosya yapısından farklı bir yol izler. Disklerin takılı olduğu IDE kanalları, master/slave ayarlarına bakmaz. Takılı olduğu sıraya bakar ve de saymaya sıfırdan başlar. İlk diskiniz (hd0), ilk diskin ilk bölümü (hd0,0) olarak adlandırılır. İkinci diskiniz (hd1), ikinci diskin 5. bölümü (hd1,4) adındadır. Çok fazla kafanızı karıştırmaya gerek yok, "(hd" yazıp <Tab> tuşuna bastığınızda grub sizin için gerisini tamamlamaya çalışacaktır, tamamlayamıyorsa da bir liste çıkarıp size yol gösterecektir. Zaten büyük ihtimalle Linux'unuz ilk diske kuruludur, /dev/hda5 gibi bir yere, ve de "/boot" dizini için ayrı bir bölümünüz yoktur. Kurarken bunları seçmiştiniz ama devam etmeden önce bilmeniz lazım, "fdisk -l" işinizi görebilir. Çıkan listede diskinizin genel yapısı yer alır, orada Linux'un kurulu olduğu bölümün adını ve de "/boot" bölümünüz olup olmadığını hatırlayın. Boot için ayrı bölümünüz yoksa, "/boot" dizininiz Linux'un asıl kurulu olduğu yerdedir.

Grub komut satırına "/boot" dizininizin bulunduğu disk bölümünü belirteceğiz. ( örnek; Linux'un /dev/hda5'te kurulu olduğu ve ayrı boot bölümü bulunmayan bir sistem için )
grub> root (hd0,4)
grub> setup (hd0)
grub> quit
Bilgisayarın açılması için gereken dosyaları(/boot dizini) nerede bulacağını bildirdik. Onları ilk diskin MBR kısmına yazmasını söyledik, ve grub'dan çıktık.

Bu kadar :) CD'yi çıkartıp bilgisayarı yeniden başlattığınızda grub menüsünün görünmesi lazım.

Ubuntu'da Türkçe klavye ayarları

Ubuntu 5.10 sürümünün varsayılan kurulumunda Türkçe klavye ile ilgili bir sorun çıkıyor. AltGr tuşu etkisiz kalabiliyor veya Türkçe karakterlerde sorun yaşanabiliyor. Aşağıdaki gibi bir değişiklik bunu çözüyor:

Root yetkileriyle /etc/X11/xorg.conf dosyasını açın. Klavye ile ilgili kısma gelin, aşağıdaki gibi görünüyor olmalı:
Section "InputDevice"
    Identifier "Generic Keyboard"
    Driver "kbd"
    Option "CoreKeyboard"
    Option "XkbRules" "xorg"
    Option "XkbModel" "pc105"
    Option "XkbLayout" "tr"
    Option "XkbVariant" "q"
EndSection
Burada Option "XkbVariant" "q" satırını silin. Grafik ortamı yeniden başlattığınızda ( mesela kullanıcı hesabınızdan çıkarak) daha mantıklı davranan bir klavyeniz olacak. Daha sonra Gnome veya KDE ayar araçlarıyla klavye düzenini gönlünüze göre ayarlayabilirsiniz.

Kaynaklar:   [1]   [2]

23 Aralık 2005

Komut satırından Linux ağ ayarları

Çeştli Linux dağıtımlarında ağ ayarlarını yapmak için grafiksel araçlar var. Ama elinizde böyle bir araç sunmayan bir dağıtım varsa ya da sadece ssh ile erişiminiz olan bir makinanız varsa, kısacası komut satırıyla baş başa kaldıysanız; işte ağ ayarları nasıl yapılır burada:

Bu işlemleri yaparken root yetkilerine sahip olmanız gerektiğinin farkındasınız değil mi ?

Önce makinamız kendisini bilsin, bulunduğu ağı bilsin. Örneğin ip adresimiz xxx.xxx.xxx.xxx, netmaskımız 255.255.255.0 olsun
$ ifconfig eth0 xxx.xxx.xxx.xxx netmask 255.255.255.0 broadcast xxx.xxx.xxx.255 up

Daha sonra gatewayimizi ayarlayalım ki dışarıya nereden çıkabileceğimizi bilelim. Ancak bunu ayarlayabilmek için sizin de gateway ip adresinizi bilmeniz gerekli :) Büyük ihtimalle ip adresinizin son kısmını "1" yaparak gateway adresinizi bulursunuz. ADSL modem arkasındaysanız, modemin ip adresini girmelisiniz.
$ route add default gw xxx.xxx.xxx.1

En son olarak da makina isimlerini ip adresine çevirebilmek için gereken DNS sunucularımızı bilmeliyiz. Bunun için de; ya ağınızdaki DNS sunucusunun ip adresini bileceksiniz, ya da adresini bildiğiniz bir sunucu kullanacaksınız. En az iki adet DNS sunucusu kullanılması adettendir ;)
$ cat > /etc/resolv.conf << EOF
nameserver yyy.yyy.yyy.yyy
nameserver zzz.zzz.zzz.zzz
EOF

Bunları yaptıktan sonra internete erişebilmeniz gerek, bir yerlere ping atarak bağlantıyı deneyebilirsiniz.
$ ping www.yahoo.com
PING www.yahoo.akadns.net (216.109.118.73) 56(84) bytes of data.
64 bytes from p10.www.dcn.yahoo.com (216.109.118.73): icmp_seq=1 ttl=52 time=157 ms
64 bytes from p10.www.dcn.yahoo.com (216.109.118.73): icmp_seq=2 ttl=52 time=149 ms
64 bytes from p10.www.dcn.yahoo.com (216.109.118.73): icmp_seq=3 ttl=52 time=155 ms
64 bytes from p10.www.dcn.yahoo.com (216.109.118.73): icmp_seq=4 ttl=52 time=156 ms
--- www.yahoo.akadns.net ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3012ms
rtt min/avg/max/mdev = 149.311/154.830/157.882/3.289 ms

Eğer sorun yaşıyorsanız, önce "ifconfig" ile ip adresini düzgün alıp almadığına bakın, sonra sırasıyla gateway'e ve DNS sunucularına ping atmayı deneyerek sorunun kaynağını tespit etmeye çalışın.

Güncelleme: DHCP var bir de, pek güzel :) DHCP kullanan bir ağda iseniz "dhclient" ya da "dhcpcd" komutlarını root olarak çalıştırmanız durumunda bilgisayarınız DHCP sunucusundan ip adresi, ağ geçidi(gateway) adresi, DNS sunucuları gibi bilgileri almaya çalışacak. Düzgün ayarlanmış bir DHCP sunucusuna erişebiliyorsanız ağ bağlantınız kurulmuş olacak.

Tabii bütün bunlar geçici ayarlar yapmak içindi, ayarları kalıcı hale getirmek istiyorsanız dağıtımınıza uygun ayar dosyasını düzenlemeniz gerekli, örneğin debian türevlerinde /etc/network/interfaces dosyasına aşağıdaki gibi satırlar girmelisiniz.(DHCP için örnek)
auto eth0
    iface eth0 inet dhcp
Ve de statik ayarlar için;
auto eth0
iface eth0 inet static
     address xxx.yyy.zzz.ttt
     netmask 255.255.255.0
     broadcast xxx.yyy.zzz.255
     gateway xxx.yyy.zzz.1

13 Aralık 2005

Hayatınızı değiştirecek kapı

Bugün ODTÜ Metalurji ve Malzeme Mühendisliği bölümünde çekilen bu güzel fotoğrafı sizlere sunmaktan gurur duyuyorum. "Dumur" da diyebilirdik sanırım başlığa :)