• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/165

2/18に開催されたRails勉強会に参加してきました。 今回は、過去最大の参加人数だったようで、いつもよりだいぶ賑やかな感じでした。

参加したセッションは、前半が「scaffold_resource」、後半は「FeedのCache」でした。

■前半「scaffold_resource」

scaffold_resourceの話に入る前に、Rails1.2の新機能のおさらいとか、その辺の話で盛り上がっていました。ActiveSupportのrequireとconst_missingの上書きに悩まされてる人が多いようですね。form_forのブロックを用いる形式については、昔からその書き方を使っていたので、それほど影響は無かったです。

それにつけても、scaffold_resourceは便利ですね。

$ ./script/generate scaffold_resource user name:string password:string
のように第二パラメータ以降でテーブルのカラムを指定できたりするんですが、 これが素晴らしい。

■後半「FeedのCache」

FeedのCacheの話から、大規模運用でのキャッシュの話になってしまいました。

大規模運用はRuby on Railsのレイルが敷かれていない、無限の荒野です。 キャッシュの運用については、RubyKaigi2007のCFPに応募したので、 採用されたらお話できるかも。

■懇親会

今回も会場の予約が無かったので、ロデオでおなじみのZESTに行きました。 ここは大人数で予約無しでも入れるので便利ですね。 なんとなくC言語とか、動的言語の次のパラダイムとして、 動き続けるプログラムについて語ってみました。 dRubyとか使ってると、今にも実現しそうなんですよね。

メモリ空間のスナップショットを取って、補足されない例外が発生したら 直前のスナップショットに戻す。 エディタの実装言語とマクロ、SecondLifeの実装言語とLSLのように、 パラダイムの異なる二つの言語においては、動き続けるプログラミングが 半分だけ実現されているように見えますが、LSLからSecondLifeのコア部分は 書き換えられないのですよね。 Rubyのような言語なら、それが出来そうな気がする。 あるいはJavaScriptかな。

二次会はなぜかJavaの話をしていました。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/165

posted by Png genki on Wed 21 Feb 2007 at 03:31

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/164

最近、各所でgem listを公開するのが流行っているようですね。

やってみたら相当数入っています。そしてほかのGemとの依存関係でインストールされたと思われる、あまり記憶に無いGemも結構入っています。

僕の経験では、こういったGemは便利なものが多い。以前紹介したHoeもこの方法で知りました。頻繁にCiteされる論文が良い論文であるというように、よくrequireされるGemは良いGemに違いないと思います。

今回やってみて気になったGemは、

・call_stack (0.1.0.0)
・cgi_multipart_eof_fix (2.1)
・daemons (1.0.4, 1.0.3)
・fastthread (0.6.4.1, 0.6.3)
・syntax (1.0.0)
・wirble (0.1.2)

この辺です。まだ何も調べて無い段階ですが、なんか面白そうだなあ。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/164

posted by Png genki on Sun 18 Feb 2007 at 11:20

This article was migrated from http://rails.office.drecom.jp/hibi/archive/43

MovieClipやButtonには、基準点(下記+で表示)と変形点(○)があります。



★基準点
基準点は座標(_x, _y)とか回転(_rotation)とかに関係します。
基準点を変更するときはMovieClipのシンボルの編集画面を開き、MovieClipを動かして+を変更したい位置に持っていきます。
シンボルに変換ダイアログで基準点を指定することもできます。
情報ウィンドウにあるシンボルの位置を変更して基準点を変更した気になりますが、なっていません


★変形点
変形点はモーションをつけると影響があるので注意が必要らしいです(使ったことない)。
変更するときには、自由変形ツールで変形点をダブルクリックするとできます。
http://f-site.org/articles/2004/11/14132703.html http://rails.office.drecom.jp/hibi/archive/43

This article was migrated from http://rails.office.drecom.jp/hibi/archive/43

posted by Png satoko on Fri 16 Feb 2007 at 01:18

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/163

