지난 글들
1164개의 글이 있습니다
Ruby on Rails 애플리케이션에 Marksmith 통합하기
Marksmith | Drifting Ruby
- Marksmith는 Ruby on Rails 애플리케이션에 Markdown 기반의 풍부한 텍스트 편집 기능을 제공하는 라이브러리입니다.
- 이 가이드는 Marksmith를 Rails 프로젝트에 설치하고 설정하는 단계별 과정을 터미널 명령어와 코드 스니펫으로 보여줍니다.
- 백엔드(Gemfile) 및 프론트엔드(JavaScript, HTML) 설정을 통해 사용자 친화적인 Markdown 에디터를 구현할 수 있습니다.
        
          
                  The Awesome Ruby
        
        
          
          2025년 06월 01일
        
      
    이번 주 Rails 소식: Active Job Continuations 및 성능 개선
Active Job Continuations and more
- 이번 주 Rails 소식은 Active Job의 새로운 기능인 Continuations 도입과 성능 개선 사항을 다룹니다.
- Active Job Continuations는 장시간 실행되는 작업을 단계별로 분할하고 중단 시 진행 상황을 저장할 수 있게 합니다.
- 또한, 마지막 RailsConf 개최 소식과 Association Reflection 캐시 유효성 검사 성능 개선 내용이 포함되어 있습니다.
        
          
                  This Week in Rails 
        
        
          
          2025년 05월 30일
        
      
    Ruby on Rails 애플리케이션에서 SQL 쿼리 수 추적 및 최적화
Tip: Put your Rails app on a SQL query diet | Software Engineer, Author, High Performance PostgreSQL for Rails
- 웹 애플리케이션의 성능은 SQL 쿼리 수에 크게 좌우되므로, 불필요하고 중복된 쿼리를 최소화하는 것이 중요합니다.
- Rails 7.2부터는 SQL 쿼리 수가 내장되어 표시되며, 이전 버전에서는 `query_count` gem을 사용하여 쿼리 수를 모니터링할 수 있습니다.
- 과도한 쿼리 수를 줄이기 위해 반복 쿼리 제거, 데이터 접근 방식 재구성, 메모이제이션 활용 등 다양한 최적화 전략을 적용해야 합니다.
        
          
                  Ruby Weekly
        
        
          
          2025년 05월 29일
        
      
    루비 온 레일즈의 과거, 현재, 그리고 AI 시대의 미래: DHH와의 대화
Ruby Talks: DHH will be joining the FINAL RailsConf for a special fireside chat 🔥
- DHH는 마지막 RailsConf 키노트에서 Ruby on Rails 커뮤니티의 역사와 AI 시대에 프레임워크가 가진 독보적인 강점 및 미래 비전을 공유할 예정입니다.
- Rails Foundation은 Rails World를 통해 Rails 생태계에 집중하고 있으며, Ruby Central과의 명확한 역할 분담을 통해 전체 Ruby 생태계의 지속적인 성장과 협력을 목표로 합니다.
- Ruby on Rails는 '소프트웨어 작가' 정신과 인간 중심적 가치를 통해 20년 이상 지속되어 온 독특한 커뮤니티를 형성했으며, AI 시대에도 그 가치를 확장하고 있습니다.
        
          
                  Ruby Central
        
        
          
          2025년 05월 28일
        
      
    Rails 8과 최신 Ruby 개발 환경 탐험: AI와 함께하는 실전 경험
What's new in Rails 8 - John Sherwood
- Rails 8은 배포 간소화 및 기본 기능 강화로 개발 경험을 크게 개선했으나, SQLite 백업, Action Text의 파일 처리, Solid Cable 인증 문제 등 여전히 고려할 점이 존재합니다.
- Kamal, Hotwire, Propshaft 등 Rails 8의 주요 기술 스택은 개발 편의성을 높이지만, AI 도구의 구버전 정보 제공 및 특정 기능의 한계로 인해 수동 조정이 필요할 수 있습니다.
- AI(Cursor, Warp)는 코드 생성 및 문서 탐색에 유용하지만, 최신 Rails 버전의 변경 사항이나 특정 라이브러리(예: Devise)와의 통합에서는 여전히 개발자의 판단과 디버깅이 중요합니다.
        
          
                  Ruby Australia
        
        
          
          2025년 05월 28일
        
      
    TRICK 2025 에피소드 1 콘테스트 결과 발표
