Spring Boot 1.3’ten 1.4’e geçiş rehberi

Aug 22 2016

28 Temmuz 2016 itibariyle Spring Boot 1.4 versiyonu yayınlandı. Bu versiyonla birlikte başta test altyapısı olmak üzere birçok değişiklik yayına alındı. Spring Boot 1.3’ten Spring Boot 1.4’e geçiş yapacaklar için bir rehber hazırladım.

Bağımlılıklar:

İlk olarak pom.xml veya build.gradle dosyasında Spring Boot versiyonunun 1.3.x.RELEASE ‘den 1.4.0.RELEASE‘e çekilmesi gerekiyor.

JPA:

Eğer JPA kullanılıyorsa @EntityScan notasyonunun paketi değişti. Kullanılan import’larda bu paket değişikliğinin yapılması gerekiyor:

Eskisi:

Yenisi:

Testler:

Eğer Spring’in test arayüzü kullanılıyorsa burada da kullanılan notasyonlar değişti. SpringJUnit4ClassRunner yerine SpringRunner geldi. @SpringApplicationConfiguration yerine de @SpringBootTest kullanıluyor:

Eskisi:

Yenisi:

Aynı zamanda assertj’nin versiyonu arttı. Burada da kullanılan assertThat metodunun paketi değişti:

Eskisi:

Yenisi:

Hibernate:

Hibernate 4’ten Hibernate 5’e geçildi. Bu büyük bir değişiklik ve eğer büyük problemler yaratırsa Hibernate geçiş rehberine göz atılabilir:

https://github.com/hibernate/hibernate-orm/blob/5.0/migration-guide.adoc

Spring Boot 1.4 Sürüm Notları:

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.4-Release-Notes

Comments are off for this post

Spark 2.0 – MLLib Yenilikleri

Aug 16 2016

Spark 2.0 ile birlikte MLLib’te (Spark’ın machine learning kütüphanesi) önemli geliştirmeler yayına alındı. Aynı zamanda MLLib’e en fazla kodun ve özelliğin gönderildiği sürüm olma özelliğini taşıyor:

Screen Shot 2016-08-17 at 09.42.49

 

Spark 2.0 ile birlikte yayına alınan en temel MLLib özellikleri ise şu şekilde:

  • DataFrame arayüzü temel arayüz olarak kullanılmaya başlandı. Spark MLLib’in başından beri varolan RDD arayüzü (spark.mllib paketindeki) ise rafa kalktı. Artık RDD arayüzüne yeni geliştirme yapılmayacak. Sadece hataları giderilecek.Bu geliştirmenin temel sebepleri DataFrame’in daha kullanıcı dostu arayüzü olması ve sorgu iyileştirmeleri olarak görünüyor. DataFrame ve RDD’nin temel farklarını daha detaylı okumak için: http://www.adsquare.com/comparing-performance-of-spark-dataframes-api-to-spark-rdd/
  • DataFrame arayüzü kullanılarak oluşturulan Machine Learning modelini kaydetme ve okuma özelliği geldi. Bu özellik Scala, Java, Python ve R arayüzü kullanılarak geliştirilebiliyor. Detaylar için: https://databricks.com/blog/2016/05/31/apache-spark-2-0-preview-machine-learning-model-persistence.html
  • SparkR’a yeni MLLib algoritmaları eklendi. (naive bayes, k-means clustering, survival regression..vs.)
  • Python ile desteklenen MLLib algoritmalarına yenileri eklendi. (LDA, Gaussian Mixture Model, Generalized Linear Regression..vs.)
  • DataFrame arayüzüne yeni algoritmalar ve arayüzler eklendi. (Bisecting K-Means clustering, Gaussian Mixture Model, MaxAbsScaler feature transformer)
  • DataFrame ile kaydedilen vektör ve matrisler daha etkin bir “serialization” yöntemi kullanmaya başladı. Bu sayede MLLib algoritmalarını çağırırken ortaya çıkan performans maliyeti azaldı.

