ความเข้าใจผิดเกี่ยวกับ Open Source

ที่มาจาก http://opensource.com/sites/default/files/styles/image-full-size/public/images/law/OSCD_MPL2_520x292_FINAL.png?itok=2-otV3Z_

หลายคนอาจจะมองว่า Open Source เป็นของฟรี ถูกครับ แต่ยังุถูกไม่หมดครับ เพราะมองง่ายๆ ว่าใช้ฟรี แต่ถ้าเอาไปพัฒนาต่อก็ต้องดูสัญญาตามนี้นะครับ โดยผมขอสรุปเท่าที่ผมรู้บางตัวนะครับ GPL-GNU (General Public License) LGPL (Lesser General Public License) BSD(Berkeley Software Distribution License),MIT(Massachusetts Institute of Technology License) Apache License หมายเหตุ: ถ้าเอา Library ในกลุ่มพวกนี้มาใช้ควรศึกษากฏให้ดีด้วยนะครับ โดยเฉพาะตัว GPL และที่สำคัญควรให้เกียรติกับทีมงานที่พัฒนา Library ที่เราเอามาใช้ด้วยการอ้างอิงไว้ด้วยนะครับ ที่ต่างประเทศพลาดที่นี้ฟ้องกันจนเจ๊งเลยนะครับ References

[DB2] Auto Increment

IBM DB2

ดอง Blog ไว้นาน เนื่องจากถึงโค้งสุดท้ายของ Project Treasury ที่ได้ทำกับทางออมสินแล้ว วันนี้ขอเขียนต่อให้เสร็จเลยและกัน จะได้ไปเก็บตัว DataSet ต่อ สำหรับคนที่ใช้งาน DB2 อาจจะสงสัยว่ามันมี Auto Increment แบบ MySQL หรือป่าวครับ คำตอบมีครับ โดยสามารถกำหนดเพิ่ม ดังนี้ครับ โดยคำสั่งข้างต้น คือ การกำหนดให้ระบบสร้างตัวเลขที่ UNIQUE(IDENTITY) ทุกครั้ง โดยให้เริ่มจาก 1 และเพิ่มขึ้นที่ละ 1 ครับ สำหรับตัวอย่างคำสั่งเต็มที่ใช้งานจริมี ดังนี้ครับ โดยเป็นการกำหนดให้ Column ID เป็นแบบ Auto Increment ครับ สำหรับการ import ข้อมูลด้วย DB2MOVE แนะนำให้เลือก Option ตอน Create Table เป็น GENERATE BY DEFAULT แทน GENERATED ALWAYS เพราะ GENERATE BY DEFAULT สามารถยอมให้เอาข้อมูล import เข้า Table ได้ แต่ต้องไป SET ค่า Auto Increment ใหม่ ด้วยคำสั่ง แต่ถ้าอยากจัดการเองทั้งหมดสามารถใช้ GENERATEDOVERRIDE ได้

[DB2] BAT Script สำหรับ Restore DB

IBM DB2

ช่วงนี้มี UAT และต้องการนำ DB จาก SITE งานมาขึ้นที่ Environment ของบริษัทครับ โดยผมได้เขียนโครง BAT Script ง่ายๆ และก็ให้พี่ที่ทำงานปรับปรุงต่อนิดหน่อย โดยมีสาระสำคัญ ดังนี้

สอบ CU-TEP ครั้งแรก

ทำงานมาสักพักและ เริ่มได้แนวทางของตัวเองแล้วว่าจะไปต่อไปด้าน Software Engineer หรือ Business Software Development ครับ สิ่งที่ทำถัดมา คือ เตรียมตัวสอบอะไรที่จำเป็นก่อนครับ สำหรับผม คือ การสอบ CU-TEP เพราะมันต้องใช้ยื่นสอบปริญญาโท ม. จุฬา หรือ จะไปเทียบเข้ามหาวิทยาลัยอื่นก็ได้ครับ ช่วงแรก สมัครสอบ ช่วงที่สอง เตรียมตัวสอบ ช่วงที่สาม สอบครับ ช่วงสุดท้ายประกาศผลสอบครับ

[DB2] SQL1035N The operation failed because the specified database cannot be connected to in the mode requested. SQLSTATE=57019

IBM DB2

ช่วงนี้ต้องเอา DB จาก Site มาทดสอบที่บริษัททุกวันครับ ผมเลยทำ Bat ไว้ และก็ตั้ง Schedule ไว้ครับ โดยมีคำสั่งในส่วนของการ DROP & CREATE DATABASE ใหม่ ดังนี้ครับ เมื่อ Schedule Run ผลปรากฏว่าที่คำสั่ง DROP DATABASE มี Message แจ้งเตือน ดังนี้ครับ SQL1035N  The operation failed because the specified database cannot be  connected to in the mode requested.  SQLSTATE=57019 สาเหตุ การแก้ไข

