« 2007年04月 | メイン | 2007年06月 »

2007年05月31日

Subversion の svnserve をサーバー起動時に起動させる方法

弊社新事務所4日目にしてやっとauカードの私以外の全員がインターネットに繋がりました(汗;)。
ホームランバッターがバット無し状態で何日も練習するようなモンです。A(^_^;)~~

それはさておき、Subversionの覚書。

Subversionとはバージョン管理システムのことを言います。「サブバージョン」と読み、CVSと言う従来定番だったバージョン管理システムの次世代型とも言われています。

バージョン管理システムとは、何と言えばいいのでしょう、例えば、下記、実際にあった悲惨な話が元ネタ。

それぞれ離れたところにいるAさん、Bさん、と言う2人の開発者が同じプロジェクトの開発をしている、としましょう。

ある日たまたま2人とも同じプログラム、hoge.rb、を編集する。

Aさんが共同サーバー上にあるhoge.rbを編集、10時間かけて色々修正。

BさんがAさんが作業し始めて9時間55分経った時に、同じく共同サーバー上にあるhoge.rbを編集、20分かけてちょちょっと修正。

Aさんが修正が完了したhoge.rbを更新する。10時間の作業、お疲れさま。

その15分後、Bさんがhoge.rbを更新する。20分の作業、お疲れさま。

・・・コホン m(~;)~~

