Monthly Archives: June 2007

SUÇLU KİM?

no_picture.jpgBir kaç gündür aklımı meşgul eden bir soru var. Bu yazıyı da belki sizler aklımdaki bu sorunun cevabını verirsiniz diye yazıyorum. (Vermeseniz de olur tabi)

Aslında aklımı meşgul eden sorunun kaynağı ff kod adlı arkadaşın CODE OF HORROR başlıklı yazısı. Öncelikle bu yazının kalanını okumadan evvel Code of Horror yazısına göz atmanızı tavsiye ediyorum. Yazıda uygulama geliştirirken “NEYİ NASIL YAPMAMALIYIZ” şeklinde uyarılar var ve bu uyarılar kötü anılar eşliğinde gayet çarpıcı bir şekilde anlatılmış. Önüne koyulan kaynak kodlarını revize ederken ff dikkatini çeken kodlama hatalarını blogunda paylaşmış. (Daha doğrusu ortaya dökmüş)

Bu durum çoğu iş ortamında blogda anlatıldığı gibi birebir yaşanıyor. Yani birileri vakt-i zamanında birşeyler kodluyor daha sonra başka birileri (Muhtemelen işin piri , programcının hası yada yüzüklerin efendisi diye tabir edilen abilerimiz) gelip bu kodlardaki saçmalamaları buluyorlar. Hataları bulmakla kalmayıp üstüne üstelik önceden kodu yazan arkadaşın da sık sık kulaklarını çınlatıyorlar. (Aynen ff‘ in yaptığı gibi)

Şimdi buradaki hikayede iki tip karakter var. Birtanesi herşeyi çok iyi bilen (yada öyle sanan yada çok iyi bildiği düşünülen) kişi. O kişi açısından bir sorun yok. Sadece kodlardaki anormallikleri bulup düzeltecek ve parasını alacak. Diğeri ise ; bir zamanlar kendisine verilen görevi yerine getirirken hatalar yapmış kişi.

Olaydaki kişileri de belirledikten sonra, sıra “acaba ben burada hangi kategoriye giriyorum” sorusuna geliyor. Elbetteki 2. kategoriye yani hata yapma ihtimali olan kişi kategorisine giriyorum. Durum böyle olunca beni “ ileride benim de kulaklarımı çınlatırlar mı” diye bir telaş sarıyor.

Elbetteki bir hata yapıyorsak yada yapacaksak bunun sonuçlarına katlanmamız ve hatamız yüzümüze vurulunca da itiraz etmememiz lazım. Fakat benim takıldığım nokta burası değil. Acaba bu hatalarda ; hatanın yapılmasına baştan engel olmayan yada engel olmaya çalışmayanların suçu yok mu?

Gözlemlediğim kadarıyla çoğu projede bu tip denetimler yada iyileştirmeler bir gün bir yerlerde sorun olduğunda yapılıyor. (en azından benim gördüklerimde) Yani bir şikayet yada sorun şans eseri ortaya çıkmamışsa kulak çınlamalarından yırtmış oluyorsunuz. (O tip sorunlar ne hikmetse testlerde bir türlü fark edilmez.) Ama yaptığınız işte sonradan sorunlar çıktıysa vay halinize , vay verdiğiniz emeklere. Bir anda harcanmaya hazır olun.

Acaba bu gibi sorunların ortaya çıkmasında zamanında:
(NOT: Aşağıdaki maddeler tüm iyi niyete rağmen laftan anlamayan developer ‘larla çalışmak zorunda olanları kapsamamaktadır.)

Yeterince deneyimi olmayan çalışanlara (özellikle benim gibi işe yeni başlayanlara) bir araç yardımıyla “CODE POLICY” uygulamayanların payı olabilir mi?

Yada yazılan kodlara en azından developer belirli bir nokataya gelip alışana kadar KOD POLİSLİĞİ uygulamayanların , yada “şunu şöyle yaparsan daha iyi daha efektif olur” demeyenlerin payı olabilir mi?

Yada şirkette yeterince dökümantasyon,tutorial vs. olmamasının , olsa bile güncel olmayıp işin yapılış şeklini öven (Biz çok akıllıyız dünyanın bir numaralı aracını kullanıyoruz. ) yazılarla dolu olmasının payı olabilir mi?

Yada işi yap nasıl yaparsan yap , işi vaktinde bitirmeni sağlayan her yol mübahtır gibi bir zihniyete destek verenlerin payı olabilir mi? (Makul bir proje takvimi hazırlanamadığı durumlarda ortaya çıkan bir durum)

