10 Ekim 2014 Cuma



Merhaba arkadaşlar benzer bir haberi geçtiğimiz günlerde JetBrains firmasından duymuştuk. Bu seferde Github benzer açılımı öğrenciler için yapıyor. Haberin devamı için aşağıdaki linklerden  faydalanabilirsiniz.

Kaynak:

https://education.github.com
https://education.github.com/pack


3 Ekim 2014 Cuma



Arkadaşlar merhaba,
Bugün, benimde daha önceden katıldığım ve çok faydalandığım bir online kursu sizinle paylaşmak istiyorum. Hüseyin Akdoğan hocamın sade ve akıcı bir şekilde anlattığı Kurumsal yazılımlarda sıklıkla kullanılan teknolojilerin ve big data kavramlarının bu teknolojilerde nasıl kullanıldığının iyi bir şekilde ifade edildiği bu eğitime mutlaka katılmanızı tavsiye ederim. 


Önemli bir kısmı uygulamalı olarak sürdürülecek eğitimde, Cumartesi günleri gerçekleştirilecek etütlerde incelenmek üzere proje görevleri verilecektir.

Bu dönem ki eğitimimizde aşağıdaki anahtar kavramlar üzerinde çalışacağız.
  • JavaEE 7
  • Spring
  • Apache Shiro
  • JSF 2.2
  • HTML 5
  • Web Intelligence
  • NoSQL
  • MongoDB
  • Elesticsearch

Bu eğitim sonunda yapabileceklerinizden bazıları:
  • Core Spring teknolojisi ile büyük projelerde kolay nesne yönetme
  • Spring Security ve Apache Shiro ile güvenli web siteleri inşa etme
  • JSF 2.2 ile stateless ve HTML 5 uyumlu uygulamalar geliştirebilme
  • Google, Amazon ve Yahoo gibi büyük firmaların kullandığı RESTful yaklaşımını, kendi projelerinizde kullanabilme
  • Dil bağımsız servis ve haberleşme uygulamaları geliştirebilme
  • Hazelcast ile birlikte, verilerinizi sunucularınız üzerinde dağıtıklaştırabilme
  • Nginx ile yoğun trafik alan sunucularınızda yük-dengeleme kurabilme
  • MongoDB ve Elasticsearch ile büyük ölçekli verileri yönetebilme, performanslı çalışabilme

Eğitim Konuları:

Çekirdek Spring
  • Dependency Injection & Inversion of Control
  • Coupling & De-Coupling
  • Spring AOP
  • Transaction yönetimi
  • Spring ve Hibernate
Java Güvenlik Çatıları
  • Authentication kavramı
  • Authorization kavramları
  • URL bazlı güvenlik yönetimi
  • Spring Security
  • Apache Shiro
Temel JavaServer Faces
  • Temel JSF
  • JSF Yaşam Döngüsü
  • JSF Olay Model ve Mimarisi
JavaServer Faces’ta Yenilikler
  • JavaServer Faces 2.0 ile gelen yenilikler
  • Anotasyon
  • Ajax
  • System Events
  • JSF 2.2 ile gelen yenilikler
  • HTML 5
  • Stateless Views
  • ViewAction Component
  • Resource Library Contracts
  • Faces Flow
RESTful Web servisleri
  • RESTful yaklaşımı
  • Java EE 7 (JSR 339): JAX-RS 2.0 standardı
  • Jax-RS ve JAXB
  • Jax-RS 2 ile JSON-P kullanımı
Nginx & Hazelcast
  • Nginx mimarisi
  • Nginx’i öne çıkaran noktalar
  • Nginx load-balancing & fail-over yönetimi
  • In-Memory Data Grid kavramı ve Hazelcast
  • Hazelcast Clustering
NoSQL & MongoDB
  • Big Data kavramı
  • NoSQL kavramı
  • RDBMS sistemlerle temel farklar
  • MongoDB
  • Avantajları
  • Write Concern
