ขยาย คลิป “01 จะเริ่มเขียน GO เริ่มอย่างไร”

Wasith T. (Bai-Phai)
odds.team
Published in
2 min readAug 15, 2018

เนื่องจากมีคนมาคอมเมนต์ใต้คลิป “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 ผมจะเต็ม และเน็ตไม่แรงพอที่จะเข้าไปดูคลิปอีกรอบ (กลัวเน็ตหมดด้วย)

ถ้าใครมีคำถาม หรือสงสัยตรงไหนเพิ่มเติมให้คอมเมนต์ไว้ได้เลย

--

--

Wasith T. (Bai-Phai)
Wasith T. (Bai-Phai)

Written by Wasith T. (Bai-Phai)

ตบมือเป็นกำลังใจให้ผมด้วยนะครับ 😘