지난 글들
1705개의 글이 있습니다
더 이상 두렵지 않은: 커넥션 고갈 해소를 위한 실천적 접근
もう並列実行は怖くない コネクション枯渇とデッドロック解決の実践的アプローチ / katakyo - Kaigi on Rails 2025
- 병렬 처리를 위한 데이터베이스 커넥션 풀 및 스레드 수 파라미터는 예상 가능한 모든 서비스의 최대 연결 수를 비관적으로 고려하여 설정해야 합니다.
- 커넥션 고갈을 방지하기 위해 데이터베이스 작업과 외부 I/O 통신을 명확히 분리하고 `ActiveRecord::Base.connection_pool.with_connection`을 활용하여 커넥션 관리를 안전하게 수행해야 합니다.
- LLM API와 같이 I/O 바운드 작업이 병목인 경우, 암달의 법칙을 활용하여 최적의 스레드 수를 결정하고, 장시간 트랜잭션을 피하며 성능 프로파일링을 통해 병목 지점을 개선하는 것이 중요합니다.
Kaigi on Rails
2025년 11월 25일
폼 오브젝트 입문
入門 FormObject / Shu Oogawara - Kaigi on Rails 2025
- 폼 오브젝트는 데이터베이스에 묶이지 않으며, 모델과 유사한 인터페이스로 고유한 라이프사이클 처리와 뷰 상태 유지가 가능한 Ruby 객체입니다.
- Rails Way의 '단일 모델 조작' 및 '단일 라이프사이클 패턴' 제약이 깨질 때 (0개 또는 2개 이상의 모델 조작, 여러 라이프사이클 패턴) 폼 오브젝트를 사용해야 합니다.
- 현대 웹 애플리케이션의 복잡한 사용자 요구사항(원탭 복합 작업)으로 인해 폼 오브젝트의 활용이 필수적이며, Ruby 개발자라면 반드시 이해하고 다루어야 합니다.
Kaigi on Rails
2025년 11월 25일
고급 UI/UX는 Hotwire로 구축하자: React와의 비교 및 Hotwire의 강점
高度なUI/UXこそHotwireで作ろう / Naofumi Kagami - Kaigi on Rails 2025
- Hotwire는 Basecamp와 Cookpad 등 실제 서비스 사용자 화면에서 활용되며, React 없이도 복잡하고 고급스러운 UI/UX를 효과적으로 구현할 수 있습니다.
- Turbo Drive의 SWR 캐싱과 로딩 UI, Turbo Frames의 프리페치 기능은 React SSR의 느린 페이지 전환 문제를 해결하며, JavaScript를 적극 활용하여 최적의 사용자 경험을 제공합니다.
- Stimulus의 `valueState`와 Zustand 같은 전역 상태 관리 라이브러리를 통해 React의 단방향 데이터 흐름 및 상태 관리 패턴을 Hotwire 내에서 구현하여 복잡한 UI를 효율적으로 구축할 수 있습니다.
Kaigi on Rails
2025년 11월 25일
Ruby와 그 이웃 언어: Lisp
Ruby and Its Neighbors: Lisp
- Lisp는 괄호 기반의 S-표현식과 코드-데이터 동일성이라는 독특한 문법을 가진 가장 오래된 프로그래밍 언어 중 하나입니다.
- Common Lisp, Scheme, Clojure 등 다양한 방언이 있으며, 인공지능 연구와 강력한 메타프로그래밍(매크로) 기능으로 주목받았습니다.
- Ruby는 '모든 것이 표현식'이라는 개념, 도메인 특화 언어(DSL) 구현 방식, 심볼과 문자열의 구분 등 Lisp의 정신적 영향을 받았습니다.
HackerNews
2025년 11월 25일
Ruby on Rails 애플리케이션 성능 최적화 전략
Show HN: Realtime, expressive AI personas that you can video call
- 데이터베이스 쿼리 최적화는 Rails 애플리케이션 성능 향상의 핵심입니다.
- 캐싱 전략(페이지, 액션, 프래그먼트 캐싱)을 통해 응답 시간을 단축할 수 있습니다.
- 백그라운드 작업을 활용하여 장시간 소요되는 작업을 비동기적으로 처리하는 것이 중요합니다.
HackerNews
2025년 11월 25일
루비 생태계의 철학: 반복문부터 AI, 커뮤니티, 그리고 지속 가능한 개발까지
ep 34. AI는 Ruby 코드를 어떻게 읽을까? (Universal Indexer & Turbo 논란 종결, DHH의 생산성 조언)
- 경력 있는 루비 개발자들이 `for` 반복문을 거의 사용하지 않는 이유는 루비의 핵심 철학인 '문법보다 프로토콜'에 기반하며, 객체에 메시지를 보내는 방식이 유연성과 일관성을 제공하기 때문입니다.
- 루비 생태계는 AI 시대를 대비하여 `Prism` 같은 통일된 파서와 '범용 인덱서' 프로젝트를 통해 코드 인텔리전스 및 개발 도구의 협력 기반을 강화하고 있습니다.
- DHH의 '나 자신에게 먼저 투자하라'는 개인의 지속 가능한 성장을, 켄트백의 '옵션 회복'은 프로젝트의 장기적인 생존과 유연성을 위한 핵심 철학입니다.
Ruby on Rails 소식지
2025년 11월 25일
자체 호스팅 Rails 애플리케이션 구축: 설계 결정 및 그 이유
Building Self-Hosting Rails Applications: Design Decisions and Why
- Broadcast는 Docker 이미지로 배포되며, SolidQueue 등 PostgreSQL 기반 서비스를 활용하여 단일 데이터베이스로 모든 종속성을 통합하고 설치 및 유지보수를 간소화합니다.
- Rails 앱과 호스트 시스템 간의 통신을 위해 '트리거 파일' 패턴을 도입하여 UI에서 업그레이드, 백업, 도메인 변경 등 시스템 작업을 제어할 수 있도록 구현했습니다.
- Thruster를 통해 SSL/HTTP/2를 자동 처리하고, 단일 행 설치 모델 및 파일 기반 모니터링을 적용하여 사용자 편의성과 운영 효율성을 극대화한 자체 호스팅 아키텍처를 제시합니다.
HackerNews
2025년 11월 25일
Ruby 3.4의 새로운 파서 Prism으로의 전환: Unparser 마이그레이션 사례 연구
Unparser: real life lessons migrating Ruby tools from Parser to Prism
- Ruby 3.4에 도입된 새로운 파서 Prism은 기존 Parser Gem의 한계를 극복하고 더 빠르고 안정적인 파싱을 제공하여 Ruby 툴링의 미래를 위한 기반을 마련합니다.
- Prism은 향상된 성능, 신뢰성, 이식성 및 오류 허용 파싱 기능을 제공하며, Ruby의 복잡하고 예외적인 문법을 효과적으로 처리합니다.
- 기존 Parser 기반 도구들은 Prism Translation Layer를 활용하여 AST 호환성을 유지하며 Ruby 3.4+ 문법을 지원할 수 있으며, Unparser 마이그레이션 사례를 통해 전환 전략을 제시합니다.
Evil Martians
2025년 11월 25일
읽기 쉬운 테스트 코드 대 영리한 테스트 코드: 테스트 설계의 균형 찾기
Readable Specs vs. Clever Specs: Finding the Balance in Test Design
- 테스트는 시스템의 가장 정확한 문서이므로, 가독성과 명시성을 최우선으로 하여 사람이 이해하기 쉽게 작성해야 합니다.
- 테스트 스위트에서는 미세 최적화보다 유지보수성이 중요하며, 복잡하거나 지나치게 영리한 테스트는 장기적으로 디버깅 및 수정 비용을 증가시킵니다.
- 명확하고 표현적인 테스트는 버그 감소, 온보딩 개선, 기능 배포 속도 향상에 기여하며, 팀의 생산성을 높이는 핵심 요소입니다.
Ruby Stack News
2025년 11월 25일
Rails 7.2.1.1 업그레이드 후 발생한 SystemStackError: stack level too deep 디버깅
Debugging a Stack Overflow in Rails 7.2.1.1
- Rails 7.2.1.1에서 복합 키 쿼리의 `where.not` 사용 시, `PredicateBuilder`가 깊게 중첩된 Arel OR 노드 트리를 생성하여 `SystemStackError`를 유발했습니다.
- Rails 7.1.5.2의 반복적 Arel 노드 방문 방식과 달리, 7.2.1.1의 재귀적 방문 방식이 대량의 OR 조건에서 스택 오버플로우를 초래했습니다.
- Async 파이버는 Thread보다 스택 공간이 적어 재귀 깊이 제한에 더 민감했으며, Rails 7.2.2+에서 Arel 노드 구조를 평탄화하는 패치가 적용되어 문제가 해결되었습니다.
BigBinary
2025년 11월 25일
Rails 8.1: ActiveStorage::Blob#open 블록 없이 사용 가능 (임시 파일 라이프사이클 제어 강화)
Rails 8 enhances ActiveStorage:Blob#open to work without a block
- Rails 8.1에서 ActiveStorage::Blob#open 메서드가 블록 없이 사용 가능해져 임시 파일의 라이프사이클을 개발자가 직접 제어할 수 있게 되었습니다.
- 이 업데이트는 대용량 파일 스트리밍, 다단계 작업 파이프라인, 외부 도구 통합 등 복잡한 워크플로우를 효율적으로 처리할 수 있도록 지원합니다.
- 기존의 blob.download 방식의 메모리 비효율성과 블록 방식의 제약에서 벗어나, 더욱 유연하고 강력한 파일 처리 기능을 제공합니다.
HackerNews
2025년 11월 25일
Rails 8.1: ActiveStorage::Blob#open, 블록 없이 임시 파일 관리 유연성 제공
Rails 8 enhances ActiveStorage::Blob#open to work without a block | Saeloun Blog
- Rails 8.1에서 ActiveStorage::Blob#open이 블록 없이 사용 가능해져 임시 파일 생명주기 관리에 유연성을 제공합니다.
- 이전 블록 기반 방식의 한계(백그라운드 작업, 외부 도구 통합 등)를 해결하며, 대용량 파일 처리 효율을 높였습니다.
- 새로운 API는 파일 스트리밍, 다단계 처리, 외부 도구 연동 등 복잡한 워크플로우 구현을 가능하게 합니다.
The Awesome Ruby
2025년 11월 25일
Tidewave의 Trace-Augmented Generation(TAG)을 통한 웹 접근성 개선
Improving web accessibility with trace-augmented generation - Tidewave
- Tidewave는 Trace-Augmented Generation(TAG) 기술을 활용하여 웹 페이지 콘텐츠 기반의 접근성 문제를 진단하고 코딩 에이전트에 정확한 보고서를 제공합니다.
- TAG 기술은 DOM 요소를 소스 코드 위치에 정밀하게 매핑하고 렌더링 추적 정보를 포함하여, 기존 RAG 방식 대비 2배 높은 정확도와 45% 빠른 문제 해결 속도를 제공합니다.
- Ruby on Rails, Phoenix, Next.js 등 다양한 프레임워크 벤치마크에서 Tidewave는 Claude Code 및 Cursor 대비 우수한 성능을 보였습니다.
Ruby AI News
2025년 11월 25일
오프라인 우선 채점 애플리케이션 아키텍처: 서버 계산, 하이드레이션 결합, 템플릿 필터링
From ERB to JavaScript - Server Computes, Hydration Joins, Templates Filter
- 라이브 댄스 대회의 불안정한 네트워크 환경을 극복하기 위해 '서버 계산, 하이드레이션 결합, 템플릿 필터링' 원칙을 적용한 오프라인 우선 채점 아키텍처를 구축했습니다.
- Ruby 3.4의 Prism 파서를 활용하여 ERB 템플릿을 JavaScript로 자동 변환함으로써 템플릿 중복을 제거하고 ERB를 단일 진실 공급원으로 활용했습니다.
- 이 아키텍처는 이전 Web Components 방식 대비 52% 적은 코드로 구현되었으며, 강력한 디버깅 도구와 함께 오프라인 데이터 처리 및 템플릿 일관성을 보장합니다.
Hotwire Weekly
2025년 11월 25일
Stimulus와 웹 셰어 API를 활용한 웹 콘텐츠 공유 기능 구현
Stimulus - Web Share API
- 웹 셰어 API와 Stimulus 컨트롤러를 사용하여 웹사이트 내 텍스트, 파일, URL 공유 기능 구현.
- `navigator.share()` 및 `navigator.canShare()` 메서드를 활용하여 표준화된 공유 솔루션 완성.
- Firefox 미지원 등 브라우저 호환성을 고려하여 `canShare`를 통한 기능 감지(feature detection) 필수.
Hotwire Weekly
2025년 11월 25일