RBC総会
RBC総会
遅くなりましたが報告です。
7月22〜23日にかけて
RBC総会に参加してきました。
このような活動に参加するのは初めてで
いろいろな貴重な経験をすることができたんで
自分が参加したイベントについてまとめておきます。
■イケテルビジネス勉強会【22日9:30〜12:30】
この勉強会では「地球防衛隊のポータルサイト」を作ろうというテーマの元に
5〜6人のグループでペルソナとサイトマップを作成し最後に各チームで
プレゼンをしました。
初対面の方々とアイデアを出し合って一つのものを作っていくという作業は
初めての経験でした。
僕のチームには全体を纏めるのがうまい人やアイデアを次から次へと出す人
など自分にないものを持っている人がたくさんいました。
やはりこういう場では如何に自分のキャラを出してチームに貢献できるかが
重要だと感じました。
■AIR+Rails勉強会【22日13:00〜18:00】
AIRとRailsを使ったアプリを作成しました。
まずは我らがakimatterさん講師のもとRailsのアプリを作成して
その後アドビの方がAIRの使い方をレクチャーしてくれました。
Railsは業務でも扱っているのですがAIRははじめて触りました。
AIRに関して軽く知識がついたのでこれからもっと勉強して
使えるようになっていきたいです。
■まつもとさんライブコーディング【23日10:00〜12:00】
Rubyの生みの親まつもとさんのライブコーディングに参加しました。
Rubyのコード自体はぐー、ちょき、ぱーの文字列をランダムに出力する
簡単なじゃんけんコードを披露してくださったぐらいでしたが
まつもとさんの開発環境の紹介(メーターマニアらしくデスクトップでたくさんメーターが動いてた)や
これからRubyに入れたい機能を教えてくれたりとても面白かったです。
■記念セミナー【23日13:00〜18:00】
●トーマス・エネボさん講演
JRubyのCore Developerのトーマス・エネボがJRubyについて
話をしてくれました。
JRuby自体はまだ触ったことがないのですが
うちの会社もJRuby 徹底入門という本を出版したので
これを機にJRubyについても勉強していきたいです。
●ギャレット・イルグさん講演
アドビ・ジャパン社長のギャレッド・イルグさんが
開発とデザインの融合の大切さの話をされました。
ユーザーが使いやすいくイケテルデザインのWebアプリを
これから僕自身開発していきたいと思いました。
懇親会
この懇親会は帰りの飛行機の時間の関係で30分ぐらいしか
参加できませんでした。
残念!
Ruby Enterprise Edition+Passengerの環境構築
■VMware playerをインストール
以下からダウンロード
http://www.vmware.com/jp/products/player/
■subversionインストール
root$ yum install subversion
■Ruby Enterprise Editionをインストール
http://www.rubyenterpriseedition.com/
上記からダウンロードして
tar xzvf ruby-enterprise-1.8.6-20080621.tar.gz
解凍し
./ruby-enterprise-1.8.6-20080621/installer
でインストール
途中で
GNU C++ compiler
Zlib development
OpenSSL development
などがnot foundで怒られたのでそれらを入れて再度
./ruby-enterprise-1.8.6-20080621/installer
したらうまくいった。
■パスを通す
export PATH=$PATH:/opt/ruby-enterprise-1.8.6-20080507/bin
■PJをcheckout
svn checkout URL
でpjをチェックアウト
■sambaを設定
yum -y install samba
設定はshare/samba.txt
and
以下を参考に
http://centossrv.com/samba.shtml
http://www.miloweb.net/samba.html
http://www.geocities.jp/tatsus490824/selinux_status-change.html
http://www.nextren.com/okamoto/2007/10/centos5_samba.html
■oracle10g-instant cliantインストール
rpm -hiv oracle-instantclient-basic-10.1.0.4-1.i386.rpm
rpm -hiv oracle-instantclient-devel-10.1.0.4-1.i386.rpm
rpm -hiv oracle-instantclient-sqlplus-10.1.0.4-1.i386.rpm
でインストール、sqlplusコマンドを叩いたら下記のエラー
sqlplus: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory
原因はlibsqlplus.so が見つからないとのこと
export LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.3/client/lib/
[m-matsumoto@CentOS ~]$ echo $NLS_LANG
[m-matsumoto@CentOS ~]$ export NLS_LANG=Japanese_Japan.UTF8
[m-matsumoto@CentOS ~]$ sqlplus m-matsumoto_d/m-matsumoto_d@10.6.0.99/madison
でつながることを確認
■ruby-oci8(http://ruby-oci8.rubyforge.org/ja/)のインストール
http://rubyforge.org/frs/?group_id=256
より1.0.0-rc3をインストール
tar xzvf ruby-oci8-1.0.0-rc3.tar.gz
で解凍
cd ruby-oci8-1.0.0-rc3/
make
make install
でインストール
■パス設定
source /home/m-matsumoto/.bash_profile
■ファイアフォール解除
/etc/init.d/iptables stop
で解除できる
特定のポートを解除するには
vi /etc/sysconfig/iptables
で下から3行目に
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT
を追加して
/etc/init.d/iptables restart
で再起動
■Passengerをインストール
gem install passenger
でインストール
Apache 2 development headers... not found
* To install Apache 2 development headers:
Please run yum install httpd-devel as root.
といわれたので
yum install httpd-devel
でインストールし再度
gem install passenger
最後下記のメッセージが出てインストール完了
-------------------------------------------- The Apache 2 module was successfully installed. Please edit your Apache configuration file, and add these lines: LoadModule passenger_module /opt/ruby-enterprise-1.8.6-20080507/lib/ruby/gems/1.8/gems/passenger-1.0.5/ext/apache2/mod_passenger.so RailsSpawnServer /opt/ruby-enterprise-1.8.6-20080507/lib/ruby/gems/1.8/gems/passenger-1.0.5/bin/passenger-spawn-server RailsRuby /opt/ruby-enterprise-1.8.6-20080507/bin/ruby After you restart Apache, you are ready to deploy any number of Ruby on Rails applications on Apache, without any further Ruby on Rails-specific configuration! Press ENTER to continue. -------------------------------------------- Deploying a Ruby on Rails application: an example Suppose you have a Ruby on Rails application in /somewhere. Add a virtual host to your Apache configuration file, and set its DocumentRoot to /somewhere/public, like this: <VirtualHost *:80> ServerName www.yourhost.com DocumentRoot /somewhere/public </VirtualHost> And that's it! You may also want to check the Users Guide for security and optimization tips and other useful information: /opt/ruby-enterprise-1.8.6-20080507/lib/ruby/gems/1.8/gems/passenger-1.0.5/doc/Users guide.html Enjoy Passenger, a product of Phusion (www.phusion.nl) :-) http://www.modrails.com/
設計書
今日の作業
設計書作成
今日の作業でわかったこと&わからなかったこと
今日は設計書の作成を行った。
その作業をしていて複雑な処理を読む相手に伝わるように
わかりやすい日本語で記述することがすごく大変だった。
というか全然わかりやすくまとめることができなかった。
調べたことのまとめ
CR-LF
行末を表す記号として、キャリッジ・リターン(carrige return,CR)とライン・フィード(Line feed, LF)がある。
勉強日
今日の作業
Railsについての学習
ActiveScaffold
GetText
調べたことのまとめ
ジェネレータとプラグイン
ジェネレータは静的であり、1度だけ実行されコードを生成する。
プラグインは動的であり、アプリケーションランタイムの一部として実行される。
Railsのscaffoldジェネレータは1度だけ実行され、モデルの中の現在のフィールドに基づいて静的なHTMLテンプレートを作成する。
列を追加したいときにはビューを再生成するか、手動でビューにフィールドを追加する必要がある。
それに対しプラグインは、ビューを実行時に生成する為モデルの変更は苦労なく行える。
ActiveScaffold
http://blog.codezine.jp/editor/2007/09/ruby_on_railsactivescaffold_1.php
このサイトを参考にActiveScaffoldを使ってみた。
mysql> create database bookmark_development default character set utf8;
bookmarkというRailsアプリを作り
environment.rbファイルに文字コードを指定
$KCODE = 'u' require 'jcode'
を追加。次はdatabase.ymlの設定
次に
bookmark>ruby script/generate model bookmark
でmodelファイルbookmarkの作成
migrationファイルを
class CreateBookmarks < ActiveRecord::Migration def self.up create_table :bookmarks do |t| t.column :title, :string t.column :url, :string t.column :created_at, :datetime t.column :updated_at, :datetime end end def self.down drop_table :bookmarks end end
こんな感じに記述し実行
次に
bookmark>ruby script/generate controller user
でuserコントローラ作成
次にActiveScaffoldをインストール
bookmark>ruby script/plugin install http://activescaffold.googlecode.com/svn/tags/active_scaffold
インストール後app/views/layoutsにactivescaffold.rhtmlを作り
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>ブックマーク管理</title> <%= javascript_include_tag :defaults %> <%= active_scaffold_includes %> </head> <body> <%= yield %> </body> </html>
こんな感じに記述。
次にscaffoldを実行するControllerであるUserControllerに
class UserController < ApplicationController active_scaffold :bookmark layout "activescaffold" end
を記述し完了。
サーバを起動しhttp://localhost:3000/userへ
英語でわかりづらいからUserControllerを
class UserController < ApplicationController layout "activescaffold" active_scaffold :bookmark do |config| config.label = "ブックマークテーブル" config.columns = [:title, :url, :created_at, :updated_at] list.columns.exclude :created_at list.sorting = {:title => 'DESC'} columns[:title].label = "タイトル" columns[:created_at].label = "作成日" columns[:updated_at].label = "更新日" end end
と記述。内容は
・config.label…テーブル名の表記を設定
・config.columns…表示するカラムを設定。また、この順番で表に表示されます。
・list.columns.exclude…表には表示しないカラム。created_atカラムを非表示にしてみました。
・list.sorting…デフォルトソート。複数指定できるようです。
・columns.[].label…カラムの表記を設定。
次に
/vendor/plugins/active_scaffold/lib/configのファイルの
「:label => 'Edit'」を「:label => '編集'」などに書き換えリンク名を日本語に。
Gettext
次にGettextを使ってみる。
http://rubist.blog77.fc2.com/blog-entry-74.html
を参考に。
$>gem install gettext
次に参考サイトのようにbookmarkモデルにバリデーションを追加
class Bookmark < ActiveRecord::Base #必須チェック validates_presence_of :title validates_presence_of :url #長さチェック validates_length_of :title, :maximum => 15 #形式チェック validates_format_of :url, :with => /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$/ix end
時間がなくなったため続きは明日。
今日の作業でScaffoldとActiveScaffoldの違いがわかった。
明日の作業
未定
■
テスト
今日の作業
項目、バリデーション、アクションのチェック
修正されたバグの確認
今日の作業でわかったこと&わからなかったこと
最近テストをproductionモードでやっている。
サーバを起動したままMOCKデータを変更してテストを行おうとしたけど変更が反映されない。
developmentモードのときはできてたのに。
と思いバグとして報告した。
結果から言うと実装が悪いわけではなくただ自分の知識不足でした。
以下は先輩の説明引用
developmentモードは、その名の通り開発用のモードなので、 開発者がいちいちサーバーを止めなくても、ソースコードへの変更 が反映されるようにソースコードが自動ロードされています。 また、開発者用なので、例外が発生した場合に原因を見つけやすい ようにスタックトレースなどの情報がエラー画面には表示されます。 productionモードは、製品用のモードです。つまり本番環境で 動作することを前提としているので、余計な動作をしないように、 ソースコードが変更されてもそれを感知しません。一つのソースファイル は一度読みこまれたらそれっきりです。 こちらは、エラーがあった場合にスタックトレースなどを表示しても エンドユーザーには意味がないので、専用のエラー画面を表示します。
前にも実行環境の違いは本で読んだことがあったけど完全に忘れてた。
今度はしっかり覚えておこう。
テスト
今日の作業
ビュー作りの続き
項目、バリデーション、アクションのテスト
調べたことのまとめ
今日はオレンジニュース見ての感想的なものを書こうと思う。
本来なら技術的な記事に対しての感想を書くべきだと思うが、
一通り見てみたがまだ今の自分には敷居が高いものばかりだったので、
ITPro Challenge!、伊藤直也氏の講演「ベンチャー志向プログラマ」の動画を公開
http://itpro.nikkeibp.co.jp/article/Watcher/20071009/284072/
を読んでの感想を書きたいと思う。
この記事で一番印象に残った言葉は
「なりたいと思っていた自分になれた。でももっとこうなりたいと思うようになった。」
という言葉。最近、自分は将来どうなっていきたいのかということをよく考える。
今一番思うことは早く実装できるぐらいの技術力を身に付けたいということだ。
そしてその目標をできるだけ早く達成し、
新たな「もっとこうなりたい」という目標を見つけていきたい。
明日の作業
項目、バリデーション、アクションのテスト
ビューの作成