Monthly Archives: February 2007

GUI (GRAPHICAL USER INTERFACE) vs COMMAND-LINE

cmd.JPGŞu günlerde nedense arayüz konusu bilişimle ilgili hemen her sohbette gündeme gelir oldu. Aslında yazılan uygulamaların çoğuna baktığımızda  kodun büyük bir kısmının arayüz tasarımına ait olduğunu görüyoruz. Yani arayüz kavramının gündemde olmasını anlamak hiç de zor değil.

Bir de Microsoft amcamız rahat durmuyor ve sürekli yeni birşeylerle gündeme geliyor. WPF/E ile gündemi uzunca bir süre meşgul etti , sonra bir de baktım CIDER diye birşeyler var. Oturup inceledim onu da bir güzel. Visual Studio 2008 (NAMI-I DİYAR ORCAS) ile hayatımıza girecek olan yeni bir arayüz tasarım aracı. Özelliği ise tasarıma ait bilgileri XAML (Extensible Application Markup Language) ile saklıyor olması. Bu neye yarıyor diyorsanız: bu XAML belgesini Microsoft Expression Design ile açıp tasarımı iyice janjanlandırabiliyorsunuz. Bir de hayatımıza AERO, 3 boyutlu masaüstleri, cam efekleri, yansımalı resimler vs. girdikçe görsellik ve arayüz iyice ön plana çıktı. Unutmadan bir de JAVA tarafında SWT de IBM’den aldığı destek ile ilerliyor. Yani artık işi gücü bırakıp arayüz delisi olduk.

Diğer yandan hala bir türlü neden bunlar ölmüyor diye düşündüğüm bazı komut araçları var. Özellikle de Database üzerinde çalışmak için insanların  sıkça kullandığı araçlar var. Yine kendime bakıyorum , mouse kullanmamak için elimden geldiğince herşeyi RUN(ÇALIŞTIR) satırından hallediyorum. Denetim masasına bile “control” yazıp gitmek daha kolayıma geliyor. Noluyor bana yoksa çağın gerisinde mi kaldım fosil mi oldum derken http://www.jnd.org/dn.mss/ui_breakthroughcomma.html bu yazıyı okudum ve çok hoşuma gitti. Sizlerin de okumasını istedim. Yazıda Command Line kavramının hayatımıza nasıl yerleştiği ve arama motorlarının bundaki rolü anlatılmış. Ayrıca http://yubnub.org/ adresinde de ilginç bir örnek var. Buyurun okuyun bakalım beğenecek misiniz?

XML BELGELERİYLE ÇALIŞMAK

XML’e Giriş başlıklı yazımda XML’in hangi durumlarda kullanılabileceğini açıklamıştım. Bu yazıda ise kendi XML belgelerimizi ne şekilde oluşturabileceğimizi göreceğiz. Ayrıca yazının sonunda XML belgeleriyle çalışabilmeniz için bir kaç araçtan da bahsedeceğim.

Yazılarımda hep vurguluyorum : XML’de patron sizsiniz. Bilmeniz veya ezberlemeniz gereken çok fazla özelleşmiş sözcük (KEYWORD) yok. Fakat yazdığınız belgelerin uygulamalar tarafından sorunsuzca değerlendirilebilmesi için bazı yazım kurallarını bilmeniz gerekir. Şimdi bunları bir sıralayalım ve ardından da bir örnek ile uygulama yapalım.

  • Bir XML belgesinin sadece bir tane kök elementi olabilir. Yani XML’i bir ağaç yapısında düşünürseniz ağacın bir kökü olduğunu bilirsiniz.
  • XML’de büyük-küçük harf duyarlılığı vardır.
  • Açtığınız tüm etiketleri kapatmalısınız.
  • Eğer boş bir etiketiniz varysa yani içinde veri bulunmaycaksa “/” işaretini kullanarak kapatabilirsiniz.
  • İlk açılan etiket en son kapatılır yani etiketler için iç içe geçmiş nested bir yapı mevcuttur.
  • Tüm özellikleri (attributes) “” (çift tırnak) arasında yazmalıyız.
  • Etiket olarak XML, xml , Xml , xML gibi XML’i ifaden sözcükleri kullanamayız. Bu kelimelerin kullanımı yasaktır çünkü bu XML kelimesi farklı bir amaç için ayrılmıştır. Zaten gerek de yok kullanmaya :)
  • Etiket adları bir harf ile başlayıp, harf veya rakam ile devam edebilir. Ama temel şart harf ile başlamasıdır.
  • Ayrıca aşağıdaki karakterler yerine XML standartalarına uygun olan versiyonlarını kullanmalıyız.
  • chars.JPG
    cdata.JPG Son maddeye özellikle dikkat etmenizi istiyorum . İleride hazırlayacağınız XML belgesini bir ayrıştırıcı tarafından ayırıştırmaya kalkınca bununla ilgili sorunlarla karşılaşabiliyorsunuz. Ara projemde kullanıcının bir arayüz ile girdiği verileri işlemlerin sonunda bir XML belgesi olarak kaydediyordum fakat burada hep bu karakter dönüşümlerini unuttuğum için başım çok ağrımıştı. Ben ettim siz etmeyin diyorum :) Bu gibi karakerlerin XML begesinden hariç olarak değerlendirilmesi için CDATA alanları oluşturabilirsiniz.(CDATA alanları ayrıştırıcılar tarafından değerlendirilmez)

 

