Skip to main content

Posts

ลองเล่น SonarQube คลื่นโซนาร์ช่วยตรวจสอบคุณภาพของ code

SonarQube  คือเครื่องมือช่วยตรวจสอบคุณภาพของ source code ช่วยหาข้อบกพร่องใน source code ไม่ว่าจะเป็น Bug ที่น่าจะเกิดขึ้น ช่องโหว่ทางด้านความปลอดภัยหรือกลิ่นไม่ดีใน source code ของเรา (Code Smell) และ ช่วยตรวจสอบเราเขียน code ทดสอบครอบคลุมหรือดีแล้วยังยัง (code coverage) Code Smell ไม่ได้ใช้วัดว่า source code นี้สามารถทำงานได้ถูกต้อง มี bug หรือช่องโหว่หรือไม่ แต่ Code Smell ใช้วัดถึงคุณภาพของการออกแบบ เพื่อตรวจสอบว่า source code ที่เป็นอยู่ในปัจจุบันจะสามารถต่อเติม แก้ไขหรือทดสอบได้ง่ายหรือไม่ โดยหลักเกณฑ์ที่นำมาใช้วัดในส่วนของ Code Smell คือ ความซ้ำซ้อนของ code มี code แบบเดียวกันไปซ้ำกันในไฟล์ไหนบ้าง ตรวจสอบเงื่อนไขใน if ให้ ว่าเงื่อนไขตรงนี้มันมีโอกาสเป็นไปได้ไหม เพราะบางทีเงื่อนไขที่เราเขียนขึ้นมาเพื่อดักไว้ในบางครั้งมันแทบจะไม่มีโอกาสที่เวลามันทำงานแล้วเข้าเงื่อนไขในส่วนนั้น เป็นต้น สามารถไปอ่านรายละเอียดเพิ่มเติมได้ที่นี่ http://www.somkiat.cc/code-smell-internal-class/ นอกจาก SonarQube จะสามารถบอกถึงคุณภาพของ source code เราได้แล้ว ยังสามารถใช้ในการแจกแจงงานให
Recent posts

ลองเล่นและเรียนรู้พื้นฐานขั้นต้นของ Spring Framework

** สำหรับใครที่ไม่เคยเรียนรู้ในด้านของ Java EE หรือ J2EE อาจจะมึนงงกับศัพท์หน่อยครับ ทำไมต้อง Spring Spring เป็น framework ที่นิยมมากในการนำไปสร้างระบบในระดับ enterprise ในเริ่มแรกที่ Spring เกิดมา มีจุดมุ่งหมายเพื่อที่จะมาแทนที่มาตรฐานของ Java อย่าง J2EE (Java 2 Enterprise Edition) ที่มันทั้งหน่วงทั้งอืดและยุ่งยาก โดยเฉพาะในส่วนของ EJB (Enterprise Java Bean) ที่ถือว่าเป็นฝันร้ายของนักพัฒนา ทำให้กูรูสาย Java ในช่วงนั้นถึงกับแนะนำว่า ถ้าจำเป็นที่ต้องพัฒนาระบบด้วย J2EE จงอย่าใช้ EJB ถึงขั้นถึงกับมีหนังสือแนะแนวทางการพัฒนาระบบ J2EE โดยไม่ใช้ EJB อย่างไรก็ตามทาง Sun ผู้เป็นเจ้าของ Java ในสมัยนั้น ถึงกับต้องมาล้างระบบ J2EE ใหม่ในปี 2006 จัดการใน EJB ให้ใช้ง่ายขึ้น มีประสิทธิภาพมากขึ้น และมีการเปลี่ยนชื่อจาก J2EE เป็น Java EE (Java Enterprise Edition) เพื่อลบภาพอันเลวร้ายของเดิมให้หมด และได้มีการนำฟีเจอร์เด็ดๆ ของ open source framework หลายๆ ตัว อย่างเช่นแกนหลักของ Spring อย่าง IoC (Inversion of Control) หรือ OR Mapping (Object Relational Mapping) ที่เป็นที่นิยมอย่าง Hibernate แต่ก็ไ

