전체 글(289)
-
소프티어 - CPTI와 비트마스크
평소에 코딩테스트랑은 담을 쌓고 살던 와중, 어쩌다보니 코딩테스트를 앞두고 소프티어에서 2~3레벨 문제를 풀어보고 있었다. Javascript로 풀어볼 수 있는 문제를 필터링했는데 C, C++, Java, Python, Rust만 사용할 수 있는 이 씁쓸함이란... 아무튼 첫번째로 잡아본 문제는 'CPTI'. 출처 - 소프티어, CPTI Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 문제는 링크만 남겨놓을까 했었는데, 근시일내에 소프티어 서비스가 종료된다는 공지사항이 떠있길래 부랴부랴 캡쳐해서 백업해뒀다. 아무튼 문제는 다음과 같다. 이진수가 나온 시점에서 비트마스킹 생각이 먼저 떠올라서, scanf()를 사용해서 2진수 문자열을 입력받아 10진수로 변환한 뒤 배열에 저장하는..
2025.05.14 -
잊고있던 JS 패키지를 바이브 코딩으로 TS 마이그레이션하기
때는 바야흐로 지금으로부터 6년 전인 2019년, 한창 비트마스킹으로 스트레스를 받던 시절이었다. 회사에서 출시하는 IoT 장비의 모델이 늘어날 때마다 새로운 기능이 추가되는데, 이 기능이 벌써 32개를 넘어가면서 64비트로 확장하는 업무를 할 때였다. 당시만해도 여러대의 IoT 장비를 관리하는 제품을 만드시는 분은 '설마 기능이 64개까지 늘어나겠냐'면서 단순히 int로 작성된 타입을 int64로 변경하는데 그쳤지만, Javascript를 사용해야하는 나는 그럴수가 없었다. Javascript에서 제공하는 number의 범위는 -(2^53-1) ~ (2^53-1)인데, 이는 64비트를 온전히 표현하지 못한다는 의미가 된다. 따라서 브라우저 콘솔 등에 (1을 출력해보면, 오버플로로 인해 0이 아닌 -2..
2025.05.09 -
YUV와 RGB 색공간 이해하기
영상을 직접 처리하기 위해 카메라로부터 영상을 스트리밍하다보면, 색이 이상하게 표시되는 경우가 있습니다. 영상을 스트리밍할때는 효율적으로 데이터를 전송하기 위해서 YUV 색공간을 사용하는데, 일반적으로 모니터같은 디스플레이 장치는 RGB 색공간을 사용하기 때문이죠. 이번 글에서는 YUV와 RGB 색공간의 차이에 대해 살펴보고, 자주 사용되는 라이브러리에 대해 알아봅니다.YUV 색공간이란?YUV는 인간의 시각적 특성을 고려해 개발된 색상 인코딩 시스템입니다. 우리 눈은 색상보다 밝기 변화에 더 민감하다는 특성을 활용한 것이죠.YUV 색공간은 세 가지 주요 구성 요소로 이루어집니다:Y (휘도): 이미지의 밝기 정보U, V (색차): 색상 정보를 나타내는 두 가지 요소수학적으로 RGB에서 YUV로의 변환은 다..
2025.04.29 -
[Prisma] 컬럼명을 수정했지만 여전히 수정된 이름의 컬럼을 찾을 수 없을 때 ~ Prisma와 Typescript의 캐시 ~
문제 상황프로젝트에서 새로운 컬럼을 추가하려고 했습니다. youtubeTitle이라는 컬럼을 추가하고 아무 생각없이 코드를 작성하던 중, 문특 yotubeTitle이라는 이름으로 오타가 발생한 것을 확인했습니다. 종종 발생하던 오타라서 별 생각없이 컬럼명을 youtubeTitle으로 수정한 뒤, generate 후 migrate를 실행했습니다. npx prisma generatenpx prisma migrate 하지만 편집기로 돌아오자 여전히 youtubeTitle을 찾을 수 없다는 에러가 발생하고 있었습니다. 어라? 대체 뭘 잘못한거지. 결국은 ChatGPT에게 도움을 요청하고야 맙니다.개체 리터럴은 알려진 속성만 지정할 수 있으며 '(Without & YoutubeAudioDownloadUncheck..
2025.04.28 -
[Flutter] GoRouter의 RouterDelegate와 RouteInformationProvider를 사용한 현재 라우트 추적
Flutter의 GoRouter를 사용해서 라우트를 구현하던 중, 전체 페이지에 공용으로 출력해야하는 UI를 라우터에 따라 변경해야하는 일이 있었습니다. RouterDelegate.addListener()를 호출해서 이벤트 핸들러를 등록해서, 라우트가 변경될 때마다 ValueNotifier의 값을 변경하는 방식으로 UI를 업데이트하여 간단하게 해결... 된다고 생각했지만, RouterDelegate.currentConfiguration.uri를 참조해서 업데이트하도록 작성했더니, push()를 사용해서 페이지를 이동했을 때는 ValueNotifier가 정상적으로 업데이트되지 않았습니다.한참을 고민하던 중 RouterDelegate.currentConfiguration.uri를 참조하는 대신, RouteI..
2025.04.23 -
[Flutter/iOS] 자체서명 인증서(Self-signed certificate)를 우회한 HLS 스트리밍 구현 / GCDWebServer를 사용한 로컬 프록시 서버 구현
문제 배경Flutter를 사용해서 HLS로 영상 스트리밍 기능을 구현해야 하는데, 스트리밍 서버가 동작하는 IoT 장치에서는 외부에서 접속할 수 있는 공개망에 연결되어 있다는 보장이 없었습니다. 보안상의 이유로 내부망에 연결되어서 사용되는 경우가 대부분이고, 공장에서 생성되는 시점에 HTTPS를 지원해야하다보니 Self-signed Certificate를 사용하고 있었습니다. 처음에는 Flutter에서 제공하는 video_player 패키지를 사용하려고 했으나, 애석하게도 Self-signed Certificate를 처리할 수 있는 방법이 없었습니다. 결국 네이티브에서 제공하는 플레이어를 사용하기로 결정했는데, Android는 전체적인 SSL 연결을 커스터마이징할 수 있는 기능을 제공하기 때문에 어렵지 ..
2025.04.21