Git Reset เป็นคำสั่งสำหรับย้อนการกระทำ หรือเข้าใจง่ายๆ คือเหมือนกับคำสั่ง undoing ในโปรแกรมอื่นๆ วิธีการใช้จะแสดงให้เห็นในตัวอย่างด้านล่าง โดยตัวอย่างมีการแก้ไขข้อมูลในไฟล์ที่ชื่อว่า README.txt และภาพด้านล่างเป็นผลลัพธ์จากการใช้คำสั่ง git status เพื่อให้เห็นว่าเอกสารดังกล่าวมีการแก้ไข

จากนั้นทดลองใช้คำสั่ง git add เพื่อจะทดสอบใช้คำสั่ง git reset โดยการย้อนกลับมายังสถานะดังภาพตัวอย่างด้านบน

$ git add .

รูปภาพด้านล่างเป็นผลลัพธ์จากการใช้คำสั่ง git add แล้วตรวจสอบสถานะด้วยคำสั่ง git status
Continue reading

ผมว่าหลายคนที่จัด RHEL 7 หรือ CentOS 7 โดยที่ไม่ได้ใช้ Fedora 20 และไม่ได้เป็นสาวก Fedora มาก่อนจะไม่ทราบว่าอีก release ถัดไปของ RHEL, CentOS, Scientifix Linux จะเจออะไรใหม่บ้าง เพราะของเล่นใหม่ๆ จะไปโหล่ใน Fedora ก่อนอย่างน้อย 2 ปี จึงจะย้ายเข้ามาใน RHEL จากนั้นถ่ายทอดไปยัง CentOS, Scientifix Linux และ Linux Distribution ที่พัฒนาต่อจาก RHEL หรือ CentOS ตามลำดับ การเปลี่ยนแปลงอย่างสายฟ้าแลบใน RHEL 7 ไม่ได้เกิดอย่างสายฟ้าแลบหรอกครับ เขาใช้กันมานานแล้ว สำหรับการเปลี่ยนแปลงที่รอมานาน คือ systemd ที่มาสดใหม่, Docker ที่คุม security ด้วย SELinux ทำให้ เรื่อง security บน Docker ที่หลายคนถากถางกันมาเกือบ 2 ปีนี้หยุดได้แล้ว เพราะนอกจากจะคุม syscall ได้แล้วยังคุมในระดับ SELinux ด้วย ส่วน feature อื่นๆ ไม่ค่อยได้สนใจมากครับ

การมาของ systemd เปลี่ยนวิธีการทำงานของ Linux Admin ไปโดยสิ้นเชิงเพราะ systemd มาจัดการ service และ run level ในระบบปฏิบัติการ คุณหนีมันไม่พ้น ก็ต้องมาเรียนกันใหม่ อ้อ init script ที่เรียนกันมาก็เปลี่ยนใหม่ด้วย เอาล่ะการที่จะเข้าใจ systemd ได้เร็วคือการหัดใช้งานมันครับ เรามาลองจัดการ service บน systemd คำสั่งที่เราใช้งานคือ systemctl

ลองใช้คำสั่ง systemctl กันดูครับ

systemctl

เราจะพบว่า systemctl จะแสดงรายการทุกอย่างที่ systemd ควบคุมได้ ทั้ง service, timer, mount, target, automount เยอะมาก


Continue reading

มีเรื่องตลกที่เกิดขึ้นกับตัวผมเองในช่วงที่ CentOS 7 ออกมาใหม่ๆ คือการเปลี่ยน hostname เนื่องจากว่าเคยชินกับการเปลี่ยนชื่อ host ก็ชอบไปเปลี่ยนที่ /etc/hostname แต่ใน CentOS 7 และ RHEL 7 ไม่ใช่แบบนั้น เค้ามีวิธีการเปลี่ยน hostname ได้น่ารักกว่า โดยการใช้คำสั่ง hostnamectl การใช้งานคำสั่งนี้ก็ง่ายมาก ถ้าต้องการดู hostname ก็ใช้คำสั่ง hostnamectl หรือ hostnamectl status ดังนี้

hostnamectl

จะได้ผลลัพท์ดังภาพ


Continue reading

การเปลี่ยนแปลงของซอร์สโค้ดนั้นใน repository นั้น สามารถเรียกดูได้ด้วยคำสั่ง

$ git log

รูปด้านล่างเป็นตัวอย่างแสดง log ของที่การ commit ว่าในแต่ละ commit มีรายละเอียดอย่างไรบ้าง

แต่ log ที่แสดงให้เห็นด้านบน แสดงให้เห็นรายละเอียดเพียงชื่อผู้ใช้, วันที่ และ commit massage ที่มีรายละเอียดเกี่ยวกับการแก้ไขข้อมูลในซอร์สโค้ด หากต้องการให้แสดงรายละเอียดเพิ่มเติมให้เพิ่ม option -p ต่อท้ายคำสั่ง
Continue reading

บน GlusterFS นั้นเราสามารกำหนด Quota ให้กับ Volume ได้เช่น กำหนดให้ Volume A สามารถใช้งานได้เพียง 10GB หรือ 100GB ซึ่งสามารถกำหนดได้ด้วยคำสั่งง่ายๆ เพียงไม่กี่คำสั่งเท่านั้น

สมมติว่าเราได้สร้าง Distributed Volume ไว้ดังนี้

โดยมี Architecture คือ

  1. node1: 192.168.1.100, Volume name: distributed-quota
  2. node2: 192.168.1.101, Volume name: distributed-quota