Yada proje için kodlama standartlarını koymayıp çalışanlara kopyala-yapıştır bir de şuradaki butona bas herşey çok güzel olacak diyenlerin payı olabilir mi?

Görüldüğü üzere gitgide soru işaretlerinin sayısı artıyor. Sanırım olaylara tek taraflı bakmak ve birilerini yaptığı hatalardan ötürü harcamak pek de doğru değil. Hele de bir kişinini yaptıklarını tüm projeye mal etmek hiç doğru değil. ( ff adlı arkdaş da bunun farkına varıp sonradan olayları toparlamaya çalışmış.)

Bu kadar şikayet sanırım yeterli . Çözüm ise iş yerlerinde yada projelerde abi-kardeş ,usta-çırak ilişkisini geliştirmek. Bizde genelde işi iyi bilen insanlar ya “şöyle yapın böyle yapın tarzından emirler yağdırırlar ” yada “üzerlerinde çok yük olduğu için kod polisliği gibi işlere zaman ayıramazlar” (Genelde bu tip işler angarya olarak görülmektedir.) İş verenlerin de deneyimi az kişileri ucuz iş gücü olarak görmeyi bırakıp, çalışanlarına yatırım yapmayı öğrenmesi gerekiyor. (Bu yatırımın en büyük geri dönüşü yine kendilerine olacaktır)

Bu blog yazısıyla deşarj olduğuma göre mutlu bir haftasonu geçirmeme hiçbir engel kalmadı. Bu yazıyı sabırla okuyan herkese mutlu haftasonları diliyorum…

IN ALL TEST CASES J2EE PLATFORM OUTPERFORMED .NET

sunlogo.jpgÇalışma hayatına atılmam ile birlikte kendim için yaptığım işlere ayırdığım vakit de daraldı. Kendimi geliştirmek adına yeri geldiğinde günde 25-30 arasında blog yazısı yada makale okurdum. Fakat çalışma hayatı bunlara yavaş yavaş engel olmaya başladı. Ben de çözüm olarak okumayı planladığım makalelerin çıktısını alıp serviste okumaya karar verdim. İş yerim Anadolu yakasında evim ise Avrupa yakasında olduğundan yolda gün içerisinde yaklaşık 3 saatimi geçiriyorum. Bu zaman dilimi de birşeyler okumak için ideal. (Malesef Musta Abi gibi yolda video izleme lüksüne de sahip değilim :) )

Akşam eve dönerken okuduğum yazılardan bir tanesi de SUN Microsystems tarafından yapılan bir test ile ilgili. Yazının başlığı aynen şöyle: Web Services Performance Comparing Java 2 Enterprise Edition and .NET Framework.

Bu blog yazıma verdiğim başlık da testin özet bölümündeki ilk cümle.(Olayı çok güzel özetlemişler :) )  Biraz fazla iddialı bir söz de olsa test sonuçlarını aynen özetleyen bir cümle.

Kendilerince tarafsız bir test gerçekleştirmişler. Test Windows paltformunda işletim sistemine ait gereksiz servisler etkisiz hale getirilerek yapılmış. Test için de kendi yazdıkları WSTest aracını kullanmışlar. Bu araç çok basitçe tasarlanmış bir web servis test aracı. Tek yaptığı web servisinde tanımlı metodlara parametre göndererek çağrıda bulunmak ve sonucu almak. Metodlarda da hiçbir işlem yapılmıyor yani alınan değerler doğrudan geriye döndürülüyor bu sayede platformların diğer özelliklerinin Web Servis kıyaslamasındaki etkisi en aza indirilmiş.

Test ile ilgili daha fazla detay vermeye gerek yok. Test sonucuna göre J2EE paltformu .NET platfomundan 2 kat hatta yeri geldiğinde 3 kata kadar dah hızlı. Burada en önemli nokta .NET Framework 1.1 ve IIS 6.0′a karşılık Java Web Service Developer Pack 1.3+Tomcat 5.0 kullanılmış olması. Yani .NET Framework 2.0 ile web servisi konusunda ne gibi gelişmeler oldu ve perfomans konusuna bu nasıl yansır bu test ile bu konuda bilgi sahibi olma şansımız yok. (Ama Microsoft ‘un  yaptığı testte bu konu ile ilgili bilgiler mevcut. İlgili testi yazının sonunda bulabilirsiniz.)

