지난 글들

406개의 글이 있습니다

트릭 2025 에피소드 1 콘테스트 결과 발표

[JA] TRICK 2025: Episode I / mame & the judges @tric

  • TRICK 2025 콘테스트는 기묘한 루비 프로그램을 작성하는 대회로, 창의적이고 독특한 루비 코드들이 소개되었습니다.
  • 우승작들은 루비의 문법, 실행 흐름, 심지어 IRB의 구문 강조 기능까지 활용하여 놀라운 효과를 보여주었습니다.
  • 이번 대회를 통해 루비 프로그래밍의 깊이와 유연성, 그리고 개발자들의 기발한 아이디어를 엿볼 수 있었습니다.
RubyKaigi 2025년 05월 27일

고급 LR 파서 알고리즘 구현(IELR) 및 루비 적용 사례

[JA] The Implementations of Advanced LR Parser Algorithm / Junichi Kobayashi @junk0612

  • IELR(Advanced LR Parser Algorithm)은 기존 LR 파서보다 정확하게 다음 토큰을 예측하여 구문 분석 충돌을 해결하는 고급 알고리즘입니다.
  • 발표자는 이 IELR을 Ruby용 파서 생성기인 Ryuma에 구현했으며, 이를 통해 파서 생성 속도를 크게 개선했습니다.
  • 향후 Ruby의 복잡한 'do' 키워드 문제 등 실제 Ruby 문법 분석에 IELR을 적용할 계획을 제시했습니다.
RubyKaigi 2025년 05월 27일

SDB: GVL 없이 효율적인 Ruby 스택 스캐닝

[EN] SDB: Efficient Ruby Stack Scanning Without the GVL / Mike Yang @yfractal

  • SDB는 Ruby의 GVL(Global Interpreter Lock)을 사용하지 않고 스택을 스캔하여 기존 스택 프로파일러의 성능 병목을 해결하는 새로운 프로파일러입니다.
  • 이 설계는 1밀리초의 높은 샘플링 속도에서도 CPU 사용률을 3% 미만으로 유지하며, 애플리케이션 성능 저하를 최소화합니다.
  • SDB는 실질적인 성능 문제 진단에 중점을 두어, Ruby 애플리케이션을 위한 상시 활성화 가능한 강력한 관측성 솔루션으로 자리매김할 잠재력을 지닙니다.
RubyKaigi 2025년 05월 27일

Ruby Steep을 활용한 타입 가드: 안전한 타입 검사를 위한 진화

[JA] Introducing Type Guard to Steep / Takeshi KOMIYA @tk0miya

  • 이 발표는 Ruby의 정적 타입 검사 도구인 Steep과 타입 정의 언어인 RBS를 활용한 타입 가드 기능을 소개합니다.
  • 'Type for Union Types'와 개발 중인 'User-defined Type Guards'를 통해 변수의 타입을 더 구체적으로 좁히는 방법을 설명합니다.
  • 이를 통해 Ruby 개발자들이 더욱 안전하고 효율적인 코딩 환경을 구축할 수 있도록 돕습니다.
RubyKaigi 2025년 05월 27일
  • Fat Gem(사전 빌드된 라이브러리 포함 젬)은 설치 편의성을 제공하지만, 최신 Ruby 버전 지원 지연 및 보안 취약점 대응 문제를 야기합니다.
  • Fat Gem 개발자들은 다양한 환경의 크로스 컴파일과 높은 유지보수 비용으로 큰 부담을 겪고 있습니다.
  • 빌드 환경 자동화 및 시스템 패키지 관리자 활용을 통해 이러한 문제를 해결하고 Ruby 생태계의 선순환을 이끌 수 있습니다.
RubyKaigi 2025년 05월 27일

Ruby 프로세스 관리의 도전 과제와 Linux PFD 활용

[EN] Bringing Linux pidfd to Ruby / Maciej Mensfeld @maciejmensfeld

  • Ruby에서 프로세스 관리 시 PID 재사용 및 시그널 경합 조건 등 기존 방식의 한계를 다룹니다.
  • Linux의 PFD(Process File Descriptor)가 안정적인 프로세스 참조를 제공하며 이러한 문제 해결에 기여함을 설명합니다.
  • Ruby에서 FFI를 통해 PFD를 활용하는 방법과 그 장단점, 그리고 실제 애플리케이션에서의 적용 사례를 제시합니다.
RubyKaigi 2025년 05월 27일

Ruby의 TCP 소켓에 Happy Eyeballs v2 도입기

[JA] Making TCPSocket.new "Happy"! / Misaki Shioi @coe401_

  • Ruby 3.4에서 TCP 소켓의 연결 속도 개선을 위해 Happy Eyeballs 버전 2 알고리즘이 성공적으로 도입되었습니다.
  • 이 알고리즘은 IPv6와 IPv4 주소 해결 및 연결 시도를 병렬로 처리하여, 특히 IPv6 연결이 지연될 때 발생하는 지연 문제를 해결합니다.
  • 구현 과정에서 복잡한 상태 관리, 테스트 실패, 파일 디스크립터 제한 등 다양한 기술적 난관을 극복하며 안정적인 통합을 이루어냈습니다.
RubyKaigi 2025년 05월 27일

Ruby 및 JRuby를 활용한 고성능 데이터 처리: 초당 5만 레코드 달성기

