Showing posts with label Python. Show all posts
Showing posts with label Python. Show all posts

25.2.10

Python Classroom Project แอบซุ่มทำอยู่




Python Classroom project     ห่างหายไปนานสำหรับบทความนี้จากบล๊อกโปรแกรมเมอร์(จำเป็น) ไปซะนาน  ไม่ได้หายไปไหน เพียงแต่ตอนนี้ไปซุ่มทำโปรเจคใหม่อยู่ ถือเป็นการทดลองไปด้วย อยากลองเปลี่ยนไปเขียน content กับ Google site ดูหน่ะครับ

      ก็เลยตั้งใจว่า เนื้อหาที่เกี่ยวกับทั้งหมด จะยกไปไว้ที่ Python Classroom เพื่อนๆที่สนใจเรื่องเกี่ยวกับไพธอน ก็ตามไปที่นั่นได้ ในส่วนของ Blog โปรแกรมเมอร์(จำเป็น) ก็ยังจำเป็นอยู่ ยังต้องอัพเดทกันต่อไป ส่วนจะเน้นไปทางแนวไหน ก็ยังบอกไม่ได้เหมือนกัน มันขึ้นอยู่กับความจำเป็นจริงๆ

      ใน Python Classroom ผมได้วางคอนเซ็ปต์ไว้ว่า จะมีเนื้อหาเป็นบทเรียน ยกตัวอย่างโมดูลที่น่าสนใจ แล้วก็จะมีตัวอย่างโค๊ดไพธอนให้เพื่อนๆไปศึกษากัน โดยเนื้อหาทั้งหมดผมก็ค้นคว้ามาจาก text book บ้าง จากเว็บไซต์อื่นๆ บ้าง และก็จากประสบการณ์ในที่ทำงานบ้าง บางครั้งหากเจอมุขเด็ดๆของไพธอนที่เค้าเอามาใช้งานจริง ผมก็จะพยายามนำมาอัพเดทลงใน Python Classroom

      คงต้องขอออกตัวไว้ก่อนว่า ผมก็ไม่ได้เชี่ยวชาญในตัวภาษาไพธอนมากเท่าไหร่เลย แต่ผมถือคติว่า

“The first step is always the hardest การเริ่มต้นทำสิ่งใดสิ่งที่ยากที่สุดก็คือตอนเริ่มต้นทำ”

      เพระฉะนั้น จะเป็นการดีมาก ที่ทำ Python Classroom project นี้ขึ้นมา เพราะนอกจากจะเป็นการบังคับให้เราเอาชนะในการเข้าใจในภาษาไพธอนแล้ว ยังมีโอกาสได้นำประสบการณ์มาถ่ายทอดให้น้องๆ รุ่นต่อๆมา ให้หันมาศึกษาภาษาไพธอนกันให้มากๆ ขึ้นอีกด้วย และจะได้มีแหล่งความรู้ในการศึกษาไปพร้อมๆกัน

      ผมคิดว่าอนาคตของภาษาไพธอนยังไปอีกได้ไกลแน่ๆ ด้วยความที่มีคนพัฒนาโมดูลต่างๆออกมาให้ใช้กันอย่างมากมาย และความยืดหยุ่นของตัวภาษา จึงทำให้ภาษาไพธอนถูกนำไปใช้ในหลายๆ องค์กร ไม่ว่าจะเป็น นาซ่า หรือแม้แต่ Google ของเรา เพราะฉะนั้น จึงอยากให้เมืองไทยได้มีแหล่งเรียนรู้ภาษาไพธอน เพื่อวันหนึ่งเราอาจจะเห็นคนไทย สร้างสรรค์ผลงานที่เขียนด้วยภาษาไพธอน ออกสู่สายตาชาวโลกสักครั้ง (ไม่รู้ฝันไปหรือเปล่า)

      หลายคงอาจจะรู้สึกว่าทำไมผมจึงเชียร์จังเลยกับตัวภาษาไพธอน ภาษานี้มันทำอะไรได้มั่ง ตอนนี้ผมก็ยังไม่เข้าใจในตัวภาษาไพอนทั้งหมดหรอกครับ แต่เท่าที่เห็น เจ้าตัวภาษาไพธอนสามารถเขียนให้ติดต่อกับ hardware บางตัวได้ ยันไปจนถึงเขียนเว็บ application ได้ ฉะนั้นจะดีกว่าไหม หากเพื่อนๆ มาเขียนภาษานี้ แล้วสามารถทำงานได้ครอบคลุม ตั้งแต่ hardware ไปจนถึงโปรแกรมมิ่งเน็ตเวิร์ค โดยที่ไม่ต้องผ่านตัวแปลภาษาอื่น เพื่อเชื่อมต่อทั้งหมดเข้าด้วยกัน  งั้นอย่ารอช้าเลย มาศึกษาพร้อมกันเถอะครับ Let’s Go !!!

