koodev

macOS 키보드에서 이상한 문자만 입력될 때 (åß∂ƒ...)

Computer

사용 중인 맥북(16인치, M1pro)에서 키보드 타이핑 시 이상한 문자가 입력되는 현상이 발생했다. 좀 더 정확히는 오른쪽 option 키가 항상 눌려진 것처럼 타이핑이 되고 있었다. 즉, asdf 를 입력하면 åß∂ƒ 가 입력된다. 또한 마우스 커서와 관련된 다른 동작도 오른쪽 option 키가 눌려진 영향을 받았다.

처음에는 입력기 오류인가 해서 System Preferences - Keyboard - Input Sources 를 확인해 보았는데 정상이었고, 재부팅을 해 보았는데도 그 현상은 사라지지 않고 있었다. 성급한 마음에 재부팅을 하게 되면 더 곤란한 경우가 생기는데 영어입력이 안 되어서 로그인이 안 되기 때문이다. 본인처럼 재부팅을 먼저 했을 경우에는 다시 재부팅한 다음 Magic Key 를 입력하여 현상을 해결할 수 있다. 위의 링크 설명처럼 PC를 종료시킨 다음 다시 켤 때 CMD + Option + P + R 키를 눌러서 부팅하면 현상이 해결된다.

https://discussions.apple.com/thread/3065163

원인은 불명확하지만 하드웨어 또는 시스템적으로 오른쪽 option 키가 눌려진 상태가 유지되고 있는 것인데 인터넷 검색을 통해 재부팅 없이 이를 해결하는 방법을 찾을 수 있었다.

https://discussions.apple.com/thread/4815782

System Preferences - Accessibility - Keyboard 로 이동한다. "Enable Sticky Keys" 를 체크한다. 그 다음 문제가 되는 오른쪽 option 키를 두 번 누른다. 그러면 화면 우측 상단에 해당 키가 고정(또는 고정해제) 되었다고 표시된다. 고정된 경우 짙게, 해제된 경우 흐리게 표시되는데, Sticky Key 가 해제된 상태로 만든다. 그리고 "Enable Sticky Keys" 체크를 해제하면 된다.

TCMalloc 사용하여 TF 메모리 누수 방지

Programming

Tensorflow 사용시 메모리 누수가 발생하는 경우가 있어 오랬동안 고생하다 최근에 찾은 솔루션을 정리한다. 방법은 시스템 malloc 을 TCMalloc 으로 교체하는 것이다.

일부 시스템에서의 malloc 이 Tensorflow 와 함께 사용될 경우 반복적인 시스템 메모리에 접근하는 상황에서 메모리 회수가 잘 안되는 것 같다. 내 경우엔 다른 머신간에 다른 양상이 나타났는데, ① 메모리 누수가 안 발생, ② 시스템 메모리가 꽉 차서 해당 프로세스 kill, ③ 시스템 메모리가 꽉 차서 PC 먹통 등으로 나타났다(3번 경우 때문에 재택근무 중 사무실 출근이 필요했음).

시스템 malloc 을 TCMalloc 으로 간단하게 대체하기 위해서 LD_PRELOAD 트릭을 사용한다. LD_PRELOAD 는 환경변수로 넣어주는데, 프로그램이 로드되기 직전에 LD_PRELOAD 로 지정한 공유 라이브러리를 먼저 로드한다. 이렇게 함으로써 해당 라이브러리 심볼이 우선권을 갖게 된다. TCMalloc 이 정의된 공유라이브러리를 지정하면 실행하는 프로그램에서 malloc 이 호출되는 부분이 TCMalloc 으로 대체되는(override) 것이다.

우선 타겟 환경(도커 등)에 TCMalloc 을 설치한다.

$ apt install libtcmalloc-minimal4

그리고 타겟 환경에서 아래 명령어를 사용하여 libtcmalloc-minimal4.so.4 의 경로를 확인한다.

$ dpkg -L libtcmalloc-minimal4

그리고 타겟 환경에서 명령어를 실행할 때 LD_PRELOAD 환경변수를 지정해주면 된다.

$ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libtcmalloc_minimal.so.4 train.py

내 경우에 메모리 누수현상은 사라졌지만 실행속도에서 큰 개선을 확인할 수는 없었다.

이 방법은 시스템 메모리 접근에 관련한 것이기 때문에 코드 자체를 tf.Function 으로 만 사용할 경우 누수 이슈가 안 나타날 수 있고 성능개선도 기대할 수 있을 것 같다. 내 경우에는 데이터셋 루프에서 시스템(cpu) 메모리로 가져와서 처리해야 편한 부분이 있어 이 방법이 현실적이고 빠른 해결책이다.

