แสดงบทความที่มีป้ายกำกับ Let's DEV แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ Let's DEV แสดงบทความทั้งหมด

วันพฤหัสบดีที่ 16 กุมภาพันธ์ พ.ศ. 2560

ใช้งานคำสั่ง screen และ tmux

เชื่อว่าใครที่ต้องทำงานผ่าน ssh ไปยังเครื่องแม่ข่าย (แหม.. ศัพท์วิชาการเชียว) บ่อยๆ ต้องเจอปัญหากวนใจเหล่านี้กันบ้าง

  • มีหน้าจอเดียว ต้องออกจากหน้าปัจจุบัน เข้าหน้านู้น ไปหน้านี้ แล้วกลับเข้าหน้าเดิม ดูเหนื่อย (งง ป่าว?)
  • ทำงานค้างอยู่ ยังไม่ได้ save เลย โชคร้าย ssh หลุด!!! กลับมาต้องมาเริ่มใหม่ เศร้า
  • ฯลฯ (ปัญหาใครปัญหามันละกันนะครับ)
เลยมีคนพัฒนา software ประเภท terminal multiplexer ขึ้นมาแก้ปัญหาเหล่านี้ ที่มีคนพูดถึงมากก็มี GNU Screen กับ tmux

คุณประโยชน์ที่ GNU screen และ tmux มีต่อเรา

  • เปิดหลายๆ shell ได้จาก ssh session เดียว (Multiple shell windows)
  • จอมันกว้างอยากแบ่งหน้าจอทำงาน
  • ไฟดับ เน็ตสดุด หลุดออกจาก ssh ก็ยังเก็บ Shell active ให้เราอยู่
  • ไฟมา เน็ตลื่น ต่อเข้า ssh ใหม่ก็เปิดเรียกงานที่ค้างอยู่มาทำต่อได้เลย
  • คืนนี้มีต้อง run process ยาวๆ ทิ้งเอาไว้ ก็ไม่มีปัญหา run เสร็จปิด ssh ไปดูต่อที่บ้านได้เลย
  • โชว์สาว เปิดหลายๆ หน้าจอ run นู้นนี้นั้นละลานตา ประหนึ่งเทพ Hacker หลุดออกมาจาก Matrix :)

GNU Screen


GNU Screen จัดได้ว่าเป็นรุ่นใหญ่ออกมาให้ใช้ตั้งแต่ปี ค.ศ. 1987 และมักจะติดตั้งมากับระบบ *nix ตลอดมาจนปัจจุบัน (กราบ) มาแนวแก่แต่เก๋า minimal เรียบง่ายแต่ทรงพลัง

หลักคิดของ Screen จะเป็นแบบ ใน Screen (Session) สามารถมีได้หลาย Windows จบแค่นี้ ส่วนการ split นั้นจริงๆ แล้วเป็นแค่การแบ่งหน้าจอออกเพื่อแสดงผล Windows ใน Screen เท่านั้นเอง (ถ้างงตอนนี้ให้ลองใช้งานดูแล้วจะรู้ได้ด้วยตัวเอง บ่ะ)

เริ่มการใช้งาน GNU Screen ด้วยการสั่ง
$ screen
การใช้งานจะสั่งเป็นลักษณะ prefix key แล้วตามด้วย command key สำหรับ prefix key ของ screen คือ "Ctrl-a" (กด Ctrl พร้อมกับ a แล้วปล่อย) 

ลองคำสั่งแรกกันเลยดีกว่า กด "Ctrl-a" "?" (กด Ctrl พร้อม a แล้วปล่อย หลังจากนั้นกด ? ตาม) ถ้าไม่มีอะไรผิดพลาดน่าจะเจอหน้า help ของ screen แบบนี้กันนะครับ
จะเห็นว่าเรามี command key ให้ใช้งานอีกเยอะแยะเลย แต่โพสท์นี้จะเอาแค่ที่จำเป็นสำหรับใช้งานก่อนนะครับ ที่เหลือไปลองกันเอาเอง แฮ่.. :P