Yukarıda değindiğimiz kuralları şu örnek üzerinde inceleyelim:

myxml.JPG

Öncelikle xml version... diye başlayan etiketimize bakalım . Sanırım bu size neden etiket adı olarak XML,xml,XML gibi kelimeleri kullanamayacağımızı açıklmıştır. O etiketin bir de özelliği var ve encoding=”UTF-8″ olarak belirtilmiş. Buna her zaman ihtiyacınız olmayabilir. Özellikle uygulmayı siz geliştiryor ve XML belgesini siz kullanıyorsanız encoding konusu sizin için çok sorun olmayacaktır fakat hazırladığınız XML belgesi başkları tarafından kullanılacaksa hangi karakter kodlamasının kullanıldığını belirtmekte fayda var. Mesela ben kendi bloguma MYNET haberleri eklemek istemiştim ve bir RSS öğesi ekledim fakat bir de baktım Türkçe karakterler bozuk çıkıyor. Sonradan anladımki WordPress’in RSS okuyucusu gelen belgeyi UTF-8 ile kodlanmış sanıp ona göre okuyordu.

Bu örneğimizde kök (root) elemanımız “Arabalar” ve görüldüğü gibi başka da kök eleman yok. Kök elemanın altında da yazararabalari , okuyucuarabalari ve yarisarabalari olmak üzere 3 alt eleman bulunuyor. Bunlara yabancı kaynaklarda “child element” dendiğini de görebilirsiniz.

Yazararabalari elemanının altında 3 farklı eleman daha bulunuyor. Burada bir konuya dikkat çekmek istiyorum. Ben örneğimde XML belgesindeki büyük-küçük harf duyarlılığını vurgulamak için etiket adlarını büyüklü-küçüklü yazdım fakat sizler bundan kaçının. Size tavsiyem belgenizi tamamen küçük harflerden oluşturun. Bu şekilde hem uygulamanız içerisinde XML’den okuduğunuz değeri büyük-küçük harf işlemleriyle perişan etmemiş olursunuz hem de uygulama performansınızı da düşürmemiş olursunuz.

Okuyucuarabaları adındaki etiketimiz için herhangi bir alt dal bulunmadığı için “/” kullanarak hemen açtığımız yerde kapattık buna da dikkat etmelisiniz. Ayrıca kök etiketimize bir açıklama ekledim. Sizler de açıklamanızı yukarıdaki etiketlerin arasına alarak istediğiniz yere ekleyebilirsiniz. Dikkat etmeniz gereken son nokta da yasak karakterleri ne şekilde kullanadığımızla ilgili.

Tüm bu kurallara uyarak WELL-FORMED bir XML belgesi oluşturmuş olduk yani yazım kurllarına uyan doğru bir XML belgemiz var artık. Mesela bu belgeyi kullandığınız web tarayıcı ile sorunsuzca açabilirsiniz.

Sanırım aklınıza “hangi araçları kullanarak yapıcam bu işi” gibi bir soru geldi. Başımızın tacı NOTEPAD ile bunları yapıp .xml uzantısı ile kaydetmeniz yeterli. Fakat her zaman XML belgesiyle çalışmak bu kadar kolay olmaycaktır. Hele de işin içine DTD, SCHEMA gibi kavramlar girince veya belgenin boyutu büyüyünce Notepad yeterli olmayabilir.