ElasticSearch
  • Web Intelligence
  • Full Text Search
  • Index, Type ve Mapping
  • Cluster ve Node yapısı
  • Bulk API
  • Java API
  • Facets ve Aggregations modülleri

Online eğitim günleri
1. gün 13 Ekim Pazartesi 20:00-21:30 (Başlangıç)
2. gün 15 Ekim Çarşamba 20:00-21:30
3. gün 18 Ekim Cumartesi 11:00-14:00
4. gün 20 Ekim Pazartesi 20:00-21:30
5. gün 22 Ekim Çarşamba 20:00-21:30
6. gün 25 Ekim Cumartesi 11:00-14:00
7. gün 27 Ekim Pazartesi 20:00-21:30
8. gün 30 Ekim Perşembe 20:00-21:30
9. gün 01 Kasım Cumartesi 11:00-14:00
10. gün 03 Kasım Pazartesi 20:00-21:30
11. gün 05 Kasım Perşembe 20:00-21:30
12. gün 08 Kasım Cumartesi 11:00-14:00 (Bitiş)

Toplam 4 Hafta, 12 Oturum, 24 Saat

Katılım şartı 
Katılımcıların Java programlama dilinin temellerini bilmesi gerekmektedir.

Eğitmen:
Hüseyin Akdoğan

Mekan
Bu eğitim internet üzerinden online olarak gerçekleştirilecektir. Dersler Gotomeeting aracı ile sağlanacaktır. Katılımcıların Windows veya Mac bilgisayarları ile derse katılmaları gerekmektedir.

27 Eylül 2014 Cumartesi



Merhaba Arkadaşlar,

Bugün sizinle belkide Java dünyasının en yararlı icatlarından birini paylaşacağım...Bildiğiniz üzere programcıların en büyük sıkıntılarından biri, kütüphaler ve onların yönetimidir. Bu ufak projelerde çok sıkıntılı bir durum gibi gözükmese de, proje büyüdükçe bu kütüphalelerin yönetimi de zorlaşmaktadır. İşte bu noktada, Java geliştiricileri bizi bu problemlerden soyutlamak için Maven'i geliştirmişlerdir. 

Maven Projesi nedir? ve bizi ne gibi sıkıntılardan kurtarır ?

Maven İbranice bir kelime olup, bilginin aküsü gibi bir anlam çağrıştırmaktadır. Tarihçesine bakıldığında, projenin başlangıcı  Jakarta Turbine Projesinin yapım süresini basitleştirmek ve hızlandırmak için olduğu görülmektedir. Yapılmak istenen amaç ise, proje inşasında standart bir yol belirleme, projelerin içeriğinin temiz bir şekilde  tanımının yapılması, proje bilgilerinin basit bir yolla yayınlanması ve çeşitli projeler üzerinde JAR paylaşılmasıdır.

Peki Maven'ın avantajları nelerdir ? 

Maven project object model(POM) xml dosyası kullanarak proje oluşturma imkanı sunmaktadır. Bu xml dosyası ne anlama gelmektedir? Anlamı maven kullandığınızda, projeyi hangi editörde oluşturduğunuzun bir manası kalmamakta, kısacası sizi, tıpkı javanın platform özgürlüğü gibi java editörlerinden soyutlamaktadır. Yani projenizi nerede oluşturduğunuzun bir önemi kalmamaktadır. İster Netbeans üzerinde, ister İntellij Idea ve isterseniz Eclipse üzerinde proje oluşturup, bu projeleri pom.xml sayesinde farklı editörlerde açabilirsiniz.Tabi Maven öncesini düşünürseniz bu tranfer işleminin ne kadar zor olacağını tahmin etmek hiç de güç değil...

Maven Nasıl kurulur, Sistem Gereksinimleri Nelerdir ve Kaynak Dosyaları nereden indirebiliriz ? 

