Juntai Park

@arkjun@hackers.pub · 47 following · 44 followers

中年(중년)中小企業(중소기업) 開發者(개발자), 90年代(년대) Console Gamer(콘솔 게이머). 좋은 하루를 繼續(계속)해 나아간다. 좋은 하루가 모이면 좋은 人生(인생)이 된다.

韓国人のプログラマー、40代、小学生の息子とゲームするのが幸せ😃💕龍が如く 、ゼルダの伝説、マリオ、ピクミン好き

「いい1日を続ける」
いい1日を続けていけば、いい人生になる!

threads
@rkjun
x
@rkJun
uri.life
@arkjun@uri.life
GitHub
@arkjun

WindowsをMacのように - MacのCMD + バッククォートキーのショートカットをWindowsで使用する方法

Juntai Park @arkjun@hackers.pub

長い間、メインの開発環境としてMacを使っていましたが、Windowsを再びメインで使い始めて1年が経ちました。

いくつかのデメリットはあるものの、Windows 11+WSL(Ubuntu)環境での開発も悪くありません。もちろん、CMDキーがないことや、Ctrlキーを使ったコピー&ペーストが不便な点は否めません。

しかし、MacにはないWindowsのメリットが気に入っており、逆にWindowsにはないMacのメリットも魅力的です。

またいつかMacを再びメインにして、Windowsをサブにする日も来るでしょう。メイン環境は状況によって柔軟に変えていけるものと考えています[1]


前置きが長くなりましたが、僕がMacでよく使うショートカットキー、CMD + `(バッククオート) は、同じアプリ内のウィンドウを切り替える機能を持っています。例えばChromeブラウザを2つ開いている場合、このショートカットを押すとChromeのウィンドウ間を切り替えられます。 Macで一番よく使っていたショートカットで、Windowsでも似たような機能をするショートカットを一生懸命検索しましたが見つかりませんでした。

そこで、AutoHotkey[2] を使って簡単なスクリプトを作成して使用しています。

完璧に動作するわけではなく、個人的には「そこそこ満足できる」レベルの動作ですが、

  • Macに慣れているがWindowsも使っている誰かの役に立つように
  • Hackers' Pubの活性化(?)を願って

このAutoHotkeyのスクリプトコードを共有します。

; Alt + `キーを押したときに実行されるコード
; MacOSのCMD + `(バッククオート)キーと同じ機能(同一アプリ内のウィンドウ切り替え)をWindowsで実現
!`::
{
    focusedWindow := WinExist("A")
    if !focusedWindow
        return

    focusedPID := WinGetPID(focusedWindow)
    focusedPName := WinGetProcessName(focusedWindow)
    focusedClass := WinGetClass(focusedWindow)
    focusedTitle := WinGetTitle(focusedWindow)

    ; Get all windows of the same class and process
    windows := []
    for window in WinGetList()
    {

        if (WinGetPID(window) = focusedPID && WinGetTitle(window) != focusedTitle)
        {
            windows.Push(window)
        }
    }

    if (windows.Length > 1)
    {
        WinActivate(windows[2])

    } else if (windows.Length = 1) {
        WinActivate(windows[1])
    }
}

実行方法は上記のコードを任意のahk拡張子のファイルとして保存し、AutoHotkeyで実行するだけです。また、AutoHotkeyを使えばこのスクリプトを実行ファイル(exe)としてコンパイルすることもできます。

追記)以前、GitHub Gistにも共有しています。