Örneğin ben yukarıdaki ekran görüntülerini ALTOVA XMLSPY adlı üründen aldım. Gerçekten XML ile ciddi işler yapıyorsanız vazgeçilmez bir araç. Zaten ALTOVA firması XML konusunda uzman bir firma. Yazılımın deneme sürümünü mutlaka indirip denemelisiniz. Fakat bu araç ücretli olduğu için sizlere ücretsiz çözümler de önermem gerekiyor.

Ücretsiz olarak aklıma ilk gelen ürün More Motion XML Editor aracı. Bu ürün Altova XMLSPY kadar olmasa da iş görebilecek nitelikte. Özellikle giriş seviyesindeki kullanıcılar için ideal. Kurulum gerektirmiyor ve yazıyı formatlayıp daha okunabilir bir hale getirebiliyor. Hem de yerli bir firma tarafından üretilmiş bir ürün. XML belgeleriye çalışmak için kullanabileceğiniz diğer araçlar ise şu şekilde:

Eğer sizlerin de bunlar dışında kullandığı araçlar varsa yazının altına yorum olarak ekleyip bizlerle paylaşabilirsiniz. Bu yazımızda WELL-FORMED yani yazım kurallarına uyan bir XML belgesini ne şekilde oluşturacağımız gördük. Size tavsiyem eğer XML ile yeni tanışıyorsanız belgelerinizi önce NOTEPAD ile hazırlayın , daha sonra da yukarıda adı geçen araçları kullanarak kurallara uygun yazıp yazmadığınızı kontrol edin. Bu sayede hem pratikliğiniz artacak hem de kuralları daha iyi kavramış olacaksınız.

Sabırlar okuduğunuz için teşekkürler. Bir başka XML yazısında görüşenceye dek hoşçakalın…

NOT: Örneklerde geçen kişiler ve sahip oldukları araçlar tamamen hayal ürünüdür. Hiçbir şekilde gerçeği yansıtmamaktadır :)

SERVICE PACK-1 FOR MICROSOFT NOTEPAD

notepad.jpg

Şu anda hayata küstüm desem yeridir çünkü çok kısa bir süre evvel NOTEPAD ‘de bug olduğunu öğrendim. Microsoft’un tek bugsız uygulaması olduğunu düşündüğüm Notepad’de meğer bug varmış hem de öyle böyle değil. Gayet saçma sapan bir bug.

Öncelikle Microsoft’u tebrik ediyorum gerçekten bizleri şaşırtmadığı için çok minnetarım. Microsoft için sürekli kötü yazılım geliştiriyor diyenlere cevap olarak “Bakın Notepad tıkır tıkır çalışıyor ” derdik :) Ama artık böyle bir lüksümüz de yok.

Hala aklım almıyor nasıl oluyor da bunu bile böyle hatalı kodlayabiliyorlar. Aslında biraz anlıyorum durumu sonuçta kul yapımı :) yani herşey olabilir. Ama işte bizim işler “Allah vergisi” yada “napalım kısmet değilmiş” gibi cümleleri kaldırmaz. Yazılım geliştirmek ciddi bir iştir ve bunu herkes yapamaz. İnsanlar forumlarda , mail gruplarında yazılım geliştirme süreçleri üzerine hazrıl harıl tartışıyorlar. Yeni yeni yöntemler girip çıkıyor hayatımıza. Hatta Microsoft’un ürün olarak piyasaya çıkardığı Visual Studio Team System da Microsoft’un kendi yazılım geliştirme sürecinde kullandığı bir ürün. Microsoft’un yazılımlar konusundaki durumuna baktığımızda ve gecikmeleri göz önüne aldığımızda bu süreci pek de iyi yönetemediği gayet açık bir şekilde görülüyor. Bu kadar sayıp sövmek yeter şimdi de hata nerede onu söyleyeyim.

Önce boş bir Notepad açın ve içine “Bush hid the facts ” yazın ve kaydedin. Sonra tekrar notepad ile açın bakalım yazdığınız yazıya ne olmuş?? Buradaki bush ile başlayan cümle bir espiri . 4-3-3-5 karakterlik herhangi bir cümle de yazsanız aynı şey oluor. Sorun ASCII-UNICODE dönüşümünde ve Notepad burada çuvallıyor. Aslında burada tek suç Notepad’de değil çünkü burada dosya tipinin anlaşılmasını sağlayan Windows fonksiyonu malesef bu işi adam gibi yapamıyor.

