ขยาย คลิป “01 จะเริ่มเขียน GO เริ่มอย่างไร”
เนื่องจากมีคนมาคอมเมนต์ใต้คลิป “01 จะเริ่มเขียน GO เริ่มอย่างไร” ว่า “นี่ basic ใช่ไหมครับ มึนเลย” ผมเลย เอาอันที่ไม่ได้พูดถึงในคลิป มาพูดในบลอคนี้แล้วกันครับ
1. Environment variables
ใน macOS, linux หรือแม้แต่ Windows จะมีสิ่งนึงที่เรียกว่า environment variables เหมือนในภาษาโปรแกรมมิ่ง เราก็มีการประกาศตัวแปร ซึ่งมีหน้าที่ไว้เก็บค่าต่าง ๆ เช่น val name = "BaiPhai"
ตัวแปร name
นี้ก็ไว้เก็บค่าคำว่า BaiPhai
นั่นเอง
การตั้งค่าให้ environment variables นั้น ใน macOS สามารถตั้งได้โดยพิมพ์คำสั่งใน terminal, bash หรือ shell ว่า export <ชื่อตัวแปร>=<ค่าของตัวแปร>
แต่จะมีผลแค่ใน session ของ shell นั้น ๆ เท่านั้น คือถ้าเปิดใหม่จะไม่ไปด้วย ส่วนใน Windows การตั้งแบบชั่วคราวแบบนี้ ผมไม่ทราบครับว่าทำยังไง 555
ส่วนถ้าจะตั้งฐาวร ประมาณว่าเปิด shell ใหม่ทุกครั้ง ก็ให้มีตัวแปรนี้อยู่ใน session นั้น ๆ เลยโดยอัตโนมัติ ถ้าเราใช้โปรแรกม bash เฉย ๆ เราก็เอาคำสั่ง export
นี้ไปใส่ไว้ในไฟล์ ~/.bashrc
แต่ว่าในคลิปนั้นใช้ shell ที่ชื่อว่า zsh
เลยต้องไปตั้งคำสั่งในไฟล์ ~/.zshrc
แทน
ส่วน Windows ขอไม่เล่าแล้วกัน เอาเป็นว่า search ว่า set environment variables windows
ก็น่าจะเจอ
ส่วนคำสั่งนึงที่เห็นคือคำสั่ง unset <ชื่อตัวแปร>
เป็นการลบตัวแปรนั้นออกจาก environment variables นั่นเอง
การใช้ environment variables เฉพาะ command นั้น ๆ เช่นถ้าเราจะ complile code ภาษา go ให้สามารถทำงานบน linux ได้บนระบบปฏิบัติการอะไรก็แล้วแต่ เราต้องพิมพ์คำสั่ง export GOOS=linux
ก่อนการพิมพ์คำสั่ง go build
แต่เราไม่ต้องการตั้งค่านี้ทิ้งไว้ ซึ่งอาจจะลืม unset GOOS
ได้ ก็เลยพิมพ์ในบรรทัดเดียวไปเลยว่า GOOS=linux go build
แบบนี้ก็ได้
ทั้งนี้ในหลาย ๆ โปรแกรมอาจมีการใช้ environment variables เป็นปกติอยู่แล้ว เช่นถ้าใครเคยตั้ง JAVA_HOME
ก็คือการตั้ง environment variables นั่นเอง
2. โปรแกรมที่ชื่อว่า hub
เป็นโปรแกรม open source ตัวนึงที่เขียนขึ้นด้วยภาษา go ที่จะออนท๊อปคำสั่ง git อีกที (คือสามารถใช้คำสั่ง git ได้ทุกคำสั่งผ่านโปรแรกม hub) แต่ที่มากกว่านั้นคือมีความสามารถเพิ่มเติม ซึ่งไปดูได้ที่ ยก GitHub มาไว้ในเครื่อง ใช้งานผ่าน command line ซึ่งเป็นบลอคที่ได้เผยแพร่ไปแล้ว
3. shell ที่ชื่อว่า zsh
อาจอ่านได้ว่า “เซ็ต เอส เฮ็ด” หรือ “ซีเชล” เป็นโปรแกรม shell ตัวหนึ่งที่มีความสามารถมากกว่าโปรแกรม default ที่ชื่อว่า bash ในส่วนของ zsh นั้นสามารถ เขียน plugins หรือมี plugins ให้ใช้อย่างมากมาย
จริง ๆ แล้ว zsh นั้นมีอยู่ใน macOS โดยปริยายอยู่แล้ว แต่เราลง Oh My Zsh เพิ่มเข้าไปด้วยความมักง่าย เพราะถ้าจะตั้งอะไรหลาย ๆ เองอาจต้องใช้บริการ Google กันหลายรอบหน่อย แต่ตัว Oh My Zsh เนี่ย เขาเตรียมบางส่วนมาให้อยู่แล้วเช่นคำสั่งย่อ ๆ ของ git ด้วยความขี้เกียจก็เลยลงตัวนี้แหละ
สำหรับ plugins ใน zsh ที่ผมใช้ประจำก็จะมี git, fast-syntax-highlighting, zsh-wakatime ฯลฯ เพื่อเพิ่มความสะดวกในการใช้ command ยิ่ง ๆ ขึ้นไป
4. ตัวหนอน ~ หรือ Home directory
แต่ละ user ในแต่ละระบบปฏิบัติการจะมีสิ่งที่เรียกว่า home directory ซึ่งแต่ละ os จะมี path ที่แตกต่างกันไป เวลาเราอ้างอิงที่ home directory เราสามารถใช้อักขระ ~
แทนได้
เช่น user ผมใน macOS ชื่อ wasith ก็จะมี default path ของ home directory ที่ /Users/wasith
และถ้าผมอยู่ใน session ของ wasith ก็สามารถเรียก ~
แทน full path ได้
5. โปรแกรม Visual Studio Code
มันคือ text editor ตัวหนึ่งที่ผมมองว่า powerfull มาก ๆ มากกว่า Notepad, Notepad++, Eidtplus, Textmate, Sublime, Atom ซะอีก มันจะมี extesnions ต่าง ๆ ให้ลงมากมายเพื่อเพิ่มความสามารถให้กับ Visual Studio Code หรือเรียกสั้น ๆ ว่า VS Code (วีเอสโค้ด) นั่นเอง
6. โปรแกรม brew
หรือชื่เต็ม ๆ ว่า Homebrew (อ่านว่าโฮมบลู) มันนิยามตัวเองว่า “แพคเกจเมเนเจอร์ที่ขาดหายไปของ macOS” ถ้าใครเคยใช้ linux แล้วใช้ apt-get
หรือ yum install
ก็คล้าย ๆ กัน แต่เป็นโปรแกรมใร macOS แทน แบบไม่ official ด้วย เพราะถ้าตัว official คือโปรแรกม App Store นั่นเอง 555
7. .tar.gz
คนทั่วไปมักจะรู้จัก .zip
หรือ .rar
หรือ .7z
กันบ้าง ซึ่งเป็นการจับกลุ่มและ/หรือทำการบีบอัด (compress) ของไฟล์ ซึ่งใน unix นั้น การบีบอัดนั้นจะได้ออกมาเป็น .gz
แต่ .gz
นั้นรองรับแค่ไฟล์ ๆ เดียว ไม่รองรับระบบ directory หรือ folder เลยต้องจับกลุ่มไฟล์ให้เหลืออันเดียวก่อนก็คือ .tar
แล้วค่อยทำการบีบอัด พอรวมไฟล์และบีบอัดเลยได้ออกมาเป็น .tar.gz
8. .pkg และ .msi
ใน macOS นั้นจะมีตัวติดตั้งโปรแกรมเป็นนามสกุล .pkg
ส่วนใน Windows นั้นจะเป็น .msi
ซึ่งทั้งสองตัวจะมีการ signing หรือการลงลายเซ็นว่าไฟล์ลงตัวนี้ของจริงนะ ไม่ใช่ของใครก็ไม่รู้สร้างขึ้นมา ส่วนใน linux ไม่มีระบบนี้เลยใช้สิ่งที่เรียกว่าการ cheksum แทนที่เราจะเห็นเวลาดาวโหลดบางอย่างของ linux จะมีเลข md5, sha1 มาให้ดูด้วยเพื่อเทียบว่าไฟล์สมบูรณ์หรือป่าว ของจริงหรือป่าว
สวัสดีครับ
ตอนนี้นึกออกเท่านี้ครับ 555 เพราะว่าผมลบคลิปไปแล้ว SSD ผมจะเต็ม และเน็ตไม่แรงพอที่จะเข้าไปดูคลิปอีกรอบ (กลัวเน็ตหมดด้วย)
ถ้าใครมีคำถาม หรือสงสัยตรงไหนเพิ่มเติมให้คอมเมนต์ไว้ได้เลย