หลังจากเมื่อวานผมโพสเซคชันเช้าไปเรียบร้อยหมดแล้ว ก็มาต่อเซคชันตอนบ่ายซึ่งมีไฮไลท์ของงานอยู่ด้วยกันเลยครับ

คนนี้เขามาพูดเรื่องของการทำ “Ruby hosting” จากประสบการณ์จริงของเขาเองครับ

การทำ Ruby Hosting จะมี Framework ที่เราใช้บ่อยๆ อยู่ ดังรายชื่อข้างล่างนี้ครับ (ผมจดไม่ทัน จำได้มาแค่อันเดียว)

  • Ruby on Rails

จากนั้น เขามาพูดถึงเรื่องตัวซอฟต์แวร์ที่เราจะใช้ในการทำเซิร์ฟเวอร์กัน

  • ตัวแรกเลยคือ WEBick
    • Ease of use ใช้ง่ายมากๆ
    • Single Thread แต่ข้อเสียคือมันเป็น Thread เดี่ยว ทำให้ไม่สามารถรองรับ Concurrent Request มากๆ ได้
  • ตัวที่สองคือ Mongrel
    • Ease of use
    • Fast
    • Comsume huge memory แต่กินเมมโมรี่เยอะ
    • มีเรื่องของ Mongrel Cluster เข้ามา
    • Single Thread ทำให้อาจจะรอยาวนานจน Client request timeout
  • ตัวสุดท้ายที่เขาเอามาใช้งานจริงเลยก็คือ FastCGI (fcgi)
    • Difficult to setup ติดตั้งยากโคตรๆ จากประสบการณ์ส่วนตัวของตัวเองเลย
    • Faster than WEBrick, May be slower than Mongrel
    • Bind up with some HTTP Server ต้องใช้ร่วมกับ HTTP Server ตัวอื่น เช่น Apache, LightHTTPD
    • Well memory management มีการจัดการเมมโมรี่ที่ดี ถ้ามี request มาเยอะ จะทำการ fork process ขึ้นมาอีกอันหนึ่ง
    • เท่าที่ทดสอบจะได้ประมาณ 100 Concurrent Request

ถัดมาเค้ามาพูดถึงข้อจำกัดของเซิร์ฟเวอร์ที่เราจะทำ

  • RAM
  • Ports ถ้าเป็น Mongrel จะต้องการ Port เยอะมาก
  • CP integration แทบยังไม่มี Control Panel จัดการ Hosting เจ้าไหนที่รองรับ Ruby สมบูรณ์แบบเลย
  • Deployment process กระบวนการ Deploy

ต่อมาเขาก็บอกว่าเขาเลือก FastCGI เพราะว่า

  • Setup and Run ยากตอนติดตั้งแค่ครั้งเดียว แล้วก็จบ
  • No port management ไม่ต้องจัดการเรื่องของพอร์ต
  • Automatically fork processes when many concurrent coming ถ้ามี request มาเยอะ จะทำการ fork process ขึ้นมาอีกอันหนึ่ง
  • Give back RAM after process’s timeout ถ้า process timeout จะคืนเมมโมรี่กลับมาให้ หรือจัดการเมมโมรี่ดีนั่นเอง

หลังจากนั้นก็พูดถึงเรื่องสิ่งที่เราต้องมีสำหรับ Ruby Hosting

  • Deplyment Tools
    • Capistano ไม่รู้จักครับตัวนี้
  • Control Panel
    • Plesk
    • Direct Admin
  • You!! และตัวคุณเอง

และสุดท้ายสรุปว่า No best solution for all task ยิ่ง Deploy ง่ายเท่าไหร่ ยิ่งดีเท่านั้น ให้ Select one that suit for you work

ก่อนจบ เขาได้บอกว่าเขามีโปรเจคที่ชื่อว่า Redgem ซึ่งเป็น Control panel for ruby hosting ซึ่งต้องการความช่วยเหลือในด้านการพัฒนา และมีลิขสิทธิ์เป็น GPL2

Demo

  • Debian
  • VHCS
  • เขียน Deploy เอง
  • Deploy ผ่าน FTP แล้วใช้ Web Restart Process
  • ถ้ามี request มาใหม่ Process จะขึ้นมาเอง
  • ยกตัวอย่างเว็บที่ใช้งานจริงคือ www.guitarlmw.com

บรรยากาศผู้เข้ามาฟังเซคชันนี้ครับ

เซคชันต่อไปคือเรื่องของ “Localisation” สังเกตว่าไม่ใช่ตัว z เพราะว่าเป็นการสะกดแบบ British ครับ