[EN] 50.000 processed records per second: a CRuby & JRuby story / Cristian Planas @cristian_planas

  • Zendesk는 Ruby의 고성능 데이터 처리 한계를 극복하기 위해 JRuby를 활용, 초당 5만 레코드 처리가 가능한 ETL 마이크로서비스를 15년간 성공적으로 운영했습니다.
  • JRuby는 실제 스레드와 Java 라이브러리 접근을 통해 확장성을 제공했으나, 코드 스타일 및 라이브러리 호환성 문제가 있었습니다.
  • 현재 CRuby는 YJIT, Ractors 등 성능 개선을 통해 고성능 애플리케이션 개발에 더욱 적합해졌으며, Ruby의 확장성 논란은 과장된 측면이 있습니다.
RubyKaigi 2025년 05월 27일

Ruby 구문 분석기에서의 개행 처리: 원칙과 예외

[JA] Ruby's Line Breaks / Yuichiro Kaneko @spikeolaf

  • Ruby의 개행 처리는 'lex_state'라는 복잡한 내부 상태에 의해 결정되며, 이는 언어의 문법, 오토마톤, 파서 개념과 밀접하게 연관됩니다.
  • 일반적으로 문장이 종료될 수 있는 곳에서 개행은 문장을 종료시키지만, 'endless range'나 'anonymous arguments'와 같은 특정 구문에서는 개행이 무시되는 예외가 존재합니다.
  • 'lex_state'의 복잡성을 해결하기 위해 파서와 'lex_state'를 통합된 오토마톤으로 모델링하여 개행 처리의 원칙과 예외를 명확히 이해할 수 있게 되었습니다.
RubyKaigi 2025년 05월 27일

RuboCop과 AST: 과거, 현재, 그리고 미래

[JA] RuboCop: Modularity and AST Insights / Koichi ITO @koic

  • RuboCop은 비공식적 확장 방식을 공식 플러그인 시스템으로 전환하여 모듈성을 강화했습니다.
  • Ruby LSP와의 통합을 통해 코드 분석 및 포맷팅 성능을 개선하고 파서 재사용을 목표로 합니다.
  • RuboCop의 내부 파서가 Parser Gem에서 Prism으로 전환되어 Ruby 3.4+ 버전 지원 및 유지보수성을 향상했습니다.
RubyKaigi 2025년 05월 27일

IRB 내 Ruby 코드 분석: Ripper에서 Prism으로의 전환

[JA] Analyzing Ruby Code in IRB / tomoya ishida @tompng

  • IRB는 구문 강조, 자동 들여쓰기, 코드 완성 등 다양한 Ruby 코드 분석을 수행합니다.
  • 기존 Ripper 기반 분석의 한계를 극복하고 정확성 및 유지보수성 향상을 위해 Prism으로의 전환을 추진 중입니다.
  • Prism 도입을 통해 구문 분석, 중첩 분석, 코드 종료 판단 및 자동 완성 기능이 개선될 것으로 기대됩니다.
RubyKaigi 2025년 05월 27일

Compo: Ruby 프로젝트를 원바이너리로 만드는 도구 업데이트 및 구현 내용

[JA] The Ruby One-Binary Tool, Enhanced with Kompo / ahogappa @ahogappa

  • Compo는 Ruby 프로젝트를 단일 실행 파일(원바이너리)로 만들어 배포 및 실행의 용이성을 극대화하는 도구입니다.
  • 이전 버전의 Compo는 `require` 오버라이딩 방식의 한계로 Rails와 같은 복잡한 프로젝트를 원바이너리화하기 어려웠습니다.
  • 업데이트된 Compo는 가상 파일 시스템과 `dlsym`을 활용한 C 함수 후킹을 통해 이 문제들을 해결하여, Rails 애플리케이션의 성공적인 원바이너리화를 시연했습니다.
RubyKaigi 2025년 05월 27일

RubyKaigi 2023: DepreWriter를 활용한 Ruby 코드 자동 리팩토링 제안

[JA] On-the-fly Suggestions of Rewriting Method Deprecations / Masato Ohba @ohbarye

  • 본 발표는 프로그래밍 언어의 보편적인 문제인 Deprecation 대응의 어려움을 다룹니다.
  • Pharo 언어의 DepreWriter에서 영감을 받아 Ruby 코드를 런타임에 자동으로 변환하거나 패치 파일을 생성하는 DepreWriter Gem을 소개합니다.
  • 이를 통해 개발자가 Deprecation 대응에 드는 노력을 줄여 Ruby 생태계의 발전을 가속화하는 방안을 모색합니다.
RubyKaigi 2025년 05월 27일

RBS와 Steep의 문서화 기능 구현 및 개선 방안

[EN] API for docs / Soutaro Matsumoto @soutaro

  • RBS와 Steep은 Ruby 프로그램의 타입 선언 및 정적 타입 검사를 지원하며, 코드 편집기 내에서 실시간 문서화 기능을 제공합니다.
  • 이 기능은 RBS 파일 내 주석을 활용하고 Language Server Protocol을 통해 편집기와 연동됩니다.
  • 현재 문서 변경 시 발생하는 비효율적인 타입 검사 문제를 해결하기 위해 '문서 인덱스' API 도입과 안정적인 메서드 오버로드 식별자 설계가 제안됩니다.
RubyKaigi 2025년 05월 27일

루비로 구현된 WebAssembly 런타임, Roite 개발 여정

[EN] Running ruby.wasm on Pure Ruby Wasm Runtime / Uchio KONDO @udzura

  • Roite는 순수 루비로 작성된 WebAssembly 런타임으로, 루비와 WebAssembly의 통합을 목표로 합니다.
  • Wasm 핵심 스펙 및 WASI 구현, 파일 시스템 접근을 위한 pre-opens 메커니즘 개발 과정을 상세히 다룹니다.
  • 블록 점프 및 인스턴스 생성 최적화를 통해 성능 향상을 이루었으며, 향후 WebAssembly 컴포넌트 모델 지원을 계획하고 있습니다.
RubyKaigi 2025년 05월 27일