Pazar, Mayıs 20, 2007

Çocuklar İçin Ücretsiz Java Kitabı

Java Gurusu ve aynı zamanda birçok Java kitabının yazarı Yakov Fain bir tane de çocuklar için, karikatürlerle renklendirdiği bir Java kitabı yazmış. Kitabın orijinal adı "Java Programming for kids, parents and grandparents" ve ücretsiz olarak pdf formatında (İngilizce ve Fransızca) piyasaya çıkmış. (İndirmek için tıklayınız)



Bu kitap ilk bakışta he ne kadar sadece çocuklara hitap ediyormuş gibi gözükse de aslında Java'ya yeni başlayan herkesin çok faydalanacağı bir başlangıç kitabı. Ayrıca Bilgisayar Eğitmenleri ve Öğretmenleri için de harika bir kaynak.

Kitap 3 sene evvel yazılmaya başlandığı için içerik biraz eski gibi gözükse de Java'nın temel ve pek değişmeyen kavramlarını anlattığı için gayet öğretici. Ayrıca tüm örnekler JDK 1.5 ve Eclipse baz alınarak anlatılmış.

Konu açılmışken Java'ya yeni başlayanların ve ilerletmek isteyenlerin çok faydalanacağını düşündüğüm bir kaynak daha mevcut. http://www.javapassion.com adresinde Sang Shin tarafından sunum şeklinde hazırlanmış, pdf formatında harika Java eğitimleri mevcut. Acemisinde, ustasına kadar her kesime hitap eden harika Java eğitimler hazırlamış Sang amcamız.

Özellikle Java Programming with Passion! ismindeki, Basic ve Advanced olmak üzere iki kısımdaki toplam 20 başlık altında topladığı eğitimler harika. Yeni başlayanların mutlaka bu linkteki eğitimlere bir göz atmasında fayda var.

Ustalar için ise aşağıdaki eğitimler gayet faydalı olacaktır:

AJAX Programming with Passion!
Java EE Programming with Passion!

Java Programming with Passion!

Web Services Programming with Passion!

Distributed Programming using Jini and JavaSpaces Technology

XML

Basic Servlet and JSP programming

Advanced J2EE programming

J2EE programming(5-day)

Servlet programming

Struts programming

Web services programming

Web services programming

JavaServer Faces (JSF) programming

NetBeans IDE 5.0 1-day Workshop

J2SE 5.0 (Tiger) programming

Etiketler: , ,

Cumartesi, Mayıs 19, 2007

Apache AXIOM

Geçenlerde XML Parser Benchmarks: Part 1 ve XML Parser Benchmarks: Part 2 isiminde iki adet blog yayınlandı. Bu bloglarda dönem dönem yapıldığı gibi gündemdeki bazı yeni XML Parser'lar karşılaştırılmış.

İlk defa bu tip bir benchmark'ta Java ve C kütüphanelerinin birlikte karşılaştırıldığına şahit oldum. Eskiden C ve Java aynı kefeye konmazdı bile. Gerçi bu testlerinin çoğunda da C kütüphanleri bariz bir üstünlük sağlamış ama xml dokümanlarının baştan belli bir kısmına kadar okuma yapıldığı testlerde Apache AXIOM 'un Java versiyonu ciddi bir üstünlük sağlamış.

Hemen aklınıza "Bir xml dokümanının belli bir kısmının okunması ne işimize yarar?" diye bir soru gelebilir. Özellikle web servislerde, xml'in başında, header diye tabir edilen kısımda session, encoding, username, IP, vs. gibi veriler tutulur. Web Servisinizin tamamını okumadan öncelikle sadece session bilgisini kontrol etmek isteyebilirsiniz, ya da web servisle size gelen bir sürü bilgiden sadece bir kısmını okumak isteyebilirsiniz.

Zaten Apache AXIOM ilk başlarda Apache'in meşhur SOAP kütüphanesi olan Axis'in bir alt bileşeni olarak geliştirilmeye başlanmış ve daha sonra ayrı bir proje olarak kendisine bir yer edinmiş. AXIOM'un en güzel tarafı, kullanımının DOM Parser'lar kadar kolay olması ve xml dokümanını sonuna kadar okumadığınız ve harhangi bir güncelleme yapmadığınız sürece diğer DOM parser'lara göre daha hızlı ve az kaynak kullanarak çalışması.
AXIOM is a XML object model by Apache. It was developed for Apache's Web Service Engine AXIS2, but it is pushed forward as a separate project. Currently there exist a Java and a C version of the parser. The Java version uses the Woodstox StAX parser to read in the documents. The C version uses the LIBXML2 stream pull-parser. As already mentioned AXIOM has the advantage of only building the document tree in memory until the last node of which data is needed. This way the whole tree only has to be built when the data in the end of the document is required to be read or altered. The C implementation is currently in version 0.96 and can therefore not be considered as fully stable.


Figure 5: Benchmark results for the reading of only the first 67 elements in large documents

