Setting up TeamViewer on Ubuntu via SSH command line

  1. SSH into Ubuntu ssh user@your.ubuntu.host
  2. Download TeamViewer (32-bit) using wget or curl : wget http://download.teamviewer.com/download/teamviewer_i386.deb
  3. Install it sudo dpkg -i teamviewer_linux.deb
  4. If dependency problem occurs sudo apt-get -f install then install again sudo dpkg -i teamviewer_linux.deb
  5. sudo teamviewer setup then enter your TeamViewer account username & password
  6. sudo teamviewer daemon start to start TeamViewer daemon
  7. sudo teamviewer daemon enable to enable starting TeamViewer on boot

ครั้งแรกกับ Haskell และ Functional Programming

เมื่อวันก่อนไปเรียน Haskell For Noob ที่ SPRINT3R Geeky Base มา ด้วยความที่ช่วงนี้เห็นภาษาแนว Functional มาแรงในช่วงนี้ ประกอบกับแย่งลงทะเบียนทันเวลา เลยมาลองดู

เริ่มจากการติดตั้ง Haskell ลงบนเครื่องตัวเอง คืนก่อนวันเรียนลองหาข้อมูลไปเจอกับตัว Haskell Stack เห็นว่ามันลงสะดวกดีก็เลยใช้ตัวนี้ (ในคลาสก็ใช้เหมือนกัน) ลงในแมคคำสั่งเดียวใช้ได้เลย ใช้ Homebrew brew install haskell-stack

เนื่องจากเป็นคลาสเบื้องต้น เกือบทั้งวันเลยใช้แค่ GHC (Glasgow Haskell Compiler) เป็นคอมไพเลอร์ที่นิยมใช้กัน กับ GHCi เป็น Interpreter คล้ายๆ กับ irb ใน Ruby เอาไว้ลองศึกษาหรือลองโค้ดเล่นๆ ได้ดี
GHCi ที่มากับตัว Stack รันด้วยคำสั่ง stack ghci แล้ว โหลดไฟล์ .hs ด้วยคำสั่ง :load filename.hs ในคลาสที่เรียนนี้จะใช้วิธีแก้ไฟล์ .hs แล้วใน GHCi ก็รีโหลดด้วยคำสั่ง :reload ให้คอมไพล์ตัวไฟล์เข้ามาใหม่เพื่อรันคำสั่งแต่ละ Function ว่าใช้งานได้ถูกต้องหรือไม่

สิ่งที่ได้จากคลาสนี้ :

  • เข้าใจคำว่า Functional Programming มากขึ้นเยอะ จากตอนที้เรียน Prolog สมัยมหาลัยฯ แล้วแทบไม่เข้าใจว่าทำไม Paradigm มันแปลกๆ และดูใช้งานยากจังเลย
  • รื้อฟื้นการเขียน Recursive Function ที่แทบไม่ได้ใช้เลยตอนเขียนเว็บ
  • ที่มาของ map, reduce ที่เห็นในภาษาอื่นๆ ก็เป็น Functional นั่นเอง
  • เหตุผลที่ Functional Programming มาเริ่มฮิตเมื่อไม่นานมานี้ คือเรื่องของประสิทธิภาพในการคำนวนที่สูงขึ้นกว่าแต่ก่อน และ Concurrency Programming
  • Currying ไม่ได้เกี่ยวกับแกงกะหรี่!
  • Code ที่เขียน, Lecture ที่จด

สุดท้ายนี้ขอขอบคุณ @iporsut ที่เปิดโลก Functional Programming ให้ เพื่อนๆ ที่ร่วมเรียนร่วมแชร์ความรู้กัน และ SPRINT3R สำหรับสถานที่ครับ

[OSX] วิธีใช้ประโยชน์จากปุ่ม Caps Lock

ปุ่ม Caps Lock นี่ปกติก็แทบไม่ได้ใช้อยู่แล้ว แถมบางครั้งยังน่ารำคาญเพราะทำให้เราพิมพ์ผิดเป็นตัวใหญ่ ฆณ์ฮฉฐฐฯ๊็
อย่าง Colemak ก็เปลี่ยนฟังก์ชั่นของปุ่มนี้เป็น Backspace แต่ยังมีวิธีอื่นที่ทำอะไรได้มากกว่านั้น ด้วยการทำให้มันเป็น Hyper Key

Hyper Key เอามาจากปุ่ม Modifier ที่มีในคีย์บอร์ด Space Cadet นอกเหนือจาก Ctrl, Super และ Meta (เดี๋ยวนี้เหลือแต่ Ctrl, Super และ Alt)
ซึ่งเราจะใช้ Hyper ร่วมกับปุ่มอื่นๆ เพื่อสร้าง Shortcut แบบกดง่ายจำง่ายของตัวเองกัน

เริ่มจากโหลดโปรแกรมที่จำเป็นกันก่อน คือ Seil กับ Karabiner

เราจะให้ Hyper Key เป็นการกด Ctrl, Alt (Option), Cmd, Shift พร้อมกันทั้งหมด จะได้ไม่ไปซ้ำกับโปรแกรมอะไรเลยเพราะมันกดยากมาก เราจะใช้ Seil เพื่อ Remap Caps Lock เป็นปุ่มอื่นที่ไม่มีบนคีย์บอร์ดก่อน เช่น F19 แล้วค่อยใช้ Karabiner Remap F19 เป็น Ctrl + Option + Cmd + Shift อีกทีนึง

เริ่มจากเปิด Seil แล้วปรับให้ Keycode ของ Caps Lock เป็น 80 ตรงกับ F19 ในตารางด้านล่าง

Seil

ต่อไปเปิด Karabiner แล้วไปที่แท็บ Misc & Uninstall แล้วกด Open private.xml จากนั้นคลิกขวาที่ไฟล์แล้ว Open With > Text Edit หรือโปรแกรม Text Editor ตัวไหนก็ได้

จากนั้นนำโค้ดนี้ไปแปะไว้ระหว่าง <root> และ </root>

<item>
    <name>Remap F19 to Hyper</name>
    <appendix>OS X doesn't have a Hyper. This maps F19 to Control + Shift + Option + Command.</appendix>

    <identifier>usercustom.f19_to_hyper</identifier>

    <autogen>
        --KeyToKey--
        KeyCode::F19,

        KeyCode::COMMAND_R,
        ModifierFlag::OPTION_R | ModifierFlag::SHIFT_R | ModifierFlag::CONTROL_R
    </autogen>
</item>

เซฟไฟล์ private.xml จากนั้นกลับมาที่โปรแกรม Karabiner แท็บ Change Key กด Reload XML จากนั้นค้นหาและติ๊กที่ช่อง Remap F19 to Hyper

Screenshot 2016-03-03 02.16.04

เท่านี้ก็จะได้ปุ่ม Hyper key เอาไปใช้ทำ Shortcut ต่างๆ ได้มากมาย ที่ใช้อยู่เช่น

  • เปิด Sublime Text ด้วย Hyper + S
  • แอพอีเมล (Polymail) : Hyper + M
  • Google Chrome : Hyper + C
  • Slack : Hyper + A
  • iTerm2 : Hyper + T
  • Dash : Hyper + D

ถ้าอยากให้ทำอะไรได้มากกว่านี้ เช่นถ้ากด Caps Lock เดี่ยวๆ จะกลายเป็น Esc แทน (มีประโยชน์เมื่อใช้ร่วมกับ vim) ให้โหลด private.xml จากที่นี่ไปลงทับของเก่าได้เลย https://github.com/jasonrudolph/keyboard/blob/master/karabiner/private.xml

Sources :