สร้าง Windows เพิ่ม
กด "Ctrl-a" "c"
สลับไปมาระหว่าง Windows (next, previous) กด
กด "Ctrl-a" "n" , "Ctrl-a" "p"
แบ่งหน้าจอ (Split window)
กด "Ctrl-a" "S" 
** แบ่งหน้าจอแบบแนวนอน (Horizontally) 
กด "Ctrl-a" "|"
** แบ่งหน้าจอแบบแนวตั้ง (Vertically) *** แบ่งหน้าจอแบบนี้มีแค่ screen บาง distro เท่านั้น
สลับไปมาระหว่าง split (หน้าจอที่โดนแบ่ง)
กด "Ctrl-a" "Tab"
** หลังการ split หน้าจอของ screen เราต้องทำการ สลับไปยัง split ที่ต้องการแล้ว สร้าง window ใหม่ภายใน split นั้นอีกครั้งนะครับ หรือจะ "Ctrl-a" "n" เรียก windows เก่าที่เคยสร้างมาแล้วไปแสดงแทนก็ได้

ยกเลิก split
กด "Ctrl-a" "X"

ต่อไปเป็นส่วนที่ทรงพลังของ screen นั้นคือการ Detach และ Reattach

Detach ออกจาก screen
"Ctrl-a" "d"
หน้าจอจะกลับมาที่ shell หลักปกติของเรา หลังจากนี้เราสามารถออกจาก ssh ได้เลยโดยที่งานที่อยุ่ใน screen windows ไม่หายไปไหน

Reattach กลับเข้า screen
$ screen -ls
เป็นคำสั่งสำหรับแสดง list ของ screen ที่เราได้ทำการ Detach เอาไว้ เช่น จากภาพ เป็นหน้าจอที่ Detach เอาไว้ 2 screen
$ screen -r <pid>  # screen -r แล้วตามด้วยเลขชุดหน้าของ session เช่น screen -r 1861
เป็นการกลับเข้าไปยังหน้าจอ screen ที่เรา Detach ออกมา โดยถ้าเราเปิด screen ค้างไว้แค่อันเดียวก็ $ screen -r อย่างเดียวก็ได้ครับ

หยุดการใช้งาน Screen
"Ctrl-a" "k"
จะมี message มาให้ confirm คำสั่งอีกทีนึงก่อนนะครับ เป็นการ kill screen นั้นทิ้งเลย ระวังกันด้วยต้องแน่ใจว่าทำงานเสร็จแล้วจริงๆ นะครับ

tmux


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

tmux ไม่ได้ติดตั้งมากับ distro อยากได้ต้องลงเองตามสะดวกนะครับ
แนวคิดของ tmux จะต่างจาก screen อยู่เล็กน้อยตรงที่ tmux จะเริ่มที่ session ใน session มี windows และ panes

หลักการใช้งานก็จะเหมือน screen เลยนั้นคือกด prefix key แล้วตามด้วย command key ดังนั้นสำหรับ tmux จะไม่ขออธิบายมากเอาเป็นสรุป key ที่คิดว่าต้องใช้บ่อยๆ และจำเป็นไปเลยละกันเนอะ (แบบว่าขี้เกียจแล้ว)

เปิดใช้ tmux
$ tmux
หรือ
$ tmux new -s <session name>
แสดง Session ที่มีอยู่
$ tmux ls
Reattach กลับเข้า Session
$ tmux a -t <session name>

รวมคำสั่งสำหรับจัดการ Session, Windows, Panes เมื่ออยู่ใน tmux

