git diff ด้วย meld

ปกติ git diff ใช้ดูการเปลี่ยนแปลงของไฟล์ได้แบบ text mode เช่น

gitdiff.png

ผมติดใจใช้ meld เป็น diff tool มาโดยตลอดเพราะทำให้เห็นการเปลี่ยนแปลงง่ายขึ้นเป็นแบบนี้

meld.png

ที่ผ่านมาผมก็ config git ให้ใช้ meld ด้วยท่าแปลกๆ แล้วก็ใช้มาเรื่อยๆ แต่จะมีอยู่จุดนึงที่รู้สึกว่าลำบากไปหน่อยคือเวลา git diff ระหว่างเวอร์ชั่นแล้วมีไฟล์ที่ต่างกันหลายๆ ไฟล์ เช่น

git diff 1.0..2.0    # สมมติมี 10 ไฟล์ที่ต่างกันจะมีหน้าต่าง meld เด้งขึ้นมา 10 ครั้ง

รู้จักกับ git difftool

ล่าสุดผมล้างเครื่องใหม่ เลยลองค้นดูว่าตอนนี้มีวิธีอะไรที่ดีกว่านี้มั้ยก็ไปเจอกับคำตอบนี้ ใน stackoverflow
ขอคัดลอกคำตอบมาแปะดังนี้

  1. ติดตั้ง meld และตั้งค่า git
    sudo apt-get install meld         # Ubuntu
    brew install homebrew/gui/meld    # OSX
    git config --global diff.tool meld
  2. เวลาอยากดูการเปลี่ยนแปลงก็เรียกคำสั่ง
    git difftool   # ใช้แทน git diff ได้เลย
  3. แต่ที่เจ๋งไปกว่านั้นคือ
    git difftool -d 1.0..2.0      # คำสั่งนี้จะเปิด meld ในโหมด dir diff

บอกลาหน้าต่าง meld เด้งขึ้นมา 10 ครั้งไปได้เลยเพราะคุณจะเจอกับหน้าจอนี้แทน

meld_dir2.png

หน้าจอ meld จะสรุปว่ามีไฟล์ไหนที่แตกต่างกันบ้าง ให้เราดับเบิ้ลคลิกเข้าไปดูไฟล์ที่สนใจได้ทันที

ปกติชอบใช้เครื่องมือ diff/merge ตัวไหนกันบ้างครับ?

GIF with H.264

เคยสงสัยไหมว่าทำไม GIF ใน facebook ถึงกดหยุดได้ ณ จังหวะที่เรากดทันที (ลองเล่นได้ที่นี่ หรือลอง inspect ดูได้ท้ายโพสต์)

facebook_git.png
ก็เพราะว่ามันไม่ใช่ GIF จริงๆ น่ะสิ

นี่มันวีดีโอชัดๆ! เป็น html5 video ที่เล่น loop และ play/pause ตามการกดของเรา

สงสัยไหมทำไม GIF ใน facebook ถึงโหลดเร็วกว่าเว็บอื่นๆ

GIF ต้นฉบับ 5MB:

gif.png

H264 Video 231KB:

video.png

ถ้าไม่ใช้ Video หละจะกด Play/Pause GIF ได้ไหม?
ตอบ ได้ ใช้ 2 รูปสิ GIF กับภาพนิ่ง 

SciTE กับภาษาไทย tis620

พอดีต้องกลับไปแก้โค้ด php ที่ใช้ encoding tis-620, windows-874

หาทางใช้ Sublime Text เปิดแล้วไม่สำเร็จเลยกลับไปขุด Text Editor ตัวโปรดตอนเรียนป.ตรีมาใช้ มันคือ SciTE

SciTE224.png

สามารถตั้งค่าให้เปิดไฟล์โค้ดภาษาไทยได้โดยกด Options -> Local settings

code.page=620
character.set=222

Use Volume button to wake up Nexus 5

nexus5Seem like power button on my Nexus 5 will be broken soon. When I pressed it, the screen turn off and on. I have to press it twice to make it work.

There are many custom ROMs/kernels out there that allow you to:

  • Double tap the screen to wake it up but it cost 2% of battery/hour
  • Use Volume Rocker to wake the screen

I don’t want to install custom ROMs because some of them are not open sources.

The cleanest way to remap button would be:

  1. clone AOSP
  2. modify /system/usr/keylayout/xxx.kl to remap the button
  3. build my own ROM, and flash it

Remap Volume button with temporary recovery ROM

I found a way to avoid permanently root my phone, or flash a custom ROM.  But you still need to unlock your bootloader which will WIPE ALL DATA ON YOUR PHONE!

I temporary boot into a custom recovery ROM via fastboot, modify the keymap file, and eureka!

  1. Get adb and fastboot from Android SDK
  2. Download openrecovery-twrp-2.8.5.2-hammerhead.img (a custom recovery for Nexus 5)
  3. Unlock the bootloader with following command:
    WARNING: THIS WILL WIPE ALL DATA ON YOUR PHONE!!!

    adb reboot bootloader         # reboot to bootloader
    fastboot oem unlock           # unlock the bootloader
  4. Temporary boot into a custom recovery ROM (without flashing it)
    adb reboot bootloader
    fastboot boot openrecovery-twrp-2.8.5.2-hammerhead.img
  5. Press Mount and select System to mount /systemrecovery
  6. On your PC, run:
    adb shell
    vi /system/usr/keylayout/gpio-keys.kl
  7. Modify the content of file from:
    key 115   VOLUME_UP
    key 114   VOLUME_DOWN

    to

    key 115   POWER
    key 114   VOLUME_DOWN
  8. Save [ESC] then :wq[ENTER], then unmount the /system by select System again on your phone
  9. Press back (bottom right of the screen) and Reboot -> System
  10. Choose NOT to install Super SU (DON’T swipe!)