จากนั้นหากต้องการกำหนด Quota ให้กับ distributed-quota volume สามารถทำได้โดยขั้นแรกให้ Enable quota ให้กับ volume ก่อน

Continue reading

เราสามารถใช้คำสั่ง Add เพื่อเพิ่มข้อมูล โดยทางเทคนิคแล้วเราจะเรียกโครงสร้างของข้อมูลที่ใช้งานว่า working tree เนื่องจากการใช้ Git ในการจัดการเวอร์ชันของข้อมูลนั้น เปรียบเสมือนรากของต้นไม้ ที่สามารถแตกกิ่งก้านสาขาจากแกนกลางได้

การเพิ่มข้อมูลทำได้โดยใช้คำสั่ง git add

เริ่มต้นด้วยการทดลองสร้างไฟล์ โดยเพิ่มข้อความลงในไฟล์ที่สร้าง ด้วยคำสั่ง

$ pico Changefile.txt

หรือใช้ editor อื่นๆ เพื่อเพิ่มข้อความ “change me” ลงในไฟล์ Changefile.txt

$ pico Deletefile.txt

หรือใช้ editor อื่นๆ  เพิ่มข้อความ “delete me” ลงใน Deletefile.txt

Continue reading

พอเราใช้งาน GlusterFS ไปซักระยะบางครั้งเราก็มีความจำเป็นที่ต้องเพิ่มพื้นที่เข้าไปใน Volume กันซึ่ง GlusterFS ก็สามารถทำได้ โดยเรียก Feature นี้ว่าการ Expand Volume

สมมติว่าเรามี Volume ที่เป็น Distributed Volume อยู่ดังภาพ

และมี Architecture ดังนี้

  1. node1: 192.168.1.100, volume name: distributed
  2. node2: 192.168.1.101, volume name: distributed


Continue reading

การทำ Striped Replicated Volume นั้นจะคล้ายๆ กับการทำ Striped Volume ซึ่งมีจุดประสงค์คือช่วยให้สามารถ Access ไฟล์ได้อย่างรวดเร็ว ซึ่ง Striped Replicated นั้นพ่วงการทำ Replicated ไฟล์เข้ามาด้วยนั่นเอง

ก่อนอื่นให้ติดตั้ง GlusterFS กันก่อนโดยหากใครติดตั้งเรียบร้อยแล้วสามารถข้ามไปในส่วนของการทำ Striped Replicated ได้เลย GlusterFS เป็น Clustered File System ดังนั้นการติดตั้งเราจะต้องติดตั้ง GlusterFS ลงบน Ubuntu Server ตั้งแต่ 2 เครื่องขึ้นไป ซึ่งในกรณีการทำ Striped Replicated นั้นจำเป็นที่จะต้องมี Server ตั้งแต่ 4 เครื่องขึ้นไป โดยการติดตั้ง GlusterFS บน Ubuntu 14.04 Server นั้นสามารถทำได้โดยติดตั้งผ่าน package manager ได้ทันที การติดตั้ง GlusterFS นั้นสามารถทำได้ง่ายๆ โดยการติดตั้งผ่าน package manager แต่ก่อนที่จะลงมือติดตั้ง GlusterFS มาดูโครงสร้างพื้นฐานที่ต้องใช้กันก่อน โดยเรามีเครื่อง Ubuntu Server 4 เครื่อง ดังนี้

  • node1 มี IP Address เป็น 192.168.1.100
  • node2 มี IP Address เป็น 192.168.1.101
  • node3 มี IP Address เป็น 192.168.1.102
  • node4 มี IP Address เป็น 192.168.1.103

ให้ติดตั้ง Gluster Server ทั้ง 4 เครื่องด้วยคำสั่งซึ่งสามารถทำได้ดังนี้

sudo apt-get install glusterfs-server


Continue reading

ครั้งที่แล้วพาเล่น Digital Temperature Sensor DHT22 กับ Raspberry Pi เราสามารถอ่านค่า Temperature และ Humidity ออกมาได้ แต่ถ้าจะให้สนุกต้องเก็บข้อมูลและเอาไปใช้งานต่อได้ซึ่งก็มีอยู่หลายวิธี เช่น เก็บข้อมูลลงฐานข้อมูล เก็บข้อมูลลงไฟล์ เป็นต้น เนื่องจากเคย blog เรื่อง Xively กับ Arduino ไปแล้ว ครั้งนี้ขอไม่ blog เรื่องนี้กับ Raspberry Pi ก็แล้วกันครับ แต่จะขอใช้ REST API ที่สร้างจาก StrongLoop แทนที่ blog ไปครั้งที่แล้ว ลองไปหาอ่านกันได้

REST Client บน PyPi ไม่ใช่เรื่องยาก ขึ้นอยู่กับว่าเราเลือกที่จะใช้ Python Module ไหนมากกว่า ซึ่งก็มีอยู่หลายตัวให้เลือกใช้ ดังนี้


Continue reading

Git Repository เปรียบเสมือน directory หรือโฟลเดอร์ที่ทำงานร่วมกับ Git โดย Git Repository จะเก็บประวัติทั้งหมด และสามารถ Track เวอร์ชันได้

วิธีการสร้าง Git Repository ทำได้ด้วยคำสั่ง

$ git init <directory>

ผลลัพธ์คือจะสร้าง directory ใหม่ขึ้นมา

Git Repository สามารถสร้างได้อีกวิธีหนึ่งคือคำสั่ง

$ git init --bare <directory>


Continue reading