Aşağıdaki linkten maven projesinin en son sürümünü kullanmış olduğunuz işletim sistemine göre indirebilirsiniz.


Maven için Sistem gereksinimleri ise,


JDKMaven 3.2 versiyonu için JDK 1.6 or üzeri, Maven 3.0/3.1
versiyonu için ise JDK 1.5 üzeri olan paketler tercih edilmelidir.
Memoryminimum bir gereklilik belirtilmemiştir.
DiskYaklaşık olarak Maven'in kurulumu için 10mb yeterli olacaktır.
Buna ek olarak sizin local Maven repository(yani yerel
Maven depolarınız) için Maven sizden bir disk alanı isteyecektir...
En azından 500mb bile bu kütüphaleri saklamak için
yeterli olacaktır.. Aslında tamamen sizin projenizin
büyüklüğüne bağlıdır.
Operating Systemminimum bir gereklilik belirtilmemiştir.


Kurulumu (Window İşletim Sistemi İçin),

1-) ilk olarak Maven'i kuracağımız yeri belirlememiz gerekiyor. Örneğin benim bilgisayarımda  C:\Program Files\Java\apache-maven-3.2.3 klasörünün altına indirmiş olduğum apache-maven-3.2.3-bin.zip dosyasını unzip yaptım...Aşağıdaki resimde daha detaylı anlaşılmaktadır.           


           

2-) Daha sonrasında Bilgisayarım--> Özellikler--> Gelişmiş Sistem Ayarları--> Çevresel Değişkenler dedikten sonra sistem değişkenleri bölümünden Yeni(new) butonuna basarak Maven için gerekli ayarlamaları yapıyoruz. Değişken ismine(Variable name): M2_HOME  Değişken Değeri(Variable Value): C:\Program Files\Java\apache-maven-3.2.3 dedikten sonra Ok tuşuna basarak Maven'i tanıtma işlemimizin ilk adımı bitiyor.  
                                                                                     
         

3-) İkinci aşamada ise yine sistem değişkenleri kısmında Path değişkenini Düzenle(Edit) diyerek değişken değeri(variable value) kısmına ;%M2_HOME%\bin ifadesini eklemek olacaktır. Bu işlemler Editörlerin Maven'i kolayca bulmasında ve Maven'in komut satırında çalışabilmesi için yardımcı olacaktır.         
                                    
         


4-) Bununla beraber kontrol etmemiz gereken hususlardan biriside sistem değişkenlerinde JAVA_HOME değişkeninin daha önceden oluşturulduğundan emin olmak gerekmektedir.. Bu değişkene karşılık gelecek değer JDK(Java development kid) nın bulunduğu dizin olmalıdır. 

Örn:  C:\Program Files\Java\jdk1.7.0_51 ...Daha sonrasında Path değişkenini Düzenle(Edit) diyerek değişken değeri(variable value) kısmına ;%JAVA_HOME%\bin; ifadesini eklemek olacaktır. Tabiki normal bir java geliştiricisi iseniz bu ayarlamaların önceden yapılmış olması gerekmektedir. Kısacası bu madde sadece kontrol amaçlıdır.

5-) Son kısımda ise Maven'in çalışıp çalışmadığını komut satırında görmek kalacaktır. Komut satırına mvn --version yazarak Maven'in doğru bir şekilde kurulup kurulmadığını anlayabiliriz.



  
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\HasanCelik>mvn --version
Apache Maven 3.2.3 (893ca28a1da9d5f51ac03827af98bb730128f9f2; 2013-06-28 05:15:32+0300)
Maven home: C:\Program Files\Java\apache-maven-3.2.3
Java version: 1.7.0_25, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.7.0_25\jre
Default locale: en_US, platform encoding: Cp1254
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
C:\Users\HasanCelik>


Kurulumu (Linux İşletim Sistemi İçin),


