Test Driven Development ด้วย Django Unit Testing (ตอนที่ 1)

Django มีสุดยอดแห่ง unit testing ที่ build in มาในตัว framework เรียบร้อยแล้ว, คนมักจะไม่ค่อยใส่ใจกับมันเท่าไรนักเพราะว่ามันมาแบบ “out of the box” แต่นั่นไม่ได้หมายความว่าเราจะละเลยส่วนั้นได้ เมื่อเราสร้าง Application ของเราเองขึ้นมา เพราะว่าเทสต์นั้นทำให้เรา “คิดออก” ว่าอะไรที่ควรจะทำให้เสร็จ เพราะฉะนั้นเราจะมาพูดเรื่องทำอย่างไรให้ Application สามรถทำงานได้เป็นอย่างดี
เมื่อมาถึงตรงนี้แล้วผมจะพยายามแสดงให้เห็นว่า ทำยังไงจะใช้ TDD ใน Django Application เราจะสร้าง Project เล็กๆ และมี Application เพียงตัวเดียว และใช้ Unit testing เป็นตัวกำหนด ว่าจะออกแบบ algorithm และจะ implement class อย่างไร
Continue reading

กลับมาเป็นมนุษย์เงินแดือนครั้งแรกในรอบปี

กลับมาทำงานประจำอีกครั้ง หลังจากโดนเมียบ่นมานาน ว่างานฟรีแลนซ์เงินไม่แนนอน ใหนจะค่ารถ ค่านมลูก
มีคนเมล์มาตามให้ไปสัมภาษณ์งาน ตอนที่ตัดสินใจไปไม่รู้ด้วยซ้ำ ว่าจะให้ทำอะไร ไปมึนๆทั้งอย่างนั้น พอถามว่าใช้ภาษาอะไรก็ตอบไปแบบไม่มั่นใจ ว่าไพธอน เค้าให้ข้อสอบ c พลัสพลัส มาทำบอกว่าทำตรงใหนไม่ได้ก็ไม่ต้องทำ ข้ามไปได้ ให้เวลาไม่จำกัด
ปรากฏว่าล่อไปสี่ชั่วโมงครึ่ง ทำได้แค่ครึ่งเดียวอีกต่างหาก
กลับมานั่งรออยู่บ้าน ขับรถยังไม่ถึงบ้านก็โทรมาตามไปสัมภาษณ์อีกครั้งกับ Director ในวันรุ่งขึ้น แอบคิดอยู่ในใจว่างานนี้มีลุ้น
นอนกระสับกระส่ายจนเช้า พอเข้ามาอีกครั้ง เค้าหยิบข้อสอบเมื่อวานขึ้นมาถาม ว่าคิดยังไงถึงทำแบบนี้ ตอบไปตรงๆว่า ไม่ถนัดเรื่อง C อิงกับ Concept ของ Python ก็เลยออกมาอย่างที่เห็น เค้าเลยสรุปว่าได้งาน
ให้มาเริ่มงานวันจันทร์เลย เขียนแบบที่อยากเขียนได้เลย สรุปว่าได้งานเขียน Django ซะงั้น

The Django template language

เกี่ยวกับเอกสารนี้

เอกสารนี้อธิบายรายละเอียดเกี่ยวกับไวยากรณ์ของ Django Template . หรือมีข้อสงสัยหรือปัญหาการใช้งาน โปรดอ่าน The Django template language: For Python programmers.

Django template นั้นออกแบบมาอย่างสมดุลระหว่างความสามารถและความง่ายดาย. มันถูกออกแบบมาให้สามารถทำงานกับ HTML ได้สะดวก นั่นรวมถึง Text-Based อื่นๆด้วย.

หลักการ

ถ้าคุณเคยมีพื้นฐานการเขียนโปรแกรมที่ฝังโค้ดใน HTML แล้ว คุณจะรู้สึกเหมือนได้กลับบ้านอีกครั้ง การใช้ Django template จะเป็นอะไรที่ง่ายดาย แต่ถ้าหากคุณหวังว่าจะเห็นโค้ด Python ใน Django template แล้ว ต้องขอแสดงความเสียใจที่ทำให้ผิดหวัง
The Django template มีฟังชั่นเหมือนกับภาษาโปรแกรมทั่วไป มี if tags เพื่อตรวจสอบเงื่อนไข มี for loop เอาไว้วนให้ปวดหัวเล่น Django template จะรันเพียง template tag และจะไม่รัน Python code โดยเด็ดขาด

Continue reading

Django 1.1 ออกแล้ว

หลังจากติดโรคเลื่อน ในที่สุด Django 1.1 หลังจากติดโรคเลื่อนจนผมถอดใจ ในที่สุด Django ก้ได้ปล่อย stable version ออกมาเสียทีเมื่อเช้านี้
โดยรวมๆแล้วมีการเปลี่ยนแปลงที่ชัดเจนคือหน้าตาของ AdminSite โดยเฉพาะ slugField ที่เพิ่มข้อมูลให้อัตโนมัติ ไม่ต้อมานั่งกรอกเองให้เมื่อยตุ้ม
Aggregate ที่เมื่อก่อนทำไม่ได้ ในเวอร์ชั่นนี้สามารถทำได้แล้ว สามารถใช้อะไรอย่าง

>>> from django.db.models import Avg
>>> Book.objects.all().aggregate(Avg('price'))
{'price__avg': 34.35}