[JA] TRICK 2025: Episode I / mame & the judges @tric
- 루비 언어의 기묘한 프로그래밍 콘테스트 'TRICK 2025 에피소드 1'의 최종 결과가 발표되었으며, 독창적인 수상작들이 소개되었습니다.
- 이번 제5회 TRICK 대회는 역대 최다 출품작을 기록하며 루비 커뮤니티의 높은 관심과 참가자들의 기발한 아이디어를 입증했습니다.
- 코드 커버리지, HTML 루비 태그, 구문 하이라이팅 등 루비의 다양한 특징을 활용한 창의적이고 예술적인 프로그램들이 높은 평가를 받았습니다.
        
          
                  RubyKaigi
        
        
          
          2025년 05월 27일
        
      
    Bookworm: RuboCop 기반의 대규모 Ruby 코드 크롤러
[EN] A side gig for RuboCop, the Bookworm code crawler / David T. Crosby @dafyddcrosby
- Bookworm은 Meta에서 Chef와 같은 대규모 Ruby 코드베이스를 효율적으로 관리하기 위해 RuboCop 위에 구축된 코드 크롤링 도구입니다.
- 이 도구는 산업 안전의 위험 제어 계층 개념을 도입하여 린터의 자동 수정(autocorrection) 기능이 코드 안전성 및 대규모 리팩토링에 필수적임을 강조합니다.
- Bookworm은 RuboCop의 NodePattern API를 활용하여 단일 파일 분석을 넘어 전체 코드베이스의 복잡한 패턴을 탐색하고, 추출된 정보를 기반으로 다양한 리포트를 생성하여 코드베이스의 이해와 정리를 돕습니다.
        
          
                  RubyKaigi
        
        
          
          2025년 05월 27일
        
      
    SDB: GVL 없이 효율적인 Ruby 스택 스캐닝
[EN] SDB: Efficient Ruby Stack Scanning Without the GVL / Mike Yang @yfractal
- SDB는 GVL(Global VM Lock) 없이 Ruby 스택을 스캔하여 기존 프로파일러의 성능 저하 문제를 해결하고, 1ms의 낮은 샘플링 간격과 3% 미만의 CPU 사용률로 고성능을 제공합니다.
- 기존 계측(instrumentation) 방식의 사각지대와 높은 오버헤드를 극복하기 위해, SDB는 GVL 없이 64비트 메모리 읽기/쓰기의 원자성을 활용하여 스택 데이터를 안전하게 수집합니다.
- SDB는 지연 및 오프라인 분석, 캐싱된 심볼화, 고정 객체 의존성을 통해 프로덕션 환경에 미치는 영향을 최소화하며, 상시 활성화 가능한 기본 관측성 솔루션으로서의 잠재력을 가집니다.
        
          
                  RubyKaigi
        
        
          
          2025년 05월 27일
        
      
    QuickJS RB: Ruby에서 JavaScript를 실행하는 여정 및 실제 활용 사례
[EN] Running JavaScript within Ruby / Kengo Hamasaki @hmsk
- QuickJS RB는 Ruby에서 JavaScript 코드를 실행하는 Gem으로, FaaS 기반 시스템을 대체하여 비용 절감 및 성능 향상을 성공적으로 달성했습니다.
- C 언어 기반 QuickJS 엔진을 Ruby 바인딩으로 래핑하여 샌드박싱, 국제화 지원, Ruby 함수 호출 등 실제 서비스에 필요한 기능을 구현했습니다.
- Ruby의 네이티브 확장 및 패턴 매칭을 활용한 점진적 C 코드 개발과, 백엔드-프론트엔드 단일 JavaScript 코드 재사용의 이점을 발견했습니다.
        
          
                  RubyKaigi
        
        
          
          2025년 05월 27일
        
      
    Ruby C 확장 코드에서 Write Barrier 자동 삽입을 위한 정적 분석 도구 WBCheck 개발
[JA] Write you a Barrier - Automatic Insertion of Write Barriers / @duerst @joetake
- WBCheck는 Ruby C 확장 코드에 정적 분석을 수행하여 Write Barrier가 필요한 참조 변경 지점을 감지하고 자동 삽입하는 도구입니다.
- Ruby의 세대별 가비지 컬렉션(GC) 효율성을 높이는 Write Barrier의 중요성과 C 확장 내 TypedData 객체 사용 시 완벽한 Write Barrier 삽입의 필요성을 강조합니다.
- Tree-sitter 기반의 구문 분석과 2단계 탐색 방식을 통해 C 코드 내 변수 및 구조체 필드의 VALUE 타입 참조 변경을 추적합니다.
        
          
                  RubyKaigi
        
        
          
          2025년 05월 27일
        
      
    고급 LR 파서 알고리즘 구현 (IELR) 및 Lrama 적용 사례
