지난 글들

1164개의 글이 있습니다

실시간 웹이 만들어지기까지

[27M05] Building Real Time Web / Makoto Inoue (New Bamboo (London, UK))

  • Pusher는 HTML5 WebSocket 기술을 활용하여 실시간 웹 기능을 제공하는 클라우드 서비스로, Node.js를 통한 초기 탐색 후 Ruby를 백엔드로 채택하여 개발되었습니다.
  • WebSockets 프로토콜의 진화, 브라우저 호환성(IE/iPhone), 확장성 및 프록시 우회 등 실시간 웹 서비스 개발 및 운영 시 직면하는 주요 과제와 해결책을 제시합니다.
  • WebSockets의 단순한 API를 보완하기 위해 채널 및 이벤트 개념을 도입하고, Redis 및 RabbitMQ를 활용하여 고성능 및 확장성을 확보한 Pusher의 아키텍처를 설명합니다.
RubyKaigi 2025년 10월 05일

Ruby on Rails를 활용한 모바일 OpenSocial 애플리케이션 개발

[27M04] Open social application development for cell-phones to begin in Ruby on Rails (ja)

  • 모바일 OpenSocial 애플리케이션 개발은 PC 버전에 비해 용이하며, Ruby on Rails는 게임 개발의 CMS적 특성에 적합한 프레임워크입니다.
  • Ruby on Rails의 `link_to` 및 `form_tag` 헬퍼를 OpenSocial 모바일 환경에 맞게 자동 변환하는 `acts_as_opensocial` 플러그인을 개발하여 개발 편의성을 크게 향상시켰습니다.
  • 플랫폼별 API 연결 및 인증 처리를 추상화하는 `Platform` 클래스를 도입했으나, 비공개 사양으로 인해 완전한 공통 라이브러리 개발에는 한계가 있었습니다.
RubyKaigi 2025년 10월 05일

Ruby 1.9.2 릴리스 발표 및 커미터 Q&A

[28M01] Ruby 1.9.2 is released! / Ruby committers Q & A (ja)

  • Ruby 1.9.2가 공식 릴리스되었으며, 소켓 API 개선, Time 클래스 재작성, 일본 휴대폰 인코딩 지원, Fiddle 및 Psych 라이브러리 추가 등 다양한 기능 개선과 안정화가 이루어졌습니다.
  • RubySpec 준수를 통한 언어 사양의 명확화와 Rails 3와의 호환성 확보가 1.9.2 릴리스의 주요 성과이며, 이는 향후 Ruby 생태계 확장의 기반이 될 것입니다.
  • 커미터 Q&A 세션에서는 Ruby 1.8과 1.9 문법 호환성, 개발 시간 확보, REXML 대체, 다국어 커미터 간 소통, MVM 계획 등 다양한 개발 현안에 대한 논의가 진행되었습니다.
RubyKaigi 2025년 10월 05일

JP Mobile on Rails 3.0 개발 방법 및 특징

[27M03] jpmobile on Rails 3 (ja) / Shin-ichiro OGAWA (Tokyu.rb / Nihon Ruby no Kai)

  • JP Mobile은 일본 피처폰(갈라파고스 폰)의 고유한 문자 코드, 이모지, 세션 관리 문제를 해결하기 위한 Rails 플러그인입니다.
  • JP Mobile 3.0은 Rack 미들웨어 통합, 스마트폰 클래스 도입, Ruby 1.9.2 지원을 통해 아키텍처를 개선하고 기능을 확장했습니다.
  • Rails 내부 코드를 깊이 분석하여 뷰 경로 탐색과 같은 핵심 훅 포인트를 찾아 기능을 구현하는 복잡한 개발 과정이 설명되었습니다.
RubyKaigi 2025년 10월 05일

유닉스 수정주의: Ruby의 디자인 철학

[28M06] Ruby API is Improved Unix API (ja)

  • Ruby는 유닉스 시스템의 기능을 활용하면서도, 사용자 편의성과 일관성을 위해 기존 유닉스 API의 설계 결함이나 혼란스러운 동작을 적극적으로 개선하고 재해석합니다.
  • Ruby의 IO 관련 메서드들은 C 표준 라이브러리의 버퍼링 문제, 논블로킹 모드의 복잡성, 시스템 호출과의 혼용 문제 등을 해결하여 더욱 예측 가능하고 사용하기 쉬운 인터페이스를 제공합니다.
  • 과거의 `FEOF`, `select` 시스템 호출부터 미래의 `FD_CLOEXEC` 기본화, `openat` 적용, 프로세스 객체화 등 다양한 영역에서 유닉스의 전통보다는 실용성과 개선된 사용자 경험을 추구합니다.
