Friday, February 29, 2008

AD4J(Oracle Application Diagnostic for Java)


Orjini Auptyma JVM Memory Analysis (JAM)'e dayanan AD4J uygulama sunucunuza artı yük getirmeden(ya da min düzeyde diyelim daha realist olsun:)) JVM statüsü hakkında ayrıntılı bilgi edinebileceğiniz bir uygulama. Serverda ya da herhangi başka bir clientda konsol uygulamasını kurup bu konsole da gözlemlemek istediğiniz JVMler için jamagent.war adındaki uygulamayı servera deploy ediyorsunuz.(Öncesinde agent içindeki web.xml de konsolun çalıştığı host u vererek bağlıyorsunuz.)

Servera yaptığınız agent deploymentından sonra restart dahi gerektirmeden konsol uygulamasında JVM ile ilgili ayrıntılı bilgi alabiliyor, o anki heap dumpu bir txt dosyasına alarak sonradan load ederek analiz ettirebiliyor ve hatta daha sonra alınan heap dump ile karşılaştırarak memory leak i tespit edebiliyorsunuz.

Kurulum ve kullanım ile ilgili bilgi için dökümantasyon tabii ki mevcut:
- install guide
- admin guide


Wednesday, February 20, 2008

Jdeveloper 11g Technical Preview

SOA Suite 'in vazgeçilmez parçası olan Jdeveloper'ın 11g technical preview versiyonu hazır ve OTN den ücretsiz indirilebilirsiniz. Bu yeni versiyona şöyle bir baktığımızda 11g ile SOA projelerine farklı bir konsept geldiği rahatlıkla söylenebilir. BPEL, ESB, Workflow vb uygulamaların entegrasyonu için composite kavramı getirilmiş. Artık daha entegre daha uyumlu çalışacakları görülüyor.

ESB yerine mediator kavramı getirilmiş, deployment ve versiyon kontrolü için eksiklikler kapatılmış. Hatta ve hatta SOA kavramı dahi SCH ile değişmiş. Bu kavramsal değişiklikleri kullandıkça yine yazıyor olacağım.

Jdeveloper ile SVN Merge

