<?xml version="1.0" encoding="UTF-8"?><rss version="0.92">
<channel>
	<title>Groove Labo</title>
	<link>http://labo.opengroove.com/blog</link>
	<description>株式会社オープングルーヴの開発者のブログ</description>
	<lastBuildDate>Tue, 28 Sep 2010 06:09:57 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>ja</language>
	<!-- generator="WordPress/3.0.4" -->

	<item>
		<title>Railsのdatetime_selectの保存の仕組みを調べてみる</title>
		<description><![CDATA[sugimotoです。 Ruby on Rails にはいろいろ便利な機能がありますが、前から便利だけど微妙。。と思っているのが、date_select や datetime_select です。どちらも ActionView::Helpers::DateHelper のmethod で日付入力を簡単に作れますが、年月日のプルダウン入力はちょっと。。。という感じです。 ただ、この入力、Modelのdate,datetime なカラムにそのまま突っ込んで保存してしまえるのがとっても便利です。Post.published_at というカラムに params = { :post => { :published_at(1i) => "2010", :published_at(2i) => "09", :published_at(3i) => "28", :published_at(4i) => "15", :published_at(5i) => "20" } } みたいな感じでcontrollerにパラメータが渡されますが、 post = Post.new(params[:post]) とするだけで、post.published_at = &#8217;2010-09-28 15:20&#8242; なレコードができてしまいます。 前置きが長くなりましたが、この仕組を調べてみました。 なお、今回例示したソースは公開時のtrunk を参照しています。 仕組みを調べてみる まずはレコードを作成する場所、つまり、 ActiveRecord::Base::initialize を見てみます。 def initialize(attributes [...]]]></description>
		<link>http://labo.opengroove.com/blog/2010/09/28/rails%e3%81%aedatetime_select%e3%81%ae%e4%bf%9d%e5%ad%98%e3%81%ae%e4%bb%95%e7%b5%84%e3%81%bf%e3%82%92%e8%aa%bf%e3%81%b9%e3%81%a6%e3%81%bf%e3%82%8b/</link>
			</item>
	<item>
		<title>[メモ] CentOS5 にkeepalived を設定する</title>
		<description><![CDATA[wget -nd http://www.qmailtoaster.com/download/stable/daemontools-toaster-0.76-1.3.6.src.rpm yum install rpm-build rpmbuild --rebuild daemontools-toaster-0.76-1.3.6.src.rpm rpm -Uvh /usr/src/redhat/RPMS/x86_64/daemontools-toaster-0.76-1.3.6.x86_64.rpm wget -nd http://www.emaillab.org/djb/daemontools/svscan mv svscan /etc/init.d/. chmod 755 /etc/init.d/svscan 参考、、というか、そのまま: CentOS に daemontools をインストールしてみた]]></description>
		<link>http://labo.opengroove.com/blog/2010/09/17/%e3%83%a1%e3%83%a2-centos5-%e3%81%abkeepalived-%e3%82%92%e8%a8%ad%e5%ae%9a%e3%81%99%e3%82%8b/</link>
			</item>
	<item>
		<title>ドッグフードを食べる &#8211; BTS &amp; SCM</title>
		<description><![CDATA[ciklone(サイクロン)のリリース前に、自分たちが実際にプロジェクトで利用して、 ciklone(サイクロン)を改善してきました。 サイクロン開発プロジェクトの最後の6ヶ月間にソフトウェアのライフサイクルをくり返します。すべての機能を使いながら、「BTS/SCM/プロジェクト管理に必要なことができ、効率的か」、を試験してきました。 開発しながら、実際の現場で利用することで、バグがどんどん見つかったし、使いにくい点、改善すべきことがよく見えます。自分たちが作ったシステムを自分たちのプロジェクトで使う最大のメリットだと思います。 よくいわれる「ドッグフードを食べる」ことをやったことで、BTSやバージョン管理に必要な機能と必要ではない機能を切り分けることができ、開発の現場に必要なツールとして、 ciklone(サイクロン)がリリースできました。 「ドッグフードを食べる」とは、 自社で作ったソフトウェアを実際の業務で利用して、評価することです。有名なのはマイクロソフトのドッグフードです。また、Google ケータイも同様です。 シリコンバレー101[Googleケータイ販売で、Googleは何を変えたいのか?] Googleでは、常に新しい製品や技術を実験しており、短期間でフィードバックと提案を集めるために社員にテストを依頼している。われわれは、これをドッグフーディング(&#8220;eating your own dogfood&#8221;から)と呼んでいる。 この「ドッグフードを食べる」経験は、お客様からのフィードバックと同じくらい重要なモノになったと感じています。 ベータ版が完成した頃から、特定のお客様にもご利用頂きました。 ドッグフードを食べ、お客様からのフィードバック経験によって、ciklone(サイクロン)はチームにとって、すばらしいソフトウェアを開発するためのプラットフォームとして十分に機能しました。 オープングルーヴでは、ciklone(サイクロン)を最大限に活用して頂き、他社の利用方法を紹介することで、みなさんのチームのソフトウェア開発を効率化とコストダウンしていく支援をさせて頂きます。 オープングルーヴでは、Wikiサイトを使って、実証済みのガイドとベストプラクティス(と考えられる)を提案していきます。]]></description>
		<link>http://labo.opengroove.com/blog/2010/08/25/%e3%83%89%e3%83%83%e3%82%b0%e3%83%95%e3%83%bc%e3%83%89%e3%82%92%e9%a3%9f%e3%81%b9%e3%82%8b-bts-scm/</link>
			</item>
	<item>
		<title>CakePHP で連結テーブルのモデルは先に宣言すること</title>
		<description><![CDATA[sugimoto です。最近、CakePHPを使ってます。 しばらくRails を使っていたこともあり、わかりやすい所もある反面、衝撃的に違うところがあったりして試行錯誤な毎日です。 先日、連結テーブルに「並び順」カラムを持たせて、hasManyAndBelongsToなリレーションの順番をつけようとしたところ、うまく動きませんでした。 プロジェクトとユーザーを以下のようなテーブルで関連つけていました projects users projects_users このとき、「各プロジェクトの参加者ごとに並び順を設定したい」という要望があり、 projects_users に position カラムを持たせて並び順を設定することにしました。 positionカラムの更新をするために ProjectsUser という中途半端なmodel クラスを作ったところ、問題発生。 projects_controller のuses 句で ProjectsUser を設定しているにもかかわらず、ProjectsUser の関数が呼べず、controller内での $this->ProjectsUser の実体がなぜか AppModel となっていました。 AppController など、ソースを確認したところ、controller のイニシャライズ時、以下のようなロジックでした。 Projectモデルのインスタンス を作成 Projectモデルで設定されているリレーションに該当するモデルのインスタンスを作成(Userなど) リレーションテーブルを扱うのインスタンス ProjectsUserを作成 その際、デフォルト実装である AppModel のインスタンスとして作成 上記作成したインスタンスはすべてキャッシュ ProjectsUserを作成するが、すでにキャッシュされているためそれを使用 つまり、上記処理がcontroller の uses句内で宣言された順に処理されているため、ProjectsUserをロードするとき、先に処理したProjectモデルのリレーションとして作成されたProjectsUserが優先されていたわけです。 今日の格言 リレーショナルテーブルのモデルを作ったら、uses 句内では必ず先に宣言すること。 ソフトウェアエンジニアのためのバグトラッキングシステム : Ciklone ソフトウェアエンジニアのためのバグトラッキングシステム]]></description>
		<link>http://labo.opengroove.com/blog/2010/06/30/cakephp-%e3%81%a7%e9%80%a3%e7%b5%90%e3%83%86%e3%83%bc%e3%83%96%e3%83%ab%e3%81%ae%e3%83%a2%e3%83%87%e3%83%ab%e3%81%af%e5%85%88%e3%81%ab%e5%ae%a3%e8%a8%80%e3%81%99%e3%82%8b%e3%81%93%e3%81%a8/</link>
			</item>
	<item>
		<title>ActiveRecord の conditions を作成するためのクラスを作ってみた</title>
		<description><![CDATA[どうもお久しぶりです。 morimotoです。 今日は複雑なActiveRecordの条件句を作成する際に（もしかしたら）楽になるのではないかと思いconditionを生成するクラスを作ってみました。 class ARCond module OPERATION EQUAL = '=' NOT_EQUAL = '' IN = 'IN' GREATER = '>' GREATER_OR_EQUAL = '>=' LESS = '< ' LESS_OR_EQUAL = ']]></description>
		<link>http://labo.opengroove.com/blog/2010/06/28/activerecord-%e3%81%ae-conditions-%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e3%81%9f%e3%82%81%e3%81%ae%e3%82%af%e3%83%a9%e3%82%b9%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%81%9f/</link>
			</item>
	<item>
		<title>オープンソースソフトウェアの育て方</title>
		<description><![CDATA[プロジェクトが失敗に終わる可能性は非常に高く、 おそらく90–95%くらい 「オープンソースソフトウェアの育て方」という書籍があります。副題にフリーソフトウェアプロジェクトを成功させるコツとあるように、著者がオープンソースプロジェクトでの経験を元に実例を交えて説明されています。バージョン管理システムで有名なSubversionプロジェクトでの実際の経験から書かれています。 実践的な内容なので、ぜひソフトウェアエンジニアの方には読んで欲しい内容です。 （技術的な側面よりもオープンソースプロジェクトをうまく運営するための考え方やプロジェクト運営方法についての説明が多くなっています。） さらに、うれしいことにウェブで全文を公開しているためだれでも読むことが出来ます（当然、日本語で）300ページにもなる専門的でためになる文書を公開された作者の方と翻訳者の方に感謝しなければいけません。 本の内容で特にビジネスアプリケーション開発の困難な点と共通する部分が多く（同じソフト開発なので当たり前ですが）さらに多くの課題に対処するための方法も参考になります。 「3. 技術的な問題」で紹介されているツールとその運用方法は、ビジネスアプリケーションの現場でも十分有効に使えるので、新入社員などに読ませるのも良いと思います。紹介されているツール群は若干古いですが、どのようなツールを、どのような場面で、どのように使っているのかを知る上でとても分かりやすいです。 また、「6.コミュニケーション」などは自分たちの開発でも学ぶべきコトが多いと思った部分で、読んでおくべき章だと思います。 書いたことがすべて 陥りがちな罠 付録C.なんで自転車置場の色まで気にしなきゃならないの？ ソフトウェアエンジニアに求められる能力として、はじめに思いついたことは、「文章を作成する力」です。コミュニケーション能力や提案力、プログラミング能力などよく言われる能力も必要であると思いますが、自分の考えを正確に正しく伝えるための書く力はインターネットが仕事に欠かせないツールになったことで重要であると考えています。 そのためには書く（まとめる）内容以前に考える力が重要になってきますが。。。 http://subversion.tigris.org/]]></description>
		<link>http://labo.opengroove.com/blog/2010/05/24/%e3%82%aa%e3%83%bc%e3%83%97%e3%83%b3%e3%82%bd%e3%83%bc%e3%82%b9%e3%82%bd%e3%83%95%e3%83%88%e3%82%a6%e3%82%a7%e3%82%a2%e3%81%ae%e8%82%b2%e3%81%a6%e6%96%b9/</link>
			</item>
	<item>
		<title>どこでもサーバー管理ができる iPhoneアプリ 「TouchTerm」</title>
		<description><![CDATA[sugimotoです。 Webサービスの運用ではサーバーやサービスの監視が欠かせないと思います。 オープングルーヴでも突然のサーバー停止や、サービス停止、定期処理の失敗などに備え、監視システムを使って障害発生時にはメール通知するようにしています。 GW中に出かける途中で、監視システムとして運用しているZABBIXから警告メールが飛んできました。 パソコンを持たずに出かけていて、長距離バスに乗っていたんですが、iPhoneにインストールしていたTouchTermを使いました。 TouchTermはiPhoneアプリとして動作するSSHターミナルです。 アプリケーション内で作成したSSHキーのパブリックキーをあらかじめサーバーにおいておくことで、サーバーにSSH経由でログインすることができます。 iPhoneの画面とキーでも十分にサーバー上のログや状況の確認が可能で、問題の箇所をすぐに特定、対応することができました。 iPhoneの画面とキーを使っての操作のため、長時間操作や大きな設定変更は難しいですが、緊急時の一時的な対応には十分使えるツールです。 ソフトウェアエンジニアのためのバグトラッキングシステム : Ciklone ソフトウェアエンジニアのためのバグトラッキングシステム]]></description>
		<link>http://labo.opengroove.com/blog/2010/05/06/%e3%81%a9%e3%81%93%e3%81%a7%e3%82%82%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc%e7%ae%a1%e7%90%86%e3%81%8c%e3%81%a7%e3%81%8d%e3%82%8b-iphone%e3%82%a2%e3%83%97%e3%83%aa-%e3%80%8ctouchterm%e3%80%8d/</link>
			</item>
	<item>
		<title>ツールを使った情報共有#1（仕事で Wiki を使いたい）</title>
		<description><![CDATA[社内での仕事術 #1 社内での仕事術について紹介したいと思います。 ソフトウェア開発は一つ一つの案件をプロジェクトとしてすすめるため、はじめにプロジェクトチームを作ります。 プロジェクトチームは提案内容や得意分野により主担当がかわります。 プロジェクトでは複数のメンバーが集まって仕事をすることになるため、情報共有はとても重要。 オープングルーヴではどのようにしているのか、ツールを使った情報共有#1として「Wikiを仕事で使う」について書きたいと思います。 Wikiとは「ウィキ」と言いますが、ウェブブラウザを使ってページの作成・編集ができるコンテンツサービスです。一人でメモ書きとして利用している方もいると思いますが、けっこう書込のためにページを開く。という動作が面倒になりがちということはあると思います。 弊社で利用する場合は、複数のメンバーでプロジェクトを進める上でガリガリ書き込みます。これはあるルールを決めているためですが、そのルールのおかげでWikiがなくてはならいツールになっています。 ルール : プロジェクトの成果物(中間成果物)はWikiで一元管理 Wikiのメリット 会議をしながら議事録(画面を見ながらみんなで確認) 顧客向けの議事録 顧客との打合せで出来る議事録はWikiをPDF化やメールで共有 設計書(技術メモ、検討メモ)、技術方式に対する他チームのコメント 開発環境構築メモなど、開発に関わる情報源 世代管理機能、ページ単位で履歴を確認し、追加された・削除されたがカラー表示される(下図) などなど、メールでも同様のことはできますが、プロジェクトのポータルとして利用でき、大切な文書が埋もれない･･･(メールは探すのが大変) プロジェクトメンバーで使うことで、ガリガリ更新され、すぐにWikiが必須の情報共有ツールになりました。 デメリットは&#8230; しかし、良い面ばかりではないです。新しく加わったメンバーなどにとっては使ったことがないツールのため、慣れるまで大変かも知れません。 「Wikiを知らない人や初めて使う人にとって慣れ親しんだインターフェースではない。」ということです。ファイル名がない、特殊なフォーマット･･･ Wikiを仕事で使いたい人へ セキュアで、1プロジェクト無料のcikloneを評価してください。]]></description>
		<link>http://labo.opengroove.com/blog/2010/03/16/%e3%83%84%e3%83%bc%e3%83%ab%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9f%e6%83%85%e5%a0%b1%e5%85%b1%e6%9c%891%ef%bc%88%e4%bb%95%e4%ba%8b%e3%81%a7-wiki-%e3%82%92%e4%bd%bf%e3%81%84%e3%81%9f%e3%81%84%ef%bc%89/</link>
			</item>
	<item>
		<title>IIS マネージャから FastCGI の設定を行う</title>
		<description><![CDATA[こんにちわ。omae です。 さて、前回では IIS7 + FastCGI で PHP 5.3 を実行できるようにしました。 少し試しているうちに php のプロセス自体は 4 つまで増えるようになっている…ということに気づきました。 また当然ながらこの設定を変更する方法が用意されており、一つは %WINDIR%\system32\inetsrv\appcmd コマンドを用いるもので、もう一つは IIS マネージャから行うものです。 ここでは IIS マネージャから行う方法をやってみます。 手順 1. IIS 7.0 Administration Pack をインストール Administration Pack : The Official Microsoft IIS Site からインストーラをダウンロードします。右のほうに Or, download x86 / x64 のような表記があるので実行環境に合ったものをダウンロードします。 ダウンロードしたらその MSI を実行してインストールします。 2. IIS マネージャを起動 IIS マネージャを起動すると FastCGI Settings [...]]]></description>
		<link>http://labo.opengroove.com/blog/2010/02/22/fastcgi-settings-with-iis-manager/</link>
			</item>
	<item>
		<title>IIS 7 + FastCGI で PHP 5.3 を実行する</title>
		<description><![CDATA[こんにちわ。omae です。 今回は IIS 7 で PHP 5.3 を実行する環境が必要になったのでその手順を残しておきたいと思います。 作業しようとしてから気づいたのですが PHP 5.3 から isapi モジュールが廃止されていました。PHP 5.2 以前までは isapi モジュールで環境を作成していたのですが、廃止されてしまったものはしょうがありません。IIS 7 からは FastCGI が正式に対応しているので、こちらで設定することにします。 手順 1. PHP 5.3.1 をインストール PHP For Windows: Binaries and sources Releases より今回は VC6 x86 Thread Safe (ZIP) を使うことにしました。この zip ファイルを C:\php に展開します。 ここでコマンドプロンプトを起動して C:\php\php-cgi.exe -h が実行できることを確認しておきます。実行すると以下のようなエラーが上がる場合は php.ini から extension=php_mssql.dll をコメントアウトします。SQL Server [...]]]></description>
		<link>http://labo.opengroove.com/blog/2010/02/22/php-5-3-on-iis7-via-fastcgi/</link>
			</item>
</channel>
</rss>

