โกวิโท

Programming

CodeAndroid

by Kowit on พ.ย..29, 2009, under Android, Programming

Entry แรกหลังจากกู้ Server กลับมาได้จากอาการ “โคอาล่าเป็นพิษ”

หลังจากไป meeting ที่ SIS  มาได้ข้อสรุบว่า HTC ต้องการให้เหล่า Developer สร้าง App สำหรับคนไทยขึ้นมา เพื่อขยายฐานผู้ใช้ Android ในเมืองไทย ส่งผลต่อเนื่องถึงยอดขายของ HTC ในทางอ้อม

หากมองในตอนนี้เห็นได้ชัดว่า  Android ไม่ได้เปรี้ยงปร้างเท่าที่ควรจะเป็น ส่วนหนึ่งคงเป็นเพราะมันไม่หล่อเหมือน  iPhone อันนี้เรื่องจริงต้องยอมรับ แต่ในระยะยาวก็ไม่แน่ เพราะ Android Open source และยังมี Google หนุนหลังเต็มที่

สำหรับตัวผมแล้วติดว่า โทรศัพท์ที่ใช้ Android ส่วนใหญ่ราคาไกล้เคียงกับ iPhone แต่ความสามารถนั้นสู้ไม่ได้ อย่างน้อยก็มัลติทัช แล้วก็เอฟเฟกต์วิ้งๆทั้งหลายแหล่ จะมีดีกว่าก็เพียงแต่มันไม่ยุ่งยาก จุกจิกกวนใจเหมือน iPhone ทำอะไรนิดอะไรหน่อยก็หมดประกัน ถ้า HTC Magic ราคาลงมาสัก 5000 อย่างนี้จะเลือกง่ายขึ้นเยอะ

ด้าน Developer อันนี้ชัดเชน Android มาพร้อม Java ของดีที่ผมไม่เคยชอบ 8-( แต่ยังพอมีทาง ตอนนี้ผมมองไปที่ android-scripting หวังว่ามันจะใช้ Python ได้เข้าท่า ตอนนี้ขอเวลาไปลองก่อน ได้ผลยังไงจะมารายงาน

1 Comment :, , , , more...

ติดตั้ง Postgres ลงบน Ubuntu 9.04 อย่างง่ายและรวดเร็ว

by Kowit on ต.ค..17, 2009, under Programming

ผมมีปัญหากับการติดตั้ง postgres มาตลอด เมื่อเปรียบเทียบกับ mysql แล้วพบว่ายุ่งยากมาก ลองใช้วิธีต่อไปนี้ทำให้ติดตั้ง postgres ภายในสามนาที!!

sudo apt-get install postgresql pgadmin3 python-psycopg2

หลังจากรอขั้นตอนการติดตั้งจนเสร็จเรียบร้อยแล้วให้ตั้งรหัสผ่านให้กับ user postgres เพื่อไปติดตั้งส่วนอื่นๆต่อไปดังนี้

sudo -u postgres psql

postgres=# \password postgres
postgres=# \q

ได้รหัสผ่านของ user postgres แล้ว!!
อย่าลืมแก้ไฟล์ sudo nano /etc/postgresql/8.3/main/pg_hba.conf ตรงบรรทัด

# "local" is for Unix domain socket connections only
local   all         all                               ident sameuser
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5

เป็น

# "local" is for Unix domain socket connections only
local   all         all                               md5
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5

เมื่อได้รหัสผ่านก็สามารถ login ผ่าน pgadmin ได้แล้ว เร็วใหม?

Leave a Comment :, more...

The Django template language

by Kowit on ก.ค..31, 2009, under Django, Programming, Python

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

เอกสารนี้อธิบายรายละเอียดเกี่ยวกับไวยากรณ์ของ 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…)

Leave a Comment :, , , more...

จำนวนเฉพาะกับตะแกรงเอราทอสเทนีส

by Kowit on ก.ค..30, 2009, under Programming, Python

ไปอ่านเจอมา เขียนไว้กันลืม