Aslında perfomans konusunda farkı yaratan J2EE ile kullanılan JAX-RPC implementasyonu. Aman canım ne olacak ne var bir XML ‘i işlemekte deyip geçmemek gerektiğini de bir kere daha görmüş olduk. “Parsing” olayı söz konusu oldu mu fazladan koyulacak bir kontrol ifadesi bile ciddi performans kayıplarına neden olabiliyor. Hele bir de parser RECURSIVE bir algortimayla çalışıyorsa vay haline sistem kaynaklarınızın.

Bu testi sizlerle paylaşmanın asıl nedeni ise bir teknoloji ile çalışmaya karar verdiğinizde size getireceklerinin yanında sizden götüreceklerini de düşünmenizi sağlamak. Ben de bu testin elbette biraz da olsa taraflı olduğunun farkındayım. ( Aynı durum yazının sonunda bulacağınız ve Microsoft tarafından gerçekleştirilen test için de geçerli.) Asıl mevzu ise popüler teknolojilerin (WEB SERVİSİ , XML , AJAX vs.) bilinçsiz kullanıldıklarında bizlere faydandan çok zarar getireceğidir.

Fırsat buldukça servis yolculuklarım sırasında okuduğum güzel makaleleri blogumda paylaşamaya devam edeceğim. Şimdilik benden bu kadar. Sağlıcakla kalın…

KONUYLA İLGİLİ FAYDALI LİNKLER:

Sun tarafından gerçekleştirilen teste ait yazı
Microsoft tarafından gerçekleştirilen web servisi performans kıyaslaması
Mustafa TAN tarafından yazılmış konuya ilişkin çok güzel bir yazı
Web service performance checklist

SAFARI 3 PUBLIC BETA İLE WEB PERİŞANLIĞI

safari.jpgÇoğunuz duymuştur ama ben yine de ufak bir hatırlatmayla yazıma giriş yapmak istiyorum. Apple ‘ın Mac platformunda kullanılan internet tarayıcısı Safari artık PC platformunda da kullanılabiliyor.

Bu haberi duymamla Safari 3′ü makinama indirip kurmam bir oldu çünkü hep Apple Store ‘larda gördüğüm Mac ‘lar aracılığıyla denediğim Safari ‘yi incelemek için iyi bir fırsattı bu ama beklentilerimi karşılayamadığını baştan belirtmeliyim.

Öncelikle ürün sayfasında yer alan o Blazing Performance ‘yi ben nedense bir türlü göremedim ? Yani ortada bir yerlerde ciddi bir sorun vardı. Ben ürünü doğru düzgün çalıştıramadım ki performansını ölçeyim. Bir ara kendi sistemimden şüphelendim ama internette ufak bir arama yapınca gördümki sorun bende değildi.

Sürekli kilitlemeler ve çökmelerle geçti Safari denemelerim. Hatta yazıya eklemek için bir screenshot alacaktım , tam o sırada yine çöktü. Dedim insanlara bir faydam dokunsun bir hata raporu göndereyim ,bu defa da bilgisayarım kilitlendi.

Tüm bu olumsuzluklara rağmen itiraf etmeliyim ki bazı siteler safari yorumuyla daha güzel görünüyor. Sanırım tarayıcının kendi Internal CSS ‘inden kaynaklanan bir durum bu. Fakat yaptığım site uyumluluk testlerinde malesef bazı sitelerin de doğru  düzgün görüntülenemediğini gördüm. (Ör: rememberthemilk)

Safari ‘nin en çok hoşuma giden özelliği dahili RSS (Built-in RSS) okuyucusu oldu. Basit ve temiz bir arayüze sahip bu RSS okuyucu akıllıca düşünülmüş.

Güvenlik konusunda yorum yapma gibi bir düşüncem yoktu ama okuduklarım karşısında dehşete düşmedim desem yeridir. Safari ‘nin bu zamana kadar güvenli olarak bilinmesinin nedeni kullanıcı sayısının diğer tarayıcıları göre az olmasıydı. Bir yazılım ne kadar çok kişi tarafından kullanılırsa o kadar çok güvenlik açığı tespit edilebiliyor. Ondandır ki Internet Exploerer ‘ı güvenliksiz olmakla suçlayan Firefox ‘un da zamanla açıkları bir bir ortaya çıkmıştır. Aynı durum Safari için de geçerli kullanımı yaygınlaştıkça daha fazla saldırıya maruz kalacaktır. (Bknz: Konuyla ilgili güzel bir yazı)