SVN Pluginini Jdeve indirmek ile ilgili bir yazı yazmıştım daha önce. Ancak SVN Plugininin kullanımında en çok merak edilen ve benim de en çok beğendiğim özelliği 'merge' oldu. Diğer clientların da merge için arayüzleri var ancak ben Jdev'inkini çok beğendim(Hakkını vermek lazım!!). Burada da paylaşmak istedim.
Kod geliştireceğiniz dosya sizin checkout tarihinizden sonra başka biri tarafından commit edildiyse merge ihtiyacı ortaya çıkar. (Commit' e izin verilmez, out-of-date hatası alırsınız.)Zira sizdeki kodun base versiyonu artık değişmiştir. Burada yapılacak şey önce projenizi update etmek(update son versiyonu lokalinize almak değil, sizin lokalinizdeki kod ile repositorydeki son kodu eşleştirmek benzeri bir işlem oluyor!!). Eğer sizin değiştirdiğiniz alanlar ile sonradan gelen koddaki değişen alanlar birbirinden farklı ise sorun yok. Update işleminden hemen sonra projenizi commit edebilirsiniz. Ancak aynı satılarda değişiklik var ise bir conflict durumu söz konusu demektir. Artık conflict olan dosyalarınız ikonlarında bir ünlem işareti belirir(Durum feci anlamında:))

Ünlem işareti çıkan dosya için sizin lokalinizdeki dosya(dosyaadı.mine gibi isimlendirilir) haricinde repositorydeki hali(dosyaadı.rxxx gibi isimlendirilir) ve de conflictten arındırılmış hali(dosyaadı) projede bulunur. Versioning menüsü altında da artık 'Resolve Conflicts' opsiyonu çıkar.
Bu opsiyonu seçtiğimizde karşımıza harkulade bir arayüz geliyor. Bakınız şekil 1-a:

Bu arayüzde sol tarafta sizin commit etme girişiminizden önce gelen son versiyon sağ tarafta sizin versiyonunuz bulunur. Farkılıklar açıkça işaretlenir ve o satırın yanında çıkan ok işareti ile ortada bulunan merge işleminin sonucunda ortaya çıkacak dosyaya eklenir. Kendi versiyonunuzdaki doğruysa sağ taraftaki ok, sizden öceki versiyon doğruysa sol taraftaki ok seçilerek ortadaki alana otomatik olarak eklenir. Yok ikisi de yanlışsa ortadaki file editable dır. O anda edit ederek conflicti çözebilirsiniz. Dosyada birden fazla çakışan alan varsa sol üstte yer alan ok tuşları ile conflictler arasında dolaşabilirsiniz.

Tüm çakışmalar bitince zaten 'merge is completed' yazısını görürsünüz ve projeye eklenen .mine ve .rxx uzantılı dosyalar kaybolur. Projenizi artık gönül rahatlığıyla commit edebilirsiniz.
NOT : Burada önemli olan merge işleminin nasıl yapılması gerektiğini dosyaları edit eden son 2 developerın oturup birlikte karar vermeleridir.
Sorularınız olursa çekinmeyin efem, şimdilik bu kadar.

Thursday, February 14, 2008

DVM(Domain Value Mapping) Yaratmak ve Taşımak

Entegrasyon projelerinde en çok ihtiyaç duyulan şeylerden birisi DVM ler olsa gerek. Her sistemin kendisine göre kabul ettiği değerler vardır. Örneğin x sistemi şehir bilgisini plaka koduna göre kabul ederken y sistemi aynı bilgiyi açık olarak şehrin ismi olarak tutabilir. Bu durumda bu iki sistemin entegrasyonunda şehir değerleri arasında bir dönüşüm yapmak gerekecek ancak SOA nın mantığı gereği de bu değişim kodun içerisinde olmayacaktır. İşte burada ihtiyaca DVM cevap vermektedir. Sistemler arası çevrim xml formatında serverda tutulup, ihtiyaç halinde başka makineye(genellikle dev- test- prod arasında) de taşınabilirliği sağlanmış olmaktadır.
Peki bu DVMler nereden girilir, nasıl kullanılır, nasıl taşınır?
ESB konsolda sol üst köşede yer alan ikonların sonuncusu DVM ile ilgili arayüze götürür. Bu arayüzden yeni DVM yaratabilir, var olanı silebilir, değiştirebilir, elimizdeki DVM xml lerini sistemimize import edebilir veyahut da sistemimizde varolan DVM tanımlarını export edebiliriz.
Biz şimdi ilk etapta yeni DVM yaratarak başlayalım. DVM arayüzüne girdikten sonra sol taraftaki create menüsünden Create a new map seçilir. Açılan arayüz aşağıdaki gibidir.
New DVM yazılı alan yarattığınız DVM in adıdır ve çift tıklayarak değiştirebilirsiniz. Aynı şekilde Domain1 ve Domain2 kolonları sistemlerinizi ifade eder. Yaratmış olduğunuz DVM ile ilgili açıklama Description bölümüne girilirken sistemlere karşılık gelen değerler de satırlara eklenir. Add menüsünden yeni sistemler(kolon) veya sistemlerde değerler(satır) girilebilir. Tüm değerler girildikten sonra sağ üstteki menüden save edilir. Artık makinenize xml li eklemiş bulunuyorsunuz. İsterseniz diğer ortamlara bu DVM leri kaydırmak için export(lokalinize save penceresi açar) ve import u kullanabilirsiniz.
Şehir örneğine göre girilmiş DVM aşağıdaki gibi olacaktır. Daha sonra yarattığınız DVM i transformasyonlarınızda look-up DVM fonksiyonu ile çağırarak, kullanabilirsiniz.

Saturday, February 2, 2008

TOEIC

Bugün itibariyle TOEIC sınavına girmiş bulunmaktayım. ve konuyla ilgili tecrübelerimi paylaşmak istedim.
TOEIC, Test Of English for International Communication, daha çok iş ingilizcesine yönelik TOEFL dan daha kolay olduğunu söyleyebileceğim bir sınav. Türkiye'de de yaygınlaşmaya başlamış. İstanbuldaki sınav merkezi Şişli'de bulunan Standart Test Eğitim. Sınav Amerika kökenli ve yine TOEFL gibi ETS tarafından hazırlanmakta. Sınav için önceden randevu almanız gerekmekte, hatırladığım kadarıyla alabileceğiniz randevu saatleri hafta içi 9:00 ve 13:00 cumartesi 10:00 ve 13:00. Sınava 10-15 dk kala gelmek faydalı oluyor zira optik okuyucu için bilumum kodlama yapmak gerekiyor. Sınav merkezindeki yetkili sınavla ilgili ve sınav esnasında neler yapılabileceği ile ilgili bilgi veriyor.
Listening ve reading olmak üzere 2 ana bölümden oluşan sınavda, listening için her adaya kulaklık dağıtmak gibi bilgisayar bazlı sınavlardaki imkan bulunmamakta. Bunun yerine ortaya konulan bir CD çalardan sadece 1 kez dinlediğiniz bir parça için birkaç soruyu cevaplamanız beklenmekte. Sınav yerinde gürültü olmamasına özen gösterilmesine rağmen dışarıdan gelen bir ezan sesi ya da adaylardan birisinin öksürmesi bile soru kaçırmanıza neden oluyor. Listening sorularının tamamı boyunca hiçbir yere not almaya izin verilmiyor. Bu da işi biraz zorlaştırıyor. Allahtan metinler çok uzun ve karmaşık değil. Genellikle çok açık, anlaşılır bir ingilizce ile gündelik yaşamdan kesitler veriliyor.
100 soruluk listeningden sonra hiç ara vermeden reading bölümüne geçiliyor(Toplam 200 soru 2 saat, süre yetişmiyor gibi bir söylenti olsa da ben 10 dakika kala bitirdim ve çıktım). Reading dediysek öyle diğer sınavlardaki gibi çok uzun metinleri analiz etmenize ana fikri bulmanıza yönelik sorular değil. Çok daha basit bir konsept ile iş mektupları, emailler, formlar gibi metinler üzerinden 1 pasajdan en çok 4 soru geliyor. TOEFL daki gibi normalde hiç kullanılmayan ama sınav için özel olarak hazırlanmanız gereken kelimeler yok. Listeningteki gibi gündelik yaşam yine baz alınmış.
Sınav sonucumu henüz bilmemekle birlikte, upper-intermediate seviyedeki bir adayın özellikle kursa gitmesine, hazırlanmasına gerek olmayan bir sınav olduğunu düşünüyorum. Yine de merak ettiğiniz, aklınıza takılan birşey olursa iletişime geçmekten çekinmeyin derim ben:)