เมื่อนานมาแล้ว ผมจะเก็บไฟล์โค้ดทั้งหมดลงใน ~/Code ซึ่งเมื่อจะเรียกใช้งานผ่าน Terminal หรือ Clone Repo ใหม่ก็ต้องทำการ cd Codeก่อนทุกครั้ง แถมเวลาเปลี่ยนเครื่องใหม่ (ตอนนี้มี Mac สามเครื่อง) ก็ต้องมาจัดการกับโค้ดเหล่านี้ใหม่ทุกครั้งไป

ครั้นจะ Sync ทั้งหมดขึ้น Cloud ก็ไม่ใช่เรื่องที่สมควรนัก เพราะจะเกิด Conflicts ได้ง่าย แถมไฟล์ที่ควรจะ Git-ignore ก็ถูกนำขึ้นไปด้วย เมื่อก่อนผมเคยนำ Codebase บางส่วนไปไว้บน Dropbox พบว่าเวลาส่วนใหญ่ถูกใช้ไปกับ .git และ node_modules

ตอนแรกผมคิดว่าจะเขียน Shell Script มาแก้ปัญหานี้เอง แต่ดันไปเจอกับ ghq เสียก่อน ซึ่งเขียนด้วย Golang เสียด้วย มีคนทำเป็น Rust ด้วยแต่ยังไม่กล้าลองเพราะยังไม่เป็นที่นิยมเท่ากับ ghq

วิธีใช้ง่ายมาก แค่รันคำสั่ง ghq get ตามด้วยชื่อ username/reponame หรือ Url เต็มก็ได้ ในกรณีที่ก็อปมาจาก Browser หรือว่าใช้ Gitlab

ถ้ายังไม่เคย Clone มันจะทำการ Clone จาก github.com/username/reponame ไปเก็บเอาไว้ที่ ~/ghq/github.com/username/reponame โดยที่เราไม่ต้อง cd ก่อนให้เสียเวลา

Image for post
Image for post

และถ้าเราเพิ่มพารามิเตอร์ -l (Look) เข้าไป หลังจากที่ Clone แล้วมันจะ cd เข้าไปให้เองโดยอัตโนมัติ ทำให้ใช้แทน z หรือ zoxide


You can make a custom profile on Github now by creating a Secret Repository. I believe that it is just launched very recently.

How?

  1. Create a new repository github.com/new (ProTip: Use repo.new 😳)
  2. Use your own username as repository name
  3. Secret revealed!
Image for post
Image for post
Not so secret now lol.

Then check “Initialize this repository with a README” to make Github automatically create README.md file for you

Image for post
Image for post

Click create repository, and back to your profile page…

Image for post
Image for post
It works!

You can edit the readme whenever you want.

Image for post
Image for post
It has include some ideas about what to do next. 👍

Feel free to share yours when you have one. Thank you for reading! 🙌


These are my typing practice drills. I tried to do it every day, 20–30 minutes per day.

Common words

I like typing on 10ff it’s easy to use and I can use custom CSS to force me to look a word ahead

Image for post
Image for post

I use 2 modes for practice

Article — Medium.com

I like to read from medium.com, but if I type along I can get 2 birds with 1 stone. It’s not fast but quite fun. Previously I will copy the text from it’s article and type away in a text editor. …


This heavily mess up keyboard usage. You have been warned.

บทความนี้เขียนหลังจาก Apple เปิดตัว MacBook Pro 16" ที่มาพร้อมกับ Keyboard แบบเก่า และเจียดพื้นที่บน Touch Bar เล็กน้อยกลับมาให้ปุ่ม Escape สร้างความฮือฮา (?) ให้กลับเหล่าผู้ใช้แมค และคนรอแซะในระดับนึง

แต่มันไม่มีผลกับผม เพราะผมแทบไม่ได้แตะปุ่ม Escape อีกเลยหลังจากได้รู้จักกับ Karabiner-Elements

Image for post
Image for post
“Hello I’m back” — esc key

Karabiner-Elements

Karabiner-Elements (ชื่อเก่าคือ Karabiner, KeyRemap4MacBook) เป็นโปรแกรมบนแมคที่ใช้ Remap ปุ่มได้แบบ Low-level มากกว่าโปรแกรมทั่วไป เพราะมันรวมทำงานเกือบถึงระดับ Hardware ซึ่งรวมไปถึงปุ่ม Modifiers ต่างๆ เช่น Control, Shift, Command, Capslock เป็นต้น ดาวน์โหลดได้ที่นี่ https://pqrs.org/osx/karabiner/

หน้าตาของ Karabiner-Elements ในโหมดธรรมดาจะ Remap จาก From key ไป To key เฉยๆ ไม่มีอะไรซับซ้อน ตามภาพนี้

Image for post
Image for post
Simple modifications : Remap CapsLock to Backspace

ความพิเศษของมันจะอยู่ในโหมด Complex modifications ที่เป็นจุดขายหลักของโปรแกรมนี้เลย (แต่คนไม่ค่อยนิยม เพราะใช้ยากและซับซ้อนตามชื่อ)

Image for post
Image for post
Complex modifications mode

ตัว Rule ต่างๆ จะอยู่ในรูปแบบของ JSON และรวมอยู่ใน ~/.config/karabiner/karabiner.json เราสามารถเขียนเองได้โดยดูจาก Document บนเว็บ https://pqrs.org/osx/karabiner/json.html


ไม่มีที่ใดสุขใจเท่า $HOME

Image for post
Image for post

