Source Control Branch Yapısı

Etiketler

, ,

Merhaba Arkadaşlar,

Birden çok kişinin çalıştığı projelerde source control aracı kullanmak kaçınılmaz. Git, TFS, SVN örnek olarak verilebilir.

Bu araçların ekip içerisinde yapılan geliştirmelerde verimli kullanılması konusunda edindiğim tecrübeleri sizlerle paylaşmak istiyorum.

BRANCH SEÇİMİ NASIL OLMALIDIR?

Böyle bir soru projenin deployment zamanlarında herkesin aklına gelmiş olabilecek bir sorudur. Bu aşamada öncelikle deployment ortamları göz önüne alınmalıdır. Bu ortamlar birçok kurumsal şirkette DEV, DEV_TEST, UAT, PREP, PROD şeklindedir. Proje için oluşturacağımız branchlerimiz ise aynı yapıda ve isimde olmalıdır. Bu bir zorunluluk değil tercihdir 🙂 Gelelim ortamların açıklamalarına,

DEV : Development ortamı. Developer arkadaşlar bu bracnh de at koştururlar.

DEV_TEST : Developer arkadaşların testlerini yapabilecekleri ortamdır.

UAT : Fonksiyonel ekipteki arkadaşların test yapabilecekleri ortamdır. Stabil tutulması gereken bir ortamdır. Müşteri tarafındaki tester arkadaşlarda bu ortamda testlerini yaparlar.

PREP : Bu ortam PROD öncesi ortam olarak nitelendirilir. PROD ile align olmak zorundadır. PROD ortamına çıkış öncesi son testlerin yapıldığı ortam olarak düşünülebilir.

PROD : Live çıkışının yapıldığı ortamdır.

Peki bu branchler bizim için yeterli mi? Haftada en az iki kez live ortamına çıkıldığını düşünürsek bence yeterli değil 🙂 Projede en az 5 developer arkadaşın çalıştığını düşünürsek büyük taskların(en az 5md) geliştirilmesi için de ayrı branchler oluşturabiliriz. 3 kişi aynı task üzerinde yeni oluşturulan bu branch de diğer 2 arkadaş ise normal dev branchinde çalışmayı sürdürebilir. 3 arkadaş geliştirmelerini tamamladıktan sonra kodlarını dev branchine aktarırlar(Chery pick). Bu şekilde dev branchine herzaman ekleme yapabiliriz.

Live çıkışlarında tag almak hayat kurtardığını söylemek isterim 🙂

İyi çalışmalar.

 

Reklamlar

Redis

Etiketler

, , ,

Merhaba,

Günümüzde bir domain için birden fazla application geliştiriliyor. Web ve mobile olmak üzere diğer platformlardan bazı bilgilere erişmek için hızlı bir yöntem olarak https://redis.io/ kullanılabilir. Regis kullanımı için bir server’a ihtiyacınız olmakta. Server’a redisi kurduktan sonra geliştirdiğiniz applicationlardan erişim sağlayabilirsiniz.

Key-value şeklinde bilgileri tutan Redis, istenildiğinde gerekli bilgileri anında hizmetinize sunuyor. Bu yönüyle şuan popüler hale gelmiş durumda. Java daki karşılığı Jedis olarak geçmekte. Jedis için http://javapointers.com/tutorial/use-redis-java-using-jedis/ adres den faydalanabilirsiniz.

İyi Çalışmalar.

 

Lambda Expression Kullanımı

Etiketler

,

Herkese Selamlar,

Bugün sizlere java 8 sürümü ile beraber gelen lambda expression kavramını ve kullanım örneklerini anlatmaya çalışacağım.
Lambda expression bir fonksiyon olarak nitelendiriliyor. Java 8 içerisinde tanımlanmış bir takım hazır fonksiyonlar kullanıma sunulmuş durumda. Bunun yanında “functional interfaces” olarak nitelendirilen kendi fonksiyonlarımızı tanımlayabiliyoruz.
Bu özelliklerin yanında, anonymous class yazım tarzını kısaltmamızı ve anlamamızı kolaylaştırıyor.
Lambda expression yeteneklerini göz önüne aldığımızda özellikle kod okunabilirliği ve yazımda daha hızlı olmamızı sağlamakta. Şimdi örneklere geçelim isterseniz,

Ben örnek olması açısından ayların listesini çekiyorum ve bu liste içerisindeki elemanların üzerinden bir takım işlemler yapmak istiyorum,

11

Yukarıdaki kodlarda expression nitelendirmesinde kullanılan “p” karakteri sıradaki elemanı temsil etmekte. Ben “p” dedim siz “x” diyebilirsiniz.
Koleksiyonlar üzerinde birden fazla işlemi arka arkaya yapmaya yarayan “stream” komutunun çok kullanışlı olduğunu söylemek isterim.
Aşağıdaki örnekte stream kullanımını görebilirsiniz,

11

Yukarıdaki örnekte kullanılan içsel fonksiyonların haricinde daha birçok fonksiyon bulunmaktadır.
Son olarak anonymous classlar için bir örnek paylaşmak istiyorum,

11

Yukarıdaki örnekte klasik kodlama ile lambda expression kullanarak kodlama arasındaki farkları, kodun kısalması ve okunabilirlik açısından çok daha iyi olduğunu görüyorsunuz.
Java diline eklenen expression kullanımı .net tarafında linq kullanarak kod geliştirmiş kişilere çok uzak gelmeyecektir. Buradan Microsoft’u kutluyorum 🙂

İyi Çalışmalar.

Kaynak : https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html

ORACLE/PLSQL – LISTAGG FUNCTION

Etiketler

, ,

Selamlar,

Oracle Plsql de aşağıdaki gibi bir sonuç kümeniz varsa,

Capture

sizin isteğiniz ise şu şekilde bir sonuç elde etmek ise,

Capture

bu gibi bir istek karşısında oracle da listagg function kullanmanız gerekiyor. Fonksiyon hakkında detay bilgi için http://www.techonthenet.com/oracle/functions/listagg.php
sitesini ziyaret edebilirsiniz.

İyi Çalışmalar.

How to access a managed bean in another bean in adf?

Etiketler

, ,

Selamlar,

Adf içerisinde controllerlar arası bilgi taşıma işlemi için generic şöyle bir metod işinizi görebilir,

public static T getInstanceForTParam(Class bean, String expression) {
FacesContext fctx = FacesContext.getCurrentInstance();
Application application = fctx.getApplication();
ExpressionFactory expressionFactory = application.getExpressionFactory();
ELContext context = fctx.getELContext();
ValueExpression createValueExpression = expressionFactory.createValueExpression(context, expression, bean);
T returnBean = (T) createValueExpression.getValue(context);
return returnBean;
}

Kullanımı şu şekilde,

private void accessPerformancePortlet() {
performanceController = getInstanceForTParam(PerformanceController.class, "#{portletBean}");
if (performanceController != null) {
performanceController.initialize();
performanceController.refresh();
}
}

Burada herhangi bir controller içerisinden PerformanceController’a eriştim. PerformanceController taskflow içerisinde “portletBean” olarak isimlendirilmiş. Bu nedenle bu expression ile erişim sağlanabiliyor.

İyi Çalışmalar.