‘Projeler’ Kategorisi için Arşiv
Common Logger: Pratik bir günlük kütüphanesi

Günümüzde neredeyse her program penceresinde ya da konsolda söylediklerinden fazlasını günlüklerine yazıyor. Bu günlükler programların yanında olabileceği gibi işletim sistemlerinin belirlediği yerlerde (Windows’da merkezi bir servis, Linux’da /var/log dizini) bulunabiliyor. Yıllardır kullanılan bu yöntem için bir çok kütüphane de var.
Peki bu kadar oturmuş bir yöntem için yeni bir kütüphaneye neden ihtiyaç var? Nedeni basit esasında. Java’nın içinde gelen logger, devasa bir yapı. Linux’un syslogger sistemi de büyüklükte Java’dan geri kalmıyor. Ya istediğiniz basit bir şey ise? Sadece ekrana ve dosyaya pratik şekilde günlük tutmak, mesajlar yazdırmak istiyorsanız? İlk seçeneğiniz bu kütüphaneleri kullanmak, ikincisi ile kendi kütüphanenizi geliştirmek.
Hexadecimal IP Tools
Bir süredir, iş yerinde otomatik Linux kurulumu üzerinde uğraşıyorum. Sunucularımızın çoğu aşağı yukarı aynı paketler ve dağıtımlar ile çalıştığı için, otomatik kurulum sistemleri oldukça işimize geliyor. Otomatik kurulumun bizim için iki büyük avantajı var:
- Yeni gelen sunucuları çok kısa sürelerde sisteme entegre edebiliyoruz.
- Bir sunucumuz bir nedenden dolayı işletim sistemini kaybederse, yine aynı kısa sürede sisteme yeniden dahil edebiliyoruz.
Linux, C++ ve Unicode
Daha önceki yazımda bahsettiğim unicode karakter problemi ile uğraşırken Linux’un bu karakterler ile nasıl baş ettiğini ilginç bir şekilde buldum. Sorun, dosyayı okumak ve işlemek için yazdığım kütüphanenin metni ekrana doğru yazması ama Türkçe karakterleri tanımaması (işlememesi) ile baş göstermişti. Ben de karakterlerin nasıl kodlandığını incelemek için, karakterlerin tamsayı değerlerini ve kendilerini ekrana basan ufak bir C++ programı yazıp derledim…
Programı deneyince sorun daha da karmaşıklaştı. Türkçe karakterlerin tamsayı değerleri hem sıfırdan küçük çıkıyor hem de girdiğiniz karakter ekranda doğru görünmüyor. Peki o zaman, benim kütüphanem dosyayı nasıl ekrana yazabiliyor?
Tatil ve C++

