Selamün Aleyküm arkadaşlar,
Bugünkü yazacağımız yazı Java Reflection hakkında olacak. Reflection nedir ne işe yarar peki ? Run time'de çalışırken herhangi bir sınıfın metodlarına , objelerine , değişkenlerine erişmeye yarar. Bu değişkenler private olsa dahi erişebiliyoruz. Normal bildiğiniz üzere private değişkenler erişmek için get şeklinde tanımlamamız gerekirdi. Bu değeri değiştirmek için de set kullanmamız gerekirdi. Student adına bir sınıfımız olacak ve biz bunun farklı bileşenleri erişmeye çalışacağız. Şimdi bunu aşağıdaki kodumuz üzerinde inceleyelim.
Java etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Java etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
24 Nisan 2017 Pazartesi
8 Ocak 2017 Pazar
iReport - Jasper Report ikilisi ile Raporlama
S.a. Arkadaşlar,
Bu gün Jasper Raporlama ile Pdf rapor almaya bakacağız. Biz burada Jasper Repor nedir ? iReport designer nasıl indirilir kurulur onlardan bahsetmeyeceğiz. Ama bunun yapıldığı 2 site önerebilirim. Bunlar başlangıçtaki kısımlarda işinizi görecektir diye düşünüyorum. Hem de java ile bağlantısı da anlatılmış. Ben bir kaç püf noktaya değinip oradan hazırladığım rapor üzerinden devam edeceğim.
Bu sitelerden biri bu. Buradaki anlatımın videosu da var. Video'nun altına da bir kaç yorum eklemiştim. Burada tekrar etmek gerekirse rapor'un başlangıç dili grovy onu java yapmak gerek. Tabi Java'yı kullanacaksanız. Burada problemler çıkabiliyor. 2.problem ise iDesinger ile ilgili. Java 7 kullanmanız gerekebilir. Ben zip halini indirip direkt idesinger içine eklemiştim. İsterseniz Java 7'yi direkt de kullanabilirsiniz. Bu 8'den vazgeçmek istemeyenler için bir öneriydi. Jasper Report'un 6.x.x sürmünü kullanmaya özen gösterin. 5.x.x ve öncesi sürümlerinde hatalar çıkabiliyor. Mesela ireport için bulunan equals vb diğer metotları kullanırken hatalar alabilirsiniz. Bunu da göz önünde bulundurmakta fayda var. Şuan için aklıma gelenler bunlar. Olursa eklemeler yaparım. Diğer site ise bu. Burada çok güzel resimli anlatım mevcut. Başlangıç için yeterince işinizi göreceğini düşünüyorum. Eğer hiç bir problemle karşılaşmadıysanız artık önümüze bakabiliriz.
Bu gün Jasper Raporlama ile Pdf rapor almaya bakacağız. Biz burada Jasper Repor nedir ? iReport designer nasıl indirilir kurulur onlardan bahsetmeyeceğiz. Ama bunun yapıldığı 2 site önerebilirim. Bunlar başlangıçtaki kısımlarda işinizi görecektir diye düşünüyorum. Hem de java ile bağlantısı da anlatılmış. Ben bir kaç püf noktaya değinip oradan hazırladığım rapor üzerinden devam edeceğim.
Bu sitelerden biri bu. Buradaki anlatımın videosu da var. Video'nun altına da bir kaç yorum eklemiştim. Burada tekrar etmek gerekirse rapor'un başlangıç dili grovy onu java yapmak gerek. Tabi Java'yı kullanacaksanız. Burada problemler çıkabiliyor. 2.problem ise iDesinger ile ilgili. Java 7 kullanmanız gerekebilir. Ben zip halini indirip direkt idesinger içine eklemiştim. İsterseniz Java 7'yi direkt de kullanabilirsiniz. Bu 8'den vazgeçmek istemeyenler için bir öneriydi. Jasper Report'un 6.x.x sürmünü kullanmaya özen gösterin. 5.x.x ve öncesi sürümlerinde hatalar çıkabiliyor. Mesela ireport için bulunan equals vb diğer metotları kullanırken hatalar alabilirsiniz. Bunu da göz önünde bulundurmakta fayda var. Şuan için aklıma gelenler bunlar. Olursa eklemeler yaparım. Diğer site ise bu. Burada çok güzel resimli anlatım mevcut. Başlangıç için yeterince işinizi göreceğini düşünüyorum. Eğer hiç bir problemle karşılaşmadıysanız artık önümüze bakabiliriz.
Etiketler:
column,
detailCell,
expression,
ireport,
jasper,
Java,
jr,
printWhenExpression,
raporlama,
table,
tablo,
text field
20 Kasım 2016 Pazar
Vaadin Müşteri Uygulaması - 3
Selamün Aleyküm,
Vaadin ile yapmış olduğumuz örnek uygulamanın 3.üncü ve son yazısıdır. Birinci ve ikinci yazılarımıza ulaşabilirsiniz. Daha önce form kayıt ve tablo konularını işlemiştik. Bu yazıdaki konumuz raporlama olacak. Raporlama aracı olarak jasper ve ireport kullanacağız. Bununla ilgili ayıntılı anlatım yapmayacağım ama güzel anlatımı olan iki farklı site önereceğim. Bu sitelerde biri video diğeri resimli anlatımdır, ama bazı sorunlarla karşılaşabilirsiniz. Mesela java 8 kullanıyorsunuz projenin içine java 7 gömmeniz gerekebilir. Bununla ilgili youtube'taki videoda yorum olarak bir kaç problem yazmıştım. Çözümlerini de yazmıştım. Onlara göz atabilirsiniz.
Vaadin ile yapmış olduğumuz örnek uygulamanın 3.üncü ve son yazısıdır. Birinci ve ikinci yazılarımıza ulaşabilirsiniz. Daha önce form kayıt ve tablo konularını işlemiştik. Bu yazıdaki konumuz raporlama olacak. Raporlama aracı olarak jasper ve ireport kullanacağız. Bununla ilgili ayıntılı anlatım yapmayacağım ama güzel anlatımı olan iki farklı site önereceğim. Bu sitelerde biri video diğeri resimli anlatımdır, ama bazı sorunlarla karşılaşabilirsiniz. Mesela java 8 kullanıyorsunuz projenin içine java 7 gömmeniz gerekebilir. Bununla ilgili youtube'taki videoda yorum olarak bir kaç problem yazmıştım. Çözümlerini de yazmıştım. Onlara göz atabilirsiniz.
19 Kasım 2016 Cumartesi
Vaadin Müşteri Uygulaması - 2
Selamün Aleyküm,
Bir önceki yazımızda vaadin ile yapmış olduğumuz projeye giriş ve ilk sekmesini anlatmaya çalışmıştık. Bu yazımızda ise 2.sekmesini yani tablo kısmını inceleyeceğiz. Burada veri tabanından çekmiş olduğumuz alanları göstereceğiz. İstersek üzerinde değişiklikler yapıp tekrar kaydedebilir veya her hangi bir kaydı silebiliriz. Şimdi başlayalım.
Bir önceki yazımızda vaadin ile yapmış olduğumuz projeye giriş ve ilk sekmesini anlatmaya çalışmıştık. Bu yazımızda ise 2.sekmesini yani tablo kısmını inceleyeceğiz. Burada veri tabanından çekmiş olduğumuz alanları göstereceğiz. İstersek üzerinde değişiklikler yapıp tekrar kaydedebilir veya her hangi bir kaydı silebiliriz. Şimdi başlayalım.
Vaadin Müşteri Uygulaması - 1
Selamün Aleyküm,
Bir nedenle vaadinle tanıştık. Onla ilgili de bir şeyler karalamak istedim. Türkçe kaynak zaten yok. Sadece aşağıdaki bu linkte 3 yazı var. Başlangıç ve kurulum için iyi olabilir. Bana da faydası olmuştu, fakat devamı gelmemiş maalesef. Ben de yaptığım projeyi burada elimden geldiğince anlatmaya çalışacağım. Proje'nin tamamına yakınını da github'den alabileceksiniz. Projeyi sıcağı sıcağına yazmak lazımdı. Üzerinden zaman geçince biraz zor oluyor. Ama elimizden geldiğince anlatmaya çalışacağım yine de. Ufak bir başlangıçtan sonra başlayalım.
Bir nedenle vaadinle tanıştık. Onla ilgili de bir şeyler karalamak istedim. Türkçe kaynak zaten yok. Sadece aşağıdaki bu linkte 3 yazı var. Başlangıç ve kurulum için iyi olabilir. Bana da faydası olmuştu, fakat devamı gelmemiş maalesef. Ben de yaptığım projeyi burada elimden geldiğince anlatmaya çalışacağım. Proje'nin tamamına yakınını da github'den alabileceksiniz. Projeyi sıcağı sıcağına yazmak lazımdı. Üzerinden zaman geçince biraz zor oluyor. Ama elimizden geldiğince anlatmaya çalışacağım yine de. Ufak bir başlangıçtan sonra başlayalım.
5 Ekim 2016 Çarşamba
Developer Mülakat Soruları
S.a. arkadaşlar,
Uzun bir aradan sonra tekrar ilk kez yazıyorum. Bugün yazacağım konu direkt java ile ilgili bir konu değil. Mülakatlarda karşılaştığım ve farklı sitelerden derlediğim java mülakat sorularını ele alıp yine kendimizce cevap arayacağız. Eksiklik veya hata olduğunu düşündüğünüz yerlerde benimle irtibata geçersiniz tekrardan gözden geçirebilir. Umarım istediğiniz gibi güzel işler bulursunuz.
Not: 2.yazıya buradan erişebilirsiniz.
Uzun bir aradan sonra tekrar ilk kez yazıyorum. Bugün yazacağım konu direkt java ile ilgili bir konu değil. Mülakatlarda karşılaştığım ve farklı sitelerden derlediğim java mülakat sorularını ele alıp yine kendimizce cevap arayacağız. Eksiklik veya hata olduğunu düşündüğünüz yerlerde benimle irtibata geçersiniz tekrardan gözden geçirebilir. Umarım istediğiniz gibi güzel işler bulursunuz.
Not: 2.yazıya buradan erişebilirsiniz.
Etiketler:
Abstract,
Cohesion,
coupling,
developer,
Encapsulation,
exception,
final,
Hibernate,
Inheritance,
interface,
Java,
JPA,
mülakat,
OOP,
Overloading,
Overriding,
Polimorfizm,
Reflection,
Serilization,
static
17 Eylül 2015 Perşembe
Spring Framework
S.a. Arkadaşlar,
Son zamanlarda belki de en çok duyduğunuz framework'lardan biri olan Spring'e giriş niteliğinde, onu tanıma adına bir yazı olacak. Spring ile kurumsal projeleri rahatlıkla yapabileceğimiz bir framework'tur. Peki nedir diye frameworklardan farkı ki bu kadar ön plana çıktı.
Son zamanlarda belki de en çok duyduğunuz framework'lardan biri olan Spring'e giriş niteliğinde, onu tanıma adına bir yazı olacak. Spring ile kurumsal projeleri rahatlıkla yapabileceğimiz bir framework'tur. Peki nedir diye frameworklardan farkı ki bu kadar ön plana çıktı.
Etiketler:
@Autowired,
@Bean,
anatasyon,
AOP,
coupling,
depency Injection,
Framework,
ioc,
Java,
programming,
Spring
14 Eylül 2015 Pazartesi
Ant ile Css ve Js'leri Birleştirip Küçültmek
S.a. Arkadaşlar,
Uzun süredir yazamıyordum, klasik olacak ama iş-güç-yoğunluk. Bugün anlatmaya çalışacağım konu back-end değil front-end ile ilgili olacak. Yani arka tarafa yönelik değil de ön tarafı ilgilendiren bir konu olacak. Elimizde bulunan .js ve .css dosyalarını birleştirip onları sıkıştıracağız. Tabi öncelikle bunun için Ant'a ihtiyacımız olacak. Ant'ın kurulumunu buradan izleyebilirsiniz. Biz ant kurulu olarak yolumuza devam edeceğiz ve bununla birlikte YUI Compressor'a ihtiyacımız olacak.
Uzun süredir yazamıyordum, klasik olacak ama iş-güç-yoğunluk. Bugün anlatmaya çalışacağım konu back-end değil front-end ile ilgili olacak. Yani arka tarafa yönelik değil de ön tarafı ilgilendiren bir konu olacak. Elimizde bulunan .js ve .css dosyalarını birleştirip onları sıkıştıracağız. Tabi öncelikle bunun için Ant'a ihtiyacımız olacak. Ant'ın kurulumunu buradan izleyebilirsiniz. Biz ant kurulu olarak yolumuza devam edeceğiz ve bununla birlikte YUI Compressor'a ihtiyacımız olacak.
Etiketler:
ant,
combine,
css,
css birleştirmek,
Java,
js,
js sıkıştırmak,
minimize,
scss,
yui comprassor
5 Temmuz 2015 Pazar
Java Unit ile Test Yapma
S.a. Arkadaşlar,
Klasik bir cümle gibi olacak belki ama işlerin yoğunluğundan ve sonraki yorgunluktan bazen bırakın yazmayı, bilgisayarı açmaya bile üşeniyor insan. Hafta sonu girince araya biraz fırsat bulup dinlenebiliyor insan gerçekten. Bugünkü konumuz Junit ile test yapma olacak. Uzun süredir araştırdığım ve yazmak istediğim bir konuydu ama bugünlere kaldı. Nasip bugüneymiş diyelim ve başlayalım.
Klasik bir cümle gibi olacak belki ama işlerin yoğunluğundan ve sonraki yorgunluktan bazen bırakın yazmayı, bilgisayarı açmaya bile üşeniyor insan. Hafta sonu girince araya biraz fırsat bulup dinlenebiliyor insan gerçekten. Bugünkü konumuz Junit ile test yapma olacak. Uzun süredir araştırdığım ve yazmak istediğim bir konuydu ama bugünlere kaldı. Nasip bugüneymiş diyelim ve başlayalım.
Etiketler:
@Test,
after,
anatasyon,
annatation,
Assert,
before,
Java,
Junit,
junit exception,
Null,
Test
24 Mayıs 2015 Pazar
Java ile MongoDB CRUD
S.a. arkadaşlar,
Java ile mongodb'ye bağlanma ile ilgili ilk yazımızda bilgilere yer vermiştik. NoSql nedir, mongodb'ye nasıl bağlanılır ? Hangi arayüz programları kullanılabilir gibi soruların cevaplarını aramıştık. En son ise veritabana bir ekleme işlemi yapıp yazımıza son vermiştik. Bu sefer eklemeyle birlikte silme güncelleme listeleme gibi işlemleri de gözden geçirmeye çalışacağız. Bağlantıyla ilgili problemi olan arkadaşlar dediğimiz gibi ilk yazımıza göz atabilirler.
Java ile mongodb'ye bağlanma ile ilgili ilk yazımızda bilgilere yer vermiştik. NoSql nedir, mongodb'ye nasıl bağlanılır ? Hangi arayüz programları kullanılabilir gibi soruların cevaplarını aramıştık. En son ise veritabana bir ekleme işlemi yapıp yazımıza son vermiştik. Bu sefer eklemeyle birlikte silme güncelleme listeleme gibi işlemleri de gözden geçirmeye çalışacağız. Bağlantıyla ilgili problemi olan arkadaşlar dediğimiz gibi ilk yazımıza göz atabilirler.
Etiketler:
crud,
ekleme,
Güncelleme,
insert,
Java,
listeleme,
Mongo DB,
nosql,
silme,
Uptade,
veritabanı
21 Mayıs 2015 Perşembe
Java ile MongoDB Bağlantısı
S.a. Arkadaşlar,
Bugün konumuz biraz farklı bir konu olacak. Bildiğiniz üzere projelerimizde veri tabanı olarak Mysql kullanıyorduk, fakat uzun süre araştırıyor olduğum veri tabanı vardı: Mongo DB.
Mongodb'yi açıklamadan önce NoSql nedir onu açıklamak lazım. Çünkü bildiğimiz sql komutlarının dışına çıkıyor. Yani sadece sql değil manasına NoSql kullanılmaya başlandı. Bunun çok büyük avantajları var. Özellikle çok büyük veriler barındırıyorsa projeniz o zaman farkını göreceksiniz.Resim-1'i inceleyebilirsiniz. Orta ve küçük projeler farkını o kadar da ortaya koymayabilir. Son dönemlerde adından sık sık söz ettirmeye başladı. Ben de bu konuyla ilgili araştırmalar yapıyordum. Bununla ilgili bir sürü veri tabanı kullanılabilir tabii ki, fakat biz mongodb kullanacağız.
Bugün konumuz biraz farklı bir konu olacak. Bildiğiniz üzere projelerimizde veri tabanı olarak Mysql kullanıyorduk, fakat uzun süre araştırıyor olduğum veri tabanı vardı: Mongo DB.
Mongodb'yi açıklamadan önce NoSql nedir onu açıklamak lazım. Çünkü bildiğimiz sql komutlarının dışına çıkıyor. Yani sadece sql değil manasına NoSql kullanılmaya başlandı. Bunun çok büyük avantajları var. Özellikle çok büyük veriler barındırıyorsa projeniz o zaman farkını göreceksiniz.Resim-1'i inceleyebilirsiniz. Orta ve küçük projeler farkını o kadar da ortaya koymayabilir. Son dönemlerde adından sık sık söz ettirmeye başladı. Ben de bu konuyla ilgili araştırmalar yapıyordum. Bununla ilgili bir sürü veri tabanı kullanılabilir tabii ki, fakat biz mongodb kullanacağız.
Etiketler:
Java,
mongo chef,
Mongo DB,
MongoVue,
nosql,
rono mongo,
sql,
UMongo,
Veri tabanı
17 Mayıs 2015 Pazar
Görüntü İşleme (Image Processing)
S.a. Arkadaşlar,
Bu gün farklı bir konuda bir şeyler yazacağız. Konumuz görüntü işleme olacak. Giriş mayetinde bir yazı olacak. O nedenle daha çok görüntü işleme nedir , ne değildirden konuşacağız. Daha sonra bir kaç basit örnek ile yazımıza son vermeyi düşünüyoruz. Bu konuyla ilgili yaptığım bir kaç araştırmadan sonra matlab veya java konusunda yazılara rastladım. Ama bizim üzerinde duracağımız konu tabii ki java olacaktır. Peki nedir görüntü işlemi ? Kısaca bir görüntünün başka bir görüntüye dönüştürülmesi işlemidir. Peki o zaman arada ne gibi farklar olacak diye bir soracak olursanız; şöyle bir cevap verebiliriz. Örneğin görüntüdeki gürültüleri silebiliriz. Kişinin yüzündeki sivilceleri de silebiliriz :). Bir resim içinden harfleri çekebiliriz. Görüntüyü siyah beyaz veya farklı formatlarda işleyebiliriz. Ayrıca görüntüyü sıkıştırma, onarma gibi işlemlerde de kullanabiliriz. Bunu gibi örnekleri çoğaltabiliriz. Peki nerelerde kullanılır diye sorarsak; Tıp , astronomi,coğrafya, biyoloji gibi alanlarda kullanabiliriz. Tabi bu örnekleri çoğaltmak tabii ki mümkün. Bu işlemleri yaparken kütüphaneler mevcut. OpenCV ve OpenGL bunlardan ikisi. Bunla ilgili yazımızın sonunda bu konular üzerinde güzel web siteleri mevcut. Kaynaklar İngilizce de olsa gayet anlaşılır. Örneklerimizi de zaten bu sitelerin bazılarından aldık. Daha ayrıntılı öğrenmek için tabii ki çok daha emek sarf etmek gerekecektir. Bizimki sadece giriş niteliğinde bir yazı. Şimdi örneklerimizi inceleyelim.
Bu gün farklı bir konuda bir şeyler yazacağız. Konumuz görüntü işleme olacak. Giriş mayetinde bir yazı olacak. O nedenle daha çok görüntü işleme nedir , ne değildirden konuşacağız. Daha sonra bir kaç basit örnek ile yazımıza son vermeyi düşünüyoruz. Bu konuyla ilgili yaptığım bir kaç araştırmadan sonra matlab veya java konusunda yazılara rastladım. Ama bizim üzerinde duracağımız konu tabii ki java olacaktır. Peki nedir görüntü işlemi ? Kısaca bir görüntünün başka bir görüntüye dönüştürülmesi işlemidir. Peki o zaman arada ne gibi farklar olacak diye bir soracak olursanız; şöyle bir cevap verebiliriz. Örneğin görüntüdeki gürültüleri silebiliriz. Kişinin yüzündeki sivilceleri de silebiliriz :). Bir resim içinden harfleri çekebiliriz. Görüntüyü siyah beyaz veya farklı formatlarda işleyebiliriz. Ayrıca görüntüyü sıkıştırma, onarma gibi işlemlerde de kullanabiliriz. Bunu gibi örnekleri çoğaltabiliriz. Peki nerelerde kullanılır diye sorarsak; Tıp , astronomi,coğrafya, biyoloji gibi alanlarda kullanabiliriz. Tabi bu örnekleri çoğaltmak tabii ki mümkün. Bu işlemleri yaparken kütüphaneler mevcut. OpenCV ve OpenGL bunlardan ikisi. Bunla ilgili yazımızın sonunda bu konular üzerinde güzel web siteleri mevcut. Kaynaklar İngilizce de olsa gayet anlaşılır. Örneklerimizi de zaten bu sitelerin bazılarından aldık. Daha ayrıntılı öğrenmek için tabii ki çok daha emek sarf etmek gerekecektir. Bizimki sadece giriş niteliğinde bir yazı. Şimdi örneklerimizi inceleyelim.
14 Mayıs 2015 Perşembe
Mvc Spring + Sıralama - Refactoring (Düzenleme)
S.a. Arkadaşlar,
Son yazımızda farklı alanlarda sıralama işlemleri yapmıştık. Fakat bunu uzun uzun if else ile yapmıştık, fakat aynı yazımızda bunun da başka bir yönteme göre kısalttığımızı söylemiş, ilerleyen yazılarda yine düzenlemeler yapabileceğimizi söylemiştik. Bugün yine küçük bir değişiklik ile kodu daha da kısalttık. Şimdi kod kısmında ne demek istediğimizi daha iyi anlatacağız.
Son yazımızda farklı alanlarda sıralama işlemleri yapmıştık. Fakat bunu uzun uzun if else ile yapmıştık, fakat aynı yazımızda bunun da başka bir yönteme göre kısalttığımızı söylemiş, ilerleyen yazılarda yine düzenlemeler yapabileceğimizi söylemiştik. Bugün yine küçük bir değişiklik ile kodu daha da kısalttık. Şimdi kod kısmında ne demek istediğimizi daha iyi anlatacağız.
Etiketler:
copy past,
Java,
order,
order by,
refactoring,
sıralama,
Spring,
Spring MVC,
temiz kod
13 Mayıs 2015 Çarşamba
Spring Mvc + Farklı Türlerde Sıralama Çift Sıralama
S.a. Arkadaşlar,
Bugünkü yazımız yine sıralama ile ilgili olacaktır. Belki diyeceksiniz ne kadar da uzadı bu sıralama yazıları, fakat ben de projeyi geliştirdikçe yazıyorum. Doğal olarak aklıma farklı şeyler geldikçe hem geliştiriyorum. Geliştirmem bittikten sonra tekrar yazıyorum, daha sonra neler yapabilirim diye düşünüyorum. Her neyse lafı fazla uzatmaya gerek yok. Dün ve bir önceki yazımızda yine sıralamadan bahsetmiştik, fakat ilk sıralama yazımızda sadece isime göre sıralama yapıyordu. İkinci yazımızda ise isme göre küçükten büyüğe ve büyükten küçüğe doğru sıralama yapıyordu. Biz bunu, kodu "copy-past" ile genişletip soy isim ve telefon için de yapabilirdik, fakat bu temiz kod ilkesine ters düşerdi. Biz bunu acaba kodumuzu nasıl daha güzel yazabiliriz diye düşündük ve en son aşağıda anlatacağımız kodu yazmaya karar verdik. Muhakkak bu kodun geliştirilebilir yanı vardır. Fakat daha sonra bu kodları tekrar gözden geçirip eksikliklerimizi (refactoring) tamamlamaya çalışacağız. Şimdi kod kısmına geçelim artık.
Bugünkü yazımız yine sıralama ile ilgili olacaktır. Belki diyeceksiniz ne kadar da uzadı bu sıralama yazıları, fakat ben de projeyi geliştirdikçe yazıyorum. Doğal olarak aklıma farklı şeyler geldikçe hem geliştiriyorum. Geliştirmem bittikten sonra tekrar yazıyorum, daha sonra neler yapabilirim diye düşünüyorum. Her neyse lafı fazla uzatmaya gerek yok. Dün ve bir önceki yazımızda yine sıralamadan bahsetmiştik, fakat ilk sıralama yazımızda sadece isime göre sıralama yapıyordu. İkinci yazımızda ise isme göre küçükten büyüğe ve büyükten küçüğe doğru sıralama yapıyordu. Biz bunu, kodu "copy-past" ile genişletip soy isim ve telefon için de yapabilirdik, fakat bu temiz kod ilkesine ters düşerdi. Biz bunu acaba kodumuzu nasıl daha güzel yazabiliriz diye düşündük ve en son aşağıda anlatacağımız kodu yazmaya karar verdik. Muhakkak bu kodun geliştirilebilir yanı vardır. Fakat daha sonra bu kodları tekrar gözden geçirip eksikliklerimizi (refactoring) tamamlamaya çalışacağız. Şimdi kod kısmına geçelim artık.
26 Nisan 2015 Pazar
FTP
S.a. Arkadaşlar,
Bugünkü konumuz ftp ile ilgili işlemler olacak. Ftp ile ilgili internetten küçük bir araştırmadan sonra 2 jarla karşılaştım. Apache edtFTPj . Kaynaklar daha ağırlıklı apache kütüphanesi ile ilgiliydi. Ben de öyle bir başlangıç yapmıştım, daha sonra arkadaşımın apache'de karşılaşmış olduğu bir hata dolayısıyla tavsiyesi üzerine yolumuza edtFTPj ile devam ettik. Bunla ilgili da yeterince kaynak mevcur tabii ki yabancı sitelerde. Enterprise sürümünü kullanmak isterseniz ücret vermek zorundasınız, fakat bize ücretsiz sürümü yetti. Sizlere de yeteceğini düşünüyorum.
Bugünkü konumuz ftp ile ilgili işlemler olacak. Ftp ile ilgili internetten küçük bir araştırmadan sonra 2 jarla karşılaştım. Apache edtFTPj . Kaynaklar daha ağırlıklı apache kütüphanesi ile ilgiliydi. Ben de öyle bir başlangıç yapmıştım, daha sonra arkadaşımın apache'de karşılaşmış olduğu bir hata dolayısıyla tavsiyesi üzerine yolumuza edtFTPj ile devam ettik. Bunla ilgili da yeterince kaynak mevcur tabii ki yabancı sitelerde. Enterprise sürümünü kullanmak isterseniz ücret vermek zorundasınız, fakat bize ücretsiz sürümü yetti. Sizlere de yeteceğini düşünüyorum.
Etiketler:
FTP,
Java,
remote connection,
uzak bağlantı
20 Nisan 2015 Pazartesi
Envanter + Kasa ve Monitör Seri Numaralarını Maille Gönderme
S.a. arkadaşlar,
Bir kaç günlük bir aradan sonra yine birlikteyiz. Uğraşmış olduğum küçük bir uygulamadan sonra öğrendiklerimizi dilimiz döndüğünce anlatmaya çalışacağız. Peki nedir yaptığımız program ? Envanter programı. Bilgisayarın gerekli bilgilerini almamızı sağlıyor. Mesela kasamızın seri numarasını, hangi işletim sistemi kurulu , kurulu olan programlar vs gibi bir çok bilgi öğrenebilirsiniz. Ben bu bilgilere ek olarak ekranın seri numarasını da bulmasını istedim fakat birazdan vereceğim cmd kodunda bir türlü bulamadım. İyi bir araştırma yaptığıma inanıyorum, fakat yine de bulamadım. Bilen varsa bana geri dönüş yaparsa çok sevinirim. Ben de maalesef yolu uzatan bir çözüm buldum. Ekranın envanterini bulan bir .exe bulup onu çalıştırıp, ekran çıktısını aldıktan sonra tekrar kapatıyorum. Tabi bu çözüm kulağı tersten tutmaya benzer, ama hiç yoktan daha iyidir diye düşündüm belki de, fakat bu herşeye rağmen bir çözümdür. Daha sonra ekran çıktımızı ve bilgilerimizi belirlediğimiz adrese gönderiyoruz. Şimdi giriş yaptıktan sonra yazımıza kodlarımıza başla vakti geldiğini düşünüyoruz. Her zamanki gibi yine kodlarımızın içinde yorum satırlarıyla beslemeye çalıştık.
Bir kaç günlük bir aradan sonra yine birlikteyiz. Uğraşmış olduğum küçük bir uygulamadan sonra öğrendiklerimizi dilimiz döndüğünce anlatmaya çalışacağız. Peki nedir yaptığımız program ? Envanter programı. Bilgisayarın gerekli bilgilerini almamızı sağlıyor. Mesela kasamızın seri numarasını, hangi işletim sistemi kurulu , kurulu olan programlar vs gibi bir çok bilgi öğrenebilirsiniz. Ben bu bilgilere ek olarak ekranın seri numarasını da bulmasını istedim fakat birazdan vereceğim cmd kodunda bir türlü bulamadım. İyi bir araştırma yaptığıma inanıyorum, fakat yine de bulamadım. Bilen varsa bana geri dönüş yaparsa çok sevinirim. Ben de maalesef yolu uzatan bir çözüm buldum. Ekranın envanterini bulan bir .exe bulup onu çalıştırıp, ekran çıktısını aldıktan sonra tekrar kapatıyorum. Tabi bu çözüm kulağı tersten tutmaya benzer, ama hiç yoktan daha iyidir diye düşündüm belki de, fakat bu herşeye rağmen bir çözümdür. Daha sonra ekran çıktımızı ve bilgilerimizi belirlediğimiz adrese gönderiyoruz. Şimdi giriş yaptıktan sonra yazımıza kodlarımıza başla vakti geldiğini düşünüyoruz. Her zamanki gibi yine kodlarımızın içinde yorum satırlarıyla beslemeye çalıştık.
12 Nisan 2015 Pazar
Spring Mvc + Güncelleme (Uptade) İşlemleri
S.a. arkadaşlar,
Bugün yine bir spring yazımız olacak inşaAllah. Dün projeyi düzenleyip çalışır hale getirdikten sonra saat geç olduğu için yazıyı bugün sabah dinç kafayla yazmaya karar verdim. Hep çalışmak isteyen arkadaşlar için de rahat kafayla çalışmak galiba daha iyi olacak. Bu yazımız belki de şuan için spring konumuzun son yazısı olabilir. Çünkü kafamızdaki işlemlerin hepsini şuan projede yaptık. Tabi bu yeterli değil, fakat en azından başlangıç yapacak arkadaşlar için küçük ama verimli bir seri olduğu kanaatindeyim. Umarım sizler de bu düşüncedesinizdir.
Bugün yine bir spring yazımız olacak inşaAllah. Dün projeyi düzenleyip çalışır hale getirdikten sonra saat geç olduğu için yazıyı bugün sabah dinç kafayla yazmaya karar verdim. Hep çalışmak isteyen arkadaşlar için de rahat kafayla çalışmak galiba daha iyi olacak. Bu yazımız belki de şuan için spring konumuzun son yazısı olabilir. Çünkü kafamızdaki işlemlerin hepsini şuan projede yaptık. Tabi bu yeterli değil, fakat en azından başlangıç yapacak arkadaşlar için küçük ama verimli bir seri olduğu kanaatindeyim. Umarım sizler de bu düşüncedesinizdir.
Etiketler:
data base,
Güncelleme,
Java,
Spring MVC,
Uptade,
Veri tabanı
10 Nisan 2015 Cuma
Spring Mvc + Listeleme ve Silme İşlemi
S.a. Arkadalar,
Bugün kaldığımız yerden devam edeceğiz yine. Dün sağlıkla ilgili problemlerden dolayı yazacak vakit bulamadım. Akşam da güzel bir Akın Kaldiroğlu semineri vardı Java EE ile ilgili. İnternette yayımlayacaktı. İzlemenizi tavsiye ederim.
En son validation işlermleri yapmıştık. Bugün ise kayıt ettiğimiz bilgileri ekrana getireceğiz ve daha sonra da kayıtlar üzerinden silme işlemini gerçekleştireceğiz. Projenin düzgün çalışması için terlediğimi ifade etmek zorundayım. Ben de yeni yeni öğreniyorum sonuçta bu yüzden sizlerin de bir görüşünüz fikriniz olduğu zaman paylaşabilirsiniz. Eski projemiz üzerinden devam etme şansımız olmasıyla birlikte, projenin son halini yazının sonunda paylaşacağım. Oradan indirip üzerinde çalışabilirsiniz. Yorumları yine kodlar arasında yapmaya çalıştım.
Bugün kaldığımız yerden devam edeceğiz yine. Dün sağlıkla ilgili problemlerden dolayı yazacak vakit bulamadım. Akşam da güzel bir Akın Kaldiroğlu semineri vardı Java EE ile ilgili. İnternette yayımlayacaktı. İzlemenizi tavsiye ederim.
En son validation işlermleri yapmıştık. Bugün ise kayıt ettiğimiz bilgileri ekrana getireceğiz ve daha sonra da kayıtlar üzerinden silme işlemini gerçekleştireceğiz. Projenin düzgün çalışması için terlediğimi ifade etmek zorundayım. Ben de yeni yeni öğreniyorum sonuçta bu yüzden sizlerin de bir görüşünüz fikriniz olduğu zaman paylaşabilirsiniz. Eski projemiz üzerinden devam etme şansımız olmasıyla birlikte, projenin son halini yazının sonunda paylaşacağım. Oradan indirip üzerinde çalışabilirsiniz. Yorumları yine kodlar arasında yapmaya çalıştım.
Etiketler:
anatasyon,
delete,
insert,
Java,
List,
PathVariable,
Requset Parametre,
Spring MVC
3 Nisan 2015 Cuma
Spring MVC + Maven
S.a. arkadaşlar,
Uzun süredir yazamıyordum, sadece arada bir keyword yazısı yapmıştık. Onun dışında bir ara vermiştik. Biraz işlerin yoğunluğun biraz da farklı konularla uğraşmaktan. O konulardan biri de Spring'di. Araştırma yaparken sürekli ingilizce siteler haşır neşir oluyoruz. Javacı olmayı göze alıyorsak bu da onun doğal sonucu, bu nedenle ben de giriş nezdinde bir spring mvc projesi oluşturmaya çalışacağım. Proje bağımlılığı olarak da maven kullanacağız. Bir giriş projesi oluşturacağız öncelikle daha sonra yavaş yavaş projemizi ilerletip daha farklı işlemler yapmaya çalışacağız. Şimdilik projeye başlayalım. Bu arada projemizi eclipse ile geliştiriyoruz. Resimlerin üzerinden ilerleyelim. Altına da kısa kısa notlarla anlatmaya çalışacağız.
Uzun süredir yazamıyordum, sadece arada bir keyword yazısı yapmıştık. Onun dışında bir ara vermiştik. Biraz işlerin yoğunluğun biraz da farklı konularla uğraşmaktan. O konulardan biri de Spring'di. Araştırma yaparken sürekli ingilizce siteler haşır neşir oluyoruz. Javacı olmayı göze alıyorsak bu da onun doğal sonucu, bu nedenle ben de giriş nezdinde bir spring mvc projesi oluşturmaya çalışacağım. Proje bağımlılığı olarak da maven kullanacağız. Bir giriş projesi oluşturacağız öncelikle daha sonra yavaş yavaş projemizi ilerletip daha farklı işlemler yapmaya çalışacağız. Şimdilik projeye başlayalım. Bu arada projemizi eclipse ile geliştiriyoruz. Resimlerin üzerinden ilerleyelim. Altına da kısa kısa notlarla anlatmaya çalışacağız.
Etiketler:
apache,
enterprise,
Java,
maven,
MVC,
örnek,
proje,
Spring,
Spring MVC,
tomcat
22 Ocak 2015 Perşembe
Comparable & Comparator ile Sıralama
S.a. Arkadaşlar,
Bugünkü konumuz ArrayListelerde sıralama olacak, fakat bu sıralamalarımız basit manada String veya int sıralamak değil de , bir önceki yazımızda bahsettiğimiz objeler arasında sıralama olacaktır. Ne demek istiyoruz peki , elimizde bir tip değişken var. Örneğin int[] dizi={1,4,2,3}; gibi bir dizi olsun elimizde bunu nasıl sıralıyorduk Arrays.sort(dizi) yazıyorduk ve sıralama yapıyorduk. ArrayListlerde de buna benzer bir olay var. Orda Collection.sort() diye sıralama yapıyoruz, fakat bazen karşımıza bir sınıf geldiğini ve bunun birden fazla değişkeni olduğunu düşünelim hangisine göre sıralama yapacağı ise muallakta kalacağı için işte tam bu noktada comporable ve comparator devreye girer. Şimdi kodumuz üzerinden gidelim. Umarım bu sayede daha iyi pekişecektir söylemeye çalıştıklarımız.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class Car implements Comparable <Car>{
//<Car> enerjik ile sınırlama getiriyor
//Sınırlama koymak istemezsek comporTo metodunda
//değişiklik yapmak zorundayız.Car yerine Object tanımlanmalı
public Car(String marka, Integer fiyat) {
super();
this.marka = marka;
this.fiyat = fiyat;
}
String marka;
Integer fiyat;
@Override
public int compareTo(Car car) {
return fiyat.compareTo(car.fiyat);
//eğer ters sıralama yapmak istersek
//car.fiyat.compareTo(fiyat);
//markaya göre sıralama yapmak içinse
//return marka.compareTo(car.marka);
}
//burada compareTo ile neye göre sıralama
//yapmak istediğimizi override etmezsek hata alırız
@Override
public String toString() {
return "Car [ marka=" + marka + ", fiyat=" + fiyat + "]";
}
}
public class ComparableTest {
public static void main(String[] args) {
Car ford = new Car("ford", 100);
Car fiat = new Car( "fiat", 50);
Car subaru = new Car("subaru", 5000);
Car bmw = new Car("bmw", 1000);
List <Car> carList = new ArrayList <Car>();
carList.add(ford);
carList.add(fiat);
carList.add(subaru);
carList.add(bmw);
carList.add(new Car("mercedes",250));//böyle de yapılabilir
for (Car c : carList) {
System.out.println(c);
}
System.out.println();
Collections.sort(carList);
System.out.println("Comparable Sorting");
for (Car c : carList) {
System.out.println(c);
}
}
}
Yukarıda Comparable yapısını anlatmaya çalıştık Gerekli yerlerde yorum satırlarıyla kodlarımızı destekledik. Umarız anlamanıza yardımcı olmuştur. Şimdi de Comparator yapısına geçelim. Bunun için yine kodumuzu yazıp içerisini yorum satırlarıyla desteklemeye çalışacağız.
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class Car {
public Car() {
//hatırlarsanız eğer herhangi bir constructor
//tanımlamazsak otomatik oluşuyordu .
}
public Car(String marka, Integer fiyat) {
super();
this.marka = marka;
this.fiyat = fiyat;
}
String marka;
Integer fiyat;
@Override
public String toString() {
return "Car ["+ " marka=" + marka + ", fiyat=" + fiyat + "]";
}
}
public class ComparatorTest implements Comparator<Car> {
// Doğal sıralama için Comparable , bundan farklı
//bir sıralama içinse comparator kullanılır
public static void main(String[] args) {
Car ford = new Car("ford", 100);
Car fiat = new Car( "fiat", 50);
Car subaru = new Car("subaru", 5000);
Car bmw = new Car("bmw", 1000);
List<Car> carList = new ArrayList <Car>();
carList.add(ford);
carList.add(fiat);
carList.add(subaru);
carList.add(bmw);
for (Car c : carList) {
System.out.println(c);
}
System.out.println();
ComparatorTest comparatorTest = new ComparatorTest();
// overloaded sort metodunu kullanabiliriz.
// burada 1.arguman siralamak istedigimiz List
// 2.arguman ise Comparator arabirimini uygulayan sinifimiz olacaktir.
Collections.sort(carList, comparatorTest);
//Arrays.sort metodu da gerekli kodlamalarla kullanılabilir
System.out.println("Comparator Sorting");
for (Car c : carList) {
System.out.println(c);
}
}
// Comparator -> compare metodunu override etmemiz gerekir
// Comparable -> compareTo metoduydu.
@Override
public int compare(Car car1, Car car2) {
return car2.fiyat.compareTo(car1.fiyat);
//tersten sıralamak için car1 ile car2 yer değiştirilmeli
}
}
Bugünkü konumuz ArrayListelerde sıralama olacak, fakat bu sıralamalarımız basit manada String veya int sıralamak değil de , bir önceki yazımızda bahsettiğimiz objeler arasında sıralama olacaktır. Ne demek istiyoruz peki , elimizde bir tip değişken var. Örneğin int[] dizi={1,4,2,3}; gibi bir dizi olsun elimizde bunu nasıl sıralıyorduk Arrays.sort(dizi) yazıyorduk ve sıralama yapıyorduk. ArrayListlerde de buna benzer bir olay var. Orda Collection.sort() diye sıralama yapıyoruz, fakat bazen karşımıza bir sınıf geldiğini ve bunun birden fazla değişkeni olduğunu düşünelim hangisine göre sıralama yapacağı ise muallakta kalacağı için işte tam bu noktada comporable ve comparator devreye girer. Şimdi kodumuz üzerinden gidelim. Umarım bu sayede daha iyi pekişecektir söylemeye çalıştıklarımız.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class Car implements Comparable <Car>{
//<Car> enerjik ile sınırlama getiriyor
//Sınırlama koymak istemezsek comporTo metodunda
//değişiklik yapmak zorundayız.Car yerine Object tanımlanmalı
public Car(String marka, Integer fiyat) {
super();
this.marka = marka;
this.fiyat = fiyat;
}
String marka;
Integer fiyat;
@Override
public int compareTo(Car car) {
return fiyat.compareTo(car.fiyat);
//eğer ters sıralama yapmak istersek
//car.fiyat.compareTo(fiyat);
//markaya göre sıralama yapmak içinse
//return marka.compareTo(car.marka);
}
//burada compareTo ile neye göre sıralama
//yapmak istediğimizi override etmezsek hata alırız
@Override
public String toString() {
return "Car [ marka=" + marka + ", fiyat=" + fiyat + "]";
}
}
public class ComparableTest {
public static void main(String[] args) {
Car ford = new Car("ford", 100);
Car fiat = new Car( "fiat", 50);
Car subaru = new Car("subaru", 5000);
Car bmw = new Car("bmw", 1000);
List <Car> carList = new ArrayList <Car>();
carList.add(ford);
carList.add(fiat);
carList.add(subaru);
carList.add(bmw);
carList.add(new Car("mercedes",250));//böyle de yapılabilir
for (Car c : carList) {
System.out.println(c);
}
System.out.println();
Collections.sort(carList);
System.out.println("Comparable Sorting");
for (Car c : carList) {
System.out.println(c);
}
}
}
Yukarıda Comparable yapısını anlatmaya çalıştık Gerekli yerlerde yorum satırlarıyla kodlarımızı destekledik. Umarız anlamanıza yardımcı olmuştur. Şimdi de Comparator yapısına geçelim. Bunun için yine kodumuzu yazıp içerisini yorum satırlarıyla desteklemeye çalışacağız.
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class Car {
public Car() {
//hatırlarsanız eğer herhangi bir constructor
//tanımlamazsak otomatik oluşuyordu .
}
public Car(String marka, Integer fiyat) {
super();
this.marka = marka;
this.fiyat = fiyat;
}
String marka;
Integer fiyat;
@Override
public String toString() {
return "Car ["+ " marka=" + marka + ", fiyat=" + fiyat + "]";
}
}
public class ComparatorTest implements Comparator<Car> {
// Doğal sıralama için Comparable , bundan farklı
//bir sıralama içinse comparator kullanılır
public static void main(String[] args) {
Car ford = new Car("ford", 100);
Car fiat = new Car( "fiat", 50);
Car subaru = new Car("subaru", 5000);
Car bmw = new Car("bmw", 1000);
List<Car> carList = new ArrayList <Car>();
carList.add(ford);
carList.add(fiat);
carList.add(subaru);
carList.add(bmw);
for (Car c : carList) {
System.out.println(c);
}
System.out.println();
ComparatorTest comparatorTest = new ComparatorTest();
// overloaded sort metodunu kullanabiliriz.
// burada 1.arguman siralamak istedigimiz List
// 2.arguman ise Comparator arabirimini uygulayan sinifimiz olacaktir.
Collections.sort(carList, comparatorTest);
//Arrays.sort metodu da gerekli kodlamalarla kullanılabilir
System.out.println("Comparator Sorting");
for (Car c : carList) {
System.out.println(c);
}
}
// Comparator -> compare metodunu override etmemiz gerekir
// Comparable -> compareTo metoduydu.
@Override
public int compare(Car car1, Car car2) {
return car2.fiyat.compareTo(car1.fiyat);
//tersten sıralamak için car1 ile car2 yer değiştirilmeli
}
}
Etiketler:
Array List,
Comparable,
Comparator,
compare,
dizi,
IComparable,
IComparator,
Java,
order,
programming,
sıralama
Kaydol:
Kayıtlar (Atom)