전체 글 34

다시 또 이사

날이 밝으면 바쁜 이사가 시작될거다. 짐정리를 마무리하고 잠시 짬을 내어 (집앞 편의점에 가서 맥주를 한캔 사들고 단지의 안가던 길을 괜히 돌고 들어와 창가에 앉아) 감상에 잠겨본다. 결혼하고 세번째 집이었고, 10주년이 되는해 이렇게 이사를 또 간다. 산책할 수 있는 단지가 있는 집은 처음이었고, 놀이터 없어 아파트 계단에서 놀던 첫째에게 미안함을 덜 수 있었다. 이곳에서 첫째는 어린이집/유치원/학교입학까지, 둘째는 태어난 집이고 어린이집/유치원까지 무사히 마쳤다. 전망이 참 좋은 집이다. 막상 살면서는 잘 몰랐으면서 이제 나가려니 많이 그리울 것 같다. 특히, 아이들과 나와서 놀았던 소소한 추억들이 소중하게 느껴진다. 첫째의 자전거와 줄넘기 연습하다가 티격태격하던 모습, 나는 왜 화를 냈을까. 둘째..

생활 2024.04.18

Apple Silicon(M1)에서 Python 환경 제대로 설정

문제 $ python -c "import tensorflow as tf" zsh: illegal hardware instruction python 사용하려는 Python 패키지의 Native 코드 아키텍쳐와 현재 컴퓨터 아키텍쳐와 달라 생기는 문제이다. (그런데 그동안 다른 x86 기반 패키지들을 사용할때는 Rosetta 에뮬레이션 통해서 잘 썼었는데, 특히 이 tensorflow 같은 패키지에서 문제가 발생한거보니 보니 CPU쪽이 아니라 GPU 같은 다른 하드웨어를 사용하는 네이티브 코드쪽에서 발생한게 아닌가 추측해본다.) 나 같은 경우는 Intel Chipset 일때 사용하던 brew 가 있었고 그 기반으로 Python 을 셋업해서 쓰고 있던 상황에서, 이를 M1 맥북으로 마이그레이션해서 사용하고 있..

VS Code 코드 분석 (익스텐션 만들기)

배경 CropMon의 다음 스텝에 대한 고민과 함께 어떻게 하면 확장성 있는 좋은 구조를 만들지를 살펴보고 있다. 플러그인/익스텐션에 대한 자료를 찾아보던 중 문득 내가 많이 사용하고 있는 에디터인 VSCode Extension 이야 말로 훌륭한 레퍼런스가 아닌가 하는 생각이 들었고 겉핥기라도 한번 알아보면 도움이 될 것 같았다. 전체 내용은 여기(labs/vscode-internal)에 정리해뒀고 몇가지만 요약해본다. 실행 코드 빌드 및 실행 일단 VS Code 를 받아서 실행해보자 # 코드 클론 $ git clone https://github.com/microsoft/vscode.git $ cd vscode # 패키지 설치 $ ./scripts/npm.sh # 빌드 $ ./scripts/npm.sh ..

스케일업/랩 2023.08.25

크롭몬 버그픽스(v1.0.1) - 윈도우에서 레코딩 화질 깨지는 이슈

문제 크롭몬(v1.0.0)으로 윈도우 환경에서 레코딩시 가끔씩 아래 영상처럼 색상이 잘못 표현되는 문제가 있었다. (수평 라인들이 보이며 뭔가 패턴이 있는 것 같다) 삽질 일단 재현 경로만 확실히 알면 원인과 솔루션을 찾는건 쉽다. 하지만 이건 맥에서는 전혀 재현이 안되고 윈도우에서도 잘될때는 계속되고 안될때는 계속 안되는 등 도무지 패턴을 못 찾겠는거다. 이런저런 시도들을 해봤는데 효과가 없었다. (별로 의미 없음 무시) 두 영상 소스를 머지하는 부분을 Worker 에서 Renderer 프로세스로 다시 가져와보기 캔버스를 두개를 활용해서 일종의 더블버퍼링을 해보기 프레임레이트를 낮춰서 캔버스 Draw 빈도를 줄이기 아이디어 그렇게 주말이 지나가고 있었다. 빨리 정리하고 당분간 좀 쉬고 싶었다. 하지만 ..

CropMon 성능 개선 작업 PoC (2/2) - FFmpeg 리서치

이어서 계속 CropMon 성능 개선 작업 PoC (1/2) - FFmpeg 리서치에서는 여러 비디오 소스로부터 이를 Crop하고 Merge하는 실험을 해봤다. 이에 이어서 오디오 부분을 다뤄보고자 한다. 사실 마치 계획대로 잘 된 것 처럼 정리를 시도하고 있지만 엄청 많은 삽질과 고통속에서 몸부림쳤다. 개념도 없고 레퍼런스도 잘 못 찾는 상황에서 코드 한줄 못 나간채로 바닥에서 잠들기도 하고 시작피로를 못 넘어 며칠을 그냥 흘려보내기도 했다. 몇주간 마음의 부채를 안고 사는 지옥같은 시간에 포기의 유혹도 많았었다. 어쨌든 또 한번 작은 고개를 넘을 수 있어서 너무 개운하고 아직도 멀었지만 포스트를 남길 수 있게 되어 감사하다. 목표 두 비디오 소스의 병합(merge)에 더해 두 오디오 소스도 병합하는..