Öncelikle tatilden hepinize merhaba. İnternet bağlantım olmadığı için (iyi ki de yok) yazılarımı yazıp biriktiriyorum. Bugün tatilin 8. günü ve şimdiden kendimi oldukça dinlenmiş hissediyorum. Burada bol bol uyuyor, yüzüyor, kitap okuyor ve az da olsa bilgisayar ile ilgileniyorum…
Tatilin en güzel yanı, internet bağlantımın olmayışı ve beni kimsenin beni rahatsız etmemesinin yanında uzun zamandır ertelediğim projelerime de sonunda zaman ayırabiliyor olmam. Hiç televizyon seyretmediğim için yemekten sonra ve sabahtan az da olsa kendime biraz vakit yaratıyor ve bu ufak aralıklarda ne zamandır yazmak istediğim T-Storm ile ilgileniyorum.
Uzun zamandır C++ ve program yazmadığım için oldukça paslanmışım açıkçası. Masaüstlerimin birinde eclipse açıkken diğerinden Stroustrup’un C++ kitabının PDF’i eksik olmuyor
. Şu anda düşe kalka ilerleme aşamalarındayım. C++ eski bir dil olduğu ve esasen ASCII ile çalışması için yazıldığı için unicode dosyalarla uğraşmakta biraz zorlanıyorum. Elimde bir iki alternatif olmasına rağmen hala kesin bir çözüm bulamadım. Sanırım çözüm hikayesi daha sonraki bir girdiye kalacak.
Python
Her şey birden oldu… Ne olduğunu anlamadan akşam kendimi geçen yaz ısmarladığım python kitabını karıştırırken buldum… Amacım basit ama çok tekrarı olan bir işi programa yaptırmak ve ortaya çıkan veriyi yararlı bilgiye çevirmekti. Kısaca tam anlamıyla bir sistem yönetimi problemi çözmem gerekiyordu ve önümde 3 seçeneğim vardı:
- Bash.
- Perl.
- Python.
Yeni Proje (T|Storm)
Evet. Yeni bir projeye başlıyorum. Esasında olan bir projeyi geliştiriyorum… Bitirme projesi için Java’da yazdığımız sistemi C++ a port edip geliştireceğim ve GPL lisansı ile açacağım.
Ne projesi mi? Olgunlaşana kadar saklamaya karar verdiğim bitirme projemiz, bir sıkıştırma algoritması. Sadece yazı sıkıştırmak için. Özellikle Türkçe için tasarlandı, geliştirildi. İlk versiyonunu açmamamın nedeni tüm kodunun bana ait olmaması ve şu anki performansından pek memnun olmamam (Ayrıca ilk uygulamasını da biz yapıyoruz Türkçe için. Tasarımı da bize ait, evet). Daha düzenli, hızlı ve makina koduna çevrilebilir bir sürümünü çıkartınca koyacağım buraya.
Bu arada maalesef, sistem GNU/Linux için geliştirildi. Java mı? Hayır win32API yüzünden en önemli modulü olması gerektiği gibi çalışmıyor. Belki C++ versiyonu çalışır ya da port ederim.
Görüşmek üzere, iyi geceler.
Bir platform olarak Windows.
Her şey benim son stajımda linux kullanmak zorunda kalmam ile başlamıştı… Staja gittiğim ilk gün elime debian CD sini tutuşturup “hadi kur bakalım” demişlerdi. Benim için çok zor olmamıştı zaten. Bilmediğim bir şey değildi Debian kurmak. Bilmediğim şey, bu kadar zamandır öğrenmeye üşendiğim işletim sisteminin hayatımı değiştireceği idi…
Staj başladıktan bir hafta sonra proje kodlarıma evde devam edebilmek için fedora kurdum. Bir kaç ay önce de SuSE 10.0 a geçtim. Başka hiç bir işletim sistemi kullanmıyorum artık, zaten ihtiaç duymuyorum. Zaten bu yazının linux ile alakası bu açıdan değil.
Bitirme projesinin önümüze konması da bu zamanlara denk geliyordu. Bir yandan konu üzerinde araştırma yapmak, bir yandan da projeyi yazacağımız dili seçmemiz gerekiyordu. Benim kalbimde yatan dil C++ olmasına rağmen, portable olmasını sağlamak çok zor olabilirdi. .NET kullanan arkadaşım C# diye tutturdu ama benim windows kurmama ve .NETi sevmeme fikirlerimi kıramadı. Ben ise yeni yeni Java öğreniyordum ve Java’da yazalım dedim. Hem cross platform hem de senin çok sevdiğin o .NET diline benziyor. İkna çabalarım başarılı olmuştu. Arkadaşımın eline bir paket eclipse tutuşturup evine yolladım.
Proje gelişmeye başlıyordu… Düşe kalka ilerliyor, bir şeyleri çalışır hale getiriyorduk. Hiç bir sorun yoktu. Kodlar tamamen cross-platfom şekilde derlenebiliyor, çalışıyor, test edilebliyordu. Sevinçliydik… Ta ki, ben proje’nin dosya formatını ve yazma okuma sistemlerini yazmaya başlayana kadar. Sıkıştırma algoritmasının hesapları ile dosyaya yazılan boyutlar arasında durmadan sorunlar çıkıyordu. Zaten binbir zorlukla ve numara ile geliştirilen dosya formatı, nedense olması gerektiği gibi çalışmıyor; linux sistemde sıkıştırma elde ederken, windows sistemlerde dosya sadece şişiyordu. Sıkıştırma sadece yazı üzerine olduğu için dosyanın bazı yerlerine özel “karakterler” yazmak gerekiyordu ve ben bunları UTF-16BE (endian sırasını kendim belirlemiştim çünkü böylece java her harf başına byte-sırası karakterleri yazmıyordu) olarak gömüyordum dosyaya… Ayrıca aynı sorunlar dosya çözülürken de çıkıyordu. Benim koymadığım o karakterlerin dosyada ne işi vardı?
Biraz uğraşı biraz vi sonucu gördük ki, o karakterler byte-sıra karakterlerinden başka bir şey değildi. Yani kısacası; benim özellikle seçtiğim encoding; java’nın ve benim istediğim gibi çalışmıyordu. Windows yine bildiğini yapıyor, istediğini istediği gibi yazıyor, okuyordu… Dünyanın en popüler işletim sistemini yazan amcalar size istediğiniz gibi program yazma özgürlüğü de bırakmamışlardı anlaşılan…
Sonuç olarak, arkadaşın makinasına da SuSE kurup geliştirme işine o şekilde devam edip bitirdik ve ben Windows’dan bir program, bir işletim sistemi olarak iyice soğudum… Bu nedenle programcı olmak isteyenler bence hangi platformu kullanacağını, o platformun getirdiklerini iyi bilsinler, ona göre seçim yapsınlar.
İyi Akşamlar…
Yorum Yapın
Yorum Yapın
Yorum Yapın
RSS - Posts