구조적 매개변수 다형성을 위한 매개변수 서브타이핑
현대 프로그래밍 언어에서 재귀 타입, 제네릭(매개변수 다형성), 서브타이핑은 필수적입니다. 하지만 이들의 조합은 복잡할 수 있습니다. POPL 2024 논문에서는 매개변수 서브타이핑을 제안하여 구조적 서브타이핑의 결정을 가능하게 합니다. 이는 Scala와 Java의 한계를 극복할 수 있는 흥미로운 접근법입니다.
구조적 매개변수 다형성을 위한 매개변수 서브타이핑
현대 프로그래밍 언어에서 재귀 타입, 제네릭(매개변수 다형성), 서브타이핑은 필수적입니다. 하지만 이들의 조합은 복잡할 수 있습니다. POPL 2024 논문에서는 매개변수 서브타이핑을 제안하여 구조적 서브타이핑의 결정을 가능하게 합니다. 이는 Scala와 Java의 한계를 극복할 수 있는 흥미로운 접근법입니다.
정렬이 생각보다 어려운 이유
정렬은 간단해 보이지만, 특히 JavaScript에서 다양한 데이터 타입을 다룰 때 복잡해질 수 있습니다. 기본 정렬은 모든 항목을 문자열로 처리해 예기치 않은 결과를 초래합니다. 이를 해결하기 위해 맞춤형 비교 함수가 필요하며, 일관성 있는 정렬을 위해 타입을 고려해야 합니다.
keymapper: 플랫폼 간 컨텍스트 인식 키 리매퍼
keymapper는 키보드 레이아웃과 단축키를 시스템 전반 또는 특정 애플리케이션별로 재정의할 수 있는 도구입니다. GNU/Linux, Windows, MacOS에서 설정 파일을 공유할 수 있으며, 마우스 버튼과 휠도 매핑에 사용할 수 있습니다. keymapperctl을 통해 외부 애플리케이션에서 상태를 제어할 수 있습니다. 이 도구는 GNU GPLv3 라이선스로 배포됩니다.
pgvector와 Next.js로 영화 검색 데모 만들기
AI의 벡터 임베딩 기술을 활용해 영화 검색 데모를 만들었습니다. PostgreSQL의 pgvector 확장을 사용해 영화 데이터를 처리하고, Next.js로 웹 애플리케이션을 구축했습니다. Vercel과 Supabase를 통해 간편하게 배포했으며, 결과는 다소 혼합적이었지만 오타 허용과 맥락 이해를 보여주었습니다.
T1D 스마트워치 직접 만들기
9세 아들의 제1형 당뇨병 관리를 위해 직접 스마트워치를 개발한 경험을 공유합니다. 단순함과 내구성, 신뢰성을 중시한 디자인으로, 기존 기기의 복잡함을 피하고자 했습니다. BLE 연결과 배터리 최적화 등 다양한 도전과제를 극복하며, 오픈소스 접근을 고려하고 있습니다.
동등한 이름 선택하기
컴퓨터 과학에서 이름 짓기는 어려운 문제 중 하나입니다. 컴파일러는 프로그램을 메모리에 표현하기 위해 이름이 필요하며, 동등성과 대체는 최적화에 필수적입니다. DeBruijn 인덱스를 사용하면 변수의 동등성과 대체가 쉬워지지만, 가독성을 유지하는 것이 중요합니다.
가지 없는 나무가 더 빨리 자라는 이유: 코드에서 가지 줄이기의 중요성
코드에서 가지(branches)를 줄이는 것은 CPU 효율성을 높이는 데 도움이 됩니다. 가지는 필수적이지만, 예측 불가능성을 초래해 CPU 성능을 저하시킬 수 있습니다. 부울 값을 활용하거나 코드 생성을 통해 가지를 줄이면 성능을 크게 향상시킬 수 있습니다. 가지 없는 나무처럼, 코드도 가지를 줄이면 더 빠르게 성장할 수 있습니다!
Caddy와 V2Ray로 중국에서 인터넷 접속하기
V2Ray와 Caddy를 활용해 중국에서 인터넷을 자유롭게 이용한 경험을 공유합니다. 2024년 가을, 중국 여행 중 인터넷 검열을 우회하기 위해 V2Ray를 설정하고, Gmail과 Google Maps에 문제없이 접속했습니다. Docker와 v2rayNG를 사용한 설정 방법도 소개합니다. 이 방법이 다른 여행자들에게도 도움이 되길 바랍니다.
헬(Hell) 셸: 2024년 리뷰
헬(Hell)은 하스켈(Haskell) 기반의 셸 스크립팅 언어로, 간단한 정적 타입 시스템을 제공합니다. 2024년 동안 다양한 스크립트를 개발하며, HTML 페이지 생성, 알림 트리거, API 상호작용 등에서 활용했습니다. 성능과 동시성이 뛰어나며, 데이터 구조 사용이 큰 장점입니다. 2025년에는 오류 메시지 개선과 라이브러리 확장을 계획하고 있습니다.
포털 흐름: 모든 것을 하나로 모으다
이 문서는 PVS 시리즈의 마지막 편으로, 포털을 통한 그래프 구축과 가시성 계산을 다룹니다. 깊이 우선 탐색을 통해 포털 간의 가시성을 추적하며, 재귀적 클리핑을 통해 가시성을 최적화합니다. 게임에서의 사전 계산된 가시성은 복잡한 맵을 안정적인 프레임 속도로 구현하는 데 기여했습니다.
테스트에서 필요하지 않을 수 있는 것들
느리고 불안정한 테스트는 누구도 좋아하지 않죠. 특히 TDD 워크플로우에서는 더욱 그렇습니다. 테스트가 느려지는 이유는 과도한 작업 때문일 수 있습니다. 데이터베이스 사용을 피하고, 연관 관계를 신중히 다루며, 보안 기능을 비활성화하는 등의 방법으로 테스트 속도를 높일 수 있습니다. 실제 브라우저 사용을 줄이고, 로깅을 비활성화하여 불필요한 작업을 줄이는 것도 좋은 방법입니다. 이러한 팁을 통해 테스트를 더 빠르고 신뢰할 수 있게 만들어보세요!
CSS와 JavaScript로 WebGL 셰이더 색상 설정하기
WebGL 셰이더는 CSS와 직접 연동되지 않지만, JavaScript를 통해 색상을 동적으로 변경할 수 있습니다. 유니폼 변수를 사용해 셰이더에 색상을 전달하고, getComputedStyle로 CSS에서 색상을 가져와 실시간으로 반영할 수 있습니다. 이 방법으로 웹사이트의 디자인 시스템에 맞춰 WebGL 그래픽을 자동으로 업데이트할 수 있습니다.
양방향 타입체킹의 매력
양방향 타입체킹은 타입을 추론할 수 있는 synthesisable과 타입을 확인할 수 있는 checkable로 나뉩니다. Haskell의 Control.Lens를 활용해 STLC를 구현하며, NPC AI 스크립팅 등 다양한 응용 가능성을 탐구합니다. 모나딕 접근법을 통해 복잡한 타입 오류를 처리하는 방법도 제시합니다.
패스키에 대한 오해
패스키는 최근 빅테크 기업들이 사용자 전환을 추진하면서 주목받고 있습니다. 그러나 일부 기술 전문가들은 패스키의 기기 간 사용 문제를 지적하며, 이메일을 통한 첫 로그인 방식을 제안합니다. 매직 링크를 활용한 간편한 로그인 절차는 사용자 경험을 개선하고, 보안을 강화할 수 있습니다.
MLX — Apple Silicon을 위한 분산 컴퓨팅
MLX는 Apple의 머신러닝 연구팀이 개발한 Apple 실리콘에서 효율적이고 유연한 머신러닝을 위한 NumPy 유사 배열 프레임워크입니다. MLX는 자동 미분, 자동 벡터화, 계산 그래프 최적화를 지원하며, 게으른 계산과 다중 장치 지원을 특징으로 합니다. MLX의 통합 메모리 모델은 CPU와 GPU 간의 데이터 복사를 필요로 하지 않아 성능을 극대화합니다. MLX는 PyTorch, Jax, ArrayFire와 같은 프레임워크에서 영감을 받았으며, Python과 C++ API를 제공합니다.
Forth와 스택 머신에 대한 나의 이야기
이 글은 Forth 프로그래밍 언어와 스택 머신 아키텍처에 대한 개인적인 경험을 다룹니다. Forth의 독특한 확장성과 스택 기반 매개변수 전달 방식에 매료된 저자는, Forth의 간결함과 효율성을 강조합니다. 하지만, Forth는 시스템 프로그래밍에 적합하며, 스크립팅에는 어려움이 있다고 느꼈습니다.
핸드위키
핸드위키는 컴퓨팅, 과학, 기술, 일반 지식에 관한 협업형 위키 백과사전입니다. 칼 융의 동시성 개념이나 6174의 카프레카 상수 같은 흥미로운 주제를 다룹니다. DesignedWorld 유튜브 채널은 미스터리한 현상을 시청자와 공유합니다. 다양한 주제의 글을 EnHub 플랫폼에서 출판할 수 있습니다.
코드네임 구스 소개
코드네임 구스는 여러분의 작업을 자동화하기 위해 설계된 오픈 소스 AI 에이전트입니다. 다양한 대형 언어 모델(LLM)과 호환되며, 데스크톱 인터페이스와 CLI를 통해 사용이 간편합니다. 구스는 확장 기능을 통해 기존 도구와 통합할 수 있어 생산성을 높여줍니다. 엔지니어링 외의 다양한 분야에서도 활용 가능하니, 구스 커뮤니티에 참여해보세요!
자연어 처리에서의 딥러닝 모범 사례
자연어 처리(NLP)에서 딥러닝을 효과적으로 활용하기 위한 모범 사례를 소개합니다. 워드 임베딩, 드롭아웃, 어텐션 등 다양한 기법을 다루며, 최적화와 하이퍼파라미터 조정의 중요성도 강조합니다. 이 글은 NLP 작업을 시작하는 데 유용한 가이드를 제공합니다.
언터넷 - 차세대 사용자 에이전트
언터넷은 웹의 새로운 사용자 에이전트를 개발 중입니다. 기존 브라우저의 한계를 넘어, 사용자 중심의 운영 시스템 같은 역할을 목표로 합니다. 데이터와 제어권을 사용자에게 돌려주고, 자연어를 통해 유연한 인터페이스를 제공합니다. 오픈 소스 프로젝트로, 모두가 참여할 수 있는 플랫폼을 지향합니다.