RubyKaigi 2025년 10월 05일

Rails 애플리케이션에서 JavaScript를 '진정한 언어'로 만들기

[27S01] Feels Like Ruby / Sarah Mei (Pivotal Labs)

  • Rails 개발자는 비침투적 JavaScript 패턴을 도입하고 JavaScript 코드를 구조화하여 관리해야 합니다.
  • JavaScript를 독립적인 '진정한 언어'로 존중하며, Jasmine과 같은 BDD 프레임워크를 활용해 테스트 주도 개발을 실천해야 합니다.
  • 기존 Rails의 RJS 헬퍼 방식은 JavaScript 테스트를 어렵게 하므로, Rails 3의 비침투적 JavaScript 방식으로 전환하여 코드 품질을 높여야 합니다.
RubyKaigi 2025년 10월 05일

Ruby가 내 인생을 망쳤다

[16M01] Ruby Ruined My Life. (en) / Aaron Patterson (tenderlove) / AT&T Interactive

  • 루비 코어 개발과 레일즈 코어 개발 방식의 차이점을 분석하고, 루비 코어의 개선 방안을 제시합니다.
  • 루비 표준 라이브러리의 문제점과 인코딩, 로드 경로 객체, DTrace 지원 등 루비 자체의 개선이 필요한 부분을 구체적으로 제안합니다.
  • 개인의 경험을 통해 루비 프로그래머로서의 삶과 커뮤니티 활성화를 위한 배움, 가르침, 소통, 그리고 위험 감수의 중요성을 강조합니다.
RubyKaigi 2025년 10월 05일

루비로 분산 시스템 구현하기: 카스트로(Castro) 사례

[29M02] Distributed storage system with ruby Speaker(s) (ja)

  • 루비 기반 분산 스토리지 시스템 '카스트로(Castro)'는 기존 엔터프라이즈 스토리지의 한계를 극복하고 대용량 파일 및 스케일아웃을 지원하기 위해 개발되었습니다.
  • 카스트로는 지연 복제(Delayed Replication)와 멀티캐스트를 활용하여 초기 응답 속도를 높이고 노드 간의 상태 및 데이터 위치를 효율적으로 관리하며, HTTP와 NFS 양쪽 I/O를 지원합니다.
  • 루비를 활용한 분산 시스템 개발은 프로토타입 개발 및 C 확장 라이브러리 연동에 있어 뛰어난 생산성과 유연성을 제공하지만, NameError와 같은 예외 처리에는 주의가 필요합니다.
RubyKaigi 2025년 10월 05일

YARV to LLVM은 어떻게 실패했는가?

[29S03] How Did Yarv2llvm Fail (ja)

  • Ruby 1.9 VM의 네이티브 코드 변환 프로젝트인 YARV to LLVM은 동적 디스패치, 박싱/언박싱 오버헤드, 런타임 의존성, 복잡한 타입 추론, 유지보수 난이도, 그리고 `eval`, `BigNum`과 같은 '블랙 매직' 기능 미지원 등의 문제로 한계에 직면했습니다.
  • YARV to LLVM의 문제점들을 해결하기 위해 새로운 트랜슬레이터 YTL이 개발 중이며, 이는 풀셋 Ruby 지원을 목표로 LLVM 대신 자체 네이티브 코드 생성 라이브러리(YTL JIT)를 구축하고 동적 재컴파일 방식을 채택합니다.
  • YTL은 런타임을 Ruby로 작성하여 타입 추론 결과에 따른 특수화를 가능하게 하고, 코드 생성과 타입 추론을 분리하며, 타입 추론 자체를 네이티브 코드로 실행하여 성능 및 유지보수 문제를 개선하고자 합니다.
RubyKaigi 2025년 10월 05일

분산 객체 환경 DeepConnect 신버전 소개

[18S07] About New Version of DeepConnect for Distributed Object Environment (ja)

  • DeepConnect는 Ruby 분산 객체 시스템을 위한 프레임워크로, 새로운 버전은 명시적인 export/import 없이 원격 객체를 로컬 객체처럼 다룰 수 있는 직관적인 인터페이스를 제공합니다.
  • 신규 버전은 `const_missing`과 동적 모듈 생성을 활용하여 원격 객체 및 클래스에 대한 투명한 접근을 구현했으며, 메서드 인자 전달 방식을 `MethodSpec`으로 세밀하게 제어할 수 있습니다.
  • 성능 최적화를 위해 Ruby의 기본 스레드 및 큐의 한계를 극복하고자 C로 구현된 ExThread 라이브러리(ExQueue, ExConditionVariable 포함)를 개발했으며, 인자 직렬화 속도 개선도 추진 중입니다.