참고

ubuntu18.04 login screen 에서 마우스, 키보드가 동작안할때

Computer

오랬만에 사무실에 출근해서 PC를 켰는데 마우스랑 키보드가 동작하지 않았다. 배터리를 갈아봐도, 유선키보드를 연결해도 동작을 하지 않았다. sudo evtest 로 이벤트를 모니터링해 봤는데, 이벤트는 잘 받고 있는 상황. 인터넷 검색을 해 보니 X-server 모듈에 문제가 있는 것 같다고 한다. 해결 방법은 아래와 같이 xserver-xorg-input-all 패키지를 설치해 주면 된다.

$ sudo apt install xserver-xorg-input-all

참고: https://askubuntu.com/questions/1135717/ubuntu-18-04-keyboard-and-mouse-not-working-at-login-screen

Ubuntu 18.04 XRDP 설정

Computer

아이패드와 Remote Desktop Mobile 을 사용해서 원격으로 Ubuntu PC 를 제어하는 방법을 정리한다.

우선 우분투 PC에서 필요한 패키지들을 설치한다.

$ sudo apt install xrdp
$ sudo apt install xfce4

3389번 포트를 열어둔다. 3389번 포트는 RDP 프로토콜에서 사용하는 포트인데 우분투에서 기본적으로 비활성화 되어있다고 한다.

$ sudo ufw allow 3389/tcp

다음으로 우분투 PC에서 XRDP 서비스를 재시작한다.

$ sudo /etc/init.d/xrdp restart

우분투 PC에서 마지막으로 할 (중요한!) 일은 데스크탑 세션을 종료하는 것이다. 사용자가 데스크탑 세션에 접속해 있을 경우 원격클라이언트에서 데스크탑 세션을 열지 못하는 것으로 보인다. 데스크탑 세션을 사용 중이라면 로그아웃 해 주자.

이제 아이패드에 Remote Desktop Mobile (RD Client) 앱을 설치한다.

Remote Desktop Mobile 을 열어서 Add PC 를 하고, PC Name 부분에 우분투 PC의 IP 주소와 포트 넘버(3389)를 적어준다(12.34.56.78:3369 이런식으로).

그리고 추가한 설정을 클릭해서 우분투에 접속한다. XRDP 로그인 화면이 나오는데, Session 에는 Xorg 를 선택하고, 사용자 아이디와 암호를 넣으면 된다.

추가 - 며칠전 해당 PC에 그래픽 드라이버 업데이트를 하였는데, 그 이후부턴가 원격접속이 되지 않았다. 정확히는 위의 파란 화면에서 로그인을 하고 난 다음 단계로 진행이 안됐었다. 아래 패키지를 추가로 설치해주니 해결되었는데, 드라이버와 함께 업데이트된 패키지에 문제가 있었던 것 같다.

$ sudo apt install xorgxrdp-hwe-18.04

참고:

youtube-dl 포멧 옵션

Computer

영상소스를 받아야 하는 경우가 생겨서 정리해둔다.

youtube-dl의 -F 옵션(대문자임)을 쓰면, 아래와 같이 가용한 포멧 옵션을 목록으로 출력해준다.

$ youtube-dl -F [URL]
[youtube] M0-Li_Fum-c: Downloading webpage
[info] Available formats for M0-Li_Fum-c:
format code  extension  resolution note
249          webm       audio only tiny   65k , opus @ 50k (48000Hz), 8.41MiB
250          webm       audio only tiny   84k , opus @ 70k (48000Hz), 11.08MiB
140          m4a        audio only tiny  129k , m4a_dash container, mp4a.40.2@128k (44100Hz), 21.23MiB
251          webm       audio only tiny  156k , opus @160k (48000Hz), 21.66MiB
278          webm       256x144    144p  111k , webm container, vp9, 30fps, video only, 15.61MiB
160          mp4        256x144    144p  114k , avc1.4d400c, 30fps, video only, 16.53MiB
242          webm       426x240    240p  233k , vp9, 30fps, video only, 35.43MiB
133          mp4        426x240    240p  249k , avc1.4d4015, 30fps, video only, 35.68MiB
243          webm       640x360    360p  470k , vp9, 30fps, video only, 65.67MiB
134          mp4        640x360    360p  747k , avc1.4d401e, 30fps, video only, 96.35MiB
244          webm       854x480    480p  826k , vp9, 30fps, video only, 120.09MiB
135          mp4        854x480    480p 1369k , avc1.4d401f, 30fps, video only, 182.59MiB
247          webm       1280x720   720p 1754k , vp9, 30fps, video only, 242.34MiB
136          mp4        1280x720   720p 2782k , avc1.4d401f, 30fps, video only, 362.29MiB
302          webm       1280x720   720p60 2897k , vp9, 60fps, video only, 420.41MiB
298          mp4        1280x720   720p60 3654k , avc1.4d4020, 60fps, video only, 539.47MiB
303          webm       1920x1080  1080p60 5087k , vp9, 60fps, video only, 709.34MiB
299          mp4        1920x1080  1080p60 6097k , avc1.64002a, 60fps, video only, 907.50MiB
308          webm       2560x1440  1440p60 13610k , vp9, 60fps, video only, 2.03GiB
315          webm       3840x2160  2160p60 26833k , vp9, 60fps, video only, 4.18GiB
18           mp4        640x360    360p  733k , avc1.42001E, 30fps, mp4a.40.2@ 96k (44100Hz), 122.49MiB
22           mp4        1280x720   720p 2294k , avc1.64001F, 30fps, mp4a.40.2@192k (44100Hz) (best)