python hardware network

อ่านเพิ่มเติม...

13.11.09

py2exe แปลง python ให้เป็น exe file

จริงๆแล้ว py2exe เป็น module ทีแยกออกมาจาก Distribution Utilities “disutils”  (เพราะฉะนั้นจะไม่มีมากับ python ที่เรา install เข้าไป ต้อง download แยกมาต่างหาก) ซึ่งเจ้าตัว py2exe จะทำหน้าที่แปลงโค๊ดที่เราเขียนเป็นภาษา python ให้เป็นไฟล์ exe ซึ่งสามารถนำไปรันบนวินโดวน์เครื่องไหนๆก็ได้ตามที่ต้องการ โดยที่เครื่องนั้นๆ ไม่จำเป็นต้องลงตัวแปลภาษา python แต่อย่างใด

ก่อนจะพาไปสู่การติดตั้งและการใช้งาน py2exe ผมอยากจะเล่าเหตุผลที่ผมสนใจเจ้าตัว python ก็เพราะว่ามันสามารถทำงานได้เกือบจะครอบคลุมทั้งหมดเลยก็ว่าได้ เช่น มีอยู่ครั้งหนึ่งที่ผมพยายามที่จะเขียนหน้าเว็บด้วย PHP แล้วให้ user ทำการ คลิกนู่น คลิกนี่ บนหน้าเว็บแล้วให้มีการส่งคำสั่งไปยัง hardware ที่ต่ออยู่กับเครื่องคอมพิวเตอร์ ลำพังเพียง PHP อย่างเดียวไม่สามารถทำได้แน่นอน จะต้องใช้ PHP ไปเรียกโปรแกรมอื่นๆอีก อาจจะเป็นโปรแกรมที่เราเขียนด้วย Visual basic หรือไม่ก็เขียนด้วยภาษา C หรืออะไรก็ตามแต่ จะเห็นได้ว่า เพื่อนๆจะต้องศึกษา PHP แล้วก้ไปศึกษาโปรแกรมอื่นๆอีก นอกจากนี้ เพื่อนๆยังอาจจะพบปัญหาถึงความที่สองโปรแกรมเข้ากันไม่ได้อีก ก็เลยเป็นที่มาที่ผมอยากจะนำเสนอภาษา python ที่พร้อมสรรพสำหรับทุกเรื่อง มาว่ากันต่อ

อันดับแรกเลยของการใช้ py2exe ก็ให้เพื่อนๆไปดาวน์โหลดตัวโปรแกรมนี้มาก่อนจากที่นี่ โดยเราต้องเลือก version ที่มัน support ตรงกับ python ที่เราได้ติดตั้งไว้แล้วที่เครื่องของเรา เมื่อได้มาแล้ว ก็ทำการติดตั้งโปรแกรมตามสัญชาตญาณดั้งเดิม Nextๆๆๆๆ แล้วก็ Next lol หลังจากติดตั้งเรียบร้อยแล้ว อย่าลืมไป set path ด้วยนะครับ จะได้เรียกใช้ไฟล์ได้ง่ายๆ

C:\Python26\Lib\site-packages\py2exe

set parh py2exe

ในตัวอย่างนี้ ผมก็เอามาจากในเว็บ http://www.py2exe.org/index.cgi/Tutorial นั่นแหละ เป็นตัวอย่างง่ายๆ เพื่อให้เกิดความเข้าใจก่อน หลังจากนั้นก็ค่อยไปประยุกต์เอาเอง เริ่มจากการสร้งโค๊ด python ง่ายๆขึ้นมาก่อน

