以前に所属していた会社であるワイズノットで「10分で作るRailsアプリ for Windows」でおなじみので増井さんによるrails講習会があるというメールを頂いて行ってきました。

rails講習会メモ

日本語化

  • ActiveHeart or GetText-Ruby(better)

DBの変更管理

  • Migration
  • rake migrate
  • rake migrate VERSION=3 (古い状態に戻せる)
  • rake remote:migrate (サーバでmigrate)

デプロイ管理

  • カピストラーノ capistrano (deploy管理) (元SwitchTower)
  • commandひとつでデプロイサーバ再起動
  • rake deploy
  • rake rollback

仕事で使う場合の障壁

  • Railsで作れる人がいない
  • デザイナはSmartyしかわからない(でも意外と問題無い)
    helperをなるべく使わないとか
  • 近々デザイナ向けRails本が出るらしい
  • DreamweaverのSmarty向けextentionとかもちょっと変えれば対応できる
  • サーバがRailsに対応してない
  • 安定して稼働できるか(やっぱりノウハウが必要)
  • lighttpd+FastCGIはlighttpdが結構固まる事がある(lighttpdは開発が停滞)
  • Apache2+mod_fcgid(経験無いが不安定らしい)
  • Apache1.3+mod_fastcgiがいまのとこ一番安定している(稼働実績も多い)
  • mod_rubyだと複数アプリが使えない(プロセス間でメモリが共有されちゃう)
  • mangrel+Apache2.2 mod_proxy_balancer(最近の定番)
  • 実際遅い(動的生成が超多い)
  • cachingをたくさん使う
  • それでも遅ければスケールアウトできる(mangrel+mod_proxyでスケールアウト)

質疑応答

  • Q: scafoldからどれぐらい書き換える?
    A: それほど書き換えない(完成コード自体短い)
  • Q: UnitTestはどのくらいの粒度でやるの?
    A: Controllerはテストし辛いのであんまり。seleniumでのテストに注力。
  • Q: 大人数での開発は?
    A: みんなせいぜい2?3人。
  • Q: DB設計で気を付ける点は? A: railsのサポート関数を考えたテーブル分割を考えたりします。
  • Q: rails対応レンタルサーバは?
    A: textdrivesが多い
    rubyはメモリ制限ができないので共有サーバで動かしずらい
  • Q: DBの定義はいつ取ってるの?
    A: productionモードでは起動時にメモリ上にキャッシュしてます。
  • Q: 帳票アプリ向き?
    A: PDF吐くやつはあるけど、気合いでどうにかする。

基本的な事項が聴けて凄く良かったです。やっぱりdeploy管理が気になります!

plnet.jp訪問者のOSとブラウザ。

visit_os

Mac多っ。

visit_browser

断トツFirefoxかよ。Opera少ないな。へぇ?。 Safariで確認しといてよかった。

custom_design

css自分で書ける機能他を追加。

「なきゃいけないけどrailsには既にあるしな・・・」という機能を実装するので疲れました。

小規模のサービスを作るにあたって面倒臭い部分がなんとなくわかってきました。

手間がかかった部分:

  • URLのマッピング
  • DBのデータの新・旧変換、移行
  • ロギング
  • リリース
  • 環境依存部分の外部化
  • スキーマの管理
  • UIプログラミング

意外と手間がかからない部分:

  • フォームのヴァリデーション
  • モデルクラス
  • DBアクセス

イテレーションを前提にするWebサービスの開発は”“リリース作業”とか”“スキーマ管理”とかそういう泥臭い作業に意外と手間がかかってしかもその部分はつまらない…。(これ重要)

rails以降、フレームワークに開発のライフサイクル全体で考えたサポート機能が求められてる理由が分かった気がしました。

Webデザインと私: やみくもアグリゲーション

こんなサイトを教わりました。

Plnet

(略)

あのさあ、アグリゲートするならするで、もうちょっとうまい見せ方はなかったのかしら? ブログ、VOX、はてなブックマーク、Flickrの登録記事が、全部まとめて時系列で表示されるだけなんですけど。

ブログ記事とブックマークを同列に並べるのって意味あるの?と疑問ですし、ブログの記事同士にしても、ブログごとにテーマや文章スタイルを変えている場合とかは、ごっちゃにされるとすごいダメダメ感が漂うように思います。

このページのURLを人に送って「これが僕です」なんて言いたいかというと…まったく言いたくないかも。

うっ、ショック!

なるほど・・・へこむわぁ・・・

p0t: attr_accessor ← コレ何?

