ข้ามไปที่เนื้อหาหลัก

บทความ

สร้าง Stubs ภาษา C ด้วย cmocka

มีโอกาสได้เปิดวิชา Embedded Software Testing เลยต้องลองกลับไปเขียนภาษา C และ หาไลบรารีสำหรับทดสอบโปรแกรมภาษาซีมาใช้ มีให้เด็กๆ เลือกเล่นหลายๆ ตัวทั้ง Unity  (ไม่ไช้โปรแกรมสร้างเกมส์นะครับ :D)  CppUTest แต่มาลงตัวที่ CMocka เพราะสามารถใช้ทำ Stubs และ Mock ได้ด้วย โดยส่วนตัวแล้ว Unity ออกแบบมาค่อนข้างดีสำหรับการทดสอบ embedded แค่เวลาคอมไพล์ยังต้องคอมไพล์ไฟล์ภาษาซีของ Unity เข้าไปร่วมด้วยเลยอาจจะใช้งานยากหน่อย ส่วน CppUTest ก็ออกแนว C++ ไป ถึงแม้ว่าจะใช้ทดสอบโคดภาษาซีได้แต่ก็ไม่ได้เพียวซีจริงๆ CMocka ไม่ได้ออกแบบมาทดสอบ embedded โดยตรงแต่เป็น C ล้วน ใช้การคอมไพล์ช่วยในการสร้าง strub ถึงแม้ว่าเข้าใจยากนิดหน่อย แต่ใช้งานได้ดีทีเดียว เราจะทดลองสร้าง ฟังก์ชัน calculate โดยรับพรารามิเตอร์ 3 ค่า คือ operator, operand1 และ operand2 แล้วลองเรียก ฟังก์ชัน add แต่ ฟังก์ชัน add เป็น ฟังก์ชันที่เราสร้างขึ้มาเองแล้วถูกเรียกใช้ เราต้อง stub ฟังก์ชัน add เพื่อจะได้ทดสอบเฉพาะการทำงานของฟังก์ชัน calculate เท่านั้น โดยการสร้างฟังก์ชัน __wrap_add ขึ้นมา โดยที่ มี return type และ รับพารามิเตอร์เห
โพสต์ล่าสุด

Barcamp Songkhla IV

หลังจากจบงานก็ควรเขียน blog เป็นที่ระลึกตามธรรมเนียม สำหรับงานครั้งนี้ก็เป็นคนร่วมงานเหมือนครั้งที่แล้ว น้องๆ ที่ภาควิชาและพี่เอ้จาก Tuber เป็นคนจัดงาน โดยรวมแล้วงานออกมาดี ปีนี้มีเบียร์แคมป์ด้วย ถือเป็นครั้งแรกของงานเลย แต่เสียดายหัวข้อน้อยไปหน่อย พูดอะไรในงาน Barcamp Songkhla IV ปีนี้เตรียมหัวข้อไปเรื่องเดียวคือ MQTT เป็น Message Passing ตัวนึงที่น่าสนใจมาก เหมาะแก่การนำมาขยายระบบ และประยุกต์ใช้กับ IoT โดยคร่าวๆ แล้วสรุปได้ประมาณนี้ พัฒนาโดย IBM และ Arcom เวอร์ชันปัจจุบันเป็นได้รับการรับรองมาตฐานจาก OASIS โปรโตคอลเล็กมากมี header ไม่เกิน 2 byte ทำงานอยู่บน TCP/IP มีลักษณะเป็น Publish/Subscribe จะมีส่วนที่ส่งข้อความออก และรับข้อความเข้าผ่านทาง Message Broker ใช้วิธีการ Topic Maching สำหรับการส่งข้อมูลจาก Publisher ไปยัง Subscriber เนื่องจากโปรโตคอลมีขนาดเล็กจึงสามารถใช้งานได้ดีบน node ที่มีขนาดเล็ก มีพลังในการประมวลผลน้อย จึงเหมาะกับอุปกรณ์ต่างๆ ใน IoT ด้วย นอกจากนี้ยังมีประเด็นปลีย่อยต่างๆ สามารถดูได้จาก slide หัวข้อที่น่าสนใจ TDD เปลี่ยนชีวิตคนนี้ยังไง By iBot.o

ใช้ Watchdog ช่วยทำ TDD สำหรับ C++ ด้วย Gtest และ CMake