Yukarıdaki grafikte özellike xml dokümanının boyutunun arttıkça AXIOM'un daha iyi bir performans gösterdiği açıkça gözüküyor. Bu arada XML Parser Benchmark' larını yapan arkadaşlar, her nedense StAX Pull Parser testlerine favori Pull Parser'ım XPP3 'ü dahil etmemişler.

XML Teknolojisinin uygulamalardaki ağırlığı arttıkça giderek daha performanslı kütüphanler geliştiriliyor ama ben gene de mecbur kalmadıkça XML'den uzak durmayı tercih ediyorum. En iyi XML, sadece konfigürasyon dosyası olarak kullanılan XML'dir... :)

Etiketler: , , ,

Pazar, Mayıs 13, 2007

Çalışanını marka yapanlar kazanıyor

Hamur kağıdın kokusunu unutmamak için her hafta sonu mutlaka kahvaltıda okumak üzere gazete almaya çalışıyorum. Pazar gazetelerinin en sevdiğim kısımları ise İnsan Kaynakları ekleri.

Bugün Sabah'ın İnsan Kaynaklarında "Marka çalışan, karı da arttırıyor" manşetiyle çok ilginç bir haber vardı:
Çalışan markası yönetimi şirketlere ne kazandırıyor?
* En çok çalışılmak istenen kurum konumuna geliyorlar.
* Tedarikçileri tarafından daha çok tercih edilen şirket olabiliyorlar.
* Kanal ve bayi olmak konusunda rakiplerine oranla en az iki kat daha fazlaşvuru alabiliyorlar.
* Zamanla ürün ve hizmetlerini daha karlı satabiliyorlar.
* Daha kolay ve daha avantajlı şartlarda kredi bulabiliyorlar.
* Pazarlama harcamalarını zaman içinde düşürüp daha fazla etki sağlayabiliyorlar.
* Toplumsal sorumluluk çalışmaları kadar ticari performansları, ürün ve hizmetleri de daha fazla ilgi görmeye başlıyor.
Aslında bu arkadaşlar arasında son yıllarda çok tartıştığımız bir konu. Özellikle son zamanlarda şirketler kaliteli insan kaynağı bulmada çok zorlanıyorlar. Bunun en önemli nedenlerinden bir tanesi de şirketlerin ellerindeki mevcut insan kaynağını tutmayı başaramaması. Özellikle yazılım sektöründe çalışan en önemli sermayedir, fakat Türkiye'de maalesef bu sermayenin önemi hala tam olarak anlaşılabilmiş değil. Aslında bunda müşterilerin de çok büyük hatası mevcut. Son yıllara kadar müşteriler hizmet alacakları firmayı seçerken sadece firmanın adına bakıyorlardı. Gerçi artık bu durum yavaş yavaş değişmeye ve firmaların çalışanları da ön plana çıkmaya başladı.

Muhtemelen bu durum firma sahiplerini rahatsız ediyor çünkü markalaşan elemanı elde tutmak zorlaşıyor. Aslında yurtdışında çalışana hisse verilerek bu sorun büyük ölçüde çözülmüş fakat Türkiye'de bu kültür henüz oturmuş değil:
Türkiye hazır değil
Kadıbeşegil, "Türkiye'de sermaye tabana yayılmadığı çalışanlara hisse vermek yaygın değil. Bu yüzden çalışan markası yatırımcı dinamiklerinden yoksun şekilde inşa ediliyor. Markalaşmanın bir ayağı eksik kalıyor. Şirketler çalışanın işyeri ortamını, sosyal haklarını ve diğer beklentileri karşılıyor ama bu onları ekonomik açıdan da tatmin ediyor anlamına gelmez" diyor. Çalışanları markalaştırmanın birçok yatırımcı için masraf kapısı olarak görüldüğünü belirten Kadıbeşegil, yatırımcı açısından bakıldığında Türkiye'de bu örneklerin ancak yabancı sermayeli şirketlerde görülebileceğini söylüyor.
Yazılım Sektörü diğer üretim sektörleri ile karşılaştırıldığından gerçekten çok farklı bir resim çiziyor. JBoss'un eski patronu Marc Fluery, geçenlerde bir blog'unda yazılım dünyasındaki insan gücünün önemini şu şekilde vurgulamıştı:
A economic translation of the mythical man month hypothesis, is that "mathematically" you get more innovation and productivity by paying one superior developer $10 than by paying $1 to 10 average guys.
Some tasks in software are better served by "lone-wolf" innovators than by armies of developers, some are not.
Dünya son zamanlarda çok daha hızlı dönüyormuş gibi geliyor bana. Bakalım bu dönüşe kimler ayak uydurabilecek.

Etiketler: ,

Salı, Mayıs 08, 2007

JIRA Nedir - III