[JA] The Implementations of Advanced LR Parser Algorithm / Junichi Kobayashi @junk0612
- IELR은 LR 파서보다 정확하게 다음 토큰을 예측하고, 충돌 정보를 전파하여 오토마톤 상태를 분할함으로써 LR 파서의 한계를 극복하는 고급 LR 파서 알고리즘입니다.
- Ruby의 내부 파서 생성에 사용되는 Lrama에 IELR을 구현하는 과정에서 발생한 성능 문제와 이를 해결하기 위한 최적화 기법(루프 처리, 캐싱, 불필요한 어노테이션 제거)을 상세히 설명합니다.
- IELR 구현을 통해 CRuby의 파서 호환성을 확인하고, Ruby 언어의 복잡한 문법 문제(예: '네 가지 do' 문제) 해결에 IELR을 적용할 가능성을 모색합니다.
        
          
                  RubyKaigi
        
        
          
          2025년 05월 27일
        
      
    Ruby Class#new 고속화: 새로운 접근 방식
[JA] Speeding up Class#new / Aaron Patterson @tenderlove
- Ruby의 Class#new 메서드를 C에서 Ruby로 재구현하고 인라인화를 통해 객체 할당 성능을 획기적으로 개선할 수 있습니다.
- 메서드 호출 시 발생하는 언어 간 호출 규약 전환 비용과 인라인 캐시의 효율이 전체 애플리케이션 속도에 큰 영향을 미칩니다.
- 새로운 프리미티브와 컴파일러 변경을 통해 Class#new의 인라인화를 달성했으며, 인자 유형 및 개수에 따라 최대 6.2배의 속도 향상을 확인했습니다.
        
          
                  RubyKaigi
        
        
          
          2025년 05월 27일
        
      
    루비 디버거의 내부 동작 방식, 성능 및 RubyMine 디버거의 생산성 향상 기능
[EN] Demystifying Ruby Debuggers: A Deep Dive into Internals / Dmitry Pogrebnoy @DmitryPogrebnoy
- Ruby 디버거는 TracePoint와 Instruction Sequence 기술을 활용하여 코드 실행을 제어하고 내부 상태를 검사합니다.
- Byebug는 성능 저하가 크지만, Debug Gem과 RubyMine 디버거는 TracePoint 개선을 통해 빠른 디버깅 경험을 제공합니다.
- RubyMine 디버거는 Rails 애플리케이션의 원클릭 디버깅, 스마트 스테핑, 인라인 값 표시 등 개발자 생산성을 높이는 독점 기능을 제공합니다.
        
          
              jeff
        
        
          
          2025년 05월 27일
        
      
    TCP 소켓을 행복하게 만들기
[JA] Making TCPSocket.new "Happy"! / Misaki Shioi @coe401_
- Ruby 3.4에 Happy Eyeballs Version 2 알고리즘이 도입되어 `Socket.tcp` 및 `TCPSocket.new`의 네트워크 연결 효율성이 크게 향상되었습니다.
- 초기 `Socket.tcp` 구현의 상태 관리 복잡성과 `TCPSocket.new`의 `FD_SETSIZE` 한계 문제를 `rb_fd_select` 활용으로 해결하며 견고성을 확보했습니다.
- Happy Eyeballs 도입으로 특정 최악의 시나리오에서 연결 시간이 132배 단축되었으나, 미미한 성능 오버헤드가 관찰되어 필요시 비활성화 기능이 제공됩니다.
        
          
                  RubyKaigi
        
        
          
          2025년 05월 27일
        
      
    Fat Gem과의 이별: 루비 개발의 더 나은 미래를 위한 제안
[JA] Goodbye fat gem 2025 / Sutou Kouhei @ktou
- Fat Gem이 최신 루비 호환성, 취약성 관리, 높은 유지보수 비용 등 다양한 문제를 야기함을 지적하고, 이를 해결하기 위한 자동 빌드 환경 도입을 제안합니다.
- RubyGems의 `requirements` 필드를 활용하여 시스템 의존 라이브러리를 자동 설치하는 `rubygems-requirements-system` 젬을 소개하며 Fat Gem 없는 개발 환경을 구현하는 방안을 제시합니다.
- Fat Gem 제거 시 발생할 수 있는 설치 시간 증가 및 시스템 변경 문제에 대한 해결책을 논의하고, 루비 커뮤니티 내 Fat Gem 도입(휠) 논의라는 상반된 흐름을 공유하며 미래 방향을 모색합니다.
        
          
                  RubyKaigi
        
        
          
          2025년 05월 27일