เห็นคนรู้จักหลายๆ คนทำ TDD กัน เลยอยากทำบาง โดยมากมักใช้ Watchr เพื่อช่วนในการรัน Test Case ทันทีที่บันทึกไฟล์ เห็นแล้วสะดวกดี แต่พอดีเขียน Ruby ไม่เป็นเลยมากหาไลบราลีภาษา Python แทน ก็ไปเจอ Watchdog  อาศัยแรงของตั้วเลยได้ Python script  อย่างง่ายมาเล่น TDD สำหรับ Python กัน วันนี้อยากเอามันมาใช้กับ C++ บ้างเล่นเอาเหนื่อยเหมือนกันกว่าจะเอา  Python script  ของตั้วมาใช้กับ C++ ซึ่งจากที่ดูๆ มา Google Test กับ CMake น่าจะตอบโจทย์ TDD ได้ระดับนึ่ง แต่ต้องอาศัยการจัดรูปแบบของไดเร็กทอรีเข้าร่วมด้วย ตอนนี้สคริปต์ยังมีการกำหนดหลายๆ อย่างตายตัวอยู่มาก อาจจะยังไม่เรียบร้อยดีเท่าที่ควร หน้าตาไดเร็กทอรีประมาณนี้ . ├── src │   └── xxx │   └── xxx.cpp ├── tests │   ├── CMakeLists.txt │   ├── external │   │   └── gtest │   │   └── CMakeLists.txt │   └── units │   └── xxx │   └── test_xxx.cpp ├── cpp-testrunner │ └── CMakeLists.txt สำหรับไดเร็กทอรีโปรเจคจะประกอบไปด้วย src tests CmakeLists.txt และ cpp-testrunner src ใช้เก็บซอร์ซโค้ดของโปรแกรม tests ใช้เก็บ Test Cas

Barcamp Songkhla III

หลังจากจบงานก็ควรเขียน blog เป็นที่ระลึกตามธรรมเนียม สำหรับงานครั้งนี้เป็นคนร่วมงานปล่อยให้น้องที่ภาควิชาดำเนินงานกันไป :D สำหรับคนสนใจงานครั้งที่แล้วสามารถอ่านเพิ่มเติมได้ที่ มอง Barcamp Songkhla II พูดอะไรในงาน Barcamp Songkhla III สำหรับครั้งนี้ได้เตรียมหัวข้อแบบจัดเต็ม 3 session ดังนี้ Python for Scientific Computing โดยร่วมพูดกับ  @ibotdotout   @superizer  เนื้อหาเเป็นการแนะนำการใช้งาน Python สำหรับการประมวลผลทางวิทยาศาสตร์ โดยเน้นไปที่ NumPy SciPy SymPy OpenCV  เนื้อหาไม่ได้เจาะจงอะไรเป็นพิเศษเน้นไปที่แนะนำให้รู้จักเสียมากกว่า แล้วมีกรณีศึกษาให้ดูในตอนท้ายด้วยเล็กน้อย สำหรับเซสชันนี้ได้รับความสนใจอยู่พอสมควร C++11/14: a Review เซสชันนี้เป็นการบอกคร่าวๆ ว่า C++11/14 มีอะไรน่าสนใจบ้าง โดยร่วมพูดกับ  @superizer  เซสชันนี้มีคนสนใจมากเป็นพิเศษ 2 คน :D อาจเป็นเพราะว่าไม่ค่อยมีคนสนใจ C++ มากแล้วก็ได้ T__T  เรียน "ธรรมะ" จากชีวิตโปรแกรมเมอร์ เป็นการแนะนำธรรมะที่เคยเรียนรู้มาแล้วตอนมัธยมโดยอธิบายให้เข้ากับการเป็นโปรแกรมเมอร์ว่าเหตุใด ทำไม อย่างไร เราถึงได้ทุกข์ แล้ว

เด็กน้อยหลงทาง

เด็กน้อยนายหนึ่งได้กล่าวไว้ว่า ตอนนี้ผมหลงทาง ไม่รู้จะเดินไปทางไหนจิงๆ แค่ก้าวเท้าผมยังไม่รู้เลยว่าจะก้าวเท้าซ้ายหรือขวาก่อนดี อาจจะเปนเพราะผมเดินทางไม่เก่ง ไม่ชำนาญเส้น ที่สำคัญผมอ่านแผนที่ไม่ออก ผมมีผู้นำทางที่คอยบอกบริเวณที่หมายให้กับผม แต่ผมก็ยังเดินไปไม่ได้ แน่นอนว่าผมไม่ใช่คนตาบอด การที่จะให้ใครจูงผมไปยังเป้าหมายคงไม่ใช่เรื่องดีนัก ผมเริ่มเข้าใจกับคำว่ามืดแปดด้านมากขึ้นในตอนนี้ ผมคงให้สัณญาไม่ได้ว่าผมจะไปถึงเป้าหมาย แต่อย่างน้อยในตอนนี้ผมก็ได้รู้ว่าระหว่างทางมันยากลำบากแค่ไหนและก็หวังอยู่ลึกๆว่า... ผมคงไปถึงจุดหมาย แม้มันจะถึงโดยไม่สวัสดิภาพก็ตามTT  #ให้ตายเถอะ Project ที่มา  facebook ของเจ้าเด็กน้อย พี่จะบอกเจ้าเด็กน้อยว่า เจ้าเด็กน้อยหลงทางกลางแสงดาว แต่ละก้าวจะย่างยังหวั่นไหว ถึงดาราบอกทางยังหวั่นใจ หนทางใด คือมรรคา หายากจริง เจ้าเด็กน้อยเจ้าเคยหวนไปคิด ถึงชีวิตที่ผ่านพ้นทุกสรรพสิ่ง เจ้าเคยเตรียม ใจกาย ไว้พักพิง พร้อมแอบอิง ประสบการณ์ แล้วหรือยัง เจ้าเตรียมกาย เผชิญโลกมากเพียงใด เจ้าเตรียมใจ ทุกข์ยาก พร้อมพลาดพลั้ง เตรียมสมอง เตรียมปัญญา เตรียมพลัง ลดอคต

