Kenan Sevindik

  • İlerleme Süreklilik İster 2

    By Kenan Sevindik
    Daha önceki bir yazımda Google’ın gözlük projesinden sonra giyilebilir bilgisayarların gelişiminde öncü role sahip Steve Mann’ın hikayesinden bahsetmiş ve Google’ın gözlük projesini bugün konuşuyor isek biraz da bunu 70’lerin sonlarından bu yana çalışmalarını ısrarla ve kesintisiz biçimde sürdüren Steve Mann ve benzerlerine borçlu olduğumuzu anlatmaya çalışmıştım. [Read More]
  • Weird Autowiring Behaviour in Spring Framework

    By Kenan Sevindik
    During lab sessions in our Enterprise Java trainings, I usually leave the main track of lab outlines and start trying various cases related to the topic. It is a bit risky for me, but it also becomes beneficial for attendees in terms of learning by experimenting with the framework. The... [Read More]
  • Another Difference Between Autowire byType and constructor

    By Kenan Sevindik
    Lets keep playing with autowiring behaviour of Spring Framework. Autowire byType or byName is not required by default. In other words, they will do nothing if they cannot find suitable candidates to inject into target beans. They can be made required in two different ways; [Read More]
  • Web Bileşenleri İçin Spring’in Autowiring Desteği

    By Kenan Sevindik
    Spring kullanan Java uygulamalarının muhtemelen en az bir yerinde Spring tarafından yönetilmeyen nesnelerin Spring bean’ları ile iletişime geçmesi gerekir. Spring’in AOP kabiliyeti sayesinde Spring tarafından yönetilmeyen domain nesnelerine bağımlılıkları enjekte etmek mümkündür. Diğer bir tür nesne ise web bileşenleridir. Bunlar servlet, filter veya JAX-WS endpoint’leri olabilir. Çoğunlukla Spring tarafından yönetilmeyen... [Read More]
  • TransactionTemplate and Rollback Rules

    By Kenan Sevindik
    When I was playing with TransactionTemplate during one of my Spring training sessions, I promptly suggested the audience try changing the default rollback rules while using TransactionTemplate. After all, TransactionTemplate encapsulates boilerplate transaction begin, commit/rollback statements, and we only give the business logic part, which it executes inside that begin…commit/rollback... [Read More]
  • How to build SessionFactory in Hibernate 4

    By Kenan Sevindik
    Well, I think it is the first time in Hibernate’s history that it is released with incomplete feature implementations and documentation. I came to this conclusion when I see Configuration.buildSessionFactory() method as deprecated. [Read More]
  • Spring Application Framework ve Tasarım Örüntüleri 2

    By Kenan Sevindik
    Önceki yazılarımızdan birinde Spring Application Framework’de kullanılan örüntülerin bir kısmından bahsetmiştik. Factory Method, Singleton, Prototype, Proxy, Template Method, Observer, Mediator, Front Controller örüntüleri Spring Application Framework içerisinde değişik şekillerde karşımıza çıkmaktadır. Bu yazımızda da Spring Application Framework içerisinde kullanılan diğer bazı örüntülerden bahsedeceğiz. [Read More]
  • Serialization mı Memento mu?

    By Kenan Sevindik
    Geçen hafta düzenlediğimiz ve hem benim hem de katılımcılar için oldukça verimli ve eğlenceli geçtiğini düşündüğüm uygulamalı “Nesne Yönelimli Tasarım Prensipleri ve Tasarım Örüntüleri Eğitimi”nde Memento örüntüsünü inceleyip Java’da nasıl implement edileceğini bir örnek ile açıklarken “Serialization varken Memento’ya neden ihtiyaç duyarız?” şeklinde bir soru soruldu. [Read More]
  • Java ve Double Dispatch 2

    By Kenan Sevindik
    İlk yazımızda Java’da “single dispatch“in nasıl çalıştığını ve “multiple dispatch” problemini incelemiştik. Eğer metot çözümleme sırasında input argümanında dikkate alınmasını istiyorsak izlememiz gereken yol “metot çözümlemeyi input argümanın kendisine delege etmek” olacaktır. Nasıl mı? Örnekle açıklayalım… [Read More]
  • Java ve Double Dispatch 1

    By Kenan Sevindik
    Hepimizin bildiği gibi Java polymorphic (çok formlu) bir dildir. Çok formluluk java uygulamasının içindeki metot çağrılarının spesifik olarak hangi sınıftaki metot tanımı ile yapılacağının çalışma zamanına kadar ötelenmesi ile gerçekleştirilmektedir. Bir örnek ile açıklayalım. [Read More]
  • NoClassDefFoundError vs ClassNotFoundException

    By Kenan Sevindik
    Her ikisi de biz java programcılarının karşısına sıklıkla çıkan hatalardandır. Her ikisi de uygulamamızın runtime’da ihtiyaç duyduğu bir class’ın bulunamadığını anlatmaktadır. Ancak aralarındaki farkları bilmek sorunun ana nedenini tespit etmek ve çözüm getirmek için önemli olabilir. [Read More]
  • JSF ViewScope ve JVM Memory Problemleri

    By Kenan Sevindik
    Şu sıralar büyük bir müşterimizin kurumsal web uygulamasının performans optimizasyonu üzerinde çalışıyoruz. Süreç sonunda uygulamanın kaldırabileceği kullanıcı sayısında ve istekleri ele alma hızında önemli ölçüde iyileşme oldu. Bu iyileştirme sürecinin bir bölümünü de memory optimizasyonuna ayırdık. Uygulamanın ön yüzü JSF ile geliştirilmişti. Bu bloğu takip edenler JSF hakkında ne güzel(!)... [Read More]
  • İlerleme Süreklilik İster

    By Kenan Sevindik
    Steve Mann’ı ve çalışmalarını İnternet üzerinden 94’den bu yana aralıklarla takip ediyorum. Kendisi 70’lerin sonlarından bu yana “giyilebilir bilgisayar” sistemleri üzerinde çalışıyor. Çalışmaları en son Google’ın “gözlük” projesini duyunca tekrar aklıma geldi. Acaba Steve Mann’da bu projede yer alıyor mu veya bu proje hakkında ne düşünüyor diye merak ediyordum. Kısa... [Read More]
  • Spring 3.2 Sürümü Çıktı, Spring 4 Yolda…

    By Kenan Sevindik
    Aslında Spring 3.2.0 sürümü Aralık 2012’nin ortalarında çıktı. Biz de projelerimizde Spring 3.2 ile çalışmaya başladık. Spring’in farklı sürümler arasındaki geçişleri yönetme başarısı burada da devam ediyor. Spring 3.x serisi içerisinde herhangi bir problem yaşamadan upgrade’ler yapabiliyorsunuz. Hatta bu geçişler 1.x’den 2.x’e, daha sonrasında 3.x’e de hemen hemen aynı kolaylıkta... [Read More]
  • POST’lasak da mı saklasak yoksa PUT’lasak da mı saklasak?

    By Kenan Sevindik
    Sarımsaklasak da mı saklasak, yoksa sarımsaklamasak da mı saklasak… Yok yok hayır, REST tabanlı bir servis geliştirirken yeni bir resource ekleme ve güncelleme işlemleri için hangi HTTP metodunun tercih edileceğine karar vermek bu tekerlemeyi söylemek kadar zor değil. Yalnızca bu iki metot ile ilgili bilmemiz gereken birkaç temel noktaya odaklanarak... [Read More]
  • Spring Konfigürasyonu; XML mi, Annotasyonlar mı, Yoksa Java mı?

    By Kenan Sevindik
    Spring Application Framework konfigürasyon metadatasının oluşturulabilmesi için üç farklı yol sunmaktadır. Bunlar XML, java annotasyonları ve java kodu şeklindedir. Spring ilk çıktığı günden bu yana XML konfigürasyon metadata formatını desteklemektedir. İkinci yol java annotasyonlarını kullanmaktır. Java kodu içerisinde belirtilen annotasyonlar vasıtası ile konfigürasyon metadata ifade edilmektedir. [Read More]
  • Hibernate 4 ve Multitenancy

    By Kenan Sevindik
    Multi-tenant uygulamaları kurumsal yazılım projelerinde hayata geçirmenin üç temel yolu vardır. Birinci yol her bir istemci için tamamen ayrı bir fiziksel veritabanı kullanmaktır. Bu yaklaşımda JDBC veritabanı bağlantıları her bir istemci için ayrı ayrı yönetilmektedir. Bu yönetim veritabanı bağlantı havuzları için de geçerlidir. Uygulamalar sisteme login olmuş kullanıcıya ait tenant... [Read More]
  • Hibernate ve Multi-Tenant Uygulamalar

    By Kenan Sevindik
    Internet’in yaygınlaşması ve uygulamaların web platformuna taşınması ile birlikte farklı organizasyonlara ait verilerin tek bir sunucu uygulamasında yönetimi üzerine kurulu olan multi-tenant uygulamaların sayısı da gün gittikçe artıyor. [Read More]
  • Tasarım Prensipleri ve Tasarım Örüntülerine Giriş Seminerleri

    By Kenan Sevindik
    Aralık 2011’de ODTÜ Enformatik Enstitüsü’nde, arından da dün ODTÜ Bilgisayar Mühendisliği’nde tasarım örüntülerinden ve nesne yönelimli yazılım geliştirmede temel bazı tasarım prensiplerinden bahsettiğimiz iki sunum gerçekleştirdik. Bunlardan ODTÜ’deki sunumda klasik ve modernist nesne yönelimli tasarım yöntemlerinin ne tür sonuçlar doğurduğunu örnek bir proje üzerinde katılımcılarla paylaştık. Sunum ve örnek koda... [Read More]
  • 5. TASOD Çalıştayı Yapıldı

    By Kenan Sevindik
    Bedir Tekinerdoğan’nın gayretleri ile her sene düzenlenen Ulusal İlgiye Yönelik Yazılım Geliştirme Çalıştayı’nın 5.si geçen hafta Bilkent Üniversitesi’nde yapıldı. Bu çalıştayların çoğuna katılan birisi olarak sunumlardan oldukça yararlandığımı belirtebilirim. Gün geçtikte ilgiye yönelik yazılım geliştirme yöntemlerinin kurumsal uygulama geliştirmenin temel bir parçası olduğunu görmek sevindirici. Etkinlikteki sunumlara buradan erişebilirsiniz. [Read More]
  • ThreadLocal Kullanımının Yol Açabileceği Güvenlik Problemleri ve Alınabilecek Önlemler

    By Kenan Sevindik
    ThreadLocal değişkenler hem Java hem de .NET ile geliştirilen kurumsal uygulamalarda zaman zaman karşımıza çıkabilir. ThreadLocal bir değişkenin değeri her Thread için farklı farklı olabilmektedir. Bu değişkenler, en çok uygulamanın katmanları arasında bağlamsal bir verinin (contextual data) metotlara parametre geçmeden taşınması için kullanılmaktadır. [Read More]