1-) Benzer işlemi bu sefer linux için yapıyoruz.. bu sefer apache-maven-3.2.3-bin.tar.gz olanı indirip, istediğimiz bir klasörün altına bu sıkıştırılmış dosyayı dışarı çıkarıyoruz.. İsterseniz /usr/local/apache-maven bu dizini tercih edebilirsiniz...

2-) Akabinde Terminal'i açarak (Linux için komut satırı) M2_HOME değişkenini ekleme işlemini yapıyoruz..Örneğin export M2_HOME=/usr/local/apache-maven/apache-maven-3.2.3

3-) Daha sonrasında M2 değişkeni oluşturup Maven'in bin klasörünü buraya bağlıyoruz.Örn: export M2=$M2_HOME/bin

Aslında bu aşama window içinde yapılabilirdi ama biz direk Path klasörüne  ;%JAVA_HOME%\bin; ekleyerek aradaki bu adımı kısalttık... Bu kısım kafanızı karıştırmasın.

4-) Bu aşamada ise  Path değişkenine M2 değişkenini ekliyoruz. Örn : export PATH=$M2:$PATH

5-) Son olarak Windows 'da olduğu gibi mavenin gerçekten doğru bir şekilde yüklenip yüklenmediğini kontrol ediyoruz. Örn: mvn --version




Kısacası Linux ve Window yüklü işletim sistemlerinde Maven'in kurulumu bu şekilde gerçekleşmektedir. Umarım bu makale sizin için yararlı olacaktır. 

Tekrar görüşmek dileğiyle...

Kaynak : http://maven.apache.org/download.cgi





Merhaba arkadaşlar,

Bundan böyle JetBrains Şirketinin kullanıcılarına sunmuş olduğu bütün Ultimate Edition sürümleri artık üniversite öğrencileri ve öğretmenlerine ücretsiz !!! Sadece yapmanız gereken aşağıda vermiş olduğum linke girerek istediğiniz JetBrains editörünü seçmek ve okulunuzdan almış olduğunuz e.g. john.smith@mit.edu.  uzantılı mail adresini belirterek istenilen formu doldurmak...


Firma her bir kullanıcıya 1 senelik lisans vermektedir.





http://www.jetbrains.com/student/



10 Kasım 2013 Pazar



prob.properties

# To change this template, choose Tools | Templates  
# and open the template in the editor.  
renk1=sarı  
renk2=kırmızı  
renk3=yesil  
PropertiesFile.java

  /*  
   * To change this template, choose Tools | Templates  
   * and open the template in the editor.  
   */  
  package main;  
  import java.io.FileInputStream;  
  import java.util.Properties;  
  /**  
   *  
   * @author Hasan Çelik  
   */  
  public class PropertiesFile {  
    public static void main(String[] args){  
      Properties properties = new Properties();  
      try{  
        //properties.load(getClass().getClassLoader().getResourceAsStream("config.properties")); ---> non-static method için properties dosyasının yüklenmesi için yöntem  
        //properties.load(new FileInputStream("external.properties")); ---> burada ise dışarıdan harici bir properties dosyasını programa yüklemek için bir yöntem  
        //properties dosyasını classpath'den yüklüyoruz.  
        properties.load(PropertiesFile.class.getClassLoader().getResourceAsStream("main/prob.properties"));  
        //properties değerlerine erişim  
        System.out.println(properties.getProperty("renk1"));  
        System.out.println(properties.getProperty("renk2"));  
        System.out.println(properties.getProperty("renk3"));  
        //properties değerlerini değiştirme  
        properties.setProperty("renk1", "siyah");  
        properties.setProperty("renk2", "gri");  
        properties.setProperty("renk3", "mavi");  
        System.out.println(properties.getProperty("renk1"));  
        System.out.println(properties.getProperty("renk2"));  
        System.out.println(properties.getProperty("renk3"));  
      }catch(Exception e){  
        e.printStackTrace();  
      }  
    }  
  }

