Wednesday, March 26, 2014

CRUD คือ อะไรกันนะ


       เนื่องจากกระผมได้มีโอกาสได้ไปฝึกงานกับบริษัทคอมพิวเตอร์โลจีมา กระผมก็ได้ความรู้มาอย่างมากมายและหนึ่งในความรู้ที่ผมอยากจะมาระบายนั้นก็คือ CRUD ของตัว Ruby on Rails (สำหรับเพื่อนคนไหนยังไม่ทราบว่า Ruby on Rails คืออะไร ตามลิงค์นี้ไปเลยครับผม) (。◕‿◕。) วันนี้เราก็จะมาแนะนำว่ามันคืออะไร ไปลุยกันเลยครับผม

      CRUD นั้นย่อมาจาก  Create Read Update และ Delete กล่าวคือ Web App ทุกๆ เว็บต่างมีจุดที่ทำงานเหมือนกันทั้ง 4 อย่าง Rails สามารถที่จะสร้างเพจที่ไว้ทำ CRUD แบบง่ายๆ ให้สำเร็จรูปโดยสิ่งที่เราต้องทำคือประกาศใช้ Scaffold บรรทัดเดียว ซึ่งสะดวกมากเมื่อต้องการให้เพจของเรามันทำงานได้ก่อน แล้วค่อยไปแต่งให้สวยทีหลัง ซึ่ง Scaffold จะสร้าง model, controller, view และ routes ด้วยคำสั่ง rails generate scaffold product จะสร้างไฟล์ให้เราดังรูป

Monday, March 24, 2014

Ruby on Rails เคี้ยวอร่อย

Ruby on Rails 

      วันนี้ผมจะมาขอระบายความรู้ในหัวข้อเรื่อง Ruby on Rails เคี้ยวอร่อย มันจะอร่อยยังไง และมันคืออะไร ?(•ิ_•ิ)? หลายคนอาจกำลังต้องการศึกษาวิธีการเขียนโปรแกรมแบบ MVC ซึ่ง Ruby on Rails นี้ก็เป็น Framework อีกตัวหนึ่งที่น่าสนใจในการเรียนรู้ ดังนั้นอย่าช้าอยู่ใย เรามาดูว่าความสามารถของมันมีอะไรบ้าง แล้วมันยอดยังไง ติดตามได้เลยครับผมมมม

      
      Ruby on Rails เป็นโอเพนซอร์ส 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 เป็นอันดับหนึ่งของการเผยแพร่ ผ่าน RubyGem เป็นตัวจัดการ Package ในภาษา Ruby ที่จะดูในเรื่องของ รูปแบบของ packaging และมี Libraries ไว้ให้ใช้มากมาย (บทความหน้าผมจะมาแนะนำว่า Ruby มี Gem ตัวไหนน้าสนใจบ้าง ) และมีโครงสร้าง ตัวช่วยในการทำงานมากมาย อาทิเช่น Routes , Migrate , Layout

แล้วมันเคี้ยวอร่อยยังไง ?
  • Code เขียนง่าย ไม่ซับซ้อน เมื่อเทียบกับ java จริงสุดๆ
  • Code สั้น ดังนั้นโอกาสการเกิด Bug จึงน้อย การทำงานเป็นขั้นตอน สามารถแก้ไขได้ตรงจุด
  • เป็น Open source ของดีแถมฟรีด้วย
  • มี Library ให้นำไปใช้เป็นจำนวนมาก
  • ง่ายต่อการนำไปขยายและพัฒนาต่อ (extend)
   ในความคิดเห็นส่วนตัวที่ผมได้ลองใช้งานและทำงานกับ Framework ตัวนี้ มันอร่อยมากเลยนะครับเราไม่ต้องเขียนโค้ดเองทั้งหมด ทั้งการสร้าง Application กับ ทำงานกับ Database ง่ายมาก ภาษาในการเขียนก็ใช้ง่ายอ่านง่าย หรือ View ที่มีการซับพอรต์ไว้ค่อนข้างมาก เรียกได้ว่า เหมาะกับการทำเชิงธุรกิจสุดๆ  เพราะทุกวันนี้บ้างงาน บ้าง Application ที่เราสร้างมาใหม่ก็ล้วนเเต่มีสิ่งที่เหมือนกัน ซ้ำกัน แต่ Rails ได้จัดการทำสิ่งซ้ำในในการพัฒนาเบื้องต้นให้หมด (CRUD) วันนี้ผมก็มาทำการระบายความรู้เบื้องต้นให้กับทุกคนสำหรับใครที่อยากรู้เพิ่มเติมตาม  

