지난 글들

1164개의 글이 있습니다

Ruby 1.9.3의 GVL 개선

[17S10] CRuby lock design improvement and why it sucks (ja)

  • Ruby 1.9.3에서는 현대적인 하드웨어 및 OS 환경과의 불일치로 발생하던 GVL(Global Virtual Lock)의 불공정성과 성능 문제를 해결하기 위해 GVL 해제 로직을 하이브리드 방식으로 개선했습니다.
  • 기존 Ruby 1.9.2의 GVL 구현은 단순했지만, `sched_yield`의 OS 스케줄러 정책 변화와 NUMA 아키텍처 같은 하드웨어 트렌드와 맞지 않아 특정 상황에서 스레드 기아 현상이나 성능 저하를 초래했습니다.
  • 새로운 GVL 구현은 I/O에 의한 자발적 해제 시에는 기존의 경합 방식을 유지하고, 실행 시간 만료에 의한 강제 해제 시에는 다른 스레드에게 GVL을 양보하는 파이썬식 공정성 로직을 적용하여 최악의 성능 저하를 방지하고 예측 가능한 동작을 보장합니다.
RubyKaigi 2025년 10월 05일

루비 오픈 클래스의 문제점과 해결책: 메서드 셸터 (Method Shelters) 제안

[17S09] Method Shelters : Another Way to Resolve Class Extension Conflicts (ja)

  • 루비의 강력한 오픈 클래스 기능이 야기하는 메서드 충돌 문제를 해결하기 위해 '메서드 셸터' 개념을 제안합니다.
  • 메서드 셸터는 `Exposed` 및 `Hidden` 챔버를 통해 메서드 가시성을 제어하고, `local rebinding`을 지원하며, 로드 순서 의존성을 제거합니다.
  • 실제 Rails 애플리케이션과 TDiary 테스트 결과, 개발 환경에서는 오버헤드가 발생하지만, 특정 상황에서는 성능 향상 효과도 확인되었습니다.
RubyKaigi 2025년 10월 05일

Ruck: Ruby를 위한 강력한 타이밍 및 가상 시간 라이브러리

[29S07] Now you're thinking with virtual clocks

  • Ruck은 Chuck 프로그래밍 언어에서 영감을 받은 Ruby 라이브러리로, 강력한 타이밍과 가상 시간 개념을 활용하여 라이브 코딩 및 시간 제어 애플리케이션 개발을 지원합니다.
  • 이 라이브러리는 'shred'(스레드), 'shredular'(스케줄러), 'spork'(포크)와 같은 고유한 용어를 사용하여 Ruby 환경 내에서 동시성 및 시간 기반 이벤트를 정밀하게 관리합니다.
  • Shredular를 통해 실제 시간, MIDI 틱, 오디오 스트림 등 다양한 시간 단위에 가상 시간을 유연하게 매핑할 수 있으며, 이를 통해 게임의 프레임 속도 독립성 및 음악 시퀀싱의 정확성을 확보합니다.
RubyKaigi 2025년 10월 05일

Sinatra와 친구들: 가볍지만 강력한 웹 애플리케이션 구축 전략

[28S02] Rails to Sinatra: What is ready / Jiang Wu (Tengu)

  • Sinatra는 '최소한의 노력' 철학을 기반으로 Rack 미들웨어 및 외부 서비스와의 연동을 통해 강력한 웹 애플리케이션을 구축합니다.
  • Rails와 달리 Sinatra는 친구(외부 Gem, 미들웨어)를 적극적으로 활용하여 CRUD, 인증, 테스트 등 일반적인 웹 개발 작업을 효율적으로 처리합니다.
  • Heroku, Disqus와 같은 외부 서비스 및 Rack URL Map을 활용하여 배포, 기능 추가, 대규모 애플리케이션 분할 등 개발 생산성을 극대화합니다.
RubyKaigi 2025년 10월 05일

MacRuby On Rails: MacRuby에서 본 CRuby