Bu özellikler dışında 12 Reasons You ‘ll Love Safari başlığı altında geçen diğer özellikler (Easy bookmarks, Pop-up blocking, Inline find, Tabbed browsing , SnapBack, Forms auto-fill, Resizable text-fields ) zaten diğer tarayıcılarda da mevcut.

Özetle şu an beta aşamasında olan Safari 3′ü masaüsütünüze taşımak için çok erken hatta Firefox gibi çok güzel bir web tarayıcısı varken (Eklentilerle daha da güzelleştirilebilir) Safari 3 beta sürecini tamamlasa da sisteminize dahil etmek için pek de sağlam bir gerekçe sunmuyor. Ama bu son cümle için bir istisna var. Eğer web uygulaması geliştiryorsanız yaptığınız web sitesi, web projesi vs. ‘nin Safari ile görüntülenip görüntülenemediğini yada ne kadar Cross-browser olduğunu görmeniz için Safari ‘yi de sisteminize dahil etmeniz gerekebilir.

Apple ‘ın bu haldeki bir ürünü son kullanıcıya sunması beni çok şaşırttı çünkü Apple ürünlerini uzun test süreclerinin ardından beta etiketi koymadan piyasaya sürmeyi seven bir şirket. Her ne kadar Apple ürünlerine beta etiketi koymasa da bir ürünün son kullanıcıyla buluştuğu ilk anda otomatik olarak beta sürecine girdiğini unutmamak gerekir diye düşünüyorum. (Bknz: Beta test)

ieformac.jpgInternet Explorer ile Microsoft Mac kullanıcılarının hayatına daha önceden girmişti. Şimdi de sıra Apple ‘da. Yazılım devleri sürekli birbirlerinin ceza sahalarına girmek için büyük bir çaba içindeler. Safari daha stabil bir hale gelirse ve bizlere kullanmamız için GERÇEKÇİ nedenler sunarsa Internet Explorer Windows platformunda bir darbe daha almış olacak. Söz tarayıcılardan açılmışken Internet Explorer ‘dan vazgeçeyemeyenler ve Light-weight bir tarayıcı arayanlar Maxthon ‘u deneyebilirler.

Şimdilik benden bu kadar. Herkese mutlu pazarlar diliyorum…

JAVA YAZ KAMPI BAŞLIYOR

java1.jpg Sabancı Üniversitesi tarafından gerçekleştirilecek olan güzel bir etkinliği blogumda duyurmak istedim.

Bu etkinlik dahilinde birer haftalık çalışmalarla 2 ayrı konuda eğitim verilecek.

Eğitimler tam gün olacak ve her biri 5,5 gün sürecek.

Eğitim konuları ise:

1-Java ile Nesne Tabanlı Programlama: Detaylı bilgi için tıklayınız

2-JavaEE ile Web Uygulamaları Geliştirme: Detaylı bilgi için tıklayınız.

Hemen belirtmem gereken bir konu var ki o da eğitimlerin ücretli olduğu. (Öğrencilere indirim uygulanmaktadır) Yukarıda verdiğim linklerden ücretler hakkında bilgi alabilirsiniz. Eğer imkanınız varsa bu fırsatı kaçırmayın derim. Açıkcası iş engelim olmasa J2EE ile Web uygulamaları eğitimine katılmak isterdim. ASP.NET ‘ten sonra sanırım çok farklı bir deneyim olurdu benim için.

Sabancı  Üniversitesi eğitimlere katılacaklara uygun bir ücret karşılında yemek ve konaklama hizmeti de veriyor. Özellikle İstanbul dışında olup da herhangi bir eğitim kurumundan JAVA eğitimi alma şansı olmayanlar için iyi bir fırsat. Yine aynı şekilde yaz tatilinde hem farklı bir şehir görüp farklı kişilerle tanışmak hem de yeni birşeyler öğrenmek isterseniz bu yaz kampına katılmanız faydalı olcaktır.

Eğtimleri ise Ahmet Demirelli Bey veriyor.  Ahmet Bey ‘in ismini sektördeki etkinlikleri takip edenler muhakkak duymuştur . Kendisiyle ilgili detaylı bilgiyi de buradan alabilirsiniz.

Şimdilik benden bu kadar. En kısa sürede,  PC platformu için sunulan Safari Public Beta 3 izlenimlerimle yazılarıma devam edeceğim. Sağlıcakla kalın…