お疲れさまじゃな~~いぃ!!!ヾ(。`Д´。)ノ彡☆

つまり、BさんはAさんが修正し始める前の状態のhoge.rbをサーバーから落として修正し、更新しているので、Aさんがhoge.rbを既に閉じてしまっていたら10時間分の苦労は跡形も無く闇に消えてしまうのだ。。。

こんな夜はAさんにとってブルースの音色が酒の酔いと共にやけに骨にしみてくるだろう、いや、空しすぎる。。。これを機にAさんはパンク音楽に目覚めるかもしれない。

話を早送り、このようなケースで彼らがバージョン管理システムを使っているとAさんはブルースに酔う必要もパンク音楽に目覚める必要もなくなってくる。

と言うのもhoge.rbのバージョンを管理してくれるんだ。つまり、Aさんが編集前のhoge.rbはバージョン88だっとしたら、Aさんが作業終了後、更新してバージョンは89になる。一方Bさんはバージョン88の状態で落としてきて修正、更新しようとする。

するとSubversionは怒るのだ、「Bさん、あんたが修正し始めたhoge.rbは既にもっと新しいバージョンになってるよ。バージョンが衝突してるよ」

Bさんは自分が修正を終えたhoge.rbとバージョン89のhoge.rbとの違いを見て適切な対処をすることが出来る(マージする、と言います)。もっと古いバージョンとの違いも見ることが出来る。もっと言えば最新版が正規版と見なされるんだが、それを古いバージョンに戻すことだって出来る。後、開発用のプログラムのみならず、ワードやエクセルファイルでもバージョン管理出来ます。

と言うのがバージョン管理システム。で、こんにち数多くの開発者が日中仕事をしながら「Subversion万歳」とつぶやいているようだが実は私もその1人(笑)。

遠回りしたが下記覚書。

svnserve --daemon --root /リポジトリへのパス/リポジトリ名

とすれば開発サーバーからネットワーク越しにSubversionを利用できる。が、この場合、サーバーが再起動すればサービスももう一度立ち上げなければいけない。

サーバー起動時に起動させる方法。

vi /etc/inetd.conf

svn stream tcp nowait root /usr/sbin/tcpd /usr/bin/svnserve -i -r /リポジトリへのパス/リポジトリ名

上書き保存。inet(スーバーサーバーデーモン)再起動。

/etc/init.d/inet restart

以上(笑)。でもちと手間取った。。。そもそもなんで root なんだ。ググったら Subversionユーザって書いてあったのに。。。
rootで上手く行きました。

後、/etc/init.d/inet restart の前に

vi /リポジトリへのパス/リポジトリ名/プロジェクト名/conf/svnserve.conf
(元々あったのはバックアップし、新規に作る)

[general]
anon-access = none
auth-access = write
password-db = passwd

として読み書きに認証を必要とする。

vi /リポジトリへのパス/リポジトリ名/プロジェクト名/conf/passwd

[users]
ユーザー名:パスワード
1人ずつ追加

を記述。

んっと、Subversionを使うには他にもしなければいけないことが幾つかある(そんなに無いけど)。なのでこの投稿のみならず他のサイトも参照してください。

とまぁ、自分勝手な覚書で恐縮ですが、ここまで読んでくれた方にお得なネタを1つ。

Subversionユーザー、しかもTortoiseSVNユーザー限定だが。

xdocdiff

リンク先の中身は開いてからのお楽しみ。変なサイトでは無いのでご安心を(笑)。



広ブロっち♪ d(^-^)

2007年05月27日

事務所移転

土曜日にトラックをレンタカーで借りてスタッフ全員で一日かけて事務所を移転しました。

西区三篠町から東区光町への移転です。

新しい事務所は弊社ビジネスパートナーである有限会社ステップライズと共同で借りることとなります。広さも20坪あり、今までの4倍あります。今までが狭すぎたのでしょうか(間違いない!汗;)、この広々感はなかなか心地よいモノを感じさせます。

立地条件も良く、JR広島駅の新幹線口から徒歩7分ぐらいのところ。

今日はJRで来たんですが、電車から降り、新幹線口の駅内アナウンスを聞きながら歩いていると、ここから徒歩数分のところに新事務所がある、と言うことを想うと信じれないような不思議な気持ちになりました。昨日、引越し作業中にカジヘンスタッフが「ウチはまともに儲かってないのにステップライズのおかげでこんないい所で借りることが出来ました」みたいなことを言っていたので営業用にそのトークいただきと思っていましたが、冗談抜きで全くその通りだと痛烈に実感(笑;)。

まだまだ石川啄木の詩に励まされる日々が続きます。。。A(^o^;)~~

新事務所、お近くに来られる際は是非遊びに来てください♪



広ブロっち♪ d(^-^)

2007年05月13日

覚書:PHP5導入、PHP4との共存、Ethna、PEAR、Smarty

往生したために覚書することにしたんだが、実際はリアルタイムには記録せず、思い出しながらなのであまり参考にならないかもしれない。その場合は申し訳ない。

さて、PHPはバージョン4と5に大きな変更があるため、5への移行を懸念する声もしばらく前はあったようだが、時期もそろそろ良さげだし、案件も4だったり5だったりするので、5を導入することに。

さてどこに設置しようかと迷ったんだが理由は割愛して、自分のノートPC、レッツノート@WindowsXPにインストールすることに。

PHP4は既にインストール済み、4は保守にも必要なので下記サイトを参考に

PHP4とPHP5を切り替える

4と5を共存させて、切り替え可能に設定。自動識別の案内のサイトもあり、迷ったがたが私の微妙な性格は手動切替を選択。

参考サイトと状況が逆だが、

PHP Downloads

のJAPANミラーサイトから最新ソース

PHP 5.2.2 zip package

をダウンロード、解凍。

C:\に既にPHP4がインストールされてある「php」と言う名前のフォルダを「php4」に変更。

デスクトップに解凍された「php-5.2.2-Win32[1]」を「php」に変更、C:\直下にフォルダを丸ごと移動。

PHP4の時はphp.iniをC:\WINDOWSに入れていたけど5との共存のために「C:\php4」に移動。

C:\php(PHP5)直下にある「php.ini-recommended」を「php.ini」にコピーして名前変更。

Apache2.0が既にインストール済みなので

C:\Program Files\Apache Group\Apache2\conf\httpd.conf

を編集。175行目あたりの

LoadModule php4_module c:/php/sapi/php4apache2.dll

を頭に「#」をつけてコメントアウトし、

LoadModule php5_module c:/php/php5apache2.dll
PHPIniDir "C:/php"

を追加。2行目が肝でようはデフォのphp.iniの場所をデフォのC:\WINDOWSではなく、C:\phpにすることによって4と5の共存が容易に。余談だが切替時は上記コメントアウトを切替、フォルダ名を「php4」→「php」、「php」→「php5」にしてApache再起動で可能。微妙なワシの性格はこの手動な道を選択。

Apacheを再起動、お馴染みのphpinfo()でPHP5への切替を確認(方法はググってね)。

Ethnaと言うフレームワークをインストール。Ethnaは良い悪い以前に仕事上の都合で必要。

コンソールからPEARコマンドを使ってEthnaインストールをやろうとしたが

PEARチャンネルを利用してインストールする(PHP 5)

pearコマンドが認識されない。。。

PHP5.2とPEARのインストール手順(Windows XP、Apache2、MySQL5)
を参考にしながら(ちなみにPEARインストールの部分のみです、文字コード等はいじっていません)

php.ini に include_path = ".;C:\php\includes;C:\php\PEAR"を記述。

PEARインストール、C:\php\PEAR\go-pear.pharを実行、バグは修正されているようなのでそのまま完了、C:\php\PEAR_ENV.regを実行してPC再起動。

それでも認識されない。強引に入れたりやったりして上手くは行ったんだが、Ethnaを入れた後もSmartyパスを認識できなかったり、色々やったあげくに振り返ってみて、見落としていたことと、注意点を3点程:

・環境変数( [スタート]-[コントロールパネル]ー「システム」ー [詳細])
 の「Path」の変数値の一番後ろに「;C:\php」を追加。PC再起動。
 pearコマンドのパスだけでいいと思っていたがこれが無いとコマンドとして認識しないらしい。
・C:\php\PEAR\go-pear.pharを実行した際にphp.iniの最後に
 include_path=".;C:\php\pear"と記述が足されるんだが、これは途中にある
 include_path = ".;C:\php\includes;C:\php\PEAR" を上書きしてしまうのでは?
 そんな気がするので途中のにはPEARのパスも足してあるから最後の方を削除。
・Apache再起動しても上手く設定を再読み込みしてくれずにエラーが続いていた。
 私の端末だけかもしれない。
 理由はわからないが、Apache Service MonitorからServicesを起動し、
 そこからApache2を再起動することによってやっと設定が反映された。
 ちなみにその設定とはC:\php\includesへのパス。Smartyをそこに入れていたのだが
 php.iniの記述をなかなか認識してもらえなかった。

往生した結果何とかPEARコマンドが使えるようになり、Ethnaも無事「こんにちは、世界」と言っている。

注意点は以上かな。「覚書」改め「思い出し書き」でした。

技術面も大切だが、システムの仕様書の方もちゃんと見ておかないといけんですなー。

いけん、ですなー

いけんd eすなー



広ブロっち♪ d(^-^)

2007年05月12日

新曲出来た

突然新曲がひらめいた。

実に7年ぶり。。。(笑)

と言うか、今出先で、まだ頭の中でしかメロディーは無いんだが、歌詞は概ね完成し、メロディーもかなりシンプルで忘れることも無いと思うので7年ぶり、と言うことにも関わらず新曲出来た宣言をすることに。(笑)

20代100曲ぐらいは曲を作ったと思うが自分のお気に入りTOP20みたいなのがひらめいた時に得る感触を感じている。

曲名は・・・、そればかりはギターで完成させてから、この投稿のコメントに書くことにします。(笑)

もし、万が一(は無いと信じつつ)完成しない場合も同じくこの投稿のコメントにその旨を記述することに。

某社に寄ってから事務所に行こうと予定していたがギターのある自宅にとんぼ返りすることを只今真剣に検討中。。。



広ブロっち♪ d(^-^)

2007年05月10日

ゴールデン・デイ@善通寺

善通寺~五重塔

12歳まで住んでいた借家

フィッシャーマンズ・ワーフから見る瀬戸大橋

今のウチの幸いか、夫婦揃って趣味が仕事のため、ゴールデン・ウィーク中唯一5日(土)のみ終日休みとなった。ゴールデン・ウィーク改めゴールデン・デイ。

どこに行こうかと、数日前から計画性の薄い会話の流れで結局しまなみ街道にサイクリングに行こうと言うことになった。

が、どうすればいい?HPを見ても初めての人にはちとわかりにくい。まぁ、行けばなんとかなるさ、と朝7時に車で出発。

尾道近くになってしまなみ街道の標識が出てきたのでそれを追っていたのだが途中でしまなみ街道とサイクリングへの標識が別方向に分岐する。なんじゃこりゃと、しまなみ街道の方を行くと結局サイクリングのレーンの無い普通の自動車道を走り出してしまった。

んー、わからんのぉ~~、と思いながらたんたんと走っていくうちにふとひらめく。

このまま車で四国に向かっているんだったら天気も曇りで景色もあまり楽しめないし、生後直後から12才まで住んでいた香川県善通寺市に行こうではないかと。

一度は妻と一緒に行きたいと思っていたところ。ちょっと足を伸ばすことになるけど、と提案したら快くオッケー、急遽予定変更となった。

しまなみ街道を走りながら気付いたことが、地図だけを見るとロマンチックなイメージをしてしまいがちだがよくよく考えてみると、あれは島が連なっているところの島と島の間を橋で繋いでいるのであって、実は殆どが陸の道、と言うことだった。

考えてみると当り前のこと。

車で走っていくうちに、島と島を繋ぐ橋の脇にサイクリング道があって、橋の両端あたりで自動車道から降りて自転車を借りる仕組みになっていることに気付いたのだが、既に頭の中は善通寺。金髪の花屋の展示会に間に合わせて帰広したいのでそのまま走行。

えっと、長文コースになりそうなので早送りします。

善通寺着いた(なつかしー)
うどん食った(美味しー)
12まで住んでいた借家に行った(なつかしー、ボロー、外人さん一家が今住んでいるもよー)
善通寺(市ではなく寺が沢山あるところ)に行った(弘法大師ー、祭りやってたよー、にぎやかー)
商店街に行った(なつかしー、でも友達2人の店が商店街なのに住む家に改造されてるよー、ガラガラー、過疎化真っ只中ー)

この時点で午後4時。急がねば花屋の展示会に間に合わない。

と言うわけで車に乗って広島に向かう。

帰りは瀬戸大橋を渡る。

長い。。。

長い。。。

長い。。。

この距離を橋かけようと言う発想は一体どこから出てきたのだろうか、走行しながら不思議になってしょうがない。

私的な予測だが総工事費は1兆円行っているのではないか、そう、9999億円プラス1億円。

というわけでWikiってみると近かった。1兆1338億円だって。

て言うか、とにかく、とにかく長い。。。

途中で予島と言う島に降りてPAにあるフィッシャーマンズ・ワーフと言うレストランでちょっと一服。

このレストランはこれまた奇遇なことに私がミシガン州立大学に編入する前に通っていたランシング・コミュニティ・カレッジと言う、日本で言う短大のようなところと当時提携していて、そこの学生が半年間ずつ入れ替わりながらこのレストランでジョブ・トレーニングをやっていた。

ある高校時代の同級生と大学時代にバッタリ会ったらそのプログラムで日本に行っていたらしく「え?レイ、ゼンツウジ出身?ゼンツウジ行ったあるよ、キョウトの次に好きな町」と言う会話が実際にあった。アメリカの高校時代の同級生が善通寺を知っていると言うのは実に不思議な感覚。

ところでこのレストラン、初めて来たが、今はもう古びていて彼らの気配が全くない。それ以上に、飾っている花も枯れているし、1階のお土産売り場は人で溢れているのに、2階のこのレストランはガラガラ。多分バブルがはじけて錆びれたまんまっぽい。経営コンサルタントにとっては見習い新入社員に担当させても成功するだろうと思えるぐらいの楽勝案件。瀬戸大橋を見渡せる最高の景色だし。

自動車道に戻り、そのまま車を走らせて金髪花屋の展示会最終日に間に合うように無事帰広。ヤツは美人なスタッフ、美人なお客ばかりに囲まれて普段のキャラに似合わずにも完全にハーレム状態だった。。。独身だったらかなり嫉妬していたかもしれない(いえいえ、そんなことありませーん)。

連休に入る前は連休中あれもやってこれもやってと(全部仕事周りだが・・・)と期待を膨らませていたのに、結果から言うと遥かに期待を下回ってしまった。。。本当に「あ」と言う間に終わってしまった。仕事が追いついた気がしない。実装の部分で遅れを取り戻した程度であいかわらずTODOが溜まってる感慢性。。。

幸い、連休最終日にRubyでサーバー側で動くスパムメール駆除プログラムを書けたのが何より幸い。今は差出元のメールアドレスだけでの判定でバックアップを取りながらサーバー上のメールを削除すると言う、たいした機能も無い小さなプログラムだが何より自分がゼロから作った、と言うこともあって愛着があり、毎日利用している。



広ブロっち♪ d(^-^)

2007年05月02日

牢獄でRuby

なんとまぁ。。。(笑)

真面目な話、とある刑務所で刑務作業にプログラミング言語のRubyを使ったソフトウェア開発を就労支援の一環として実施されるそうです。

民間刑務所で Ruby によるソフトウェア開発者を養成、アウトソーシング業務を
Rubyだから牢獄ではなく、牢獄に入ってまでもRubyと言うわけでは決してありませんが、まぁ、こんな話もあるんですな。。。

面白いことにどうやら担当の方は事前にはてなの人力検索でアンケート調査をされてからRubyを選ばれたそうです。

プログラマーの方に質問です。

しかしRubyできるのって再就職するのにホントに役立つのかなぁ、ちょっと疑問。。。

============================================

面接官:「どんな言語の経験ありますか?」

志願者:「Lispです。」

面接官:「・・・・」

============================================

面接官:「どんな言語の経験ありますか?」

志願者:「Haskellです。」

面接官:「・・・・」

============================================

面接官:「どんな言語の経験ありますか?」

志願者:「Pythonです。」

面接官:「・・・・」

============================================

面接官:「どんな言語の経験ありますか?」

志願者:「Rubyです。」

面接官:「・・・・」

============================================

面接官:「どんな言語の経験ありますか?」

志願者:「アセンブラです。」

面接官:「・・・・」

============================================

面接官:「どんな言語の経験ありますか?」

志願者:「.NETです。」

面接官:「君、採用決定です。」

============================================

とまぁ、思ったわけで。。。まぁ、地方のソフトウェア業界の今時の一般論に過ぎませんが。。。

それにしても人力検索もさすがでして色んな言語が出てきます。「なでしこ」と言う日本語のプログラミング言語もあるみたいで

日本語プログラム言語「なでしこ」公式ページ

if~else文の場合

もし、天気が「晴れ」ならば
    「洗濯物を干す」と表示。
違えば
    「洗濯物は干さない」と表示。

となるそうな。。。

A(^o^;)~~

やっぱ、Rubyっすかね!?(笑)



広ブロっち♪ d(^-^)