Using AutoHotkey to adjust DELL monitor brightness/contrast

  1. Install DELL Display Manager.
  2. Commands
    Increase Brightnesss
    C:\Program Files (x86)\Dell\Dell Display Manager\ddm.exe /IncControl 10 1
    Increase Contrast
    C:\Program Files (x86)\Dell\Dell Display Manager\ddm.exe /IncControl 12 1
    Decrease Brightness
    C:\Program Files (x86)\Dell\Dell Display Manager\ddm.exe /DecControl 10 1
    Decrease Contrast
    C:\Program Files (x86)\Dell\Dell Display Manager\ddm.exe /DecControl 12 1
    We can passing multiple arguments at the same time like this
    C:\Program Files (x86)\Dell\Dell Display Manager\ddm.exe /IncControl 10 1 /IncControl 12 1
  3. AutoHotkey example
>^PgDn::
  Run, C:\Program Files (x86)\Dell\Dell Display Manager\ddm.exe /DecControl 10 3 /DecControl 12 3
  Return

>^PgUp::
  Run, C:\Program Files (x86)\Dell\Dell Display Manager\ddm.exe /IncControl 10 3 /IncControl 12 3
  Return

socket.io server (wss://) behind nginx proxy server

สามารถพบได้ทั่วๆ ที่ใครก็จะแนะนำให้ใส่ config ประมาณนี้ เพื่อทำ reversed proxy ไปยัง socket.io ด้านหลัง

        location ^~ /socket.io/ {
                proxy_pass https://127.0.0.1:8089;
                proxy_redirect off;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_set_header Host $host;
        }

พอเราทำตามนี้กลับเจอ error WebSocket connection to 'wss://your-domain.com/socket.io/' failed: Error during WebSocket handshake: 'Upgrade' header is missing นี้ใน Console ของ Browser

Continue reading “socket.io server (wss://) behind nginx proxy server”

SSH private_key in phpStorm

ถึงแม้ว่าใน .git/config เราจะระบุ puttykeyfile เอาไว้แล้ว แต่ phpStorm มันไม่ได้เอา key นั้นมาใช้ เราเลยต้อง settings เพิ่มเติม เพื่อให้มันสามารถ ssh ไปข้างนอกได้ด้วย key ที่เราต้องการ

Continue reading “SSH private_key in phpStorm”

Local Port Range

ตอนที่เซิร์ฟเวอร์ยิง Request ออกนอกเครื่องพร้อมกันเยอะมาก จะเจอ error แบบนี้ ถ้าใช้ Local port หมด

cURL error 7: Failed to connect to w.x.y.z: Cannot assign requested address (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)

เราจะต้องกำหนด Local port range ให้กว้างขึ้น เพื่อให้มีจำนวน port ที่ไว้ให้ใช้งานเพิ่มขึ้น

Continue reading “Local Port Range”

TortoiseSVN error while loading shared libraries

Error message:

$ svn
C:/Program Files/TortoiseSVN/bin/svn.exe: error while loading shared libraries: libapr_tsvn.dll: cannot open shared object file: No such file or directory

Solution:

  • Extract TortoiseSVN-x.x.x.xxxxx-x64-svn-x.xx.x.msi installer with 7-zip
  • Move F_libapr to C:\Program Files\TortoiseSVN\bin\libapr_tsvn.dll
  • Move F_libaprutil to C:\Program Files\TortoiseSVN\bin\libaprutil_tsvn.dll

Gracefully stop PHP process with PCNTL

เวลาเขียน process ไรสักอย่างด้วย PHP ที่ใส่ loop ไว้เพื่อให้มันทำงานไปตลอดจนกว่าจะโดน kill เราสามารถใช้ PCNTL เพื่อให้ script PHP รู้ว่ามีคนขอ ให้ process หยุดทำงานได้แล้ว ถ้ามีงานที่ทำต่อเนื่องอยู่ยังไม่ถึง checkpoint จะได้มีโอกาสทำต่อให้เสร็จก่อน และก็ exit; ตัวเองซะ ไม่ต้องไปทำ task ต่อไป.

Continue reading “Gracefully stop PHP process with PCNTL”

Google Ads MCC init

พอดีจะต้องสร้าง MCC แยกออกมาเพื่อทำอีกโปรเจคนึง แต่ลืมไปหมดแล้ว ว่าผมต้องเตรียมบัญชี MCC ยังไงบ้าง รอบนี้เลยจดไว้หน่อยแล้วกัน

Continue reading “Google Ads MCC init”

JavaScript get EventListeners

เวลาต้องมาแก้ Code frontend (HTML+JS) ที่เขียนโดย bind event จากใน JS เช่นลักษณะนี้

$('DIV.action[action=edit]').bind('click', function() {
  // ...
});

แล้วโจทย์คือเราต้องการจะ debug หรือแก้ event handler นั้นๆ ปัญหาที่เราจะพบ คือ ถ้าไฟล์มันมีเยอะมาก มีความซับซ้อนมาก แถมไม่ได้เขียนใน framework ที่เป็นมาตรฐาน หรือที่จะทำให้เรารู้ได้ทันทีว่าต้องไปหาที่ไหน. ตัวช่วยทางนึง คือ เราสามารถเรียกดู Event handler ของ DOM Element ที่เราสนใจ ได้โดยตรงเลย ลักษณะนี้

// jQuery
$._data($('#some-id')[0], "events");

// native
window.getEventListeners( document.getElementById('#some-id') );

ถ้าเป็น jQuery ในผลลัพท์ตรง console เราจะสามารถคลิกๆ เข้าไปดูได้จนเห็น [[FuntionLocation]] เลย.