Referanslar:

http://spark.apache.org/docs/2.0.0/ml-guide.html

https://spark-summit.org/2016/events/apache-spark-mllib-20-preview-data-science-and-production/

 

 

Comments are off for this post

Yapay Zeka ile Öğrenme (Machine Learning) Terimleri

Aug 03 2016

Machine Learning: “Field of study that gives computers the ability to learn without being explicitly programmed” , Arthur Samuel

Bilgisayarların dışarıdan programlanmaya ihtiyaç duymadan kendi kendine öğrenme yeteneğine “machine learning” denir.

Feature: In machine learning and pattern recognition, a feature is an individual measurable property of a phenomenon being observed.

Yapay zeka ile öğrenmede birbirinden bağımsız her bir ölçülebilir ve gözlemlenebilir özelliğe “feature” denir.

Data Sampling: Data sampling is a statistical analysis technique used to select, manipulate and analyse a representative subset of data points in order to identify patterns and trends in the larger data set being examined.

Veri sadeleştirme bir veriden temsili bir alt küme çıkarmak için kullanılan istatistiksel analiz tekniğidir. Büyük veri kümesindeki ortak özellikleri alt kümenin de barındırması gerekir.

Training: a training set is a set of data used to discover potentially predictive relationships

Yapay zeka ile öğrenmede eğitim verisi, tahminde bulunmak ve makinenin öğrenmesi için kullanılan veri kümesidir.

ML Model: You can use the ML model to get predictions on new data for which you do not know the target

Eğitim verisiyle eğitilen ve yeni veri hakkında tahmin yürüten yapay zekaya “machine learning model” denir.

Cross Validation: a model validation technique for assessing how the results of a statistical analysis will generalize to an independent data set

Bağımsız veriyle modeli doğrulama tekniğine “cross validation” denir.

Comments are off for this post

Android’den Para Kazanma Sanatı – GDG Sunumu

May 05 2016

GDG Kocaeli Üniversitesi etkinliğinde yaptığım “Android’den Para Kazanma Sanatı” isimli sunuma aşağıdaki linkten ulaşabilirsiniz:

AndroiddenParaKazanmaSanati

Comments are off for this post

Kredi Kartı Sahteciliğini Belirleme Teknikleri

Jan 04 2016

“Kredi Kartı Sahteciliğini Belirleme Teknikleri” ile ilgili yazım Bilgisayar Mühendisleri Odası dergisinde yayınlandı:

Yazıya aşağıdaki bağlantıdan ulaşabilirsiniz:

http://dergi.bimo.org.tr/sayi05/#/64

Comments are off for this post

Scala Test ile Behavior-Driven-Development

Nov 11 2015