แล้ว save เป็น ไฟล์ hello.py ลองรันดูด้วยว่าได้ Hello World ออกมาไหม

 



C:\Tutorial>python hello.py
Hello World!

C:\Tutorial>



 


ก่อนที่จะไปขั้นตอนการแปลงไฟล์ python ให้เป็นไฟล์ exe เพื่อนๆจะต้องทำการสร้างไฟล์สำหรับติดตั้งก่อน โดยสร้างไฟล์ดังต่อไปนี้




from distutils.core import setup
import py2exe

setup(console=['hello.py'])



 


แล้ว save เป็นไฟล์ setup.py เอาไว้ที่เดียวกันกะไฟล์ที่บันทึกก่อนหน้านี้



ในขั้นตอนนี้ เราจะทำการ complie โค๊ดที่เราเขีนให้เป็น ไฟล์ exe เพื่อพร้อมไปใช้งาน โดยพิมพ์คำสั่งนี้ที่ command line (




C:\Tutorial>python setup.py py2exe



จะได้ ข้อความขึ้นมาเพียบเลย



C:\Tutorial>python setup.py py2exe
running py2exe
*** searching for required modules ***
*** parsing results ***
creating python loader for extension 'zlib'
creating python loader for extension 'unicodedata'
creating python loader for extension 'bz2'
*** finding dlls needed ***
*** create binaries ***
*** byte compile python files ***
byte-compiling C:\Tutorial\build\bdist.win32\winexe\temp\bz2.py to bz2.pyc
byte-compiling C:\Tutorial\build\bdist.win32\winexe\temp\unicodedata.py to unicodedata.pyc
byte-compiling C:\Tutorial\build\bdist.win32\winexe\temp\zlib.py to zlib.pyc
skipping byte-compilation of c:\Python24\lib\StringIO.py to StringIO.pyc

[skipping many lines for brevity]

skipping byte-compilation of c:\Python24\lib\warnings.py to warnings.pyc
*** copy extensions ***
*** copy dlls ***
copying c:\Python24\lib\site-packages\py2exe\run.exe -> C:\Tutorial\dist\hello.exe

*** binary dependencies ***
Your executable(s) also depend on these dlls which are not included,
you may or may not need to distribute them.

Make sure you have the license if you distribute any of them, and
make sure you don't distribute files belonging to the operating system.

ADVAPI32.dll - C:\WINDOWS\system32\ADVAPI32.dll
USER32.dll - C:\WINDOWS\system32\USER32.dll
SHELL32.dll - C:\WINDOWS\system32\SHELL32.dll
KERNEL32.dll - C:\WINDOWS\system32\KERNEL32.dll

C:\Tutorial>


พอเข้าไปดูใน C:\Tutorial> จะมี folder เพิ่มขึ้นมา 2 folder คื build และ dist ซึ่ง folder build เราสามารถลบทิ้งได้หลังจากสร้าง package เสร็จเรียบร้อยได้เลย ลองทดสอบโปรแกรมที่ได้




C:\Tutorial>cd dist

C:\Tutorial\dist>hello.exe
Hello World



 


ก็พอได้แนวทางกันแล้วนะครับ ลองๆเล่นกันดูนะครับ วันหลังผมจะมาแนะนำการติดตั้งตัวเสริม python อีกตัวหนึ่งที่จะทำให้เพื่อนๆสามารถเขียน python แบบ GUI ได้สะดวกยิ่งขึ้น  วันนี้พอเท่านี้ก่อน เหนื่อยแล้ว สวัสดีครับ

อ่านเพิ่มเติม...

12.11.09

ทำ Python ให้เป็น CGI (Apache+Python)

จากคราวที่แล้วที่ผมเริ่มอยากจะเอาจริงกับภาษาไพธอนแล้ว ผมก็เริ่มที่จะมองหาโปรเจคทำ ซึ่งผมคิดว่าการเรียนรู้ภาษาใดๆ โดยเริ่มจากการเรียนรู้จากการทำโปรเจคทำให้เราสามารถเรียนรู้ภาษานั้นได้เร็วกว่าการที่เรามานั่งอ่านหนังสือแล้วทำตามตัวอย่าง ซึ่งอาจทำให้เกิดการเบื่อหน่ายได้ง่ายๆ สุดท้ายก็อาจจะจบด้วยการล้มเลิกลงกลางคัน

โดยส่วนตัวแล้ว ผมค่อนข้างที่จะถนัดการเขียนโปรแกรมแนว web base ซะมากกว่า windows base วันนี้ผมก็เลยตั้งใจว่าจะทำการ config apache web server ให้สามารถเข้าใจตัวแปลภาษา python สักหน่อย เพื่อที่เราจะได้ลองเขียนภาษา python ให้สามารถทำงานบนเว็บ page ได้ ตอนแรกนั้นผมพยายามที่จะติดตั้งโมดูลตัวหนึ่งที่ชื่อ mod_python แต่ก็ไม่สามารถทำได้สักที

 

 

Mod_python คือ โมดูลที่เอาไว้สำหรับรวมต้วแปลภาษาไพธอนเข้ากับเว็บเซอร์วิส (ในที่นี้คือ Apache) ซึ่งจะทำให้เราสามารถเขียนเว็บ CGI ด้วยภาษาไพธอนได้นั่นเอง

 

หลังจากที่ได้พยายามนานมากหมดไปครึ่งวัน ทั้ง search หาในอินเตอร์เนต ก็พบว่าฝรั่งเค้าก็มีปัญหาเหมือนๆกันกับเรา ปัญหาที่เจอก็คือหลังจากติดตั้งโมดู mod_python นั้น เราไม่พบไฟล์ mod_python.so ซึ่งจริงๆไฟล์นี้น่าจะไปอยู่ใน folder C:\AppServ\Apache2.2\modules ซึ่งในตอนติดตั้งมันก็ถามเราอยู่นะ ว่า folder ที่เราติดตั้ง Apache อยู่ตรงไหน แต่ไหงพอเลือกแล้ว พี่แก error ขึ้นมาเฉยๆ เซ็งเลย

 mod_python

mod_python_error 

สุดท้ายก็มาจบที่วิธีที่ง่ายมากๆ (เวงกรรม แล้ว mod_python ใครคนคิดขึ้นมาเนี่ย!!!) แค่ติดตั้ง python เสร็จ แล้วเข้าไป config ที่ไฟล์ httpd.conf แค่เนี้ย

AddHandler cgi-script .cgi .py .pl

ScriptAlias /cgi-bin/ "c:/apache/cgi-bin/"

แล้วก็เขียน code ด้วย python ขึ้นมาแล้วไปวางไว้ที่ C:\AppServ\www\cgi-bin (เค้าบอกว่าด้วยเหตุผล security)

 

#!C:\Python24\python.exe -u

import cgi
import cgitb; cgitb.enable()  # for troubleshooting

print "Content-type: text/html"
print

print """
<html>

<head><title>Sample CGI Script</title></head>

<body>

  <h3> Sample CGI Script </h3>
"""

form = cgi.FieldStorage()
message = form.getvalue("message", "(no message)")

print """

  <p>Previous message: %s</p>

  <p>form

  <form method="post" action="index.cgi">
    <p>message: <input type="text" name="message"/></p>
  </form>

</body>

</html>
""" % message

 

แล้วก็ทดลอง run ดู

python web programming test

เอาหล่ะ ก็พอได้แนวคิดแล้ว ต่อไปก็ลองๆประยุกต์เอาโค๊ดที่เราเคยเขียนด้วยภาษาอื่น มาแปลงเป็น python ดู น่าจะช่วยให้เกิดความเข้าใจยิ่งขึ้นไปอีก สู้ๆๆ เ��ี๋ยวก็เขียนเป็นแหละ อย่าไปกลัวๆ

เพิ่มเติมอีกนิดครับ

หากเพื่อนๆต้องการที่จะ config apache เพื่อให้เราสามารถที่จะบันทึกไฟล์ python cgi script อยู่นอก cgi-bin ให้ทำการปรับแต่งไฟล์ httpd.conf ดังนี้

  • ให้ทำการมองหา #AddHandler cgi-script .cgi แล้วเอา comment ออก คือเครื่อง “#” ออกนั่นเอง
  • แล้วทำการปรับแต่ง SSL เพื่อให้สามารถวาง directory โค๊ดของเราที่ก็ได้ใน www directory โดยมองหาบรรทัดนี้ #AddType text/html .shtml และบรรทัดนี้ #AddOutputFilter INCLUDES .shtml โดยให้เราเอาเครื่องหมาย comment ออก “#”
  • ทำการบันทึกไฟล์ httpd.conf แล้ว restart apache
  • ทดลอง เขียนไฟล์ cgi แล้ว save แล้วลองทดสอบที่ browser ดูครับ

#!C:\Python24\python.exe
print "Content-Type: text/html\n\n"
print "Hello, world!"

python cgi script

ถ้าปรากฏแต่คำว่า Hello, World! แสดงว่าสำเร็จแล้วครับ

 

“….The first step is always the hardest
การเริ่มต้นทำสิ่งใดสิ่งที่ยากที่สุดก็คือตอนเริ่มต้นทำ…….”

อ่านเพิ่มเติม...

11.10.09

Pyhton Programming : งานเข้าแล้วครับพี่น้อง

ต้องบอกว่างานเข้าจริงๆ เพราะว่าต้องหันมาจับ Python จริงๆซะแล้ว ด้วยสถานการณ์บังคับ หลังจากที่จดๆจ้องๆ กันมานาน เห็นเค้าคุยกันหนักคุยกันหนา ถึงความสามารถของเจ้า Python ไม่ว่าจะเป็น บริษัทยักษ์ใหญ่อย่าง Google ใช้ Pyhon เป็นตัวหลักในการค้นหาข้อมูล หรือจะเป็นองค์กร NASA ใช้ในการจัดการ Model,Integration และระบบ Transformation ในงาน CAD/PDM/CAE

โดยเจ้าตัวไพธอนนี้ ถูกนำไปใช้ในงานหลากหลายประเภทมาก ไม่ว่าจะเป็นงานทางด้าน Web และ Internet Development, Database Access, Desktop GUI, Scientific และNumeric computation, Network programming, Game และ 3D Graphics Rendering ยกตัวอย่างมาเพียงแค่นี้ ก็พอที่จะทำให้เราอดใจไว้ไม่ไหวแล้ว ที่จะต้องศึกษาตัวนี้ให้ได้ และประการสำคัญเลย ที่บริษัทใช้ python เป็นภาษาหลักในการทดสอบฮาร์ดดิสค์ไดร์ฟ (ใครจะเข้ามาทำงานที่นี่ รู้แล้วใช่ไหม ต้องเก่งอะไรถึงจะได้งานบริษัทนี้ รู้แล้วใช่ไหม );

เมื่อพูดถึงหนังสือภาษาไทยที่เขียนเรื่องไพธอน ก็เห็นจะมีอยู่เล่มเดียวที่วางขายบนแผงหนังสือ ซึ่งจริงๆผมซื้อหนังสือมาไว้แล้วหล่ะ ชื่อหนังสือ “การเขียนโปรแกรมภาษาไพธอนด้วยตนเอง” ซึ่งมีเนื้อหาย่อๆ ประมาณนี้

การเขียนโปรแกรมภาษาไพธอนด้วยตนเอง

“… ภาษาไพธอนเป็นภาษาที่พัฒนาในกลุ่ม Open Source มีข้อเด่น คือ สนับสนุนแนวคิดแบบออปเจกต์โอเรียนเทดและประกอบด้วยมอดูลสำหรับงานด้านต่าง ๆ เช่น Regular Expression, Multi-Threading, Network, XML, การสื่อสารระหว่างไมโครคอนโทรลเลอร์ผ่านอนุกรมและพอร์ตขนาน อื่น ๆ เว็บไซด์ Google ถูกพัฒนาขึ้นจากภาษาไพธอน, บริษัท ILM (Image Light and Magic) ใช้ภาษาไพธอนสร้างเทคนิคคอมพิวเตอร์กราฟิกสำหรับภาพยนตร์แอนนิเมชัน, ระบบปฏิบัติการ Redhat ใช้ภาษาไพธอนเป็นInstaller (ตัวติดตั้งระบบปฏิบัติการ), นาซา (NASA) ใช้ภาษาไพธอนสำหรับโครงการสำรวจอวกาศ, Zope ใช้ไพธอนสร้าง CMS (Content Management System), Bit Torrent เกิดขึ้นจากภาษาไพธอน หนังสือเล่มนี้เป็นหนังสือการเขียนโปรแกรมภาษาไพธอนเล่มแรกของชาวไทย (ฉบับภาษาไทย) เนื้อหาภายในได้วางรากฐานที่เป็นประโยชน์ซึ่งทำให้เข้าใจองค์ความรู้ที่ เกี่ยวข้องกับการเขียนโปรแกรมด้วยภาษาไพธอน ซึ่งอธิบายด้วยภาพประกอบการยกตัวอย่างคำอธิบายมากกว่า 400 ตัวอย่าง …”   

หนังสือเล่มนี้ยังดูไม่จบครับ ที่ดูไม่จบก็เพราะมันต้อดูไปด้วย แล้วทำไปด้วย ไม่ค่อยได้จับจริงๆจังๆ ก็เลยดูไม่จบสักที คราวนี้คงได้ดูจนจบแน่ๆครับ นอกจากนี้ยังมีไฟล์ e-book ที่เป็นไฟล์ pdf ที่อีกไฟล์หนึ่งที่น่าสนใจ “ภาษาโปรแกรมมิ่งไพธอน” (คลิกอ่านที่นี่) ซึ่งเป็นมหาวิทยาลัยนเรศว�� ครับก็เป็นอีกทางเลือกหนึ่งไว้ให้เพื่อนศึกษากันครับ

ยังมีอีกเล่มนึงที่ผมคิดว่าน่าสนใจมากๆ ได้อ่านคร่าวๆแล้ว เค้าเขียนอธิบายไม่ยาก ถึงแม้จะเป็น text book ก็ตาม นั่นก็คือ “Beginning Python: From Novice to Professional” ผมชอบเล่มนี้ตรงที่เค้าเขียนด้วยภาษาที่ค่อนข้างทำความเข้าใจได้ไม่ยาก สมกับชื่อแล้วมันเหมาะกับมือใหม่จริงๆ  เพื่อนๆน่าจะหามาเก็บไว้นะ พอดีผมเห็นว่า google book เค้าทำ review เล่มนี้เอาไว้พอดี เพื่อนๆสามารถอ่านดูบางบท เพื่อประกอบการตัดสินใจซื้อเล่มนี้ก่อน

เอาเป็นว่าช่วงนี้ ผมคงจะพยายามเขียนเรื่องไพธอนให้มากขึ้น พูดถึงให้บ่อยขึ้น เพื่อที่ตัวเองจะได้สนใจมากขึ้น เพื่อที่จะได้สำเร็จตามที่วัตถุประสงค์ที่ตั้งไว้

อ่านเพิ่มเติม...
 

เกี่ยวกับฉัน(ไหมเนี้ย)

รายการบล๊อกอื่นๆ

  • Solved: error: 'TKD2' was not declared in this scope, LIFA_Base compile error - วันนี้ จะมาเล่าถึงปัญหาที่เจอในการเบิร์นโค๊ด LIFA_Base ที่เราใช้ในการทำให้ Arduino ของเราสามารถรับคำสั่งจาก LabVIEW ได้ ปัญหานี้ เริ่มเกิดขึ้นตอนที่ Ard...
  • Type-Fu : Typing practice game online - หากใครที่สนใจ หรือจะต้องทำงานเกี่ยวกับคอมพิวเตอร์ หนึ่งในความจำเป็นก็คือ จะต้องเรียนรู้ที่พิมพ์สัมผัสได้ เพราะการที่พิมพ์สัมผ้สได้ มันได้ประโยชน์หลายๆ อย...

Blog อื่นๆ ที่น่าติดตาม

เหล่าบรรดา Blogger