Sonuç:

  run:  
  sarı  
  kırmızı  
  yesil  
  siyah  
  gri  
  mavi  
  BUILD SUCCESSFUL (total time: 0 seconds)

1.Yol

  /*  
   * To change this template, choose Tools | Templates  
   * and open the template in the editor.  
   */  
  package main;  
  /**  
   *  
   * @author Hasan Çelik  
   */  
  import javax.xml.parsers.DocumentBuilderFactory;  
  import javax.xml.parsers.DocumentBuilder;  
  import org.w3c.dom.Document;  
  import org.w3c.dom.NodeList;  
  import org.w3c.dom.Node;  
  import org.w3c.dom.Element;  
  import java.io.StringReader;  
  import org.xml.sax.InputSource;  
  public class ReadXMLFile {  
    public static void main(String argv[]) {  
      try {  
        //File xmlFile = new File("/Users/hasan/belge.xml");  //dilerseniz xml dosyasındanda okuma işlemi gerçekleştirebilirsiniz.  
        String xml = "\n"  
            + "\n"  
            + " \n"  
            + "  200\n"  
            + "  İşlem başarılı\n"  
            + " \n"  
            + "";  
        InputSource source = new InputSource(new StringReader(xml));  
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();  
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();  
        Document doc = dBuilder.parse(source);  
        doc.getDocumentElement().normalize();  
        NodeList liste = doc.getElementsByTagName("status");  
        for (int temp = 0; temp < liste.getLength(); temp++) {  
          Node node = liste.item(temp);  
          System.out.println("Root element :" + doc.getDocumentElement().getNodeName());  
          System.out.println("Element :" + node.getNodeName());  
          if (node.getNodeType() == Node.ELEMENT_NODE) {  
            Element eElement = (Element) node;  
            System.out.println("message : " + eElement.getElementsByTagName("message").item(0).getTextContent());  
            System.out.println("code : " + eElement.getElementsByTagName("code").item(0).getTextContent());  
          }  
        }  
      } catch (Exception e) {  
        e.printStackTrace();  
      }  
    }  
  }

Sonuç

  run:  
  Root element :response  
  Element :status  
  message : İşlem başarılı  
  code : 200  
  BUILD SUCCESSFUL (total time: 0 seconds)  

2.Yol

  /*  
   * To change this template, choose Tools | Templates  
   * and open the template in the editor.  
   */  
  package main;  
  import java.io.StringReader;  
  import javax.xml.parsers.DocumentBuilder;  
  import javax.xml.parsers.DocumentBuilderFactory;  
  import javax.xml.xpath.XPath;  
  import javax.xml.xpath.XPathFactory;  
  import org.w3c.dom.Document;  
  import org.xml.sax.InputSource;  
  /**  
   *  
   * @author Hasan Çelik  
   */  
  public class ReadXmlFile2 {  
    public static void main(String argv[]) {  
      String message;  
      String code;  
      try {  
        //File xmlFile = new File("/Users/hasan/belge.xml");  //dilerseniz xml dosyasındanda okuma işlemi gerçekleştirebilirsiniz.  
        String xml = "\n"  
            + "\n"  
            + " \n"  
            + "  200\n"  
            + "  İşlem başarılı\n"  
            + " \n"  
            + "";  
        InputSource source = new InputSource(new StringReader(xml));  
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();  
        DocumentBuilder db = dbf.newDocumentBuilder();  
        Document document = db.parse(source);  
        XPathFactory xpathFactory = XPathFactory.newInstance();  
        XPath xpath = xpathFactory.newXPath();  
        message = xpath.evaluate("/response/status/message", document);  
        code = xpath.evaluate("/response/status/code", document);  
        System.out.println("message = " + message);  
        System.out.println("code = " + code);  
      } catch (Exception e) {  
        System.out.println(e.getMessage());  
      }  
    }  
  } 

