Sunday, June 25, 2006

GotoKnow version ใหม่ implement ด้วย rails

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

วันนี้พึ่งรู้ว่าเปลี่ยนไปเป็น implement ด้วย Rails แล้ว
(ของเดิมใช้ python)
source code อยู่ที่ KnowledgeVolution.org
เลยถือโอกาสเข้าไป scan ดู code หน่อย
(อาจารย์ธวัชชัย ที่เป็นคนเขียน เขาเก่งอยู่ เพื่อจะได้ trick อะไรติดมือกลับมา)

  • plugin ที่ใช้ เห็นมี Exception Notifier Plugin
    ใช้สำหรับส่ง mail เตือน กรณีที่เกิด error ขึ้นใน app
  • deployment เห็นว่าใช้ capistrano ด้วย
  • ส่วน Localization ใช้ GetText ทำ
  • มี patch เรื่องเกี่่ยวกับ Date ใน http://knowledgevolution.org/browser/trunk/lib/overrides.rb
    ถ้าเราดูใน source file ของ ruby
    # === Doesn't depend on strftime
    #
    # This library doesn't use +strftime+. Especially #rfc2822 doesn't depend
    # on +strftime+ because:
    #
    # * %a and %b are locale sensitive
    #
    # Since they are locale sensitive, they may be replaced to
    # invalid weekday/month name in some locales.

    เห็นใน code ใช้วิธีแปะเดือน กับวัน จาก Constants Array ใน Date ทับลงไป
    โดย string ชุดนี้ถูก replace จาก application.rb (controller) บรรทัดที่ 33 ซึ่งใช้ gettext แปลงตาม locale อีกที
  • มีการใช้ rmagick ช่วย generate background image ตาม theme ด้วย
    generate_images.rb
  • ใช้ Rmagick generate รูปที่ใช้ถามเวลา comment เพื่อป้องกัน spam
    generate.rb
    โดย generate ไว้ตั้งแต่ต้นเลย เพื่อไม่ให้เสียเวลา generate ตอนที่ request วิ่งเข้ามา
  • changeset ล่าสุด เห็นมีการใช้ thread มา expire_fragment
  • ส่วนเรื่อง Testing เห็นมี unit test ที่ user model กับ mailer test
    (ผมก็เหมือนกัน ถ้า app มันตรงไปตรงมา บางที ก็ขี้เกียจ test
    แต่ก็พยายามหัดอยู่)

Note: source code เขาใช้ tab = 8 space ดูสะอาดตาดี

Related link from Roti

2 comments:

Mk said...

8 space นี้ล้นจอแน่นอนครับ

ถ้าโค้ดที่ซับซ้อนมากๆ ต้อง indent เยอะๆ อย่างเช่น html ที่ตารางซ้อนกันหลายๆ ชั้น บางทีผมเซ็ต 2 space เองนะ

polawat phetra said...

ปกติผมก็ใช้ 2 space
ยกเว้น java ที่ใช้ 4 space