วันอังคารที่ 1 ธันวาคม พ.ศ. 2558

LocalDate Java 8



LocalDate เป็น future java 8 ทำขึ้นมาเพื่อความสะดวกในการหาเรื่องเกี่ยววันเวลา ซึ่งสามารถเรียกการใช้งานได้อย่างง่ายดายมาก ดังตัวอย่างด้านล่างได้เลยครับ


package com.learningjava;

import java.time.LocalDate;
import java.time.Month;
import java.time.temporal.ChronoUnit;

public class TestLocalDate {

    public static void main(String[] args) {
        LocalDate toDay  = LocalDate.now(); // today  -> instance /object
        System.out.println(toDay);//วันปัจจุบัน  yyyy-mm-dd
        System.out.println(toDay.getDayOfWeek());//วันปัจจุบันวันอะไร เช่น  MONDAY,Tuesday TUESDAY,WEDNESDAY
        System.out.println(toDay.getDayOfMonth());//วันปัจจุบัน เป็นวันที่เท่าไรของเดือน
        System.out.println(toDay.getDayOfYear());//วันปัจจุบัน เป็นวันที่เท่าไรของปี


        //สมมุติว่าเราต้องการวันที่ 99 ของปี 2015
        LocalDate day99  = LocalDate.ofYearDay(2015,99);
        System.out.println("วันที่ 99 ของปี 2015 คือ "+day99);//วันที่ 99 ของปี 2015


        //สมมุติว่าเราต้องการหาจำนวณวันที่จะถึงสิ้นปี ของปี 2015
        LocalDate endYear = LocalDate.of(2015, Month.DECEMBER,31);
        System.out.println("อีกกี่วันจะถึงสิ้นปี  "+toDay.until(endYear,ChronoUnit.DAYS));

        //สมมุติว่าเราต้องการหาวันเกิดของเรา
        LocalDate birthDate = LocalDate.of(1989, Month.APRIL,30);//ปี,เดือน,วันที่
        System.out.println("จำนวนวันนับตั้งแต่วันเกิด "+birthDate.until(toDay,ChronoUnit.DAYS));
        System.out.printf("อายุ %d ปี %d เดือน %d วัน", birthDate.until(toDay).getYears(), birthDate.until(toDay).getMonths(), birthDate.until(toDay).getMonths());
    }
}

วันจันทร์ที่ 16 พฤศจิกายน พ.ศ. 2558

Spring Batch TaskScheduler โดย Spring boot

       

       Spring Batch TaskScheduler  มีหน้าที่ทำให้การกระทำอย่างใดอย่างหนึ่งสั่งให้ทำงาน ณ ช่วงเวลาที่เรากำหนดได้ ไม่ว่าจะทำทุกๆ 5 นาที  ทำทุกๆ เทียงคืนของวันนั้นก้ได้ตามสบายใจที่กำหนดได้เลย หรือซึงโปรแกรมเมอร์ส่วนใหญ่คุ้นเคยกันดีนั้น คือ  Run batch file  ตามเวลาที่กำหนดนั้นเอง   โดยหลักการทำงานของเจ้าตัว TashkScheduler  อยู่ในรูแบบของ Thread (เทรด)  ซึงมันจะสแกนมีช่วง Thread นั้นๆ มันก้ทำงาน


โครงสร้างไฟล์โปรแกรม



ไฟล์ pom.xml  เพิ่ม dependencies  ดังนี้


 
  
   org.springframework.boot
   spring-boot-starter-batch
  
  
   org.springframework.boot
   spring-boot-starter-web
  
  
   org.springframework.boot
   spring-boot-starter-tomcat
   provided
  
  
   org.springframework.boot
   spring-boot-starter-test
   test
  
 

 
 - เพิ่ม annotation  @ComponentScan  เพื่อ scan package
 - เพิ่ม annotation  @EnableSchecduling   เพื่อเปิดใช้งาน Schecduling

