사랑니 발치

사랑니 발치를 처음 마음 먹은건 19년도. 일년에 한두번씩 찾아오는 사랑니 고통, 마치 누적된 불만으로 가끔씩 크게 가슴 앓이하던 연인과의 싸움마냥 그리고 다시 화해하면 더할나위 없이 좋았지만 늘 불안한 그럼 마음을 안고 사는 듯한 느낌. 그럼에도 너를 잃기 싫어 이렇게나 이별을 미뤄 왔구나. 이제 이 고통스러운 인연을 그만 놔줘야할 것 같다. 이별하면 다시는 마주지치 못 할 아쉬움도 크지만 보내야할 때는 보내줘야하는 법. 사랑니야 그동안 내 곁에서 고마웠다. 계속 함께하다간 너에게도 좋지 않을 (충치) 일이기에 이제 너와 나, 성숙한 다음 단계로 넘어가는 것이라고 믿고 서로에게 이별을 고하자. 안녕.

생활 2023.07.10

나의 경력 회고

얼마전 이력서를 업데이트할 일이 있어서 워드를 열어 지난 이력들을 훑어보았다. 천천히 스크롤을 내리면서 어디서 뭘 했는지 그 짧은 문장들을 보고 있자니 당시의 일들이 생생하게 떠오르면서 그 문장에 담지 못했던 많은 사건들과 나의 감정들 혹은 이력서에 차마 적지 못했던 실패의 기억들도 함께 스쳐지나갔다. 그래서 생각했다. 이력서에 담지 못했던 것들에 대해서 한번 회고하면서 기록해보면 좋겠다고. 당시의 상황과 내 생각들을 솔직하게 적어보자, 좋았던 것들 잘한 것들 뿐만 아니라 실수하고 실패했고 인정하지 못해던 못난 나도 발견해보자는 마음으로 말이다. 그렇게 일주일 정도 아이들/아내가 잠든 시간을 이용해 회고를 진행했고 약 4만여자 정도로 마무리했다. 기억을 쥐어짜고 사실이 필요한 부분은 예전 작업로그도 뒤져..

생활 2023.06.06

CropMon 성능 개선 작업 PoC (1/2) - FFmpeg 리서치

배경 CropMon 은 현재 일렉트론(Electron) 프레임워크가 제공하는 desktopCapturer 를 이용해서 스크린 레코딩을 하고 있다. 이는 다시 내부적으로는 Chromium 이 제공하는 화면 레코딩 API 을 이용하고 있다. 브라우저 환경에서 화상 회의 중에 화면 공유를 한다거나 하는 기능들이 모두 이 API 를 활용하고 있다. 다만, 이 API 가 제공하는 성능적인 제약이 있어서 일반적인 화상회의 유스케이스에는 크게 문제가 안되지만 고프레임레이트를 지원하기에는 다소 아쉬운 부분이 있다. ❌ 30fps 의 벽 (60fps 레코딩 불가) ❌ 음성의 경우 mono 만 지원 ❌ 영역 Crop 디코딩 -> 비디오 요소 캔바스에 그리기 -> 다시인코딩 과정이 필요한데 비효율적 스크린 레코딩 어플리케이..

CropMon (베타) 출시

“Kropsaurus” 라는 아명을 떼고 “CropMon” 이라는 새 이름으로 앱을 출시했다. [다운로드] 거의 2년이라는 시간동안 하루에 2–3시간 정도씩 짬을내서 24번의 주요/마이너 릴리즈를 했다. 중간 중간 이걸 내가 왜 하고 있나 지칠때도 있었지만 우공이산의 마음으로 꾸준히 끌고 왔다. 지금까지 추가한 주요 기능이다. Quick Accessible Recording: Fullscreen / Specific Area MP4 / GIF(Animation) Support Record Audio Source: Mic / System Audio (w/ virtual device) Appearance Configuration 아직 해결해야할 이슈도 많고 넣고 싶은 기능도 줄을 서있다. Native Reco..

스크린레코더- 백로그

현재 토이로 진행 중인 스크린레코더 Kropsaurus의 백로그에 대해서 메모겸 다짐겸 적어본다. Season 1 - 아주 심플 레코딩 (0.4.1 기준 여기까지 왔음) 캡쳐 영역 선택 + 레코딩 기본 동작 코드싸이닝 자동업데이트 사용자 단축키 지정 싱글 오버레이로 여러 스크린을 오버랩해서 레코딩 롱타임 레코딩 (파일 버퍼링) Season 2 - 레코딩 기능 보강 레코딩 후 간단한 편집 (Trimming) 오디오 레코딩 지원 특정 윈도우 및 전체화면 지정 모드 레코딩 중 간단한 드로우 지원 Season 3 - 레코딩 기능 고도화 웹캠 Mix 지원 GPU 레벨 레코딩 지원 (게임 등) Season 4 - 최적화 및 사용자 만족도 올리기 성능 병목 찾아 해소 및 리소스 사용률 줄이기 필요하면 일부 컴포넌트 ..