위의 목록에서 mp4 포멧 중에서 가장 품질이 좋은 60FPS 옵션은 299 이다. 이 영상을 다운로드 하기 위해 -f 옵션(소문자)를 사용한다. 유의할 점이 하나 있는데 video only 라고 되어 있는 옵션은 소리가 포함되지 않은 것이다. 영상만을 주로 다루는 입장에서는 용량과 시간을 절약할 수 있어서 좋다.

$ youtube-dl -f 299 [URL]

DOSBox/macOS 관련 정리

Computer

재택근무시 수시로 월급루팡 모드가 발동되고 있는 요즈음 가볍게 기분전환 할 거리를 찾고 있었다. 피아노연주는 은근히 시간과 집중력을 너무 소모하고, 스팀게임을 하려니 시간과 컴퓨팅자원을 너무 빼앗기게 되고, 모바일게임 역시 눈이 피로해져서 별로 끌리지 않던 중, 고전게임을 창모드로 돌리면 어떨까 해서 DOSBox 라는 가상화 유틸을 가볍게 알아보았다. 대부분의 레퍼런스가 윈도우 환경이라서 macOS 환경에서의 구동에 대해서 정리한다.

다운로드 및 설치

dosbox.com 의 다운로드 페이지로 가서 'Mac OS X' 버전을 다운로드 받는다. dmg 파일을 실행하면 해당 이미지가 마운트되는데, DOSBox 파일을 드래그해서 /Applications 폴더로 옮기면 설치가 된다.

라이브러리(게임폴더) 관리 및 마운트

나는 홈 폴더에 ~/DosBox 폴더를 만들고, 그 밑에 게임(유틸) 폴더를 주르륵 만들어 놓았다. 그리고 DOSBox 쉘 안에서는 ~/DosBox 를 c 드라이브로 마운트하여 사용하고 있다. 마운트 명령어는 아래와 같다.

mount c ~/DosBox

이렇게 하면 DOSBox 쉘에서 ~/DosBox 내용들을 c 레이블로 접근할 수 있다.

CD롬 마운트

어떤 게임들은 CD를 사용하기도 한다. CD 마운트는 아래와 같이 imgmount 명령어를 사용한다.

imgmount d <cue 파일> -t iso

이렇게 하면 d 레이블에 해당 cue 파일이 마운트된다.

Dosbox.conf

DOSBox 쉘을 열 때마다 실행되는 프로파일 인터페이스가 Dosbox.conf 이다. macOS 에서는 이 파일이 없고, '~/Library/Preferences/DOSBox 버전 Preferences' 라는 파일로 되어 있다. 이 파일에서 [autoexec] 섹션 아래에 다음과 같이 마운트 등 설정을 입력해준다.

