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

บทความ

กำลังแสดงโพสต์ที่มีป้ายกำกับ Python

ใช้ 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 สำหรับได...

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

ให้โจทย์เขียนโปรแกรมไปกับเด็กคนนึง ให้เขียนด้วย 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) โจทย์นี้อาจจะยากสำหรับผู้เริ่มต้นเรียนโปรแกรมิ่ง แต่สำหรับนักศึกษาสายคอมพิวเตอร์ในระดับมหาวิทยาลัย โจทย์นี้น่าจะเป็นเรื่องง่ายมาก แทบจะไม่ต้องใช้ความรู้มากมายในการเขียนเลย เพียงแค่ลงมือทำเท่านั้น ไม่รู้ว่าป่านนี้จะเขียนได้ยัง !!_ _ ไม่ต้องการให้เขียนได้โค้ดแบบนี้ แค่คำตอบเหมือนก็ดีใจแล้ว เศร้าจริง.... เด็กไทย

python3: ติดต่อ MySQL ด้วย oursql

ถึงแม้ว่า Python จะมี interpreter ถึงเวอร์ชัน 3 แล้วแต่ p3k นั้นไม่ได้รับความนิยมมากนักถึงแม้ว่าจะประสิทธิภาพดีกว่า Python 2 ก็ตาม ปัญหาเกิดขึ้นเมื่อผมตกลงใจสร้างโปรเจคๆ หนึ่งโดยใช้ Python 3 แต่ไลบรารีสำหรับติดต่อ MySQL ที่ใช้ประจำคือ MySQl-python หรือ MySQLdb นั้นไม่สามารถใช้งานได้บน Python 3 แต่โชคดีที่มีคนสร้าง oursql ซึ่งสามารถทำงานบน Python 3 ได้ด้วย หากใช้เครื่องมือ easy_install เพื่อลงเพกเกจไม่สามารถลงได้คงเป็นเพราะใช้ source code เดียวกับ python 2 ต้องดาวน์โหลด source จาก launchpad ในหน้า p3k เท่านั้น จากนั้นเริ่มกระบวนการติดตั้ง แต่ต้องแน่ใจก่อนว่ามีเพกเกจ libmysqlclient-dev เสียก่อนมิฉะนั้นจะไม่สามารถลงไลบรารีได้ เมื่อพร้อมแล้วก็เริ่มการติดตั้ง # unzip oursql-0.9.2.zip # cd oursql-0.9.2 # python3 setup.py install ถ้าไม่มีอะไรผิดพลาดก็น่าจะใช้งานได้แล้ว หากจะใช้ Python3 ก็ยังมีอีกหลายเรื่องให้เหนื่อย !!_ _

ทดลองวาดกราฟด้วย mathplotlib

หลังจากที่เริ่มเขียนรายงาน มีผลการทดสอบหลายตัวที่ต้องการนำเสนอในรูปของกราฟ ซึ่งข้อมูลที่ได้จากต้นทางเป็นผลลัพธ์ของโปรแกรมที่ผมทดสอบนั้นเอง แต่ในแต่ละการทดสอบจะวัดผลกันที่เวลาที่ใช้สำหรับประมวลผลของแต่ละกระบวนการ การจะให้ทดสอบแค่ครั้งเดียวอาจได้ผลที่ไม่แม่นยำและเที่ยงตรงจึงมักใช้วิธีการวัดหาค่าเฉลี่ยของผลลัพธ์ที่ได้ แต่มันจะยุ่งยากมากขึ้นเมื่อมันมีหลายการทดสอบ และในแต่ละกระบวนการมีผลลัพธ์ที่สนใจหลายค่า การใช้เขียนโปรแกรมเข้าไปอ่านค่าที่สนใจเพื่อมาหาค่าเฉลี่ยแล้วพลอทกราฟให้เสร็จในโปรแกรมเดียว ช่วยทุ่นแรงได้เยอะ ไม่อย่างนั้นต้องมาใช้ OO หรือ Ms excel เพื่อหาค่าประมาณแล้วมาพลอทกราฟ ซึ่งต้องออกแรงมาก(เคยโง่ทำมาแล้ว :( ) ยิ่งข้อมูลหลายชุดแต่ละชุดมีผลลัพธ์มากกว่าร้อยที่ต้องหาค่าเฉลี่ยคงไม่ดีเอามากๆ โปรแกรมจัดการข้อมูลสักตัวคงช่วยจัดการปัญหาเปล่านี้ได้เยอะทีเดียว ช่วงนี้สนใจ Python เป็นพิเศษ เลยคิดว่าน่าจะใช้ Python ช่วยในการจัดการกับข้อมูลหาค่าเฉลี่ย และลองพลอทกราฟดู หาข้อมูลไปเจอจังๆ กับ พลอทแบบ advance ด้วย matplotlib ที่เขียนขึ้นโดยคุณโบว์ เลยลองปรับใช้ดูก็ช่วยได้มากทีเดียว #!/usr/bin/pyt...