- เพิ่ม class  พร้อมกำหนด @Component เพื่อให้ spring รู้จักว่าเป็น componet class
- เพิ่ม  @Scheduled  บน method  พร้อมกำหนดค่า delay ในละช่วงเวลา ในตัวอย่างคือ 5 วินาที



เมื่อรันเสร็จก้จะได้ผลลัพธ์ออก log ดังนี้








ง่ายไหมละครับ ซึ่งตัวอย่างทำขึ้นแบบง่ายๆสามารถนำไปต่อยอดได้กันเลยทีเดียว  นะฮะ


วันเสาร์ที่ 15 สิงหาคม พ.ศ. 2558

คำสั่ง Git basic





git clone  url  
      เป็นคำสั่งดึงข้อมูลจาก Remote repository มาไว้ในเครื่อง local

git branch
     เป็นคำสั่งดู branch ปัจจุบัน

git branch namebranch 
     เป็นคำสั่งกรณีต้องการแตก branch

git branch -d namebranch 
      เป็นคำสั่งกรณีต้องการลบ branch

git checkout namebranch
      เป็นคำสั่งสลับ branch เมื่อต้องการว่าเราอยู่ที่ branch ไหน

git checkout -b namebranch
     เป็นคำสั่งสร้าง branch พร้อมสลับไปยัง branch ที่สร้างใหม่

git status
     เป็นคำสั่งตรวจสอบสถานะที่มีการเปลี่ยนแปลงทั้งเครื่อง local และบน Remote repository

git add ..
     เป็นคำสั่งเพิ่มไฟล์หรือไฟล์ที่เราแก้ไขเพื่อที่จะเอาขึ้น Remote repository

git commit -m"comment" 
       เป็นคำสั่งการยืนยันการเพิ่มไฟล์พร้อมใส่ comment

git pull origin namebranch
      เป็นคำสั่งดึงข้อมูลลงมาจาก Remote repository  มาไว้ในเครื่อง local

git push origin namebranch
      เป็นคำสั่งส่งข้อมูลจากเครื่อง local ไป update บน Remote repository

git fetch origin master
    เป็นคำสั่งดึงไฟล์ทั้งหมดเฉพาะ branch ที่เราต้องการมาไว้บนเครื่อง local

git merge namebranch
     เป็นคำสั่ง merge ไฟล์โดยระบุ branch ที่ต้องการ merge

git log
     เป็นคำสั่งดู log การทำงานทั้งหมด

git rm -r sub_folder
    เป็นคำสั่งใช้ลบไฟล์หรือ folder

วันพฤหัสบดีที่ 23 กรกฎาคม พ.ศ. 2558

Hibernate Framework


  1. Hibernate Framework ซึ่งเป็น ORM หรือ Object/Relational Mapping ที่มีความสามารถในการช่วยจัดการกับโปรแกรมที่อยู่ในรูปออบเจ็กต์ ให้สามารถใช้งานกับระบบฐานข้อมูลได้อย่างมีประสิทธิภาพ ไม่ว่าจะเป็น การสร้างตาราง การเพิ่ม ลบ แก้ไข ค้นหาข้อมูลต่างๆ ในฐานข้อมูล อาทิ MySQL, MSSQL, Oracle และอื่นๆ ซึ่งมีการใช้งานกันอย่างแพร่หลาย 

วันจันทร์ที่ 13 กรกฎาคม พ.ศ. 2558

