วันศุกร์ที่ 22 สิงหาคม พ.ศ. 2557

Laravel - PHP Web Development Framework เรามาดูกัน

Laravel ดียังไง เจ๋งยังไง หรือว่ามีข้อเสียที่ตรงไหน ?


สำหรับมือใหม่ Laravel คืออะไร

สั้นๆก็คือว่า Laravel เป็น Web development framework ตัวหนึ่งในตลาดที่กำลังได้รับความนิยมมาก ณ ขณะนี้ เราอาจจะเคยรู้จัก CodeIgniter กันมาก่อนแล้ว ซึ่งก็ hot hit ไม่แพ้กันเลยทีเดียวในช่วงหลายปีที่ผ่านมา Framework 2 ตัวนี้มีความเหมือนกันคือ พัฒนามาจากภาษา PHP และเป็น open source ซึ่งเราสามารถศึกษาเข้าไปถึงการทำงานภายในได้ หากสนใจ เพราะ souce code ทั้งหมด มีมาให้อยู่แล้ว

สนใจติดตั้ง Laravel อ่านที่นี่

อยากทราบข้อมูลเปรียบเทียบ PHP Framework อ่านที่นี่

ข้อดีของ Laravel

  • มีเครื่องไม้เครื่องมือ ที่ช่วยให้ developer ทำงานได้เร็วขึ้น ไม่ต้องสนในส่วนอื่นๆ ที่ไม่ใช่ business logic เพราะเครื่องมือพื้นฐานอื่นๆ มีให้ครบครันอยู่แล้ว (ออกจะมากไปด้วยซ้ำ)
    • มีการรองรับ HTTP foundation ด้วย Symfony 
    • SwiftMailer สำหรับการส่งอีเมล
    • Carbon สำหรับการจัดการเรื่องวันที่ เวลา การแสดงผลในรูปแบบต่างๆ
    • Doctrine, Eloquent ที่ทำให้เรื่องยุ่งๆ เกี่ยวกับ database เป็นเรื่องง่ายๆ
    • ทำงานร่วมกับ  Composer Dependency Manager ได้เป็นอย่างดี ทำให้การอัพเดท เพิ่ม ลด module เป็นไปอย่างง่ายด้วย
  • ถูกออกแบบมาให้มี Testability คือ สามารถผนวก unit test เข้าไปได้อย่างง่ายดาย และเพิ่มความสามารถให้เปลี่ยน object ที่ทำงานได้ ขณะ run time ซึ่งทำให้การทำ unit test ถือว่าง่ายกว่า framework ตัวอื่นๆ concept ที่ว่านี้ คือ dependency injection หรือ IoC Container
  • Routing มีความยือหยุ่นสูง รองรับการทำงานได้ทุกรูปแบบ  HTTP GET, POST, PUT, DELETE หรือแบบ RESTFul ก็รองรับได้ทั้งหมด
  • Configuration management มีวิธีการรองรับ การ configure ที่แตกต่างกันในหลายๆ environment โดยที่ไม่ต้อง build package ใหม่ หรือแก้ไขอะไรที่ต้องผูกกับ environment เพราะสามารถ detect environment และเลือกค่าที่ถูกต้องมาใช้ได้แบบทันที
  • Template engine - Blade ช่วยให้การจัดเรียง code หน้า HTML ง่ายขึ้น และการดึงค่าจากตัวแปรมาใช้ในการแสดงผลง่ายขึ้น อีกทั้งยังรองรับการ reuse template เป็นอย่างดี เพราะสามารถ ใช้วิธีการ extend template และ include ได้ด้วย
  • Authentication มี built-in มาให้เลย รวมถึงระบบการส่งเมลเปลี่ยนพาสเวิร์ดด้วย
  • ระบบ Cache สามารถทำงานร่วมกับ Redis ได้เลย
  • มีระบบ Queues ฝังมาให้เลย เพื่อให้รองรับการทำงานที่เป็น batch ใหญ่ๆ ป้องกันไม่ให้ application ทำงานช้า หรือ block ขณะทำงาน รองรับ  Amazon SQS and IronMQ ด้วย