ลิงค์นี้ไปได้เลยครับผม

Sunday, March 23, 2014

MVC แนวคิดการเขียนโปรแกรม ที่หลายคนอาจจะไม่รู้จัก

หลายคนอาจจะเคยได้ยินและรู้จักกับแนวคิดการเขียนโปรแกรมแบบ MVC ซึ่งเป็นที่นิยมและใช้กันอย่างหลากหลาย แต่บางคนอาจจะยังไม่ค่อยเข้าใจวิธีการทำงานซักเท่าไหร่ วันนี้กระผมก็จะมาระบายความรู้ที่ได้มาจากการไปฝึกงานสหกิจมา หลายหน่วยงานตอนนี้ก็กำลังใช้แนวคิดการเขียนโปรแกรมแบบนี้ในการพัฒนาระบบต่างๆ ก็เป็นการดีที่เราจะไปทักทายกับแนวคิดนี้ซักหน่อย ⊙0⊙

       MVC คือ สถาปัตยกรรมซอฟต์แวร์ชนิดหนึ่ง ซึ่งปัจจุบันมี Frameworks สำหรับสร้าง Web Apps จำนวนมาก แต่เกือบทั้งหมดมีโครงสร้างแบบ MVC ซึ่งแต่ละ Web Apps จะถูกแบ่งออกเป็นสามส่วน คือ

1. Model คือ ส่วนที่ใช้ในการติดต่อกับฐานข้อมูล ซึ่งทำหน้าที่ในการดึงข้อมูลขึ้นมาจาก
ฐานข้อมูลขึ้นมา และทำการจัดการข้อมูลต่างๆไว้ในรูปแบบที่เหมาะสม

2. View คือส่วนที่จะนำข้อมูลจาก Model ไปใช้แสดงผลให้ผู้ใช้เห็นผลลัพธ์ออกมา
ใน User Interface 

3. Controller คือส่วนที่จะคอยรับ Input จาก Client เข้ามาแล้วนำคำสั่งไประมวลผล 
เพื่อสั่งงาน View และ Model ให้ประมวลผลออกมาเป็นอย่างไร


ขั้นตอนการทำงานของ MVC
   

1. เริ่มจาก Client ส่ง Request ไปที่ Web App ซึ่งจะถูกส่งต่อให้ Controller  
ทำการตรวจสอบข้อมูลที่มาให้ (Request Method, Request Parameters) 
2. แล้ว Controller จะเรียก Method ให้ทำงานเพื่อจัดการ Request นั้น 
3. Model จะทำการคำนวณและอาจติดต่อกับ Database เพื่อจัดการกับ Request  
นั้น แล้วส่งผลลัพธ์กลับไปที่ Controller 
4. เมื่อ Controller ได้ผลลัพธ์จาก Model แล้วก็ใช้ผลลัพธ์นั้นส่งต่อให้ View ทำงาน 
5. View จะสร้าง Page สำหรับแสดงผลลัพธ์นั้น แล้วส่ง page กลับไปที่ Controller  
6. Controller ส่ง Page นั้น (เป็น Response) กลับไปยัง Client

          นี้ก็เป็นหลักการทำงานของแนวคิดนี้นะครับ เป็นอย่างไรบ้างครับ ดูใช้งานง่ายขึ้นใช้ไหม ในด้านประสบการณ์ที่ไปฝึกงานสหกิจมาผมคิดว่า ตอนนี้หลายบริษัทได้ใช้แนวคิดนี้ในการพัฒนาระบบทั้งนั้น และใช้มานานเเล้วด้วย ⊙△⊙ (แต่กระผมก็ไม่เคยลองทำจริงจัง) เป็นเหตุให้ตอนฝึกงานต้องไปนั่งเรียนรู้ใหม่ แต่ไม่เป็นไร ถือว่าเป็นประสบการณ์ครับ ต้องเรียนรู้ในเวลาที่เร่งรีบมันช่างมันส์สสสสสส T^T   ถือว่าบทความนี้ เป็นการมาระบายว่า ควรเตรียมตัวให้พร้อมก่อนจะลงสนามนะครับแหม่มมม (¯▽¯;)



 

Wednesday, November 14, 2012

Regular Expression ผมไม่เล็กนะครับ