Rubyのダックタイピングを活用して、シンプルかつ汎用的な Stringパーサ&コンバータstring_to.rbを書いてみました。

このコードは、to_xxxx_xxxxメッセージを受け取り、 XxxxXxxx#parse(self)を呼び出すことで 自分自身をXxxxXxxxに変換する method_missingハンドラをStringクラスに付け加えます。


class String
  def method_missing(method, *arg, &block)
    method_name = method.to_s
    if method_name.slice!(0..2) == "to_"
      method_name.gsub!(%r(__), '::_')
      method_name.camelize.constantize.parse(self, *arg, &block)
    else
      super
    end
  end
end

利用方法:

  1. 上のコードをコピーして、

  2. $:の通った場所にstring_to.rbとして保存し、

  3. そしてこの機能を使いたいところからrequireします。

require 'date'
require 'uri'
require 'string_to'

"2007-2-11".to_date #=> Date.parse(self)
"http://www.drecom.co.jp/".to_URI #=> URI.parse(self)

[English]

POSTSCRIPT:

constantizecamelize等のRails依存のメソッドを 書き直して、RubyForgeにプロジェクトを登録しました。

  string-to
これでようやく、いつものようにgemコマンドでインストールできるようになりました。
$ sudo gem install string-to
使い方は以下のとおり:
require 'rubygems'
require 'string_to'
require 'date'

"2007-2-13".to_date # => Date.parse("2007-2-13")
parseメソッドを実装しているクラスやモジュールは意外と多いですね。 CGI、Date、Name、Ripper、URI、Time、YAML、JSON、CGI::Cookie...

次のバージョンでは、parseメソッドがあったら便利なモジュールにparseを追加するのをやろう。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/163

posted by Png genki on Sun 11 Feb 2007 at 09:32

This article was migrated from http://rails.office.drecom.jp/hibi/archive/42

http://www.abdulqabiz.com/docs/ActionScript_CodeHinting_In_Flash.htm

変数名の最後を"_xxx"にすると、補完してくれます。
他の人も読みやすくなるよね。
ex. cancelt_btn

Suffix

Object class

_mc

MovieClip

_array

Array

_str

String

_btn

Button

_txt

TextField

_fmt

TextFormat

_date

Date

_sound

Sound

_xml

XML

_xmlsocket

XMLSocket

_color

Color

_camera

Camera

_mic

Microphone

_stream

NetStream

_connection

NetConnection

_so

SharedObject

_video

Video

http://rails.office.drecom.jp/hibi/archive/42

This article was migrated from http://rails.office.drecom.jp/hibi/archive/42

posted by Png satoko on Sat 10 Feb 2007 at 06:38

This article was migrated from http://rails.office.drecom.jp/hibi/archive/41

http://www.adobe.com/jp/support/flash/ts/documents/fl0306.html

上のページの内容をそのままです。
Flashを挿入するHTML内で下記の2つを記述。


<param name="wmode" value="transparent">

次のパラメータを EMBED タグに追加します。
wmode="transparent" http://rails.office.drecom.jp/hibi/archive/41

This article was migrated from http://rails.office.drecom.jp/hibi/archive/41

posted by Png satoko on Fri 9 Feb 2007 at 11:23

This article was migrated from http://rails.office.drecom.jp/hibi/archive/40

Flashを始めて、さぁActionScriptを書こうと思ったのだけど、
どこに書けばいいのかわからない。

(昔やった)MSOfficeのVBScriptのように各コンポーネントに書くようになっていたりする。
うーん、ばらばらになるのはやだなぁと思っていたら、
どうやらレイヤーを挿入して、そこをScriptと名前を変えてやるのが慣例みたい。

複雑になってきたら、複数レイヤーにするとか、
*.as(ActionScriptファイル)にするのがいいんだろうけどね。

http://rails.office.drecom.jp/hibi/archive/40

This article was migrated from http://rails.office.drecom.jp/hibi/archive/40

