2008/Jan/09

         Ruby คืออะไร
  • เป็นภาษาคอมพิวเตอร์ที่มีลักษณะเป็นโปรแกรมแปลภาษา (interpreter) เหมือนกับ Perl, Python,Java
  • เป็นภาษา script object oriented เป็นภาษาที่มี Syntax ที่สั้น กระชับ ไม่ซับซ้อน
  • Ruby มักมีรูปแบบ Syntax คล้ายกับภาษา Perl และ Python โดยรวมข้อดีของ Perl และ Python ไว้ มักมีผู้บอกว่าสิ่งไหนที่มีใน Perl แต่ไม่มีใน Python หรือสิ่งไหนที่มีใน Python แต่ไม่มีใน Perl มักจะพบอยู่ในภาษา Ruby

    ที่มาของภาษา Ruby

  • Ruby ถูกคิดค้นและพัฒนาในประเทศ ญี่ปุ่น โดย Yukihiro Matsumoto
  • 1993, February 24: Yukihiro Matsumoto ("Matz") started to work on Ruby.
  • 1993, Summer: First "Hello, world!" program works.
  • 1995, December: First release 0.95.
  • 1996, December: 1.0 is released.
  • 1999: Supposedly overtakes Python in Japan.
  • 2000: The first official newsgroup.
  • 2000-2001: Several books and magazine articles published.
  • 2003, August 4: 1.8.0 is released.
  • 2005, December 24 : 1.8.4 is released

    Ruby On Rails (Rails or ROR) คืออะไร

  • เป็นโอเพนซอร์ส web application framework ที่พัฒนาด้วยภาษา Ruby
  • มีลักษณะของ Model-View-Controller(MVC) architecture
  • สนับสนุนให้แอพลิเคชั่นในโลกถูกพัฒนาด้วยโค้ดที่น้อยลงกว่าเฟรมเวิร์คอื่น และมี configuration น้อยที่สุด เพื่อความง่ายต่อการประยุกต์ใช้
  • มีหลักการของ "Don't Repeat Yourself" (DRY) คือ สิ่งไหนที่รู้แล้ว ก็จะไม่ทำซ้ำ
    • Don't Repeat Yourself หมายความว่า ถ้าคิดว่าถูกแล้วก็ไม่ควรทำซ้ำ เช่น ถ้ามองในโคดภาษา JAVA,C++ จะเห็น semicolons (;) ทุกๆที่ เพื่อบอกว่าจบบรรทัด แต่ Ruby บอกว่า ฉันรู้แล้วว่าจบบรรทัด เพราะผู้เขียนได้กดแป้น Enter เพื่อที่จะเริ่มบรรทัดใหม่ ดังนั้นมันจึงบันทึกการเคาะแป้นพิมพ์ ซึ่งใน Rails มีบางข้อตกลงที่เข้าใจระหว่างคุณและคอมพิวเตอร์
  • Rails เป็นอันดับหนึ่งของการเผยแพร่ ผ่าน RubyGems (เป็นตัวจัดการ package ในภาษา Ruby ที่จะดูในเรื่องของ รูปแบบของ packaging และมี Libraries ไว้ให้ใช้มากมาย

    ประวัติความเป็นมาของ ROR

  • Rails ถูกพัฒนาโดย David Heinemeier Hansson
  • version 1.0 13 ธันวาคม 2005
  • version 1.1 28 มีนาคม 2006

 

Web application framework คืออะไร

Framework เป็นโครงสร้างของโปรแกรม โปรแกรมเมอร์ส่วนใหญ่ ใช้เวลาส่วนมากของการพัฒนา web application ไปกับการเขียนโปรแกรมโดยทั่วไป มากกว่าฟังก์ชันพิเศษ ดังนั้นการนำชิ้นส่วนของ code เดิมกลับมาใช้ (Reusable) จึงได้รับความนิยม ในการสร้าง web application โดยตัว Component ที่นำกลับมาใช้ใหม่นี้ จะเรียกว่า "framework" Framework ที่ดีต้องง่ายในการเพิ่ม แก้ไข เปลี่ยนแปลง ในส่วนของ application

 

Rails framework

  • Form data validation (การตรวจสอบข้อมูลใน form)
  • Application template (การสร้าง template ด้วย CSS?)
  • Email sending and receiving (การจัดการ รับ-ส่ง email)
  • Date and time formatting and manipulation (รูปแบบของวัน – เวลา)
  • Session and cookie management (การจัดการ session , cookie )
  • สนับสนุนการทำงาน Web 2.0 ด้วย AJax

    MVC architecture


    mvc22.gif

     

    Model

    ใน object oriented การใช้เว็บ database-driven จะเป็นแบบ MVC ซึ่ง Model จะประกอบด้วย class ที่เชื่อมต่อกับ RDBMS ใน Ruby On Rails class model จะถูกจัดการผ่านทาง Active Record (เป็นตัวเข้าถึงข้อมูลในฐานข้อมูล) ซึ่งโปรแกรมเมอร์ทุกคนควร ต้องทำเป็น subclass คือ ActiveRecord?::Base class และโปรแกรมจะเข้าใจอัตโนมัติว่าจะใช้ตาราง RDBMS อันไหน และเรียกคอลัมภ์ต่างๆในตารางเอง

    ใน Model มีการติดต่อกับ Active Record เพื่อช่วยจัดการงานด้าน Database เช่น

  • ดูแลในเรื่องของการติดต่อสื่อสารระหว่าง Object และ Database โดยที่ผู้พัฒนาไม่ต้องยุ่งยากกับการใช้ SQL command
  • เป็นงานด้านการตรวจสอบความสัมพันธ์ของข้อมูล มีผลกับฐานข้อมูล
  • Handles validation(ตรวจสอบความถูกต้อง), association(ความสัมพันธ์ระหว่างฐานข้อมูล), transactions, and more…

 

View

  • เป็นส่วนที่ต้องแสดงผลผ่าน web browser
  • เขียนด้วยพื้นฐานของ HTML(.rhtml), แทรกด้วย script ของ ruby คล้าย PHP,JSP,ASP
  • การทำงานสัมพันธ์อยู่กับ controller
  • นำ component มาใช้ใหม่ได้ (Reusable)
  • สนับสนุน Ajax
  • View เป็นการแสดงผลทาง logic หรือ การทำอย่างไรให้ข้อมูลจาก Controller class ถูกแสดงผล วิธีการใน Rails จะใช้ Embedded Ruby (ไฟล์นามสกุล .rhtml) ซึ่งก็เป็นพื้นฐานจาก HTML และด้วยไวยากรณ์ (syntax) ที่คล้าย JSP นอกจากนี้ด้วยยังสนับสนุนการใช้ HTML และ XML
  • สำหรับ method ที่อยู่ใน class ของ controller หากต้องการที่จะแสดงผลแก่ผู้ใช้ จึงจำเป็นต้องเขียน code ย่อยขึ้นมา และเก็บในโฟลเดอร์ของ view นี้เอง โดยจะต้องตั้งชื่อไฟล์นี้ เป็นชื่อเดียวกันกับ method ใน controller ที่ต้องการให้มี output ในการแสดงผล เช่น
    • ใน controller mysite มีการกำหนด method ที่มีชื่อว่า index,home,contact เป็นต้น โดยทั้ง 3 method ต้องมีการแสดงผลต่างกัน ดังนั้น โปรแกรมเมอร์ต้องเขียนไฟล์ในการแสดงผลใน โฟลเดอร์ view 3 ไฟล์ ได้แก่ index.rhtml , home.rhtml , contact.rhtml เป็นต้น
    • นอกจากนี้ยังสามารถกำหนด stysheet และ template เพื่อให้งานเว็บแอพลิเคชั่นนั้นมีมาตรฐานเดียวกันทั้งหมด ในกรณี template จะสร้างไฟล์ ที่เป็นตัวกำหนด header, content, footer ไว้ที่โฟลเดอร์ layout ภายใต้โฟลเดอร์ view ซึ่งลักษณะการทำงานของไฟล์นี้ จะถูกเรียกใช้ในการแสดงผลทุกครั้ง เป็นต้น

 

Controller

  • เป็นส่วนที่ทำงานเป็นอันดับแรกเมื่อมีโปรแกรมถูกเรียก จาก Web browser
  • เป็นส่วนที่ติดต่อการทำงานระหว่างผู้ใช้และโปรแกรม
  • มีการติดต่อกับ Database(ฐานข้อมูล) ด้วย Model และแสดงผลข้อมูลผ่านทาง View
  • เป็นส่วนที่มีการประมวลผลหลัก ของโปรแกรม

 

การทำงานของ Ruby On Rails

ภาพรวมของการทำงาน


rails_work22.gif

 

  1. Client หรือผู้ใช้ร้องขอข้อมูลทาง Web site
  2. Web server รับการร้องขอในรูปแบบต่างๆ ผ่านทาง HTTP,RSS,ATOM หรือ SOAP
  3. Web server ส่งต่อไปยังไฟล์ที่ชื่อว่า dispatcher ที่อยู่ใน Rails ซึ่งเป็นไฟล์สำหรับโหลด Controller ให้ทำงาน
  4. ไฟล์ Dispatcher ทำงาน โดยจะโหลดตัว Controller ที่อยู่ใน Rails ขึ้นมา
  5. Controller เป็นส่วนแรกของการทำงานแบบ MVC ติดต่อกับ Model และ View หน้าที่คือการประมวลผลหลักของโปรแกรม ซึ่งการทำงานขึ้นอยู่กับสิ่งที่ผู้ใช้ร้องขอมา เช่น
    • ถ้าผู้ใช้ร้องขอ ข้อมูลใน Database
      • Controller จะติดต่อไปยัง Model
      • Model ก็จะมีตัว Active Record สำหรับจัดการทุกอย่างที่เกียวข้องกับ Database
      • สุดท้ายก็จะส่งข้อมูลที่ได้จาก Model กลับไปให้ Controller
      • Controller ส่งผลลัพธ์กลับไปยังผู้ใช้ผ่าน View
    • ถ้าผู้ใช้ ร้องขอข้อมูลในรูปแบบของ Webservice
      • Controller จะมีการทำงานโดยใช้ Action Web service
      • และส่งผลลัพธ์กลับไปยังผู้ใช้ผ่าน View
    • ถ้าเป็นในรูปแบบของ Mail
      • Controller จะใช้ Active mailler สำหรับจัดการ การรับ-ส่ง Email
      • Refresh ตัวมันเอง
  6. สุดท้ายข้อมูลต่่างๆ ที่ผ่านการประมวลผลใน Controller แล้ว จะถูกส่งมายังส่วนของ View
  7. View ส่งข้อมูลกลับมายัง Web browser เพื่อแสดงผลกับผู้ใช้งาน ซึ่งรูปแบบการแสดงผลก็ได้แก่ HTML,CSS,Javascript,Image,XML เป็นต้น

    Environment

    ไฟล์การ Config
    • database.yml
    • environment.rb
    • production, test, development mode

     

     

    โครงสร้างไดเรกทอรี
    • app/controllers/
    • app/helpers/
    • app/models/
    • app/views/
    • config/
    • lib/
    • public/
    • test/
    • components/
    • script/
    • vendor/

     

    การสนับสนุนต่างๆของ Ruby On Rails

    Database

  8. MySQL?
  9. PostgreSQL?
  10. SQLite
  11. SQL Server
  12. DB2
  13. Oracle

 

OS

  • Windows
  • Unix/Linux
  • Mac OS X

 

Web server


webserver22.gif

 

  • จากภาพเป็นการเปรียบเทียบ Web server ที่สามารถทำงานได้กับ ROR
  • การพัฒนา Web aplication ในขั้น Basic ขอแนะนำให้ใช้ WEBrick เนื่ิองจากเป็น Web server ที่มีมากับ rails อยู่แล้ว จึงง่ายมากสำหรับการ set up
  • การพัฒนา Web aplication ในขั้นสูงสามารถใช้ได้ทั้ง Apache และ Lighttpd แต่ว่าขอแนะนำให้ใช้ตัวหลัง เนื่องจากมีประสิทธิภาพ รองรับขนาดของงานได้มากกว่า จึงมีประสิทธิภาพสูงกว่า แต่อาจยุ่งยากในการ set up เท่านั้น

 

สรุปข้อดีของ Ruby On Rails

  • Code เขียนง่าย ไม่ซับซ้อน เมื่อเทียบกับ java
  • ถ้า Code สั้น ดังนั้นโอกาสในการเกิด Bug จึงน้อย
  • เป็น Open source
  • มี Library ให้นำไปใช้เป็นจำนวนมาก
  • ง่ายต่อการนำไปขยายและพัฒนาต่อ (extend)
  • เป็น pure Object Oriented้

 

สรุปข้อเสียของ Ruby On Rails

  • ผู้พัฒนาต้องการเรียนรู้ตามโครงสร้างของ Rails
  • Ruby มี Library ให้เรียกใช้น้อยกว่าภาษาอื่น

edit @ 19 Jan 2008 11:01:49 by k-tee

2007/Dec/31

คืนนี้รอ ปีใหม่กับวันใหม่ และเรื่องเดิมที่เข้ามาในชีวิตที่สุดจะจำเจ ไม่ได้ไปเที่ยวไหนเบื่อคนหมู่มาก เด๊่ยวก็มีรื่องกับวัยรุ่น ต้อนรับปีไหม่ อิอิ

อยู่เรื่อยๆ ไม่รู้จะทำอะไรที่จริงจะเริ่มทำ i-google กับชาวบ้านเหมือนกัน เฮอๆแต่ขี้คร้าน ช่วงนี้สอบอยู่ด้วยเลยมานั่น ทบทวนข้อสอบ จะดีกว่า ว่าไปแล้วปีนี้สอบข้ามปีเลยวุ้ย บ้านก็ไม่ได้กลับ อยู่ที่หองักอยู่

เริ่มต้นสอบอีกที อีก 2 วัน(ยังไม่อ่านเลย)

หาข้อมูลก่อนเลย  เรียก Mr google โดยเฉพาะ

joel test

The Joel Test

  1. Do you use source control?
  2. Can you make a build in one step?
  3. Do you make daily builds?
  4. Do you have a bug database?
  5. Do you fix bugs before writing new code?
  6. Do you have an up-to-date schedule?
  7. Do you have a spec?
  8. Do programmers have quiet working conditions?
  9. Do you use the best tools money can buy?
  10. Do you have testers?
  11. Do new candidates write code during their interview?
  12. Do you do hallway usability testing?

 

 12 ข้อเพื่อวัดว่า software เรามีคุณภาพหรือไม่มาตรวสอบ กันเฮอ

ส่วนของผม
1. Do you use source control?
Yes (1) ทีมงานผมใช้ Subversion

2. Can you make a build in one step?
Yes (1) ทีมผมมี automate tool จาก compile จนถึงเอา software ขึ้นระบบ

3. Do you make daily builds?
Yes (1) แถบจะทุกๆชั่วโมงด้วยซ้ำไป smile.gif

4. Do you have a bug database?
Yes (1) ใช้ bugzilla ครับ

5. Do you fix bugs before writing new code?
Yes (1) priority ของ story แก้ bug มีความสำคัญสูงสุดครับ

6. Do you have an up-to-date schedule?
Yes (1) daily scrum มี index card, task board และ burndown chart

7. Do you have a spec?
Yes (1) มี product backlog, sprint backlog, user story, story board, technical spec ครบ

8. Do programmers have quiet working conditions?
Yes (1) หากอยู่ที่ office ประจำดีครับ แต่ site งานก็ลำบากหน่อย แต่โดยรวมถือว่า ok

9. Do you use the best tools money can buy?
OK (0.5) อันนี้อยากได้แต่ไม่ผ่านผู้บริหาร ได้เท่าที่ใช้ทำงานให้มีประสิทธิภาพ แต่ไม่ถึงกับดีที่สุด

10. Do you have testers?
Yes (1) สำคัญมาก กว่าจะ push ให้มี dedicate tester team ได้ก็เหนื่อย แต่ถ้าไม่มีได้ตายแน่นอน

11. Do new candidates write code during their interview?
No (0) ผมไม่เคยให้ผู้มาสัมภาษได้เขียน code จริงๆ แต่ใช้การถามเพื่อวัด logic และให้วาดภาพ diagram บนกระดานแทน

12. Do you do hallway usability testing?
Yes (1) สำคัญมากครับ ถ้าไม่ทำจะไปรู้ได้อย่างไรว่า product เราดีจริงๆ ใช้ง่ายๆจริง

สรุปรวม 10.5 คะแนน ก็ถือว่าพอใช้ได้ แล้วของคุณละเป็นอย่างไรกันบ้าง??

http://www.narisa.com/

ที่นี้โปรแกรมเรามีคุรภาพอ่ะป่าว

 

2007/Dec/08

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

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

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

       วันนี้จะเล่าเกี่ยวกับเรื่องเว็บที่ประะสบปัญหาที่เกี่ยวกับการทำเว็บคือ ปัญหาของการลง Module ที่ไม่ Support กับ Cms ที่เราใช้เลยต้องแก้เป็นพักใหญ่ เลยลองผิดลองถูก(มั่วนั่นเองล่ะคับ)แล้วสุดท้ายก็เสร็จ

 

      

ยกตัวอย่างของโมดูล

Modules
Joomlaspan Google AdSense 2.0 mod_adsense_joomlaspan_2.0
Mambospan Google AdSense 3.0 mod_adsense_mambospan_3.0
Ajaxtabs JP 1.6 mod_ajaxtabsjp
Bookmark Us mod_bookmarkus
Catches 38 mod_catches
Category Content 39 mod_catcontent
Module - Content Categories mod_categories
Content Module mod_content
Content Links mod_content_links
Content Item mod_contentitem
Countdown Module mod_countdown
D4J Content Listing v1.0 mod_d4j_content_listing
D4J TransMenu v1.3 mod_d4j_transmenu
D4J Instant Search v1.6 mod_instant_search
Daily Quote mod_dailyquote
Date mod_date
AJAX Dynamic RSS Reader mod_dbrss
DGM News Ultra mod_dgm-news_ultra
Display News mod_dn
iClude mod_en_iclude
eQuotes mod_equotes
Latest Events mod_eventlist
EventList Calendarmodule mod_eventlistcal
Exhibitions archive mod_exh_archive
FDF Files Downloader mod_files_del
Flash Banner - Accessible mod_flashbanneraccess
Flash Content mod_flashcontent
The Flash Module mod_flashmod
Flash Rotator mod_flashrotator
FlexContent mod_flexcontent
Graphical Visitors Counter mod_graphical_counter
GRnews by DataHellas mod_grnews
Html Module mod_html
icms mod_icms
Image of the Day mod_imageofday
Insert Static Content mod_insertscontent
JA CoolAds Module mod_ja_coolads
JA Header Module mod_ja_header
JA Trans Menu V2.0 mod_ja_transmenu
Flexible Login Form mod_js_flex_login
AJAX Header Rotator mod_jw_ajaxhr
Ultimate AJAX Newsflash mod_jw_ajaxnf
Fading Scroller mod_jw_cifs
Jx Screenshots mod_jxscreenshots
Load Additional Content mod_lac
Site last updated mod_last_updated
Latest Edit mod_latestedit
Latest News XTD mod_latestnewsxtd
Latest News Enhanced mod_latestnews_enhanced
Latest News by Category mod_latestnewsbycat
Latest News (group by day) mod_latestnews_extbyday
Lost time calculator mod_lost_time
LxMenu mod_lxmenu
MosNewsWriter mod_mosnewswriter
Multi Banner mod_multibanner
Newsflash Pro mod_newsflashscroller_pro
News Master mod_nms_pro
PhotoShow mod_photoshow
Quick Question mod_quick_question
QuickNav mod_quicknav
Random Quote mod_randquote
Latest Updates mod_ravenswood_latest
RD Section Blog mod_rd_section_blog
Section Overview mod_sectionoverview
Show users IP Address mod_show_ip
Show Submenu Enhanced mod_show_submenu_enh
Site Counter mod_site_counter
Sorted Items mod_sorteditems
SurfTimer mod_surftimer
SW :: Google Ads mod_sw_ads
SW :: Freelinks mod_sw_freelinks
Tab Module mod_tabmodul
Visitors Counter mod_visitors_counter
What's New mod_whatsnew
Yazarlar Modülü mod_yazarlar
....

บางตัวที่มีระดับหน่อยก็จะขาย แต่ที่เจอสุดเจ๋งวันนี้ที่อยากบอกคือ

Google Map ที่สามารถนำแผนที่บนโลกใบนี้มาอยู่ในเว็บของเราซึ่งไม่ยากอย่างที่คิด เพียงแต่เราต้องมี Mail ของ Gmail หรือบัญชีนั่นเองเพราะมันต้องมีรหัสในใช้งานด้วย

เฮอๆลืมบอกไปว่าต้องลงทั้ง Modules และcomponent ของมันซึ่งฟรีตามเคย อันนี้ไม่ต้องห่วงว่าต้องจ่ายตัง
ซึ่งมีชื่อว่า com_google_maps และ mod_google_maps
ลงตามปรกติเลยอ่ะคับ เพียงแต่ว่าเราต้องของ รหัส API จากเว็บของ Google น่ะครับ
แล้วโลกนี้จะเล็กลงทันที

edit @ 8 Dec 2007 22:10:41 by k-tee