ส่วนตัวผมเองชอบลงโปรแกรมต่างๆ ไว้เยอะมาก ซึ่งจะก่อให้เกิดปัญหาเวลาย้าย Mac หรือต้อง Clean Install เพราะต้องมานั่ง Backup หรือจดว่าเราต้องลงอะไรใหม่บ้าง คิดว่าหลายคนคงมีปัญหาคล้ายคลึงกัน เลยจะมาแชร์เรื่องการปรับแต่งต่างๆ แบบที่รันสคริปท์ครั้งเดียวเซ็ตจนเครื่องใหม่กลายเป็นเหมือนเก่าเลยครับ 🤣

ตัวอย่างสิ่งที่ต้องลง

  • เครื่องมือทำมาหากิน : VSCode, iTerm2, Dash, Slack, Timing, Alfred, Keyboard Maestro, Karabiner Elements, Docker for Mac
  • แอพทั่วไป : Google Chrome, Google Drive, Dropbox, 1Password, Steam 🎮
  • สำหรับ Terminal : Git, Zsh, Tmux, Homebrew, Ruby, Nodejs, Dotfiles ต่างๆ

Boilerplate vs DIY

ถ้ายังไม่แม่น Shell / CLI มากผมมักแนะนำให้หา Framework หรือ Clone จากของคนอื่นที่ทำมาแล้ว มีเต็มไปหมด แต่พยายามเลือกอันที่ไม่ซับซ้อน เพราะเดี๋ยวเราต้องมาปรับแต่งตามความต้องการของเราทีหลัง แล้วพอเราเริ่มเชี่ยวชาญก็ Fork ออกมาหรือเริ่มเขียนใหม่แต่แรกเลยก็ยังได้

ตัวที่แนะนำคือ https://github.com/thoughtbot/laptop ถ้าเน้นแค่ลงแอพต่างๆ หรือ https://github.com/holman/dotfiles ถ้าจะเอา Dotfiles ด้วย

Dotfiles?

มันคือไฟล์ที่มีจุดนำหน้า เช่น .bash_profile .zshrc .gitignore เอาไว้เก็บ Configuration ต่างๆ และมักมีขนาดเล็ก ซึ่งเราสามารถ Backup ไปบน Google Drive หรือ Github ก็ได้ แล้วพอลงแมคใหม่ก็ค่อย Restore กลับมาไว้ที่ Home Directory (~/) อันนี้แนะนำว่า Dev ทุกคนควรมีพกติดตัวไว้ใช้ อุ่นใจค่ะ 💁

สำหรับ Script ที่ผมเขียนเองจะเป็น Ansible เพราะว่าเขียน Script ยังไม่คล่องมาก 😛

ข้อดีของการเอา Dotfiles ไว้บน Git คือเราสามารถดึงไฟล์ลงแมคได้เร็วกว่ารอลง Sync จาก Cloud อื่นๆ แถมยังแชร์ให้เพื่อนๆ ใช้ได้ง่ายกว่าด้วย 👍


ในวันเสาร์ที่ 8 กันยายนนี้ จะมีงาน DevOps BKK 2018 ซึ่งนับว่าเป็นงานใหญ่งานแรกของวงการ DevOps ในไทยเลยก็ว่าได้ โดยงานนี้เกิดขึ้นจากการร่วมมือกันของหลายๆ บริษัทที่พัฒนาโปรดักต์แล้วมีความรู้ทางด้าน DevOps รวมถึงเหล่า Speaker คุณภาพ มาร่วมกันแชร์เรื่องราวและประสบการณ์ต่างๆ เกี่ยวกับ DevOps ครับ

งาน DevOps BKK จะจัดขึ้นที่ BITEC Grand Hall ห้อง GH 203 ไบเทคบางนาครับ ถ้าสนใจซื้อบัตรยังสามารถกดได้ที่นี่ครับ https://www.eventpop.me/e/3928-devops-bkk-2018 #ขายของ Update : บัตรหมดแล้ว! 😂

Image for post
Image for post
รายชื่อผู้สนับสนุนเยอะมาก แม้จะเป็นงานครั้งแรก 👏

โดยส่วนตัวแล้วรู้สึกตื่นเต้นกับงานนี้มาก ถึงแม้สกิล DevOps จะยังอยู่ในระดับ Padawan ยอมรับว่านี่เป็นงานแรกที่พอดูรายชื่อ Session แล้วถึงกับคิดว่า ถ้าไม่เตรียมตัวไปก่อนน่าจะงงกันแต่เช้ายันเย็นแน่นอน และคิดว่าอีกหลายๆ คนที่ไม่ได้ทำ DevOps เป็นหลักอาจเจอปัญหาเดียวกันได้ครับ 😂

Image for post
Image for post
Session คุณภาพคับแก้ว

พอดูจากชื่อ Session แต่ละห้องแล้ว จะพบว่าอย่างน้อยเกินครึ่งหนึ่ง พูดถึงเรื่อง Container (Docker & Kubernetes และ Tooling ต่างๆ นานา) ครับ! นี่เรียกงาน ContainerCon BKK ก็ได้นะ!

Image for post
Image for post
Container มาแรงนะโฮ่ง (image from doger.io)

จริงๆ แล้วจะมี Track ที่สอน Hands On เรื่อง Docker กับ k8s อยู่แหละ แต่ว่าใน Track อื่นก็น่าสนใจมากพอกัน เลยคิดว่าถ้าเตรียมตัวไปให้พร้อม น่าจะได้เข้าห้อง Advance…

About

Manassarn Manoonchai

Fill something here.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store