ผ่านไปแล้วหนึ่งอาทิตย์ แก้โจทย์นี้ไม่ได้สักที

ให้โจทย์เขียนโปรแกรมไปกับเด็กคนนึง ให้เขียนด้วย Python 3 โจทย์ บางส่วนของโค้ด Python A = [random.randint(1, 150) for i in range(0,100)] หาค่าเฉลี่ยของสมาชิกของ A ที่ละ 10 ค่า ให้อยู่ในรูปของลิสท์ ผ่านไปแล้วหนึ่งอาทิตย์ แก้โจทย์นี้ไม่ได้สักที เลยแอบเอามาเฉลยไว้ :D import random A = [random.randint(1, 150) for i in range(0,100)] length = 10 average = [sum(A[a:a+length]) / len(A[a:a+length]) for a in range(0, len(A), length)] print(average) โจทย์นี้อาจจะยากสำหรับผู้เริ่มต้นเรียนโปรแกรมิ่ง แต่สำหรับนักศึกษาสายคอมพิวเตอร์ในระดับมหาวิทยาลัย โจทย์นี้น่าจะเป็นเรื่องง่ายมาก แทบจะไม่ต้องใช้ความรู้มากมายในการเขียนเลย เพียงแค่ลงมือทำเท่านั้น ไม่รู้ว่าป่านนี้จะเขียนได้ยัง !!_ _ ไม่ต้องการให้เขียนได้โค้ดแบบนี้ แค่คำตอบเหมือนก็ดีใจแล้ว เศร้าจริง.... เด็กไทย

ด้วยระลึกถึงคุณย่า บันทึกจากความทรงจำ

บันทึกนี้เขียนขึ้นเพื่อบันทึกความทรงจำของผมที่มีต่อคุณย่าที่ล่วงลับไปแล้วอย่างไม่มีวันหวนคืน คุณย่าเปรียบเหมือนฟางเส้นสุดท้ายที่ร้อยครอบครัวใหญ่ของเราเอาไว้ไม่ให้แตกแยก หลังจากที่เสียคุณปู่ไปเมื่อ 23 ปีก่อน เนื่องจากบริเวณจังหวัดกระบี่ ตรัง พังงา ภูเก็ต มีชาวจีนอาศัยอยู่มาก แต่มักจะเป็นชาวจีนที่อพยพมาไทยนานแล้ว จากการการสังเกตของผม ชาวจีนแถบนี้โดยมากน่าจะเป็นชาว เปอรานากัน หรือชาวจีนที่อพยพมาจากจีนแล้วตั้งถิ่นฐานอยู่ในแหลมลายูหรืออินโดนีเซีย แล้วหลังจากนั้นจึงอพยพมาอาศัยต่อที่ประเทศไทย จากการบอกเล่าของคุณแม่ ก๋งเคยเล่าให้ฟังว่าตอนยังเด็กเคยแจวเรือจ้างอยู่ที่ปีนัง คุณย่าเคยเล่าว่าเป็นชาวฮกเกี้ยน อีกทั้วจากรูปวาดคุณย่าทวดที่มีการเกล้ามวยผม สวมเสื้อคอลึก ส่วนทางบ้านมีการใช้คำเรียกจีนผสมไทยถิ่นใต้อยู่มาก ผู้หญิงทุกคนนิยมสวมผ้าปาเต๊ะ เสื้อลูกไม้ (เสื้อฉลุลายดอกไม้) อาหารการกินเป็นแบบชาวไทยถิ่นใต้ทุกประการ (กินน้ำพริก แกงส้มเก่งกันทุกคน ยกเว้นก๋ง :D) อีกทั้งก๋งเกิดที่ดินแดนแถบนี้ไม่ได้เดินทางมาจากเมืองจีน (บางทีเรียก เตี่ยต่อเตี่ย คือ ทวดมาจากจีน ส่วนสถานที่เกิดไม่แน่ใจว่าเป็นปีนังหรือไทย)