Inversion of Control และ Dependency Injection

Inversion of Control (IoC) คืออะไร IoC เป็นทฤษฏีที่ว่าด้วย การลดความผูกมัด (dependency) กันในระหว่าง module เพื่อให้ application ของเราแก้ไข (maintain) ต่อเติม (extensible) หรือทดสอบ (test) ได้ง่ายขึ้น ซึ่งเอาจริงๆ IoC เป็นอะไรที่ทำให้เราสับสนและงุนงงมากๆ ว่ามันคืออะไร หลายๆ คนจึงยกให้ว่า IoC คือ Dependency Injection (DI) ซึ่งจริงๆ มันก็ไม่ถูกซะทีเดียว  Dependency คืออะไร Dependency คือการผูกมัดที่เกิดขึ้นในระบบ เมื่อ module นึงมีการเรียกใช้อีก module นึงด้วยการอ้างอิง (reference) ตรงๆ แล้วอะไรที่เรียกว่าการ อ้างอิง (Reference) แบบตรงๆ   อย่างภาพ diagram ด้านบน class LogEngine มีการเรียกใช้ ConsoleLog โดยตรง ซึ่งมองผ่าน diagram อาจจะไม่เห็นภาพลองดู code กัน public class ConsoleLog { public void openLog(){ //do something to open log } public void log(String message){ //do something to log } public void closeLog(){ //do something to close log } } public class LogEngine { private ConsoleLog log; public LogEngine(){

ลองเล่น Lambda Expression ฟีเจอร์เด่นใน Java 8

ประวัติความเป็นมาของ Lambda expression Lambda expression ไม่ใช่สิ่งแปลกใหม่ในวงการ ภาษาโปรแกรม ( Programming Language ) เพราะ lambda มันเป็นแกนหลักของ การเขียนโปรแกรมเชิงฟังก์ชัน ( Functional Programming ) ซึ่งมีอายุมานานมากแล้ว แต่ Java เพิ่งนำเอาคุณสมบัตินี้เอามาใส่ลงในเวอร์ชัน 8 หากจะกล่าวถึงที่มาของ lambda คงต้องไปดูที่ถึงที่มาของ lambda calculus ซึ่งถูกสร้างขึ้นมาตั้งแต่ปี 1930 โดยนักคณิตศาสตร์ชาวอเมริกัน  Alonzo Church  เพื่อใช้ในการแก้โจทย์ปัญหาทางคณิตศาสตร์ที่มีความซับซ้อน ในบางครั้งสมการทางคณิตศาสตร์ที่ยาวไปอาจจะทำให้เกิดความซับซ้อนโดยใช่เหตุ lambda calculus จะทำการยุบบางส่วนของสมการนั้นออกมาเป็นฟังก์ชันย่อยๆ เพื่อทำให้สมการนั้นเข้าใจง่ายขึ้น ต่อมาหลักการของ lambda calculus ได้ถูกนำไปใช้ใน Turing Machine ซึ่งเป็นแบบจำลองในอุดมคติของ Alan Turing  ที่ต่อมากลายเป็นต้นแบบที่ถูกนำไปใช้ในการผลิต  Von Neumann Machine  ซึ่ง Von Neumann Machine ตัวนี้ได้กลายเป็นต้นแบบของคอมพิวเตอร์เครื่องแรกของโลกในเวลาต่อมา ท้ายที่สุดแนวคิดของ lambda calculus ก็ถูกนำมาแปลงเป็นภาษาโปรแกรมท

กรมสรรพากรกำลังพิจารณาจัดเก็บภาษีจากการซื้อขายแอพบน Google Play และ App Store

เนื่องด้วยตลาดสมาร์ทโฟนนั้นเติบโตอย่างรวดเร็ว ทำให้ตลาดแอพพิลเคชันโตตามไปด้วย แถมยังมีเงินสะพัดมากกว่าตลาดสมาร์ทโฟนเสียอีก จึงทำให้กรมสรรพากรกำลังพิจารณาศึกษาแนวทางความเป็นไปได้ในจัดการเก็บภาษีมูลค่าเพิ่ม (VAT) จากการซื้อแอพพิลเคชันบน Google Play และ App Store ทางกรมสรรพากรกล่าวว่าปีที่ผ่านมามูลค่าโดยรวมของตลาดแอพพิลเคชันสูงถึง 15,000 ล้านบาทและในปีนี้น่าจะสูงถึง 20,000 ล้านบาท เนื่องจากไม่มีการเก็บภาษีมูลค่าเพิ่มในส่วนนี้ทำให้รัฐสูญเสียรายได้ไปถึง 1,400 ล้านบาท แต่การจัดเก็บคงยังไม่มีในเร็วๆ นี้ เพราะทางกรมสรรพากรยังต้องศึกษาวิธีการจัดเก็บภาษี เพราะผู้ค้าบางรายไม่ได้ตั้งบริษัทอยู่ประเทศไทย ประเด็นต่อมาถ้ามีการจัดเก็บภาษีแล้วจะทำให้ราคาแอพพิลเคชันบน Google Play และ App Store สูงขึ้นหรือไม่ ผมคิดว่าคงไม่ ภาษีมูลค่าเพิ่มคงจะรวมอยู่ในราคาของแอพพิลเคชันอยู่แล้ว เพียงแต่ตอนนี้ไทยยังไม่ได้เรียกเก็บเท่านั้นเอง ตามรูปด้านบนตรงวงกลมสีแดงจะเห็นว่าตรงราคารวม (Total) ถ้าเป็นของไทยจะไม่มีภาษีมูลค่าเพิ่มรวมอยู่ในนั้น ในกรณีนี้ยังไม่แน่ชัดว่าบริการอื่นๆ บน Google Play และ iTunes Sto

รีวิว Connect 5701Q มือถือ house brand น้องใหม่จาก Mondo

นับจาก WellcoM ซึ่งเป็น house brand รายแรกที่ประสบความสำเร็จกับสมาร์ทโฟน Android ราคาประหยัดจาก WellcoM A88  (เชื่อว่าเป็นมือถือ Android ตัวแรกของใครหลายๆ คน) และยังคงได้รับความสนใจอย่างต่อเนื่องใน WellcoM A99  แต่หลังจากที่โดนซื้อกิจการไปก็หายตัวไปอย่างเงียบๆ จนกระทั่งในปัจจุบันก็มี house brand ผุดขึ้นมาหลายๆ รายรวมไปถึงผู้ให้บริการก็กระโดดเข้ามาเล่นในตลาดนี้ด้วย เช่น True Beyond และ Go Live S จาก True Move H, TriNet phone จาก Dtac โดยในวันนี้เราจะมาพูดถึงน้องใหม่ล่าสุดอย่าง Mondo Mondo (มอนโด) ไม่ถือว่าเป็น house brand สัญชาติไทย เพราะ Mondo อยู่ในเครือของ บริษัท Brightstar ผู้เชี่ยวชาญการจัดจำหน่ายสินค้า IT ทั่วโลก  ส่วนในไทย Brightstar เป็นผู้จัดจำหน่าย (ดิสทริบิวเตอร์) มือถือให้กับ HTC  ซึ่งรวมถึงบริการหลังการขาย แต่ในส่วนของ Mondo นั้นดูเหมือนว่า Brightstar จะให้บริษัท Advice เป็นตัวแทนจัดจำหน่ายและบริการหลังการขาย เนื่องจากผมมีโอกาสได้รับมือถือจาก Mondo  มา 2 เครื่อง Click 4001 และ Connect 5701Q (ได้รับมาจากเพื่อนที่ทำงานอยู่ที่บริษัท โทรศัพท์อะไร? ขอให้ช่วยรีวิว