คำสั่ง INSERT SELECT

    insert select คือ เป็นคำสั่งที่สามารถคัดลอกข้อมูลจากตารางหนึ่งไปแทรกลงตารางที่มีอยู่ได้โดยต้องมีโครงสร้างเหมือนกัน

  - ต้องการ insert ข้อมูลลง member2 จากข้อมูล member1 (ต้องโครงสร้างเท่ากัน)
     insert into member2  select * from member1

  - ต้องการ insert ข้อมูลลง member2 จากข้อมูล member1 (ต้องมีโครงสร้างเท่ากัน)  โดยมีเงื่อนไข fname เท่ากับ m1
     insert into member2  select * from member1 where fname='m1'

  - ต้องการ insert ข้อมูลลง member2 จากข้อมูล member1 โดยระบุฟิวส์
    insert into member2 (fname,lname,nicknam) select fname,lname,nicknam from member1

 - ต้องการ insert ข้อมูลลง member2 จากข้อมูล member1 โดยระบุฟิวส์และมีเงื่อนไข fname เท่ากับ m1
     insert into member2 (fname,lname,nicknam) select fname,lname,nicknam from member1 where fname='m2'

Spring framework ความรู้เบื่องต้น

Spring เป็น framework ของ JEE (Java Enterprise Edition ) พัฒนาขึ้นโดย Rod Johnson ซึ่งหลังได้มีกลุ่มนักพัฒนาเข้ามาช่วยพัฒนาโดยตั้งเป็นกลุ่ม community  ขึ้น สำหรับนักพัฒนาสาย java  ซึ่งปัจจุบันนิยมมากของขา java dav เพราะมีความสามารถหลากหลาย ดังนี้

    - ไม่ว่าเป็นรูปแบบการเขียน code ที่สั้นขึ้นถ้าเทียบกับ framework ตัวอื่นๆ โดยมีการร่วมเอาหลายๆ อย่างที่ส่วนมากคนเขียนซ้ำๆ เอามาเรียกใช้งาน 
    - สามารถใช้ร่วมกับ framework ตัวอื่นเช่น struts,jsf,ejbได้โดย configuration ในรูบแบบของ xml หรือ แบบ java class 
    - สามารถจัดการ transaction ได้ดี
    - สามารถจัดการ security ได้ดี
    - สมารถจัดการแบ่งส่วนอย่างชัดเจน 3 Layer ตาม M-V-C Design Pattern
    - สามารถเขียนเทสแยกส่วนได้โดยใช้  jUnit
    - สามารถเชื่อมต่อฐานข้อมูลแบบ ORM (Object Relational Mapping) โดยสามารถเลือกใช้ Hibernate, JPA ,iBatis และค่ายอื่นๆ ได้
   - สามารถใช้ JDBC Tamplate ได้ดี
   - สามารถจัดการ Data เบื่องต้นได้เช่น CRUD เพื่อลดการเขียนซ้ำซ้อนโดยใช้ Spring Data JPA
   - รองรับการทำงาน Webflow
   - รองรับการทำงาน WebSocket
   - รองรับการทำงาน WebService , Mail
   - สนับสนุบการทำ IoC และ DI (Dependency Injection)  คือสามารถฉีด Bean เข้าส่วนต่างๆได้
   - สามารถใช้แท็ก Annotation ได้แทนรูปแบบ xml ได้ง่ายขึ้น 


Oracle Query date to char

      สำหรับฟิวส์ที่มี data type เป็น date เช่น birthday(date) เราสามารถแปลงเป็น varchar ได้เพื่อที่จะนำไป Query ตามที่ต้องการได้
- ตัวอย่างกรณี Table customer อยากได้เงื่อนไขวันเกิดเฉพาะในปี 2015
   select * from customer where to_char(birthday, 'yyyy') = '2015'
- ตัวอย่างกรณี Table customer อยากได้วันเดือนปีเกิดในรูปแบบไทย 14/07/2558
   select to_char(birthday, 'dd/mm/yyyy','NLS_CALENDAR=''THAI BUDDHA') as birthday from customer
- ตัวอย่างกรณี Table customer อยากได้วันเดือนปีเกิดเวลาในรูปแบบ 2014/04/16 13:37:00
   select to_char(birthday, 'yyyy/mm/dd HH24:mi:ss') as birthday from custome

* ตัวอย่างนำมาเขียนบางส่วนผู้อ่านสามารถนำไปประยุกต์เพิ่มเติมได้