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

28 Ekim 2010 Perşembe

Eclipse OpenCV Entegrasyonu

OpenCV görüntü işlemede yaygın olarak kullanılan açık kaynak kodlu geniş bir kütüphanedir. C++ ile yazılmıştır. Eclipse ise Java'da yazılmış bir IDE olduğu için ekstradan konfigürasyon gerektirmektedir. Yanı sıra C++ compiling language olduğu için yine açık kaynak kodlu olan compiler tool'larını da kurmamız gerekmektedir.

Dokümanı indirmek için tıklayınız.

24 Eylül 2010 Cuma

JUnit Testing

Yazılım projelerinde test işlemleri aşağıdaki grafikte görüldüğü gibi özetlenebilir:





















İşte bu süreçlerin core kısmında yer alan birim (unit) testleri için kullanılan JUnit framework'ü bu yazının konusudur. JUnit framework'ü kullanışlı ve kullanımı kolay olan bir framework'tür. Tek handikapı ise interface class'ları test edememesidir. Buna yönelik çözüm için de mock objects ve stub kullanılır. Ve son olarak da test işlemlerinin gerçekleştiği kodların içerisinde kaybolma riskine karşı Eclipse'in plugini olarak piyasaya sürülen EclEmma2 incelemesi de yine bu yazı içinde değerlendirilmiştir. İşte tüm bu konuları bulabileceğiniz, şu an çalıştığım firma için hazırladığım dokümanı indirmek için lütfen burayı tıklayınız. Güle güle kullanmanız dileğiyle :)

1 Nisan 2010 Perşembe

Clob To String Converter

Clob tipinde tuttuğunuz veriyi String'e çevirmek istediğinizde aşağıdaki metot size yardımcı olacaktır.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.sql.Clob;
import java.sql.SQLException;

public class ClobToStringConverter {
  
    public static String convertClobToString(Clob clb){
        Reader reader;
        String msgStr = "";
        String line;
        try {
             if(clb!=null){
                 reader = clb.getCharacterStream();
                 BufferedReader bufferedReader = new BufferedReader(reader);
                 while((line=bufferedReader.readLine())!=null)
                        msgStr +=line;
             }
           
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }       
       return msgStr;
    }

}

9 Haziran 2009 Salı

Job Scheduling, Trigger

Bir anımsatıcı yaparken en büyük problem istediğiniz zamanda istediğiniz işin yapılmasını sağlaması olacaktır. Bunun için “OpenSymphony” in açık kaynak kodlu olarak geliştirdiği “Quartz” frameWork’u kullanabilirsiniz. Konu hakkında detaylı bilgiye http://www.opensymphony.com/quartz/ adresinden ulaşabilirsiniz.
Quartz “JobScheduling” yaparken bize kolaylılar sağlamaktadır. Quartz için quartz.jar (Quartz 1.4.3 (.zip), Quartz 1.4.3 (.tar.gz), Quartz Web-App) dosyasını Library’ nize eklemeniz gerekmektedir. Bunun ile ilgili örnekleri aşağıda bulabilirsiniz.
İlk olarak Scheduling işlemini yapacağımız “EventManager.java” class’ı yazalım. Burada gerekli işlemleri tanımlarken planlamasını yaptığımız işin belirtilen zaman geldiğinde çalıştıracağı bir “EventJob.java” class ı yazalım.