JIRA ile ilgili önceki bloglarımda daha çok uygulamanın altyapısına değinmiş, esas son kullanıcıyı ilgilendiren özelliklerinden pek bahsetmemiştim. Bu blog'da JIRA'nın muhteşem özelliklerini madde madde anlatmaya çalışacağım.
a) Issue : JIRA'nın en temel yapı taşıdır. JIRA'daki tüm işler birer issue olarak açılır ve tüm sistem bu issue kavramı üzerinde çalışır. JIRA'nın en kuvvetli özelliklerinden biri de issue'ların projelere ve tiplerine göre özelleştirilebilir olmasıdır. Issue'lara standart özelliklerinin yanında başka fonksiyonalite de yükleyebilirsiniz. (What is an Issue?)
b) Project : JIRA'da iş akışlarınızı sınıflandırmanın en iyi yolu proje kullanmaktan geçer. Farklı konular, farklı ekranlar, farklı iş akışları, farklı haklar, farklı kullanıcılar vs. için her seferinde yeni bir proje kullanabilirsiniz. Örneğin bir Yazılım Projesi, Yardım Masası, Gereksinim Yönetimi, Ürün Satışı, vs. JIRA projesi olabilir. Projelerinize alt gruplar tanımlayabilir, Sürüm Yönetimi için bir versiyonlama sistemi kullanabilirsiniz. Ayrıca her proje için ayrı bir iş akışı, ayrı bir ekran, ayrı bir güvenlik tanımı, ayrı bir bilgilendirme sistemi vs. tanımlayabilirsiniz. (What is a project?)

c) Workflow : JIRA'nın standart iş akışı bir çok projeniz için yeterli gelse de, eğer isterseniz mevcut workflow'u değiştirerek veya sıfırdan bir workflow yaratarak
çok kompleks bir iş akışı tanımlayabilirsiniz. Web arayüzlü harika workflow editörü, çok rahat ve basit bir kullanım kolaylığı sağlar. (Understanding Workflow)


d) Dashboard : JIRA'nın en güzel yanlarından biri de kişiselleştirilebilir bir giriş sayfasının bulunmasıdır. Giriş ekranını, farklı projeler için farklı portlet'ler, filter'lar, raporlar, vs. ile donatabilirsiniz. Bunlar için de hiç bir Admin'e ihtiyaç duymazsınız. (Configuring the Dashboard)

e) Search : JIRA'nın çok gelişmiş bir arama motoru vardır. Bu iş için altyapısında, meşhur bir açık kaynak kütüphane olan Apache Lucene'i kullanır. Arama kriterleri arasında, sonradan eklediğiniz özelleştirilmiş alanlar dahi otomatikman yer alır. Çok sık yaptığınız arama filtrelerini kaydedebilir hatta diğer kullanıcılar ile paylaşabilirsiniz. (Saving Searches 'Issue Filters')

f) Reporting : JIRA'da standart olarak çok kullanışlı rapor şablonları mevcuttur. Ama isterseniz JIRA Plugin Development desteği sayesinde kendi detaylı raporlarınızı hazırlayabilir ya da diğer JIRA severlerin hazırlayıp tüm dünya ile ücrestiz olarak paylaştığı raporları kullanabilirsiniz. (Multi-dimensional reporting)


g) Sub-Task : Farzedin takip etmeniz gereken bir konu var ama alt detayları henüz tam kesinleşmemiş. Kesinleşen kısımlarını da başkalarının takip etmesi gerekiyor. Fakat üst yönetim işin bitişini sizden bekliyor. İşte bu tip durumlarda JIRA'daki sub-task özelliği çok işe yarıyor. Size atanmış bir issue'nun alt issue'larını da siz başkalarına atayıp, işin tamamını tek bir noktadan takip edebiliyorsunuz. (Creating a sub-task)



h) Issue Linking : JIRA'da biribirileriyle alakalı işler link özelliği sayesinde çok rahat takip edilebilirler. İstediğiniz sayıda farklı bağımlılık tipi (depends, duplicates, etc.) oluşturabilirsiniz. Issue linkleme sayesinde sizden iş bekleyen birisinin, elinizdeki işi neden yapamadığınızı ifade etmeniz kolaylaşır. (Linking Issues)

i) Watching : JIRA'daki Watcher kavramı sayesinde hakkı olan herkes bir issue'ya kendisini veya başkasını herhangi bir anda ekleyebilir. (Kimin eklediği bilinmez) Bir issue'daki tüm gelişmeler Watcher listesindeki herkese anında ulaştırılır. Bu sayede konuyla alakalı olmak isteyen herkesin tüm gelişmelerden anında haberdar olması garantiye alınmış olur. (Voter and Watcher Lists)

Aslında JIRA'nın güzellikleri ve faydaları anlatmakla bitmez ama bu blog'un artık bitmesi gerekiyor. Sanırım JIRA'yı yeterince tanıttım. Bundan sonraki bloglarımda JIRA'nın diğer güzel kardeşi Confluence'u tanıtmaya çalışacağım. Tabii vakit bulabilirsem :)

Etiketler: ,