rootless Podman에서 docker-compose 사용하기
Podman의 Docker API 호환 소켓을 열고 `DOCKER_HOST`를 지정하면 root 권한 없이 기존 `docker-compose` 명령을 사용할 수 있습니다. 글은 설정 절차와 컨테이너 파일 접근, 로그아웃 뒤에도 컨테이너를 유지하는 방법을 설명하고, 네트워크 동작 등 Docker와 다른 점도 짚습니다.
Podman의 Docker API 호환 소켓을 열고 `DOCKER_HOST`를 지정하면 root 권한 없이 기존 `docker-compose` 명령을 사용할 수 있습니다. 글은 설정 절차와 컨테이너 파일 접근, 로그아웃 뒤에도 컨테이너를 유지하는 방법을 설명하고, 네트워크 동작 등 Docker와 다른 점도 짚습니다.
Haskell, GTK 4, libadwaita로 할 일 목록 앱을 만드는 연재의 첫 편입니다. haskell-gi로 GTK 바인딩을 사용하고 Elm Architecture의 Model-View-Update 구조를 적용해 상태와 사용자 인터페이스를 분리합니다.
비동기 Rust의 복잡성은 스케줄러가 필요한 동시성의 속성이지, Rust만의 결함이 아니라고 설명합니다. 런타임을 라이브러리로 두는 설계의 이점과 비용을 짚고, Zig처럼 I/O 인터페이스를 함수 매개변수로 전달하는 대안을 살펴봅니다.
Factor를 처음 접하는 개발자를 위한 실습 중심 안내서입니다. 데이터 스택과 스택 효과부터 조합자, 객체 모델, 메타프로그래밍, 파일·네트워크·C 연동까지 언어와 표준 라이브러리의 사용법을 코드로 설명합니다.
Deno를 주로 쓰던 저자가 SvelteKit 프로젝트와 정적 사이트 생성기를 Node.js로 옮긴 경험을 공유합니다. Node.js v26.10.0에서 마이그레이션 작업은 적었고 빌드 시간은 15% 줄었지만, Deno의 권한 관리와 편리한 기본 기능을 선호하는 개발자들의 반론도 나왔습니다.
Elm 0.19.3은 컴파일러 내부 타입을 더 구체화해 잘못된 데이터 표현과 그래프 순환 오류를 줄입니다. Evan Czaplicki는 이 작업을 Acadia 컴파일러와의 기반 정렬 과정으로 소개하며, 타입으로 불변 조건을 강제하는 설계 사례를 설명합니다.
Gleam 1.19.0은 Erlang 코드를 생성하던 방식을 바꿔 Erlang 컴파일러의 중간 표현인 abstract forms를 직접 출력합니다. 빌드 속도와 오류 위치 정보가 개선됐으며, JavaScript 코드 생성, TypeScript 타입 선언, 빌드 도구 연동과 언어 서버 기능도 함께 다듬었습니다.
Flirt는 작성자가 패치를 계속 수정하고 리베이스하는 패치 시리즈 작업 방식에 맞춘 코드 리뷰 도구입니다. 이전에 검토한 내용을 기억해 현재 변경분과 비교하며, GitHub와 메일링 리스트를 비롯한 여러 백엔드를 지원합니다. 아직 버그와 미구현 기능이 많아 일반 사용에는 이르다고 안내합니다.
컴파일러 최적화에는 양방향 등식보다 추상적인 프로그램을 더 구체적인 프로그램으로 좁혀 가는 정제(refinement) 규칙이 자주 등장합니다. 글은 E-Graph에 반사적·추이적인 부등식 관계를 내장하고, 함수 인자의 분산성(variance)에 맞춰 정제 폐쇄, E-matching, 추출을 확장한 프로토타입을 설명합니다.
글쓴이는 논의에서 “Claude가 그러는데요”라고 내세우면 상대의 전문성을 신뢰하지 않는다는 신호가 되고, AI 답변을 검증 없이 받아들이면 불필요하게 복잡한 설계를 낳는다고 비판합니다. 댓글에서는 과잉 설계가 LLM 이전부터 이어진 문제라는 반론과, AI 대신 직접 자료를 찾아 검증하자는 의견이 나옵니다.
Go의 netip.Addr에는 IPv4 주소를 IPv4-mapped IPv6 주소로 바꾸는 To6() 메서드가 없습니다. 글쓴이는 권장되는 AddrFrom16(ip.As16()) 방식이 네이티브 구현보다 약 8배 느린 이유를 분석하고, 컴파일러 최적화로 성능 차이를 없애는 방법과 그 과정의 부작용을 설명합니다.
OpenSSH의 원격 포트 포워딩과 nginx를 조합해 로컬 웹 서비스를 공개하는 자체 호스팅 터널을 구현합니다. nginx의 secure_link로 만료 시간이 있는 접근 토큰을 검사하고, 셸 스크립트가 OpenSSH가 할당한 포트와 공유 URL을 찾아 출력합니다.
게임 SEEDS는 자체 제작한 Object Pascal 기반 RISC-V 에뮬레이터 PasRISCV로 Alpine Linux를 실행하고, 게임 안에서 Linux 프로그램을 구동합니다. 글은 CPU·저장장치·그래픽·오디오·네트워크 에뮬레이션과 게임 연동 구조를 소개합니다.
grubby는 베어 Git 저장소를 웹에서 볼 수 있는 정적 사이트로 만드는 Ruby 도구입니다. 저장소별 페이지와 전체 저장소 색인을 생성하며, Git 훅에 연결해 푸시 후 자동으로 다시 만들 수 있습니다. 개별 커밋이나 브랜치 페이지는 제공하지 않습니다.
Iroh가 BitTorrent Mainline DHT와 별도의 UDP 주소 인덱스 서비스를 조합해 BLAKE3 콘텐츠 제공자를 찾는 실험적 시스템을 소개합니다. 브라우저 플러그인, 로컬 게이트웨이, Pkarr 이름을 연결해 콘텐츠 게시와 탐색까지 구현했지만, 확장성·차단 가능성·프라이버시 문제는 남아 있습니다.
ncdu는 터미널에서 디스크 사용량을 살펴보고 공간을 많이 차지하는 파일과 디렉터리를 찾는 도구입니다. 이 포크는 Zig 0.17에 맞춰 업데이트했으며, ncurses를 지원하는 POSIX 계열 환경에서 실행됩니다.
Flatpak 앱은 배포판에 상관없이 설치하고 샌드박스에서 실행할 수 있지만, 명령줄에서 쓰려면 긴 앱 ID를 입력하고 파일 접근도 따로 처리해야 합니다. 글은 Windows의 실행 별칭을 참고해 Flatpak에 명령 별칭과 래퍼 스크립트를 추가하자고 제안하며, 댓글은 파일 전달 자동화의 한계와 보안 문제를 지적합니다.
C++의 정수 승격과 enum 변환 규칙이 비트 연산에서 일으키는 까다로운 사례를 살펴봅니다. bool의 비트 보수와 열거형 변환에서 GCC·Clang·MSVC가 표준과 다르게 동작하는 사례, 고정 기반형이 없는 enum에 생기는 정의되지 않은 동작을 짚습니다.
안드로이드에서 모든 앱의 광고를 줄이는 DNS 기반 차단 방법 네 가지를 비교합니다. 비루팅 기기는 DNS 서비스·VPN·로컬 VPN 앱을, 루팅 기기는 hosts 파일 수정을 쓸 수 있으며, 각 방법의 보안 위험과 앱 호환성 한계도 설명합니다.
Kagi가 Orion의 리눅스·윈도우 개발을 중단하고 두 버전의 소스 코드를 공개하겠다고 밝혔습니다. 작은 팀의 역량을 macOS·iOS 버전에 집중하며, 공개 후 프로젝트를 맡을 유지관리자나 단체를 찾고 있습니다.