หล่อขึ้นเยอะมากเลยทีเดียว
และอีกหลายๆอย่างที่ขี้เกียจเขียน อยากรู้ไปอ่านเองดีกว่าครับ
ส่วนเรื่องภาษาไทยนั้น ผมได้ส่งฉบับล่าสุด โดยมีพี่เทพช่วยตรวจสอบให้ โดยพยายามให้เป็นไปในแนวทางเดียวกันกับ tl10n หลายๆจุดปรับปรุงให้ดีขึ้น ลดความกำกวมไปเยอะ โดยทาง Django ได้ปล่อย stable version หลังจากที่เพิ่มภาษาไทยเพียงสี่ชั่วโมง ฉิวเฉียด หวาดเสียวกันจนหยดสุดท้ายจริงๆ
ยังไงก็ขอให้สนุกกับการพัฒนาโปรแกรมนะครับ 😉

Django 1.1RC ออกแล้ว เตรียมพร้อมกันหรือยัง

Django 1.1RC ออกมาแล้วเมื่อวันที่ 21 กรกฏาคม ที่ผ่านมา แต่พึงระลึกว่ายังไม่ใช่ตัวหลัก แนะนำว่าอย่าเพิ่งรีบร้อนเอามาใช้ในงานจริง เพราะว่าหากโชคดี คงจะได้เห็นตัวหลักในเวลาอันไกล้
ตอนนี้จะไม่มีการแก้ไขข้อความอะไรเพิ่มตาม หากต้องการจะแปล นี่เป็นโอกาสอันดีแล้วครับ ลุยกันเลย
หากต้องการจะลอง สามารถ DOwnload ได้ที่นี่

ติดตั้ง Django กันดีกว่า

เพราะคนดีย่อมแก้ไข คนจัญไร นั้นแก้ตัว ผมจึงสารภาพตามตรงว่าหลังจากบาร์แคมป์ บางกอก ครั้งที่ 3 แล้ว ความขี้เกียจได้จับตัวกันเป็นก้อน ไม่มีเหตุผลอื่นใดเลย เรื่องที่ติดว่าจะบล็อกเรื่องการ Deploy Django นั้นจึงยังไม่ได้ขึ้นด้วยประการฉะนี้
เกริ่นไปให้มากความ เข้าเรื่องเลยดีกว่า ก่อนอื่นเลยผมขอแยกส่วนต่างๆของโปรเจ็คออกเป็นส่วนๆ เพื่อง่ายต่อการอัพเดต

  • Django (เอาไว้เก็บ Source code ของ django)
  • Media (images, css, javascript)
  • Logs ( ถ้าอยากมี logs ก็เอามันมาไว้ข้างนอกเสีย อย่าเอาไปรวมกับ source code)
  • User-upload ( อะไรที่ user upload ขึ้นมา พึงระวัง)
  • Project source code ( เอาไว้เก็บไฟล์โปรเจ็คของเรา มีอะไรก็อัพเดตมันตรงนี้แหละ)
  • Configuration ( ชื่อก็บอกว่าเก็บคอนฟิก อันนี้ถ้าทำงานหลายๆ คนก็แยกเป็นโฟลเดอร์ย่อยๆ ของใครของมัน หรือถ้าทำคนเดียวก็เป็นโฟลเดอร์ย่อยอีกนั่นแหละ เผื่อมีคนรู้ใจเข้ามาทำด้วย จะได้ขยับขยายได้ง่าย)
  • Extension ect…(extension, libary, python packages อย่างผมผมก็มี sorl, django-threaded-multihos, ReportLab)

ง่ายต่อการอัพเดตยังไง เมื่อต้องการอัพเดต django หรือ extension อื่นๆ เราสามารถที่จะเปลี่ยนเฉพาะส่วนนั้นๆ โดยที่ไม่กระทบกับโปรเจคอื่นๆของเราได้ อย่างเช่นใน server มีอยู่ห้าโปรเจค ที่ใช้งาน Django เหมือนกัน แต่ต่างกันที่เวอร์ชั่น เราสามารถอัพเดต Django ในโปรเจคของเรา โดยที่ไม่ทำให้เกิการเปลี่ยนแปลงในโปรเจ็คอื่นๆ

สิ่งที่ต้องระวังเป็นพิเศษคือ ห้ามเก็บอะไรก็ตาม ที่ User upload ขึ้นมาไว้รวมกับ Source code ของคุณอย่างเด็ดขาด การทำอย่างนั้นไม่ต่างอะไรกับเกิดเปิดประตูบ้านแล้วบอกว่า “เฮ้ย hack กูที”

ขั้นตอนต่อไป สร้างไฟล์  vhost ของ Apache (วั้นนี้จะใช้ mod_python WSGI ก่อน เพราะว่าไม่รู้ว่า FastCGI ทำยังไง เดี๋ยววันหลังลอง FastCGI แล้วจะมาบอก)
แต่ตอนนี้ บอลกำลังจะมา ต่อพรุ่งนี้แล้วกันนะครับ 😉

Satchmo Django E-Commerce CMS

Installing Dependencies
– easy_install pycrypto
– easy_install http://code.enthought.com/enstaller/eggs/rhel/3/Reportlab-2.1.0001-py2.5.egg
– easy_install django-registration
– easy_install http://tinyforge.org/frs/download.php/1/trml2pdf.tar.gz
– easy_install PyYAML
sudo apt-get install python-trml2pdf

Install Django
download Django stable version from http://www.djangoproject.com/download/1.0.2/tarball/

Installing Satchmo into your path
make new project
– django-admin.py startproject mystore
uncompress satchmo
setupSatchmo
– sudo python setup.py install