Python
GAE Python SDK 1.2.3 มาพร้อม Django 1.0 อย่างเป็นทางการ
Submitted by chakrit on 20 June, 2009 - 05:34. tags:Google App Engine Python SDK ออกรุ่น 1.2.3 แล้วครับ และที่มาเขียนข่าวเรื่องนี้ก็เพราะว่ามีบรรทัดหนึ่งที่น่าสนใจจากหน้า Release Notes:
Last but not least, the 1.2.3 release is full of other new stuff as well! Stay tuned to the blog for more updates or check the release notes for exciting info on:
- Asynchronous urlfetch support
- Django 1.0 support
นั่นก็คือบรรทัดที่เขียนว่า Django 1.0 support ครับ จากการที่เสียเวลาโมแอปตัวเองให้ใช้ Django ได้อยู่นานก็เลยตามเข้าไปดูถึง Release Notes และใน Tracker Issue #872 ก็พบ คอมเม้นท์จากคุณ Guido Van Rossum เจ้าพ่อ Python มาเขียนไว้ครับ กดเข้าไปอ่านดูได้ แต่ตรงนี้ขอสรุปเป็นใจความสั้นๆ ให้ก็แล้วกัน:
Peaceengine เอนจิ้นสำหรับทำซิมมูเลชั่น 3 มิติ แบบเรียลไทม์
Submitted by peacedev on 19 April, 2009 - 12:03. tags:จุดมุ่งหมายหลักของ "Peaceengine" คือการสร้างเอนจิ้นสำหรับการทำซิมมูเลชั่น และ เรนเดอร์ ที่มีประสิทธิภาพ และ รองรับภาษาคอมพิวเตอร์ได้หลายภาษา ซึ่งในปัจจุบัน รองรับภาษา Python, Visual basic และ C #
ณ เวลานี้ ตัวเอนจิ้น กำลังอยู่ในชั้นเริ่มต้นในการพัฒนา ความสามารถ และ ศักยภาพของตัวเอนจิ้น ทั้งในระบบฟิสสิกส์ และ การเรนเดอร์จะค่อย ๆ ได้รับการปรับปรุง และ เพิ่มเติมในการพัฒนาชั้นถัดไป
สามารถดูตัวอย่างวีดีโอได้ที่นี่ youtube
ตัวอย่างโค้ด บนภาษา ไพธอน
from PeaceEngine import *
from math import *
import random,time
counter = 0
objcount = 0
def drop_object():
global counter, objcount
#e.peCreateObj(int(random.random()*0),0,0,10,random.random(),random.random(),random.random(),random.random()*360,random.random()*1,0.2,0.2 ) # objType = box , posx , posy , posz , rotx , roty , rotz , angle , sidex , sidey , sidez
e.peSetObjPos(0.1, 0.1, 10.25)
e.peSetObjRot(random.random(), random.random(), random.random(), random.random()*360)
e.peSetObjSize(random.random()*1,0.2,0.2)
e.peCreateObjEx (0)
counter = 0
objcount += 1
def stepsim(n):
for i in xrange(n):
e.peSimulationStep(0)
def MainLoop():
global counter
counter += 1
if counter==55:
drop_object()
if objcount == 2000:
e.peShutdown()
e = PeaceEngine()
e.InitPeaceEngine()
e.peInitPhysics()
e.peCreateGround()
drop_object()
#for i in range(10000):
while not (e.peIsShutdown()):
e.peBeginScene()
e.peDrawGround()
MainLoop()
e.peDrawObjs()
e.peRender()
stepsim(2)
e.peShutdown()
ดาวน์โหลดตัวเอนจิ้นและโค้ด ที่นี่
ที่มา: planet-source-code.com
Python เลือก Mercurial
Submitted by mk on 3 April, 2009 - 23:43. tags:สงครามศาสนาอีกสมรภูมิหนึ่งที่สู้กันดุเดือดคือโลกของ Version Control System (VCS หรือบางที่ก็เรียก Revision Control) โดยแนวโน้มของตลาดกำลังขยับจาก VCS แบบ client-server อย่าง CVS/SVN มาเป็น distributed VCS อย่าง Git, Bazaar (BZR) และ Mercurial (Hg)
ส่วนของโครงการ Python นั้นได้ประกาศออกมาแล้วว่าจะย้ายจาก SVN ไปเป็น Mercurial (Hg) โดย Guido van Rossum ผู้สร้าง Python เป็นคนเลือก (ตัวเลือกอีกอันคือ Bazaar) แต่ยังไม่ประกาศว่าจะย้ายเมื่อไร
Mercurial เขียนด้วย Python และถูกสร้างขึ้นมาใช้แทน BitKeeper สำหรับเคอร์เนลของลินุกซ์ (ซึ่งสุดท้ายแล้วแพ้ให้กับ Git ที่ Linus เป็นคนสร้างเอง) แต่โครงการใหญ่ๆ หลายอันก็ใช้ Hg เช่น Mozilla, OpenJDK, OpenSolaris และโครงการของซันแทบทั้งหมด
ส่วน Bazaar นั้นพัฒนาโดยบริษัท Canonical ผู้ทำ Ubuntu และใช้ในโครงการ Launchpad.net
สำหรับชุมชน Blognone ตัวไหนนิยมสุด วัดกันให้รู้ชัดๆ ด้วยโพล
ที่มา - Ars Technica
กูเกิลเตรียมพัฒนา Python ขนานใหญ่
Submitted by lew on 27 March, 2009 - 09:42. tags:แม้ว่าภาษา Python จะมีความดีงามหลายๆ อย่างโดยเฉพาะตัว syntax ที่เข้าใจได้ง่ายมาก แต่โครงสร้างของ Python เองนั้นยังคงมีปัญหาในแง่ของประสิทธิภาพ และการทำงานแบบขนานบนคอมพิวเตอร์ที่มีหลายซีพียูอยู่
งานนี้กูเกิลในฐานะคนใช้ Python ระดับ "ตัวพ่อ" คนหนึ่ง (Guido van Rossum คนสร้าง Python ก็ทำงานที่กูเกิล) ก็เปิดโครงการพัฒนา Python ในชื่อโครงการ unladen-shallow โดยมีเป้าหมายคือ
- สร้าง Python ที่เร็วกว่าเดิมอย่างน้อยๆ 5 เท่าตัว
- ความเร็วในการทำงานต้องมีเสถียรภาพดีขึ้น
- เข้ากันได้กับซอฟต์แวร์ที่ใช้ Python เดิม
- เข้ากันได้กับโมดูลเดิมของ Python
- โครงการเป็นการสร้าง branch เพื่อเตรียมรวมกลับเข้าโครงการหลักเท่านั้น ไม่ใช่การแยก Python
ความเข้ากันได้ของโครงการนี้จะเป็นความเข้ากันได้ในระดับซอร์ส นั้นคือโปรแกรมที่ต้องการใช้ Python รุ่นของกูเกิลนี้จะต้องคอมไพล์ใหม่ แต่ก็ไม่ใช่ปัญหาใหญ่นักสำหรับโลกโอเพนซอร์ส
ที่น่าสนใจคือโครงการนี้มีความหวังว่าจะขจัด Global Interpreter Lock (GIL) ที่เป็นปัญหาหลักที่ทำให้ภาษา Python ไม่สามารถทำงานได้เต็มประสิทธิภาพเมื่อใช้บนเครื่องหลายซีพียูมานาน และมีความพยายามแก้ปัญหานี้หลายต่อหลายครั้งแล้ว
ตัว Guido van Rossum เองเคยตั้งเงื่อนไขในการแก้ไขปัญหานี้ไว้ว่าการทำให้ Python รองรับ Multi-Core นั้นจะต้องไม่ไปลดประสิทธิภาพของซอฟต์แวร์ปรกติลง
ที่มา - ArsTechnica, unladen-shallow
IronPython 2.0 มาแล้ว
Submitted by plynoi on 24 December, 2008 - 20:22. tags:IronPython ซึ่งเป็นหัวหอกของภาษาไดนามิคบน .Net Framework ได้ออกเวอร์ชัน 2.0 มาแล้วครับ
สำหรับเวอร์ชัน 2.0 นี้ถือเป็นการเปลียนแปลงครั้งใหญ่ คือเปลี่ยนจากทำงานบน CLI ไปเป็นทำงานบน Dynamic Language Runtime (DLR) แทน ซึ่ง DLR นี้ถูกออกแบบมาสำหรับพัฒนาภาษาไดนามิคบน .Net โดยเฉพาะ
จุดเปลี่ยนแปลงอื่นๆ จาก 1.1.2 ก็เช่น ปรับปรุงให้เข้ากันได้กับ Python 2.5 (จากเดิม 2.4.4), แก้บั๊กกว่า 500 จุด, มีตัว Installer มาให้, รองรับการทำงานกับ Silverlight และปรับปรุงให้ทำงานได้เร็วขึ้นครับ
สำหรับเวอร์ชัน 2.0 นี้ต้องอาศัย .NET 2.0 SP1 ครับ
ดาวน์โหลด/ที่มา - CodePlex
Python 3.0
Submitted by mk on 4 December, 2008 - 17:05. tags:หลังจากพัฒนากันมาอย่างยาวนาน Python 3.0 หรือที่รู้จักกันในชื่อ Python 3000 ก็เสร็จสมบูรณ์แล้ว
Guido van Rossum ผู้สร้างภาษา Python บอกว่า Python 3.0 นี้จงใจพัฒนาให้ "เข้ากันไม่ได้" (incompatible) กับเวอร์ชันก่อน (2.6 และสาย 2.x) ด้วยเหตุผลด้านโครงสร้างของภาษา รายการเปลี่ยนแปลงแบบคร่าวๆ มีดังนี้
แนวโน้มในอนาคตของภาษาโปรแกรมแบบไดนามิก
Submitted by mk on 17 October, 2008 - 04:15. tags:InfoWorld มีสกู๊ปเกี่ยวกับอนาคตของภาษาโปรแกรมแบบไดนามิก ว่าจะไปในทิศทางใด จำนวน 10 ข้อ
- ภาษาจะมีลักษณะคล้ายกันมากขึ้น เพราะหยิบยืมฟีเจอร์ของภาษาอื่นๆ มาใช้
- เฟรมเวิร์คมีความสำคัญมากขึ้น ปัจจัยในการเลือกไม่ได้มีแต่ภาษาอย่างเดียวอีกต่อไป แต่มีเรื่องเฟรมเวิร์คเข้ามาเพิ่มด้วย
- เริ่มมีการระบุความเชี่ยวชาญเป็นชื่อแอพพลิเคชัน (เช่น WordPress, Drupal, Facebook) มากขึ้น แทนที่จะเป็นตัวภาษา แต่ถ้ามันเฉพาะทางเกินไป อาจอยู่ไม่ยืด
- ชุมชนผู้ใช้ภาษาโปรแกรมจะมีอิทธิพลเพิ่มขึ้น ตัวอย่างเช่น เมื่อ iPhone SDK เปิดตัว ก็มีคนสนใจ Cocoa/Obj-C เพิ่มขึ้นมาก
- เว็บแอพพลิเคชันและ cloud จะเป็นปัจจัยสำคัญที่ทำให้ภาษาไดนามิกรุ่ง เอาง่ายๆ ดู AppEngine/Python
- ประสิทธิภาพจะเป็นตัวเปลี่ยนเกม - สงครามเอนจินจาวาสคริปต์ระหว่าง TraceMonkey, V8, SquirrelFish Extreme จะทำให้ประสิทธิภาพของจาวาสคริปต์เพิ่มจนเราอาจเอา Perl ไปรันได้ (Larry Wall เขาว่าไว้)
- โปรแกรมมิ่งจะเปลี่ยนจากเดิมที่อิงคอมมานด์ไลน์ มาเป็นเว็บอย่างเดียวมากขึ้น เช่น การใส่ code snippet ส่วนเล็กๆ ลงใน WordPress หรือ Drupal
- การคอมไพล์ข้ามแพลตฟอร์ม เช่น Python เป็นไบต์โค้ดหรือ CLR และ GWT แปลงจาวาเป็นจาวาสคริปต์ จะช่วยขยายพรมแดนของภาษาไดนามิกออกไป
- ให้จับตาดูเครื่องมือโปรแกรมมิ่งแบบลากแล้ววาง อย่างเช่น Coghead หรือ Microsoft Popfly
- ตัวภาษาและแพลตฟอร์มต้องพัฒนาตัวเอง ให้รองรับสถาปัตยกรรมคอมพิวเตอร์แบบใหม่ๆ เช่น มัลติเธร็ด
ที่มา - InfoWorld
ทิศทางในอนาคตของ Django จากงาน DjangoCon
Submitted by mk on 11 September, 2008 - 16:57. tags:งาน DjangoCon ที่เพิ่งผ่านไป นอกจากเป็นการเปิดตัว Django 1.0 แล้ว ชุมชน Django ยังมาระดมสมองถึงทิศทางของ Django ในอนาคต โดยมีนักพัฒนาหลักทั้งสองคนคือ Adrian Holovaty และ Jacob Kaplan-Moss เป็นแกนนำ
- ฟีเจอร์ที่คนอยากให้มีมากคือการแก้ไขหรือลบวัตถุในฐานข้อมูลแบบทีละหลายๆ ตัว (ผมพยายามเขียนภาษาไทยแต่รู้สึกว่าเข้าใจยาก เอาเป็นว่ามันคือ batch editing of objects in the database)
- มีแนวโน้มสูงที่จะเปลี่ยนวิธีการออกรุ่น จากเดิมที่อิงตามฟีเจอร์ มาเป็นอิงตามกำหนดเวลา (เหมือนอย่าง GNOME หรือ Ubuntu)
- รวมเว็บไซต์ที่เกี่ยวข้องคือ DjangoPlugables, DjangoSnippets, DjangoPeople และ DjangoSearch เข้าด้วยกันเป็นเว็บเดียว
- debugging และ profiling
- เลิกสนับสนุน Python 2.3
- ปรับปรุงตัวอย่างในเอกสารให้มีมากขึ้น
- Denormalisation ใน ORM
- สนับสนุนการต่อเชื่อมกับฐานข้อมูลหลายอันในเวลาเดียวกัน
รายละเอียดเพิ่มเติมรวมทั้งลิงก์ไปยังแต่ละไอเดีย ดูได้ในที่มาครับ นอกจากนี้ เว็บไซต์ชุมชนผู้ใช้ Django ชาวไทย เปิดแล้ว!
ที่มา - Ars Technica
สิ้นสุดการรอคอย Django 1.0 ออกแล้ว!
Submitted by KnightBaron on 4 September, 2008 - 21:48. tags:หลังจากพัฒนากันมาเป็นเวลากว่า 3 ปี ในที่สุดวันนี้ก็มาถึง Django 1.0 ออกมาให้ได้ใช้งานกันแล้วครับ โดยเวอร์ชั่นนี้จัดเป็นการพัฒนาอย่างก้าวกระโดดนับตั้งแต่เวอร์ชั่น 0.96 Stable ซึ่งได้มีการ Commit ไปกว่า 4,000 ครั้ง แก้บั้กกว่า 2,000 จุด แก้ไขโค้ดโปรแกรมกว่า 350,000 บรรทัด และยังมีการเพิ่มเติมเอกสารประกอบการใช้งานใหม่อีกกว่า 40,000 บรรทัด
นอกเหนือจากประเด็นหลักอย่างเรื่องเสถียรภาพแล้ว หลายสิ่งหลายอย่างได้ถูกเพิ่มเติมและแก้ไขในเวอร์ชั่น 1.0 นี้ อาทิเช่น
- Re-factored admin application
- พัฒนาการจัดการตัวอักษร Unicode
- พัฒนาระบบ ORM
- escape ตัวแปร template อัตโนมัติ
- GeoDjango (สนับสนุน GIS)
- พื้นที่เก็บไฟล์แบบสลับสับเปลี่ยนได้
- สนับสนุน Jython
- Generic relations ใน form และ admin
- แบ่งแยกความแตกต่างระหว่าง INSERT และ UPDATE
- แยก CacheMiddleware
- Refactored django.contrib.comments
- เอาคุณสมบัติเก่าๆ ที่ล้าสมัยออก
เอาล่ะจะรอช้าอยู่ใย? ดาวน์โหลด Django 1.0 ไปทดลองใช้กันเถอะ! ว่าแต่ได้เวลาปาร์ตี้กันแล้วหรือยังครับ?
ที่มา - Django Weblog, Django 1.0 release notes
Reddit ประกาศโอเพนซอร์ส
Submitted by mk on 19 June, 2008 - 14:11. tags:Reddit เว็บไซต์ข่าวชื่อดังที่ให้ผู้อ่านเป็นคนส่งเรื่องและโหวตข่าว (ถึงจะโดน Digg กลบความดังไปเสียเยอะ) ได้ประกาศโอเพนซอร์สเอนจิน CMS ของตัวเองเมื่อวานนี้
ตัวโค้ดของ Reddit มีสัญญาอนุญาตเป็น Common Public Attribution License (CPAL) ซึ่งปรับแก้จาก Mozilla Public License เล็กน้อย โดยบอกว่าถ้านำ Reddit ไปใช้ในเว็บไซต์ที่เปิดให้คนทั่วไปเข้าชม ต้องประกาศว่าใช้โค้ดของ Reddit และเปิดเผยโค้ดส่วนที่แก้ไขจากเดิมด้วย
Reddit เขียนด้วย Python และใช้ฐานข้อมูล PostgreSQL ตัวโค้ดดาวน์โหลดได้จาก Trac ส่วนวิธีติดตั้งอ่านได้จาก RedditStartToFinish ถ้าใครหาโฮสต์ Python ได้ก็เปิดเว็บข่าวแบบ Digg หรือ Reddit ได้ทันที ถ้าหาไม่ได้มีสองทางเลือกคือ AppEngine หรือไม่ก็ติดต่อคุณ sugree
ที่มา - Reddit blog
Django บน Jython ใกล้ความจริง
Submitted by mk on 4 January, 2008 - 18:19. tags:โครงการ Jython (เขียน syntax ด้วยภาษาไพธอน แต่แปลงออกมาเป็น Bytecode ของจาวา) สามารถใช้เฟรมเวิร์กสำหรับพัฒนาเว็บแอพพลิเคชันอย่าง Django ได้แล้ว (สำหรับคนที่ไม่รู้จัก Python/Django เทียบได้กับ Ruby/Rails)
สำหรับตอนนี้ขั้นตอนยังยุ่งยากเล็กน้อย คือต้องใช้ทั้ง Jython และ Django เวอร์ชันใหม่ล่าสุดจาก SVN และลงแพตช์อีก 2 ตัว (คาดว่าในอนาคตแพตช์นี้จะเข้า Django) ปัจจุบันยังสนับสนุนแค่ PostgreSQL ส่วน MySQL เห็นว่ามี experimental backend แล้ว แต่ทั้งหมดนี้เป็นสัญญาณอันดีว่าอีกไม่นาน Django บน Jython จะใช้งานได้อย่างสมบูรณ์
ที่มา - บล็อกของ Jim Baker, Python Wiki
รุ่นที่สองของไพธอน 3000 alpha
Submitted by pruet on 9 December, 2007 - 06:07. tags:ความสามารถเด่น ๆ ในรุ่นนี้ก็คือการเปลี่ยนชนิดข้อมูลแบบ bytes ให้กลายเป็น Immutable แล้วเพิ่มชนิดข้อมูล bytearray ที่เก็บข้อมูลแบบ Mutable ขึ้นมา ถ้านึกภาพของ Immutable/Mutable ไม่ออก ก็ลองนึกถึงชนิดข้อมูลแบบ String กับ StringBuffer ในจาวาดู สรุปง่าย ๆ ก็คือ ข้อมูลแบบ Immutable หลังจากสร้างขึ้นมาแล้วจะไม่สามารถแก้ไขได้ (พูดง่าย ๆ ก็คือไม่มี Setter ให้ใช้) ซึ่งมีประโยชน์มากสำหรับการสร้างข้อมูลที่ถูกใช้จากหลาย ๆ Thread เพราะว่าไม่จำเป็นต้องทำ Thread Synchronization กับข้อมูลแบบก็ได้เนื่องจากข้อมูลมันเปลี่ยนไม่ได้อยู่แล้ว แต่ในขณะเดียวกับ ข้อมูลแบบ Immutable จะมี overhead สูงกว่าถ้าต้องทำการเปลี่ยนแปลง ในจาวาถึงแนะนำให้ใช้ StringBuffer ในการสร้าง ดัดแปลง หรือว่าแก้ไขข้อความ แล้วจึงเปลี่ยนเป็น String ตอนท้ายทีเดียว
ที่มา - Blog ของ BDFL
- pruet's blog
- Login or register to post comments
Python 3000 alpha 1 มาแล้ว
Submitted by lew on 1 September, 2007 - 23:48. tags:หลังการถกเถียงและเสนอความเห็นในประเด็นต่างๆ กันมายาวนาน Python 3000 ก็คลอดออกมาเป็นตัวเป็นตนแล้วเป็นครั้งแรก โดย Python 3000 จะไม่รับประกันความสามารถทำงานร่วมกับโค้ดเก่าๆ ที่เขียนขึ้นเพื่อ Python 2.X อีกต่อไป
ทาง Guido van Rossum นักพัฒนาที่สร้างภาษานี้ขึ้นได้ระบุถึงแผนงานว่ายังมีงานอีกมากที่ต้องทำหลังจากออก alpha 1 นี้ โดยเขาคาดการว่า Python 3000 รุ่นตัวจริงน่าจะคลอดออกมาในอีกหนึ่งปีข้างหน้า
สำหรับความสามารถใหม่ๆ สามารถอ่านได้ที่หน้า What's New in Python 3.0
ที่มา - Artima
MySQL + Python on Mac OS X
Submitted by pittaya on 22 June, 2007 - 10:34. tags:ปกติแล้ว python ที่ติดมากับ Mac OS X จะไม่มี module สำหรับติดต่อกับ MySQL database ทำให้เวลาที่ต้องการจะใช้งานผ่านทาง python ต้องติดตั้ง module MySQLdb เสียก่อน วิธีติดตั้งคือ
- ไปโหลด source module มาก่อนที่ http://sourceforge.net/projects/mysql-python/ อันที่โหลดมาเป็นเวอร์ชัน 1.2.2
- untar ออกมาจะได้ source อยู่ในไดเรกทอรีนึง
- ถ้าไม่มี mysql_config อยู่ใน PATH ก็แก้ไฟล์ setup_posix.py จากที่ว่า
mysql_config.path = "mysql_config"
แก้เป็น
mysql_config.path = "/path/to/your/mysql_config"
- สั่ง build ด้วยคำสั่ง
$ python setup.py build
- install module ด้วยคำสั่ง
$ python setup.py install
- เวลาเรียกใช้งานก็ import เข้ามาตามปกติ
Python 2.3.5 (#1, Jan 13 2006, 20:13:11)
[GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
Guido แถลงความคืบหน้า Python 3000
Submitted by lew on 20 June, 2007 - 10:39. tags:หลังจากประกาศถึงแนวคิดของ Python 3000 มานาน Guido van Rossum ก็ออกมาเขียนบล็อกล่าสุดถึงแผนงานล่าสุดของทาง Python 3000 ที่จะเป็นการยกเครื่องครั้งใหญ่ และแน่นอนแล้วว่าจะไม่มีการรองรับ Backward Compatible อีกต่อไป
Guido ระบุว่าใน Python 2.6 จะเริ่มมีส่วนที่เป็นการรองรับความสามารถในอนาคตมาให้ใช้งานกัน พร้อมกับโหมดคำเตือนสำหรับโปรแกรมที่จะไม่ทำงานใน Python 3000 และจะมีโปรแกรมแปลง Syntax มาให้ในภายหลังอีกทีหนึ่ง
สำหรับฟีเจอร์ใหม่ๆ ใน Python 3000 ก็เช่นการรองรับ Unicode เต็มรูปแบบ การยกเลิกฟังก์ชั่น xrange โดยเอาไปทับฟังก์ชั่น range แทน และการคำความสะอาดภาษาอีกหลายจุด เช่นการเปลี่ยนชื่อไลบรารีที่มีชื่อในแบบจาวาให้กลายเป็นเชื่อในแบบ PEP-8 ทั้งหมด เป็นต้น
งานนี้เตรียม convert ซอร์สกันได้เลยครับ
ที่มา - artima developer