Syntax
     ไวยากรณ์ คือ โครงสร้างของภาษา หรือ รูปแบบการเขียน source code
                             ถูกสร้างโดย Noam , Backus , Form [BNF]

Token
      คือ หน่วยที่เล็กที่สุด หรือหน่วยที่ย่อยที่สุด แบ่งได้อีก 4 อย่าง
             1. Reserved word  such as  if , while
             2. Constants  such as 42 , "Hello"
             3. Special symbols  such as "," , "<=" , "+"
             4. Identifiers  such as x24, putcahar

Regular Expression 
คือ หน่วยย่อยสุดของภาษา พูดถึงพวก String หรือ Token

             Ex. 1 0 *  -> คือ นิยาม
                    regular expression                      |                  regular Language
                    1 0 ตามด้วย 0 กี่ตัวก็ได้            |                 10 , 100 , 1000
             Ex. a b * a
                     regular expression                      |                  regular Language
                     a b  ตามด้วย a กี่ตัวก็ได้            |                 aba , abaa , abaaa

             grammar มีปลายทางเสมอ โดยจะจบที่ Token

non - Terminal คือ พวกที่ยังไม่สิ้นสุด
Terminal คือ พวกที่สิ้นสุดเเล้ว Token

========================================================================
รูปแบบของ [BNF] 
ตัวอย่างรูปแบบภาษา
        จุดเริ่มต้น          <> แทน non - Terminal
1. <sentence> : : = <non -phrase> <verb - phrase>
2. <non - phrase> : : = <article> <noun>
3. <article> : : = a | the                  // | เเทน หรือ
4. <noun> : : = girl | dog 
5. <verb - phrase> : : = <verb> <non phrase>
6. <verb> : : = sees | pet 

ตรวจสอบภาษา  Ex. " The girl sees a dog "
         วิธีทำ 1. เริ่มจาก sentence
                    <sentence>  =>  <non -phrase> <verb -phrase>
                                       =>  <article> <noun>  <verb -phrase>
                                       =>    the  <noun> <verb -phrase>
                                       =>    the  girl <verb -phrase>
                                       =>    the  girl <verb > <noun -phrase>
                                       =>    the  girl   sees   <noun -phrase>
                                       =>    the  girl   sees   <article> <noun>
                                       =>    the  girl   sees  a   <noun>
                                       =>    the  girl   sees   a  dog  // ทำจนกว่าจะหมด non - Terminal
         เพราะฉะนั้น ถูกต้องหมดตาม grammar

ตัวอย่างรูปแบบภาษา
1. <number> : : = <number> <digit> | <digit>
2. <digit> : : =  0 | 1 | 2 | ... | 9

ตรวจสอบภาษา  Ex2. " 2 3 4 "
         วิธีทำ      <number> => <number> <digit>
                                         => <number> <digit> <digit>
                                         => <digit> <digit> <digit>
                                         =>      2    <digit>  <digit>
                                         =>      2        3    <digit>
                                         =>      2        3         5
        เพราะฉะนั้น ถูกต้องหมดตาม grammar


ตัวอย่างรูปแบบภาษา  " คำนวณเลข 1"
1. <exp> : : = <exp> + <exp> | <exp> * <exp> | <<exp>> | <number>
2. <number> : : = <number> <digit> | <digit>
3. <digit> : : =  0 | 1 | 2 | ... | 9
ตรวจสอบภาษา  Ex2. " 3+4*5 "
วิธีทำ  ตรวจสอบด้วย Parse Tree                 <exp>
/        |        \
                                                                   <exp>    +      <exp>
                                                                       |                 /      |     \
                                                              <number>     <exp>  *   <exp>
                                                                       |                |                 |
                                                                 <digit>     <number>  <number>
                                                                       |                |                 | 
                                                                       3          <digit>       <digit>
                                                                                         |                |
                                                                                         4               5
                                                                                       
นิยามในการ บวก เเละ คูณเลข สมมุติ 3+4*5 จะต้อง นำ 4*5 ก่อน   เเล้ว ค่อย นำมา +3

         อยากจะระบายมากเลยนะครับว่า Regular Expression มันไม่เล็กเหมือนชื่อนะครับ ตอนเรียนกว่าจะเข้าใจนี้แถบคลาน ถามเพื่อนตั้งหลายคน แต่สุดท้ายก็เข้าใจแล้วก็แอบไปตายคาห้องสอบเช่นเดิมนะครับโฮ้ะๆ  o(︶︿︶)o ไว้อาลัยสามวิ