public class EventManager {
public void eventSchedule()
{
Calendar jobDate = Calendar.getInstance();
int hour = jobTime.get(Calendar.HOUR_OF_DAY);
int minute = jobTime.get(Calendar.MINUTE);
int day = jobDate.get(Calendar.DAY_OF_MONTH);
int month = jobDate.get(Calendar.MONTH);

SchedulerFactory schedulerFactory = null;
Scheduler scheduler = null;

JobDetail jobDetail = null;
Trigger trigger = null;
CronTrigger cronTrigger = null;

Try
{
schedulerFactory = new StdSchedulerFactory();
scheduler = schedulerFactory.getScheduler();
scheduler.start();
jobDetail = new JobDetail((“First_Job”, scheduler.DEFAULT_GROUP, EventJob.class);

trigger = TriggerUtils.makeMonthlyTrigger(“First_Trigger”,
day, hour, minute);
scheduler.scheduleJob(scheduler, trigger);
} catch (Exception e) {
System.err.println(e);
}
}


public class EventJob implements Job {
public void execute(JobExecutionContext arg0) throws JobExecutionException{
System.out.println("Yapılan iş :"+arg0.getJobDetail().getName());
}

JobDetail

JobDetail ile yapılacak işin ismini, hangi grupta çalışacağını ve tetikleyici çalıştığında hangi class’ ı koşacağını belirliyoruz.

Trigger

Trigger’ da ise yapılacak işi tetiklemek için bazı tanımlamalar yapıyoruz. Burada TriggerUtil kullanacak işi, saniyelik, dakikalık, saatlik , günlük, haftalık veya aylık tekrarlamasını sağlayabiliriz. Ayrıca trigger tanımlarken CronTrigger dan da faydalabiliriz. Cron Trigger için Cron zamanlamaya dair Expression’ı (örn. her dakika için “0 * * * * ?”) yazmanız gerekmektedir.

TriggerUtil

TriggerUtil kullanımına veya detaylı özellikleri için javaDoc’undan faydalanabilirsiniz. Kullanıma dair birkaç örnek verecek olursak;

Günlük Hatırlatıcı

public static Trigger makeDailyTrigger(String trigerName, int hour, int minute){..}

Günlük hatırlatmak istediğiniz bir anımsatıcı yapmak istiyorsunuz bunun için makeDailyTrigger kullanmanız yeterli olacaktır. Örnek olarak her gün saat 15:00 ara vermek ve bunu size hergün hatırlatmasını istiyorsunuz. Ayrıca bunu sadece bir yıl için bunu yapmak istiyorsunuz. Bir sonraki yılda tekrarlamasın istiyorsanız setEndTime(Date) fonksiyonunu kullanabilirsiniz.

Trigger trigger = TriggerUtil. makeDailyTrigger(“Ara Ver..!”, 15 , 00);
Calendar endDate = Calendar.getInstance();
endDate= cal.add(Calendar.YEAR,1);
trigger. setEndTime(endDate);
scheduler.scheduleJob(scheduler, trigger);

Haftalık Hatırlatıcı
public static Trigger makeWeeklyTrigger(String trigName, int dayOfWeek, int hour, int minute)

Aylık
public static Trigger makeMonthlyTrigger(String trigerName , int dayOfMonth, int hour, int minute)

Saatlik
public static Trigger makeHourlyTrigger(String trigerName)

Dakikalık
public static Trigger makeMinutelyTrigger(String trigerName)

CronTrigger


CronTrigger, daha karmaşık uygulamalar için esneklik sağlar. Bazı uygulamalarsa basit Trigger lar yeterli olmayacaktır. CronTrigger ‘ı kullanabilmek için Expression lar gerekmektedir. Basit birkaç örnek verecek olursak;

Her Gün Saat 3:00 da -- 0 0 3 * * ?
2005 yılında, her gün saat 22:15 de -- 0 15 22 * * ? 2005
Her Pazartesi ve Cuma saat 10:15 de -- 0 15 10 ? * MON,FRI

cronTrigger = new CronTrigger(“cron_trigger”, scheduler.DEFAULT_GROUP, “0 15 10 ? * MON,FRI”);

Scheduler

Şimdi bir iş zamanlaması yapalım bunun için ellimizde JobDetail ve Trigger tanımlamaları var.

schedulerFactory = new StdSchedulerFactory();
scheduler = schedulerFactory.getScheduler();
scheduler.start();

jobDetail = new JobDetail((“First_Job”, scheduler.DEFAULT_GROUP, EventJob.class);
trigger = TriggerUtils.makeMonthlyTrigger(“First_Trigger”,
day, hour, minute);
scheduler.scheduleJob(scheduler, trigger);

22 Mayıs 2009 Cuma

E-Mail Adresi Kontrolü

Girilen String değerin email adresi formatında olup olmadığını kontrol etmek için aşağıdaki metodu kullanabiliriz.
Örnek olarak xxx@yyy.zz mail adresini düşünürsek,

public boolean CheckMail(String str) {

//"@" karakterinden önce bir string değer olmalıdır("xxx" gibi) . Dolayısıyla @ karakterinin bulunduğu konum alınır.
int indexOfAtChar = str.indexOf("@");

// alınan değer mail formatına uygun olması için 0 'dan büyük olmalıdır.
if (indexOfAtChar > 0) {

// mail adresinimiz de birde "." olmalıdır ve "@" karakterinden sonra gelmelidir. bunun için "." karakterinin konumu alınır.

int indexOfDotChar = str.indexOf(".", indexOfAtChar);

// alınan değer 1 den büyük olmadır, çünkü "@" ile "." karakteri arasında string olmalıdır ("yyy" gibi). ve "String" in uzunluğu "." karakterinin konumundan büyük olmalı, çünkü "." dan sonra bir string gelmelidir ("zz" gibi).
if (indexOfDotChar > 1 && indexOfDotChar < str.length() - 1)
return true;
} else {
return false;
}
} else {
return false;
}
}

Girilen String değer Sayı mı?

Arguman olarak aldığımız değerlerin Integer, Long veya Double olup olmadığını öğrenmek için bir class yazalım,

public class IsParseable {

Girilen String değerin Long bir değer mi olduğunu öğrenmek için
isParsableToLong(String str) fonksiyonunu yazalım burada değer parse edilebilirse true değerini gönderecektir.

public boolean isParsableToLong(String str) {
try {

Long.parseLong(str);
return true;
} catch (NumberFormatException nfe) {
return false;
}
}

String değerin Integer bir değer mi olduğunu öğrenmek için isParsableToInt(String str) fonksiyonunu yazalım burada değer parse edilebilirse true değerini gönderecektir.

public boolean isParsableToInt(String str) {
try {

Integer.parseInt(str);
return true;
} catch (NumberFormatException nfe) {
return false;
}
}

String değerin Double bir değer mi olduğunu öğrenmek için isParsableToDouble(String str) fonksiyonunu yazalım burada değer parse edilebilirse true değerini gönderecektir.

public boolean isParsableToDouble(String str) {
try {

Double.parseDouble(str);
return true;
} catch (NumberFormatException nfe) {
return false;
}
}

4 Mayıs 2009 Pazartesi

Sayıyı yazıya çeviren class

Sayıyı yazıya çeviren class örneği...

--------------------------------------------------

import java.text.NumberFormat;
import java.math.BigDecimal;

class YTL {
private double miktar;
private String fMiktar;
private final String birim = " YTL";
private String birler[] = {"", "BIR", "IKI", "UC", "DORT", "BES", "ALTI", "YEDI", "SEKIZ", "DOKUZ"};
private String onlar[] = {"", "ON", "YIRMI", "OTUZ", "KIRK", "ELLI", "ALTMIS", "YETMIS", "SEKSEN", "DOKSAN"};
private String binlik[] = {"", "YUZ", "", "", "BIN", "", "", "MILYON", "", "", "MILYAR", "", "", "TRILYON", "", "", "KATRILYON", "", "", "KENTRİLYON"};
private String tampon = "";
private int sayi = 0;
private int sayac = 0;
private int sifirSayac = 0;

public YTL() {
miktar = 0.0;
format();
}

public YTL(double m) {
miktar = m;
format();
}

public void setYTL(double sm) {
miktar = sm;
format();
}

public double getYTL() {
return miktar;
}

public String toTL() {
return NumberFormat.getInstance().format(miktar * 1000000) + " TL";
}

private void format() {
fMiktar = NumberFormat.getInstance().format(miktar);
}

public String getBicimliYaz() {
return fMiktar + birim;
}

public String toYazi() {
BigDecimal para = new BigDecimal(miktar);
String paraMiktari = para.toString();
int noktaPozisyonu = paraMiktari.indexOf(".");
String gidenString = "";

for (int i = paraMiktari.length() - 1; i >= 0; i--) {
sayi = Integer.parseInt(Character.toString(paraMiktari.charAt(i)));
sayac++;

if (sayi == 0) {
sifirSayac++;
}

if (sayac == 1) {
tampon = birler[sayi];
}

if (sayac == 2 || sayac == 5 || sayac == 8 || sayac == 11 || sayac == 14 || sayac == 17 || sayac == 20) {
tampon = onlar[sayi];
}

if (sayac == 3 || sayac == 6 || sayac == 9 || sayac == 12 || sayac == 15 || sayac == 18 || sayac == 21) {
if (sifirSayac < tampon =" birler[sayi]" tampon =" binlik[1];" sifirsayac =" 0;" sayac ="=" sayac ="=" sayac ="=" sayac ="=" sayac ="=" sayac ="=" tampon =" birler[sayi]" sayi ="=" tampon =" binlik[sayac];">= 6) && sayac == 4) {
tampon = binlik[sayac];
}
}
}
}
gidenString = tampon + gidenString;
tampon = "";
}
return gidenString;
}

public static void main(String s[]) {
YTL para = new YTL(10001001001001001.0);
System.out.println("para.toTL()\t: " + para.toTL());
System.out.println("para.getYTL()\t: " + para.getYTL());
System.out.println("para.getBicimliYaz()\t: " + para.getBicimliYaz());
System.out.println("para.toYazi()\t: " + para.toYazi());
}
}