When the phone reboots, you may use Volume Up button to wake the screen now. Unfortunately, the button will not turn up the volume anymore.

Note

I tried modifying the keymap to allow the volume button to acts as both VOLUME UP and button to wake the screen:

key 115   VOLUME_UP    WAKE      # THIS WONT WORK
key 114   VOLUME_DOWN

This does not work because the behaviour of Wake Key was controlled by  PhoneWindowManager.interceptKeyBeforeQueueing which you can read more from the doc and PhoneWindowManager source code. Seem like we can turn up the volume while listening to music without waking up the phone (That might be the feature that prevent this to work).

.ssh/config: สร้าง shortcut สำหรับ ssh ที่ใช้บ่อยๆ กันเถอะ

เวลาจะ SSH แล้วต้องมานั่งนึกมั้ยครับว่า server นี้ใช้ user/port อะไร, domain บางทีก็ยาวจนขี้เกียจพิมพ์ คำสั่ง ssh ใช้ option -p ระบุ port ส่วน scp ต้องใช้ -P (พีใหญ่) พิมพ์ผิดพิมพ์ถูกหลายครั้งกว่าจะส่งไฟล์ได้

ssh -p 2345 satoshi@gym1.pewter.com
scp -P 2345 satoshi@gym1.pewter.com:~/pikachu.txt .

ไฟล์ ~/.ssh/config

ไฟล์ ~/.ssh/config ช่วยให้เราตั้งค่า username, port, domain สำหรับ host ที่เราใช้บ่อยๆ เก็บไว้ได้

Host gym1                   # ตั้งชื่อเล่น
        HostName gym1.pewter.com    # หรือใช้ IP ก็ได้
        User satoshi
        Port 2345
Host red                    # มีได้หลายๆ host เลย
        HostName team-rocket.com
        User nyarth
        Port 4529

เวลาจะใช้ ssh ก็พิมพ์เพียงแค่ชื่อ Host สั้นๆ ก็พอ

ssh gym1
scp gym1:~/pikachu.txt .

ปล. ลอง man ssh_config ดูได้นะครับว่ามี options อะไรให้ใช้อีกบ้าง

Tetraodontidae – Pufferfish vs Porcupinefish

Divers Who Want To Learn More

Fact: Sometimes porcupinefish and pufferfish are collectively known as pufferfish (this is where confusion often sets in)

The Tetradontiformes are represented by 10 families with about 360 different species overall; most are marine and they are most diverse in the tropics with very few species in temperate waters, they are completely absent from cold waters. A few species are found in freshwater streams and estuaries.

This post is mostly focused on the difference between porcupinefish and pufferfish because during a conversation with a friend today we were unsure whether the fish we were discussing were called porcupinefish, balloonfish or pufferfish. So this post is for my dear friend and big brother Kana😀

Common name Porcupinefish / Balloonfish  Pufferfish
Family Diodontidae Tetraodontidae
Defence mechanisms Puff up body by drawing in water or air through the mouth into a small chamber near the stomach.

Their body is covered with sharp spines which…

View original post 445 more words

“วิถีแบบไทยๆ” กับคำตอบว่าทำไมความคิดใหม่ๆ ถึงเกิดขึ้นได้ยากบนแผ่นดินนี้

Geekjuggler's Think Tank

ข้อความข้างต้นฟังดูแล้วอาจแทงใจดำ แต่นี่คือความจริงที่คนไทยกำลังเผชิญหน้าอยู่ (และไม่มีใครกล้าที่จะออกมาบอก)

หัวข้อนี้ผมได้มาจากการไปฟังเสวนา “Very Thai: Cultural Filter” โดย Philip Cornwel-Smith ผู้เขียน “Very Thai” หนังสือที่ว่าด้วยวัฒนธรรม “แบบไทยๆ” ที่เราเองก็ไม่เคยสงสัย หาความหมาย หรือ ตั้งคำถามกับพวกมันมาก่อน เช่น การเอาทิชชู่สีชมพูมาห่อช้อนส้อม หรือ ทำไมไฮโซต้องตีกระบัง

จากความรู้ที่ได้รับตลอดเกือบสองชั่วโมงจากหนึ่งในคนที่มองสังคมไทยแบบถึงกึ๋นที่สุด
ประโยคที่ผมฟังแล้วถึงกับต้องหยิบสมุดมาจดในทันที (และเป็นที่มาของ blog นี้) คือ

Foreign Designers of ‘Thai Style’ were more Freedom
นักออกแบบชาวต่างชาติมีอิสระมากกว่า (คนไทย) ในการเล่นกับ ‘ความเป็นไทย’ 

View original post 203 more words

เลิก host blog เองละครับ

ก่อนหน้านี้เคย

  1. เขียน web blog เอง -> บั๊กๆ บึ้มๆ ขี้เกียจ maintain (ฝากไว้โฮสต์ฟรี แล้วไม่ได้ดูแล ข้อมูลหายหมดเลย T_T)
  2. เขียนกะ blogspot ซักพัก
  3. self-hosted wordpress บน shared web hosting ทั่วไป
  4. ย้ายมาใช้ wordpress.com ครับ มีข้อจำกัดเรื่องการ customize หน้าตา + การใช้ html tag ตามนี้ครับ

อัพโหลดไฟล์บางนามสกุลไม่ได้ ตัวอย่างโค้ดเลยไปฝากไว้กับ github page แทน

แต่ไม่ต้อง maintain เอง เย้!