[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.

mount c ~/DosBox

# For genesis2
imgmount d c:\GENESIS2\DOSBOX\CD\GENESIS2.cue -t iso

마우스 Escape 및 단축키 등

DOSBox 쉘 창에 포커스가 가면 마우스 이벤트를 먹어버리는데, ctrl + F10 을 누르면 마우스 이벤트를 macOS 윈도우쉘로 다시 가져올 수 있다.

CPU 성능(사이클)은 ctrl + F11 로 느리게, crtl + F12 로 빠르게 조정할 수 있다.

참고

'Computer' 카테고리의 다른 글

Ubuntu 18.04 XRDP 설정  (0) 2021.12.31
youtube-dl 포멧 옵션  (0) 2021.10.12
macOS에서 동영상 단일 프레임 캡쳐  (0) 2021.02.01
애플워치 앱 강제종료  (0) 2020.10.20
iPad Sidecar USB로 연결  (0) 2020.08.07

macOS에서 동영상 단일 프레임 캡쳐

Computer

4K 동영상 프레임을 선택적으로 캡쳐할 일이 있었는데, QuickTime 플레이어Preview 를 조합하여 프로그램 작성 없이 해결할 수 있었다. 스크린 캡쳐를 할 경우 원본 프레임의 해상도가 손상될 수 있어 이 방법을 사용하는게 확실하다.

  1. QuickTime 플레이어로 대상 동영상을 연다.
  2. 캡쳐할 프레임으로 이동(Seek)한다. Seek 바와 화살표 키를 사용하여 프레임 단위 이동이 가능하다.
  3. Command-C (카피)를 누른다.
  4. Preview 앱으로 이동하여 Command-N 을 누른다. 그리고 원하는 이미지 포멧으로 저장하면 끝.

그런데 어떤 동영상은 QuickTime 플레이어에서 편집 명령(Command-C)이 비활성화 되어 있는 경우가 있다. 이런 경우 iMovie를 사용하여 프레임 캡쳐가 가능하다(iMovie를 쓰면 프레임 탐색을 좀 더 세밀하게 할 수 있지만, 시스템 리소스를 더 쓰는 듯 하다).

  1. iMovie 로 새 프로젝트를 생성하고, "Import Media" 로 대상 동영상을 불러온다.
  2. 동영상이 로드되면 아래와 같이 동영상 미디어 아이템을 하단의 프레임 편집 창으로 드래그하여 끌어 내린다.
  3. 프레임 편집 창에서 캡쳐할 프레임을 선택한다. 우측에 철도모양 슬라이더로 네비게이션 스케일을 조정할 수 있고, 트랙패드로 슬라이드/클릭하여 손쉽게 프레임을 지정할 수 있다.
  4. 상단 툴바에서 내보내기 버튼을 누른 후 "Save Current Frame" 을 클릭해서 이미지로 내보낼 수 있다.

참고:

'Computer' 카테고리의 다른 글

youtube-dl 포멧 옵션  (0) 2021.10.12
DOSBox/macOS 관련 정리  (0) 2021.08.17
애플워치 앱 강제종료  (0) 2020.10.20
iPad Sidecar USB로 연결  (0) 2020.08.07
Ubuntu 16.04 apt 'E: Unmet dependencies' 에러  (2) 2020.01.23

야마하 CLP-635 상판 열기

카테고리 없음

2년 전에 야마하 디지털 피아노(CLP-635)를 사서 취미로 잘 쓰고 있었는데 최근에 안에 종이가 들어가서 문제가 된 적이 있었다. 서비스센터에 전화를 걸어 수리기사님을 불렀는데 기사님이 출장전 전화로 상판을 여는 법을 알려주셔서 직접 해결할 수 있었다. 서비스센터에 전화를 걸기 전에 인터넷에서 검색을 해 보았는데, 내 경우와 비슷하게 색종이나 연필이 들어간 사연은 있었으나 어떻게 여는지 방법을 찾을 수 없었고 여기에 글로 남겨 놓는다.

야마하 CLP-635 상판 여는 법

  1. 혹시 모를 감전사고에 대비하여 전기 코드를 뽑는다
  2. 피아노 뒤편에 보면 윗부분에 나사 3개를 모두 푼다
  3. 상판을 잡고 끌어 당긴다

이제 내부에 종이를 제거하면 된다(애들이 그런줄 알았는데 범인은 애들엄마).

그리고 조립은 분해의 역순인데 상판을 잘 맞추지 못하면 나사 등에 걸려 들뜨게 되므로 주의한다.

애플워치 앱 강제종료

Computer

가끔가다 애플워치 앱이 이상해질 때가 있다. 최근에는 무선네트워크를 설정하려다 비밀번호 입력창이 닫히지 않는 버그가 있었다. 이럴 땐 앱을 강제종료 시켜줘야 하는데, 아이폰과 달리 애플워치는 앱 강제종료 과정이 좀 복잡하다. 아래에 절차를 적어놓는다.

  1. 강제종료시킬 앱을 띄어 놓는다
  2. 본체 옆면의 사이드버튼(용두아님)을 길게 눌러 파워 스크린이 뜨게 한다
  3. 용두 버튼(디지털 크라운)을 길게 누른다
  4. 앱이 강제 종료된다

참고: 9to5mac.com/2018/09/27/how-to-force-quit-apple-watch-apps/

Difference between BN and IN

Programming

It is well known that IN is simply 1-batch of BN. It is true in training phase, but not in inference.

In inference phase, BN uses popular mini-batch statistic for mean and standard variation, while IN uses them unchanged from training time, as noted in AdaIN paper below.

Reference: arxiv.org/abs/1703.06868