[REVIEW] Lenovo P90 หลังใช้งานจริงมา 2 สัปดาห์

2016-06-09 : มี Minor Update P90_S149_160504_ROW มาแล้วครับ ลองดูความเห็นส่วนตัวของผมได้ที่นี่ครับ 2016-02-01 : UPDATE นะครับ มือถือรุ่นนี้ โดยลอยแพเรื่องการ Update Android 5.0 (Lollipop) เรียบร้อยแล้วนะครับ โดยผมได้ไปสอบถามทาง FanPage Lenovo แต่ได้รับการบ่ายเบียง ถึงสาเหตุ ที่ไม่ได้ Update Software ครับ พอลองใช้งานนานๆสัก 2-3 เดือน เครื่องอืดมากครับ ใครที่คิดจะซื้อคิดดีๆก่อนนะครับ สำหรับ Update Lenovo รุ่นอื่นๆ สามารถติดตามได้จาก ที่นี่ ครับ  จริงๆผมไม่ได้อยากจะเปลี่ยนมือถือใหม่หรอกครับ แต่บังเอิญว่าเจ้า Lenovo P780 มันดันแยกร่าง 555 แยกในช่วงวันงาน Thailand Mobile Expo พอดี เลยได้ฤกษ์ในการเสียตังค์ครับ (จริงถ้าเครื่องนี้ไม่บึ้ม ผมมีแพลนที่จะเปลี่ยนช่วงเดือนกันยาอยู่แล้วครับ 2 ปี ุุ6 เดือน พอดีครับ) สำหรับ Spec ของเจ้า Lenovo P90 คร่าวๆครับ CPU Intel Atom Z3560 (Quad-core 1.83 GHz) GPU PowerVR G6430 RAM 2GB ROM 32 GB (ไม่สามารถใส่ SD Card เพิ่มได้ครับ หน้าจอ IPS 5.5 นิ้ว 1920 x 1080 pixel (รองรับ Multitouch ได้สูงสุด 5 นิ้วครับ ใส่ SIM ได้ 1 SIM แบบ Micro-SIM รองรับทุกค่ายมือถือในไทยรวมถึง 4G LTE…

[DB2] User Define Function – SQL Scalar Example

IBM DB2

พอดีมีรุ่นน้องให้สอนการเขียน Function บน DB2 ครับ โดย Function ที่ผมเขียนเป็นแบบ SQL Scalar Function โดยเจ้า SQL Scalar Function เป็น Function ที่คืนค่าผลลัพธ์ มีการคืนผลลัพธ์ออกมาค่าเดียวเสมอ โดยมีรูปแบบข้อมูล เช่น datetime, int, varchar เป็นต้นครับ ตัวอย่าง Scalar Function ที่มีในระบบพวก ABS() ที่ส่งตัวเลข เข้าไป คืนผลลัพธ์ที่ตัวเครื่องหมายแล้ว ออกมาค่าเดียวครับ เช่น ABS(-5) = 5 สำหรับ Function นี้ ผมขอเอาตัวอย่างจริงเลยและกัน(ขี้เกียจคิดครับ ฮ่าๆ) โดย Function นี้มีหน้าที่แปลงรอบการจ่าย COUPON FREQUENCY(รอบการจ่ายดอกเบี้ย) ของ BOND ออกมาเป็น TENOR CODE(ช่วงเวลาครับ เช่น 1 เดือน / 2 เดือน เป็นต้นครับ) เพราะในระบบเดิมมันเก็บ COUPON FREQUENCY ใน Table FIXEDINCOME ดังนี้ครับ  ID ในระบบ  ความหมาย 1 Monthly 2 Two Month 3 Quarterly 4 TRI-ANNUALLY 5 SEMI-ANNUALLY 6 ANNUALLY 7 AT CALL ซึ่งมันไม่สื่อถึงเวลาครับ โดยเจ้าข้อมูลที่สื่อถึงเวลามันอยู่ใน Table TENOR ดังนี้ครับ โดยมี Field ที่จำเป็น ดังนี้ Field Name ความหมาย TENOR ID ID ของ…

[JAVA] Eclipse exit code 13

บางครั้งวลาเราไปอบรมข้างนอก ลงเครื่องใหม่ หรืออ่า่นๆก็แล้วที่ ที่จำเป็นต้องลง Java ตามที่มีคนให้มา หรือ download มาลงเองแหละ แล้วพอไปจะไปเปิดมัน ดันเจอ Message แบบนี้เข้า สำหรับเจ้า Error มีสาเหตุ และวิธีการแก้ไข ดังนี้ครับ สาเหตุ: เกิดจากตัว Eclipse ไม่พบ Java ที่เรา Required ครับ การแก้ไข: มีวิธีการแก้ที่เป็นไปได้ ดังนี้ครับ วิธีแรก: ลง JDK ให้ตรงตามที่ Eclipse ต้องการ อย่างในรูป คือ JDK 1.6 ครับ แล้ว Set ตัวแปร Path ใน Environment ด้วยครับ หลายอาจจะสงสัยว่า Error ไหนมันบอกให้ดูจาก Message ครับ ตัดมาจากภาพด้านบน [shell]Dosgi.requiredJavaVersion=1.6[/shell] วิธีที่สอง: Set ค่าใน Eclipse.ini ให้ไปหา JDK ที่เราต้องการครับ กรณีที่เรามีลงไว้หลาย Version เช่น Java 7 กับ 8 ครับ โดยเพิ่มคำสั่ง -vm ที่ล่างสุดของไฟล์ครับ โดยมีรูปแบบคำสั่งเป็น -vm Path ของ javaw.exe ตัวอย่าง เช่น [shell]-vm C:\Program Files (x86)\Java\jdk1.7.0_75\bin\javaw.exe [/shell]  

Right Software | Software Right

เขียน Code มา 2 ปี บางทีเราสงสัยว่า เรากำลังทำอะไร ทำให้เสร็จส่งลูกค้าพอหรือป่าว ทำไปปุ๊บหมดโปรเจคออกก็ทิ้งหนี้(พวก Spaghetti Code และอื่นๆบราๆ) ให้คนรุ่นหลัง วันนี้ผมอยากเสนอ keyword ในการพัฒนา Software 2 คำ ซึ่งมันต้องไปด้วยกันนะครับ ไม่ใช่เลือกอย่างใด อย่างหนึ่ง ดังนี้ Right Software (Validation) คือ เราทำ Software ได้ ตรงสิ่งที่คุณลูกค้าต้องการ Software Right (Verification) คือ เราทำ Software ที่มีพื้นฐานดี โดยเค้าพื้นฐานดี เราอาจจะมองว่าระบบของเรา ตรงสเปค มี Performance ดี มีการจัดวางโครงสร้างของ Code ให้เอื้อต่อการแก้ไข การเปลี่ยนแปลง Developer รุ่นหลังสามารถเข้ามาแก้ต่อได้ โดยที่ไม่เจอหนี้ หรือ Spaghetti code ของคนเก่าที่ก่อเอาไว้ครับ สำหรับคนที่เกี่ยวข้องทุกคนนะครับ อย่ามองว่าทุกเรื่องมันเกี่ยวกับ Developer หรือ Programmer อย่างเดียวครับ เพราะบางครั้งมันอาจจะผิดจากลูกค้าที่ยังไม่สามารถบอกความต้องการได้ หรือทีม BA/SA ที่คิดกันไปเองครับ เพิ่มเติมนะครับตอนแรก นึกอยู่ตั้งนานว่า 2 คำนี้มันเกี่ยวกับอะไร  พอลองหาข้อมูลพบว่าเกี่ยวข้องกับ Verification & Validation ครับ

[JAVA] A java exception has occurred

หลายครั้งที่เราเอาไฟล์ .jar จากที่อื่นมาใช้ แล้วพบ Error Message นี้ ผมขอสรุปวิธีแก้ปัญหาที่เคยใช้ได้ผลดังนี้ครับ (พอดีเห็นโพสของรุ่นน้องเลยคิดว่าเอามาเขียนกองๆไว้ใน Blog ดีกว่า) ตรวจสอบ Version ของ .jar ก่อนเลยครับ ว่ามันสร้างมาจาก Java Version อะไร ตรวจสอบ Version Java ในเครื่องเราครับ ว่าเป็น Version ที่ต่ำกว่า จากข้อที่แล้ว หรือไม่ ถ้าใช่ Update Java ให้เครื่องเราครับ แต่ถ้า Update ไม่ได้ (จะมีบางกรณีที่เป็นระบบใหญ่ มันจะขอ Update Java ยาก และกลัวผลกระทบกับระบบอื่นๆครับ) เราต้องมาตรวจสอบและว่าเจ้า .jar ของเรา มี required feature พิเศษหรือว่า เช่น Stream API ของ Java 8 เป็นต้น จากนั้น เราไปหา Code มา Bulid .jar เองครับ แต่ถ้าไม่มี Code เนี่ยเราต้องคิดค่อ Vendor ที่ทำ .jar นั้น โดยตรงครับ