원인은 fcitx 입력기가 Ctrl+Alt+S 키를 선점하였기 때문이다.
- Fcitx 구성하기 > 전역 설정 탭으로 이동
- 하단 ‘추가 설정 보기’ 체크
- 모든 구성 및 입력 기록 저장의 단축키를 해제
- Ctrl + Alt + s 버튼 클릭하고
- 단축키 조합 받는 창에서 Esc 누름
이렇게 하면 PhpStorm 이 올바르게 Ctrl + Alt + s 를 수신받는다. 이상.
원인은 fcitx 입력기가 Ctrl+Alt+S 키를 선점하였기 때문이다.
이렇게 하면 PhpStorm 이 올바르게 Ctrl + Alt + s 를 수신받는다. 이상.
지난 포스트에 이어 설정 파일을 자동화하기 위한 과정을 계속 기록한다. 리포지터리에 계속 필요한 설정을 하고, IDE의 설정 파일의 변화를 추적한다. 추적된 변경 사항은 따로 .md 파일로 기록한다.
내가 PhpStorm을 주로 사용하는 용도는 워드프레스 플러그인 또는 테마 개발이므로 워드프레스 코어 루트 디렉토리를 기준으로 한 프로젝트를 생성한 후 여러 자투리 설정을 대상으로 한다.
많은 반복을 거쳐 자동적으로 기억나는 몇몇 필수적인 아래 요소들을 대상으로 기록을 하였고, 차후 나머지 설정들은 생각나는대로 덧붙일 생각이다.
이것들은 주로 workspace.xml 파일에 저장되는데, XML 파일을 적절히 편집할 수 있다면 자동화가 그렇게 어렵지는 않을 것으로 보였다.
PhpStorm을 오랜 기간 사용해 왔고, 그동안 많은 프로젝트를 생성해 왔다. 물론 주로 워드프레스 프로젝트였는데, 셋업만 엄청나게 오래 걸린다. 은근해 해 줘야 할 것이 많기 때문이다.
이런 설정은 프로젝트 파일의 숨겨진 .idea 라는 디렉토리에 저장되고 나름의 규칙이 있다. 그러므로 매번 일일이 손으로 하기 보다는, 구조를 잘 파악해서 셋업된 대로 자동화 하는 것이 효율적이지 않을까?
그래서 이번에 큰 맘 먹고 자투리 프로젝트를 해 보기로 했다. PhpStorm 프로젝트 셋업을 자동화하자! 재밌겠다!
우선 공개된 리포지터리를 생성했다. 그리고 여기에 샘플 PhpStorm 프로젝트를 생성하고, 여기에 원하는 셋업을 한 후에 설정 파일이 어떻게 변화하는지 모니터하고 문서를 첨부하였다.
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.cfg
Code language: CSS (css)
처럼 입력합니다. 그러면 rule.cfg 파일이 만들어 집니다. 그럼 이 cfg 파일을 공유기에 올려 두면 됩니다.
저는 이렇게 적용 후, 확실히 해당 지역에서 무단 접속이 사라진 것으로 보입니다. 효과가 나름 있는 거 같네요. 다만 공유기의 로그도 무한히 있는 것도 아닙니다. 최대 400개가 한계이니 더 다양한 IP를 차단할 수 있으려면 좀 더 로그나 IP를 쌓아두고 관리하면서 차단할 수 있어야 하겠네요. 일단 이번에는 여기까지 만들어 보고 더 나은 버전은 차후에 고민해 보겠습니다.
덧, 이후 계속 “잘못된 VPN 계정 또는 암호로 접속을 시도 하였습니다” 메시지와 차단한 IP가 기록되네요. 이 방법으로는 접속 자체를 막지 못하는 것 같습니다.
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
패키지 설치
sudo apt install pm-utils hibernate
/swapfile 확인.
cat /proc/swaps
Filename Type Size Used Priority
/swapfile file 2097148 0 -2
UUID 확인
findmnt -no UUID -T /swapfile
5c0028fe-edc4-4b17-93d0-b78fda1f83b8
여기서 UUID 기록.
오프셋 확인
sudo filefrag -v /swapfile
Filesystem type is: ef53
File size of /swapfile is 2147483648 (524288 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 32767: 34816.. 67583: 32768:
1: 32768.. 63487: 67584.. 98303: 30720:
2: 63488.. 96255: 100352.. 133119: 32768: 98304:
3: 96256.. 126975: 133120.. 163839: 30720:
4: 126976.. 159743: 165888.. 198655: 32768: 163840:
5: 159744.. 190463: 198656.. 229375: 30720:
6: 190464.. 223231: 231424.. 264191: 32768: 229376:
7: 223232.. 253951: 264192.. 294911: 30720:
8: 253952.. 286719: 296960.. 329727: 32768: 294912:
9: 286720.. 319487: 329728.. 362495: 32768:
10: 319488.. 352255: 362496.. 395263: 32768:
11: 352256.. 385023: 395264.. 428031: 32768:
12: 385024.. 417791: 428032.. 460799: 32768:
13: 417792.. 450559: 460800.. 493567: 32768:
14: 450560.. 481279: 493568.. 524287: 30720:
15: 481280.. 514047: 557056.. 589823: 32768: 524288:
16: 514048.. 524287: 589824.. 600063: 10240: last,eof
여기서 physical_offset: 의 처음인 34816을 기록.
/etc/default/grub 파일 수정
아래 예시처럼 변경.
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=5c0028fe-edc4-4b17-93d0-b78fda1f83b8 resume_offset=34816"
GRUB 업데이트
sudo update-grub
/etc/initramfs-tools/conf.d/resume 파일 생성
내용은 아래처럼.
RESUME=UUID=5c0028fe-edc4-4b17-93d0-b78fda1f83b8 resume_offset=34816
initramfs 재생성
sudo update-initramfs -c -k all
재부팅 후, hibernation 확인
sudo systemctl hibernate
youtube-dl -g <url> | tail -n1
Code 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)
공유 사무실 등에서 일할 때 계속 불필요하게 네트워크 프린터를 찾아댄다. 불편하다. 나는 프린터도 쓰지 않는데 말이다. 그렇다면,
sudo systemctl stop cups-browsed.service sudo systemctl disable cups-browsed.service
이렇게 해서 해결하자.
#!/bin/bash # touchpad_toggle SETTING='org.cinnamon.settings-daemon.peripherals.touchpad touchpad-enabled' ENABLED=$(gsettings get ${SETTING}) if [[ 'true' = ${ENABLED} ]]; then gsettings set ${SETTING} false elif [[ 'false' = ${ENABLED} ]]; then gsettings set ${SETTING} true fi
개발 서버는 내부 네트워크 안에 있어 외부에서는 접속이 불가하다. 그러나 가끔 외부 네트워크에 노출해야만 하는 경우가 발생한다. 이 때 SSH 터널링으로 외부에 있는 서버를 경유하여 내부로의 접근이 가능하게 할 수 있다. 다음 스텝을 따라해 보자.
원격 서버에 접속할 때 포워딩할 포트를 지정한다. 여기서는 12000번이라고 가정한다. 만약 원격 서버도 공유기 같은 장비에 물려 있다면 12000번으로 포트 포워딩이 가능한지 확인한다.
원격 서버에 /etc/ssh/sshd_config
파일을 여러 아래 설정이 있는지 확인한다.
GatewayPorts clientspecified
없다면 추가하고 sshd 서버를 재시작하자.
이제 로컬 서버에서 원격 서버로의 접속을 시도한다. 만약 로컬 서버가 localhost:8000
에서 돌고 있다고 가정하면 아래처럼 연결한다.
ssh -p <ssh_port> -NR 0.0.0.0:12000:localhost:8000 <server_address>
Code language: CSS (css)
다른 예로, 만약 로컬 서버가 특정 도메인으로, https를 사용한다면 이렇게 할 수 있겠다.
ssh -p <ssh_port> -NR 0.0.0.0:12000:<local_domain>:443 <server_address>
Code language: CSS (css)
이렇게 하고 https://<server_address>:12000
으로 접속하면 로컬 서버에 접속한 것처럼 동작한다. 물론 원격 서버를 거쳐 우회하는 것이기 때문에 속도는 살짝 느릴 것이다.
또한 웹 서버의 도메인이 싹 바뀌는 효과가 있기 때문에, 워드프레스 같은 앱을 돌릴 때는 wp-config.php
에서 미리 WP_HOME
, WP_SITEURL
상수를 미리 지정해야 할 것이다.
SSH 접속은 일정 시간이 지나면 끊어질 수 있다. 영속적인 접속을 유지하려면 autossh 같은 툴을 사용하면 된다. autossh를 설치, 명령을 ssh로 넣던 것을 autossh로 변경하면 된다.
autossh -p <ssh_port> -NR 0.0.0.0:12000:<local_domain>:443 <server_address>
Code language: CSS (css)
아래처럼 실행:
ls -tp | grep -v '/$' | tail -n +6 | tr '\n' '\0' | xargs -0 rm -- # 이 예제는 최근 5개를 남기고 삭제. N+1을 입력해야 함.
출처: Stack Overflow
방법1: StartupApps 확장 설치.
방법2: Reddit 에 설명한 대로 about:config 에서 browser.sessionstore.restore_pinned_tabs_on_demand 값을 true 로 설정.
photo-of-the-day는 National Geographic photo of the day 페이지의 모든 서비스 사진들의 목록을 제공합니다.
드롭박스 링크는 매일 갱신되며 photo of the day 서비스를 시작한 2009년 01월 01일부터 현재까지 모든 사진의 URL과 이미지 링크 목록을 담고 있습니다.