RubyKaigi 2025년 10월 05일

동일본 대지진 이후의 데이터와 위기 매핑: 신사이 인포(Shinsai.info) 사례

[18S04] The Great Eastern Japan Earthquake and what you can do as a Rubyist ? (en)

  • 동일본 대지진 당시 정보 과부하와 오염 문제를 해결하기 위해 구글 퍼슨 파인더와 위기 매핑 사이트 신사이 인포가 등장했습니다.
  • 신사이 인포는 우샤히디 플랫폼을 기반으로 Ruby 커뮤니티의 참여를 통해 구축되었으며, 자원봉사자들의 정보 모니터링과 지오태깅으로 신뢰성 있는 재난 정보를 제공했습니다.
  • 재난 발생 4개월 후, 구호 활동에서 복구 단계로 전환되었으며, 지속적인 개발자 참여(Hack for Japan), 현장 자원봉사, 그리고 도호쿠 지역 방문을 통한 경제 활성화 및 정보 확산의 중요성이 강조됩니다.
RubyKaigi 2025년 10월 05일

루비 업무 시스템의 확장과 핫스팟 시마네

[29M06] The spread of enterprise Ruby at hot spot SHIMANE (ja)

  • 시마네현은 마츠모토 유키히로의 영향력과 적극적인 행정 지원을 바탕으로 루비 온 레일즈 기반 업무 시스템 개발의 중심지(핫스팟)로 성공적으로 자리매김했습니다.
  • 엔터프라이즈 시스템의 요구사항(대량 데이터 처리, 유지보수성, 배치 처리 등)을 충족하기 위한 루비 온 레일즈 개발의 기본 패턴과 방법론이 제시되었습니다.
  • 베테랑 코볼(COBOL) 엔지니어의 풍부한 업무 노하우와 젊은 루비 엔지니어의 기술력을 융합하여 인력 양성 및 효율적인 시스템 개발을 도모하는 전략이 강조되었습니다.
RubyKaigi 2025년 10월 05일
  • DataMapper 어댑터는 ORM과 다양한 백엔드 저장소(예: MongoDB)를 연결하며, 연결, 생성, 조회, 삭제, 업데이트의 5가지 핵심 기능을 구현해야 합니다.
  • `attributes_as_fields` 메서드는 DataMapper의 속성 데이터를 저장소의 필드명과 데이터 타입에 맞게 마샬링하는 데 필수적이며, 쿼리 파싱은 `DataMapper::Query` 객체의 조건을 저장소의 네이티브 쿼리 언어로 변환하는 복잡한 과정입니다.
  • 연관 관계(associations)는 백엔드 독립성을 위해 DataMapper가 내부적으로 여러 쿼리로 분리 처리하며, 특정 저장소의 고유 기능을 활용하기 위해 모델 확장을 통한 커스터마이징이 가능합니다.
RubyKaigi 2025년 10월 05일
  • P-TupleSpace는 영속성과 동시성 처리 측면에서 한계가 명확하여 기대만큼 활용되지 못했으며, 단순 영속화만으로는 병렬 처리 언어 및 스토리지로 부족합니다.
  • Drip은 수정 및 삭제가 불가능한 스트림 지향 영속성 스토리지로, 실패 복구 가능한 협조 메커니즘을 제공하며, 큐와 유사하지만 여러 리더가 데이터를 여러 번 읽을 수 있습니다.
  • Drip은 태그를 활용해 이력 관리 해시처럼 사용할 수 있으며, 크래시를 전제로 재설계되어 기존 튜플 스페이스의 단점을 보완하고 특정 용도에 적합한 유연한 데이터 접근 방식을 제공합니다.
RubyKaigi 2025년 10월 05일

루비 JIS 7 사양서 읽기: 복잡성 속의 간결함

[17S06] How to read JIS X 3017 (ja)

  • 루비 JIS 7은 2011년에 제정된 루비의 일본 공업 표준 사양으로, 언어의 구문 및 의미 규칙, 그리고 적합성 요건을 정의합니다.
  • 루비는 간결한 코드 작성을 위해 세미콜론이나 괄호 생략을 허용하는 복잡한 문법 규칙을 가지며, 이는 공백 및 줄바꿈 문자의 특별한 처리로 모호성을 해결합니다.
  • 사양서는 루비 1.8을 기반으로 1.9와의 공통 부분을 규정하고 있으며, 특이 클래스(Singleton Class)와 같은 일부 기능은 구현별 정의(Processor-defined)로 남겨져 있습니다.
RubyKaigi 2025년 10월 05일