お読みいただきありがとうございました。


  1. 実は、最近1年間は主にWindowsを使用していましたが、その間に時々Macをメインで使うこともありました。 ↩︎

  2. AutoHotkey(オートホットキー): 独自のプログラミング言語(マクロ言語)を用いてコンピュータを制御することができる。「AutoHotkey」という名称から想像できるように、当初はキーボードのホットキー(ショートカットキー)をカスタマイズすることを目的として開発されたが、ユーザーの要望を取り入れる形で開発が進むにつれスクリプト言語と分類されるほどに膨大な機能が実装され、コミュニティも大きなものとなっている。出典: ウィキペディア (https://ja.wikipedia.org/wiki/AutoHotkey) ↩︎

Read more →
0

윈도를 맥처럼 - 맥의 CMD + 백틱키 단축키를 윈도에서 쓰기 (사용중 앱간 윈도우 전환)

Juntai Park @arkjun@hackers.pub

맥을 오랫동안 메인 개발머신으로 사용하다가 윈도를 다시 메인으로 사용한 지 1년째.

여러가지 단점에도 불구하고, 윈도11 + WSL (우분투) 환경에서의 개발이 나쁘지만은 않습니다. 물론 CMD 키도 없고, Ctrl 키를 이용한 복사 붙여넣기는 불편합니다만.

그럼에도 맥에 없는 윈도의 장점들이 맘에 들고, 윈도에 없는 맥의 장점들 또한 맘에 듭니다.

물론, 언젠가 또 맥을 다시 메인으로, 윈도를 서브로 쓰는 날도 오겠지요. 메인은 때로 상황에 따라 교체할 수 있음을 유연하게 생각해 두는 편입니다.[1]


사설이 길었는데, 제가 맥에서 자주 쓰는 단축키인 CMD + `(억음 악센트/백틱) 키 는, 사용 중인 앱의 전환을 시켜주는데, 가령 크롬 브라우저 창을 두 개 열었다면 단축키 사용시에 크롬 브라우저 창 간 전환을 시켜 줍니다.

맥에서 가장 많이 사용하는 단축키여서, 윈도에서 비슷한 역할을 하는 단축키를 열심히 구글링하여 찾아 보았으나 찾을 수 없었습니다.

그래서 AutoHotkey[2] 를 이용해 간단한 스크립트를 만들어서 사용하고 있습니다.

사실 완벽하게 동작하지는 않고, 개인적으로 쓰기에 적당히 만족하는 수준에서만 동작하는 코드라, 공유하기에 부끄럽기도 하고 코드도 초 간단합니다만,

  1. 누군가 맥에 익숙하지만 윈도도 쓰는 사용자에게 도움이 되는 마음과,
  2. Hackers’ Pub 의 부흥(?) 을 기원하면서.

해당 AutoHotKey 스크립트 코드를 공유합니다.

; Alt + 백틱 키를 눌렀을 때 실행되는 코드
; MacOS 의 CMD + ` (Backtick) 키로 동일 프로그램내 창전환을 윈도에서 구현. 
!`::
{
    focusedWindow := WinExist("A")
    if !focusedWindow
        return

    focusedPID := WinGetPID(focusedWindow)
    focusedPName := WinGetProcessName(focusedWindow)
    focusedClass := WinGetClass(focusedWindow)
    focusedTitle := WinGetTitle(focusedWindow)

    ; Get all windows of the same class and process
    windows := []
    for window in WinGetList()
    {

        if (WinGetPID(window) = focusedPID && WinGetTitle(window) != focusedTitle)
        {
            windows.Push(window)
        }
    }

    if (windows.Length > 1)
    {
        WinActivate(windows[2])

    } else if (windows.Length = 1) {
        WinActivate(windows[1])
    }
}

실행 방법은 위의 코드를 임의의 ahk 확장자를 가진 파일로 작성하여 AutoHotKey 로 실행시키면 끝입니다. AutoHotkey 를 통해 해당 스크립트를 실행파일 (exe) 로 컴파일 할 수도 있습니다.

덧) 과거에 이미 GitHub Gist 쪽에 공유해 놓기는 했습니다.

읽어주셔서 감사합니다.


  1. 사실 최근 윈도를 메인으로 쓰는 1년 동안, 중간에 간간히 맥을 메인으로 쓰기도 했습니다. ↩︎

  2. 오토핫키(AutoHotkey)는 윈도우에서 키보드 단축키 설정, 간단한 매크로 제작, 자동화 등을 목적으로 하는 무료 오픈 소스 기반의 스크립트 언어이다. 간단한 프로그램 제작에 특화된 직관적인 문법을 갖추고 있으며 마우스와 키보드 제어, 화면에서 이미지 검색, 윈도우 창 조작, 간단한 GUI 제작 등 언어의 목적에 맞는 기능이 내장되어 있다. 출처 : 나무위키 (https://namu.wiki/w/AutoHotkey) ↩︎

Read more →
0

우분투에서 snap 으로 docker 를 설치했다가 후회한 얘기

Juntai Park @arkjun@hackers.pub

우분투를 쓸때는 apt 로만 패키지 관리를 해왔는데 작년 처음 snap 을 써봤다.

작년 사내 테스트용 (물리) 서버에 우분투 24.04.1 LTS 설치하고 snap 으로 docker 설치해서 여러 모니터링 올리고 어제까지도 잘 쓰고 있었는데, 갑자기 오늘 docker ps 명령이 오류가 나서 봤더니,

$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
docker -D ps # 디버깅 
time="2025-03-12T11:22:58+09:00" level=debug msg="otel error" error="1 errors occurred detecting resource:\n\t* conflicting Schema URL: https://opentelemetry.io/schemas/1.21.0 and https://opentelemetry.io/schemas/1.26.0"

실행도 안되고, 모든 컨테이너는 날라간 상태이고 도커 또한 동작하지 않는다. 디버깅 메시지 보면 스키마 버전 충돌이라고 나온다.

자세한 원인분석을 위해 ChatGPT 의 도움을 받았더니

Docker 데몬이 OTel(OpenTelemetry)과 충돌하여, 스키마 버전(1.21.0 vs. 1.26.0)이 일치하지 않아 발생하는 문제입니다. 주로 Snap의 자동 업데이트 중, Docker의 내부 OTel 설정이 깨졌을 때 나타나는 문제입니다.

snap 자동 업뎃중에 OTel 충돌로 스키마 버전 불일치 문제라고 한다.

스냅 방식 대신 apt 기반 설치가 더욱 안정적이라고 권장해주길래, (새로운 방식이라 일부러 snap 으로 선택했었는데) 다음부터는 그냥 apt 방식으로 설치하기로 했다. (docker 한정)

물론 이번에도 apt 방식으로 변경해서 설치.

sudo snap remove docker
sudo apt update
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker

테스트 서버 관리에 시간을 빼앗긴 후에야, 테스트 서버도 백업해 둬야겠다 싶다. 모니터링 설정이랑 빌드 설정이랑 도커 설정 다 백업해 놔야겠다.

Read more →
0