| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
- camera permission
- github 100mb
- dvh
- react-native
- silent printing
- camera access
- Failed to compiled
- electron-packager
- github pdf
- npm package
- 이미지 데이터 타입
- ffi-napi
- Each child in a list should have a unique "key" prop.
- Can't resolve
- augmentedDevice
- github lfs
- rolldown
- react-native-dotenv
- 티스토리 성능
- device in use
- ELECTRON
- Git
- adb connect
- Recoil
- nextjs
- adb pair
- animation
- custom printing
- html
- vercel git lfs
- Today
- Total
목록CS (21)
Bleeding edge
컴퓨터 성능 이야기를 하다 보면 저장장치는 보통 이렇게 구분한다.HDD는 느리고, SSD는 빠르고, NVMe는 더 빠르다.그래서 자연스럽게 HDD → SSD → NVMe를 단순한 속도 발전으로 생각하기 쉽다.하지만 실제로는 조금 다르다.세 저장장치는 단순히 속도만 다른 것이 아니라, 데이터를 읽고 쓰는 방식 자체가 다르다.그리고 이 차이를 알고 나면 Kafka 같은 고성능 시스템이 왜 지금과 같은 구조를 선택했는지도 꽤 재미있게 이해할 수 있다.HDD는 데이터를 읽기 위해 실제로 움직인다HDD는 우리가 생각하는 것보다 훨씬 기계적인 장치다.안에는 회전하는 원판인 Platter가 있고, 데이터를 읽고 쓰는 Head가 있다.어떤 데이터를 읽으려면 먼저 Head가 데이터가 있는 위치까지 이동해야 한다.그리고 ..
Rerun 기반의 RRD viewer를 웹에서 사용하다 보면, 가장 먼저 체감되는 문제는 “데이터를 어떻게 그릴 것인가”보다 “첫 화면이 언제 뜨는가”였다.기능 자체는 동작하고 있었다. 서버는 .rrd 파일을 만들고, 프론트는 그 파일을 받아 decode한 뒤 canvas에 그렸다. 하지만 세션 데이터가 커질수록 첫 로딩이 길어졌다. 사용자는 특정 구간만 보고 싶은데, viewer는 꽤 큰 RRD 데이터를 받은 뒤 decode해야 했다.처음 떠올린 비교 대상은 MP4였다.브라우저에서 MP4를 재생할 때는 전체 영상을 모두 다운로드한 뒤 재생하지 않는다. 브라우저는 필요한 byte 구간을 Range 요청으로 가져오고, 서버는 206 Partial Content로 일부 데이터만 내려준다. 그래서 큰 영상 파..
공용으로 사용하는 장비나 특정 프로젝트에 할당된 PC를 운영하다 보면, 접속하는 사람에게 꼭 알려줘야 하는 내용들이 있습니다.예를 들면 이런 것들입니다.- 이 PC가 어떤 용도로 사용되는지- 현재 누가 SSH로 접속 중인지- 언제 전원이 꺼질 예정인지- 장시간 작업 전에 공유가 필요한지이런 내용은 문서나 메신저로 공유해도 되지만, 실제로는 접속하는 순간에 바로 보이는 것이 가장 확실합니다.이번에는 SSH 접속 시점에 아래와 같은 안내 메시지를 띄우는 방법을 정리해보겠습니다.================================================== Data Foundry PC 안내==================================================현재 SSH 접속 목록..
ROS 2를 여러 대의 로봇, 여러 장비, 또는 여러 테스트 환경에서 동시에 사용하다 보면 ROS_DOMAIN_ID를 나누는 경우가 많다.예를 들어 다음과 같은 환경을 생각해보자.Robot A: ROS_DOMAIN_ID=0Robot B: ROS_DOMAIN_ID=1Robot C: ROS_DOMAIN_ID=2일반적으로 우리는 이렇게 기대한다.Domain 0과 Domain 1은 서로 보이지 않는다.Domain 1과 Domain 2도 서로 보이지 않는다.따라서 네트워크도 분리된 것처럼 동작할 것이다.ROS 2 애플리케이션 관점에서는 이 기대가 어느 정도 맞다.서로 다른 ROS_DOMAIN_ID를 가진 노드들은 기본적으로 서로 discovery되지 않고, 토픽이나 서비스도 보이지 않는다.그런데 실제 네트워크 장..
도커(Docker) 환경에서 고성능 통신을 구축할 때 핵심인 ipc: host 옵션에 대해 정리합니다. "한 대의 PC에서 여러 대의 PC가 네트워크로 연결된 것처럼 테스트하면서도, 로컬 PC의 자원을 공유하는 환경"을 만드는 것이 목적입니다.# 왜 ipc: host 설정이 필요한가?기본적으로 도커 컨테이너는 독립된 환경을 가집니다. 자기들만의 격리된 통신 공간(IPC)을 할당받기 때문입니다. 하지만 여러 대의 PC가 같은 네트워크망에 물려있으면서도 실제로는 로컬 자원을 공유하는 효율적인 테스트 환경을 만들려면 이 격리를 해제해야 합니다.ipc: host 옵션을 사용하면 컨테이너의 격리된 담장을 허물고 호스트 PC의 메모리 공간을 직접 공유하게 됩니다.# 이 옵션으로 할 수 있는 것들 (Feat. 다중 ..
SOF0, SOF2, 그리고 Baseline JPEG / Progressive JPEG 쉽게 이해하기JPEG 파일을 다루다 보면 가끔 이런 말을 보게 됩니다.FF C0 = SOF0 → baseline DCTFF C2 = SOF2 → progressive DCT처음 보면 무슨 암호처럼 보입니다.하지만 알고 나면, 이 값들은 JPEG 이미지가 어떤 방식으로 저장되었는지 알려주는 아주 중요한 단서입니다.이번 글에서는 FF C0, FF C2, SOF0, SOF2, 그리고 baseline JPEG와 progressive JPEG의 차이를 쉽게 정리해보겠습니다.JPEG 파일 안에는 “마커”가 있다JPEG는 단순히 픽셀만 저장하는 포맷이 아닙니다.파일 내부에는 여러 종류의 마커(marker) 가 들어 있고, 디코더는..
영상 코덱을 보다 보면 H.264, HEVC, AV1 이렇게 계속 나오는데, 처음엔 그냥 “세대 올라간거” 정도로만 생각했다. 근데 하나씩 보면 이게 단순 발전이 아니라, 각 시점에서 해결하려던 문제가 다르다.전체 흐름 (한 번에 보면 이거다)H.264 → “영상 전송 가능하게 만들자”HEVC → “용량 더 줄이자 (4K 대응)”AV1 → “돈 안 내고 더 줄이자”1. H.264 — 영상이 “가능해진” 시점옛날에는 영상 자체가 너무 커서 인터넷으로 보내는 게 힘들었다. 그래서 나온 게 H.264다. 핵심은 단순하다.“영상 크기 줄여서 전송 가능하게 만들자”그래서:블록 단위 압축이전 프레임 활용 (inter)기본적인 motion estimation결과:Before : 영상 = 너무 큼 (전송 불가)A..
요즘 영상 인코딩 쪽을 보다 보면 계속 부딪히는 질문이 있다.“NVENC가 빠르다는데 AV1은 왜 쓰지?” / “NVENC 최고 옵션이면 이미 좋은거 아닌가?”이걸 그냥 속도 vs 품질 정도로 이해하고 있었는데, 조금 깊게 보니까 이건 그런 문제가 아니라애초에 설계 철학이 다른 문제였다.구조부터 다름NVENC는 GPU 안에 들어있는 전용 인코딩 칩(ASIC)이다. 프로그램이 아니라 하드웨어다.그래서 특징이 명확하다: 빠름 / 일정함 / 대신 유연성 없음.반대로 AV1 (libaom, SVT, 그리고 GPU 기반 구현들)은 그냥 코드다.CPU든 GPU든 위에서 돌아가는 알고리즘이다. 그래서 느릴 수 있지만, 대신 얼마든지 복잡하게 만들 수 있다.핵심 차이: 얼마나 많이 비교하느냐영상 압축은 결국 이 문제다..
ROS 2에서 카메라 노드 제어: Inactive vs Subprocess로봇 시스템을 개발하다 보면, 센서나 카메라 노드를 켰다 껐다(on/off) 해야 하는 경우가 많습니다. 예를 들어, 카메라를 계속 켜두면 전력이나 리소스를 많이 차지할 수 있고, 다른 프로세스에서 카메라 장치를 접근해야 하는 경우도 있죠. 이때 ROS 2에서는 크게 두 가지 접근 방식이 있습니다:Lifecycle Node의 inactive 상태 활용프로세스(subprocess) 단위로 노드를 완전히 종료 후 재실행1. Lifecycle Node의 inactive 상태ROS 2에는 Managed Lifecycle Node라는 개념이 있습니다.Lifecycle Node는 노드가 여러 상태(unconfigured → inactive →..