def primes(n):
"""
primes(n) --> primes

Return list of primes from 2 up to but not including n.
Uses Sieve of Erasth.
"""

    if n < 2:
        return []

    nums = range(2,int(n))
    p = []

    while nums:
        new_prime = nums[0]
        p.append(new_prime)

        for i in nums[1:]:
            if i % new_prime == 0:
                nums.remove(i)
        nums.remove(nums[0])

    return p
Leave a Comment more...

Django 1.1 ออกแล้ว

by Kowit on ก.ค..30, 2009, under Django, Programming

หลังจากติดโรคเลื่อน ในที่สุด 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 หลังจากที่เพิ่มภาษาไทยเพียงสี่ชั่วโมง ฉิวเฉียด หวาดเสียวกันจนหยดสุดท้ายจริงๆ

ยังไงก็ขอให้สนุกกับการพัฒนาโปรแกรมนะครับ ;-)

Leave a Comment :, , more...

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

by Kowit on ก.ค..24, 2009, under Django

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

ตอนนี้จะไม่มีการแก้ไขข้อความอะไรเพิ่มตาม หากต้องการจะแปล นี่เป็นโอกาสอันดีแล้วครับ ลุยกันเลย

หากต้องการจะลอง สามารถ DOwnload ได้ที่นี่

1 Comment :, more...

RegEx validate email for python

by Kowit on ก.ค..08, 2009, under Python

เขียนเว็บก็ที่ก็ต้องมานั่งเขียน validate email address ทุกที รำคาญมาก จดไว้ในนี้เสีย จะได้ไม่ต้องเสียเวลาไปค้นอีก

อย่างแรกคือกฎ วุ่นวายสับสนมากมาย ไปอ่านเพิ่มเติมกันเอาเองที่นี่ IETF แต่ถ้าเอาคร่าวๆก็ตามนี้

  • Alpha Characters a-z and A-Z (ASCII 97-122 and 65-90)
  • Numeric Characters (ASCII 48-57)
  • Exclamation Point ‘!’ (ASCII 33)
  • Number Sign ‘#’ (ASCII 35)
  • Dollar Sign ‘$’ (ASCII 36)
  • Percent Sign ‘%’ (ASCII 37)
  • Ampersand ‘&’ (ASCII 38)
  • Single Quote ”’ (ASCII 39)
  • Asterisk ‘*’ (ASCII 42)
  • Plus Sign ‘+’ (ASCII 43)
  • Minus Sign/Dash/Hyphen ‘-’ (ASCII 45)
  • Forward Slash ‘/’ (ASCII 47)
  • Equals Sign ‘=’ (ASCII 61)
  • Question Mark ‘?’ (ASCII 63)
  • Caret ‘^’ (ASCII 94)
  • Underscore ‘_’ (ASCII 95)
  • Left Opening Brace ‘{‘ (ASCII 123)
  • Right Opening Brace ‘}’ (ASCII 125)
  • Tilde ‘~’ (ASCII 126)

หลังจากนั้นก็ได้ Pattern ตามนี้

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

ปล. เพิ่งรู้ว่าตัวอักษรประหลาดๆหลายตัวใช้ใน email Address ได้ด้วย

2 Comments :, more...

บรรทัดเดียวก็พอ #1 factorial

by Kowit on ก.ค..08, 2009, under Programming, Python

def fact(x): return (1 if x<1 else x * fact(x-1))
2 Comments :, more...

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

by Kowit on พ.ค..27, 2009, under Programming

เพราะคนดีย่อมแก้ไข คนจัญไร นั้นแก้ตัว ผมจึงสารภาพตามตรงว่าหลังจากบาร์แคมป์ บางกอก ครั้งที่ 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 แล้วจะมาบอก)

แต่ตอนนี้ บอลกำลังจะมา ต่อพรุ่งนี้แล้วกันนะครับ ;-)

Leave a Comment :, , , , more...

How to fix Bad settings.LANGUAGE_CODE in Satchmo

by Kowit on พ.ค..20, 2009, under CMS, Programming

This thread describes the issue
The following command will generate the locale on Unix systems.

sudo locale-gen en_US

Leave a Comment :, , more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!