(หลังๆ ผมจะไม่ค่อยพิมพ์คำอธิบายเพิ่มเติมจาก Short note สักเท่าไหร่แล้วนะครับ เพราะมันยาวมาก)

  • มีอีกชื่อคือ L10N
  • มันก็คือ Translation หรือการแปลนั่นเอง
  • ใช้กันใน Open Source Project โดยมีลักษณะดังนี้
    • Contribution from people around the world
    • Distributed to people around the world
    • Not all people can use English well
    • Give them more accessibility to softwares and technology
  • Example
    • GNOME
    • KDE
  • แปลอะไรบ้าง What?
    • Application
      • User Interfaes
      • Error Messages
      • Info Messages
    • Documentation
      • Manuals
      • Help Documents
  • ทำได้อย่างไร How?
    • Translate
    • Contribute to upstream
  • Roles of Contributors
    • As translators
      • Good command in both languages
      • Familiar with the program that is being translated
      • Familiar with computer jargons (ศัพท์เฉพาะทางคอมพิวเตอร์)
      • Have a good skill in writing
    • As Co-ordinator
      • Translator’s features
      • High responsibility
      • Can co-ordinate between translators as well as people from upstream
      • Good communication skills
  • Why is it not a piece of cake
    • Numerous string entries
    • A huge number of packages
    • Low number of translators
    • Need some specific knowledge in order to effectively translate programs
    • Need higher-than-average communication skills, especially in writing, to make the translated strings understandable.
  • HOWTO
    • Choose program
    • Tell co-ordinator
    • Download message’s template (*.pot file)
    • Translate and save as *.po file
    • When finished send file to co-ordinator
    • Co-ordinator will check translation and if things go well, the file will be uploaded to upstream
  • Tools
    • SVN/CVS
    • KBabel
      • Tool that is used to edit and mange gettext PO files
  • Resource
    • Glossary for OSS
      • http://www.opentle.org/ossglossary/index.php
    • ศัพท์บัญญัติราชบัณฑิตยสถาน
      • http://rirs3.royin.go.th
  • .po เป็นไฟล์ gettext ของ GNOME

บรรยากาศของผู้เข้าร่วมฟังเซคชันนี้

ขอข้ามเซคชันเด็ดไปก่อนแล้วกันนะครับ มาดูเซคชันต่อไปก่อนนั่นคือเรื่องของ “Agile Process” ซึ่งเซคชันนี้ผมคงอธิบายอะไรไม่ได้มาก เพราะไม่ใช่สายซอฟต์แวร์ แต่จะเอา Short note มาให้ดูกันนะครับ

  • คนพูดชื่อว่า Benjamin Scherrey เป็น Chief Systems Architecture
  • SW Development
    • Art or Science?
    • Art of Managing Complexity
  • Unfulfilled Promises
  • False Belief that we know more about a project than we possibly can.
  • Hiding from Risk != Managing Risk
  • What is
    • Individual and interactions over process
    • Working software over comprehensive documentation
    • Customer collaboration
    • Responding to change over following a plan
    • Agile is a Direction
  • Agile Comes from best practices
    • Evolutionary Delivery vs. All at Once นั่นคือ Spiral model
    • User Stories – Key! นั่นคือ Xtreme Programming
    • Short, Focused, Meetings of Cross Functional Teams นั่นคือ SCRUM
  • Agile Unique?
    • Complete Value Driven
    • Mayo-Smith Pyramid
      • Focus on immediate, practical functionality maximizes value of each increment while reducing risk
      • Scope flexible, budget, schedule under control.
    • Time Boxed Iteration
      • Typically 2 weeks, no more than a month
      • Every iteration ends with a demo.
      • Short Iterations allows for frequent directional corrections
      • Reduced Cycle time is Major competitive advantage
    • Test Driven Development
      • Unit Testing
      • Integrated in the build environment
      • Continuous Integration
  • Always ready to ship. Allows you to embrace change!
    • Automated Testing
    • Planning & Estimating with Story point
      • Each building is a task who complexity
      • Hard to get good numbers
      • Perspective may radically impact result
      • Humans just not good at this
      • Humans good at making relative judgments
      • Close enough
      • Velocity & Reolease Planning
  • Velocity is the average number of story points achieved over the last several iterations.
  • A Release is a set of User Stories (Features) that must be present in order to be worth shipping.
  • Velocity allows you to estimate your release date while still being responsive to changing requirements by trading out User Stories.
    • Planning Poker
      • Encourages Full Team Participation
      • Builds Rapid Consensus
      • Enjoyable
  • Best Practices
    • Use an Agile Coach as a full team member, not process enforcer
    • Automate Everything!
    • Have Small Cross-Functional Teams that work side by side
  • Challenges
    • Keeping User Stories Small
    • Exit Criteria for User Stories
    • Avoiding Over-specification
    • Distributed Teams Incur Additional Overhead
    • Some Projects (medical devices, flight systems) need more formal processes than Agile reasonably supports
  • Q/A
    • How do you charges?
      • me by user stories but another not.
    • What do you use?
      • SCRUM when short time

รู้สึกว่าจะยาวมากแล้วแฮะ ขอยกยอดไปต่อ Part 3 เลยแล้วกันครับ

รายชื่อ Part ทั้งหมดของ BarCamp Bangkok Winter 2008

รายงาน The First BarCamp Bangkok Winter 2008 Part 1
รายงาน The First BarCamp Bangkok Winter 2008 Part 3
รายงาน The First BarCamp Bangkok Winter 2008 Part Special