[17S08] MacRuby on Rails (ja)

  • MacRuby는 Ruby 1.9와 Objective-C를 융합하여 macOS 환경에 최적화된 Ruby 구현체로, LLVM 기반 VM, AutoZone GC, Foundation 프레임워크 활용 등의 특징을 가지며 CRuby 1.9와의 100% 호환성을 목표로 합니다.
  • 발표자는 MacRuby에서 Rails를 실행하기 위한 여정에서 Rails 설치 및 기본적인 명령은 성공했으나, 예외 처리, 상수 탐색, Class/Module.eval 동작 차이 등 CRuby와의 호환성 문제로 인한 수많은 런타임 버그에 직면했습니다.
  • 발표자는 예외 스택 관리 버그(#860), 중첩 상수 탐색 문제, CRuby의 특정 `class_eval` 버그 등을 해결하며 MacRuby의 Rails 동작을 개선했고, 궁극적으로 Rails가 완전히 동작하는 MacRuby 1.0 릴리스를 목표로 하고 있습니다.
RubyKaigi 2025년 10월 05일

Ruby ThreadGroup 클래스 강화 및 활용 방안

[17S05] Improvement of ThreadGroup class and its usage (ja)

  • Ruby ThreadGroup 클래스의 현재 한계점을 극복하고 활용도를 높이기 위한 네 가지 주요 강화 방안이 제시되었습니다.
  • 스레드 그룹 간의 명확한 제어 권한(`dominate`) 설정과 예외 종료를 포함한 스레드 처리의 직렬화(`ThreadQueue`) 메커니즘이 제안되었습니다.
  • 스크립트 테스트 환경 및 정의 충돌 해결을 위한 폐쇄형 로컬 공간(`Local Space`) 생성 아이디어가 논의되었으나, 이는 가장 비판적인 부분으로 언급되었습니다.
RubyKaigi 2025년 10월 05일

루비카이기 2010 폐회식 및 2011년 행사 발표

[29M09] Closing (ja) / Masayoshi Takahashi

  • 루비카이기 2010의 모든 세션이 성공적으로 마무리되었으며, 참가자들에게 감사의 인사를 전했습니다.
  • 루비카이기 2011이 2011년 7월 도쿄에서 개최될 예정임을 공식 발표했습니다.
  • 루비카이기 2011의 테마는 "이번이 마지막 루비카이기"로, 참가자들이 마지막 행사에 무엇을 할지 깊이 고민하도록 독려했습니다.
RubyKaigi 2025년 10월 05일

루리마 서치(Rurima Search) 구축 및 풀텍스트 검색 엔진 Groonga 활용법

[29S06] How to create Ruby reference manual search Web application with Ruby 1.9 groonga and rroonga

  • 루비 레퍼런스 매뉴얼 검색 웹 애플리케이션인 '루리마 서치'의 개발 배경과 주요 기능(드릴다운, SEO 친화적 URL, 캐싱)을 설명합니다.
  • 풀텍스트 검색 시스템의 일반적인 구조와 루리마 서치에 적용된 'Groonga' 검색 엔진의 특징, 즉 Senna 대비 개선된 성능, 자체 데이터 저장 기능, 컬럼 지향 스토리지, 서버 모드 지원 등을 소개합니다.
  • Groonga의 스키마 정의 및 데이터 등록, 검색 방법을 Ruby 바인딩인 Runga를 활용한 예시와 함께 상세히 다루며, 실제 애플리케이션 개발에 적용할 수 있는 가이드를 제공합니다.
RubyKaigi 2025년 10월 05일
  • 루비 프로그램을 위한 실시간 프로파일러를 개발하여 프로그램 종료를 기다릴 필요 없이 성능 변화를 즉시 확인하고 병목 현상을 효율적으로 분석할 수 있습니다.
  • 네트워크를 통한 원격 프로파일링 및 웹 브라우저 기반의 시각화 기능을 제공하며, 기존 프로파일러 대비 낮은 오버헤드로 호출 컨텍스트를 포함한 상세한 성능 데이터를 제공합니다.
  • 개발된 프로파일러는 언어 독립적인 구조를 갖춰 Python 기반 웹 서비스 'Arrow'에 적용되었으며, 이를 통해 예상치 못했던 렌더링 및 블랙리스트 처리 로직의 성능 병목을 성공적으로 발견했습니다.
RubyKaigi 2025년 10월 05일
  • 루비카이기 2011은 아론 패터슨, 마츠모토 유키히로 등 저명한 연사들의 기조연설과 45개의 본 발표로 구성되었으며, 1.6대 1의 경쟁률을 기록했습니다.
  • 2006년부터 시작된 루비카이기는 초기 초청 연사 중심에서 점차 공모 발표 비중을 늘리고 트랙을 확장하며 국제적인 인지도를 얻는 등 지속적으로 발전해왔습니다.
  • 프로그램 선정은 '듣고 싶은 발표'를 최우선으로 하며, 상세하고 명확한 발표 제안서를 중요하게 평가하고, 라이트닝 토크 및 다양한 기획 세션을 통해 참여 기회를 확대했습니다.
RubyKaigi 2025년 10월 05일

BigDecimal 라이브러리와 Ruby 수치 시스템의 미래

[29S01] The future of the bigdecimal library and the number system of Ruby (ja)

  • Ruby의 BigDecimal 라이브러리가 안고 있는 전역 모드, 유효 숫자, 인스턴스 생성, 계산 속도 문제를 개선하고 있습니다.
  • 특히 전역으로 관리되던 BigDecimal의 동작 모드를 스레드 로컬 스토리지로 변경하여 스레드 및 파이버 안전성을 확보했습니다.
  • Ruby 수치 시스템의 미래를 위해 무리수까지 정확히 표현할 수 있는 계산 가능 수(Computable Numbers) 클래스 도입을 제안합니다.
RubyKaigi 2025년 10월 05일

빠른 테스트 스위트 구축 및 코드 메트릭 활용 전략

[28S04] The Necessity and Implementation of Speedy Tests

  • 느린 테스트 스위트는 개발 팀의 사기를 저하시키므로, 멀티 코어 활용, I/O 최적화, GC 설정 조정을 통해 테스트 속도를 극대화해야 합니다.
  • 모킹/스터빙, 셋업 최적화, Factory Girl의 효율적 사용 등 테스트 작성 습관 개선을 통해 테스트의 신뢰성과 속도를 동시에 확보해야 합니다.
  • Metric Fu Gem을 활용하여 코드 중복, 복잡도, 변경 빈도, 커버리지 등 다양한 메트릭을 분석하고 이를 기반으로 지속적인 코드 리팩토링을 수행해야 합니다.
RubyKaigi 2025년 10월 05일

HTML 디자인을 깨뜨리지 않는 템플릿 엔진 설계 방법

[29S09] How To Create A Beautiful Template Engine Which Never Breaks HTML (ja)

  • 이상적인 템플릿 엔진은 순수 HTML 템플릿을 지향하며, 이를 위해 프레젠테이션 로직을 HTML 템플릿과 메인 프로그램으로부터 독립적으로 분리하는 것이 핵심입니다.
  • 프레젠테이션 계층에도 고유한 로직이 필요하며, 이를 템플릿 파일이나 메인 프로그램에 혼재시키는 것은 계층 분리를 저해하고 디자이너에게 불필요한 부담을 줍니다.
  • Quartz 템플릿 엔진은 HTML 템플릿에 마커 ID를 사용하고, 프레젠테이션 로직을 CSS와 유사한 별도 파일로 정의하여 순수 HTML 템플릿과 로직 분리를 실현합니다.
RubyKaigi 2025년 10월 05일

NRA와 루비를 활용한 과학 컴퓨팅

[29S02] NArray and scientific computing with Ruby (ja)

  • NR(N-dimensional Ruby Array)은 루비를 활용한 과학 컴퓨팅을 위해 개발된 다차원 숫자 배열 라이브러리로, 지구물리학, 물질과학, 분자생물학, 역학 등 다양한 과학 분야에서 활용되고 있습니다.
  • NR은 루비 배열 대비 메모리 효율성과 연산 속도에서 28배에서 50배 이상 빠른 성능을 제공하며, 특히 대규모 데이터 처리 시 유리하지만, 캐시 활용의 한계로 인해 최적의 성능을 위해서는 네이티브 코드 수준의 접근이 필요합니다.
  • 발표자는 루비의 쉬운 코드 작성 장점을 살리면서 복잡한 아키텍처(멀티코어, GPU, 클러스터)를 추상화하고 데이터 분산 처리를 지원하는 방향으로 NR의 발전 가능성을 제시하며, 현재 연구 중인 Rake 기반 병렬 분산 워크플로우 시스템(Prake)을 소개했습니다.
RubyKaigi 2025년 10월 05일

DataMapper와 데이터 마이닝을 활용한 개인 행동 패턴 및 외부 데이터 분석

[28S03] Mapping the world with DataMapper / Ted Han (%w(Videojuicer DataMapper))

  • DataMapper는 관계형 및 비관계형 데이터 소스뿐만 아니라 커스텀 타입을 통해 비정형 데이터를 Ruby 객체로 매핑하여 데이터 마이닝을 용이하게 합니다.
  • Chrome 방문 기록과 같은 개인 데이터를 DataMapper로 분석하여 사용자의 브라우징 습관을 시각화하고 자기 성찰적 통찰을 얻을 수 있습니다.
  • HTML 스크래핑으로 수집한 외부 데이터를 DataMapper로 통합하고 통계적 검증(예: Student's t-test)을 수행하여 편향된 가설을 객관적으로 검증할 수 있습니다.
RubyKaigi 2025년 10월 05일