Help me
"Ctrl-b" "?"
คำสั่งจัดการ Session
"Ctrl-b" "s"   // แสดงรายชื่อ session ที่มี สามารถใช้ ลูกศรเลือกไปยัง session นั้นๆ
"Ctrl-b" "$"   // ตั้งชื่อ Session ใหม่
"Ctrl-b" "d   // detach session ออกมาที่ shell หลัก
คำสั่งจัดการ Windows 
"Ctrl-b" "c"   // สร้าง Windows ใหม่
"Ctrl-b" ","   // ตั้งชื่อ Windows
"Ctrl-b" "w"   // แสดงรายชื่อ Windows ที่มี สามารถใช้ลูกศรเลือกไปยัง Windows นั้นๆ
"Ctrl-b" "n" , "p"   // สลับไปมาระหว่าง Windows
"Ctrl-b" "0-9"   // สลับไป Windows ตามหมายเลขกำกับ
คำสั่งจัดการ Panes
"Ctrl-b" "%"  // split Vertically Panes
"Ctrl-b" """   // split Horizontally Panes
"Ctrl-b" "{" , "}"  // โยกย้ายสลับ Panes
"Ctrl-b" "o"  // สลับไปมาระหว่าง Panes
"Ctrl-b" "!"   // ส่ง Panes ไปเป็น Windows
"Ctrl-b" "z"   // ขยาย/ย่อ Panes เต็มจอ (ต่างกับ "!" ตรงไม่ได้ขยายไปเป็น Windows
"Ctrl-b" "Ctrl-ลูกศร"   // ปรับขนาด Pane
"Ctrl-b" "x"   // ยกเลิก Panes
"Ctrl-d"   // ยกเลิก Panes (จริงๆ พิมพ์ exit ก็ได้เหมือนกัน)

เอาเท่านี้นะครับ เหนื่อยแล้ว - -"

สวัสดีครับ

วันพุธที่ 15 เมษายน พ.ศ. 2558

เริ่มต้นเรียนเขียนโปรแกรมอีกครั้ง

วันสงกรานต์ที่ผ่านมา อยู่ดีๆ ก็อยากเขียนโปรแกรมขึ้นมาโดยลองตั้งโจทย์ง่ายๆ ดู ถึงแม้ว่าอดีตจะทำงานสาย Web Developer มาก็ตาม แต่เนื่องจากไม่ได้เขียนโปรแกรมจริงๆ จังๆ มากว่า 2 ปี พอเริ่มเขียนๆ ไปก็พบว่าตัวเองสูญเสียความสามารถทางด้านโปรแกรมมิ่งไปอย่างมากแล้วทั้ง logic และ syntax แบบไม่รู้ตัวเลย (สมน้ำหน้า)

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

กติกา
  1. เริ่มใหม่แต่ต้น
  2. เขียนโปรแกรมเป็นงานอดิเรก อย่างน้อยต้องได้โปรแกรมเล็กๆ 1 โปรแกรมทุกๆ วัน โดยไม่กระทบกับงานหลัก (งานร้าน และ งานนอกที่รับมา)
  3. เก็บไฟล์ไว้บน Github ด้วย
  4. ต้องมาเขียนเผยแพร่ลงบล็อคเพื่อแสดงว่าตนเข้าใจแค่ไหน
  5. อัดคลิปลง Youtube ได้จะดีมาก
เครื่องมือ
  1. เริ่มต้นด้วยภาษา C
  2. Compiler ใช้ gcc ผ่าน command-line
  3. ใช้ Linux
  4. ใช้ Vim
  5. ใช้ Git
OK เริ่ม

วันอังคารที่ 16 ธันวาคม พ.ศ. 2557

Free Ebook หัดใช้ Command-line Interface เถอะ

แจกฟรี ebook สอนใช้งานคอมพิวเตอร์ผ่าน Command-line Interface ครับ เป็นหนังสือที่เขียนเป็นเรื่องเป็นราวเล่มแรกในชีวิตเลยก็ว่าได้ครับ

คลิกที่รูปปกเพื่อ Download ได้เลยครับ หรือจะอ่านฟรีบนบราวเซอร์ก็ตามลิงค์ล่างนี้เลยครับ


คลิกเพื่อ Download ฟรี ebook หัดใช้ Command Line Interface เถอะ
คลิกที่รูปเพื่อ Download ฟรี ebook "หัดใช้ Command Line Interface เถอะ"

ผมเขียนหนังสือเล่มนี้ขึ้นมาเพื่อเป็นจุดเริ่มต้นสำหรับผู้ที่สนใจใช้งานคอมพิวเตอร์ผ่าน Command-line Interface หรือที่เรียกกันแบบย่อๆ ได้ว่า CLI

มุ่งหวังให้สำหรับคนที่ไม่เคยหรือพอมีประสบการณ์มาบ้างเล็กน้อยได้ทำความรู้จักและสนิทสนมกับ CLI ให้มากขึ้นครับ โดยแนวการเขียนจะยึดหลัก "Learning by doing" คือคนอ่านต้องทำและเรียนรู้จากสิ่งที่เกิดขึ้น ต้องหัดสังเกต และค้นหาส่ิงที่ตนสงสัยด้วยตนเอง

ใครที่เหมาะกับหนังสือเล่มนี้?

หากคุณมีคุณสมบัติดังนี้

  1. เป็นคนที่ใช้งานคอมพิวเตอร์อยู่ก่อนแล้ว หมายรวมถึงสามารถลงโปรแกรมเองได้ แก้ปัญหาคอมพิวเตอร์เบื้องต้นได้
  2. รู้จักและใช้ CLI มาก่อนเล็กน้อยหรือไม่เคยใช้มาก่อนเลย
  3. กำลังสนใจและตั้งใจที่จะเรียนรู้การใช้งาน CLI

หนังสือเล่มนี้เหมาะสำหรับคุณครับ :D

วันอาทิตย์ที่ 9 กุมภาพันธ์ พ.ศ. 2557

Vagrant + puPHPet, ติดตั้ง Web Server สำหรับนักพัฒนาเว็บ ง่าย…ง่ายจริงๆ!!!

จะว่าไปแล้วนักพัฒนาเว็บยุคสมัยนี้โชคดี มีทางเลือกหลายๆ ทางในการที่จะจำลองเครื่อง Web Server ขึ้นมาสำหรับการพัฒนาเว็บฯ ไม่ว่าจะเป็นการ ติดตั้งบนเครื่องตัวเองด้วย package สำเร็จรูปอย่าง XAMPP, MAMP ฯลฯ หรือ จะลงบนเครื่อง VM (Virtual Machine) แทน กรณีนี้ก็ต้องออกแรงติดตั้ง package ต่างๆ เองอีก
แล้วถ้าเป็นนักพัฒนามือทองที่ต้องพัฒนาหลายๆ โปรเจคเข้าไปอีก แต่ละโปรเจคอาจต้องการ Dev Environments ที่ไม่เหมือนกัน ก็ต้องมานั้นเซต ปิดนู้น เปิดนี้ กันให้ปวดหัว (ในกรณีลงบน Local)
ทางออกก็เลยต้องหนีไปพัฒนาบน VM แทน แต่มันก็ยังไม่สะดวกสบายนักอยู่ดี เพราะนักพัฒนาก็ต้องมานั้นเซตนู้นนั้นนี้เองอยู่ดีนั้นแหละ เราเลยต้องใช้ Vagrant เข้ามาช่วยอีกแรง

Vagrant คืออะไร?

Vagrant เป็น tool ที่ช่วยให้เราสามารถติดตั้ง Virtual Machine บนเครื่องของเราได้อย่างง่ายดาย ตัดขั้นตอนที่นักพัฒนาต้องทำเองไปหลายอย่าง เช่น download iso ติดตั้ง OS ฯลฯ แถมยังสามารถ sync folder ในการพัฒนาให้เอง (ไม่ต้องเสียเวลา upload file ขึ้นเครื่อง VM)

โดยก่อนการใช้งาน Vagrant ในเครื่องเราต้องลง VirtualBox เอาไว้ก่อนแล้ว (จริงๆ Vagrant รองรับ VMWare ด้วย แต่ VirtualBox มันฟรีครับ) สามารถ Download VirtualBox ได้ที่ https://www.virtualbox.org/wiki/Downloads และอ่านวิธีติดตั้งที่ https://www.virtualbox.org/wiki/Documentation
หลังจากนั้นก็ Download Vagrant ที่ http://www.vagrantup.com/downloads.html
เมื่อติดตั้ง Vagrant ลงเครื่องเราเรียบร้อยแล้ว อยากให้อ่านและลองทำตามขั้นตอน ในหัวข้อ Getting Started ที่ทางเว็บ Vagrantup.com เตรียมเอาไว้ให้ก่อนนะครับ เป็น tutorial ที่ดีเลยทีเดียว
เมื่อลองเล่นจนเกิดความชำนาญ เราสามารถไป add boxes จากที่ http://www.vagrantbox.es/

puPHPet คืออะไร?

เป็น Web ที่ช่วยในการสร้างไฟล์ Vagrantfile script สำหรับติดตั้ง package ต่างๆ ที่จำเป็นสำหรับการพัฒนาเว็บ

โดยเข้าไปที่ https://puphpet.com/ แล้วจัดการเลือก option ตามที่เราต้องการ เสร็จแล้วก็ download ,จัดการแตกไฟล์ แล้ว นำไฟล์ และ โฟลเดอร์ที่ได้ ไปวางไว้ที่โฟลเดอร์ ที่เราต้องการจะติดตั้ง (ถ้าได้ลองทำตาม Getting Started มาจะเข้าใจดี) จากนั้นก็แค่สั่ง vagrant up แล้วก็รอๆๆ จนมันติดตั้ง และ อัพเดท ให้เราจนเสร็จ พร้อมใช้งาน
โพสท์นี้ขอแบบสั้นๆ ไม่ละเอียดนะครับ ช่วงนี้ไม่ว่างจริงๆ ^^’

สวัสดีครับ

วันอาทิตย์ที่ 12 มกราคม พ.ศ. 2557

วิธีติดตั้ง phpMyAdmin บน Mac OSX 10.8+

หลังจากติดตั้ง MySQL เสร็จไปแล้วก็มาลง phpMyAdmin กันต่อครับ โดยก่อนที่จะทำการติดตั้ง phpMyAdmin เราต้องทำการ fix mysql 2002 socket error กันก่อนนะครับ วิธี fix ให้กลับไปดูที่
เรียบร้อยแล้วไปต่อกันเลยครับ…

เตรียมพร้อมก่อนการติดตั้ง phpMyAdmin

ดาวน์โหลด phpMyAdmin

ไปที่หน้าดาวน์โหลดของ phpMyAdmin จัดการเลือกไฟล์ที่ต้องการ

เตรียมก่อนการติดตั้ง

หลังจากดาวน์โหลดเสร็จแล้วก็ทำการแตกไฟล์ออก แล้ว เปลี่ยนชื่อโฟลเดอร์เป็น “phpMyAdmin” หลังจากนั้นก็ย้ายโฟลเดอร์ไปที่ Web root ของเรา


เตรียมการสำหรับ phpMyAdmin config

สร้างโฟลเดอร์ config และทำการแก้ไข permission
?
1
2
$ mkdir ~/Sites/phpMyAdmin/config
$ chmod o+w ~/Sites/phpMyAdmin/config

เริ่มขั้นตอนติดตั้ง

เปิด browser ที่ address bar เรียก url ดังนี้
localhost/~username/phpMyAdmin/setup/
** username คือ account ของเรา

ต่อมาคลิกที่ปุ่ม “New server” หลังจากนั้นเลือก tab “Authentication” ตรงช่อง Password for config auth ให้ใส่ password root ของ MySQL ในขั้นตอนติดตั้ง MySQL หลังจากนั้นก็ คลิก“Apply” ด้านล่าง
จะกลับมาหน้าจอก่อนหน้าและจะเห็นอะไรประมาณนี้เพิ่มขึ้นมา

ตรง Configuration file ให้ทำการเลือกภาษาที่ต้องการ

หลังจากนั้นกดปุ่ม “Save”
ถ้าไม่มีอะไรผิดพลาดเราจะได้ไฟล์ชื่อ “config.inc.php” อยู่ในโฟลเดอร์ “config” ที่เราสร้างไว้ก่อนหน้านี้
ให้ย้ายไฟล์ “config.inc.php” ออกมาไว้ในโฟลเดอร์ “phpMyAdmin” แล้วก็ลบโฟลเดอร์ “config”ทิ้งไป
ต่อมา…
ตรวจสอบให้แน่ใจว่า mysql เรา start แล้วหรือยัง ถ้ายังก็สั่ง start ก่อน
จากนั้นกลับไปที่ browser แล้วเรียก
localhost/~username/phpMyAdmin/

เย้.. เสร็จแล้วครับผม

อ่านต่อ

วันเสาร์ที่ 11 มกราคม พ.ศ. 2557

วิธีติดตั้ง MySQL บน Mac OSX 10.8+

หลังจากรู้ “วิธีเปิดใช้งาน Apache และ PHP“ กันไปแล้ว ทีนี้ก็ถึงเวลาในการติดตั้งและเซตให้ MySQL ใช้งานกับ localhost ของเรากันครับ โดยปกติเราสามารถดาวน์โหลดตัวติดตั้ง MySQL ได้ที่หน้า Download ของเว็บไซต์หลัก
แต่ในโพสท์นี้ผมจะติดตั้งผ่าน Homebrew ครับ
ขั้นแรกเราต้องมี Homebrew ในเครื่องของเราซะก่อน โดยวิธีติดตั้งเคยเขียนไปแล้ว สามารถไปอ่านได้ที่

ขั้นตอนการติดตั้ง MySQL ด้วย Homebrew

ที่ terminal พิมพ์ (ก่อนที่จะ install MySQL ควรสั่ง brew update และ brew doctor ซะก่อน)
?
1
2
3
4
5
$ brew update
$ brew doctor
$ brew install mysql
เสร็จแล้วครับ ที่เหลือก็รอ ๆ ๆ จนมันติดตั้งให้เสร็จสรรพ


หากต้องการให้ MySQL รันตอน boot เครื่องก็ให้ทำตามขั้นตอนนี้ (หากไม่ต้องการก็ข้ามขั้นตอนนี้ไปได้)
?
1
2
3
$ mkdir -p ~/Library/LaunchAgents
$ cp /usr/local/Cellar/mysql/5.6.15/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/
$ launchctl load -w ~/Library/LaunchAgnets/homebrew.mxcl.mysql.plist
** 5.6.15 คือ เลขเวอร์ชั่น MySQL ที่ทำการติดตั้งขึ้นนะครับ ถ้าติดตั้งเวอร์ชั่นอื่นก็เปลี่ยนให้ถูกต้อง
ต่อมาก็ต้อง unset TMPDIR และ ติดตั้ง MySQL System Tables
?
1
2
$ unset TMPDIR
$ mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
สั่ง start service MySQL service และลองดู process
?
1
2
$ mysql.server start
$ ps aux | grep mysql
ต่อไปก็จัดการตั้ง password ให้ root (ของ MySQL)
?
1
$ /usr/local/Cellar/mysql/5.6.15/bin/mysqladmin -u root password 'PASSWORD'
** อย่าลืมตรวจสอบเลขเวอร์ชั่น และ ตรง PASSWORD ให้เปลี่ยนเป็น password ที่เราต้องการ
สั่ง restart service ของ MySQL และ ลองเรียก mysql ดู
?
1
2
$ mysql.server restart
$ mysql

Fix 2002 MySQL Socket error

ปัญหานี้เกิดจากว่าตัว MySQL เองดันไปวางไฟล์ mysql.sock เอาไว้ที่ “/tmp/mysql.sock” แต่เวลาที่ระบบต้องการ connect MySQL ตัวระบบ ดันไปวิ่งหาที่ “/var/mysql/mysql.sock” ซะงั้น ตามรูป

เมื่อลองใช้คำสั่ง ls ทั้งใน /tmp และ /var ก็ได้ผลตามที่เห็นครับ ว่ามี mysql.sock อยู่ใน /tmp ส่วน /var ไม่มีแม้กระทั้ง folder mysql

ดังนั้นวิธีแบบแรกก็คือ เข้าไปแก้ไขไฟล์ “/etc/php.ini” โดยแก้ไข้ค่า default_socket ให้ชี้มายัง“/tmp/mysql.sock”
?
1
default_socket=/tmp/mysql.sock
แต่ถ้าเราไม่อยากปวดหัวปวดตากับจำนวนบรรทัดมหาศาลของ php.ini แล้วก็มีวิธีที่ง่ายกว่านั้น นั้นคือ ทำ symlink จาก /tmp/mysql.sock ไปยัง /var/mysql/mysql.sock ครับ
?
1
2
$ sudo mkdir /var/mysql
$ sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock
เมื่อลองเข้าไปดูใน “/var/mysql”

มาถึงขั้นนี้ก็ต้องบอกว่า เราติดตั้ง MySQL บน Mac OSX ด้วย Homebrew เสร็จแล้วครับ

อ่านต่อ