Sonuç

  run:  
  message = İşlem başarılı  
  code = 200  
  BUILD SUCCESSFUL (total time: 0 seconds) 

Standard HttpURLConnection ve Apache HttpClient kütüphanesi kullanarak Http GET isteği nasıl yapılır onun hakkında bilgi vermek istiyorum.

1-) Standard HttpURLConnection

HttpGetRequest.java 

  /*  
   * To change this template, choose Tools | Templates  
   * and open the template in the editor.  
   */  
  package main;  
  import java.io.BufferedReader;  
  import java.io.InputStreamReader;  
  import java.net.HttpURLConnection;  
  import java.net.URL;  
  /**  
   *  
   * @author Hasan Çelik  
   */  
  public class HttpGetRequest {  
    static int responseCode;  
    static String responseMessage;
  
    public static void main(String[] args) throws Exception {
  
      URL url = new URL("http://www.blog.berkadem.com/");  
      HttpURLConnection con = (HttpURLConnection) url.openConnection();  
      con.setRequestMethod("GET");  
      responseCode=con.getResponseCode();  
      responseMessage=con.getResponseMessage();  
      BufferedReader in = new BufferedReader(new InputStreamReader(  
                    con.getInputStream()));  
      String inputLine;  
      StringBuffer sonuc = new StringBuffer(); 
 
      while ((inputLine = in.readLine()) != null)   
        //System.out.println(inputLine); //dilerseniz response sonucunu bu şekilde de alabilirsiniz  
        sonuc.append(inputLine);  
      in.close();  
      //System.out.println("Sonuc = "+sonuc); //dilerseniz response sonucunu bu şekilde de alabilirsiniz. Burada dönen response değeri xml formatında da olabilirdi.  
      System.out.println("responseCode = "+responseCode);  
      System.out.println("responseMessage = "+responseMessage);  
    }  
  } 
Sonuç 

run:  
  responseCode = 200  
  responseMessage = OK  
  BUILD SUCCESSFUL (total time: 1 second)


1-) Apache HttpClient 

  /*  
   * To change this template, choose Tools | Templates  
   * and open the template in the editor.  
   */  
  package main;  
  import java.io.BufferedReader;  
  import java.io.InputStreamReader;  
  import org.apache.http.HttpResponse;  
  import org.apache.http.client.HttpClient;  
  import org.apache.http.client.methods.HttpGet;  
  import org.apache.http.impl.client.DefaultHttpClient;  
  /**  
   *  
   * @author Hasan Çelik  
   */  
  public class HttpGetRequest2 {  
    static int responseCode;  
    static String responseMessage;
  
    public static void main(String[] args) throws Exception {  

      String url = "http://www.blog.berkadem.com/";  
      HttpClient client = new DefaultHttpClient();  
      HttpGet request = new HttpGet(url);  
      HttpResponse response = client.execute(request);  
      responseCode=response.getStatusLine().getStatusCode();  
      responseMessage=response.getStatusLine().getReasonPhrase();  
      BufferedReader in = new BufferedReader(  
          new InputStreamReader(response.getEntity().getContent()));  
      String inputLine;  
      StringBuffer sonuc = new StringBuffer();
 
      while ((inputLine = in.readLine()) != null) //System.out.println(inputLine); //dilerseniz response sonucunu bu şekilde de alabilirsiniz  
      {  
        sonuc.append(inputLine);  
      }  

      in.close();  
      //System.out.println("Sonuc = "+sonuc); //dilerseniz response sonucunu bu şekilde de alabilirsiniz. Burada dönen response değeri xml formatında da olabilirdi.  
      System.out.println("responseCode = " + responseCode);  
      System.out.println("responseMessage = " + responseMessage);  
    }  
  } 
Sonuç 

  run:  
  responseCode = 200  
  responseMessage = OK  
  BUILD SUCCESSFUL (total time: 0 seconds)