posted by Png satoko on Thu 8 Feb 2007 at 16:47

This article was migrated from http://rails.office.drecom.jp/hibi/archive/39

ActionScript始めました。
まず一発目は本から。

これはかなりおすすめです。
amazonのレビューで日本語の訳がひどいというので、英語版を思い切って買ってみました。
かなり細かいところまで書いてあって、とても重宝しています。
そうそうMovieClipLoaderとかの新しいクラスがないのが難。

Actionscript for Flash Mx: The Definitive Guide


これはまだ未発売。予約しなくちゃ。

ActionScript 3.0 Pocket Reference (Pocket Reference)


一番初めに買った本。Flashはデザイナー向けのが多くて困りました。
これも初歩デザイナーメインだけど、まぁFlashが何かわからん人にはいいかな。

Flash逆引きクイックリファレンス 8&MX2004対応for Windows & Macintosh


http://rails.office.drecom.jp/hibi/archive/39

This article was migrated from http://rails.office.drecom.jp/hibi/archive/39

posted by Png satoko on Wed 7 Feb 2007 at 12:07

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/162

RailsのIntegrationTestの仕組みを使って、Code To Test Ratio(コード量に対するテストコードの割合)が一定以上に保たれているかどうかを検証するテストを書いてみました。

require "#{File.dirname(__FILE__) }/../test_helper"

class TestingRuleTest < ActionController::IntegrationTest
  def setup
    @stats = `rake stats`
  end

  def test_code_to_test_ratio
    cttr = @stats.match(%r{Code to Test Ratio: 1:([\d\.]+)})[1].to_f
    assert cttr >= 0.8, "Need more tests."
  end
end
多人数で開発をしてるとなかなか面白いですよ。一人の場合でも自分への戒めに使えるかな。

[English]

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/162

posted by Png genki on Sat 3 Feb 2007 at 05:47

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/161

Railsを使っていると、formにActiveRcordオブジェクトのアトリビュートが勝手に入ってくれたり、フォームの内容が勝手に解析されて、Controllerからparamsで参照できたりと、とても便利です。

Railsのフォームヘルパーが生成したフォーム要素のnameやidを見てみると、"user[name]"のように、ARオブジェクトの属性名がマーシャリングされた状態で織り込まれています。 このようなフォームから送信されたリクエストの結果を解析して、paramsでアクセスできるように変換してくれるのがFormEncodedPairParserです。

今回は、FormEncodedPairParserが解析可能な形式で、ネストしたHashやArrayをQueryStringに変換するFormEncoderモジュールを作ってみました。

module FormEncoder
  def self.encode(parameters, prefix = "")
    case parameters
    when Hash; encode_hash(parameters, prefix)
    when Array; encode_array(parameters, prefix)
    else "#{prefix }=#{CGI.escape(parameters.to_s) }"
    end
  end

private
  def self.encode_hash(hash, prefix)
    hash.inject([]) do |result, (key, value)|
      key = CGI.escape(key.to_s)
      result << encode(value, prefix.empty? ? key : "#{ prefix }[#{ key }]")
    end.join('&')
  end

  def self.encode_array(array, prefix)
    array.inject([]) do |result, value|
      result << encode(value, "#{prefix }[]")
    end.join('&')
  end
end
使用法:
FormEncoder.encode :foo => {:bar => [1, 2], :baz => "Rails"}
#=> "foo[baz]=Rails&foo[bar][]=1&foo[bar][]=2"

CGIMethods.parse_query_parameters(
  "foo[baz]=Rails&foo[bar][]=1&foo[bar][]=2")
#=> {"foo"=>{"baz"=>"Rails", "bar"=>["1", "2"]}}
これを使用することで、formから送信するのと同様な形式でさまざまな情報をQUERY_STRINGに変換できるので、paramsで受け取ることが出来ます。

[English]

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/161

posted by Png genki on Fri 2 Feb 2007 at 07:02