Evet ehliyet sınavlarını parlak olmasada geçtim. Artık sürücü ehliyetim var..
Daha fazla kafa şişirmeye gerek yok..
:)
19 Kasım 2009 Perşembe
6 Eylül 2009 Pazar
Sürücü kursu; benim de ehliyetim olacak!
Evet artık benim de ehliyetim olacak. Ne ehliyeti mi: tabii ki motorlu vasıta için olanlarından.
Çok şükür yazılmayı başardım. Bakalım hayırlısı...
Eğer bir aksilik olmaz ise 3 aya kalmaz artıkın B sınıfı ehliyet sahibi olacağım.
Neden mi yazdım?
Öylesine...
Okumayı verin sizde...
Çok şükür yazılmayı başardım. Bakalım hayırlısı...
Eğer bir aksilik olmaz ise 3 aya kalmaz artıkın B sınıfı ehliyet sahibi olacağım.
Neden mi yazdım?
Öylesine...
Okumayı verin sizde...
12 Ağustos 2009 Çarşamba
Sun Java sertifikaları
Sun'ın Java sertifika sınavları Türkiye'de pek yaygın değil. Tabii şu sıralar. Ancak diğer ülkelerde özellikler AB ve ABD'de yaygın imiş.
Bu sertifikalar ne işe yarayacak demeyin. Gerçekte ben de sertifika manyağı bir adam değilim. Sertifikalara da pek itibar etmem. Ancak SCJP, SCJD sertifika konularına bir göz gezdirdim. gerçekten güzel konular var. Öğrenmek için yıllarca piyasada çalışsanız dahi öğrenemeyeceğiniz, denk gelmeyeceğiniz konular mevcut.
Ayrıca bu sertifikaların faydaları da olacaktır. Diğer serifikalara benzer su gibi verilmediğinden, alması biraz zor olduğundan daha kıymetli...
Tecrübeye her daim saygımız mevcut ve mevcut olacak. Ancak bazı durumlarda sertifikalar iyi kullanıldığında, tecrübelerle beraber, hem kişisel hem de maddi faydalarının olacağına inanıyorum. Özellikle de SCJP gibi Sun sertifikalarının.
Bu düşünceler bana iat. Doğal olarakta beni bağlar. Ancak sizlerle de paylaşayım dedim.
Eğer irade gösterebilirsem, düzenli çalışır bir kaç ay içinde SCJP sertifikasını alırsam çok sevindirik olacağım. Bakalım gerçekleri zaman gösterecek.
İyi çalışmalar...
Bu sertifikalar ne işe yarayacak demeyin. Gerçekte ben de sertifika manyağı bir adam değilim. Sertifikalara da pek itibar etmem. Ancak SCJP, SCJD sertifika konularına bir göz gezdirdim. gerçekten güzel konular var. Öğrenmek için yıllarca piyasada çalışsanız dahi öğrenemeyeceğiniz, denk gelmeyeceğiniz konular mevcut.
Ayrıca bu sertifikaların faydaları da olacaktır. Diğer serifikalara benzer su gibi verilmediğinden, alması biraz zor olduğundan daha kıymetli...
Tecrübeye her daim saygımız mevcut ve mevcut olacak. Ancak bazı durumlarda sertifikalar iyi kullanıldığında, tecrübelerle beraber, hem kişisel hem de maddi faydalarının olacağına inanıyorum. Özellikle de SCJP gibi Sun sertifikalarının.
Bu düşünceler bana iat. Doğal olarakta beni bağlar. Ancak sizlerle de paylaşayım dedim.
Eğer irade gösterebilirsem, düzenli çalışır bir kaç ay içinde SCJP sertifikasını alırsam çok sevindirik olacağım. Bakalım gerçekleri zaman gösterecek.
İyi çalışmalar...
28 Mayıs 2009 Perşembe
Tomcat sunucusu ve saklı bahçe
Bir web sunucum olsun ve bu sunucuda n adet proje - web projesi - çalışmakta olsun. Ancak ben bu projelerime direk erişimi istememekteyim. Bunu bir kaç değişik şekilde yapabilirim.
Yani http://localhost:8080/TomcatHttpBasicAuth/index.html URL sini çağırdığımda tarayıcımda bir güvenlik ekranı çıkmalı. Kullanıcı adı ve şifremi girince o alana erişebilmeliyim. Buradaki ince nokta; eğer güvenliği geçemez isem kısıtlı bölgemdeki kodlarım asla çalıştırılmayacaktır. Bu güvenlik işlemini Tomcat'in kendisi yapmaktadır.
Bunun için önce Tomcat web suncusunda tomcat_users.xml dosyasına kullanacağımız roller ve kullanıcılar eklemeliyiz. Kullanıcı bilgilerini ve roller - erşiem haklarını - bu xml dosyasında tutmaktadır Tomcat.
Örnek uygulama ve diğer ayrıntılı ekran görüntüleri için TIKLAYINIZ.
- Hiç kod yazmadan TOMCAT sunucusunda HTTP BASIC AUTH özelliğiyle o projeye veya o projenin belli bir bölgesine erişimi kısıtlayabilirim.
Yani http://localhost:8080/TomcatHttpBasicAuth/index.html URL sini çağırdığımda tarayıcımda bir güvenlik ekranı çıkmalı. Kullanıcı adı ve şifremi girince o alana erişebilmeliyim. Buradaki ince nokta; eğer güvenliği geçemez isem kısıtlı bölgemdeki kodlarım asla çalıştırılmayacaktır. Bu güvenlik işlemini Tomcat'in kendisi yapmaktadır.
Bunun için önce Tomcat web suncusunda tomcat_users.xml dosyasına kullanacağımız roller ve kullanıcılar eklemeliyiz. Kullanıcı bilgilerini ve roller - erşiem haklarını - bu xml dosyasında tutmaktadır Tomcat.
Örnek uygulama ve diğer ayrıntılı ekran görüntüleri için TIKLAYINIZ.
Etiketler:
güvenli dizin,
http basic auth,
tomcat,
tomcat güvenlik
2 Nisan 2009 Perşembe
JPA'da yeni kaydın ID numarasını almak...
JPA ile bir problem çözmeye çalıştığımızı düşünelim. Yeni bir müşteri veya adres defterine yeni bir adres kaydı atmak istiyor olalım. Ve kayıt işleminden hemen sonra kullanılmak üzere bize yeni kaydın ID ( PK ) numarası gerekli olsun.
Bunu diğer yöntemler ile nasıl yapılacağına bir bakalım: Önce kayıt atılır. Sonra veritabanı sunucusu eğer destekliyorsa , örneğin: lastInsertID() gibi bir komutla en son eklenen kaydın ID numarası alınır. Tabi eğer böyle bir komut yok ise ve veritabanı sunucumuz, aletlerimiz transactionı desteklemiyorsa bunun o an eklenen kaydın ID numarası olduğunu ummamız iyimser bir yaklaşım olacaktır. Aynı anda arda arda bir kaç kayıt gelebilir ve elimizdeki ID numarası başka kayıda ait olabilir.
Bunun da çözümleri vardır. Kendi kilit - lock - mekanizmanızı veya veritabanının kilit mekanizmanısını kullanabilirsiniz. Bunun da sakıncalarını, özellikle tablo bazında kilitlemelerin sakıncalarını göreceksiniz. Özellikle bir biri ile dış anahtarlar - FK - ile bağlı tablolara kayıt atarken tablo kitleme bir sonsuz döngüye girebilir. Ve sistem birini feda ederek bu döngüden çıkar. Ama bu işinize yaramaz bir çözümdür.
Ya da kendi kilit mekanizmanızı dolaylı yöntemler ile siz geliştirisiniz. Mesela tablolara birer alan koyarsınız o kayıt kilitli ise o alana bir değer atarsınız. O kayıt ile işlem yapmak isteyenler olursa eriştirmezsiniz böylece...
Tablo kitleme olayı yeni kayıt atarken aldığınız ID numarasının o kayda ait olduğunu garantiler.
Ancak gerekmedikçe tablo kitlememeniz hayrınıza olacaktır. Tablo kitlemeleri sıralara, kuyruklara neden olacağından sistemin performansını düşürür.
Gelelim JPA'da o kaydın ID numarasını nasıl alacağımıza. Öncelikle JPA ORM yazılım iskeletidir. JPA transaction yönetimine sahiptir.
İşlem bu kadar basittir. Eğer kayıt başarılı ise commit() fonksiyonu veritabanına kayıt işlemini onaylatır. Ve yeni kayıt edilecek olan entitybean nesnesinin ID alanı doğal olarak boştur! Ancak Commit() başarlıysa bu alan JPA tarafından doldurulur. Sizde kolayca bu değeri alırsınız. Ve bilirsiniz ki bu ID kesinlikle o an kaydettiğiniz kayda aittir!
İşte JPA ile hayatınızı kolaylaştıran bir olay daha!!!
Mr. mascule reklamına benzedi biraz ama .... :)
Bunu diğer yöntemler ile nasıl yapılacağına bir bakalım: Önce kayıt atılır. Sonra veritabanı sunucusu eğer destekliyorsa , örneğin: lastInsertID() gibi bir komutla en son eklenen kaydın ID numarası alınır. Tabi eğer böyle bir komut yok ise ve veritabanı sunucumuz, aletlerimiz transactionı desteklemiyorsa bunun o an eklenen kaydın ID numarası olduğunu ummamız iyimser bir yaklaşım olacaktır. Aynı anda arda arda bir kaç kayıt gelebilir ve elimizdeki ID numarası başka kayıda ait olabilir.
Bunun da çözümleri vardır. Kendi kilit - lock - mekanizmanızı veya veritabanının kilit mekanizmanısını kullanabilirsiniz. Bunun da sakıncalarını, özellikle tablo bazında kilitlemelerin sakıncalarını göreceksiniz. Özellikle bir biri ile dış anahtarlar - FK - ile bağlı tablolara kayıt atarken tablo kitleme bir sonsuz döngüye girebilir. Ve sistem birini feda ederek bu döngüden çıkar. Ama bu işinize yaramaz bir çözümdür.
Ya da kendi kilit mekanizmanızı dolaylı yöntemler ile siz geliştirisiniz. Mesela tablolara birer alan koyarsınız o kayıt kilitli ise o alana bir değer atarsınız. O kayıt ile işlem yapmak isteyenler olursa eriştirmezsiniz böylece...
Tablo kitleme olayı yeni kayıt atarken aldığınız ID numarasının o kayda ait olduğunu garantiler.
Ancak gerekmedikçe tablo kitlememeniz hayrınıza olacaktır. Tablo kitlemeleri sıralara, kuyruklara neden olacağından sistemin performansını düşürür.
Gelelim JPA'da o kaydın ID numarasını nasıl alacağımıza. Öncelikle JPA ORM yazılım iskeletidir. JPA transaction yönetimine sahiptir.
entitymanager.getTransaction().begin(); entitymanager.persist(entitybean); entitymanager.getTransaction().commit(); int Id = entitybean.getEntityBeanID().intValue();
İşlem bu kadar basittir. Eğer kayıt başarılı ise commit() fonksiyonu veritabanına kayıt işlemini onaylatır. Ve yeni kayıt edilecek olan entitybean nesnesinin ID alanı doğal olarak boştur! Ancak Commit() başarlıysa bu alan JPA tarafından doldurulur. Sizde kolayca bu değeri alırsınız. Ve bilirsiniz ki bu ID kesinlikle o an kaydettiğiniz kayda aittir!
İşte JPA ile hayatınızı kolaylaştıran bir olay daha!!!
Mr. mascule reklamına benzedi biraz ama .... :)
23 Mart 2009 Pazartesi
Url Rewrite Filter ile arama moturu dostu URL yapmak...
Öncelikle arama motoru dostu bağlantılar artık moda olduğundan eninde sonunda karşınıza çıkacaktır. Neden mi? Çünkü MODA!
Peki Java'da bunu nasıl yaparız? Php de bir çok örneği var. Mesela Apache Http sunucusunun mod_rewrite eklentisi ile bunu php , perl v.b. destekli sunucularda yapmak kolay. Hatta php de buna özel betikler var.
Java'da bu soruna merhem olan API ler mevcut. Ben http://urlrewritefilter.googlecode.com adresindeki api kullanarak bir örnek yapacağım. Diğer ulaşılabilir adres ise http://tuckey.org .
Mesela yapmak istediğimiz şunlar olsun :
Önce Eclipse'de bir web projesi oluşturun. Bunun /WEB-INF/lib dizini altına urlrewrite-3.2.0.jar'ı ekleyin. Sonrasında ise /WEB-INF/urlrewrite.xml dosyası oluşturun. Adı urlrewrite.xml olan dosya sizin arama motoru dostu bağlantılarınızın kaynağı olacaktır. Sebebi burada geçerli bağlantı dokularını - url pattern - belirteceksiniz. Belirtilen bağlantı dokularına uyan bağlantılar o kurallara göre işletilerek istediğimizi elde edeceğiz.
Bağlantı dokularında dikkat edilmesi gereken bazı noktalar mevcut:
Kural örneği resmi:

