[카테고리:] 잡다한 개발

  • PhpStorm 환경설정 단축키가 동작 안하는 문제

    원인은 fcitx 입력기가 Ctrl+Alt+S 키를 선점하였기 때문이다.

    1. Fcitx 구성하기 > 전역 설정 탭으로 이동
    2. 하단 ‘추가 설정 보기’ 체크
    3. 모든 구성 및 입력 기록 저장의 단축키를 해제
      • Ctrl + Alt + s 버튼 클릭하고
      • 단축키 조합 받는 창에서 Esc 누름

    이렇게 하면 PhpStorm 이 올바르게 Ctrl + Alt + s 를 수신받는다. 이상.

  • PhpStorm Project 설정 자동화하기 – Part 2

    지난 포스트에 이어 설정 파일을 자동화하기 위한 과정을 계속 기록한다. 리포지터리에 계속 필요한 설정을 하고, IDE의 설정 파일의 변화를 추적한다. 추적된 변경 사항은 따로 .md 파일로 기록한다.

    내가 PhpStorm을 주로 사용하는 용도는 워드프레스 플러그인 또는 테마 개발이므로 워드프레스 코어 루트 디렉토리를 기준으로 한 프로젝트를 생성한 후 여러 자투리 설정을 대상으로 한다.

    많은 반복을 거쳐 자동적으로 기억나는 몇몇 필수적인 아래 요소들을 대상으로 기록을 하였고, 차후 나머지 설정들은 생각나는대로 덧붙일 생각이다.

    • 서버와 XDebug 지원
    • Framework > WordPress 지원
    • 단어 사전 추가
    • 올바른 composer.json 경로
    • 프로젝트에서 제외되는 경로
    • 정적 검사를 위한 PHP 언어 레벨
    • 내가 개발하는 영역에만 코드 검사를 하도록 커스텀 스코프 지정
    • 개발 중인 테마/플러그인에 VCS 경로 지정

    이것들은 주로 workspace.xml 파일에 저장되는데, XML 파일을 적절히 편집할 수 있다면 자동화가 그렇게 어렵지는 않을 것으로 보였다.

  • PhpStorm Project 설정 자동화하기 – Part 1

    PhpStorm을 오랜 기간 사용해 왔고, 그동안 많은 프로젝트를 생성해 왔다. 물론 주로 워드프레스 프로젝트였는데, 셋업만 엄청나게 오래 걸린다. 은근해 해 줘야 할 것이 많기 때문이다.

    이런 설정은 프로젝트 파일의 숨겨진 .idea 라는 디렉토리에 저장되고 나름의 규칙이 있다. 그러므로 매번 일일이 손으로 하기 보다는, 구조를 잘 파악해서 셋업된 대로 자동화 하는 것이 효율적이지 않을까?

    그래서 이번에 큰 맘 먹고 자투리 프로젝트를 해 보기로 했다. PhpStorm 프로젝트 셋업을 자동화하자! 재밌겠다!

    우선 공개된 리포지터리를 생성했다. 그리고 여기에 샘플 PhpStorm 프로젝트를 생성하고, 여기에 원하는 셋업을 한 후에 설정 파일이 어떻게 변화하는지 모니터하고 문서를 첨부하였다.

  • ipTime 공유기 무단 접속 IP 차단하기

    iptime공유기에 국가별 차단 기능이 생겼다고 해서.. 라는 글을 보고 공유기를 업데이트 해 보니, 진짜로 IP 차단 기능이 생긴 것을 확인하였습니다.

    그런데 UI가 조막만해서 IP를 일일이 관리하고 차단하기가 너무 어려웠어요. 오호라? UI를 잘 보니 규칙을 파일로 백업하는 기능이 있었지 뭡니까? 이것으로 .cfg라는 파일을 생성하는 것을 확인하였습니다.

    Type=firewall # Do not modify
    Version=1.0.0 # Do not modify
    lang=utf-8 # Do not modify
    
    [차단 #1]
    enable = 1
    schedule = 0000000 0000 0000
    flag = 0
    {
    	direction = outin
    	src_type = ip
    	dest_ip_address = {start}-{end}
    	protocol = none
    	policy = drop
    }
    [차단 #2]
    enable = 1
    schedule = 0000000 0000 0000
    flag = 0
    {
    	direction = outin
    	src_type = ip
    	dest_ip_address = {start}-{end}
    	protocol = none
    	policy = drop
    }

    위는 그 cfg 파일의 샘플입니다. 대략 24시간 외부에서 내부로 접속하는 특정 IP 대역을 차단하도록 설정한 예입니다. {start}와 {end}에 각각 IPv4 형태로 문자열을 넣어주면 됩니다.

    처음에는 한국 인터넷 정보 센터 (KRNIC)에 가서 모든 국가별 IP 할당 대역을 파악한 후, 특정 국가의 IP를 전부 차단시킬 생각습니다. 그러나 공유기의 성능 한계가 있어 200개까지 등록되지 않는다는 제약이 있어 이렇게는 할 수 없더군요. 예를 들어, 중국의 모든 IP 대역 등록건만 해도 8000여개에 달하니까요.

    그래서 이렇게 많은 양의 IP 대역에 대해 애쓰기보다는, 관리자 로그 파일을 보고 내 공유기에 천착하는 IP만 차단하기로 했습니다. IP 타임 관리자 로그를 보면 다음처럼 나옵니다.

    2022/03/11 09:02:22	DHCP 서버가 IP 할당함: 192.168.10.32 (MAC : XX-XX-XX-XX-XX-XX)
    2022/03/11 08:20:19	잘못된 VPN 계정 또는 암호로 접속을 시도 하였습니다(qq, XXX.XXX.XXX.XXX)

    2번째줄입니다. 어디선지는 모르지만 VPN 계정이나 관리자 로그인을 노리고 집요하게 뭔가 하는 것입니다. qq라는 id로 로그인 실패를 했고, 뒤에 원격 IP가 나옵니다.

    IP 조회를 해 보면, 진짜 아무 연고도 없는 곳입니다. 이제 로그 특정 부분을 따다 IP 부분만 수집합니다.

    우선 아래 그림처럼 공유기 관리자 로그를 복사해 파일로 만듭니다.

    지금은 깨끗이 비어 있지만, 놓아두면 로그가 많이 쌓입니다.

    파일의 로그에서 IP만 추출해 설정 파일로 만들어 주는 파이썬 스크립트를 제작했습니다. 로그 파일의 이름이 log.txt라면 이것을,

    python iptime_block_from_log.py < log.txt > rule.cfgCode language: CSS (css)

    처럼 입력합니다. 그러면 rule.cfg 파일이 만들어 집니다. 그럼 이 cfg 파일을 공유기에 올려 두면 됩니다.

    1번을 눌러 파일을 선택, 2를 눌러 공유기로 전송

    저는 이렇게 적용 후, 확실히 해당 지역에서 무단 접속이 사라진 것으로 보입니다. 효과가 나름 있는 거 같네요. 다만 공유기의 로그도 무한히 있는 것도 아닙니다. 최대 400개가 한계이니 더 다양한 IP를 차단할 수 있으려면 좀 더 로그나 IP를 쌓아두고 관리하면서 차단할 수 있어야 하겠네요. 일단 이번에는 여기까지 만들어 보고 더 나은 버전은 차후에 고민해 보겠습니다.

    덧, 이후 계속 “잘못된 VPN 계정 또는 암호로 접속을 시도 하였습니다” 메시지와 차단한 IP가 기록되네요. 이 방법으로는 접속 자체를 막지 못하는 것 같습니다.

  • kime 수동 빌드 기록

    sudo apt install build-essential libdbus-1-dev llvm libclang-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev cmake libgtk2.0-dev libgtk-3-dev
    git clone https://github.com/Riey/kime
    cd kime
    scripts/build.sh -ar
    scripts/release-deb.sh ~
    sudo dpkg -i ~/kime_amd64.deb
  • 유튜브 스트리밍 오디오만 재생하기

    준비물

    1. youtube-dl
    2. VLC

    Youtube-dl

    youtube-dl -g <url> | tail -n1Code language: HTML, XML (xml)

    출력으로 오디오의 URL 경로가 나온다.

    쉘스크립트

    위에서 얻은 URL과 연동 가능한 플레이어면 아무 거나 관계 없는데, 커맨드라인에서도 잘 동작하는 VLC를 사용한다. 개인적으로 mplayer가 좋은데, 오류가 있어 사용하지 못한다.

    그리고 아래처럼 커맨드라인으로 실행하면 OK.

    cvlc <URL 경로> --novideo --quiet

    물론 웹브라우저를 이용해 유튜브로 직접 가서 플레이하는 것도 나쁘지는 않지만, 듣기만 하는 건데도 HD급 영상을 계속 플레이하느라 CPU 사용률과 메모리 점유가 꽤 된다. VLC로 하면 훨씬 CPU 사용률이 적다. Youtube에서 음질을 조정할 수 있지 않을까 생각해 봤는데, 아직 복잡한 옵션은 잘 모르겠다.

    윈도우에서

    참고로 윈도우에서는 이렇게 해서 원하는 플레이어에서 재생 가능하다. 적당히 youtube-dl.exe와 플레이어의 경로는 편집하기 바란다.

    powershell -command "&\"C:\Program Files\KMPlayer 64X\KMPlayer64.exe\" $(C:\Users\ep6tr\Downloads\youtube-dl.exe -g \"https://www.youtube.com/watch?v=KNMbDIKJ6T0\" | Select-Object -last 1)"Code language: PowerShell (powershell)