ScalaTest (http://www.scalatest.org) Scala veya Java kodlarını test etmek için kullanılan TDD ve BDD (http://dannorth.net/introducing-bdd/) kütüphanesidir. Bu alandaki alternatiflerine (JBehave & JUnit, Groovy Spock..vs.) göre daha esnektir zira hem Java’daki tüm test kütüphaneleriyle (JUnit, TestNG, Ant, Maven, sbt, ScalaCheck, JMock, EasyMock, Mockito, ScalaMock, Selenium, Eclipse, NetBeans, IntelliJ) entegre çalışabilir hem de istediğiniz isimlendirme standardını kullanabilirsiniz. (Flat Spec, Word Spec..vs.)

ScalaTest’i bir java projesinde kullanabilmek için:

  • IntelliJ IDEA kullanılıyorsa Scala plugin kurulur: http://www.scalatest.org/user_guide/using_scalatest_with_intellij
  • Maven ile testleri çalıştırmak için iki alternatif vardır.
    • Birincisi Maven ScalaTest plugin’ini kurmak:
    • İkincisi ise testlerin üzerine aşağıdaki ifadeyi eklemek. Eğer hem JUnit hem de ScalaTest kullanmak istiyorsak bu yöntem ikisini birlikte çalıştırmaya izin verir.
  • Son olarak Scala ile yazdığımız test kodlarını derleyebilmek için maven scala plugin’i kurmamız gerekiyor. Bunun için aşağıdaki plugin’i projenizdeki pom.xml dosyasına eklemeniz gerekiyor:

Artık ScalaTest yazmaya başlayabiliriz. İlk olarak kullanmak istediğimiz temayı (Spec) belirlememiz gerekiyor. (FlatSpec, WordSpec, FeatureSpec..vs.) İç içe senaryolara daha kullanışlı test yazmak için WordSpec, kullanıcı kabul testlerini (acceptance test) yazmak için ise FeatureSpec tercih edilir.

Ardından eğer Mock yapacaksak bir Mock kütüphanesi seçilir ve pom.xml’e bağımlılık eklenir. (Mockito, ScalaMock, JMock, PowerMock..vs.)

Artık ScalaTest ile test geliştirmeye başlayabiliriz. WordSpec örneği:

FlatSpec örneği:

Detaylı bilgi için:

http://www.scalatest.org

https://github.com/s4nk/scalatest-maven-template

Comments are off for this post

JDK Timezone Nasıl Güncellenir?

Oct 26 2015

Saatlerin geri alınamama probleminin JDK tarafındaki çözümünü paylaştığı için Sabri Onur Tüzün’e teşekkürler. 🙂

Çok derde deva oldu:

http://sotuzun.xyz/2015/10/25/jdk-timezone-nasil-guncellenir/

Comments are off for this post

Appium Essentials

Mar 22 2015

B03801_MockupCover_Normal

Gözden geçirmesini (review) ve danışmanlığını yaptığım “Appium Essentials” kitabı yayınlandı:

http://www.amazon.com/Appium-Essentials-Manoj-Hans/dp/1784392480/ref=sr_1_1?ie=UTF8&qid=1429093755&sr=8-1&keywords=appium+essentials#reader_1784392480

İyi okumalar. 😉

Comments are off for this post

Asynchronous Servlet

Jan 07 2015

Servlet 3.0 ile birlikte asenkron servlet desteği geldi ve artık geliştirdiğimiz Servlet’leri asenkron olarak da çağırabiliyoruz. Bunun için @WebServlet notasyonuna asynSupported=true parametresi ekliyoruz.

Ardundan request.startAsync() ile AsynContext‘e erişiyoruz. Context’e bir dinleyici ekliyoruz. Dinleyici sınıfımızın AsyncListener arayüzünü implement etmesi gerekiyor.

Son olarak asenkron yapmak istediğimiz uzun süren işlemi çalıştırması için bir Thread‘e verebiliriz. Aşağıda ThreadPool kullanarak gerçeklenmiş bir örneği bulabilirsiniz.

 

Comments are off for this post

“GWT Plugin Desteklenmiyor” (Not Supported) hatası

Jan 04 2015

Chrome’a veya Firefox’a Google Web Toolkit plugini yüklemeye çalıştığımızda “GWT plugin desteklenmiyor” hatası alabiliriz. Bu durumda uygulanacak adımlar:

1. Chrome kısayoluna sağ tıklayıp Özellikler->Kısayol tıklanır.

2. Hedef kısmına aşağıdaki eklenir. Bu sayede Chrome eklentilerini sürükle bırak yaparak da yükleyebiliriz.

3. Chrome açılır ve extensions adresi açılır. Bunun için tarayıcıya aşağıdaki adres yazılır:

4. Aşağıdaki linkten gwt dev plugin indirilir:

https://groups.google.com/group/google-web-toolkit/attach/d1c909bf4c5cbfb4/gwt-dev-plugin.crx?part=4&authuser=0

5. Son olarak indirilen plugin Chrome’a sürüklenir.

Comments are off for this post

« Newer posts Older posts »