index.jsp:

Gerisi sizin hayal gücünüze kalmış...
Örnek bir Eclipse projesi : örnek proje
Projeyi indirip baktığınızda daha iyi anlayacaksınız.
Peki Java'da bunu nasıl yaparız? Php de bir çok örneği var. Mesela Apache Http sunucusunun mod_rewrite eklentisi ile bunu php , perl v.b. destekli sunucularda yapmak kolay. Hatta php de buna özel betikler var.
Java'da bu soruna merhem olan API ler mevcut. Ben http://urlrewritefilter.googlecode.com adresindeki api kullanarak bir örnek yapacağım. Diğer ulaşılabilir adres ise http://tuckey.org .
Mesela yapmak istediğimiz şunlar olsun :
- index.jsp yerine
/index - index.jsp?id=44&baslik=Teneke-adam yerine
/index/44/Teneke-adam olsun
Önce Eclipse'de bir web projesi oluşturun. Bunun /WEB-INF/lib dizini altına urlrewrite-3.2.0.jar'ı ekleyin. Sonrasında ise /WEB-INF/urlrewrite.xml dosyası oluşturun. Adı urlrewrite.xml olan dosya sizin arama motoru dostu bağlantılarınızın kaynağı olacaktır. Sebebi burada geçerli bağlantı dokularını - url pattern - belirteceksiniz. Belirtilen bağlantı dokularına uyan bağlantılar o kurallara göre işletilerek istediğimizi elde edeceğiz.
Bağlantı dokularında dikkat edilmesi gereken bazı noktalar mevcut:
- from etiketlerinde yazılan bağlantı dokuları ya da regex patternlerde
? yerine \?, = yerine \= , & yerine amp; kullanın. - Bağlantılarınızı otomatik outboundrule ile oluşturmak için kesinlikle response.encodeURL() kullanın. Örn: response.encodeURL("/index.jsp?id=44&baslik=dayimin-oglu"); gibi. Siz normal yazın ancak response.encodeURL() ile arama motoru dostu url olsun! Ancak unutmayın eğer bağlantı dokusunda - regex pattern - (^/index.jsp\?id\=([0-9]+)amp;baslik\=([0-9][a-zA-Z]+)$) olduğunda siz response.encodeURL("/index.jsp ....") index.jsp'nin önünde "/" işereti olmaz ise aynı dokuya denk değildir! Bunu unutmayın!
Kural örneği resmi:

index.jsp:

Gerisi sizin hayal gücünüze kalmış...
Örnek bir Eclipse projesi : örnek proje
Projeyi indirip baktığınızda daha iyi anlayacaksınız.
22 Mart 2009 Pazar
Php ile değişen alt yapılara ayak uyduran üyelik sistemi yazmak
Php ile değişen alt yapılara ayak uyduracak bir üyelik sistemi yazmak isteyelim mesela.
Bunu nasıl yaparız?
Örneğin sisteme girişlerin denetlemesini bir veritabanından okuyarak yapıyor olalım. Üyeler kullanıcı adlarını ve şifrelerini yazıp sisteme giriyor olsunlar. Her şey buraya kadar normal.
Bir gün patron gelsin ve artık biz o şirketle birleştik ve onların API'lerini kullarak üyelerin girişlerini denetleyeceklerini söyledi. Bu sırada siz kafayı sıyırabilirsiniz gönül rahatlığıyla...
Peki böyle değişken durumlara ayak uyduracak bir sistem yazabilsek ve üye girişlerinin genel yapısı değişmesede, ufacık bir değişiklikle tüm sistem alt yapısı bir anda değişse...
İşte burada sizin üyelik sistemini nasıl tasarladığınıza göre işiniz ya zor ya da kolay olacaktır.
Yukarıdaki kodda üyelik sistemi genel yapısı hiç değişmeden sadece Adaptör nesneyi değiştirerek bu işlemi gerçekleyebiliriz. Tüm denetleme yapıları aynı kalır. Sadece "BenimGirisAdaptorum" sınıfı yerine aynı interface'dan türemiş başka bir adaptör nesnesi kullanmamız yeterli olacaktır. Bu sayede üyelik mekanizması şeklen aynı kalacak ancak kullandığı alt yapı esasen değişmiş olacaktır.
Örnek kodlar aşağıda indirilebilir.
Örnek kod: örnek dosya
Örnek kodu incelerseniz herşey kafanızda daha da netleşecektir.
Bunu nasıl yaparız?
Örneğin sisteme girişlerin denetlemesini bir veritabanından okuyarak yapıyor olalım. Üyeler kullanıcı adlarını ve şifrelerini yazıp sisteme giriyor olsunlar. Her şey buraya kadar normal.
Bir gün patron gelsin ve artık biz o şirketle birleştik ve onların API'lerini kullarak üyelerin girişlerini denetleyeceklerini söyledi. Bu sırada siz kafayı sıyırabilirsiniz gönül rahatlığıyla...
Peki böyle değişken durumlara ayak uyduracak bir sistem yazabilsek ve üye girişlerinin genel yapısı değişmesede, ufacık bir değişiklikle tüm sistem alt yapısı bir anda değişse...
İşte burada sizin üyelik sistemini nasıl tasarladığınıza göre işiniz ya zor ya da kolay olacaktır.
$giris = new UyelikGiris(new BenimGirisAdaptorum("assd", "123"));
if($giris->girisOnaylandiMi()){
echo "Onaylandı\n";
}
Yukarıdaki kodda üyelik sistemi genel yapısı hiç değişmeden sadece Adaptör nesneyi değiştirerek bu işlemi gerçekleyebiliriz. Tüm denetleme yapıları aynı kalır. Sadece "BenimGirisAdaptorum" sınıfı yerine aynı interface'dan türemiş başka bir adaptör nesnesi kullanmamız yeterli olacaktır. Bu sayede üyelik mekanizması şeklen aynı kalacak ancak kullandığı alt yapı esasen değişmiş olacaktır.
Örnek kodlar aşağıda indirilebilir.
Örnek kod: örnek dosya
Örnek kodu incelerseniz herşey kafanızda daha da netleşecektir.
Kaydol:
Kayıtlar (Atom)