Ben hatalarına rağmen emektar Notepad uygulamamdan vazgeçmeyeceğim çünkü diğer Microsoft ürünlerinin aksine sistem kaynaklarını çok verimli kullanıyor. Tek dileğim NOTEPAD için Service Pack’in bir an evvel çıkması :) Önümde beni bekleyen bir bitirme projesi var ve bu hatalar yüzünden perişan olmak istemem…

Kaynaklar:

http://www.hafif.org/yazi/notepad-de-bug

http://www.metacafe.com/watch/300088/notepad_secret_trick

SEVGİLİLER GÜNÜ BAHANE SENİNLE OLMAK ŞAHANE

guller.jpgBugünün Sevgililer Günü olması münasebetiyle ben de bu konuyu bloguma taşımayı uygun gördüm. Bazılarımız için çok güzel çok anlamlı bir gün iken bazılarımız için de diğer günlerden farksız.

Her sevgililer gününde “acaba kutlasak mı” yada “bizim böyle günlere ihtiyacımız yok” gibi cümleler sarf edilir. Ben de bu konudaki görüşlerimi belirtmek istiyorum.

Ben de bu günün daima bir ticari yönü olduğunu düşünsem de kutlamanın zararı olduğunu düşünmüyorum. Hatta bu günü kutlamak faydalı ve güzel birşey bence. En azından sokağa çıkıpta birbirine sarılan insanları görünce böyle düşünmemek elde değil. Elbetteki eli boş gelen sevgilisine sayıp söven kızlar da gözümden kaçmadı :) ama onları acılarıyla başbaşa bırakıyorum ve konuya katmıyorum.

Bazı kişiler “sevgililer günü benim için önemsiz bir gün” gibi ifadeler kullanıyorlar. Bence herkes içinden ufak bir çiçek yada sıcacık bir sarılma ister. Bazen hayatın koşuşturmacası içinde bazı şeyleri ihmal ediyoruz. En önemlisi de sevdiklerimizi ihmal ediyoruz. Belki onlara uzunca bir süre sürpriz yapmıyoruz , onları doyasıya öpmüyoruz yada onlara içimizdeki sıcaklığı yansıtmıyoruz. İşte bugün bu iş için bulunmaz bir FIRSAT. O nedenle ben sevgililer gününü seviyorum. En güzel, bunu hergün yapabilmek ama ne mümkün… Bari senede bir gün de olsa yapmakta fayda var bence. Sadece SEVGİLİMİZİ değil sevdiğimiz insanların hepsini mutlu etmeye çalışmak çok güzel birşey. Mümkün olduğunca sevgimizi dışarı vurmakta fayda var.

İstanbul’un kalabalığını pek sevmem ama bugün kalabalık bile güzeldi. Herkesin elinde bir demek çiçek yüzünde tatlı bir tebessüm gözlerinde heyecan… Bugün sevgililer daha heyecanlı bekliyorlardı birbirlerini İstiklal’in girişinde. Dışarıda yağmur yağıyordu ama kimse mutsuz değildi ıslandığı için. Bugün heryer daha kalabalıktı ama yine de insan rahatsız olmuyordu. Bugün heryer daha güzel kokuyordu taptaze çiçeklerin sayesinde…Bugün yaşlılar bile daha dinç ve daha hayat dolu görünüyordu… İşte tüm bunlardan ötürü sevgililer günü çok güzel ve çok özel bir gün benim için…

Bugün bence ne bir çiçek ne bir tek taş ne de pahalı bir hediye… Bugün BİRLİKTE OLMAK yetmeliydi herkese. Sevdiğini yanında hissetmek, onun varlığında huzur bulmak , herşeyi bir kenara bırakıp doyasıya mutluluğu yaşamak yetmeliydi sevenlere. Başka birşeye gerek kalmayacak kadar sevenler birbirlerine göstermeliydi sevgilerini. Bugünü son günleriymiş gibi her anını doldurarak geçirmeliydi sevgililer. Bu gün son fırsatlarıymış gibi en sıcak öpücüğü vermliydi sevgililer birbirlerine. Bugün bir daha hiç ayrılmamak üzere sımsıkı sarılmalıydı sevenler birbirlerine…

Umarım herkes sevdiğiyle ve sevenleriyle birlikte güzel bir sevgililer günü geçiriyordur. Başlıkta da dedim ya Sevgileler Günü Bahane Sevdiğimizle Olmak Şahane…