บทความ

ตัวอย่าง log4j init

public class Log4jInit extends HttpServlet {     private static Logger logger = Logger.getLogger(Log4jInit.class);     /**      *      */     private static final long serialVersionUID = -6217487447859906018L;     private static final String CONTENT_TYPE = "text/html";     // Initialize global variables     @Override     public void init() throws ServletException {         File f = new File( getInitParameter("log4jPropsFile"));         if (!f.canRead()) {             throw new ServletException("Init log4j Exception");         }         logger.debug("Init log4j file = " + f.toString());         String log4jProp = f.toString();      ...

PHP Object การเรียกใช้ตัวแปรแบบ Dynamic คล้าย eval ใน javascript

บทความเกี่ยวกับ : PHP Object การเรียกใช้ตัวแปรแบบ Dynamic PHP Object การเรียกใช้ตัวแปรแบบ Dynamic ในบางงานที่จำเป็นต้องใช้การเข้าถึงตัวแปร  แบบที่ไม่ได้ระบุชื่อตัวแปรชัดเจน  ตัวอย่างเช่น  ใน code เรามีตัวแปรอยู่ ประมาณนี้ $data1; $data2 ตอนเราเรียกใช้ ถ้าเรารับชื่อตัวแปรมาเป็น parameter เช่น $val="data1"; หากเราต้องการเข้าถึงตัวแปร "data1" สามารถทำได้ง่ายๆแบบนี้ $$val;  ตามนี้จะเป็นการใช้งาน ตัวแปรของ value ของ $val อีกที ฟังแล้วเริ่มงง  มันก็คล้ายๆ กับ eval ใน java script แหละครับ ทีนี้เข้าเรื่อง แล้วถ้าเกิดว่ามันเป็น Object ล่ะจะทำไง เช่น $obj->data1; $obj->data2; เราจะเข้าถึงแบบ dynamic ได้ยังไง คำตอบคือง่ายๆ แบบนี้เลยครับ $obj->$val; ตามนั้น

แนะนำ Aggregate Operations ใน Java 8 กับการเข้าถึง Collection แบบ Stream

บทความเกี่ยวกับ : แนะนำ Aggregate Operations ใน Java 8 มาถึงยุคของการจัดการ Data ใหญ่ๆกันแล้วสินะ แน่นอนว่า ที่ผ่านมาในโลกของ Java เราคงได้ใช้งาน Collection แบบต่างๆ กันมาแล้ว ไม่ว่าจะใช้งานอะไรมาบ้าง แต่หลักๆคงหนีไม่พ้นสองข้อ คือ   จะยัดข้อมูลลงไปยังไง และ จะเอาข้อมูลออกมายังไง  วันนี้เราจะเน้นอย่างหลังนะครับ คือการ ล้วงข้อมูลใน Collection นั่นเอง ก่อนอื่นขอแนะนำ Aggregate Operations ที่มาใหม่ใน Java 8 ที่เปลี่ยนรูปแบบการเข้าถึง  ข้อมูลใน Collection แบบที่เรียกได้ว่าคนที่เคยใช้ For ผ่าน Iterator นี่ต้องทำความเข้าใจเลยทีเดีย วันนี้จะให้ดูแค่เรื่องของการเขียน Code นะครับ ยังไม่รวมถึงที่มาที่ไปว่า Aggregate Operations มันดียังไง เร็วกว่ามั๊ย ?  จัดการกับ Data ได้เยอะกว่ามั๊ย ? มันต่างจาก Iterator แบบเดิมยังไง ? เก็บคำถามเหล่านี้ไว้ในใจก่อน เพราะถ้าเราไม่ลองใช้เราจะไม่รู้หรอกนะครับว่ามันดียังไง ? มาเริ่มกันเลย ยกตัวอย่างเรามี  Class ที่จะยัดลงใน Collection ดังนี้ public class Person { public enum Sex { MALE, FEMALE } Str...

แนะนำ try with resources Statement ใน Java 7 ช่วยให้เราคืน Resource ต่างๆได้เป็นระเบียบขึ้น

บทความเกี่ยวกับ : แนะนำ try with resources Statement ใน Java 7 การเขียนโปรแกรมไม่ว่าระบบงานอะไรก็ตาม จะเล็กจะใหญ่ ย่อมหนีไม่ค้นการเชื่อต่อกับ Resource ต่างๆ เช่นที่เห็นกันชัดๆ ก็พวก อ่านไฟล์  ต่อ Database เป็นต้น บ่อยครั้งนักที่เราต้องมานั่งปวดหัวกับการ คืน resource หรือการ close() อะไรต่างๆ ที่เราเรียกมาใช้ สมัยก่อนๆ มีปัญหาบ่อยจริงๆ นะ โดยเฉพาะ Database ที่เปิดแล้วลืม close ทำให้ connection เต็มเป็นต้น แต่สมัยนี้มี frame work อะไรต่างๆ มาช่วยให้เรา ทำงานได้ง่ายขึ้นเยอะ น้องๆ สมัยนี้อาจจะไม่เจอปัญหาเหล่านี้แล้วก็เป็นได้ T_T เอาเป็นว่าจะยังไงก็ตามวันนี้ของแนะนำ try with resources Statement นั่นคือคุณไม่ต้องคอยกังวลเรื่องการลืม close () หรือคืน resource ต่างๆ เพียงแค่หันมาใช้ try with resources Statement    ตามนี้ try{ //ใช้ resource // ใช้ resource // ในนี้ใช้ให้เต็มที่ ไม่ต้อง close() } //หลังจากหลุดแล้ว try มันจะ auto close() ให้เอง # เจ๋งมั๊ยล่ะครับ Concept ตามข้างต้น สามารถลองเขียน code test ง่ายๆ ได้นะครับ ด้วยการ implement  interf...

ก่อนจะพูดถึง Java 8 มาดูกันว่ามีอะไรใหม่ๆใน Java 7 ที่บางคนอาจไม่เคยใช้

บทความเกี่ยวกับ : ก่อนจะพูดถึง Java 8 มาดูกันว่ามีอะไรใหม่ๆใน Java 7 ที่บางคนอาจไม่เคยใช้ เรียกได้ว่า Java7 เป็น Version แรกๆ เลยหลังจากที่มาอยู่ภายใต้การดูแลของ Oracle ผมเองยังไม่ได้ลองใช้ Feature ใหม่ๆ ของมันเลย Java8 ก็ทำท่าจะคลอดออกมาซะงั้น .. หรือว่าออกแล้ว ....ไม่รู้สินะ บางทีแค่การเปลี่ยน Version ของ JDK กับงานเก่าๆ ที่ใช้ Version เก่าๆ มานาน มันก็รู้สึกไม่ค่อยสบายตัว สบายใจเท่าใดนัก T_T ว่าแล้วก็มาลองดูกันหน่อยซิว่า คุณรู้หรือเปล่าว่า Java7 มีอะไรใหม่ๆ ที่ทำให้เราเขียนโปรแกรมกันได้ง่ายขึ้น .... รึเปล่า ?  เป็นต้นว่า การเช็คเงื่อนไขแบบ Switch ใช้กับ String ได้แล้วนะคร๊าบ #รู้ยัง ใส่ เครื่องหมาย _ (Under score ) กับพวก Numeric ได้ด้วย เช่น  double salary = 1_200_500.50; #อันนี้ถ้าออกข้อสอบแบบเก่าๆ ผมตอบว่า error 100% อันนี้เอามาให้ดูขำๆ นะครับ หรือมีผมคนเดียวที่ยังไม่รู้หรือเปล่านะ T_T ส่วนเรื่องอื่นๆ ก็มีอีกเยอะแยะ ที่ทำให้ Programmer ที่เขียน java รุ่นเก่าๆ มานั่งดู Code ที่เขียนด้วย Java 7 แล้วต้องมีมึนกันบ้างล่ะครับ

การเช็ค IF ELSE ใน PLSQL เรื่องง่ายๆ แต่งมตั้งนาน

บทความเกี่ยวกับ : การเช็ค IF ELSE ใน PLSQL เรื่องง่ายๆ แต่งมตั้งนาน วันนี้ไม่มีไรมาก แค่อยากจะมาบ่น !!!!   แบบว่า เขียน PLSQL แล้ว Compile ไม่ผ่านอ่ะ  แค่เช็คเงื่อนไขง่ายๆ งมอยู่เกือบครึ่งวัน สลัดจริงๆๆๆ ปรกติเขียน Java หรือ ภาษาหลายๆ ตัวโครงสร้างมันก็เรียบๆ ง่ายๆ ประมาณนี้  IF (CONDITION1) THEN  -- ทำไรก็ทำไป  ELSE IF(CONDITION2) THEN  -- ทำไรก็ทำไป  ELSE IF(CONDITION3) THEN  -- ทำไรก็ทำไป  ELSE  -- ทำไรก็ทำไป   อะไรทำนองนี้ชิมิ วันนี้เราจัด PLSQL ก็ประมาณว่าไม่ได้เขียนมานาน ปล.นั่งแก้ Code ชาวบ้านเค้าด้วยแหละ สลัดดดดด !! (ความแค้นส่วนตัว)  มันก็ไม่น่ามีไรมาก ชิมิ ตาม concept เดิม IF (CONDITION1) THEN  -- ทำไรก็ทำไป  ELSE IF(CONDITION2) THEN  -- ทำไรก็ทำไป ELSE IF(CONDITION3)  THEN  -- ทำไรก็ทำไป  ELSE  -- ทำไรก็ทำไป  END IF; -- คือมันไม่มีปีกกงปีกกา หรือวงเล็บไรครอบอ่ะนะ อันนี้ก็เข้าใจ  ปล ใช้ PL/SQL Developer เป็น tool ในการเขียน ก...

Jfree Chart วิธีทำ Custome Label ให้กับ Pie Chart

บทความเกี่ยวกับ : Jfree Chart วิธีทำ Custome Label ให้กับ Pie Chart วันนี้เจอโจทย์ยากมา ให้ทำ กราฟใหม่ แบบว่าต้อง Custom กัน นิสนุง ปรกติเราก็แสดงแบบ ตาม default ของมันอ่ะนะ ใน jfreechart  มันก็ง่ายๆ แค่ set Key , Value เข้าไปมันก็แสดงออกมาตามนั้นแหละ แต่วันนี้เรามีความจำเป็นต้อง ตกแต่งในส่วนของ Value มันซักหน่อย พูดง่ายๆ ว่าจัด format มันนั่นเอง วิธีการคือ ใช้ตัวนี้ครับ PieSectionLabelGenerator   ตัวนี้เป็น Interface นะครับ เราต้องสร้าง Class มาแล้ว implement method นี้ generateSectionLabel ตามตัวอย่าง static class CustomLabelGenerator implements PieSectionLabelGenerator {           public String generateSectionLabel (final PieDataset dataset, final Comparable key) {             String result = null;                if (dataset != null) {        ...