10 Aralık 2017 Pazar

Quartz Scheduler



Uygulamalardaki en kritik konulardan biri de belli bir saatte çalışması planlanmış işlerdir. Bu işlemler arka planda, kullanıcı ile bir etkileşimi olmadan çalışıyor.
Quartz açık kaynaklı bir uygulamadır ve her türlü Java uygulamasının bir parçası olarak çalışabiliyor. Quartz, Trigger diye adlandırılan bir tetikleme mekanizmasına sahiptir. 


Quartz kullanım olarak 2 aşamadan oluşuyor. Birincisi çalışacak olan job belirleme, ikincisi hangi zaman aralıklarında çalışacağı bilgisini düzenlemek. Quartz 3 ana bileşenden oluşuyor. Bunlar "job, trigger, schedular"dır. Job yapılacak olan iştir. Trigger job'ın ne zaman, ne şekilde tetikleneceği emrini veren yapıdır. Job ve Trigger ikisi birlikte schedular'a register olurlar. Kısaca çalışma şekli olarak; job schedular üzerinden trigger tarafından çalıştırılıyor. 

 Projeye Quartz'ı eklemek
Tam dağıtımı(with examples, source, dependencies, doc, etc.) indirebilirsiniz veya Maven kullanıcısıysanız bağımlılıkları ekleyebilirsiniz.
  <dependency>
      <groupId>org.quartz-scheduler</groupId>
      <artifactId>quartz</artifactId>
      <version>2.2.1</version>
  </dependency>
 Bir Schedular başlatın
 Schedular'lar Factory'ler tarafından oluşturulur ve onların .start() methodu çağırılıncaya kadar hiçbir işlem başlatılmayacaktır.
  Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
  scheduler.start();
Quartz Fluent Scheduling API ile kodlama  
API bileşenlerini static olarak import etmeliyiz.
  import org.quartz.Scheduler;
  import org.quartz.SchedulerException;
  import org.quartz.impl.StdSchedulerFactory;
  import static org.quartz.JobBuilder.*;
  import static org.quartz.TriggerBuilder.*;
  import static org.quartz.SimpleScheduleBuilder.*; 
Bunu yaptıktan sonra .execute() methoduna sahip olan Job'ı implement edebilirsiniz.
  public class MyJob implements org.quartz.Job {

      public MyJob() {
      }

      public void execute(JobExecutionContext context)  
        throws JobExecutionException {
          System.err.println("Hello World!  MyJob is executing.");
      }
  
Sonra bu jobları ne zaman çalıştırılacağını tanımlayan triggerlar ile zamanlayın.
 //İşi tanımlayın ve MyJob sınıfına bağlayın
   JobDetail job = newJob(MyJob.class)
      .withIdentity("job1", "group1")
      .build();
//Şimdi Job'ı tetikleyin ve her 40 saniyede bir tekrarlansın. 
  Trigger trigger = newTrigger()
      .withIdentity("trigger1", "group1")
      .startNow()
      .withSchedule(simpleSchedule()
              .withIntervalInSeconds(40)
              .repeatForever())
      .build();
//Quartz'a triggerı kullanarak işi zamanlamasını söyle
   scheduler.scheduleJob(job, trigger); 
Daha fazlasını öğrenmek isterseniz ayrıca Quartz'ın kendi web sitesinde çok iyi bir tutorial da hazır bulunuyor. Gelecek yazıda görüşmek üzere o/





12 Nisan 2017 Çarşamba

Özgür Yazılım ve Linux Günleri 2017

   

   Merhabalar, bu hafta sonu "Özgür Yazılım ve Linux Günleri" için İstanbul'daydım. Özgür Yazılım ve Linux Günleri, 2002’den beri her yıl ilkbaharda düzenlenen, alanının en büyük ve köklü etkinliğidir. Bu yıl 8-9 Nisan 2017 tarihlerinde, Santralİstanbul’da yapıldı. Etkinliği, Linux Kullanıcıları Derneği ve İstanbul Bilgi Üniversitesi beraber düzenledi. Etkinlik boyunca paralel 2 salonda gerçekleşen oturumlarda 40'tan fazla konuşmacı, 30'a yakın konu başlığında bilgi ve deneyimlerini aktardılar. Seminerler, kısa oturumlar ve hızlı konuşma oturumlarının yanı sıra, çeşitli çalışma toplantıları da etkinlik programında yer aldı.

Etkinlik programı için : https://ozguryazilimgunleri.org.tr/2017/program.html


   Her yıl olduğu gibi etkinlik özgür yazılımla ilgilenen herkesin katılımına açık ve ücretsizdi. Etkinlik alanına ulaşım için birkaç noktadan servis ayarlanmıştı. Etkinlik boyunca uzun yılların verdiği deneyim ve birikimi farkediyorsunuz, Türkiye'deki özgür yazılım insanlarını bir kez daha bir araya getiren bu etkinliğin, çeşitli alanlarda özgür yazılımlar ve uygulamaları hakkında farkındalık yaratmayı bir kez daha başardığını düşünüyorum.


   Biz her yıl olduğu gibi bu yıl da Çanakkale'den kalabalık bir ekiple oradaydık. Okulumun özgür yazılım gönüllüsü olan mezun öğrencileri ile görüşmek kısa sohbetler etmek her zamanki gibi çok güzeldi. Çanakkale'de bulunduğumdan dolayı çok sık göremediğim ve sevdiğim insanlarla görüşmenin tadı bir başka tabiki.


  Sevgili Chris Stephenson Hocanın, Fonksiyonel Programlama ve Özgür Yazılımlar katıldığım ilk sunumdu. Chris hocanın dikkat çektiği konular oldukça önemliydi. 2 gün boyunca dinlediğim en ufuk açıcı sunum oldu. Chris Stephenson yalnızca Türkiye'nin değil tüm dünyadaki yazılım eğitimine vurgu yaptı.

   Özgür Yazılım Çevirmenleri Buluşuyor başlıklı, Necdet Yücel, Kaan Özdinçer, Muhammet Kara, Selim Şumlu gibi değerli özgür yazılım insanlarını buluşturan  önemli bir oturum da vardı. Bildiğiniz gibi yazılım çevirisi hiç bitmeyen bir süreç. Tamamen gönüllülerce sürdürülen bu işin özellikle aktif olarak geliştirilen yazılımlarda sürdürülmesinin oldukça güç olduğuna dikkat çekildi. Belli bir seviyeye getirilen çeviri oranı eğer güncellenmezse hızlıca aşağılara düşebiliyor bunun önemi vurgulandı. Bu iş için büyük bir özveri ile çalışan bu insanlar, katkı vermek isteyen gönüllüleri beklediklerini anlattı.

Katıldığım diğer sunumlar;

    IoT Sistemler ve Güvenlik   — Barkın Kılıç


   Masaüstünde Özgürlük   — Barış Büyükakyol


    Bitcoin, Bu Nasıl Özgürlük Ya?   — Engür Pişirici


   Özgür Yazılımlarla Siber Tehdit Avcılığı  — Huzeyfe Önal


   Knet ile Derin Öğrenmeye Giriş  — İlker Kesen


  Özgür Yazılım Çevirmenleri Buluşuyor — Necdet Yücel, Kaan Özdinçer, Muhammet Kara, Selim Şumlu