Rubyでのクラス定義ってC やJavaやPHPのようにコンパイラに対して定義を通知しているものではなくて、実行文なんですよね。 なので、attr_accessorとかbelongs_toってのは関数で、そこで実行されます(例えばbelongs_toの次の行でprintを入れてみるといきなり表示されたりします)。このあたり、初めてRubyみるとカルチャーショックが多いですね。

Posted by: kunit | 2006年08月23日 13:47

やべっ、超わかるーーー!!!

やっべー、超わかるよーーー!!!(2回目)

””演算子オーバーライド”はC++、”“ブロック付きメソッド呼び出し”はPrototype.jsのおかげで分かりましたが、これもLispとか関数型言語をやってたら特に引っかからないんでしょうな。

しかし、kunitさんは俺の腐った文章で何故、どこがどう分からないと感じているのかまで分かるんでしょうか。

p0t: attr_accessor ← コレ何?

attr_accessor ← コレ何???

Rubyの勉強を始めていきなりわかんない。

class Foo
  <strong>attr_accessor</strong> :x, :y 
  ...
end

attr_accessor ← コレ何???

Railsにも

class Reply
   <strong>belongs_to</strong> :topic
end

とか出てくるし。(自分で作れるものなのか)

…。

varって何?」とか聞くぐらいなんだからこんなもんで呆れていては駄目です!

たのしいRuby 第2版 Rubyではじめる気軽なプログラミング
p4lifeのメモ – 「Perl Monger の質問 – AUTOLOADって他でどうやるの?」:PHP編

アンダーバーを付けさえすればどんな問題も解決すると思っているのかもしれない

笑った。

W-ZERO3[es]ガイドブック
  • W-ZERO3[es]ガイドブック
  • アスキー(2006-07-13)
  • アスキー
  • (編集)アスキー書籍編集部
  • 定価:¥ 1,029
  • 新品価格:¥ 1,029
  • ASIN:4756147763

あぁ、、、Ahhhh、、、W-ZERO3[es]が欲し過ぎる!欲しくて、欲しくて…。

まあ、買いに行ってそこであることに気付き、未遂に終わったわけですが。

そういったハードルを越えた今(再発行した)、非常に買わないでいることが難しい。今、「W-ZERO3[es]を買うべき10の理由」とかホッテントリにあがったら絶対買っちゃうよ。だから見ません。

何故なら金無いから。 ニートの中でも、金無くなったらおしまいという非常にデリケートな存在であるおれ。 無料のサービス作ったりしてる場合じゃないっ!就職しないと。 まいったなぁ…。

メールが飛ばない件についてコメント頂きました。

p0t: No route to host…

自宅のPCでPHPからメールが飛ばない。 というかそもそも外部のsmtpに接続できない…。

(略

契約している ISP の Outbound Port25 Blocking にひっかかってるのが原因だったりしませんか?

Posted by: ishii | 2006年08月21日 16:47

あぁ、OPBね。(知らない)

Outbound Port25 Blockingって何だろう?

@IT:25番ポートの攻防

op25b

つまり、ISPが管理している動的IPアドレスから外側に向かうSMTP(TCPの25番ポート)を止めてしまえばいいわけである。この方法は「Outbound Port25 Blocking」と呼ばれている。

なるほど…、うちのso-netはどうなんだろう。

Outbound Port25 Blocking 会員サービス(メール) | So-net

So-netではこの【Outbound Port25 Blocking】を、NTT東日本・NTT西日本のフレッツ網経由でSo-netに接続しているお客さまに対して実施しています

な、なんだっ(略 ーーーーーっっっ!!!

畜生!ニートの純情踏みにじりやがって!

しかし、おれにもっとネットワークの知識と自信があればすぐに、「自宅のネットワークには問題無いからプロバイダ以上に何かあるはず!」と確信を持って調べたりできたはず。

プロバイダ → 自宅ルータ → サーバのiptables → サーバのMTA → PHP

おれはなんとかルータより下は問題無いハズってところで、「ルータのパケットフィルタの設定、合ってるはずなんだけど、よくわからん…」となり、気力も尽き、体力の限(略

ともかくishiiさんの指摘のおかげで(少ししか)のたうち回らなくて済みました。 ありがとうございます!

自宅のPCでPHPからメールが飛ばない。 というかそもそも外部のsmtpに接続できない…。 (外部のサーバからは接続できる)

% tail /var/log/mail.log
Aug 21 06:11:24 localhost postfix/smtp[7351]: connect to gmail-smtp-in.l.google.com[64.233.163.27]: No route to host (port 25)

% telnet gmail-smtp-in.l.google.com 25
Trying 64.233.167.114...
Trying 64.233.167.27...
telnet: Unable to connect to remote host: No route to host

ルータのパケットフィルタの設定かな? 一晩ハマッて…体力の限界っっっ!(千代の富士)