ข้อเสียของ Laravel
  • เนื่องจากมีเครื่องมือให้ใช้มากมาย ทำให้ผู้เริ่มต้น ต้องใช้เวลามากนิดหน่อย กว่าจะทำความคุ้นเคยได้
  • บางครั้ง เครื่องมือที่มีมาให้ ก็ไม่ได้จำเป็นไปซะทั้งหมด ทำให้เรามีส่วนของโค้ดที่ไม่ได้ใช้งานอยู่
  • เรื่อง performance - Laravel ไม่ใช่ PHP Framework ที่เร็วที่สุด (แต่ก็ไม่ได้ช้าที่สุด) ผู้ใช้งาน ต้องมีความรู้ในการปรับแต่งระบบ ให้ทำงานร่วมกับ Laravel ได้ดี
  • เนื่องจาก Laravel ก็ไม่ได้โดดเด่นเรื่องความเร็วหรือ performance ทางออกก็คือ มี server ที่ปรับแต่งขึ้นมาเพื่อให้บริการสำหรับ web application ที่พัฒนาด้วย Laravel โดยเฉพาะ ที่นิยมที่สุดในขณะนี้ ก็จะเป็น Forge ร่วมกับ DigitalOcean หรือ Linode 

โดยสรุป Laravel ยังเป็น framework ที่ยังมีอนาคตอีกไกล เราต้องรอดูต่อไปว่า Laravel จะพาเราไปยังดินแดนแห่งใหม่ได้ไกลแค่ไหน หรือจะมี PHP Framework ตัวใหม่ที่เจ๋งกว่านี้ มาให้เรียนรู้กันอีก





วันจันทร์ที่ 18 สิงหาคม พ.ศ. 2557

git คืออะไร และมันดียังไง

Git เครื่องมือสุดเจ๋ง ในการทำงานร่วมกันเป็นทีม

หากท่านทำงานอยู่ในสายอาชีพนักพัฒนาซอฟต์แวร์ และมีอายุการทำงานมานานกว่า 10 ปี หรือราวๆนี้ ท่านก็คงเคยผ่านยุคของ CVS / Subversion มาแล้ว

CVS / Subversion ถือเป็น versioning control system ยุคแรก ที่มีการทำงานเป็นแบบทุกอย่างรวมอยู่ที่ศูนย์กลาง คือ ต้องมี server แม่ข่ายอยู่ 1 แห่ง และทุกคนที่ทำงานร่วมกันใน project เดียวกัน ก็สามารถแบ่งปันข้อมูล อัพเดทไฟล์งานของตนเอง และเห็นการทำงานของเพื่อนๆได้ โดยมีเครื่อง server แม่ข่ายนี้เป็นศูนย์กลาง ข้อเสียก็คือ หากวันใดที่ server นี้ มีปัญหา ไม่สามารถใช้งานได้ตามปกติ ก็จะทำให้การทำงานของ project ต้องมีเหตุให้หยุดชะงักลง

ทีนี้พอมาถึงยุคของ git ซื่งปฏิวัติการงานแบบเดิมๆ โดยเปลี่ยนมาเป็นการทำงานแบบกระจาย (distributed) คือ ทุกคนเสมือนมีเครื่อง server อยู่ที่เครื่องของตนเอง ทำให้ปัญหาที่เครื่องศูนย์กลางการทำงานเป็นตัวปัญหาหมดไป ทุกคนสามารถทำงานบนเครื่องของตัวเองได้เสมอ (เว้นเสียแต่ว่าเครื่องตัวเองพังเสียเอง) เมื่อทำงานได้ปริมาณจนเป็นที่พอใจแล้ว จึงค่อยส่งไฟล์ของตนเองไปให้คนอื่นๆ ที่ทำงานร่วมกัน

ตัวอย่างคำสั่งของ git

git config --global user.name "your name"

git config --global user.email "your_email@domain.com"
git init project1

cd project1

git add file1.txt

git commit -m"First commit"

// Making quicker commit
git commit -am 'this is the commit message'

git commit --all --message='this is the commit message'

ตัวอย่างหน้าจอการทำงานแบบ command line
git example

เริ่มศึกษา git ได้ ที่นี่