diff --git a/.gitignore b/.gitignore index f17c1d40..193e4a8a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.bundle .generators .ditz-config config/database.yml @@ -6,12 +7,20 @@ config/config_action_controller_session.rb config/initializers/site_keys.rb config/initializers/app_config.rb db/*.sqlite3 -db/schema.rb +db/development_structure.sql db/backup/*.sqlite3 -log/*.log +db/development_structure.sql +log/*.log* backup/*.* coverage.aggregate coverage coverage.features -tmp/*.* +tmp/* mkmf.log +rerun.txt +public/2010/stylesheets/*.css +public/2011/stylesheets/*.css +.DS_Store +nbproject +nbproject/* +.swp diff --git a/.rspec b/.rspec new file mode 100644 index 00000000..53607ea5 --- /dev/null +++ b/.rspec @@ -0,0 +1 @@ +--colour diff --git a/.rvmrc b/.rvmrc new file mode 100644 index 00000000..db39964e --- /dev/null +++ b/.rvmrc @@ -0,0 +1 @@ +rvm 1.8.7@rubykaigi.org --create diff --git a/Gemfile b/Gemfile new file mode 100644 index 00000000..5b12fa49 --- /dev/null +++ b/Gemfile @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +source :rubygems +source 'http://gems.github.com' + +gem 'rails', '3.0.6', :require => nil +gem 'rake', '~> 0.8.7' +gem 'jquery-rails', '>= 0.2.6' +gem 'mysql' +gem 'configatron' +gem "ambethia-smtp-tls", :require => "smtp-tls" +gem "fastercsv" +gem "hoptoad_notifier" +gem 'i18n_generators' +gem 'haml' +gem 'sass' +gem 'fastercsv' +gem 'whenever', '0.6.7', :require => false +gem 'delayed_job' +gem 'rack-google-analytics', '0.6.1' +gem 'will_paginate' +gem 'redis-objects', :require => 'redis/objects' +gem 'SystemTimer' +gem 'twitter', '0.9.8' + +gem 'rails_warden' +gem 'warden_oauth' +gem 'warden-openid' + +gem 'ri_cal', :git => "git://github.com/ctide/ri_cal.git" + +group :development do + gem 'capistrano', :require => nil + gem 'capistrano-ext', :require => nil + gem 'capistrano-notification', :require => nil + gem 'gettext', '<2' # required by i18n_generators + gem 'thin', :require => nil +end + +group :test, :cucumber do + gem 'rspec', '2.5.0' + gem 'rspec-rails', '2.5.0', :group => :development + gem 'rr' + gem 'machinist', :require => 'machinist/active_record' + gem 'faker' + gem 'email_spec', '0.6.3' + gem 'autotest-rails' +# gem 'autotest-growl' + gem 'daemons' + gem 'spork', :group => :development + gem 'cucumber-rails', '~>0.3.2' + gem 'webrat' + gem 'moro-miso' + gem 'database_cleaner' + gem 'nokogiri' + gem 'steak', :group => :development + gem 'capybara', :group => :development +end diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 00000000..97347626 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,271 @@ +GIT + remote: git://github.com/ctide/ri_cal.git + revision: 8f3f73abfcfe4cb80099afc0d72b4693b5ef4776 + specs: + ri_cal (0.8.8) + +GEM + remote: http://rubygems.org/ + remote: http://gems.github.com/ + specs: + SystemTimer (1.2.3) + ZenTest (4.5.0) + aaronh-chronic (0.3.9) + abstract (1.0.0) + actionmailer (3.0.6) + actionpack (= 3.0.6) + mail (~> 2.2.15) + actionpack (3.0.6) + activemodel (= 3.0.6) + activesupport (= 3.0.6) + builder (~> 2.1.2) + erubis (~> 2.6.6) + i18n (~> 0.5.0) + rack (~> 1.2.1) + rack-mount (~> 0.6.14) + rack-test (~> 0.5.7) + tzinfo (~> 0.3.23) + activemodel (3.0.6) + activesupport (= 3.0.6) + builder (~> 2.1.2) + i18n (~> 0.5.0) + activerecord (3.0.6) + activemodel (= 3.0.6) + activesupport (= 3.0.6) + arel (~> 2.0.2) + tzinfo (~> 0.3.23) + activeresource (3.0.6) + activemodel (= 3.0.6) + activesupport (= 3.0.6) + activesupport (3.0.6) + addressable (2.2.6) + ambethia-smtp-tls (1.1.2) + arel (2.0.10) + autotest-rails (4.1.0) + ZenTest + builder (2.1.2) + capistrano (2.6.0) + highline + net-scp (>= 1.0.0) + net-sftp (>= 2.0.0) + net-ssh (>= 2.0.14) + net-ssh-gateway (>= 1.1.0) + capistrano-ext (1.2.1) + capistrano (>= 1.0.0) + capistrano-notification (0.1.1) + capistrano + shout-bot + validatable + capybara (0.4.1.2) + celerity (>= 0.7.9) + culerity (>= 0.2.4) + mime-types (>= 1.16) + nokogiri (>= 1.3.3) + rack (>= 1.0.0) + rack-test (>= 0.5.4) + selenium-webdriver (>= 0.0.27) + xpath (~> 0.1.3) + celerity (0.8.9) + childprocess (0.1.9) + ffi (~> 1.0.6) + configatron (2.8.0) + yamler (>= 0.1.0) + crack (0.1.6) + cucumber (0.10.3) + builder (>= 2.1.2) + diff-lcs (>= 1.1.2) + gherkin (>= 2.3.8) + json (>= 1.4.6) + term-ansicolor (>= 1.0.5) + cucumber-rails (0.3.2) + cucumber (>= 0.8.0) + culerity (0.2.15) + daemons (1.1.3) + database_cleaner (0.6.7) + delayed_job (2.1.4) + activesupport (~> 3.0) + daemons + diff-lcs (1.1.2) + email_spec (0.6.3) + erubis (2.6.6) + abstract (>= 1.0.0) + eventmachine (0.12.10) + faker (0.9.5) + i18n (~> 0.4) + fastercsv (1.5.4) + ffi (1.0.9) + gettext (1.93.0) + gherkin (2.3.9) + json (>= 1.4.6) + haml (3.1.1) + hashie (0.2.2) + highline (1.6.2) + hoptoad_notifier (2.4.10) + activesupport + builder + httparty (0.5.2) + crack (= 0.1.6) + i18n (0.5.0) + i18n_generators (1.0.2) + jquery-rails (1.0.7) + railties (~> 3.0) + thor (~> 0.14) + json (1.5.1) + json_pure (1.5.1) + machinist (1.0.6) + mail (2.2.19) + activesupport (>= 2.3.6) + i18n (>= 0.4.0) + mime-types (~> 1.16) + treetop (~> 1.4.8) + mime-types (1.16) + moro-miso (0.0.6) + mysql (2.8.1) + net-scp (1.0.4) + net-ssh (>= 1.99.1) + net-sftp (2.0.5) + net-ssh (>= 2.0.9) + net-ssh (2.1.4) + net-ssh-gateway (1.1.0) + net-ssh (>= 1.99.1) + nokogiri (1.4.4) + oauth (0.4.4) + polyglot (0.3.1) + rack (1.2.3) + rack-google-analytics (0.6.1) + rack-mount (0.6.14) + rack (>= 1.0.0) + rack-openid (1.3.1) + rack (>= 1.1.0) + ruby-openid (>= 2.1.8) + rack-test (0.5.7) + rack (>= 1.0) + rails (3.0.6) + actionmailer (= 3.0.6) + actionpack (= 3.0.6) + activerecord (= 3.0.6) + activeresource (= 3.0.6) + activesupport (= 3.0.6) + bundler (~> 1.0) + railties (= 3.0.6) + rails_warden (0.5.5) + warden (>= 1.0.0) + railties (3.0.6) + actionpack (= 3.0.6) + activesupport (= 3.0.6) + rake (>= 0.8.7) + thor (~> 0.14.4) + rake (0.8.7) + redis (2.2.0) + redis-objects (0.5.1) + redis (>= 2.1.1) + rr (1.0.2) + rspec (2.5.0) + rspec-core (~> 2.5.0) + rspec-expectations (~> 2.5.0) + rspec-mocks (~> 2.5.0) + rspec-core (2.5.2) + rspec-expectations (2.5.0) + diff-lcs (~> 1.1.2) + rspec-mocks (2.5.0) + rspec-rails (2.5.0) + actionpack (~> 3.0) + activesupport (~> 3.0) + railties (~> 3.0) + rspec (~> 2.5.0) + ruby-openid (2.1.8) + rubyzip (0.9.4) + sass (3.1.2) + selenium-webdriver (0.2.0) + childprocess (>= 0.1.7) + ffi (>= 1.0.7) + json_pure + rubyzip + shout-bot (0.0.4) + addressable + spork (0.8.4) + steak (1.1.0) + rspec (>= 1.3) + term-ansicolor (1.0.5) + thin (1.2.11) + daemons (>= 1.0.9) + eventmachine (>= 0.12.6) + rack (>= 1.0.0) + thor (0.14.6) + treetop (1.4.9) + polyglot (>= 0.3.1) + twitter (0.9.8) + hashie (~> 0.2.0) + httparty (~> 0.5.0) + oauth (~> 0.4.1) + yajl-ruby (~> 0.7.0) + tzinfo (0.3.27) + validatable (1.6.7) + warden (1.0.4) + rack (>= 1.0) + warden-openid (0.1.0) + rack-openid + warden + warden_oauth (0.1.1) + oauth + warden (>= 0.8.1) + webrat (0.7.3) + nokogiri (>= 1.2.0) + rack (>= 1.0) + rack-test (>= 0.5.3) + whenever (0.6.7) + aaronh-chronic (>= 0.3.9) + activesupport (>= 2.3.4) + will_paginate (2.3.15) + xpath (0.1.4) + nokogiri (~> 1.3) + yajl-ruby (0.7.9) + yamler (0.1.0) + +PLATFORMS + ruby + +DEPENDENCIES + SystemTimer + ambethia-smtp-tls + autotest-rails + capistrano + capistrano-ext + capistrano-notification + capybara + configatron + cucumber-rails (~> 0.3.2) + daemons + database_cleaner + delayed_job + email_spec (= 0.6.3) + faker + fastercsv + gettext (< 2) + haml + hoptoad_notifier + i18n_generators + jquery-rails (>= 0.2.6) + machinist + moro-miso + mysql + nokogiri + rack-google-analytics (= 0.6.1) + rails (= 3.0.6) + rails_warden + rake (~> 0.8.7) + redis-objects + ri_cal! + rr + rspec (= 2.5.0) + rspec-rails (= 2.5.0) + sass + spork + steak + thin + twitter (= 0.9.8) + warden-openid + warden_oauth + webrat + whenever (= 0.6.7) + will_paginate diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..9ac51b13 --- /dev/null +++ b/LICENSE @@ -0,0 +1,2 @@ +- rubykaigi.org source code license is MIT. +- bow_face.png: CC-by 2.1JP http://creativecommons.org/licenses/by/2.1/jp/ , 2010 Narihiro Nakamura diff --git a/README b/README index 5a9b2dda..f498462e 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ == Welcome to RubyKaigi -RubyKaigi is the de-facto authoritative Ruby conference. -Here is the web site for rubykaigi.org. +RubyKaigi is the de-facto authoritative Ruby conference in Japan. +Here is the web site for http://rubykaigi.org . Regional RubyKaigi has own web site project: -http://github.com/kakutani/regional_rubykaigi/ +http://github.com/ruby-no-kai/regional_rubykaigi/ diff --git a/Rakefile b/Rakefile index 3bb0e859..824ba469 100644 --- a/Rakefile +++ b/Rakefile @@ -1,10 +1,7 @@ # Add your own tasks in files placed in lib/tasks ending in .rake, # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. -require(File.join(File.dirname(__FILE__), 'config', 'boot')) - +require File.expand_path('../config/application', __FILE__) require 'rake' -require 'rake/testtask' -require 'rake/rdoctask' -require 'tasks/rails' +Rubykaigi::Application.load_tasks diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index aab2d99d..da3695b5 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -1,12 +1,42 @@ class AccountsController < ApplicationController + verify :session => :params_from_authenticator, :only => %w(new create), :redirect_to => :new_sessions_path + + layout_for_latest_ruby_kaigi + def new - @account = Account.new + @rubyist = Rubyist.new(session[:params_from_authenticator]) do |r| + r.twitter_user_id, r.identity_url = session[:params_from_authenticator].values_at(:twitter_user_id, :identity_url) + end end def create - @account = Account.new(:identity_url => session[:openid_identifier]) - @account.save! - redirect_to root_path + @rubyist = Rubyist.new(params[:rubyist]) do |r| + r.twitter_user_id, r.identity_url = session[:params_from_authenticator].values_at(:twitter_user_id, :identity_url) + end + + if @rubyist.save + self.user = @rubyist + session.delete(:params_from_authenticator) + + redirect_to session.delete(:return_to) || root_path + else + render :new + end end + before_filter :login_required, :only => %w(edit update) + + def edit + @rubyist = user + end + + def update + if user.update_attributes(params[:rubyist]) + flash[:notice] = 'Your settings have been saved.' + redirect_to edit_account_path + else + @rubyist = user + render :edit + end + end end diff --git a/app/controllers/admin/base.rb b/app/controllers/admin/base.rb new file mode 100644 index 00000000..47d66048 --- /dev/null +++ b/app/controllers/admin/base.rb @@ -0,0 +1,4 @@ +class Admin::Base < ApplicationController + before_filter :staff_only + layout 'admin' +end diff --git a/app/controllers/admin/lightning_talk_selections_controller.rb b/app/controllers/admin/lightning_talk_selections_controller.rb deleted file mode 100644 index faee3a60..00000000 --- a/app/controllers/admin/lightning_talk_selections_controller.rb +++ /dev/null @@ -1,24 +0,0 @@ -class Admin::LightningTalkSelectionsController < AdminController - def index - # TODO move to model - @grouped_talks = LightningTalkSelection.all.group_by(&:result).inject({}){|h,g| h[g.first] = g.last.sort_by{|e| e.disp_order}.map(&:lightning_talk_submission);h} - end - - def show - end - - def update - submission = LightningTalkSubmission.find(params[:lightning_talk_submission_id]) - if request.xhr? - selection = submission.selection - result_type = params[:selection][:result] - selection.result = result_type - selection.save! - render(:partial => "admin/lightning_talk_submissions/selection", - :locals => { :selection => selection }) - else - render :nothing => true - end - end - -end diff --git a/app/controllers/admin/lightning_talk_submissions_controller.rb b/app/controllers/admin/lightning_talk_submissions_controller.rb deleted file mode 100644 index ebbb9dae..00000000 --- a/app/controllers/admin/lightning_talk_submissions_controller.rb +++ /dev/null @@ -1,11 +0,0 @@ -class Admin::LightningTalkSubmissionsController < AdminController - def index - @lightning_talk_submissions = LightningTalkSubmission.all - end - - def show - @submission = LightningTalkSubmission.find(params[:id]) - @seq = params[:seq] || 0 - end - -end diff --git a/app/controllers/admin/paypal_transactions_controller.rb b/app/controllers/admin/paypal_transactions_controller.rb deleted file mode 100644 index 6136ad50..00000000 --- a/app/controllers/admin/paypal_transactions_controller.rb +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -require 'fastercsv' -class Admin::PaypalTransactionsController < AdminController - def download - respond_to do |wants| - item_number = params[:id] - wants.csv { - paypal_txns = PaypalTransaction.find_all_by_item_number(item_number) - csv = FasterCSV.generate(:col_sep => "\t") do |c| - c << ["row", "item", "4digits", "txn_id", "email", "last_name", "first_name", "student?", "memo"] - paypal_txns.each_with_index do |txn, idx| - memo = txn.memo && txn.memo.gsub(/\n/, "/") - is_student = (txn.memo =~ /学生/ ? "学" : " ") - c << [idx + 1, txn.item_number, txn.txn_id[0,4], txn.txn_id, txn.payer_email, txn.last_name, txn.first_name, is_student, memo] - end - end - send_data(csv, :filename => "#{item_number}.csv", - :type => 'text/csv', :disposition => 'attachement') - } - end - end -end diff --git a/app/controllers/admin/rooms_controller.rb b/app/controllers/admin/rooms_controller.rb new file mode 100644 index 00000000..344103a9 --- /dev/null +++ b/app/controllers/admin/rooms_controller.rb @@ -0,0 +1,3 @@ +class Admin::RoomsController < Admin::Base + admin_assistant_for Room +end diff --git a/app/controllers/admin/rubyists_controller.rb b/app/controllers/admin/rubyists_controller.rb new file mode 100644 index 00000000..9419a6a3 --- /dev/null +++ b/app/controllers/admin/rubyists_controller.rb @@ -0,0 +1,6 @@ +class Admin::RubyistsController < Admin::Base + admin_assistant_for Rubyist do |config| + config.actions << :destroy + config.index.sort_by :username + end +end diff --git a/app/controllers/admin/time_slits_controller.rb b/app/controllers/admin/time_slits_controller.rb new file mode 100644 index 00000000..6f0fc66b --- /dev/null +++ b/app/controllers/admin/time_slits_controller.rb @@ -0,0 +1,3 @@ +class Admin::TimeSlitsController < Admin::Base + admin_assistant_for TimeSlit +end diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb deleted file mode 100644 index bf3303be..00000000 --- a/app/controllers/admin_controller.rb +++ /dev/null @@ -1,12 +0,0 @@ -class AdminController < ApplicationController - layout "admin" - before_filter :basic_auth_required_by_admin - before_filter :configure_title - helper :all - - private - def configure_title - @title = "Admin" - end - -end diff --git a/app/controllers/advent_calendar_controller.rb b/app/controllers/advent_calendar_controller.rb new file mode 100644 index 00000000..9b8c817f --- /dev/null +++ b/app/controllers/advent_calendar_controller.rb @@ -0,0 +1,95 @@ +class AdventCalendarController < LocaleBaseController + layout_for_latest_ruby_kaigi + + before_filter :load_events + + # GET /advent_calendar + def index + respond_to do |format| + format.html + format.json { render :json => events_to_json } + format.ics { render :text => events_to_ical } + format.rss { render :xml => events_to_rss } + end + end + + private + + def load_events + AdventEvent.load params[:year] + end + + def events_to_json + AdventEvent.all.to_json + end + + def events_to_ical + RiCal.Calendar do |cal| + cal.add_x_property 'X-WR-CALNAME', "RubyKaigi AdventCalender #{params[:year]}" + AdventEvent.all.each do |e| + cal.event do |event| + event.summary e.name + event.url e.url + event.dtstart e.dtstart.set_tzid("Asia/Tokyo") + event.dtend e.dtend.set_tzid("Asia/Tokyo") + event.description "Hosted by: #{e.hosted_by}" if e.hosted_by.present? + event.location e.location + end + end + end.to_s + end + + def events_to_rss + page_url = advent_calendar_index_url params[:year], params[:locale] + xml = Builder::XmlMarkup.new + xml.instruct! + xml.rdf:RDF, :xmlns => "http://purl.org/rss/1.0/", + :'xmlns:rdf' => "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + :"xmlns:dc" => "http://purl.org/dc/elements/1.1/", + :'xmlns:foaf' => "http://xmlns.com/foaf/0.1/", + :'xmlns:ical' => "http://www.w3.org/2002/12/cal/icaltzd#", + :'xml:lang' => "ja" do + + xml.channel :'rdf:about' => page_url do + xml.title "RubyKaigi AdventCalender #{params[:year]}" + xml.link page_url + xml.dc:date, AdventEvent.all.first.pub_date + xml.description "RubyKaigi AdventCalender #{params[:year]}" + xml.items do + xml.rdf:Seq do + AdventEvent.all.each{|e| xml.rdf:li, :'rdf:resource' => page_url + "##{e.id}" } + end + end + end + + AdventEvent.all.each do |e| + xml.item :about => page_with_link_url = page_url + "##{e.id}" do + xml.title e.name + xml.description do + xml.cdata! Haml::Engine.new(<<-HAML).render(binding) +.summary + %a{:href => "#{page_with_link_url}"}= e.name +.time #{l(e.dtstart, :format => :short)} - #{l(e.dtend, :format => :short)} +.location= e.location +.url + - if e.url.present? + %a{:href => e.url, :target => "_blank"}= e.url +.hosted_by= (e.hosted_by.present? ? " Hosted By: #{e.hosted_by}" : '') + HAML + end + xml.dc:date, e.pub_date + xml.link page_with_link_url + xml.foaf:topic do + xml.ical:Vevent do + xml.ical:dtstart, e.dtstart + xml.ical:dtend, e.dtend + xml.ical:location, e.location + xml.ical:url, e.url + end + end + end + end + end + end + +end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 13aeeb0f..01617079 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,10 +1,8 @@ -require 'authenticated_system' # Filters added to this controller apply to all controllers in the application. # Likewise, all the methods added will be available for all controllers. class ApplicationController < ActionController::Base # helper :all # include all helpers, all the time - include AuthenticatedSystem # See ActionController::RequestForgeryProtection for details # Uncomment the :secret if you're not using the cookie session store @@ -15,6 +13,30 @@ class ApplicationController < ActionController::Base # from your application log (in this case, all fields with names like "password"). # filter_parameter_logging :password + class << self + private + def layout_for_latest_ruby_kaigi + layout proc{|c| "ruby_kaigi#{RubyKaigi.latest_year}" } + end + end + + private + + def login_required + return true if authenticated? + + session[:return_to] = request.request_uri + redirect_to signin_path + false + end + + def staff_only + return false unless login_required + return true if user.staff? + + render :file => Rails.root + 'public/403.html', :status => :forbidden + false + end def basic_auth_required_by_admin authenticate_or_request_with_http_basic("restricted ared: username is rubykaigi, password is itsumono.") do |username, password| @@ -30,19 +52,32 @@ def basic_auth_required_by_sponsor end end - def registration_open_at - @registration_open_at = Time.parse(configatron.paypal.open_at) + def current_cart + cart = session[:cart] + session[:cart] = __renew_cart_if_old_version_is_stored(cart) + end + + def __renew_cart_if_old_version_is_stored(cart) + return Cart.new unless cart + return Cart.new unless cart.class.respond_to?(:model_name) + cart end - def registration_open?(now = Time.now) - registration_open_at <= now + def render_not_found + render(:status => 404, :file => 'public/404.html') end - def lt_submission_close_at - Time.parse(configatron.lt_submission.close_at) + def render_forbidden + render(:status => 403, :file => 'public/403.html') end - def lt_submission_open?(now = Time.now) - lt_submission_close_at >= now + def render_unprocessable + render(:status => 422, :file => 'public/422.html') + end + + + # XXX duplicated in application_helper.rb + def current_locale + I18n.locale end end diff --git a/app/controllers/carts_controller.rb b/app/controllers/carts_controller.rb new file mode 100644 index 00000000..28b81a15 --- /dev/null +++ b/app/controllers/carts_controller.rb @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +class CartsController < LocaleBaseController + layout_for_latest_ruby_kaigi + before_filter :login_required, :only => :index + + def index + @cart = current_cart + end + + def add_item + @cart = current_cart + locale = params[:locale] || current_locale + product_item = ProductItem.find_by_item_code(params[:product_item_code]) + unless product_item + flash[:error] = "ProductItem error" + redirect_to(registrations_url(:year => RubyKaigi.latest_year, :locale => locale)) and return + end + if product_item.individual_sponsor? && authenticated? && user.individual_sponsor? + flash[:error] = "You're already Individual Sponsor of RubyKaigi #{RubyKaigi.latest_year}" + redirect_to(registrations_url(:year => RubyKaigi.latest_year, :locale => locale)) and return + end + + begin + @cart.add_product(product_item) + rescue Cart::OverProductItemLimitationError + flash[:error] = "You cannot register such quantity at once(you should set under 4 or we don't have enough stock)." + redirect_to(carts_path(:locale => locale)) and return + end + + redirect_to carts_path(:locale => locale) + end + + def update + @cart = current_cart + locale = params[:locale] || current_locale + new_qty = params[:qty].map {|item_code, qty| [item_code, qty.to_i]} + new_qty.each do |(item_code, qty)| + product_item = ProductItem.find_by_item_code(item_code) + unless product_item + flash[:error] = "ProductItem error" + redirect_to(carts_path) and return + end + if product_item.individual_sponsor? && authenticated? && user.individual_sponsor? + flash[:error] = "You cannot change qty for Individual Sponsor of RubyKaigi #{RubyKaigi.latest_year}" + redirect_to(registrations_url(:year => RubyKaigi.latest_year, :locale => locale)) and return + end + begin + @cart.add_product(product_item, qty) + rescue Cart::OverProductItemLimitationError + flash[:error] = "You cannot register such quantity at once(you should set under 4 or we don't have enough stock)." + redirect_to(carts_path) and return + end + + end + redirect_to carts_path + end + + def remove_item + cart = current_cart + product_item = ProductItem.find_by_item_code(params[:product_item_code]) + cart.remove_product(product_item) + redirect_to carts_path(:locale => current_locale) + end + +end diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb new file mode 100644 index 00000000..b91f2e57 --- /dev/null +++ b/app/controllers/dashboard_controller.rb @@ -0,0 +1,8 @@ +class DashboardController < LocaleBaseController + before_filter :login_required + + layout_for_latest_ruby_kaigi + + def index + end +end diff --git a/app/controllers/exchange_tickets_controller.rb b/app/controllers/exchange_tickets_controller.rb deleted file mode 100644 index bf4ac034..00000000 --- a/app/controllers/exchange_tickets_controller.rb +++ /dev/null @@ -1,37 +0,0 @@ -class ExchangeTicketsController < ApplicationController - layout "ruby_kaigi2009" - verify :method => :post, :only => [:reissue], :redirect_to => {:action => :index} - - before_filter :email_required, :only => [:reissue] - - def index - end - - def show - @ticket = ExchangeTicket.find_by_code4u(params[:code4u]) - unless @ticket - render :file => "#{RAILS_ROOT}/public/404.html", :sttus => 404 - end - end - - def reissue - tickets = PaypalTransaction.find_all_by_payer_email(@email). - map(&:exchange_ticket) - tickets.each do |ticket| - ticket.reissue - end - if tickets.blank? - logger.warn("Cannot find any PaypalTransaction by payer_email:'#{@email}'") - end - end - - private - def email_required - @email = params[:email] - if @email.blank? - redirect_to :action => "index" - else - true - end - end -end diff --git a/app/controllers/lightning_talk_submissions_controller.rb b/app/controllers/lightning_talk_submissions_controller.rb deleted file mode 100644 index a26a2233..00000000 --- a/app/controllers/lightning_talk_submissions_controller.rb +++ /dev/null @@ -1,46 +0,0 @@ -class LightningTalkSubmissionsController < LocaleBaseController - layout proc{|c| "ruby_kaigi#{c.params[:year]}" } - - before_filter :check_submission_closed, :only => :index # 書いている途中のはPOSTしてもよい - - # GET /lightning_talk_submissions - def index - @lightning_talk_submission = LightningTalkSubmission.new( - :day1 => LightningTalkSubmission::RubyKaigi2009.day1, - :day2 => LightningTalkSubmission::RubyKaigi2009.day2) - year = params[:year] - render :template => "lightning_talk_submissions/#{year}/#{action_name}_#{params[:locale]}" - end - - # POST /lightning_talk_submissions - def create - @lightning_talk_submission = LightningTalkSubmission.new(params[:lightning_talk_submission]) - - if @lightning_talk_submission.save - begin - LightningTalkSubmissionMailer.deliver_submission_received(@lightning_talk_submission) - rescue - logger.error "LightningTalkSubmissionMailer.deliver_submission_received failed" - logger.error $! - end - redirect_to :action => 'thankyou' - else - year = params[:year] - render :template => "lightning_talk_submissions/#{year}/index_#{params[:locale]}" - end - end - - def thankyou - year = params[:year] - render :template => "lightning_talk_submissions/#{year}/#{action_name}_#{params[:locale]}" - end - - private - def check_submission_closed - unless lt_submission_open? - year = params[:year] - render :template => "lightning_talk_submissions/#{year}/closed" - end - true - end -end diff --git a/app/controllers/live_controller.rb b/app/controllers/live_controller.rb deleted file mode 100644 index b4b5962b..00000000 --- a/app/controllers/live_controller.rb +++ /dev/null @@ -1,17 +0,0 @@ -class LiveController < LocaleBaseController - layout "ruby_kaigi2009" - - def show - begin - render :template => "ruby_kaigi2009/live/#{params[:page_name]}_#{I18n.locale}" - rescue Errno::ENOENT, ActionView::MissingTemplate => e - alternative = Dir.glob(Rails.root + "app/views/ruby_kaigi2009/live/#{params[:page_name]}*").first - if File.exist? alternative - alt_locale = alternative.split("_").last.split(".").first - redirect_to(:action => :show, :year => params[:year], :page_name => params[:page_name], :locale => alt_locale) - else - raise e - end - end - end -end diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb new file mode 100644 index 00000000..eea6610a --- /dev/null +++ b/app/controllers/orders_controller.rb @@ -0,0 +1,124 @@ +# -*- coding: utf-8 -*- +class OrdersController < LocaleBaseController + before_filter :login_required + + layout_for_latest_ruby_kaigi + + def create + cart = current_cart + locale = params[:locale] || current_locale + unless cart.all_item_in_stock? + flash[:error] = "Your cart is including out of stock item(s). Remove item(s) from your cart and retry." + redirect_to(carts_path) and return + end + @order = Order.new(:rubyist => user, :ruby_kaigi => RubyKaigi.latest) + @order.add_line_item_from_cart(cart) + if @order.individual_sponsor_included? && authenticated? && user.individual_sponsor? + flash[:error] = "You're already Individual Sponsor of RubyKaigi #{RubyKaigi.latest_year}" + redirect_to(carts_path(:locale => locale)) and return + end + if @order.save + session[:order_id] = @order.id + if @order.individual_sponsor_included? + redirect_to individual_sponsor_option_orders_path(:locale => locale) + else + redirect_to confirm_orders_path(:locale => locale) + end + else + flash[:error] = t('flash.order.save.fail') + redirect_to carts_path(:locale => locale) + end + end + + def confirm + @order = Order.find(session[:order_id]) + locale = params[:locale] || current_locale + @paypal_form = Paypal::EncryptedForm.new(@order, + returned_orders_url(:locale => locale), paypal_ipn_url(:secret => Paypal::EncryptedForm.ipn_secret)) + unless @order + flash[:error] = t('flash.order.notfound') + redirect_to carts_path(:locale => locale) + end + end + + def update + @order = Order.find(params[:id]) + if (opt_params = params[:individual_sponsor_option]) + if update_individual_sponsor_option(opt_params) + session[:order_id] = @order.id + redirect_to confirm_orders_path(:locale => current_locale) and return + else + render :individual_sponsor_option + end + end + end + + # XXX Restfulにしたほうがいいよなーと思いつつも易きに流れます(kakutani) + def individual_sponsor_option + @order = Order.find(session[:order_id], :include => [:line_items => [:individual_sponsor_option]]) + @option = @order.line_items.detect {|i| i.individual_sponsor? }.individual_sponsor_option + @option.link_url = user.website if @option.link_url.blank? + @option.link_label = user.full_name if @option.link_label.blank? + end + + def returned + clear_current_cart + + txn_id = params[:tx] + unless txn_id + render_not_found && return + end + if Rails.env.production? || Rails.env.staging? + redirect_to(:action => 'thanks', :locale => params[:locale] || current_locale) && return + end + + pdt = Paypal::Pdt.request(txn_id) + logger.info("<============ pdt params =================>") + logger.info("{") + pdt.to_a.sort_by{|pair| pair.first}.each do |(k,v)| + logger.info("'#{k}' => '#{v}',") + end + logger.info("}") + logger.info("============> pdt params =================>") + + order = Order.find_by_invoice_code(pdt["invoice"]) + job = Paypal::HandlePaymentNotificationJob.new(order.id) + # XXX duplicated of paypal_controller#instant_payment_notification + Order.transaction do + notification = Paypal::PaymentNotification.from_notified_params(pdt) + order.paypal_payment_notification = notification + notification.save! + order.save! + end + job = Paypal::HandlePaymentNotificationJob.new(order.id) + job.perform + + redirect_to(:action => 'thanks') + end + + def thanks + end + + private + def clear_current_cart + session[:cart] = nil + end + + def update_individual_sponsor_option(opt_params) + @option = IndividualSponsorOption.find(opt_params[:id]) + @option.additional_amount = opt_params[:additional_amount].to_i + @option.attend_party = opt_params[:attend_party] + @option.anonymous = opt_params[:anonymous] + if @option.anonymous + @option.link_label = 'Anonymous' + @option.link_url = '' + else + @option.link_label = opt_params[:link_label] + @option.link_url = opt_params[:link_url] + end + @option.save + order = @option.order_item.order + order.calculate_price + order.save + end +end diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb new file mode 100644 index 00000000..80158d6e --- /dev/null +++ b/app/controllers/pages_controller.rb @@ -0,0 +1,72 @@ +# coding: utf-8 +class PagesController < LocaleBaseController + skip_before_filter :login_required + before_filter :readonly + before_filter :page_name_is_valid + before_filter :redirect_to_past_kaigi + + layout_for_latest_ruby_kaigi + + def show + case params[:year] + when '2009', '2010' + # XXX: existing static pages should be handled before + page_name = params[:page_name] + if page_name == 'index' || page_name.blank? + render :file => "public/#{params[:year]}/#{params[:locale]}/index.html" + else + render :file => 'public/404.html', :status => 404, :layout => false + end + return + when "2011" + @body_id = params[:page_name] + begin + if params[:page_name] =~ /^phone/ + render :template => "pages/2011/#{params[:page_name]}", :layout => "ruby_kaigi2011_phone" + else + render :template => "pages/2011/#{params[:page_name]}", :layout => "ruby_kaigi2011" + end + rescue ActionView::MissingTemplate => e + render :file => "public/404.html", :status => 404, :layout => false + end + return + end + + # params[:page_name] pass white list at `page_name_is_valid' + begin + render :template => "ruby_kaigi2009/#{params[:page_name]}_#{I18n.locale}" + rescue Errno::ENOENT, ActionView::MissingTemplate => e + alternative = Dir.glob(Rails.root + "app/views/ruby_kaigi2009/#{params[:page_name]}*").first + if File.exist? alternative + alt_locale = alternative.split("_").last.split(".").first + redirect_to(:action => :show, :year => params[:year], :page_name => params[:page_name], :locale => alt_locale) + else + raise e + end + end + end + + private + def readonly + raise MethodNotAllowd unless request.get? # FIXME: typo + end + + def page_name_is_valid + head(:not_found) unless /\A[A-Za-z0-9_\-]*\Z/ =~ params[:page_name] + end + + def redirect_to_past_kaigi + if (year = params[:year].to_i) < 2009 + redirect_to "http://jp.rubyist.net/RubyKaigi#{year}" + elsif 2011 < year + render :file => "public/404.html", :status => 404, :layout => false + else + true + end + end + + def sponsors_only + return basic_auth_required_by_sponsor if params[:page_name] == "Sponsors" + true + end +end diff --git a/app/controllers/paypal_controller.rb b/app/controllers/paypal_controller.rb index bb1e0e8d..103f5cc6 100644 --- a/app/controllers/paypal_controller.rb +++ b/app/controllers/paypal_controller.rb @@ -1,56 +1,48 @@ +# -*- coding: utf-8 -*- class PaypalController < ApplicationController - before_filter :configure_ruby_kaigi_year - skip_before_filter :verify_authenticity_token - caches_page :cancelled, :sold_out + skip_before_filter :verify_authenticity_token, :only => [:instant_payment_notification] - layout "ruby_kaigi2009" - - def index - redirect_to(root_path) - end - - def thanks - if params[:tx].blank? - redirect_to root_path - else - @notified_transaction_id = params[:tx] + verify :method => :post, :only => [:instant_payment_notification] + def instant_payment_notification + logging_ipn_params("ipn params") + unless (params[:secret] == Paypal::EncryptedForm.ipn_secret || + params[:receiver_email] == Paypal::EncryptedForm.business_email) + render :nothing => true, :status => 400 + return end - end - - def cancelled - end - def sold_out - end - - def instant_payment_notification - begin - @paypal = PaypalTransaction.find_by_txn_id(params[:txn_id]) - if @paypal - logger.info("txn_id is already taken #{@paypal.txn_id}") - render :nothing => true, :status => 200 - return - end - @paypal = PaypalTransaction.create_for_verify_later!(params) - if @paypal.validate_transaction - @paypal.notify_exchange_ticket_information_to_payer - else - logger.error("PaypalTransaction was invalid: '#{@paypal.txn_id}'") - end + unless (order = Order.find_by_invoice_code(params["invoice"])) + logging_ipn_params("ipn params (order not found)") render :nothing => true, :status => 200 - rescue => e - logger.error("Something wrong with processing PaypalTransaction: '#{@paypal.txn_id}'") - logger.error(e) - render :nothing => true, :status => 500 + return end - end - def payment_data_transfer - render :nothing => true +# FIXME Order#priceのバグのため、個人スポンサー販売時にはこの数値が合ってなかった。削るか復活させるかはもうちょっとテストを書けるかどうかで判断したいので、いまはコメントアウトしてる(kakutani) +# unless (params[:mc_gross] == order.price.to_s && params[:mc_currency] == "JPY") +# render :nothing => true, :status => 400 +# return +# end + + Order.transaction do + notification = Paypal::PaymentNotification.from_notified_params(params) + order.paypal_payment_notification = notification + notification.save! + order.save! + end + + Delayed::Job.enqueue(Paypal::HandlePaymentNotificationJob.new(order.id)) + render :nothing => true, :status => 200 end private - def configure_ruby_kaigi_year - @year = 2009 + def logging_ipn_params(header_message) + logger.info("<==== #{header_message} ====>") + logger.info("{") + notified_params = params.dup + notified_params.to_a.sort_by{|pair| pair.first}.each do |(k,v)| + logger.info("'#{k}' => '#{v}',") + end + logger.info("}") + logger.info("<==== #{header_message} ====>") end end diff --git a/app/controllers/public_releases_controller.rb b/app/controllers/public_releases_controller.rb deleted file mode 100644 index 069ae26c..00000000 --- a/app/controllers/public_releases_controller.rb +++ /dev/null @@ -1,55 +0,0 @@ -# coding: utf-8 -class PublicReleasesController < LocaleBaseController - skip_before_filter :login_required - before_filter :readonly - before_filter :page_name_is_valid - before_filter :redirect_to_past_kaigi -# before_filter :sponsors_only - - layout proc{|c| "ruby_kaigi#{c.params[:year]}" } - - def show - if params[:year] == "2010" - render :file => "public/2010/#{params[:locale]}/index.html" - return - end - - # params[:page_name] pass white list at `page_name_is_valid' - begin - @headline_entries = HeadlineEntry.recent - render :template => "ruby_kaigi2009/#{params[:page_name]}_#{I18n.locale}" - rescue Errno::ENOENT, ActionView::MissingTemplate => e - alternative = Dir.glob(Rails.root + "app/views/ruby_kaigi2009/#{params[:page_name]}*").first - if File.exist? alternative - alt_locale = alternative.split("_").last.split(".").first - redirect_to(:action => :show, :year => params[:year], :page_name => params[:page_name], :locale => alt_locale) - else - raise e - end - end - end - - private - def readonly - raise MethodNotAllowd unless request.get? # FIXME: typo - end - - def page_name_is_valid - head(:not_found) unless /\A[A-Za-z_\-]*\Z/ =~ params[:page_name] - end - - def redirect_to_past_kaigi - if (year = params[:year].to_i) < 2009 - redirect_to "http://jp.rubyist.net/RubyKaigi#{year}" - elsif 2010 < year - render :file => "public/404.html" - else - true - end - end - - def sponsors_only - return basic_auth_required_by_sponsor if params[:page_name] == "Sponsors" - true - end -end diff --git a/app/controllers/registrations_controller.rb b/app/controllers/registrations_controller.rb index 78e6dec5..c2e20574 100644 --- a/app/controllers/registrations_controller.rb +++ b/app/controllers/registrations_controller.rb @@ -1,19 +1,17 @@ class RegistrationsController < LocaleBaseController - before_filter :registration_open - - caches_page :index - - layout proc{|c| "ruby_kaigi#{c.params[:year]}" } + layout_for_latest_ruby_kaigi def index - year = params[:year] - render :template => "registrations/#{year}/#{action_name}_#{params[:locale]}" + set_product_item + render "pages/2011/registration" end - - def registration_open - unless registration_open? - render :template => "registrations/2009/not_yet" - end - true + def phone_index + set_product_item + render "pages/2011/phone_registration", :layout => "ruby_kaigi2011_phone" + end + def set_product_item + @individual_sponsor = ProductItem.find_by_item_code('rk11_individual_sponsor') + @kaigi = ProductItem.find_by_item_code("rk11") + @party = ProductItem.find_by_item_code("rk11_party") end end diff --git a/app/controllers/rubyists_controller.rb b/app/controllers/rubyists_controller.rb new file mode 100644 index 00000000..8293c132 --- /dev/null +++ b/app/controllers/rubyists_controller.rb @@ -0,0 +1,10 @@ +class RubyistsController < LocaleBaseController + layout_for_latest_ruby_kaigi + + def show + @rubyist = Rubyist.find_by_username(params[:id]) + unless @rubyist + render :status => '404', :file => 'public/404.html', :layout => false + end + end +end diff --git a/app/controllers/schedule_controller.rb b/app/controllers/schedule_controller.rb new file mode 100644 index 00000000..ee76e71d --- /dev/null +++ b/app/controllers/schedule_controller.rb @@ -0,0 +1,28 @@ +# coding: utf-8 +class ScheduleController < LocaleBaseController + skip_before_filter :login_required + skip_filter :assign_locale, :only => :all + + layout_for_latest_ruby_kaigi + + def grid + @timetable = RubyKaigi2011::Timetable.new + @rooms = RubyKaigi2011::Room.all + @body_id = 'schedule' + end + + def details + timetable = RubyKaigi2011::Timetable.new + @event = RubyKaigi2011::Event.find(params[:id]) + room_timetable = timetable.room_timetable_contains_event(@event) + @session_of_event = room_timetable.session_contains_event(@event) + @room = RubyKaigi2011::Room.find(room_timetable.room_id) + end + + def all + @schedule = RubyKaigi2011::Timetable.new + respond_to do |format| + format.json { render :json => @schedule.to_hash.to_json } + end + end +end diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 48000ad1..17c11218 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -1,45 +1,80 @@ class SessionsController < ApplicationController + layout_for_latest_ruby_kaigi + def new - @openid_identifier = "" end - def create - logout_keeping_session! - open_id_authentication + # redirect to authenticator, and callback here + def show + authenticate! + flash[:notice] = 'You have signed in successfully' + redirect_to session.delete(:return_to) || dashboard_path + rescue Net::HTTPFatalError => e + Rails.logger.warn e + flash[:error] = 'Something Wrong in Twitter.' + redirect_to new_sessions_path end + def destroy - logout_killing_session! - add_notice("You have been signed out.", :fade => true) - redirect_back_or_default('/') + logout + flash[:notice] = 'You have signed out successfully' + redirect_to :back end - private - # Track failed login attempts - def note_failed_signin - add_error("Couldn't sign in via '#{session[:openid_identifier]}'") - logger.warn "Failed signin for '#{session[:openid_identifier]}' from #{request.remote_ip} at #{Time.now.utc}" + def unauthenticated + opts = warden.env['warden.options'] + + if oauth = opts[:oauth] + handle_twitter(oauth) + elsif openid = opts[:openid] + handle_openid(openid) + else + flash[:error] = warden.message + redirect_to new_sessions_path + end end - def open_id_authentication - authenticate_with_open_id do |result, identity_url| - unless result.successful? - session[:openid_identifier] = identity_url - note_failed_signin - redirect_back_or_default(signin_path) - return - end - account = (Account.find_by_identity_url(identity_url) rescue nil) - if account - self.current_user = account - add_notice("Sign in successfully", :fade => true) - redirect_back_or_default('/') - return + private + + def handle_twitter(oauth) + twitter = oauth[:twitter] + atoken = twitter[:access_token] + + client = Twitter::OAuth.new(*twitter.values_at(:consumer_key, :consumer_secret)) + client.authorize_from_access atoken.token, atoken.secret + + user_id = atoken.params[:user_id] + + begin + profile = Twitter::Base.new(client).user(user_id) + + begin + TwitterProfile[user_id] = profile.slice(:screen_name, :profile_image_url) + rescue Errno::ECONNREFUSED => e + Rails.logger.warn e end - # success but account doesn't exist - add_notice("Create new account", :fade => true) - session[:openid_identifier] = identity_url - redirect_to new_account_path + rescue Twitter::Unavailable, Twitter::InformTwitter, Twitter::RateLimitExceeded => e + Rails.logger.warn e + profile = Hashie::Mash.new end + + redirect_to_new_account_path( + :twitter_user_id => user_id, + :full_name => profile.name, + :website => profile.url, + :avatar_type => 'twitter' + ) + end + + def handle_openid(openid) + redirect_to_new_account_path( + :identity_url => openid[:response].identity_url + ) + end + + def redirect_to_new_account_path(paramz) + session[:params_from_authenticator] = paramz + redirect_to new_account_path end end diff --git a/app/controllers/talks_controller.rb b/app/controllers/talks_controller.rb deleted file mode 100644 index 422ae81c..00000000 --- a/app/controllers/talks_controller.rb +++ /dev/null @@ -1,42 +0,0 @@ -class TalksController < LocaleBaseController - layout proc{|c| "ruby_kaigi#{c.params[:year]}" } - before_filter :capture_year - - def index - respond_to do |wants| - wants.html do - @title = t(:timetable) - render :template => "#{controller_name}/#{params[:year]}/#{action_name}" - end - wants.json do - @talks = Talk.year(@year).sort_by {|t| t.code } - render :json => @talks - end - end - end - - def show - @year, code = [params[:year], params[:id]] - @talk = Talk.year(@year).find_by_code(code) - require 'json' - @nicovideo_links = JSON.parse(@talk.nicovideo_links) # sm, title - unless @talk - render :file => "#{Rails.root}/public/404.html", :status => 404 - return - end - respond_to do |wants| - wants.html do - @title = @talk.title - render :template => "#{controller_name}/#{@year}/#{action_name}" - end - wants.json do - render :json => @talk.to_json - end - end - end - - private - def capture_year - @year = params[:year] - end -end diff --git a/app/controllers/team_controller.rb b/app/controllers/team_controller.rb new file mode 100644 index 00000000..d24b1902 --- /dev/null +++ b/app/controllers/team_controller.rb @@ -0,0 +1,6 @@ +class TeamController < LocaleBaseController + layout_for_latest_ruby_kaigi + def index + @team = YAML.load(File.read(File.join(Rails.root, 'db', '2011', 'team.yaml'))) + end +end diff --git a/app/controllers/tickets_controller.rb b/app/controllers/tickets_controller.rb new file mode 100644 index 00000000..512bd99a --- /dev/null +++ b/app/controllers/tickets_controller.rb @@ -0,0 +1,62 @@ +class TicketsController < ApplicationController + before_filter :login_required, :only => [:index, :regenerate_permalink] + + layout_for_latest_ruby_kaigi + + def index + I18n.locale = 'en' + @tickets = user.tickets_of(RubyKaigi.latest_year) + end + + def edit + @ticket = Ticket.find_by_code4url(params[:id]) +# unless @ticket.rubyist == user +# render :status => '403', :file => 'public/403.html' +# return +# end + unless @ticket + render :status => '404', :file => 'public/404.html', :layout => false + return + end + @title = "[Edit] #{@ticket.ticket_code}, #{I18n.t(@ticket.ticket_type)}" + end + + def update + @ticket = Ticket.find_by_code4url(params[:id]) +# unless @ticket.rubyist == user +# render :status => '403', :file => 'public/403.html' +# return +# end + unless @ticket + render :status => '404', :file => 'public/404.html', :layout => false + return + end + @ticket.name = params[:ticket][:name] + @ticket.email = params[:ticket][:email] + if @ticket.save + flash[:notice] = 'Your ticket have been updated.' + redirect_to ticket_path(@ticket) + else + render :edit + end + end + + def show + I18n.locale = 'en' + @ticket = Ticket.find_by_code4url(params[:id]) + unless @ticket + render :status => '404', :file => 'public/404.html', :layout => false + return + end + @title = "#{@ticket.ticket_code}, #{I18n.t(@ticket.ticket_type)}" + end + + def regenerate_permalink + @ticket = Ticket.find_by_code4url(params[:id]) + unless @ticket + render :status => '404', :file => 'public/404.html', :layout => false + end + @ticket.update_attribute(:code4url, Ticket.generate_code4url) + redirect_to ticket_path(@ticket) + end +end diff --git a/app/controllers/welcome_controller.rb b/app/controllers/welcome_controller.rb index 2762be0e..5dfb5fda 100644 --- a/app/controllers/welcome_controller.rb +++ b/app/controllers/welcome_controller.rb @@ -1,6 +1,8 @@ -class WelcomeController < ApplicationController +# -*- coding: utf-8 -*- +class WelcomeController < LocaleBaseController def index - redirect_to "/2010" +# latest_yearをイジるとPayPalまわりが壊れるので、決め打ち +# redirect_to "/#{RubyKaigi.latest_year}" + redirect_to "/2011" end - end diff --git a/app/helpers/accounts_helper.rb b/app/helpers/accounts_helper.rb deleted file mode 100644 index 17850b4b..00000000 --- a/app/helpers/accounts_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module AccountsHelper -end diff --git a/app/helpers/admin/lightning_talk_selections_helper.rb b/app/helpers/admin/lightning_talk_selections_helper.rb deleted file mode 100644 index 023c46dd..00000000 --- a/app/helpers/admin/lightning_talk_selections_helper.rb +++ /dev/null @@ -1,17 +0,0 @@ -module Admin::LightningTalkSelectionsHelper - def render_disp_order(talk, idx) - "" -# "#{up_command(talk, idx)} #{down_command(talk, idx)} " - end - - private - def up_command(talk, idx) - return "[−]" if @group.first == talk - "[" << command_link("▲", :up, talk, idx) << "]" - end - - def down_command(talk, idx) - return "[−]" if @group.last == talk - "[" << command_link("▼", :down, talk, idx) << "]" - end -end diff --git a/app/helpers/admin/lightning_talk_submission_helper.rb b/app/helpers/admin/lightning_talk_submission_helper.rb deleted file mode 100644 index ecef6731..00000000 --- a/app/helpers/admin/lightning_talk_submission_helper.rb +++ /dev/null @@ -1,32 +0,0 @@ -module Admin::LightningTalkSubmissionHelper - def render_selection_radio_of(form, submission, selection, result_type) - radio_button = form.radio_button( - "result", result_type, - { :id => "submission_#{submission.id}_selection_result_#{result_type.abs}", - :onchange => remote_function( - :update => dom_id(selection, :selection), - :url => admin_lightning_talk_submission_lightning_talk_selection_path(submission), - :method => :put, - :with => "'selection[result]=#{result_type}&lightning_talk_submission_id=#{submission.id}'" - )}) - label_tag = <<-LABEL -  - LABEL - "#{radio_button}#{label_tag}" - end - - def result_type_label_of(type) - case type - when LightningTalkSelection::Result.initial - "未審査" - when LightningTalkSelection::Result.rejected - "不採用" - when LightningTalkSelection::Result.day1_2009 - "金曜日(2009-07-17)" - when LightningTalkSelection::Result.day2_2009 - "土曜日(2009-07-18)" - else - raise "Not Yet Specified label for LightningTalkSelection::Rejected: '#{type}'" - end - end -end diff --git a/app/helpers/admin/paypal_transactions_helper.rb b/app/helpers/admin/paypal_transactions_helper.rb deleted file mode 100644 index 98f93022..00000000 --- a/app/helpers/admin/paypal_transactions_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module Admin::PaypalTransactionsHelper -end diff --git a/app/helpers/admin/rubyists_helper.rb b/app/helpers/admin/rubyists_helper.rb new file mode 100644 index 00000000..62310d9f --- /dev/null +++ b/app/helpers/admin/rubyists_helper.rb @@ -0,0 +1,2 @@ +module Admin::RubyistsHelper +end diff --git a/app/helpers/advent_helper.rb b/app/helpers/advent_helper.rb new file mode 100644 index 00000000..ec201b01 --- /dev/null +++ b/app/helpers/advent_helper.rb @@ -0,0 +1,2 @@ +module AdventHelper +end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 7ff4d0c3..1d9b70ed 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,15 +1,62 @@ # Methods added to this helper will be available to all templates in the application. module ApplicationHelper - def registration_open_at - @registration_open_at = Time.parse(configatron.paypal.open_at) + def url_of_paypal_checkout + configatron.paypal.post_url end - def registration_open?(now = Time.now) - registration_open_at <= now + def current_locale + I18n.locale end # TODO support :scope def t_required(locale_name) "#{t(locale_name)} (#{t(:required)})" end + + def render_flashes + if (flash_message = flash[:error]) + level = 'error' + elsif (flash_message = flash[:warning]) + level = 'warning' + elsif (flash_message = flash[:notice]) + level = 'notice' + end + if (flash_message) + render :partial => "shared/flash", :locals => { + :level => level, :flash_message => flash_message} + end + end + + def registration_opened? + datetime = RubyKaigi.latest.registration_open_at + !!datetime.try(:past?) + end + + def rubykaigi_org_feed_url(locale) + if locale.to_sym == :ja + "http://pipes.yahoo.com/pipes/pipe.run?_id=d74f71afb8dfc68ec415b47f53ec52aa&_render=rss" + else + "http://pipes.yahoo.com/pipes/pipe.run?_id=494b7af263b25d814618521c7148107f&_render=rss" + end + end + + def noindex_nofollow + '' + end + + def img_tag_for_individual_sponsor(sponsor, size = 32) + img_location = (sponsor.anonymous? ? "/images/bow_face.png" : sponsor.gravatar_url(size)) + image_tag(img_location, :size => "#{size}x#{size}", :alt => sponsor.link_label, :title => sponsor.link_label) + end + + def img_tag_for_usernavi(user, size=24) + src = user.gravatar_url(size) + image_tag(src, :alt => user.username, :title => user.username, :size => "#{size}x#{size}", :class => 'icon') + end + + def gravatar_tag(md5, options={}) + options = options.symbolize_keys + size = options[:size] || 80 + image_tag 'http://www.gravatar.com/avatar/%s?s=%d' % [md5, size], :width => size, :height => size, :alt => 'avatar' + end end diff --git a/app/helpers/carts_helper.rb b/app/helpers/carts_helper.rb new file mode 100644 index 00000000..105545d7 --- /dev/null +++ b/app/helpers/carts_helper.rb @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +module CartsHelper + def proceed_to_checkout_button + link_to(image_tag("/2011/images/cartsBtnProceedToCheckout.png", :alt => "Proceed to checkout(購入手続きへ進む)", :class => 'proceed_btn'), orders_path(:locale => params[:locale]), :method => :post) + end +end diff --git a/app/helpers/dashboard_helper.rb b/app/helpers/dashboard_helper.rb new file mode 100644 index 00000000..a94ddfc2 --- /dev/null +++ b/app/helpers/dashboard_helper.rb @@ -0,0 +1,2 @@ +module DashboardHelper +end diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb new file mode 100644 index 00000000..8a9a878c --- /dev/null +++ b/app/helpers/events_helper.rb @@ -0,0 +1,2 @@ +module EventsHelper +end diff --git a/app/helpers/exchange_tickets_helper.rb b/app/helpers/exchange_tickets_helper.rb deleted file mode 100644 index 005c2853..00000000 --- a/app/helpers/exchange_tickets_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module ExchangeTicketsHelper -end diff --git a/app/helpers/lightning_talk_submissions_helper.rb b/app/helpers/lightning_talk_submissions_helper.rb deleted file mode 100644 index eaebffd1..00000000 --- a/app/helpers/lightning_talk_submissions_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module LightningTalkSubmissionsHelper -end diff --git a/app/helpers/orders_helper.rb b/app/helpers/orders_helper.rb new file mode 100644 index 00000000..60b4cd3a --- /dev/null +++ b/app/helpers/orders_helper.rb @@ -0,0 +1,7 @@ +module OrdersHelper + def checkout_paypal_button +# checkout_paypal_button = (current_locale == "ja" ? image_tag("/2010/images/checkout_paypal_ja.png", :alt => "PayPalでチェックアウトする") : image_tag("/2010/images/checkout_paypal_en.png", :alt => "Checkout via PayPal")) +# link_to(addtocart_button, orders_path, :method => :post, :class => 'noborder') + image_submit_tag("/2011/images/cartsBtnCheckoutViaPayPal.png") + end +end diff --git a/app/helpers/past_kaigi_helper.rb b/app/helpers/past_kaigi_helper.rb deleted file mode 100644 index f5938866..00000000 --- a/app/helpers/past_kaigi_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module PastKaigiHelper -end diff --git a/app/helpers/registrations_helper.rb b/app/helpers/registrations_helper.rb index 65cb759c..0af31163 100644 --- a/app/helpers/registrations_helper.rb +++ b/app/helpers/registrations_helper.rb @@ -1,54 +1,22 @@ +# -*- coding: utf-8 -*- module RegistrationsHelper - def render_paypal_buynow_form(hosted_button_id, item_sym) - unless sold_out?(item_sym) - do_render_paypal_buynow_form(hosted_button_id) - else - '
SOLD OUT
' - end - end - - - private - def sold_out?(item_sym) - flag = case item_sym - when :rubykaigi2009 - configatron.paypal.soldout.rubykaigi2009.conference - when :rubykaigi2009party - configatron.paypal.soldout.rubykaigi2009.party - end - !flag.nil? && flag - end - - def do_render_paypal_buynow_form(hosted_button_id) - paypal_url = configatron.paypal.base_url - post_to = "#{paypal_url}/cgi-bin/webscr" - <<-FORM -
- - - -#{paypal_hidden_lc} -#{paypal_button_img_tag('http://paypal.com')} - -
- FORM + def img_add_to_cart_button + file_path = "/2010/images/addtocart_#{current_locale}.png" + alt = (current_locale == "ja" ? "カートへ入れる" : "Add To Cart") + image_tag(file_path, :alt => alt) end - def paypal_hidden_lc - if I18n.locale == 'ja' - '' + def stock_notification(item) + return "" unless item.now_on_sale? + stock = item.stock + if stock < 30 + content_tag :span, :style => 'background:#d5d536;border:1px solid #999;padding: 4px;margin-left:1em' do + I18n.t('running_out_of_stock') + end else - '' + content_tag :span, :style => 'background:#36d536;border:1px solid #999;padding: 4px;margin-left:1em' do + I18n.t('in_stock') + end end end - - def paypal_button_img_tag(paypal_url) - button_url = "#{paypal_url}/en_US#{I18n.locale == 'ja' ? '/JP/' : '/'}i/btn/btn_buynowCC_LG.gif" - button_label = if I18n.locale == 'ja' - "PayPal - オンラインで安全・簡単にお支払い" - else - "PayPal - The safer, easier way to pay online!" - end - %Q!! - end end diff --git a/app/helpers/ruby_kaigi2009_helper.rb b/app/helpers/ruby_kaigi2009_helper.rb deleted file mode 100644 index 317c3b46..00000000 --- a/app/helpers/ruby_kaigi2009_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module RubyKaigi2009Helper -end diff --git a/app/helpers/rubyists_helper.rb b/app/helpers/rubyists_helper.rb new file mode 100644 index 00000000..d5b9b27e --- /dev/null +++ b/app/helpers/rubyists_helper.rb @@ -0,0 +1,5 @@ +module RubyistsHelper + def rubyist_name(rubyist) + rubyist.full_name.present? ? "#{rubyist.username} (#{rubyist.full_name})" : rubyist.username + end +end diff --git a/app/helpers/spike_helper.rb b/app/helpers/spike_helper.rb new file mode 100644 index 00000000..3fec840b --- /dev/null +++ b/app/helpers/spike_helper.rb @@ -0,0 +1,2 @@ +module SpikeHelper +end diff --git a/app/helpers/talks_helper.rb b/app/helpers/talks_helper.rb deleted file mode 100644 index 46bc24e1..00000000 --- a/app/helpers/talks_helper.rb +++ /dev/null @@ -1,18 +0,0 @@ -module TalksHelper - def talk_for(year, code) - talk = Talk.find_by_year_and_code(year, code) - yield talk, talk_path(:year => year, :locale => I18n.locale, :id => code) - end - - def speaker_for_timetable(speaker) - return nil unless speaker - shorten = speaker.gsub(/\([^\(]+\)/, "").strip - shorten = shorten.gsub(/(.+)/, "").strip - shorten = shorten.gsub(/\(.*$/, "") - shorten - end - - def render_hikidoc(str) - HikiDoc.to_html(str,{:use_wiki_name => false}) - end -end diff --git a/app/helpers/timetable_helper.rb b/app/helpers/timetable_helper.rb new file mode 100644 index 00000000..66c25ab9 --- /dev/null +++ b/app/helpers/timetable_helper.rb @@ -0,0 +1,2 @@ +module TimetableHelper +end diff --git a/app/models/account.rb b/app/models/account.rb deleted file mode 100644 index 21778fce..00000000 --- a/app/models/account.rb +++ /dev/null @@ -1,4 +0,0 @@ -class Account < ActiveRecord::Base - validates_presence_of :identity_url - validates_uniqueness_of :identity_url -end diff --git a/app/models/advent_event.rb b/app/models/advent_event.rb new file mode 100644 index 00000000..7c524514 --- /dev/null +++ b/app/models/advent_event.rb @@ -0,0 +1,45 @@ +class AdventEvent + cattr_reader :raw_events + attr_accessor :id, :name, :dtstart, :dtend, :url, :location, :pub_date, :hosted_by + + def initialize(attrs={}) + attrs.symbolize_keys! + self.id, self.url, self.location = attrs[:id], attrs[:url], attrs[:location] + self.dtstart = Time.zone.parse attrs[:dtstart] if attrs[:dtstart].present? + self.dtend = Time.zone.parse attrs[:dtend] if attrs[:dtend].present? + self.pub_date = Time.zone.parse attrs[:pub_date] if attrs[:pub_date].present? + self.name = attrs["name_#{I18n.locale}".intern] + self.hosted_by = attrs["hosted_by_#{I18n.locale}".intern] + end + + def today? + (dtstart.beginning_of_day..dtend.end_of_day).include? Time.now + end + + def to_hash + instance_variables.inject({}) do |hash, ivn| + hash[ivn[1..-1]] = instance_variable_get ivn + hash + end + end + + class << self + def load(year) + @@raw_events ||= YAML.load File.open Rails.root.join('db', year.to_s, 'advent_events.yml'), 'r', &:read + end + + def all + raw_events.map{|id, e| new e.merge(:id => id) }.sort_by &:dtstart + end + + def by_month + all.inject(ActiveSupport::OrderedHash.new) do |months, event| + month = event.dtstart.beginning_of_month + months[month] ||= [] + months[month] << event + months + end + end + + end +end diff --git a/app/models/cart.rb b/app/models/cart.rb new file mode 100644 index 00000000..4972340b --- /dev/null +++ b/app/models/cart.rb @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +class Cart + include ActiveModel::Conversion + extend ActiveModel::Naming + + class OverProductItemLimitationError < StandardError; end + attr_reader :items + + def initialize + @items = [] + end + + def add_product(product, qty = nil) + current_item = @items.find {|item| item.product_item == product } + if current_item + if qty == 0 + remove_product(product) +# else +# current_item.increment_quantity(qty) unless product.individual_sponsor? + end + else + current_item = CartItem.new(product) + @items << current_item + end + current_item + end + + def remove_product(product) + current_item = @items.find {|item| item.product_item == product } + if current_item + @items.delete(current_item) + end + current_item + end + + def total_price + @items.sum { |item| item.subtotal_price } + end + + def total_items + @items.sum { |item| item.quantity } + end + + def empty? + !!@items.empty? + end + + def individual_sponsor + @items.detect {|item| item.individual_sponsor? } + end + + def all_item_in_stock? + @items.all? {|item| item.in_stock? } + end + + # stub out ActiveRecord::Persistence#persisted? + def persisted? + false + end +end diff --git a/app/models/cart_item.rb b/app/models/cart_item.rb new file mode 100644 index 00000000..d465fd9f --- /dev/null +++ b/app/models/cart_item.rb @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +class CartItem + attr_reader :product_item, :quantity + attr_accessor :additional_amount + attr_accessor :link_label + attr_accessor :link_url + attr_accessor :attend_party + + def initialize(product_item) + @product_item = product_item + @quantity = 1 + @additional_amount = 0 + @link_label = "" + @link_url = "" + @attend_party = false + end + + def increment_quantity(qty = nil) + old_quantity = @quantity + unless qty + @quantity += 1 + else + @quantity = qty + end + if 4 < @quantity || (@product_item.stock - @quantity < 0) + @quantity = old_quantity + raise Cart::OverProductItemLimitationError + end + @quantity + end + + def unit_price + @product_item.unit_price + end + + def price + unit_price + additional_amount + end + + def subtotal_price + price * quantity + end + + def label + @product_item.label + end + + def item_code + @product_item.item_code + end + + def individual_sponsor? + @product_item.individual_sponsor? + end + + def in_stock? + 0 < ProductItem.find(@product_item.id).try(:stock) + end + + alias :attend_party? :attend_party +end diff --git a/app/models/contribution.rb b/app/models/contribution.rb new file mode 100644 index 00000000..b4e882af --- /dev/null +++ b/app/models/contribution.rb @@ -0,0 +1,233 @@ +# -*- coding: utf-8 -*- +class Contribution < ActiveRecord::Base + class OrderNotCompletedError < StandardError; end + class DuplicationError < StandardError; end + + class Type + ENUM = %w[attendee individual_sponsor party_attendee staff committer] + class << self + ENUM.each do |_type| + define_method(_type) { _type } + end + end + end # Type + + class FromOrder + attr_reader :order + + def initialize(order) + @order = order + end + + def create + validate_order_is_completed + + handle_individual_sponsor if individual_sponsor_included? + handle_attendee if attendee_included? + handle_party_attendee if party_attendee_included? + end + + private + def handle_individual_sponsor + tickets = [] + # TODO なんかこのへん年ごとに依存してるなあ。年毎のオブジェクトにdouble dispatchしたほうがいいんかな。 + individual_sponsor = build_contribution_for(Contribution::Type.individual_sponsor, extract_individual_sponsor_order_item).as_individual_sponsor + rk11_individual_sponsor = ProductItem.kaigi(2011).rk11_individual_sponsor + rk11_individual_sponsor.stock -= 1 + tickets << Ticket.build_from_contrib(individual_sponsor) + + Contribution.transaction do + [individual_sponsor,tickets, + rk11_individual_sponsor].flatten.compact.each(&:save!) + end + +# rk10_party = ProductItem.kaigi(2010).rk10_party +# if individual_sponsor.attend_party? && !rk10_party.sold_out? +# party_attendees = build_contribution_for(Contribution::Type.party_attendee, extract_individual_sponsor_order_item) +# tickets << Ticket.build_from_contrib(party_attendees) +# rk10_party.stock -= 1 +# end + +# Contribution.transaction do +# [individual_sponsor, party_attendees, +# rk10_individual_sponsor, rk10_party, tickets].flatten.compact.each(&:save!) +# end + end + + def handle_attendee + attendees = build_contribution_for(Contribution::Type.attendee, extract_attendee_item) + rk11_attendee = ProductItem.kaigi(2011).rk11 + rk11_attendee.stock -= attendees.size + tickets = Ticket.build_from_contrib(attendees) + Contribution.transaction do + [attendees, rk11_attendee, tickets].flatten.compact.each(&:save!) + end + end + + def handle_party_attendee + party_attendees = build_contribution_for(Contribution::Type.party_attendee, extract_party_attendee_item) + rk11_party = ProductItem.kaigi(2011).rk11_party + rk11_party.stock -= party_attendees.size + tickets = Ticket.build_from_contrib(party_attendees) + Contribution.transaction do + [party_attendees, rk11_party, tickets].flatten.compact.each(&:save!) + end + end + + def individual_sponsor_included? + !!extract_individual_sponsor_order_item + end + + def attendee_included? + !!extract_attendee_item + end + + def party_attendee_included? + !!extract_party_attendee_item + end + + def extract_individual_sponsor_order_item + order.line_items.detect {|o| o.item_code =~ /individual_sponsor/ } + end + + def extract_attendee_item + order.line_items.detect {|o| o.item_code =~ /^rk\d{2}$/ } + end + + def extract_party_attendee_item + order.line_items.detect {|o| o.item_code =~ /^rk\d{2}_party$/ } + end + + def build_contribution_for(contribution_type, item) + case contribution_type + when Contribution::Type.individual_sponsor + contrib = Contribution.find(:first, + :conditions => ["contribution_type = ? AND rubyist_id = ? AND ruby_kaigi_id = ?", + contribution_type, order.rubyist.id, order.ruby_kaigi.id]) + if contrib + raise(DuplicationError, + "#{order.rubyist.username}(order_id: #{order.id}) is arleady individual sponsor for rubykaigi #{order.ruby_kaigi.year}") + end + Contribution.new( + :contribution_type => contribution_type, + :rubyist => order.rubyist, + :ruby_kaigi => order.ruby_kaigi, + :order_item => item) + when Contribution::Type.attendee, Contribution::Type.party_attendee + (0...item.quantity).to_a.map do |_| + Contribution.new( + :contribution_type => contribution_type, + :rubyist => order.rubyist, + :ruby_kaigi => order.ruby_kaigi, + :order_item => item) + end + end + end + + def validate_order_is_completed + unless order.completed? + raise(OrderNotCompletedError, + "#{order.rubyist.username}(order_id: #{order.id})'s order was not completed for rubykaigi #{order.ruby_kaigi.year}") + end + end + + end # FromOrder + + class AuthorizeAsStaff + attr_reader :rubyist, :year + def initialize(rubyist, year) + @rubyist = rubyist + @year = year + end + + def update! + if already_exist? + raise DuplicationError, "#{rubyist.username} is arleady staff for rubykaigi #{year}" + end + create_contribution_for(Contribution::Type.staff) + end + + private + def already_exist? + Contribution.find(:first, :include => :ruby_kaigi, + :conditions => [ + "rubyist_id = ? AND ruby_kaigis.year = ? AND contribution_type = ?", + rubyist.id, year, Contribution::Type.staff]) + end + + def create_contribution_for(contribution_type) + Contribution.create!( + :contribution_type => contribution_type, + :rubyist => rubyist, + :ruby_kaigi => RubyKaigi.year(year) + ) + end + end # AuthorizedAsStaff + + module IndividualSponsorInstanceMethods + def amount + order_item.try(:price).to_i + end + + def link_label + return order_item.link_label if order_item.link_label.present? + return rubyist.full_name if rubyist.full_name.present? + rubyist.username + end + + def link_url + return "" if anonymous? + order_item.link_url || rubyist.website + end + + def attend_party? + order_item.attend_party? + end + + def anonymous? + order_item.anonymous? + end + + def gravatar_url(size=32) + rubyist.gravatar_url(size) + end + end # IndividualSponsorInstanceMethods + + belongs_to :rubyist + belongs_to :ruby_kaigi + belongs_to :order_item + class << self + def from_order(order) + Contribution::FromOrder.new(order).create + end + + def authorize_as_staff(rubyist, kaigi_year = RubyKaigi.latest_year) + Contribution::AuthorizeAsStaff.new(rubyist, kaigi_year).update! + end + + def individual_sponsors_of(kaigi_year = RubyKaigi.latest_year) + Contribution.all(:include => [:order_item, :ruby_kaigi, :rubyist], + :conditions => ["contribution_type = ? AND ruby_kaigis.year = ?", "individual_sponsor", kaigi_year]). + map(&:as_individual_sponsor).sort_by { |e| e.amount }.reverse + end + end # eiganclass + + def name_for_ticket + return rubyist.full_name if rubyist.full_name.present? + rubyist.username + end + + def email_for_ticket + return rubyist.email if rubyist.email.present? + if (order = order_item.try(:order)) + if (payment = order.paypal_payment_notification) + payment.payer_email + end + end + "N / A" + end + + def as_individual_sponsor + self.extend(IndividualSponsorInstanceMethods) + end +end diff --git a/app/models/event.rb b/app/models/event.rb new file mode 100644 index 00000000..2a8e5543 --- /dev/null +++ b/app/models/event.rb @@ -0,0 +1,73 @@ +class Event < ActiveRecord::Base + extend ActiveSupport::Memoizable + + has_many :event_rubyists + has_many :speakers, :source => :account, :through => :event_rubyists, :source => :rubyist + has_many :event_time_slits + has_many :time_slits, :through => :event_time_slits, :order => 'start_at' + has_one :event_room + has_one :room, :through => :event_room + belongs_to :parent_event, :class_name => 'Event' + has_many :children, :class_name => 'Event', :foreign_key => :parent_event_id + + scope :at, lambda {|room| {:joins => :event_room, :conditions => {:event_rooms => {:room_id => room}}}} + scope :on, lambda {|day| {:joins => :time_slits, :conditions => {:time_slits => {:start_at => (from = Time.parse(day))..from.end_of_day}}}} + scope :root, :conditions => {:parent_event_id => nil} + + def title + I18n.locale.to_s == 'ja' ? (title_ja || title_en) : (title_en || title_ja) + end + + def abstract + I18n.locale.to_s == 'ja' ? (abstract_ja || abstract_en) : (abstract_en || abstract_ja) + end + + def detail + I18n.locale.to_s == 'ja' ? (detail_ja || detail_en) : (detail_en || detail_ja) + end + + def from + time_slits.first.start_at + end + + def to + time_slits.last.end_at + end + + def date + from.to_date + end + + def time + returning [self.from, self.to] do |arr| + def arr.from; first; end + def arr.to; last; end + end + end + + def minutes + (to - from).to_i / 60 + end + + def presenter_name_without_afffiliation + presenter_name ? presenter_name.gsub(/\(.+\)/, '') : "" + end + + def presenter_profile + I18n.locale.to_s == 'ja' ? (presenter_profile_ja || presenter_profile_en) : (presenter_profile_en || presenter_profile_ja) + end + + def time_slot + "#{from.strftime("%H:%M")} - #{to.strftime("%H:%M")}" + end + + def room_name + room.name + end + + def has_movies? + ! vimeo_id.blank? || ! nicovideo_id.blank? + end + + memoize :from, :to, :date, :time +end diff --git a/app/models/event_room.rb b/app/models/event_room.rb new file mode 100644 index 00000000..809d0c3c --- /dev/null +++ b/app/models/event_room.rb @@ -0,0 +1,4 @@ +class EventRoom < ActiveRecord::Base + belongs_to :event + belongs_to :room +end diff --git a/app/models/event_rubyist.rb b/app/models/event_rubyist.rb new file mode 100644 index 00000000..0fd565e3 --- /dev/null +++ b/app/models/event_rubyist.rb @@ -0,0 +1,4 @@ +class EventRubyist < ActiveRecord::Base + belongs_to :event + belongs_to :rubyist +end diff --git a/app/models/event_time_slit.rb b/app/models/event_time_slit.rb new file mode 100644 index 00000000..f5884ee6 --- /dev/null +++ b/app/models/event_time_slit.rb @@ -0,0 +1,4 @@ +class EventTimeSlit < ActiveRecord::Base + belongs_to :event + belongs_to :time_slit +end diff --git a/app/models/exchange_ticket.rb b/app/models/exchange_ticket.rb deleted file mode 100644 index 4f743676..00000000 --- a/app/models/exchange_ticket.rb +++ /dev/null @@ -1,53 +0,0 @@ -require 'securerandom' -class ExchangeTicket < ActiveRecord::Base - belongs_to :paypal_transaction, :readonly => true - - validates_uniqueness_of :code4u - - [:txn_id, :last_name, :first_name, :memo, :verify].each do |sym| - delegate sym, :to => :paypal_transaction - end - - class << self - def generate_ticket_code - SecureRandom.hex(12) - end - end - - before_create do |ticket| - ticket.code4u = ExchangeTicket.generate_ticket_code - end - - def receipt_id - unless (recepit_id_label = paypal_transaction.receipt_id).blank? - recepit_id_label - else - "---" - end - end - - def item_name - case paypal_transaction.item_number - when "rk09c" - "RubyKaigi2009(Conference)" - when "rk09p" - "RubyKaigi2009(Party)" - else - "N/A" - end - end - - def email - paypal_transaction.payer_email - end - - def deliver_confirmation_email - ExchangeTicketMailer.deliver_confirmation(self) - end - - def reissue - update_attribute(:code4u, ExchangeTicket.generate_ticket_code) - deliver_confirmation_email - end - -end diff --git a/app/models/exchange_ticket_mailer.rb b/app/models/exchange_ticket_mailer.rb deleted file mode 100644 index f3e832e4..00000000 --- a/app/models/exchange_ticket_mailer.rb +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- -class ExchangeTicketMailer < ActionMailer::Base - def confirmation(exchange_ticket) - subject "#{exchange_ticket.item_name}: Exchange Ticket notification" - recipients exchange_ticket.email - from configatron.action_mailer.from - bcc configatron.action_mailer.bcc if Rails.env.production? - sent_on sent_at - body :ticket => exchange_ticket - end - - private - def sent_at - Time.now - end -end diff --git a/app/models/headline_entry.rb b/app/models/headline_entry.rb index 56094637..7b4932a4 100644 --- a/app/models/headline_entry.rb +++ b/app/models/headline_entry.rb @@ -1,8 +1,25 @@ class HeadlineEntry < ActiveRecord::Base validates_uniqueness_of :link - class << self - def recent(limit=5) - self.find(:all, :order => 'time DESC', :limit => limit) - end + + LANGS = Hash.new('en').merge('ja' => 'ja') + + scope :recent, proc {|lang, limit| {:conditions => {:language => LANGS[lang.to_s]}, :order => 'time DESC', :limit => limit} } + + def self.crawl(feed_uri, category) + require 'rss' + require 'open-uri' + + RSS::Parser.parse(open(feed_uri)).items.select {|i| + i.dc_subjects.map(&:content).include?(category) + }.map {|i| + HeadlineEntry.find_or_initialize_by_link(i.link).tap {|e| + e.update_attributes!( + :title => i.title, + :time => i.date.to_s, + :content => i.content_encoded, + :language => i.dc_subjects.map(&:content).include?('english') ? 'en' : 'ja' + ) + } + } end end diff --git a/app/models/individual_sponsor_option.rb b/app/models/individual_sponsor_option.rb new file mode 100644 index 00000000..097d5f78 --- /dev/null +++ b/app/models/individual_sponsor_option.rb @@ -0,0 +1,10 @@ +class IndividualSponsorOption < ActiveRecord::Base + belongs_to :order_item + + validates_presence_of :link_label, :if => lambda {|opt| opt.link_url.present? } + + validates_numericality_of :additional_amount, :greater_than_or_equal_to => 0, :only_integer => true + validates_length_of :link_label, :maximum => 128, :allow_blank => true + validates_length_of :link_url, :maximum => 255, :allow_blank => true + validates_format_of :link_url, :with => URI.regexp(%w(http https)), :allow_blank => true +end diff --git a/app/models/lightning_talk_selection.rb b/app/models/lightning_talk_selection.rb deleted file mode 100644 index 20e9580c..00000000 --- a/app/models/lightning_talk_selection.rb +++ /dev/null @@ -1,8 +0,0 @@ -class LightningTalkSelection < ActiveRecord::Base - Result = Struct.new(:initial, :rejected, :day1_2009, :day2_2009).new( - -1, 0, 20090717, 20090718).freeze - - belongs_to :lightning_talk_submission - - validates_presence_of :result -end diff --git a/app/models/lightning_talk_submission.rb b/app/models/lightning_talk_submission.rb deleted file mode 100644 index cccff31d..00000000 --- a/app/models/lightning_talk_submission.rb +++ /dev/null @@ -1,23 +0,0 @@ -class LightningTalkSubmission < ActiveRecord::Base - RubyKaigi2009 = Struct.new(:day1, :day2).new('2009-07-17', '2009-07-18') - - has_one :lightning_talk_selection, :dependent => :destroy - - validates_presence_of :name - validates_presence_of :email - validates_presence_of :title - validates_presence_of :abstract - validates_presence_of :lightning_talk_selection - validates_acceptance_of :the_birthstone_of_july, :accept => 'ruby', :message => I18n.t('lt.is_ruby') - - validates_associated :lightning_talk_selection - - def before_validation_on_create - build_lightning_talk_selection( - :result => LightningTalkSelection::Result.initial) - end - - def selection - lightning_talk_selection - end -end diff --git a/app/models/lightning_talk_submission_mailer.rb b/app/models/lightning_talk_submission_mailer.rb deleted file mode 100644 index 2ac7d720..00000000 --- a/app/models/lightning_talk_submission_mailer.rb +++ /dev/null @@ -1,10 +0,0 @@ -class LightningTalkSubmissionMailer < ActionMailer::Base - def submission_received(submission) - subject 'RubyKaigi2009 Lightning Talks Submission Received' - recipients submission.email - from configatron.action_mailer.from - bcc configatron.action_mailer.bcc if Rails.env.production? - sent_on Time.now - body :submission => submission - end -end diff --git a/app/models/order.rb b/app/models/order.rb new file mode 100644 index 00000000..a5ddaaa2 --- /dev/null +++ b/app/models/order.rb @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +class Order < ActiveRecord::Base + belongs_to :rubyist + belongs_to :ruby_kaigi + has_many :line_items, :class_name => OrderItem.name + + belongs_to :paypal_payment_notification, :class_name => Paypal::PaymentNotification.name + + class << self + def generate_invoice_code + ymd = Date.today.to_s(:db).gsub(/-/,'') + prefix = Digest::SHA1.hexdigest(srand.to_s)[0..7].upcase + "#{ymd}-#{prefix}" + end + end # engenclass + + before_create do + self.invoice_code = Order.generate_invoice_code + end + + before_save :calculate_price + + def add_line_item_from_cart(cart) + cart.items.each do |item| + li = OrderItem.from_cart_item(item) + line_items << li + end + end + + def calculate_price + self.price = line_items.inject(0){|r,sum| r += sum.subtotal_price} + end + + def individual_sponsor_included? + line_items.detect {|item| item.individual_sponsor? } + end + + def completed? + paypal_payment_notification.present? && paypal_payment_notification.completed? + end +end diff --git a/app/models/order_item.rb b/app/models/order_item.rb new file mode 100644 index 00000000..4a8d9c14 --- /dev/null +++ b/app/models/order_item.rb @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +class OrderItem < ActiveRecord::Base + belongs_to :product_item + belongs_to :order + + has_one :individual_sponsor_option + + class << self + def from_cart_item(cart_item) + li = new + li.product_item = cart_item.product_item + li.quantity = cart_item.quantity + li.unit_price = cart_item.unit_price + if cart_item.individual_sponsor? + li.build_individual_sponsor_option + end + li + end + end + + def price + unit_price + additional_amount.to_i + end + + def item_code + product_item.item_code + end + + def subtotal_price + price * quantity + end + + def individual_sponsor? + product_item.individual_sponsor? + end + + [:link_label, :link_url, :additional_amount, :attend_party?, :anonymous?].each do |sym| + define_method(sym) { individual_sponsor_option.try(sym) } + end +end diff --git a/app/models/paypal/encrypted_form.rb b/app/models/paypal/encrypted_form.rb new file mode 100644 index 00000000..1ae9a1cf --- /dev/null +++ b/app/models/paypal/encrypted_form.rb @@ -0,0 +1,74 @@ +module Paypal + class EncryptedForm + class << self + def ipn_secret + configatron.paypal.ipn_secret + end + + def business_email + configatron.paypal.business_email + end + end + + attr_accessor :cmd, :order, :return_url, :notify_url + def initialize(order, return_url, notify_url) + @cmd = "_s-xclick" + @order = order + @return_url = return_url + @notify_url = notify_url + end + + def encrypted + values = { + :cmd => '_cart', + :charset => 'utf-8', + :lc => "#{I18n.locale.to_s.upcase}", + :"locale.x" => "#{(I18n.locale == :ja ? 'ja_JP' : 'en_US')}", + :currency_code => 'JPY', + :upload => 1, + :business => Paypal::EncryptedForm.business_email, + :return => return_url, + :invoice => order.invoice_code, + :notify_url => notify_url, + :cert_id => cert_id, + } + order.line_items.each_with_index do |item, index| + values.merge!({ + "amount_#{index + 1}" => item.price, + "item_name_#{index + 1}" => I18n.t(item.product_item.label), + "item_number_#{index + 1}" => item.product_item.item_code, + "quantity_#{index + 1}" => item.quantity + }) + end + encrypt_for_paypal(values) + end + + private + def cert_id + configatron.paypal.cert_id + end + + def paypal_cert_pem + File.read("#{Rails.root}/certs/#{configatron.paypal.cert_filename.to_s}") + end + + def app_cert_pem + File.read("#{Rails.root}/certs/app_cert.pem") + end + + def app_key_pem + File.read("#{Rails.root}/certs/app_key.pem") + end + + def encrypt_for_paypal(values) + signed = OpenSSL::PKCS7::sign( + OpenSSL::X509::Certificate.new(app_cert_pem), + OpenSSL::PKey::RSA.new(app_key_pem, ''), + values.map { |k, v| "#{k}=#{v}" }.join("\n"), [], OpenSSL::PKCS7::BINARY) + OpenSSL::PKCS7::encrypt( + [OpenSSL::X509::Certificate.new(paypal_cert_pem)], + signed.to_der, OpenSSL::Cipher::Cipher::new("DES3"), + OpenSSL::PKCS7::BINARY).to_s.gsub("\n", "") + end + end +end diff --git a/app/models/paypal/handle_payment_notification_job.rb b/app/models/paypal/handle_payment_notification_job.rb new file mode 100644 index 00000000..498e470b --- /dev/null +++ b/app/models/paypal/handle_payment_notification_job.rb @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +module Paypal + class HandlePaymentNotificationJob + def initialize(order_id) + @order_id = order_id + end + + def perform + order = Order.find(@order_id) + Contribution.from_order(order) + end + end +end diff --git a/app/models/paypal/payment_notification.rb b/app/models/paypal/payment_notification.rb new file mode 100644 index 00000000..0e4ed71a --- /dev/null +++ b/app/models/paypal/payment_notification.rb @@ -0,0 +1,27 @@ +module Paypal + class PaymentNotification < ActiveRecord::Base + set_table_name "paypal_payment_notifications" + + class << self + def from_notified_params(params) + attrs = params_to_attrs(params, + [:payment_status, :txn_id, :receipt_id, :tax, :payer_email, :last_name, :first_name, + :payer_id, :address_zip, :address_state, :address_city, + :address_street, :address_name, :payment_date, :invoice + ]) + attrs.merge!(:notified_params_as_json => params.to_json) + new(attrs) + end + + private + def params_to_attrs(params, syms) + HashWithIndifferentAccess[syms.map {|attr_sym| [attr_sym, params[attr_sym]]}] + end + + end # eigenclass + + def completed? + payment_status == "Completed" + end + end +end diff --git a/app/models/paypal/pdt.rb b/app/models/paypal/pdt.rb new file mode 100644 index 00000000..1407fdfb --- /dev/null +++ b/app/models/paypal/pdt.rb @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +require 'net/https' +module Paypal + class Pdt + class << self + def request(txn_id) + pdt = new + pdt.request(txn_id) + end + end + + attr_reader :url, :pdt_token + def initialize + config = configatron.paypal + @url = config.post_url + @pdt_token = config.pdt_token + end + + # need pass txn_id=value_of_transaction_token + def request(txn_id) + params = { "cmd" => "_notify-synch", "at" => pdt_token, 'tx' => txn_id} + data = params.map {|k, v| "#{k}=#{CGI.escape(v)}" }.join("&") + + uri = URI.parse(@url) + http = Net::HTTP.new(uri.host, uri.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_PEER + http.ca_file = File.expand_path("cacert.pem", File.join(Rails.root, "certs")) + response = http.start { + http.post(uri.path, data) + } + result = HWIA.new + if response.kind_of? Net::HTTPSuccess + elements = response.body.split("\n") + result['result'] = elements.shift + case result['result'] + when 'SUCCESS' + elements.each do |element| + a = element.split("=") + result[a[0]] = CGI.unescape(a[1]) if a.size == 2 + end + when 'FAIL' + result['detail'] = elements.join("\n") + end + result + else + result['result'] = 'ERROR!' + result['detail'] = 'something went wrong on response from paypal' + end + result + end + end +end diff --git a/app/models/paypal_transaction.rb b/app/models/paypal_transaction.rb deleted file mode 100644 index cc211e7f..00000000 --- a/app/models/paypal_transaction.rb +++ /dev/null @@ -1,44 +0,0 @@ -require 'paypal/ipn_verifier' -class PaypalTransaction < ActiveRecord::Base - has_one :exchange_ticket - - validates_presence_of :txn_id, :item_number, :payer_email, :last_name, :first_name, - :payment_status, :residence_country,:verify, :notified_json - validates_uniqueness_of :txn_id - - class << self - def create_for_verify_later!(called_back_params) - attrs = HashWithIndifferentAccess.new - [:txn_id, :receipt_id, :item_number, :payer_email, :last_name, :first_name, - :payment_status, :residence_country, :memo].each do |sym| - attrs[sym] = called_back_params[sym] - end - attrs[:verify] = "NOTYET" - attrs[:notified_json] = called_back_params.to_json - attrs[:exchange_ticket] = ExchangeTicket.new - PaypalTransaction.transaction do - trans = PaypalTransaction.create!(attrs) - end - end - - end - - def validate_transaction - verifier = ::Paypal::IPNVerifier.new - result = verifier.https_postback(notified_params) - update_attribute(:verify, result) - validate_transaction? - end - - def validate_transaction? - verify == "VERIFIED" - end - - def notified_params - ActiveSupport::JSON.decode(notified_json) - end - - def notify_exchange_ticket_information_to_payer - exchange_ticket.deliver_confirmation_email - end -end diff --git a/app/models/product_item.rb b/app/models/product_item.rb new file mode 100644 index 00000000..71dd050a --- /dev/null +++ b/app/models/product_item.rb @@ -0,0 +1,70 @@ +# -*- coding: utf-8 -*- +class ProductItem < ActiveRecord::Base + class Type + end + + class Proxy + def initialize(items) + @items = items + end + + private + def item_of(item_code) + @items.detect{|i| i.item_code == item_code } + end + end # Proxy + + belongs_to :ruby_kaigi + + class << self + def kaigi(year) + ProductItem::Proxy.new( + ProductItem.all(:include => 'ruby_kaigi').select{|p| p.ruby_kaigi.year == Integer(year)}) + end + end + + def available? + 0 < stock + end + + def sold_out? + !available? + end + + def label + "product_item.#{item_code}" + end + + def individual_sponsor? + !!(item_code =~ /individual_sponsor/) + end + + def now_on_sale? + ready_for_sale? && open_sale_at.past? && available? + end + + unless Rails.env.production? + def force_now_on_sale_for_development! + ready_for_sale = true + open_sale_at = DateTime.now + end + + def toggle_now_on_sale_for_development!(flag=nil) + self.ready_for_sale = (flag.nil? ? !ready_for_sale : flag) + self.open_sale_at = (ready_for_sale ? DateTime.now : 1.week.from_now) + save! + self + end + end +end + +%w[rk10 rk10_party rk10_individual_sponsor rk11 rk11_party rk11_individual_sponsor].each do |_type| + (class << ProductItem::Type; self; end).class_eval do + define_method(_type) { _type } + end + ProductItem::Proxy.class_eval do + define_method(_type) do + item_of(_type) + end + end +end diff --git a/app/models/room.rb b/app/models/room.rb new file mode 100644 index 00000000..687907bc --- /dev/null +++ b/app/models/room.rb @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +class Room < ActiveRecord::Base + has_many :event_rooms + has_many :events, :through => :event_rooms + + def name + I18n.locale.to_s == 'ja' ? (name_ja || name_en) : (name_en || name_ja) + end + + def hall? + case I18n.locale.to_s + when 'ja' + name.match(/ホール/u) + else + name.match(/hall/i) + end + end + + def empty_at?(time) + events.none? {|e| (e.from...e.to).include? time} + end +end diff --git a/app/models/ruby_kaigi.rb b/app/models/ruby_kaigi.rb new file mode 100644 index 00000000..17534b86 --- /dev/null +++ b/app/models/ruby_kaigi.rb @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +class RubyKaigi < ActiveRecord::Base + class << self + def year(year) + RubyKaigi.find_by_year(year) + end + + (2006..2011).to_a.each do |year| + define_method("_#{year}") do + RubyKaigi.year(year) + end + end + alias :latest :_2011 + + def latest_year + latest.year + end + end +end diff --git a/app/models/rubyist.rb b/app/models/rubyist.rb new file mode 100644 index 00000000..9e47c29f --- /dev/null +++ b/app/models/rubyist.rb @@ -0,0 +1,99 @@ +# -*- coding: utf-8 -*- +class Rubyist < ActiveRecord::Base + extend ActiveSupport::Memoizable + include Redis::Objects + + has_many :contributions + has_many :tickets + + validates_uniqueness_of :username + validates_format_of :username, :with => /^[a-zA-Z0-9_-]+$/, :message => I18n.t('should_be_alphabetical') + validates_exclusion_of :username, :in => %w(new edit) + + validates_format_of :website, :with => URI.regexp(%w(http https)), :allow_blank => true + + validates_uniqueness_of :twitter_user_id, :allow_nil => true + validates_uniqueness_of :identity_url, :allow_nil => true + + validates_inclusion_of :avatar_type, :in => %w(default twitter gravatar) + + attr_protected :twitter_user_id, :identity_url + + value :twitter_profile, :key => "#{TwitterProfile::PREFIX}/\#{twitter_user_id}", :marshal => true + + def to_param + username + end + + def individual_sponsor(kaigi_year = RubyKaigi.latest_year) + contrib = contributions_on(kaigi_year).detect{ |c| + c.contribution_type =~ /individual_sponsor/ + } + contrib.as_individual_sponsor + end + + def contributions_on(kaigi_year = RubyKaigi.latest_year) + contributions.select{|c| c.ruby_kaigi.year == kaigi_year} + end + + def individual_sponsor?(kaigi_year = RubyKaigi.latest_year) + contribution_types_of(kaigi_year).include?('individual_sponsor') + end + + def attendee?(kaigi_year = RubyKaigi.latest_year) + __attendee?(kaigi_year) + end + + def staff?(kaigi_year = RubyKaigi.latest_year) + contribution_types_of(kaigi_year).include?(Contribution::Type.staff) + end + + def ruby_committer?(kaigi_year = RubyKaigi.latest_year) + true + end + + def party_attendee?(kaigi_year = RubyKaigi.latest_year) + contribution_types_of(kaigi_year).include?('party_attendee') + end + + def has_ticket?(kaigi_year = RubyKaigi.latest_year) + tickets_of(kaigi_year).present? + end + + def tickets_of(kaigi_year) + tickets.select {|t| t.ruby_kaigi.year == kaigi_year }.sort {|a, b| b.created_at <=> a.created_at } + end + + # TODO 2010-06-14現在、avatar機能は有効化されておらず、そもそも呼び出していない + def avatar_url(type = avatar_type) + case type.to_s + when 'twitter' + twitter_profile.nil? ? avatar_url('default') : twitter_profile.value.profile_image_url + when 'gravatar' + "http://www.gravatar.com/avatar/#{Digest::MD5.hexdigest(email.downcase)}?s=48" + else + # TODO 棒人間に差し替える + '/2010/images/icon.gif' + end + end + + # 2011の個人スポンサー用にでっち上げた + def gravatar_url(size = 42) + if email.present? + "http://www.gravatar.com/avatar/#{Digest::MD5.hexdigest(email.downcase)}?s=#{size}&d=#{CGI.escape('http://rubykaigi.org/images/bow_face.png')}" + else + "/images/bow_face.png" + end + end + + private + def contribution_types_of(kaigi_year) + contributions.select {|c| c.ruby_kaigi.year == kaigi_year }.map(&:contribution_type) + end + memoize :contribution_types_of + + def __attendee?(kaigi_year) + contribution_types_of(kaigi_year).include?('attendee') + end + +end diff --git a/app/models/talk.rb b/app/models/talk.rb deleted file mode 100644 index c097e22f..00000000 --- a/app/models/talk.rb +++ /dev/null @@ -1,85 +0,0 @@ -class Talk < ActiveRecord::Base - has_many :descriptions, :class_name => "TalkDescription", :dependent => :destroy - - validates_presence_of :code, :email - - # - # named scopes - # - named_scope :year, Proc.new { |year| { :conditions => [ "year = ?", year ] } } - - class << self - def create_from_json(json_str) - json = ActiveSupport::JSON.decode(json_str) - talk = Talk.new({ - :year => json["year"], - :email => json["email"], - :code => json["code"], - :room => json["room"], - :start_at => json["start_at"], - :end_at => json["end_at"] - }) - if (desc_ja = json["ja"]) - talk.descriptions.build({ - :locale => "ja", - :title => desc_ja["title"], - :abstract => desc_ja["abstract"], - :speaker => desc_ja["speaker"], - :profile => desc_ja["profile"] - }) - end - if (desc_en = json["en"]) - talk.descriptions.build({ - :locale => "en", - :title => desc_en["title"], - :abstract => desc_en["abstract"], - :speaker => desc_en["speaker"], - :profile => desc_en["profile"] - }) - end - talk.save! - talk - end - end - - def title - description.title - end - - def abstract - description.abstract - end - - def speaker - description.speaker - end - - def profile - description.profile - end - - def description - desc = descriptions.detect {|d| d.locale == I18n.locale } - desc or fallback_desc(I18n.locale) - end - - def to_json_with_minimum(options = {}) - self.to_json_without_minimum(:only => [:code], :methods => [:title, :speaker, :abstract, :profile]) - end - alias_method_chain :to_json, :minimum - - private - def fallback_desc(locale) - if locale == "ja" && (desc = descriptions.first).locale == "en" - desc - else - TalkDescription.new( - :title => "(TBD)", - :abstract => "(TBD)", - :speaker => "(TBD)", - :profile => "(TBD)" - ) - end - end - -end diff --git a/app/models/talk_description.rb b/app/models/talk_description.rb deleted file mode 100644 index 37a3c4de..00000000 --- a/app/models/talk_description.rb +++ /dev/null @@ -1,3 +0,0 @@ -class TalkDescription < ActiveRecord::Base - belongs_to :talk -end diff --git a/app/models/ticket.rb b/app/models/ticket.rb new file mode 100644 index 00000000..1dda640e --- /dev/null +++ b/app/models/ticket.rb @@ -0,0 +1,74 @@ +class Ticket < ActiveRecord::Base + belongs_to :contribution + belongs_to :ruby_kaigi + belongs_to :rubyist + + validates_presence_of :name + + class << self + def generate_ticket_code + prefix = Digest::SHA1.hexdigest(srand.to_s)[0..7].upcase + suffix = Digest::SHA1.hexdigest(srand.to_s)[0..7].upcase + "#{prefix}-#{suffix}" + end + + def generate_code4url + Digest::SHA1.hexdigest(srand.to_s)[0..31] + end + + def build_from_contrib(*contrib) + contribs = contrib.flatten + contribs.map do |c| + Ticket.new( + :ticket_code => Ticket.generate_ticket_code, + :ticket_type => c.contribution_type, + :code4url => Ticket.generate_code4url, + :name => c.name_for_ticket, + :email => c.email_for_ticket, + :contribution => c, + :rubyist => c.rubyist, + :ruby_kaigi => c.ruby_kaigi + ) + end + end + + def build_extra_ticket_for_rubyist(rubyist, contribution_type, extra_ticket_type = nil) + unless Contribution::Type::ENUM.include?(contribution_type.to_s) + raise ArgumentError, "passed contribution_type '#{contribution_type}' is invalid. it should be one of these:'#{Contribution::Type::ENUM.join(', ')}'" + end + Ticket.new( + :ticket_code => Ticket.generate_ticket_code, + :ticket_type => contribution_type.to_s, + :extra_ticket_type => extra_ticket_type.to_s, + :code4url => Ticket.generate_code4url, + :name => rubyist.full_name, + :email => rubyist.email, + :rubyist => rubyist, + :ruby_kaigi => RubyKaigi.latest + ) + end + + def build_extra_ticket_for_sponsor(name, email, contribution_type, extra_ticket_type = nil) + unless Contribution::Type::ENUM.include?(contribution_type.to_s) + raise ArgumentError, "passed contribution_type '#{contribution_type}' is invalid. it should be one of these:'#{Contribution::Type::ENUM.join(', ')}'" + end + Ticket.new( + :ticket_code => Ticket.generate_ticket_code, + :ticket_type => contribution_type.to_s, + :extra_ticket_type => extra_ticket_type.to_s, + :code4url => Ticket.generate_code4url, + :name => name, + :email => email, + :ruby_kaigi => RubyKaigi.latest + ) + end + end # eigenclass + + def to_param + code4url + end + + before_save do + self.email = "N / A" if self.email.blank? + end +end diff --git a/app/models/time_slit.rb b/app/models/time_slit.rb new file mode 100644 index 00000000..5d90de81 --- /dev/null +++ b/app/models/time_slit.rb @@ -0,0 +1,2 @@ +class TimeSlit < ActiveRecord::Base +end diff --git a/app/models/twitter_profile.rb b/app/models/twitter_profile.rb new file mode 100644 index 00000000..d94e2447 --- /dev/null +++ b/app/models/twitter_profile.rb @@ -0,0 +1,19 @@ +class TwitterProfile + PREFIX = 'twitter/users' + + class << self + def [](user_id) + redis_object(user_id).value + end + + def []=(user_id, value) + redis_object(user_id).value = value + end + + private + + def redis_object(user_id) + Redis::Value.new("#{PREFIX}/#{user_id}", Redis::Objects.redis, :marshal => true) + end + end +end diff --git a/app/views/accounts/_form.html.haml b/app/views/accounts/_form.html.haml new file mode 100644 index 00000000..dc36a7a2 --- /dev/null +++ b/app/views/accounts/_form.html.haml @@ -0,0 +1,24 @@ +-if @rubyist.errors.any? + #errorExplanation.errorExplanation + %h2= "#{pluralize(@rubyist.errors.count, "error")} prohibited this account from being saved:" + %p= t(:body, :scope => 'activerecord.errors.template')#:scope => [:activerecord, :errors, :template]) + %ul + - @rubyist.errors.full_messages.each do |msg| + %li= msg + +%dl + %dt!= form.label :username + %dd!= form.text_field :username + username will be used for a permalink like: #{'http://rubykaigi.org/rubyists/#{username}'}
+
+ %dt!= form.label :full_name + %dd!= form.text_field :full_name +
+ %dt + != form.label :email + (also use to fetch your icon via gravatar.com) + %dd!= form.text_field :email +
+ %dt!= form.label :website + %dd!= form.text_field :website +
diff --git a/app/views/accounts/edit.html.haml b/app/views/accounts/edit.html.haml new file mode 100644 index 00000000..498c040f --- /dev/null +++ b/app/views/accounts/edit.html.haml @@ -0,0 +1,40 @@ +- @title = t(:account_settings) + +#content + %h1= @title + + - form_for @rubyist, :url => account_path do |form| + != render :partial => form + + -# %dl + -# %dt Avatar + -# %dd + -# %ul + -# - if @rubyist.twitter_account + -# %li + -# != image_tag @rubyist.avatar_url(:twitter) + -# %label + -# != form.radio_button :avatar_type, :twitter + -# Twitter + -# %li + -# != image_tag @rubyist.avatar_url(:gravatar) + -# %label + -# != form.radio_button :avatar_type, :gravatar + -# Gravatar + -# %li + -# != image_tag @rubyist.avatar_url(:default) + -# %label + -# != form.radio_button :avatar_type, :default + -# Sticky Man + -# %dl + -# %dt Avator Icon + -# %dd + -# %div{:style=>"padding-left:1em"} + -# != image_tag("/images/bow_face.png", :alt => 'Avator', :title => 'Avator Icon Setting Feature is coming soon', :height => 40) + -#
(coming soon) +


+ != form.submit 'Save' + + %hr + + !=link_to t(:dashboard), dashboard_path diff --git a/app/views/accounts/new.html.erb b/app/views/accounts/new.html.erb deleted file mode 100644 index 30af9be4..00000000 --- a/app/views/accounts/new.html.erb +++ /dev/null @@ -1,6 +0,0 @@ -

Sign up

- -<% form_for @account, accounts_path do |f| -%> - OpenID: <%=h session[:openid_identifier] %> - <%= f.submit 'Create' %> -<% end -%> diff --git a/app/views/accounts/new.html.haml b/app/views/accounts/new.html.haml new file mode 100644 index 00000000..6a36149a --- /dev/null +++ b/app/views/accounts/new.html.haml @@ -0,0 +1,6 @@ +- @title = t(:account_settings) +#content + %h1 Account Settings + - form_for @rubyist, :url => account_path do |form| + != render :partial => form + != form.submit 'Sign up' diff --git a/app/views/admin/lightning_talk_selections/_result_type_grouped_list.html.erb b/app/views/admin/lightning_talk_selections/_result_type_grouped_list.html.erb deleted file mode 100644 index d4ea575c..00000000 --- a/app/views/admin/lightning_talk_selections/_result_type_grouped_list.html.erb +++ /dev/null @@ -1,11 +0,0 @@ -
-

<%= result_type_label_of(result_type) %>

-
-<%- selection_list_id = "selection_list_#{result_type.abs}" -%> -
    -<% (@group = (@grouped_talks[result_type] || [])).dup.each_with_index do |talk, idx| -%> -
  • <%= render_disp_order(talk, idx) %><%= "%02d" % (idx + 1) %>: (<%= "%02d" % (talk.id + 1) %>)<%=link_to h(talk.title), admin_lightning_talk_submission_path(talk.id) %> (<%=h [talk.name, (talk.organization ? talk.organization : nil)].join(", ") %>)
  • -<% end -%> -
-
-
diff --git a/app/views/admin/lightning_talk_selections/index.html.erb b/app/views/admin/lightning_talk_selections/index.html.erb deleted file mode 100644 index 8adc8b1a..00000000 --- a/app/views/admin/lightning_talk_selections/index.html.erb +++ /dev/null @@ -1,33 +0,0 @@ -<% content_for :inline_css do -%> - -<% end -%> -
-<%= link_to("応募内容の一覧", admin_lightning_talk_submissions_path) %> -
-<% [LightningTalkSelection::Result.day1_2009, LightningTalkSelection::Result.day2_2009, LightningTalkSelection::Result.rejected,LightningTalkSelection::Result.initial].each do |t| -%> - <%= render :partial => "result_type_grouped_list", :locals => { :result_type => t } %> -<% end -%> -
-<%= link_to("応募内容の一覧", admin_lightning_talk_submissions_path) %> -
diff --git a/app/views/admin/lightning_talk_submissions/_list.html.erb b/app/views/admin/lightning_talk_submissions/_list.html.erb deleted file mode 100644 index 4f81e26c..00000000 --- a/app/views/admin/lightning_talk_submissions/_list.html.erb +++ /dev/null @@ -1,29 +0,0 @@ -

LT応募者一覧

-

- - - - -<% @lightning_talk_submissions.each do |submission| -%> - - - - - - - -<% end -%> -
IDタイトル発表者7/17(金)7/18(土)
<%=h submission.id %><%=h submission.title %><%=h submission.name %> <<%=h submission.email %>>
(<%=h submission.organization %>)
- <% if submission.day1.blank? -%> -  - <% else -%> -当/落 - <% end -%> - - <% if submission.day1.blank? -%> -  - <% else -%> -当/落 - <% end -%> -
-

diff --git a/app/views/admin/lightning_talk_submissions/_selection.html.erb b/app/views/admin/lightning_talk_submissions/_selection.html.erb deleted file mode 100644 index 11397549..00000000 --- a/app/views/admin/lightning_talk_submissions/_selection.html.erb +++ /dev/null @@ -1,12 +0,0 @@ -<% submission = selection.lightning_talk_submission -%> -
- <% remote_form_for(:selection, selection, - { :url => admin_lightning_talk_submission_lightning_talk_selection_path(submission) }, - :html => { - :method => :put, :id => dom_id(selection, :update_selection)}) do |f| -%> - <%= render_selection_radio_of(f, submission, selection, LightningTalkSelection::Result.initial) %> - <%= render_selection_radio_of(f, submission, selection, LightningTalkSelection::Result.rejected) %>
- <%= render_selection_radio_of(f, submission, selection, LightningTalkSelection::Result.day1_2009) %>
- <%= render_selection_radio_of(f, submission, selection, LightningTalkSelection::Result.day2_2009) %> - <% end -%> -
diff --git a/app/views/admin/lightning_talk_submissions/_submission.html.erb b/app/views/admin/lightning_talk_submissions/_submission.html.erb deleted file mode 100644 index 38bc7d3c..00000000 --- a/app/views/admin/lightning_talk_submissions/_submission.html.erb +++ /dev/null @@ -1,73 +0,0 @@ -<% content_for :css do -%> - <%= stylesheet_link_tag "admin/lightning_talk" %> -<% end -%> -<% content_for :inline_css do -%> - - -<% end -%> -
-

<%=h seq %>. <%=h submission.title %>

-
-
-
発表者
-
- <%=h submission.name %> <<%=h submission.email %>>
- <% unless submission.organization.blank? -%> - (<%=h submission.organization %>) - <% end -%> -
-
チケット
-
- <% if submission.has_ticket? -%> - 持ってます - <% else -%> - 持ってません - <% end -%> -
-
発表概要
-
-
<%=h submission.abstract %>
-
-
発表可能日
-
- <%=h [:day1, :day2].map { |day| - Time.parse(submission.send(day)).to_date.to_s(:db) unless submission.send(day).blank? - }.compact.join(", ") %> -
-
ひとこと
-
<%= submission.note.blank? ? " " : submission.note %>
-
-
-
-

選考

- <%= render :partial => 'selection', :locals => {:selection => submission.selection } %> -
-
diff --git a/app/views/admin/lightning_talk_submissions/index.html.erb b/app/views/admin/lightning_talk_submissions/index.html.erb deleted file mode 100644 index de0a4eda..00000000 --- a/app/views/admin/lightning_talk_submissions/index.html.erb +++ /dev/null @@ -1,12 +0,0 @@ -

ライトニングトーク応募者のみなさん

-
-<%= link_to("審査状況の一覧", admin_lightning_talk_selections_path) %> -
- -<% @lightning_talk_submissions.each_with_index do |submission, idx| -%> - <%= render :partial => "submission", :locals => { :submission => submission, :seq => idx + 1 } %> -<% end -%> - -
-<%= link_to("審査状況の一覧", admin_lightning_talk_selections_path) %> -
diff --git a/app/views/admin/lightning_talk_submissions/show.html.erb b/app/views/admin/lightning_talk_submissions/show.html.erb deleted file mode 100644 index 2c52da10..00000000 --- a/app/views/admin/lightning_talk_submissions/show.html.erb +++ /dev/null @@ -1,9 +0,0 @@ -
-<%= link_to("応募内容の一覧", admin_lightning_talk_submissions_path) %>, <%= link_to("審査状況の一覧", admin_lightning_talk_selections_path) %> -
- -<%= render :partial => "submission", :locals => { :submission => @submission, :seq => @seq } %> - -
-<%= link_to("応募内容の一覧", admin_lightning_talk_submissions_path) %>, <%= link_to("審査状況の一覧", admin_lightning_talk_selections_path) %> -
diff --git a/app/views/advent_calendar/_about.en.html.haml b/app/views/advent_calendar/_about.en.html.haml new file mode 100644 index 00000000..ab9bd9a4 --- /dev/null +++ b/app/views/advent_calendar/_about.en.html.haml @@ -0,0 +1,7 @@ +%p + Would you like to join this Advent Calendar? + Please fork + != link_to 'ruby-no-kai/rubykaigi', 'https://github.com/ruby-no-kai/rubykaigi' + and send us a pull request : +%p + != link_to '#{Rails.root}/db/2011/advent_events.yml', 'https://github.com/ruby-no-kai/rubykaigi/blob/master/db/2011/advent_events.yml' \ No newline at end of file diff --git a/app/views/advent_calendar/_about.ja.html.haml b/app/views/advent_calendar/_about.ja.html.haml new file mode 100644 index 00000000..bf2a6714 --- /dev/null +++ b/app/views/advent_calendar/_about.ja.html.haml @@ -0,0 +1,11 @@ +%p + RubyKaigi Advent Calendar 2011は、RubyKaigi 2011の会期の前にRuby関連イベントを独自に開催してもらって、連続協賛イベントにする試みです。例えるなら、12月にクリスマスを楽しみに待つために + != link_to 'プログラミングTipsを連ねるAdvent Calendar', 'http://gihyo.jp/news/info/2010/12/0102' + があるように、7月に「最後のRubyKaigi」を楽しみに待つための、Advent Calendar があるといいなと思ってこのページをつくりました。 +%p + != link_to 'RubyKaigi Advent Calendar 2011', 'http://rubykaigi.tdiary.net/20110512.html#p01' + の主旨に賛同いただけるイベント主催者のかたは、 + != link_to 'リンク先', 'http://rubykaigi.tdiary.net/20110512.html#p01' + の「協賛イベントとしての参加資格と注意事項」をお読みのうえ、githubのpull request(推奨)またはメールでご連絡ください。 +%p + たくさんのイベントの参加をお待ちしています。 diff --git a/app/views/advent_calendar/index.html.haml b/app/views/advent_calendar/index.html.haml new file mode 100644 index 00000000..49105b7c --- /dev/null +++ b/app/views/advent_calendar/index.html.haml @@ -0,0 +1,42 @@ +- @title = t(:advent_calendar) +- content_for :head do + %link{:href => "/2011/stylesheets/advent.css", :media => "screen", :rel => "stylesheet", :type => "text/css"} + %link{:rel => "alternate", :type => "application/rss+xml", :title => @title, :href => advent_calendar_index_path(params[:year], current_locale, :rss)} + +#content + %h1 + #{@title} + %article + %h2 + #{t('hashtag')}: + != link_to '#rk11advent', 'http://twitter.com/search?q=%23rk11advent' + %article + #other_formats + = link_to "iCal", advent_calendar_index_url(params[:year], current_locale, :ics, :protocol => "webcal") + = link_to "JSON", advent_calendar_index_path(params[:year], current_locale, :json), :target => "_blank" + = link_to "RSS", advent_calendar_index_path(params[:year], current_locale, :rss), :target => "_blank" + + #advent_events + - AdventEvent.by_month.each do |month, events| + %h2= l month, :format => :month + %ul + - events.each do |event| + %li{:id => event.id, :class => event.today? ? "todays_event" : ""} + .summary + %span{:style => 'font-size:12px;'}= link_to "■", "##{event.id}" + #{event.name} + .time #{l(event.dtstart, :format => :advent_cal)} 〜 #{l(event.dtend, :format => :advent_cal)} + .location!= event.location + .url + - if event.url.present? + != auto_link event.url + - else + (To Be Announced) + .hosted_by + = (event.hosted_by.present? ? " Hosted By: #{event.hosted_by}" : '') + %article + %h2 + %a{:name => "joinus"} + #{t(:advent_joinus)} + != render "about.#{I18n.locale}" + != render :partial => "shared/2011/back_to_top" diff --git a/app/views/carts/index.html.haml b/app/views/carts/index.html.haml new file mode 100644 index 00000000..a1c81757 --- /dev/null +++ b/app/views/carts/index.html.haml @@ -0,0 +1,35 @@ +- @title = "#{user.username}'s cart" +- content_for :meta_top do + %link{:href => "/2011/stylesheets/registration.css", :media => "screen", :rel => "stylesheet", :type => "text/css"} + +#content + %h1 #{user.username}'s cart + - unless @cart.empty? + - form_for @cart do |f| + - @cart.items.each do |item| + - if item.individual_sponsor? + %h2 #{t(item.label)} + %p + #{t('amount')}: #{number_with_delimiter(item.unit_price)} + JPY + #{t('additional_amount_label')}
+ #{t('quantity')}: #{number_with_delimiter(item.quantity)}
+ != link_to("[#{t('delete_this_item')}]", remove_item_carts_path(:product_item_code => item.item_code, :locale => current_locale), :method => :delete) + - else + %h2 #{t(item.label)} + %p + #{t('amount')}: #{number_with_delimiter(item.unit_price)} JPY
+ #{t('quantity')}: + #{item.quantity} +
+ != link_to("[#{t('delete_this_item')}]", remove_item_carts_path(:product_item_code => item.item_code, :locale => current_locale), :method => :delete) +
+
+ %div.proceed_btn + != proceed_to_checkout_button + - else + %p + (your cart is empty!) +
+
+ %p{:style => 'clear:both'} + != link_to t('back_to_registration'), registrations_path(:year => RubyKaigi.latest_year, :locale => current_locale) diff --git a/app/views/dashboard/index.html.haml b/app/views/dashboard/index.html.haml new file mode 100644 index 00000000..a874dfc6 --- /dev/null +++ b/app/views/dashboard/index.html.haml @@ -0,0 +1,37 @@ +- @title = t('dashboard') +#content + %h1 Hi, #{user.username} + + %article + %p + != link_to rubyist_url(user), rubyist_path(user) + + %h2 Your Ticket(s) Information + %ul.listMark + %li!= link_to_if(user.has_ticket?(2011), 'Show Ticket(s) for RubyKaigi 2011', my_tickets_path) + + %h2 Your Contribution to RubyKaigi(s) + %ul.listMark + - if user.contributions.present? + - if user.individual_sponsor?(2010) + %li [Individual Sponsor] (#{number_with_delimiter(user.individual_sponsor(2010).amount)} JPY) + - if user.staff?(2010) + %li [Staff] + - if user.attendee?(2010) + %li [Attendee] + - if user.party_attendee?(2010) + %li [Official Conference Party Attendee] + - else + %li (Nothing) + + %h2 RubyKaigi Related Actions + %ul.listMark + %li!= link_to 'Show Your Cart', carts_path + %li Order History (Coming Soon :-<) + + %h2 Account Related Actions + %ul.listMark + %li!= link_to t('account_settings'), edit_account_path + %li Switch Authenticate Strategy Between Twitter OAuth and OpenID (Coming Soon :-<) + %li!= link_to t('sign_out'), signout_path, :method => :delete + %li Delete Your Account(Coming Soon :-<) diff --git a/app/views/exchange_ticket_mailer/confirmation.erb b/app/views/exchange_ticket_mailer/confirmation.erb deleted file mode 100644 index 8189cda3..00000000 --- a/app/views/exchange_ticket_mailer/confirmation.erb +++ /dev/null @@ -1,30 +0,0 @@ -Hi, - -We've received your registration from paypal.com(or received your reissue requested). - -This is notification of your exchange ticket to <%= @ticket.item_name %>. -To see html formatted exchange ticket, please access to rubykaigi.org : -<%= show_exchange_ticket_url(:code4u => @ticket.code4u) %> - -Please bring a printout of the web page(or this email) to the venue for admission. -Thank you for your cooperation. ----------------------------------------------------------------------- -[Exchange Ticket] - -Item Name : <%= @ticket.item_name %> -Transaction ID : <%= @ticket.txn_id %> -Receipt ID : <%= @ticket.receipt_id %> -Last Name : <%= @ticket.last_name %> -First Name : <%= @ticket.first_name %> -E-mail : <%= @ticket.email %> -Verify : <%= @ticket.verify %> -Memo : <%= @ticket.memo %> ----------------------------------------------------------------------- - -If you have any question, feel free to cotact us via e-mail to 2009@rubykaigi.org. - -Regards, - --- -RubyKaigi2009 Team -2009@rubykaigi.org diff --git a/app/views/exchange_tickets/_exchange_ticket.html.erb b/app/views/exchange_tickets/_exchange_ticket.html.erb deleted file mode 100644 index 19f3803b..00000000 --- a/app/views/exchange_tickets/_exchange_ticket.html.erb +++ /dev/null @@ -1,73 +0,0 @@ -<% content_for :inline_css do -%> - - -<% end -%> - -

Exchange Ticket

-

Please bring a printout of this page to the venue for admission.

- - - - - - - - - -
Item Name<%=h @ticket.item_name %>
Transaction ID<%=h @ticket.txn_id %>
Receipt ID<%=h @ticket.receipt_id %>
Last Name<%=h @ticket.last_name %>
First Name<%=h @ticket.first_name %>
E-mail<%=h @ticket.email %>
Verify<%=h @ticket.verify %>
Memo<%=h @ticket.memo %>
diff --git a/app/views/exchange_tickets/index.html.erb b/app/views/exchange_tickets/index.html.erb deleted file mode 100644 index da50bb7a..00000000 --- a/app/views/exchange_tickets/index.html.erb +++ /dev/null @@ -1,36 +0,0 @@ -<% content_for :inline_css do -%> - -<% end -%> -
-

<%= t(:exchange_ticket_reissue) %>

-

-<%= t(:exchange_ticket_reissue_desc) %> -

-

-

<%= t(:your_email_on_paypal) %>:
-<% form_tag(reissue_exchange_tickets_path, :id => 'reissue_exchange_tickets') do -%> - <%= text_field_tag 'email', "", :size => 30, :class => "email" %> - <%= submit_tag t(:reissue), :class => "submit", :onclick => 'disable_button(this)' %> -<% end -%> -

-
- diff --git a/app/views/exchange_tickets/reissue.html.erb b/app/views/exchange_tickets/reissue.html.erb deleted file mode 100644 index 62ed2ef1..00000000 --- a/app/views/exchange_tickets/reissue.html.erb +++ /dev/null @@ -1,7 +0,0 @@ -
-

Exchange Ticket(s) has been Reissued.

-

-<%= t(:reissue_mailback) %>
-<%=h @email %>
-(<%= t(:reissue_when_match_exactly) %>)

-
diff --git a/app/views/exchange_tickets/show.html.erb b/app/views/exchange_tickets/show.html.erb deleted file mode 100644 index 526a8875..00000000 --- a/app/views/exchange_tickets/show.html.erb +++ /dev/null @@ -1,6 +0,0 @@ -

Your RubyKaigi Exchange Ticket.

-

<%= link_to request.url, request.url %>

-
-<%= render :partial => "exchange_ticket" %> -
-

<%= link_to 'rubykaigi2009', "/2009/#{I18n.locale}/registrations" %>

diff --git a/app/views/layouts/admin.html.erb b/app/views/layouts/admin.html.erb deleted file mode 100644 index 91045727..00000000 --- a/app/views/layouts/admin.html.erb +++ /dev/null @@ -1,27 +0,0 @@ -<%# coding: utf-8 -%> - - - - - <%= [@title, 'RubyKaigi'].compact.join(' - ') %> - <%= javascript_include_tag %w[prototype effects dragdrop controls jquery-1.3.2.min application] %> - <%= stylesheet_link_tag %w[application admin] %> - <%= yield :css %> - <%= yield :inline_css %> - - - -
- <%= render_flash_messages %> -
- -
-<%= yield %> -
-
-
- - diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml new file mode 100644 index 00000000..86a0074d --- /dev/null +++ b/app/views/layouts/admin.html.haml @@ -0,0 +1,10 @@ +!!! + +%html + %head + %meta(charset='utf-8') + %script(type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js') + %script(type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.2/scriptaculous.js') + != admin_assistant_includes + + %body!= yield diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb deleted file mode 100644 index 7d404491..00000000 --- a/app/views/layouts/application.html.erb +++ /dev/null @@ -1,23 +0,0 @@ -<%# coding: utf-8 -%> - - - - - <%= [@title, t("rubykaigi2009")].compact.join(" - ") %> - <%= javascript_include_tag :all %> - <%= stylesheet_link_tag "application.css" %> - <%= yield :css %> - <%= yield :inline_css %> - - - -<%= render_flash_messages %> - -<%= yield %> - - -<%= render :partial => "shared/analog_ruby" %> -<%= render :partial => "shared/google_analytics" %> - - diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml new file mode 100644 index 00000000..dd75f766 --- /dev/null +++ b/app/views/layouts/application.html.haml @@ -0,0 +1,30 @@ +!!! + +%html + %head + %meta(charset='utf-8') + %title= [@title, t(:rubykaigi2010)].compact.join(' - ') + %link(rel='icon' href='/favicon.ico') + != yield :head + + %body + %h1= t(:rubykaigi2010) + + - if authenticated? + Welcome #{user.username} + + %ul + %li!= link_to 'Your Dashboard', dashboard_path + %li!= link_to 'Account Settings', edit_account_path + %li!= link_to 'Your Cart', carts_path + %li!= link_to 'Sign out', signout_path, :method => :delete + - else + != link_to 'Sign in / Sign up', signin_path + + - if n = flash[:notice] + %p.notice= n + + - if e = flash[:error] + %p.error= e + + != yield diff --git a/app/views/layouts/ruby_kaigi2009.html.erb b/app/views/layouts/ruby_kaigi2009.html.erb deleted file mode 100644 index f136f78e..00000000 --- a/app/views/layouts/ruby_kaigi2009.html.erb +++ /dev/null @@ -1,33 +0,0 @@ -<%# coding: utf-8 -%> - - - - - <%= [@title, t("rubykaigi2009")].compact.join(" - ") %> - <%= javascript_include_tag "jquery-1.3.2.min.js" %> - <%= javascript_include_tag "application.js" %> - <%= stylesheet_link_tag %w[application 2009] %> - <%= yield :css %> - <%= yield :inline_css %> - - - -
- <%= render_flash_messages %> -
- - -<%= yield %> - -
- <%= render :partial => "shared/side" %> - <%= render :partial => "shared/footer" %> -
- - <%#= render :partial => "shared/analog_ruby" %> - <%= render :partial => "shared/google_analytics" %> - - diff --git a/app/views/layouts/ruby_kaigi2010.html.haml b/app/views/layouts/ruby_kaigi2010.html.haml new file mode 100644 index 00000000..96a4a4c2 --- /dev/null +++ b/app/views/layouts/ruby_kaigi2010.html.haml @@ -0,0 +1,204 @@ +!!! XML +!!! Strict +%html{ :xmlns=>"http://www.w3.org/1999/xhtml", "xml:lang" => "#{current_locale}", :lang => "#{current_locale}" } + %head + != yield :meta_top + %meta{ "http-equiv" => "Content-Type", :content => "text/html; charset=utf-8" } + != csrf_meta_tag + %title= [@title, "#{t(:rubykaigi2010)}, #{t(:rubykaigi2010_dates)}"].compact.join(' - ') + %link{ :href => "/2010/stylesheets/common.css", :media => "all", :rel => "stylesheet", :type => "text/css" } + %link{ :href => "/2010/stylesheets/superfish.css", :media => "screen", :rel => "stylesheet", :type => "text/css" } + %link{ :href => "/2010/stylesheets/form_flash.css", :media => "screen", :rel => "stylesheet", :type => "text/css" } + %link{ :href => "/2010/stylesheets/print.css", :media => "print", :rel => "stylesheet", :type => "text/css" } + %link{ :rel => "alternate", :type => "application/rss+xml", :title => "RubyKaigi2010(#{t(current_locale)})", :href => rubykaigi_org_feed_url(current_locale) } + %script{ :src => "/2010/javascripts/jquery-1.4.2.min.js", :type => "text/javascript" } + %script{ :src => "/2010/javascripts/rails.js", :type => "text/javascript" } + %script{ :src => "/2010/javascripts/hoverIntent.js", :type => "text/javascript" } + %script{ :src => "/2010/javascripts/superfish.js", :type => "text/javascript" } + :javascript + jQuery(function(){ + jQuery('ul.sf-menu').superfish(); + }); + != yield :head + + %body + %div#header + %a{ :href => "/2010/#{current_locale}/"} + %img.f_left{ :alt => "RubyKaigi2010", :src => "/2010/images/top_logo.jpg" } + - if authenticated? + %div#account + %div + %p Welcome, #{user.username} + %ul + %li!= link_to 'Dashboard', dashboard_path + %li!= link_to 'Account Settings', edit_account_path + %li!= link_to 'Sign Out', signout_path, :method => :delete + %img.icon{ :alt => "Avator", :title => "Avator Icon Setting Feature is coming soon :<", :src => '/images/bow_face.png', :height => 30 } + - else + != link_to(image_tag("/2010/images/signin_btn.png", :alt => 'Sign In', :class => 'f_right'), signin_path) + %div#menu + %ul.sf-menu + %li.current + %a{ :href => "/2010/#{current_locale}" } + #{t(:rubykaigi2010)} + %ul + %li + %a{ :href => "/2010/#{params[:locale]}/Prospectus" } + #{t(:prospectus)} + - if registration_opened? + %li + %a{ :href => "/2010/#{current_locale}/Registration" } + #{t(:tickets)} + %li.current + %a{ :href => "/2010/#{current_locale}/Sponsors" } + #{t(:sponsors)} + %ul + %li + %a{ :href => "/2010/#{current_locale}/Sponsors#ruby" } + \#{t(:ruby_sponsor)} + %li + %a{ :href => "/2010/#{current_locale}/Sponsors#platinum" } + \#{t(:platinum_sponsor)} + %li + %a{ :href => "/2010/#{current_locale}/Sponsors#gold" } + \#{t(:gold_sponsor)} + %li + %a{ :href => "/2010/#{current_locale}/Sponsors#individuals" } + \#{t(:individual_sponsor)} + - if "#{current_locale}" == "ja" + %li + != link_to t(:press), "/2010/#{current_locale}/Press" + %li + %a{ :href => "/2010/#{current_locale}/Team" } + #{t(:team)} + %li.current + %a + #{t(:rubykaigi_archives)} + %ul + %li + %a{ :href => "http://rubykaigi.org/2009/#{current_locale}" } + \#{t(:rubykaigi)} 2009 + %li + %a{ :href => "http://jp.rubyist.net/RubyKaigi2008/" } + \#{t(:rubykaigi)} 2008 + %li + %a{ :href => "http://jp.rubyist.net/RubyKaigi2007/" } + \#{t(:rubykaigi)} 2007 + %li + %a{ :href => "http://jp.rubyist.net/RubyKaigi2006/" } + \#{t(:rubykaigi)} 2006 + + %li.current + != link_to t(:time_table), "/2010/#{current_locale}/timetable" + %ul + %li + != link_to t(:program_list), "/2010/#{current_locale}/events" + %li.current + %a{ :href => "/2010/#{current_locale}/Information" } + #{t(:information)} + %ul + %li + %a{ :href => '/2010/files/RubyKaigi2010-FloorGuide.pdf' } Floor Guide (PDF) + %li + %a{ :href => "/2010/#{current_locale}/Twitter" } + Twitter + %li + %a{ :href => "/2010/#{current_locale}/Accommodation" } + #{t(:accommodation)} + %li + %a{ :href => "/2010/#{current_locale}/Photos" } + #{t(:photos)} + %li + %a{ :href => "/2010/#{current_locale}/Goodies" } + #{t(:goodies)} + / + %li + %a{ :href => "#" } + #{t(:power_outlets)} + %li + %a{ :href => "#" } + IRC + %li + %a{ :href => "#" } + FAQ + %li + %a{ :href => "#" } + #{t(:junkudo)} + %br + RubyKaigi #{t(:store)} + %li.current + %a{ :href => "/2010/#{current_locale}/Live" } + #{t(:live)} + / + %ul + %li + %a{ :href => "#" } + ○○会議室 + %li + %a{ :href => "#" } + ○○会議室 + %li + %a{ :href => "#" } + ○○会議室 + %li.current + %a{ :href => "http://rubykaigi.tdiary.net/" } + #{t(:rubykaigi_nikki)} + + %div#langnav + %p + %a.noborder{ :href => "/" } + %img{ :alt => "HOME", :src => "/2010/images/home_btn.png" } + != link_to 'English', :locale => 'en' + | + != link_to '日本語', :locale => 'ja' + %div#container.whitebox_alpha.main + %div#sidebar + %h2 + %img{ :alt => "REGISTRATION", :src => "/2010/images/registration_head.png" } + %p#registration_btn + - if registration_opened? + - button = (current_locale == "ja" ? image_tag("/2010/images/registration_btn.png", :alt => "参加登録はこちら") : image_tag("/2010/images/registration_btn_en.png", :alt => "REGISTER NOW")) + != link_to(button, "/2010/#{current_locale}/Registration") + - else + (#{t(:in_preparation)}) + %h2 + %img{ :alt => "TAGS", :src => "/2010/images/tags_head.png" } + %div#tags + %h3 + %img{ :alt => "for twitter", :src => "/2010/images/tags_for_twitter.png" } + %p + %a{ :href => "http://twitter.com/#search?q=%23rubykaigi" } + \#rubykaigi + %h3 + %img{ :alt => "for blog", :src => "/2010/images/tags_for_blog.png"} + %p + %a{ :href => "http://b.hatena.ne.jp/t/rubykaigi2010" } + rubykaigi2010 + %h2 + %img{ :alt => "SPONSORS", :src => "/2010/images/sponsors_head.png" } + %div#sponsors.whitebox.center + %h3 + %a{ :href => "/2010/#{current_locale}/Sponsors#ruby"} + %img{ :alt => "Ruby", :src => "/2010/images/sponsors_ruby.png" } + != render :partial => 'shared/ruby_sponsors' + %h3 + %a{ :href => "/2010/#{current_locale}/Sponsors#platinum"} + %img{ :alt => "Platinum", :src => "/2010/images/sponsors_platinum.png" } + != render :partial => 'shared/platinum_sponsors' + %h3 + %a{ :href => "/2010/#{current_locale}/Sponsors#gold"} + %img{ :alt => "Gold", :src => "/2010/images/sponsors_gold.png" } + != render :partial => 'shared/gold_sponsors' + %h3 + %a{ :href => "/2010/#{current_locale}/Sponsors#individuals"} + %img{ :alt => "Individuals", :src => "/2010/images/sponsors_individuals.png" } + %p.individual_badge + %a{ :href => "/2010/#{current_locale}/Sponsors#individuals"} + = t('link_to_individual_sponsors') + + != render_flashes + != yield + + %div#footer + %p + Feel free to contact us via e-mail to: 2010 at rubykaigi dot org. diff --git a/app/views/layouts/ruby_kaigi2011.html.haml b/app/views/layouts/ruby_kaigi2011.html.haml new file mode 100644 index 00000000..ef3216e4 --- /dev/null +++ b/app/views/layouts/ruby_kaigi2011.html.haml @@ -0,0 +1,221 @@ +!!! +%html{"xmlns" => "http://www.w3.org/1999/xhtml", "xmlns:og" => "http://ogp.me/ns#", "xmlns:fb" => "http://www.facebook.com/2008/fbml", :lang => "ja"} + %head + != yield :meta_top + %meta{ "http-equiv" => "Content-Type", :content => "text/html; charset=utf-8" } + != javascript_include_tag :defaults + != csrf_meta_tag + %title= [@title, "#{t(:rubykaigi2011)}(#{t(:rubykaigi2011_dates)})"].compact.join(' | ') + %link{:href => "/2011/stylesheets/jquery.galleryview-3.0.css", :media => "screen", :rel => "stylesheet", :type => "text/css"} + %link{:href => "/2011/stylesheets/common.css", :media => "screen", :rel => "stylesheet", :type => "text/css"} + %link{:href => "/2011/stylesheets/pc.css", :media => "screen", :rel => "stylesheet", :type => "text/css"} + %link{ :href => "/2011/stylesheets/form_flash.css", :media => "screen", :rel => "stylesheet", :type => "text/css" } + %link{:href => "http://fonts.googleapis.com/css?family=Geo", :rel => "stylesheet", :type => "text/css"} + %link{ :rel => "alternate", :type => "application/rss+xml", :title => "RubyKaigi2011(#{t(current_locale)})", :href => rubykaigi_org_feed_url(current_locale) } + %script{:src => "/2011/javascripts/jquery.easing.1.3.js", :type => "text/javascript"} + %script{:src => "/2011/javascripts/jquery.galleryview-3.0.min.js", :type => "text/javascript"} + %script{:src => "/2011/javascripts/jquery.timers-1.2.js", :type => "text/javascript"} + %link{:href => "/2011/favicon.ico", :rel => "shortcut icon"} + /[if lte IE 8] + %script{:src => "/2011/javascripts/html5.js", :type => "text/javascript"} + != yield :head + %body{:id => @body_id} + #topBar + %nav + - if authenticated? + %ul + %li!= link_to t(:dashboard), dashboard_path + %li!= link_to t(:account_settings), edit_account_path + %li!= link_to t(:signout), signout_path, :method => :delete + %p.name + #{user.username} + %span + != img_tag_for_usernavi(user) + - else + %ul + %li!= link_to "#{t(:signin)}", signin_path + %a{:name => "top"} + %p#topBarLogo + %a{:href => "/2011/#{locale}"} + %img{:alt => "RubyKaigi2011(日本Ruby会議2011)", :height => "80", :src => "/2011/images/commonLogo.png", :width => "260"} + %p#topBarLang + != link_to 'English', :locale => 'en', :page_name => params[:page_name] + | + != link_to '日本語', :locale => 'ja', :page_name => params[:page_name] + #global + %nav + %ul + %li + %a{:href => "/2011/#{current_locale}/about"} + %span + #{t(:about)} + %img{:src => "/2011/images/commonGlobalNavInformations.png"} + %li + %a{:href => "/2011/#{current_locale}/registration"} + %span + #{t(:registration)} + %img{:src => "/2011/images/commonGlobalNavRegister.png"} + %li + %a{:href => "/2011/#{current_locale}/for_attendees"} + %span + #{t(:for_attendees)} + %img{:src => "/2011/images/commonGlobalNavForAttendees.png"} + %li + %a{:href => "/2011/#{current_locale}/sponsors"} + %span + #{t(:sponsors)} + %img{:src => "/2011/images/commonGlobalNavSponsors.png"} + #flashMessage + != render_flashes + != yield + %footer + %nav + %div + %h2 + %a{:href => "/2011/#{current_locale}/about"} + #{t(:about)} + %ul + %li + %a{:href => "http://rubykaigi.tdiary.net/", :target => "_blank"} + #{t(:rubykaigi_nikki)} + %li + %a{:href => "/2011/#{current_locale}/about#prospectus"} + #{t(:prospectus)} + %li + %a{:href => "/2011/#{current_locale}/about#press"} + #{t(:press)} + %li + %a{:href => "/2011/#{current_locale}/team"} + #{t(:team)} + %li + %a{:href => "/2011/#{current_locale}/about#photographers"} + #{t(:photographers)} + %h2 + %a{:href => "/2011/#{current_locale}/registration"} + #{t(:registration)} + %ul + %li + %a{:href => "/2011/#{current_locale}/registration#tickets"} + #{t(:tickets)} + %li + %a{:href => "/2011/#{current_locale}/registration#party"} + #{t(:official_party)} + %ul + %li + %a{:href => "/2011/#{current_locale}/registration#individual_sponsor"} + #{t(:become_an_individual_sponsor)} + %div + %h2 + %a{:href => "/2011/#{current_locale}/sponsors"} + #{t(:sponsors)} + %ul + %li + #{t(:ruby_sponsor)}: + %a{:href => "/2011/#{current_locale}/sponsors_ruby_R01"} + NaCl + %ul + %li + #{t(:ruby_sponsor)}: + %a{:href => "/2011/#{current_locale}/sponsors_ruby_R02"} + RICOH + %ul + %li + #{t(:ruby_sponsor)}: + %a{:href => "/2011/#{current_locale}/sponsors_ruby_R03"} + Microsoft + %ul + %li + %a{:href => "/2011/#{current_locale}/sponsors_platinum"} + #{t(:platinum_sponsor)} + %ul + %li + %a{:href => "/2011/#{current_locale}/sponsors_gold"} + #{t(:gold_sponsor)} + %ul + %li + %a{:href => "/2011/#{current_locale}/sponsors_individual"} + #{t(:individual_sponsor)} + + %ul + %li + %a{:href => "/2011/#{current_locale}/sponsors#sponsors_registration"} + #{t(:become_a_sponsor)} + %div + %h2 + %a{:href => "/2011/#{current_locale}/for_attendees"} + #{t(:for_attendees)} + %ul + %li + %a{:href => "/2011/#{current_locale}/schedule/grid"} + #{t(:schedule)} + %li + #{t(:hall_main)}: + %a{:href => "/2011/#{current_locale}/coming_soon"} Ustream + | + %a{:href => "/2011/#{current_locale}/coming_soon"} IRC + %li + #{t(:hall_sub)}: + %a{:href => "/2011/#{current_locale}/coming_soon"} Ustream + | + %a{:href => "/2011/#{current_locale}/coming_soon"} IRC + %li + %a{:href => "/2011/#{current_locale}/for_attendees#access"} + #{t(:access)} + %li + %a{:href => "/2011/#{current_locale}/for_attendees#hotel_and_travel"} + #{t(:hotel_and_travel)} + %li + %a{:href => "/2011/#{current_locale}/coming_soon"} + #{t(:floor_guide)}(PDF) + %li + %a{:href => "/2011/#{current_locale}/advent_calendar"} + #{t(:advent)} + %li + %a{:href => "/2011/#{current_locale}/for_attendees#community"} + #{t(:community)} + %li + %a{:href => "/2011/#{current_locale}/for_attendees#faq"} + FAQ + %li + %a{:href => "/2011/#{current_locale}/for_attendees#goodies"} + #{t(:goodies)} + %div + %h2 + %a{:href => "/2011/#{current_locale}/archives"} + #{t(:archives)} + %ul + %li + %a{:href => "http://rubykaigi.org/2010/#{current_locale}", :target => "_blank"} + #{t(:rubykaigi)}2010 + %li + %a{:href => "http://rubykaigi.org/2009/#{current_locale}", :target => "_blank"} + #{t(:rubykaigi)}2009 + %li + %a{:href => "http://jp.rubyist.net/RubyKaigi2008/", :target => "_blank"} + #{t(:rubykaigi)}2008 + %li + %a{:href => "http://jp.rubyist.net/RubyKaigi2007/", :target => "_blank"} + #{t(:rubykaigi)}2007 + %li + %a{:href => "http://jp.rubyist.net/RubyKaigi2006/", :target => "_blank"} + #{t(:rubykaigi)}2006 + %li + %a{:href => "http://regional.rubykaigi.org/", :target => "_blank"} + #{t(:regional_rubykaigi)} + %div + %h2 + 【#{t(:inquiry)}】 + %p + 2011_at_rubykaigi_dot_org + %p.icon + %a{:href => "http://twitter.com/rubykaigi"}< + %img{:alt => "Twitter", :src => "/2011/images/commonTwitter.png"} + %a{:href => "http://www.facebook.com/pages/RubyKaigi/204401496251843"}< + %img{:alt => "facebook", :src => "/2011/images/commonFacebook.png"} + != render :partial => 'shared/2011/rss_btn' + %address + \© 2006-2011 + %a{:href => "/"} rubykaigi.org + %p + %a{:href => "/"} + %img{:alt => "HOME", :src => "/2011/images/commonBtnHome.png"} diff --git a/app/views/layouts/ruby_kaigi2011_phone.html.haml b/app/views/layouts/ruby_kaigi2011_phone.html.haml new file mode 100644 index 00000000..a6b20104 --- /dev/null +++ b/app/views/layouts/ruby_kaigi2011_phone.html.haml @@ -0,0 +1,100 @@ +!!! +%html{"xmlns" => "http://www.w3.org/1999/xhtml", "xmlns:og" => "http://ogp.me/ns#", "xmlns:fb" => "http://www.facebook.com/2008/fbml", :lang => "ja"} + %head + != yield :meta_top + %meta{ "http-equiv" => "Content-Type", :content => "text/html; charset=utf-8" } + != csrf_meta_tag + %title= [@title, "#{t(:rubykaigi2011)}(#{t(:rubykaigi2011_dates)})"].compact.join(' | ') + %link{:href => "/2011/stylesheets/jquery.mobile-1.0a3.min.css", :media => "screen", :rel => "stylesheet", :type => "text/css"} + %link{ :rel => "alternate", :type => "application/rss+xml", :title => "RubyKaigi2011(#{t(current_locale)})", :href => rubykaigi_org_feed_url(current_locale) } + %script{:src => "/2011/javascripts/jquery-1.5.1.min.js", :type => "text/javascript"} + :javascript + $(document).bind("mobileinit", function(){ + $.extend( $.mobile , { + ajaxLinksEnabled: false, + ajaxFormsEnabled: false + }); + }); + %script{:src => "/2011/javascripts/jquery.mobile-1.0a3.min.js", :type => "text/javascript"} + %link{:href => "/2011/stylesheets/common.css", :media => "screen", :rel => "stylesheet", :type => "text/css"} + %link{:href => "/2011/stylesheets/phone.css", :media => "screen", :rel => "stylesheet", :type => "text/css"} + %link{:href => "/2011/favicon.ico", :rel => "shortcut icon"}/ + != yield :head + %body{:id => params[:page_name], "data-role" => "page"} + #topBarLogo + %a{:href => "/2011/#{current_locale}/phone_index"} + %img{:alt => "RubyKaigi2011(日本Ruby会議2011)", :src => "/2011/images/commonLogo.png"} + #topBarLang + %p.linkMark + != link_to 'English', :locale => 'en', :page_name => params[:page_name] + %p.linkMark + != link_to '日本語', :locale => 'ja', :page_name => params[:page_name] + #topBar + %nav + - if authenticated? + %div{"data-role" => "collapsible", "data-collapsed" => "true", "data-theme" => "a"} + %h2 + MENU (sigined in as #{user.username}) + %ul + %li!= link_to 'Dashboard', dashboard_path + %li!= link_to 'Account Settings', edit_account_path + %li!= link_to 'Sign Out', signout_path, :method => :delete + - else + %ul + %li + %a{:href => "phone_coming_soon"} + #{t(:signin)} + %a{:name => "top"} + != yield + %footer + %nav + %div + %ul + %li + %a{:href => "http://rubykaigi.tdiary.net/", :target => "_blank"} + #{t(:rubykaigi_nikki)} + %li + %a{:href => "/2011/#{current_locale}/phone_registration"} + #{t(:registration)} + -#%li + -#%a{:href => "/2011/#{current_locale}/phone_programs"} + -#%a{:href => "/2011/#{current_locale}/phone_coming_soon"} + -# #{t(:programs)} + -#%li + -##{t(:hall_main)}: + -#%a{:href => "/2011/#{current_locale}/phone_coming_soon"} Ustream + -#| + -#%a{:href => "/2011/#{current_locale}/phone_coming_soon"} IRC + -#%li + -##{t(:hall_sub)}: + -#%a{:href => "/2011/#{current_locale}/phone_coming_soon"} Ustream + -#| + -#%a{:href => "/2011/#{current_locale}/phone_coming_soon"} IRC + -#%li + -#%a{:href => "/2011/#{current_locale}/phone_coming_soon"} + -# #{t(:access)} + -#%li + -#%a{:href => "/2011/#{current_locale}/phone_coming_soon"} + -# #{t(:hotel_and_travel)} + -#%li + -#%a{:href => "/2011/#{current_locale}/phone_coming_soon", :target => "_blank"} + -# #{t(:floor_guide)}(PDF) + -#%li + -#%a{:href => "/2011/#{current_locale}/phone_coming_soon"} + -# FAQ + -#%li + -#%a{:href => "/2011/#{current_locale}/phone_coming_soon"} + -# Download(wallpaper) + %p + 【#{t(:inquiry)}】 2011_at_rubykaigi_dot_org + %p.icon + %a{:href => "http://twitter.com/rubykaigi"} + %img{:alt => "Twitter", :src => "/2011/images/commonTwitter.png"} + != render :partial => 'shared/2011/rss_btn' + %address + \© 2006-2011 + %a{:href => "/2011/#{current_locale}/phone_index"} rubykaigi.org +#phoneFooter{"data-role" => "footer", "data-position" => "fixed"} + %div{"data-role" => "navbar", "data-theme" => "a"} + %a{:href => "/2011/#{current_locale}/phone_index", "data-icon" => "home"} + Home diff --git a/app/views/layouts/simple.html.haml b/app/views/layouts/simple.html.haml new file mode 100644 index 00000000..d7642043 --- /dev/null +++ b/app/views/layouts/simple.html.haml @@ -0,0 +1,12 @@ +!!! + +%html + %head + %meta(charset='utf-8') + %title= [@title, t(:rubykaigi2011), t(:rubykaigi2011_dates)].compact.join(', ') + != stylesheet_link_tag 'reset' + %link(rel='icon' href='/favicon.ico') + != yield :head + + %body + != yield diff --git a/app/views/layouts/talks.html.erb b/app/views/layouts/talks.html.erb deleted file mode 100644 index 59413e0d..00000000 --- a/app/views/layouts/talks.html.erb +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - Talks: <%= controller.action_name %> - <%= stylesheet_link_tag 'scaffold' %> - - - -

<%= flash[:notice] %>

- -<%= yield %> - - - diff --git a/app/views/lightning_talk_submission_mailer/submission_received.erb b/app/views/lightning_talk_submission_mailer/submission_received.erb deleted file mode 100644 index 94080730..00000000 --- a/app/views/lightning_talk_submission_mailer/submission_received.erb +++ /dev/null @@ -1,31 +0,0 @@ -Hi, this is an Auto Response to your submission. - -Thank you for your submission to Rubykaigi2009 Lightning Talks. ----------------------------------------------------------------------- -Name: <%= @submission.name %> -Organization: <%= @submission.organization %> -Email: <%= @submission.email %> -<% if @submission.has_ticket? -%> -'I have my own RubyKaigi2009 conference ticket.' -<% else -%> -'I don't have my RubyKaigi2009 conference ticket.' -<% end -%> - -Convenient date(s) to talk: <%= @submission.day1 %> <%= @submission.day2 %> - -Title: -<%= @submission.title %> - -Abstract: -<%= @submission.abstract %> - -Message: -<%= @submission.note %> ----------------------------------------------------------------------- -We'll e-mail you back to notify your submission is -accepted or rejected until June 29 2009. - -Regards, --- -RubyKaigi2009 Team -2009@rubykaigi.org diff --git a/app/views/lightning_talk_submissions/2009/closed.html.erb b/app/views/lightning_talk_submissions/2009/closed.html.erb deleted file mode 100644 index 55af8c9c..00000000 --- a/app/views/lightning_talk_submissions/2009/closed.html.erb +++ /dev/null @@ -1,4 +0,0 @@ -
-

Lightning Talks submission is closed

-

<%= link_to 'rubykaigi.org', '/' %>

-
diff --git a/app/views/lightning_talk_submissions/2009/index_en.html.erb b/app/views/lightning_talk_submissions/2009/index_en.html.erb deleted file mode 100644 index d77886d3..00000000 --- a/app/views/lightning_talk_submissions/2009/index_en.html.erb +++ /dev/null @@ -1,24 +0,0 @@ -
-

We're Looking for Lightning Talk(LT) Presenters

-

RubyKaigi2009 is currently assembling proposals for Lightning Talks. We're looking for talks on a wide range of topics, from demos of Ruby applications, to your opinions about Ruby itself, and so forth. Please apply if you're interested!

-

About Lightning Talks

-

We plan to run a "standard" battery of 11 talks, each of strictly 5 minutes duration, in a solid 1 hour session. This session will be held in the afternoon of Day 1 (Friday, July 17) and Day 2 (Saturday, July 18).

- -

-Presentations will be selected from the proposals by the RubyKaigi 2009 Team. -

- -

Regarding Tickets for LT Speakers

-

Please be aware that Lightning Talk speakers will need tickets to attend the conference. If you are selected as an LT speaker, but were unable to purchase a ticket in advance, the committee shall make arrangements for you to purchase a ticket.

- -

NOTICE: We cannot make arrangements for RubyKaigi2009 Party. You'll need you own conference party admission if you'd like to attend.

- -

Important Dates

- -

Lightning Talk Submission

- <%= render :partial => "form" %> -
diff --git a/app/views/lightning_talk_submissions/2009/index_ja.html.erb b/app/views/lightning_talk_submissions/2009/index_ja.html.erb deleted file mode 100644 index afd89df1..00000000 --- a/app/views/lightning_talk_submissions/2009/index_ja.html.erb +++ /dev/null @@ -1,30 +0,0 @@ -
-

ライトニングトークスでのプレゼンテーションを募集します

-

いわゆるライトニングトークスでのプレゼンテーションを募集します。 Rubyに関するアプリケーションのデモやRubyに関する主張、その他なんでも、発表したいことがある人はぜひご応募ください。

-

RubyKaigi2009のライトニングトークスについて

-

ライトニングトークスは 1 時間で 5 分間のプレゼンテーションを 11 本行うオーソドックスなスタイルになる予定です。 RubyKaigi2009では、会期1日目(7/17(金))と2日目(7/18(土))の午後にそれぞれ実施する予定です。

-

-なお、応募者多数の場合は日本 Ruby会議2009実行委員会の選考により各日11発表(最大で22発表)に絞ります。また、応募が少数の場合は1日だけになるかもしれません。 -

-

ライトニングトークス発表者の入場チケットについて

-

ライトニングトークス発表者も入場チケットが必要です。 もしも、チケットを事前に購入できなかった場合は、実費にてチケットの斡旋を行います。

-

懇親会については、通常の参加者と同様です。つまり、特別に斡旋などはいたしません。

- -

応募方法

-

下記のフォームから応募してください。

- -

募集締め切り・発表者決定

-

-応募締め切りは 2009 年 6 月 25 日 (木)です。締め切り後なるべく速やかに選考を行い、6 月 29 日 (月) までに当落を通知いたします。 -

-

-応募多数の場合は、上記〆切よりも早く応募の受け付けを終了する場合があります。応募はお早めにお願いします。 -

- -

-皆さまからのご応募お待ちしております。 -

- -

応募フォーム

- <%= render :partial => "form" %> -
diff --git a/app/views/lightning_talk_submissions/2009/thankyou_en.html.erb b/app/views/lightning_talk_submissions/2009/thankyou_en.html.erb deleted file mode 100644 index 8a8498bd..00000000 --- a/app/views/lightning_talk_submissions/2009/thankyou_en.html.erb +++ /dev/null @@ -1,18 +0,0 @@ -
-

Thank you for your submission

-

- Thank you for your submission to RubyKaigi2009 Lightning Talks. -

-

- Confirmation mail will be sent to you shortly. - If you don't recieve the confirmation mail in a few minutes, - something may go wrong, so please let us know (2009 at rubykaigi dot org). -

-

- The result of selection will be sent later. -

- -

- If you have any questions, contact us by email 2009 at rubykaigi dot org. -

-
diff --git a/app/views/lightning_talk_submissions/2009/thankyou_ja.html.erb b/app/views/lightning_talk_submissions/2009/thankyou_ja.html.erb deleted file mode 100644 index f57bba1f..00000000 --- a/app/views/lightning_talk_submissions/2009/thankyou_ja.html.erb +++ /dev/null @@ -1,18 +0,0 @@ -
-

ライトニングトークスへの応募が完了しました

- -

- 日本Ruby会議2009ライトニングトークスにご応募いただきありがとうございました。 -

-

- 投稿確認のメールが自動送信されます。 - 自動送信のメールが届かない場合は何か問題が発生している可能性がありますので 2009 at rubykaigi dot org までご連絡ください。 -

-

- 選考結果は後日お送りします。 -

- -

- お問い合わせは 2009 at rubykaigi dot org までお送りください。 -

-
diff --git a/app/views/lightning_talk_submissions/_form.html.erb b/app/views/lightning_talk_submissions/_form.html.erb deleted file mode 100644 index 7702d15d..00000000 --- a/app/views/lightning_talk_submissions/_form.html.erb +++ /dev/null @@ -1,61 +0,0 @@ -<% content_for :inline_css do -%> - -<% end -%> -<% form_for(@lightning_talk_submission, :url => {:action => 'create'}) do |f| %> - <%= f.error_messages %> -

- <%= f.label :name, t_required('activerecord.attributes.lightning_talk_submission.name') %>
- <%= f.text_field :name, :size => 60 %> -

-

- <%= f.label :organization, t('activerecord.attributes.lightning_talk_submission.organization') %>
- <%= f.text_field :organization, :size => 60 %> -

-

- <%= f.label :email, t_required('activerecord.attributes.lightning_talk_submission.email') %>
- <%= f.text_field :email, :size => 60 %> -

-

- <%= f.label :title, t_required('activerecord.attributes.lightning_talk_submission.title') %>
- <%= f.text_field :title, :size => 60 %> -

-

- <%= f.label :abstract, t_required('activerecord.attributes.lightning_talk_submission.abstract') %>
- <%= f.text_area :abstract, :cols => 60, :rows => 10 %> -

-

- <%= t('lt.convenient_date') %>
-

- <%= f.check_box :day1, {}, LightningTalkSubmission::RubyKaigi2009.day1, '' %><%= f.label :day1, t('lt.rubykaigi2009.day1') %>
- <%= f.check_box :day2, {}, LightningTalkSubmission::RubyKaigi2009.day2, '' %><%= f.label :day2, t('lt.rubykaigi2009.day2') %> -
-

-

- <%= f.label :note, t('activerecord.attributes.lightning_talk_submission.note') %>
- <%= f.text_area :note, :cols => 60, :rows => 3 %> -

-

- <%= f.check_box :has_ticket %> <%= f.label :has_ticket, t('activerecord.attributes.lightning_talk_submission.has_ticket') %> -

-

- <%= f.label :the_birthstone_of_july, t('activerecord.attributes.lightning_talk_submission.the_birthstone_of_july') %> - <%= f.select :the_birthstone_of_july, ['pearl', 'ruby', 'diamond'] %>
- (<%= t("lt.select_to_avoid_spam") %>) -

-

- <%= f.submit t('lt.submit'), :class => 'submit', :confirm => t('lt.are_you_sure') %> -

-<% end %> diff --git a/app/views/orders/confirm.html.haml b/app/views/orders/confirm.html.haml new file mode 100644 index 00000000..923693e8 --- /dev/null +++ b/app/views/orders/confirm.html.haml @@ -0,0 +1,31 @@ +- @title = t("order.confirm") +#content + %h1 #{@title} + + - @order.line_items.each do |item| + %h2 #{t(item.product_item.label)} + %p + #{t('amount')}: #{number_with_delimiter(item.price)} JPY
+ #{t('quantity')}: #{number_with_delimiter(item.quantity)}
+ #{t('subtotal_price')}: #{number_with_delimiter(item.subtotal_price)} JPY
+ - if item.individual_sponsor? + %p{:style => 'margin-top: 1em'} + - if item.anonymous? + Anonymous Individual Sponsor

+ - else + Individual Sponsor Link Label: #{item.link_label.present? ? item.link_label : "(default: name on your account)" }
+ Individual Sponsor Link URL: #{item.link_url.present? ? item.link_url : "(default: website on your account)" }
+
+ %p!= link_to 'Edit Individual Sponsor Options', individual_sponsor_option_orders_path(:locale => params[:locale]) + + %h2 #{t('total_price')} + %p + #{number_with_delimiter(@order.price)} JPY +



+ %p + != link_to 'Back to Cart', carts_path(:locale => locale) + %div{:style => 'text-align:right'} + - form_tag(url_of_paypal_checkout) do + != hidden_field_tag :cmd, @paypal_form.cmd + != hidden_field_tag :encrypted, @paypal_form.encrypted + != checkout_paypal_button diff --git a/app/views/orders/individual_sponsor_option.html.haml b/app/views/orders/individual_sponsor_option.html.haml new file mode 100644 index 00000000..8b317ef0 --- /dev/null +++ b/app/views/orders/individual_sponsor_option.html.haml @@ -0,0 +1,33 @@ +- @title = t("order.individual_sponsor_option") +- content_for :head do + != stylesheet_link_tag('/2011/stylesheets/registration') + != javascript_include_tag('/2011/javascripts/registration') +#content + %h1= @title + + - form_for @option, :url => order_path(@order, :locale => params[:locale]), :html => {:method => :put} do |f| + != f.error_messages + !=f.hidden_field :id + %dl + %dt!=f.label :additional_amount, t('individual_sponsor_amount_label') + %dd + = number_with_delimiter(@option.order_item.unit_price) + JPY + + != f.text_field :additional_amount, :size => 10 + JPY(#{t('additional_amount_label')}) +
+ != error_message_on :option, :additional_amount, :prepend_text => t('individual_sponsor_amount_label') + %dt!= f.label :link_url, t('individual_sponsor_link_url') + %dd!= f.text_field :link_url +
+ != error_message_on :option, :link_url, :prepend_text => t('individual_sponsor_link_url') + %dt!= f.label :link_label, "#{t('individual_sponsor_link_label')}(#{t('recommend_write_in_english')})" + %dd!= f.text_field :link_label + != error_message_on :option, :link_label, :prepend_text => t('individual_sponsor_link_label') + %dt{:style => 'margin-top:1em'} + != f.check_box :anonymous + != f.label :anonymous, t('individual_sponsor_anonymous') + +
+
+ %p!= f.submit t(:submit_individual_sponsor_additional_information) diff --git a/app/views/orders/thanks.html.haml b/app/views/orders/thanks.html.haml new file mode 100644 index 00000000..9509f730 --- /dev/null +++ b/app/views/orders/thanks.html.haml @@ -0,0 +1,19 @@ +- @title = "Thank you for your contribution to RubyKaigi!!" +#content + %h1 Thank you for your contribution to RubyKaigi!! + + %p Your order is completed. + + %h2 To See Your RubyKaigi Related Information + %ul + %li + %strong + You can see your Ticket(s) on + != link_to 'My Ticket', my_tickets_path + Page! + %li + other useful RubyKaigi related information on your + != link_to 'Dashboard', dashboard_path + + %p + We're looking forward to seeing you at RubyKaigi #{RubyKaigi.latest_year} ! diff --git a/app/views/pages/2010/Accommodation.en.html.haml b/app/views/pages/2010/Accommodation.en.html.haml new file mode 100644 index 00000000..46abcbcc --- /dev/null +++ b/app/views/pages/2010/Accommodation.en.html.haml @@ -0,0 +1,74 @@ +#content + %h1 #{t(:accommodation)} + %p The conference venue, Tsukuba International Congress Center, is a 10 minute walk from Tsukuba Station, the terminus of the Tsukuba Express train line connecting Tokyo and Tsukuba. We recommend attendees stay at a hotel close to the conference venue. A number of such hotels are listed in the section below. + %p If you would prefer to stay closer to Tokyo, areas with stations on the Tsukuba Express line allow convenient access to the conference. Major areas with stations on the Tsukuba Express line include Asakusa (Rapid 41min/Semi-Rapid 48 min/Local 53 min), Shin-Okachimachi/Ueno (Rapid 43 min/Semi-Rapid 50 min/Local 55 min), and Akihabara (Rapid 45 min/Semi-Rapid 52 min/Local 57 min). + + %h2 Hotels around Tsukuba + + %ul + %li + %a{ :href => 'http://www.okura-tsukuba.co.jp/eng/' } + Okura Frontier Hotel Tsukuba Epochal +
(next door to the venue) + %ul + See also, + %li + %a{ :href => 'http://web.travel.rakuten.co.jp/portal/my/info_page_e.Eng?f_no=3166&f_ptn1=&f_teikei=' } + Rakuten Travel + + %li + %a{ :href => 'http://www.okura-tsukuba.co.jp/eng/' } + Okura Frontier Hotel Tsukuba +
(in front of Tsukuba Station) + %ul + See also, + %li + %a{ :href => 'http://www.expedia.com/pub/agent.dll/qscr=dspv/htid=691249' } + Expedia + %li + %a{ :href => 'http://www.japanican.com/hotels/shisetsudetail.aspx?ar=08&st=4153002&anl=tsukuba&pn=2&rn=1' } + JAPANiCAN + %li + %a{ :href => 'http://web.travel.rakuten.co.jp/portal/my/info_page_e.Eng?f_no=1302&f_ptn1=&f_teikei=' } + Rakuten Travel + %li + %a{ :href => 'http://www.daiwaroynet.jp/english/index.html' } + Daiwa Roynet Hotel Tsukuba +
(in front of Tsukuba Station) + %ul + See also, + %li + %a{ :href => 'http://www.expedia.com/pub/agent.dll/qscr=dspv/htid=2675314/crti=3' } + Expedia + %li + %a{ :href => 'http://web.travel.rakuten.co.jp/portal/my/info_page_e.Eng?f_no=79343&f_ptn1=&f_teikei=' } + Rakuten Travel + %li + %a{ :href => 'http://www.intio.or.jp/sinonome/form3_english/' } + Hotel Grand Shinonome + %li + %a{ :href => 'http://www.55-hotels.com/tsukuba-sky/e/index.html' } + Tsukuba Sky Hotel + %ul + See also, + %li + %a{ :href => 'http://web.travel.rakuten.co.jp/portal/my/info_page_e.Eng?f_no=1986&f_ptn1=&f_teikei=' } + Rakuten Travel + %li + %a{ :href => 'http://www.hotel-bestland.co.jp/en/' } + Hotel Bestland + %ul + See also, + %li + %a{ :href => 'http://web.travel.rakuten.co.jp/portal/my/info_page_e.Eng?f_no=68560&f_ptn1=&f_teikei=' } + Rakuten Travel + + %h2 Tsukuba Area Map + + %div + %iframe{ :width => "425", :height => "350", :frameborder => "0", :scrolling => "no", :marginheight => "0", :marginwidth => "0", :src => "http://maps.google.co.jp/maps/ms?ie=UTF8&hl=en&brcurrent=3,0x60220c8f174adaf1:0x6a1c738c3d5e8746,0&msa=0&msid=104603345126420772766.00048923dc5ec1d0fe8ac&ll=36.077511,140.112762&spn=0.01214,0.018239&z=15&output=embed" } + %br + %small + View in a + %a{ :href => "http://maps.google.co.jp/maps/ms?ie=UTF8&hl=en&brcurrent=3,0x60220c8f174adaf1:0x6a1c738c3d5e8746,0&msa=0&msid=104603345126420772766.00048923dc5ec1d0fe8ac&ll=36.077511,140.112762&spn=0.01214,0.018239&z=15&source=embed", :style => "color:#0000FF;text-align:left" } + larger map diff --git a/app/views/pages/2010/Accommodation.ja.html.haml b/app/views/pages/2010/Accommodation.ja.html.haml new file mode 100644 index 00000000..4e185701 --- /dev/null +++ b/app/views/pages/2010/Accommodation.ja.html.haml @@ -0,0 +1,20 @@ +#content + %h1 #{t(:accommodation)} + %p + まず、会場までのアクセスと、RubyKaigiのプログラムの開始時刻について簡単にまとめます: + %ul + %li 会場であるつくば国際会議場は、つくば駅から徒歩10分程度かかります + %li 例年、土曜日・日曜日のプログラムは10:00頃から開始しています + %li つくばエクスプレスの秋葉原〜つくば間は、片道1,150円、所要時間は50分程度です + + %p + 関東近郊にお住まいの方は十分に通える範囲だとは思いますが、つくば周辺に宿泊するとRubyKaigiを満喫しやすいのではないかなあ、と思っております。金曜日と土曜日の2泊でなくとも、土曜日だけ宿泊するだけでも身体的な負担は軽くなると思います。 + + %p + 英語版の宿泊(Accommodation)のページに簡単なホテルのリストを挙げています。このリスト以外にも、つくばエクスプレスでつくば駅のお隣りの研究学園や守谷あたりまで視野に入れて検討すると、価格や駅からの/へのアクセスに関する選択肢が増えると思います。 + + %p + ちなみに、同じつくば国際会議場を利用したRubyKaigi2008では、スタッフはホテルニューたかはし竹園店に投宿しました。複数名の素泊まりでしたので、比較的安価に宿泊できました(ただし、施設も価格相応です)。つくば国際会議場からも少し距離があります(といっても徒歩10分程度だったと思います)。 + + %p + 以上、参考になれば幸いです。このページの記述は無保証です。文責は角谷信太郎(日本Ruby会議2010 運営委員長)にあります。 diff --git a/app/views/pages/2010/CallForIllustrations.html.haml b/app/views/pages/2010/CallForIllustrations.html.haml new file mode 100644 index 00000000..1e07a9e7 --- /dev/null +++ b/app/views/pages/2010/CallForIllustrations.html.haml @@ -0,0 +1,64 @@ +#content + %h1 Call for illustrations for RubyKaigi 2010! + %p Freely express your RubyKaigi 2010 image! + %p RubyKaigi 2010 requests submissions of illustrations for novelty items including staff T-shirts. + %p RubyKaigi is an annual international conference on Ruby, an object-oriented programming scripting language. The conference started since 2006. RubyKaigi has been offered the main artwork to _why, famous for "Why's (poignant) Guide to Ruby" (CHUNKY BACON!), from the beginning. However, we missed him from last summer at all. So we started to look for someone who gives us the artwork. + %p How about making RubyKaigi fascinating by your illustration? We are looking forward to your splendid, attractive illustration. + %h2 Application Guideline + %p Submit as the format below: + %ul + %li Size: from 2048px x 2048px to 4096px x 4096px + %li Color mode: RGB + %li File format: JPEG, PNG, BMP, or TIFF + %ul + %li You do not need to prepare a vector format for submission. However, we may ask the winner to provide it (We do not consider the existence of a vector format as a criteria) + %li Do not include the dates of events + %li Use single color (We will change the color based on T-shirts' fabric) + %li One submission per person + %h2 How to Apply + %p Send an E-mail with required items below and your work as attachment to "2010 at rubykaigi.org". + %p Required items: + %ol + %li Name or Nickname + %li E-Mail address + %li Title + %li Concept of your work (140 characters) + %h2 Dead line + %p + %strike> May, 16, 2010 (Sun) 23:59 (JST) + May, 31, 2010 (Mon) 23:59 (JST) + %h2 Notification + %p June, 1, 2010 (Tue) 10:00 (JST) + %p + The winner will be announced at the + - succeed "," do + %a{:href => "http://rubykaigi.org/", :title => "RubyKaigi"} official site + and will be contacted by the RubyKaigi 2010 team by E-mail. + %h2 Award + %p Winner: 1 person + %ul + %li invitation to RubyKaigi 2010 (conference and reception) + %li adoption to novelty items + %li a set of novelty items + %h2 See also + %p The artwork of RubyKaigi 2009 (by why the lucky stiff) + %p + %img{:alt => "", :height => "491", :src => "/2009/images/kaigi2009-compucats-invert.png", :width => "520"}/ + %h2 Notice + %ul + %li The submission should be absolutely original, and unpublished in the world + %li You should not submit your work to other contests. If we found that, we would cancel the prize + %li If we found the selected work is identical or similar to existing work, or infringes someone's rights, we would cancel the prize. In case the selected work had rights issue, the applicant should take all responsibilities for the compensation, and RubyKaigi 2010 team does not take any responsibilities + %li We may overlay our logo or trim the selected design + %li We may modify the selected design partially + %li The personal information of applicants are only used for the winning announcement and notification, not for any other purpose. We will dispose all personal information after the selection + %li We do not return your submissions + %li We do not accept any questions about the selection + %h2 License + %p + The rights of the selected design will be + - succeed "." do + %a{:href => "http://creativecommons.org/licenses/by/2.1/jp/deed.en", :title => "Creative Commons — Attribution 2.1 Japan"} CC-by-2.1 + We request you to permit copy, distribute, transmit, to adapt the submitted work with your credit. + %h2 Questions? + %p If you have any questions, feel free to email us via 2010 at rubykaigi.org. diff --git a/app/views/pages/2010/CallForIllustrations.ja.html.haml b/app/views/pages/2010/CallForIllustrations.ja.html.haml new file mode 100644 index 00000000..51aef9d0 --- /dev/null +++ b/app/views/pages/2010/CallForIllustrations.ja.html.haml @@ -0,0 +1,91 @@ +#content + %h1 日本Ruby会議2010のイメージイラストが決定いたしました + %p この度は日本Ruby会議のイメージイラストの公募に多数ご応募いただきまして、ありがとうございました。 + %p 実行委員による厳正なる審査の結果、nari様の「Rubyの下(もと)に」が入賞いたしました。おめでとうございます。 + %h2 入賞 : 1名 + %ul + %li 日本Ruby会議2010へのご招待(本編+懇親会のチケット) + %li Tシャツ等のノベルティグッズに採用 + %li ノベルティグッズ一式を贈呈 + %div#nyusyo + %p + %img{:alt => "入賞 おめでとうございます", :width => "400", :height => "80", :src => "/2010/images/callforillustrations_nyusyo.png"} + %img{:alt => "", :width => "400", :height => "400", :src => "/2010/images/callforillustrations_nari.jpg"} + %br + %strong 作者:nari様 作品名:「Rubyの下(もと)に」 + %a.noborder{ :href => "/2010/download/nari.zip" } + %img{:alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %br URL: + %a{:href => "http://www.narihiro.info/", :target => "_blank"}> http://www.narihiro.info/ + %br License: + %a{:href => "http://creativecommons.org/licenses/by/3.0/", :rel => "license", :target => "_blank"}> CC-by-3.0 + %p + ※この作品の壁紙を + %a{:href => "/2010/#{current_locale}/Goodies"} おまけのページ + よりダウンロードいただけます。 + %h2 その他の作品 + %p ご応募いただいた中から素敵な作品を一部以下にご紹介いたします。 + %p + なお、こちらの作品は作者様のご了承のもと + %a{:href => "http://creativecommons.org/licenses/by/3.0/", :rel => "license", :target => "_blank"}> CC-by-3.0 + に基づき、高解像度のデータを配布させていただいております。 + %p + 企画として開催されます + %a{:href => "/2010/#{current_locale}/events/27"} 「RubyKaigiで自分だけのrubyTシャツを作ろう!」 + 等でご利用し、お楽しみください。 + %p たくさんのご応募、心より感謝申し上げます。 + %div#illustrations + %p + %img{:alt => "Raging Wave Ruby Kaigi 2010", :width => "200", :height => "200", :src => "/2010/images/callforillustrations_emeitch.png"} + %br emeitch 様 + %br - + %br + %a.noborder{ :href => "/2010/download/emeitch.zip" } + %img{:alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %p + %img{:alt => "Rubyちゃん", :width => "200", :height => "200", :src => "/2010/images/callforillustrations_phirip.png"} + %br PHIRIP 様 + %br + %a{ :href => "http://phirip.com/", :target => "_blank" } http://phirip.com/ + %br + %a.noborder{ :href => "/2010/download/phirip.zip" } + %img{:alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %p + %img{:alt => "心 はずむ RubyKaigi", :width => "200", :height => "200", :src => "/2010/images/callforillustrations_yunadesign.png"} + %br Yuna Design 様 + %br + %a{ :href => "http://yu-na.tdiary.net/", :target => "_blank" } http://yu-na.tdiary.net/ + %br + %a.noborder{ :href => "/2010/download/yunadesign.zip" } + %img{:alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %p + %img{:alt => "Rubies, ruby programs, and rubyists for rubyists", :width => "200", :height => "200", :src => "/2010/images/callforillustrations_zunda.png"} + %br zunda 様 + %br + %a{ :href => "http://zunda.freeshell.org/", :target => "_blank" } http://zunda.freeshell.org/ + %br + %a.noborder{ :href => "/2010/download/zunda.zip" } + %img{:alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %p + %img{:alt => "ルビー会議", :width => "200", :height => "200", :src => "/2010/images/callforillustrations_kanamoken.png"} + %br かなもけん 様 + %br + %a{ :href => "http://kanamoken.cryptomeria.gr.jp/", :target => "_blank" } http://kanamoken.cryptomeria.gr.jp/ + %br + %a.noborder{ :href => "/2010/download/kanamoken.zip" } + %img{:alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %p + %img{:alt => "Japan-es-que", :width => "200", :height => "200", :src => "/2010/images/callforillustrations_itojunichi.png"} + %br 伊藤ジュンイチ 様 + %br + %a{ :href => "http://451system.net/", :target => "_blank" } http://451system.net/ + %br + %a.noborder{ :href => "/2010/download/itojunichi.zip" } + %img{:alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %p + %img{:alt => "Rubyに蝶", :width => "200", :height => "200", :src => "/2010/images/callforillustrations_yoshiokamaki.png"} + %br 吉岡真希 様 + %br - + %br + %a.noborder{ :href => "/2010/download/yoshiokamaki.zip" } + %img{:alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} diff --git a/app/views/pages/2010/CallForLightningTalkProposals.en.html.haml b/app/views/pages/2010/CallForLightningTalkProposals.en.html.haml new file mode 100644 index 00000000..4a5a6f4e --- /dev/null +++ b/app/views/pages/2010/CallForLightningTalkProposals.en.html.haml @@ -0,0 +1,58 @@ +%div#content + %h1 + RubyKaigi 2010: Call For Lightning Talk(LT) + %p + RubyKaigi 2010 is currently assembling proposals for Lightning Talks(LT). We're looking for talks on a wide range of topics, from demos of Ruby applications, to your opinions about Ruby itself, and so forth. Please apply if you're interested! + %h2 + About Lightning Talks on RubyKaigi 2010 + %p + We're planning to run a "standard" battery of 11 talks, each of strictly 5 minutes duration, in a solid 1 hour session. This session will be held in the afternoon of Day 2 (Saturday, August 28). + %p + Presentations will be selected from the proposals by the RubyKaigi 2010 Team. + %h2 + Regarding Tickets for Lightning Talk Speakers + %p + Please be aware that LT speakers will need tickets to attend the conference. If you are selected as an LT speaker, but were unable to purchase a ticket in advance, the committee shall make arrangements for you to purchase a ticket. + %p + NOTICE: We cannot make arrangements for RubyKaigi 2010 Official Conference Party. You need you own conference party admission if you'd like to attend. + %h2 + How to Submit a Proposal + %p + The applicant will need to submit the following information. + %ul + %li + name (or nickname), affiliation (company, user group etc), and e-mail address + %li + the title of your talk + %li + abstract of your talk (for usage during selection process. We will not make this to public.) + %li + Spoken language of presentation: English/Japanese (Ruby assumed) + %li + Do you have your own ticket for RubyKaigi 2010 Conference? + %li + Your Reject history on RubyKaigi (Presentation and/or Lightning Talk) + %li + Any additional information or special requirements + %p + By submitting a proposal, you give permission to RubyKaigi 2010 to record, edit, and publish audio and/or video of your presentation. If you do not wish to abide these conditions, please refrain from submitting a proposal. + %h2 + Important Dates + %ul + %li + Submission Deadline: 2010-07-19(Mon) 23:59:59 (JST) + %li + Announcement of selection results: 2010-07-27(Tue) + %h2 + Selection Process + %p + The presentations will be selected by RubyKaigi 2010 Team. + %h2 + Questions? + %p + If you have any questions, please email us at 2010 at rubykaigi.org + %div{:style=>'border:2px solid #8d8882;margin:30px 5px;padding:10px;font-size:24px;text-align:center;'} + %strike + %span{:style => 'font-weight:bold'} Submit A Talk Now! + %p + Submission Form was closed. Thanks so many submissions! diff --git a/app/views/pages/2010/CallForLightningTalkProposals.ja.html.haml b/app/views/pages/2010/CallForLightningTalkProposals.ja.html.haml new file mode 100644 index 00000000..9536d5dd --- /dev/null +++ b/app/views/pages/2010/CallForLightningTalkProposals.ja.html.haml @@ -0,0 +1,69 @@ +%div#content + %h1 + Ruby会議2010のライトニングトークスを募集します + %p + いわゆるライトニングトークスによるプレゼンテーションを募集します。 Rubyに関するアプリケーションのデモやRubyに関する主張、その他なんでも、発表したいことがある人はぜひご応募ください。 + %h2 + 日本Ruby会議2010のライトニングトークスについて + %p + ライトニングトークスは1時間で5分間のプレゼンテーションを11本行うオーソドックスなスタイルになる予定です。 日本Ruby会議2010のライトニングトークスは、会期2日目(8/28(土))の午後に大ホールと中ホールで並行して実施する予定です。 + %p + なお、応募者多数の場合は日本Ruby会議2010実行委員会の選考により各トラック11発表(最大で22発表)に絞ります。また、応募が少数の場合は大ホールでの1トラックになるかもしれません。 + %h2 + ライトニングトークス発表者の入場チケットについて + %p + ライトニングトークス発表者も入場チケットが必要です。もしも、事前にチケットを購入できなかった場合は、実費にてチケットの斡旋を行います。 + %p + 懇親会については、通常の参加者と同様です。つまり、特別に斡旋などはいたしません。 + %h2 + 応募方法 + %p + 応募には次のような項目が必要になります。 + %ul + %li + 発表者氏名(ニックネームでも可)、所属、メールアドレス + %ul + %li + 英語必須 + %li + タイトル + %ul + %li + 英語必須 + %li + 発表概要(発表選考に使います。公開はしません) + %ul + %li + 記述言語は日本語で構いません + %li + 発表で利用予定の自然言語(日本語、英語) + %li + RubyKaigi2010チケットの有無 + %li + これまでのRubyKaigiでのReject経験(発表またはライトニングトーク) + %li + その他、連絡事項 + %p + 発表に応募すると、写真撮影・講演動画の中継、録画の配信、発表資料の公開に同意したものと見做されます。同意されない方のご応募はご遠慮下さい。 + %p + 日本Ruby会議2010には多くの日本人以外の Rubyist が RubyKaigi に参加するため、発表者名やタイトルといった発表情報を英語で提供することにご協力ください。英語に自信が無い方は応募時にその旨お伝えください。スタッフができる範囲でお手伝いします。 + %h2 + 日程 + %ul + %li + 募集締切: 2010 年 7 月 19 日(月) 23:59:59 (JST) + %li + 募集結果発表: 2010 年 7 月 27 日(火) + %h2 + 選考方法 + %p + 日本Ruby会議2010実行委員会で選考のうえ、メールにてご連絡いたします。 + %h2 + お問い合わせ + %p + 何か不明な点があれば、2010 at rubykaigi.org までお気軽にお問い合わせください。 + %div{:style=>'border:2px solid #8d8882;margin:30px 5px;padding:10px;font-size:24px;text-align:center;'} + %strike + %span{:style => 'font-weight:bold'} 日本Ruby会議2010のライトニングトークスに応募する + %p + 募集は終了しました。たくさんのご応募、ありがとうございました! diff --git a/app/views/pages/2010/CallForPresentationProposals.html.haml b/app/views/pages/2010/CallForPresentationProposals.html.haml new file mode 100644 index 00000000..3772f5f3 --- /dev/null +++ b/app/views/pages/2010/CallForPresentationProposals.html.haml @@ -0,0 +1,54 @@ +#content + %h1 RubyKaigi 2010 Call for Presentation Proposals + %p + This is a call for presentation proposals for RubyKaigi 2010. We are interested in presentations on the following topics: + %ul + %li + Anything about the Ruby language + %p.spec + How to Submit a Proposal + %p + The applicant will need to submit the following information. + %ul + %li + name (or nickname), affiliation (company, user group etc), and e-mail address of the applicant(s) + %li + the title of the proposed presentation + %li + a short abstract of the proposed presentation (for use on schedules, etc if your proposal is accepted) + %li + a more detailed description of the proposed presentation (for usage during selection process. We will not make this to public.) + %li + preferred presentation duration: 30 min / 60 min / other (includes Q/A time) + %li + Spoken language of presentation: English/Japanese (Ruby assumed) + %li + nationality of the applicant(s) (for visa for entry into Japan) + %li + preferred day for presentation: August 27th / 28th / 29th / no preference. + %li + Any additional information or special requirements + %p + By submitting a proposal, you give permission to RubyKaigi 2010 to record, edit, and publish audio and/or video of your presentation. If you do not wish to abide these conditions, please refrain from submitting a proposal. + %p + We intend to use the title and abstract of your presentation in the conference pamphlet and other materials, so please write something that will appeal to your potential audience. + %p.spec + Important Dates + %ul + %li + Submission Deadline: Wednesday, 28th April, 2010 + %li + Announcement of selection results: During May, 2010 + %li + RubyKaigi 2010: Friday, 27th August - Sunday, 29th August + %p.spec + Selection Process + %p + The presentations will be selected by the staff of RubyKaigi 2010. + %p.spec + Questions? + %p + If you have any questions, please email us at 2010 at rubykaigi.org. + + %p + (Submission Form was closed. Thanks so many submissions!) diff --git a/app/views/pages/2010/CallForPresentationProposals.ja.html.haml b/app/views/pages/2010/CallForPresentationProposals.ja.html.haml new file mode 100644 index 00000000..88048563 --- /dev/null +++ b/app/views/pages/2010/CallForPresentationProposals.ja.html.haml @@ -0,0 +1,78 @@ +#content + %h1 日本Ruby会議2010での発表を募集します + %p + RubyKaigi2010 で発表を希望される方を募集いたします。募集するプレゼンテーションのテーマは以下のとおりです。 + %ul + %li + Ruby について、なんでも + %p.spec + 応募方法 + %p + 応募には次のような項目が必要になります。 + %ul + %li + 発表者氏名(ニックネームでも可)、所属、メールアドレス + %ul + %li + 英語必須 + %li + タイトル + %ul + %li + 英語必須 + %li + 発表概要(Webサイト・プログラムなどに掲載する公開用のもの) + %ul + %li + 英語必須(英語に自信がなければ「翻訳希望」と書いておいて下さい) + %li + 発表詳細(発表選考に使います。公開はしません) + %ul + %li + 記述言語は自由です + %li + 希望するプレゼン時間(30 分くらい・60 分くらい・それ以上) + %ul + %li + 質疑応答込みの時間です + %li + 基本的に、1 発表 60 分くらいを目安に考えています + %li + 発表で利用予定の自然言語(日本語、英語) + %li + パスポート上の国籍(ビザが必要な人について、発給手続円滑化のため) + %li + 希望する発表曜日(金、土、日、どれでも) + %li + その他、連絡事項 + %p + 発表に応募すると、写真撮影・講演動画の中継、録画の配信、発表資料の公開に同意したものと見做されます。同意されない方のご応募はご遠慮下さい。 + %p + タイトル、発表概要は原則としてパンフレットに掲載できるクオリティであることを期待しています。「あとで書く」はご遠慮下さい。 + %p + 多くの日本人以外の Rubyist が RubyKaigi に参加するため、英語での発表情報提供にご協力ください。英語に自信が無い方は応募時にその旨お伝えください。スタッフができる範囲でお手伝いします。 + %p + 今年は 2 トラック同時進行を予定しています。去年よりも発表件数が少なくなる予定です。ただ、発表応募とは別に企画応募もしていますので、そちらも是非検討して下さい。 + %p.spec + 日程 + %ul + %li + 募集締切: 2010 年 4 月 28 日(水) + %li + 募集結果発表: 2010 年 5 月 + %li + RubyKaigi2010: 2010 年 8 月 27 日(金)、28 日(土)、29日(日) + %p.spec + 選考方法 + %p + RubyKaigi2010 スタッフにより選考いたします。 + %p.spec + お問い合わせ + %p + 何か不明な点があれば、2010 at rubykaigi.org までお気軽にお問い合わせください。 + + %p + (募集は終了しました。多数のご応募ありがとうございました) + + .form_caution + 応募フォームは日本語・英語とで共用しているため、フォーム項目の記述が英語になっています。ご理解とご協力をお願いします。英語が得意ではない方については、スタッフができる範囲でお手伝いしますので、フォームにその旨を記入してください。 diff --git a/app/views/pages/2010/CallForSponsors.html.haml b/app/views/pages/2010/CallForSponsors.html.haml new file mode 100644 index 00000000..8e7b74a7 --- /dev/null +++ b/app/views/pages/2010/CallForSponsors.html.haml @@ -0,0 +1,11 @@ +#content + %h1 RubyKaigi 2010 is looking for Sponsors. + %p + RubyKaigi 2010 is seeking organizations to sponsor the conference. RubyKaigi is a highly international conference, attracting participants and speakers from many countries, including Japan, the United States, China, Australia, Germany, Canada, South Africa, Egypt, France and many others. RubyKaigi is a fantastic opportunity to promote your organization. + %p + For further details, please refer to the PDF linked below. Please direct all enquiries to 2010 AT rubykaigi.org + %h2 + %a{ :href => "/2010/files/rubykaigi2010_prospectus_en.pdf" } + RubyKaigi 2010: Sponsor Prospectus (PDF) + %p + Consider becoming a conference sponsor, and help us build a fantastic international Ruby conference. diff --git a/app/views/pages/2010/CallForSponsors.ja.html.haml b/app/views/pages/2010/CallForSponsors.ja.html.haml new file mode 100644 index 00000000..e7988870 --- /dev/null +++ b/app/views/pages/2010/CallForSponsors.ja.html.haml @@ -0,0 +1,12 @@ +#content + %h1 日本Ruby会議2010ではスポンサーを募集しています + %p (終了しました。たくさんのご支援ありがとうございました!) + %p + 日本Ruby会議2010ではカンファレンスのスポンサーを募集しております。日本Ruby会議2010には国内はもとより、世界中からRubyプログラマが参加します。絶好の露出の機会としても、ぜひご利用ください。 + %p + 詳細は以下のPDFにお目を通していただいたうえで、2010 at rubykaigi dot org までメールにてお気軽にお問い合わせください。 + %h2 + %a{ :href => "/2010/files/rubykaigi2010_prospectus_ja.pdf" } + 日本Ruby会議2010 スポンサーシップのご案内(PDF) + %p + 日本最大規模のRubyのカンファレンスを一緒につくっていただける皆さまからの応募を心よりお待ちしております。 diff --git a/app/views/pages/2010/CallForSubEventProposals.html.haml b/app/views/pages/2010/CallForSubEventProposals.html.haml new file mode 100644 index 00000000..a526eab2 --- /dev/null +++ b/app/views/pages/2010/CallForSubEventProposals.html.haml @@ -0,0 +1,80 @@ +#content + %h1 + RubyKaigi 2010 Call for Sub-Event Proposals + %p + RubyKaigi is seeking sub-event proposals for RubyKaigi 2010. If you have an idea that doesn't fit the usual "presentation" format and would like to run it as part of RubyKaigi 2010 in Tsukuba, Japan this year, we'd love to hear from you. + %p.spec{ :style => "margin-top:20px" } + So, what is a sub-event? + %p + Here are a few events that have been held at RubyKaigi and other Ruby conferences in the past that we consider to be good examples of a "sub-event". + %ul + %li + JRubyConf: A conference focused on JRuby, held after RubyConf 2009 at the same venue. + %li + RubyConf5k: A 5km running(!) race held during RubyConf 2009 + %li + Regional RubyKaigi Kaigi: An open meeting ("kaigi") held at RubyKaigi 2009 where Regional conference organizers got together to discuss the organization of regional events + %li + Mini-conferences focused on individual open source Ruby projects: mini-conferences for tDiary, jpmobile and Termtter were held during RubyKaigi 2009 + %li + Ruby Implementors meeting, a gathering for Ruby committers and implementors held during RubyKaigi 2008 + %li + Workshops and hackathons: hands-on Ruby on Rails, Origami tutorials, etc + %p.spec + How to Submit a Proposal + %p + The applicant will need to submit the following information. + %ul + %li + Title of the event + %li + Name, affiliation and e-mail address of the organizer/instructor(s) + %li + Description of the event + %li + Expected number of participants (for planning rooms and layout) + %ul + %li + We plan to use (subdivide) Conference Room 201 for sub-events. + %li + See + %a{ :href => "http://www.epochal.or.jp/eng/floor_guide/index.html" } + http://www.epochal.or.jp/eng/floor_guide/index.html + for detail + %li + Any required equipment + %li + proposed length of the event in hours (up to 6 hours) + %li + Any additional information + %p + We are looking forward to getting some interesting proposals! + %p.spec + Some ground rules... + %ul + %li + We plan to provide several desks and a projector for each sub-event. We may be able to provide Wi-Fi internet access, but we can't guarantee its availability. + %li + You are responsible to prepare and clean up the room for your event. RubyKaigi 2010 staff will not be available to assist your preparation or cleanup. + %li + We might hold a meeting for sub-event organizers in advance of RubyKaigi 2010. We would appreciate it if you were able to attend. + %p.spec + Important Dates + %ul + %li + Submission Deadline: Wednesday, 28th April, 2010 + %li + Announcement of selection results: During May, 2010 + %li + RubyKaigi 2010: Friday, 27th August - Sunday, 29th August + %p.spec + Selection Process + %p + The sub-events will be selected by the staff of RubyKaigi 2010. + %p.spec + Questions? + %p + If you have any questions, please email us at 2010 at rubykaigi.org. + %h2 + %a{ :href => "https://spreadsheets.google.com/a/rubykaigi.org/viewform?formkey=dHRoTWxfUHVQbS1OTU5kd2ZHRzN1aWc6MA" } + Submit A Sub-Event Now! diff --git a/app/views/pages/2010/CallForSubEventProposals.ja.html.haml b/app/views/pages/2010/CallForSubEventProposals.ja.html.haml new file mode 100644 index 00000000..b87d26c0 --- /dev/null +++ b/app/views/pages/2010/CallForSubEventProposals.ja.html.haml @@ -0,0 +1,97 @@ +#content + %h1 + 日本Ruby会議2010での「企画」を募集します + %p + RubyKaigi2010 では通常発表だけでなく、企画の募集を行います。企画の内容はRuby に関連していればどのようなものでも構いません。 + %p + 企画の例: + %ul + %li + JRubyConf: RubyConf2009 と時期を合わせて行われた、JRuby に関するイベント + %li + 5krun: RubyConf2009 の会場周辺でおこなわれた早朝のジョギング + %li + 地域Ruby会議会議: RubyKaigi2009 で行われた、地域 Ruby 会議を今後どうやっていくかを話し合うイベント + %li + tDiary会議: RubyKaigi2009 で行われた、tDiary の開発者と利用者が交流するイベント + %li + 田舎Ruby親方会議: RubyKaigi2009 で行われた、東京以外で Ruby をビジネスに活用している経営者の親睦を深める会 + %li + Termtter会議: RubyKaigi2009 で行われた、Termtter のハッカソン + %li + toRuby出張版: RubyKaigi2009 で行われた、toRuby の勉強会 + %li + jpmobile会議: RubyKaigi2008 で行われた、jpmobile 開発者の悩みを聞いてあげる会合 + %li + Ruby開発者会議: RubyKaigi2008 などで行われた、Ruby 開発者が今後の Ruby 開発に関する議論を行うイベント + %li + ワークショップ企画: 東京RubyKaigi03 で行われる予定の、Rails のハンズオンや、折り紙のチュートリアル + %p.spec + 応募方法 + %p + 応募には次のような項目が必要になります。 + %ul + %li + 企画名(〜会議で終わる必要はありません) + %ul + %li + 英語必須 + %li + 企画責任者(名前, 所属, メールアドレス) + %li + 企画概要 + %ul + %li + 英語必須。サポートします + %li + 参加人数見積り(部屋割りの参考にします) + %ul + %li + 2F 中会議室をあてる予定です + %li + フロアガイド + %a{ :href => "http://www.epochal.or.jp/floor_guide/index.html" }http://www.epochal.or.jp/floor_guide/index.html + %li + 必要な設備 + %li + 希望する開催曜日(金、土、日、どれでも) + %li + 必要な時間(1時間単位。最大6時間) + %li + その他、連絡事項 + %p + 楽しい企画のご応募を期待しています。 + %p.spec + 注意事項 + %ul + %p + 多くの日本人以外の Rubyist が RubyKaigi に参加するため、英語での発表情報提供にご協力ください。英語に自信が無い方は応募時にその旨お伝えください。スタッフができる範囲でお手伝いします。 + %p + 設備は、机、プロジェクタは必ず用意する予定です。ネットワーク(無線Lan接続)は、多分用意する予定ですが、確約はできません。その他、必要な設備があれば準備できるものなら準備します。 + %p + 当日の机の配置などの準備、および後始末は、基本的に企画責任者に責任をもって行ってもらいます。RubyKaigi2010 のスタッフは、基本的にはお手伝いしませんのでご了承下さい。 + %p + 事前にRuby会議会議(企画責任者会議)を開催するかもしれません(開催地は東京の予定です)。その場合には、可能な範囲で出席していただけると助かります。 + %p.spec + 日程 + %ul + %li + 募集締切: 2010 年 4 月 28 日(水) + %li + 募集結果発表: 2010 年 5 月 + %li + RubyKaigi2010: 2010 年 8 月 27 日(金)、28 日(土)、29日(日) + %p.spec + 選考方法 + %p + RubyKaigi2010 スタッフにより選考いたします。 + %p.spec + お問い合わせ + %p + 何か不明な点があれば、2010 at rubykaigi.org までお気軽にお問い合わせください。 + %h2 + %a{ :href => "https://spreadsheets.google.com/a/rubykaigi.org/viewform?formkey=dHRoTWxfUHVQbS1OTU5kd2ZHRzN1aWc6MA" } + RubyKaigi2010の企画(Sub-Event)に応募する + + .form_caution + 応募フォームは日本語・英語とで共用しているため、フォーム項目の記述が英語になっています。ご理解とご協力をお願いします。英語が得意ではない方については、スタッフができる範囲でお手伝いしますので、フォームにその旨を記入してください。 diff --git a/app/views/pages/2010/CallForVolunteerStaffs.ja.html.haml b/app/views/pages/2010/CallForVolunteerStaffs.ja.html.haml new file mode 100644 index 00000000..fd5f5c73 --- /dev/null +++ b/app/views/pages/2010/CallForVolunteerStaffs.ja.html.haml @@ -0,0 +1,49 @@ +%div#content + %h1 + 当日スタッフ募集について + %h2 + "I WANT YOU for RubyKaigi2010" + %p + 日本 Ruby 会議 2010では、若干名の当日スタッフを募集します。当日の設営・準備から会期中の進行のサポート、終了後の撤収をつつがなく行えるようにするためのサポートスタッフ、ならびに KaigiFreaks としてセッションや会場の様子を録画・配信・レポートでお届けするお仕事です。 + %p + 以下にあります当日スタッフの位置付けと応募方法、〆切の案内に目を通していただいた上で、ご応募ください。採用可否はメールで連絡さしあげます。 + %p + Ruby以外のコミュニティの方でも、RubyKaigi の運営や配信ノウハウに興味のある方の応募を歓迎します。 + %p + ご応募お待ちしています。 + %h3 + 当日スタッフの位置づけ + %ul + %li 完全ボランティア。スタッフTシャツは支給しますが、金銭的報酬はありません。交通費支給は学生のみとなります。 + %li チケットを購入することなく RubyKaigi 2010 に参加できます。 + %li でも、仕事によっては見れない発表があることも。 + %li 大規模イベントの運営や進行を体験することができます。また、KaigiFreaks となった場合には日本有数のスタッフによる録画配信の技術を学ぶことができます。 + %li 前日(8/26(木))の準備から手伝ってくれると嬉しいですが、必須ではありません。 + %li 事前に都内で打ち合わせをやるかもしれません(やらないかもしれません)。参加は必須ではありません。 + %h3 + 応募方法 + %p + 応募には次のような項目が必要になります。 + %ul + %li お名前 + %li メールアドレス(返信可能なメールアドレスの使用をお願いします) + %li お住まい(だいたいで結構です。事前打ち合わせの参加規模を調査するためです) + %li 希望する役割 (サポートスタッフ・KaigiFreaks・どちらでも) + %li 参加可能な日程 (8/26(木)夜・8/27(金)・8/28(土)・8/29(日)) + %li ひとこと + %h3 + 日程 + %ul + %li 応募締切: 2010 年 6 月 5 日(土) + %li 採用結果通知: 2010 年 6 月上旬 + %h3 + お問い合わせ + %p + 何か不明な点があれば、2010 at rubykaigi.org までお気軽にお問い合わせください。 + %div{:style=>'border:2px solid #8d8882;margin:30px 5px;padding:10px;font-size:24px;text-align:center;'} + %strike + %span{:style => 'font-weight:bold'} RubyKaigi2010の当日スタッフに応募する + 締め切りました + %p + たくさんのご応募、ありがとうございました! + diff --git a/app/views/pages/2010/Goodies.html.haml b/app/views/pages/2010/Goodies.html.haml new file mode 100644 index 00000000..599aa712 --- /dev/null +++ b/app/views/pages/2010/Goodies.html.haml @@ -0,0 +1,257 @@ +#content + %h1 Goodies + %p You can download wallpapers and various files of RubyKaigi 2010. + %h2 Wallpapers (for desktop) + %div.download + %img{ :alt => "", :widht => "400", :height => "250", :src => "/2010/images/goodies_nari_r_thumb.jpg"} + %dl + %dt + 1920 x 1200 + %dd + %a.noborder{ :href => "/2010/download/nari_R1920x1200.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1600 x 1200 + %dd + %a.noborder{ :href => "/2010/download/nari_R1600x1200.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1440 x 900 + %dd + %a.noborder{ :href => "/2010/download/nari_R1440x900.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1280 x 800 + %dd + %a.noborder{ :href => "/2010/download/nari_R1280x800.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1024 x 768 + %dd + %a.noborder{ :href => "/2010/download/nari_R1024x768.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %p.author + Author:nari, + URL: + %a{ :href => "http://www.narihiro.info/", :target => "_blank"}> http://www.narihiro.info/ + , License: + %a{ :href => "http://creativecommons.org/licenses/by/3.0/", :rel => "license", :target => "_blank"}> CC-by-3.0 + %hr + %div.download + %img{ :alt => "", :widht => "400", :height => "250", :src => "/2010/images/goodies_nari_b_thumb.jpg"} + %dl + %dt + 1920 x 1200 + %dd + %a.noborder{ :href => "/2010/download/nari_B1920x1200.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1600 x 1200 + %dd + %a.noborder{ :href => "/2010/download/nari_B1600x1200.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1440 x 900 + %dd + %a.noborder{ :href => "/2010/download/nari_B1440x900.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1280 x 800 + %dd + %a.noborder{ :href => "/2010/download/nari_B1280x800.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1024 x 768 + %dd + %a.noborder{ :href => "/2010/download/nari_B1024x768.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %p.author + Author:nari, + URL: + %a{ :href => "http://www.narihiro.info/", :target => "_blank"}> http://www.narihiro.info/ + , License: + %a{ :href => "http://creativecommons.org/licenses/by/3.0/", :rel => "license", :target => "_blank"}> CC-by-3.0 + %hr + %div.download + %img{ :alt => "", :widht => "400", :height => "250", :src => "/2010/images/goodies_norio_a_thumb.jpg"} + %dl + %dt + 2560 x 1440 + %dd + %a.noborder{ :href => "/2010/download/norio_A2560x1440.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1920 x 1200 + %dd + %a.noborder{ :href => "/2010/download/norio_A1920x1200.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1600 x 1200 + %dd + %a.noborder{ :href => "/2010/download/norio_A1600x1200.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1440 x 900 + %dd + %a.noborder{ :href => "/2010/download/norio_A1440x900.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1280 x 800 + %dd + %a.noborder{ :href => "/2010/download/norio_A1280x800.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1024 x 768 + %dd + %a.noborder{ :href => "/2010/download/norio_A1024x768.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %p.author + Author:norio, + URL: + %a{ :href => "http://twitter.com/norio", :target => "_blank"}> http://twitter.com/norio + , License: + %a{ :href => "http://creativecommons.org/licenses/by/3.0/", :rel => "license", :target => "_blank"}> CC-by-3.0 + %hr + %div.download + %img{ :alt => "", :widht => "400", :height => "250", :src => "/2010/images/goodies_norio_b_thumb.jpg"} + %dl + %dt + 2560 x 1440 + %dd + %a.noborder{ :href => "/2010/download/norio_B2560x1440.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1920 x 1200 + %dd + %a.noborder{ :href => "/2010/download/norio_B1920x1200.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1600 x 1200 + %dd + %a.noborder{ :href => "/2010/download/norio_B1600x1200.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1440 x 900 + %dd + %a.noborder{ :href => "/2010/download/norio_B1440x900.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1280 x 800 + %dd + %a.noborder{ :href => "/2010/download/norio_B1280x800.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1024 x 768 + %dd + %a.noborder{ :href => "/2010/download/norio_B1024x768.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %p.author + Author:norio, + URL: + %a{ :href => "http://twitter.com/norio", :target => "_blank"}> http://twitter.com/norio + , License: + %a{ :href => "http://creativecommons.org/licenses/by/3.0/", :rel => "license", :target => "_blank"}> CC-by-3.0 + %h2 Wallpapers (for iPhone) + %p + %a.mark{:href => "http://www.quanp.com/ruby/"} Limited Edition RubyKaigi2010 iPhone Wallpaper presented by RICOH. + %h2 Badges (for blog) + %div#badge + %p + %a.tip + %img{:alt => "ATTENDEE", :width => "160", :height => "201", :src => "/2010/badge/attendee.png"} + %br For attendee + %span Put this badge on your site to show that you will attend RubyKaigi 2010 + %p + %a.tip + %img{:alt => "ATTENDEE(Away)", :width => "160", :height => "201", :src => "/2010/badge/away.png"} + %br For attendee (Away) + %span Put this badge on your site to show that you will attend RubyKaigi 2010 away from the venue + %p + %a.tip + %img{:alt => "SPEAKER", :width => "160", :height => "201", :src => "/2010/badge/speaker.png"} + %br For speaker + %span Put this badge on your site to show that you will speak at RubyKaigi 2010 + %p + %a.tip + %img{:alt => "COMMITTER", :width => "160", :height => "201", :src => "/2010/badge/committer.png"} + %br For committer + %span Put this badge on your site if you are a Ruby commiter and will attend RubyKaigi 2010 + %p + %a.tip + %img{:alt => "INDIVIDUAL SPONSOR", :width => "160", :height => "201", :src => "/2010/badge/individual_sponsor.png"} + %br For individual sponsor + %span Put this badge on your site to show that you are an individual sponsor for RubyKaigi 2010 + %p + %a.tip + %img{:alt => "SPONSOR", :width => "160", :height => "201", :src => "/2010/badge/sponsor.png"} + %br For sponsor + %span This is the web badge for RubyKaigi 2010 sponsors. + %p + %a.tip + %img{:alt => "STAFF", :width => "160", :height => "201", :src => "/2010/badge/staff.png"} + %br For staff + %span Let's enjoy RubyKaigi 2010! + %h2.clear Official logo files + %div.download + %img{ :alt => "", :width => "400", :height => "250", :src => "/2010/images/goodies_officiallogo_thumb.jpg"} + %dl + %dt + EPS+AI+SVG + %dd + %a.noborder{ :href => "/2010/download/official_logo_set.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %p.author + Author:norio, + URL: + %a{ :href => "http://twitter.com/norio", :target => "_blank"}> http://twitter.com/norio + , License: + %a{ :href => "http://creativecommons.org/licenses/by/3.0/", :rel => "license", :target => "_blank"}> CC-by-3.0 + %h2.clear BGM + %div#bgm + %ul + %li + the soundtrack to why's (poignant) guide to ruby + %ul + %li + %a{ :href => "http://poignantguide.net/sdtrk/", :target => "_blank"}> Introducing... + %li + RubyKaigi original soundtrack + %ul + %li + %a{ :href => "http://andworkspace.net/kuramu/", :target => "_blank"}> Open up a map - Kuramu + %li + %a{ :href => "http://andworkspace.net/kuramu/", :target => "_blank"}> Lifting of the closure - hi-ku + %li + JAHTARI (label) + %ul + %li + %a{ :href => "http://www.jahtari.org/music/ik.htm", :target => "_blank"}> International Karate Championship - disrupt + %li + %a{ :href => "http://www.jahtari.org/music/JTR%20NET16.htm", :target => "_blank"}> Samurai Showdown / Last Blade - disrupt + %li + %a{ :href => "http://www.jahtari.org/music/JTR%20NET08.htm", :target => "_blank"}> Arcade Addict - disrupt + %li + %a{ :href => "http://www.jahtari.org/music/JTR%20NET06.htm", :target => "_blank"}> Bauhelm Dub - disrupt + %li + %a{ :href => "http://www.jahtari.org/music/JTR%20NET04.htm", :target => "_blank"}> Central Dubbing Unit - disrupt + %li + %a{ :href => "http://www.jahtari.org/music/JTRNET20.htm", :target => "_blank"}> London City - El Fata + %li + %a{ :href => "http://www.jahtari.org/music/JTRNET19.htm", :target => "_blank"}> Bring Di Sensi - Zeb & Scotty + %li + %a{ :href => "http://www.jahtari.org/music/JTRNET19.htm", :target => "_blank"}> Bomb Their Circles - Dressla + %li + %a{ :href => "http://www.jahtari.org/music/JTRNET18.htm", :target => "_blank"}> Breeze Blow - Wheeler + %li + %a{ :href => "http://www.jahtari.org/music/JTRNET18.htm", :target => "_blank"}> Turtle Riddim (7") - Maffi + %li + %a{ :href => "http://www.jahtari.org/music/JTRNET17.htm", :target => "_blank"}> The Brink Of Destruction - disrupt + %li + %a{ :href => "http://www.jahtari.org/music/JTRNET17.htm", :target => "_blank"}> Bit Defender - disrupt + %li + Jamendo.com + %ul + %li + %a{ :href => "http://www.jamendo.com/en/playlist/124718", :target => "_blank"} Rubykaigi2009/2010 Playlist + %div +    diff --git a/app/views/pages/2010/Goodies.ja.html.haml b/app/views/pages/2010/Goodies.ja.html.haml new file mode 100644 index 00000000..9e8eb127 --- /dev/null +++ b/app/views/pages/2010/Goodies.ja.html.haml @@ -0,0 +1,258 @@ +#content + %h1 おまけ + %p Ruby会議2010のオリジナル壁紙や各種ファイルをダウンロードいただけます。 + %h2 デスクトップ用壁紙 + %div.download + %img{ :alt => "", :widht => "400", :height => "250", :src => "/2010/images/goodies_nari_r_thumb.jpg"} + %dl + %dt + 1920 x 1200 + %dd + %a.noborder{ :href => "/2010/download/nari_R1920x1200.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1600 x 1200 + %dd + %a.noborder{ :href => "/2010/download/nari_R1600x1200.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1440 x 900 + %dd + %a.noborder{ :href => "/2010/download/nari_R1440x900.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1280 x 800 + %dd + %a.noborder{ :href => "/2010/download/nari_R1280x800.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1024 x 768 + %dd + %a.noborder{ :href => "/2010/download/nari_R1024x768.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %p.author + Author:nari, + URL: + %a{ :href => "http://www.narihiro.info/", :target => "_blank"}> http://www.narihiro.info/ + , License: + %a{ :href => "http://creativecommons.org/licenses/by/3.0/", :rel => "license", :target => "_blank"}> CC-by-3.0 + %hr + %div.download + %img{ :alt => "", :widht => "400", :height => "250", :src => "/2010/images/goodies_nari_b_thumb.jpg"} + %dl + %dt + 1920 x 1200 + %dd + %a.noborder{ :href => "/2010/download/nari_B1920x1200.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1600 x 1200 + %dd + %a.noborder{ :href => "/2010/download/nari_B1600x1200.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1440 x 900 + %dd + %a.noborder{ :href => "/2010/download/nari_B1440x900.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1280 x 800 + %dd + %a.noborder{ :href => "/2010/download/nari_B1280x800.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1024 x 768 + %dd + %a.noborder{ :href => "/2010/download/nari_B1024x768.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %p.author + Author:nari, + URL: + %a{ :href => "http://www.narihiro.info/", :target => "_blank"}> http://www.narihiro.info/ + , License: + %a{ :href => "http://creativecommons.org/licenses/by/3.0/", :rel => "license", :target => "_blank"}> CC-by-3.0 + %hr + %div.download + %img{ :alt => "", :widht => "400", :height => "250", :src => "/2010/images/goodies_norio_a_thumb.jpg"} + %dl + %dt + 2560 x 1440 + %dd + %a.noborder{ :href => "/2010/download/norio_A2560x1440.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1920 x 1200 + %dd + %a.noborder{ :href => "/2010/download/norio_A1920x1200.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1600 x 1200 + %dd + %a.noborder{ :href => "/2010/download/norio_A1600x1200.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1440 x 900 + %dd + %a.noborder{ :href => "/2010/download/norio_A1440x900.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1280 x 800 + %dd + %a.noborder{ :href => "/2010/download/norio_A1280x800.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1024 x 768 + %dd + %a.noborder{ :href => "/2010/download/norio_A1024x768.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %p.author + Author:norio, + URL: + %a{ :href => "http://twitter.com/norio", :target => "_blank"}> http://twitter.com/norio + , License: + %a{ :href => "http://creativecommons.org/licenses/by/3.0/", :rel => "license", :target => "_blank"}> CC-by-3.0 + %hr + %div.download + %img{ :alt => "", :widht => "400", :height => "250", :src => "/2010/images/goodies_norio_b_thumb.jpg"} + %dl + %dt + 2560 x 1440 + %dd + %a.noborder{ :href => "/2010/download/norio_B2560x1440.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1920 x 1200 + %dd + %a.noborder{ :href => "/2010/download/norio_B1920x1200.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1600 x 1200 + %dd + %a.noborder{ :href => "/2010/download/norio_B1600x1200.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1440 x 900 + %dd + %a.noborder{ :href => "/2010/download/norio_B1440x900.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1280 x 800 + %dd + %a.noborder{ :href => "/2010/download/norio_B1280x800.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %dt + 1024 x 768 + %dd + %a.noborder{ :href => "/2010/download/norio_B1024x768.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %p.author + Author:norio, + URL: + %a{ :href => "http://twitter.com/norio", :target => "_blank"}> http://twitter.com/norio + , License: + %a{ :href => "http://creativecommons.org/licenses/by/3.0/", :rel => "license", :target => "_blank"}> CC-by-3.0 + %h2 iPhone用壁紙 + %p + %a.mark{:href => "http://www.quanp.com/ruby/"} リコー様提供 日本Ruby会議2010限定オリジナルiPhone壁紙はこちら + %h2 ブログ用バッヂ + %div#badge + %p + %a.tip + %img{:alt => "ATTENDEE", :width => "160", :height => "201", :src => "/2010/badge/attendee.png"} + %br 参加者用 + %span 日本Ruby会議2010に参加される方はご自分のサイトに貼りましょう! + %p + %a.tip + %img{:alt => "ATTENDEE(Away)", :width => "160", :height => "201", :src => "/2010/badge/away.png"} + %br 参加者用(Away) + %span 日本Ruby会議2010に会場より遠く離れた場所からUst経由等で参加される方はこちらをどうぞ + %p + %a.tip + %img{:alt => "SPEAKER", :width => "160", :height => "201", :src => "/2010/badge/speaker.png"} + %br スピーカー用 + %span 日本Ruby会議2010でスピーカーとして参加される方用 + %p + %a.tip + %img{:alt => "COMMITTER", :width => "160", :height => "201", :src => "/2010/badge/committer.png"} + %br コミッター用 + %span 日本Ruby会議2010に参加されるコミッター用 + %p + %a.tip + %img{:alt => "INDIVIDUAL SPONSOR", :width => "160", :height => "201", :src => "/2010/badge/individual_sponsor.png"} + %br 個人スポンサー用 + %span 日本Ruby会議2010の個人スポンサー用 + %p + %a.tip + %img{:alt => "SPONSOR", :width => "160", :height => "201", :src => "/2010/badge/sponsor.png"} + %br 企業スポンサー用 + %span 日本Ruby会議2010の企業スポンサー用 + %p + %a.tip + %img{:alt => "STAFF", :width => "160", :height => "201", :src => "/2010/badge/staff.png"} + %br スタッフ用 + %span たのしい日本Ruby会議2010をつくりましょう! + %h2.clear 公式ロゴセット + %div.download + %img{ :alt => "", :width => "400", :height => "250", :src => "/2010/images/goodies_officiallogo_thumb.jpg"} + %dl + %dt + EPS+AI+SVG + %dd + %a.noborder{ :href => "/2010/download/official_logo_set.zip" } + %img{ :alt => "DOWNLOAD", :width => "110", :height => "30", :src => "/2010/images/download_btn.png"} + %p.author + Author:norio, + URL: + %a{ :href => "http://twitter.com/norio", :target => "_blank"}> http://twitter.com/norio + , License: + %a{ :href => "http://creativecommons.org/licenses/by/3.0/", :rel => "license", :target => "_blank"}> CC-by-3.0 + %h2.clear 会場BGM (全曲ダウンロードできます) + %div#bgm + %ul + %li + the soundtrack to why's (poignant) guide to ruby + %ul + %li + %a{ :href => "http://poignantguide.net/sdtrk/", :target => "_blank"}> Introducing... + %li + RubyKaigiオリジナル + %ul + %li + %a{ :href => "http://andworkspace.net/kuramu/", :target => "_blank"}> Open up a map - Kuramu + %li + %a{ :href => "http://andworkspace.net/kuramu/", :target => "_blank"}> Lifting of the closure - hi-ku + %li + JAHTARI (レーベル) + %ul + %li + %a{ :href => "http://www.jahtari.org/music/ik.htm", :target => "_blank"}> International Karate Championship - disrupt + %li + %a{ :href => "http://www.jahtari.org/music/JTR%20NET16.htm", :target => "_blank"}> Samurai Showdown / Last Blade - disrupt + %li + %a{ :href => "http://www.jahtari.org/music/JTR%20NET08.htm", :target => "_blank"}> Arcade Addict - disrupt + %li + %a{ :href => "http://www.jahtari.org/music/JTR%20NET06.htm", :target => "_blank"}> Bauhelm Dub - disrupt + %li + %a{ :href => "http://www.jahtari.org/music/JTR%20NET04.htm", :target => "_blank"}> Central Dubbing Unit - disrupt + %li + %a{ :href => "http://www.jahtari.org/music/JTRNET20.htm", :target => "_blank"}> London City - El Fata + %li + %a{ :href => "http://www.jahtari.org/music/JTRNET19.htm", :target => "_blank"}> Bring Di Sensi - Zeb & Scotty + %li + %a{ :href => "http://www.jahtari.org/music/JTRNET19.htm", :target => "_blank"}> Bomb Their Circles - Dressla + %li + %a{ :href => "http://www.jahtari.org/music/JTRNET18.htm", :target => "_blank"}> Breeze Blow - Wheeler + %li + %a{ :href => "http://www.jahtari.org/music/JTRNET18.htm", :target => "_blank"}> Turtle Riddim (7") - Maffi + %li + %a{ :href => "http://www.jahtari.org/music/JTRNET17.htm", :target => "_blank"}> The Brink Of Destruction - disrupt + %li + %a{ :href => "http://www.jahtari.org/music/JTRNET17.htm", :target => "_blank"}> Bit Defender - disrupt + %li + Jamendo登録アーティスト楽曲 + %ul + %li + %a{ :href => "http://www.jamendo.com/en/playlist/124718", :target => "_blank"} Rubykaigi2009/2010 Playlist + %div +    + diff --git a/app/views/pages/2010/Information.en.html.haml b/app/views/pages/2010/Information.en.html.haml new file mode 100644 index 00000000..92a7c560 --- /dev/null +++ b/app/views/pages/2010/Information.en.html.haml @@ -0,0 +1,76 @@ +#content + %h1 Useful Information for RubyKaigi 2010 Attendees + + %h2 Wi-Fi Internet Access + + %p A free Wi-Fi Internet access will be provided at the conference venue. We will provide IEEE 802.11a and IEEE 802.11b/g access points in the conference rooms (Main Convention Hall, Convention Hall 200, 202-B, 202-A, 201-B and 201-A) and hallway. Because the network resources are very limited, please keep the following in mind: + %ul + %li Please avoid using applications that would consume lots of bandwidth such as watching streaming videos. + %li Please use one device at a time. + %li Please try not to establish lots of TCP sessions at a time. + %li For the effective use of wireless bandwidth, please do not activate your mobile router in the venue. + %li We also ask you to disable Ad-hoc mode on your devices. Please switch off Internet Connection Sharing. + + %p The SSIDs for Wi-Fi access are "RK10-abg" (IEEE 802.11a/b/g) and "RK10-a" (IEEE 802.11a). + + %p The encryption method for Wi-Fi access is set to WPA/WPA2 (personal) and AES. The password will be announced in the venue. + + %p The outbound connections are restricted. Commonly used ports such as http, https, smtp, and pop3 are opened. Also, we are negotiating to open up some ports such as ssh, irc, svn, and git. + + %p You can use Wi-Fi access that is provided by Tsukuba International Congress Center. However, it has more strict access policy. + + %h2 Power outlets + + %p We will provide power outlet spot around the entrance of the main convention hall. + + %p There are a few seats with desks and power outlets in the main convention hall and convention hall 200. Please share with other attendees. + + %p There are not enough power outlets for all, please share with others. If you plan to use your devices such as laptop computer, please consider brining extra batteries or such. + + %p For attendees from outside of Japan, please keep in mind that domestic electricity in eastern Japan (including Tokyo) is 100V/50Hz. Most computer transformers can accommodate a wide range of voltages and frequencies, but please check to be sure. Most outlets will be for Japanese 2-pin flat blade plugs, although a limited number may be 3-pin flat blade plugs with a round grounding pin (North American). Please bring an appropriate adapter. + + %h2 Drinking and eating at the venue + + %ul + %li Drinking and eating in the main convention hall and convention hall 200 are prohibited. + %li Free drinks will be provided at Café Liberté next to the main convention hall. + %li There are several vending machines at the venue. In the past RubyKaigi, vending machines became sold out during the conferences. We suggest you to bring your favoirte drinks. + + %h2 Please cooperate to bring your rubbish back to home + + %p We would like to ask you to bring back your rubbish such as empty drink containers and bento leftovers. Thank you for your cooperation. + + %h2 Eateries around the conference venue + + %p There will be a eateries map available at the conference reception. + + %p Please check out the search result by the Tabelog (http://tabelog.com) as well. + %ul + %li + %a{:href => "http://r.tabelog.com/rst/rstmap?clon=140.11643171310425&clat=36.0757075297531&lz=1&LstCat=&LstCatD=&LstCatSD=&LstRev=undefined&LstCnt=0&sw=&LstSitu=undefined&LstCosT=0&LstCos=0&RdoCosTp=2&PG=1"} Eateries map by Tabelog + + %h2 If you feel sick... + + %p Please do not hesitate to contact nearby RubyKaigi staff if you require an assistance. The link below is the listing of local hospitals around the venue in case that you might go to see doctors by yourself. + %ul + %li + %a{:href => 'http://translate.google.com/translate?hl=en&sl=ja&tl=en&u=http%3A%2F%2Fhospital.health.goo.ne.jp%2Fibaraki%3Fprov%3D3%26lin%3D405%26sta%3D080069'} The listing of local hospitals by goo health care (translation by Google Translate) + + %h2 Luggages + + %p We will not provide cloak room facilities. Even there are quite a few baggage lockers available at the venue, we suggest you not to bring big luggage. + + %h2 Miscellaneous information + + %p There is a mailing list for RubyKaigi attendees from outside of Japan. Pleas see the link below. + %ul + %li + %a{:href => "http://qwik.atdot.net/rubykaigi2010overseas/"} RubyKaigi 2010 Travellers ML + + %p If you are coming from outside of Japan and look for a pre-paid or rental SIM, please check out the links below. Please note that we are not endorsing any shops described below. + %ul + %li + %a{:href => "http://www.softbank-rental.jp/en/index.php"} http://www.softbank-rental.jp/en/index.php + %li + %a{:href => "http://www.softbank-rental.jp/en/phones/sim3g.php"} http://www.softbank-rental.jp/en/phones/sim3g.php + diff --git a/app/views/pages/2010/Information.ja.html.haml b/app/views/pages/2010/Information.ja.html.haml new file mode 100644 index 00000000..40557253 --- /dev/null +++ b/app/views/pages/2010/Information.ja.html.haml @@ -0,0 +1,67 @@ +#content + %h1 参加者向け情報 + + %h2 会場での無線LANの使用について + + %p 会場では無料の無線によるインターネット接続を提供します。具体的には、 IEEE 802.11a および IEEE 802.11b/g 対応の無線アクセスポイントを大ホール、中ホール200、202-B、202-A、201-B、201-Aおよび廊下に用意しています。どうぞご利用ください。なお、会場のネットワーク資源は有限ですので、以下の点にご協力ください。 + %ul + %li ストリーミングの視聴等、帯域を消費するアプリケーションの利用はお控えください。 + %li IPを多数使用しないでください。特に携帯端末等、複数のデバイスでの接続はお控えください。 + %li TCPセッションを多数消費しないでください。 + %li 無線帯域を有効に活用するため、モバイルルータ等でアクセスポイントを立ち上げるのはお控えください。 + %li アドホックモードのご利用、インターネット接続共有機能等のご利用はご遠慮ください。 + + %p SSID は RK10-abg または RK10-a です。RK10-abg は IEEE 802.11a/b/g 対応、RK10-a は IEEE 802.11a 専用のアクセスポイントです。 + + %p 会場のネットワークは WPA/WPA2(パーソナル), AES に設定されています。パスワードは会場で別途アナウンスします。 + + %p 会場内ネットワークから外に出るポートは http, https, smtp, pop3 等主要なものを除いて制限されていますが、RubyKaigiの参加者がよく使いそうなポートについては利用できるように会場と調整を進めています(ssh, irc, svn, gitなど)。 + + %p つくば国際会議場が提供する無線アクセスポイントも利用することができます。ただし、RubyKaigi 用アクセスポイントよりもポート等の制約が厳しいことに留意ください。 + + + %h2 会場内の電源コンセントについて + + %p 会場にノートパソコンや携帯機器を持ち込む方が多くいらっしゃるかと思います。 + + %p 大ホール入り口周辺に給電所(充電コーナー)を設ける予定ですのでご利用下さい。 + + %p 大ホールと中ホール200の前方中央には机と電源の完備された席を用意しておりますが、席数が限られていますので譲りあってお使いください。 + + %p いずれにせよ、用意できるコンセントの数は参加者の数に対してかなり少ない見込みです。みなさま譲りあってご利用されますようお願いします。また、長時間に渡って機器を使用されたい方は予備のバッテリーをお持ちになることを強くお勧めします。 + + + %h2 会場内での飲食について + + %ul + %li 大ホール及び中ホール200では飲食禁止です。 + %li 大ホール横にある「喫茶自由」にて飲料を提供する予定です(無料です)。 + %li 会場には自動販売機が数カ所設置されております。ただし、過去の開催時には売り切れてしまうことがありましたので、ご自身でお気に入りに飲み物をお持ちいただくのも良いかと思います。 + + + %h2 ゴミの持ち帰りにご協力ください + + %p 弁当ガラや食べ残し、飲み物の空缶やペットボトルなど会場内で出たゴミについては、極力お持ち帰りをお願いいたします。 運営上の負担を極力減らすため、ご理解とご協力の程どうぞよろしくお願い致します。 + + + %h2 会場付近での食事について + + %p 会場にグルメマップが用意されていますので、ご利用ください。 + + %p 食べログによる会場付近のランチ情報の検索結果も参考になります。どうぞご活用ください。 + %ul + %li + %a{:href => "http://r.tabelog.com/rst/rstmap?clon=140.11643171310425&clat=36.0757075297531&lz=1&LstCat=&LstCatD=&LstCatSD=&LstRev=undefined&LstCnt=0&sw=&LstSitu=undefined&LstCosT=0&LstCos=0&RdoCosTp=2&PG=1"} グルメ・レストランマップ [食べログ] + + + %h2 気分が悪くなった方は + + %p 以下を参照し、ご自身で近隣の病院等に行かれるか、または運営スタッフまでお声掛けください。 + %ul + %li + %a{:href => 'http://hospital.health.goo.ne.jp/ibaraki?prov=3&lin=405&sta=080069'} 病院検索:関東 つくばエクスプレス つくば - goo ヘルスケア + + + %h2 お荷物について + + %p クロークの手配しておりません。施設内にコインロッカーはありますが、数も大きさも限られています。大きなお荷物は会場まで持ち込まれませんようお願いいたします。 diff --git a/app/views/pages/2010/Live.html.haml b/app/views/pages/2010/Live.html.haml new file mode 100644 index 00000000..5db1bdf8 --- /dev/null +++ b/app/views/pages/2010/Live.html.haml @@ -0,0 +1,31 @@ +#content + %h1 Live + %p イベント開催中は、USTREAMによりライブ中継をしております。 + %p 今年は以下のビューアーで中継をご覧いただけます。 + %ul + %li 中継品質はベストエフォートです。悪しからずご了承ください。 + %li KaigiFreaksがお届けします。 + %li 中継とは別に、後日録画した動画も公開予定です(準備ができ次第、別途アナウンスします)。 + %h2 RubyKaigi Live Streaming Viewer + %div#viewer.whitebox.cleafix + %div + %p We've put together a page where you can watch the live RubyKaigi Ustream, IRC and Twitter feeds all at once. + %p Please try it out during RubyKaigi. + %p * Works with browsers supporting WebSockets + %div.btn + %p + %a.noborder{:href => "/2010/live/1.html", :target => "_blank" } + %img{ :alt => "Main Convention Hall", :src => "/2010/images/viewer_btn_mainhall.png", :width => "200", :height => "80"} + %p + %a.noborder{:href => "/2010/live/2.html", :target => "_blank" } + %img{ :alt => "Convention Hall 200", :src => "/2010/images/viewer_btn_hall200.png", :width => "200", :height => "80"} + %p + %a.noborder{:href => "/2010/live/3.html", :target => "_blank" } + %img{ :alt => "Meeting Room 202-B", :src => "/2010/images/viewer_btn_room202b.png", :width => "200", :height => "80"} + %div + %img{ :alt => "", :src => "/2010/images/viewer_thumb.jpg", :width => "380", :height => "300"} + %h2 IRC + %p USTREAMのIRCは利用しません。irc.freenode.netをご利用ください。 + %div.whitebox + %p + %iframe{ :src => "http://webchat.freenode.net/?channels=rubykaigi-1%2Crubykaigi-2%2Crubykaigi-3%2Crubykaigi", :width => "600", :height => "400" } diff --git a/app/views/pages/2010/Live.ja.html.haml b/app/views/pages/2010/Live.ja.html.haml new file mode 100644 index 00000000..681a512c --- /dev/null +++ b/app/views/pages/2010/Live.ja.html.haml @@ -0,0 +1,31 @@ +#content + %h1 配信 + %p イベント開催中は、USTREAMによりライブ中継をしております。 + %p 今年は以下のビューアーで中継をご覧いただけます。 + %ul + %li 中継品質はベストエフォートです。悪しからずご了承ください。 + %li KaigiFreaksがお届けします。 + %li 中継とは別に、後日録画した動画も公開予定です(準備ができ次第、別途アナウンスします)。 + %h2 イベント期間中用の便利なビューアーができました! + %div#viewer.whitebox.cleafix + %div + %p USTREAMとIRCとTwitterを同時に見れるページを用意しました。 + %p 開催中はぜひこちらをご利用ください。 :-) + %p ※Web Socket対応ブラウザでご利用可能です。 + %div.btn + %p + %a.noborder{:href => "/2010/live/1.html", :target => "_blank" } + %img{ :alt => "大ホール", :src => "/2010/images/viewer_btn_mainhall.png", :width => "200", :height => "80"} + %p + %a.noborder{:href => "/2010/live/2.html", :target => "_blank" } + %img{ :alt => "中ホール", :src => "/2010/images/viewer_btn_hall200.png", :width => "200", :height => "80"} + %p + %a.noborder{:href => "/2010/live/3.html", :target => "_blank" } + %img{ :alt => "会議室202-B", :src => "/2010/images/viewer_btn_room202b.png", :width => "200", :height => "80"} + %div + %img{ :alt => "", :src => "/2010/images/viewer_thumb.jpg", :width => "380", :height => "300"} + %h2 IRCについて + %p USTREAMのIRCは利用しません。irc.freenode.netをご利用ください。 + %div.whitebox + %p + %iframe{ :src => "http://webchat.freenode.net/?channels=rubykaigi-1%2Crubykaigi-2%2Crubykaigi-3%2Crubykaigi", :width => "600", :height => "400" } diff --git a/app/views/pages/2010/Microsoft.html.haml b/app/views/pages/2010/Microsoft.html.haml new file mode 100644 index 00000000..276413dc --- /dev/null +++ b/app/views/pages/2010/Microsoft.html.haml @@ -0,0 +1,16 @@ +#content + %h1 + Ruby Sponsor + %h2 + Microsoft Co., Ltd. + %div#sponsors_ruby_page.whitebox + %img{ :alt => "Microsoft Co., Ltd.", :src => "/2010/sponsors/microsoft.png" } + + %p.right + %a.mark{ :href => "http://www.microsoft.com/japan/" } + http://www.microsoft.com/japan/ + %div + %p + Microsoft is making strong efforts to ensure interoperability in various + technology fronts, including building runtime environment for non-Microsoft + development languages on Windows platform. Ruby runtime implementation on .NET Framework is one of achievements. diff --git a/app/views/pages/2010/Microsoft.ja.html.haml b/app/views/pages/2010/Microsoft.ja.html.haml new file mode 100644 index 00000000..f8782144 --- /dev/null +++ b/app/views/pages/2010/Microsoft.ja.html.haml @@ -0,0 +1,15 @@ +#content + %h1 + Ruby スポンサーのご紹介 + %h2 + マイクロソフト株式会社 + %div#sponsors_ruby_page.whitebox + %img{ :alt => "マイクロソフト株式会社", :src => "/2010/sponsors/microsoft.png" } + #img{ :alt => "", :src => "/2010/sponsors/microsoft_pht01.png" } + + %p.right + %a.mark{ :href => "http://www.microsoft.com/japan/" } + http://www.microsoft.com/japan/ + %div + %p + マイクロソフトは様々な技術領域で、相互運用性の確保に力を入れています。これには、マイクロソフト製以外の開発言語のWindowsプラットフォーム上での開発実行環境の整備も含まれます。.NET FrameworkでのRuby実行環境の実装はその代表的な成果の一つです。 diff --git a/app/views/pages/2010/NaCl.html.haml b/app/views/pages/2010/NaCl.html.haml new file mode 100644 index 00000000..9b360364 --- /dev/null +++ b/app/views/pages/2010/NaCl.html.haml @@ -0,0 +1,14 @@ +#content + %h1 + Ruby Sponsor + %h2 + Network Applied Communication Laboratory Ltd. + %div#sponsors_ruby_page.whitebox + %img{ :alt => "Network Applied Communication Laboratory Ltd.", :src => "/2010/sponsors/nacl.png" } + %img{ :alt => "株式会社ネットワーク応用通信研究所(NaCl)", :src => "/2010/sponsors/nacl_pht01.jpg" } + %p.right + %a.mark{ :href => "http://www.netlab.jp/" } + http://www.netlab.jp/ + %div + %p + Network Applied Communication Laboratory (NaCl) delivers system development solutions utilizing open source software. NaCl drives the Ruby programming language with Ruby creator and NaCl fellow, Yukihiro "Matz" Matsumoto. diff --git a/app/views/pages/2010/NaCl.ja.html.haml b/app/views/pages/2010/NaCl.ja.html.haml new file mode 100644 index 00000000..7b232819 --- /dev/null +++ b/app/views/pages/2010/NaCl.ja.html.haml @@ -0,0 +1,59 @@ +#content + %h1 + Ruby スポンサーのご紹介 + %h2 + 株式会社ネットワーク応用通信研究所(NaCl) + %div#sponsors_ruby_page.whitebox + %img{ :alt => "株式会社ネットワーク応用通信研究所(NaCl)", :src => "/2010/sponsors/nacl.png" } + %img{ :alt => "株式会社ネットワーク応用通信研究所(NaCl)", :src => "/2010/sponsors/nacl_pht01.jpg" } + + %p.right + %a.mark{ :href => "http://www.netlab.jp/" } + http://www.netlab.jp/ + %div + %h3 + 世界と競い、未来を拓く + %p + ソースコードを公開して誰でも自由に利用できるようにし、利用者や他の開発者からのフィードバックを取り入れながら進化を続ける、それがオープンソースソフトウェア(OSS)です。 + 株式会社ネットワーク応用研究所(NaCl)では、単にOSSを利用するだけではなく、オブジェクト指向言語Rubyの開発者であるまつもとゆきひろ をはじめ、多くの社員がOSSの開発に貢献し、 + OSSを利用したシステム開発では先進的な実績を残しています。 + + %h3 + Ruby、Ruby on Railsによる開発実績の例 + %ul + %li + 島根県CMS +
+ 読み上げ機能や自動ふりがな機能を持つ、Ruby on Rails(Rails)で作られた行政機関向けCMS(コンテンツマネージメントシステム)です。 + OSSとして公開され島根県をはじめとする複数の自治体のwebサイトで採用されています。
+ %img{ :alt => "", :src => "/2010/sponsors/nacl_pht02.jpg" } + + %li + コンシューマ向けWebアプリケーションの開発支援 + %ul + %li @nifty TimeLine + %li @nifty アバウトミー + %li 食べログ + %li 松江SNS + %li 等 + %ul + %li + その他、業務・基幹系や組み込システムの分野の実績多数 + + %h3 + ニーズの高まるRuby教育 + %p + Rubyへの関心は高まっていますが、技術者確保が課題となっています。NaClではRubyアソシエーションの認定を受けたテキストを提供し、Rubyそのものや、Railsをはじめとする周辺技術に関する教育事業を行っています。 + %p + 認定テキストによる標準コース以外に、初めてのRuby、Railsでの開発に取り組む場合等にお使いいただけるカスタマイズ教育を提供しております。ご相談ください。 + + %h3 + OSS「日医標準レセプトソフト」の開発 + %p + NaClは、全国1万ヶ所以上の医療機関に導入されているオープンソースソフトウェア「日医標準レセプトソフト」の開発会社として、医療現場のIT化を推進しています。 + %hr + %h3 + NaClについて + %p + 弊社の通称である「NaCl」は、社名の英語表記「Network Applied Communication Laboratory Ltd.」の頭文字であると同時に、生物が生きていくために欠かせない「塩」の化学式でもあります。 + 私たちは「NaCl」を塩の化学式にちなみ、「エヌ・エー・シーエル」と呼んでいます。 diff --git a/app/views/pages/2010/Photos.html.haml b/app/views/pages/2010/Photos.html.haml new file mode 100644 index 00000000..6b774fc9 --- /dev/null +++ b/app/views/pages/2010/Photos.html.haml @@ -0,0 +1,26 @@ +#content + %h1 Photos + %script{ :src => "http://rubykaigi.tumblr.com/api/read/json?num=50", :type => "text/javascript" } + %script + for (i=0; i

' + + tumblr_api_read['posts'][i]['photo-caption'] + '' + + '

' + + tumblr_api_read['posts'][i+1]['photo-caption'] +'
' + ); + } + } + %h2.clear Collecting RubyKaigi 2010 photos :-) + %p At rubykaigi.org, we will collect your photos related to RubyKaigi 2010. + %p + You can upload your photos to Flickr with tag; + %strong "for_rubykaigi_2010" + , or upload anywhere and tweet the URLs of uploaded photos with hash tag; #rubykaigi2010 + %p + We will select uploaded photos, and put selected photos on this page via + %a{:href => "http://rubykaigi.tumblr.com/", :target => "_blank"} + Tumblr + \. Each photo will be credited with its title and URL. + %p Please note that you will be responsible about any photos that you upload. Please be careful about infringing on portrait rights and other rights. diff --git a/app/views/pages/2010/Photos.ja.html.haml b/app/views/pages/2010/Photos.ja.html.haml new file mode 100644 index 00000000..a1d2f175 --- /dev/null +++ b/app/views/pages/2010/Photos.ja.html.haml @@ -0,0 +1,26 @@ +#content + %h1 Photos + %script{ :src => "http://rubykaigi.tumblr.com/api/read/json?num=50", :type => "text/javascript" } + %script + for (i=0; i

' + + tumblr_api_read['posts'][i]['photo-caption'] + '' + + '

' + + tumblr_api_read['posts'][i+1]['photo-caption'] +'
' + ); + } + } + %h2.clear 写真を集めています :-) + %p rubykaigi.org では、日本Ruby会議2010の写真を集めています。 + %p + Flickrで + %strong "for_rubykaigi_2010" + というタグをつけていただくか、アップしたURLを#rubykaigi2010 というタグをつけてツイートしてください。 + %p + こちらで選別し、 + %a{:href => "http://rubykaigi.tumblr.com/", :target => "_blank"} + Tumblr + 経由でタイトル、引用元を掲載のうえ、このページへ転載させていただきます。 + %p なお、被写体の肖像権等についてのトラブルについては関与いたしかねます。著作権等は明記の上、ご自身の責任のもと写真をアップロードいただきますよう、ご注意願います。 diff --git a/app/views/pages/2010/Press.ja.html.haml b/app/views/pages/2010/Press.ja.html.haml new file mode 100644 index 00000000..a2f3d112 --- /dev/null +++ b/app/views/pages/2010/Press.ja.html.haml @@ -0,0 +1,32 @@ +%div#content + %h1 + 取材をご希望の方へ + %p + メディア・報道関係者向けに日本Ruby会議2010についての情報をお伝えするメーリングリストを用意しました。 + 取材についての情報や来場案内などもこちらでお伝えいたしますので、日本Ruby会議2010にご興味のあるメディア・報道関係の方は是非ご参加下さい。 + %h2 + メーリングリストの入り方 + %p + qwikを用いておりますので、下記要領でメールを送信してください。 + %ul + %li + To: rubykaigi2010press-ja _at_ qwik.atdot.net + %li + Cc: ksb.4038.nullpointe.r+rubykaigi2010press_ja _at_ gmail.com + %li + 件名: Join the list + %li + 本文: + %ul + %li + RubyKaigi2010のメディア・報道社向けメーリングリストに参加します。 + %li + 所属: (ご自身の所属組織) + %li + お名前: (ご自身のお名前) + %p + ※ メールアドレス中の_at_は@に読み替えてください。 + %h2 + お問い合わせ + %p + 何か不明な点があれば、2010 at rubykaigi.org までお気軽にお問い合わせください。 diff --git a/app/views/pages/2010/Programs.ja.html.haml b/app/views/pages/2010/Programs.ja.html.haml new file mode 100644 index 00000000..9590f093 --- /dev/null +++ b/app/views/pages/2010/Programs.ja.html.haml @@ -0,0 +1,588 @@ +%div#content + %h1 + プログラム + %h2 + 8/27(Fri) + %table + %tr + %th + 時間 + %th + ○○会議室 + %th + ○○会議室 + %th + ○○会議室 + %tr + %td.center + 00:00 + %br + | + %br + 00:00 + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %tr + %td.center + 00:00 + %br + | + %br + 00:00 + %td.cell_common{ :colspan => "3" } + 休憩 + %tr + %td.center + 00:00 + %br + | + %br + 00:00 + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %tr + %td.center + 00:00 + %br + | + %br + 00:00 + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %h2 + 8/28(Sat) + %table + %tr + %th + 時間 + %th + ○○会議室 + %th + ○○会議室 + %th + ○○会議室 + %tr + %td.center + 00:00 + %br + | + %br + 00:00 + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %tr + %td.center + 00:00 + %br + | + %br + 00:00 + %td.cell_common{ :colspan => "3" } + 休憩 + %tr + %td.center + 00:00 + %br + | + %br + 00:00 + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %tr + %td.center + 00:00 + %br + | + %br + 00:00 + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %h2 + 8/29(Sun) + %table + %tr + %th + 時間 + %th + ○○会議室 + %th + ○○会議室 + %th + ○○会議室 + %tr + %td.center + 00:00 + %br + | + %br + 00:00 + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %tr + %td.center + 00:00 + %br + | + %br + 00:00 + %td.cell_common{ :colspan => "3" } + 休憩 + %tr + %td.center + 00:00 + %br + | + %br + 00:00 + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %tr + %td.center + 00:00 + %br + | + %br + 00:00 + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo + %td + %a.tip + "sessionTitle" + %span + Git is the distributed version control system that is taking the software development world by storm. GitHub is the Git social hosting website that is helping people share and collaborate on their code quickly and easily. This talk will quickly introduce you to the Git tool and then demonstrate why it's features and structure can change your development life if you're still using Subversion or Perforce. We will also cover how to use GitHub to take advantage of these features and new workflows that become available to collaborate on your open source projects. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer feugiat faucibus gravida. Morbi ut magna orci. Nullam lobortis euismod mi at scelerisque. Etiam vel eros sed nisi luctus dapibus ac sed libero. Suspendisse sagittis, tellus eu pulvinar tempus, diam velit volutpat justo, id viverra felis est non nunc. + %br + %a.tip + "speaker'sName" + %span + %img{ :alt => "", :src => "/2010/images/programs_speaker_sample.jpg" } + Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub.com. He is the author of the upcoming Pro Git book from Apress publishing, the Git Internals Peepcode PDF as well as the maintainer of the Git homepage (git-scm.com) and the Git Community Book. Scott has presented at RailsConf, RubyConf, Scotland on Rails, a number of local groups and has done corporate training on Git across the country. + %br + %a.mark{ :href => "#" } + slideshare + %br + %a.mark{ :href => "#" } + nicovideo diff --git a/app/views/pages/2010/Prospectus.html.haml b/app/views/pages/2010/Prospectus.html.haml new file mode 100644 index 00000000..05fc7fb5 --- /dev/null +++ b/app/views/pages/2010/Prospectus.html.haml @@ -0,0 +1,19 @@ +%div#content + %h1 + The RubyKaigi 2010 Prospectus + %p + RubyKaigi, held annually in Japan since 2006, is a world-class conference for the object-oriented scripting language Ruby. Last year's RubyKaigi 2009, held in central Tokyo, had over 2,000 visitors over three days. + %p + RubyKaigi 2010, the 5th annual RubyKaigi, will be held over 3 days, from Friday, August 27th until Sunday, August 29th, 2010. The venue for RubyKaigi 2010 is Tsukuba International Congress Center in Tsukuba, Ibaraki Prefecture, Japan. Tsukuba is located 45 minutes from Tokyo by public transport. With a much larger venue than 2009, we expect RubyKaigi 2010 to be our biggest Kaigi yet. + %p + Each year, we pick a new theme for RubyKaigi. We began with "See and Meet Ruby in 2007" for RubyKaigi 2007, followed by "Diversity" for RubyKaigi 2008, and "Change" for RubyKaigi 2009. With these successive themes, we began by examining the current state of Ruby, sought to understand the many facets of Ruby as it grew in popularity, and explored the changes that followed. + %p + In 2010, the theme of RubyKaigi is "Conflicts and Resolutions". While we accept the many facets of Ruby as a positive, we also see a risk of diversity splintering into division. If every fork goes its own way and never merges back upstream, perhaps we will lose any reason to share the name "Ruby". It would be a shame if that also entailed losing an opportunity to further the evolution and development of Ruby. + %p + With differing platforms, differing needs, and differing positions, it is hard not for a feeling of distance to develop, or perhaps even an urge to create distance. For the sake of a better future of Ruby, however, we must overcome this distance. Although we may at times face severe conflicts, we must work to close the distance and resolve our differences face on. + %p + To be a place where, while not denying but accepting our diversity, we can seek friction, cross signals, and be mutually influenced. As one of the largest events to be held under the multi-faceted banner of "Ruby", we see it as the duty of RubyKaigi to be such a place. + %p + RubyKaigi 2010 aims to be the place where we look beyond the many "Rubies" of today, and explore the possibilities of "Ruby" as a whole. + %p.right + Masayoshi Takahashi, The RubyKaigi 2010 Team diff --git a/app/views/pages/2010/Prospectus.ja.html.haml b/app/views/pages/2010/Prospectus.ja.html.haml new file mode 100644 index 00000000..196b6e80 --- /dev/null +++ b/app/views/pages/2010/Prospectus.ja.html.haml @@ -0,0 +1,23 @@ +%div#content + %h1 + 日本Ruby会議2010 開催趣意書 + %p + 日本Ruby会議は、オブジェクト指向スクリプト言語Rubyに関するイベントとしては世界でも最大級のもので、2006年から毎年開催されています。昨年東京で開催された日本Ruby会議2009は、3日間でのべ2000人ほどの来場者を数えました。 + %p + その第5回目となる日本Ruby会議2010(略称:RubyKaigi2010)は、2010年8月27日から29日までの3日間、つくば国際会議場(茨城県つくば市)にて開催いたします。 + %p + 会場の規模としては昨年以上のものとなり、これまで以上の多くの参加を見込んでいます。 + %p + RubyKaigi2010のテーマは、「Conflicts and Resolutions(衝突と解決)」です。 + %p + RubyKaigiでは、毎年テーマを決めています。RubyKaigi2007では「2007年のRubyが見える、2007年のRubyに会える」、RubyKaigi2008では「多様性」、RubyKaigi2009では「変わる・変える」をテーマにしていました。こういったテーマのもと、まず現在のRubyの姿を見定めた後、そこから様々な姿に広がりつつ状況を踏まえ、さらにその先の変化を求めてきました。 + %p + しかしながら、多様な姿を肯定する一方で、それらが互いに関わりを持たず、 独自に動いているだけでは、「Ruby」という名で呼び合う意味もなくなるかもしれません。そのために、成長と発展のきっかけを見逃してしまう恐れもあります。 + %p + 様々なプラットフォーム、様々な要求、様々な立場の中が現れる中で、互いに距離を感じ、そしてまた、距離を置こうとすることもあります。しかし、時として厳しい思惑の対立を生じる恐れがありながらも、距離を縮め、互いの差異とその克服について真摯に向き合うことが、より豊かなRubyの未来には欠くことができません。 + %p + 多様性を否定するのではなく、それを認めた上で、積極的に摩擦を求め、相互に干渉しあい、よい意味での影響を受け合うための場とする。それが、「Ruby」という大きな括りの名の下で開かれるイベントとしては最大規模のものである、RubyKaigiの責務ではないかと考えます。 + %p + RubyKaigi2010は、広がり続ける様々なRubyのその先にある、全体としての「Ruby」の可能性を追求していく場となることを目指します。 + %p.right + 日本Ruby会議2010実行委員長 高橋征義 diff --git a/app/views/pages/2010/Ricoh.html.haml b/app/views/pages/2010/Ricoh.html.haml new file mode 100644 index 00000000..eb93affc --- /dev/null +++ b/app/views/pages/2010/Ricoh.html.haml @@ -0,0 +1,37 @@ +#content + %h1 + Ruby Sponsor + %h2 + Ricoh Company, Ltd. + %div#sponsors_ruby_page.whitebox + %img.f_left{ :alt => "Ricoh Company, Ltd.", :src => "/2010/sponsors/ricoh.png" } + %p.right + %a.mark{ :href => "http://www.ricoh.co.jp/" } + http://www.ricoh.co.jp/ + %div.clear + %h3 Introduction to quanp + %p + High-performance technology, easier to use. In addition to Ricoh product development and services that focus on imaging equipment, Ricoh is expanding its business scope to provide a combination of office solutions. One of these new businesses being developed is "quanp." + %p + quanp is a visual online storage service for helping individuals to get used to utilizing information intelligently. The user can upload files, share, and do simple search operations. quanp’s server systems are powered by Ruby. In the future, while contributing knowledge and technologies gained during development to the growth of Ruby, we would like to refine large-scale system construction technologies that utilize Ruby’s advantages. + %p.f_left + %img{ :alt => "quanp", :src => "/2010/sponsors/ricoh_logo.gif" } + %br + %img{ :alt => "Ricoh’s visual online storage for consumers", :src => "/2010/sponsors/ricoh_txt01.gif" } + %br + %img{ :alt => "Up to 3 Months Free Flyer Distribution Coming Soon", :src => "/2010/sponsors/ricoh_txt02.gif" } + %p.f_right + %img{ :alt => "", :src => "/2010/sponsors/ricoh_pht01.jpg" } + %h3.clear Announcing quanp’s iPhone app + %p.f_left + %img{ :alt => "", :src => "/2010/sponsors/ricoh_pht02.jpg" } + %img{ :alt => "Limited to the Ruby Association iPhone Wallpaper Available", :src => "/2010/sponsors/ricoh_txt03.gif" } + %p.small + *downloads available through the registration page + %p + At any time you can see photos and videos, important business files stored in quanp from an iPhone. Naturally photos taken with an iPhone and even video and audio can be easily uploaded, and files in quanp can easily be exchanged with files on an iPhone. + %p.clear + For further information about quanp please see the following site: + %br + %a.mark{ :href=>"http://www.quanp.com" } + http://www.quanp.com diff --git a/app/views/pages/2010/Ricoh.ja.html.haml b/app/views/pages/2010/Ricoh.ja.html.haml new file mode 100644 index 00000000..81bea79e --- /dev/null +++ b/app/views/pages/2010/Ricoh.ja.html.haml @@ -0,0 +1,37 @@ +#content + %h1 + Ruby スポンサーのご紹介 + %h2 + 株式会社リコー + %div#sponsors_ruby_page.whitebox + %img.f_left{ :alt => "株式会社リコー", :src => "/2010/sponsors/ricoh.png" } + %p.f_right + %a.mark{ :href => "http://www.ricoh.co.jp/" } + http://www.ricoh.co.jp/ + %div.clear + %h3 quanpの紹介 + %p + 高性能な技術を、より使いやすく。リコーは画像機器を中心とした製品開発やサービスの提供に加え、それらを組み合わせたオフィスソリューションの提供へと事業領域を拡大しています。そうした新規事業の一つとして“quanp”を展開中。 + %p + quanpは情報をスマートに使いこなすための個人向けビジュアルオンラインストレージサービスです。ファイルのアップロード、共有、検索を簡単な操作で行うことができます。このquanpでは、サーバーシステムの構築においてRubyを活用しています。今後も、開発の中で得た知識・技術でRubyの発展に貢献するとともに、Rubyの利点を活かした大規模システム構築技術に磨きをかけていきたいと考えています。 + %p.f_left + %img{ :alt => "quanp", :src => "/2010/sponsors/ricoh_logo.gif" } + %br + %img{ :alt => "リコーの個人向けビジュアルオンラインストレージ", :src => "/2010/sponsors/ricoh_txt04.gif" } + %br + %img{ :alt => "最大3ヶ月無料キャンペーンチラシを当日配布予定! ", :src => "/2010/sponsors/ricoh_txt05.gif" } + %p.f_right + %img{ :alt => "", :src => "/2010/sponsors/ricoh_pht01.jpg" } + %h3.clear iPhoneアプリ登場 + %p.f_left + %img{ :alt => "", :src => "/2010/sponsors/ricoh_pht02.jpg" } + %img{ :alt => "Ruby会議限定iPhone壁紙配布予定", :src => "/2010/sponsors/ricoh_txt06.gif" } + %p.small + ※当日登録画面でダウンロードできます。 + %p + quanpに保管している写真や動画、仕事の重要なファイルを、いつでもiPhoneから確認できます。iPhoneで撮った写真はもちろん、動画や音声も、簡単にアップロードでき、quanp上のファイルやiPhoneのファイルを簡単に交換できます。 + %p + quanpについての詳しい情報については、下記サイトをご覧ください。 + %br + %a.mark{ :href=>"http://www.quanp.com" } + http://www.quanp.com diff --git a/app/views/pages/2010/Sponsors.html.haml b/app/views/pages/2010/Sponsors.html.haml new file mode 100644 index 00000000..90a11bce --- /dev/null +++ b/app/views/pages/2010/Sponsors.html.haml @@ -0,0 +1,5 @@ +#content + %h1 RubyKaigi2010 Sponsors + + != render :partial => 'shared/corporate_sponsors' + != render :partial => 'shared/individual_sponsors' diff --git a/app/views/pages/2010/Sponsors.ja.html.haml b/app/views/pages/2010/Sponsors.ja.html.haml new file mode 100644 index 00000000..b9cbd66f --- /dev/null +++ b/app/views/pages/2010/Sponsors.ja.html.haml @@ -0,0 +1,5 @@ +#content + %h1 日本Ruby会議2010のスポンサーの皆さま + + != render :partial => 'shared/corporate_sponsors' + != render :partial => 'shared/individual_sponsors' diff --git a/app/views/pages/2010/SponsorsGold.html.haml b/app/views/pages/2010/SponsorsGold.html.haml new file mode 100644 index 00000000..b49b8c15 --- /dev/null +++ b/app/views/pages/2010/SponsorsGold.html.haml @@ -0,0 +1,220 @@ +#content + %h1 Gold Sponsor + %div#sponsors_gold_list.whitebox.clearfix + %a{ :name => "waicrew" } + %img{ :alt => "Waicrew Inc.", :src => "/2010/sponsors/waicrew.png" } + %div + %h2 + %a.mark{ :href => "http://www.waicrew.com" } + Waicrew Inc + %p + Our favorite method is "Symbol#to_proc". + %hr + %a{ :name => "clearcode" } + %img{ :alt => "ClearCode Inc.", :src => "/2010/sponsors/clearcode.png" } + %div + %h2 + %a.mark{ :href => "http://www.clear-code.com/" } + ClearCode Inc. + %p ClearCode provides high technology about free software such as Ruby, Mozilla Firefox/Thunderbird and so on. + %hr + %a{ :name => "recruit" } + %img{ :alt => "Media Technology Labs, Recruit Co., Ltd", :src => "/2010/sponsors/recruit.png" } + %div + %h2 + %a.mark{ :href => "http://mtl.recruit.co.jp/" } + Media Technology Labs, Recruit Co., Ltd + %p The Media Technology Labs is an application research development institute established by Recruit Co., Ltd + + %hr + %a{ :name => "contentsone" } + %img{ :alt => "Contents One Inc.", :src => "/2010/sponsors/contentsone.png" } + %div + %h2 + %a.mark{ :href => "http://www.contents-one.co.jp" } + Contents One Inc. + %p We had 20+ seminars of RoR for 4 years, will continue walking with Ruby & Rubyists. And, Social Apps is our another theme in 2010. + + %hr + %a{ :name => "enishitech" } + %img{ :alt => "Enishi Tech Inc.", :src => "/2010/sponsors/enishitech.png" } + %div + %h2 + %a.mark{ :href => "http://www.enishi-tech.com" } + Enishi Tech Inc. + %p Enishi Tech Inc. is a small software company. Enishi implies relationship, link, bond, fate and chance. + %p We value Enishi and Technology. + + %hr + %a{ :name => "kakakucom" } + %img{ :alt => "Kakaku.com, Inc.", :src => "/2010/sponsors/kakakucom.png" } + %div + %h2 + %a.mark{ :href => "http://tabelog.com" } + Kakaku.com, Inc. + %p We provide the internet media such as kakaku.com, tabelog.com and other services that support consumer choice in many aspects of life. + %hr + %a{ :name => "antas" } + %img{ :alt => "ANTAS, Inc.", :src => "/2010/sponsors/antas.png" } + %div + %h2 + %a.mark{ :href => "http://antas.jp/"} + ANTAS, Inc. + %p ANTAS, Inc. is a system development company in Sapporo, Japan. + %p We aggressively use Ruby for CMS, magazine publishing system, ImageCruiser and so on. + %hr + + %a{ :name => "temona" } + %img{ :alt => "TEMONA Co. Ltd.", :src => "/2010/sponsors/temona.png" } + %div + %h2 + %a.mark{ :href => "http://www.temona.co.jp" } + TEMONA Co. Ltd. + %p TEMONA is selling a unique E-commerce ASP service called "Tamago Cart". Of course, all services are made in RoR.Looking for staff! + + %hr + %a{ :name => "pex" } + %img{ :alt => "PeX, inc.", :src => "/2010/sponsors/pex.png" } + %div + %h2 + %a.mark{ :href => "http://pex.jp/" } + PeX, inc. + %p PeX is one of the largest online point exchange services in Japan. + + %hr + %a{ :name => "towersquest" } + %img{ :alt => "Towersquest Inc.", :src => "/2010/sponsors/towersquest.png" } + %div + %h2 + %a.mark{ :href => "#"} + Towersquest Inc. + %p + We are Towersquest Inc. providing solutions for business. Less time on nonessential repetitive tasks, more time on your core business. + %hr + %a{ :name => "cuon" } + %img{ :alt => "Cuon Inc.", :src => "/2010/sponsors/cuon.png" } + %div + %h2 + %a.mark{ :href => "http://www.cuon.co.jp/"} + Cuon Inc. + %p Cuon Inc. has specialized in business systems by Ruby on Rails. We have designed and developed agilely the business value for our clients. + + %hr + %a{ :name => "rabbix" } + %img{ :alt => "Rabbix Ltd.", :src => "/2010/sponsors/rabbix.png" } + %div + %h2 + %a.mark{ :href => "http://www.rabbix.jp"} + Rabbix Ltd. + %p Rabbix is a web service provider in Fukushima city of Fukushima pref. + %p Currently, we provide mainly safety confirmation system. + + %hr + %a{ :name => "rlearning" } + %img{ :alt => "R-learning", :src => "/2010/sponsors/rlearning.png" } + %div + %h2 + %a.mark{ :href => "http://www.r-learning.co.jp/"} + R-learning + %p Our company is a system integrator that focun on Ruby on Rails and the android development.we excel in collaboration services development. + + %hr + %a{ :name => "rakuten" } + %img{ :alt => "Rakuten, Inc.", :src => "/2010/sponsors/rakuten.png" } + %div + %h2 + %a.mark{ :href => "http://www.rakuten.co.jp"} + Rakuten, Inc. + %p The largest e-commerce company Rakuten provides the great place for ruby and OSS engineers with potential to change the world. + %hr + + %a{ :name => "fujitsu" } + %img{ :alt => "FUJITSU SOCIAL SCIENCE LABORATORY Ltd.", :src => "/2010/sponsors/fujitsu.png" } + %div + %h2 + %a.mark{ :href => "http://www.ssl.fujitsu.com/"} + FUJITSU SOCIAL SCIENCE LABORATORY Ltd. + %p + Fujitsu SSL provides the solutions that all business need,named PoweredSolution. + + %hr + %a{ :name => "everyleaf" } + %img{ :alt => "Everyleaf Corporation", :src => "/2010/sponsors/everyleaf.png" } + %div + %h2 + %a.mark{ :href => "http://everyleaf.com/"} + Everyleaf Corporation + %p We develop Rails apps and help you develop them too. Our name "Everyleaf" comes from "Man'yoshu", the oldest collection of Japanese poetry. + + %hr + %a{ :name => "eyoffice" } + %img{ :alt => "EY-Office Ltd.", :src => "/2010/sponsors/eyoffice.png" } + %div + %h2 + %a.mark{ :href => "http://www.ey-office.com/"} + EY-Office Ltd. + %p http://www.ey-office.com/ + + %hr + %a{ :name => "tmix" } + %img{ :alt => "tmix", :src => "/2010/sponsors/tmix.png" } + %div + %h2 + %a.mark{ :href => "http://tmix.jp/"} + tmix + %p + tmix lets you create your own shirts online and then share your designs to other users. + %hr + %a{ :name => "hokkaidoinformationuniversity" } + %img{ :alt => "Hokkaido Information University", :src => "/2010/sponsors/hokkaidoinformationuniversity.png" } + %div + %h2 + %a.mark{ :href => "http://www.do-johodai.ac.jp/"} + Hokkaido Information University + %p HIU caters to the future needs of information society by promoting original research and creating comprehensively educated IT specialists. + + %hr + %a{ :name => "scaleout" } + %img{ :alt => "ScaleOut Inc.", :src => "/2010/sponsors/scaleout.png" } + %div + %h2 + %a.mark{ :href => "http://www.scaleout.jp/"} + ScaleOut Inc. + + %hr + %a{ :name => "econe" } + %img{ :alt => "EC-One, Inc.", :src => "/2010/sponsors/econe.png" } + %div + %h2 + %a.mark{ :href => "http://www.ec-one.com/"} + EC-One, Inc. + %p + EC-One works on the development of Ruby on Rails to achieve customer's business more low-cost and speedily. + %hr + %a{ :name => "topstudio" } + %img{ :alt => "Top Studio Co., Ltd.", :src => "/2010/sponsors/topstudio.png" } + %div + %h2 + %a.mark{ :href => "http://www.topstudio.co.jp/"} + Top Studio Co., Ltd. + %p + TOP STUDIO is a one-stop solution provider for translating and editing documents for IT publications. We produce about 90 books yearly. + + %hr + %a{ :name => "nakataka" } + %img{ :alt => "Nakataka Co.,Ltd.", :src => "/2010/sponsors/nakataka.png" } + %div + %h2 + %a.mark{ :href => "http://www.mengurume.co.jp/"} + Nakataka Co.,Ltd. + %p + It is Nakataka Co.,Ltd.. We manufactured "Ruby on Matsue ramen". It contributes to development and the spread of Ruby. + %hr + %a{ :name => "tatsuzine" } + %img{ :alt => "Tatsu-zine Publishing", :src => "/2010/sponsors/tatsuzine.png" } + %div + %h2 + %a.mark{ :href => "http://tatsu-zine.com"} + Tatsu-zine Publishing + %p + Tatsu-zine Publishing is Japanese ebook publisher like PragProg or Peepcode. If you want to sell your Ruby-related documents, contact me :) diff --git a/app/views/pages/2010/SponsorsGold.ja.html.haml b/app/views/pages/2010/SponsorsGold.ja.html.haml new file mode 100644 index 00000000..cc4f1560 --- /dev/null +++ b/app/views/pages/2010/SponsorsGold.ja.html.haml @@ -0,0 +1,234 @@ +#content + %h1 Gold スポンサーのご紹介 + %div#sponsors_gold_list.whitebox.clearfix + %a{ :name => "waicrew" } + %img{ :alt => "ワイクル株式会社", :src => "/2010/sponsors/waicrew.png" } + %div + %h2 + %a.mark{ :href => "http://www.waicrew.com" } + ワイクル株式会社 + %p + 好きなメソッドは「Symbol#to_proc」。 + %hr + %a{ :name => "clearcode" } + %img{ :alt => "株式会社クリアコード", :src => "/2010/sponsors/clearcode.png" } + %div + %h2 + %a.mark{ :href => "http://www.clear-code.com/" } + 株式会社クリアコード + %p + クリアコードはRubyやMozilla Firefox/Thunderbirdなどのフリーソフトウェアに関する技術力を提供しています。ソースコードがあればなんとかできますので、フリーソフトウェアに関してお困りのことがあればご相談ください。 + %hr + %a{ :name => "recruit" } + %img{ :alt => "株式会社リクルート メディアテクノロジーラボ", :src => "/2010/sponsors/recruit.png" } + %div + %h2 + %a.mark{ :href => "http://mtl.recruit.co.jp/" } + 株式会社リクルート メディアテクノロジーラボ + %p + メディアテクノロジーラボは、リクルートが培ってきたメディアの知見と、テクノロジーの観点から、新たなメディアやコミュニケーションのありかたを研究開発することを通じて、生活者にとって適切で利便性の高い情報流通が行われる豊かな情報社会の実現を目指しています。 + %hr + %a{ :name => "contentsone" } + %img{ :alt => "株式会社コンテンツワン", :src => "/2010/sponsors/contentsone.png" } + %div + %h2 + %a.mark{ :href => "http://www.contents-one.co.jp" } + 株式会社コンテンツワン + %p + Rubyともに歩み続けて早4年。Ruby on Railsセミナー開催もすでに20回を超えました。これからもRubyとともに、Rubyistの皆さんとともに歩んでいきたいと思います。そして2010年は、もう1つのテーマ、ソーシャルアプリにも取り組みます。よろしくお願いします。 + %hr + %a{ :name => "enishitech" } + %img{ :alt => "株式会社えにしテック", :src => "/2010/sponsors/enishitech.png" } + %div + %h2 + %a.mark{ :href => "http://www.enishi-tech.com" } + 株式会社えにしテック + %p + 株式会社えにしテックは、システム開発、運用保守、インターネット向けサービスの開発運営などを主な業務とする札幌の会社です。私たちは、情報サービスという形で日々の営みに彩りを添え、その豊かさに貢献することをミッションとしています。 + %hr + %a{ :name => "kakakucom" } + %img{ :alt => "株式会社カカクコム", :src => "/2010/sponsors/kakakucom.png" } + %div + %h2 + %a.mark{ :href => "http://tabelog.com" } + 株式会社カカクコム + %p + カカクコムは、購買支援サイト「価格.com」や、ランキングとクチコミのグルメサイト「食べログ」などを筆頭に、消費生活のあらゆるシーンで選択をサポートするインターネットメディアを運営しています。 + %hr + %a{ :name => "antas" } + %img{ :alt => "株式会社アンタス", :src => "/2010/sponsors/antas.png" } + %div + %h2 + %a.mark{ :href => "http://antas.jp/"} + 株式会社アンタス + %p + アンタスはシステム開発、運用保守、インターネットサービス運営を主業務とする札幌の企業で、特にRubyに力を入れています。 + %p + Railsベースの自社CMSパッケージの他、画像検索エンジンImageCruiserや雑誌社向け業務システム等に積極的にRubyを採用しています。 + %hr + %a{ :name => "temona" } + %img{ :alt => "TEMONA株式会社", :src => "/2010/sponsors/temona.png" } + %div + %h2 + %a.mark{ :href => "http://www.temona.co.jp" } + TEMONA株式会社 + %p + 「仕事は100% Ruby on Rails!!」TEMONAは、通販のある特化したちょっと変わった「たまごカート」というASPサービスを販売しております。もちろんサービスは全てRoRで構成されており、社長はじめ社員全員Rubyに染まってる会社です。社員募集中!! + %hr + %a{ :name => "pex" } + %img{ :alt => "株式会社PeX", :src => "/2010/sponsors/pex.png" } + %div + %h2 + %a.mark{ :href => "http://pex.jp/" } + 株式会社PeX + %p + 「PeX」は、提携する様々なサービスを使って貯めたポイントをPeXポイントに交換し、一つにまとめて管理することができるポイント交換サービスです。PeXに集めたポイントは有効期限を気にすることなく、PeXを通じて使いたいサービスや商品、電子マネーや現金、マイレージなどに交換することができます。 + %hr + %a{ :name => "towersquest" } + %img{ :alt => "タワーズ・クエスト株式会社", :src => "/2010/sponsors/towersquest.png" } + %div + %h2 + タワーズ・クエスト株式会社 + %p + タワーズ・クエストは、平成2年の創業以来、一貫して「社会のための技術」を求め、少数精鋭主義を貫く技術会社です。アジャイルプロセス、テスト駆動開発、大規模データベース設計、RESTfulWebアプリケーション設計開発などの強みを生かし、お客様の満足のために日々努力してまいります。 + %hr + + %a{ :name => "cuon" } + %img{ :alt => "株式会社クオン", :src => "/2010/sponsors/cuon.png" } + %div + %h2 + %a.mark{ :href => "http://www.cuon.co.jp/"} + 株式会社Cuon(クオン) + %p 弊社は、Ruby on Railsによる業務システム開発が得意な会社です。 + %p お客様が価値を感じるシステムのために、迅速な開発を行っています。 + + %hr + %a{ :name => "rabbix" } + %img{ :alt => "有限会社ラビックス", :src => "/2010/sponsors/rabbix.png" } + %div + %h2 + %a.mark{ :href => "http://www.rabbix.jp"} + 有限会社ラビックス + %p + ラビックスは福島県福島市にある、ウェブサービスベンダーです。現在、安否確認システムを中心とするサービスを展開しています。 + %hr + + %a{ :name => "rlearning" } + %img{ :alt => "株式会社アールラーニング", :src => "/2010/sponsors/rlearning.png" } + %div + %h2 + %a.mark{ :href => "http://www.r-learning.co.jp/"} + 株式会社アールラーニング + %p + 弊社はSI事業とRailsやandroidを用いた自社開発及びRubyを中心とした教育を取り揃えた会社です。4年前からRubyに注目しRailsによるグループウェア等の開発を行い、5月には"プッシュ型情報共有ソリューション「UGUISU」"をリリースしました。 + %hr + + %a{ :name => "rakuten" } + %img{ :alt => "楽天株式会社", :src => "/2010/sponsors/rakuten.png" } + %div + %h2 + %a.mark{ :href => "http://www.rakuten.co.jp"} + 楽天株式会社 + %p + 楽天はインターネットショッピングモール「楽天市場」をはじめとして、複数の事業を多角的に運営し、「日本発」の企業として台湾、ヨーロッパ、アメリカなどグローバルに事業規模を拡げています。 + %p + 事業の基盤となるテクノロジーの開発をほぼ自社内で行っており、『人財』としてのエンジニアを大切にしています。 + + %hr + + %a{ :name => "fujitsu" } + %img{ :alt => "株式会社富士通ソーシアルサイエンスラボラトリ", :src => "/2010/sponsors/fujitsu.png" } + %div + %h2 + %a.mark{ :href => "http://www.ssl.fujitsu.com/"} + 株式会社富士通ソーシアルサイエンスラボラトリ + %p + 富士通SSLは、ソフトウェア開発・システム構築を中心に事業を展開してきました。現在、それらの技術をもとにした『PoweredSolution』の他、オープンソースソフトウェア(OSS)環境に対応できる高い技術力と万全なサポートで、安心してご利用いただけるOSS環境をご提供します。 + + %hr + + %a{ :name => "everyleaf" } + %img{ :alt => "株式会社万葉", :src => "/2010/sponsors/everyleaf.png" } + %div + %h2 + %a.mark{ :href => "http://everyleaf.com/"} + 株式会社万葉 + %p + Ruby on Railsを使ったWebアプリケーション開発を主に行っています。オフィスではよく技術勉強会が開かれ、社内外の元気なエンジニアが集います。Web家計簿「小槌」、蔵書管理システム「BookScope」、iPhoneアプリ「iCarta」等を公開中です。 + %hr + + %a{ :name => "eyoffice" } + %img{ :alt => "有限会社イーワイオフィス", :src => "/2010/sponsors/eyoffice.png" } + %div + %h2 + %a.mark{ :href => "http://www.ey-office.com/"} + 有限会社イーワイオフィス + %p Ruby言語、Ruby on Railsの実践的な教育ならEY-Office。 + %p 詳細はhttp://www.ey-office.com/ + %hr + + %a{ :name => "tmix" } + %img{ :alt => "tmix", :src => "/2010/sponsors/tmix.png" } + %div + %h2 + %a.mark{ :href => "http://tmix.jp/"} + tmix + %p + tmixはオリジナルTシャツをWEB上で自由にデザインして買えるサービス。テキストやイラスト素材を使ってTシャツを見ながら作成できるので簡単便利。1枚からプリント、オーダー可能で自分の写真や気にいった他のデザインも使えます。 + %hr + + %a{ :name => "hokkaidoinformationuniversity" } + %img{ :alt => "北海道情報大学", :src => "/2010/sponsors/hokkaidoinformationuniversity.png" } + %div + %h2 + %a.mark{ :href => "http://www.do-johodai.ac.jp/"} + 北海道情報大学 + %p 北海道情報大学(HIU)は、明日の高度情報通信社会の担い手にふさわしいIT技術と知識、及びそれを支える幅広い教養と各種専門分野にまたがる知識の習得に裏打ちされた高度IT技術者を育成し、情報の総合大学としてIT社会の発展に寄与することを目標にして、教育・研究を行っています。 + %hr + + %a{ :name => "scaleout" } + %img{ :alt => "株式会社スケールアウト", :src => "/2010/sponsors/scaleout.png" } + %div + %h2 + %a.mark{ :href => "http://www.scaleout.jp/"} + 株式会社スケールアウト + %p 弊社はRailsベースの広告配信システム「ScaleAds」を開発・販売しております。 + %p 1日に数億~数10億を超えるような広告配信をリーズナブルに行いたいとお考えの企業様はお気軽にご用命ください + + %hr + + %a{ :name => "econe" } + %img{ :alt => "株式会社イーシー・ワン", :src => "/2010/sponsors/econe.png" } + %div + %h2 + %a.mark{ :href => "http://www.ec-one.com/"} + 株式会社イーシー・ワン + %p + EC-Oneでは、より低コストかつスピーディーにお客様のビジネスを実現するため、RubyおよびRuby on Railsの開発に取り組んでいます。最近ではEc-RiderやMonkeyMagicなどの自社製品をRuby on Railsで開発しています。 + %hr + %a{ :name => "topstudio" } + %img{ :alt => "株式会社トップスタジオ", :src => "/2010/sponsors/topstudio.png" } + %div + %h2 + %a.mark{ :href => "http://www.topstudio.co.jp/"} + 株式会社トップスタジオ + %p + 次々と新しい技術が登場するIT業界と共に歩んできた弊社は、技術環境の変化に柔軟に対応した“本・メディアづくり”を1997年の創業以来、一貫して行っています。書籍から雑誌、Web、ソフトウェア、リーフレットまで、その企画から完成に至るすべての工程を“ワンストップ”体制で対応します。 + %hr + %a{ :name => "nakataka" } + %img{ :alt => "株式会社 中隆", :src => "/2010/sponsors/nakataka.png" } + %div + %h2 + %a.mark{ :href => "http://www.mengurume.co.jp/"} + 株式会社 中隆 + %p + "Ruby on 松江ラーメン"でお馴染みの松江市で製麺業を営む株式会社中隆です。食品会社という門外漢ながら、Rubyの発展と普及に貢献し、当地松江市が、より活気ある街になるような道を考えています。 + %hr + %a{ :name => "tatsuzine" } + %img{ :alt => "Tatsu-zine Publishing", :src => "/2010/sponsors/tatsuzine.png" } + %div + %h2 + %a.mark{ :href => "http://tatsu-zine.com"} + 株式会社達人出版会 + %p + 達人出版会は主にIT系の技術文書の制作と販売を手掛ける電子書籍出版社です。RubyやRuby以外の原稿を絶賛募集中です!またRubyKaigi開催時には販売も開始している予定です!ご期待下さい! diff --git a/app/views/pages/2010/SponsorsPlatinum.html.haml b/app/views/pages/2010/SponsorsPlatinum.html.haml new file mode 100644 index 00000000..6a2e9aa7 --- /dev/null +++ b/app/views/pages/2010/SponsorsPlatinum.html.haml @@ -0,0 +1,31 @@ +#content + %h1 Platinum Sponsor + %div#sponsors_platinum_list.whitebox + %a{ :name => "esm" } + %img{ :alt => "Eiwa System Management,Inc.", :src => "/2010/sponsors/eiwasystemmanagement.png" } + %div + %h2 + %a.mark{ :href => "http://www.esm.co.jp/" } + Eiwa System Management,Inc. + %p Eiwa System Management(ESM),Inc. is one of the best company building cutting-edge Ruby/Rails application with agile software development methods in Japan. + %p We are maximizing client's return on investment.We also passionately support Ruby communities in Japan since 2006. + + %hr + %a{ :name => "nifty" } + %img{ :alt => "NIFTY Corporation", :src => "/2010/sponsors/nifty.png" } + %div + %h2 + %a.mark{ :href => "http://www.nifty.co.jp/" } + NIFTY Corporation + %p NIFTY is one of the biggest ISPs in Japan, providing various life-enriching services with the company slogan "With Us, You Can". + %p Considering it as very important OSS, we use "Ruby on Rails" for our various UGC services such as blog or community services. + %p Ruby Development Environment is also provided in our recently released public cloud service"NIFTY Cloud". + %hr + %a{ :name => "cookpad" } + %img{ :alt => "COOKPAD", :src => "/2010/sponsors/cookpad.png" } + %div + %h2 + %a.mark{ :href => "http://cookpad.com/" } + COOKPAD Inc. + %p Cookpad.com is Japan’s largest Ruby on Rails site and is the world's largest user-generated recipe site with over 700,000 recipes and 9.6 million monthly unique visitors. The site is operated by COOKPAD Inc. who were founded in 1998, and went public last year in what became the most successful IPO of the year in Japan. + %p Please join us for our session 'Ruby powering 9 million dining tables' if you are interested in our technologies and working at COOKPAD Inc. diff --git a/app/views/pages/2010/SponsorsPlatinum.ja.html.haml b/app/views/pages/2010/SponsorsPlatinum.ja.html.haml new file mode 100644 index 00000000..5893b322 --- /dev/null +++ b/app/views/pages/2010/SponsorsPlatinum.ja.html.haml @@ -0,0 +1,33 @@ +#content + %h1 Platinum スポンサーのご紹介 + %div#sponsors_platinum_list.whitebox + %a{ :name => "esm" } + %img{ :alt => "株式会社永和システムマネジメント", :src => "/2010/sponsors/eiwasystemmanagement.png" } + %div + %h2 + %a.mark{ :href => "http://www.esm.co.jp/" } + 株式会社永和システムマネジメント + %p 私たち永和システムマネジメントは、福井県に本社を置くSIベンダです。2002年に東京支社を開設してから、アジャイル開発を軸に変化を抱擁するITソリューションを提供することに力を入れています。 + %p 有志による草の根活動をきっかけに始まった Ruby への取り組みは、5年間で70以上ものプロジェクトで実績をつくるまでに成長し、2010年5月にはRubyアソシエーション認定システムインテグレータに認定されました。 + %p 私たちは、ソフトウェア開発のプロフェッショナルとしての誠実な態度と、アジャイル開発のアプローチを通じて「お客さまに価値を提供し続けるシステム」を構築し、お客さまと一緒に育てていきます。アジャイルと Ruby の組み合わせが実現するシステム開発は、開発者が充実感と「楽しさ」を感じられる開発であり、そこにはきっとビジネス価値がある――私たちはそう信じて行動を続けています。 + %hr + %a{ :name => "nifty" } + %img{ :alt => "ニフティ株式会社", :src => "/2010/sponsors/nifty.png" } + %div + %h2 + %a.mark{ :href => "http://www.nifty.co.jp/" } + ニフティ株式会社 + %p ニフティ株式会社は、インターネットサービス「@nifty(アット・ニフティ)」を運営するインターネットサービス事業者です。"ニフティとなら、きっとかなう。 With Us, You Can."を経営理念とし、高品質で安心・安全なサービスの提供を通じて、お客様の日々の生活をより便利で豊かにするための支援をしています。 + %p ニフティでは、提供している多くのサービスで、オープンソースソフトウェアを活用しています。 + %p 「Ruby on Rails」にも早くから着目し、弊社ブログサービス「ココログ」のコミュニティサービス「ココログ広場」などさまざまなサービス開発に活用しています。 + %p さらに弊社では、Rubyアプリケーションの搭載・提供も可能な、パブリック型クラウドサービス「ニフティクラウド」の提供を開始し、本サービスのRubyによる効率化・基盤化にも取り組んでいます。 + %hr + %a{ :name => "cookpad" } + %img{ :alt => "クックパッド株式会社", :src => "/2010/sponsors/cookpad.png" } + %div + %h2 + %a.mark{ :href => "http://cookpad.com/" } + クックパッド株式会社 + %p クックパッドの運営するレシピ投稿サイトcookpad.comは、2008年のリニューアルでRuby on Railsを採用しました。以来、日本最大のRailsサイトとして月間989万人のユーザーから生み出される4.6億PVを支え、なおも拡大を続けています。 + %p テスト駆動開発やスクラムといったAgile技術の導入や、Hadoopなどの分散処理技術やクラウドを使いこなすことによって、これまで不可能だったスピードと規模でユーザーの毎日の生活に価値を提供し、クックパッドのミッションである「毎日の料理を楽しみにすることで心からの笑顔を増やす」ことに挑戦し続けています。 + %p 8月29日(日)12:00~13:30@RubyKaigi2010にてランチタイムの特別セッションを予定しております。生活の役に立つ技術やRubyでのものづくりに興味がある方は、ぜひご参加ください。 diff --git a/app/views/pages/2010/Team.html.haml b/app/views/pages/2010/Team.html.haml new file mode 100644 index 00000000..ccb41266 --- /dev/null +++ b/app/views/pages/2010/Team.html.haml @@ -0,0 +1,86 @@ +#content + %h1 The RubyKaigi 2010 Team + + %h2 Chairman + %ul + %li Masayoshi TAKAHASHI (Nihon Ruby-no-Kai, Chairman / tatsu-zine.com) + %h2 Chief of Operations + %ul + %li Shintaro KAKUTANI (Nihon Ruby-no-Kai || Eiwa System Management) + %h2 Vice Chief of Operations + %ul + %li Koji SHIMADA (Nihon Ruby-no-Kai / Enishi Tech) + %h2 Program Chair + %ul + %li Koichi SASADA (Nihon Ruby-no-Kai, The University of Tokyo) + %h2 Sponsor Liason + %ul + %li Ayumu AIZAWA (Nihon Ruby-no-Kai, Akasaka.rb) + %li Shugo MAEDA (Ruby Association / Network Applied Communication Laboratory) + + %h2 Organizers + + %ul + %li Shin'ya ADZUMI (Nihon Ruby-no-kai, Intasect Communications) - Accounting + %li Tadashi TADA (tDiary.org) - Conference Novelty Goods + %li Kazuhiko (Open Source Programmer / Nihon Ruby-no-kai) + %li Miho SUZUKI (@adzuki34) + %li Leonard Chin (Nihon Ruby-no-Kai) + %li Kyosuke MOROHASHI (Rails Tokyo || Eiwa System Management) + %li Yohji SHIDARA (Ruby Sapporo / Enishi Tech) + %li Tomoki MAEDA (Ruby Sapporo / Antas) + %li Kenta MURATA (Ruby Sapporo) + %li Fumitake TANIGUCHI (Ruby Sapporo, Hokkaido Information University) + %li Jun OHWADA (Ruby Sapporo, Scigineer) + %li Kei SHIRATSUCHI (Ruby Sapporo, Scigineer) + %li Naoto TAKAI (Akasaka.rb) + %li Toshiaki KOSHIBA (EC Navi, 4038nullpointer.com) + %li Sunao TANABE (Nihon Ruby-no-kai) + %li Motohiro TAKAYAMA (@mootoh) + %li Tadashi SAWADA + %li Eito KATAGIRI (Ruby Tokai) + %li Iori ONDA + %li Tasuo SAKURAI (Everyleaf) + %li Tadashi SAITO (College of Information Science, University of Tsukuba) + %li ujihisa + %li Junichiro KITA (Nihon Ruby-no-Kai) + %li Junya OGINO + + %h2 Designer + + %ul + %li Mayuco Sekiya (@mayuco) + %li Norio (Ibaraki Ruby-no-kai) + + %h2 Staff + + %ul + %li Yusuke SAKAKI (Mitaka.rb, @ysakaki) + %li Koichiro DOI (@kdoi) + %li HAMASAKI (@hmsk) + %li Yasunobu KAWAGUCHI + %li Mitsuteru NAKAO (BioRuby) + %li Misa KONDO (@johnsmith0707) + %li Masaki IWAMOTO (EC Navi, @fulsat9) + %li Soutaro MATSUMOTO (HOME SEARCH) + %li Kazuhiro IKEZAWA (toRuby) + %li Motohiro ISHII (DENSETSUBU) + %li Yutaka OGASAWARA (@y_ogagaga) + %li Shinichi TOKUNAGA (@deepneko) + %li Kazuaki TAKAHASHI (@aduka) + %li Mitsutaka MIMURA (Eiwa System Management, asakusa.rb) + %li Rakkoyaku (LOCAL Students, @rakkoyaku) + %li Yutaro SUGAI (LOCAL Students, @hokkai7go) + %li Iori NISHIZAWA (qtec, arnote) + %li Ryunosuke SATO (@tricknotes) + %li Masanori SUGAWARA (@sugamasao) + %li Yuki AKAMATSU (ukstudio) + %li Ma (Nue Jinja) + %li Masaru HIGAKI (RubyKansai) + %li Adam AKHTAR + %li Norio SUZUKI (@suzuki) + %li Ippei Ogiwara (@iogi) + + %h2 rubykaigi.org + %ul + %li http://github.com/ruby-no-kai/rubykaigi/contributors diff --git a/app/views/pages/2010/Team.ja.html.haml b/app/views/pages/2010/Team.ja.html.haml new file mode 100644 index 00000000..80aaa386 --- /dev/null +++ b/app/views/pages/2010/Team.ja.html.haml @@ -0,0 +1,87 @@ +#content + %h1 日本Ruby会議2010実行委員会 + + %h2 実行委員長 + %ul + %li 高橋征義 (日本Rubyの会会長, 達人出版会) + %h2 運営委員長 + %ul + %li 角谷信太郎 (日本Rubyの会 || (株)永和システムマネジメント) + %h2 運営委員長補佐 + %ul + %li 島田浩二 (日本Rubyの会, 株式会社えにしテック) + %h2 プログラム委員長 + %ul + %li 笹田耕一 (日本Rubyの会, 東京大学大学院情報理工学系研究科創造情報学専攻) + %h2 スポンサー渉外担当 + %ul + %li 相澤歩 (日本Rubyの会, Akasaka.rb) + %li 前田修吾 (Rubyアソシエーション, 株式会社ネットワーク応用通信研究所) + + %h2 実行委員 + + %ul + %li あづみしんや (日本Rubyの会, インタセクト・コミュニケーションズ株式会社) + %li ただただし (tDiary.org) + %li かずひこ (オープンソース・プログラマ, 日本Rubyの会) + %li すずきみほ (@adzuki34) + %li レオ Leonard Chin (日本Rubyの会) + %li 諸橋恭介 (Rails勉強会@東京 || (株)永和システムマネジメント) + %li しだらようじ (Ruby札幌, 株式会社えにしテック) + %li まえだともき (Ruby札幌, 株式会社アンタス) + %li むらたけんた (Ruby札幌) + %li たにぐちふみたけ (Ruby札幌, 北海道情報大学) + %li 大和田純 (Ruby札幌, サイジニア株式会社) + %li 白土慧 (Ruby札幌, サイジニア株式会社) + %li 高井直人 (Akasaka.rb) + %li こしば としあき (株式会社ECナビ, 4038nullpointer.com) + %li たなべ すなお (日本Rubyの会) + %li 高山征大 (@mootoh) + %li 沢田正 + %li かたぎり えいと (Ruby東海) + %li 恩田伊織 + %li 櫻井達生 (株式会社万葉) + %li 斎藤ただし (筑波大学情報学類) + %li ujihisa + %li 喜多淳一郎 (日本Rubyの会) + %li 荻野淳也 (あとで書く) + + %h2 デザイナ + + %ul + %li 関谷繭子 (@mayuco) + %li のりお (茨城Rubyの会) + + %h2 当日スタッフ + + %ul + %li 榊 祐介 (Mitaka.rb, @ysakaki) + %li 土居幸一朗 (@kdoi) + %li はまさき (@hmsk) + %li かわぐちやすのぶ + %li なかおみつてる (BioRuby) + %li こんどうみさ (@johnsmith0707) + %li 岩本 政樹 (株式会社ECナビ, @fulsat9) + %li 松本宗太郎 (ホームサーチ株式会社) + %li 池澤一廣 (toRuby) + %li 石井 基裕 (電設部) + %li 小笠原 豊 (@y_ogagaga) + %li 徳永慎一 (@deepneko) + %li 高橋 和晃 (@aduka) + %li 三村益隆 (永和システムマネジメント, asakusa.rb) + %li らっこやく (LOCAL学生部, @rakkoyaku) + %li 菅井祐太朗 (LOCAL学生部, @hokkai7go) + %li 西澤伊織 (株式会社キュー・テック, arnote) + %li 佐藤竜之介 (@tricknotes) + %li すがわらまさのり (@sugamasao) + %li 赤松 祐希 (ukstudio) + %li ま (鵺神社) + %li ひがき・まさる (Ruby関西) + %li アクター アダム + %li 鈴木則夫 (@suzuki) + %li 荻原 一平 (@iogi) + + %h2 rubykaigi.org + + %ul + %li http://github.com/ruby-no-kai/rubykaigi/contributors diff --git a/app/views/pages/2010/Twitter.html.haml b/app/views/pages/2010/Twitter.html.haml new file mode 100644 index 00000000..a5db637a --- /dev/null +++ b/app/views/pages/2010/Twitter.html.haml @@ -0,0 +1,90 @@ +#content + %h1 Twitter + %h2 RubyKaigi Live Streaming Viewer + %div#viewer.whitebox.cleafix + %div + %p We've put together a page where you can watch the live RubyKaigi Ustream, IRC and Twitter feeds all at once. + %p Please try it out during RubyKaigi. + %p * Works with browsers supporting WebSockets + %div.btn + %p + %a.noborder{:href => "/2010/live/1", :target => "_blank" } + %img{ :alt => "Main Convention Hall", :src => "/2010/images/viewer_btn_mainhall.png", :width => "200", :height => "80"} + %p + %a.noborder{:href => "/2010/live/2", :target => "_blank" } + %img{ :alt => "Convention Hall 200", :src => "/2010/images/viewer_btn_hall200.png", :width => "200", :height => "80"} + %p + %a.noborder{:href => "/2010/live/3", :target => "_blank" } + %img{ :alt => "Meeting Room 202-B", :src => "/2010/images/viewer_btn_room202b.png", :width => "200", :height => "80"} + %div + %img{ :alt => "", :src => "/2010/images/viewer_thumb.jpg", :width => "380", :height => "300"} + %h2 Follow me + %div.whitebox + %p Tweeting RubyKaigi info in Japanese and English. + %p + %a.noborder{:href => "http://www.twitter.com/rubykaigi", :target => "_blank" } + %img{ :alt => "Follow me on Twitter", :src => "/2010/images/twitter_followme_btn.png"} + %h2 @rubykaigi on Twitter + %script{ :src => "/2010/javascripts/widget.js", :type => "text/javascript" } + :javascript + new TWTR.Widget({ + version: 2, + type: 'profile', + rpp: 30, + interval: 6000, + width: 'auto', + height: 400, + theme: { + shell: { + background: '#ffffff', + color: '#999999' + }, + tweets: { + background: '#ffffff', + color: '#302b2b', + links: '#000000' + } + }, + features: { + scrollbar: true, + loop: true, + live: true, + hashtags: true, + timestamp: true, + avatars: false, + behavior: 'default' + } + }).render().setUser('rubykaigi').start(); + %h2 Everyone's #rubykaigi Tweets + :javascript + new TWTR.Widget({ + version: 2, + type: 'search', + search: '#rubykaigi', + interval: 6000, + title: 'Twitter #rubykaigi', + subject: '', + width: 'auto', + height: 400, + theme: { + shell: { + background: '#ffffff', + color: '#999999' + }, + tweets: { + background: '#ffffff', + color: '#302b2b', + links: '#8b8989' + } + }, + features: { + scrollbar: true, + loop: true, + live: true, + hashtags: true, + timestamp: true, + avatars: true, + behavior: 'default' + } + }).render().start(); + diff --git a/app/views/pages/2010/Twitter.ja.html.haml b/app/views/pages/2010/Twitter.ja.html.haml new file mode 100644 index 00000000..afdc6639 --- /dev/null +++ b/app/views/pages/2010/Twitter.ja.html.haml @@ -0,0 +1,90 @@ +#content + %h1 Twitter + %h2 イベント期間中用の便利なビューアーができました! + %div#viewer.whitebox.cleafix + %div + %p UstreamとIRCとTwitterを同時に見れるページを用意しました。 + %p 開催中はぜひこちらをご利用ください。 :-) + %p ※Web Socket対応ブラウザでご利用可能です。 + %div.btn + %p + %a.noborder{:href => "/2010/live/1", :target => "_blank" } + %img{ :alt => "大ホール", :src => "/2010/images/viewer_btn_mainhall.png", :width => "200", :height => "80"} + %p + %a.noborder{:href => "/2010/live/2", :target => "_blank" } + %img{ :alt => "中ホール", :src => "/2010/images/viewer_btn_hall200.png", :width => "200", :height => "80"} + %p + %a.noborder{:href => "/2010/live/3", :target => "_blank" } + %img{ :alt => "会議室202-B", :src => "/2010/images/viewer_btn_room202b.png", :width => "200", :height => "80"} + %div + %img{ :alt => "", :src => "/2010/images/viewer_thumb.jpg", :width => "380", :height => "300"} + %h2 Follow me + %div.whitebox + %p 日本Ruby会議の情報を日英2カ国語でツイートしています。 + %p + %a.noborder{:href => "http://www.twitter.com/rubykaigi", :target => "_blank" } + %img{ :alt => "Follow me on Twitter", :src => "/2010/images/twitter_followme_btn.png"} + %h2 @rubykaigiのツイート + %script{ :src => "/2010/javascripts/widget.js", :type => "text/javascript" } + :javascript + new TWTR.Widget({ + version: 2, + type: 'profile', + rpp: 30, + interval: 6000, + width: 'auto', + height: 400, + theme: { + shell: { + background: '#ffffff', + color: '#999999' + }, + tweets: { + background: '#ffffff', + color: '#302b2b', + links: '#000000' + } + }, + features: { + scrollbar: true, + loop: true, + live: true, + hashtags: true, + timestamp: true, + avatars: false, + behavior: 'default' + } + }).render().setUser('rubykaigi').start(); + %h2 みんなのツイート + :javascript + new TWTR.Widget({ + version: 2, + type: 'search', + search: '#rubykaigi', + interval: 6000, + title: 'Twitter #rubykaigi', + subject: '', + width: 'auto', + height: 400, + theme: { + shell: { + background: '#ffffff', + color: '#999999' + }, + tweets: { + background: '#ffffff', + color: '#302b2b', + links: '#8b8989' + } + }, + features: { + scrollbar: true, + loop: true, + live: true, + hashtags: true, + timestamp: true, + avatars: true, + behavior: 'default' + } + }).render().start(); + diff --git a/app/views/pages/2010/Venue.en.html.haml b/app/views/pages/2010/Venue.en.html.haml new file mode 100644 index 00000000..8e65b1db --- /dev/null +++ b/app/views/pages/2010/Venue.en.html.haml @@ -0,0 +1,8 @@ +#content + %h1 #{t(:venue)} + %p + %a{ :href => "http://www.epochal.or.jp/eng/index.html" } + \Tsukuba International Congress Center + in Tsukuba City, Ibaraki, Japan. + %ul + %li Tsukuba is 45 minutes away from Akihabara, Tokyo. diff --git a/app/views/pages/2010/Venue.ja.html.haml b/app/views/pages/2010/Venue.ja.html.haml new file mode 100644 index 00000000..6aa1435b --- /dev/null +++ b/app/views/pages/2010/Venue.ja.html.haml @@ -0,0 +1,6 @@ +#content + %h1 #{t(:venue)} + %p + %a{ :href => "http://www.epochal.or.jp/" } + \つくば国際会議場 + (茨城県つくば市) diff --git a/app/views/pages/2010/index.html.haml b/app/views/pages/2010/index.html.haml new file mode 100644 index 00000000..0226d7ee --- /dev/null +++ b/app/views/pages/2010/index.html.haml @@ -0,0 +1,96 @@ +%div#content + %h1 + INFORMATION + %ul + %li RubyKaigi 2011 "The Final RubyKaigi" will be held on July 16 - 18 in Nerima Culture Center, Tokyo, Japan. Stay tuned! + %li RubyKaigi 2010 is over. Thanks a lot for coming! + %li Please fill out the questionnaire. + %li Information page and Floor Guide(PDF) are now online. + %li + Dear attendees, please check admission related information: + %ul + %li + %a{:href => 'http://rubykaigi.tdiary.net/20100811.html#p02'} Information about RubyKaigi2010 admission + %li + %a{:href => 'http://rubykaigi.tdiary.net/20100814.html#p02'} Registration information for official reception of RubyKaigi2010 + %li Goodies page is now online. + %li Tickets to RubyKaigi 2010 are now on sale. Act quickly -- Every year, RubyKaigi tickets sell out fast! If you are thinking of attending, please buy your tickets soon (2010-06-15 21:40 JST). + %li RubyKaigi 2010 has mailing list for attendees from outside of Japan or anyone who are interested in helping and communicating with these oversea Rubyists. Please join the list! + %li RubyKaigi 2010 has student discount program. the program detail and submission form(Already at capacity). + %li Tickets to RubyKaigi 2010 has been sold out. Thank you all for so many registrations. That must be excited! (2010-08-14 15:00 JST) + != render :partial => 'shared/headline' + != render :partial => 'shared/add_feed' + + %h2 + RubyKaigi2010 + %ul + %li + Dates: August 27-29 2010 + %li + Venue: + %a{ :href => "http://www.epochal.or.jp/eng/index.html" } + Tsukuba International Congress Center "EPOCHAL TSUKUBA" + (Tsukuba, Ibaraki, Japan) + %li + Fee: 6,000 JPY + %li + Streaming: Sessions are scheduled to streaming via Ustream.tv. The streaming will be distributed by "KaigiFreaks". The delivery quality is best effort. + %li + official tag: + %a{ :href => "http://b.hatena.ne.jp/t/rubykaigi2010" } + rubykaigi2010 + %li + official hash tag: + %a{ :href => "http://twitter.com/#search?q=%23rubykaigi" } + \#rubykaigi + %li + Organizers: The RubyKaigi 2010 Team, Ruby Association, Nihon Ruby-no-Kai + %h3 RubyKaigi 2010 Official Conference Party + %ul + %li Date: August 28 2010 + %li Start At: 19:00 (JST) + %li Venue: the same location as RubyKaigi 2010 (Tsukuba International Congress Center) + %li Fee: 5,000 JPY + + %h2 + Keynote Speakers + %ul + %li + Yukihiro "Matz" Matsumoto + %li + Chad Fowler + %li + Jeremy Kemper (cancelled) + %h2 + Speakers, Sub-Event Organizers + %ul + %li!= link_to t(:time_table), "/2010/#{current_locale}/timetable" + %li!= link_to t(:program_list), "/2010/#{current_locale}/events" + + %h2 + Call For Lightning Talk Proposals Has Been Closed + %p + %strike + Deadline: 2010-07-19(Mon) 23:59:59(JST) + %p + Thanks you all for so many submissions. + + %h2 + Call For Presentation and Sub-Event Has Been Closed + %p + Thanks you all for so many submissions. + %p + We've got 71 talk proposals (41 accepted) and 28 sub-event proposals (25 accepted). + + %h2 Call For RubyKaigi 2010 Illustation Has Been Closed + %p + Thank you all for so many illustrations. + %p + We've got 30 lightning talk proposals (11 accepted). + + %h2 + RubyKaigi 2010 is looking for Sponsors + %p + RubyKaigi 2010 is seeking organizations to sponsor the conference. For further details, visit + %a{ :href => "/2010/en/CallForSponsors.html" } + the this link diff --git a/app/views/pages/2010/index.ja.html.haml b/app/views/pages/2010/index.ja.html.haml new file mode 100644 index 00000000..1df8668f --- /dev/null +++ b/app/views/pages/2010/index.ja.html.haml @@ -0,0 +1,99 @@ +%div#content + %h1 + お知らせ + %ul + %li 日本Ruby会議2011「最後のRuby会議」は7月16日〜18日の3日間、練馬文化センター(東京都)で開催予定です。 + %li 日本Ruby会議2010は全ての日程を終了いたしました。ご参加いただいた皆さま、ありがとうございました。 + %li 今後の参考にしたいためアンケートにご協力ください。 + %li 参加者向け情報フロアガイド(PDF)を公開しています。 + %li + 参加者の皆様へ: 入場に関する以下の情報を今一度ご確認ください + %ul + %li + %a{:href => 'http://rubykaigi.tdiary.net/20100811.html#p01'} 一般参加チケット・個人スポンサーチケットをお持ちの方の日本Ruby会議2010本編受付方法について + %li + %a{:href => 'http://rubykaigi.tdiary.net/20100814.html#p01'} 懇親会チケットを購入された方の日本Ruby会議2010公式懇親会受付方法について + %li イメージイラスト公募結果おまけページを公開しています。 + %li 日本Ruby会議2010に海外から参加するRubyistのためのメーリングリストを用意しました。海外からRuby会議2010に参加する方はもとより、海外から参加するRubyistに興味のある日本の方も是非ご参加下さい。公開qwikですのでWebサイトの説明にしたがって参加してください。 + %li 日本Ruby会議2010への参加登録は予定販売枚数を終了しました。皆さまと会場でお会いできることを楽しみにしています(2010-08-14 15:00 JST)。 + != render :partial => 'shared/headline' + %p + その他、日本Ruby会議2010の最新情報は、 + %a{ :href => "http://rubykaigi.tdiary.net/?category=rubykaigi2010;year=2010" }< + RubyKaigi日記 + \ ( + %a{ :href => "http://rubykaigi.tdiary.net/?category=rubykaigi2010" }< + RubyKaigi2010関連のみ表示 + )もあわせて参照ください。 + != render :partial => 'shared/add_feed' + + %h2 + 開催概要 + %ul + %li + 名称: 日本Ruby会議2010 (RubyKaigi2010)  + %li + 会期: 2010 年 8 月 27 日(金)・28 日(土)・29 日(日) + %li + 会場: + %a{ :href => "http://www.epochal.or.jp/" } + つくば国際会議場 + (茨城県つくば市)  + %li + 料金: 6,000 JPY + %li + 会期中はKaigiFreaksによるUstream.tv経由でのストリーミング配信を予定しています。配信品質はベストエフォートです。 + %li + 公式タグ: + %a{ :href => "http://b.hatena.ne.jp/t/rubykaigi2010" } + rubykaigi2010 + %li + 公式ハッシュタグ: + %a{ :href => "http://twitter.com/#search?q=%23rubykaigi" } + \#rubykaigi + %li + 主催: 日本Ruby会議2010実行委員会, Rubyアソシエーション, 日本Rubyの会 + %h3 日本Ruby会議2010 公式懇親会 + %ul + %li 日付: 2010 年 8 月 28 日(土) + %li 開始時刻: 19:00 (JST) + %li 会場: つくば国際会議場 + %li 料金: 5,000 JPY + + %h2 + 基調講演 + %ul + %li + まつもとゆきひろ + %li + Chad Fowler + %li + Jeremy Kemper (ご本人の都合によりキャンセルとなりました) + %h2 + プレゼンテーション発表と企画 + %p!= link_to 'タイムテーブル', "/2010/#{current_locale}/timetable" + %p!= link_to 'プレゼンテーション発表と企画の一覧(タイトルは最新のものではありません)', "/2010/#{current_locale}/events" + + %h2 Ruby会議2010のライトニングトークスの募集は終了しました + %p + %strike + 応募〆切: 2010-07-19(Mon) 23:59:59(JST) + %p + 今年もたくさんのご応募ありがとうございました。 + %p + 今年は 30 件の応募に対して 11 件を採択しました。 + + %h2 日本Ruby会議2010でおこなう発表と企画の募集は終了しました + %p + 今年もたくさんのご応募ありがとうございました。 + %p + 今年は 71 件の発表応募に対して 41 件を、28 件の企画応募に対して 25件を採択しました。 + + %h2 日本Ruby会議2010のメインイメージイラストの募集は終了しました + %p + イメージイラスト公募結果を掲載しています。 + + %h2 + 日本Ruby会議2010の企業スポンサー募集は終了しました + %p + おかげさまでたくさんの方々からご支援いただけることになりました。ありがとうございました。 diff --git a/app/views/pages/2011/_call_for_presentations.en.html.haml b/app/views/pages/2011/_call_for_presentations.en.html.haml new file mode 100644 index 00000000..69b00a45 --- /dev/null +++ b/app/views/pages/2011/_call_for_presentations.en.html.haml @@ -0,0 +1,14 @@ +%p + This is a call for presentation proposals(CFP) for RubyKaigi 2011. + +%p + Topics we're interested in +%p + We are interested in presentations on the following topics: + %ul + %li + Anything about the Ruby language +%p + How to Submit a Proposal +%p + Please submit your CFP via http://www.atdot.net/~ko1/file/rubykaigi/2011/presentation/upload diff --git a/app/views/pages/2011/_call_for_presentations.ja.html.haml b/app/views/pages/2011/_call_for_presentations.ja.html.haml new file mode 100644 index 00000000..b290d3ac --- /dev/null +++ b/app/views/pages/2011/_call_for_presentations.ja.html.haml @@ -0,0 +1,4 @@ +%p + あとで書く。さしあたってはruby-listへのアナウンスを参照してください(これもあとで投稿する) +%p + 応募用ウェブシステム: http://www.atdot.net/~ko1/file/rubykaigi/2011/presentation/upload diff --git a/app/views/pages/2011/_call_for_sponsors.en.html.haml b/app/views/pages/2011/_call_for_sponsors.en.html.haml new file mode 100644 index 00000000..af0e3a27 --- /dev/null +++ b/app/views/pages/2011/_call_for_sponsors.en.html.haml @@ -0,0 +1,30 @@ +%p + RubyKaigi 2011 is seeking organizations to sponsor the conference. RubyKaigi is an international conference, attracting participants and speakers from many countries, including Japan, the United States, China, Australia, Germany, Canada, South Africa, Egypt, France and many others. RubyKaigi is a fantastic opportunity to promote your organization. + +%p + For further details, please refer to the PDF linked below. Please direct all enquiries to 2011 AT rubykaigi.org. +%p + %a.linkMark{ :href => "/2011/rk11prospectus.pdf", :target => "_blank"} + #{t('rubykaigi2011')} #{t('sponsor_prospectus')}(PDF) +%h2 + Individual Sponsorship Program for RubyKaigi 2011 +%p + For RubyKaigi 2011, we are calling for individual sponsors. We'd be happy if you helped to support RubyKaigi 2011 through the individual sponsorship program. +%br +%p #{t(:individual_sponsor_program_detail)}: +%ul.listMark + %li= t(:about_donation) + %li= t(:about_payment) +%br +%p #{t(:individual_sponsor_program_benefits)}: +%ul.listMark + %li= t(:individual_sponsor_program_benefit_1) + %li= t(:individual_sponsor_program_benefit_2) + %li= t(:individual_sponsor_program_benefit_3) +%section.registration + %h3 Become a indivisual sponsor + %p.btn + %a{:href => "/2011/#{current_locale}/registration#individual_sponsor"} + %img{:alt => "#{t(:sponsors_registration_individual)}", :src => "/2011/images/sponsorsBtnBecomeAIndividualSponsor.png"} +%p.cboth + For RubyKaigi 2011, we are calling for individual sponsors. We'd be happy if you helped to support RubyKaigi 2011 through the individual sponsorship program. diff --git a/app/views/pages/2011/_call_for_sponsors.ja.html.haml b/app/views/pages/2011/_call_for_sponsors.ja.html.haml new file mode 100644 index 00000000..c4f3a285 --- /dev/null +++ b/app/views/pages/2011/_call_for_sponsors.ja.html.haml @@ -0,0 +1,34 @@ +%p 日本Ruby会議2011ではカンファレンスのスポンサーを募集しております。日本Ruby会議2011には国内はもとより、世界中からRubyプログラマが参加します。絶好の露出の機会としても、ぜひご利用ください。 +%p 詳細は以下のPDFにお目を通していただいたうえで、以下のリンクよりお申し込みください。 +%p + %a.linkMark{ :href => "/2011/rk11prospectus.pdf", :target => "_blank"} + #{t('rubykaigi2011')} #{t('sponsor_prospectus')}(PDF) +%h3 個人スポンサーについて +%p 日本Ruby会議2011では、昨年に引き続き、従来の企業スポンサーに加えて個人スポンサーによる支援プログラムを実施します。 +%br +%p #{t(:individual_sponsor_program_detail)}: +%ul.listMark + %li= t(:about_donation) + %li= t(:about_payment) +%br +%p #{t(:individual_sponsor_program_benefits)}: +%ul.listMark + %li= t(:individual_sponsor_program_benefit_1) + %li= t(:individual_sponsor_program_benefit_2) + %li= t(:individual_sponsor_program_benefit_3) +%br +%p 個人スポンサー登録にあたっての注意: +%ul.listMark + %li 個人スポンサー登録のためは、rubykaigi.org にアカウントが必要です + %li 決済にあたり、PayPalアカウントは必須ではありません +%section.registration + %h3 企業様のご申請 + %p.btn + %a{:href => "http://www.atdot.net/~ko1/file/rubykaigi/2011/sponsor/upload", :target => "_blank"} + %img{:alt => "#{t(:sponsors_registration_corporate)}", :src => "/2011/images/sponsorsBtnBecomeASponsor.png"} +%section.registration + %h3 個人様のご申請 + %p.btn + %a{:href => "/2011/#{current_locale}/registration#individual_sponsor"} + %img{:alt => "#{t(:sponsors_registration_individual)}", :src => "/2011/images/sponsorsBtnBecomeAIndividualSponsor.png"} +%p.cboth 日本最大規模のRubyのカンファレンスを一緒につくっていただける皆さまからの応募を心よりお待ちしております。 diff --git a/app/views/pages/2011/_cfp_instruction.ja.html.haml b/app/views/pages/2011/_cfp_instruction.ja.html.haml new file mode 100644 index 00000000..d63dd9e8 --- /dev/null +++ b/app/views/pages/2011/_cfp_instruction.ja.html.haml @@ -0,0 +1,148 @@ + + +%h3 + はじまりはじまり + +%ul + %li 弟子 : うーん、うーん + %li 仙人 : どうした、弟子よ。何を悩んどる? + %li 弟子 : あ、これは仙人さま。今、RubyKaigiのCFPを書いているところなのです。 + %li 仙人 : どれどれ、どんなのを書いておる。見せてみろ。 + +%p + 仙人は、弟子のディスプレイを後ろからのぞき込みました。 + +%blockquote + Abstract : + %br + 発表では、小説ツールについて解説します。 + +%p + 画面のエディタに書いてあるのは、たったこれだけでした。仙人は何のことだかさっぱり分からず、困ってしまいました。 + +%ul + %li 仙人 : うーん、弟子よ。これだけでは、さっぱり分からん。 + %li 弟子 : ですから、仙人さま。私は、CFPが書けずに困っているのです! + %li 仙人 : しかしなあ、弟子よ。これでは選考プロセスにすら上らんぞ……。 + %li 弟子 : えっ、仙人さま、それでは困ります! + %li 仙人 : よし、それではワシがおぬしに、CFPの極意を伝授しよう。 + %li 弟子 : わあ、本当ですか、仙人さま! ありがとうございます! + +%p + ポイント : Abstractが1行だけの応募は選考の対象外です!せっかく応募をするのですから、しっかりと応募文書を練りましょう。 + +%h3 + 理解されるように書く + +%ul + %li 仙人 : 弟子よ、まずはどんな発表をしたいのか教えておくれ。 + %li 弟子 : えーと、仙人さま。私は、とある小説に関連したツールの発表をしたいのです。 + %li 仙人 : ふむ、それはどんなツールじゃ。 + %li 弟子 : はい、小説を自動でつくってくれるツールでございます。 + %li 仙人 : 小説を自動生成するのか。 + %li 弟子 : 昨晩など、徹夜して自動生成された小説を読み耽ってしまいました。 + %li 仙人 : なんと暇な奴じゃ! + %li 弟子 : 利用方法も簡単で、コマンドひとつでGopherサーバが起動します + %li 仙人 : また古いプロトコルを選びおった。 + %li 弟子 : その他にも…… + %li 仙人 : まあ、待てい! とりあえずここまでをいったん文章にしてみんか。 + %li 弟子 : はい、仙人さま。……これでよろしいでしょうか。 + +%blockquote + Abstract : + %br + 発表では、小説ツールについて解説します。このツールは小説を自動生成します。利用方法は簡単で、コマンドひとつでGopherサーバが起動し、生成された小説を配信します。 + +%p + ポイント : 必要であればトピックとなる固有名詞や専門的な用語には簡潔な解説を書きましょう。プログラム選考者はRubyに関する最低限の知識は持っているものの、全てのことがらを知っている訳ではありません。 + +%h3 + テーマを広げる + +%ul + %li 仙人 : まあ、最初よりは良くなったのう。 + %li 弟子 : 本当ですか、ありがとうございます! + %li 仙人 : しかし、これだけじゃあ落選だの。 + %li 弟子 : それでは困ります! いったいどこが問題でしょうか。 + %li 仙人 : これだけではトピックが狭いのじゃ。 + %li 弟子 : それで、RubyKaigiの発表には向いていないと判断されてしまうのですね。 + %li 仙人 : そう、最近の傾向では単なるツールの紹介はライトニングトークに回される。 + %li 弟子 : えええっ、そうなんですか! + %li 仙人 : ライトニングトークもカリスマだの飛び道具が多いからの、激戦区じゃよ。 + %li 弟子 : いったい、どうしたら……。 + %li 仙人 : テーマを広げるのじゃ! + %li 弟子 : トピックが狭いのなら広げてしまえばいいのですね! + +%blockquote + Abstract : + %br + 発表では、小説ツールについて解説します。このツールは小説を自動生成します。利用方法は簡単で、コマンドひとつでGopherサーバが起動し、生成された小説を配信します。 + %br + このツールの背景には文生成というテーマがあります。 + +%p + ポイント : ツールの紹介などはライトニングトークに回される傾向があります。そのツールの技術背後など、テーマを広くすることで発表が採用される率がぐっとアップします。 + +%h3 + オリジナリティを明確にする + +%ul + %li 弟子 : 仙人さま、テーマが決まりました! + %li 仙人 : しかし、なんだかぼんやりしとらんか。 + %li 弟子 : たしかに、何か足りない気がします。 + %li 仙人 : そこで、オリジナリティじゃよ。 + %li 弟子 : わわわ、一気に難しくなった! 仙人さま、困ります! + %li 仙人 : まあまあ。このツールで一番難しいところはどこじゃ? + %li 弟子 : えーと、普通にマルコフ連鎖で文生成するとナンセンスな文章しか生成されないのです。 + %li 仙人 : どんな工夫をしてある? + %li 弟子 : ツールに小説から大規模分散技術をつかって抽出したモチーフを機械学習させ、ナンセンスな文章をはじく工夫があります。 + %li 仙人 : なんと高度な技術じゃ! それをCFPに盛り込むのだ。 + +%blockquote + Abstract : + %br + 発表では、小説ツールについて解説します。このツールは小説を自動生成します。利用方法は簡単で、コマンドひとつでGopherサーバが起動し、生成された小説を配信します。 + %br +このツールの背景には文生成というテーマがあります。通常の文生成で使われるマルコフ連鎖というアルゴリズムでは、ナンセンスな文章しか生成されないという問題がありました。そこで、ツールに大規模分散技術をつかって小説から抽出したモチーフを機械学習させ、ナンセンスな文章をはじく工夫が実装されています。 + +%p + ポイント : 発表のオリジナリティを明確にしましょう。オリジナリティは、ウリと言い換えてもいいかもしれません。発表によって聞く人にどんな価値がもたらされるのかを明確にします。 + +%h3 + 発表者の立ち位置を明らかにする + +%ul + %li 仙人 : しかし、びっくりしたのう。いつの間にそんな高度なツールを作った? + %li 弟子 : いいえ、仙人さま。このツールを私が作ったとは一言も……。 + %li 仙人 : なにっ、赤の他人のツールを紹介するつもりじゃったのか!? + %li 弟子 : いいえ、仙人さま。まったくの赤の他人という訳でもなく……。 + %li 仙人 : なんじゃ、お前は何をやったのか? + %li 弟子 : えへん、このツールで自動生成された小説を世界で一番多く読みました。 + %li 仙人 : あきれた暇人じゃのう。まあ良い。それを書け。 + +%blockquote + Abstract : + %br + 発表では、小説ツールについて解説します。このツールは小説を自動生成します。利用方法は簡単で、コマンドひとつでGopherサーバが起動し、生成された小説を配信します。 + %br + このツールの背景には文生成というテーマがあります。通常の文生成で使われるマルコフ連鎖というアルゴリズムでは、ナンセンスな文章しか生成されないという問題がありました。そこで、ツールに大規模分散技術をつかって小説から抽出したモチーフを機械学習させ、ナンセンスな文章をはじく工夫が実装されています。 + %br + 発表者は、このツールで自動生成された小説を世界で一番多く読んだ立場から、このツールがいかに自然な文章を生成するのか、ツールで採用された手法が画期的であることをお話します。 + +%p + ポイント : 必ずしも発表テーマの第一人者ではなくてもかまいません。ただし、この人にしかこの話はできない、という話が期待されています。ナンバーワンでなくともオンリーワンになってください。 + +%h3 + 最後に一番重要なこと + +%ul + %li 仙人 : よし、こんなもんじゃろ。 + %li 弟子 : 仙人さま、ありがとうございました。おかげさまで立派なCFPができました! + %li 仙人 : あと、大事なことを忘れとらんか。 + %li 弟子 : 大事なこと? + %li 仙人 : CFPの締切日じゃ。 + %li 弟子 : あっー、締切は昨日でした! + %li 仙人 : ズコーッ! + +%p + ポイント : 締切は守りましょう。締切を過ぎた応募は選考の対象外です! diff --git a/app/views/pages/2011/_for_attendees_access.en.html.haml b/app/views/pages/2011/_for_attendees_access.en.html.haml new file mode 100644 index 00000000..6a784cf9 --- /dev/null +++ b/app/views/pages/2011/_for_attendees_access.en.html.haml @@ -0,0 +1,27 @@ +%p= t(:neribun_with_location) + +%p + %a.linkMark{:href => "http://maps.google.co.jp/maps/ms?ie=UTF8&brcurrent=3,0x6018ed0919f73af7:0x7c22c5fa95e45acb,0&hl=en&source=embed&msa=0&msid=111740698347778329061.000481ccda497fef7135d&ll=35.738701,139.654073&spn=0.003483,0.004281&z=17", :target => "_blank"} Map + +%p + The nearest station is + %a{ :href => 'http://en.wikipedia.org/wiki/Nerima_Station', :target => '_blank' } Nerima Station + that is served by Ikebukuro and Yurakucho line (of Seibu Railway) and Oedo line (of Toei Subway). We recommend you to use Ikebukuro line to get Nerima Station from + %a{ :href => 'http://en.wikipedia.org/wiki/Ikebukuro_Station', :target => '_blank' } Ikebukuro station. + It takes about 10 minutes. + +%h3 + How to get + %a{ :href => 'http://en.wikipedia.org/wiki/Ikebukuro_Station', :target => '_blank' } Ikebukuro Station +%ul.listMark + %li From Tokyo Station: Take Marunouchi line of Tokyo Metoro. Exit Ikebukuro Station. Walk to Ikebukuro Station of Seibu Railway. + %li + From Haneda Airport: Use expressway bus (such as + %a{ :href => 'http://www.limousinebus.co.jp/en/', :target => '_blank' } Airport Limousine + or + %a{ :href => 'http://hanedabus.jp/timetable_e.htm', :target => '_blank' } Keihin Kyuko Bus + ) to Ikebukuro Statation East #1 Exit. Walk to Ikebukuro Station of Seibu Railway. + %li + From Narita Airport: Use expressway bus (such as + %a{ :href => 'http://www.limousinebus.co.jp/en/', :target => '_blank' } Airport Limousine + ) to Hotel Metropolitan Tokyo or Sunshine City Prince Hotel. Walk to Ikebukuro Station of Seibu Railway. diff --git a/app/views/pages/2011/_for_attendees_access.ja.html.haml b/app/views/pages/2011/_for_attendees_access.ja.html.haml new file mode 100644 index 00000000..3aec50d3 --- /dev/null +++ b/app/views/pages/2011/_for_attendees_access.ja.html.haml @@ -0,0 +1,13 @@ +%p= link_to t(:neribun_with_location), 'http://www.neribun.or.jp/' + +%p + %a.linkMark{:href => "http://maps.google.co.jp/maps/ms?ie=UTF8&brcurrent=3,0x6018ed0919f73af7:0x7c22c5fa95e45acb,0&hl=ja&source=embed&msa=0&msid=111740698347778329061.000481ccda497fef7135d&ll=35.738701,139.654073&spn=0.003483,0.004281&z=17", :target => "_blank"} 周辺地図 + %a.linkMark{:href => "http://www.neribun.or.jp/web/02_seat/n_index_02.html", :target => "_blank"} アクセスマップ + +%p 最寄り駅は練馬駅です。西武池袋線を使って、池袋駅から練馬駅まで乗車(10分程度)すると便利です。 + +%h3 主要駅から池袋駅までの行き方 +%ul.listMark + %li 東京駅から:東京メトロ丸の内線を使って東京駅から池袋駅まで移動し、西武池袋線池袋駅まで歩く。 + %li 羽田空港から:高速バスを使って、羽田空港国際線ターミナルから池袋駅東口1番まで移動し、西武池袋線池袋駅まで歩く。 + %li 成田空港から:高速バスを使って、成田空港第1 or 第2ターミナルからホテルメトロポリタン or サンシャインシティプリンスホテルまで移動し、西武池袋線池袋駅まで歩く。 diff --git a/app/views/pages/2011/_for_attendees_hotel_and_travel.en.html.haml b/app/views/pages/2011/_for_attendees_hotel_and_travel.en.html.haml new file mode 100644 index 00000000..6deee633 --- /dev/null +++ b/app/views/pages/2011/_for_attendees_hotel_and_travel.en.html.haml @@ -0,0 +1,23 @@ +%p + We recommend you to stay hotels near by + %a{ :href => 'http://maps.google.co.jp/maps?hl=ja&q=%E6%B1%A0%E8%A2%8B%E7%B7%9A%E6%B1%A0%E8%A2%8B%E9%A7%85&ie=UTF8&hq=&hnear=%E6%B1%A0%E8%A2%8B%E9%A7%85%E3%83%BB%E8%A5%BF%E6%AD%A6%E9%89%84%E9%81%93%EF%BC%8F%E6%B1%A0%E8%A2%8B%E7%B7%9A&gl=jp&ll=35.728921,139.710388&spn=0.009215,0.018325&z=16&brcurrent=3,0x60188d5bb9d45c6b:0x4f1c44deaf8c4d77,0', :target => '_blank' } Ikebukuro station on Ikebukuro line + , + %a{ :href => 'http://www.seibu-group.co.jp/railways/tourist/english/index.html', :target => '_blank' } Seibu Railway. + +%h3 Japanese-Style Inns +%p.linkMark + %a{ :href => "http://www.kimi-ryokan.jp/", :target => "_blank"} Kimi Ryokan + +%h3 Motels +%p.linkMark + %a{ :href => "http://www.sakura-hotel-ikebukuro.com/index.php", :target => "_blank"} Sakura Hotel Ikebukuro +%p.linkMark + %a{ :href => "http://www.apahotel.com/hotel/shutoken/14_ikebukuro-eki-kitaguchi/index.html", :target => "_blank"} APA Hotel Ikebukuro Station North Side (link to Japanese page) +%p.linkMark + %a{ :href => "http://www.superhoteljapan.com/en/s-hotels/?7e84aa42ea0775100b731c855585d599=dad21450f8ba4957adda33dc05e16e9e#3", :target => "_blank"} Super Hotel City Ikebukuro Kitaguchi + +%h3 Hotels +%p + %a.linkMark{ :href => "http://www.metropolitan.jp/e/index.html", :target => "_blank"} Hotel Metropolitan +%p + %a.linkMark{ :href => "http://www.princehotels.com/en/sunshine/", :target => "_blank"} Sunshine City Prince Hotel diff --git a/app/views/pages/2011/_for_attendees_hotel_and_travel.ja.html.haml b/app/views/pages/2011/_for_attendees_hotel_and_travel.ja.html.haml new file mode 100644 index 00000000..7da7d082 --- /dev/null +++ b/app/views/pages/2011/_for_attendees_hotel_and_travel.ja.html.haml @@ -0,0 +1,19 @@ +%p 会場近くにはホテルがありませんので、西武池袋線池袋駅近くに宿泊するのが便利です。 + +%h3 旅館 +%p.linkMark + %a{ :href => "http://www.kimi-ryokan.jp/", :target => "_blank"} 貴美旅館 + +%h3 ビジネスホテル +%p.linkMark + %a{ :href => "http://www.sakura-hotel-ikebukuro.com", :target => "_blank"} サクラホテル池袋 +%p.linkMark + %a{ :href => "http://www.apahotel.com/hotel/shutoken/14_ikebukuro-eki-kitaguchi/index.html", :target => "_blank"} アパホテル〈池袋駅北口〉 +%p.linkMark + %a{ :href => "http://www.superhotel.co.jp/h_links/ikebukuro/ikebukuro.html", :target => "_blank"} スーパーホテルcity池袋北口 + +%h3 シティホテル +%p.linkMark + %a{ :href => "http://www.metropolitan.jp/", :target => "_blank"} ホテルメトロポリタン +%p.linkMark + %a{ :href => "http://www.princehotels.co.jp/sunshine/", :target => "_blank"} サンシャインシティプリンスホテル diff --git a/app/views/pages/2011/_important_news.en.html.haml b/app/views/pages/2011/_important_news.en.html.haml new file mode 100644 index 00000000..5a3eee11 --- /dev/null +++ b/app/views/pages/2011/_important_news.en.html.haml @@ -0,0 +1,12 @@ +%ul + %li + %time{:datetime => "2011-05-27"} 2011-05-27 + %a{:href => "http://rubykaigi.tdiary.net/20110527.html#p02", :target => "_blank"} + RubyKaigi call for Lightning Talk (LT) + %li + %time{:datetime => "2011-05-19"} 2011-05-19 + %a{:href => "http://rubykaigi.tdiary.net/20110519.html", :target => "_blank"} + #{t(:canceled)} + %li + %time{:datetime => "2011-04-13"} 2011-04-13 + %a{:href => "http://rubykaigi.tdiary.net/20110413.html"} RubyKaigi planning memo for overseas diff --git a/app/views/pages/2011/_important_news.ja.html.haml b/app/views/pages/2011/_important_news.ja.html.haml new file mode 100644 index 00000000..2a636a98 --- /dev/null +++ b/app/views/pages/2011/_important_news.ja.html.haml @@ -0,0 +1,13 @@ +%ul + %li + %time{:datetime => "2011-05-28"} 2011-05-28 + %a{:href => "http://rubykaigi.tdiary.net/20100813.html#p01"} + チケットの譲渡、利用者の変更方法について(2010の記述ですが2011も同様) + %li + %time{:datetime => "2011-05-27"} 2011-05-27 + %a{:href => "http://rubykaigi.tdiary.net/20110527.html#p01"} + Ruby会議2011 のライトニングトークを募集します + %li + %time{:datetime => "2011-05-19"} 2011-05-19 + %a{:href => "http://rubykaigi.tdiary.net/20110519.html"} + #{t(:canceled)} diff --git a/app/views/pages/2011/_prospectus.en.html.haml b/app/views/pages/2011/_prospectus.en.html.haml new file mode 100644 index 00000000..ca299f76 --- /dev/null +++ b/app/views/pages/2011/_prospectus.en.html.haml @@ -0,0 +1,20 @@ +%p + RubyKaigi, held annually since 2006, is a world class conference about the object-oriented scripting language Ruby. Last year's RubyKaigi, held in Tsukuba, attracted over 2,000 people during the three days it was held. + +%p + RubyKaigi 2011, the 6th annual RubyKaigi, will be held over 3 days, from July 16th to 18th, 2011. The venue for RubyKaigi 2011 is Nerima Bunka Center, Tokyo. This venue will be the biggest to date, and we anticipate this will be our largest RubyKaigi yet. + +%p + Since its inception, RubyKaigi has created a place for Rubyists to exchange ideas and make friendships. Thanks to the support of the speakers, participants, sponsors, and many others, RubyKaigi has matured into the large scale conference it is today. However, continuing RubyKaigi under the current setup poses many challenges. + +%p + So RubyKaigi 2011 will be the last time we use the current setup. As such, this RubyKaigi's theme will be "The Final RubyKaigi". + +%p + In order to create a new setup and move in a new direction we will use the current system one more time. By looking at what it can achieve and how it is limited, we will be able to see the event's future form. + +%p + RubyKaigi has served as the place for Ruby and Rubyists alike. We warmly invite everyone to participate in what will be not just be "The Final RubyKaigi" but also "The Greatest Ruby Kaigi". + +%p.right + Masayoshi Takahashi, The RubyKaigi 2011 Team diff --git a/app/views/pages/2011/_prospectus.ja.html.haml b/app/views/pages/2011/_prospectus.ja.html.haml new file mode 100644 index 00000000..c0a7bda0 --- /dev/null +++ b/app/views/pages/2011/_prospectus.ja.html.haml @@ -0,0 +1,20 @@ +%p + 日本Ruby会議は、オブジェクト指向スクリプト言語Rubyに関するイベントとしては世界でも最大級のもので、2006年から毎年開催されています。昨年つくばで開催された日本Ruby会議2010は、国内外から、3日間でのべ2000人ほどの来場者を数えました。 + +%p + その第6回目となる日本Ruby会議2011(略称:RubyKaigi2011)は、2011年7月16日から18日までの3日間、練馬文化センター(東京都練馬区)にて開催いたします。会場の規模としては昨年以上のものとなり、これまで以上の多くの参加を見込んでいます。 + +%p + これまでRubyKaigiは、2006年の初回から昨年まで、Rubyの様々な発展を共有し、Rubyistたちの出会いを生み出し、育む「場」として、数多くのスピーカー、参加者、スポンサー、そしてそれ以外にも多くの方々のご支援、ご協力を賜りながら、年々その規模を拡大しながら成長を続けて参りました。しかしながら、拡大する規模にともない、これまでと同様の枠組みでの開催には、様々な課題が生じてきているのも事実です。 + +%p + そこで、今回のRubyKaigi2011では、これまでのRubyKaigiの総決算として、一つの大きな区切りをつけることといたしました。今回のRubyKaigiのテーマは、「最後のRubyKaigi」になります。 + +%p + 新たな枠組みを築くべく、大きく舵を切る前に、現在の枠組みでできることの全てを尽くしてみる。そうすれば、そこで垣間見た達成と限界から、あるべき未来の姿も見えてくるのではないでしょうか。 + +%p + これまでのRubyKaigiが果たして来た、RubyとRubyistにとっての「場」。その集大成として、「最後のRubyKaigi」であると同時に「最高のRubyKaigi」となるよう、多くのみなさまのご参加をお待ち申し上げます。 + +%p.right + 日本Ruby会議2011実行委員長 高橋征義 diff --git a/app/views/pages/2011/about.html.haml b/app/views/pages/2011/about.html.haml new file mode 100644 index 00000000..9139761c --- /dev/null +++ b/app/views/pages/2011/about.html.haml @@ -0,0 +1,91 @@ +- @title = t(:about) +#content + %h1 + #{t(:about)} + %aside + %ul + %li + %a{:href => "/2011/#{current_locale}/about#diary"} + #{t(:rubykaigi_nikki)} + %li + %a{:href => "/2011/#{current_locale}/about#prospectus"} + #{t(:rubykaigi2011)} #{t(:prospectus)} + %li + %a{:href => "/2011/#{current_locale}/about#press"} + #{t(:press)} + -#%li + -# %a{:href => "/2011/#{current_locale}/about#team"} + -# #{t(:rubykaigi2011)} #{t(:team)} + %li + %a{:href => "/2011/#{current_locale}/about#photographers"} + #{t(:photographers)} + #main + %article#diary + %h2 + %a{:name => "diary"} + #{t(:rubykaigi_nikki)} + %p #{t(:about_rubykaigi_nikki)} + %p.rss + != render :partial => 'shared/2011/rss_btn' + %p.btn + %a{:href => "http://rubykaigi.tdiary.net/"} + %img{:alt => "#{t(:rubykaigi_nikki)}", :src => "/2011/images/aboutBtnBlog.png"} + != render :partial => 'shared/2011/back_to_top' + %article + %h2 + %a{:name => "prospectus"} + #{t(:rubykaigi2011)} #{t(:prospectus)} + != render :partial => 'pages/2011/prospectus' + != render :partial => 'shared/2011/back_to_top' + %article + %h2 + %a{:name => "press"} + #{t(:press)} + %p メディア・報道関係者向けに日本Ruby会議2011についての情報をお伝えするメーリングリストを用意しました。 + %p 取材についての情報や来場案内などもこちらでお伝えいたしますので、日本Ruby会議2011にご興味のあるメディア・報道関係の方は是非ご参加下さい。 + %h3 メーリングリストへの登録方法 + %p qwikを用いておりますので、下記要領でメールを送信してください。 + %div.mailPlease + %ul.listMark + %li To: rk11press _at_ qwik.atdot.net + %li Cc: snoozer.05 _at_ rubykaigi.org + %li 件名: Join the list + %li + 本文: + %br + RubyKaigi2011のメディア・報道社向けメーリングリストに参加します。 + %br + 所属: (ご自身の所属組織) + %br + お名前: (ご自身のお名前) + %p ※ メールアドレス中の_at_は@に読み替えてください。 + %h3 + #{t(:inquiry)} + %p 何か不明な点があれば、2011_at_rubykaigi.org までお気軽にお問い合わせください。 + != render :partial => 'shared/2011/back_to_top' + -#= render :partial => 'shared/2011/team' + %article#photographers + %h2 + %a{:name => "photographers"} + #{t(:photographers)} + %p + kakutani + %br + %a{:href => "http://www.flickr.com/photos/kakutani", :target => "_blank"} + %img{:alt => "kakutani", :src => "http://www.gravatar.com/avatar/63a6bff89d692e21de20868202bc8dde?s=32"} + %p + snoozer05 + %br + %a{:href => "http://www.flickr.com/photos/snoozer/", :target => "_blank"} + %img{:alt => "", :src => "http://www.gravatar.com/avatar/941b170e5a115a295cccb5f5cdf0a800?s=32"} + %p + tmaeda_japan + %br + %a{:href => "http://www.flickr.com/photos/tmaedax/", :target => "_blank"} + %img{:alt => "", :src => "http://www.gravatar.com/avatar/f482a467d8202cf35b3aa7df192d3efb?s=32"} + %p + Naoto Takai + %br + %a{:href => "http://www.flickr.com/photos/recompile_net/", :target => "_blank"} + %img{:alt => "", :src => "/2011/images/commonAvatar.png"} + != render :partial => 'shared/2011/back_to_top' diff --git a/app/views/pages/2011/advent.en.html.haml b/app/views/pages/2011/advent.en.html.haml new file mode 100644 index 00000000..4a66d728 --- /dev/null +++ b/app/views/pages/2011/advent.en.html.haml @@ -0,0 +1,29 @@ +- @title = t(:advent) +#content + %h1 + #{t(:advent)} + %aside + %ul + %li + %a{:href => "/2011/#{current_locale}/advent#about"} + #{t(:advent_about)} + %li + %a{:href => "/2011/#{current_locale}/advent#calendar"} + #{t(:advent_calendar)} + #main + %article + %h2 + %a{:name => "about"} + #{t(:advent_about)} + %p 今年は会場の制約もあって、昨年の「企画」のような中規模の催しを会期中に 会場で実施することにはあまり期待できません。具体的には「Head First ふつ うのシステム開発」や「JRuby会議2010」、「Ruby powering 9 million dining tables」ぐらいの規模のイベントのための適切な場所を確保できません。 + %p これに対応するために、RubyKaigi 2011の会期の前にRuby関連イベントを独自 に開催してもらって、連続協賛イベントみたいな試みをやれないかなあと思っ ています。例えるなら、12月にクリスマスを楽しみに待つためにプログラミン グTipsを連ねるAdvent Calendarがあるように、7月に「最後のRubyKaigi」を楽 しみに待つための「RubyKaigi Advent Calender」を用意できるといいなと考え ています。 ……といっても現時点では「考えています」というレベルでしかあ りません。こういう取り組みに興味のあるRubyコミュニティや企業さま、有志 がいらっしゃいましたら、お気軽に 2011 at rubykaigi dot org までメールで お問い合わせください。 + %p 時期が時期なので、日本Ruby会議2011実行委員会が具体的なイベントの準備や 運営に人的リソースを割くのは難しいと思います(Ustream.tvで中継したいから KaigiFreaks来てくれ、と言われても困りそう)が、rubykaigi.orgでの告知や、 コンテンツをどうするかといった準備段階での相談や連携には可能な限り協力 していきたいと思っています。たとえば、JRubyKaigi2011を7月のどこかで開催 するとか、ジュンク堂書店池袋本店でRuby関連書籍のトークセッションがある とか、7/12(火)のAsakusa.rbの定例meetupをRubyKaigi直前特集拡大版みたいな のにするとか、そういうのが実現したらいいなあ、ということを漠然と考えて います。 + %p 繰り返しになりますが、RubyKaigi Advent Calendarの実現に興味のある方がい らっしゃいましたら、是非ぜひお気軽に 2011 at rubykaigi dot org までメー ルにてご連絡いただけると助かります。協賛開催してくれるイベントが無けれ ば実現できない企画なので、こちらも皆さんのお力を借りたいと思っています。 + != render :partial => 'shared/2011/back_to_top' + %article + %h2 + %a{:name => "calendar"} + #{t(:advent_calendar)} + %p Coming soon... + != render :partial => 'shared/2011/back_to_top' + diff --git a/app/views/pages/2011/advent.ja.html.haml b/app/views/pages/2011/advent.ja.html.haml new file mode 100644 index 00000000..4a66d728 --- /dev/null +++ b/app/views/pages/2011/advent.ja.html.haml @@ -0,0 +1,29 @@ +- @title = t(:advent) +#content + %h1 + #{t(:advent)} + %aside + %ul + %li + %a{:href => "/2011/#{current_locale}/advent#about"} + #{t(:advent_about)} + %li + %a{:href => "/2011/#{current_locale}/advent#calendar"} + #{t(:advent_calendar)} + #main + %article + %h2 + %a{:name => "about"} + #{t(:advent_about)} + %p 今年は会場の制約もあって、昨年の「企画」のような中規模の催しを会期中に 会場で実施することにはあまり期待できません。具体的には「Head First ふつ うのシステム開発」や「JRuby会議2010」、「Ruby powering 9 million dining tables」ぐらいの規模のイベントのための適切な場所を確保できません。 + %p これに対応するために、RubyKaigi 2011の会期の前にRuby関連イベントを独自 に開催してもらって、連続協賛イベントみたいな試みをやれないかなあと思っ ています。例えるなら、12月にクリスマスを楽しみに待つためにプログラミン グTipsを連ねるAdvent Calendarがあるように、7月に「最後のRubyKaigi」を楽 しみに待つための「RubyKaigi Advent Calender」を用意できるといいなと考え ています。 ……といっても現時点では「考えています」というレベルでしかあ りません。こういう取り組みに興味のあるRubyコミュニティや企業さま、有志 がいらっしゃいましたら、お気軽に 2011 at rubykaigi dot org までメールで お問い合わせください。 + %p 時期が時期なので、日本Ruby会議2011実行委員会が具体的なイベントの準備や 運営に人的リソースを割くのは難しいと思います(Ustream.tvで中継したいから KaigiFreaks来てくれ、と言われても困りそう)が、rubykaigi.orgでの告知や、 コンテンツをどうするかといった準備段階での相談や連携には可能な限り協力 していきたいと思っています。たとえば、JRubyKaigi2011を7月のどこかで開催 するとか、ジュンク堂書店池袋本店でRuby関連書籍のトークセッションがある とか、7/12(火)のAsakusa.rbの定例meetupをRubyKaigi直前特集拡大版みたいな のにするとか、そういうのが実現したらいいなあ、ということを漠然と考えて います。 + %p 繰り返しになりますが、RubyKaigi Advent Calendarの実現に興味のある方がい らっしゃいましたら、是非ぜひお気軽に 2011 at rubykaigi dot org までメー ルにてご連絡いただけると助かります。協賛開催してくれるイベントが無けれ ば実現できない企画なので、こちらも皆さんのお力を借りたいと思っています。 + != render :partial => 'shared/2011/back_to_top' + %article + %h2 + %a{:name => "calendar"} + #{t(:advent_calendar)} + %p Coming soon... + != render :partial => 'shared/2011/back_to_top' + diff --git a/app/views/pages/2011/archives.html.haml b/app/views/pages/2011/archives.html.haml new file mode 100644 index 00000000..96f4fb0b --- /dev/null +++ b/app/views/pages/2011/archives.html.haml @@ -0,0 +1,42 @@ +- @title = t(:archives) +#content + %h1 + #{t(:archives)} + %article + %div + %h2 + #{t(:rubykaigi)}2010 + %p + %a{:href => "http://rubykaigi.org/2010/#{current_locale}", :target => "_blank"} + %img{:alt => "#{t(:rubykaigi)}2010", :src => "/2011/images/rubykaigi2010.png"}/ + %div + %h2 + #{t(:rubykaigi)}2009 + %p + %a{:href => "http://rubykaigi.org/2009/#{current_locale}", :target => "_blank"} + %img{:alt => "#{t(:rubykaigi)}2009", :src => "/2011/images/rubykaigi2009.png"}/ + %div + %h2 + #{t(:rubykaigi)}2008 + %p + %a{:href => "http://jp.rubyist.net/RubyKaigi2008/", :target => "_blank"} + %img{:alt => "#{t(:rubykaigi)}2008", :src => "/2011/images/rubykaigi2008.png"}/ + %div + %h2 + #{t(:rubykaigi)}2007 + %p + %a{:href => "http://jp.rubyist.net/RubyKaigi2007/", :target => "_blank"} + %img{:alt => "#{t(:rubykaigi)}2007", :src => "/2011/images/rubykaigi2007.png"}/ + %div + %h2 + #{t(:rubykaigi)}2006 + %p + %a{:href => "http://jp.rubyist.net/RubyKaigi2006/", :target => "_blank"} + %img{:alt => "#{t(:rubykaigi)}2006", :src => "/2011/images/rubykaigi2006.png"}/ + %div + %h2 + #{t(:regional_rubykaigi)} + %p + %a{:href => "http://regional.rubykaigi.org/", :target => "_blank"} + %img{:alt => "#{t(:regional_rubykaigi)}", :src => "/2011/images/rubykaigiRegional.png"}/ + != render :partial => 'shared/2011/back_to_top' diff --git a/app/views/pages/2011/call_for_presentations.html.haml b/app/views/pages/2011/call_for_presentations.html.haml new file mode 100644 index 00000000..4d575932 --- /dev/null +++ b/app/views/pages/2011/call_for_presentations.html.haml @@ -0,0 +1,30 @@ +- @title = 'Call for Presentations' +-content_for :head do + :plain + +%div{:style => 'border-top: 7px solid #000; width: 100%;'} + The End Of Rubykaigi - 2011/07/16-18 at ToKyo, Japan +%p{:style => 'margin: 10px;'} + our brand new website design is coming soon :) + +%hr + +%h1{:style => 'margin: 10px;'} + #{t('call_for_presentations')} + +%div{:style => 'border: 1px solid #000; width: 740px; margin: 10px; padding: 10px;'} + + != render :partial => 'pages/2011/call_for_presentations' + +%div{:style => 'margin: 10px;'} + ≫ RubyKaigi 2011 diff --git a/app/views/pages/2011/call_for_sponsors.html.haml b/app/views/pages/2011/call_for_sponsors.html.haml new file mode 100644 index 00000000..c902ccca --- /dev/null +++ b/app/views/pages/2011/call_for_sponsors.html.haml @@ -0,0 +1,30 @@ +- @title = 'RubyKaigi 2011 is looking for Sponsors.' +-content_for :head do + :plain + +%div{:style => 'border-top: 7px solid #000; width: 100%;'} + The End Of Rubykaigi - 2011/07/16-18 at ToKyo, Japan +%p{:style => 'margin: 10px;'} + our brand new website design is coming soon :) + +%hr + +%h1{:style => 'margin: 10px;'} + #{t('call_for_sponsors')} + +%div{:style => 'border: 1px solid #000; width: 740px; margin: 10px; padding: 10px;'} + + != render :partial => 'pages/2011/call_for_sponsors' + +%div{:style => 'margin: 10px;'} + ≫ RubyKaigi 2011 diff --git a/app/views/pages/2011/cfp_instruction.html.haml b/app/views/pages/2011/cfp_instruction.html.haml new file mode 100644 index 00000000..714d67ec --- /dev/null +++ b/app/views/pages/2011/cfp_instruction.html.haml @@ -0,0 +1,30 @@ +- @title = 'Call for Presentations' +-content_for :head do + :plain + +%div{:style => 'border-top: 7px solid #000; width: 100%;'} + The End Of Rubykaigi - 2011/07/16-18 at ToKyo, Japan +%p{:style => 'margin: 10px;'} + our brand new website design is coming soon :) + +%hr + +%h1{:style => 'margin: 10px;'} + #{t('cfp_instruction')} + +%div{:style => 'border: 1px solid #000; width: 740px; margin: 10px; padding: 10px;'} + + != render :partial => 'pages/2011/cfp_instruction' + +%div{:style => 'margin: 10px;'} + ≫ RubyKaigi 2011 diff --git a/app/views/pages/2011/coming_soon.html.haml b/app/views/pages/2011/coming_soon.html.haml new file mode 100644 index 00000000..6e760857 --- /dev/null +++ b/app/views/pages/2011/coming_soon.html.haml @@ -0,0 +1,4 @@ +- @title = "Coming soon..." +#content + %h1 + %img{:alt => "Coming soon...", :src => "/images/comingSoon.png"} diff --git a/app/views/pages/2011/for_attendees.html.haml b/app/views/pages/2011/for_attendees.html.haml new file mode 100644 index 00000000..ee9c6b06 --- /dev/null +++ b/app/views/pages/2011/for_attendees.html.haml @@ -0,0 +1,231 @@ +- @title = t(:for_attendees) +#content + %h1 + #{t(:for_attendees)} + %aside + %ul + %li + %a{:href => "/2011/#{current_locale}/for_attendees#schedule"} + #{t(:schedule)} + %li + %a{:href => "/2011/#{current_locale}/for_attendees#live"} + #{t(:live)} + %li + %a{:href => "/2011/#{current_locale}/for_attendees#access"} + #{t(:access)} + %li + %a{:href => "/2011/#{current_locale}/for_attendees#hotel_and_travel"} + #{t(:hotel_and_travel)} + %li + %a{:href => "/2011/#{current_locale}/for_attendees#floor_guide"} + #{t(:floor_guide)} + %li + %a{:href => "/2011/#{current_locale}/for_attendees#advent"} + #{t(:advent)} + %li + %a{:href => "/2011/#{current_locale}/for_attendees#community"} + #{t(:community)} + %li + %a{:href => "/2011/#{current_locale}/for_attendees#faq"} + FAQ + %li + %a{:href => "/2011/#{current_locale}/for_attendees#goodies"} + #{t(:goodies)} + #main + %article#schedule + %h2 + %a{:name => "schedule"} + #{t(:schedule)} + %p.btn + %a{:href => "/2011/#{current_locale}/schedule/grid"} + %img{:alt => "Schedule", :height => "40", :src => "/2011/images/indexBtnSchedule.png", :width => "320", :height => "40"} + != render :partial => 'shared/2011/back_to_top' + %article#live + %h2 + %a{:name => "live"} + #{t(:live)} + %p We'll make live streaming Ruby Kaigi 2011 on ustream.tv. + %ul.listMark + %li Recorded videos will be published later (To Be Announced). + %li This program is brought you to by KaigiFreaks. + %p.linkMark + #{t(:hall_main)}: + %a{:href => "/2011/#{current_locale}/coming_soon"} Ustream + | + %a{:href => "/2011/#{current_locale}/coming_soon"} IRC + %p.linkMark + #{t(:hall_sub)}: + %a{:href => "/2011/#{current_locale}/coming_soon"} Ustream + | + %a{:href => "/2011/#{current_locale}/coming_soon"} IRC + != render :partial => 'shared/2011/back_to_top' + %article#access + %h2 + %a{:name => "access"} + #{t(:access)} + != render :partial => 'pages/2011/for_attendees_access' + != render :partial => 'shared/2011/back_to_top' + %article#hotel_and_travel + %h2 + %a{:name => "hotel_and_travel"} + #{t(:hotel_and_travel)} + != render :partial => 'pages/2011/for_attendees_hotel_and_travel' + != render :partial => 'shared/2011/back_to_top' + %article#floor_guide + %h2 + %a{:name => "floor_guide"} + #{t(:floor_guide)} + %p Coming soon... + != render :partial => 'shared/2011/back_to_top' + %article#advent + %h2 + %a{:name => "advent"} + #{t(:advent)} + %p.btn + %a{:href => "/2011/#{current_locale}/advent_calendar"} + %img{:alt => "Advent(アドベント)", :height => "40", :src => "/2011/images/indexBtnAdvent.png", :width => "320", :height => "40"} + != render :partial => 'shared/2011/back_to_top' + != render :partial => 'shared/2011/community' + != render :partial => 'shared/2011/back_to_top' + %article#faq + %h2 + %a{:name => "faq"} + FAQ + %p Coming soon... + != render :partial => 'shared/2011/back_to_top' + + %article#goodies + %h2 + %a{:name => "goodies"} + #{t(:goodies)} + %h3 + #{t(:official_logo)} + .download + %dl + %dt + %a{:href => "/2011/goodies/official-logo-set.zip"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + EPS and SVG + %p.author + Author:norio, + URL: + %a{ :href => "http://twitter.com/norio", :target => "_blank"}> http://twitter.com/norio + , License: + %a{ :href => "http://creativecommons.org/licenses/by/3.0/", :rel => "license", :target => "_blank"}> CC-by-3.0 + %p + %img{:alt => "#{t(:official_logo)}", :src => '/2011/images/forAttendeesGoodiesLogoThumb.png'} + %h3 + #{t(:badges)} (160x160) + .download + %dl + %dt + %a{:href => "/2011/goodies/badges/160x160attendee.png"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + ATTENDEE + %dt + %a{:href => "/2011/goodies/badges/160x160attendeeAway.png"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + ATTENDEE(AWAY) + %dt + %a{:href => "/2011/goodies/badges/160x160speaker.png"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + SPEAKER + %dt + %a{:href => "/2011/goodies/badges/160x160committer.png"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + COMMITTER + %dt + %a{:href => "/2011/goodies/badges/160x160individualSponsor.png"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + INDIVIDUAL SPONSOR + %dt + %a{:href => "/2011/goodies/badges/160x160sponsor.png"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + SPONSOR + %dt + %a{:href => "/2011/goodies/badges/160x160staff.png"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + STAFF + %p + %img{:alt => "#{t(:badges)}(160x160)", :src => '/2011/goodies/badges/160x160attendee.png'} + %h3 + #{t(:badges)} (160x90) + .download + %dl + %dt + %a{:href => "/2011/goodies/badges/160x90attendee.png"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + ATTENDEE + %dt + %a{:href => "/2011/goodies/badges/160x90attendeeAway.png"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + ATTENDEE(AWAY) + %dt + %a{:href => "/2011/goodies/badges/160x90speaker.png"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + SPEAKER + %dt + %a{:href => "/2011/goodies/badges/160x90committer.png"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + COMMITTER + %dt + %a{:href => "/2011/goodies/badges/160x90individualSponsor.png"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + INDIVIDUAL SPONSOR + %dt + %a{:href => "/2011/goodies/badges/160x90sponsor.png"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + SPONSOR + %dt + %a{:href => "/2011/goodies/badges/160x90staff.png"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + STAFF + %p + %img{:alt => "#{t(:badges)}(160x90)", :src => '/2011/goodies/badges/160x90attendee.png'} + %h3 + #{t(:wallpapers)} + .download + %dl + %dt + %a{:href => "/2011/goodies/wallpapers01/2560x1440.jpg"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + 2560 x 1440 + %dt + %a{:href => "/2011/goodies/wallpapers01/1920x1200.jpg"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + 1920 x 1200 + %dt + %a{:href => "/2011/goodies/wallpapers01/1600x1200.jpg"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + 1600 x 1200 + %dt + %a{:href => "/2011/goodies/wallpapers01/1440x900.jpg"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + 1440 x 900 + %dt + %a{:href => "/2011/goodies/wallpapers01/1024x1024.jpg"} + %img{:src => "/2011/images/commonBtnDownload.png", :alt => "Download"} + %dd + 1024 x 1024 + %p + %img{:alt => "Wallpapers", :src => '/2011/goodies/wallpapers01/thumb.jpg'} + != render :partial => 'shared/2011/back_to_top' diff --git a/app/views/pages/2011/index.html.haml b/app/views/pages/2011/index.html.haml new file mode 100644 index 00000000..2cf624ae --- /dev/null +++ b/app/views/pages/2011/index.html.haml @@ -0,0 +1,114 @@ +- content_for :head do + :javascript + $(document).ready(function(){ + $('#photos').galleryView({ + panel_width: 640, + panel_height: 380, + transition_speed: 1500, + transition_interval: 5000, + nav_theme: 'circle', + show_filmstrip: false, + pause_on_hover: true + }); + }); +%header + %h1 + %img{:alt => "Date: July16(Sat) - 18(Mon),2011 Venue: Nerima Culture Center(Tokyo, Japan) Keynotes: Yukihiro \"Mats\" Matsumoto, Dave Thomas, Aaron Patterson(a.k.a. tenderlove)", :height => "100", :src => "/2011/images/indexDetails.png", :width => "980"} + %section#photos + %ul.galleryview + %li + %img{:alt => "#{t(:rubykaigi)}2006", :src => "/2011/photos/200601.png"} + %li + %img{:alt => "#{t(:rubykaigi)}2006", :src => "/2011/photos/200602.png"} + %li + %img{:alt => "#{t(:rubykaigi)}2007", :src => "/2011/photos/200701.png"} + %li + %img{:alt => "#{t(:rubykaigi)}2007", :src => "/2011/photos/200702.png"} + %li + %img{:alt => "#{t(:rubykaigi)}2008", :src => "/2011/photos/200801.png"} + %li + %img{:alt => "#{t(:rubykaigi)}2008", :src => "/2011/photos/200802.png"} + %li + %img{:alt => "#{t(:rubykaigi)}2009", :src => "/2011/photos/200901.png"} + %li + %img{:alt => "#{t(:rubykaigi)}2009", :src => "/2011/photos/200902.png"} + %li + %img{:alt => "#{t(:rubykaigi)}2010", :src => "/2011/photos/201001.png"} + %li + %img{:alt => "#{t(:rubykaigi)}2010", :src => "/2011/photos/201002.png"} + %section#registration + %p.btn + %a{:href => "/2011/#{current_locale}/registration"} + %img{:alt => "Registration (チケット購入)", :src => "/2011/images/registrationBtnTickets.png", :width => "320", :height => "90"} + %p.btn + %a{:href => "/2011/#{current_locale}/schedule/grid"} + %img{:alt => "Schedule", :height => "40", :src => "/2011/images/indexBtnSchedule.png", :width => "320", :height => "40"} + %p.btn + %a{:href => "/2011/#{current_locale}/for_attendees#access"} + %img{:alt => "Access(アクセス)", :height => "40", :src => "/2011/images/indexBtnAccess.png", :width => "320", :height => "40"} + %p.btn + %a{:href => "/2011/#{current_locale}/for_attendees#hotel_and_travel"} + %img{:alt => "Hotel&Travel(宿泊のご案内)", :height => "40", :src => "/2011/images/indexBtnHotelAndTravel.png", :width => "320", :height => "40"} + %p.btn + %a{:href => "/2011/#{current_locale}/advent_calendar"} + %img{:alt => "Advent(アドベント)", :height => "40", :src => "/2011/images/indexBtnAdvent.png", :width => "320", :height => "40"} + %p.btn + %a{:href => "/2011/#{current_locale}/for_attendees#community"} + %img{:alt => "Community(コミュニティ)", :src => "/2011/images/indexBtnCommunity.png", :width => "320", :height => "40"} + %section#tags + %h2 + %img{:alt => "Tags", :height => "35", :src => "/2011/images/indexTagsHeader.png", :width => "250"} + %dl + %dt Twitter: + %dd + %a{:href => "http://twitter.com/#search?q=%23rubykaigi"} + \#rubykaigi + %dt Flickr: + %dd + %a{:href => "http://www.flickr.com/search/?q=rubykaigi2011&f=hp", :target => "_blank"} + rubykaigi2011 + %dt Blog: + %dd + %a{:href => "http://b.hatena.ne.jp/t/rubykaigi2011", :target => "_blank"} + rubykaigi2011 +#content + %section#news + != render 'shared/2011/news_section_on_index' + %section#twitter + %h2 + %img{:alt => "", :height => "35", :src => "/2011/images/indexTwitterHeader.png", :width => "250"} + %article + %script{:src => "http://widgets.twimg.com/j/2/widget.js"} + :javascript + new TWTR.Widget({ + version: 2, + type: 'search', + search: '#rubykaigi', + interval: 6000, + title: 'Twitter #rubykaigi', + subject: '', + width: 'auto', + height: 245, + theme: { + shell: { + background: '#fff', + color: '#160f0d' + }, + tweets: { + background: '#ffffff', + color: '#160f0d', + links: '#4f7280' + } + }, + features: { + scrollbar: false, + loop: true, + live: true, + hashtags: true, + timestamp: true, + avatars: true, + toptweets: false, + behavior: 'default' + } + }).render().start(); + != render :partial => 'shared/2011/sponsors_list' diff --git a/app/views/pages/2011/phone_coming_soon.html.haml b/app/views/pages/2011/phone_coming_soon.html.haml new file mode 100644 index 00000000..6e760857 --- /dev/null +++ b/app/views/pages/2011/phone_coming_soon.html.haml @@ -0,0 +1,4 @@ +- @title = "Coming soon..." +#content + %h1 + %img{:alt => "Coming soon...", :src => "/images/comingSoon.png"} diff --git a/app/views/pages/2011/phone_index.html.haml b/app/views/pages/2011/phone_index.html.haml new file mode 100644 index 00000000..f14ed886 --- /dev/null +++ b/app/views/pages/2011/phone_index.html.haml @@ -0,0 +1,46 @@ +#content + %h1 + %img{:alt => "Date: July16(Sat) - 18(Mon),2011 Venue: Nerima Culture Center(Tokyo, Japan) Keynotes: Yukihiro \"Mats\" Matsumoto, Dave Thomas, Aaron Patterson(a.k.a. tenderlove)", :height => "235", :src => "/2011/images/phoneDetails.png", :width => "300"} + .section + %p.btn + %a{:href => "/2011/#{current_locale}/phone_registration"} + %img{:alt => "Registration(チケット購入)", :src => "/2011/images/registrationBtnTickets.png"} + %p.btn + -#%a{:href => "/2011/#{current_locale}/schedule/grid"} + %a{:href => "/2011/#{current_locale}/phone_coming_soon"} + %img{:alt => "Programs(プログラム)", :src => "/2011/images/indexBtnPrograms.png"} + %p.btn + %a{:href => "/2011/#{current_locale}/phone_coming_soon"} + %img{:alt => "Access(アクセス)", :src => "/2011/images/indexBtnAccess.png"} + %p.btn + %a{:href => "/2011/#{current_locale}/phone_coming_soon"} + %img{:alt => "Hotel & Travel(宿泊のご案内)", :src => "/2011/images/indexBtnHotelAndTravel.png"} + %p.btn + %a{:href => "/2011/#{current_locale}/phone_coming_soon", :target => "_blank"} + %img{:alt => "Floor Guide(フロアガイド)", :src => "/2011/images/indexBtnFloorGuide.png"} + #news + %h2 + %img{:alt => "", :height => "35", :src => "/2011/images/indexNewsHeader.png", :width => "250"} + #information + = render :partial => 'pages/2011/important_news' + = render :partial => 'shared/2011/headline' + %p + %a{:href => "#"} + %img{:alt => "Read more...", :height => "30", :src => "/2011/images/commonReadMore.png", :width => "100"} + #tags + %h2 + %img{:alt => "Tags", :height => "35", :src => "/2011/images/indexTagsHeader.png", :width => "250"} + %dl + %dt Twitter: + %dd + %a{:href => "http://twitter.com/#search?q=%23rubykaigi"} + \#rubykaigi + %dt Flickr: + %dd + %a{:href => "http://www.flickr.com/search/?q=rubykaigi2011&f=hp", :target => "_blank"} + rubykaigi2011 + %dt Blog: + %dd + %a{:href => "http://b.hatena.ne.jp/t/rubykaigi2011", :target => "_blank"} + rubykaigi2011 + diff --git a/app/views/pages/2011/phone_programs.en.html.haml b/app/views/pages/2011/phone_programs.en.html.haml new file mode 100644 index 00000000..7341bf59 --- /dev/null +++ b/app/views/pages/2011/phone_programs.en.html.haml @@ -0,0 +1,32 @@ +- @title = t(:programs) +#content + %h1 + #{t(:programs)} + %div + %h2 + %time{:datetime => "2011-07-16"} + #{t(:date_fri)} + %p + %a.linkMark{:href => "/2011/#{current_locale}/phone_programs_fri_main"} + #{t(:hall_main)} + %p + %a.linkMark{:href => "/2011/#{current_locale}/phone_programs_fri_sub"} + #{t(:hall_sub)} + %h2 + %time{:datetime => "2011-07-17"} + #{t(:date_sat)} + %p + %a.linkMark{:href => "/2011/#{current_locale}/phone_programs_sat_main"} + #{t(:hall_main)} + %p + %a.linkMark{:href => "/2011/#{current_locale}/phone_programs_sat_sub"} + #{t(:hall_sub)} + %h2 + %time{:datetime => "2011-07-18"} + #{t(:date_sun)} + %p + %a.linkMark{:href => "/2011/#{current_locale}/phone_programs_sun_main"} + #{t(:hall_main)} + %p + %a.linkMark{:href => "/2011/#{current_locale}/phone_programs_sun_sub"} + #{t(:hall_sub)} diff --git a/app/views/pages/2011/phone_programs.ja.html.haml b/app/views/pages/2011/phone_programs.ja.html.haml new file mode 100644 index 00000000..7341bf59 --- /dev/null +++ b/app/views/pages/2011/phone_programs.ja.html.haml @@ -0,0 +1,32 @@ +- @title = t(:programs) +#content + %h1 + #{t(:programs)} + %div + %h2 + %time{:datetime => "2011-07-16"} + #{t(:date_fri)} + %p + %a.linkMark{:href => "/2011/#{current_locale}/phone_programs_fri_main"} + #{t(:hall_main)} + %p + %a.linkMark{:href => "/2011/#{current_locale}/phone_programs_fri_sub"} + #{t(:hall_sub)} + %h2 + %time{:datetime => "2011-07-17"} + #{t(:date_sat)} + %p + %a.linkMark{:href => "/2011/#{current_locale}/phone_programs_sat_main"} + #{t(:hall_main)} + %p + %a.linkMark{:href => "/2011/#{current_locale}/phone_programs_sat_sub"} + #{t(:hall_sub)} + %h2 + %time{:datetime => "2011-07-18"} + #{t(:date_sun)} + %p + %a.linkMark{:href => "/2011/#{current_locale}/phone_programs_sun_main"} + #{t(:hall_main)} + %p + %a.linkMark{:href => "/2011/#{current_locale}/phone_programs_sun_sub"} + #{t(:hall_sub)} diff --git a/app/views/pages/2011/phone_programs_fri_main.en.html.haml b/app/views/pages/2011/phone_programs_fri_main.en.html.haml new file mode 100644 index 00000000..097c4d93 --- /dev/null +++ b/app/views/pages/2011/phone_programs_fri_main.en.html.haml @@ -0,0 +1,27 @@ +- @title = t(:date_fri) + t(:hall_main) +#content + %h1 + #{t(:programs)} + %div + %h2 + %time{:datetime => "2011-07-16"} + #{t(:date_fri)} (#{t(:hall_main)}) + %ul.listMark + %li + %p 99:99-99:99 + %p + %a{:href => "/2011/#{current_locale}/phone_programs_permalink"} + title title title title + %p speaker + %li + %p 99:99-99:99 + %p + %a{:href => "/2011/#{current_locale}/phone_programs_permalink"} + title title title title + %p speaker + %li + %p 99:99-99:99 + %p + %a{:href => "/2011/#{current_locale}/phone_programs_permalink"} + title title title title + %p speaker diff --git a/app/views/pages/2011/phone_programs_fri_main.ja.html.haml b/app/views/pages/2011/phone_programs_fri_main.ja.html.haml new file mode 100644 index 00000000..2833041c --- /dev/null +++ b/app/views/pages/2011/phone_programs_fri_main.ja.html.haml @@ -0,0 +1,28 @@ +- @title = t(:date_fri) + t(:hall_main) +#content + %h1 + #{t(:programs)} + %div + %h2 + %time{:datetime => "2011-07-16"} + #{t(:date_fri)} (#{t(:hall_main)}) + %ul.listMark + %li + %p 99:99-99:99 + %p + %a{:href => "/2011/#{current_locale}/phone_programs_permalink"} + title title title title + %p speaker + %li + %p 99:99-99:99 + %p + %a{:href => "/2011/#{current_locale}/phone_programs_permalink"} + title title title title + %p speaker + %li + %p 99:99-99:99 + %p + %a{:href => "/2011/#{current_locale}/phone_programs_permalink"} + title title title title + %p speaker + diff --git a/app/views/pages/2011/phone_programs_permalink.html.haml b/app/views/pages/2011/phone_programs_permalink.html.haml new file mode 100644 index 00000000..1859ec38 --- /dev/null +++ b/app/views/pages/2011/phone_programs_permalink.html.haml @@ -0,0 +1 @@ +!= render :partial => 'shared/2011/programs_permalink' diff --git a/app/views/pages/2011/phone_registration.html.haml b/app/views/pages/2011/phone_registration.html.haml new file mode 100644 index 00000000..e8c820a6 --- /dev/null +++ b/app/views/pages/2011/phone_registration.html.haml @@ -0,0 +1,12 @@ +- @title = t(:registration) +#content + %h1 + #{t(:registration)} + %p{:style=>"margin-bottom:1em"} + - unless authenticated? + != render :partial => 'need_signin' + - else + != link_to 'Show Your Cart', carts_path + != render :partial => 'shared/2011/registration_tickets' + != render :partial => 'shared/2011/registration_party' + != render :partial => 'shared/2011/registration_individual_sponsors' diff --git a/app/views/pages/2011/prospectus.en.html.haml b/app/views/pages/2011/prospectus.en.html.haml new file mode 100644 index 00000000..20a2d0b7 --- /dev/null +++ b/app/views/pages/2011/prospectus.en.html.haml @@ -0,0 +1,30 @@ +- @title = '日本Ruby会議2011 開催趣意書' +-content_for :head do + :plain + +%div{:style => 'border-top: 7px solid #000; width: 100%;'} + The End Of Rubykaigi - 2011/07/16-18 at ToKyo, Japan +%p{:style => 'margin: 10px;'} + our brand new website design is coming soon :) + +%hr + +%h1{:style => 'margin: 10px;'} + #{t('rubykaigi2011')} #{t('prospectus')} + +%div{:style => 'border: 1px solid #000; width: 740px; margin: 10px; padding: 10px;'} + + != render :partial => 'pages/2011/prospectus' + +%div{:style => 'margin: 10px;'} + ≫ RubyKaigi 2011 diff --git a/app/views/pages/2011/prospectus.html.haml b/app/views/pages/2011/prospectus.html.haml new file mode 100644 index 00000000..20a2d0b7 --- /dev/null +++ b/app/views/pages/2011/prospectus.html.haml @@ -0,0 +1,30 @@ +- @title = '日本Ruby会議2011 開催趣意書' +-content_for :head do + :plain + +%div{:style => 'border-top: 7px solid #000; width: 100%;'} + The End Of Rubykaigi - 2011/07/16-18 at ToKyo, Japan +%p{:style => 'margin: 10px;'} + our brand new website design is coming soon :) + +%hr + +%h1{:style => 'margin: 10px;'} + #{t('rubykaigi2011')} #{t('prospectus')} + +%div{:style => 'border: 1px solid #000; width: 740px; margin: 10px; padding: 10px;'} + + != render :partial => 'pages/2011/prospectus' + +%div{:style => 'margin: 10px;'} + ≫ RubyKaigi 2011 diff --git a/app/views/pages/2011/registration.html.haml b/app/views/pages/2011/registration.html.haml new file mode 100644 index 00000000..b76d63e4 --- /dev/null +++ b/app/views/pages/2011/registration.html.haml @@ -0,0 +1,27 @@ +- @title = t(:registration) +#content + %h1 + #{t(:registration)} + %aside + %ul + %li + %a{:href => "/2011/#{current_locale}/registration#tickets"} + #{t(:tickets)} + %li + %a{:href => "/2011/#{current_locale}/registration#party"} + #{t(:official_party)} + %li + %a{:href => "/2011/#{current_locale}/registration#individual_sponsor"} + #{t(:individual_sponsor)} + #main + %p{:style=>"margin-bottom:1em"} + - unless authenticated? + != render :partial => 'need_signin' + - else + != link_to t('show_your_cart'), carts_path(:locale => current_locale) + != render :partial => 'shared/2011/registration_tickets' + != render :partial => 'shared/2011/back_to_top' + != render :partial => 'shared/2011/registration_party' + != render :partial => 'shared/2011/back_to_top' + != render :partial => 'shared/2011/registration_individual_sponsors' + != render :partial => 'shared/2011/back_to_top' diff --git a/app/views/pages/2011/sponsors.html.haml b/app/views/pages/2011/sponsors.html.haml new file mode 100644 index 00000000..f7b68993 --- /dev/null +++ b/app/views/pages/2011/sponsors.html.haml @@ -0,0 +1,12 @@ +- @title = t(:sponsors) +#content + %h1 + #{t(:sponsors)} + != render :partial => 'shared/2011/sponsors_list' + != render :partial => 'shared/2011/back_to_top' + %article#sponsors_registration + %h2 + %a{:name => "sponsors_registration"} + #{t(:sponsors_registration)} + != render :partial => 'pages/2011/call_for_sponsors' + != render :partial => 'shared/2011/back_to_top' diff --git a/app/views/pages/2011/sponsors_gold.html.haml b/app/views/pages/2011/sponsors_gold.html.haml new file mode 100644 index 00000000..32e81bad --- /dev/null +++ b/app/views/pages/2011/sponsors_gold.html.haml @@ -0,0 +1,19 @@ +- @title = t(:gold_sponsor) +#content + %h1 + #{t(:gold_sponsor)} + + - RubyKaigi2011::GoldSponsor.all.reject{|s| s.wanted }.each do |sponsor| + %article + %h2 + = sponsor.localize(I18n.locale, :name) + %a{:name => sponsor._id} + %img.logo{:alt => "Example Company, Ltd.", :src => "/2011/sponsors/#{sponsor._id}.png"} + %div + %div + %p + =raw sponsor.localize(I18n.locale, :pr) + %p.right + %a.linkMark{:href => sponsor.localize(I18n.locale, :url), :target => "_blank"} + = sponsor.localize(I18n.locale, :url) + != render :partial => 'shared/2011/back_to_top' diff --git a/app/views/pages/2011/sponsors_individual.html.haml b/app/views/pages/2011/sponsors_individual.html.haml new file mode 100644 index 00000000..fd1a65cd --- /dev/null +++ b/app/views/pages/2011/sponsors_individual.html.haml @@ -0,0 +1,22 @@ +- @title = t(:individual_sponsor) +#content + %h1 + #{t(:individual_sponsor)} + %article + - if ((sponsors = Contribution.individual_sponsors_of(2011)).present?) + - sponsors.each do |sponsor| + %div.avatar + - img = img_tag_for_individual_sponsor(sponsor, 42) + != link_to_if((!sponsor.anonymous? && sponsor.link_url.present?), raw(img), sponsor.link_url) + - if !sponsor.anonymous? && sponsor.link_url.present? + %p.linkMark + != link_to(h(sponsor.link_label), sponsor.link_url) + - else + %p + #{h(sponsor.link_label)} + %hr + - else + %div.avatar + (Not Yet) + %hr + != render :partial => 'shared/2011/back_to_top' diff --git a/app/views/pages/2011/sponsors_platinum.html.haml b/app/views/pages/2011/sponsors_platinum.html.haml new file mode 100644 index 00000000..8bb7a131 --- /dev/null +++ b/app/views/pages/2011/sponsors_platinum.html.haml @@ -0,0 +1,18 @@ +- @title = t(:platinum_sponsor) +#content + %h1 + #{t(:platinum_sponsor)} + - RubyKaigi2011::PlatinumSponsor.all.reject{|s| s.wanted }.each do |sponsor| + %article + %h2 + = sponsor.localize(I18n.locale, :name) + %a{:name => sponsor._id} + %img.logo{:alt => "Example Company, Ltd.", :src => "/2011/sponsors/#{sponsor._id}.png"} + %div + %p + =raw sponsor.localize(I18n.locale, :pr) + %p.right + %a.linkMark{:href => sponsor.localize(I18n.locale, :url), :target => "_blank"} + = sponsor.localize(I18n.locale, :url) + != render :partial => 'shared/2011/back_to_top' + diff --git a/app/views/pages/2011/sponsors_ruby_R01.en.html.haml b/app/views/pages/2011/sponsors_ruby_R01.en.html.haml new file mode 100644 index 00000000..aea1d9c9 --- /dev/null +++ b/app/views/pages/2011/sponsors_ruby_R01.en.html.haml @@ -0,0 +1,21 @@ +- @title = t(:ruby_sponsor) +- sponsor = RubyKaigi2011::RubySponsor.find("R01") +#content + %h1 + #{t(:ruby_sponsor)} + %article + %h2 + = sponsor.localize(I18n.locale, :name) + %img#logo{:alt => sponsor.localize(I18n.locale, :name), :src => "/2011/sponsors/#{sponsor._id}.png"} + %img{:alt => sponsor.localize(I18n.locale, :name), :src => "/2011/sponsors/nacl_pht01.png", :width => 410} + #profile + %ul.listMark + %li + Website: + %br + %a.linkMark{:href => sponsor.localize(I18n.locale, :url), :target => "_blank"} + = sponsor.localize(I18n.locale, :url) + %p + Network Applied Communication Laboratory (NaCl) delivers system development solutions utilizing open source software. NaCl drives the Ruby programming language with Ruby creator and NaCl fellow, Yukihiro "Matz" Matsumoto. + != render :partial => 'shared/2011/back_to_top' + diff --git a/app/views/pages/2011/sponsors_ruby_R01.ja.html.haml b/app/views/pages/2011/sponsors_ruby_R01.ja.html.haml new file mode 100644 index 00000000..49e6a133 --- /dev/null +++ b/app/views/pages/2011/sponsors_ruby_R01.ja.html.haml @@ -0,0 +1,44 @@ +- @title = t(:ruby_sponsor) +- sponsor = RubyKaigi2011::RubySponsor.find("R01") +#content + %h1 + #{t(:ruby_sponsor)} + %article + %h2 + = sponsor.localize(I18n.locale, :name) + %img#logo{:alt => sponsor.localize(I18n.locale, :name), :src => "/2011/sponsors/#{sponsor._id}.png"} + %img{:alt => sponsor.localize(I18n.locale, :name), :src => "/2011/sponsors/nacl_pht01.png", :width => 410} + #profile + %ul.listMark + %li + Website: + %br + %a.linkMark{:href => sponsor.localize(I18n.locale, :url), :target => "_blank"} + = sponsor.localize(I18n.locale, :url) + %h3 世界と競い、未来を拓く + %p + ソースコードを公開して誰でも自由に利用できるようにし、利用者や他の開発者からのフィードバックを取り入れながら進化を続ける、それがオープンソースソフトウェア(OSS)です。 株式会社ネットワーク応用研究所(NaCl)では、単にOSSを利用するだけではなく、オブジェクト指向言語Rubyの開発者であるまつもとゆきひろ をはじめ、多くの社員がOSSの開発に貢献し、 OSSを利用したシステム開発では先進的な実績を残しています。 + %h3 <Ruby、Ruby on Railsに関する取り組み> + %p + %ul.listMark + %li + 島根県CMS + %br + 読み上げ機能や自動ふりがな機能を持つ、Ruby on Rails(Rails)で作られた行政機関向けCMS(コンテンツマネージメントシステム)です。 OSSとして公開され島根県をはじめとする複数の自治体のwebサイトで採用されています。 + %img{:alt => sponsor.localize(I18n.locale, :name), :src => "/2011/sponsors/nacl_pht02.png", :width => 410} + %li + Rubyの国際標準化へ向けた活動への協力 + %br + IPA(独立行政法人情報処理推進機構)が進めるRubyの国際標準化へ向けたプロジェクトに協力しています。Rubyを国際標準規格により、複数のRuby実装の間での互換性が向上し、政府調達においても採用し易くなることが期待されます。 + %li + ニーズの高まるRuby教育 + %br + Rubyへの関心は高まっていますが、技術者確保が課題となっています。NaClではRubyアソシエーションの認定を受けたテキストを提供し、Rubyそのものや、Railsをはじめとする周辺技術に関する教育事業を行っています。認定テキストによる標準コース以外に、初めてのRuby、Railsでの開発に取り組む場合等にお使いいただけるカスタマイズ教育を提供しております。ご相談ください。 + %h3 <OSS「日医標準レセプトソフト」の開発> + %p + NaClは、全国1万ヶ所以上の医療機関に導入されているオープンソースソフトウェア「日医標準レセプトソフト」の開発会社として、医療現場のIT化を推進しています。 + %h3 NaClについて + %p + 弊社の通称である「NaCl」は、社名の英語表記「Network Applied Communication Laboratory Ltd.」の頭文字であると同時に、生物が生きていくために欠かせない「塩」の化学式でもあります。 私たちは「NaCl」を塩の化学式にちなみ、「エヌ・エー・シー・エル」と呼んでいます。 + != render :partial => 'shared/2011/back_to_top' + diff --git a/app/views/pages/2011/sponsors_ruby_R02.en.html.haml b/app/views/pages/2011/sponsors_ruby_R02.en.html.haml new file mode 100644 index 00000000..87f06a25 --- /dev/null +++ b/app/views/pages/2011/sponsors_ruby_R02.en.html.haml @@ -0,0 +1,26 @@ +- @title = t(:ruby_sponsor) +- sponsor = RubyKaigi2011::RubySponsor.find("R02") +#content + %h1 + #{t(:ruby_sponsor)} + %article + %h2 + = sponsor.localize(I18n.locale, :name) + %img#logo{:alt => sponsor.localize(I18n.locale, :name), :src => "/2011/sponsors/#{sponsor._id}.png"} + #profile + %ul.listMark + %li + Website: + %br + %a.linkMark{:href => sponsor.localize(I18n.locale, :url), :target => "_blank"} + = sponsor.localize(I18n.locale, :url) + %h3 Introduction to quanp + %p + High-performance technology, easier to use. In addition to Ricoh product development and services that focus on imaging equipment, Ricoh is expanding its business scope to provide a combination of office solutions. One of these new businesses being developed is "quanp." + quanp is a visual online storage service for helping individuals to get used to utilizing information intelligently. The user can upload files, share, and do simple search operations. quanp’s server systems are powered by Ruby. In the future, while contributing knowledge and technologies gained during development to the growth of Ruby, we would like to refine large-scale system construction technologies that utilize Ruby’s advantages. + %p + %img{:alt => "quanp", :src => "/2010/sponsors/ricoh_logo.gif"} + %p + %img{:alt => "quanp", :src => '/2010/sponsors/ricoh_pht01.jpg'} + != render :partial => 'shared/2011/back_to_top' + diff --git a/app/views/pages/2011/sponsors_ruby_R02.ja.html.haml b/app/views/pages/2011/sponsors_ruby_R02.ja.html.haml new file mode 100644 index 00000000..aa3b744b --- /dev/null +++ b/app/views/pages/2011/sponsors_ruby_R02.ja.html.haml @@ -0,0 +1,27 @@ +- @title = t(:ruby_sponsor) +- sponsor = RubyKaigi2011::RubySponsor.find("R02") +#content + %h1 + #{t(:ruby_sponsor)} + %article + %h2 + = sponsor.localize(I18n.locale, :name) + %img#logo{:alt => sponsor.localize(I18n.locale, :name), :src => "/2011/sponsors/#{sponsor._id}.png"} + #profile + %ul.listMark + %li + Website: + %br + %a.linkMark{:href => sponsor.localize(I18n.locale, :url), :target => "_blank"} + = sponsor.localize(I18n.locale, :url) + %h3 quanpの紹介 + %p + 高性能な技術を、より使いやすく。リコーは画像機器を中心とした製品開発やサービスの提供に加え、それらを組み合わせたオフィスソリューションの提供へと事業領域を拡大しています。そうした新規事業の一つとして“quanp”を展開中。 + %p + quanpは情報をスマートに使いこなすための個人向けビジュアルオンラインストレージサービスです。ファイルのアップロード、共有、検索を簡単な操作で行うことができます。このquanpでは、サーバーシステムの構築においてRubyを活用しています。今後も、開発の中で得た知識・技術でRubyの発展に貢献するとともに、Rubyの利点を活かした大規模システム構築技術に磨きをかけていきたいと考えています。 + %p + %img{:alt => "quanp", :src => "/2010/sponsors/ricoh_logo.gif"} + %p + %img{:alt => "quanp", :src => '/2010/sponsors/ricoh_pht01.jpg'} + != render :partial => 'shared/2011/back_to_top' + diff --git a/app/views/pages/2011/sponsors_ruby_R03.html.haml b/app/views/pages/2011/sponsors_ruby_R03.html.haml new file mode 100644 index 00000000..8a6ca985 --- /dev/null +++ b/app/views/pages/2011/sponsors_ruby_R03.html.haml @@ -0,0 +1,20 @@ +- @title = t(:ruby_sponsor) +- sponsor = RubyKaigi2011::RubySponsor.find("R03") +#content + %h1 + #{t(:ruby_sponsor)} + %article + %h2 + = sponsor.localize(I18n.locale, :name) + %img#logo{:alt => sponsor.localize(I18n.locale, :name), :src => "/2011/sponsors/#{sponsor._id}.png"} + #profile + %ul.listMark + %li + Website: + %br + %a.linkMark{:href => sponsor.localize(I18n.locale, :url), :target => "_blank"} + = sponsor.localize(I18n.locale, :url) + %div.cboth + = sponsor.localize(I18n.locale, :pr) + != render :partial => 'shared/2011/back_to_top' + diff --git a/app/views/paypal/cancelled.html.erb b/app/views/paypal/cancelled.html.erb deleted file mode 100644 index 4141d261..00000000 --- a/app/views/paypal/cancelled.html.erb +++ /dev/null @@ -1,10 +0,0 @@ -
-

Your order has been cancelled.

-

-Your order has been cancelled. -

- -

-<%= link_to 'Back to Registration', "/#{@year}/#{I18n.locale}/registrations" %> -

-
diff --git a/app/views/paypal/sold_out.html.erb b/app/views/paypal/sold_out.html.erb deleted file mode 100644 index 24577288..00000000 --- a/app/views/paypal/sold_out.html.erb +++ /dev/null @@ -1,5 +0,0 @@ -

RubyKaigi2009 ticket(s) has been sold out.

- -

-We're sorry, your order cannot be completed. -

diff --git a/app/views/paypal/thanks.html.erb b/app/views/paypal/thanks.html.erb deleted file mode 100644 index b1eeec0e..00000000 --- a/app/views/paypal/thanks.html.erb +++ /dev/null @@ -1,16 +0,0 @@ -

<%= t("paypal.thanks.heading") %>

- -

-<%= t('paypal.thanks.your_txn_id_is') %> : <%=h @notified_transaction_id %>
-

- -

-<%= t('paypal.thanks.instruction') %> -

- -

-<%= t('paypal.thanks.how_about_lightning_talk', :lt_submission => link_to(t('lightning_talk'), "/2009/#{I18n.locale}/lightning_talk_submissions")) %> -

- -
-<%= link_to 'RubyKaigi2009 Registration', "/2009/#{I18n.locale}/registrations" %> diff --git a/app/views/paypal/txn_id_was_not_verified.html.erb b/app/views/paypal/txn_id_was_not_verified.html.erb deleted file mode 100644 index d11cb261..00000000 --- a/app/views/paypal/txn_id_was_not_verified.html.erb +++ /dev/null @@ -1,8 +0,0 @@ -

We cannnot verify your transaction.

-

-Something went wrong. Please contact us e-mail via e-mail to: paypal at rubykaigi dot org.
-(with your name, e-mail and transaction id are described in the e-mail sent from paypal.) -

-
- -
diff --git a/app/views/registrations/2009/index_en.html.erb b/app/views/registrations/2009/index_en.html.erb deleted file mode 100644 index f97c10cf..00000000 --- a/app/views/registrations/2009/index_en.html.erb +++ /dev/null @@ -1,46 +0,0 @@ -<%# coding: utf-8 -%> -<% content_for :css do -%> -<%= stylesheet_link_tag '2009_registration' %> -<% end -%> -
-

RubyKaigi2009 Registration

-
    -
  • You'll have to registration to attend RubyKaigi2009 via paypal.com.
  • -
  • We'll store your name and e-mail for admission.
  • -
  • Please bring an exchange ticket page to the venue for admissions.
  • -
  • Feel free to contact up via e-mail to paypal at rubykaigi dot org.
  • -
-

- -
-

RubyKaigi 2009

- - - - - -
-Dates: July 17 - 19 2009
-Venue: Hitotsubashi Conference Hall in Chiyoda-ku, Tokyo (Map)
-Fee: 6,000 JPY (3 days pass) -
- <%= render_paypal_buynow_form(configatron.paypal.hosted_button_id.rubykaigi2009.conference, :rubykaigi2009) %> -
-
- -
-

RubyKaigi 2009 Party

- - - - - -
-Date: Jul 17 2009, Open 19:00, Start 19:30(Planned)
-Venue: Kizan Club(Map)
-Fee: 5,000 JPY
-
- <%= render_paypal_buynow_form(configatron.paypal.hosted_button_id.rubykaigi2009.party, :rubykaigi2009party) %> -
-
-
diff --git a/app/views/registrations/2009/index_ja.html.erb b/app/views/registrations/2009/index_ja.html.erb deleted file mode 100644 index 5b64057e..00000000 --- a/app/views/registrations/2009/index_ja.html.erb +++ /dev/null @@ -1,57 +0,0 @@ -<%# coding: utf-8 -%> -<% content_for :css do -%> -<%= stylesheet_link_tag '2009_registration' %> -<% end -%> -
-

RubyKaigi2009への参加登録

-

RubyKaigi2009へ参加するには、事前にチケットの購入が必要です。: -

    -
  • 「Buy Now」ボタンを押すとPayPalに遷移します。決済はPayPalで行ってください。決済にあたり、PayPalアカウントを作成する必要はありません。
  • -
  • 会場での認証のために、rubykaigi.orgで購入者の姓名とメールアドレスを保存します。ご協力をよろしくお願いします。保存した個人情報はRubyKaigi2009会期終了後に破棄します。
  • -
  • 決済完了後、Transaction ID(固有の取引ID番号)または受領番号の記されたExchange Ticketの画面を印刷して会場までお持ちください。会場での認証に使います。
  • -
  • チケット購入に関するお問い合わせは paypal at rubykaigi dot org までメールにてお問い合わせください。
  • -
-

- -
-

RubyKaigi 2009

- - - - - -
-会期: 2009.07.17(金)〜07.19(日)
-会場: 学術総合センター(東京都千代田区)
-料金: 6,000円(税込)
-3日通し券です。日割による払い戻しはいたしかねます。 -
- <%= render_paypal_buynow_form(configatron.paypal.hosted_button_id.rubykaigi2009.conference, :rubykaigi2009) %> -
-

学生割引について

-

数に限りはありますが、今年のRubyKaigiでは学割を用意します。学割の適用対象者の皆さんには、3,000円を会期中に会場でキャッシュバックします。PayPalの支払い確認の画面にある「Add special instractions to seller:」をクリックして、テキストボックスに学生である旨を入力のうえ、通常の購入手続きを済ませてください。学生割引の可否については、追って日本Ruby会議2009実行委員会から連絡いたします。 -

-
- -
- -
-

RubyKaigi 2009 懇親会

- - - - - -
-日時: 2009.07.17(金)19:00開場、19:30開宴
-会場: 喜山倶楽部(日本教育会館内,東京都千代田区)
-料金: 5,000円(税込)
-開場・開宴時刻については予定時刻です。 -
- <%= render_paypal_buynow_form(configatron.paypal.hosted_button_id.rubykaigi2009.party, :rubykaigi2009party) %> -
-

学生割引について

-

懇親会の学生割引はありません。

-
-
-
diff --git a/app/views/registrations/2009/not_yet.html.erb b/app/views/registrations/2009/not_yet.html.erb deleted file mode 100644 index 0d590315..00000000 --- a/app/views/registrations/2009/not_yet.html.erb +++ /dev/null @@ -1,3 +0,0 @@ -

Registration will be open at <%= @registration_open_at.to_s(:db) %>(JST)

- -<%= link_to 'rubykaigi.org', '/' %> diff --git a/app/views/registrations/_add_to_cart.html.haml b/app/views/registrations/_add_to_cart.html.haml new file mode 100644 index 00000000..3bfbfdcd --- /dev/null +++ b/app/views/registrations/_add_to_cart.html.haml @@ -0,0 +1,15 @@ +%p.btn + - if item.now_on_sale? + != form_tag(add_item_carts_path(:locale => params[:locale])) do + - btnimg_fname = (item.individual_sponsor? ? "sponsorsBtnBecomeAIndividualSponsor" : "registrationBtnTickets") + != hidden_field_tag :product_item_code, item.item_code + != image_submit_tag("/2011/images/#{btnimg_fname}.png", {"class" => "btnInput"}) + - else + %span{:style => 'font-size: 24px;font-weight:bold'} + - if item.sold_out? + [Sold Out] + - else + [In Preparation] + - unless item.sold_out? +
+ (it will open at #{item.open_sale_at.to_s(:short)} JST) diff --git a/app/views/registrations/_need_signin.en.html.haml b/app/views/registrations/_need_signin.en.html.haml new file mode 100644 index 00000000..3ed1e71d --- /dev/null +++ b/app/views/registrations/_need_signin.en.html.haml @@ -0,0 +1 @@ +! To register for Rubykaigi, please #{link_to 'sign in', signin_path} using OpenID or Twitter OAuth. diff --git a/app/views/registrations/_need_signin.ja.html.haml b/app/views/registrations/_need_signin.ja.html.haml new file mode 100644 index 00000000..02dfab7b --- /dev/null +++ b/app/views/registrations/_need_signin.ja.html.haml @@ -0,0 +1,2 @@ +%p + ! 日本Ruby会議2011のチケット購入・個人スポンサー申し込みでは、Twitter OAuthかOpenIDで#{link_to 'サインイン', signin_path}が要求されます。ご協力ください。 diff --git a/app/views/ruby_kaigi2009/CallForPresentations_en.html.erb b/app/views/ruby_kaigi2009/CallForPresentations_en.html.erb deleted file mode 100644 index 38d554a1..00000000 --- a/app/views/ruby_kaigi2009/CallForPresentations_en.html.erb +++ /dev/null @@ -1,64 +0,0 @@ -<%# coding: utf-8 -%> -
-

Call for presentations

-

RubyKaigi 2009 is seeking presentation proposals on the following topics:

-
    -
  • Anything relating to the Ruby Programming Language
  • -
-

Please make your submission by e-mail according to the following format:

-
    -
  • To: 2009@rubykaigi.org
  • - Subject: RubyKaigi 2009 Presentation Proposal: >your name< -
-

In the body of your e-mail, please include the following information:

-
    -
  • Full name
  • -
  • Affiliation/Company (optional)
  • -
  • Presentation Title
  • -
  • Presentation language (Japanese/English/both)
  • -
  • Abstract of your presentation
  • -
  • Preferred length of your talk (including Q/A time): -
      -
    • about 30 min
    • -
    • about 60 min (typical duration)
    • -
    • longer than 60 min
    • -
    -
  • -
  • Preferred day: -
      -
    • Friday, July 17
    • -
    • Saturday, July 18
    • -
    • Sunday, July 19
    • -
    • no preference
    • -
    -
  • -
  • Any questions or additional notes
  • -
-

-We will use this information to evaluate your proposal and is not binding. If your proposal is accepted, changes in the content of your talk are possible with consultation. -

-

-Presentations proposals will be judged by the RubyKaigi Organizing Committee. -

-

-This year, we are considering running 3 parallel tracks over the 3 days. Compared to past years (single track), we are likely to have much more flexibility in our program. We're looking forward to hearing from you.

- -

Important Dates

-
-
Submission Deadline:
-
23:59 JST, Sunday, March 15th, 2009. extendeddeadline
-
23:59 JST, Thursday, March 26th, 2009.
-
Announcement of selection results:
-
End of March, 2009
-
RubyKaigi 2009:
-
Friday, 17th July - Sunday, 19th July
-
-

Questions?

-

-If you have any questions, please contact us at 2009 at rubykaigi.org. -

- -
- <%=link_to('Permalink', pub_release_url(:year => 2009,:page_name => 'CallForPresentations', :locale => I18n.locale)) %> -
-
diff --git a/app/views/ruby_kaigi2009/CallForPresentations_ja.html.erb b/app/views/ruby_kaigi2009/CallForPresentations_ja.html.erb deleted file mode 100644 index dfd7f747..00000000 --- a/app/views/ruby_kaigi2009/CallForPresentations_ja.html.erb +++ /dev/null @@ -1,44 +0,0 @@ -<%# coding: utf-8 -%> -
-

プレゼンテーション募集概要

-

RubyKaigi2009 で発表を希望される方を募集いたします。募集するプレゼンテーションのテーマは以下のとおりです。

-
    -
  • Ruby について、なんでも
  • -
-

応募は下記の要領にしたがってお申し込みください。

-
    -
  • To: 2009 at rubykaigi.org
  • -
  • Subject: RubyKaigi2009発表応募:発表者氏名
  • -
-

メール本文には下記の情報を含めてください。

-
    -
  • 発表者氏名・所属
  • -
  • タイトル
  • -
  • 概要
  • -
  • 希望するプレゼン時間 (30 分くらい・60 分くらい・それ以上) -
      -
    • 質疑応答込みの時間です。基本的に、1 発表 60 分くらいを目安に考えています。
    • -
    -
  • -
  • 希望する発表曜日 (金、土、日、どれでも)
  • -
  • その他、連絡事項
  • -
-

あくまで選考のために必要な情報です。採用された後、プログラムに掲載する内容は変更可能です。

-

今年は 3 日間で 3 トラック同時進行を検討しています。そのため、従来よりも余裕を持ったプログラム作りができると思っております。
- 多くのご応募お待ちしております。

-

日程

-

募集締切

-

2009 年 3 月 15 日(日)(延長しました)(締め切りました)
- 2009 年 3 月 26 日(木)

-

募集結果発表

-

2009 年 3 月末日

-

RubyKaigi2009

-

2009年 7 月 17 日(金)、18 日(土)、19日(日)

-

選考方法

-

RubyKaigi2009 スタッフにより選考いたします。

-

お問い合わせ

-

何か不明な点があれば、2009 at rubykaigi.org までお気軽にお問い合わせください。

-
- <%=link_to('Permalink', pub_release_url(:year => 2009, :page_name => 'CallForPresentations', :locale => I18n.locale)) %> -
-
diff --git a/app/views/ruby_kaigi2009/CallForSponsors_en.html.erb b/app/views/ruby_kaigi2009/CallForSponsors_en.html.erb deleted file mode 100644 index 3c8b8525..00000000 --- a/app/views/ruby_kaigi2009/CallForSponsors_en.html.erb +++ /dev/null @@ -1,12 +0,0 @@ -<%# coding: utf-8 -%> -
-

Call for Sponsors

-

-If you are interested in sponsoring the Rubykaigi2009, feel free to contact us via e-mail to 2009 at rubykaigi dot org. -We'll get back to you soon. -

- -
- <%=link_to('Permalink', pub_release_url(:year => 2009, :page_name => 'CallForSponsors', :locale => I18n.locale)) %> -
-
diff --git a/app/views/ruby_kaigi2009/CallForSponsors_ja.html.erb b/app/views/ruby_kaigi2009/CallForSponsors_ja.html.erb deleted file mode 100644 index 982115ce..00000000 --- a/app/views/ruby_kaigi2009/CallForSponsors_ja.html.erb +++ /dev/null @@ -1,16 +0,0 @@ -<%# coding: utf-8 -%> -
-

スポンサー募集について

-

-過去3回のRubyKaigi はいずれも、スポンサーの方々のご支援・ご協力により、充実したイベントを開催できております。ご支援いただいた皆さまには心より感謝申し上げます。 -

-

-日本Ruby会議2009 でもスポンサーを募集いたします。詳細は 2009 at rubykaigi.org までメールにてお問い合わせ下さい。日本Ruby会議2009実行委員会より追ってご連絡さしあげます。ご質問等についても、同様にメールにてお気軽にお問い合わせいただければ幸いです。

-

-よろしくお願いいたします。 -

- -
- <%=link_to('Permalink', pub_release_url(:year => 2009, :page_name => 'CallForSponsors', :locale => I18n.locale)) %> -
-
diff --git a/app/views/ruby_kaigi2009/CallForVolunteerStaffs_ja.html.erb b/app/views/ruby_kaigi2009/CallForVolunteerStaffs_ja.html.erb deleted file mode 100644 index 7eacc13b..00000000 --- a/app/views/ruby_kaigi2009/CallForVolunteerStaffs_ja.html.erb +++ /dev/null @@ -1,50 +0,0 @@ -<%# coding: utf-8 -%> -
-

当日スタッフ募集について

-

"I WANT YOU for RubyKaigi2009"

-

-日本 Ruby 会議 2009では、若干名の当日スタッフを募集します。当日の設営・準備から会期中の進行のサポート、終了後の撤収をつつがなく行えるようにするためのサポートスタッフ、ならびに KaigiFreaks として会期中のセッションを録画配信するお仕事です。 -

-

-以下の当日スタッフの位置付けと応募方法、〆切の案内に目を通していただいた上で、メールにてご応募ください。採用可否はメールで連絡さしあげます。返信可能なメールアドレスの使用をお願いします。 -

-

-今年の<%=link_to('KaigiFreaks', pub_release_url(:year => 2009, :page_name => 'Team', :locale => 'ja')) %>は国内最高水準のチーム編成になっています。Ruby以外のコミュニティの方でも、Ustream.tvの配信ノウハウに興味がある方の応募を歓迎します。 -

-

-ご応募お待ちしております。 -

-

当日スタッフの位置づけ

-
    -
  • 完全ボランティア。_why the lucky stiff画伯のイラスト入りスタッフTシャツは支給しますが、金銭的報酬はありません。交通費支給なし。
  • -
  • チケットを購入することなく RubyKaigi 2009 に参加できます。
  • -
  • でも、仕事によっては見れない発表があることも。
  • -
  • 大規模イベントの運営や進行を体験することができます。また、KaigiFreaks となった場合には日本有数のスタッフによる録画配信の技術を学ぶことができます。
  • -
  • 前日(7/16(木))の準備から手伝ってくれると嬉しいですが、必須ではありません。
  • -
  • 事前に都内で打ち合わせをやるかもしれません(やらないかもしれません)。参加は必須ではありません。
  • -
-

応募について

-

応募は下記の要領にしたがってお申し込みください。

-
    -
  • To: 2009+vs at rubykaigi.org
  • -
  • Subject: RubyKaigi2009/VS:(あなたのお名前)
  • -
-

メール本文には下記の情報を含めてください。

-
    -
  • お名前
  • -
  • お住まい(だいたいで結構です。事前打ち合わせの参加規模を調査するためです)
  • -
  • 希望する役割 (サポートスタッフ・KaigiFreaks・どちらでも)
  • -
  • 参加可能な日程 (7/16(木)夜・7/17(金)・7/18(土)・7/19(日))
  • -
  • ひとこと(あれば)
  • -
-

日程

-

応募締切

-

2009 年 5 月 30 日(土) 19:00締め切りました

-

採用結果通知

-

2009 年 5 月 31 日(日)

-

お問い合わせ

-

何か不明な点があれば、2009 at rubykaigi.org までお気軽にお問い合わせください。

-
- <%=link_to('Permalink', pub_release_url(:year => 2009, :page_name => 'CallForVolunteerStaffs', :locale => I18n.locale)) %> -
-
diff --git a/app/views/ruby_kaigi2009/Information_en.html.erb b/app/views/ruby_kaigi2009/Information_en.html.erb deleted file mode 100644 index 2f5dcc41..00000000 --- a/app/views/ruby_kaigi2009/Information_en.html.erb +++ /dev/null @@ -1,34 +0,0 @@ -<%# coding: utf-8 -%> -
-

Useful Information for RubyKaigi2009 Attendees

-

Wi-Fi Internet Access

-

Free wi-fi internet access will be provided at the conference venue. There will be access points operating on both the 5.6GHz and 2.4Ghz bands available at each of the halls at the venue. We ask you to keep in mind that network resources are limited, so please avoid high bandwidth usage of the internet, such as watching or broadcasting video, etc.

-

For security reasons, access to most outbound ports on the venue's network (excluding http) are severely restricted. Services blocked include ssh (22/TCP) and irc (6667/TCP). If you need access restricted ports, you will need to make your own arrangements for internet access.

-

Using IRC at the venue

-

Please access the RubyKaigi IRC channels via <%= link_to("http://webchat.freenode.net/") %>, the web interface provided by freenode. Details of the Official RubyKaigi IRC channels can be found at the link below.

-
    -
  • <%=link_to("RubyKaigi2009 - IRC","http://rubykaigi.org/2009/en/irc") %>
  • -
-

Food and Drink at the Venue

-

Consumption of food and drink inside the main hall (Hitotsubashi Memorial Hall) is not permitted. Food and drink is, however, permitted in the other halls. In the lobby and entrance areas, only consumption of drink (not food) is permitted.

-

We also request your co-operation in taking home any rubbish from food and drink consumed at the venue, such as empty drink containers, bento leftovers, etc.

-

Restaurants Near the Venue

-

Please refer to the map linked below for restaurants in the area of the venue.

-
    -
  • <%=link_to("Lunch Map", "http://r.tabelog.com/rst/rstmap?clon=139.758120775223&clat=35.6924543947299&lz=0&Cat=RC&LstRev=1") %>
  • -
-

If you feel unwell...

-

A map of the local hospitals is linked below. Please do not hesitate to contact nearby RubyKaigi staff if you require assistance.

-
    -
  • <%=link_to("Hospital List", "http://hospital.health.goo.ne.jp/result.php?pcd=13&cnd=med&icd=05704&act.search.x=26&act.search.y=18&act.search=%A1%A1%B8%A1%BA%F7%A1%A1") %>
  • -
-

Power Outlets at the Venue

-

Power outlets will not be available in the main hall (Hitotsubash Memorial Hall). The other halls will have a limited number of power outlets available for attendees. A recharging area is also planned for the lobby area.

-

Nonetheless, we do not expect to be able to provide a sufficient number of power outlets to accommodate all attendees. We ask you to be considerate of others when using power outlets. We suggest that you bring spare batteries for your devices, or perhaps your own power strips.

-

For attendees from outside of Japan, please keep in mind that domestic electricity in eastern Japan (including Tokyo) is 100V/50Hz. Most computer transformers can accommodate a wide range of voltages and frequencies, but please check to be sure. Most outlets will be for <%=link_to("Japanese 2-pin flat blade plugs", "http://www.kropla.com/!ab.htm")%>, although a limited number may be 3-pin flat blade plugs with a round grounding pin (North American). Please bring an appropriate adapter.

-

If you have bulky luggage...

-

Unfortunately, the venue has no cloak room facilities. Please leave your luggage at your hotel or use a coin locker. Coin lockers can be found at most train stations in the vicinity.

-
- <%=link_to('Permalink', pub_release_url(:year => 2009, :page_name => 'Information', :locale => I18n.locale)) %> -
-
diff --git a/app/views/ruby_kaigi2009/Information_ja.html.erb b/app/views/ruby_kaigi2009/Information_ja.html.erb deleted file mode 100644 index 939ea1ab..00000000 --- a/app/views/ruby_kaigi2009/Information_ja.html.erb +++ /dev/null @@ -1,55 +0,0 @@ -<%# coding: utf-8 -%> -
-

参加者向け情報

-

会場での無線LANの使用について

-

会場では無料の無線によるインターネット接続を提供しています。 - 具体的には、5.6GHz帯と2.4GHz帯それぞれの無線アクセスポイントを各会場に設けています。 - どうぞご利用ください。 - なお、会場のネットワーク資源は有限ですので、ストリーミング動画の配信や視聴など、 - 多くの帯域を消費するアプリケーションのご利用はお控えください。

-

なお、会場のネットワークはセキュリティ上の理由で会場から外に出るポートが厳しく制限されています。 - ssh (22/TCP) や irc (6667/TCP) での外部への接続ができません(http は利用可)。 - 制限のないインターネットアクセスが必要な方は、 - お手数をおかけしますがご自身でご用意されますようお願いします。

-

会場でのIRCの利用について

-

会場からのIRC接続は <%= link_to("http://webchat.freenode.net/") %> をご利用ください。以下のページにRubyKaigi公式チャンネルの案内があります。

-
    -
  • <%=link_to("日本Ruby会議2009 - IRC","http://rubykaigi.org/2009/ja/irc") %>
  • -
-

会場内での飲食について

-

一橋記念講堂内は飲食禁止です。一橋記念講堂以外の会議室については飲食可能です。 - ロビー、エントランスについては飲み物のみ可能となっております。 - ご協力の程どうぞよろしくお願い致します。

-

ゴミの持ち帰りにご協力ください

-

弁当ガラや食べ残し、飲み物の空缶やペットボトルなど会場内で出たゴミについては、極力お持ち帰りをお願いいたします。 - 運営上の負担を極力減らすため、ご理解とご協力の程どうぞよろしくお願い致します。

-

会場付近での食事について

-

<%=link_to("食べログ", "http://r.tabelog.com") %>による会場付近のランチ情報の検索結果が参考になります。どうぞご活用ください。

-
    -
  • <%=link_to("PC版", "http://r.tabelog.com/rst/rstmap?clon=139.758120775223&clat=35.6924543947299&lz=0&Cat=RC&LstRev=1") %>
  • -
  • <%=link_to("モバイル版", "http://m.tabelog.com/mobile_gps/RC/A/0/0/l/rstlstgps/?&lat=35.6924543947299&lon=139.758120775223&Cat=RC&LstRev=1") %>
  • -
-

気分が悪くなった方は

-

以下を参照し、ご自身で近隣の病院等に行かれるか、または運営スタッフまでお声掛けください。

-
    -
  • <%=link_to("東京都 御茶ノ水/神保町 病院検索 - goo ヘルスケア", "http://hospital.health.goo.ne.jp/result.php?pcd=13&cnd=med&icd=05704&act.search.x=26&act.search.y=18&act.search=%A1%A1%B8%A1%BA%F7%A1%A1") %>
  • -
-

会場内の電源コンセントについて

-

会場にノートパソコンや携帯機器を持ち込む方が多くいらっしゃるかと思います。
- 一橋記念講堂内では一般参加者向けの電源は用意していません。
- 中会議室や特別会議室には電源タップを用意する予定です(数はあまり多くありません)。
- ロビーには充電コーナーを設ける予定ですので併せてご利用下さい。
- いずれにせよ、用意できるコンセントの数は参加者の数に対してかなり少ない見込みです。
- みなさま譲りあってご利用されますようお願いします。
- また、長時間に渡って機器を使用されたい方は予備のバッテリーをお持ちになることを強くお勧めします。

-

大きな荷物を持ってお越しの方へ

-

会場にはクローク等の設備はありません。 - 大きい荷物はホテルに置くかロッカーに預ける等なさってからお越し下さい。

-
    -
  • <%=link_to("神保町 - コインロッカーサーチ","http://coinlockersearch.com/hanzoumonsen/jinbocho.html") %>
  • -
- -
- <%=link_to('Permalink', pub_release_url(:year => 2009, :page_name => 'Information', :locale => I18n.locale)) %> -
-
diff --git a/app/views/ruby_kaigi2009/LightningTalkSubmission_en.html.erb b/app/views/ruby_kaigi2009/LightningTalkSubmission_en.html.erb deleted file mode 100644 index a345ed65..00000000 --- a/app/views/ruby_kaigi2009/LightningTalkSubmission_en.html.erb +++ /dev/null @@ -1,40 +0,0 @@ -
-

<%=t :lightning_talk_submission %>

- - <% form_for(@lightning_talk_submission) do |f| %> - <%= f.error_messages %> - -

- <%= f.label :name %>
- <%= f.text_field :name %> -

-

- <%= f.label :organization %>
- <%= f.text_field :organization %> -

-

- <%= f.label :email %>
- <%= f.text_field :email, :size => 40 %> -

-

- <%= f.label :title %>
- <%= f.text_field :title, :size => 60 %> -

-

- <%= f.label :abstract %>
- <%= f.text_area :abstract, :cols => 60, :rows => 10 %> -

-

- <%= f.check_box :has_ticket %> <%= f.label :has_ticket %> -

-

- <%= f.label :note %>
- <%= f.text_area :note, :cols => 60, :rows => 5 %> -

-

- <%= f.submit 'Create' %> -

- <% end %> - -

<%= link_to 'Back', lightning_talk_submissions_path %>

-
diff --git a/app/views/ruby_kaigi2009/Press_en.html.erb b/app/views/ruby_kaigi2009/Press_en.html.erb deleted file mode 100644 index b71f1d14..00000000 --- a/app/views/ruby_kaigi2009/Press_en.html.erb +++ /dev/null @@ -1,7 +0,0 @@ -<%# coding: utf-8 -%> -
-

Press

-

We'll write this page later... -

-
diff --git a/app/views/ruby_kaigi2009/Press_ja.html.erb b/app/views/ruby_kaigi2009/Press_ja.html.erb deleted file mode 100644 index 17a781a6..00000000 --- a/app/views/ruby_kaigi2009/Press_ja.html.erb +++ /dev/null @@ -1,14 +0,0 @@ -<%# coding: utf-8 -%> -
-

取材をご希望の方へ

-

-日本Ruby会議2009 の取材ならびに情報提供を希望されるメディアの方は、2009 at rubykaigi.org までメールにてお申し込みください。日本Ruby会議2009実行委員会より追ってご連絡さしあげます。ご質問等についても、同様にメールにてお気軽にお問い合わせいただければ幸いです。 -

-

-よろしくお願いいたします。 -

- -
- <%=link_to('Permalink', pub_release_url(:year => 2009, :page_name => 'Press', :locale => I18n.locale)) %> -
-
diff --git a/app/views/ruby_kaigi2009/Sponsors_en.html.erb b/app/views/ruby_kaigi2009/Sponsors_en.html.erb deleted file mode 100644 index d391796e..00000000 --- a/app/views/ruby_kaigi2009/Sponsors_en.html.erb +++ /dev/null @@ -1,7 +0,0 @@ -<%# coding: utf-8 -%> -
-

Sponsors

-

We'll write this page later... -

-
diff --git a/app/views/ruby_kaigi2009/Sponsors_ja.html.erb b/app/views/ruby_kaigi2009/Sponsors_ja.html.erb deleted file mode 100644 index 8b0cc33f..00000000 --- a/app/views/ruby_kaigi2009/Sponsors_ja.html.erb +++ /dev/null @@ -1,178 +0,0 @@ -<%# coding: utf-8 -%> -
-

スポンサー

-

日本Ruby会議2009は、以下の企業の皆さまの協賛のもと、開催いたします。ご協力ありがとうございます。 -

-

Rubyスポンサー

-

伊藤忠テクノソリューションズ株式会社

-

-<%= image_tag('sponsors/ctc-g.png', :alt => '伊藤忠テクノソリューションズ株式会社', :class => 'logo') %> -伊藤忠テクノソリューションズ株式会社(略称CTC)は、お客さまの情報改革をお手伝いするソリューションプロバイダーです。コンサルティングから設計・開発、運用・保守サポート、フルアウトソーシングにいたるまで、お客さまのITライフサイクル全体に対応したサービスをワンストップで提供しています。
-また、CTCはRubyアソシエーション認定システムインテグレータとしてエンタープライズ分野でのRuby適用を得意とするばかりではなく、Ruby教育サービスの提供やRuby技術者認定試験の実施を通じてRuby技術者の拡大支援にも力を注いでいます。 -

- -

株式会社ネットワーク応用通信研究所

-

-<%= image_tag('sponsors/nacl.png', :alt => '株式会社ネットワーク応用通信研究所', :class => 'logo') %> -株式会社ネットワーク応用研究所(NaCl)は、オープンソースソフトウェア(OSS)の開発やOSSを活用したシステム開発及びソリューションを提供しています。特にプログラム言語「Ruby」に関しては世界的にRubyを牽引する企業として知られています。

-最近では読み上げ機能や自動ふりがな機能を持つ、Ruby on Railsで作られた行政機関向けCMS「島根県CMS」をOSSとして公開し、島根県を始めとする複数の自治体のwebサイトで採用される等、Ruby on Railsの利用と普及にも力を注いでいます。 -

- -

株式会社リコー

-

-<%= image_tag('sponsors/ricoh.png', :alt => '株式会社リコー', :class => 'logo') %> -高性能な技術を、より使いやすく。 -リコーは画像機器を中心とした製品開発やサービスの提供、さらにそれらを組み合わせたオフィスソリューションの提供へと事業領域を拡大してきました。そして昨年は、新サービス“quanp”を新たな事業として開始。quanpは情報をスマートに使いこなすためのWebサービスです。ファイルのアップロード、共有、検索を簡単な操作で行うことができます。このquanpでは、サーバーシステムの構築においてRubyを活用しています。今後も、開発の中で得た知識・技術でRubyの発展に貢献するとともに、Rubyの利点を活かした大規模システム構築技術に磨きをかけていきたいと考えております。quanpについての詳しい情報については、下記サイトをご覧下さい。
-www.quanp.com -

- -

プラチナスポンサー

-

株式会社永和システムマネジメント

-

-<%= image_tag('sponsors/esm.png', :alt => '株式会社永和システムマネジメント', :class => 'logo') %> -私たち永和システムマネジメントは福井に本社を置く微妙な規模のSIベンダです。2002年に東京支社を開設してから、アジャイル開発を軸に変化を抱擁するITソリューションを提供することに力を入れています。私たちは「お客さまに価値を提供し続けるシステム」を、お客さまと一緒に育てていきます。
-有志による草の根活動をきっかけに始まった Ruby への取り組みは、3年間で30以上ものプロジェクトで実績をつくるまでに成長しました。 アジャイルと Ruby の組み合わせが実現するシステム開発は、開発者が充実感と「楽しさ」を感じられる開発であり、そこにはきっとビジネス価値がある――私たちはそう信じて行動を続けています。 -

- -

ニフティ株式会社

-

-<%= image_tag('sponsors/nifty.png', :alt => 'ニフティ株式会社', :class => 'logo') %> -ニフティ株式会社は、「ニフティとなら、きっとかなう。(With Us, You Can.)」の企業理念のもと、お客様の視点に立ち、他社に先駆けた新サービスの提供や独自ビジネスモデルの創出に積極的に取り組んでいます。接続プロバイダーの枠を超え、利便性の高いWebサービス、モバイルサービス、クチコミマーケティング事業の展開などに注力しています。ニフティでは、提供している多くのサービスで、オープンソースソフトウェアを活用しています。
-ユーザーニーズを素早く反映できるプラットフォームである「Ruby on Rails」にも早くから着目しており、旅先から携帯での投稿も可能な旅行記CGMサイト「@nifty旅行日和」や、モバイルの掲示板サービス「いたがき」などさまざまなサービス開発に活用しています。また、Webサービスのプラットフォームとしてだけでなく、技術動向やサービストレンドの変化が激しいモバイルサービスのための、共通機能開発のプラットフォームとしても採用を進めており、「Ruby on Rails」の活用の幅をさらに広げています。 -

- -

株式会社RAWHIDE.

-

-<%= image_tag('sponsors/raw-hide.png', :alt => '株式会社RAWHIDE.', :class => 'logo') %> -僕らローハイド.は設立当初(2006年)よりRuby on RailsとFlashをつかったモノづくりをしています。 -これまでは、WEBサービス開発を主に行っておりましたが、現在ではそれに加えて、大規模業務アプリケーションへRuby on Railsの適用を積極的に行っております。 -その一部はWEB+DB PRESS Vol.51「実戦投入Rails」にて紹介していますので是非ご覧下さい。 -3年前はマンションの一室にちゃぶ台を並べて開発をしておりましたが、この春、渋谷に僕らの城を構えることができました。ありがとうRuby! Rubyありがとう!
-押忍 -

- -

株式会社リクルート

-

-<%= image_tag('sponsors/recruit.png', :alt => '株式会社リクルート', :class => 'logo') %> -株式会社リクルートの実証・研究機関であるメディアテクノロジーラボは、 -日本Ruby会議2009を応援しています。
- -メディアテクノロジーラボは、リクルートが培ってきたメディアの知見と、 -テクノロジーの観点から、新たなメディアやコミュニケーションのありかたを -研究開発することを通じて、生活者にとって適切で利便性の高い情報流通が -行われる豊かな情報社会の実現を目指しています。 -

- -

株式会社トランス・ニュー・テクノロジー

-

-<%= image_tag('sponsors/tnt.png', :alt => '株式会社トランス・ニュー・テクノロジー ', :class => 'logo') %> -広くて深いスペシャリティで感動品質を創造する株式会社トランス・ニュー・テクノロジー(TNT)は、1990年11月に設立された「新技術のさらなる先へ」を目指すテクノロジー集団です。 -コンピュータ関連の「特殊部隊」を自負し、研究開発型企業や大学等の研究機関との共同開発、新規事業の立ち上げ、難易度の高い障害解析などを中心に事業展開をしております。コンパイラやネットワークプロトコルの研究開発から並列数値計算等、アプリケーションレベルにとどまらない広い範囲の技術を有し、お客様に感動品質を提供しております。 -TNTで働く全てのメンバーは、各分野のスペシャリスト。マニアックなまでのこだわりを持つスペシャルメンバーたちが常に活発な技術交流を行い、そこから斬新な発想を生み出すことで、広くて深いスペシャリティを持ち続けています。 -

- -

株式会社コンテンツワン

-

-<%= image_tag('sponsors/contents-one.png', :alt => '株式会社コンテンツワン', :class => 'logo') %> -コンテンツワンは、転職や案件提供を通じてウェブエンジニアのキャリアを支援する会社です。ウェブエンジニアをHAPPYに!という思いと、Rubyの理念が近しいことに親近感を覚え、Ruby推奨を掲げてから早、2年になります。 -最近は、Rubyでの開発案件、Rubyの仕事をしたいエンジニアから認知され、Rubyの仕事もRubyをやりたい人も集まってくるようになりました。Ruby開発、Rubyへのキャリアチェンジについてのご相談があれば、お気軽にご連絡ください。
-また、ウェブサイト上でトップエンジニアの生きざまを「Webエンジニア武勇伝」「Engineer25」「スーパーハッカー列伝」で公開しています。多くのRubyistも登場していますので是非ご覧ください。
-それでは、皆様のブースへのご来場をお待ちしております。
-※「ウェブキャリア」は「コンテンツワン」に変わりました。 -

- -

ゴールドスポンサー

-

株式会社アンタス

-

-<%= image_tag('sponsors/antas.png', :alt => '株式会社アンタス', :class => 'logo') %> -株式会社アンタスは札幌に本社を置くITソリューション&サービスプロバイダーで、システム開発、運用保守、インターネット向けサービス運営を主業務としています。
-主なサービスには、アフィリエイト・スクール採用HP作成CMSアンカー三行広告配信エンジンがあります。
-Rubyの素晴らしさには早くから注目しており、2006年からは本格的に開発にRubyを利用し始めました。 -過去の実績としてはdRubyデーモンによる FAX 送信制御システム、Rails を利用した Web アプリケーション(EC サイト、CMS、社内業務システム他多数)などがあり、最も大きいものでは4万行程の Rails アプリケーションの構築実績があります。 -

- -

株式会社クリアコード

-

-<%= image_tag('sponsors/clear-code.png', :alt => '株式会社クリアコード', :class => 'logo') %> -株式会社クリアコードはフリーソフトウェア開発者が中心となって設立した会社で、フリーソフトウェアの普及と発展に貢献することを目標としています。フリーソフトウェアの開発を軸として、フリーソフトウェアのカスタマイズや品質改善、障害解析、フリーソフトウェアを活用したシステム構築を事業として展開中です。また、代表取締役の須藤功平がRuby-GNOME2、Ruby標準添付のRSS Parser、ActiveLdap、Rabbitの開発者であることから、Rubyによる開発にも力を入れています。最近ではIPAのオープンソフトウェア利用促進事業「迷惑メール対策ポリシーを柔軟に実現するためのmilterの開発」においてRubyインタプリタを内蔵したmilter managerを開発しました。展示ブースでは、開発しているフリーソフトウェアの紹介や、ライブリリースを企画中です。詳しくはククログをご覧ください。 -

- -

株式会社クオン

-

-<%= image_tag('sponsors/cuon.png', :alt => '株式会社クオン', :class => 'logo') %> -弊社は、企画から開発・インフラまでをワンストップで完結できる少数精鋭のプロ集団です。 -全く新しい患者コミュニティサイト「LifePalette」をオープンソースで構築し、フレームワークにRuby on Railsを採用することにより、超効率的な開発を可能にしました。 -また、今後のトラフィック増加に対応するため、Ruby on Railsでは難しいスケールアーキテクチャを実現しました。 -その他、エンタープライズ領域におけるWebシステム構築実績も多数ございます。
-<エンジニア募集案内>
-現在、サービスの企画・開発・保守まで行って頂けるエンジニアの方を募集中ですので、お気軽にお問い合わせ下さい! -

- -

株式会社万葉

-

-<%= image_tag('sponsors/everyleaf.png', :alt => '株式会社万葉', :class => 'logo') %> -エンジニア全員がRubyのスキルを持ち、Ruby on RailsによるWebアプリケーション開発を中心的な業務にしている会社です。Rubyをうまく使ってお客様も開発者もともに幸せになる開発をしたいと願っています。チーム作り、開発の進め方のアドバイスなどの支援も行っています。Web家計簿「小槌」蔵書管理システム「BookScope」等のサービスを運用中なので、ご興味のある方はぜひ試してみてください。また、最近ではiPhoneアプリケーションの開発も手がけています。 -

- -

株式会社iRubySystems

-

-<%= image_tag('sponsors/irubysystems.png', :alt => '株式会社iRubySystems', :class => 'logo') %> -刻言道場「まいトレ」サービスを提供しています。2001年6月にRuby商用システムを稼働(2002/2日経オープンシステムP.122にて紹介)してからRubyにぞっこんです。 -会社名にRubyを冠するのも日本初かも。 -

- -

有限会社ラビックス

-

-<%= image_tag('sponsors/rabbix.png', :alt => '有限会社ラビックス', :class => 'logo') %> -ラビックスはRubyおよびRuby on Railsでウェブアプリケーションの開発をしている会社です。

- -この夏、ラビックスは「e論文(学術集会サイトシステム)」をリリースします!

- -弊社はこれまで、創業以来7年にわたって、以下のような学会の論文投稿サイト・参加申し込みサイトを構築し、実績を積んできました。

-

-
    -
  • 4000人規模の学会発表論文投稿サイトの構築
  • -
  • 9000人の参加申し込みサイト
  • -
  • 論文集の作成(5巻を3000冊)
  • -
  • 配布CD-ROMの作成(11000枚)
  • -
-

-e論文は、これらの経験を元に、使いやすい学術集会サイトシステムを追求し、SaaS型アプケーションにしてワンパッケージとしたものです。 -

- -

楽天株式会社

-

-<%= image_tag('sponsors/rakuten.png', :alt => '楽天株式会社', :class => 'logo') %> -楽天はインターネットショッピングモール「楽天市場」をはじめとして、複数の事業を多角的に運営し、「日本発」の企業として着々と台湾、ヨーロッパ、アメリカをはじめグローバルに事業規模を拡げています。 -競争力を確保するために、事業の基盤となるテクノロジーの開発をほぼ自社内で行っており、『人財』としてのエンジニアを大切にしています。現場のモチベーションから本格導入に至ったRubyでしたが、Rubyのメリットを分かった上で戦略的に採用するアプリケーションも増え、標準化体制を準備、ますます位置づけが高まっています。 -楽天技術研究所では、まつもとフェローとの共同研究として、Ruby による分散並列データ処理フレームワーク fairy と、key-value store である ROMA の開発を着々とすすめており、オープン化に向けて今後も研究開発を継続していきます。 -楽天は「日本を元気にする」を合言葉に、日本中の中小企業の皆さまがインターネットで手軽にご商売ができる環境を整える裏側で、楽天タワーを含め全国5拠点に開発体制を構築、日本中のエンジニアが好きなところに居を構えて開発を楽しめる環境を準備しています。 -

- -

SKIPユーザグループ

-

-<%= image_tag('sponsors/sug.png', :alt => 'SKIPユーザグループ', :class => 'logo') %> -SKIPは、社内情報共有の促進/コミュニケーションの活性化を実現する、オープンソースの社内SNSです。「社内に"気軽な"コミュニケーションの場を作り、"気軽に"情報を発信し続けることで、自然とナレッジが蓄積される仕組み作り」をコンセプトに、ビジネス用途に特化している点が特徴です。2008年6月にオープンソースとして公開され、多様な企業で導入・活用されています。
-SKIPの開発・コミュニティ運営は、ユーザコミュニティ"SKIPユーザグループ"(=SUG)が担当しています。機能改善・追加を活発に進めており、RubyとRuby on Railsを採用して、アジャイル開発を進めてきました。Rubyによる高い生産性と保守性、さらにプログラミングの楽しさをRubyが再認識させてくれたことに、感謝しています。
-

-

- -

タワーズ・クエスト株式会社

-

-<%= image_tag('sponsors/towersquest.png', :alt => 'タワーズ・クエスト株式会社', :class => 'logo') %> -タワーズ・クエストは、平成2年の創業以来、一貫して「社会のための技術」を求め、少数精鋭主義を貫く技術会社です。 -アジャイルプロセス、テスト駆動開発、大規模データベース設計、RESTfulかつWeb標準に準拠したなWebアプリケーションの設計開発などに強みを発揮し、お客様の満足のために持てる技術を惜しみなく投入します。 -タワーズ・クエストは「つなぐ」会社です。技術から価値を創造し、技術と人、お客様とお客様、企業と社会、過去と未来をつなぐために、最大多数の最大幸福、社会貢献のために日々努力してまいります。 -

- -

ワイクル株式会社

-

-<%= image_tag('sponsors/waicrew.png', :alt => 'ワイクル株式会社', :class => 'logo') %> -好きなメソッドは「Enumerable#map」。好きなRubyistは「m_seki」。Railsを用いたWebアプリケーション開発を淡々と承ります -

- -
diff --git a/app/views/ruby_kaigi2009/Team_en.html.erb b/app/views/ruby_kaigi2009/Team_en.html.erb deleted file mode 100644 index c0b367d0..00000000 --- a/app/views/ruby_kaigi2009/Team_en.html.erb +++ /dev/null @@ -1,81 +0,0 @@ -<%# coding: utf-8 -%> -
-

The RubyKaigi 2009 Executive Committee

-
-
Chairman
-
Masayoshi TAKAHASHI (Nihon Ruby-no-Kai, Chairman / Twinspark)
-
Chief of Operations
-
Shintaro KAKUTANI (Nihon Ruby-no-Kai || Eiwa System Management)
-
Program Chair
-
Koichi SASADA (Nihon Ruby-no-Kai, The University of Tokyo)
-
Sponsor Liason
-
Junichiro KITA (Nihon Ruby-no-Kai)
-
Ruby Association
-
Shugo MAEDA (Ruby Association / Network Applied Communication Laboratory)
-
-

Staff

-
    -
  • Tadashi TADA (tDiary.org) - Conference Novelty Goods
  • -
  • Norio (Ibaraki Ruby-no-kai) - Design
  • -
  • Shin'ya ADZUMI (Nihon Ruby-no-kai, Intasect Communications) - Accounting
  • -
  • Osamu FUKUI (Nihon Ruby-no-kai, iRubySystems) - Hall Preparations
  • -
  • Ayumu AIZAWA (Nihon Ruby-no-Kai, Akasaka.rb) -
  • -
  • Toshiaki KOSHIBA (iPride, 4038nullpointer.com) -
  • -
  • Sunao TANABE (Nihon Ruby-no-kai) -
  • -
  • Tadashi SAWADA -
  • -
  • Naoto TAKAI (Akasaka.rb) -
  • -
  • Leonard Chin (Nihon Ruby-no-kai) - English Support
  • -
  • Kyosuke MOROHASHI (Rails Tokyo || Eiwa System Management) - Accounting
  • -
  • Junya OGINO
  • -
  • Kazuhiko (Open Source Programmer / Nihon Ruby-no-kai)
  • -
  • Tadashi SAITO (College of Information Science, University of Tsukuba) -
  • -
-

Volunteer Staff

-
    -
  • Shumpei AKAI (Tokyo Institute of Technology)
  • -
  • Ryousuke ONO (Otaru University of Commerce)
  • -
  • Motohiro TAKAYAMA (@mootoh)
  • -
  • Yusuke SAKAKI (mitaka.rb)
  • -
  • Yukinori TANIUCHI (id:negaton, Tsukuba.R) -
  • Miho SUZUKI (@adzuki34)
  • -
  • Maico SATO (Ruby Sapporo)
  • -
  • Iori ONDA
  • -
-

KaigiFreaks

-

Chief

-
    -
  • Koji SHIMADA (Ruby Sapporo / Enishi Tech)
  • -
  • Yohji SHIDARA (Ruby Sapporo / Enishi Tech)
  • -
-

Streaming Squad

-
    -
  • Tomoki MAEDA (Ruby Sapporo / Antas)
  • -
  • Kenta MURATA (Ruby Sapporo)
  • -
  • Fumitake TANIGUCHI (Ruby Sapporo, Hokkaido Information University)
  • -
  • Mitsuteru NAKAO (BioRuby.org)
  • -
  • Ippei OGIWARA (iogi)
  • -
  • Norio SUZUKI (Japan PHP Users Group, TRICORN)
  • -
  • Kazumichi TAKAHASHI (gihyo.jp)
  • -
  • Daiki IKEDA (WEB+DB PRESS)
  • -
  • id:syou6162 (Tsukuba.R)
  • -
  • id:mickey24 (Tsukuba.R)
  • -
  • id:wakuteka (Tsukuba.R)
  • -
-

Reporting Squad

-
    -
  • Jun OHWADA (Ruby Sapporo, Scigineer)
  • -
  • Kei SHIRATSUCHI (Ruby Sapporo, Scigineer)
  • -
-

Slide Translator

-
    -
  • Leonard Chin (Nihon Ruby-no-kai)
  • -
  • Tadashi SAWADA
  • -
  • Masayoshi TAKAHASHI (Nihon Ruby-no-Kai, Chairman / Twinspark)
  • -
  • Motohiro TAKAYAMA (@mootoh)
  • -
  • Sougo TSUBOI (druby.org)
  • -
  • Akira MATSUDA (Asakusa.rb)
  • -
-
- <%=link_to('Permalink', pub_release_url(:year => 2009, :page_name => 'Team', :locale => I18n.locale)) %> -
-
diff --git a/app/views/ruby_kaigi2009/Team_ja.html.erb b/app/views/ruby_kaigi2009/Team_ja.html.erb deleted file mode 100644 index c0eff44d..00000000 --- a/app/views/ruby_kaigi2009/Team_ja.html.erb +++ /dev/null @@ -1,81 +0,0 @@ -<%# coding: utf-8 -%> -
-

日本Ruby会議2009実行委員会

-
-
実行委員長
-
高橋征義 (日本Rubyの会会長, 株式会社ツインスパーク)
-
運営委員長
-
角谷信太郎 (日本Rubyの会 || (株)永和システムマネジメント)
-
プログラム委員長
-
笹田耕一 (日本Rubyの会, 東京大学大学院情報理工学系研究科創造情報学専攻)
-
スポンサー渉外担当
-
喜多淳一郎 (日本Rubyの会)
-
Rubyアソシエーション
-
前田修吾 (Rubyアソシエーション, 株式会社ネットワーク応用通信研究所)
-
-

実行委員

-
    -
  • ただただし (tDiary.org) - ノベルティ担当 / 一橋記念講堂担当
  • -
  • のりお (茨城Rubyの会) - デザイン担当
  • -
  • あづみしんや (日本Rubyの会, インタセクト・コミュニケーションズ株式会社) - 経理担当
  • -
  • 福井修 (日本Rubyの会, 株式会社iRubySystems) - 会場/オペレーション担当
  • -
  • 相澤歩 (日本Rubyの会, Akasaka.rb)- 中会議室 / スポンサー担当
  • -
  • こしば としあき (株式会社アイ・プライド, 4038nullpointer.com) - 受付 / オペレーション担当
  • -
  • たなべ すなお (日本Rubyの会) - オペレーション担当
  • -
  • 沢田正 - 会場 / オペレーション担当
  • -
  • 高井直人 (Akasaka.rb) - 懇親会代表幹事
  • -
  • レオ Leonard Chin (日本Rubyの会) - 海外対応
  • -
  • 諸橋恭介 (Rails勉強会@東京 || (株)永和システムマネジメント) - 会計
  • -
  • 荻野淳也 (あとで書く) - 道案内番長
  • -
  • かずひこ (オープンソース・プログラマ, 日本Rubyの会) - 自由
  • -
  • 斎藤ただし (筑波大学情報学類) - 一橋記念講堂担当
  • -
-

"当日"スタッフ

-
    -
  • 赤井駿平 (東京工業大学)
  • -
  • 小野良介 (小樽商科大学)
  • -
  • 高山征大 (@mootoh)
  • -
  • 榊祐介 (mitaka.rb)
  • -
  • 谷内幸憲 (id:negaton, Tsukuba.R) -
  • すずきみほ (@adzuki34)
  • -
  • 佐藤麻衣子 (Ruby札幌)
  • -
  • 恩田伊織
  • -
-

KaigiFreaks

-

番長

-
    -
  • しまだこうじ (Ruby札幌, 株式会社えにしテック)
  • -
  • しだらようじ (Ruby札幌, 株式会社えにしテック)
  • -
-

配信班

-
    -
  • まえだともき (Ruby札幌, 株式会社アンタス)
  • -
  • むらたけんた (Ruby札幌)
  • -
  • たにぐちふみたけ (Ruby札幌, 北海道情報大学)
  • -
  • なかおみつてる (BioRuby.org)
  • -
  • 荻原一平 (iogi)
  • -
  • 鈴木則夫 (日本PHPユーザ会, トライコーン株式会社)
  • -
  • 高橋和道 (技術評論社gihyo.jp編集部)
  • -
  • 池田大樹 (技術評論社WEB+DB PRESS編集部)
  • -
  • id:syou6162 (Tsukuba.R)
  • -
  • id:mickey24 (Tsukuba.R)
  • -
  • id:wakuteka (Tsukuba.R)
  • -
-

レポート班

-
    -
  • 大和田純 (Ruby札幌, サイジニア株式会社)
  • -
  • 白土慧 (Ruby札幌, サイジニア株式会社)
  • -
-

スライド翻訳

-
    -
  • レオ Leonard Chin (日本Rubyの会)
  • -
  • 沢田正
  • -
  • 高橋征義 (日本Rubyの会会長, 株式会社ツインスパーク)
  • -
  • 高山征大 (@mootoh)
  • -
  • 坪井創吾 (toRuby, druby.org)
  • -
  • 松田 明 (Asakusa.rb)
  • -
-
- <%=link_to('Permalink', pub_release_url(:year => 2009, :page_name => 'Team', :locale => I18n.locale)) %> -
-
diff --git a/app/views/ruby_kaigi2009/_headline.html.erb b/app/views/ruby_kaigi2009/_headline.html.erb deleted file mode 100644 index 7558ed7e..00000000 --- a/app/views/ruby_kaigi2009/_headline.html.erb +++ /dev/null @@ -1,10 +0,0 @@ -<% if @headline_entries -%> -

<%= link_to 'RubyKaigi日記', 'http://rubykaigi.tdiary.net/' %>

-
    - <% @headline_entries.each do |he|-%> -
  • - <%= link_to h(he.title), he.link %> (<%=h time_ago_in_words(he.time) %><%= t(:ago) %>) -
  • - <% end -%> -
-<% end -%> diff --git a/app/views/ruby_kaigi2009/goodies_en.html.erb b/app/views/ruby_kaigi2009/goodies_en.html.erb deleted file mode 100644 index 04bca4d1..00000000 --- a/app/views/ruby_kaigi2009/goodies_en.html.erb +++ /dev/null @@ -1,54 +0,0 @@ -<%# coding: utf-8 -%> -
-

<%=t(:goodies) %>

-

<%=t(:wallpapers) %>

-

Type A

-
    -
  • <%= link_to("type_a_1024x768.png", "/images/goodies/wallpapers/type_a_1024x768.png") %>
  • -
  • <%= link_to("type_a_1280x800.png", "/images/goodies/wallpapers/type_a_1280x800.png") %>
  • -
  • <%= link_to("type_a_1440x900.png", "/images/goodies/wallpapers/type_a_1440x900.png") %>
  • -
  • <%= link_to("type_a_1600x1200.png", "/images/goodies/wallpapers/type_a_1600x1200.png") %>
  • -
  • <%= link_to("type_a_1920x1200.png", "/images/goodies/wallpapers/type_a_1920x1200.png") %>
  • -
-

Type B

-
    -
  • <%= link_to("type_b_1920x1200.png", "/images/goodies/wallpapers/type_b_1920x1200.png") %>
  • -
  • <%= link_to("type_b_1600x1200.png", "/images/goodies/wallpapers/type_b_1600x1200.png") %>
  • -
-

Type C

-
    -
  • <%= link_to("type_c_1920x1200.png", "/images/goodies/wallpapers/type_c_1920x1200.png") %>
  • -
  • <%= link_to("type_c_1600x1200.png", "/images/goodies/wallpapers/type_c_1600x1200.png") %>
  • -
-

Type D

-
    -
  • <%= link_to("type_d_1920x1200.png", "/images/goodies/wallpapers/type_d_1920x1200.png") %>
  • -
  • <%= link_to("type_d_1600x1200.png", "/images/goodies/wallpapers/type_d_1600x1200.png") %>
  • -
-

<%=t(:badge) %>

-

- <%= link_to(image_tag('goodies/badges/attendee.gif', :alt => 'attendee'), "http://rubykaigi.org/2009/") %> -

-

- <%= link_to(image_tag('goodies/badges/speaker.gif', :alt => 'speaker'), "http://rubykaigi.org/2009/") %> -

-

- <%= link_to(image_tag('goodies/badges/sponsor.gif', :alt => 'sponsor'), "http://rubykaigi.org/2009/") %> -

-

- <%= link_to(image_tag('goodies/badges/staff.gif', :alt => 'staff'), "http://rubykaigi.org/2009/") %> -

-

<%=t(:bgm) %>

-

  

- -

<%=t(:license) %>

-

- <%= link_to(image_tag('http://i.creativecommons.org/l/by/2.1/jp/88x31.png', :size => '88x31'), 'http://creativecommons.org/licenses/by/2.1/jp/') %>
- <%= link_to('http://creativecommons.org/licenses/by/2.1/jp/', 'http://creativecommons.org/licenses/by/2.1/jp/') %> -

- -
- <%=link_to('Permalink', pub_release_url(:year => 2009, :page_name => 'goodies', :locale => I18n.locale)) %> -
-
diff --git a/app/views/ruby_kaigi2009/goodies_ja.html.erb b/app/views/ruby_kaigi2009/goodies_ja.html.erb deleted file mode 100644 index bbd91451..00000000 --- a/app/views/ruby_kaigi2009/goodies_ja.html.erb +++ /dev/null @@ -1,59 +0,0 @@ -<%# coding: utf-8 -%> -
-

<%=t(:goodies) %>

-

RubyKaigi2009に関連するファイルなどを提供します。

-

<%=t(:wallpapers) %>

-

Type A

-
    -
  • <%= link_to("type_a_1024x768.png", "/images/goodies/wallpapers/type_a_1024x768.png") %>
  • -
  • <%= link_to("type_a_1280x800.png", "/images/goodies/wallpapers/type_a_1280x800.png") %>
  • -
  • <%= link_to("type_a_1440x900.png", "/images/goodies/wallpapers/type_a_1440x900.png") %>
  • -
  • <%= link_to("type_a_1600x1200.png", "/images/goodies/wallpapers/type_a_1600x1200.png") %>
  • -
  • <%= link_to("type_a_1920x1200.png", "/images/goodies/wallpapers/type_a_1920x1200.png") %>
  • -
-

Type B

-
    -
  • <%= link_to("type_b_1920x1200.png", "/images/goodies/wallpapers/type_b_1920x1200.png") %>
  • -
  • <%= link_to("type_b_1600x1200.png", "/images/goodies/wallpapers/type_b_1600x1200.png") %>
  • -
-

Type C

-
    -
  • <%= link_to("type_c_1920x1200.png", "/images/goodies/wallpapers/type_c_1920x1200.png") %>
  • -
  • <%= link_to("type_c_1600x1200.png", "/images/goodies/wallpapers/type_c_1600x1200.png") %>
  • -
-

Type D

-
    -
  • <%= link_to("type_d_1920x1200.png", "/images/goodies/wallpapers/type_d_1920x1200.png") %>
  • -
  • <%= link_to("type_d_1600x1200.png", "/images/goodies/wallpapers/type_d_1600x1200.png") %>
  • -
-

<%=t(:badge) %>

-

参加者用(RubyKaigi2009に参加される方はご自分のサイトに張りましょう!)

-

- <%= link_to(image_tag('goodies/badges/attendee.gif', :alt => 'attendee'), "http://rubykaigi.org/2009/") %> -

-

スピーカー用(RubyKaigi2009でスピーカーとして参加される方用)

-

- <%= link_to(image_tag('goodies/badges/speaker.gif', :alt => 'speaker'), "http://rubykaigi.org/2009/") %> -

-

スポンサー用(RubyKaigi2009にスポンサー企業様用)

-

- <%= link_to(image_tag('goodies/badges/sponsor.gif', :alt => 'sponsor'), "http://rubykaigi.org/2009/") %> -

-

スタッフ用

-

- <%= link_to(image_tag('goodies/badges/staff.gif', :alt => 'staff'), "http://rubykaigi.org/2009/") %> -

-

<%=t(:bgm) %>

-

会期中に会場で使用したBGMです。

-

  

- -

<%=t(:license) %>

-

- <%= link_to(image_tag('http://i.creativecommons.org/l/by/2.1/jp/88x31.png', :size => '88x31'), 'http://creativecommons.org/licenses/by/2.1/jp/') %>
- <%= link_to('http://creativecommons.org/licenses/by/2.1/jp/', 'http://creativecommons.org/licenses/by/2.1/jp/') %> -

- -
- <%=link_to('Permalink', pub_release_url(:year => 2009, :page_name => 'goodies', :locale => I18n.locale)) %> -
-
diff --git a/app/views/ruby_kaigi2009/index_en.html.erb b/app/views/ruby_kaigi2009/index_en.html.erb deleted file mode 100644 index f86f6527..00000000 --- a/app/views/ruby_kaigi2009/index_en.html.erb +++ /dev/null @@ -1,73 +0,0 @@ -<%# coding: utf-8 -%> - -
-

<%=t :rubykaigi2010 %>

-
-RubyKaigi 2010 will be held over 3 days, August 27 - 29 2010 in Tsukuba International Conference Center (Tsukuba,Ibaraki,Japan).
-
-Official Information: http://rubykaigi.org/2010/en
-

<%=t :rubykaigi2009 %>

-
-RubyKaigi2009 is over. Thanks for coming. Love to you all and thanks to the world Ruby exists. -
- -
- RubyKaigi2009 will be held at Hitotsubashi Conference Hall in Chiyoda-ku, Tokyo, over 3 days from Friday, July 17th until Sunday, July 19th. - -
    -
  • Dates: July 17-19 2009
  • -
  • Fee: 6,000 JPY (Planned price; 3 days pass) -
      -
    • <%= link_to_if controller.registration_open?, 'Registration', registrations_path(:year => '2009', :locale => 'en') %> 2nd round ticket for RubyKaigi 2009 go on sale from 2009-06-17 12:30 JST sold out.
    • -
    • ticketing 1st round(2009-06-01 19:00-) was sold out in 111 minutes.
    • -
    -
  • -
  • Venue: Hitotsubashi Conference Hall in Chiyoda-ku, Tokyo (Map)
  • -
  • Streaming: Sessions are scheduled to streaming via Ustream.tv. the streaming will be distrubuted by "KaigiFreaks".The delivery quality is best effort.
  • -
  • official tag: rubykaigi2009
  • -
  • official hash tag: #rubykaigi
  • -
- -
View Larger Map -
-
- -
-

Agenda

-
    -
  • Keynote addresses: Matz, Masayoshi Takahashi
  • -
  • Talks: Yehuda Katz (Merb, Rails), Scott Chacon (Github), Kuwata Makoto (erubis), Jeremy Evans (Sequel), Masatoshi Seki (erb, druby, rinda), Michael Felinger (Ramaze), Koichi Sasada (Ruby 1.9), Nick Sieger and Tom Enebo (JRuby), Akira Tanaka (openuri), Keiju Ishitsuka (irb, "the guy who named Ruby"), Kentaro "gotoken" Goto (Benchmark),and lots more!
  • -
-

<%= link_to 'Timetable and Session Detail', '/2009/en/talks' %>

-
- -
-

Conference Party

-
    -
  • Date: July 17 2009
  • -
  • Fee: 5,000 JPY
  • -
  • Place: in the nearby RubyKaigi2009 venue.
  • -
-
    -
  • <%= link_to_if controller.registration_open?, 'Registration', registrations_path(:year => '2009', :locale => 'en') %> 2nd round ticket for RubyKaigi 2009 go on sale from 2009-06-17 12:30 JST sold out.
  • -
  • ticketing 1st round(2009-06-01 19:00-) was sold out in 111 minutes.
  • -
-
- -
-

<%= link_to_if controller.registration_open?, 'Registration', registrations_path(:year => '2009', :locale => 'en') %>

-
RubyKaigi 2009 ticket is sold out. -
-

<%= link_to_if controller.registration_open?, 'Registration', registrations_path(:year => '2009', :locale => 'en') %> will be open on 2009-06-17 12:30 JST. sold out

-
- -
-

Call for Lightning Talks(LT) Submissions

-
Lightning Talk submission was deadlined. Thanks you all for such a massive submissions :-) -
- -

RubyKaigi2009 is currently accepting <%= link_to_if controller.lt_submission_open?, 'submissions', "/2009/#{I18n.locale}/lightning_talk_submissions" %> for Lightning Talks. We're looking for talks on a wide range of topics, from demos of Ruby applications, to your opinions about Ruby itself, and so forth. Please apply if you're interested!

- -
diff --git a/app/views/ruby_kaigi2009/index_ja.html.erb b/app/views/ruby_kaigi2009/index_ja.html.erb deleted file mode 100644 index f224cf20..00000000 --- a/app/views/ruby_kaigi2009/index_ja.html.erb +++ /dev/null @@ -1,86 +0,0 @@ -<%# coding: utf-8 -%> -
-

<%=t :rubykaigi2010 %>

-
-日本Ruby会議2010は、2010年8月27日(金)から29日(日)までの3日間、つくば国際会議場で開催します。
-
最新情報は、公式サイトhttp://rubykaigi.org/2010/jaで随時お知らせしています。

-
- -

新着情報

- -
-日本Ruby会議2009は、全日程を終了いたしました。多数の方々にご参加いただき、ありがとうございました。 -
- -
-
-

<%=t :rubykaigi2009 %>

-

日本Ruby会議は、オブジェクト指向スクリプト言語Rubyに関するイベントとしては 世界でも最大級のもので、2006年から毎年開催されています。昨年つくばで開催された 日本Ruby会議2008は、3日間でのべ1000人を越える来場者を数えました。

-

その第4回目となる日本Ruby会議2009(略称:RubyKaigi2009)は、2009年7月17日から 19日までの3日間、学術総合センター(東京都千代田区)にて開催いたします。 都内はもとより、関東圏外の方から参加される方に対しても利便性の高い会場であり、 例年以上の参加を見込んでいます。

-

RubyKaigi2009のテーマは、「変わる/変える」です。 前回のRubyKaigi2008のテーマであった「多様性」の言葉の通り、 2008年はRubyそのものに関しても、またRubyの活躍する舞台に関しても、 ますます多様化が進みつつあります。RubyKaigi2008は、そのような Rubyの生態系をあらためて認識する場となりました。 しかし、こうした多様化が進む中、異なる者同士が単純に距離を 置いたままでは、その違いを認識したところであまり意味がありません。 異なる実装、異なる思想、異なる背景といった、様々な多様性を理解しつつ、 すり合わせるべきものをすり合わせ、変えていくべきところを 変えていくことが、豊かな未来へとつながる道に違いありません。

-

Ruby自身、1.9.1のリリースを迎え、大きく変わりつつあります。 進化を遂げつつあるRubyに対し、Rubyとその周辺をどのように変えていくのか、 そして変わっていくRubyに対し、私たち自身がどう変わっていくべきなのか、 どのように変わることができるのか。 そのような変革への期待と決意を一望できる場所となればと考えています。 みなさまのご参加を心よりお待ちしております。

-
- -
-

開催概要

-
    -
  • 名称: 日本Ruby会議2009 (RubyKaigi2009)
  • -
  • 会期: 2009 年 7 月 17 日(金)・18 日(土)・19 日(日)
  • -
  • 会場: 学術総合センター(東京都千代田区)地図
  • -
  • 料金: 6,000円 -
      -
    • 3日間の通し券です(日割はいたしかねます)。
    • -
    • 決済にはPayPalを利用しますが、購入にあたりPayPalアカウントの用意は必須ではありません。
    • -
    • 追加<%= link_to_if controller.registration_open?, '販売', registrations_path(:year => '2009', :locale => 'ja') %>は、6月17日(水) 12:30(JST)から行います 完売しました。
    • -
    • 6月1日(月) 19:00(JST)から本サイトにて<%= link_to_if controller.registration_open?, '販売', registrations_path(:year => '2009', :locale => 'ja') %>したチケットは2時間弱で予定販売枚数を終了しました。
    • -
    -
  • -
  • 会期中はKaigiFreaksによるUstream.tv経由でのストリーミング配信を予定しています。配信品質はベストエフォートです。
  • -
  • 公式タグ: rubykaigi2009
  • -
  • 公式ハッシュタグ: #rubykaigi
  • -
  • 主催: 日本Ruby会議2009実行委員会, Rubyアソシエーション, 日本Rubyの会
  • -
- -

プログラム

-
    -
  • 基調講演: まつもとゆきひろ, 高橋征義
  • -
  • セッションスピーカー: <%= link_to 'タイムテーブル', '/2009/ja/talks' %>でご確認ください
  • -
-

<%= link_to 'タイムテーブルとセッションの詳細', '/2009/ja/talks' %>

- -
- -
-

懇親会

-
    -
  • 日程: 2009 年 7 月 17日(金)
  • -
  • 料金: 5,000円
  • -
  • 会場: 神保町周辺
  • -
  • チケットは6月1日(月) 19:00(JST)から本サイトにて<%= link_to_if controller.registration_open?, '販売', registrations_path(:year => '2009', :locale => 'ja') %>します。 完売しました。
  • -
  • 決済にはPayPalを利用します。 -
-
- -
-

<%= link_to_if controller.registration_open?, '参加登録について', registrations_path(:year => '2009', :locale => 'ja') %>

-
RubyKaigi2009本編のチケットは予定販売枚数を終了しました。 -
-

RubyKaigi2009への参加にあたっては、事前にチケットの購入が必要です。チケットの追加販売は6月17日(水) 12:30(JST)から<%= link_to_if controller.registration_open?, '販売', registrations_path(:year => '2009', :locale => 'ja') %>します。決済にはpaypal.comを利用します。 完売しました。

-

懇親会についても同様です。

-
- -
-

ライトニングトークスについて

-
ライトニングトーク発表の募集は締め切りました。たくさんのご応募ありがとうございました。 -
- - -

いわゆるライトニングトークの発表者を<%= link_to_if controller.lt_submission_open?, '募集しています', "/2009/#{I18n.locale}/lightning_talk_submissions" %>。毎年好評なので、今年は会期中に2回ライトニングトークスをおこなう予定です(応募数次第ではありますが)。皆さまからのたくさんのご応募お待ちしております。

-
- -
-

ボランティアスタッフ、プレゼンテーションおよびスポンサーの募集について

-

いずれも締め切りました。多数のお問い合わせならびにご応募ありがとうございました。

-
diff --git a/app/views/ruby_kaigi2009/irc_en.html.erb b/app/views/ruby_kaigi2009/irc_en.html.erb deleted file mode 100644 index daaebb18..00000000 --- a/app/views/ruby_kaigi2009/irc_en.html.erb +++ /dev/null @@ -1,17 +0,0 @@ -<%# coding: utf-8 -%> -
-

IRC

-

To access the official RubyKaigi IRC channel, please use the service linked below.

-

Open as a new window

-

-

Official RubyKaigi IRC Channels

-
    -
  • #rubykaigi (General)
  • -
  • #rubykaigi1 (Main Hall - Hitotsubashi Memorial Hall)
  • -
  • #rubykaigi2 (2nd Floor Conference Room)
  • -
  • #rubykaigi3 (1st Floor Conference Room)
  • -
-
- <%=link_to('Permalink', pub_release_url(:year => 2009, :page_name => 'irc', :locale => I18n.locale)) %> -
-
diff --git a/app/views/ruby_kaigi2009/irc_ja.html.erb b/app/views/ruby_kaigi2009/irc_ja.html.erb deleted file mode 100644 index 937e09f3..00000000 --- a/app/views/ruby_kaigi2009/irc_ja.html.erb +++ /dev/null @@ -1,11 +0,0 @@ -<%# coding: utf-8 -%> -
-

IRC

-

会場からRubyKaigiの公式チャンネルに参加されるには、以下をご利用ください。

-

open as a new window

-

- -
- <%=link_to('Permalink', pub_release_url(:year => 2009, :page_name => 'irc', :locale => I18n.locale)) %> -
-
diff --git a/app/views/ruby_kaigi2009/live/room1_en.html.erb b/app/views/ruby_kaigi2009/live/room1_en.html.erb deleted file mode 100644 index eaee97a2..00000000 --- a/app/views/ruby_kaigi2009/live/room1_en.html.erb +++ /dev/null @@ -1,21 +0,0 @@ -<%# coding: utf-8 -%> -
-

RubyKaigi2009.live!

-

<%=t("room.rubykaigi2009.hall") %>

-

The live broadcast will be via ustream.tv. We will not be using ustream's IRC server. Please use #rubykaigi on irc.freenode.net.

-

- Live Broadcast by Ustream.TV -

-

about IRC

-
    -
  • Server: irc.freenode.net:6667
  • -
  • Channel: #rubykaigi1
  • -
  • encoding: UTF-8
  • -
-

notes

-
    -
  • Streaming quality is Best Effort. Please understand that we cannot guarantee quality.
  • -
  • RubyKaigi.live! is brought to you by "KaigiFreaks"
  • -
  • Recordings of the RubyKaigi talks will also be released to various video sharing services after the conference.
  • -
-
diff --git a/app/views/ruby_kaigi2009/live/room1_ja.html.erb b/app/views/ruby_kaigi2009/live/room1_ja.html.erb deleted file mode 100644 index b4be14b7..00000000 --- a/app/views/ruby_kaigi2009/live/room1_ja.html.erb +++ /dev/null @@ -1,21 +0,0 @@ -<%# coding: utf-8 -%> -
-

RubyKaigi2009.live!

-

<%=t("room.rubykaigi2009.hall") %>

-

Ustream.tvを使ったストリーミング中継です。ustのIRCは利用しません。irc.freenode.netを使ってください。

-

- Free video chat by Ustream -

-

IRC情報

-
    -
  • サーバ: irc.freenode.net:6667
  • -
  • チャネル: #rubykaigi1
  • -
  • 文字コード: UTF-8
  • -
-

その他

-
    -
  • 中継品質はベストエフォートです。悪しからずご了承ください。
  • -
  • KaigiFreaksがお届けします。
  • -
  • 中継とは別に、後日録画した動画も公開予定です(準備ができ次第、別途アナウンスします)。
  • -
-
diff --git a/app/views/ruby_kaigi2009/live/room2_en.html.erb b/app/views/ruby_kaigi2009/live/room2_en.html.erb deleted file mode 100644 index feea769a..00000000 --- a/app/views/ruby_kaigi2009/live/room2_en.html.erb +++ /dev/null @@ -1,21 +0,0 @@ -<%# coding: utf-8 -%> -
-

RubyKaigi2009.live!

-

<%=t("room.rubykaigi2009.medium") %>

-

The live broadcast will be via ustream.tv. We will not be using ustream's IRC server. Please use #rubykaigi on irc.freenode.net.

-

- Live streaming video by Ustream -

-

about IRC

-
    -
  • Server: irc.freenode.net:6667
  • -
  • Channel: #rubykaigi2
  • -
  • encoding: UTF-8
  • -
-

notes

-
    -
  • Streaming quality is Best Effort. Please understand that we cannot guarantee quality.
  • -
  • RubyKaigi.live! is brought to you by "KaigiFreaks"
  • -
  • Recordings of the RubyKaigi talks will also be released to various video sharing services after the conference.
  • -
-
diff --git a/app/views/ruby_kaigi2009/live/room2_ja.html.erb b/app/views/ruby_kaigi2009/live/room2_ja.html.erb deleted file mode 100644 index 89138998..00000000 --- a/app/views/ruby_kaigi2009/live/room2_ja.html.erb +++ /dev/null @@ -1,21 +0,0 @@ -<%# coding: utf-8 -%> -
-

RubyKaigi2009.live!

-

<%=t("room.rubykaigi2009.medium") %>

-

Ustream.tvを使ったストリーミング中継です。ustのIRCは利用しません。irc.freenode.netを使ってください。

-

- Live TV : Ustream -

-

IRC情報

-
    -
  • サーバ: irc.freenode.net:6667
  • -
  • チャネル: #rubykaigi2
  • -
  • 文字コード: UTF-8
  • -
-

その他

-
    -
  • 中継品質はベストエフォートです。悪しからずご了承ください。
  • -
  • KaigiFreaksがお届けします。
  • -
  • 中継とは別に、後日録画した動画も公開予定です(準備ができ次第、別途アナウンスします)。
  • -
-
diff --git a/app/views/ruby_kaigi2009/live/room3_en.html.erb b/app/views/ruby_kaigi2009/live/room3_en.html.erb deleted file mode 100644 index 8c75ea55..00000000 --- a/app/views/ruby_kaigi2009/live/room3_en.html.erb +++ /dev/null @@ -1,21 +0,0 @@ -<%# coding: utf-8 -%> -
-

RubyKaigi2009.live!

-

<%=t("room.rubykaigi2009.small") %>

-

The live broadcast will be via ustream.tv. We will not be using ustream's IRC server. Please use #rubykaigi on irc.freenode.net.

-

- Video streaming by Ustream -

-

about IRC

-
    -
  • Server: irc.freenode.net:6667
  • -
  • Channel: #rubykaigi3
  • -
  • encoding: UTF-8
  • -
-

notes

-
    -
  • Streaming quality is Best Effort. Please understand that we cannot guarantee quality.
  • -
  • RubyKaigi.live! is brought to you by "KaigiFreaks"
  • -
  • Recordings of the RubyKaigi talks will also be released to various video sharing services after the conference.
  • -
-
diff --git a/app/views/ruby_kaigi2009/live/room3_ja.html.erb b/app/views/ruby_kaigi2009/live/room3_ja.html.erb deleted file mode 100644 index 152d781b..00000000 --- a/app/views/ruby_kaigi2009/live/room3_ja.html.erb +++ /dev/null @@ -1,21 +0,0 @@ -<%# coding: utf-8 -%> -
-

RubyKaigi2009.live!

-

<%=t("room.rubykaigi2009.small") %>

-

Ustream.tvを使ったストリーミング中継です。ustのIRCは利用しません。irc.freenode.netを使ってください。

-

- Video streaming by Ustream -

-

IRC情報

-
    -
  • サーバ(Server): irc.freenode.net:6667
  • -
  • チャネル(Channel): #rubykaigi3
  • -
  • 文字コード(encoding): UTF-8
  • -
-

その他

-
    -
  • 中継品質はベストエフォートです。悪しからずご了承ください。
  • -
  • KaigiFreaksがお届けします。
  • -
  • 中継とは別に、後日録画した動画も公開予定です(準備ができ次第、別途アナウンスします)。
  • -
-
diff --git a/app/views/rubyists/show.html.haml b/app/views/rubyists/show.html.haml new file mode 100644 index 00000000..980e73b3 --- /dev/null +++ b/app/views/rubyists/show.html.haml @@ -0,0 +1,33 @@ +#content + %h1= rubyist_name @rubyist + + %article + != img_tag_for_usernavi(@rubyist, 80) +
+ + - if @rubyist == user + %div (That's you!) + + %h2 Website + %p + - if (website = @rubyist.website).present? + != link_to website, website, :rel => 'nofollow me' + - else + N/A + + - (2010..2011).each do |year| + %h2 + RubyKaigi + = year + %ul.listMark + - if @rubyist.contributions.present? + - if @rubyist.individual_sponsor?(year) && !@rubyist.individual_sponsor.anonymous? + %li [Individual Sponsor] + - if @rubyist.staff?(year) + %li [Staff] + - if @rubyist.attendee?(year) + %li [Attendee] + - if @rubyist.party_attendee?(year) + %li [Official Conference Party Attendee] + - else + %li (Nothing) diff --git a/app/views/schedule/details.html.haml b/app/views/schedule/details.html.haml new file mode 100644 index 00000000..83584244 --- /dev/null +++ b/app/views/schedule/details.html.haml @@ -0,0 +1,48 @@ +- @title = @event.localize(I18n.locale, :title) +- content_for :meta_top do + != render :partial => 'shared/2011/facebook_meta' +#content + %h1.events_header + = @title + %article#events + %h2 + %time{:datetime => @session_of_event.start.strftime("%Y-%m-%d") } + = l @session_of_event.start.to_date, :format => :long + (#{@room.localize(I18n.locale, :name)}) + #abstract + %h3 + #{t(:abstract)} + %p + = @event.localize(I18n.locale, :abstract) + - if @event.language.present? + %h3 + #{t(:presentation_language)} + %p= @event.language + != render :partial => 'shared/2011/facebook' + != render :partial => 'shared/2011/twitter' + - if @event.presenters + #speaker + %h3 + #{t(:speaker)} + - @event.presenters.each do |presenter| + %div.avatar + %a{:href => "#", :target => "_blank"} + - if presenter['gravatar'].present? + = gravatar_tag(presenter['gravatar'], :size => 32) + - else + %img{:alt => "", :src => "/2011/images/commonAvatar.png"} + %h4 + = RubyKaigi2011::Localizer.value_for_locale(I18n.locale, presenter["name"]) + - if affiliation = presenter["affiliation"] + %p.affiliation= RubyKaigi2011::Localizer.value_for_locale(I18n.locale, affiliation) + %p + = RubyKaigi2011::Localizer.value_for_locale(I18n.locale, presenter["bio"]) + + -#%h3.cboth + #{t(:presentation_material)} + -#%p - + %p.cboth + %a{:href => "/2011/#{current_locale}/schedule/grid"} + %img{:alt => "Back to schedule", :src => "/2011/images/eventsBtnBackToSchedule.png"} + != render :partial => 'shared/2011/back_to_top' + diff --git a/app/views/schedule/grid.html.haml b/app/views/schedule/grid.html.haml new file mode 100644 index 00000000..9ff52e91 --- /dev/null +++ b/app/views/schedule/grid.html.haml @@ -0,0 +1,58 @@ +- @title = t(:schedule) +- content_for :head do + %link{:href => "/2011/stylesheets/print.css", :media => "print", :rel => "stylesheet", :type => "text/css"} +#content + - cache do + %h1 + #{t(:schedule)} + %p + - @timetable.days.each do |date| + %div + %h2 + %time{:datetime => date.strftime('%Y-%m-%d')} + = l date, :format => :schedule_grid + %table + %colgroup.hours + %colgroup.hall + %colgroup.hall + %tr + %th= t :time_span + - @rooms.each do |room| + %th + = room.localize(I18n.locale, :name) + - @timetable.periods_on(date).each_cons(2) do |s, e| + %tr + %td + = [s, e].map {|t| t.strftime("%H:%M") }.join(' - ') + - rk_sessions = @rooms.map {|room| @timetable.room_timetable_at(date, room.room_id).session_at(s)} + - rk_sessions.each_with_index do |rk_session, index| + - next if index != 0 && rk_sessions[index - 1] == rk_session + - count = rk_sessions.select {|ses| ses == rk_session }.count + + - klass = (!rk_session || rk_session.empty?) ? "not-applicable" : "session" + %td{:colspan => count, :class => klass} + - (events = rk_session.events).each do |event| + - if event.language.present? + %p{:class => "language " + event.language}= event.language[0,2].upcase + %h3 + - unless event.hide_link + %a.tip{:href => schedule_details_path(:id => event._id)} + = event.localize(I18n.locale, :title) + - if abstract = event.localize(I18n.locale, :abstract) + %span= abstract + - else + = event.localize(I18n.locale, :title) + - if event.presenters + - event.presenters.each do |presenter| + %ul.presenter + %li + - if presenter['gravatar'].present? + = gravatar_tag(presenter['gravatar'], :size => 24) + - else + %img{:src => '/images/bow_face.png', :width => 24, :height => 24} + = RubyKaigi2011::Localizer.value_for_locale(I18n.locale, presenter["name"]) + - unless event.hide_link + .right.btnDetails + %a{:href => schedule_details_path(:id => event._id)} + %img{:alt => "Details", :src => "/2011/images/commonBtnDetails.png"} + != render :partial => 'shared/2011/back_to_top' diff --git a/app/views/sessions/create.html.erb b/app/views/sessions/create.html.erb deleted file mode 100644 index c251174f..00000000 --- a/app/views/sessions/create.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -

Sessions#create

-

Find me in app/views/sessions/create.html.erb

diff --git a/app/views/sessions/destroy.html.erb b/app/views/sessions/destroy.html.erb deleted file mode 100644 index d75237d9..00000000 --- a/app/views/sessions/destroy.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -

Sessions#destroy

-

Find me in app/views/sessions/destroy.html.erb

diff --git a/app/views/sessions/new.html.erb b/app/views/sessions/new.html.erb deleted file mode 100644 index c39e996f..00000000 --- a/app/views/sessions/new.html.erb +++ /dev/null @@ -1,6 +0,0 @@ -

<%=t :signin %>

-<% form_tag(sessions_path, {:id => 'signin'}) do -%> - - <%= text_field_tag :openid_identifier, session[:openid_identifier], :size => 50 %> - <%= submit_tag t(:signin) %> -<% end -%> diff --git a/app/views/sessions/new.html.haml b/app/views/sessions/new.html.haml new file mode 100644 index 00000000..ccd08712 --- /dev/null +++ b/app/views/sessions/new.html.haml @@ -0,0 +1,31 @@ +- @title = 'Sign in / Sign up' +- content_for :head do + %style(type='text/css') + :sass + input[name=openid_identifier] + :padding-left 20px + :background + :image url('/images/openid_logo.gif') + :repeat no-repeat + :position 2px center + +#content + %h1= @title + %article#signin + %h2 You can Sign in/up with OAuth/OpenID + %p.btn + != link_to image_tag('/2011/images/registerBtnTwitter.png', :alt => 'via Twitter'), sessions_path(:warden_oauth_provider => 'twitter') + %p.btn + != link_to image_tag('/2011/images/registerBtnGoogle.png', :alt => 'via Google'), sessions_path(:openid_identifier => 'https://www.google.com/accounts/o8/id') + %p.btn + != link_to image_tag('/2011/images/registerBtnYahoo.png', :alt => 'via Yahoo!'), sessions_path(:openid_identifier => 'http://yahoo.com') + %p.btn + != link_to image_tag('/2011/images/registerBtnYahooJapan.png', :alt => 'via Yahoo!JAPAN'), sessions_path(:openid_identifier => 'http://yahoo.co.jp') + %p.btn + != link_to image_tag('/2011/images/registerBtnMixi.png', :alt => 'via mixi'), sessions_path(:openid_identifier => 'http://mixi.jp') + %p.cleft + or signin via other OpenID providers: + != form_tag sessions_path, :method => :get do + %p + != text_field_tag :openid_identifier + != submit_tag 'Sign in' diff --git a/app/views/shared/2011/_back_to_top.html.haml b/app/views/shared/2011/_back_to_top.html.haml new file mode 100644 index 00000000..e344bf65 --- /dev/null +++ b/app/views/shared/2011/_back_to_top.html.haml @@ -0,0 +1,4 @@ +%p.backToTop + %a{:href => "#top"} + %img{:alt => "Back to top", :src => "/2011/images/commonBackToTop.png"} + diff --git a/app/views/shared/2011/_community.en.html.haml b/app/views/shared/2011/_community.en.html.haml new file mode 100644 index 00000000..fd7198ee --- /dev/null +++ b/app/views/shared/2011/_community.en.html.haml @@ -0,0 +1,19 @@ +%article + %h2 + %a{:name => "community"} + #{t(:community)} + %p RubyKaigi is gaining recognition, the number of attendees from outside of Japan attended has been increasing each year. So, we have created a mailing list as a place to communicate among those attendees. + %p Please join the list if you are planning to attend RubyKaigi 2011 from outside of Japan or you are interested in helping and communicating with Rubyists visiting from overseas. + %h3 How to join the list + %p Send an E-mail with the following information: + %div.mailPlease + %ul.listMark + %li To: rk11-talk _at_ qwik.atdot.net + %li Cc: kakutani _at_ rubykaigi.org + %li Subject: Join the list + %p yes, we also have rk11-list. we don't have rk11-dev nor rk11-core :) + %h3 facebook Fan Page + %p Here's RubyKaigi Fan Page on facebook. + %p.btn + %a{:href => "http://www.facebook.com/pages/RubyKaigi/204401496251843"} + %img{:alt => "Check us out on facebook(facebookをチェック)", :height => "40", :src => "/2011/images/forAttendeesBtnFacebook.png", :width => "320", :height => "40"} diff --git a/app/views/shared/2011/_community.ja.html.haml b/app/views/shared/2011/_community.ja.html.haml new file mode 100644 index 00000000..7dd41577 --- /dev/null +++ b/app/views/shared/2011/_community.ja.html.haml @@ -0,0 +1,20 @@ +%article + %h2 + %a{:name => "community"} + #{t(:community)} + %p 日本 Ruby 会議が海外でも認知されつつあり、それにつれて海外からの Ruby 会議参加者が増えつつあります。そこで昨年から、海外参加者同士が連絡を取り合うための場として、日本 Ruby 会議 2011 海外参加者メーリングリストを用意しています。 + %p 海外から Ruby 会議 2011 に参加する方はもとより、海外から参加する Rubyist に興味のある日本の方も是非ご参加下さい。 + %h3 メーリングリストへの登録方法 + %p qwikを用いておりますので、下記要領でメールを送信してください。 + %div.mailPlease + %ul.listMark + %li To: rk11-talk _at_ qwik.atdot.net + %li Cc: kakutani _at_ rubykaigi.org + %li 件名: Join the list + %p ※ メールアドレス中の_at_は@に読み替えてください。 + %p -talk があるなら -list も要るだろう、ということで今年は rk11-list も用意してあります。RubyKaig2011 に興味がある人どうしの交流に使ってください。日本語でどうぞ。なお、-dev と -core はありません。 + %h3 facebookファンページのご案内 + %p facebookのファンページを用意しました。以下よりご覧いただけます。 + %p.btn + %a{:href => "http://www.facebook.com/pages/RubyKaigi/204401496251843"} + %img{:alt => "Check us out on facebook(facebookをチェック)", :height => "40", :src => "/2011/images/forAttendeesBtnFacebook.png", :width => "320", :height => "40"} diff --git a/app/views/shared/2011/_facebook.html.haml b/app/views/shared/2011/_facebook.html.haml new file mode 100644 index 00000000..c9fa37ba --- /dev/null +++ b/app/views/shared/2011/_facebook.html.haml @@ -0,0 +1 @@ +
diff --git a/app/views/shared/2011/_facebook_meta.html.haml b/app/views/shared/2011/_facebook_meta.html.haml new file mode 100644 index 00000000..394f9f83 --- /dev/null +++ b/app/views/shared/2011/_facebook_meta.html.haml @@ -0,0 +1,6 @@ +%meta{ "property" => "og:title", :content => "#{@title}" } +%meta{ "property" => "og:type", :content => "article" } +%meta{ "property" => "og:url", :content => "#{request.url}" } +%meta{ "property" => "og:image", :content => "http://rubykaigi.org/2011/images/commonIcon2011.png" } +%meta{ "property" => "og:site_name", :content => "#{t(:rubykaigi2011)}" } +%meta{ "property" => "og:app_id", :content => "162188720510104" } diff --git a/app/views/shared/2011/_headline.html.haml b/app/views/shared/2011/_headline.html.haml new file mode 100644 index 00000000..ea5a937d --- /dev/null +++ b/app/views/shared/2011/_headline.html.haml @@ -0,0 +1,10 @@ +%ul + - headlines = HeadlineEntry.recent(I18n.locale, 5) + - if headlines.present? + - headlines.each do |e| + %li + - datetime = l(e.time.to_date, :format => "%Y-%m-%d") + %time{:datetime => datetime} #{datetime} + != link_to h(e.title), e.link + - else + %li= t(:no_news) diff --git a/app/views/shared/2011/_news_section_on_index.html.haml b/app/views/shared/2011/_news_section_on_index.html.haml new file mode 100644 index 00000000..6138e65a --- /dev/null +++ b/app/views/shared/2011/_news_section_on_index.html.haml @@ -0,0 +1,9 @@ +%h2 + %img{:alt => "", :height => "35", :src => "/2011/images/indexNewsHeader.png", :width => "250"} +#information + = render :partial => 'pages/2011/important_news' +%p.icon.rss + != render :partial => 'shared/2011/rss' + %p + %a{:href => "http://rubykaigi.tdiary.net/"} + %img{:alt => "Read more...", :height => "30", :src => "/2011/images/commonReadMore.png", :width => "100"} diff --git a/app/views/shared/2011/_phone_footer.html.haml b/app/views/shared/2011/_phone_footer.html.haml new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/app/views/shared/2011/_phone_footer.html.haml @@ -0,0 +1 @@ + diff --git a/app/views/shared/2011/_programs_permalink.html.haml b/app/views/shared/2011/_programs_permalink.html.haml new file mode 100644 index 00000000..556e9669 --- /dev/null +++ b/app/views/shared/2011/_programs_permalink.html.haml @@ -0,0 +1,27 @@ +#content + %h1 + #{t(:programs)} + %article + %h2 + %time{:datetime => "2011-07-16"} + #{t(:date_fri)} + 99:99-99:99 (#{t(:hall_main)}) + #abstract + %h3 + #{t(:abstract)} + %p Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + #speaker + %h3 + #{t(:speaker)} + %div.avatar + %a{:href => "#", :target => "_blank"} + %img{:alt => "", :src => "/2011/images/commonAvatar.png"} + %h4 + Name (en) + %p Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + %p + %a.linkMark{:href => "#", :target => "_blank"} + http://www.example.com + %h3.cboth + #{t(:presentation_material)} + %p - diff --git a/app/views/shared/2011/_registration_individual_sponsors.html.haml b/app/views/shared/2011/_registration_individual_sponsors.html.haml new file mode 100644 index 00000000..02dfbca9 --- /dev/null +++ b/app/views/shared/2011/_registration_individual_sponsors.html.haml @@ -0,0 +1,18 @@ +%article#individual_sponsor + %h2 + %a{:name => "individual_sponsor"} + #{t('product_item.rk11_individual_sponsor')} + %h3 #{t(:individual_sponsor_program_detail)}: + %ul.listMark + %li + Price: + #{number_with_delimiter(@individual_sponsor.unit_price)} JPY + #{t('additional_amount_label')} + != stock_notification(@individual_sponsor) + %li= t(:about_payment) + %li= t(:we_will_not_refund) + %h3 #{t(:individual_sponsor_program_benefits)}: + %ul.listMark + %li= t(:individual_sponsor_program_benefit_1) + %li= t(:individual_sponsor_program_benefit_2) + %li= t(:individual_sponsor_program_benefit_3) + != render :partial => 'add_to_cart', :locals => {:item => @individual_sponsor } diff --git a/app/views/shared/2011/_registration_party.html.haml b/app/views/shared/2011/_registration_party.html.haml new file mode 100644 index 00000000..d4752e6f --- /dev/null +++ b/app/views/shared/2011/_registration_party.html.haml @@ -0,0 +1,21 @@ +%article#party + %h2 + %a{:name => "party"} + #{t(:official_party)} + %p #{t("official_party_description")} + %ul.listMark + %li When: July 17th(Sun) 20:00 - 22:00 (Door Open: 19:30) + %li + Venue: + !=link_to 'Ikebukuro Sunshine city', 'http://maps.google.com/maps?q=35.729583,139.717778&ie=UTF8&ll=35.729583,139.717778&spn=0.008335,0.009785&z=17' + 58F SUNSHINE CRUISE CRUISE + %li Capacity: ~400 people + %li + Price: #{number_with_delimiter(@party.unit_price)} JPY + != stock_notification(@party) + %li + #{t(:we_will_not_refund)} + != render :partial => 'add_to_cart', :locals => {:item => @party } + %h3 #{t('student_discount_program')} + %ul.listMark + %li Student discounts are not available for the Conference Party. diff --git a/app/views/shared/2011/_registration_tickets.html.haml b/app/views/shared/2011/_registration_tickets.html.haml new file mode 100644 index 00000000..ee8d67a0 --- /dev/null +++ b/app/views/shared/2011/_registration_tickets.html.haml @@ -0,0 +1,29 @@ +%article#tickets + %h2 + %a{:name => "tickets"} + #{t(:tickets)} + %h3 3 day pass + %ul.listMark + %li + When: July 16th(Sat) - 18th(Mon), 2011 + %li + Venue: Nerima Culture Center(Tokyo, Japan) + %li + Capacity: ~1,000 people + %li + Price: #{number_with_delimiter(@kaigi.unit_price)} JPY + != stock_notification(@kaigi) + %li + #{t(:we_will_not_refund)} + != render :partial => 'add_to_cart', :locals => {:item => @kaigi } + %h3 + #{t('free_admission_program_for_students')}: + %ul.listMark + %li + #{t('instruction')}: + != link_to 'English', 'http://rubykaigi.tdiary.net/20110521.html#p02' + , + != link_to '日本語', 'http://rubykaigi.tdiary.net/20110521.html#p01' + %li + != link_to_if(true, t('free_admission_program_for_students_entry_form'), 'http://www.atdot.net/~ko1/file/rubykaigi/2011/students/upload') + -# -# (#{t("already_at_capacity")}) diff --git a/app/views/shared/2011/_rss.html.haml b/app/views/shared/2011/_rss.html.haml new file mode 100644 index 00000000..7ccdc716 --- /dev/null +++ b/app/views/shared/2011/_rss.html.haml @@ -0,0 +1,2 @@ +!= render :partial => 'shared/2011/rss_btn' +!= render :partial => 'shared/2011/headline' diff --git a/app/views/shared/2011/_rss_btn.html.haml b/app/views/shared/2011/_rss_btn.html.haml new file mode 100644 index 00000000..60dcfb1b --- /dev/null +++ b/app/views/shared/2011/_rss_btn.html.haml @@ -0,0 +1,2 @@ +%a{ :href => rubykaigi_org_feed_url(current_locale)} + %img{:alt => "RSS", :src => "/2011/images/commonRss.png"} diff --git a/app/views/shared/2011/_sponsors_list.html.haml b/app/views/shared/2011/_sponsors_list.html.haml new file mode 100644 index 00000000..64f00e38 --- /dev/null +++ b/app/views/shared/2011/_sponsors_list.html.haml @@ -0,0 +1,46 @@ +%section#sponsorsList + %section#ruby + %h2 + %img{:alt => "", :height => "50", :src => "/2011/images/sponsorsHeaderRuby.png", :width => "300"} + %ul + - RubyKaigi2011::RubySponsor.all.each do |sponsor| + %li + %a{:href => "/2011/#{current_locale}/sponsors_ruby_#{sponsor._id}"} + %img{:alt => "", :src => "/2011/sponsors/#{sponsor._id}.png", :width => "130"} + %section#platinum + %h2 + %img{:alt => "", :height => "50", :src => "/2011/images/sponsorsHeaderPlatinum.png", :width => "300"} + %ul + - RubyKaigi2011::PlatinumSponsor.all.each do |sponsor| + %li + %a{:href => "/2011/#{current_locale}/sponsors_platinum##{sponsor._id}"} + %img{:alt => "", :src => "/2011/sponsors/#{sponsor._id}.png", :width => "110"} + %p{:class => "right cboth"} + %a{:href => "/2011/#{current_locale}/sponsors_platinum", :class => "linkMark"} + #{t(:platinum_sponsor)} + %section#gold + %h2 + %img{:alt => "", :height => "50", :src => "/2011/images/sponsorsHeaderGold.png", :width => "300"} + %ul + - RubyKaigi2011::GoldSponsor.all.each do |sponsor| + %li + %a{:href => "/2011/#{current_locale}/sponsors_gold##{sponsor._id}"} + %img{:alt => "", :src => "/2011/sponsors/#{sponsor._id}.png"} + %p{:class => "right cboth"} + %a{:href => "/2011/#{current_locale}/sponsors_gold", :class => "linkMark"} + #{t(:gold_sponsor)} + %section#individual + %h2 + %img{:alt => "", :height => "50", :src => "/2011/images/sponsorsHeaderIndividual.png", :width => "300"} + %ul + - if ((sponsors = Contribution.individual_sponsors_of(2011)).present?) + - sponsors.each do |sponsor| + %li + - img = img_tag_for_individual_sponsor(sponsor) + != link_to_if((!sponsor.anonymous? && sponsor.link_url.present?), raw(img), sponsor.link_url) + %a{:href => "#"} + - else + %li (Not Yet) + %p{:class => "right cboth"} + %a{:href => "/2011/#{current_locale}/sponsors_individual", :class => "linkMark"} + #{t(:individual_sponsor)} diff --git a/app/views/shared/2011/_staffs.html.haml b/app/views/shared/2011/_staffs.html.haml new file mode 100644 index 00000000..412174c7 --- /dev/null +++ b/app/views/shared/2011/_staffs.html.haml @@ -0,0 +1,4 @@ +%p 当日ボランティアスタッフを募集中です。 +%p + %a.linkMark{:href =>"http://rubykaigi.tdiary.net/20110425.html", :target => "_blank"} + 詳しくは#{t(:rubykaigi_nikki)}をご覧ください diff --git a/app/views/shared/2011/_twitter.html.haml b/app/views/shared/2011/_twitter.html.haml new file mode 100644 index 00000000..3dfc8936 --- /dev/null +++ b/app/views/shared/2011/_twitter.html.haml @@ -0,0 +1,3 @@ +%p + %a.twitter-share-button{"data-count" => "horizontal", "data-lang" => "en", :href => "http://twitter.com/share"} Tweet + %script{:src => "http://platform.twitter.com/widgets.js", :type => "text/javascript"} diff --git a/app/views/shared/_add_feed.html.haml b/app/views/shared/_add_feed.html.haml new file mode 100644 index 00000000..ab670dbb --- /dev/null +++ b/app/views/shared/_add_feed.html.haml @@ -0,0 +1,6 @@ +%div#addfeed + %img{ :alt => "ADD FEED", :src => "/2010/images/top_addfeed.png" } + %a.noborder{ :href => rubykaigi_org_feed_url(:en) } + %img{ :alt => "English", :src => "/2010/images/top_addfeed_en.png" } + %a.noborder{ :href => rubykaigi_org_feed_url(:ja) } + %img{ :alt => "日本語", :src => "/2010/images/top_addfeed_ja.png" } diff --git a/app/views/shared/_analog_ruby.html.erb b/app/views/shared/_analog_ruby.html.erb deleted file mode 100644 index 9f089e1b..00000000 --- a/app/views/shared/_analog_ruby.html.erb +++ /dev/null @@ -1,3 +0,0 @@ -<% if I18n.locale == "ja" -%> -
<%= image_tag('analog.gif', :alt => 'ruby 1.8', :title => 'ruby 1.8') %>
-<% end -%> diff --git a/app/views/shared/_corporate_sponsors.html.haml b/app/views/shared/_corporate_sponsors.html.haml new file mode 100644 index 00000000..eb737f70 --- /dev/null +++ b/app/views/shared/_corporate_sponsors.html.haml @@ -0,0 +1,20 @@ +%h2 + %a{:name => 'ruby'} + Ruby Sponsors +%div#sponsors_ruby.whitebox.center + %p + != render :partial => 'shared/ruby_sponsors' + +%h2 + %a{:name => 'platinum'} + Platinum Sponsors +%div#sponsors_platinum.whitebox.center + %p + != render :partial => 'shared/platinum_sponsors' + +%h2 + %a{:name => 'gold'} + Gold Sponsors +%div#sponsors_gold.whitebox + %p + != render :partial => 'shared/gold_sponsors' diff --git a/app/views/shared/_flash.html.haml b/app/views/shared/_flash.html.haml new file mode 100644 index 00000000..0b669708 --- /dev/null +++ b/app/views/shared/_flash.html.haml @@ -0,0 +1,12 @@ +#flash{:style => 'display:none'} + %div{:class => level} + %span #{flash_message} + +:javascript + function fout() { + $('#flash').fadeOut('slow'); + } + $(document).ready(function() { + $('#flash').fadeIn('slow'); + setTimeout('fout()', 3000); + }); diff --git a/app/views/shared/_footer.html.erb b/app/views/shared/_footer.html.erb deleted file mode 100644 index 59e2a2a3..00000000 --- a/app/views/shared/_footer.html.erb +++ /dev/null @@ -1,36 +0,0 @@ - diff --git a/app/views/shared/_gold_sponsors.html.haml b/app/views/shared/_gold_sponsors.html.haml new file mode 100644 index 00000000..47751fa6 --- /dev/null +++ b/app/views/shared/_gold_sponsors.html.haml @@ -0,0 +1,49 @@ +- cache "sponsor-gold-#{I18n.locale}" do + %a{ :href => "/2010/#{current_locale}/SponsorsGold#waicrew"} + %img{ :alt => "Waicrew Inc.", :src => "/2010/sponsors/waicrew.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#clearcode"} + %img{ :alt => "ClearCode Inc.", :src => "/2010/sponsors/clearcode.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#recruit"} + %img{ :alt => "Media Technology Labs, Recruit Co., Ltd", :src => "/2010/sponsors/recruit.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#contentsone"} + %img{ :alt => "Contents One Inc.", :src => "/2010/sponsors/contentsone.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#enishitech"} + %img{ :alt => "Enishi Tech Inc.", :src => "/2010/sponsors/enishitech.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#kakakucom"} + %img{ :alt => "Kakaku.com, Inc.", :src => "/2010/sponsors/kakakucom.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#antas"} + %img{ :alt => "ANTAS, Inc.", :src => "/2010/sponsors/antas.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#temona"} + %img{ :alt => "TEMONA Co. Ltd.", :src => "/2010/sponsors/temona.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#pex"} + %img{ :alt => "PeX, inc.", :src => "/2010/sponsors/pex.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#towersquest"} + %img{ :alt => "Towersquest Inc.", :src => "/2010/sponsors/towersquest.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#cuon"} + %img{ :alt => "Cuon Inc.", :src => "/2010/sponsors/cuon.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#rabbix"} + %img{ :alt => "Rabbix Ltd.", :src => "/2010/sponsors/rabbix.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#rlearning"} + %img{ :alt => "R-learning", :src => "/2010/sponsors/rlearning.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#rakuten"} + %img{ :alt => "Rakuten, Inc.", :src => "/2010/sponsors/rakuten.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#fujitsu"} + %img{ :alt => "FUJITSU SOCIAL SCIENCE LABORATORY Ltd.", :src => "/2010/sponsors/fujitsu.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#everyleaf"} + %img{ :alt => "Everyleaf Corporation", :src => "/2010/sponsors/everyleaf.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#eyoffice"} + %img{ :alt => "EY-Office Ltd.", :src => "/2010/sponsors/eyoffice.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#tmix"} + %img{ :alt => "tmix", :src => "/2010/sponsors/tmix.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#hokkaidoinformationuniversity"} + %img{ :alt => "Hokkaido Information University", :src => "/2010/sponsors/hokkaidoinformationuniversity.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#scaleout"} + %img{ :alt => "ScaleOut Inc.", :src => "/2010/sponsors/scaleout.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#econe"} + %img{ :alt => "EC-One, Inc.", :src => "/2010/sponsors/econe.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#topstudio"} + %img{ :alt => "Top Studio Co., Ltd.", :src => "/2010/sponsors/topstudio.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#nakataka"} + %img{ :alt => "Nakataka Co.,Ltd.", :src => "/2010/sponsors/nakataka.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsGold#tatsuzine"} + %img{ :alt => "Tatsu-zine Publishing", :src => "/2010/sponsors/tatsuzine.png" } diff --git a/app/views/shared/_google_analytics.html.erb b/app/views/shared/_google_analytics.html.erb deleted file mode 100644 index 5ca25c16..00000000 --- a/app/views/shared/_google_analytics.html.erb +++ /dev/null @@ -1,10 +0,0 @@ - - diff --git a/app/views/shared/_header_image.html.erb b/app/views/shared/_header_image.html.erb deleted file mode 100644 index d1f1c1d3..00000000 --- a/app/views/shared/_header_image.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -<%- image = (controller.params[:page_name] == 'index') ? 'header-top.png' : 'header.png' -%> -

<%= link_to(image_tag(image, :alt => t(:rubykaigi2009), :title => t(:rubykaigi2009)), "/2009/#{I18n.locale}") %>

diff --git a/app/views/shared/_individual_sponsors.html.haml b/app/views/shared/_individual_sponsors.html.haml new file mode 100644 index 00000000..010b6492 --- /dev/null +++ b/app/views/shared/_individual_sponsors.html.haml @@ -0,0 +1,12 @@ +%h2 + %a{:name => 'individuals'} + = t('individual_sponsor') + +%div#sponsors_individual.whitebox.clearfix + %ul + - if ((sponsors = Contribution.individual_sponsors_of(2010)).present?) + - sponsors.each do |sponsor| + %li + != link_to_if(sponsor.link_url.present?, h(sponsor.link_label), sponsor.link_url) + - else + %li (Not Yet) diff --git a/app/views/shared/_platinum_sponsors.html.haml b/app/views/shared/_platinum_sponsors.html.haml new file mode 100644 index 00000000..e1d6c835 --- /dev/null +++ b/app/views/shared/_platinum_sponsors.html.haml @@ -0,0 +1,7 @@ +- cache "sponsors-platinum-#{I18n.locale}" do + %a{ :href => "/2010/#{current_locale}/SponsorsPlatinum#esm"} + %img{ :alt => "Eiwa System Management,Inc.", :src => "/2010/sponsors/eiwasystemmanagement.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsPlatinum#nifty"} + %img{ :alt => "NIFTY Corporation", :src => "/2010/sponsors/nifty.png" } + %a{ :href => "/2010/#{current_locale}/SponsorsPlatinum#cookpad"} + %img{ :alt => "COOKPAD Inc.", :src => "/2010/sponsors/cookpad.png" } diff --git a/app/views/shared/_ruby_sponsors.html.haml b/app/views/shared/_ruby_sponsors.html.haml new file mode 100644 index 00000000..d7c79eca --- /dev/null +++ b/app/views/shared/_ruby_sponsors.html.haml @@ -0,0 +1,7 @@ +- cache "sponsor-ruby-#{I18n.locale}" do + %a{ :href => "/2010/#{current_locale}/NaCl"} + %img{ :alt => "Network Applied Communication Laboratory Ltd.", :src => "/2010/sponsors/nacl.png" } + %a{ :href => "/2010/#{current_locale}/Ricoh"} + %img{ :alt => "Ricoh Company, Ltd.", :src => "/2010/sponsors/ricoh.png" } + %a{ :href => "/2010/#{current_locale}/Microsoft"} + %img{ :alt => "Microsoft Co., Ltd.", :src => "/2010/sponsors/microsoft.png" } diff --git a/app/views/shared/_side.html.erb b/app/views/shared/_side.html.erb deleted file mode 100644 index 1560edab..00000000 --- a/app/views/shared/_side.html.erb +++ /dev/null @@ -1,75 +0,0 @@ -
- -
-
Ruby <%=t :sponsors %>
-
-
    -
  • <%= link_to(image_tag('sponsors/ctc-g.png', :alt => '伊藤忠テクノソリューションズ株式会社'), "http://www.ctc-g.co.jp/") %>
  • -
  • <%= link_to(image_tag('sponsors/nacl.png', :alt => '株式会社ネットワーク応用通信研究所'), "http://www.netlab.jp/") %>
  • -
  • <%= link_to(image_tag('sponsors/ricoh.png', :alt => '株式会社リコー'), "http://www.ricoh.co.jp/") %>
  • -
-
- -
Platinum <%=t :sponsors %>
-
-
    -
  • <%= link_to(image_tag('sponsors/esm.png', :alt => '株式会社永和システムマネジメント'), "http://ruby.agile.esm.co.jp/") %>
  • -
  • <%= link_to(image_tag('sponsors/nifty.png', :alt => 'ニフティ株式会社'), "http://www.nifty.com/") %>
  • -
  • <%= link_to(image_tag('sponsors/raw-hide.png', :alt => '株式会社RAWHIDE.'), "http://raw-hide.co.jp/") %>
  • -
  • <%= link_to(image_tag('sponsors/recruit.png', :alt => '株式会社リクルート'), "http://www.recruit.jp/") %>
  • -
  • <%= link_to(image_tag('sponsors/tnt.png', :alt => '株式会社トランス・ニュー・テクノロジー'), "http://www.trans-nt.com/") %>
  • -
  • <%= link_to(image_tag('sponsors/contents-one.png', :alt => '株式会社コンテンツワン'), "http://www.contents-one.co.jp/") %>
  • -
-
- -
Gold <%=t :sponsors %>
-
-
    -
  • <%= link_to(image_tag('sponsors/antas.png', :alt => '株式会社アンタス'), "http://antas.jp/") %>
  • -
  • <%= link_to(image_tag('sponsors/clear-code.png', :alt => '株式会社クリアコード'), "http://www.clear-code.com/") %>
  • -
  • <%= link_to(image_tag('sponsors/cuon.png', :alt => '株式会社クオン'), "http://www.cuon.co.jp/") %>
  • -
  • <%= link_to(image_tag('sponsors/everyleaf.png', :alt => '株式会社万葉'), "http://everyleaf.com/") %>
  • -
  • <%= link_to(image_tag('sponsors/irubysystems.png', :alt => '株式会社iRubySystems'), "http://irubysystems.com/") %>
  • -
  • <%= link_to(image_tag('sponsors/rabbix.png', :alt => '有限会社ラビックス'), "http://www.rabbix.jp/") %>
  • -
  • <%= link_to(image_tag('sponsors/rakuten.png', :alt => '楽天株式会社'), "http://www.rakuten.co.jp/") %>
  • -
  • <%= link_to(image_tag('sponsors/sug.png', :alt => 'SKIPユーザグループ'), "http://user.openskip.org/") %>
  • -
  • <%= image_tag('sponsors/towersquest.png', :alt => 'タワーズ・クエスト株式会社') %>
  • -
  • <%= link_to(image_tag('sponsors/waicrew.png', :alt => 'ワイクル株式会社'), "http://www.waicrew.com/") %>
  • -
-
-
-
diff --git a/app/views/talks/2009/_talk.html.erb b/app/views/talks/2009/_talk.html.erb deleted file mode 100644 index 692d4431..00000000 --- a/app/views/talks/2009/_talk.html.erb +++ /dev/null @@ -1,6 +0,0 @@ -
- <% talk_for(2009, code) do |talk, path| -%> -

<%= link_to talk.title, path %>

-

<%=h speaker_for_timetable(talk.speaker) %>

- <% end -%> -
diff --git a/app/views/talks/2009/index.html.erb b/app/views/talks/2009/index.html.erb deleted file mode 100644 index 0f617779..00000000 --- a/app/views/talks/2009/index.html.erb +++ /dev/null @@ -1,355 +0,0 @@ -<%- content_for :css do -%> -<%= stylesheet_link_tag "timetables" %> -<%- end -%> - -
- -

<%= I18n.l Date.new(2009, 7, 17), :format => :long %>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 <%= t("room.rubykaigi2009.hall") %><%= t("room.rubykaigi2009.medium") %><%= t("room.rubykaigi2009.small") %>
12:30 - 13:20<%= t("admission") %>
13:20 - 13:30 -
-

Opening

-
-
--
13:30 - 14:30 - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "17H01"}) %> - --
14:30 - 14:40<%= t("break") %>
14:40 - 16:10 - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "17H02"}) %> - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "17H03"}) %> - - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "17M01"}) %> - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "17M02"}) %> - - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "17S01"}) %> - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "17S02"}) %> - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "17S03"}) %> -
16:10 - 16:40<%= t("break") %>
16:40 - 17:40 - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "17H04"}) %> - - - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "17S04"}) %> - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "17S05"}) %> -
17:40 - 17:50<%= t("break") %>
17:50 - 18:50 -
- <% talk_for(2009, '17H05') do |talk, path| -%> -

<%= link_to 'Lightning Talks', path %>

- <% end -%> -
-
--
19:30 - <%= t("conference_party") %>
- - - -
-

<%= I18n.l Date.new(2009, 7, 18), :format => :long %>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 <%= t("room.rubykaigi2009.hall") %><%= t("room.rubykaigi2009.medium") %><%= t("room.rubykaigi2009.small") %>
09:30 - 10:00<%= t("admission") %>
10:00 - 12:00 - <% 4.times do |i| -%> - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "18H#{'%02d' % (i + 1)}"}) %> - <% end -%> - - <% 3.times do |i| -%> - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "18M#{'%02d' % (i + 1)}"}) %> - <% end -%> - - <% 3.times do |i| -%> - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "18S#{'%02d' % (i + 1)}"}) %> - <% end -%> -
12:00 - 13:20<%= t("lunch_break") %>
13:20 - 13:30 -
-

<%= t("community_appeal") %>

-
-
--
13:30 - 14:30 - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "18H05"}) %> - --
14:30 - 15:30 -
- <% talk_for(2009, '18H06') do |talk, path| -%> -

<%= link_to 'Lightning Talks', path %>

- <% end -%> -
-
--
15:30 - 16:00<%= t("break") %>
16:00 - 18:30 - <% (7..13).to_a.each do |i| -%> - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "18H#{'%02d' % i}"}) %> - <% end -%> - - <% (4..6).to_a.each do |i| -%> - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "18M#{'%02d' % i}"}) %> - <% end -%> - - <% (4..7).to_a.each do |i| -%> - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "18S#{'%02d' % i}"}) %> - <% end -%> -
18:30 - 20:30- -
-

Beer bust

-

(Bring your own food/drink)

-
-
-
- - - -
-

<%= I18n.l Date.new(2009, 7, 19), :format => :long %>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 <%= t("room.rubykaigi2009.hall") %><%= t("room.rubykaigi2009.medium") %><%= t("room.rubykaigi2009.small") %>
09:10 - 09:30<%= t("admission") %>
09:30 - 12:00 - <% (1..3).to_a.each do |i| -%> - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "19H#{'%02d' % i}"}) %> - <% end -%> - - <% (1..4).to_a.each do |i| -%> - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "19M#{'%02d' % i}"}) %> - <% end -%> - -
-

 

-

<%= t("start_on_10am") %>

-
- <% (1..3).to_a.each do |i| -%> - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "19S#{'%02d' % i}"}) %> - <% end -%> -
12:00 - 13:30<%= t("lunch_break") %>
13:30 - 15:30 - <% (4..5).to_a.each do |i| -%> - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "19H#{'%02d' % i}"}) %> - <% end -%> - - <% (5..7).to_a.each do |i| -%> - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "19M#{'%02d' % i}"}) %> - <% end -%> - - <% (4..6).to_a.each do |i| -%> - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "19S#{'%02d' % i}"}) %> - <% end -%> -
15:30 - 16:00<%= t("break") %>
16:00 - 17:00 - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "19H06"}) %> - - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "19M08"}) %> - - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "19S07"}) %> -
17:00 - 17:10<%= t("break") %>
17:10 - 18:10 - <%= render(:partial => 'talks/2009/talk', - :locals => {:code => "19H07"}) %> - --
18:10 - 18:20 -
-

Closing

-
-
--
-
diff --git a/app/views/talks/2009/show.html.erb b/app/views/talks/2009/show.html.erb deleted file mode 100644 index e6b4037e..00000000 --- a/app/views/talks/2009/show.html.erb +++ /dev/null @@ -1,54 +0,0 @@ -<%- content_for :inline_css do -%> - -<%- end -%> - diff --git a/app/views/team/index.html.haml b/app/views/team/index.html.haml new file mode 100644 index 00000000..bcdcced4 --- /dev/null +++ b/app/views/team/index.html.haml @@ -0,0 +1,23 @@ +- @title = t(:team) +#content + %h1 + #{t(:team)} + %article#team + - @team.each do |section| + .section + %h2= RubyKaigi2011::Localizer.value_for_locale(I18n.locale, section['section']['name']) + - section['section']['people'].each do |person| + .avatar + - if person['gravatar'].present? + = gravatar_tag(person['gravatar'], :size => 32) + - else + %img{:alt => "", :src => "/2011/images/commonAvatar.png"} + + %p + %span.name= RubyKaigi2011::Localizer.value_for_locale(I18n.locale, person['name']) + %span.affiliation= RubyKaigi2011::Localizer.value_for_locale(I18n.locale, person['affiliation']) + + %h2 rubykaigi.org + %p + %a{:href => "http://github.com/ruby-no-kai/rubykaigi/contributors"} http://github.com/ruby-no-kai/rubykaigi/contributors + diff --git a/app/views/tickets/edit.html.haml b/app/views/tickets/edit.html.haml new file mode 100644 index 00000000..0691b41f --- /dev/null +++ b/app/views/tickets/edit.html.haml @@ -0,0 +1,25 @@ +#content + - form_for @ticket do |f| + != f.error_messages + %h1 RubyKaigi #{@ticket.ruby_kaigi.year}, #{t(@ticket.ticket_type)} + + %h2 Ticket Code + %p #{@ticket.ticket_code} + + %h2 Ticket Type + %p #{t(@ticket.ticket_type)} + + %h2 Your Name + %p + != f.text_field :name, :size => 40 + + %h2 Your Email + %p + != f.text_field :email + + != f.submit 'Update' + +
+
+
+ %p!= link_to 'Back to Ticket', ticket_path(@ticket) \ No newline at end of file diff --git a/app/views/tickets/index.html.haml b/app/views/tickets/index.html.haml new file mode 100644 index 00000000..50ec9380 --- /dev/null +++ b/app/views/tickets/index.html.haml @@ -0,0 +1,31 @@ +- @title = 'My Ticket(s)' +#content + %h1 #{@title} + #main + %h2 Your Ticket(s) to RubyKaigi + %ul.listMark + - @tickets.each do |ticket| + - extra_ticket_type = ticket.extra_ticket_type.present? ? " (#{ticket.extra_ticket_type})" : "" + - ticket_label = "RubyKaigi #{ticket.ruby_kaigi.year}, #{I18n.t(ticket.ticket_type)}#{extra_ticket_type}, #{ticket.name}" + %li{:style => 'font-size: 16px;'} + != link_to(ticket_label, ticket_path(ticket)) + + %h2 Ticket Instruction for RubyKaigi 2011 + %p + (Coming Soon...) + + %h2 Ticket Instruction for RubyKaigi 2010 + %ul.listMark + - if params[:locale] == 'ja' + %li + %a{:href => 'http://rubykaigi.tdiary.net/20100811.html#p01'} 一般参加チケット・個人スポンサーチケットをお持ちの方の日本Ruby会議2010本編受付方法について + %li + %a{:href => 'http://rubykaigi.tdiary.net/20100814.html#p01'} 懇親会チケットを購入された方の日本Ruby会議2010公式懇親会受付方法について + - else + %li + %a{:href => 'http://rubykaigi.tdiary.net/20100811.html#p02'} Information about RubyKaigi2010 admission + %li + %a{:href => 'http://rubykaigi.tdiary.net/20100814.html#p02'} Registration information for official reception of RubyKaigi2010 + +


+ %p!= link_to 'Dashboard', dashboard_path diff --git a/app/views/tickets/show.html.haml b/app/views/tickets/show.html.haml new file mode 100644 index 00000000..f1d1b0df --- /dev/null +++ b/app/views/tickets/show.html.haml @@ -0,0 +1,42 @@ +-content_for :meta_top do + !=noindex_nofollow +#content + %h1 + RubyKaigi #{@ticket.ruby_kaigi.year}, #{t(@ticket.ticket_type)} + - if @ticket.extra_ticket_type.present? + (#{@ticket.extra_ticket_type}) + + %h2 Ticket Code + %p.ticket #{@ticket.ticket_code} + + %h2 Ticket Type + %p.ticket + #{t(@ticket.ticket_type)} + - if @ticket.extra_ticket_type.present? + (#{@ticket.extra_ticket_type}) + + %h2 Your Name + %p.ticket #{@ticket.name} + + .screen_only + %p{:style => 'text-align:right'}!= link_to 'Edit', edit_ticket_path(@ticket) + + %h2 Your Email + %p.ticket #{@ticket.email} + + .screen_only + %p{:style => 'text-align:right'}!= link_to 'Edit', edit_ticket_path(@ticket) + + .screen_only + %h2 Permalink + %p{:style=>'font-size:12px'}!= link_to ticket_url(@ticket), ticket_path(@ticket) + %p (Anybody can see this page via permalink) + %p{:style => 'text-align:right'}!= link_to('Regenerate Permalink', regenerate_permalink_ticket_path(@ticket), :method => :put) + %p.stamp + %img{ :alt => "Thank you for your attendance!", :width => "400", :height => "75", :src => "/2011/images/tickets_stamp.png" } + +
+
+
+ .screen_only + %p!= link_to 'Back to My Tickets', my_tickets_path diff --git a/certs/.gitignore b/certs/.gitignore new file mode 100644 index 00000000..cfaad761 --- /dev/null +++ b/certs/.gitignore @@ -0,0 +1 @@ +*.pem diff --git a/config.ru b/config.ru new file mode 100644 index 00000000..bddb1c49 --- /dev/null +++ b/config.ru @@ -0,0 +1,5 @@ +# This file is used by Rack-based servers to start the application. + +require ::File.expand_path('../config/environment', __FILE__) +run Rubykaigi::Application + diff --git a/config/application.rb b/config/application.rb new file mode 100644 index 00000000..cdc5481e --- /dev/null +++ b/config/application.rb @@ -0,0 +1,51 @@ +require File.expand_path('../boot', __FILE__) + +require 'action_controller/railtie' +require 'action_mailer/railtie' +require 'active_record/railtie' + +# If you have a Gemfile, require the gems listed there, including any gems +# you've limited to :test, :development, or :production. +Bundler.require(:default, Rails.env) if defined?(Bundler) + +module Rubykaigi + class Application < ::Rails::Application + config.i18n.default_locale = 'en' + # Settings in config/environments/* take precedence over those specified here. + # Application configuration should go into files in config/initializers + # -- all .rb files in that directory are automatically loaded. + + # Custom directories with classes and modules you want to be autoloadable. + # config.autoload_paths += %W(#{config.root}/extras) + config.autoload_paths << "#{Rails.root}/lib" + + # Only load the plugins named here, in the order given. By default, all plugins + # :all can be used as a placeholder for all plugins not explicitly named + # config.plugins = [ :exception_notification, :ssl_requirement, :all ] + + # Activate observers that should always be running. + # config.active_record.observers = :cacher, :garbage_collector, :forum_observer + + # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. + # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. + # config.time_zone = 'Central Time (US & Canada)' + config.time_zone = 'Tokyo' + + # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. + # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] + # config.i18n.default_locale = :de + + # JavaScript files you want as :defaults (application.js is always included). + config.action_view.javascript_expansions[:defaults] = %w(jquery.min rails) + + # TODO gemify + require 'rack/git_commit_header' + config.middleware.use Rack::GitCommitHeader + + # Configure the default encoding used in templates for Ruby 1.9. + config.encoding = "utf-8" + + # Configure sensitive parameters which will be filtered from the log file. + # config.filter_parameters += [:password] + end +end diff --git a/config/boot.rb b/config/boot.rb index 0ad0f787..4489e586 100644 --- a/config/boot.rb +++ b/config/boot.rb @@ -1,110 +1,6 @@ -# Don't change this file! -# Configure your app in config/environment.rb and config/environments/*.rb +require 'rubygems' -RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT) +# Set up gems listed in the Gemfile. +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) -module Rails - class << self - def boot! - unless booted? - preinitialize - pick_boot.run - end - end - - def booted? - defined? Rails::Initializer - end - - def pick_boot - (vendor_rails? ? VendorBoot : GemBoot).new - end - - def vendor_rails? - File.exist?("#{RAILS_ROOT}/vendor/rails") - end - - def preinitialize - load(preinitializer_path) if File.exist?(preinitializer_path) - end - - def preinitializer_path - "#{RAILS_ROOT}/config/preinitializer.rb" - end - end - - class Boot - def run - load_initializer - Rails::Initializer.run(:set_load_path) - end - end - - class VendorBoot < Boot - def load_initializer - require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer" - Rails::Initializer.run(:install_gem_spec_stubs) - Rails::GemDependency.add_frozen_gem_path - end - end - - class GemBoot < Boot - def load_initializer - self.class.load_rubygems - load_rails_gem - require 'initializer' - end - - def load_rails_gem - if version = self.class.gem_version - gem 'rails', version - else - gem 'rails' - end - rescue Gem::LoadError => load_error - $stderr.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.) - exit 1 - end - - class << self - def rubygems_version - Gem::RubyGemsVersion rescue nil - end - - def gem_version - if defined? RAILS_GEM_VERSION - RAILS_GEM_VERSION - elsif ENV.include?('RAILS_GEM_VERSION') - ENV['RAILS_GEM_VERSION'] - else - parse_gem_version(read_environment_rb) - end - end - - def load_rubygems - require 'rubygems' - min_version = '1.3.1' - unless rubygems_version >= min_version - $stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.) - exit 1 - end - - rescue LoadError - $stderr.puts %Q(Rails requires RubyGems >= #{min_version}. Please install RubyGems and try again: http://rubygems.rubyforge.org) - exit 1 - end - - def parse_gem_version(text) - $1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/ - end - - private - def read_environment_rb - File.read("#{RAILS_ROOT}/config/environment.rb") - end - end - end -end - -# All that for this: -Rails.boot! +require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE']) diff --git a/config/config.yml.sample b/config/config.yml.sample index 51234e0d..61e89639 100644 --- a/config/config.yml.sample +++ b/config/config.yml.sample @@ -1,41 +1,31 @@ development: &local - basic_auth: - admin: - username: basic_user - password: basic_password - sponsor: - username: sponsor_username - password: sponsor_password paypal: base_url: https://www.sandbox.paypal.com request_uri: /cgi-bin/webscr - hosted_button_id: - rubykaigi2009: - conference: number - party: number - soldout: - rubykaigi2009: - conference: false - party: false - open_at: 2009-06-01 16:00:00 + post_url: https://www.sandbox.paypal.com/cgi-bin/webscr + business_email: paypal_1271051243_biz@rubykaigi.org + cert_id: PAYPAL_CERT_ID + cert_filename: paypal_cert_sandbox.pem + ipn_secret: takahashimasayoshi + pdt_token: PDT_TOKEN gmail: user_name: gmail_user_name password: gmail_password action_mailer: - from: "RubyKaigi2009 <2009@rubykaigi.org>" - bcc: "RubyKaigi2009 <2009@rubykaigi.org>" - lt_submission: - close_at: 2009-06-25 23:59:59 + from: "RubyKaigi2010 <2010@rubykaigi.org>" + bcc: "RubyKaigi2010 <2010@rubykaigi.org>" hoptoad: api_key: HOPTOAD_API_KEY + twitter: + consumer_key: twitter_consumer_key + consumer_secret: twitter_consumer_secret + access_token: twitter_access_token + access_secret: twitter_access_secret + production: - basic_auth: - admin: - username: itsumono - password: itsumono - sponsor: - username: sponsor_username - password: sponsor_password test: <<: *local + +cucumber: + <<: *local diff --git a/config/cucumber.yml b/config/cucumber.yml new file mode 100644 index 00000000..b7acd380 --- /dev/null +++ b/config/cucumber.yml @@ -0,0 +1,7 @@ +<% +rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : "" +rerun_opts = rerun.to_s.strip.empty? ? "--format progress features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}" +std_opts = "#{rerun_opts} --format rerun --out rerun.txt --strict --tags ~@wip" +%> +default: <%= std_opts %> +wip: --tags @wip:3 --wip features diff --git a/config/database.yml.sample b/config/database.yml.sample index 63a44e6e..7575d2bb 100644 --- a/config/database.yml.sample +++ b/config/database.yml.sample @@ -7,8 +7,12 @@ development: pool: 5 timeout: 5000 socket: /opt/local/var/run/mysql5/mysqld.sock + redis: + host: localhost + port: 6379 + db: 0 -test: +test: &TEST adapter: mysql encoding: utf8 database: rubykaigi_test @@ -17,6 +21,10 @@ test: pool: 5 timeout: 5000 socket: /opt/local/var/run/mysql5/mysqld.sock + redis: + host: localhost + port: 6379 + db: 1 production: adapter: mysql @@ -27,3 +35,10 @@ production: pool: 5 timeout: 5000 socket: /var/run/mysqld/mysqld.sock + redis: + host: localhost + port: 6379 + db: 2 + +cucumber: + <<: *TEST diff --git a/config/deploy.rb b/config/deploy.rb index 84e0af94..69527e08 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -1,16 +1,16 @@ # -*- coding: utf-8 -*- +set :stages, %w(staging production) +set :default_stage, "staging" set :application, "rubykaigi" -set :repository, "git://github.com/kakutani/rubykaigi.git" -set :branch, "master" +set :repository, "git://github.com/ruby-no-kai/rubykaigi.git" +set :branch, "production" +set :appdir, "railsapp" +set :port, 2022 +require "capistrano/ext/multistage" -# If you aren't deploying to /u/apps/#{application} on the target -# servers (which is the default), you can specify the actual location -# via the :deploy_to variable: -set :deploy_to, "/home/#{application}/railsapp" +set(:deploy_to){ "/home/#{application}/#{appdir}" } set :ssh_options, { :forward_agent => true } -# If you aren't using Subversion to manage your source code, specify -# your SCM below: set :scm, :git set :git_shallow_clone, 1 @@ -18,12 +18,11 @@ set :runner, "rubykaigi" ssh_options[:username] = application -set :production_server, "rubykaigi.org" -role :app, production_server -role :web, production_server -role :db, production_server, :primary => true +set :rake, "bundle exec rake" -set :rake, "/home/#{application}/gem.repos/bin/rake" +#set :wenever_command, 'bundle exec whenever' +#set(:whenever_environment) { fetch(:stage, 'staging') } +#require 'whenever/capistrano' def setup_shared(dir, path) src = "#{shared_path}/#{dir}/#{path}" @@ -36,17 +35,6 @@ def setup_shared_config(path) end namespace :deploy do - task :after_update_code do - setup_shared_config("database.yml") - setup_shared_config("config.yml") - setup_shared("db", "production.sqlite3") - end - - task :after_symlink do - run "mkdir -p #{current_path}/public/tmp" - setup_shared("public/tmp", "pamphlet-20090708.zip") - end - task :start, :roles => :app do end @@ -75,9 +63,80 @@ def setup_shared_config(path) end end +after("deploy:update_code") do + setup_shared_config("database.yml") + setup_shared_config("config.yml") + stage = fetch(:stage, 'staging') + run "ln -fs #{latest_release}/config/rubykaigi_template.pill #{latest_release}/config/#{stage}.pill" +end + +after("deploy:symlink") do + run "mkdir -p #{current_path}/public/tmp" + setup_shared("public/tmp", "pamphlet-20090708.zip") + setup_shared("public/2011", "rk11prospectus.pdf") + setup_shared("certs","app_cert.pem") + setup_shared("certs","app_key.pem") + setup_shared("certs","paypal_cert_sandbox.pem") + setup_shared("certs","paypal_cert_live.pem") + setup_shared("vendor", "bundle") + run "rm -rf #{shared_path}/tmp/rails-cache/*" +end + +namespace :bundler do + task :bundle do + run("cd #{latest_release} && bundle install #{shared_path}/vendor/bundle --deployment --without development test cucumber") + end +end + +namespace :bluepill do + desc "take the bluepill" + task :take do + stage = fetch(:stage, 'staging') + run "/usr/local/bin/bluepill --no-privileged --base-dir #{current_path}/tmp load #{current_path}/config/#{stage}.pill" + end +end + +namespace :delayed_job do + desc "restart delayed_job" + task :restart do + run "/usr/local/bin/bluepill --no-privileged --base-dir #{current_path}/tmp #{fetch(:stage, 'staging')} restart delayed_job" + end +end + +before 'deploy:restart', 'bluepill:take' +after 'deploy', 'delayed_job:restart' Dir[File.join(File.dirname(__FILE__), '..', 'vendor', 'gems', 'hoptoad_notifier-*')].each do |vendored_notifier| $: << File.join(vendored_notifier, 'lib') end require 'hoptoad_notifier/capistrano' +require 'capistrano-notification' + +notification.irc do |irc| + irc.host 'chat.freenode.net' + irc.channel '#rubykaigi.org' + irc.message { "#{local_user} deployed #{application} to #{fetch(:stage, 'staging')}" } +end + +after 'deploy:finalize_update', 'bundler:bundle' +after 'deploy:migrations', 'god:reboot' + +namespace 'db' do + desc "run RAILS_ENV=#{fetch(:stage, 'staging')} bundle exec rake db:seed_2010 on rubykaigi.org. sweet :)" + task 'seed_2010', :roles => :app do + stage = fetch(:stage, 'staging') + run("cd #{current_path} && RAILS_ENV=#{stage} bundle exec rake db:seed_2010") + end +end +before 'db:seed_2010', 'deploy' +before 'db:seed_2010', 'deploy:web:disable' +after 'db:seed_2010', 'deploy:web:enable' + +namespace 'ticket' do + desc "ticket summary report" + task "summary", :roles => :app do + ticket_summary = capture("cd #{current_path} && RAILS_ENV=#{fetch(:stage, 'staging')} bundle exec rails runner script/ticket_summary") + puts ticket_summary + end +end diff --git a/config/deploy/production.rb b/config/deploy/production.rb new file mode 100644 index 00000000..b8f7214c --- /dev/null +++ b/config/deploy/production.rb @@ -0,0 +1,8 @@ +set :branch, "master" +set :appdir, 'railsapp' +server 'rubykaigi.org', :app, :web, :db, :primary => true + +after("deploy:symlink") do + run "cd #{current_path} && bundle exec whenever --update-crontab #{application}" +end + diff --git a/config/deploy/staging.rb b/config/deploy/staging.rb new file mode 100644 index 00000000..ae1b55c8 --- /dev/null +++ b/config/deploy/staging.rb @@ -0,0 +1,3 @@ +set :branch, "master" +set :appdir, 'railsapp.staging' +server 'staging.rubykaigi.org', :app, :web, :db, :primary => true diff --git a/config/environment.rb b/config/environment.rb index 7f35437e..ca3821a8 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -1,82 +1,6 @@ -# Be sure to restart your server when you modify this file +# Load the rails application +require File.expand_path('../application', __FILE__) -# Uncomment below to force Rails into production mode when -# you don't control web/app server and can't set it the proper way -# ENV['RAILS_ENV'] ||= 'production' +# Initialize the rails application +Rubykaigi::Application.initialize! -# Specifies gem version of Rails to use when vendor/rails is not present -RAILS_GEM_VERSION = '2.3.2' unless defined? RAILS_GEM_VERSION - -# Bootstrap the Rails environment, frameworks, and default configuration -require File.join(File.dirname(__FILE__), 'boot') - -Rails::Initializer.run do |config| - config.i18n.default_locale = 'en' - # Settings in config/environments/* take precedence over those specified here. - # Application configuration should go into files in config/initializers - # -- all .rb files in that directory are automatically loaded. - # See Rails::Configuration for more options. - - # Skip frameworks you're not going to use. To use Rails without a database - # you must remove the Active Record framework. - config.frameworks -= [ :active_resource ] - - # Specify gems that this application depends on. - # They can then be installed with "rake gems:install" on new installations. - # You have to specify the :lib option for libraries, where the Gem name (sqlite3-ruby) differs from the file itself (sqlite3) - # config.gem "bj" - # config.gem "hpricot", :version => '0.6', :source => "http://code.whytheluckystiff.net" - # config.gem "aws-s3", :lib => "aws/s3" - #config.gem "mysql" - config.gem "ruby-openid", :lib => "openid", :version => ">= 2.1.4" - config.gem 'configatron' - config.gem "ambethia-smtp-tls", :lib => "smtp-tls", :source => "http://gems.github.com/" - config.gem 'fastercsv' - config.gem 'hoptoad_notifier' - - # Only load the plugins named here, in the order given. By default, all plugins - # in vendor/plugins are loaded in alphabetical order. - # :all can be used as a placeholder for all plugins not explicitly named - # config.plugins = [ :exception_notification, :ssl_requirement, :all ] - #config.plugins = [:ruby19_monkey, :footnotes, :http_accept_language ] - #config.plugins = [:ruby19_monkey, :http_accept_language, :hoptoad_notifier] - - # Add additional load paths for your own custom dirs - # config.load_paths += %W( #{RAILS_ROOT}/extras ) - - # Force all environments to use the same logger level - # (by default production uses :info, the others :debug) - # config.log_level = :debug - - # Make Time.zone default to the specified zone, and make Active Record store time values - # in the database in UTC, and return them converted to the specified local zone. - # Run "rake -D time" for a list of tasks for finding time zone names. Comment line to use default local time. - config.time_zone = 'Tokyo' - - # The internationalization framework can be changed to have another default locale (standard is :en) or more load paths. - # All files from config/locales/*.rb,yml are added automatically. - # config.i18n.load_path << Dir[File.join(RAILS_ROOT, 'my', 'locales', '*.{rb,yml}')] - - # Your secret key for verifying cookie session data integrity. - # If you change this key, all old sessions will become invalid! - # Make sure the secret is at least 30 characters and all random, - # no regular words or you'll be exposed to dictionary attacks. - config.action_controller.session = { - :session_key => '_rubykaigi_session', - :secret => 'b5210ec02dad554b71deb9849c7ba01f9d5c49c11b490488f474f8031057066faa725b6338c759cb8567734e4be425bc646da34049f220251a43f8c7aa6d114d' - } - - # Use the database for sessions instead of the cookie-based default, - # which shouldn't be used to store highly confidential information - # (create the session table with "rake db:sessions:create") - # config.action_controller.session_store = :active_record_store - - # Use SQL instead of Active Record's schema dumper when creating the test database. - # This is necessary if your schema can't be completely dumped by the schema dumper, - # like if you have constraints or database-specific column types - # config.active_record.schema_format = :sql - - # Activate observers that should always be running - # Please note that observers generated using script/generate observer need to have an _observer suffix - # config.active_record.observers = :cacher, :garbage_collector, :forum_observer -end diff --git a/config/environments/cucumber.rb b/config/environments/cucumber.rb index 7fc9dd27..ed71c999 100644 --- a/config/environments/cucumber.rb +++ b/config/environments/cucumber.rb @@ -1,26 +1,25 @@ -# IMPORTANT: This file was generated by Cucumber 0.4.2 # Edit at your own peril - it's recommended to regenerate this file # in the future when you upgrade to a newer version of Cucumber. +Rubykaigi::Application.configure do + # IMPORTANT: Setting config.cache_classes to false is known to + # break Cucumber's use_transactional_fixtures method. + # For more information see https://rspec.lighthouseapp.com/projects/16211/tickets/165 + config.cache_classes = true -config.cache_classes = true # This must be true for Cucumber to operate correctly! + # Log error messages when you accidentally call methods on nil. + config.whiny_nils = true -# Log error messages when you accidentally call methods on nil. -config.whiny_nils = true + # Show full error reports and disable caching + config.consider_all_requests_local = true + config.action_controller.perform_caching = false -# Show full error reports and disable caching -config.action_controller.consider_all_requests_local = true -config.action_controller.perform_caching = false + # Disable request forgery protection in test environment + config.action_controller.allow_forgery_protection = false -# Disable request forgery protection in test environment -config.action_controller.allow_forgery_protection = false - -# Tell Action Mailer not to deliver emails to the real world. -# The :test delivery method accumulates sent emails in the -# ActionMailer::Base.deliveries array. -config.action_mailer.delivery_method = :test - -config.gem 'cucumber', :lib => false, :version => '>=0.4.2' unless File.directory?(File.join(Rails.root, 'vendor/plugins/cucumber')) -config.gem 'webrat', :lib => false, :version => '>=0.5.0' unless File.directory?(File.join(Rails.root, 'vendor/plugins/webrat')) -config.gem 'rspec', :lib => false, :version => '>=1.2.8' unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec')) -config.gem 'rspec-rails', :lib => false, :version => '>=1.2.7.1' unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec-rails')) + # Tell Action Mailer not to deliver emails to the real world. + # The :test delivery method accumulates sent emails in the + # ActionMailer::Base.deliveries array. + config.action_mailer.delivery_method = :test + config.active_support.deprecation = :stderr +end diff --git a/config/environments/development.rb b/config/environments/development.rb index 85c9a608..b0a2b74d 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -1,17 +1,22 @@ # Settings specified here will take precedence over those in config/environment.rb +Rubykaigi::Application.configure do + # In the development environment your application's code is reloaded on + # every request. This slows down response time but is perfect for development + # since you don't have to restart the webserver when you make code changes. + config.cache_classes = false -# In the development environment your application's code is reloaded on -# every request. This slows down response time but is perfect for development -# since you don't have to restart the webserver when you make code changes. -config.cache_classes = false + # Log error messages when you accidentally call methods on nil. + config.whiny_nils = true -# Log error messages when you accidentally call methods on nil. -config.whiny_nils = true + # Show full error reports and disable caching + config.consider_all_requests_local = true + config.action_view.debug_rjs = true + config.action_controller.perform_caching = false -# Show full error reports and disable caching -config.action_controller.consider_all_requests_local = true -config.action_view.debug_rjs = true -config.action_controller.perform_caching = false + # Don't care if the mailer can't send + config.action_mailer.raise_delivery_errors = false -# Don't care if the mailer can't send -config.action_mailer.raise_delivery_errors = false \ No newline at end of file + require 'pp' + + config.active_support.deprecation = :log +end diff --git a/config/environments/production.rb b/config/environments/production.rb index 67d90194..b0931475 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -1,36 +1,42 @@ # Settings specified here will take precedence over those in config/environment.rb - -# The production environment is meant for finished, "live" apps. -# Code is not reloaded between requests -config.cache_classes = true - -# Enable threaded mode -# config.threadsafe! - -# Use a different logger for distributed setups -# config.logger = SyslogLogger.new - -# Full error reports are disabled and caching is turned on -config.action_controller.consider_all_requests_local = false -config.action_controller.perform_caching = true - -# Use a different cache store in production -# config.cache_store = :mem_cache_store - -# Enable serving of images, stylesheets, and javascripts from an asset server -# config.action_controller.asset_host = "http://assets.example.com" - -# Disable delivery errors, bad email addresses will be ignored -# config.action_mailer.raise_delivery_errors = false - -config.after_initialize do - ActionMailer::Base.delivery_method = :smtp - ActionMailer::Base.smtp_settings = { - :address => "smtp.gmail.com", - :port => 587, - :domain => "rubykaigi.org", - :authentication => :login, - :user_name => configatron.gmail.user_name, - :password => configatron.gmail.password - } +Rubykaigi::Application.configure do + # The production environment is meant for finished, "live" apps. + # Code is not reloaded between requests + config.cache_classes = true + + # Enable threaded mode + # config.threadsafe! + + # Use a different logger for distributed setups + # config.logger = SyslogLogger.new + + # Full error reports are disabled and caching is turned on + config.consider_all_requests_local = false + config.action_controller.perform_caching = true + + # Use a different cache store in production + # config.cache_store = :mem_cache_store + + # Enable serving of images, stylesheets, and javascripts from an asset server + # config.action_controller.asset_host = "http://assets.example.com" + + # Disable delivery errors, bad email addresses will be ignored + # config.action_mailer.raise_delivery_errors = false + + config.after_initialize do + ActionMailer::Base.delivery_method = :smtp + ActionMailer::Base.smtp_settings = { + :address => "smtp.gmail.com", + :port => 587, + :domain => "rubykaigi.org", + :authentication => :login, + :user_name => configatron.gmail.user_name, + :password => configatron.gmail.password + } + end + + ActionController::Base.perform_caching = true + ActionController::Base.cache_store = :file_store, File.join(Rails.root, 'tmp', 'rails-cache') + + config.active_support.deprecation = :notify end diff --git a/config/environments/test.rb b/config/environments/test.rb index 00483d9b..4e5e3a4a 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -1,32 +1,28 @@ # Settings specified here will take precedence over those in config/environment.rb +Rubykaigi::Application.configure do + # The test environment is used exclusively to run your application's + # test suite. You never need to work with it otherwise. Remember that + # your test database is "scratch space" for the test suite and is wiped + # and recreated between test runs. Don't rely on the data there! + config.cache_classes = false -# The test environment is used exclusively to run your application's -# test suite. You never need to work with it otherwise. Remember that -# your test database is "scratch space" for the test suite and is wiped -# and recreated between test runs. Don't rely on the data there! -config.cache_classes = false + # Log error messages when you accidentally call methods on nil. + config.whiny_nils = true -# Log error messages when you accidentally call methods on nil. -config.whiny_nils = true + # Show full error reports and disable caching + config.consider_all_requests_local = true + config.action_controller.perform_caching = false -# Show full error reports and disable caching -config.action_controller.consider_all_requests_local = true -config.action_controller.perform_caching = false + # Disable request forgery protection in test environment + config.action_controller.allow_forgery_protection = false -# Disable request forgery protection in test environment -config.action_controller.allow_forgery_protection = false + # Tell Action Mailer not to deliver emails to the real world. + # The :test delivery method accumulates sent emails in the + # ActionMailer::Base.deliveries array. + config.action_mailer.delivery_method = :test -# Tell Action Mailer not to deliver emails to the real world. -# The :test delivery method accumulates sent emails in the -# ActionMailer::Base.deliveries array. -config.action_mailer.delivery_method = :test + config.logger = Logger.new("#{Rails.root}/log/#{Rails.env}.log", 50, 1048576) + require 'pp' -config.gem "rspec", :lib => false, :version => ">= 1.2.6" -config.gem "rspec-rails", :lib => false, :version => ">= 1.2.6" -config.gem "cucumber", :lib => false, :version => ">= 0.3.7" -config.gem "webrat", :lib => false -config.gem "nokogiri", :lib => false -config.gem "thoughtbot-factory_girl", :lib => 'factory_girl', :source => 'http://gems.github.com' -config.gem "rr", :lib => false -config.gem 'bmabey-email_spec', :lib => 'email_spec' -config.gem 'timcharper-spork', :lib => false + config.active_support.deprecation = :stderr +end diff --git a/config/initializers/admin_assistant_compatible_with_rails3.rb b/config/initializers/admin_assistant_compatible_with_rails3.rb new file mode 100644 index 00000000..bde867b5 --- /dev/null +++ b/config/initializers/admin_assistant_compatible_with_rails3.rb @@ -0,0 +1,17 @@ +class AdminAssistant + class Index + class View + def delete_link(record) + @action_view.link_to( + 'Delete', + :remote => true, + :url => {:action => 'destroy', :id => record.id}, + :confirm => 'Are you sure?', + :success => + "Effect.Fade('#{@admin_assistant.model_class.name.underscore}_#{record.id}', {duration: 0.25})", + :method => :delete + ) + end + end + end +end diff --git a/config/initializers/delayed_jobs.rb b/config/initializers/delayed_jobs.rb new file mode 100644 index 00000000..ddf892ce --- /dev/null +++ b/config/initializers/delayed_jobs.rb @@ -0,0 +1 @@ +Delayed::Worker.destroy_failed_jobs = false diff --git a/config/initializers/google_analytics.rb b/config/initializers/google_analytics.rb new file mode 100644 index 00000000..ec4545d2 --- /dev/null +++ b/config/initializers/google_analytics.rb @@ -0,0 +1 @@ +Rails.configuration.middleware.use Rack::GoogleAnalytics, :tracker => 'UA-6972157-1' diff --git a/config/initializers/haml.rb b/config/initializers/haml.rb new file mode 100644 index 00000000..f8863a20 --- /dev/null +++ b/config/initializers/haml.rb @@ -0,0 +1,12 @@ +Haml::Template.options.update( + :format => :xhtml, + :escape_html => true +) + +Sass::Plugin.options.update( + :template_location => { + Rails.root.join('public/stylesheets/sass') => Rails.root.join('public/stylesheets'), + Rails.root.join('public/2010/stylesheets/sass') => Rails.root.join('public/2010/stylesheets'), + Rails.root.join('public/2011/stylesheets/sass') => Rails.root.join('public/2011/stylesheets') + } +) diff --git a/config/initializers/hwia.rb b/config/initializers/hwia.rb new file mode 100644 index 00000000..3d4f82de --- /dev/null +++ b/config/initializers/hwia.rb @@ -0,0 +1 @@ +HWIA = HashWithIndifferentAccess diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb index 72aca7e4..56f34185 100644 --- a/config/initializers/mime_types.rb +++ b/config/initializers/mime_types.rb @@ -3,3 +3,5 @@ # Add new mime types for use in respond_to blocks: # Mime::Type.register "text/richtext", :rtf # Mime::Type.register_alias "text/html", :iphone +Mime::Type.register "text/calendar", :ics + diff --git a/config/initializers/redis.rb b/config/initializers/redis.rb new file mode 100644 index 00000000..e506f4a7 --- /dev/null +++ b/config/initializers/redis.rb @@ -0,0 +1,5 @@ +config = Rails.configuration.database_configuration[Rails.env]['redis'] + +raise 'Redis setting is not found. Please add the setting referring to config/database.yml.sample.' if config.nil? + +Redis::Objects.redis = Redis.new(config.with_indifferent_access.merge(:logger => Rails.logger)) diff --git a/config/initializers/secret_token.rb b/config/initializers/secret_token.rb new file mode 100644 index 00000000..94c866a7 --- /dev/null +++ b/config/initializers/secret_token.rb @@ -0,0 +1,7 @@ +# Be sure to restart your server when you modify this file. + +# Your secret key for verifying the integrity of signed cookies. +# If you change this key, all old signed cookies will become invalid! +# Make sure the secret is at least 30 characters and all random, +# no regular words or you'll be exposed to dictionary attacks. +Rubykaigi::Application.config.secret_token = 'b5210ec02dad554b71deb9849c7ba01f9d5c49c11b490488f474f8031057066faa725b6338c759cb8567734e4be425bc646da34049f220251a43f8c7aa6d114d' diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb new file mode 100644 index 00000000..2ec5e291 --- /dev/null +++ b/config/initializers/session_store.rb @@ -0,0 +1,8 @@ +# Be sure to restart your server when you modify this file. + +Rubykaigi::Application.config.session_store :cookie_store, :key => '_rubykaigi_session' + +# Use the database for sessions instead of the cookie-based default, +# which shouldn't be used to store highly confidential information +# (create the session table with "rails generate session_migration") +# RailsDemo::Application.config.session_store :active_record_store diff --git a/config/initializers/twitter.rb b/config/initializers/twitter.rb new file mode 100644 index 00000000..3b729315 --- /dev/null +++ b/config/initializers/twitter.rb @@ -0,0 +1,8 @@ +config = configatron.twitter + +raise 'Twitter API settings is not found. Please add the setting referring to config/config.yml.sample.' if config.nil? + +oauth = Twitter::OAuth.new(config.consumer_key, config.consumer_secret) +oauth.authorize_from_access config.access_token, config.access_secret + +$twitter = Twitter::Base.new(oauth) diff --git a/config/initializers/warden.rb b/config/initializers/warden.rb new file mode 100644 index 00000000..bc6ed4b6 --- /dev/null +++ b/config/initializers/warden.rb @@ -0,0 +1,37 @@ +require 'openid/store/filesystem' + +Rails.configuration.middleware.use Rack::OpenID, OpenID::Store::Filesystem.new(Rails.root + 'tmp/openid') +OpenID::Util.logger = Rails.logger + +Rails.configuration.middleware.use RailsWarden::Manager do |manager| + manager.oauth :twitter do |twitter| + twitter.options :site => 'http://twitter.com' + twitter.consumer_key = configatron.twitter.consumer_key + twitter.consumer_secret = configatron.twitter.consumer_secret + end + + manager.default_strategies :twitter_oauth, :openid + manager.failure_app = lambda{|env| SessionsController.call(env) } + + manager.serialize_from_session do |keys| + klass, id = keys + klass.constantize.find_by_id(id) + end +end + +Warden::OAuth.access_token_user_finder(:twitter) do |access_token| + Rubyist.find_by_twitter_user_id(access_token.params[:user_id]) +end + +Warden::OpenID.configure do |config| + config.user_finder do |response| + Rubyist.find_by_identity_url(response.identity_url) + end +end + +# monkey patch for rewrite callback URI. +class Warden::OAuth::Strategy + def request_token + @request_token ||= consumer.get_request_token(:oauth_callback => request.url.split('?', 2).first) + end +end diff --git a/config/locales/action_view_ja.yml b/config/locales/action_view_ja.yml deleted file mode 100644 index e6d85040..00000000 --- a/config/locales/action_view_ja.yml +++ /dev/null @@ -1,90 +0,0 @@ -ja: - number: - # Used in number_with_delimiter() - # These are also the defaults for 'currency', 'percentage', 'precision', and 'human' - format: - # Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5) - separator: "." - # Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three) - delimiter: "," - # Number of decimals, behind the separator (the number 1 with a precision of 2 gives: 1.00) - precision: 3 - - # Used in number_to_currency() - currency: - format: - # Where is the currency sign? %u is the currency unit, %n the number (default: $5.00) - format: "%u%n" - unit: "$" - # These three are to override number.format and are optional - separator: "." - delimiter: "," - precision: 2 - - # Used in number_to_percentage() - percentage: - format: - # These three are to override number.format and are optional - # separator: - delimiter: "" - # precision: - - # Used in number_to_precision() - precision: - format: - # These three are to override number.format and are optional - # separator: - delimiter: "" - # precision: - - # Used in number_to_human_size() - human: - format: - # These three are to override number.format and are optional - # separator: - delimiter: "" - precision: 1 - - # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words() - datetime: - distance_in_words: - half_a_minute: "30秒前後" - less_than_x_seconds: - one: "less than 1 second" - other: "less than {{count}} seconds" - x_seconds: - one: "1 second" - other: "{{count}} seconds" - less_than_x_minutes: - one: "less than a minute" - other: "less than {{count}} minutes" - x_minutes: - one: "1分" - other: "{{count}}分" - about_x_hours: - one: "約1時間" - other: "約{{count}}時間" - x_days: - one: "1日" - other: "{{count}}日" - about_x_months: - one: "about 1 month" - other: "about {{count}} months" - x_months: - one: "1ヶ月" - other: "{{count}}ヶ月" - about_x_years: - one: "about 1 year" - other: "about {{count}} years" - over_x_years: - one: "{{count}}年以上" - other: "{{count}}年以上" - - activerecord: - errors: - template: - header: - one: "{{model}}にエラーが発生しました。" - other: "{{model}}に{{count}}つのエラーが発生しました。" - # The variable :count is also available - body: "次の項目を確認してください。" diff --git a/config/locales/active_record_ja.yml b/config/locales/active_record_ja.yml deleted file mode 100644 index 0e7896bb..00000000 --- a/config/locales/active_record_ja.yml +++ /dev/null @@ -1,53 +0,0 @@ -ja: - activerecord: - errors: - # The values :model, :attribute and :value are always available for interpolation - # The value :count is available when applicable. Can be used for pluralization. - messages: - inclusion: "は一覧にありません。" - exclusion: "は予約されています。" - invalid: "は不正な値です。" - confirmation: "が一致しません。" - accepted: "を受諾してください。" - empty: "を入力してください。" - blank: "を入力してください。" - too_long: "は{{count}}文字以内で入力してください。" - too_short: "は{{count}}文字以上で入力してください。" - wrong_length: "は{{count}}文字で入力してください。" - taken: "はすでに存在します。" - not_a_number: "は数値で入力してください。" - greater_than: "は{{count}}より大きい値にしてください。" - greater_than_or_equal_to: "は{{count}}以上の値にしてください。" - equal_to: "は{{count}}にしてください。" - less_than: "は{{count}}より小さい値にしてください。" - less_than_or_equal_to: "は{{count}}以下の値にしてください。" - odd: "は奇数にしてください。" - even: "は偶数にしてください。" - # Append your own errors here or at the model/attributes scope. - - # You can define own errors for models or model attributes. - # The values :model, :attribute and :value are always available for interpolation. - # - # For example, - # models: - # user: - # blank: "This is a custom blank message for {{model}}: {{attribute}}" - # attributes: - # login: - # blank: "This is a custom blank message for User login" - # Will define custom blank validation message for User model and - # custom blank validation message for login attribute of User model. - models: - - # Translate model names. Used in Model.human_name(). - #models: - # For example, - # user: "Dude" - # will translate User model name to "Dude" - - # Translate model attribute names. Used in Model.human_attribute_name(attribute). - #attributes: - # For example, - # user: - # login: "Handle" - # will translate User attribute "login" as "Handle" diff --git a/config/locales/active_support_ja.yml b/config/locales/active_support_ja.yml deleted file mode 100644 index 949b020a..00000000 --- a/config/locales/active_support_ja.yml +++ /dev/null @@ -1,32 +0,0 @@ -ja: - date: - formats: - # Use the strftime parameters for formats. - # When no format has been given, it uses default. - # You can provide other formats here if you like! - default: "%Y/%m/%d" - short: "%y/%m/%d" - long: "%Y年%m月%d日%A" - - day_names: [日曜日, 月曜日, 火曜日, 水曜日, 木曜日, 金曜日, 土曜日] - abbr_day_names: [日, 月, 火, 水, 木, 金, 土] - - # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月] - abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月] - # Used in date_select and datime_select. - order: [ :year, :month, :day ] - - time: - formats: - default: "%Y/%m/%d %H:%M:%S" - short: "%y/%m/%d %H:%M" - long: "%Y年%m月%d日%A %H時%M分%S秒%Z" - am: "午前" - pm: "午後" - -# Used in array.to_sentence. - support: - array: - sentence_connector: "and" - skip_last_comma: false diff --git a/config/locales/en.yml b/config/locales/en.yml new file mode 100644 index 00000000..114c2f63 --- /dev/null +++ b/config/locales/en.yml @@ -0,0 +1,10 @@ +en: + rubykaigi2010: RubyKaigi 2010 + whats_new: What's New + time: + formats: + month: "%B %Y" + advent_cal: "%Y/%m/%d %H:%M" + date: + formats: + schedule_grid: "%Y/%m/%d(%a)" \ No newline at end of file diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 6abb5813..f3a904c8 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -1,13 +1,17 @@ -# Japanese translations for Ruby on Rails +# Japanese translations for Ruby on Rails # by Akira Matsuda (ronnie@dio.jp) # AR error messages are basically taken from Ruby-GetText-Package. Thanks to Masao Mutoh. ja: + rubykaigi2010: 日本Ruby会議2010 + whats_new: 新着情報 + date: formats: default: "%Y/%m/%d" short: "%m/%d" long: "%Y年%m月%d日(%a)" + schedule_grid: "%Y/%m/%d(%a)" day_names: [日曜日, 月曜日, 火曜日, 水曜日, 木曜日, 金曜日, 土曜日] abbr_day_names: [日, 月, 火, 水, 木, 金, 土] @@ -22,6 +26,8 @@ ja: default: "%Y/%m/%d %H:%M:%S" short: "%y/%m/%d %H:%M" long: "%Y年%m月%d日(%a) %H時%M分%S秒 %Z" + month: "%Y年%m月" + advent_cal: "%Y/%m/%d %H:%M" am: "午前" pm: "午後" @@ -33,6 +39,9 @@ ja: two_words_connector: "と" last_word_connector: "と" + select: + prompt: "選択してください。" + number: format: separator: "." @@ -104,8 +113,6 @@ ja: activerecord: errors: - format: - separator: "" template: header: one: "{{model}}にエラーが発生しました。" @@ -132,4 +139,7 @@ ja: less_than_or_equal_to: "は{{count}}以下の値にしてください。" odd: "は奇数にしてください。" even: "は偶数にしてください。" + record_invalid: "バリデーションに失敗しました。 {{errors}}" + full_messages: + format: "{{attribute}}{{message}}" diff --git a/config/locales/rubykaigi_en.yml b/config/locales/rubykaigi_en.yml new file mode 100644 index 00000000..a33f7533 --- /dev/null +++ b/config/locales/rubykaigi_en.yml @@ -0,0 +1,157 @@ +en: + ja: '日本語' + en: 'English' + rubykaigi: 'RubyKaigi' + rubykaigi2010: 'RubyKaigi 2010' + rubykaigi2010_dates: 'August 27-29' + time: + formats: + hhmm: "%H:%M" + sponsors: 'Sponsors' + ruby_sponsor: 'Ruby Sponsor' + platinum_sponsor: 'Platinum Sponsor' + gold_sponsor: 'Gold Sponsor' + individual_sponsor: 'Individual Sponsors' + attendee: 'Attendee' + party_attendee: 'Party Attendee' + committer: 'Committer' + link_to_individual_sponsors: 'Individual Sponsor List' + coming_soon: 'Upcoming' + product_item: + rk10: 'Conference Pass(RubyKaigi 2010)' + rk10_party: 'Official Conference Party(RubyKaigi 2010)' + rk10_individual_sponsor: 'Individual Sponsor(RubyKaigi 2010)' + rk11: 'Conference Pass(RubyKaigi 2011)' + rk11_party: 'Official Conference Party(RubyKaigi 2011)' + rk11_individual_sponsor: 'Individual Sponsor(RubyKaigi 2011)' + sign_in: 'Sign In' + sign_out: 'Sign Out' + dashboard: 'Dashboard' + account_settings: 'Account Settings' + time_table: 'Schedule' + program_list: 'Program' + registration: 'Registration' + order: + confirm: "Order Confirmation" + individual_sponsor_option: "Setting Individual Sponsor Options" + latest_news: 'Latest News' + no_news: "There's no latest news :)" + additional_amount_label: 'Your Preferred Amount' + individual_sponsor_amount_label: 'Individual Sponsor Amount' + i_will_attend_the_official_party_2010: "I'll attend the official conference party on 28th Aug." + individual_sponsor_link_url: "Link URL for Individual Sponsor List" + individual_sponsor_link_label: "Link Label for URL" + recommend_write_in_english: "It's strongly recommended to write in English" + individual_sponsor_party_attend_bonus_is_over: "Sorry. RubyKaigi 2010 official conference party ticket has been sold out." + individual_sponsor_anonymous: "Become an anonymous sponsor" + submit_individual_sponsor_additional_information: "Submit Individual Sponsor Additional Information" + prospectus: "Prospectus" + tickets: "Registration" + team: "Team" + photos: "Photos" + goodies: "Goodies" + press: "Press" + rubykaigi_archives: "Archives" + live: "Live" + rubykaigi_nikki: "Blog" + network: "Internet Access" + power_outlets: "Power Outlets" + junkudo: "Junkudo" + store: "store" + in_preparation: "In Preparation" + delete_this_item: "Delete This Item" + amount: "Amount" + quantity: "Quantity" + subtotal_price: "Subtotal Price" + total_price: "Total Price" + individual_sponsor_detail: 'Individual Sponsorship Program Detail' + normal_registartion_open_notification: 'Registration will open at 2010-06-15(Tue) 19:00 (JST)' + venue: "Venue" + accommodation: "Accommodation" + goodies: "Goodies" + notice_max_quantity: "You can register up to 4 tickets at one" + should_be_alphabetical: "should be alphabetical(/^[a-zA-Z0-9_-]+$/)." + student_discount_program: "Student Discount Program" + student_discount_program_detail: "We have a Student Discount Program" + student_discount_program_entry_form: "Student Discount Program Entry Form" + speaker: "Speaker(s)" + when: "Date" + abstract: "Abstract" + room: "Room" + lang: "Spoken Language" + speaker_profile: "Speaker Profile" + presentation_material: "Presentation Material" + presentation_video: "Video" + nicovideo: "Nico Nico Douga" + out_of_stock: "Out of Stock" + running_out_of_stock: "Running Out of Stock" + in_stock: "In Stock" + already_at_capacity: "Already at capacity" + community_night: "Community Night" + at_multi_purpose_hall: "at Multi Purpose Hall" + official_party: "Official Conference Party" + registration_required: "Registration Required" + #----------------------------------------------------------------------------- + rubykaigi2011: 'RubyKaigi 2011' + rubykaigi2011_dates: 'July 16 - 18' + call_for_sponsors: 'RubyKaigi 2011 is looking for Sponsors.' + sponsor_prospectus: 'Sponsor Prospectus' + call_for_presentations: 'RubyKaigi 2011 Call for Presentations' + regional_rubykaigi: 'Regional RubyKaigi' + about: 'About' + photographers: 'Photos provided by' + registration: 'Registration' + tickets: 'Conference Registration' + staffs: '当日スタッフ募集' + for_attendees: 'For Attendees' + programs: 'Program' + schedule: 'Schedule' + staffs: '当日スタッフ募集' + hall_main: 'Main Hall' + hall_sub: 'Sub Hall' + access: 'Access' + hotel_and_travel: 'Hotel & Travel' + floor_guide: 'Floor Guide' + goodies: 'Goodies' + sponsors_registration: 'RubyKaigi 2011 is looking for Sponsors' + sponsors_registration_corporate: 'Become a sponsor' + sponsors_registration_individual: 'Become a individual sponsor' + archives: 'RubyKaigi Archive' + inquiry: 'Contact' + signin: 'Sign in' + signout: 'Sign out' + dashboard: 'Dashboard' + account_settings: 'Account Settings' + date_fri: '2011年7月16日(金)' + date_sat: '2011年7月17日(土)' + date_sun: '2011年7月18日(日)' + advent: 'Advent Calendar' + hashtag: 'hashtag' + advent_joinus: "How to join 'RubyKaigi Advent Calendar 2011'" + advent_calendar: 'RubyKaigi Advent Calendar 2011' + community: 'Community' + back_to_registration: 'Back to Registration' + show_your_cart: 'Show Your Cart' + official_party_description: '' + individual_sponsor_program_detail: 'Program Detail' + about_donation: 'Donation: Minimum 15,000 JPY. No maximum limits :)' + about_payment: 'Payment: Will accept credit cards via PayPal.' + individual_sponsor_program_benefits: 'Program Benefits' + individual_sponsor_program_benefit_1: '1 pass to RubyKaigi 2011.' + individual_sponsor_program_benefit_2: 'No pass to the official party(you should buy the ticket if want to join the party.' + individual_sponsor_program_benefit_3: 'A mention of your name and link to your website in the individual sponsor section of RubyKaigi 2011 web site.' + canceled: 'We have some unfortunate news to announce.' + instruction: 'Instruction' + free_admission_program_for_students: 'Free Admission Program For Students' + free_admission_program_for_students_entry_form: 'Program Entry Form' + schedule_is_tentative: 'THE SCHEDULE IS TENTATIVE AND IS SUBJECT TO CHANGE. DO NOT SHARE THIS LINK AT THIS TIME. PROVIDED FOR REVIEW ONLY.' + about_rubykaigi_nikki: "Here's RubyKaigi Nikki, our latest news blog. 'Nikki' means 'diary' in Japanese :)" + become_an_individual_sponsor: "Become an individual sponsor" + become_a_sponsor: "Become a Sponsor" + time_span: 'Time' + presentation_language: 'Presentation Language' + we_will_not_refund: 'After an order is placed, it cannot be cancelled, and changes cannot be made to the order details.Thanks for your cooperation.' + official_logo: "Official logo data" + badges: "Badges" + wallpapers: "Wallpapers" + neribun_with_location: "Nerima Culture Center (Tokyo, Japan)" diff --git a/config/locales/rubykaigi_ja.yml b/config/locales/rubykaigi_ja.yml new file mode 100644 index 00000000..c1edf737 --- /dev/null +++ b/config/locales/rubykaigi_ja.yml @@ -0,0 +1,159 @@ +ja: + ja: '日本語' + en: 'English' + rubykaigi: '日本Ruby会議' + time: + formats: + hhmm: "%H:%M" + rubykaigi2010: '日本Ruby会議 2010' + rubykaigi2010_dates: '8月27日〜29日' + sponsors: 'スポンサー' + ruby_sponsor: 'Rubyスポンサー' + platinum_sponsor: 'Platinumスポンサー' + gold_sponsor: 'Goldスポンサー' + individual_sponsor: '個人スポンサー' + attendee: '一般参加' + party_attendee: '懇親会' + committer: 'コミッタ' + link_to_individual_sponsors: '個人スポンサーの一覧' + coming_soon: '準備中' + product_item: + rk10: '日本Ruby会議2010' + rk10_party: '懇親会(日本Ruby会議2010)' + rk10_individual_sponsor: '個人スポンサー(日本Ruby会議2010)' + rk11: '日本Ruby会議2011' + rk11_party: '懇親会(日本Ruby会議2011)' + rk11_individual_sponsor: '個人スポンサー(日本Ruby会議2011)' + sign_in: 'Sign In' + sign_out: 'Sign Out' + dashboard: 'Dashboard' + account_settings: 'Account Settings' + time_table: 'タイムテーブル' + program_list: 'プログラム一覧' + registration: '参加登録' + order: + confirm: "注文のご確認" + individual_sponsor_option: "個人スポンサー向け追加情報の設定" + latest_news: '新着情報' + no_news: "(特にありません)" + additional_amount_label: '追加支援いただける金額' + individual_sponsor_amount_label: '個人スポンサー支援額' + i_will_attend_the_official_party_2010: "8月28日のRubyKaigi2010公式懇親会に参加します" + individual_sponsor_link_url: "個人スポンサー一覧に掲載するリンクのURL" + individual_sponsor_link_label: "個人スポンサー一覧に掲載するリンクのラベル" + recommend_write_in_english: "英語での記述を強くおすすめします" + individual_sponsor_party_attend_bonus_is_over: "個人スポンサーの懇親会参加特典は終了しました。悪しからずご了承ください。" + individual_sponsor_anonymous: "匿名の個人スポンサーとして掲載する" + submit_individual_sponsor_additional_information: "個人スポンサー向け追加情報を保存する" + prospectus: "開催趣意" + tickets: "参加登録" + team: "実行委員会" + photos: "写真" + goodies: "おまけ" + press: "取材をご希望の方へ" + rubykaigi_archives: "これまでのRuby会議" + live: "配信" + rubykaigi_nikki: "RubyKaigi日記" + network: "ネットワーク" + power_outlets: "電源" + junkudo: "ジュンク堂書店" + store: "店" + in_preparation: "準備中" + delete_this_item: "このアイテムを削除" + amount: "金額" + quantity: "数量" + subtotal_price: "小計" + total_price: "合計" + individual_sponsor_detail: '個人スポンサーの仕様についてはこちら' + normal_registartion_open_notification: '一般参加登録の開始は 2010-06-15(Tue) 19:00 (JST) を予定しています' + venue: "会場" + accommodation: "宿泊" + goodies: "おまけ" + notice_max_quantity: "1度に登録できるのは4件までです" + should_be_alphabetical: " はアルファベットっぽい文字列でお願いします(/^[a-zA-Z0-9_-]+$/)." + student_discount_program: "学割制度" + student_discount_program_detail: "学割制度の説明" + student_discount_program_entry_form: "学割申請フォーム" + speaker: "スピーカー" + when: "日程" + abstract: "概要" + room: "会場" + lang: "話す自然言語" + speaker_profile: "スピーカー プロフィール" + presentation_material: "発表資料" + presentation_video: "発表動画" + nicovideo: "ニコニコ動画" + out_of_stock: "売り切れ" + running_out_of_stock: "残席わずか" + in_stock: "在庫あり" + already_at_capacity: "定員に達しました" + community_night: "コミュニティ・ナイト" + at_multi_purpose_hall: "於 多目的ホール" + official_party: "懇親会" + registration_required: "要登録" + # -------------------------------------------------------------------------- + rubykaigi2011: '日本Ruby会議2011' + rubykaigi2011_dates: '7月16日〜18日' + call_for_sponsors: '日本Ruby会議2011ではスポンサーを募集しています' + sponsor_prospectus: 'スポンサーシップのご案内' + call_for_presentations: '日本Ruby会議2011での発表を募集します' + cfp_instruction: 'CFPインストラクション' + regional_rubykaigi: '地域Ruby会議' + about: '日本Ruby会議について' + photographers: '写真提供' + registration: 'チケット購入・各種お申込み' + tickets: 'チケットを購入する' + staffs: '当日スタッフ募集' + for_attendees: '参加者向け情報' + programs: 'プログラム' + schedule: 'スケジュール' + staffs: '当日スタッフ募集' + hall_main: '大ホール' + hall_sub: '小ホール' + access: 'アクセス' + hotel_and_travel: '宿泊について' + floor_guide: 'フロアガイド' + goodies: 'おまけ' + sponsors_registration: 'スポンサー募集のご案内' + sponsors_registration_corporate: '企業スポンサーになる' + sponsors_registration_individual: '個人スポンサーになる' + archives: 'これまでのRuby会議' + inquiry: 'お問い合わせ' + signin: 'サインイン' + signout: 'サインアウト' + dashboard: 'ダッシュボード' + account_settings: 'アカウント設定' + date_fri: '2011年7月16日(金)' + date_sat: '2011年7月17日(土)' + date_sun: '2011年7月18日(日)' + advent: 'アドベントカレンダー' + hashtag: 'ハッシュタグ' + advent_about: 'RubyKaigi Advent Calendar 2011 への参加イベント(RubyKaigi2011協賛イベント)を募集します' + advent_calendar: 'RubyKaigi Advent Calendar 2011' + community: 'コミュニティ' + back_to_registration: 'チケット購入・各種お申込み画面に戻る' + show_your_cart: 'カートを見る' + official_party_description: '懇親会を下記の日程で開催します。本編とともに是非お楽しみください' + individual_sponsor_program_detail: '日本Ruby会議2011個人スポンサー仕様' + about_donation: '金額: 15,000JPYから。上限はありません :)' + about_payment: '支払方法: PayPalによるクレジットカード払' + individual_sponsor_program_benefits: '日本Ruby会議2011個人スポンサー特典' + individual_sponsor_program_benefit_1: 'RubyKaigi2011 本編参加チケット 1枚' + individual_sponsor_program_benefit_2: 'rubykaigi.org にRubyKaigi2011個人スポンサーとしてお名前とリンク先を掲載します(匿名での支援も受け付けます)' + individual_sponsor_program_benefit_3: 'RubyKaigi2011 公式懇親会への参加特典はありません【昨年から仕様変更】' + canceled: '講演に関する残念なお知らせ' + instruction: '説明' + free_admission_program_for_students: '学生無料参加制度' + free_admission_program_for_students_entry_form: '学生無料参加制度エントリーフォーム' + schedule_is_tentative: 'スケジュールは調整中のため、変更される可能性があります。この URL は公開しないでください。レビューのために提供されています。' + about_rubykaigi_nikki: '日本Ruby会議に関する最新の情報はRubyKaigi日記より配信しております。' + become_an_individual_sponsor: "個人スポンサーになる" + become_a_sponsor: "スポンサーになる" + time_span: '時間' + presentation_language: '発表言語' + we_will_not_refund: '決済後の参加者都合での払い戻しには応じておりません。ご理解とご協力いただきますようお願い申し上げます。' + official_logo: "公式ロゴデータ" + badges: "バッヂ" + wallpapers: "かべ紙" + neribun_with_location: "練馬文化センター (東京都練馬区)" + advent_joinus: "RubyKaigi Advent Calendar 2011 にご参加ください" diff --git a/config/locales/translation_en.yml b/config/locales/translation_en.yml deleted file mode 100644 index 1a5751ce..00000000 --- a/config/locales/translation_en.yml +++ /dev/null @@ -1,84 +0,0 @@ -en: - activerecord: - models: - account: "Account" - - attributes: - account: - identity_url: "OpenID" - - lightning_talk_submission: - name: 'Name' - title: 'Title of your talk' - abstract: 'Abstract of your talk' - email: 'E-mail' - has_ticket: 'I have my own ticket for RubyKaigi2009 Conference.' - note: 'Message' - organization: "Organization" - the_birthstone_of_july: 'The birthstone of July is:' - talk: - room: "Room" - title: "Title" - abstract: "Abstract" - speaker: "Speaker" - profile: "Speaker Profile" - date: "Date" - - rubykaigi2009: "RubyKaigi2009" - RubyKaigiDiary: "RubyKaigi Diary" - NihonRubynoKai: "Nihon Ruby-no-Kai" - signin: "Sign in" - registration: "Registration" - sponsors: "Sponsors" - staff: "Staff" - information: "Information (FAQ)" - goodies: "Goodies" - wallpapers: "Wallpapers" - badge: "Badge" - logo: "Logo" - bgm: "BGM" - live: "Live" - irc: "IRC" - ago: " ago" - exchange_ticket_reissue: "Exchange Ticket (Reissue)" - exchange_ticket_reissue_desc: "To reissue exchange ticket, Please enter your e-mail address (used to registration on paypal.com). -We'll mail you back the exchange ticket information(s) (including private url)." - your_email_on_paypal: "Your E-mail address (used to registration on paypal.com)" - reissue: "Reissue" - processing: "Processing..." - reissue_mailback: "We mailed you back the exchange ticket(s) information to " - reissue_when_match_exactly: "when the e-mail address was matched to our database exactly." - lightning_talk: 'Lightning Talk' - lightning_talk_submission: 'Lightning Talk Submission' - required: "Required" - lt: - are_you_sure: "Are you sure to submit talk?" - submit: "Submit your talk" - is_ruby: "is 'ruby'" - select_to_avoid_spam: "Please select to avoid spam." - convenient_date: "Check your convenient date(s) to talk:" - rubykaigi2009: - day1: "Friday, July 17" - day2: "Saturday, July 18" - paypal: - thanks: - heading: "Thank you for your registration." - your_txn_id_is: "Your transaction id is" - instruction: "We'll sent you Exchange Ticket information via email (used for buying ticket on paypal.com) later.
-Plese check it and bring printout to the venue for admission." - how_about_lightning_talk: "How about {{lt_submission}} submission with registration?" - timetable: "Timetable" - room: - rubykaigi2009: - hall: "Hitotsubashi Memorial Hall" - medium: "Conference Room(2nd Floor)" - small: "Conference Room(1st Floor)" - start_on_10am: "(this room will start at 10:00)" - back_to_timetable: "Back to Timetable" - admission: "Open & Admission" - break: "Break" - lunch_break: "Lunch Break" - conference_party: "Party (Registration Required)" - community_appeal: "Community Appeal" - license: 'License' - rubykaigi2010: 'RubyKaigi2010' \ No newline at end of file diff --git a/config/locales/translation_ja.yml b/config/locales/translation_ja.yml deleted file mode 100644 index eb6affda..00000000 --- a/config/locales/translation_ja.yml +++ /dev/null @@ -1,110 +0,0 @@ -ja: - activerecord: - models: - account: "アカウント" - lightning_talk_submission: 'ライトニングトーク応募' - exchange_ticket: "交換券" #g - headline_entry: "見出し項目" #g - paypal_transaction: "PayPalのトランザクション" #g - - attributes: - account: - identity_url: "OpenID" - - lightning_talk_submission: - name: 'お名前' - title: 'トークのタイトル' - abstract: 'トークの概要' - email: 'E-mail' - has_ticket: '私はRubyKaigi2009本編チケットを持っています' - note: 'ひとこと' - organization: "ご所属" - the_birthstone_of_july: "7月の誕生石は:" - - exchange_ticket: - code4u: "Code4u" #g - paypal_transaction: "PayPalのトランザクション" #g - - headline_entry: - title: "タイトル" #g - time: "時間" #g - link: "リンク" #g - content: "内容" #g - - paypal_transaction: - item_number: "アイテムコード" #g - payer_email: "パイヤーメール" #g - last_name: "姓" #g - first_name: "名前" #g - payment_status: "支払状況" #g - residence_country: "居住国" #g - verify: "検証" #g - notified_json: "JSONを通知" #g - memo: "メモ" #g - exchange_ticket: "交換券" #g - - talk: - room: "会場" - title: "タイトル" - abstract: "概要" - speaker: "スピーカー" - profile: "スピーカープロフィール" - date: "日程" - - rubykaigi2009: "日本Ruby会議2009" - RubyKaigiDiary: "RubyKaigi日記" - NihonRubynoKai: "日本Rubyの会" - signin: "サインイン" - registration: "参加登録" - sponsors: "スポンサー" - staff: "実行委員会" - information: "参加者向け情報" - goodies: "おまけ" - wallpapers: "壁紙" - badge: "バッジ" - logo: "ロゴ" - bgm: "会場BGM" - live: "配信" - irc: "IRC" - ago: "前" - exchange_ticket_reissue: "Exchange Ticket (再発行)" - exchange_ticket_reissue_desc: "PayPal.comでの決済に利用したメールアドレスを入力することで、Exchange Ticketを再発行できます。再発行されたExchange Ticketは、メールで通知されます。メールには、Webで表示させるためのプライベートなURLが含まれています。" - your_email_on_paypal: "PayPalで決済に利用したメールアドレス" - reissue: "再発行" - processing: "処理中..." - reissue_mailback: "入力されたメールアドレスが正しければ、Exchange Ticketに関する情報が次のアドレス宛に送信されています: " - reissue_when_match_exactly: "このメールアドレスがPayPal.comでの決済に利用したアドレス以外の場合、メールは送信されません" - lightning_talk: 'ライトニングトーク' - lightning_talk_submission: 'ライトニングトークスへの応募' - required: "必須" - lt: - are_you_sure: "確認です。この内容でライトニングトークに応募しますか?" - submit: "応募する" - is_ruby: " 'ruby'です" - select_to_avoid_spam: "SPAM避けのために選択してください。ご協力よろしくお願いします。" - convenient_date: "ライトニングトークの発表に参加できる日程にチェックをつけてください:" - rubykaigi2009: - day1: "7月17日(金)" - day2: "7月18日(土)" - paypal: - thanks: - heading: "登録ありがとうございます。" - your_txn_id_is: "あなたのトランザクションID" - instruction: "後ほど、Exchange Ticket についての情報をメールで送信します(paypal.comで決済に使ったメールアドレス宛に送信します)。
-当日はExchange Ticketのプリントアウトを会場までお持ちください。認証に利用します。" - how_about_lightning_talk: "ご一緒に {{lt_submission}} への応募はいかがですか?" - timetable: "タイムテーブル" - room: - rubykaigi2009: - hall: "一橋記念講堂(2F)" - medium: "中会議場(2F)" - small: "特別会議室(1F)" - start_on_10am: "(この部屋の開始時刻は10:00です)" - back_to_timetable: "タイムテーブルへ戻る" - admission: "開場・受付" - break: "休憩" - lunch_break: "昼休み" - conference_party: "懇親会(事前にチケットの購入が必要です)" - community_appeal: "コミュニティアピール" - license: 'ライセンス' - rubykaigi2010: '日本Ruby会議2010' diff --git a/config/routes.rb b/config/routes.rb index e4a587eb..0f92ac7f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,83 +1,68 @@ -ActionController::Routing::Routes.draw do |map| - map.namespace :admin do |admin| - admin.resources :lightning_talk_submissions, :has_one => :lightning_talk_selection - admin.resources :lightning_talk_selections, :only => [:index] - admin.resources :paypal_transactions, :collection => [:download] +Rubykaigi::Application.routes.draw do + scope '/:year/:locale', :constraints => {:year => /2\d{3}/, :locale => /en|ja/} do + match 'registration', + :to => 'registrations#index', + :as => 'registrations' + match 'phone_registration', :to => 'registrations#phone_index' + resources :advent_calendar, :only => %w(index) + match 'sponsors_ruby/:id', :to => 'sponsors_ruby#show' + match 'schedule/grid' => 'schedule#grid' + match 'schedule/details/:id' => 'schedule#details', :as => 'schedule_details' + resources :team, :only => %w(index) end - # Sample of regular route: - # map.connect 'products/:id', :controller => 'catalog', :action => 'view' - # Keep in mind you can assign values other than :controller and :action - map.lightning_talk_submissions("/:year/:locale/lightning_talk_submissions/:action", - :controller => 'lightning_talk_submissions', :action => 'index', - :requirements => {:year => /2\d{3}/, :locale => /en|ja/ }) - - map.registrations("/:year/:locale/registrations/:action", - :controller => 'registrations', :action => 'index', - :requirements => {:year => /2\d{3}/, :locale => /en|ja/ }) - - map.resources(:talks, :path_prefix => "/:year/:locale", - :requirements => {:year => /2\d{3}/, :locale => /en|ja/ }, - :only => [ :index, :show ]) - - map.paypal_ipn("/paypal/instant_payment_notification", - :controller => 'paypal', :action => 'instant_payment_notification') - - map.live("/:year/:locale/live/:page_name", :controller => 'live', :action => 'show') - - map.with_options( :controller => "public_releases", :action => "show", - :defaults => {:page_name => "index"} ) do |pr| - pr.pub_release ":year/:locale/:page_name", :requirements => {:year => /2\d{3}/, :locale => /en|ja/ } - pr.connect ":year/:page_name", :requirements => {:year => /2\d{3}/} - end - - map.with_options(:controller => 'exchange_tickets') do |tickets| - tickets.show_exchange_ticket("/exchange_tickets/show/:code4u", - :action => "show", - :requirements => {:code4u => /\w{24}/}) - tickets.reissue_exchange_tickets("/exchange_tickets/reissue", - :action => "reissue", - :conditions => {:method => :post}) - tickets.connect "/exchange_tickets/:action", :defaults => {:action => 'index'} + scope '/:year', :constraints => {:year => /2\d{3}/} do + match 'schedule/all.:format' => 'schedule#all' end - # Sample of named route: - # map.purchase 'products/:id/purchase', :controller => 'catalog', :action => 'purchase' - # This route can be invoked with purchase_url(:id => product.id) - map.signin '/signin', :controller => 'sessions', :action => 'new' - map.signout '/signout', :controller => 'sessions', :action => 'destroy', :method => :post - - # Sample resource route (maps HTTP verbs to controller actions automatically): - # map.resources :products - map.resources :sessions - map.resources :accounts - - # Sample resource route with options: - # map.resources :products, :member => { :short => :get, :toggle => :post }, :collection => { :sold => :get } + match 'signin', :to => 'sessions#new', :as => 'signin' + delete 'signout', :to => 'sessions#destroy', :as => 'signout' + match 'my_tickets', :to => 'tickets#index', :as => "my_tickets" - # Sample resource route with sub-resources: - # map.resources :products, :has_many => [ :comments, :sales ], :has_one => :seller - - # Sample resource route with more complex sub-resources - # map.resources :products do |products| - # products.resources :comments - # products.resources :sales, :collection => { :recent => :get } - # end - - # Sample resource route within a namespace: - # map.namespace :admin do |admin| - # # Directs /admin/products/* to Admin::ProductsController (app/controllers/admin/products_controller.rb) - # admin.resources :products - # end + resource :sessions do + collection do + get :unauthenticated + end + end + resource :account + resources :rubyists + + resources :carts do + collection do + post :add_item + delete :remove_item + end + end + resources :orders do + collection do + get :confirm + get :thanks + get :returned + get :individual_sponsor_option + end + end + resources :tickets do + member do + put :regenerate_permalink + end + end - # You can have the root of your site routed with map.root -- just remember to delete public/index.html. - map.root :controller => "welcome" + match "/paypal/instant_payment_notification", + :to => 'paypal#instant_payment_notification', + :as => 'paypal_ipn' + match 'dashboard', + :to => 'dashboard#index', + :as => 'dashboard' + + scope ':year', :to => 'pages#show', :defaults => {:page_name => "index"} do + match ':locale(/:page_name)', + :as => 'page', + :constraints => {:year => /2\d{3}/, :locale => /en|ja/ } + match '(/:page_name)', + :constraints => {:year => /2\d{3}/} + end - # See how all your routes lay out with "rake routes" + root :to => 'welcome#index' - # Install the default routes as the lowest priority. - # Note: These default routes make all actions in every controller accessible via GET requests. You should - # consider removing the them or commenting them out if you're using named routes and resources. - map.connect ':controller/:action/:id' - map.connect ':controller/:action/:id.:format' + match ':controller(/:action(/:id))' end diff --git a/config/rubykaigi.god b/config/rubykaigi.god new file mode 100644 index 00000000..e266a06f --- /dev/null +++ b/config/rubykaigi.god @@ -0,0 +1,12 @@ +RAILS_ROOT="/home/rubykaigi/railsapp/current" + +God.watch do |w| + w.name = "delayed_job" + w.start = "cd #{RAILS_ROOT} && RAILS_ENV=production script/delayed_job run" + w.start_if do |start| + start.condition(:process_running) do |c| + c.running = false + c.interval = 30.seconds + end + end +end \ No newline at end of file diff --git a/config/rubykaigi_template.pill b/config/rubykaigi_template.pill new file mode 100644 index 00000000..8b332449 --- /dev/null +++ b/config/rubykaigi_template.pill @@ -0,0 +1,26 @@ +RAILS_ENV = File.basename(__FILE__, ".pill") +APPDIR_SUFFIX = (RAILS_ENV =~ /staging/ ? "staging" : nil) +APPDIR = ['railsapp', APPDIR_SUFFIX].join('.').sub(/\.$/, '') +RAILS_CURRENT_PATH= "/home/rubykaigi/#{APPDIR}/current" + +Bluepill.application(RAILS_ENV, :base_dir => "#{RAILS_CURRENT_PATH}/tmp", :log_file => "#{RAILS_CURRENT_PATH}/log/bluepill.log") do |app| + app.uid = "railsapp" + app.gid = "railsapp" + app.process("delayed_job") do |process| + rails_root = RAILS_CURRENT_PATH + process.working_dir = rails_root + + process.start_command = "/usr/bin/env RAILS_ENV=#{RAILS_ENV} #{rails_root}/script/delayed_job start" + process.stop_command = "/usr/bin/env RAILS_ENV=#{RAILS_ENV} #{rails_root}/script/delayed_job stop" + process.restart_command = "#{process.stop_command} && #{process.start_command}" + process.pid_file = "#{rails_root}/tmp/pids/delayed_job.pid" + process.stdout = process.stderr = "#{rails_root}/log/delayed_job.log" + + process.start_grace_time = 20.seconds + process.stop_grace_time = 20.seconds + process.restart_grace_time = 60.seconds + + process.checks :cpu_usage, :every => 30.seconds, :below => 10, :times => 3 + process.checks :mem_usage, :every => 30.seconds, :below => 300.megabytes, :times => [3, 5] + end +end diff --git a/config/schedule.rb b/config/schedule.rb new file mode 100644 index 00000000..50903750 --- /dev/null +++ b/config/schedule.rb @@ -0,0 +1,13 @@ +# A standard output is recorded in the log file. +# If an error occurs, cron will send mail to you. +set :output, :standard => File.join(path, *%w{log cron.log}) +job_type :rake, "cd :path && RAILS_ENV=:environment bundle exec rake :task :output" # workaround for running rake with bundle exec + +every 1.hour do + rake 'headline:fetch' + rake 'twitter:wash_whale' +end + +every 5.minutes do + command 'touch ' + File.join(path, *%w{tmp restart.txt}) +end diff --git a/config/templates/maintenance.html.erb b/config/templates/maintenance.html.erb index abd3857b..93295a45 100644 --- a/config/templates/maintenance.html.erb +++ b/config/templates/maintenance.html.erb @@ -45,7 +45,7 @@ We'll be back <%= deadline ? deadline : "shortly" %>.

-
+
diff --git a/db/2010/nicovideos.yml b/db/2010/nicovideos.yml new file mode 100644 index 00000000..e540f6d5 --- /dev/null +++ b/db/2010/nicovideos.yml @@ -0,0 +1,104 @@ +--- +- 27M01: + - http://www.nicovideo.jp/watch/sm11901507 + 27M02: + - http://www.nicovideo.jp/watch/sm11901600 + 27M03: + - http://www.nicovideo.jp/watch/sm11901698 + 27M04: + - http://www.nicovideo.jp/watch/sm11902001 + 27M05: + - http://www.nicovideo.jp/watch/sm11902134 + 27M06: + - http://www.nicovideo.jp/watch/sm11902231 + 27M07: + - http://www.nicovideo.jp/watch/sm11902338 + 27M08: + - http://www.nicovideo.jp/watch/sm11902513 + 27S01: + - http://www.nicovideo.jp/watch/sm11902695 + 27S02: + - http://www.nicovideo.jp/watch/sm11902869 + 27S03: + - http://www.nicovideo.jp/watch/sm11903005 + 27S04: + - http://www.nicovideo.jp/watch/sm11903274 + 27S05: + - http://www.nicovideo.jp/watch/sm11903438 + 27S06: + - http://www.nicovideo.jp/watch/sm11903516 + 27S07: + - http://www.nicovideo.jp/watch/sm11903723 +- 28M01: + - http://www.nicovideo.jp/watch/sm11914238 + 28M02: + - http://www.nicovideo.jp/watch/sm11914317 + 28M03: + - http://www.nicovideo.jp/watch/sm11914507 + 28M04: + - http://www.nicovideo.jp/watch/sm11913673 + 28M05: + - http://www.nicovideo.jp/watch/sm11914687 + 28M06: + - http://www.nicovideo.jp/watch/sm11914887 + 28M07: + - http://www.nicovideo.jp/watch/sm11914934 + - http://www.nicovideo.jp/watch/sm11915031 + - http://www.nicovideo.jp/watch/sm11927705 + - http://www.nicovideo.jp/watch/sm11915184 + - http://www.nicovideo.jp/watch/sm11915382 + - http://www.nicovideo.jp/watch/sm11915514 + - http://www.nicovideo.jp/watch/sm11915627 + - http://www.nicovideo.jp/watch/sm11918803 + - http://www.nicovideo.jp/watch/sm11918830 + - http://www.nicovideo.jp/watch/sm11918844 + - http://www.nicovideo.jp/watch/sm11927896 + 28S01: + - http://www.nicovideo.jp/watch/sm11907935 + 28S02: + - http://www.nicovideo.jp/watch/sm11908083 + 28S03: + - http://www.nicovideo.jp/watch/sm11908640 + 28S04: + - http://www.nicovideo.jp/watch/sm11913812 + 28S05: + - http://www.nicovideo.jp/watch/sm11913926 + 28S06: + - http://www.nicovideo.jp/watch/sm11914130 +- 29M01: + - http://www.nicovideo.jp/watch/sm11932651 + 29M02: + - http://www.nicovideo.jp/watch/sm11932726 + 29M03: + - http://www.nicovideo.jp/watch/sm11932774 + 29M04: + - http://www.nicovideo.jp/watch/sm11932860 + 29M05: + - http://www.nicovideo.jp/watch/sm11932895 + 29M06: + - http://www.nicovideo.jp/watch/sm11932926 + 29M07: + - http://www.nicovideo.jp/watch/sm11930436 + 29M08: + - http://www.nicovideo.jp/watch/sm11930550 + - http://www.nicovideo.jp/watch/sm11930645 + 29M09: + - http://www.nicovideo.jp/watch/sm11933775 + 29S01: + - http://www.nicovideo.jp/watch/sm11928513 + 29S02: + - http://www.nicovideo.jp/watch/sm11929384 + 29S03: + - http://www.nicovideo.jp/watch/sm11929507 + 29S04: + - http://www.nicovideo.jp/watch/sm11929673 + 29S05: + - http://www.nicovideo.jp/watch/sm11929798 + 29S06: + - http://www.nicovideo.jp/watch/sm11929936 + 29S07: + - http://www.nicovideo.jp/watch/sm11930116 + 29S08: + - http://www.nicovideo.jp/watch/sm11930316 + 29S09: + - http://www.nicovideo.jp/watch/sm11946905 diff --git a/db/2010/slides.yml b/db/2010/slides.yml new file mode 100644 index 00000000..0aa41b57 --- /dev/null +++ b/db/2010/slides.yml @@ -0,0 +1,87 @@ +--- +- 27M01: + 27M02: + 27M03: + - http://www.slideshare.net/rust/jpmobile-on-rails-30 + 27M04: + - http://www.slideshare.net/MasakiYamada/rubykaigi2010 + 27M05: + - http://www.slideshare.net/inouemak/building-realtimewebslide + 27M06: + - http://www.slideshare.net/authorNari/gcx + 27M07: + - http://www.slideshare.net/nay/the-basis-of-making-dsl-with-ruby + 27M08: + 27S01: + - http://www.slideshare.net/sarahmei/feels-like-ruby-ruby-kaigi-2010 + 27S02: + 27S03: + 27S04: + - http://www.slideshare.net/sarah.allen/international-web-application-development + 27S05: + 27S06: + 27S07: + - http://www.slideshare.net/tenderlove/having-fun-programming +- 28M01: + - http://www.slideshare.net/yugui/ruby-192-is-released + 28M02: + 28M03: + - http://www.slideshare.net/mametter/ruby-esoteric-obfuscated-ruby-programming-5088683 + 28M04: + - http://www.n-z.jp/presen/RubyKaigi2010/DailyRuby.pdf + 28M05: + 28M06: + - http://www.a-k-r.org/pub/rubykaigi2010-akr-unix-improved.pdf + 28M07: + - null + - http://www.dumbo.ai.kyutech.ac.jp/nagai/RubyTk/?c=plugin;plugin=attach_download;p=%A5%D7%A5%EC%A5%BC%A5%F3%A5%C6%A1%BC%A5%B7%A5%E7%A5%F3%BB%F1%CE%C1;file_name=RubyKaigi2010LT-nagai.pdf + - http://www.slideshare.net/sorah/what-is-few + - http://rvm.jp/~ko1/activities/rk2010-lt-ko1.pdf + - http://syuki.skr.jp/files/20100728/rubykaigi2010-msgpack.pdf + - null + - http://www.slideshare.net/KazkiMatz/introducing-the-lingo-project + - http://www.slideshare.net/benhoskings/rubykaigi-2010-babushka-lightning-talk + - https://docs.google.com/present/view?id=dchb3tb2_201fz7kq3xf + - null + - null + 28S01: + - http://ruote.s3.amazonaws.com/rocking_the_enterprise_with_ruby.pdf + 28S02: + - http://www.slideshare.net/jiang.wu/sinatra-and-friends + 28S03: + - http://www.slideshare.net/knowtheory/mapping-the-world-with-datamapper + 28S04: + 28S05: + - http://www.slideshare.net/paulelliott99/seamless-integration-testing + 28S06: +- 29M01: + 29M02: + - http://www.slideshare.net/suzumura/castoro-rubykaigi2010 + 29M03: + - http://www.slideshare.net/mseki/rk10trailer + 29M04: + - http://www.slideshare.net/drumwurzel/practical-ruby-projects-with-mongo-db-ruby-midwest-4777566 + 29M05: + - http://www.slideshare.net/shayfriedman/ironruby-whats-in-it-for-rubyists-rubykaigi-2010 + 29M06: + - http://www.matsukei.co.jp/topics/pdf/100829_ruby_kaigi.pdf + 29M07: + - http://www.slideshare.net/kakutani/there-is-nospoon + 29M08: + 29M09: + 29S01: + - http://www.slideshare.net/mrkn/rubykaigi2010mrkn-bigdecimal + 29S02: + - http://www.slideshare.net/masa16tanaka/narray-and-scientific-computing-with-ruby + 29S03: + - http://www.slideshare.net/miura1729/how-did-yarv2llvm-fail-5085861 + 29S04: + 29S05: + 29S06: + - http://www.clear-code.com/blog/2010/9/1.html + 29S07: + 29S08: + - http://www.slideshare.net/hsbt/how-to-survive-in-post-rails-world + 29S09: + - http://www.slideshare.net/kwatch/how-to-make-designerfriendly-template-engine + - http://www.slideshare.net/kwatch/html-5079716 diff --git a/db/2010/vimeo.yml b/db/2010/vimeo.yml new file mode 100644 index 00000000..d2de4943 --- /dev/null +++ b/db/2010/vimeo.yml @@ -0,0 +1,99 @@ +--- +- 27M01: + - http://vimeo.com/14548019 + 27M02: + - http://vimeo.com/14548338 + 27M03: + - http://vimeo.com/14548658 + 27M04: + - http://vimeo.com/14549468 + 27M05: + - http://vimeo.com/14549558 + 27M06: + - http://vimeo.com/14549681 + 27M07: + - http://vimeo.com/14549764 + 27M08: + - http://vimeo.com/14549892 + 27S01: + - http://vimeo.com/14546877 + 27S02: + - http://vimeo.com/14547164 + 27S03: + - http://vimeo.com/14547561 + 27S04: + - http://vimeo.com/14547648 + 27S05: + - http://vimeo.com/14547743 + 27S06: + - http://vimeo.com/14547828 + 27S07: + - http://vimeo.com/14547904 +- 28M01: + - http://vimeo.com/14550163 + 28M02: + - http://vimeo.com/14550223 + 28M03: + - http://vimeo.com/14817369 + 28M04: + - http://vimeo.com/14817403 + 28M05: + - http://vimeo.com/14817471 + 28M06: + - http://vimeo.com/14817572 + 28M07: + - http://vimeo.com/14816850 + - + - http://vimeo.com/14816870 + - http://vimeo.com/14816906 + - http://vimeo.com/14816932 + - http://vimeo.com/14816966 + - http://vimeo.com/14817011 + - http://vimeo.com/14817287 + - http://vimeo.com/14817303 + - http://vimeo.com/14817328 + - http://vimeo.com/14817604 + 28S01: + - http://vimeo.com/14550283 + 28S02: + - http://vimeo.com/14550348 + 28S03: + - http://vimeo.com/14550424 + 28S04: + - http://vimeo.com/14550991 + 28S05: + - http://vimeo.com/14550481 + 28S06: + - http://vimeo.com/14550567 +- 29M01: + - http://vimeo.com/14823540 + 29M02: + - http://vimeo.com/14823566 + 29M03: + - http://vimeo.com/14823606 + 29M04: + - http://vimeo.com/14550670 + 29M05: + - http://vimeo.com/14550758 + 29M06: + - http://vimeo.com/14823640 + 29M07: + - http://vimeo.com/14823175 + 29S01: + - http://vimeo.com/14823682 + 29S02: + - http://vimeo.com/14823720 + 29S03: + - http://vimeo.com/14823744 + 29S04: + - http://vimeo.com/14823811 + 29S05: + - http://vimeo.com/14823856 + 29S06: + - http://vimeo.com/14823899 + 29S07: + - http://vimeo.com/14550931 + 29S08: + - http://vimeo.com/14920187 + 29S09: + - http://vimeo.com/14823932 diff --git a/db/2011/advent_events.yml b/db/2011/advent_events.yml new file mode 100644 index 00000000..6a1fdc0c --- /dev/null +++ b/db/2011/advent_events.yml @@ -0,0 +1,131 @@ +to_ruby: + hosted_by_en: 'toRuby' + hosted_by_ja: 'toRuby' + name_en: 'toRuby (guRuby / yokohama.rb)' + name_ja: 'toRuby 出張版(協賛 guRuby, yokohama.rb)' + dtstart: '2011-07-17 11:30' + dtend: '2011-07-17 13:30' + url: "http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=toRuby" + location: "Nerima Culture Center (Tokyo, Japan)" + pub_date: '2011-07-17' + +enishitech_cafe: + hosted_by_en: 'EnishiTech,Inc.' + hosted_by_ja: 'えにしテック' + name_en: 'EnishiTech Cafe' + name_ja: 'えにしテックカフェ' + dtstart: '2011-07-08 19:00' + dtend: '2011-07-08 21:00' + url: "" + location: "EnishiTech (Sapporo, Japan)" + pub_date: '2011-05-20' + +tokyurubykaigi03: + hosted_by_en: 'TokyuRubyKaigi03 Team' + hosted_by_ja: 'TokyuRubyKaigi03実行委員会' + name_en: 'TokyuRubyKaigi03' + name_ja: 'TokyuRuby会議03' + dtstart: '2011-05-29 14:30' + dtend: '2011-05-29 19:30' + url: "http://regional.rubykaigi.org/tokyu03" + location: "EC Navi Company (Tokyo, Japan)" + pub_date: '2011-05-20' + +tech_lion02: + hosted_by_en: 'usptomonokai.jp' + hosted_by_ja: 'USP友の会' + name_en: 'Tech LION vol.2' + name_ja: 'Tech LION vol.2' + dtstart: '2011-06-17 19:30' + dtend: '2011-06-17 22:00' + url: "http://www.usptomonokai.jp/techlion" + location: "Naked Loft (Tokyo, Japan)" + pub_date: '2011-05-11' + +devlove_birthday: + hosted_by_en: 'DevLOVE' + hosted_by_ja: 'DevLOVE' + name_en: 'DevLOVE Birthday! - The birth one in the way back of RubyKaigi' + name_ja: 'DevLOVE Birthday! ~RubyKaigiの帰り道に生まれしもの~' + dtstart: '2011-06-21 19:30' + dtend: '2011-06-21 22:00' + url: "http://kokucheese.com/event/index/12560/" + location: "Classmethod,Inc. (Tokyo, Japan)" + pub_date: '2011-06-08' + +ruby_workshop_in_sapporo: + hosted_by_en: 'RubySapporo' + hosted_by_ja: 'Ruby札幌' + name_en: 'Ruby Workshop in Sapporo' + name_ja: 'Ruby勉強会@札幌' + dtstart: '2011-07-02 13:30' + dtend: '2011-07-02 16:30' + url: "http://atnd.org/events/16027" + location: "Higashi Kumin Center (Sapporo, Japan)" + pub_date: '2011-05-20' + +jrubykaigi2011: + hosted_by_en: 'JRuby UserGroup' + hosted_by_ja: 'JRubyユーザ会' + name_en: 'JRubyKaigi2011' + name_ja: 'JRuby会議2011' + dtstart: '2011-07-15 19:00' + dtend: '2011-07-15 22:00' + url: "http://jrubykaigi.org/2011" + location: 'Oracle Japan (Tokyo, Japan) [Map]' + pub_date: '2011-05-01' + +rubykaigi2011: + hosted_by_en: 'RubyKaigi 2011 Team' + hosted_by_ja: '日本Ruby会議2011実行委員会' + name_en: 'RubyKaigi2011' + name_ja: '日本Ruby会議2011' + dtstart: '2011-07-16 10:30' + dtend: '2011-07-18 18:30' + url: "http://rubykaigi.org/2011" + location: "Nerima Culture Center (Tokyo, Japan)" + pub_date: '2011-05-01' + +mitaka_rb: + hosted_by_en: 'Mitaka.rb' + hosted_by_ja: 'Mitaka.rb' + name_en: 'Mitaka.rb#12' + name_ja: 'Mitaka.rb第12回' + dtstart: '2011-06-21 20:00' + dtend: '2011-06-21 23:00' + url: "http://atnd.org/events/16665" + location: "Little Star Restaurant (Tokyo, Japan)" + pub_date: '2011-06-07' + +metacon2011: + hosted_by_en: 'metacon' + hosted_by_ja: '勉強会勉強会' + name_en: 'Metacon 2011' + name_ja: '勉強会カンファレンス2011' + dtstart: '2011-06-25 10:00' + dtend: '2011-06-25 19:00' + url: "https://sites.google.com/site/metacon2011/" + location: "Rakuten Tower 2, Rakuten Inc. (Tokyo, Japan)" + pub_date: '2011-06-08' + +trbmeetup: + hosted_by_en: 'Toyko Rubyist Meetup' + hosted_by_ja: 'Toyko Rubyist Meetup' + name_en: 'Ruby in the Park' + name_ja: 'Ruby in the Park' + dtstart: '2011-07-13 18:00' + dtend: '2011-07-13 22:00' + url: "http://www.tokyorubyistmeetup.org/" + location: "Yoyogi Park" + pub_date: '2011-06-13' + +railstokyo: + hosted_by_en: 'Rails Meeting Tokyo' + hosted_by_ja: 'Rails Meeting Tokyo' + name_en: 'Rails-Tokyo #63' + name_ja: 'Rails勉強会@東京 第63回' + dtstart: '2011-06-18 13:00' + dtend: '2011-06-18 18:00' + url: "http://wiki.fdiary.net/rails/?RailsMeetingTokyo-0063" + location: "Eiwa System Management,Inc. (Tokyo, Japan)" + pub_date: '2011-06-14' diff --git a/db/2011/events/16M01.yaml b/db/2011/events/16M01.yaml new file mode 100644 index 00000000..c888bfd6 --- /dev/null +++ b/db/2011/events/16M01.yaml @@ -0,0 +1,30 @@ +--- +presenters: + - name: + en: "Aaron Patterson (tenderlove)" + ja: + affiliation: + en: "AT&T Interactive" + ja: + bio: + en: |- + When he isn’t ruining people’s lives by writing software like phuby, + enterprise, and neversaydie, Aaron can be found writing slightly more + useful software like nokogiri. To keep up his Gameboy Lifestyle, Aaron + spends his weekdays writing high quality software for ATTi. Be sure to + catch him on Karaoke night, where you can watch him sing his favorite + smooth rock hits of the 70’s and early 80’s. + ja: + gravatar: f29327647a9cff5c69618bae420792ea +title: + en: "Ruby Ruined My Life." + ja: +abstract: + en: |- + For the final RubyKaigi, we will discuss how Ruby changes can people's + lives for the better and sometimes for worse. The life stories + involved will be used as a catalyst for looking at new features and + problems in Ruby and Rails, as well as ideas for where Ruby should go + for continued success. + ja: +language: "English" diff --git a/db/2011/events/16M02.yaml b/db/2011/events/16M02.yaml new file mode 100644 index 00000000..eac702d0 --- /dev/null +++ b/db/2011/events/16M02.yaml @@ -0,0 +1,18 @@ +--- +presenters: + - name: + en: "CRuby development team" + ja: + affiliation: + en: + ja: + bio: + en: + ja: +title: + en: "Next version of Ruby 1.8 and 1.9" + ja: +abstract: + en: + ja: +language: diff --git a/db/2011/events/16M03.yaml b/db/2011/events/16M03.yaml new file mode 100644 index 00000000..5bd39c73 --- /dev/null +++ b/db/2011/events/16M03.yaml @@ -0,0 +1,19 @@ +--- +presenters: + - name: + en: Yuichi Tateno + ja: "舘野祐一" + affiliation: + en: COOKPAD Inc. + ja: "クックパッド株式会社" + bio: + en: an initiator of the Shibuya.js. I belong to asakusa.rb. I like Ruby and instance_eval method. + ja: "Shibuya.js 発起人。浅草.rb 所属。好きな言語は Ruby。好きなメソッドは instance_eval。" + gravatar: 2997ec7879942bd0415690c85731e328 +title: + en: Large-scale web service and operations with Ruby + ja: "Ruby を利用した大規模ウェブサービスの開発・運用" +abstract: + en: A behind the scenes look at how Ruby is used at COOKPAD Inc. for large-scale development and operations + ja: "大規模ウェブサービス『クックパッド』では Ruby を用いてどのように開発・運用されているのか、その裏側をお話しします。" +language: Japanese diff --git a/db/2011/events/16M04.yaml b/db/2011/events/16M04.yaml new file mode 100644 index 00000000..eb9d0739 --- /dev/null +++ b/db/2011/events/16M04.yaml @@ -0,0 +1,18 @@ +--- +presenters: + - name: + en: Corey Donohoe + ja: + affiliation: + en: GitHub + ja: + bio: + en: Hacker at GitHub + ja: +title: + en: Shipping at the Speed of Life + ja: +abstract: + en: The talk will go into the "Ship It?" culture that's a big part of GitHub. How we use the git scm to help us deploy features fast and respond to problems on the site in a timely fashion. + ja: +language: English diff --git a/db/2011/events/16M05.yaml b/db/2011/events/16M05.yaml new file mode 100644 index 00000000..41fc172d --- /dev/null +++ b/db/2011/events/16M05.yaml @@ -0,0 +1,18 @@ +--- +presenters: + - name: + en: Andy Delcambre + ja: + affiliation: + en: Engine Yard + ja: + bio: + en: "Andy Delcambre started using Ruby while he was a sysadmin in college. After graduation he worked with PLANET ARGON on a number of large scale Rails sites for clients. He now works at Engine Yard on AppCloud. " + ja: +title: + en: Toggleable Mocks and Testing Strategies in a Service Oriented Architecture + ja: +abstract: + en: "Modern large scale applications often benefit from being composed of multiple smaller applications. This can provide many benefits, but it can often make testing each piece more complex. I will cover a technique we use at Engine Yard to easily test these pieces individually and as a piece of the whole. " + ja: +language: English diff --git a/db/2011/events/16M06.yaml b/db/2011/events/16M06.yaml new file mode 100644 index 00000000..ebbdc8f5 --- /dev/null +++ b/db/2011/events/16M06.yaml @@ -0,0 +1,44 @@ +--- +presenters: + - name: + en: Ayumu AIZAWA + ja: "相澤 歩" + affiliation: + en: Accenture Technology Solutions Corp. + ja: "アクセンチュア・テクノロジー・ソリューションズ株式会社" + bio: + en: |- + Ayumu AIZAWA is system analyst in global consulting firm. + He has a wealth of experience around design/development/deploy works of business and technology architecture for + large-scale enterprise system integration project as his job. He founded Ruby/Rails activities in his organization + since 2009, and is working on that continuously. + Also he is a member of RubyKaigi operation team since 2009 privately. + ja: |- + 外資系コンサルティングファーム系列SIer所属のシステムアナリストでクラウド推進チームのソリューションアーキテクト。 + 主に大規模案件の業務とシステムの設計/開発/展開を生業としており特に金融業界の基幹業務に関わることが多い。 + 2009年から社内でRubyの啓蒙活動と技術者の育成をおこなっている。 + 日本Ruby会議2009、2010、2011実行委員。JRuby会議2010実行委員、JRuby会議2011実行委員長。 + gravatar: 2e9a2dbe335e0111e4879a9d65dcbae0 +title: + en: |- + Issues of Enterprise Rubyist + ja: |- + Issues of Enterprise Rubyist ~SIerのなかのRubyistが考えるべきこと~ +abstract: + en: |- + Lately “Ruby on Rails” is being adapted in many cases as enterprise solutions. That even includes a case of + development matters which major IT service providers deal with. + The reason that many companies choose Rails is the expectation toward high productivities and the flexibilities + in changing business needs. In many cases of system development project using Rails, however, project management + is also the important key to bring success to the project besides the technical viewpoint. + In this session, what should be considered to get success in projects will be discussed from both view points of + developers and project managers based on a case in Accenture. + ja: |- + 近年、業務システムソリューションとしてRuby on Railsの採用が検討されることは珍しくなくなってきており、それは大手の + システムインテグレーターが手がける開発案件であっても例外ではない。 + SIerがRailsを採用する背景には、高い生産性と業務の変化に追随する柔軟性に対する期待がある。しかしRailsを採用したシ + ステム開発プロジェクトで期待される成果をあげるためには、技術的な側面だけではなく、プロジェクトマネジメント的な側面 + を含めて考慮しなければならないことがおおい。 + 本セッションでは、アクセンチュアにおけるRails開発案件の事例を基に、SIerの中の開発者とプロジェクトマネジャー双方の + 視点から、プロジェクトを成功に導くために考えるべきことがらについて述べる。 +language: Japanese diff --git a/db/2011/events/16M07.yaml b/db/2011/events/16M07.yaml new file mode 100644 index 00000000..5daf3e4a --- /dev/null +++ b/db/2011/events/16M07.yaml @@ -0,0 +1,26 @@ +--- +presenters: + - name: + en: Kosuke Tanabe + ja: "田辺浩介" + affiliation: + en: Project Next-L / Keio Univeristy + ja: "Project Next-L / 慶應義塾大学" + bio: + en: a member of "Project Next-L', a voluntary project to develop an open-source library management system / Doctoral student at Keio University + ja: "オープンソース図書館システム開発プロジェクト\"Project Next-L\"のメンバー / 慶應義塾大学大学院政策・メディア研究科博士課程" +title: + en: How libraries in Japan use Ruby - "Next-L Enju" and "NDL Search" + ja: "日本の図書館はどのようにRubyを使っているか - 「Next-L Enju」と「国会図書館サーチ」" +abstract: + en: |- + In 2011, some libraries in Japan introduced "Next-L Enju". It is an open-source library management system built on Ruby on Rails and developed by a community of librarians and researchers. Also it is one of the components of "NDL Search" which is a new library catalog provided by National Diet Library, the largest library in Japan. I'd like to talk about why the libraries choose Ruby, and how they develop the library system that includes several million book records. + + Next-L Enju: https://github.com/nabeta/next-l + NDL Search: http://iss.ndl.go.jp/ + ja: |- + 2011年現在、日本ではいくつかの図書館が、オープンソース図書館管理システム「Next-L Enju」を導入しています。「Next-L Enju」はRuby on Railsで書かれており、図書館員や研究者のコミュニティによって開発されています。また「Next-L Enju」は、日本最大の図書館である国立国会図書館が提供する資料検索サービス「国会図書館サーチ」のコンポーネントのひとつとしても採用されています。この発表では、図書館はなぜRubyを選んだか、またどのようにして数千万件の書誌情報を含んだシステムを作ったかを説明します。 + + Next-L Enju: https://github.com/nabeta/next-l + NDL Search: http://iss.ndl.go.jp/ +language: Japanese diff --git a/db/2011/events/16M08.yaml b/db/2011/events/16M08.yaml new file mode 100644 index 00000000..a2cdd4aa --- /dev/null +++ b/db/2011/events/16M08.yaml @@ -0,0 +1,29 @@ +--- +presenters: + - name: + en: MayumiI EMORI(emorima) + ja: "江森 真由美(emorima)" + affiliation: + en: KCS Carrot Corp. / Asakusa.rb + ja: "株式会社 ケーシーエスキャロット / 浅草.rb" + bio: + en: Unit Manager of Development Department, KCS Carrot Corp. + ja: "株式会社ケーシーエスキャロット ユニットマネージャ\n\ + 2004年にRubyを使い始め、CGIKitを経て、2005年 Railsを使い始めました。\n\ + ここ数年は\"mission critical\"なシステム開発をRubyで行っています。" + gravatar: 5c72a69ad460347a01aa05de9915c3e0 +title: + en: |- + Critical mission system implemented in Ruby + ja: |- + Rubyで作った "critical mission" システムについて +abstract: + en: |- + In this lecture, I will introduce the effective points + and the problems which I'd been in the face of, + while implementing mission-critical system in Ruby. + ja: |- + "mission critical" システムを + Rubyで実装する中で、効果的だと感じた点、 + また直面した問題点を説明します。 +language: Japanese diff --git a/db/2011/events/16MDN.yaml b/db/2011/events/16MDN.yaml new file mode 100644 index 00000000..bead2f99 --- /dev/null +++ b/db/2011/events/16MDN.yaml @@ -0,0 +1,7 @@ +--- +title: + en: Yami RubyKaigi(闇Ruby会議) + ja: 闇RubyKaigi +abstract: + en: "(To Be Announced)" + ja: "(To Be Announced)" diff --git a/db/2011/events/16MOP.yaml b/db/2011/events/16MOP.yaml new file mode 100644 index 00000000..dc8a8da8 --- /dev/null +++ b/db/2011/events/16MOP.yaml @@ -0,0 +1,4 @@ +--- +title: + en: Opening + ja: Opening diff --git a/db/2011/events/16S01.yaml b/db/2011/events/16S01.yaml new file mode 100644 index 00000000..8bcb0aed --- /dev/null +++ b/db/2011/events/16S01.yaml @@ -0,0 +1,34 @@ +--- +presenters: + - name: + en: Shota Fukumori (sora_h) + ja: Shota Fukumori (sora_h) + affiliation: + en: Team Pasra + ja: Team Pasra + bio: + en: |- + Youngest Ruby Committer who the most don't know Ruby implementation, + and the 3rd grade part-time Junior High School (the 9th grade) student + who is interested in Ruby. + About me: http://sorah.cosmio.net/ + ja: "トチギ在住の最近「Rubyの実装をもっとも知らないコミッター」三代目を襲名した新米最年少 Ruby コミッター。\n\ + 現役中3 (※ただし不登校)。Team Pasra ( http://pasra.tk/ ) や Ruby 札幌などで日々ゲームとかRubyとかで遊んでます。\n\ + 詳細: http://sorah.cosmio.net/" + gravatar: b99311b48290f8ee37311890a8edfb1d +title: + en: Ruby, that community and me. + ja: "Rubyとそのコミュニティと中学生の私" +abstract: + en: |- + Talk about Ruby and Ruby community from the perspective of Junior High + School and High School students and how I saw Ruby communities before + I joined the community. Finally speculate why students aren't joining + the community and describe why they should join the community. + Note for non-Japanese, All slides are written in English so feel free + to listening. + ja: + "Rubyコミッタとなった自分が昔コミュニティをどう見ていたか、そして自分がRubyコミュニティに参加しどう自分が変わったか、なぜ中高生がたくさんコミュニティにいないのかをふつうの中高生の視点から、解決案を提案します。\n\ + また、中高生がコミュニティに積極的に参加すべき理由などを中高生の目線から考えます。\n\ + テーマ: \"中高生から見たRuby界隈\"" +language: Japanese diff --git a/db/2011/events/16S02.yaml b/db/2011/events/16S02.yaml new file mode 100644 index 00000000..f8e6d7fa --- /dev/null +++ b/db/2011/events/16S02.yaml @@ -0,0 +1,18 @@ +--- +presenters: + - name: + en: Takahiro Sunaga + ja: "須永高浩" + affiliation: + en: The University of Tokyo + ja: + bio: + en: Takahiro Sunaga had studied about Logic and Prolog in undergraduate years.He is in master's course of the University of Tokyo now. + ja: "学部時代は論理学やProlog関係の研究を行う。東京大学大学院の修士課程在学中。" +title: + en: The Real-time Profiler for Ruby + ja: "Ruby用のリアルタイムプロファイラ" +abstract: + en: We developed a real-time execution profiler for Ruby.This profiler is able to get information associating with context informationand only few overheads. In this presentation, we introduce our profiler, and explain the design and implementation. + ja: "Ruby用のリアルタイム実行時間プロファイラを開発した。本プロファイラはコンテキスト情報を含めて取得でき、かつ低いオーバーヘッドで得ることができる。本プレゼンテーションではプロファイラの紹介とともにその実装について詳しく紹介する。" +language: Japanese diff --git a/db/2011/events/16S03.yaml b/db/2011/events/16S03.yaml new file mode 100644 index 00000000..460ca444 --- /dev/null +++ b/db/2011/events/16S03.yaml @@ -0,0 +1,25 @@ +--- +presenters: + - name: + en: Kiyoshi Ikehara + ja: "池原 潔" + affiliation: + en: Hitachi, Ltd. + ja: "(株)日立製作所" + bio: + en: |- + April 2003, System Development Laboratory, Hitachi Ltd. + April 2011, Yokohama Laboratory, Hitachi Ltd. + ja: "2003年4月(株)日立製作所入社、システム開発研究所配属。2011年4月より横浜研究所所属。" +title: + en: Dynamic Component System and Memory Reduction of VM for Embedded Systems + ja: "組込みシステムのための動的コンポーネント機構とVMの最適化" +abstract: + en: |- + Embedded Systems generally have a small amount of memory and don't accept VMs which consume memory excessively. We investigated this problem from both the application side and the VM side, and solved it by introducing a dynamic component system which enables multiple applications to run in a single VM and optimizing CRuby's data structures related to its interpreter. We confirmed that the memory usage of the optimized VM with the web application framework Sinatra was reduced by 20% compared to CRuby 1.9.2. + + (This is a cooperation work with Hitachi Solutions, Ltd. Takeshi Kawajiri, who is a engineer of Ruby Center, gives me a lot of useful advice from the view point of a ruby specialist.) + ja: |- + 組込みシステムは一般にメモリ量が少なく、メモリを過剰に利用するVMは適用で きない。我々はこの問題をアプリケーションとVMの両面から調査し、複数アプリ ケーションの単一VM上での動作を可能とする動的コンポーネント機構と、RubyVM のインタプリタに関わるデータ構造の最適化によって解決した。Webアプリケー ションフレームワークSinatra動作時に、最適化されたVMのメモリ使用量は、 CRuby1.9.2と比べて約20%低減することを確認した。 + (本内容は(株)日立ソリューションと共同で行ったものです。Rubyセンタの川 尻 剛 氏から、Rubyエンジニアの観点からの多くの有用な助言をいただいていま す。) +language: Japanese diff --git a/db/2011/events/16S04.yaml b/db/2011/events/16S04.yaml new file mode 100644 index 00000000..55cad610 --- /dev/null +++ b/db/2011/events/16S04.yaml @@ -0,0 +1,18 @@ +--- +presenters: + - name: + en: Lightweight Ruby Development Team + ja: "軽量Ruby開発チーム" + affiliation: + en: Fukuoka CSK / Network Applied Communication Laboratory / Kyushu Institute of Technology + ja: "福岡CSK / ネットワーク応用通信研究所 / 九州工業大学" + bio: + en: Developers of Lightweight Ruby and Ruby chip for embedded systems + ja: "組込みシステムのための軽量RubyやRubyチップの開発者" +title: + en: Lightweight Ruby + ja: "軽量Ruby" +abstract: + en: We introduce current status of development in Lightweight Ruby and Ruby chip focused on embedded systems. + ja: "組込みシステムでの活用を想定した軽量RubyやRubyチップの開発の現状を紹介する." +language: Japanese diff --git a/db/2011/events/16S05.yaml b/db/2011/events/16S05.yaml new file mode 100644 index 00000000..a6e29213 --- /dev/null +++ b/db/2011/events/16S05.yaml @@ -0,0 +1,34 @@ +--- +presenters: + - name: + en: nari + ja: + affiliation: + en: Network Applied Communication Laboratory + ja: "株式会社ネットワーク応用通信研究所" + bio: + en: |- + I'm GC lover and Ruby commiter. + I'm good at developing GC with RubyKaigi Driven Development(RDD). + My fearful words are "Please revert". + ja: "GC好きのRubyコミッタ。\n\ + RubyKaigi Driven Development(RDD)によるGC開発が得意。\n\ + 怖い言葉は「Revertしてください」" + gravatar: 9f859654c118bcd2f67cc763baf0de7a +title: + en: Parallel world of CRuby's GC + ja: "CRubyGCの並列世界" +abstract: + en: |- + CRuby adopts Mark Sweep GC Algorithm now. + In my presentation, I talk about Parallel Mark Algorithm that improves Mark. + Parallel mark divides a mark phase into a plurality of threads and it parallely execute. + Recentlly, 8 core computers are not rare. + In such an enviroment, GC will be speed up, if it distribute tasks to each core. + In my presentation, I talk Parallel Mark Algorithm and Implemention, Resutl of benchmark. + ja: "CRubyは現在マーク・スイープという方式のGCを採用しています。\n\ + 発表では、そのうちのマークを、並列マークというアルゴリズムに改良した話をします。\n\ + 並列マークというのは簡単に言えば、今までのマークフェーズを複数個のスレッドに分割して、並列的に実行するものです。\n\ + 近年は8コアのPCも珍しくなく、そのようなPCでは複数のコアに処理をばらまくことでGCの高速化が期待できます。\n\ + 今回の発表では、並列マークのアルゴリズムの説明、実装の解説、ベンチマーク結果を述べます。" +language: Japanese diff --git a/db/2011/events/16S06.yaml b/db/2011/events/16S06.yaml new file mode 100644 index 00000000..bf3529c7 --- /dev/null +++ b/db/2011/events/16S06.yaml @@ -0,0 +1,22 @@ +--- +presenters: + - name: + en: Koichi Sasada + ja: "ささだこういち" + affiliation: + en: Graduate School of Infomation Science and Technologies, The University of Tokyo + ja: "東京大学大学院情報理工学系研究科" + bio: + en: CRuby Commiter (VM). + ja: "CRubyコミッタ(VM関連)." +title: + en: Ruby Interpreters in the Parallel Worlds + ja: "並列世界のRuby処理系" +abstract: + en: |- + If you live in a parallel world, it is possible that there is another + version of Ruby interpreter. In this presentation, I will show the such + "different Ruby interpreters". Moreover, I will introduce the suitable + world, and Ruby interpreter for me. + ja: "ちょっと違った世界には,こんな Ruby 処理系があったかもしれません.本発表では,そんなちょっと違った Ruby 処理系の可能性について紹介します.そして,自分としてはこんな世界がいいな, Ruby 処理系があるといいな,というような話をしたいと思います." +language: Japanese diff --git a/db/2011/events/17M01.yaml b/db/2011/events/17M01.yaml new file mode 100644 index 00000000..be0fac23 --- /dev/null +++ b/db/2011/events/17M01.yaml @@ -0,0 +1,21 @@ +--- +presenters: + - name: + en: Kazuhiro NISHIYAMA + ja: "西山和広" + affiliation: + en: Good-Day Inc. + ja: "株式会社 グッデイ" + bio: + en: TBD + ja: "MRIメンテナの一人" +title: + en: How to make secure program + ja: "安全なプログラムの作り方" +abstract: + en: TBD + ja: "コミッタなどとして関わっているソフトウェアの脆弱性修正や\n\ + 脆弱性を IPA へ届出経由で修正してもらった経験をふまえて\n\ + どのようなプログラムを書くと脆弱性を含みやすいのかという\n\ + 話をします。" +language: Japanese diff --git a/db/2011/events/17M02.yaml b/db/2011/events/17M02.yaml new file mode 100644 index 00000000..7882c055 --- /dev/null +++ b/db/2011/events/17M02.yaml @@ -0,0 +1,18 @@ +--- +presenters: + - name: + en: Shin-ichiro OGAWA + ja: "小川 伸一郎" + affiliation: + en: Tokyu.rb + ja: Tokyu.rb + bio: + en: Rails Developer, jpmobile contributer. Ph.D. Physics. + ja: "Railsアプリケーション開発者。jpmobileを開発しています。" +title: + en: The best practice of building mobile website with jpmobile + ja: "jpmobileのベストプラクティス" +abstract: + en: Jpmobile is a most famus Rails plugin for Japanese Mobile Phone. I will introduce the best practice for the construction of the mobile website. In this practice, I will introduce jpmobile settings and the testing method with jpmobile. + ja: "jpmobileを使ったモバイルサイト制作のベストプラクティスを紹介します。スマートフォンから携帯電話まで、簡単なコンテンツを製作する過程で、jpmobileをどう使うのか、どのように設定をしていくのかについて解説していきます。" +language: Japanese diff --git a/db/2011/events/17M03.yaml b/db/2011/events/17M03.yaml new file mode 100644 index 00000000..d20e976d --- /dev/null +++ b/db/2011/events/17M03.yaml @@ -0,0 +1,36 @@ +--- +presenters: + - name: + en: Akira Matsuda + ja: "松田 明" + affiliation: + en: Asakusa.rb + ja: Asakusa.rb + bio: + en: |- + A freelance Railer. + The founder of a Ruby community "Asakusa.rb" http://asakusa.rubyist.net/ + Probably the most active Rails core contributor as a Japanese. + The author of several unique and useful gem/plugins for Rails 3, such as Kaminari, hocus_pocus, i18n_generators, etc. + ja: "フリーランスのRailsプログラマー/コンサルタント。流しのフェロー。\n\ + 地域Rubyコミュニティ\"Asakusa.rb\"発起人。\n\ + Rails 3.x用次世代ページネーションライブラリ\"Kaminari\"、魔法のRailsアプリ開発支援ツール\"hocus_pocus\"、Railsアプリ国際化支援ジェネレーター\"i18n_generators\"等の作者。\n\ + 書籍『Head First Rails』の監訳者。" + gravatar: 76a777ff80f30bd3b390e275cce625bc +title: + en: Ruby on Rails that doesn't hurt + ja: "たのしいRails" +abstract: + en: |- + Rails seems to be super easy and fun at first. Well, actually it is, but I guess you may face some difficulties and lose your passion as you're getting on it because: + * Rails requires you to have wide and deep technical knowledge before and underneath the app development + * Rails requires you to memorize tons of conventions, APIs, commands, plugins, etc. + * Everyone writes about Rails, but 99% of the materials are just rubbish + * Rails flies like an arrow. It's hard to keep you and your apps up-to-date + + So, here are some hints and tips to get over these problems and make your Rails life happy, worthy and sustainable. + + * This talk is not for Rails GURU + ja: "Rails 3.0がリリースされてから約1年間、日々の業務で、個人プロジェクトで、あるいは趣味でRailsをお使いの方も多いことでしょう。 しかし、一見たのしくて簡単に見えるRailsアプリ開発にも様々な障壁があり、必ずしも万人にとって易しいものではないし、最初に感じたたのしさが薄れて苦痛に感じることが増えてくるかもしれません。理由はいくつか考えられるのですが、例えば以下のようなものではないでしょうか。 * 必要とされる前提知識が多すぎてどこから手をつけていいかわからない * 覚えなきゃいけないことが多すぎて覚えきれない * 情報量が多すぎるし、その割に有用な情報が少ない * Rails自体の変化が速すぎてついて行けない\n\ + そこで、本セッションでは、毎日の開発をたのしく、有意義に、そして生産的に持続させるための、自分なりのコツのようなものをお話しします。 なお、本セッションは、Rails初心者?上級者向けです。超上級者の方にとっては、あまり得るものはないかもしれません。" +language: Japanese diff --git a/db/2011/events/17M04.yaml b/db/2011/events/17M04.yaml new file mode 100644 index 00000000..04e948fb --- /dev/null +++ b/db/2011/events/17M04.yaml @@ -0,0 +1,19 @@ +--- +presenters: + - name: + en: Yutaka Hara + ja: "原 悠" + affiliation: + en: Network Applied Communication Laboratory Ltd. + ja: "(株)ネットワーク応用通信研究所" + bio: + en: Rubyist living in Matsue city. Author of the Japanese book "Making Esoteric Languages with Ruby". + ja: "松江市在住のプログラマ。著書「Rubyで作る奇妙なプログラミング言語」、\n\ + WEB+DB PRESS連載「Ruby in your hands」(全6回)。" +title: + en: Road to the Ruby Master + ja: "Rubyマスターへの道" +abstract: + en: How to be a Ruby master (= who can make anything he/she wants with Ruby) + ja: "Rubyをマスターする、つまり、Rubyで自分の作りたいものをなんでも作れるようになるために、何をすればいいか、何に気をつければいいか、あるいは何をすべきでないか。初心者から上級者まで、これであなたも10年後にはRubyマスターだ!" +language: Japanese diff --git a/db/2011/events/17M05.yaml b/db/2011/events/17M05.yaml new file mode 100644 index 00000000..9ccfecf8 --- /dev/null +++ b/db/2011/events/17M05.yaml @@ -0,0 +1,20 @@ +--- +presenters: + - name: + en: Wen-Tien Chang + ja: + affiliation: + en: "Ruby Taiwan & Optimis International" + ja: + bio: + en: "張文鈿 (a.k.a. ihower) is the lead software developer at OptimisDev Taiwan. He has worked with Ruby on Rails since 2006. Also, ihower is the founder of Ruby Taiwan community (http://ruby.tw) and RubyConf Taiwan (http://rubyconf.tw). He currently lives in Taipei, blogs at ihower.tw and tweets as @ihower." + ja: + gravatar: c38fd9074fb072551c0ff80ccd90d24e +title: + en: "BDD style Unit Testing" + ja: +abstract: + en: "RSpec is a Behaviour-Driven Development tool for Ruby programmers, and it's popular in many Ruby and Rails projects. MiniTest is the new standard unit testing framework supplied with Ruby 1.9, and it also includes a compact BDD DSL syntax like RSpec. Both of them provide readable and expressive syntax to write test/spec code.\n\n\ + This talk will introduce their BDD syntax and its mocks feature. More important, how do we use it to write good unit testing." + ja: +language: English diff --git a/db/2011/events/17M06.yaml b/db/2011/events/17M06.yaml new file mode 100644 index 00000000..43964077 --- /dev/null +++ b/db/2011/events/17M06.yaml @@ -0,0 +1,29 @@ +--- +presenters: + - name: + en: Kyosuke MOROHASHI + ja: "諸橋 恭介" + affiliation: + en: Eiwa System Mangement, Inc. + ja: "(株)永和システムマネジメント" + bio: + en: Ruby/Rails Programmer. Love TDD/BDD. + ja: "SIerでRuby/Railsプログラマーをやっています。TDD(BDD)が好きです。" + gravatar: 70e13d9877054026fda46d5a5b53a236 +title: + en: 5 years know-how of RSpec driven Rails app. development. + ja: +abstract: + en: |- + I talk about know-how of using RSpec in Rails project. + + Currently, it has became good idea that a project, developing with Rails, use RSpec(or so) and try TDD. + + However there is no silver bullet to gain testability of application and/or maitenancability of tests. + + I will talk about such know-how acquired through 5 years real world Rails project. + ja: "Ruby on Railsを使ったプロジェクトにおいて、RSpecでテストを書きながら開発を進めていくノウハウについてお話しします。\n\n\ + 現在、Railsを使った開発プロジェクトでは「RSpecなどによるテスト駆動開発をしたほうがよい」という考え方が極めて一般的なものになっています。RailsやRSpecのツールとしての使い方を照会している、書籍や良質なWebサイトも数多く存在します。\n\n\ + それでも、テストしやすい設計や、メンテナンスしやすいテストの書き方などのノウハウには唯一の正解などがあるものではありません。RailsやRSpec自体やそれを取り巻くテスティングツールもどんどん変化していきますし、方法論も変わっていきます。\n\n\ + この講演では、そのような変化とともにそれなりの期間RailsとRSpecでアプリケーションを作ってきた経験から見いだしたノウハウを紹介したいと思っています。" +language: Japanese diff --git a/db/2011/events/17M07.yaml b/db/2011/events/17M07.yaml new file mode 100644 index 00000000..473ff916 --- /dev/null +++ b/db/2011/events/17M07.yaml @@ -0,0 +1,28 @@ +--- +presenters: + - name: + en: Chris Kowalik + ja: + affiliation: + en: Developer at Cubox + ja: + bio: + en: |- + Chris Kowalik (Developer at Cubox) + Chris is Polish developer, Open Source contributor, BSD and Arch Linux + enthusiast and inline-skating + addict. He works with Ruby, Python and C++ for many years, he plays + with *nix systems since got the first + computer, and he is typical optimization monster. Currently he live in + Montevideo (Uruguay) and work for + the Cubox company at Ruby, Rails and C++ stuff. + Check out his stuff on github profile: http://github.com/nu7hatch + ja: +title: + en: Efficient JavaScript integration testing with Ruby and V8 engine. + ja: +abstract: + en: This presentation will introduce you V8 JavaScript engine and Mike - the headless browser based on it. V8 is open source, high performance JavaScript engine written in C++, used i.a. by Google Chrome and Node.JS. V8 enables any C/C++ application to expose its own objects and functions to JavaScript code. Thanks to this we could build our own, efficient, headless browser for testing purposes. This presentation for sure will change your life by showing you how easy and fast can be integration testing thanks to V8 and Mike goodies. + ja: +language: English +gravatar: 52026b2d24e49cb5483e4922f0eddd40 \ No newline at end of file diff --git a/db/2011/events/17M08.yaml b/db/2011/events/17M08.yaml new file mode 100644 index 00000000..f2cab3ac --- /dev/null +++ b/db/2011/events/17M08.yaml @@ -0,0 +1,21 @@ +--- +presenters: + - name: + en: Yehuda Katz + ja: + affiliation: + en: Strobe Inc. + ja: + bio: + en: "Yehuda Katz is a member of the SproutCore, Ruby on Rails and jQuery Core Teams; during the daytime, he works as Chief Technologist at Strobe. Yehuda is the co-author of the best-selling jQuery in Action, the upcoming Rails 3 in Action, and is a contributor to Ruby in Practice. He spends most of his time hacking on open source―his main projects, along with others, like Thor, Handlebars and Janus―or traveling the world doing evangelism work. He blogs at http://yehudakatz.com and can be found on Twitter as @wycats." + ja: + gravatar: 428167a3ec72235ba971162924492609 +title: + en: "Advancing Net::HTTP" + ja: +abstract: + en: "Net::HTTP is a great Ruby HTTP library. In this talk, I will cover some improvements I have made to Net::HTTP in order to add support for nonblocking reads, even in HTTP requests that use gzip, Transfer-Encoding: Chunked and keepalive. + +I will also talk about how nonblocking IO and network libraries can be used with a pure-Ruby reactor to enable scoped parallel IO in a single thread, and how we can improve existing Ruby network libraries to enable async operation." + ja: +language: English diff --git a/db/2011/events/17M09.yaml b/db/2011/events/17M09.yaml new file mode 100644 index 00000000..2a99183d --- /dev/null +++ b/db/2011/events/17M09.yaml @@ -0,0 +1,19 @@ +--- +presenters: + - name: + en: Kakutani Shintaro + ja: "角谷 信太郎" + affiliation: + en: Nihon Ruby-no-kai(Japan Ruby Group), Eiwa System Management, Inc. + ja: "日本Rubyの会, (株)永和システムマネジメント" + bio: + en: "Kakutani Shintaro is a just another strong Ruby proponent, chief programmer in Eiwa System Management, Inc and board member of Nihon Ruby-no-kai(Japan Ruby Group). He is one of the organizers of RubyKaigi since 2006. He have translated some english technical book into japanese: \"Agile Samurai\"(supervisor), \"Agile Estimating and Planning\"(co-translator), \"Interface Oriented Design\"(supervisor), \"Practices of an Agile Developer\"(co-supervisor) and \"From Java to Ruby\"(translator)." + ja: "ただのRuby厨。(株)永和システムマネジメントサービスプロバイディング事業部チーフプログラマ。日本Rubyの会理事。RubyKaigiの運営を2006年からやってます。著書は『アジャイルな見積りと計画づくり』(共同翻訳)、『インターフェイス指向設計』(監訳)、『アジャイルプラクティス』(共同監訳)、『JavaからRubyへ』(翻訳)。最新刊の『The Agile Samurai』(監訳)が RubyKaigi 2011 の頃には出版されているはず。" + gravatar: 63a6bff89d692e21de20868202bc8dde +title: + en: "The Gate" + ja: "The Gate" +abstract: + en: "(To Be Announced)" + ja: "(To Be Announced)" +language: "Japanese" diff --git a/db/2011/events/17M10.yaml b/db/2011/events/17M10.yaml new file mode 100644 index 00000000..e2781d92 --- /dev/null +++ b/db/2011/events/17M10.yaml @@ -0,0 +1,5 @@ +--- +title: + en: Lightning talks 1 + ja: Lightning talks 1 +sub_event_ids: [] diff --git a/db/2011/events/17S01.yaml b/db/2011/events/17S01.yaml new file mode 100644 index 00000000..0c601058 --- /dev/null +++ b/db/2011/events/17S01.yaml @@ -0,0 +1,21 @@ +--- +presenters: + - name: + en: Elise Huard + ja: + affiliation: + en: Jabberwocky + ja: + bio: + en: "In the last 11 years, Elise’s been rolling through jobs in C, C++, Java, a master in AI, before falling in love with Ruby and going freelance. Her experience in software development have helped her get a firm understanding on what works, what doesn’t, and what will make you cry bloody tears on nights before deadlines.\n\n\ + She’s a jack of all trades, loves reading, tinkering, food, travel, learning, and people out of the ordinary." + ja: +title: + en: Actors on stage + ja: +abstract: + en: |- + In view of the recent hardware developments , programmers should start focusing on enabling their programs for parallel execution. The actor model is one promising model to handle concurrency and parallellism easily. + This talk discusses several options to use actors in Ruby. + ja: +language: English diff --git a/db/2011/events/17S02.yaml b/db/2011/events/17S02.yaml new file mode 100644 index 00000000..f8b6437e --- /dev/null +++ b/db/2011/events/17S02.yaml @@ -0,0 +1,22 @@ +--- +presenters: + - name: + en: Masatoshi SEKI + ja: "関将俊" + affiliation: + en: druby.org + ja: + bio: + en: Programmer. Author of ERB, dRuby and Rinda. + ja: "プログラマ。ERB, dRuby, Rindaの作者。ポケモンWCS2010栃木県代表(カード部門)。" +title: + en: "Drip: Persistent tuple space and stream." + ja: "Drip: Persistent tuple space and stream." +abstract: + en: |- + It's been several years since I last published `Rinda::TupleSpace`, the persistence layer on top of Rinda, the multi-process coordination library. In this talk I will reexamine the pros and cons of Rinda and introduce the next generation streaming-orientated multi-process synchronisation library called "Drip". + ja: |- + Rinda::TupleSpaceの永続化機能の発表から数年たちました。 + 本講演では永続版Rindaの反省と、その中から生まれた + ストリーム指向同期機構 Drip を紹介します。 +language: Japanese diff --git a/db/2011/events/17S03.yaml b/db/2011/events/17S03.yaml new file mode 100644 index 00000000..441226e5 --- /dev/null +++ b/db/2011/events/17S03.yaml @@ -0,0 +1,21 @@ +--- +presenters: + - name: + en: Eric Hodel + ja: + affiliation: + en: Seattle Ruby Brigade, AT&T Interactive + ja: + bio: + en: |- + Eric Hodel has been a Rubyist for nearly a decade. He became a committer to + ruby by writing documentation. Eric now maintains RDoc and RubyGems and is a + founder of the Seattle Ruby Brigade. + ja: +title: + en: Writing Friendly Libraries + ja: +abstract: + en: Writing Friendly Libraries will cover how to write libraries that are easy to use, extend and maintain. My talk will cover techniques such as using plugin systems for extensibility and adding optional features. I will also cover testing strategies and other tools to ease maintenance of software. + ja: +language: English diff --git a/db/2011/events/17S04.yaml b/db/2011/events/17S04.yaml new file mode 100644 index 00000000..4d82e46d --- /dev/null +++ b/db/2011/events/17S04.yaml @@ -0,0 +1,18 @@ +--- +presenters: + - name: + en: Richard Huang + ja: + affiliation: + en: OpenFeint + ja: + bio: + en: "Richard Huang (a.k.a flyerhzm) is the senior rails engineer at OpenFeint. He currently lives in Beijing, he is the maintainer of rails_best_practices project, you can find more interesting projects on his github: https://github.com/flyerhzm" + ja: +title: + en: Use rails_best_practices to refactor your rails codes + ja: +abstract: + en: Using rails_best_practices gem can help you find bad smells in your rails codes, and tells you how to improve the codes quality. I will give you an in-depth exploration of rails_best_practices + ja: +language: English diff --git a/db/2011/events/17S05.yaml b/db/2011/events/17S05.yaml new file mode 100644 index 00000000..c3622d13 --- /dev/null +++ b/db/2011/events/17S05.yaml @@ -0,0 +1,18 @@ +--- +presenters: + - name: + en: Hidetoshi NAGAI + ja: 永井 秀利 + affiliation: + en: Kyushu Institute of Technology / Rubyist Kyushu + ja: 九州工業大学 / Rubyist九州 + bio: + en: "Hidetoshi NAGAI is a developer of Ruby/Tk. Ruby is a favorite tool for data processing on his research work (which doesn't belong to the domain of software engineering)." + ja: "永井秀利 (永井@知能.九工大) は Ruby/Tk の開発者である.Ruby は彼の本業の研究 (ソフトウェア工学の分野ではない) でのデータ処理の際のお気に入りの道具となっている." +title: + en: Improvement of ThreadGroup class and its usage + ja: ThreadGroupクラスの強化とその利用法 +abstract: + en: "ThreadGroup class, which is one of the embedded classes of Ruby, is useful for managing sets of threads. Although a ThreadGroup object should have advantages over a simple list of threads, it hasn't had enough methods to do that. In this presentation, I'll introduce details and intentions of improving ThreadGroup with some usages." + ja: "Rubyの組み込みクラスの一つであるThreadGroupは,thread集合を扱う際に有用なものである.threadを単純に集めたものを上回る活用が可能であるはずだが,従来は操作メソッドが十分に充実しているとは言えなかった.本発表では,ThreadGroup強化の内容と意図とを,用例を交えながら紹介する." +language: Japanese diff --git a/db/2011/events/17S06.yaml b/db/2011/events/17S06.yaml new file mode 100644 index 00000000..3cd96184 --- /dev/null +++ b/db/2011/events/17S06.yaml @@ -0,0 +1,18 @@ +--- +presenters: + - name: + en: Shugo Maeda + ja: "前田 修吾" + affiliation: + en: Network Applied Communication Laboratory Ltd. + ja: "株式会社ネットワーク応用通信研究所" + bio: + en: a Ruby committer + ja: "Rubyコミッタ" +title: + en: How to read JIS X 3017 + ja: "JIS X 3017の読み方" +abstract: + en: JIS X 3017 is the Japanese national standard of the Ruby programming language. This talk explains why the standard and Ruby itself are so complex. + ja: "JIS X 3017はプログラミング言語Rubyの日本国内規格である。この講演では,この規格及びRuby自身がなぜかくも複雑であるかを説明する。" +language: Japanese diff --git a/db/2011/events/17S07.yaml b/db/2011/events/17S07.yaml new file mode 100644 index 00000000..d094ce8a --- /dev/null +++ b/db/2011/events/17S07.yaml @@ -0,0 +1,38 @@ +--- +presenters: + - name: + en: Thomas E Enebo + ja: + affiliation: + en: jruby.org / Engine Yard + ja: + bio: + en: Thomas Enebo has been a practitioner of Java for over a decade and he is the co-lead of the JRuby project. Thomas has also been happily using Ruby since 2001. In addition to working on JRuby, Tom is interested in improving the state of alternative languages on the Java Virtual Machine. Tom is employed working on JRuby full time at Engine Yard. + ja: + - name: + en: Koichiroo Ohba + ja: 大場光一郎 + affiliation: + en: + ja: + bio: + en: "He is developing a cloud platform service with JRuby for his company. A member of JRuby user meetup. He was the organizer of JRubyKaigi 2010 and is a staff of JRubyKaigi 2011." + ja: "JRubyを使ってクラウドプラットフォームを開発している。日本JRubyユーザー会でJRubyKaigi 2010実行委員長でJRubyKaigi 2011のスタッフ。" + +title: + en: "Java in Ruby: Scripting Java in JRuby" + ja: +abstract: + en: |- + One major benefit of JRuby is the ability to import Java classes and then use them as if they were POROs (Plain Old Ruby Objects). This feature makes Java fun again. You can pull in legacy code and sculpt an API which fits nicely into your Ruby code. You can access novel or robust Java libraries to bridge a gap in existing Ruby libraries. + + This talk will: + + * Show basics of interacting with Java classes from within Ruby + * Implementing Java interfaces with Ruby blocks and classes + * Point out Gotchas + * Give style hints to make Java APIs fit better into the Ruby way + + By the end of this talk you should be able to effectively consume Java libraries in Ruby in a way that is satisfying and useful. + ja: +language: English diff --git a/db/2011/events/17S08.yaml b/db/2011/events/17S08.yaml new file mode 100644 index 00000000..b784505d --- /dev/null +++ b/db/2011/events/17S08.yaml @@ -0,0 +1,28 @@ +--- +presenters: + - name: + en: Kouji Takao + ja: "高尾宏治" + affiliation: + en: "Network Applied Communication Laboratory Ltd." + ja: "株式会社ネットワーク応用通信研究所" + bio: + en: |- + Kouji Takao is one of the commiter of MRI. + He is maintener of Readline of Ruby. + ja: "MRIメンテナの一人。担当はReadlineライブラリです。" +title: + en: MacRuby on Rails + ja: "MacRuby on Rails 〜MacRubyから見たcRuby〜" +abstract: + en: "MacRuby is an implementation of Ruby 1.9 that is directly on top of Mac OS X core technologies. Recently, MacRuby has become viable as a tool for developing useful desktop applications for Mac OS X. + + However, as of March 2011, MacRuby is still missing some functionality that is present in cRuby. Therefore, MacRuby is not able to run Ruby on Rails. + + In my presentation, I will explain how I modified MacRuby to make it a suitable foundation for running Rails. I would also like to explain some of technical intricacies that I discovered along the way." + ja: "2011年3月時点でのMacRubyはRuby処理系としての完成度は低く、Ruby on\n\ + Railsが到底動作するようには思えない。しかしながら、MacRubyに対して改良\n\ + に改良を重ねることできっとRailsを動作させることができる(はずである)。\n\n\ + 本発表ではMacRubyでRailsを動作させるために必要だった修正内容とともに、\n\ + その過程であらためて知ることになったcRubyのすばらしさを説明します。" +language: Japanese diff --git a/db/2011/events/17S09.yaml b/db/2011/events/17S09.yaml new file mode 100644 index 00000000..b50aea64 --- /dev/null +++ b/db/2011/events/17S09.yaml @@ -0,0 +1,32 @@ +--- +presenters: + - name: + en: Shumpei Akai + ja: "赤井駿平" + affiliation: + en: Tokyo Institute of Technology + ja: "東京工業大学" + bio: + en: Ph.D. student in Dept. of Mathematical and Computing Sciences at Tokyo Institute of Technology + ja: "しがない博士課程の学生.プログラミング言語とかモジュール化とかを研究." + gravatar: a129af622d3faa2c90d448401a3f6faa +title: + en: "Method Shelters : Another Way to Resolve Class Extension Conflicts" + ja: "Method Shelters : Classboxes でも Refinements でもない別のやり方" +abstract: + en: |- + "Open Class" instroduces + huge flexibility into Ruby, but it also introducse risk of class + extension conflicts. + To address this problem, some module systems including Classboxes and + Refinements were proposed. + However, these existing systems have some problems or limitations. + This presentation proposes new module system named "Method Shelters" and + shows difference between Method Shelters and other systems. + ja: |- + オープンクラスにより,Ruby は 多大な言語の柔軟性を獲得した. + しかし,これにより同名のメソッドが衝突する危険性も孕んでしまった. + この問題を解決するするために,Classboxes や Refinements が提案されたが,これらには問題や制限が有る. + この発表では,新たなモジュールシステムである "Method Shelters" を提案し, + 既存のシステムとの差異を述べる. +language: Japanese diff --git a/db/2011/events/17S10.yaml b/db/2011/events/17S10.yaml new file mode 100644 index 00000000..dc196467 --- /dev/null +++ b/db/2011/events/17S10.yaml @@ -0,0 +1,28 @@ +--- +presenters: + - name: + en: KOSAKI Motohiro + ja: "小崎資広" + affiliation: + en: Fujitsu + ja: "富士通" + bio: + en: I'm Linux kernel developer and Ruby commiter. I'm interest performance improvement and platform depended issue fixing. + ja: "Rubyコミッタ。世界的にもめずらしいLinuxカーネル開発者とのデュアルクラス。IOとかロックのようなRuby言語知らなくてもハックできるあたりに主に生息している。最近「Rubyをもっとも知らないコミッタ」の称号を奪われてしょんぼりしているらしい" +title: + en: CRuby lock design improvement and why it sucks + ja: "CRubyのロックデザインの解説および改善案について" +abstract: + en: |- + Many people believe Ruby 1.9 is faster than 1.8. + But it's not always true. More unfortunately, + recent cpu improvement bring some new issue to CRuby lock implementation. + This presentation try to figure the issue of a lock + design in CRuby and talk an advance plan. + ja: |- + Ruby 1.9ではネイティブスレッドの採用とそれによる高速化が喧伝されてきたが、 + 場合によっては有効に動かない時がある。 + また Core i7等の近年のCPUの性能特性と相性の悪いアルゴリズムを採用している箇所があり、 + 新しいハードウェアを買うと悲しい思いをすることがありうる。 + 本発表では、CRubyのGVL(Global VM Lock)とMutex.lock メソッドの問題点、および改善案について解説する +language: Japanese diff --git a/db/2011/events/18M01.yaml b/db/2011/events/18M01.yaml new file mode 100644 index 00000000..7be9afd0 --- /dev/null +++ b/db/2011/events/18M01.yaml @@ -0,0 +1,39 @@ +--- +presenters: + - name: + en: Masayoshi Takahashi + ja: "高橋征義" + affiliation: + en: Tatsu-zine,Inc., Nihon Ruby-no-kai(Japan Ruby Group) + ja: "(株)達人出版会, 日本Rubyの会" + bio: + en: "(To Be Announced)" + ja: "(To Be Announced)" + gravatar: 21a4b941766d805333e11c5766be43b4 + - name: + en: okkez + ja: okkez + affiliation: + en: Rurema Project(Ruby Reference Manual Renewal Project) + ja: "るりまプロジェクト" + bio: + en: A Rubyist. + ja: "大阪出身の Rubyist です。今はさいたま市に住んでいます。" + gravatar: 9673ac7770ee09f76ff5d839820db157 + - name: + en: Sunao Tanabe + ja: Sunao Tanabe + affiliation: + en: "" + ja: "" + bio: + en: + ja: + gravatar: 77a29c830c1974513a335accf5cf41a1 +title: + en: Ruby-no-kai Itself and Some Related Projects. + ja: "一般社団法人日本Rubyの会と関連プロジェクト報告(るびま,るりま)" +abstract: + en: "(To Be Announced)" + ja: "(To Be Announced)" +language: Japanese diff --git a/db/2011/events/18M03.yaml b/db/2011/events/18M03.yaml new file mode 100644 index 00000000..709cf9d3 --- /dev/null +++ b/db/2011/events/18M03.yaml @@ -0,0 +1,42 @@ +--- +presenters: + - name: + en: Koji Shimada + ja: "島田 浩二" + affiliation: + en: EnishiTech Inc., RubySapporo, Nihon Ruby-no-kai + ja: "株式会社えにしテック、Ruby札幌、日本Rubyの会" + bio: + en: "Koji Shimada (Enishi Tech Inc.)\n\ + The President & CEO of Enishi Tech Inc., board member of Nihon Ruby-no-kai(Japan Ruby Group) and Founder of RubySapporo.\n\ + Wrote the book \"Ruby逆引きレシピ\" (with other authors, published by SHOEISHA) and translated Neal Ford's \"ProductiveProgrammer\" into Japanese (supervisor, The Japanese version, \"プロダクティブ・プログラマ\" was published by O'Reilly Japan)." + ja: "島田 浩二(株式会社えにしテック)\n\ + 株式会社えにしテック代表取締役。日本Rubyの会理事。Ruby札幌主宰。\n\ + 著書は『Ruby逆引きレシピ』(共著、翔泳社)、『プロダクティブ・プログラマ』(監訳、オライリージャパン)" + gravatar: 941b170e5a115a295cccb5f5cdf0a800 + - name: + en: TOSHIAKI Koshiba + ja: "こしば としあき" + affiliation: + en: "株式会社ECナビ|TokyoRubyKaigi05 Chairman" + ja: "株式会社ECナビ|東京Ruby会議05実行委員長" + bio: + en: "Software Engineer. like: Excel, Ruby, UML, DFD, Agile Development, Project Facilitation" + ja: "ソフトウェアエンジニア。好きなもの: Excel, Ruby, UML, DFD, アジャイルなソフトウェア開発を進める事, プロジェクトファシリテーション" + - name: + en: Kakutani Shintaro + ja: "角谷 信太郎" + affiliation: + en: Nihon Ruby-no-kai(Japan Ruby Group), Eiwa System Management, Inc. + ja: "日本Rubyの会, (株)永和システムマネジメント" + bio: + en: "Kakutani Shintaro is a just another strong Ruby proponent, chief programmer in Eiwa System Management, Inc and board member of Nihon Ruby-no-kai(Japan Ruby Group). He is one of the organizers of RubyKaigi since 2006. He have translated some english technical book into japanese: \"Agile Samurai\"(supervisor), \"Agile Estimating and Planning\"(co-translator), \"Interface Oriented Design\"(supervisor), \"Practices of an Agile Developer\"(co-supervisor) and \"From Java to Ruby\"(translator)." + ja: "ただのRuby厨。(株)永和システムマネジメントサービスプロバイディング事業部チーフプログラマ。日本Rubyの会理事。RubyKaigiの運営を2006年からやってます。著書は『アジャイルな見積りと計画づくり』(共同翻訳)、『インターフェイス指向設計』(監訳)、『アジャイルプラクティス』(共同監訳)、『JavaからRubyへ』(翻訳)。最新刊の『The Agile Samurai』(監訳)が RubyKaigi 2011 の頃には出版されているはず。" + gravatar: 63a6bff89d692e21de20868202bc8dde +title: + en: "All About RubyKaigi Ecosystem" + ja: "All About RubyKaigi Ecosystem" +abstract: + en: "(To Be Announced)" + ja: "(To Be Announced)" +language: Japanese diff --git a/db/2011/events/18M05.yaml b/db/2011/events/18M05.yaml new file mode 100644 index 00000000..9ec70364 --- /dev/null +++ b/db/2011/events/18M05.yaml @@ -0,0 +1,26 @@ +--- +presenters: + - name: + en: SHIBATA Hiroshi + ja: "柴田博志" + affiliation: + en: Eiwa System Management, Inc./asakusa.rb + ja: "永和システムマネジメント/asakusa.rb" + bio: + en: He is a programmer in Eiwa System Management,Inc. member of Japanese Society for Quality Control (JSQC). His lifework is to develop Rails ap plication and tDiary(The tsukkomi oriented weblog). + ja: "サービスプロバイディング事業部プログラマ、品質管理学会 正会員、Rails を使った業務システムや tDiary という Web 日記システムを作っています。" + gravatar: eabad423977cfc6873b8f5df62b848a6 +title: + en: The Art of "Legacy" Ruby Code Maintainance + ja: "Ruby遺産とレガシーコード修理技術" +abstract: + en: |- + A remarkable feature of the Japanese Ruby is that we have many Ruby applications, the heritage of Ruby, before Rails. + + To be confronted with the heritage of Ruby, we need powerful arms: method of test for softwares that haven't test, knowledge of anti-pattern in legacy code programming and support tools for scare of coding. + + In my talk, I discuss to continuous maintenance technique and methodology for pandora's box, especially Ruby. + ja: "日本のRubyの大きな特徴は、Rails以前に作られたRubyアプリケーション、すなわち「Ruby遺産」が存在することです。\n\ + 私たちが Ruby 遺産と向き合うには、テストのないソフトウェアをテストする方法、レガシーコードをプログラミングする時のアンチパターンに関する知識、プログラミングを不安から守る道具など、様々なことを学ぶ必要があります。\n\ + 発表では、Ruby 遺産を保守し続けるために必要な技術と方法についてご紹介します。" +language: Japanese diff --git a/db/2011/events/18M06.yaml b/db/2011/events/18M06.yaml new file mode 100644 index 00000000..e904c94f --- /dev/null +++ b/db/2011/events/18M06.yaml @@ -0,0 +1,20 @@ +--- +presenters: + - name: + en: "Kouhei Sutou" + ja: "須藤功平" + affiliation: + en: ClearCode Inc. / COZMIXNG + ja: "株式会社クリアコード / COZMIXNG" + bio: + en: He is the president of ClearCode Inc. He is also a developer of RSS Parser, Rabbit, rcairo, Ruby-GNOME2,test-unit 2.x, rroonga, rurema-search, ActiveLdap, ActiveSambaLdap, Ruby and more free softwares. + ja: "株式会社クリアコード代表取締役。RSS ParserとRabbitとrcairoとRuby-GNOME2とtest-unit 2.xとrroongaとるりまサーチとActiveLdapとActiveSambaLdapとRubyなどのフリーソフトウェア開発者。" + gravatar: 2d9386b1504e581be390af978e05a8b9 +title: + en: How to create a testing framework + ja: "テスティングフレームワークの作り方" +abstract: + en: This talk is about design decisions on creating a testing framework. It is based on talker's experience by creating a few testing frameworks. This talk will not be useful for many people. But for people creating a library may be useful. A testing framework is also a library. Design decisions about a testing framework are applicable to libraries. + ja: "いくつかテスティングフレームワークを作ってきた経験から、テスティングフレームワークを作る場合の設計判断について話します。\n\n\ + 多くの人はテスティングフレームワークを作ることはないはずなので、あまり役に立たないと思うかもしれません。実際、多くの人にとってはそうでしょう。しかし、ライブラリを作る人には役立つかもしれません。テスティングフレームワークも「ユーザが開発者」であるライブラリの一種です。テスティングフレームワークがユーザである開発者をどう捉えていて、どのように支援したいかと考えることは多くのライブラリでも重要な問題です。" +language: Japanese diff --git a/db/2011/events/18M07.yaml b/db/2011/events/18M07.yaml new file mode 100644 index 00000000..fe0e2873 --- /dev/null +++ b/db/2011/events/18M07.yaml @@ -0,0 +1,19 @@ +--- +presenters: + - name: + en: Hirotsugu Asari + ja: "浅里 洋嗣" + affiliation: + en: Engine Yard, Inc. + ja: + bio: + en: Hiro Asari is a JRuby Support Engineer at Engine Yard. He is also a JRuby committer. Ruby has freed him from his past professional life as a database administrator and as a hobbyist Perl hacker. + ja: + gravatar: 40e5e9fe36a1f85166493faac2c17499 +title: + en: Know Ruby, will travel + ja: "Rubyを持て、世界に出よう!" +abstract: + en: What does it take to work as a Ruby engineer outside of Japan? We will discuss the language and legal barriers, as well as how to find the right job. + ja: "Ruby on Railsホスティングサービスで知られるEngine Yard社で 働く話者が、日本国外で働く事について、言葉、法律の面、チャンスの掴み方など、経験に基づいてアドバイスします。" +language: Japanese diff --git a/db/2011/events/18M08.yaml b/db/2011/events/18M08.yaml new file mode 100644 index 00000000..a6b74c0d --- /dev/null +++ b/db/2011/events/18M08.yaml @@ -0,0 +1,26 @@ +--- +presenters: + - name: + en: Koji Shimada + ja: "島田 浩二" + affiliation: + en: Enishi Tech Inc., RubySapporo, Nihon Ruby-no-kai + ja: "株式会社えにしテック、Ruby札幌、日本Rubyの会" + bio: + en: "Koji Shimada (Enishi Tech Inc.)\n\ + The President & CEO of EnishiTech Inc., board member of Nihon Ruby-no-kai(Japan Ruby Group) and Founder of RubySapporo.\n\ + Wrote the book \"Ruby逆引きレシピ\" (with other authors, published by SHOEISHA) and translated Neal Ford's \"ProductiveProgrammer\" into Japanese (supervisor, The Japanese version, \"プロダクティブ・プログラマ\" was published by O'Reilly Japan)." + ja: "島田 浩二(株式会社えにしテック)\n\ + 株式会社えにしテック代表取締役。日本Rubyの会理事。Ruby札幌主宰。\n\ + 著書は『Ruby逆引きレシピ』(共著、翔泳社)、『プロダクティブ・プログラマ』(監訳、オライリージャパン)" + gravatar: 941b170e5a115a295cccb5f5cdf0a800 +title: + en: "You must unlearn what you have learned: revisited" + ja: "Ruby の教えてくれたこと" +abstract: + en: |- + I challenged talking about "Quality of Ruby" and what I had learnt from Ruby in SapporoRubyKaigi03. + This talk explains about the theme again in the place of RubyKaigi that kept giving the chance to which I grow up every year and becomes the end this year. + ja: "わたしは札幌Ruby会議03で「Ruby の教えてくれたこと」というタイトルで Ruby に対してわたしが感じている\"良さ\"とそれと触れ合う中で学んだ大切ないくつかのことについて発表を行いました。\n\ + 本セッションでは、毎年わたしが毎年成長するきっかけを与え続けてくれた、そして今年で最後となる RubyKaigi の場で、札幌Ruby会議03でお話しした内容について考察しなおし、今のわたしなりの言葉で改めて発表させていただきたいと思います。" +language: Japanese diff --git a/db/2011/events/18M09.yaml b/db/2011/events/18M09.yaml new file mode 100644 index 00000000..07df0ab4 --- /dev/null +++ b/db/2011/events/18M09.yaml @@ -0,0 +1,5 @@ +--- +title: + en: Lightning talks 2 + ja: Lightning talks 2 +sub_event_ids: [] diff --git a/db/2011/events/18M10.yaml b/db/2011/events/18M10.yaml new file mode 100644 index 00000000..b4b50d87 --- /dev/null +++ b/db/2011/events/18M10.yaml @@ -0,0 +1,19 @@ +--- +presenters: + - name: + en: Yukihiro "Matz" Matsumoto + ja: まつもとゆきひろ + affiliation: + en: + ja: + bio: + en: + ja: + gravatar: 0ec4920185b657a03edf01fff96b4e9b +title: + en: "Keynote" + ja: +abstract: + en: + ja: +language: Japanese diff --git a/db/2011/events/18MCL.yaml b/db/2011/events/18MCL.yaml new file mode 100644 index 00000000..14e1c5c3 --- /dev/null +++ b/db/2011/events/18MCL.yaml @@ -0,0 +1,4 @@ +--- +title: + en: Closing + ja: Closing diff --git a/db/2011/events/18S01.yaml b/db/2011/events/18S01.yaml new file mode 100644 index 00000000..a292d41f --- /dev/null +++ b/db/2011/events/18S01.yaml @@ -0,0 +1,18 @@ +--- +presenters: + - name: + en: ANDO Yasushi + ja: "あんどうやすし" + affiliation: + en: Seesaa Inc. + ja: "シーサー株式会社" + bio: + en: ANDO Yasushi is a web developer at Seesaa Inc. + ja: "シーサー株式会社で最近はiPhoneアプリやAndroidアプリを開発してます。" +title: + en: Parse.y Famtour + ja: "parse.yの歩き方" +abstract: + en: I'd like to introduce how to add your own syntax to the ruby language. Although someone says parse.y defining syntax of the ruby language is ugly and incomprehensible, in my humble opinion you can modify the ruby's syntax without comprehensive understanding of parse.y. + ja: "Rubyにオレオレ文法を足す方法を紹介します。Rubyの文法が定義されているparse.yは魔窟と呼ばれるほど複雑怪奇です。本発表ではparse.yを完全に理解することを潔く諦めた人が、よく分からないままparse.yに手を入れてちょっとした文法を足してみるためのプロセスについて紹介します。プログラムの構造を理解する一番簡単な方法は、動作するプログラムを少しずついじりながらどのように動作が変わるかを見てみることです。parse.yの理解を諦めいきなりそのものを弄ってみることで逆にparse.yの理解が進み、コミッターへの道が開かれるかもしれません。言語に新しい文法を追加するというと非常に高度なスキルが必要だと思われがちですが、ちょっとしたネタ文法であれば既存のコードからよく似た部分を見つけてきて改造するだけで実現できるということを理解していただき、オレオレ文法を含むRubyが増えることを期待しています" +language: Japanese diff --git a/db/2011/events/18S02.yaml b/db/2011/events/18S02.yaml new file mode 100644 index 00000000..e27168c6 --- /dev/null +++ b/db/2011/events/18S02.yaml @@ -0,0 +1,31 @@ +--- +presenters: + - name: + en: ucnv + ja: + affiliation: + en: Independent + ja: + bio: + en: |- + ucnv is a web developer and visual artist based in Tokyo. In 2009, he + developed a Ruby library to make broken videos, named AviGlitch. He + spends a lot of time destroying images or videos. He uses these broken + things for visual live performances, VJs and music videos. + ja: "ウェブプログラマー、グリッチ映像なども作ります。" +title: + en: Visual Glitch, using Ruby + ja: +abstract: + en: |- + The "visual glitch" is an artifact view of corrupted image/video data. + Some art people say that "true" glitch can't be reproduced, but I + think they are just unfamiliar with how computers work. + We, programmers, can learn about file format specs, binary + compositions, and can make reproducible glitches with programming. + This talk, with examples, some Ruby snippets and my library AviGlitch, + will show you how to generate glitched images/videos. + ja: "グリッチ、特に画像や映像におけるヴィジュアル・グリッチについて紹介します。\n\ + グリッチを生成するいくつかのRubyスクリプトと、動画をグリッチするRubyライブラリ AviGlitch を用いつつ、\n\ + グリッチとは何か、どのようにしてつくられるのか、を実例を示しながら解説します。" +language: Japanese diff --git a/db/2011/events/18S03.yaml b/db/2011/events/18S03.yaml new file mode 100644 index 00000000..6720397b --- /dev/null +++ b/db/2011/events/18S03.yaml @@ -0,0 +1,24 @@ +--- +presenters: + - name: + en: Andrew Grimm + ja: + affiliation: + en: University of New South Wales + ja: + bio: + en: Andrew Grimm is a bioinformatician at the University of New South Wales in Sydney, Australia. He came across Ruby while using Rails at his previous job associated with the Encyclopedia of Life, but now specialises in Plain Old Ruby Objects. Previous projects (outside of work) analyzed why you always end up at "Philosophy" in Wikipedia, and a mutation tester in which zombies eat your brains unless your unit tests can kill them all. + ja: + gravatar: 01bbb59a1c3ef9960f25a97afe7e920f +title: + en: Finding Black Holes in Ruby with the Small Eigen Collider + ja: +abstract: + en: |- + Fear, uncertainty and doubt stopping you from playing with shiny new rubies? Not sure that they're exactly the same as the one you're currently using? Let the Small Eigen Collider smash them up and see what they're made of! + + The Small Eigen Collider uses reflection and metaprogramming to create random Ruby code. The code can be run under different implementations, and the results compared to detect inconsistencies between the versions. + + So accelerate your Rubies towards the speed of light and see what gets produced. And don't worry about the black holes - the program has created many of them already in the form of segmentation faults! + ja: +language: English diff --git a/db/2011/events/18S04.yaml b/db/2011/events/18S04.yaml new file mode 100644 index 00000000..e95bfd4d --- /dev/null +++ b/db/2011/events/18S04.yaml @@ -0,0 +1,26 @@ +--- +presenters: + - name: + en: Makoto Inoue + ja: "井上真" + affiliation: + en: New Bamboo + ja: New Bamboo + bio: + en: |- + Rubyist living in London since 2004 (though did not know about Ruby when I was in Japan. Sorry..) + ex-DBA(Sybase). Gave a talk "Building real time web" at RubyKaigi 2010 . Working under translation team of http://sinsai.info , earthquake information mapping site. Currently translating dRuby book into English (due to be published under pragpub) + ja: "井上真(New Bamboo) \n\ + 2004年からロンドンに在住中の逆輸入Rubyist(日本にいる時はRubyのこと知りませんでした。すみません)。元DBA(Sybase)。2010のRubyKaigiでは「リアルタイムウェブができるまで」というトピックで発表。http://sinsai.info という震災情報サイトでは翻訳班として活動中。赤い王子様の本を英訳中。「Railsで目指せ、情熱エンジニア」というタイトルで@ITでも執筆中" +title: + en: The Great Eastern Japan Earthquake and what you can do as a Rubyist ? + ja: "3/11 そしてRubyistとしてできること" +abstract: + en: The Great Eastern Japan Earthquake on March 11th caused devastating impact across Japan. However, there were numerous efforts amongst Japanese hackers to help the disaster hit areas. Throughout this talk, I will explain what kind of activities occurred right after the earthquake, and will discuss what we can do as Rubyists to help the people affected by the disaster. The talk will be done in English. + ja: "2011年3月11日におきた東日本大震災と津波によって東日本の各地において過去に例がないほどの多大な被害をうけましたが、それと同時に\n\ + インターネットやソーシャルメディアを通じて様々な活動がボランティアの手によっておこなわれてきましたし、現在もおこなわれています。\n\ + このトークでは地震発生直後にどのような活動が行われたか、現在どのような活動が行われているか、そして我々Rubyistがどのような形で\n\ + 関わっていく事ができるかについて一緒に考えていく場としたいと思います。\n + 海外からお越しのRubyistのみなさんに特に聞いていただきたいので英語での講演を予定しています。 + " +language: English diff --git a/db/2011/events/18S05.yaml b/db/2011/events/18S05.yaml new file mode 100644 index 00000000..00eee7e3 --- /dev/null +++ b/db/2011/events/18S05.yaml @@ -0,0 +1,18 @@ +--- +presenters: + - name: + en: Joshua Moore + ja: + affiliation: + en: Optimis International + ja: + bio: + en: "I am a ruby/rails developer working for OptimisCorp in Taiwan. I haven been involved with ruby, personally and professionally, for over 2 years. I tend to enjoy deploying to the cloud and have spent a lot of time working with Ruby on the Google App Engine. You can find more about me at github: https://github.com/joshsmoore." + ja: +title: + en: Writing custom DataMapper Adapters + ja: +abstract: + en: "DataMapper is a storage engine agnostic ORM, it can work just as well with a RDMS as with any another type of storage engine such as, but not limited to: no sequel stores (redis, mongo...), XML or yaml data source, etc. While many adapters already exist to connect DataMapper to a miriad of storage engines, there may not be one for your preferred storage engine or you may need to communicate with data from a legacy system. If this is the case I will introduce you to the clean and simple API used to write your custom DataMapper adapter." + ja: +language: English diff --git a/db/2011/events/18S07.yaml b/db/2011/events/18S07.yaml new file mode 100644 index 00000000..bae1bbc3 --- /dev/null +++ b/db/2011/events/18S07.yaml @@ -0,0 +1,21 @@ +--- +presenters: + - name: + en: Keiju Ishitsuka + ja: "石塚圭樹" + affiliation: + en: Penta Advanced Laboratories, Inc + ja: "ペンタアドバンストラボラトリーズ" + bio: + en: |- + Ruby's Godfather. + Author of Irb + ja: "Rubyの名付け親。\n\ + Irbの作者。" +title: + en: About New Version of DeepConnect for Distributed Object Environment + ja: "分散オブジェクト環境DeepConnectの新バージョンについて" +abstract: + en: TBD. + ja: "2010年10月に公開された分散オブジェクト環境のDeepConnectの新しいインターフェースについて紹介します。" +language: Japanese diff --git a/db/2011/events/18S08.yaml b/db/2011/events/18S08.yaml new file mode 100644 index 00000000..c9bb8268 --- /dev/null +++ b/db/2011/events/18S08.yaml @@ -0,0 +1,26 @@ +--- +presenters: + - name: + en: Makoto Kuwata + ja: "桑田誠" + affiliation: + en: kuwata-lab.com + ja: kuwata-lab.com + bio: + en: Programmer. + ja: "プログラマー。" +title: + en: Underlaying Technologies and Techniques behind O/R Mapper + ja: "O/R Mapperを支える技術" +abstract: + en: |- + `O/R Mapper' (ORM) is tool or library to map between Object and RDBMS. + Using ORM, you can handle RDBMS easier, but it is necessary for developers to understand underlaying technologies and techniques of ORM in order to use it effectively. + In this session, I'll explain about basic mechanism and recommended architechture of ORM. + If you join this session, you'll know that existing ORMs including ActiveRecord are anything but ideal. + ja: "\n\ + オブジェクトとRDBMSとをマッピングするライブラリやツールを、「O/R Mapper」といいます。\n\n\ + O/R Mapperを使うとRDBMSを扱うのが簡単になると期待されますが、実際にはO/R Mapperの仕組みを勉強しないと、O/R Mapperに振り回されるだけになります。\n\n\ + 本発表では、O/R Mapperの基本的な仕組みと望ましいアーキテクチャについて説明します。\n\ + 本発表を聞けば、ActiveRecordを含め既存のほとんどのO/R Mapperが、必ずしも理想的とはいえないことがわかるでしょう。" +language: Japanese diff --git a/db/2011/events/announcement.yaml b/db/2011/events/announcement.yaml new file mode 100644 index 00000000..7608b22b --- /dev/null +++ b/db/2011/events/announcement.yaml @@ -0,0 +1,5 @@ +--- +title: + en: Announcement + ja: 諸連絡 +hide_link: true diff --git a/db/2011/events/break.yaml b/db/2011/events/break.yaml new file mode 100644 index 00000000..1f51dca5 --- /dev/null +++ b/db/2011/events/break.yaml @@ -0,0 +1,5 @@ +--- +title: + en: Break + ja: 休憩 +hide_link: true diff --git a/db/2011/events/dinner.yaml b/db/2011/events/dinner.yaml new file mode 100644 index 00000000..1f51dca5 --- /dev/null +++ b/db/2011/events/dinner.yaml @@ -0,0 +1,5 @@ +--- +title: + en: Break + ja: 休憩 +hide_link: true diff --git a/db/2011/events/lunch.yaml b/db/2011/events/lunch.yaml new file mode 100644 index 00000000..1a6f47b0 --- /dev/null +++ b/db/2011/events/lunch.yaml @@ -0,0 +1,5 @@ +--- +title: + en: Lunch + ja: Lunch +hide_link: true diff --git a/db/2011/events/open.yaml b/db/2011/events/open.yaml new file mode 100644 index 00000000..b65fedf1 --- /dev/null +++ b/db/2011/events/open.yaml @@ -0,0 +1,5 @@ +--- +title: + en: Open + ja: 開場 +hide_link: true diff --git a/db/2011/events/party.yaml b/db/2011/events/party.yaml new file mode 100644 index 00000000..0c656ca6 --- /dev/null +++ b/db/2011/events/party.yaml @@ -0,0 +1,5 @@ +--- +title: + en: Party at Ikebukuro + ja: 懇親会@池袋 +hide_link: true diff --git a/db/2011/events/transit_time.yaml b/db/2011/events/transit_time.yaml new file mode 100644 index 00000000..5e48aaa2 --- /dev/null +++ b/db/2011/events/transit_time.yaml @@ -0,0 +1,5 @@ +--- +title: + en: Transit time + ja: 移動時間 +hide_link: true diff --git a/db/2011/room_timetables/16M.yaml b/db/2011/room_timetables/16M.yaml new file mode 100644 index 00000000..f6c12321 --- /dev/null +++ b/db/2011/room_timetables/16M.yaml @@ -0,0 +1,70 @@ +--- +date: 2011-07-16 +room_id: M +timeslots: + - start: + 2011-07-16T10:00:00+09:00 + end: &end_of_slot1 + 2011-07-16T10:30:00+09:00 + event_ids: + - :open + - start: *end_of_slot1 + end: &end_of_slot2 + 2011-07-16T12:00:00+09:00 + event_ids: + - 16MOP + - 16M01 + - start: *end_of_slot2 + end: &end_of_slot3 + 2011-07-16T13:30:00+09:00 + event_ids: + - :lunch + - start: *end_of_slot3 + end: &end_of_slot4 + 2011-07-16T14:30:00+09:00 + event_ids: + - announcement + - 16M02 + - start: *end_of_slot4 + end: &end_of_slot5 + 2011-07-16T14:40:00+09:00 + event_ids: + - :break + - start: *end_of_slot5 + end: &end_of_slot6 + 2011-07-16T15:40:00+09:00 + event_ids: + - 16M03 + - 16M04 + - start: *end_of_slot6 + end: &end_of_slot7 + 2011-07-16T16:10:00+09:00 + event_ids: + - :break + - start: *end_of_slot7 + end: &end_of_slot8 + 2011-07-16T17:10:00+09:00 + event_ids: + - 16M05 + - 16M06 + - start: *end_of_slot8 + end: &end_of_slot9 + 2011-07-16T17:20:00+09:00 + event_ids: + - :break + - start: *end_of_slot9 + end: &end_of_slot10 + 2011-07-16T18:20:00+09:00 + event_ids: + - 16M07 + - 16M08 + - start: *end_of_slot10 + end: &end_of_slot11 + 2011-07-16T20:00:00+09:00 + event_ids: + - :dinner + - start: *end_of_slot11 + end: &end_of_slot12 + 2011-07-16T21:30:00+09:00 + event_ids: + - 16MDN diff --git a/db/2011/room_timetables/16S.yaml b/db/2011/room_timetables/16S.yaml new file mode 100644 index 00000000..67a37ff6 --- /dev/null +++ b/db/2011/room_timetables/16S.yaml @@ -0,0 +1,63 @@ +--- +date: 2011-07-16 +room_id: S +timeslots: + - start: + 2011-07-16T10:00:00+09:00 + end: &end_of_slot1 + 2011-07-16T10:30:00+09:00 + event_ids: + - :open + - start: *end_of_slot1 + end: &end_of_slot2 + 2011-07-16T12:00:00+09:00 + - start: *end_of_slot2 + end: &end_of_slot3 + 2011-07-16T13:30:00+09:00 + event_ids: + - :lunch + - start: *end_of_slot3 + end: &end_of_slot4 + 2011-07-16T14:30:00+09:00 + - start: *end_of_slot4 + end: &end_of_slot5 + 2011-07-16T14:40:00+09:00 + event_ids: + - :break + - start: *end_of_slot5 + end: &end_of_slot6 + 2011-07-16T15:40:00+09:00 + event_ids: + - 16S01 + - 16S02 + - start: *end_of_slot6 + end: &end_of_slot7 + 2011-07-16T16:10:00+09:00 + event_ids: + - :break + - start: *end_of_slot7 + end: &end_of_slot8 + 2011-07-16T17:10:00+09:00 + event_ids: + - 16S03 + - 16S04 + - start: *end_of_slot8 + end: &end_of_slot9 + 2011-07-16T17:20:00+09:00 + event_ids: + - :break + - start: *end_of_slot9 + end: &end_of_slot10 + 2011-07-16T18:20:00+09:00 + event_ids: + - 16S05 + - 16S06 + - start: *end_of_slot10 + end: &end_of_slot11 + 2011-07-16T20:00:00+09:00 + event_ids: + - :dinner + - start: *end_of_slot11 + end: &end_of_slot12 + 2011-07-16T21:30:00+09:00 + event_ids: diff --git a/db/2011/room_timetables/17M.yaml b/db/2011/room_timetables/17M.yaml new file mode 100644 index 00000000..1d4c3364 --- /dev/null +++ b/db/2011/room_timetables/17M.yaml @@ -0,0 +1,79 @@ +--- +date: 2011-07-17 +room_id: M +timeslots: + - start: + 2011-07-17T09:30:00+09:00 + end: &end_of_slot1 + 2011-07-17T09:50:00+09:00 + event_ids: + - :open + - start: *end_of_slot1 + end: &end_of_slot2 + 2011-07-17T10:50:00+09:00 + event_ids: + - 17M01 + - 17M02 + - start: *end_of_slot2 + end: &end_of_slot3 + 2011-07-17T11:00:00+09:00 + event_ids: + - :break + - start: *end_of_slot3 + end: &end_of_slot4 + 2011-07-17T12:00:00+09:00 + event_ids: + - 17M03 + - 17M04 + - start: *end_of_slot4 + end: &end_of_slot5 + 2011-07-17T13:30:00+09:00 + event_ids: + - :lunch + - start: *end_of_slot5 + end: &end_of_slot6 + 2011-07-17T14:30:00+09:00 + event_ids: + - 17M05 + - 17M06 + - start: *end_of_slot6 + end: &end_of_slot7 + 2011-07-17T14:40:00+09:00 + event_ids: + - :break + - start: *end_of_slot7 + end: &end_of_slot8 + 2011-07-17T15:40:00+09:00 + event_ids: + - 17M07 + - 17M08 + - start: *end_of_slot8 + end: &end_of_slot9 + 2011-07-17T16:10:00+09:00 + event_ids: + - :break + - start: *end_of_slot9 + end: &end_of_slot10 + 2011-07-17T17:10:00+09:00 + event_ids: + - 17M09 + - start: *end_of_slot10 + end: &end_of_slot11 + 2011-07-17T17:20:00+09:00 + event_ids: + - :break + - start: *end_of_slot11 + end: &end_of_slot12 + 2011-07-17T18:30:00+09:00 + event_ids: + - 17M10 + - start: *end_of_slot12 + end: &end_of_slot13 + 2011-07-17T19:30:00+09:00 + event_ids: + - :transit_time + - start: *end_of_slot13 + end: &end_of_slot14 + 2011-07-17T21:30:00+09:00 + event_ids: + - :party diff --git a/db/2011/room_timetables/17S.yaml b/db/2011/room_timetables/17S.yaml new file mode 100644 index 00000000..76ac0078 --- /dev/null +++ b/db/2011/room_timetables/17S.yaml @@ -0,0 +1,78 @@ +--- +date: 2011-07-17 +room_id: S +timeslots: + - start: + 2011-07-17T09:30:00+09:00 + end: &end_of_slot1 + 2011-07-17T09:50:00+09:00 + event_ids: + - :open + - start: *end_of_slot1 + end: &end_of_slot2 + 2011-07-17T10:50:00+09:00 + event_ids: + - 17S01 + - 17S02 + - start: *end_of_slot2 + end: &end_of_slot3 + 2011-07-17T11:00:00+09:00 + event_ids: + - :break + - start: *end_of_slot3 + end: &end_of_slot4 + 2011-07-17T12:00:00+09:00 + event_ids: + - 17S03 + - 17S04 + - start: *end_of_slot4 + end: &end_of_slot5 + 2011-07-17T13:30:00+09:00 + event_ids: + - :lunch + - start: *end_of_slot5 + end: &end_of_slot6 + 2011-07-17T14:30:00+09:00 + event_ids: + - 17S05 + - 17S06 + - start: *end_of_slot6 + end: &end_of_slot7 + 2011-07-17T14:40:00+09:00 + event_ids: + - :break + - start: *end_of_slot7 + end: &end_of_slot8 + 2011-07-17T15:40:00+09:00 + event_ids: + - 17S07 + - 17S08 + - start: *end_of_slot8 + end: &end_of_slot9 + 2011-07-17T16:10:00+09:00 + event_ids: + - :break + - start: *end_of_slot9 + end: &end_of_slot10 + 2011-07-17T17:10:00+09:00 + event_ids: + - 17S09 + - 17S10 + - start: *end_of_slot10 + end: &end_of_slot11 + 2011-07-17T17:20:00+09:00 + event_ids: + - :break + - start: *end_of_slot11 + end: &end_of_slot12 + 2011-07-17T18:30:00+09:00 + - start: *end_of_slot12 + end: &end_of_slot13 + 2011-07-17T19:30:00+09:00 + event_ids: + - :transit_time + - start: *end_of_slot13 + end: &end_of_slot14 + 2011-07-17T21:30:00+09:00 + event_ids: + - :party diff --git a/db/2011/room_timetables/18M.yaml b/db/2011/room_timetables/18M.yaml new file mode 100644 index 00000000..6e070026 --- /dev/null +++ b/db/2011/room_timetables/18M.yaml @@ -0,0 +1,68 @@ +--- +date: 2011-07-18 +room_id: M +timeslots: + - start: + 2011-07-18T09:30:00+09:00 + end: &end_of_slot1 + 2011-07-18T09:50:00+09:00 + event_ids: + - :open + - start: *end_of_slot1 + end: &end_of_slot2 + 2011-07-18T10:50:00+09:00 + event_ids: + - 18M01 + - start: *end_of_slot2 + end: &end_of_slot3 + 2011-07-18T11:00:00+09:00 + event_ids: + - :break + - start: *end_of_slot3 + end: &end_of_slot4 + 2011-07-18T12:00:00+09:00 + event_ids: + - 18M03 + - start: *end_of_slot4 + end: &end_of_slot5 + 2011-07-18T13:30:00+09:00 + event_ids: + - :lunch + - start: *end_of_slot5 + end: &end_of_slot6 + 2011-07-18T14:30:00+09:00 + event_ids: + - 18M05 + - 18M06 + - start: *end_of_slot6 + end: &end_of_slot7 + 2011-07-18T14:40:00+09:00 + event_ids: + - :break + - start: *end_of_slot7 + end: &end_of_slot8 + 2011-07-18T15:40:00+09:00 + event_ids: + - 18M07 + - 18M08 + - start: *end_of_slot8 + end: &end_of_slot9 + 2011-07-18T16:10:00+09:00 + event_ids: + - :break + - start: *end_of_slot9 + end: &end_of_slot10 + 2011-07-18T17:10:00+09:00 + event_ids: + - 18M09 + - start: *end_of_slot10 + end: &end_of_slot11 + 2011-07-18T17:20:00+09:00 + event_ids: + - :break + - start: *end_of_slot11 + end: &end_of_slot12 + 2011-07-18T18:30:00+09:00 + event_ids: + - 18M10 + - 18MCL diff --git a/db/2011/room_timetables/18S.yaml b/db/2011/room_timetables/18S.yaml new file mode 100644 index 00000000..fbe1b6dc --- /dev/null +++ b/db/2011/room_timetables/18S.yaml @@ -0,0 +1,65 @@ +--- +date: 2011-07-18 +room_id: S +timeslots: + - start: + 2011-07-18T09:30:00+09:00 + end: &end_of_slot1 + 2011-07-18T09:50:00+09:00 + event_ids: + - :open + - start: *end_of_slot1 + end: &end_of_slot2 + 2011-07-18T10:50:00+09:00 + event_ids: + - 18S01 + - 18S02 + - start: *end_of_slot2 + end: &end_of_slot3 + 2011-07-18T11:00:00+09:00 + event_ids: + - :break + - start: *end_of_slot3 + end: &end_of_slot4 + 2011-07-18T12:00:00+09:00 + event_ids: + - 18S03 + - 18S04 + - start: *end_of_slot4 + end: &end_of_slot5 + 2011-07-18T13:30:00+09:00 + event_ids: + - :lunch + - start: *end_of_slot5 + end: &end_of_slot6 + 2011-07-18T14:30:00+09:00 + event_ids: + - 18S05 +# - 18S06 # canceled + - start: *end_of_slot6 + end: &end_of_slot7 + 2011-07-18T14:40:00+09:00 + event_ids: + - :break + - start: *end_of_slot7 + end: &end_of_slot8 + 2011-07-18T15:40:00+09:00 + event_ids: + - 18S07 + - 18S08 + - start: *end_of_slot8 + end: &end_of_slot9 + 2011-07-18T16:10:00+09:00 + event_ids: + - :break + - start: *end_of_slot9 + end: &end_of_slot10 + 2011-07-18T17:10:00+09:00 + - start: *end_of_slot10 + end: &end_of_slot11 + 2011-07-18T17:20:00+09:00 + event_ids: + - :break + - start: *end_of_slot11 + end: &end_of_slot12 + 2011-07-18T18:30:00+09:00 diff --git a/db/2011/rooms/M.yaml b/db/2011/rooms/M.yaml new file mode 100644 index 00000000..695a3164 --- /dev/null +++ b/db/2011/rooms/M.yaml @@ -0,0 +1,7 @@ +--- +room_id: M +name: + ja: 大ホール + en: Main Hall +order: 1 + diff --git a/db/2011/rooms/S.yaml b/db/2011/rooms/S.yaml new file mode 100644 index 00000000..0d7b9d05 --- /dev/null +++ b/db/2011/rooms/S.yaml @@ -0,0 +1,6 @@ +--- +room_id: S +name: + ja: 小ホール + en: Sub Hall +order: 2 diff --git a/db/2011/sponsors/gold/G01.yaml b/db/2011/sponsors/gold/G01.yaml new file mode 100644 index 00000000..b299286d --- /dev/null +++ b/db/2011/sponsors/gold/G01.yaml @@ -0,0 +1,8 @@ +--- +name: + en: Fingertips + ja: Fingertips +url: http://www.fngtps.com +pr: + en: Fingertips is a design and development team for web, iPhone, iPad, and Mac OS X apps. + ja: Fingertips is a design and development team for web, iPhone, iPad, and Mac OS X apps. diff --git a/db/2011/sponsors/gold/G02.yaml b/db/2011/sponsors/gold/G02.yaml new file mode 100644 index 00000000..217dde83 --- /dev/null +++ b/db/2011/sponsors/gold/G02.yaml @@ -0,0 +1,11 @@ +--- +name: + en: ClearCode Inc. + ja: "株式会社クリアコード" +url: http://www.clear-code.com/ +pr: + en: ClearCode is a high technology company about free software such as Ruby and Mozilla. We'll solve your problem if we can access your code. + ja: |- + クリアコードはRubyやMozilla Firefox/Thunderbirdなどのフリーソフトウェアに関する高い技術力を持った会社です。現在、プログラミングが好きな開発者を1名募集中です。 + http://www.clear-code.com/recruitment/ + diff --git a/db/2011/sponsors/gold/G03.yaml b/db/2011/sponsors/gold/G03.yaml new file mode 100644 index 00000000..8b85a38a --- /dev/null +++ b/db/2011/sponsors/gold/G03.yaml @@ -0,0 +1,12 @@ +--- +name: + en: Enishi Tech Inc. + ja: "株式会社えにしテック" +url: + en: http://www.enishi-tech.com/english + ja: http://www.enishi-tech.com/ +pr: + en: |- + Enishi Tech Inc. is a small software company. Enishi implies relationship, link, bond, fate and chance. + We value Enishi and Technology. + ja: "株式会社えにしテックは、システム開発、運用保守、インターネット向けサービスの開発運営などを主な業務とする札幌の会社です。私たちは、情報サービスという形で日々の営みに彩りを添え、その豊かさに貢献することをミッションとしています。" diff --git a/db/2011/sponsors/gold/G04.yaml b/db/2011/sponsors/gold/G04.yaml new file mode 100644 index 00000000..c5baa9d2 --- /dev/null +++ b/db/2011/sponsors/gold/G04.yaml @@ -0,0 +1,9 @@ +name: + en: grooves corp + ja: "株式会社grooves" +url: http://www.grooves.com +pr: + en: | + We are the #1 Social Recruiting & Global Recruiting service provider powered by Ruby in Japan! + + ja: "grooves(グルーヴス)は、グループ会社のgarbs(ガーブス)と共に、国内初のソーシャルリクルーティングカンパニーとして、Rubyと共に成長し日本を元気にする企業です。" diff --git a/db/2011/sponsors/gold/G05.yaml b/db/2011/sponsors/gold/G05.yaml new file mode 100644 index 00000000..b568cfef --- /dev/null +++ b/db/2011/sponsors/gold/G05.yaml @@ -0,0 +1,8 @@ +--- +name: + en: EY-Office + ja: EY-Office +url: http://www.ey-office.com +pr: + en: "We are Ruby on Rails developers but also provide Ruby on Rails training." + ja: "実際にRuby on Railsで開発している開発者が、実践的なRuby on Railsの教育を行っています。" diff --git a/db/2011/sponsors/gold/G06.yaml b/db/2011/sponsors/gold/G06.yaml new file mode 100644 index 00000000..dc67ddbe --- /dev/null +++ b/db/2011/sponsors/gold/G06.yaml @@ -0,0 +1,10 @@ +--- +name: + en: Everyleaf Corporation + ja: "株式会社万葉" +url: http://everyleaf.com/ +pr: + en: We develop Rails apps and help you develop them too. Our name "Everyleaf" comes from "Man'yoshu", the oldest collection of Japanese poetry. + ja: "Ruby on Railsを使ったWebアプリケーション開発を主に行っています。\r\n\ + オフィスではよく技術勉強会が開かれ、社内外の元気なエンジニアが集います。\r\n\ + Web家計簿「小槌」、蔵書管理システム「BookScope」、iPhoneアプリ「iCarta」等を公開中です。" diff --git a/db/2011/sponsors/gold/G07.yaml b/db/2011/sponsors/gold/G07.yaml new file mode 100644 index 00000000..edbcb608 --- /dev/null +++ b/db/2011/sponsors/gold/G07.yaml @@ -0,0 +1,10 @@ +--- +name: + en: R-learning Co., Ltd + ja: 株式会社アールラーニング +url: http://www.r-learning.co.jp/ +pr: + en: Our company is a system integrator that focun on Ruby on Rails and the android development.we excel in collaboration services development + ja: "受託開発や自社サービスにてRuby on Rails、アジャイル開発を採用しており、豊富な実績がございます。\r + 自社サービス:プッシュ型SNS(UGUISU),Android(shake),勤怠管理(新月)\r\n + 協同運営:Rails技術者認定試験運営委員会" diff --git a/db/2011/sponsors/gold/G08.yaml b/db/2011/sponsors/gold/G08.yaml new file mode 100644 index 00000000..54da8ea7 --- /dev/null +++ b/db/2011/sponsors/gold/G08.yaml @@ -0,0 +1,14 @@ +--- +name: + en: ANTAS, Inc. + ja: "株式会社アンタス" +url: "http://antas.jp/" +pr: + en: |- + ANTAS is a system development company in Sapporo, Japan. + + We aggressively use Ruby for Portal, ImageCruiser, CMS and so on. + ja: |- + アンタスはシステム開発、運用保守、インターネットサービス運営を主業務とする札幌の企業で、特にRubyに力を入れています。 + + 地域口コミポータルLOHABUUや、画像検索エンジンImageCruiser、自社CMSパッケージなどRailsベースの開発実績が豊富にあります。 diff --git a/db/2011/sponsors/gold/G09.yaml b/db/2011/sponsors/gold/G09.yaml new file mode 100644 index 00000000..708041fe --- /dev/null +++ b/db/2011/sponsors/gold/G09.yaml @@ -0,0 +1,10 @@ +--- +name: + en: Tatsu-zine Publishing Inc. + ja: "株式会社達人出版会" +url: "http://tatsu-zine.com/" +pr: + en: |- + Tatsu-zine Publishing is Japanese ebook publisher like PragProg or Peepcode. If you want to sell your Ruby-related documents, contact me!:) + ja: |- + 達人出版会は技術系電子書籍を制作・販売しています。Rails3やWindows向けRubyはもちろん、CucumberやG1GCなど、普通の出版社さんでは扱わないようなテーマでも出版します。原稿絶賛募集中!あと正直スポンサーやってられるほど儲かってないのでどんどん買ってください! diff --git a/db/2011/sponsors/gold/G10.yaml b/db/2011/sponsors/gold/G10.yaml new file mode 100644 index 00000000..6ee604c9 --- /dev/null +++ b/db/2011/sponsors/gold/G10.yaml @@ -0,0 +1,11 @@ +--- +name: + en: Rakuten,Inc. + ja: "楽天株式会社" +url: "http://www.rakuten.co.jp/" +pr: + en: |- + The largest e-commerce company Rakuten provides the great place for ruby and OSS engineers with potential to change the world. + ja: |- + 楽天はインターネットショッピングモール「楽天市場」をはじめとして、複数の事業を多角的に運営し、「日本発」の企業として台湾、ヨーロッパ、アメリカなどグローバルに事業規模を拡げています。 + 事業の基盤となるテクノロジーの開発をほぼ自社内で行っており、『人財』としてのエンジニアを大切にしています。 diff --git a/db/2011/sponsors/gold/G11.yaml b/db/2011/sponsors/gold/G11.yaml new file mode 100644 index 00000000..e216a1c6 --- /dev/null +++ b/db/2011/sponsors/gold/G11.yaml @@ -0,0 +1,10 @@ +--- +name: + en: Towersquest Inc. + ja: "タワーズ・クエスト株式会社" +url: "http://d.hatena.ne.jp/t-wada/" +pr: + en: |- + We are Towersquest Inc. providing solutions for business. Less time on nonessential repetitive tasks, more time on your core business. + ja: |- + タワーズ・クエストは、平成2年の創業以来、一貫して「社会のための技術」を求め、少数精鋭主義を貫く技術会社です。アジャイルプロセス、テスト駆動開発、大規模データベース設計、RESTfulWebアプリケーション設計開発などの強みを生かし、お客様の満足のために日々努力してまいります。 diff --git a/db/2011/sponsors/gold/G12.yaml b/db/2011/sponsors/gold/G12.yaml new file mode 100644 index 00000000..8bde2495 --- /dev/null +++ b/db/2011/sponsors/gold/G12.yaml @@ -0,0 +1,10 @@ +--- +name: + en: Langrich Inc. + ja: "ラングリッチ" +url: "http://langrich.com/" +pr: + en: |- + Langrich is a ESL company for Japanese students. It has been expanding its business and we expect even higher growth rate this year. We need more competent engineer to meet the demand from our students. + ja: |- + ラングリッチは、フィリピンに拠点を置く、オンライン英会話サービスです。ウェブサイトの開発に力を入れており、英語力のある開発者を募集しています。 diff --git a/db/2011/sponsors/gold/G13.yaml b/db/2011/sponsors/gold/G13.yaml new file mode 100644 index 00000000..76debc16 --- /dev/null +++ b/db/2011/sponsors/gold/G13.yaml @@ -0,0 +1,10 @@ +--- +name: + en: Cuon Inc. + ja: "株式会社Cuon(クオン)" +url: "http://www.cuon.co.jp/" +pr: + en: |- + Cuon Inc. has specialized in business systems by Ruby on Rails. We have designed and developed agilely the business value for our clients. + ja: |- + 弊社は、Ruby on Railsによる業務システム開発が得意な会社です。お客様が価値を感じるシステムのために、迅速な開発を行っています。 diff --git a/db/2011/sponsors/gold/G14.yaml b/db/2011/sponsors/gold/G14.yaml new file mode 100644 index 00000000..88eb7c67 --- /dev/null +++ b/db/2011/sponsors/gold/G14.yaml @@ -0,0 +1,9 @@ +--- +wanted: true +name: + en: + ja: +url: +pr: + en: + ja: diff --git a/db/2011/sponsors/platinum/P01.yaml b/db/2011/sponsors/platinum/P01.yaml new file mode 100644 index 00000000..95fd7557 --- /dev/null +++ b/db/2011/sponsors/platinum/P01.yaml @@ -0,0 +1,11 @@ +--- +name: + en: FUJITSU SOCIAL SCIENCE LABORATORY LIMITED + ja: "株式会社富士通ソーシアルサイエンスラボラトリ(富士通SSL)" +url: http://www.ssl.fujitsu.com/ +pr: + en: | + Fujitsu Social Science Laboratory Limited (Fujitsu SSL) provides the solutions that all business need, named PoweredSolution. We can build an IT infrastructure that best suits your business. + In addition , we provides OSS(Open Source Software) support service to your business. + + ja: "当社は富士通グループの一員として、ソフトウェア開発・システム構築を中心に事業を展開してきました。現在、自社ソリューション商品群『PoweredSolution(パワード・ソリューション)』により、Webサイト、CRM(Customer Relationship Management)、ワークフロー、GIS(地理情報システム)、情報活用、情報統合、セキュリティ、開発・運用基盤の8つのカテゴリによる、あらゆる業種に適用できる幅広いソリューションを、さまざまなお客様にご提供しています。また、オープンソースソフトウェア(OSS)に対応できる高い技術力と万全なサポートにより、お客様に安心してご利用いただけるOSS環境をご提供します。" diff --git a/db/2011/sponsors/platinum/P02.yaml b/db/2011/sponsors/platinum/P02.yaml new file mode 100644 index 00000000..90d18442 --- /dev/null +++ b/db/2011/sponsors/platinum/P02.yaml @@ -0,0 +1,15 @@ +--- +name: + en: Eiwa System Management,Inc. + ja: "株式会社 永和システムマネジメント" +url: http://www.esm.co.jp/ +pr: + en: |- + Eiwa System Management(ESM),Inc. is one of the best company building cutting-edge Ruby/Rails application with agile software development methods in Japan. + + We are maximizing client's return on investment.We also passionately support Ruby communities in Japan since 2006. + ja: "私たち永和システムマネジメントは、福井県に本社を置くSIベンダです。2002年に東京支社を開設してから、アジャイル開発を軸に変化を抱擁するITソリューションを提供することに力を入れています。 + + 有志による草の根活動をきっかけに始まった Ruby への取り組みは、5年間で70以上ものプロジェクトで実績をつくるまでに成長し、2010年5月にはRubyアソシエーション認定システムインテグレータに認定されました。 + + 私たちは、ソフトウェア開発のプロフェッショナルとしての誠実な態度と、アジャイル開発のアプローチを通じて「お客さまに価値を提供し続けるシステム」を構築し、お客さまと一緒に育てていきます。アジャイルと Ruby の組み合わせが実現するシステム開発は、開発者が充実感と「楽しさ」を感じられる開発であり、そこにはきっとビジネス価値がある――私たちはそう信じて行動を続けています。" diff --git a/db/2011/sponsors/platinum/P03.yaml b/db/2011/sponsors/platinum/P03.yaml new file mode 100644 index 00000000..a247a156 --- /dev/null +++ b/db/2011/sponsors/platinum/P03.yaml @@ -0,0 +1,20 @@ +--- +name: + en: "COOKPAD Inc." + ja: "クックパッド株式会社" +url: http://cookpad.com/ +pr: + en: |- + COOKPAD adopted Ruby on Rails in 2008 when redesigning their user generated recipe site cookpad.com. Since then, the service has continued to grow, and as the biggest Rails site in Japan, serves 490 million page views to over 10 million unique users per month. + + COOKPAD is an agile organization and embraces the latest technologies and techniques to always provide the greatest value to their users. + ja: "クックパッドの運営するレシピ投稿サイトcookpad.comは、2008年のリニュー\r\n\ + アルでRuby on Railsを採用しました。以来、日本最大のRailsサイトとして月\r\n\ + 間1,079万人のユーザーから生み出される4.9億PVを支え、なおも拡大を続けて\r\n\ + います。\r\n\ + \r\n\ + クックパッドは、テスト駆動開発やスクラムといったアジャイル開発手法の導\r\n\ + 入や、Hadoopなどの分散処理技術やクラウドといった最新の技術の本質を理解\r\n\ + し使いこなすことによって、これまで不可能だったスピードと規模でユーザー\r\n\ + の毎日の生活に価値を提供し、クックパッドのミッションである「毎日の料理\r\n\ + を楽しみにすることで心からの笑顔を増やす」ことだけに取り組んでいます。" diff --git a/db/2011/sponsors/platinum/P04.yaml b/db/2011/sponsors/platinum/P04.yaml new file mode 100644 index 00000000..20576733 --- /dev/null +++ b/db/2011/sponsors/platinum/P04.yaml @@ -0,0 +1,22 @@ +--- +name: + en: ConnectStar Co., Ltd. + ja: "株式会社コネクトスター" +url: "http://www.connectstar.co.jp/" +pr: + en: |- + Create services to "Make the world a better place" with "Ruby"! + ConnectStar is newly established on Apr 2011 as a group of Members Co., Ltd. + We started "Project F30" to create 30 innovative services based on Facebook platform + in three years.We adopt agile development with Rails3 for the quickestrelease. + For further information of "Project F30", visit our Facebook page:www.facebook.com/project.F30 + ja: |- + コネクトスターは株式会社メンバーズのグループ会社として4月に新設されました。 + 私たちは「Maketheworldabetterplace」というステートメントのもと、世界を変える + サービスを世に送り出していくプロジェクト「ProjcetF30」を推進しています。 + 本プロジェクトは人間関係のインフラとして浸透するFacebookと連携するテーマ特化 + 型SNSを30個立ち上げるプロジェクトです。第一弾としてMangafulDays(mangafuldays.jp) + をローンチさせ、本格的にプロジェクトを始動しました。当社では「まずは作ってみる」 + という開発理念のもと、少数チームで、改善スピードを重視し、Rails3を利用した + アジャイル開発を採用しています。コネクトスターはRubyで世界を変えるサービス + 創造していきます。プロジェクト詳細:www.facebook.com/project.F30 diff --git a/db/2011/sponsors/platinum/P05.yaml b/db/2011/sponsors/platinum/P05.yaml new file mode 100644 index 00000000..36797469 --- /dev/null +++ b/db/2011/sponsors/platinum/P05.yaml @@ -0,0 +1,10 @@ +--- +name: + en: "ScaleOut Inc." + ja: "株式会社スケールアウト" +url: "http://scaleout.jp/" +pr: + en: |- + Scaleout Inc has built a powerful platform designed as ad technology infrastructure using Ruby on Rails! + ja: |- + 株式会社スケールアウトは、門前仲町からほど近い富岡八幡宮の近くで1日に数10億アクセスをカジュアルに捌く広告配信システムScaleAdsの開発を行っており、広くエンジニアを募集しています! diff --git a/db/2011/sponsors/platinum/P06.yaml b/db/2011/sponsors/platinum/P06.yaml new file mode 100644 index 00000000..0bfe9802 --- /dev/null +++ b/db/2011/sponsors/platinum/P06.yaml @@ -0,0 +1,12 @@ +--- +name: + en: "GREE, Inc." + ja: "グリー株式会社" +url: + en: "http://www.gree.co.jp/en/" + ja: "http://www.gree.co.jp/" +pr: + en: |- + GREE, Inc. has been operating a social networking service with over 25 million users. In this Apr, GREE, Inc. acquired OpenFeint, Inc., which has been managing one of the world's largest social gaming platforms with over 90 million users, developed based on Ruby. Engineers at both companies are developing together to realize a scalability which is capable of meeting daily expansion of user. + ja: |- + グリーは2500万人以上の会員数を持つソーシャル・ネットワーキング・サービス(SNS)「GREE」を運営しています。 今年4月に子会社化したOpenFeint社の運営する、世界最大級のソーシャル・ゲーム・プラットフォーム「OpenFeint」は、 Rubyをベースに開発されており、9000万人以上のユーザーに利用されています。 日々拡大していく会員数の利用に耐えうるスケーラビリティを実現し、世界でより多くの人に利用されるサービスを目指して、OpenFeint社のエンジニアとグリーのエンジニアが協力して開発に取り組んでいます。 diff --git a/db/2011/sponsors/platinum/P07.yaml b/db/2011/sponsors/platinum/P07.yaml new file mode 100644 index 00000000..8bd3683f --- /dev/null +++ b/db/2011/sponsors/platinum/P07.yaml @@ -0,0 +1,9 @@ +--- +wanted: true +name: + en: "" + ja: "" +url: +pr: + en: "" + ja: "" diff --git a/db/2011/sponsors/platinum/P08.yaml b/db/2011/sponsors/platinum/P08.yaml new file mode 100644 index 00000000..8bd3683f --- /dev/null +++ b/db/2011/sponsors/platinum/P08.yaml @@ -0,0 +1,9 @@ +--- +wanted: true +name: + en: "" + ja: "" +url: +pr: + en: "" + ja: "" diff --git a/db/2011/sponsors/platinum/P09.yaml b/db/2011/sponsors/platinum/P09.yaml new file mode 100644 index 00000000..8bd3683f --- /dev/null +++ b/db/2011/sponsors/platinum/P09.yaml @@ -0,0 +1,9 @@ +--- +wanted: true +name: + en: "" + ja: "" +url: +pr: + en: "" + ja: "" diff --git a/db/2011/sponsors/platinum/P10.yaml b/db/2011/sponsors/platinum/P10.yaml new file mode 100644 index 00000000..8bd3683f --- /dev/null +++ b/db/2011/sponsors/platinum/P10.yaml @@ -0,0 +1,9 @@ +--- +wanted: true +name: + en: "" + ja: "" +url: +pr: + en: "" + ja: "" diff --git a/db/2011/sponsors/ruby/R01.yaml b/db/2011/sponsors/ruby/R01.yaml new file mode 100644 index 00000000..227224fa --- /dev/null +++ b/db/2011/sponsors/ruby/R01.yaml @@ -0,0 +1,32 @@ +--- +name: + en: NaCl + ja: "株式会社ネットワーク応用通信研究所" +url: http://www.netlab.jp/ +pr: + en: | + http://www.netlab.jp/ + + Network Applied Communication Laboratory (NaCl) delivers system development solutions utilizing open source software. NaCl drives the Ruby programming language with Ruby creator and NaCl fellow, Yukihiro "Matz" Matsumoto. + + ja: "株式会社ネットワーク応用通信研究所(NaCl)\r\n\ + http://www.netlab.jp/\r\n\ + \r\n\ + 世界と競い、未来を拓く\r\n\ + ソースコードを公開して誰でも自由に利用できるようにし、利用者や他の開発者からのフィードバックを取り入れながら進化を続ける、それがオープンソースソフトウェア(OSS)です。 株式会社ネットワーク応用研究所(NaCl)では、単に\r\n\ + OSSを利用するだけではなく、オブジェクト指向言語Rubyの開発者であるまつもとゆきひろ をはじめ、多くの社員がOSSの開発に貢献し、 OSSを利用したシステム開発では先進的な実績を残しています。\r\n\ + \r\n\ + <Ruby、Ruby on Railsに関する取り組み>\r\n\ + ・島根県CMS\r\n\ + 読み上げ機能や自動ふりがな機能を持つ、Ruby on Rails(Rails)で作られた行政機関向けCMS(コンテンツマネージメントシステム)です。 OSSとして公開され島根県をはじめとする複数の自治体のwebサイトで採用されています。\r\n\ + \r\n\ + ・Rubyの国際標準化へ向けた活動への協力\r\n\ + IPA(独立行政法人情報処理推進機構)が進めるRubyの国際標準化へ向けたプロジェクトに協力しています。Rubyを国際標準規格により、複数のRuby実装の間での互換性が向上し、政府調達においても採用し易くなることが期待されます。\r\n\ + \r\n\ + ・ニーズの高まるRuby教育\r\n\ + Rubyへの関心は高まっていますが、技術者確保が課題となっています。NaClではRubyアソシエーションの認定を受けたテキストを提供し、Rubyそのものや、Railsをはじめとする周辺技術に関する教育事業を行っています。認定テキストによる標準コース以外に、初めてのRuby、Railsでの開発に取り組む場合等にお使いいただけるカスタマイズ教育を提供しております。ご相談ください。\r\n\ + \r\n\ + <OSS「日医標準レセプトソフト」の開発>\r\n\ + NaClは、全国1万ヶ所以上の医療機関に導入されているオープンソースソフトウェア「日医標準レセプトソフト」の開発会社として、医療現場のIT化を推進しています。\r\n \r\n\ + NaClについて\r\n\ + 弊社の通称である「NaCl」は、社名の英語表記「Network Applied Communication Laboratory Ltd.」の頭文字であると同時に、生物が生きていくために欠かせない「塩」の化学式でもあります。 私たちは「NaCl」を塩の化学式にちなみ、「エヌ・エー・シー・エル」と呼んでいます。" diff --git a/db/2011/sponsors/ruby/R02.yaml b/db/2011/sponsors/ruby/R02.yaml new file mode 100644 index 00000000..77f435dc --- /dev/null +++ b/db/2011/sponsors/ruby/R02.yaml @@ -0,0 +1,22 @@ +--- +name: + en: "Ricoh Company, Ltd." + ja: "株式会社リコー" +url: http://www.quanp.com/ +pr: + en: |- + Introduction to quanp + + High-performance technology, easier to use. In addition to Ricoh product development and services that focus on imaging equipment, Ricoh is expanding its business scope to provide a combination of office solutions. One of these new businesses being developed is quanp. + quanp is a visual online storage service for helping individuals to get used to utilizing information intelligently. The user can upload files, share, and do simple search operations. quanp’s server systems are powered by Ruby. In the future, while contributing knowledge and technologies gained during development to the growth of Ruby, we would like to refine large-scale system construction technologies that utilize Ruby’s advantages. + ja: "quanpの紹介\r\n\ + 高性能な技術を、より使いやすく。リコーは画像機器を中心とした製品開発やサービスの提供に加え、\r\n\ + それらを組み合わせたオフィスソリューションの提供へと事業領域を拡大しています。そうした新規事業の一つとして“quanp”を展開。\r\n\ + quanpは情報をスマートに使いこなすための個人向けビジュアルオンラインストレージサービスです。\r\n\ + ファイルのアップロード、共有、検索を簡単な操作で行うことができます。\r\n\ + このquanpでは、サーバーシステムの構築においてRubyを活用しています。\r\n\ + 今後も、開発の中で得た知識・技術でRubyの発展に貢献するとともに、\r\n\ + Rubyの利点を活かした大規模システム構築技術に磨きをかけていきたいと考えています。\r\n\ + quanpについての詳しい情報については、下記サイトをご覧ください。\r\n\ + http://www.quanp.com\r\n\" + diff --git a/db/2011/sponsors/ruby/R03.yaml b/db/2011/sponsors/ruby/R03.yaml new file mode 100644 index 00000000..226657e1 --- /dev/null +++ b/db/2011/sponsors/ruby/R03.yaml @@ -0,0 +1,8 @@ +--- +name: + en: Microsoft Corporation + ja: "日本マイクロソフト株式会社" +url: http://www.microsoft.com/ja/jp/default.aspx +pr: + en: (To Be Published) + ja: "(調整中)" diff --git a/db/2011/team.yaml b/db/2011/team.yaml new file mode 100644 index 00000000..85906eb1 --- /dev/null +++ b/db/2011/team.yaml @@ -0,0 +1,277 @@ +- section: + name: + en: Chairman + ja: 実行委員長 + people: + - name: + en: Masayoshi TAKAHASHI + ja: 高橋征義 + affiliation: + en: Nihon Ruby-no-Kai, Chairman / tatsu-zine.com + ja: 日本Rubyの会会長, 達人出版会 + gravatar: 21a4b941766d805333e11c5766be43b4 +- section: + name: + en: Vice Chairman + ja: 副実行委員長 + people: + - name: + en: Shintaro KAKUTANI + ja: 角谷信太郎 + affiliation: + en: Nihon Ruby-no-Kai || Eiwa System Management + ja: 日本Rubyの会 || (株)永和システムマネジメント + gravatar: 63a6bff89d692e21de20868202bc8dde +- section: + name: + en: Chief of Operations + ja: 運営委員長 + people: + - name: + en: Koji SHIMADA + ja: 島田浩二 + affiliation: + en: Nihon Ruby-no-Kai / Enishi Tech + ja: 日本Rubyの会, 株式会社えにしテック + gravatar: 941b170e5a115a295cccb5f5cdf0a800 +- section: + name: + en: Program Chair + ja: プログラム委員長 + people: + - name: + en: Koichi SASADA + ja: 笹田耕一 + affiliation: + en: Nihon Ruby-no-Kai, The University of Tokyo + ja: 日本Rubyの会, 東京大学大学院情報理工学系研究科創造情報学専攻 +- section: + name: + en: Sponsor Liason + ja: スポンサー渉外担当 + people: + - name: + en: Ayumu AIZAWA + ja: 相澤歩 + affiliation: + en: Nihon Ruby-no-Kai, Akasaka.rb + ja: 日本Rubyの会, Akasaka.rb + gravatar: 2e9a2dbe335e0111e4879a9d65dcbae0 + - name: + en: Shugo MAEDA + ja: 前田修吾 + affiliation: + en: Ruby Association / Network Applied Communication Laboratory + ja: Rubyアソシエーション, 株式会社ネットワーク応用通信研究所 +- section: + name: + en: Organizers + ja: 実行委員 + people: + - name: + en: "Shin'ya ADZUMI" + ja: あづみしんや + affiliation: + en: Nihon Ruby-no-Kai + ja: 日本Rubyの会 + - name: + en: Miho SUZUKI + ja: すずきみほ + affiliation: + en: @adzuki34 + ja: + - name: + en: Leonard Chin + ja: レオ Leonard Chin + affiliation: + en: Nihon Ruby-no-Kai + ja: 日本Rubyの会 + - name: + en: Yoji SHIDARA + ja: しだらようじ + affiliation: + en: Ruby Sapporo / Enishi Tech + ja: Ruby札幌, 株式会社えにしテック + gravatar: 817b7699ccbd3a6664de66eee8c2cbd2 + - name: + en: Jun OHWADA + ja: 大和田純 + affiliation: + en: Ruby Sapporo, Scigineer + ja: Ruby札幌, サイジニア株式会社 + gravatar: 6fd9be5cd0196df5ad62a5a5f2be3c55 + - name: + en: Kei SHIRATSUCHI + ja: 白土慧 + affiliation: + en: Ruby Sapporo, Scigineer + ja: Ruby札幌, サイジニア株式会社 + gravatar: 046d95b910ab412d0c059caac797ade3 + - name: + en: Naoto TAKAI + ja: 高井直人 + affiliation: + en: Akasaka.rb + ja: + - name: + en: Toshiaki KOSHIBA + ja: こしば としあき + affiliation: + en: EC Navi Company, Shibuya.rb, Chiba.rb + ja: 株式会社ECナビ, Shibuya.rb, Chiba.rb + - name: + en: Sunao TANABE + ja: たなべ すなお + affiliation: + en: Nihon Ruby-no-kai + ja: 日本Rubyの会 + - name: + en: Eito KATAGIRI + ja: かたぎり えいと + affiliation: + en: Ruby Tokai + ja: Ruby東海 + - name: + en: Tasuo SAKURAI + ja: 櫻井達生 + affiliation: + en: Everyleaf + ja: 株式会社万葉 + - name: + en: Tadashi SAITO + ja: 斎藤ただし + affiliation: + en: + ja: + - name: + en: Shyouhei URABE + ja: 卜部昌平 + affiliation: + en: Network Applied Communication Laboratory + ja: 株式会社ネットワーク応用通信研究所 + gravatar: 9d2f78236e45a335301ba1195026105d +- section: + name: + en: i18n + ja: 国際化 + people: + - name: + en: Adam AKHTAR + ja: アクター アダム + affiliation: + en: @robodisco + ja: + - name: + en: Paul Mcmahon + ja: マクマホン ポール + affiliation: + en: @pwim + ja: +- section: + name: + en: Designer + ja: デザイナ + people: + - name: + en: Mayuko SEKIYA + ja: 関谷繭子 + affiliation: + en: @mayuco / Enishi Tech + ja: @mayuco / 株式会社えにしテック + gravatar: 00575484b5d4489619bfc52e9775ee3b + - name: + en: Norio + ja: のりお + affiliation: + en: @norio, pixiv Inc. + ja: ピクシブ株式会社 + gravatar: 465f37a716f559211948394e549a164d +- section: + name: + en: "KaigiFreaks::ReportTeam" + ja: "KaigiFreaksレポート班" + people: + - name: + en: Mitsutaka MIMURA + ja: 三村益隆 + affiliation: + en: Eiwa System Management, asakusa.rb + ja: 永和システムマネジメント, asakusa.rb + - name: + en: Masanori SUGAWARA + ja: すがわらまさのり + affiliation: + en: @sugamasao + ja: + - name: + en: Yuki AKAMATSU + ja: 赤松祐希 + affiliation: + en: ukstudio + ja: + - name: + en: Yutaro SUGAI + ja: 菅井祐太朗 + affiliation: + en: @hokkai7go + ja: + - name: + en: Noriyuki Komatsuzaki + ja: 小松崎典之 + affiliation: + en: @oshow + ja: + gravatar: a6945e4a032aaa4109e5818465d62b06 +- section: + name: + en: "KaigiFreaks::NetworkTeam" + ja: "KaigiFreaksネットワーク班" + people: + - name: + en: Hidekazu KOIWA + ja: 小岩秀和 + affiliation: + en: LOCAL, ESTCOSMO Co.,Ltd., 88nite + ja: 一般社団法人LOCAL、株式会社エストコスモ、88nite + gravatar: 256838377ddbe600e85d8f446aae224d +- section: + name: + en: "KaigiFreaks::RecordingTeam" + ja: "KaigiFreaks録画配信班" + people: + - name: + en: Ippei Ogiwara + ja: 荻原 一平 + affiliation: + en: @iogi + ja: + - name: + en: Norio SUZUKI + ja: 鈴木則夫 + affiliation: + en: @suzuki + ja: + gravatar: 8e528456ff66ec543952daa815353a01 + - name: + en: Tomoki MAEDA + ja: まえだともき + affiliation: + en: Ruby Sapporo / Antas + ja: Ruby札幌, 株式会社アンタス + - name: + en: Fumitake TANIGUCHI + ja: たにぐちふみたけ + affiliation: + en: Ruby Sapporo, Hokkaido Information University + ja: Ruby札幌, 北海道情報大学 +#- section: +# name: +# en: "Staff" +# ja: "当日スタッフ" +# people: +# - name: +# en: +# ja: +# affiliation: +# en: +# ja: diff --git a/db/2011/test_list.rb b/db/2011/test_list.rb new file mode 100755 index 00000000..e50c698f --- /dev/null +++ b/db/2011/test_list.rb @@ -0,0 +1,8 @@ +#!/usr/bin/env ruby + +require 'yaml' + +Dir['events/**/*.yaml'].each do |path| + talk = YAML.load_file(path) + p [path, (talk['title'] || {})['en'], (talk['name'] || {})['en']] +end diff --git a/db/migrate/20090323113611_add_open_id_authentication_tables.rb b/db/migrate/20090323113611_add_open_id_authentication_tables.rb deleted file mode 100644 index caae0d8c..00000000 --- a/db/migrate/20090323113611_add_open_id_authentication_tables.rb +++ /dev/null @@ -1,20 +0,0 @@ -class AddOpenIdAuthenticationTables < ActiveRecord::Migration - def self.up - create_table :open_id_authentication_associations, :force => true do |t| - t.integer :issued, :lifetime - t.string :handle, :assoc_type - t.binary :server_url, :secret - end - - create_table :open_id_authentication_nonces, :force => true do |t| - t.integer :timestamp, :null => false - t.string :server_url, :null => true - t.string :salt, :null => false - end - end - - def self.down - drop_table :open_id_authentication_associations - drop_table :open_id_authentication_nonces - end -end diff --git a/db/migrate/20090323114540_create_accounts.rb b/db/migrate/20090323114540_create_accounts.rb deleted file mode 100644 index daa15317..00000000 --- a/db/migrate/20090323114540_create_accounts.rb +++ /dev/null @@ -1,13 +0,0 @@ -class CreateAccounts < ActiveRecord::Migration - def self.up - create_table :accounts do |t| - t.string :identity_url - - t.timestamps - end - end - - def self.down - drop_table :accounts - end -end diff --git a/db/migrate/20090530084831_create_paypal_transactions.rb b/db/migrate/20090530084831_create_paypal_transactions.rb deleted file mode 100644 index 1239d8e3..00000000 --- a/db/migrate/20090530084831_create_paypal_transactions.rb +++ /dev/null @@ -1,21 +0,0 @@ -class CreatePaypalTransactions < ActiveRecord::Migration - def self.up - create_table :paypal_transactions do |t| - t.string :txn_id, :null => false - t.string :item_number, :null => false - t.string :payer_email, :null => false - t.string :last_name, :null => false - t.string :first_name, :null => false - t.string :payment_status, :null => false - t.string :residence_country, :null => false - t.string :verify, :null => false - t.text :notified_json, :null => false - - t.timestamps - end - end - - def self.down - drop_table :paypal_transactions - end -end diff --git a/db/migrate/20090602104802_add_more_columns_to_paypal_transactions.rb b/db/migrate/20090602104802_add_more_columns_to_paypal_transactions.rb deleted file mode 100644 index b29c2e77..00000000 --- a/db/migrate/20090602104802_add_more_columns_to_paypal_transactions.rb +++ /dev/null @@ -1,13 +0,0 @@ -class AddMoreColumnsToPaypalTransactions < ActiveRecord::Migration - def self.up - add_column :paypal_transactions, :receipt_id, :string - add_column :paypal_transactions, :payer_id, :string - add_column :paypal_transactions, :memo, :text - end - - def self.down - remove_column :paypal_transactions, :memo - remove_column :paypal_transactions, :payer_id - remove_column :paypal_transactions, :receipt_id - end -end diff --git a/db/migrate/20090605043343_create_exchange_tickets.rb b/db/migrate/20090605043343_create_exchange_tickets.rb deleted file mode 100644 index 49317bcf..00000000 --- a/db/migrate/20090605043343_create_exchange_tickets.rb +++ /dev/null @@ -1,21 +0,0 @@ -class CreateExchangeTickets < ActiveRecord::Migration - def self.up - create_table :exchange_tickets do |t| - t.references :paypal_transaction - t.string :code4u, :unique => true - - t.timestamps - end - PaypalTransaction.reset_column_information - PaypalTransaction.transaction do - PaypalTransaction.all.each do |trans| - trans.exchange_ticket = ExchangeTicket.new - trans.save! - end - end - end - - def self.down - drop_table :exchange_tickets - end -end diff --git a/db/migrate/20090605080045_create_lightning_talk_submissions.rb b/db/migrate/20090605080045_create_lightning_talk_submissions.rb deleted file mode 100644 index a7905394..00000000 --- a/db/migrate/20090605080045_create_lightning_talk_submissions.rb +++ /dev/null @@ -1,19 +0,0 @@ -class CreateLightningTalkSubmissions < ActiveRecord::Migration - def self.up - create_table :lightning_talk_submissions do |t| - t.text :name - t.text :organization - t.text :email - t.text :title - t.text :abstract - t.boolean :has_ticket - t.text :note - - t.timestamps - end - end - - def self.down - drop_table :lightning_talk_submissions - end -end diff --git a/db/migrate/20090610055340_add_day_columns_to_lightning_talk_submissions.rb b/db/migrate/20090610055340_add_day_columns_to_lightning_talk_submissions.rb deleted file mode 100644 index 5ab29d3f..00000000 --- a/db/migrate/20090610055340_add_day_columns_to_lightning_talk_submissions.rb +++ /dev/null @@ -1,11 +0,0 @@ -class AddDayColumnsToLightningTalkSubmissions < ActiveRecord::Migration - def self.up - add_column :lightning_talk_submissions, :day1, :string - add_column :lightning_talk_submissions, :day2, :string - end - - def self.down - remove_column :lightning_talk_submissions, :day2 - remove_column :lightning_talk_submissions, :day1 - end -end diff --git a/db/migrate/20090617132546_create_talks.rb b/db/migrate/20090617132546_create_talks.rb deleted file mode 100644 index 5e517193..00000000 --- a/db/migrate/20090617132546_create_talks.rb +++ /dev/null @@ -1,19 +0,0 @@ -class CreateTalks < ActiveRecord::Migration - def self.up - create_table :talks do |t| - t.string :title - t.string :speaker - t.string :language - t.text :summary - t.integer :year - t.integer :room - t.datetime :starts_at - t.datetime :ends_at - t.timestamps - end - end - - def self.down - drop_table :talks - end -end diff --git a/db/migrate/20090618081054_create_lightning_talk_selections.rb b/db/migrate/20090618081054_create_lightning_talk_selections.rb deleted file mode 100644 index 7998daa4..00000000 --- a/db/migrate/20090618081054_create_lightning_talk_selections.rb +++ /dev/null @@ -1,20 +0,0 @@ -class CreateLightningTalkSelections < ActiveRecord::Migration - def self.up - create_table :lightning_talk_selections do |t| - t.references :lightning_talk_submission - t.integer :result, :null => false, :default => -1 - t.integer :disp_order, :null => false, :default => 0 - - t.timestamps - end - LightningTalkSubmission.all.each do |s| - s.build_lightning_talk_selection( - :result => LightningTalkSelection::Result.initial) - s.save - end - end - - def self.down - drop_table :lightning_talk_selections - end -end diff --git a/db/migrate/20090630083014_prepare_talks_refactoring.rb b/db/migrate/20090630083014_prepare_talks_refactoring.rb deleted file mode 100644 index 743769f2..00000000 --- a/db/migrate/20090630083014_prepare_talks_refactoring.rb +++ /dev/null @@ -1,25 +0,0 @@ -class PrepareTalksRefactoring < ActiveRecord::Migration - def self.up - remove_column :talks, :title - remove_column :talks, :speaker - remove_column :talks, :language - remove_column :talks, :summary - rename_column :talks, :starts_at, :start_at - rename_column :talks, :ends_at, :end_at - - add_column :talks, :code, :string - add_column :talks, :email, :string, :null => false - end - - def self.down - add_column :talks, :title, :string - add_column :talks, :speaker, :string - add_column :talks, :language, :string - add_column :talks, :summary, :string - rename_column :talks, :start_at, :starts_at - rename_column :talks, :end_at, :ends_at - - remove_column :talks, :email - remove_column :talks, :code - end -end diff --git a/db/migrate/20090702022049_create_talk_descriptions.rb b/db/migrate/20090702022049_create_talk_descriptions.rb deleted file mode 100644 index 442012fd..00000000 --- a/db/migrate/20090702022049_create_talk_descriptions.rb +++ /dev/null @@ -1,17 +0,0 @@ -class CreateTalkDescriptions < ActiveRecord::Migration - def self.up - create_table :talk_descriptions do |t| - t.text :title - t.text :abstract - t.text :speaker - t.text :profile - t.string :locale, :null => false - t.references :talk - t.timestamps - end - end - - def self.down - drop_table :talk_descriptions - end -end diff --git a/db/migrate/20090704090333_change_room_type_on_talks.rb b/db/migrate/20090704090333_change_room_type_on_talks.rb deleted file mode 100644 index fa0c9f95..00000000 --- a/db/migrate/20090704090333_change_room_type_on_talks.rb +++ /dev/null @@ -1,9 +0,0 @@ -class ChangeRoomTypeOnTalks < ActiveRecord::Migration - def self.up - change_column :talks, :room, :string - end - - def self.down - change_column :talks, :room, :integer - end -end diff --git a/db/migrate/20100228053824_add_nicovideo_links_to_talks.rb b/db/migrate/20100228053824_add_nicovideo_links_to_talks.rb deleted file mode 100644 index e5b6fe62..00000000 --- a/db/migrate/20100228053824_add_nicovideo_links_to_talks.rb +++ /dev/null @@ -1,9 +0,0 @@ -class AddNicovideoLinksToTalks < ActiveRecord::Migration - def self.up - add_column :talks, :nicovideo_links, :text - end - - def self.down - remove_column :talks, :nicovideo_links - end -end diff --git a/db/migrate/20100309010927_add_material_link_to_talks.rb b/db/migrate/20100309010927_add_material_link_to_talks.rb deleted file mode 100644 index 4092e9c3..00000000 --- a/db/migrate/20100309010927_add_material_link_to_talks.rb +++ /dev/null @@ -1,9 +0,0 @@ -class AddMaterialLinkToTalks < ActiveRecord::Migration - def self.up - add_column :talks, :material_link, :string - end - - def self.down - remove_column :talks, :material_link - end -end diff --git a/db/migrate/20100405173605_create_rubyists.rb b/db/migrate/20100405173605_create_rubyists.rb new file mode 100644 index 00000000..2d6b501e --- /dev/null +++ b/db/migrate/20100405173605_create_rubyists.rb @@ -0,0 +1,15 @@ +class CreateRubyists < ActiveRecord::Migration + def self.up + create_table :rubyists do |t| + t.string :name + t.string :email + t.integer :twitter_user_id + + t.timestamps + end + end + + def self.down + drop_table :rubyists + end +end diff --git a/db/migrate/20100412171155_create_ruby_kaigis.rb b/db/migrate/20100412171155_create_ruby_kaigis.rb new file mode 100644 index 00000000..6435744a --- /dev/null +++ b/db/migrate/20100412171155_create_ruby_kaigis.rb @@ -0,0 +1,13 @@ +class CreateRubyKaigis < ActiveRecord::Migration + def self.up + create_table :ruby_kaigis do |t| + t.integer :year, :null => false + + t.timestamps + end + end + + def self.down + drop_table :ruby_kaigis + end +end diff --git a/db/migrate/20100413151929_create_product_items.rb b/db/migrate/20100413151929_create_product_items.rb new file mode 100644 index 00000000..71fd98cf --- /dev/null +++ b/db/migrate/20100413151929_create_product_items.rb @@ -0,0 +1,16 @@ +class CreateProductItems < ActiveRecord::Migration + def self.up + create_table :product_items do |t| + t.string :item_code, :null => false + t.integer :price, :null => false + t.integer :stock, :null => false, :default => 0 + t.references :ruby_kaigi, :null => false + + t.timestamps + end + end + + def self.down + drop_table :product_items + end +end diff --git a/db/migrate/20100413160616_create_order_items.rb b/db/migrate/20100413160616_create_order_items.rb new file mode 100644 index 00000000..b076e402 --- /dev/null +++ b/db/migrate/20100413160616_create_order_items.rb @@ -0,0 +1,15 @@ +class CreateOrderItems < ActiveRecord::Migration + def self.up + create_table :order_items do |t| + t.references :order, :null => false + t.references :product_item, :null => false + t.integer :quantity, :null => false, :default => 1 + + t.timestamps + end + end + + def self.down + drop_table :order_items + end +end diff --git a/db/migrate/20100413162440_create_orders.rb b/db/migrate/20100413162440_create_orders.rb new file mode 100644 index 00000000..0074a19e --- /dev/null +++ b/db/migrate/20100413162440_create_orders.rb @@ -0,0 +1,15 @@ +class CreateOrders < ActiveRecord::Migration + def self.up + create_table :orders do |t| + t.references :rubyist, :null => false + t.boolean :return_from_paypal, :null => false, :default => false + t.boolean :ipn_notified, :null => false, :default => false + + t.timestamps + end + end + + def self.down + drop_table :orders + end +end diff --git a/db/migrate/20100413163710_create_paypal_payment_notification_items.rb b/db/migrate/20100413163710_create_paypal_payment_notification_items.rb new file mode 100644 index 00000000..4aa2d043 --- /dev/null +++ b/db/migrate/20100413163710_create_paypal_payment_notification_items.rb @@ -0,0 +1,17 @@ +class CreatePaypalPaymentNotificationItems < ActiveRecord::Migration + def self.up + create_table :paypal_payment_notification_items do |t| + t.references :paypal_payment_notification_id, :null => false + t.string :item_name, :null => false + t.string :item_number, :null => false + t.integer :mc_gross, :null => false + t.integer :quantity, :null => false + + t.timestamps + end + end + + def self.down + drop_table :paypal_payment_notification_items + end +end diff --git a/db/migrate/20100413164518_create_paypal_payment_notifications.rb b/db/migrate/20100413164518_create_paypal_payment_notifications.rb new file mode 100644 index 00000000..4077f142 --- /dev/null +++ b/db/migrate/20100413164518_create_paypal_payment_notifications.rb @@ -0,0 +1,27 @@ +class CreatePaypalPaymentNotifications < ActiveRecord::Migration + def self.up + create_table :paypal_payment_notifications do |t| + t.string :payment_status, :null => false + t.string :txn_id + t.string :receipt_id + t.string :payer_email + t.string :last_name + t.string :first_name + t.string :payer_id + t.string :address_zip + t.string :address_state + t.string :address_city + t.string :address_street + t.string :address_name + t.string :payment_date + t.integer :tax + t.text :notified_params, :null => false + t.references :order, :null => false + t.timestamps + end + end + + def self.down + drop_table :paypal_payment_notifications + end +end diff --git a/db/migrate/20100417180801_add_identity_url_to_rubyists.rb b/db/migrate/20100417180801_add_identity_url_to_rubyists.rb new file mode 100644 index 00000000..b7bd8805 --- /dev/null +++ b/db/migrate/20100417180801_add_identity_url_to_rubyists.rb @@ -0,0 +1,9 @@ +class AddIdentityUrlToRubyists < ActiveRecord::Migration + def self.up + add_column :rubyists, :identity_url, :string + end + + def self.down + remove_column :rubyists, :identity_url + end +end diff --git a/db/migrate/20100418181206_add_language_to_headline_entries.rb b/db/migrate/20100418181206_add_language_to_headline_entries.rb new file mode 100644 index 00000000..659534a7 --- /dev/null +++ b/db/migrate/20100418181206_add_language_to_headline_entries.rb @@ -0,0 +1,10 @@ +class AddLanguageToHeadlineEntries < ActiveRecord::Migration + def self.up + add_column :headline_entries, :language, :string + add_index :headline_entries, :language + end + + def self.down + remove_column :headline_entries, :language + end +end diff --git a/db/migrate/20100420085246_add_subtotal_price_to_order_items.rb b/db/migrate/20100420085246_add_subtotal_price_to_order_items.rb new file mode 100644 index 00000000..9119a8ca --- /dev/null +++ b/db/migrate/20100420085246_add_subtotal_price_to_order_items.rb @@ -0,0 +1,9 @@ +class AddSubtotalPriceToOrderItems < ActiveRecord::Migration + def self.up + add_column :order_items, :subtotal_price, :integer, :null => false, :default => 0 + end + + def self.down + remove_column :order_items, :subtotal_price + end +end diff --git a/db/migrate/20100420133635_add_purchased_at_to_orders.rb b/db/migrate/20100420133635_add_purchased_at_to_orders.rb new file mode 100644 index 00000000..ca9523cf --- /dev/null +++ b/db/migrate/20100420133635_add_purchased_at_to_orders.rb @@ -0,0 +1,9 @@ +class AddPurchasedAtToOrders < ActiveRecord::Migration + def self.up + add_column :orders, :purchased_at, :timestamp + end + + def self.down + remove_column :orders, :purchased_at + end +end diff --git a/db/migrate/20100420134136_add_invoice_to_paypal_payment_notifications.rb b/db/migrate/20100420134136_add_invoice_to_paypal_payment_notifications.rb new file mode 100644 index 00000000..6e951025 --- /dev/null +++ b/db/migrate/20100420134136_add_invoice_to_paypal_payment_notifications.rb @@ -0,0 +1,9 @@ +class AddInvoiceToPaypalPaymentNotifications < ActiveRecord::Migration + def self.up + add_column :paypal_payment_notifications, :invoice, :string + end + + def self.down + remove_column :paypal_payment_notifications, :invoice + end +end diff --git a/db/migrate/20100420144511_rename_subtotal_price_to_price_on_order_items.rb b/db/migrate/20100420144511_rename_subtotal_price_to_price_on_order_items.rb new file mode 100644 index 00000000..33fd9ef8 --- /dev/null +++ b/db/migrate/20100420144511_rename_subtotal_price_to_price_on_order_items.rb @@ -0,0 +1,9 @@ +class RenameSubtotalPriceToPriceOnOrderItems < ActiveRecord::Migration + def self.up + rename_column :order_items, :subtotal_price, :price + end + + def self.down + rename_column :order_items, :price, :subtotal_price + end +end diff --git a/db/migrate/20100420155418_add_price_to_orders.rb b/db/migrate/20100420155418_add_price_to_orders.rb new file mode 100644 index 00000000..eeb38eb2 --- /dev/null +++ b/db/migrate/20100420155418_add_price_to_orders.rb @@ -0,0 +1,9 @@ +class AddPriceToOrders < ActiveRecord::Migration + def self.up + add_column :orders, :price, :integer, :default => 0, :null => false + end + + def self.down + remove_column :orders, :price + end +end diff --git a/db/migrate/20100420161256_drop_paypal_payment_notification_items.rb b/db/migrate/20100420161256_drop_paypal_payment_notification_items.rb new file mode 100644 index 00000000..6bb760ae --- /dev/null +++ b/db/migrate/20100420161256_drop_paypal_payment_notification_items.rb @@ -0,0 +1,17 @@ +class DropPaypalPaymentNotificationItems < ActiveRecord::Migration + def self.up + drop_table :paypal_payment_notification_items + end + + def self.down + create_table :paypal_payment_notification_items do |t| + t.references :paypal_payment_notification_id, :null => false + t.string :item_name, :null => false + t.string :item_number, :null => false + t.integer :mc_gross, :null => false + t.integer :quantity, :null => false + + t.timestamps + end + end +end diff --git a/db/migrate/20100420161806_remove_order_id_from_paypal_payment_notifications.rb b/db/migrate/20100420161806_remove_order_id_from_paypal_payment_notifications.rb new file mode 100644 index 00000000..7145b098 --- /dev/null +++ b/db/migrate/20100420161806_remove_order_id_from_paypal_payment_notifications.rb @@ -0,0 +1,11 @@ +class RemoveOrderIdFromPaypalPaymentNotifications < ActiveRecord::Migration + def self.up + remove_column :paypal_payment_notifications, :order_id + rename_column :paypal_payment_notifications, :notified_params, :notified_params_as_json + end + + def self.down + add_column :paypal_payment_notifications, :order_id, :integer, :null => false + rename_column :paypal_payment_notifications, :notified_params_as_json, :notified_params + end +end diff --git a/db/migrate/20100420162815_add_paypal_payment_notification_id_to_orders.rb b/db/migrate/20100420162815_add_paypal_payment_notification_id_to_orders.rb new file mode 100644 index 00000000..48aa436e --- /dev/null +++ b/db/migrate/20100420162815_add_paypal_payment_notification_id_to_orders.rb @@ -0,0 +1,11 @@ +class AddPaypalPaymentNotificationIdToOrders < ActiveRecord::Migration + def self.up + add_column :orders, :paypal_payment_notification_id, :integer + remove_column :orders, :ipn_notified + end + + def self.down + remove_column :orders, :paypal_payment_notification_id + add_column :orders, :ipn_notified, :boolean, :default => false, :null => false + end +end diff --git a/db/migrate/20100426054642_create_delayed_jobs.rb b/db/migrate/20100426054642_create_delayed_jobs.rb new file mode 100644 index 00000000..ac579dfc --- /dev/null +++ b/db/migrate/20100426054642_create_delayed_jobs.rb @@ -0,0 +1,21 @@ +class CreateDelayedJobs < ActiveRecord::Migration + def self.up + create_table :delayed_jobs, :force => true do |table| + table.integer :priority, :default => 0 # Allows some jobs to jump to the front of the queue + table.integer :attempts, :default => 0 # Provides for retries, but still fail eventually. + table.text :handler # YAML-encoded string of the object that will do work + table.text :last_error # reason for last failure (See Note below) + table.datetime :run_at # When to run. Could be Time.zone.now for immediately, or sometime in the future. + table.datetime :locked_at # Set when a client is working on this object + table.datetime :failed_at # Set when all retries have failed (actually, by default, the record is deleted instead) + table.string :locked_by # Who is working on this object (if locked) + table.timestamps + end + + add_index :delayed_jobs, [:priority, :run_at], :name => 'delayed_jobs_priority' + end + + def self.down + drop_table :delayed_jobs + end +end \ No newline at end of file diff --git a/db/migrate/20100426072425_create_contributions.rb b/db/migrate/20100426072425_create_contributions.rb new file mode 100644 index 00000000..13729a3b --- /dev/null +++ b/db/migrate/20100426072425_create_contributions.rb @@ -0,0 +1,15 @@ +class CreateContributions < ActiveRecord::Migration + def self.up + create_table :contributions do |t| + t.references :rubyist, :null => false + t.references :ruby_kaigi, :null => false + t.string :contribution_type, :null => false + + t.timestamps + end + end + + def self.down + drop_table :contributions + end +end diff --git a/db/migrate/20100428024808_add_to_capacity_and_party_capacity_to_ruby_kaigis.rb b/db/migrate/20100428024808_add_to_capacity_and_party_capacity_to_ruby_kaigis.rb new file mode 100644 index 00000000..5ffe4b48 --- /dev/null +++ b/db/migrate/20100428024808_add_to_capacity_and_party_capacity_to_ruby_kaigis.rb @@ -0,0 +1,11 @@ +class AddToCapacityAndPartyCapacityToRubyKaigis < ActiveRecord::Migration + def self.up + add_column :ruby_kaigis, :capacity, :integer, :default => 0, :null => false + add_column :ruby_kaigis, :party_capacity, :integer, :default => 0, :null => false + end + + def self.down + remove_column :ruby_kaigis, :party_capacity + remove_column :ruby_kaigis, :capacity + end +end diff --git a/db/migrate/20100429063743_add_full_name_to_rubyists.rb b/db/migrate/20100429063743_add_full_name_to_rubyists.rb new file mode 100644 index 00000000..c890956c --- /dev/null +++ b/db/migrate/20100429063743_add_full_name_to_rubyists.rb @@ -0,0 +1,19 @@ +class AddFullNameToRubyists < ActiveRecord::Migration + def self.up + change_table :rubyists do |t| + t.string :full_name + t.rename :name, :username + end + + add_index :rubyists, :username, :unique => true + end + + def self.down + remove_index :rubyists, :username + + change_table :rubyists do |t| + t.remove :full_name + t.rename :username, :name + end + end +end diff --git a/db/migrate/20100429135503_add_unique_indexes.rb b/db/migrate/20100429135503_add_unique_indexes.rb new file mode 100644 index 00000000..dce51eb4 --- /dev/null +++ b/db/migrate/20100429135503_add_unique_indexes.rb @@ -0,0 +1,15 @@ +class AddUniqueIndexes < ActiveRecord::Migration + def self.up + add_index :rubyists, :twitter_user_id, :unique => true + add_index :rubyists, :identity_url, :unique => true + add_index :ruby_kaigis, :year, :unique => true + add_index :product_items, :item_code, :unique => true + end + + def self.down + remove_index :rubyists, :twitter_user_id + remove_index :rubyists, :identity_url + remove_index :ruby_kaigis, :year + remove_index :product_items, :item_code + end +end diff --git a/db/migrate/20100430055609_add_ruby_kaigi_id_to_orders.rb b/db/migrate/20100430055609_add_ruby_kaigi_id_to_orders.rb new file mode 100644 index 00000000..c8aa475f --- /dev/null +++ b/db/migrate/20100430055609_add_ruby_kaigi_id_to_orders.rb @@ -0,0 +1,9 @@ +class AddRubyKaigiIdToOrders < ActiveRecord::Migration + def self.up + add_column :orders, :ruby_kaigi_id, :integer, :null => false, :default => 5 + end + + def self.down + remove_column :orders, :ruby_kaigi_id + end +end diff --git a/db/migrate/20100504030455_add_order_item_id_to_contributions.rb b/db/migrate/20100504030455_add_order_item_id_to_contributions.rb new file mode 100644 index 00000000..9bea7c94 --- /dev/null +++ b/db/migrate/20100504030455_add_order_item_id_to_contributions.rb @@ -0,0 +1,9 @@ +class AddOrderItemIdToContributions < ActiveRecord::Migration + def self.up + add_column :contributions, :order_item_id, :integer + end + + def self.down + remove_column :contributions, :order_item + end +end diff --git a/db/migrate/20100507143650_rename_price_to_unit_price_on_product_items.rb b/db/migrate/20100507143650_rename_price_to_unit_price_on_product_items.rb new file mode 100644 index 00000000..eafcb2d6 --- /dev/null +++ b/db/migrate/20100507143650_rename_price_to_unit_price_on_product_items.rb @@ -0,0 +1,9 @@ +class RenamePriceToUnitPriceOnProductItems < ActiveRecord::Migration + def self.up + rename_column :product_items, :price, :unit_price + end + + def self.down + rename_column :product_items, :unit_price, :price + end +end diff --git a/db/migrate/20100507162922_add_individual_sponsor_link_related_columns_to_order_items.rb b/db/migrate/20100507162922_add_individual_sponsor_link_related_columns_to_order_items.rb new file mode 100644 index 00000000..5d05bce2 --- /dev/null +++ b/db/migrate/20100507162922_add_individual_sponsor_link_related_columns_to_order_items.rb @@ -0,0 +1,11 @@ +class AddIndividualSponsorLinkRelatedColumnsToOrderItems < ActiveRecord::Migration + def self.up + add_column :order_items, :link_label, :string + add_column :order_items, :link_url, :string + end + + def self.down + remove_column :order_items, :link_url + remove_column :order_items, :link_label + end +end diff --git a/db/migrate/20100508022753_add_attend_party_to_order_items.rb b/db/migrate/20100508022753_add_attend_party_to_order_items.rb new file mode 100644 index 00000000..1a2e9789 --- /dev/null +++ b/db/migrate/20100508022753_add_attend_party_to_order_items.rb @@ -0,0 +1,9 @@ +class AddAttendPartyToOrderItems < ActiveRecord::Migration + def self.up + add_column :order_items, :attend_party, :boolean, :null => false, :default => false + end + + def self.down + remove_column :order_items, :attend_party + end +end diff --git a/db/migrate/20100508104558_add_website_to_rubyists.rb b/db/migrate/20100508104558_add_website_to_rubyists.rb new file mode 100644 index 00000000..da000f01 --- /dev/null +++ b/db/migrate/20100508104558_add_website_to_rubyists.rb @@ -0,0 +1,9 @@ +class AddWebsiteToRubyists < ActiveRecord::Migration + def self.up + add_column :rubyists, :website, :string + end + + def self.down + remove_column :rubyists, :website + end +end diff --git a/db/migrate/20100508114507_add_now_on_sale_related_columns_to_product_items.rb b/db/migrate/20100508114507_add_now_on_sale_related_columns_to_product_items.rb new file mode 100644 index 00000000..1fcb9033 --- /dev/null +++ b/db/migrate/20100508114507_add_now_on_sale_related_columns_to_product_items.rb @@ -0,0 +1,11 @@ +class AddNowOnSaleRelatedColumnsToProductItems < ActiveRecord::Migration + def self.up + add_column :product_items, :open_sale_at, :timestamp + add_column :product_items, :ready_for_sale, :boolean, :null => false, :default => false + end + + def self.down + remove_column :product_items, :ready_for_sale + remove_column :product_items, :open_sale_at + end +end diff --git a/db/migrate/20100508143518_add_invoide_code_to_orders.rb b/db/migrate/20100508143518_add_invoide_code_to_orders.rb new file mode 100644 index 00000000..44bf0b20 --- /dev/null +++ b/db/migrate/20100508143518_add_invoide_code_to_orders.rb @@ -0,0 +1,9 @@ +class AddInvoideCodeToOrders < ActiveRecord::Migration + def self.up + add_column :orders, :invoice_code, :string, :null => false, :unique => true + end + + def self.down + remove_column :orders, :invoice_code + end +end diff --git a/db/migrate/20100511094644_create_individual_sponsor_options.rb b/db/migrate/20100511094644_create_individual_sponsor_options.rb new file mode 100644 index 00000000..3cf2c7e5 --- /dev/null +++ b/db/migrate/20100511094644_create_individual_sponsor_options.rb @@ -0,0 +1,17 @@ +class CreateIndividualSponsorOptions < ActiveRecord::Migration + def self.up + create_table :individual_sponsor_options do |t| + t.integer :additional_amount, :null => false, :default => 0 + t.string :link_label + t.string :link_url + t.boolean :attend_party, :null => false, :default => false + t.integer :order_item_id, :null => false + + t.timestamps + end + end + + def self.down + drop_table :individual_sponsor_options + end +end diff --git a/db/migrate/20100512034740_rename_price_on_order_items.rb b/db/migrate/20100512034740_rename_price_on_order_items.rb new file mode 100644 index 00000000..be6d1a58 --- /dev/null +++ b/db/migrate/20100512034740_rename_price_on_order_items.rb @@ -0,0 +1,9 @@ +class RenamePriceOnOrderItems < ActiveRecord::Migration + def self.up + rename_column :order_items, :price, :unit_price + end + + def self.down + rename_column :order_items, :unit_price, :price + end +end diff --git a/db/migrate/20100512042405_remove_old_sponsor_option_columns_from_order_items.rb b/db/migrate/20100512042405_remove_old_sponsor_option_columns_from_order_items.rb new file mode 100644 index 00000000..f334a3a7 --- /dev/null +++ b/db/migrate/20100512042405_remove_old_sponsor_option_columns_from_order_items.rb @@ -0,0 +1,13 @@ +class RemoveOldSponsorOptionColumnsFromOrderItems < ActiveRecord::Migration + def self.up + remove_column :order_items, :attend_party + remove_column :order_items, :link_label + remove_column :order_items, :link_url + end + + def self.down + add_column :order_items, :link_label, :string + add_column :order_items, :link_url, :string + add_column :order_items, :attend_party, :boolean, :default => false, :null => false + end +end diff --git a/db/migrate/20100516162909_add_avatar_type_to_rubyists.rb b/db/migrate/20100516162909_add_avatar_type_to_rubyists.rb new file mode 100644 index 00000000..466d775a --- /dev/null +++ b/db/migrate/20100516162909_add_avatar_type_to_rubyists.rb @@ -0,0 +1,9 @@ +class AddAvatarTypeToRubyists < ActiveRecord::Migration + def self.up + add_column :rubyists, :avatar_type, :string, :null => false, :default => 'default' + end + + def self.down + remove_column :rubyists, :avatar_type + end +end diff --git a/db/migrate/20100523082331_create_time_slits.rb b/db/migrate/20100523082331_create_time_slits.rb new file mode 100644 index 00000000..3fdb5fcf --- /dev/null +++ b/db/migrate/20100523082331_create_time_slits.rb @@ -0,0 +1,14 @@ +class CreateTimeSlits < ActiveRecord::Migration + def self.up + create_table :time_slits do |t| + t.datetime :start_at + t.datetime :end_at + + t.timestamps + end + end + + def self.down + drop_table :time_slits + end +end diff --git a/db/migrate/20100523083437_create_rooms.rb b/db/migrate/20100523083437_create_rooms.rb new file mode 100644 index 00000000..fff3626f --- /dev/null +++ b/db/migrate/20100523083437_create_rooms.rb @@ -0,0 +1,17 @@ +class CreateRooms < ActiveRecord::Migration + def self.up + create_table :rooms do |t| + t.string :name_en + t.string :name_ja + t.string :floor_en + t.string :floor_ja + t.integer :sort_order + + t.timestamps + end + end + + def self.down + drop_table :rooms + end +end diff --git a/db/migrate/20100523095617_create_events.rb b/db/migrate/20100523095617_create_events.rb new file mode 100644 index 00000000..cb5b8c95 --- /dev/null +++ b/db/migrate/20100523095617_create_events.rb @@ -0,0 +1,23 @@ +class CreateEvents < ActiveRecord::Migration + def self.up + create_table :events do |t| + t.string :title_en + t.string :title_ja + t.text :abstract_en + t.text :abstract_ja + t.string :detail_en + t.string :detail_ja + t.string :additional_info + t.string :lang + t.string :required_equipment + t.integer :parent_event_id + t.boolean :break + + t.timestamps + end + end + + def self.down + drop_table :events + end +end diff --git a/db/migrate/20100523103554_create_event_rubyists.rb b/db/migrate/20100523103554_create_event_rubyists.rb new file mode 100644 index 00000000..74113186 --- /dev/null +++ b/db/migrate/20100523103554_create_event_rubyists.rb @@ -0,0 +1,14 @@ +class CreateEventRubyists < ActiveRecord::Migration + def self.up + create_table :event_rubyists do |t| + t.references :event + t.references :rubyist + + t.timestamps + end + end + + def self.down + drop_table :event_rubyists + end +end diff --git a/db/migrate/20100523103700_create_event_rooms.rb b/db/migrate/20100523103700_create_event_rooms.rb new file mode 100644 index 00000000..4de6d071 --- /dev/null +++ b/db/migrate/20100523103700_create_event_rooms.rb @@ -0,0 +1,14 @@ +class CreateEventRooms < ActiveRecord::Migration + def self.up + create_table :event_rooms do |t| + t.references :event + t.references :room + + t.timestamps + end + end + + def self.down + drop_table :event_rooms + end +end diff --git a/db/migrate/20100523103749_create_event_time_slits.rb b/db/migrate/20100523103749_create_event_time_slits.rb new file mode 100644 index 00000000..e9fe417d --- /dev/null +++ b/db/migrate/20100523103749_create_event_time_slits.rb @@ -0,0 +1,14 @@ +class CreateEventTimeSlits < ActiveRecord::Migration + def self.up + create_table :event_time_slits do |t| + t.references :event + t.references :time_slit + + t.timestamps + end + end + + def self.down + drop_table :event_time_slits + end +end diff --git a/db/migrate/20100526011648_add_registration_open_at_to_ruby_kaigis.rb b/db/migrate/20100526011648_add_registration_open_at_to_ruby_kaigis.rb new file mode 100644 index 00000000..970176eb --- /dev/null +++ b/db/migrate/20100526011648_add_registration_open_at_to_ruby_kaigis.rb @@ -0,0 +1,9 @@ +class AddRegistrationOpenAtToRubyKaigis < ActiveRecord::Migration + def self.up + add_column :ruby_kaigis, :registration_open_at, :datetime + end + + def self.down + remove_column :ruby_kaigis, :registration_open_at + end +end diff --git a/db/migrate/20100614074903_create_tickets.rb b/db/migrate/20100614074903_create_tickets.rb new file mode 100644 index 00000000..ea60271a --- /dev/null +++ b/db/migrate/20100614074903_create_tickets.rb @@ -0,0 +1,20 @@ +class CreateTickets < ActiveRecord::Migration + def self.up + create_table :tickets do |t| + t.string :ticket_code, :null => false, :unique => true + t.string :ticket_type, :null => false + t.string :code4url, :null => false, :unique => true + t.string :name, :null => false + t.string :email, :null => false + t.references :contribution + t.references :rubyist + t.references :ruby_kaigi, :null => false + + t.timestamps + end + end + + def self.down + drop_table :tickets + end +end diff --git a/db/migrate/20100615020038_add_presenter_name_to_events.rb b/db/migrate/20100615020038_add_presenter_name_to_events.rb new file mode 100644 index 00000000..870c68a8 --- /dev/null +++ b/db/migrate/20100615020038_add_presenter_name_to_events.rb @@ -0,0 +1,9 @@ +class AddPresenterNameToEvents < ActiveRecord::Migration + def self.up + add_column :events, :presenter_name, :string + end + + def self.down + remove_column :events, :presenter_name + end +end diff --git a/db/migrate/20100615054304_add_anonymous_to_individual_sponsor_options.rb b/db/migrate/20100615054304_add_anonymous_to_individual_sponsor_options.rb new file mode 100644 index 00000000..b08fd206 --- /dev/null +++ b/db/migrate/20100615054304_add_anonymous_to_individual_sponsor_options.rb @@ -0,0 +1,9 @@ +class AddAnonymousToIndividualSponsorOptions < ActiveRecord::Migration + def self.up + add_column :individual_sponsor_options, :anonymous, :boolean, :default => false + end + + def self.down + remove_column :individual_sponsor_options, :anonymous + end +end diff --git a/db/migrate/20100727123124_add_extra_ticket_type_to_tickets.rb b/db/migrate/20100727123124_add_extra_ticket_type_to_tickets.rb new file mode 100644 index 00000000..8298ed8f --- /dev/null +++ b/db/migrate/20100727123124_add_extra_ticket_type_to_tickets.rb @@ -0,0 +1,9 @@ +class AddExtraTicketTypeToTickets < ActiveRecord::Migration + def self.up + add_column :tickets, :extra_ticket_type, :string + end + + def self.down + remove_column :tickets, :extra_ticket_type + end +end diff --git a/db/migrate/20100731074536_add_presenter_profile_to_event.rb b/db/migrate/20100731074536_add_presenter_profile_to_event.rb new file mode 100644 index 00000000..71100075 --- /dev/null +++ b/db/migrate/20100731074536_add_presenter_profile_to_event.rb @@ -0,0 +1,11 @@ +class AddPresenterProfileToEvent < ActiveRecord::Migration + def self.up + add_column :events, :presenter_profile_ja, :text, :default => "" + add_column :events, :presenter_profile_en, :text, :default => "" + end + + def self.down + remove_column :events, :presenter_profile_en + remove_column :events, :presenter_profile_ja + end +end diff --git a/db/migrate/20100901030104_add_presentation_material_to_events.rb b/db/migrate/20100901030104_add_presentation_material_to_events.rb new file mode 100644 index 00000000..aefa7c9d --- /dev/null +++ b/db/migrate/20100901030104_add_presentation_material_to_events.rb @@ -0,0 +1,9 @@ +class AddPresentationMaterialToEvents < ActiveRecord::Migration + def self.up + add_column :events, :presentation_material, :string + end + + def self.down + remove_column :events, :presentation_material + end +end diff --git a/db/migrate/20110125140736_add_vimeo_id_to_events.rb b/db/migrate/20110125140736_add_vimeo_id_to_events.rb new file mode 100644 index 00000000..7bd8493e --- /dev/null +++ b/db/migrate/20110125140736_add_vimeo_id_to_events.rb @@ -0,0 +1,9 @@ +class AddVimeoIdToEvents < ActiveRecord::Migration + def self.up + add_column :events, :vimeo_id, :integer + end + + def self.down + remove_column :events, :vimeo_id + end +end diff --git a/db/migrate/20110202151624_add_nicovideo_id_to_events.rb b/db/migrate/20110202151624_add_nicovideo_id_to_events.rb new file mode 100644 index 00000000..8aca6918 --- /dev/null +++ b/db/migrate/20110202151624_add_nicovideo_id_to_events.rb @@ -0,0 +1,9 @@ +class AddNicovideoIdToEvents < ActiveRecord::Migration + def self.up + add_column :events, :nicovideo_id, :string + end + + def self.down + remove_column :events, :nicovideo_id + end +end diff --git a/db/schema.rb b/db/schema.rb new file mode 100644 index 00000000..1a8bd81a --- /dev/null +++ b/db/schema.rb @@ -0,0 +1,219 @@ +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended to check this file into your version control system. + +ActiveRecord::Schema.define(:version => 20110202151624) do + + create_table "contributions", :force => true do |t| + t.integer "rubyist_id", :null => false + t.integer "ruby_kaigi_id", :null => false + t.string "contribution_type", :null => false + t.datetime "created_at" + t.datetime "updated_at" + t.integer "order_item_id" + end + + create_table "delayed_jobs", :force => true do |t| + t.integer "priority", :default => 0 + t.integer "attempts", :default => 0 + t.text "handler" + t.text "last_error" + t.datetime "run_at" + t.datetime "locked_at" + t.datetime "failed_at" + t.string "locked_by" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority" + + create_table "event_rooms", :force => true do |t| + t.integer "event_id" + t.integer "room_id" + t.datetime "created_at" + t.datetime "updated_at" + end + + create_table "event_rubyists", :force => true do |t| + t.integer "event_id" + t.integer "rubyist_id" + t.datetime "created_at" + t.datetime "updated_at" + end + + create_table "event_time_slits", :force => true do |t| + t.integer "event_id" + t.integer "time_slit_id" + t.datetime "created_at" + t.datetime "updated_at" + end + + create_table "events", :force => true do |t| + t.string "title_en" + t.string "title_ja" + t.text "abstract_en" + t.text "abstract_ja" + t.string "detail_en" + t.string "detail_ja" + t.string "additional_info" + t.string "lang" + t.string "required_equipment" + t.integer "parent_event_id" + t.boolean "break" + t.datetime "created_at" + t.datetime "updated_at" + t.string "presenter_name" + t.text "presenter_profile_ja" + t.text "presenter_profile_en" + t.string "presentation_material" + t.integer "vimeo_id" + t.string "nicovideo_id" + end + + create_table "headline_entries", :force => true do |t| + t.text "title" + t.datetime "time" + t.text "link" + t.text "content" + t.datetime "created_at" + t.datetime "updated_at" + t.string "language" + end + + add_index "headline_entries", ["language"], :name => "index_headline_entries_on_language" + add_index "headline_entries", ["time"], :name => "index_headline_entries_on_time" + + create_table "individual_sponsor_options", :force => true do |t| + t.integer "additional_amount", :default => 0, :null => false + t.string "link_label" + t.string "link_url" + t.boolean "attend_party", :default => false, :null => false + t.integer "order_item_id", :null => false + t.datetime "created_at" + t.datetime "updated_at" + t.boolean "anonymous", :default => false + end + + create_table "order_items", :force => true do |t| + t.integer "order_id", :null => false + t.integer "product_item_id", :null => false + t.integer "quantity", :default => 1, :null => false + t.datetime "created_at" + t.datetime "updated_at" + t.integer "unit_price", :default => 0, :null => false + end + + create_table "orders", :force => true do |t| + t.integer "rubyist_id", :null => false + t.boolean "return_from_paypal", :default => false, :null => false + t.datetime "created_at" + t.datetime "updated_at" + t.datetime "purchased_at" + t.integer "price", :default => 0, :null => false + t.integer "paypal_payment_notification_id" + t.integer "ruby_kaigi_id", :default => 5, :null => false + t.string "invoice_code", :null => false + end + + create_table "paypal_payment_notifications", :force => true do |t| + t.string "payment_status", :null => false + t.string "txn_id" + t.string "receipt_id" + t.string "payer_email" + t.string "last_name" + t.string "first_name" + t.string "payer_id" + t.string "address_zip" + t.string "address_state" + t.string "address_city" + t.string "address_street" + t.string "address_name" + t.string "payment_date" + t.integer "tax" + t.text "notified_params_as_json", :null => false + t.datetime "created_at" + t.datetime "updated_at" + t.string "invoice" + end + + create_table "product_items", :force => true do |t| + t.string "item_code", :null => false + t.integer "unit_price", :null => false + t.integer "stock", :default => 0, :null => false + t.integer "ruby_kaigi_id", :null => false + t.datetime "created_at" + t.datetime "updated_at" + t.datetime "open_sale_at" + t.boolean "ready_for_sale", :default => false, :null => false + end + + add_index "product_items", ["item_code"], :name => "index_product_items_on_item_code", :unique => true + + create_table "rooms", :force => true do |t| + t.string "name_en" + t.string "name_ja" + t.string "floor_en" + t.string "floor_ja" + t.integer "sort_order" + t.datetime "created_at" + t.datetime "updated_at" + end + + create_table "ruby_kaigis", :force => true do |t| + t.integer "year", :null => false + t.datetime "created_at" + t.datetime "updated_at" + t.integer "capacity", :default => 0, :null => false + t.integer "party_capacity", :default => 0, :null => false + t.datetime "registration_open_at" + end + + add_index "ruby_kaigis", ["year"], :name => "index_ruby_kaigis_on_year", :unique => true + + create_table "rubyists", :force => true do |t| + t.string "username" + t.string "email" + t.integer "twitter_user_id" + t.datetime "created_at" + t.datetime "updated_at" + t.string "identity_url" + t.string "full_name" + t.string "website" + t.string "avatar_type", :default => "default", :null => false + end + + add_index "rubyists", ["identity_url"], :name => "index_rubyists_on_identity_url", :unique => true + add_index "rubyists", ["twitter_user_id"], :name => "index_rubyists_on_twitter_user_id", :unique => true + add_index "rubyists", ["username"], :name => "index_rubyists_on_username", :unique => true + + create_table "tickets", :force => true do |t| + t.string "ticket_code", :null => false + t.string "ticket_type", :null => false + t.string "code4url", :null => false + t.string "name", :null => false + t.string "email", :null => false + t.integer "contribution_id" + t.integer "rubyist_id" + t.integer "ruby_kaigi_id", :null => false + t.datetime "created_at" + t.datetime "updated_at" + t.string "extra_ticket_type" + end + + create_table "time_slits", :force => true do |t| + t.datetime "start_at" + t.datetime "end_at" + t.datetime "created_at" + t.datetime "updated_at" + end + +end diff --git a/db/seeds.rb b/db/seeds.rb new file mode 100644 index 00000000..2c3c32a3 --- /dev/null +++ b/db/seeds.rb @@ -0,0 +1,25 @@ +%w(ruby_kaigis product_items).each do |t| + conn = ActiveRecord::Base.connection + conn.execute("truncate #{t};") + conn.execute("alter table #{t} auto_increment = 1;") +end + +(2006..2009).to_a.each do |year| + RubyKaigi.create(:year => year, :capacity => 0, :party_capacity => 0) +end +rk10 = RubyKaigi.create(:year => 2010, :capacity => 900, :party_capacity => 310, + :registration_open_at => DateTime.parse('2010-05-26 20:59:59')) +ProductItem.create(:item_code => 'rk10', :unit_price => 6000, :stock => 700, :ruby_kaigi => rk10, + :open_sale_at => DateTime.parse('2010-06-15 19:00:00'), :ready_for_sale => true) +ProductItem.create(:item_code => 'rk10_party', :unit_price => 5000, :stock => 50, :ruby_kaigi => rk10, + :open_sale_at => DateTime.parse('2010-05-26 20:59:59'), :ready_for_sale => true) +ProductItem.create(:item_code => 'rk10_individual_sponsor', :unit_price => 20000, :stock => 100, :ruby_kaigi => rk10, + :open_sale_at => DateTime.parse('2010-05-26 20:59:59'), :ready_for_sale => true) + +rk11 = RubyKaigi.create(:year => 2011, :capacity => 1000, :party_capacity => 450) +ProductItem.create(:item_code => 'rk11', :unit_price => 6000, :stock => 700, :ruby_kaigi => rk11, + :open_sale_at => DateTime.parse('2011-05-22 01:00:00 UTC'), :ready_for_sale => true) +ProductItem.create(:item_code => 'rk11_party', :unit_price => 5000, :stock => 200, :ruby_kaigi => rk11, + :open_sale_at => DateTime.parse('2011-05-22 01:00:00 UTC'), :ready_for_sale => true) +ProductItem.create(:item_code => 'rk11_individual_sponsor', :unit_price => 15000, :stock => 200, :ruby_kaigi => rk11, + :open_sale_at => DateTime.parse('2011-05-17 11:30:00 UTC'), :ready_for_sale => true) diff --git a/db/seeds_2010.rb b/db/seeds_2010.rb new file mode 100644 index 00000000..992e7700 --- /dev/null +++ b/db/seeds_2010.rb @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +%w(time_slits events rooms event_rubyists event_rooms event_time_slits).each do |t| + conn = ActiveRecord::Base.connection + conn.execute("truncate #{t};") + conn.execute("alter table #{t} auto_increment = 1;") +end + +# time_slit +[Time.zone.parse('2010/8/27 9:30'), Time.zone.parse('2010/8/28 9:30'), Time.zone.parse('2010/8/29 9:30')].each do |start_time| + t, end_time = start_time, 10.hours.since(start_time) + while t < end_time + TimeSlit.create :start_at => t, :end_at => 30.minutes.since(t) + t += 30.minutes + end +end + +# room: name_en: string, name_ja: string, floor_en: string, floor_ja: string, sort_order: integer +@big = Room.create :name_en => 'Main Convention Hall', :name_ja => '大ホール', :floor_en => '2nd floor', :floor_ja => '2階', :sort_order => 1 +@medium = Room.create :name_en => 'Convention Hall 200', :name_ja => '中ホール200', :floor_en => '2nd floor', :floor_ja => '2階', :sort_order => 2 +@b202 = Room.create :name_en => '202-B', :name_ja => '202-B', :floor_en => '2nd floor', :floor_ja => '2階', :sort_order => 3 +@a202 = Room.create :name_en => '202-A', :name_ja => '202-A', :floor_en => '2nd floor', :floor_ja => '2階', :sort_order => 4 +@b201 = Room.create :name_en => '201-B', :name_ja => '201-B', :floor_en => '2nd floor', :floor_ja => '2階', :sort_order => 5 +@a201 = Room.create :name_en => '201-A', :name_ja => '201-A', :floor_en => '2nd floor', :floor_ja => '2階', :sort_order => 6 +@foyer = Room.create :name_en => 'Foyer', :name_ja => 'ホワイエ', :floor_en => '2nd floor', :floor_ja => '2階', :sort_order => 7 + +# events +%w[0827 0828 0829].each do |day| + load File.dirname(__FILE__) + "/seeds_2010#{day}.rb" +end diff --git a/db/seeds_20100827.rb b/db/seeds_20100827.rb new file mode 100644 index 00000000..ec6dc3a9 --- /dev/null +++ b/db/seeds_20100827.rb @@ -0,0 +1,347 @@ +# -*- coding: utf-8 -*- +EventLoader.with_options(:day => 27) do |e27| + e27.with_options(:room => @big) do |e27_big| + e27_big.create :title => 'Opening', :from => '12:30', :vimeo_id => 14548019, :nicovideo_id => 'sm11901507' + e27_big.create :title => 'Conflicts and Resolutions in Ruby and Rails', :speaker => 'Akira Matsuda, Masayoshi Takahashi and others(TBA)', :from => '13:00', :to => '14:00', :profile => (< "To Be Announced (We're sorry, at Jeremy's request, his keynote has been cancelled)", :abstract_ja => "Jeremy Kemper氏の基調講演はご本人の都合により中止となりました。代替プログラムについては、追ってアナウンスいたします。悪しからずご了承ください", :lang => 'ja and/or en', :vimeo_id => 14548338, :nicovideo_id => 'sm11901600' +To Be Announced +PROFILE + e27_big.create :title => 'jpmobile on Rails 3', :title_ja => 'jpmobile on Rails 3 の作り方', :speaker => 'Shin-ichiro OGAWA (Tokyu.rb / Nihon Ruby no Kai)', :from => '14:00', :abstract => (< (< 'ja', :profile_ja => (< (< (< 14548658, :nicovideo_id => 'sm11901698' +Jpmobile is a Rails plugin for Japanese mobile phones. This plugin features the ability to convert Japanese emoticons and Japanese kanji codes, and session management for mobile phones which can't handle HTTP cookies. In this talk, I will introduce how we rebuilt the jpmobile codebase to support Rack applications such as Rails 3 and Sinatra. +ABSTRACT +jpmobile を Rails 3 や Sinatra に対応させるまでの道のりを紹介。Rack化や絵文字やデコメへの対応などを、どのようにRailsをハックしたかとともに紹介します。 +ABSTRACT_JA +小川 伸一郎 (Tokyu.rb) +株式会社イオレで「らくらく連絡網」という携帯向けメーリングリストサービスの開発に従事。RubyKaigi2009を機にjpmobileのコアコミッターに。京都生まれで大阪育ちの博士(理学)。 +PROFILE_JA +Shin-ichiro OGAWA (Tokyu.rb) +Developer of Raku-Raku renraku-mou in eole. inc., which is mailing list service for Japanese mobile phone. Core commiter of jpmobile. +Born in Kyoto, grew up in Osaka. Ph.D in Physics, but It's no use for works. +PROFILE +http://www.slideshare.net/rust/jpmobile-on-rails-30 +PRESENTATION_MATERIAL + e27_big.create :title => 'Open social application development for cell-phones to begin in Ruby on Rails', :title_ja => 'Ruby on Railsではじめる携帯電話向けオープンソーシャルアプリケーション開発', :speaker => 'Masaki Yamada (Control plus Co. Ltd.)', :from => '14:30', :abstract => (< (< 'ja', :profile => (< (< 14549468, :nicovideo_id => 'sm11902001' +In the world of the open social application development for cell-phones, PHP is a major language, but the development using Ruby on Rails is possible. I show the know-how which we got through development of our product \"Sweets Collection\" and introduce open social application development using Ruby on Rails. +ABSTRACT +携帯電話向けのオープンソーシャルアプリケーション開発の世界では、PHPがメジャーな言語ですが、Ruby on Railsを使った開発も可能です。私達が自社プロダクト「スイーツコレクション」の開発を通じて得たノウハウを公開するとともに、Ruby on Railsを使ったオープンソーシャルアプリケーション開発をご紹介します。 +ABSTRACT_JA +山田将輝 (コントロールプラス株式会社) +ソーシャルゲーム作ってます +レッドブルを入力するとソースコードを出力します +社内唯一のemacs派 +@masarakki +github.com/masarakki +PROFILE_JA +http://www.slideshare.net/MasakiYamada/rubykaigi2010 +PRESENTATION_MATERIAL + e27_big.create_break :from => '15:00' + e27_big.create :title => 'Building Real Time Web', :title_ja => 'リアルタイムウェブができるまで', :speaker => 'Makoto Inoue (New Bamboo (London, UK))', :from => '15:30', :abstract => (< (< (< (< (< 14549558, :nicovideo_id => 'sm11902134' +The real time web is not about adding chat on your website. It's not really about having stock tickers. The most interesting aspect of the realtime web is to be found in augmenting the web that we already know. We can add realtime functionally to our applications as another layer of fidelity. +This is our story (New Bamboo, London, UK) of experimenting various real time web technologies and coming up with our own solutions (http://www.pusherapp.com). This is not about explaining how to use our solutions, but about sharing exciting opportunities and new technical challenges HTML5 WebSocket brings when you build real time web. +ABSTRACT +ここ最近のAjaxにかわるトレンドとしてリアルタイムウェブを利用した例が見かけられることが多いですが、その多くはチャットや株価更新などのサンプルの域をでないように見えます。弊社New Bamboo (London, UK)では、既存のリアルタイム技術をいろいろ研究した結果をPusher (http://www.pusherapp.com)というサービスとしてリリースしました。このトークでは、リリースにいたるまでの経緯をご紹介すると共に、HTML5 WebSocketを使うことによる新しい発見やチャレンジを皆様と共有していきたいと思います。 +ABSTRACT_JA +Makoto Inoue (New Bamboo) +Rubyist living in London since 2004 (though did not know about Ruby when I was in Japan. Sorry..) +ex-DBA(Sybase). Co-organises London Javascript Meetup, London NoSQL Summer. Hosts Tokyo Cabinet Wiki. Currently toying around with Golang. +PROFILE +井上真(New Bamboo) +2004年からロンドンに在住中の逆輸入Rubyist(日本にいる時はRubyのこと知りませんでした。すみません)。元DBA(Sybase)。London Javascript Meetup, London NoSQL Summerの共同運営者、Tokyo Cabinet Wiki主催、 3ヶ月ごとに興味の対象が変わるのが悩み。現在はGolangに浮気中。 +PROFILE_JA +http://www.slideshare.net/inouemak/building-realtimewebslide +PRESENTATION_MATERIAL + e27_big.create :title => 'We can make the GC X times slower than the original', :title_ja => 'われわれは、GCをX倍遅くできる', :speaker => 'nari (Network Applied Communication Laboratory)', :from => '16:00', :to => '17:00', :abstract => (< (< 'ja', :profile => (< (< (< 14549681, :nicovideo_id => 'sm11902231' +The presentation introduces the technique and a result about Lazy Sweep GC for CRuby GC. In addition, I introduce the prospects of the future GC improvement. +ABSTRACT +CRubyに対するLazySweepGCの実装方法と結果を紹介する。また、今後のGC改善の展望を述べる。 +ABSTRACT_JA +nari (Network Applied Communication Laboratory Ltd.) +A Ruby commiter. +He is good at letting it collect garbages. +He have written a japanese book: "Garbage Collection - Algorithms and implementions" +PROFILE +nari(株式会社ネットワーク応用通信研究所) +Rubyコミッタ。ゴミを集めさせることが得意。 +著書は『ガベージコレクションのアルゴリズムと実装』(共著) +PROFILE_JA +http://www.slideshare.net/authorNari/gcx +PRESENTATION_MATERIAL + e27_big.create_break :from => '17:00' + e27_big.create :title => 'The basis of making DSL with Ruby', :title_ja => 'Rubyで作るDSLの基礎', :speaker => 'Yasuko Ohba (Everyleaf Corporation)', :from => '17:30',:abstract => (< (< 'ja', :profile => (< (< (< 14549764, :nicovideo_id => 'sm11902338' +Ruby is well known as a language with which you can create your own DSL easily. Making DSL with Ruby is really easy, but there seem to be many developers who have not tried to make DSL with Ruby by design. In my opinion, there is no clear boundary between 'Useful APIs' and DSL. However, we can always judge whether a code is like DSL or not, that means, we can create DSL by design. In this talk, I'll start by looking into what DSL is and when to use it. After that I'll talk what concepts, habits and techniques you need to make your own DSL, showing typical examples from famous DSL codes like Rails, RSpec and so on. +ABSTRACT +RubyはDSLを作りやすい言語として知られています。実際に、DSLを作るのは簡単です。しかし、Rubyで意識的にDSLを作ったことのある人は意外に少ないのかもしれません。 Rubyで実現するDSLは、「使いやすいAPI」の一形態であり、ここから先がDSLだという明確な境界はありませんが、結果として出来上がったコードがDSL的かどうかは歴然と判断できます。つまり、コードをDSL的にするかどうかは開発者が意図的に選択していける事柄なのです。 本セッションでは、DSLとは何か、どんなときにDSLが有効かからはじめて、RubyでDSLを書く際に必要となる考え方、習慣、そしてテクニックを、 Rails や RSpec といった良く知られたコードを例にして話していきます。 +ABSTRACT_JA +Yasuko Ohba (Everyleaf Corporation), nay3 +A Rails application developer who loves programing. +President & CEO of Everyleaf Corporation. +One of her products is Kozuchi, a family bookkeeping web application. +Wrote the book “Ruby on Rails 逆引きクイックリファレンス” (with other authors, published by Mainichi Communications Inc.) and translated Ola Bini's "Practical JRuby on Rails Web 2.0 Projects" into Japanese (with other guys. The Japanese version, "JRuby on Rails 実践開発ガイド" was published by SHOEISHA). +PROFILE +大場寧子(株式会社万葉), nay3 +実装をこよなく愛するRailsエンジニア。株式会社万葉の代表取締役社長。 +プロダクトにWeb家計簿「小槌」など。 +著書「Ruby on Rails 逆引きクイックリファレンス」(共著、毎日コミュニケーションズ) 訳書「JRuby on Rails 実践開発ガイド」(Ola Bini 著、共訳、翔泳社)。 +PROFILE_JA +http://www.slideshare.net/nay/the-basis-of-making-dsl-with-ruby +PRESENTATION_MATERIAL + e27_big.create :title => 'Best Imitation of Your Class', :title_ja => '君のクラスの最高の偽物', :speaker => 'Shugo Maeda (Network Applied Communication Laboratory Ltd.)', :from => '18:00', :to => '19:00',:abstract => (< (< 'ja', :profile => (< (< 14549892, :nicovideo_id => 'sm11902513' +Ruby's open classes contribute to extensibility of applications such as Ruby on Rails. However, they sometimes cause serious conflicts between class extensions. This talk illustrates problems of open classes, and propose a resolution by which classes can be refined locally. + + Keywords: selector namespace, classbox, context-oriented programming +ABSTRACT +Rubyのオープンクラスは、Ruby on Railsのようなアプリケーションの拡張性に 寄与している。しかし、オープンクラスはクラス拡張間の深刻な衝突を引き起こ すこともある。この発表では、オープンクラスの問題を説明し、クラスを局所的に 変更することができるような解決法を提案する。 + + キーワード: selector namespace, classbox, context-oriented programming +ABSTRACT_JA +Shugo Maeda (Network Applied Communication Laboratory Ltd.) +He is a director of Network Applied Communication Laboratory Ltd., a co-chairperson of Ruby Association LLC, and a daimyo programmer. +PROFILE +前田 修吾(株式会社ネットワーク応用通信研究所) +株式会社ネットワーク応用通信研究所取締役。Rubyアソシエーション副理事長。大名プログラマ。 +PROFILE_JA + end + + e27.with_options(:room => @medium) do |e27_medium| + e27_medium.create :title => 'Feels Like Ruby', :speaker => 'Sarah Mei (Pivotal Labs)', :from => '14:00',:abstract => (< (< (< 14546877, :nicovideo_id => 'sm11902695' +For a Rubyist, writing Javascript is the worst part of working on a Ruby web application. Those clean, modern UIs are often made possible by incredibly complex Javascript. The helpers inevitably get in the way, and you end up writing most of it by hand. + +It is painful. + +But you can make writing Javascript code feel more like writing Ruby code. I will show techniques that go beyond \"unobtrusive\" and turn Javascript into a first-class citizen in your Ruby application. Make your Javascript more joyful! +ABSTRACT +Sarah Mei has spent most of the last dozen years writing code, and +most of the last four doing Ruby. She's a developer at Pivotal Labs, +and a pair programming fangirl. She spends a lot of her free time +showing people of all ages and backgrounds how awesome programming is +- especially, of course, with Ruby. +PROFILE +http://www.slideshare.net/sarahmei/feels-like-ruby-ruby-kaigi-2010 +PRESENTATION_MATERIAL + e27_medium.create :title => 'User Experience for Library Designers', :speaker => 'geemus (Wesley Beary)(Engine Yard)', :from => '14:30',:abstract => (< (< 14547164, :nicovideo_id => 'sm11902869' +I've written \"a lot of code\":http://github.com/geemus, both hobby and work, over the last year, and looking back I can't help but think that writing code for yourself is easy; it's writing code for others can be tough. In this session, I'll share some examples of good and bad practices gathered in my years writing code and libraries, and discuss how to get past being too close to the problem. I'll talk specifically about growing your work into something anybody (and hopefully everybody) will use. +ABSTRACT +geemus (Wesley Beary) [github.com/geemus] is an avid Rubyist and Open Source enthusiast. When not spending his spare time working on enumerable overly ambitious open source projects he spends his days developing the Engine Yard Cloud [http://www.engineyard.com/products/cloud]. +PROFILE + e27_medium.create_break :from => '15:00' + e27_medium.create :title => 'Rubygems, Bundler, and the future', :speaker => 'Carl Lerche (Engine Yard)', :from => '15:30',:abstract => (< (< 14547561, :nicovideo_id => 'sm11903005' +Rubygems has served the community well for many years. However, as applications become more and more complex, certain problems arise. Bundler was created to solve some of those problems and has been evolving rapidly based on community feedback. It's time to look at the current state of affairs and think about Rubygems 2.0. What parts of bundler could be moved upstream and what problems remain to be solved? +ABSTRACT +Until Carl Lerche discovered Ruby on Rails in 2005 he thought he would +never do web development again. It was Ruby that lured him back into +programming and open source development. Currently, he spends much of +his time at Engine Yard contributing to Rails, and in his free time, +to many side projects. +PROFILE + e27_medium.create :title => 'Truth and Consequences: Handling Ruby 1.9 Encodings in Rails', :speaker => 'Yehuda Katz (Engine Yard)', :from => '16:30',:abstract => (< 14547743, :nicovideo_id => 'sm11903438' +Ruby 1.9 adds support for many different encodings, making it possible to write Ruby web programs that can handle non-English characters well. However, these changes have had many consequences. At the beginning, the new encoding support has introduced much confusion in simple, English-only Rails applications and applications relying heavily on Unicode. Yehuda will explain the common problems caused by the changes, talk about what Rails has done to eliminate many of them, and what the Ruby community can do to make writing internationalized programs easier. +ABSTRACT + e27_medium.create :title => 'A frog in a well does not know the great sea', :title_ja => '井の中の蛙、大海を知らず', :speaker => 'Sarah Allen (Mightyverse)', :from => '16:00',:abstract => (< (< (< (< 14547648, :nicovideo_id => 'sm11903274' +When building an application it is easy to forget that most applications today are available globally and used by people who speak many languages. You may create user interface in English or Japanese, but people may choose to type their data in their native language. Web browsers will allow people to enter text in almost any script, and if you are lucky it will \"just work\" ... but often it needs a little more attention. Sarah will share anecdotes from her adventures building Mightyverse, a multi-lingual database of native language video recordings. She will highlight details of how to get unicode text in and out of a database well as how to handle multibyte text in Ruby. +ABSTRACT +アプリケーションを構築する時、ほとんどのアプリケーションが今日グローバル的に使用されること、多国語を話す人々に使用されること忘れがちになってしまいます。あなたは、英語や日本語のユーザーインターフェイスを制作するかもしれません。でも、人々は母国語でデーターを記入することを選ぶかもしれません。ウェブブラウザは、ほぼすべてのスクリプトを記入することを可能にします。もし、あなたがラッキーなら、それはなんとか機能するかもしれません。しかし、しばしば、それはもう少し注意を必要とします。サラは、ネイティブスピーカーのビデオを使用した多国語データーベースのMightyverseを構築する経験からの逸話を共有するでしょう。 サラは、どのようにしてUnicodeテキストをデータベースに出し入れするのかの詳細に重点をおきます。また、Rubyでどのようにマルチバイトテキストを扱うかにも重点をおきます。 +ABSTRACT_JA +Sarah leads a small consulting group, Blazing Cloud, and is working on a mobile-focused startup, Mightyverse. Sarah started in web development by creating Shockwave and Flash video, but has enjoyed the transition from native, proprietary code to dynamic languages and open source. In addition to mobile and web development, she regularly teaches Ruby and Rails with a test-first approach. In her spare time, Sarah works to diversify the Ruby on Rails community with a focus on outreach to women through the RailsBridge Open Workshop project. She blogs at ultrasaurus.com and tweets as @ultrasaurus. +PROFILE +http://www.slideshare.net/sarah.allen/international-web-application-development +PRESENTATION_MATERIAL + e27_medium.create_break :from => '17:00' + e27_medium.create :title => 'My many failed products', :speaker => 'jugyo (Everyleaf Corporation)', :from => '17:30',:abstract => (< (< 'ja', :profile_ja => (< (< 14547828, :nicovideo_id => 'sm11903516' +I will talk about my many failed products, and a few of my successful ones. My products can be found here: http://github.com/jugyo +ABSTRACT +私のたくさんの失敗プロダクトと少しの成功プロダクトについて話します。 私のプロダクトはここ => http://github.com/jugyo/ +ABSTRACT_JA +jugyo, 河野十行 (株式会社万葉) +Rails エンジニアであり Termtter と g の開発者。 +github.com/jugyo +PROFILE_JA +jugyo, Kazuyuki Kohno (Everyleaf Corporation) +He is a Rails engineer, and author of Termtter and g. +github.com/jugyo +PROFILE + e27_medium.create :title => 'Coding for fun, and having fun coding', :title_ja => 'みんなが楽しくプログラミング出来る魔法', :speaker => 'tenderlove (AT&T Interactive)', :from => '18:00', :to => '19:00', :abstract => (< (< (< 14547904, :nicovideo_id => 'sm11903723' +Programming for fun, or having fun programming. Ruby is the best language for both! Let's talk about programming after we've punched out from work, the programming we can do while drinking a beer, and the programming we can do to make our friends laugh. We'll take a look at projects built for fun, as well as projects built to have fun! We'll dissect them to figure out what makes them tick, then +extract techniques that we can use with our day to day tasks. +ABSTRACT +Aaron Patterson: + +Mild mannered Rubyist by day, and culinary superhero by night. When +Aaron isn’t ruining people’s lives by writing software like phuby, +enterprise, and neversaydie, he can be found writing slightly more +useful software like nokogiri. To keep up his Gameboy Lifestyle, Aaron +spends his weekdays writing high quality software for ATTi. Be sure to +catch him on Karaoke night, where you can watch him sing his favorite +smooth rock hits of the 70’s and early 80’s. +PROFILE +http://www.slideshare.net/tenderlove/having-fun-programming +PRESENTATION_MATERIAL + end + e27.create :title => 'World Wide Ruby Conferences', :title_ja => '世界の Ruby Conference から', :speaker => 'Kuniaki IGARASHI (Everyleaf Corporation)', :room => @b202, :from => '17:30', :to => '19:00',:abstract => (< (< 'en, ja', :profile => (< (< @a202) do |e27_a202| + e27_a202.create :title => 'Ruby developer meeting at Tsukuba', :title_ja => 'Ruby開発会議つくば', :speaker => 'Ruby core team', :from => '10:00', :to => '12:30',:abstract => (< 'ja' +We will hold a meeting about development of Ruby. +ABSTRACT + e27_a202.create :title => "Monthly 'toRuby' workshop in Tsukuba", :title_ja => '出張版 toRuby勉強会', :speaker => 'Shouichi Nakauchi (toRuby)', :from => '14:00', :to => '16:00',:abstract => (< (< 'ja' +Monthly 'toRuby' workshop that always holds in Nasu area comes to here Tsukuba and holds the same workshop as usual. Since we are going to prepare some subject maters, you will be able to enjoy programing Ruby. Please bring your PC for Ruby programing. + +The Nasu area is located in an only 150km north direction from Tokyo. Nasu is Tochigi-ken Nasushiobara city formally. 'to' of toTuby is 'To' of Tochigi-ken. Now, we are having programming and a discussion using the book of Mr. Masatoshi Seki's dRuby. Please look at http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=toRuby for details. (This page is Japanese only.) Moreover, also about the contents of our event performed by RubyKaigi, we are going to notify in the above-mentioned website. Thank you. +ABSTRACT +いつも那須方面で開催しているtoRuby勉強会が、つくばに出張してきて、いつものような勉強会を開催します。Rubyを使ったお題を用意するので、参加者みなさんにPCを持参してもらい、手を動かしながらRubyを楽しむ会になります。 + +toRubyは東京のちょっとだけ北、150kmくらいにある栃木県、那須塩原市で月に一度、勉強会を開催しています。toRubyのtoはとちぎの'と'です。現在は咳さんのdRubyの本を使って、写経やディスカッションをしています。詳細は http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=toRuby をご覧ください。またRubyKaigiでの内容についても、上記Webにて告知していきます。 +ABSTRACT_JA + e27_a202.create :title => 'Head First "Ordinary" System Development', :title_ja => 'Head First ふつうのシステム開発', :speaker => 'Eiwa System Management, Inc.', :from => '16:00', :to => '18:00',:abstract => (< (< 'ja' +We, Eiwa System Management, Inc. are one of the cutting-edge Ruby/Rails company in Japan. We're proud of presenting our way on building Rails application. @pragdave says "agility is part of the fabric of Rails." in his book Agile Web Development with Rails. +However, we need a little bit more tools to improve our Rails projects in the real world. In this sub event, we'll give you live-demo, some commentary on what agile software development is and discussion with audiences. + +Keywords: Agile Software Devleopment, Test Driven Development, Scrum, Pivotal Tracker, Ruby on Rails, Bundler, RSpec, Steak, Git, Capistrano +ABSTRACT +『RailsによるアジャイルWebアプリケーション開発』にもあるように「アジリティ(アジャイルであること)は、Railsの骨組みの一部」です。 +とはいうものの、実際にプロジェクトを進めるには、Rails以外にももう少し仕掛けが必要です。 +この企画では、永和システムマネジメントが普段の受託開発プロジェクトでおこなっている、ふつうのシステム開発のすすめ方をライブ形式でお伝えします。 +参加者の皆さまからの疑問・質問にお答えする時間も用意しております。 +Railsの良さを活かしたプロジェクトの進め方に興味のある皆さまのご参加をお待ちしております。 + +キーワード: アジャイル開発、TDD、Scrum、Pivotal Tracker、Ruby on Rails、Bundler、RSpec、Steak、Git、Capistrano、など +ABSTRACT_JA + end + + e27.with_options(:room => @b201) do |e27_b201| + e27_b201.create :title => 'rake:money', :title_ja => 'rake:money 拡大版~Rubyエンジニアと企業の幸せな関係~', :speaker => 'Ayumu Aizawa / Ouka Yuka (rake:money and RubyKaigi2010 Sponsors)', :from => '14:00', :to => '16:00',:abstract => (< (< 'ja' +The meeting of the IT system engineer to think that I earn money seriously. + +I raise awareness of the money, and it is a meeting of the people who want to become the engineer who can earn one's convincible income. I take up marketing and a business trend or a topic about the money that it is not readily possible for in a topic about economy in tax or assets use in the normal technology system study society how I cut one's skill efficiently in imitation Ta'izz. + +In the Ruby meeting extension, I make it. +ABSTRACT +真剣にお金を稼ぐことを考えるIT系エンジニアの会。 + +お金に対する意識を高めて、自分の納得のいく収入を稼げるエンジニアになりたいと考える人たちの会合です。 自分のスキルをどうすれば効率よくマネタイズできるか、マーケティングやビジネストレンド、はたまた節税や資産運用についてなど、普通の技術系勉強会ではなかなか話題にできないお金に関する話題を取り上げます。 + +Ruby会議拡大版では、Ruby会議スポンサーの各社をパネラーに迎え、Rubyエンジニアに対するビジネスニーズや、企業の中のRubyist がどのようにビジネス価値を発揮していくかといったテーマについてパネルディスカッションを行います。 +ABSTRACT_JA + e27_b201.create :title => 'Ruby Business Owner Kaigi', :title_ja => 'Ruby親方会議', :speaker => 'Takeyuki FUJIOKA (xibbar)(Rabbix corporation / Nihon Ruby no kai)', :from => '16:00', :to => '18:00',:abstract => (< (< 'ja' +Ruby's small business owner talk about own working and exchange experience each other. +ABSTRACT +Rubyを使ってスモールビジネスを展開しているビジネスオーナーの情報交換を行います。 +ABSTRACT_JA + end + + foyer_event = e27.create :title => "Let's create your own T-shirt designed by Ruby at RubyKaigi 2010!! / The Origami Ruby (paper craft) Generated by The Ruby", :title_ja => 'RubyKaigiで自分だけのrubyTシャツを作ろう! / Ruby で作る Ruby の折り紙', :speaker => '(See Abstract)', :room => @foyer, :from => '13:00', :to => '15:30',:abstract => (< (< 'ja' +Events held during the session in the foyer. +ABSTRACT +会期中にホワイエにて行われているイベントです。 +ABSTRACT_JA + e27.create :title => "Let's create your own T-shirt designed by Ruby at RubyKaigi 2010!!", :title_ja => 'RubyKaigiで自分だけのrubyTシャツを作ろう!', :speaker => 'Yasuo Yoshikawa (tmix producer)', :room => @foyer, :from => '13:00', :to => '15:30',:abstract => (< (< 'ja', :parent_event => foyer_event, :profile_ja => (< "The Origami Ruby (paper craft) Generated by The Ruby", :title_ja => 'Ruby で作る Ruby の折り紙', :speaker => 'Hiroyuki Shimura (Nihon Ruby-no-kai (Japan Ruby Group))', :room => @foyer, :from => '13:00', :to => '15:30',:abstract => (< (< 'ja', :parent_event => foyer_event + The Origami Ruby (paper craft) Generated by The Ruby: Let's fold origami \"Ruby\" like http://dl.dropbox.com/u/4921720/RubyFoldings/IMG_0362.A3_C35_Chu25.WebSmall.JPG . In the first half, we will fold origami \"Ruby\" together with the origami paper that has crease fold lines. In the second half, we will fold something with foil paper and cellophane paper and read a Ruby script that generates paper with crease fold lines. +ABSTRACT + Ruby の折り紙を折ります。http://dl.dropbox.com/u/4921720/RubyFoldings/IMG_0362.A3_C35_Chu25.WebSmall.JPG + 折り線をプリントした展開図を用意しますので、前半それを参考にみんなで折りましょう。後半は、ちょっと難しくなりますがホイル折紙や透明折紙(セロファン)で折ってみたり、或は展開図を作成する Rubyスクリプトを読みましょう。 +ABSTRACT_JA +end diff --git a/db/seeds_20100828.rb b/db/seeds_20100828.rb new file mode 100644 index 00000000..62a2378a --- /dev/null +++ b/db/seeds_20100828.rb @@ -0,0 +1,280 @@ +# -*- coding: utf-8 -*- +EventLoader.with_options(:day => 28) do |e28| + e28.with_options(:room => @big) do |e28_big| + e28_big.create :title => 'Ruby 1.9.2 is released! / Ruby committers Q & A', :title_ja => 'Ruby 1.9.2 is released! / Rubyコミッタ Q & A', :speaker => 'Yugui, Shugo Maeda', :from => '9:30', :to => '11:00',:abstract => (< (< 'ja', :presentation_material => (< 14550163, :nicovideo_id => 'sm11914238' +Many committers will come to RubyKaigi, so it's a good chance to ask them. In this event Ruby committers will answer questions from audience (or other committers). +ABSTRACT +RubyKaigiにはたくさんのコミッタが来場するので、彼らに質問するよい機会です。このイベントでは、Rubyコミッタが聴衆(又は他のコミッタ) からの質問に回答します。 +ABSTRACT_JA +http://www.slideshare.net/yugui/ruby-192-is-released +PRESENTATION_MATERIAL + e28_big.create :title => 'Keynote', :title_ja => '基調講演', :speaker => 'Matz', :length => 1.hour, :lang => 'ja', :profile_ja => (< 14550223, :nicovideo_id => 'sm11914317' +いまや数えきれないほどのユーザーを持つ世界的プログラミング言語Rubyの創造者。っていうか、そういう立場に本人が一番困惑してるんですが。 +PROFILE_JA + e28_big.create_break :from => '12:00', :length => 90.minutes + e28_big.create :title => 'Esoteric Obfuscated Ruby Programming', :title_ja => '超絶技巧 Ruby プログラミング', :speaker => 'Yusuke Endoh (independent)',:abstract => (< (< 'ja', :profile => (< (< (< 14817369, :nicovideo_id => 'sm11914507' +Ruby allows us to write not only easy-to-read programs but also hard-to-read programs. In this presentation, we introduce our \"artistically\" hard-to-read programs written in Ruby. We also discuss its implementation techniques, if time permits. +ABSTRACT +Ruby は読みやすいプログラムを簡単に書ける言語だが、読みにくいプログラムも簡単に書ける。 本発表では、発表者による「芸術的に」読みにくい Ruby プログラムを紹介する。 時間があれば、その実装技法の解説を行う。 +ABSTRACT_JA +A committer for Ruby and RubySpec. 1.9.2 assistant release manager. +A Ruby test maintainer. +His main interests are YARV, release engineering, tests, functional programming features and bignum. +He enjoys esoteric programming and Quine. +PROFILE +Ruby と RubySpec のコミッタ。1.9.2 リリースマネージャ補佐。Ruby テストメンテナ。 +評価器 (YARV) 、リリースエンジニアリング、テスト、関数型プログラミング機能、Bignum など、Ruby の中でもどうでもいいところに興味を持つ。 +Esoteric programming や Quine を好む。 +PROFILE_JA +http://www.slideshare.net/mametter/ruby-esoteric-obfuscated-ruby-programming-5088683 +PRESENTATION_MATERIAL + e28_big.create :title => 'Daily Ruby', :title_ja => 'Rubyな日々', :speaker => 'Kazuhiro NISHIYAMA (Good-Day, Inc.)',:abstract => (< (< 'ja', :presentation_material => (< 14817403, :nicovideo_id => 'sm11913673' +I will talk about my daily life as a committer of Ruby and the Ruby Reference Manual Renewal Project. +ABSTRACT +Ruby や Ruby リファレンスマニュアル刷新計画のコミッターとしてどういうことをしているのかという話をする予定です。 +ABSTRACT_JA +http://www.n-z.jp/presen/RubyKaigi2010/DailyRuby.pdf +PRESENTATION_MATERIAL + e28_big.create :title => 'Ruby Reference Manual Renewal Project 2010 Summer', :title_ja => 'Ruby リファレンスマニュアル刷新計画 2010 夏', :speaker => 'okkez (Ruby Reference Manual Renewal Project)',:abstract => (< (< 'ja', :vimeo_id => 14817471, :nicovideo_id => 'sm11914687' +In this talk, I will talk about Ruby Reference Manual Renewal Project and discuss the latest developments and future plans. +ABSTRACT +昨年の報告以降の動きをまとめて報告します。また、今後の予定や特に助けが必要な部分について説明します。 +ABSTRACT_JA + e28_big.create_break + e28_big.create :title => 'Ruby API is Improved Unix API', :title_ja => 'Unix修正主義', :speaker => 'Tanaka Akira (National Institute of Advanced Industrial Science and Technology (AIST))', :length => 1.hour,:abstract => (< (< 'ja', :profile => (< (< (< 14817572, :nicovideo_id => 'sm11914887' +Ruby's library API is like Unix's API, but improved. Ruby tries to fix some of the problems in Unix's API. For example, non-blocking IO in Unix is provided by setting a flag when opening a file, making it difficult to specify non-blocking behavior for individual operations. Ruby overcomes this problem by providing non-blocking methods such as #read_nonblock. + +Another example is the fork() system call, which has problems in multi-threaded environments. Ruby provides the #spawn method as an alternative way to launch processes safely. + +This presentation will discuss techniques for API problem discovery with more examples of Ruby's improvements over Unix's API and other problematic parts of Unix which Ruby may improve in the future. +ABSTRACT +Ruby のライブラリ API は Unix の影響を色濃く受けているが、 Unix の API をそのまま提供しているのではなく、 Unix の失敗を修正している部分がいくつかある。 たとえば、ノンブロッキング I/O は、オープンしたファイルに対するフラグで指示するため、 特定の操作だけをノンブロッキングにすることが難しい。 これに対し、Ruby ではフラグでなく read_nonblock メソッドなどを用いることにより、それが簡単になっている。 また、プロセスを起動する fork システムコールは近年のマルチスレッド環境では大きな問題がある。 これに対し、Ruby ではその問題がないプロセス起動方法として spawn メソッドを導入した。 本発表ではこのような修正例を述べ、また、まだ修正していない Unix の失敗とそれを Ruby で修正する可能性について述べる。 それにより、API の問題の発見と修正についての知見を示す。 +ABSTRACT_JA +A Ruby committer. +Main interests are I/O, socket, process, time and other difficulties. +PROFILE +Ruby コミッタ。 +主に I/O、ソケット、プロセス、時刻、その他の厄介事に興味を持つ。 +PROFILE_JA +http://www.a-k-r.org/pub/rubykaigi2010-akr-unix-improved.pdf +PRESENTATION_MATERIAL + e28_big.create_break + lt_event = e28_big.create :title => 'Lightning Talks', :abstract => "Lightning Talks are 11 x 5minutes talk in a 60 minutes time slot", :abstract_ja => "1人持ち時間5分のライトニングトークです", :speaker => '(See Abstract)', :length => 1.hour, :lang => 'ja, en' + e28_big.create :title => 'ARToolKit Ruby Binding', :abstract => '', :speaker => 'Urabe, Shyouhei (Network Applied Communication Lab.)', :lang => 'ja', :parent_event => lt_event, :from => '17:00', :to => '18:00', :profile => (< (< 14816850, :nicovideo_id => 'sm11914934' +Urabe Shyouhei (Network Applied Communication Laboratory) + +is a software scientist, best known as a Ruby core developer who maintains +Ruby 1.8.7. He is now mainly writing codes at NaCl. His presentation is +based on what he wrote there. +PROFILE +Ruby 1.8.7のお守り係として知られるが本人はプログラマのつもりなので、たまには +作ったプログラムの紹介をしたい。仕事で作ったやつだけど。 +PROFILE_JA + e28_big.create :title => 'Toward creating a single stand-alone executable of Ruby', :title_ja => "Ruby/Tk-Kit から RubyKit へ : Ruby の単一ファイル実行環境の構築に向けて", :abstract => '', :speaker => 'Hidetoshi NAGAI (Kyushu Institute of Technology / Rubyist Kyushu)', :lang => 'ja', :parent_event => lt_event, :from => '17:00', :to => '18:00', :profile => (< (< (< 'sm11915031' +One of CRuby committers and a Ruby/Tk developer. +PROFILE +CRuby の commit 権所有者で,Ruby/Tk 開発者. +PROFILE_JA +http://www.dumbo.ai.kyutech.ac.jp/~nagai/RubyTk/?%A5%D7%A5%EC%A5%BC%A5%F3%A5%C6%A1%BC%A5%B7%A5%E7%A5%F3%BB%F1%CE%C1 +PRESENTATION_MATERIAL + e28_big.create :title => 'What is few?', :abstract => '', :speaker => 'Shota Fukumori/@sora_h (few developers team)', :lang => 'ja', :parent_event => lt_event, :from => '17:00', :to => '18:00', :profile => (< (< (< 14816870, :nicovideo_id => 'sm11927705' +Shota Fukumori (sora_h) is a junior high school 2 grade *half-time(!)* student and a rubyist in Japan. +He commits to Termtter and some projects and his repository, and create web service by rails. Also he is usually talking at some communities. He has a online workshop which name is online.sg http://onlinesg.org/ . +PROFILE +Shota Fukumori (sora_h)は中2で半登校 (昼休み後早退). よくtermtterや自分のレポジトリにコミットしたり, Rails などでいろいろ作ってたり, よくいろんなコミュニティのチャットで喋っている. そしてOnline.sg と呼ばれるオンラインの勉強会を開催したりもしている. +PROFILE_JA +http://www.slideshare.net/sorah/what-is-few +PRESENTATION_MATERIAL + e28_big.create :title => 'Toward Lightning RubyVM', :abstract => '', :speaker => 'Koichi Sasada (The University of Tokyo)', :lang => 'ja', :parent_event => lt_event, :from => '17:00', :to => '18:00', :presentation_material => 'http://rvm.jp/~ko1/activities/rk2010-lt-ko1.pdf', :vimeo_id => 14816906, :nicovideo_id => 'sm11915184' + e28_big.create :title => 'MessagePack, a cross-language communication system', :title_ja => 'MessagePackで多言語間通信', :speaker => 'Sadayuki Furuhashi', :lang => 'ja', :parent_event => lt_event, :from => '17:00', :to => '18:00', :abstract => '', :abstract_ja => '', :presentation_material => 'http://syuki.skr.jp/files/20100728/rubykaigi2010-msgpack.pdf', :vimeo_id => 14816932, :nicovideo_id => 'sm11915382' + e28_big.create :title => 'Let\'s calculate easily civil days by using "Ruby"', :title_ja => 'Rubyで手軽に暦日を算出しよう!', :abstract => '',:abstract_ja => '' ,:speaker => 'Yoshihiko Hara, Japan OSS Promotion Forum Application Sub Committee Ruby Application Task Force, FUJITSU SOCIAL SCIENCE LABORATORY LIMITED', :lang => 'ja', :parent_event => lt_event, :from => '17:00', :to => '18:00', :vimeo_id => 14816966, :nicovideo_id => 'sm11915514' + e28_big.create :title => 'Introducing the Lingo Project: A New Generationi Text Input System Leveraging Non-native English Writing', :abstract => '', :speaker => 'Kazki Matz (Lingo project)', :lang => 'ja', :parent_event => lt_event, :from => '17:00', :to => '18:00', :presentation_material => 'http://www.slideshare.net/KazkiMatz/introducing-the-lingo-project', :vimeo_id => 14817011, :nicovideo_id => 'sm11915627' + e28_big.create :title => 'babushka―test-driven sysadmin for rubyists', :abstract => '', :speaker => 'Ben Hoskings (babushka)', :parent_event => lt_event, :from => '17:00', :to => '18:00', :presentation_material => 'http://www.slideshare.net/benhoskings/rubykaigi-2010-babushka-lightning-talk', :vimeo_id => 14817287, :nicovideo_id => 'sm11918803' + e28_big.create :title => 'parse.y Fam Tour', :title_ja => "parse.yの歩き方 -ワシのRubyは4式まであるぞ-", :abstract => '', :speaker => 'Ando Yasushi (Seesaa Inc.)', :lang => 'ja', :parent_event => lt_event, :from => '17:00', :to => '18:00', :profile => (< (< (< 14817303, :nicovideo_id => 'sm11918830' +The author of the first and last Google Wave book written in Japanese; the book released on August 19th. +PROFILE +たぶん史上最後のGoogle Wave本の著者。あとおっぱいとかカリスマとか +PROFILE_JA +https://docs.google.com/present/view?id=dchb3tb2_201fz7kq3xf +PRESENTATION_MATERIAL + e28_big.create :title => 'The Timeless Way of E-Publishing with Ruby', :title_ja => "時を超えた電子出版の道の中をRubyと歩いていく", :abstract => '', :speaker => 'Masayoshi Takahashi (Tatsu-zine publishing, Nihon Ruby-no-Kai)', :lang => 'ja', :parent_event => lt_event, :from => '17:00', :to => '18:00', :vimeo_id => 14817328, :nicovideo_id => 'sm11918844' + e28_big.create :title => "My Report of \"Ruby Summer of Code 2010\" - Road to be a stdlib -", :title_ja => "Ruby Summer of Code 2010のご報告 〜俺たちのDecimalはまだ始まったばかりだ〜", :abstract => '', :speaker => 'Tadashi Saito (University of Tsukuba)', :lang => 'ja', :parent_event => lt_event, :from => '17:00', :to => '18:00', :profile => (< 14817604, :nicovideo_id => 'sm11927896' +Tadashi is in his nth year of University of Tsukuba where n is smaller than 0xDEAD. He is always interested in to make the world better a little, so he started Decimal project. It's the only one project which was accepted in Ruby Summer of Code 2010 from Japan, but Tadashi wants a cute girlfriend rather than a bounty. His weak subject is math. +PROFILE + end + + e28.with_options(:room => @medium) do |e28_medium| + e28_medium.create :title => 'Rocking the enterprise with Ruby', :speaker => 'Munjal Budhabhatti And Sudhindra Rao (ThoughtWorks Inc)', :from => '9:30',:abstract => (< (< 14550283, :nicovideo_id => 'sm11907935' +ThoughtWorks has been working on a long scale project at Rackspace building data center of the future using Ruby. This projects has evolved since its inception. And so has the architecture. Developing in ruby has assisted us in managing changes to the business rules at a rapid pace. We have been delivering successfully every two weeks for last three years. We would like to share our learnings from this effort. +ABSTRACT +http://ruote.s3.amazonaws.com/rocking_the_enterprise_with_ruby.pdf +PRESENTATION_MATERIAL + e28_medium.create :title => 'Rails to Sinatra: What is ready', :speaker => 'Jiang Wu (Tengu)',:abstract => (< 'en', :profile => (< (< 14550348, :nicovideo_id => 'sm11908083' +As Sinatra 1.0 came out, we have a good alternative to rails(before is merb). I will introduce efforts of people around Sinatra community to eliminate gap of moving from Rails to Sinatra including my works. +ABSTRACT +Jiang Wu(呉江) is a Ruby developer in Shanghai, China. He has worked with Ruby for 3 years. In 2008, he open sourced a library of Chinese payment gateway, implemented in Active Merchant. From 2009, he is devoted to promote "off rails", such as Sinatra and Sequel, in China. +PROFILE +http://www.slideshare.net/jiang.wu/sinatra-and-friends +PRESENTATION_MATERIAL + e28_medium.create :title => 'Mapping the world with DataMapper', :speaker => 'Ted Han (%w(Videojuicer DataMapper))',:abstract => (< (< 14550424, :nicovideo_id => 'sm11908640' +Ubiquitous computing has opened the door to two new revolutions, data collection and data manipulation. Mobile phones, digital cameras, low cost electronics, and wireless internet access have made it possible to collect data any time, anywhere. But what are we doing with the data once it's collected? How do we navigate the oceans of data we generate daily? Where can we find a Rubyist's tools for data mining and manipulation? We'll discuss how to use DataMapper, a Ruby data access library, to make sense of data of all kinds. +ABSTRACT +http://www.slideshare.net/knowtheory/mapping-the-world-with-datamapper +PRESENTATION_MATERIAL + e28_medium.create_break :from => '12:00', :length => 90.minutes + e28_medium.create :title => 'The Necessity and Implementation of Speedy Tests', :speaker => 'Jake Scruggs (Backstop Solutions)', :length => 1.hour,:abstract => (< (< 14550991, :nicovideo_id => 'sm11913812' +Your project's software practices are deteriorating every minute the developers wait for slow tests to finish. Once developers get fed up and stop running the tests, disregard for failing builds can't be far behind, and from there it's only a short leap to the albatross of a brittle/irrelevant test suite. Luckily this can all be avoided by adopting some time-saving testing standards and practices. +ABSTRACT +In 2004 Jake Scruggs was a high school physics teacher. Jobs since then: apprentice at Object Mentor, consultant at ThoughtWorks, consultant at Obtiva, and developer at Backstop Solutions. + +He also created and maintains the code metrics gem: metric_fu +http://jakescruggs.blogspot.com/ +http://metric-fu.rubyforge.org/ +http://twitter.com/jakescruggs +http://www.backstopsolutions.com/ +PROFILE + e28_medium.create :title => 'Seamless Integration Testing', :speaker => 'paulelliott (Hashrocket)', :abstract => (< (< (< 14550481, :nicovideo_id => 'sm11913926' +Do you have a solid, full coverage integration test suite? You should. It is the final automated point of assurance that what you are about to push to production is not going to blow something up and cost your or your client money. I show how to integration test a real Rails application, demonstrating best practices you can apply to any setup and the latest technologies for fully covering your app, including javascript! +ABSTRACT +Paul works for Hashrocket on projects for clients ranging from small start ups to large enterprises. In addition to his consulting work, he contributes regularly to open source projects and maintains some of his own, most notably Fabrication, an object generation framework for Ruby. He is passionate about outside-in testing, Ruby, jQuery, and motorcycles. +PROFILE +http://www.slideshare.net/paulelliott99/seamless-integration-testing +PRESENTATION_MATERIAL + e28_medium.create_break + e28_medium.create :title => 'A Metaprogramming Spell Book', :speaker => 'Paolo "Nusco" Perrotta', :length => 1.hour, :abstract => (< 14550567, :nicovideo_id => 'sm11914130' +When I started to learn Ruby, I was awed by the code of experienced rubyists. That code was full of amazing magic tricks that I could barely understand. People called those tricks \"metaprogramming\". + +With time, I found that metaprogramming sits right at the core of Ruby. To think in Ruby, I had to understand all those scary tricks! Feeling like a sorcerer's apprentice, I set out to write a Spell Book of metaprogramming techniques. Once I'd finished the Spell Book, metaprogramming didn't seem like black magic anymore. Instead, it just felt like any other set of techniques. + +In this talk, I'll show you the content of my Spell Book, so that you don't have to go through the trouble of writing one yourself. +ABSTRACT + e28_medium.create_break + end + + e28.create :title => 'JRubyKaigi 2010', :title_ja => 'JRuby会議 2010', :speaker => 'Koichiro Ohba / Akasaka.rb (JRuby.org and EngineYard)', :room => @b202, :from => '12:00', :to => '18:00',:abstract => (< (< 'ja, en' +It's JRubyKaigi for people who love JRuby, by JRuby core developers and Japanese JRuby developers. This kaigi will make both people who like JRuby already or not love JRuby much more. It will contain great sessions; the keynote session by Thomas E.Enebo(@tom_enebo) and Charles O.Nutter(@headus), the invited talks by Yoshiharu Hashimoto(@hasssie), Hiroshi Nakamura(@nahi), Takeru Sasaki(@urekat), Koichi Fujikawa(@fujibee), Yoko Harada(@yokolet). We also have 10 lightning talks. You can check out details of talks on JRubyKaigi 2010 web site. + + Site: http://j.rubykaigi.org/2010 +ABSTRACT +JRuby コア開発者と日本のJRuby開発者によるJRubyが好きな人のためのJRubyKaigiを開催します。JRubyが好きな人はますます好きになり、そうでない人もJRubyが好きになる会議です。開催概要は次を予定しています。基調講演:Thomas E.Enebo(@tom_enebo) and Charles O.Nutter(@headus)、招致講演:Yoshiharu Hashimoto(@hasssie)、Hiroshi Nakamura(@nahi)、Takeru Sasaki(@urekat)、Koichi Fujikawa(@fujibee)、Yoko Harada(@yokolet)、他にライトニングトークスとして10枠を予定。詳しくはJRubyKaigi2010公式サイトを参照してください。。 + + サイト: http://j.rubykaigi.org/2010 +ABSTRACT_JA + + e28.with_options(:room => @a202) do |e28_a202| + e28_a202.create :title => 'tDiaryKaigi', :title_ja => 'tDiary会議', :speaker => 'SHIBATA Hiroshi (Eiwa System Management,Inc., asakusa.rb, tDiary.org)', :from => '9:30', :length => 90.minutes,:abstract => (< (< 'ja', :profile => (< (< 'Asakusa.rb in Tsukuba', :title_ja => '浅草.rb in つくば', :speaker => 'Akira Matsuda (Asakusa.rb)', :from => '12:00', :length => 90.minutes,:abstract => (< (< 'Pair Programming Cultural Exchange', :title_ja => 'ペアプログラミング文化交流会', :speaker => 'Sarah Mei (Pivotal Labs)', :to => '18:00', :abstract => (< (< 'en, ja' +We may not speak the same language, but we do have one language in common. So, we can code together! + +Armed with a list of pair programming phrases in English and Japanese, let's work together on a project in Ruby. Coding together can help us bridge the artificial boundaries created by language, culture, and distance, and can create friendships that last beyond the conference. + +Unicorns and ponies for everyone! +ABSTRACT +私たちが話す言葉は同じじゃないかもしれない。でも、私たちには一つの共通語がある。そう、だから私たちはいっしょにコードを書けるんだ! + +この企画では、英語と日本語のペアプログラミング語録をひもときながら、あるRubyプロジェクトをいっしょにやってみましょう。いっしょにコードを書くことで、私たちの間の言語、文化、距離の壁を乗り越えて、Kaigiを越えた友情が生まれることでしょう。 + +ユニコーンとポニーをみんなに! +ABSTRACT_JA + end + + e28.with_options(:room => @b201) do |e28_b201| + e28_b201.create :title => 'jpmobile Kaigi 2010', :speaker => 'Shin-ichiro OGAWA (Tokyu.rb)', :from => '9:30', :length => 90.minutes,:abstract => (< (< 'ja', :profile => (< (< 'PGP Key Signing Party', :title_ja => "キーサインパーティー 2010", :speaker => 'Shyouhei Urabe w/ Yugui (Ruby Core Team)', :from => '12:00', :length => 90.minutes, :abstract => (< (< 'ja' +Let's trade pubkeys! A key signing party is a get-together of people who use the PGP encryption system with the purpose of allowing those people to sign each others keys. Key signing parties serve to extend the web of trust to a great degree. + +If you get interested you need some preparation. Take a look at +http://qwik.atdot.net/rubykaigi2010keysignparty/FrontPageJa.html +ABSTRACT +公開会議を交換しましょう。キーサインパーティーは PGP 暗号化方式を利用する人たちが相互に公開鍵を署名しあう集まりです。キーサインパーティーに参加することで信頼の輪を広げることができます。 + +参加には若干の準備が必要ですので、ご興味のある方は以下のURLを御覧下さい。 +http://qwik.atdot.net/rubykaigi2010keysignparty/FrontPageJa.html +ABSTRACT_JA + e28_b201.create :title => 'M-x ruby-and-emacs-workshop', :speaker => 'Zev Blut', :length => 90.minutes, :abstract => (< (< (< 'Cucumber hands-on', :title_ja => 'Cucumber ハンズオン', :speaker => 'MOROHASHI Kyosuke (EIWA System Management, Inc.)', :length => 90.minutes,:abstract => (< (< 'ja', :profile_ja => (< @a201) do |e28_a201| + e28_a201.create :title => 'Nihon Ruby-no-Kai meeting', :title_ja => '日本Rubyの会の会', :speaker => 'Koji Shimada (Nihon Ruby-no-Kai)', :from => '12:00', :length => 90.minutes,:abstract => (< (< 'ja' +An open meeting where Rubyists discuss what we can do for Ruby. +ABSTRACT +RubyのためにRubyistができることについて話し合うイベント。 RubyKaigi2010の時期には実は第6期が終わっているので、第6期の活動のふりかえりと、第7期の活動のアイデア出しをやりましょう! +ABSTRACT_JA + e28_a201.create :title => 'Vim', :speaker => 'Kana', :to => '17:00', :abstract => (< (< 'ja' +About half of Rubyists are using Vim to code Ruby. Vim is one of the ultimate tools for software developments, which vary among programmers. Why don't you exchange the ways you use Vim? + +For example, I am using some Vim plugins such as quickrun.vim, neocomplcache, and smartchr.vim to code Ruby efficiently. Although my ~/.vimrc is less than just 3000 lines, there are plenty of good tricks worth telling to you. I'd like to tell you about my Vim knowledge, and learn how you yourself are optimizing Vim. + +I'd like to make the event in English, because most Japanese have already been learning English for a while. Of course, attendees are supposed to be familiar with Ruby and Vim, because they are the lingua franca of this event. I can help translating Japanese to English or English to Japanese. Even if you don't have a lot of confidence with other languages, you can still attend this event. + +Other editor users such as Emacs users also can attend this event. In general, tech religious wars are fun. +ABSTRACT +Rubyistの約半数が使用していると噂の統合開発環境Vimについて、使いこなすためのノウハウや快適にRubyコードを書くためのテクニックを交換しあう勉強会です。 + +当日は有志によるライトニングトーク、Q&A、および会場内で得た知識を実践するためのfree hack時間を設け、参加者のVim戦闘力を向上させる予定です。 +ABSTRACT_JA + end + + e28.create :title => "The Origami Ruby (paper craft) Generated by The Ruby", :title_ja => 'Ruby で作る Ruby の折り紙', :speaker => 'Hiroyuki Shimura (Nihon Ruby-no-kai (Japan Ruby Group))', :room => @foyer, :from => '12:00', :to => '17:00',:abstract => (< (< 'ja' + The Origami Ruby (paper craft) Generated by The Ruby: Let's fold origami \"Ruby\" like http://dl.dropbox.com/u/4921720/RubyFoldings/IMG_0362.A3_C35_Chu25.WebSmall.JPG . In the first half, we will fold origami \"Ruby\" together with the origami paper that has crease fold lines. In the second half, we will fold something with foil paper and cellophane paper and read a Ruby script that generates paper with crease fold lines. +ABSTRACT + Ruby の折り紙を折ります。http://dl.dropbox.com/u/4921720/RubyFoldings/IMG_0362.A3_C35_Chu25.WebSmall.JPG + 折り線をプリントした展開図を用意しますので、前半それを参考にみんなで折りましょう。後半は、ちょっと難しくなりますがホイル折紙や透明折紙(セロファン)で折ってみたり、或は展開図を作成する Rubyスクリプトを読みましょう。 +ABSTRACT_JA +end diff --git a/db/seeds_20100829.rb b/db/seeds_20100829.rb new file mode 100644 index 00000000..d553b399 --- /dev/null +++ b/db/seeds_20100829.rb @@ -0,0 +1,344 @@ +# -*- coding: utf-8 -*- + +EventLoader.with_options(:day => 29) do |e29| + e29.with_options(:room => @big) do |e29_big| + e29_big.create :title => 'Cloud management with Ruby', :title_ja => 'Rubyでクラウドを便利にする方法〜ニフティクラウドの事例〜', :speaker => 'Kei Hamanaka, Yuichi Saotome (NIFTY Corporation)', :from => '9:30',:abstract => (< 'ja', :vimeo_id => 14823540, :nicovideo_id => 'sm11932651' +We show the construction/operation methods for Cloud with Ruby. (ex. NIFTY Cloud) +ABSTRACT + e29_big.create :title => 'Distributed storage system with ruby', :title_ja => 'Rubyによる分散ストレージシステムの実装', :speaker => 'Toshiyuki Terashita (RICOH IT SOLUTIONS Co.,Ltd.)', :abstract => (< (< 'ja', :profile_ja => (< (< 14823566, :nicovideo_id => 'sm11932726' +Castoro is a new scalable storage system implemented in Ruby. In this session, we talk about why we decided to develop a new storage system, Castoro. We will also compare Castoro against other distributed storage systems, such as MogileFS and kumoFS. +ABSTRACT +Castoroは、Rubyで実装されたスケーラブルなストレージシステムです。本発表では、開発に至った経緯と、MogileFSやkumoFS等、他の分散ストレージシステムとの違いについて紹介します。 +ABSTRACT_JA +寺下 敏之(てらした としゆき) リコーITソリューションズ株式会社 + +OSなし組み込みファームウエアからデータセンター内ソフトウエアまで手がけてき +ました。 +自宅で書いたものをgithubへ置いてOSSと称して業務に持ち込む、自作自演プログラ +マです。 +Railsアプリコードを書いたら負けかなと思っているRuby使いで、鳥取Ruby会 +「tottoruby」主催・開催しています。 +ストレージサービス「quanp」ではミドルウエアからOS寄りのコンポーネントを作っ +ています。 +PROFILE_JA +http://www.slideshare.net/suzumura/castoro-rubykaigi2010 +PRESENTATION_MATERIAL + e29_big.create :title => 'The last decade of RWiki and lazy me', :title_ja => 'RWikiと怠惰な私の10年間', :speaker => 'Masatoshi SEKI (druby.org)',:abstract => (< (< 'ja', :profile_ja => (< (< 14823606, :nicovideo_id => 'sm11932774' +On August 31st, 2000, A slightly unusual Wiki was introduced on ruby-list. It was [ruby-list:24661] The first practical dRuby application, RWiki. + +RWiki is strongly opinionated software. RWiki was introduced as an demonstration of the usage of various Ruby libraries, but its unique implementation also reflects the author's opinion. The most significant feature of RWiki is that it is an in-memory application that contains both the database and objects all in a single process. Which is rather reminiscent of some recent buzzwords: NoSQL and In-Memory. + +A couple days after this presentation, RWiki will celebrate its tenth year anniversary. I am currently running several active RWiki sites. These sites have over 30 thousand pages with a process size exceeding 1Gb. In this presentation, I will tell a little story of how these RWiki sites achieved scale and volume. +ABSTRACT +2000-8-31、ruby-listにすこし変わったWikiが紹介されました。[ruby-list:24661] dRubyの最初の実用的なアプリケーション、RWikiです。 + +RWikiはメッセージ色の濃いソフトウェアです。RWikiはRuby周辺のさまざまなライブラリのサンプルとして紹介されましたが、特異な実装も作者のメッセージです。RWikiのもっとも大きな特徴はデータベース、オブジェクトを全て一つのプロセスの中に配置する、In-Memory のアプリケーションであることです。そういえば、NoSQL、In-Memoryは最近のバズワードでもありますね。 + +この発表の数日後、RWikiはちょうど10年を迎えます。 私はアクティブなRWikiサイトを複数運営していて、現在では3万ページ、プロセスサイズは1GBを超えています。本発表では、このサイトが「大きさ・量」を獲得していく過程で展開された、ちょっとした物語を報告します。 +ABSTRACT_JA +関将俊(druby.org) +プログラマ。dRuby、ERBの作者。代表作はhメソッド、著書『dRubyによる分散・Webプログラミング』。ポケモンWCS2010栃木県代表(カード部門)。 +PROFILE_JA +http://www.slideshare.net/mseki/rk10trailer +PRESENTATION_MATERIAL + e29_big.create :title => 'Practical Ruby Projects with MongoDB', :speaker => 'Alex Sharp (Lead Developer, OptimisDev)', :length => 1.hour,:abstract => (< (< (< 14550670, :nicovideo_id => 'sm11932860' +While there is a lot of excitement surrounding MongoDB and the NoSQL movement, MongoDB is all about practicality, pragmatism and performance. MongoDB boasts a robust feature set that provides a pragmatic blend of rich functionality, performance and scalability that today's software developers need, and all at a relatively low barrier to entry. +ABSTRACT +Alex has been Lead Developer for OptimisDev since October 2009. Prior to joining OptimisDev, he co-founded Second Street Creative in 2006, a boutique web application development and design consultancy specializing in creative brand development and agile ruby application development. He is particularly interested in the NoSQL movement and mastering the art of refactoring. + +Among other open source contributions, Alex is the author of Bunyan and Papermill, two libraries for working with MongoDB. + +In addition to hacking, Alex enjoys shredding fresh powder, gourmet coffee and being an amateur foodie. He does not enjoy referring to himself in third person, because it sounds weird. He currently lives in sunny Los Angeles, CA, blogs at alexjsharp.com and tweets as @ajsharp. +PROFILE +http://www.slideshare.net/drumwurzel/practical-ruby-projects-with-mongo-db-ruby-midwest-4777566 +PRESENTATION_MATERIAL + e29_big.create_break :length => 90.minutes + e29_big.create :title => "IronRuby - What's in it for Rubyists?", :speaker => 'Shay Friedman (Sela Group)', :length => 1.hour, :abstract => (< (< (< 14550758, :nicovideo_id => 'sm11932895' +IronRuby is the new implementation of the Ruby language from Microsoft which opens the .NET world to Rubyists. This brings a whole set of new opportunities to Rubyists like using Ruby to write RIA applications, providing enhanced user interface to Ruby applications and more. Come and see the new possibilities that IronRuby brings to the Ruby world! +ABSTRACT +Shay Friedman is the author of IronRuby Unleashed and a Microsoft IronRuby MVP. With more than 10 years of experience, Friedman now works as a consultant and instructor of dynamic languages and .NET related subjects in CodeValue, a company he has recently co-founded. You can read his blog at http://IronShay.com and contact him via his twitter account - @ironshay. +PROFILE +http://www.slideshare.net/shayfriedman/ironruby-whats-in-it-for-rubyists-rubykaigi-2010 +PRESENTATION_MATERIAL + e29_big.create_break + e29_big.create :title => 'The spread of enterprise Ruby at hot spot SHIMANE', :title_ja => 'Ruby業務システムの広がりとホットスポット島根', :speaker => 'Hiroshi Yoshioka (TechnoProject Ltd.)',:abstract => (< (< 'ja', :profile => (< (< (< 14823640, :nicovideo_id => 'sm11932926' +In Matsue City and SHIMANE prefecture of local government, many common business systems began to remake by Ruby/Rails since 2007. Now, the wave of Ruby/Rails spreads to enterprise system fields and prepheral regions. Based many experience and results, how to built up the enterprise systems by Ruby/Rails, how to built up the long term maintenance systems, challenging to high productivty and another Agile development. +ABSTRACT +地方自治体である松江市や島根県では、2007年から一般的な行政システムをRuby/Railsで再構築を行っている。今、Ruby/Railsの波が企業システムの分野や周辺の地域に広がり始めた。 多くの経験と実績に基づいて、Ruby/Railsの基幹業務システムの構築方法、長期間メンテナンスするシステムの構築方法、高生産性や別なアジャイル開発への挑戦について説明する。 +ABSTRACT_JA +Hiroshi Yoshioka (TechnoProject LTD. & Matsukei LTD. Both CEO) +I am born in 1953.It started from the development of the middleware, and SI and a lot of package developments and application such as finance and public in the field were commanded in the first line. +A lot of environments have been experienced from the mainframe to the CSS・Web application program. +PROFILE +吉岡 宏(ヨシオカ ヒロシ) +(株)テクノプロジェクト:代表取締役社長兼(株)マツケイ:代表取締役社長 +1953年生まれ。1976年からソフトウエア業界に身を置く。その間、ミドルウエアの開発から始まり、フィールドでの金融・公共など多くのSIやパッケージ開発・適用を第一線で指揮して来た。メインフレームからCSS・Webアプリまで、多くの環境を経験してきた。 +PROFILE_JA +http://www.matsukei.co.jp/topics/pdf/100829_ruby_kaigi.pdf +PRESENTATION_MATERIAL + e29_big.create :title => 'There Is No Spoon -- Think Global, Act Regional', :speaker => 'Shintaro Kakutani (rubykaigi.org, Nihon Ruby-no-kai)', :abstract => (< (< 'ja', :profile => (< (< (< 14823175, :nicovideo_id => 'sm11930436' +I have been a member of RubyKaigi organizer since 2006 and also am the founder of Regional RubyKaigi started in 2008. \"Kaigis\" have changed the landscape of the Ruby community in Japan. These 2 years mean a lot to me. I'd love to show you what happened is and tell you what I believe is going to happen in the Ruby community in Japan. +ABSTRACT +2008年につくばで(!)開催されたRejectKaigiで提案した地域Ruby会議プロジェクトは2周年を迎えます。この2年間に9都市で17の地域Ruby会議が実施され、私はその全てに参加しました。本セッションでは、過去2年間の地域Ruby会議をふりかえり、今後の地域Ruby会議のありかたについて私見を述べます。東京と東京以外の違いと地域のRubyユーザグループの重要性や地域Ruby会議とRubyKaigiの関係など、「RubyKaigi以後」のRuby コミュニティのあり方を考える材料を提供します。 +ABSTRACT_JA +Kakutani Shintaro is a just another strong Ruby proponent, chief programmer in Eiwa System Management, Inc and board member of Nihon Ruby-no-kai(Japan Ruby Group). He is one of the organizers of RubyKaigi since 2006. He have translated some english technical book into japanese: "Agile Estimating and Planning"(co-translator), "Interface Oriented Design"(supervisor), "Practices of an Agile Developer"(co-supervisor) and "From Java to Ruby"(translator). +PROFILE +ただのRuby厨。(株)永和システムマネジメントサービスプロバイディング事業部チーフプログラマ。日本Rubyの会理事。RubyKaigiの運営を2006年からやってます。著書は『アジャイルな見積りと計画づくり』(共同翻訳)、『インターフェイス指向設計』(監訳)、『アジャイルプラクティス』(共同監訳)、『JavaからRubyへ』(翻訳)。 +PROFILE_JA +http://www.slideshare.net/kakutani/there-is-nospoon +PRESENTATION_MATERIAL + e29_big.create_break + e29_big.create :title => 'Keynote', :title_ja => '基調講演', :speaker => 'Chad Fowler', :length => 1.hour, :vimeo_id => 14571560, :nicovideo_id => 'sm11930550,sm11930645' + e29_big.create :title => 'Closing', :vimeo_id => 14823657, :nicovideo_id => 'sm11933775' + end + + e29.with_options(:room => @medium) do |e29_medium| + e29_medium.create :title => 'The future of the bigdecimal library and the number system of Ruby', :title_ja => "bigdecimal ライブラリと Ruby の数値系の未来", :speaker => 'Kenta Murata (GeneticLab Co., Ltd. && Ruby Sapporo)',:abstract => (< (< '9:30', :lang => 'ja', :profile => (< (< (< 14823682, :nicovideo_id => 'sm11928513' +I taked over the maintainer of the bigdecimal standard library in the beginning of this year. Today, the bigdecimal library has some problems in its behaviors, such as interacting convention with any other number classes. In this presentation, I will demonstrate these problematic behaviors and express their appropriate characteristics in the next version of Ruby. Additionally, I will discuss the number system which the future version of Ruby, that is 2.0, should have. +ABSTRACT +私は今年の初めに bigdecimal 標準ライブラリのメンテナに採用されました。現在 bigdecimal ライブラリは、他の数値クラスとの相互作用規則など、その振る舞いについて幾つかの問題を抱えています。私はこのプレゼンテーションで、このような問題ある振る舞いを実演で示し、これらに対して Ruby の次のバージョンで実現されるべき適切な性質を説明します。加えて、私は Ruby の未来のバージョン(すなわち 2.0)が持っているべき数値系について議論します。 +ABSTRACT_JA +mrkn, Kenta Murata (Genetic Lab Co., Ltd.) +Kenta is a Ruby committer, who manages the bigdecimal library, and is interested in numerical computation, programming languages, random number generators, and complex networks. +He obtained his Ph.D. (Information science) from Hokkaido University in 2009. +Also, he is an author of a Japanese book titled "Ruby 逆引きレシピ". +Finally, he is a member of Ruby Sapporo, Nihon Ruby-no-kai, and Kosen Conference Committee. +PROFILE +mrkn, 村田賢太 (株式会社ジェネティックラボ) +2009年北海道大学博士 (情報科学)。同年、株式会社ジェネティックラボ入社。 +2010年 bigdecimal のメンテナに就任し Ruby コミッタになる。 +数値計算、プログラミング言語、乱数生成器、複雑ネットワークに興味を持つ。 +著書は『Ruby逆引きレシピ』(共著)。情報処理学会、人工知能学会、各会員。 +Ruby札幌、日本Rubyの会、高専カンファレンス実行委員会に所属。 +PROFILE_JA +http://www.slideshare.net/mrkn/rubykaigi2010mrkn-bigdecimal +PRESENTATION_MATERIAL + e29_medium.create :title => 'NArray and scientific computing with Ruby', :speaker => 'Masahiro Tanaka (University of Tsukuba)',:abstract => (< 'ja', :profile => (< (< (< 14823720, :nicovideo_id => 'sm11929384' +NArray is an n-dimensional numerical array library developed for use in science fields, but it is usable for handling binary data efficiently. I talk about NArray for the first time after 10 years from the first release. I will also present topics including the next version of NArray, and distributed scientific computing using Ruby for multi-core era. +ABSTRACT +Masahiro Tanaka (University of Tsukuba) +Research fellow at Center for Computational Sciences, University of Tsukuba. +Author of Ruby/NArray. +His research fields include infrared astronomy, distributed systems, etc. +PROFILE +田中昌宏(筑波大学) +筑波大学計算科学研究センター研究員.Ruby/NArrayの作者. +研究分野は,赤外線天文学,分散システムなど. +PROFILE_JA +http://www.slideshare.net/masa16tanaka/narray-and-scientific-computing-with-ruby +PRESENTATION_MATERIAL + e29_medium.create :title => 'How Did Yarv2llvm Fail', :title_ja => 'yarv2llvmはどう失敗したのか', :speaker => 'Hideki Miura (CSNagoya)',:abstract => (< (< 'ja', :profile => (< (< (< 14823744, :nicovideo_id => 'sm11929507' +Yarv2llvm is a translator which converts instruciton set of VM of CRuby (aka YARV) into llvm. The feature of yarv2llvm is to use the type inference for raising the execution efficiency of generated llvm. Yarv2llvm get a results. For example it executes the program for computing fibonacci number 40 times faster than Ruby1.9. But it was clarified to be able not to convert all Ruby programs into llvm well either though it had expected beforehand. I will show the example of programming Ruby that cannot be converted with yarv2llvm well and the settlement plan. In addition I will introduce the outline of the next generation translator (ytl) that I am developing to support all specification of Ruby. +ABSTRACT +yarv2llvmはCRubyのVMの命令列をllvmに変換するトランスレータである。生成するllvmの実行効率を上げるために、型推論を用いるのが特徴である。 yarv2llvmはフィボナッチ級数プログラムでRuby1.9の約40倍の実行速度を得るなど、一定の成果が得られた。一方で、事前に予想していたことではあるが、すべてのRubyプログラムがうまくllvmに変換できるわけではないことも明らかになった。 この発表ではyarv2llvmではうまく変換できないRubyプログラム例とその解決案を説明する。さらに、フルセットRubyをサポートすることを目的に現在開発中の次世代トランスレータ(ytl)の概要を紹介する。 +ABSTRACT_JA +Hideki Miura (CSNagoya) +My job is pipework. I develop software as my hobby. You can see my products in http://github.com/miura1729 . +PROFILE +三浦 英樹 (CSNagoya) +水道屋です。趣味でプログラムを書いています。書いたものはhttp://github.com/miura1729 にあります。 +PROFILE_JA +http://www.slideshare.net/miura1729/how-did-yarv2llvm-fail-5085861 +PRESENTATION_MATERIAL + e29_medium.create :title => 'AOT Compiler for Ruby', :title_ja => 'Ruby 用 AOT コンパイラ', :speaker => 'Satoshi Shiba (The University of Tokyo)',:abstract => (< (< 'ja', :profile_ja => (< (< 14823811, :nicovideo_id => 'sm11929673' +We developed a AOT Compiler, which translates Ruby script into native code to run Ruby script faster. + +In this presentation, we show the composition of CRuby and the challenges we overcome to achieve full compatible AOT compiler for the CRuby. We also show the design and the implementation of our AOT compiler. We evaluated the compatibility and performance by using tests and benchmarks included in CRuby release. +ABSTRACT +Ruby スクリプトの実行をより高速にするために,Ruby スクリプトを機械語に変換する AOT(Ahead-Of-Time)コンパイラ を開発した. + +本発表では,CRubyの構成を述べ,CRubyと完全互換なAOTコンパイラを開発するにあたっての課題を述べる.そして,我々のAOTコンパイラの設計と実装を示す. Ruby処理系に付属するテストプログラム,ベンチマークプログラムを用いて, その互換性,および得られた性能向上について述べる. +ABSTRACT_JA +芝 哲史 (シバ サトシ) +東京大学笹田研究室の学生です。 +Ruby 1.9用の AOT コンパイラを開発しています。 +PROFILE_JA +Satoshi Shiba +A graduate student in the Sasada Laboratory, The University of Tokyo. +Develop an AOT compiler for Ruby 1.9. +PROFILE + e29_medium.create :title => 'Memory Profiler for Ruby', :speaker => 'Tetsu Soh (The University of Tokyo)',:abstract => (< (< 14823856, :nicovideo_id => 'sm11929798' +We developed a memory profiler for Ruby programming language that fulfills the requirement for measuring and analyzing the memory usage of Ruby applications. + +In this presentation, we will describe the features, the design and the implementation of the memory profiler. We will also show the performance evaluation and demonstrate the memory profiler in action. +ABSTRACT +A graduate student in the Sasada Laboratory, The University of Tokyo. +Developed a memory profiler for Ruby1.9. +PROFILE + e29_medium.create_break :length => 1.5.hours + e29_medium.create :title => 'How to create Ruby reference manual search Web application with Ruby 1.9 groonga and rroonga', :title_ja => 'るりまサーチの作り方 - Ruby 1.9でgroonga使って全文検索', :speaker => 'Kouhei Sutou (ClearCode Inc. / COZMIXNG)',:abstract => (< (< 'ja', :profile => (< (< (< 14823899, :nicovideo_id => 'sm11929936' +This talk explains about rurema-search, Ruby reference manual in Japanese search Web application, and how to create rurema-search. Rurema-search uses Ruby 1.9.1 (MRI) as a Ruby interpreter, groonga as a full-text search engine and data store and rroonga as a Ruby-groonga interface. Those technologies are particularly explained in 'how to create rurema-search' time. + + rurema-search (Japanese): http://rurema.clear-code.com/ +ABSTRACT +このトークではるりまサーチについてとるりまサーチの作り方について話します。るりまサーチはRubyリファレンスマニュアル刷新計画の成果物であるRubyのリファレンスマニュアルを高速に検索するWebアプリケーションです。るりまサーチはRubyインタプリタとしてRuby 1.9.1(MRI)、全文検索エンジンとデータストアとしてgroonga、Rubyとgroongaのインターフェイスとしてrroongaを使っています。作り方の説明では、特にこれらの技術の使い方について詳しく説明します。 + + るりまサーチ: http://rurema.clear-code.com/ +ABSTRACT_JA +Kouhei Sutou (ClearCode Inc.) +The president of ClearCode Inc.. The author or a developer of RSS Parser, Rabbit, rcairo, Ruby-GNOME2, ActiveLdap, ActiveSambaLdap, test-unit 2.x, rroonga, rurema-search, Ruby/Subversion, RWiki, Ruby and so on. +PROFILE +須藤 功平(株式会社クリアコード) +株式会社クリアコード代表取締役。RSS ParserとRabbitとrcairoとRuby-GNOME2とActiveLdapとActiveSambaLdapとtest-unit 2.xとrroongaとるりまサーチとRuby/SubversionとRWikiとRubyなどの開発者。 +PROFILE_JA +http://www.clear-code.com/blog/2010/9/1.html +PRESENTATION_MATERIAL + e29_medium.create :title => "Now you're thinking with virtual clocks", :title_ja => 'ゲームとバーチャルタイム', :speaker => 'Tom Lieber (SonicMule,Inc.)',:abstract => (< 14550931, :nicovideo_id => 'sm11930116' +Turn the multimedia render loop inside out. Cooperatively scheduling lightweight Ruby threads on a virtual clock allows you to reason about the concurrent code in your game and perform complex synchronization tasks without even realizing it. Ditch the nested trees of update() calls by making time a first class citizen! +ABSTRACT + e29_medium.create_break + e29_medium.create :title => "How to survive in a post-Rails world", :title_ja => 'before Rails 時代のプログラマが如何にして after Rails の世界にたどりついたか', :speaker => 'SHIBATA Hiroshi (Eiwa System Management,Inc. / asakusa.rb / tDiary.org)',:abstract => (< (< 'ja', :profile => (< (< (< 14920187, :nicovideo_id => 'sm11930316' +Even before the release of Rails, we have created many useful tools and applications in Ruby. In this post-Rails world, however, the way we approach application development has changed. In this session, I will talk about my experiences in adapting my way of thinking to a post-Rails world. +ABSTRACT +Rails が登場する以前(before Rails)から私たちは多くのプロダクトやツールをRubyによって作ってきました。しかし、Rails が登場した現代(after Rails)のアプリケーション開発では、before Rails とは異なる考え方を持つ必要があります。このセッションでは、自分が経験したbefore Rails から after Rails に適応するための頭の切り替え方を話します。 +ABSTRACT_JA +SHIBATA Hiroshi(hsbt) (Eiwa System Management,Inc./asakusa.rb) +He is a programmer in Eiwa System Management,Inc. member of Japanese Society for Quality Control (JSQC). His lifework is to develop Rails ap +plication and tDiary, The tsukkomi oriented weblog. +PROFILE +柴田博志(hsbt) (永和システムマネジメント/asakusa.rb) +サービスプロバイディング事業部プログラマ、品質管理学会 正会員 +Rails を使った業務システムや tDiary という Web 日記システムを作っています。 +PROFILE_JA +http://www.slideshare.net/hsbt/how-to-survive-in-post-rails-world +PRESENTATION_MATERIAL + e29_medium.create :title => 'How To Create A Beautiful Template Engine Which Never Breaks HTML', :title_ja => 'HTMLデザインをまったく崩さない、美しいテンプレートエンジンの作り方', :speaker => 'Makoto Kuwata (programmer)',:abstract => (< (< 'ja', :presentation_material => (< 14823932, :nicovideo_id => 'sm11946905' +One of the biggest challenges in modern web application development is the difficulty of collaborating with web designers. For example, eRuby requires Ruby code to be embedded inside template files, often resulting in broken HTML designs, making life difficult for web designers. To solve this problem, various template engines which don't break HTML have been created. The trade off of these template engines, however, is that they sacrifice other features such as performance or usability. + +In this session, a template engine that doesn't break HTML while also preserving performance and usability will be introduced. This session will also explore a variety of problems relating to template engines, such as the problems with techniques used in existing template engines, and whether simple "not breaking" HTML designs is sufficient. This will be definitive session about template engines for web application development. If you are interested in web design, you must attend this session. +ABSTRACT +Webアプリケーション開発における問題点のひとつに、Webデザイナと協業がしにくいことが挙げられます。たとえばeRubyだとテンプレートファイル中にRubyコードを埋め込むため、テンプレートファイルのHTMLデザインが崩れてしまい、デザイナが作業しにくくなってしまいます。この問題を解決するために、HTMLデザインを崩さないようなテンプレートエンジンがいくつか考案されています。しかしそれらはHTMLデザインの問題を解決したかわりに、パフォーマンスや使い勝手の悪さなど別の問題を引き起こしています。本セッションでは、HTMLデザインを一切崩さず、かつ使いやすくて高速なテンプレートエンジンの作り方を紹介します。また既存の方法は何が間違っていたのか、そもそもHTMLデザインを崩さないだけでいいのか、など、テンプレートエンジンにまつわる様々な問題について考察します。本セッションは、テンプレートエンジンについての「決定版」ともいうべき内容です。Webデザインに興味のある方は必見です。 +ABSTRACT_JA +(ja)http://www.slideshare.net/kwatch/html-5079716, (en)http://www.slideshare.net/kwatch/how-to-make-designerfriendly-template-engine +PRESENTATION_MATERIAL + e29_medium.create_break + end + + e29.with_options(:room => @b202) do |e29_b202| + e29_b202.create :title => 'Regional RubyKaigi Kaigi', :title_ja => '地域Ruby会議会議', :speaker => 'Koji Shimada (Nihon Ruby-no-Kai)', :from => '10:00', :length => 2.hours,:abstract => (< (< 'ja' +An open meeting (\"kaigi\") about Regional RubyKaigi for anyone who is interested. +ABSTRACT +地域 Ruby 会議に興味ある人たちが集まって、地域Ruby会議の今後について話し合うBOF。これまでの開催の関係者、これから地域Ruby会議を開催したいと考えている人、単に地域Ruby会議に興味のある人の参加を歓迎します。 +ABSTRACT_JA + e29_b202.create :title => "We're rubyists living abroad. Any questions?", :title_ja => '外国で暮らすRubyistだけど何か質問ある?', :speaker => 'Kazuhiko (Nexedi SA)', :from => '13:30', :length => 90.minutes,:abstract => (< (< @a202) do |e29_a202| + e29_a202.create :title => 'Ruby Game Developers Kaigi', :title_ja => 'Rubyゲーム会議', :speaker => 'kumaryu (Ryuichi Sakamoto)',:abstract => (< '10:00', :length => 2.hours, :lang => 'ja' +Short sessions and Demos for Game Developement with Ruby. Demos are open to all. +ABSTRACT + e29_a202.create :title => 'Asakusa.rb in Tsukuba', :title_ja => '浅草.rb in つくば', :speaker => 'Akira Matsuda (Asakusa.rb)', :from => '12:00', :length => 90.minutes,:abstract => (< (< 'TermtterKaigi', :speaker => 'jugyo (Termtter Dev Team)', :length => 3.hours,:abstract => (< (< 'ja' +\"Termtter\" is a twitter client, written in Ruby, and based on terminal applications/softwares or shells. + +TermtterKaigi does: + +* Hackathon +* Lightning Talks +* Refactoring Termtter +* Tutorial of Termtter +* Q&A of Termtter +ABSTRACT +TermtterはRubyで実装されている、ターミナルやシェルから利用することができるTwitterクライアントです。 + +TermtterKaigiは以下の事をします: + +* ハッカソン +* ライトニングトーク +* Termtter のリファクタリング +* Termtter チュートリアル +* Q&A of Termtter +ABSTRACT_JA + end + + e29.with_options(:room => @b201) do |e29_b201| + e29_b201.create :title => 'Ruby meets LDAP, choices and case', :title_ja => 'Ruby で扱う LDAP のススメ - 選択肢とその事例', :speaker => 'Kazuaki Takase', :from => '10:00', :length => 2.hours,:abstract => (< (< 'ja' +LDAP is widely used for directory service, defined on RFC 4510-4519. + +Ruby has library to manage LDAP, such as \"Ruby/LDAP\", \"Net::LDAP\" and \"ActiveLdap\". Unfortunately, no found enough documentation on the internet to determine library which is better. + +This session introduce case of each library for Ruby community to determine for choosing which library. +ABSTRACT +Ruby/LDAP, Net::LDAP, ActiveLdap など数々の実装がある中でLDAP自身のマイナーさも相まってか、各パッケージ間の特色やその利用事例について、まとまった情報が存在していません。 + +数種のパッケージが存在する以上、そこに多様性が存在するはずです。求めるオペレーションによって最適なものは何か、妥当性を選択するための判断基準が存在するはずと考えます。 + +この企画は各パッケージでの利用事例を公募し、それぞれがその利点を発表する事によって、 LDAP を扱おうとする Ruby コミュニティにパッケージ選択の指針を提供しようとする試みです。 +ABSTRACT_JA + e29_b201.create :title => 'Ruby powering 9 million dining tables', :title_ja => 'Ruby powering 9 million dining tables', :speaker => 'Kenta Hashimoto(COOKPAD Inc.)', :from => '12:00', :length => 90.minutes,:abstract => (< (< 'ja' +Do you know the website that 45% of Japanese women in their 30's are +using regularly? +COOKPAD (cookpad.com) is the world's greatest user-generated recipe +site with 9.8 million monthly users and over 800 thousand recipes. +So what is the reason for its continued growth as the largest Ruby on +Rails site in Japan? +Kenta Hashimoto, our CTO, will introduce you to our practical +technology and development environment. + +We will focus on these 3 points: + +・Ruby; the value proposition for COOKPAD +・How we scale and develop COOKPAD +・COOKPAD from the eyes of non-Japanese engineers + +The slides will be in English, and the lecture will be given in +Japanese, so non-Japanese are more than welcome to participate. + + +