トップ 最新 追記

Route 477



2010-09-01

[ruby] myruremaに「るりまを書くための機能」を追加しました

myrurema 0.1.0をリリースしました。

@kakutani の発表でみんなが自分のできることを探しているみたいなので、

るりまをやるといいよ!とつぶやいておきます #Rubykaigi

[Twitter / okkezより引用]

というわけで、0.1.0では、るりまプロジェクトに手軽に参加できる機能として、リファレンスのプレビュー機能を付けました。

インストール:

$ gem install myrurema
$ rurema --init
#しばし待つ
$ rurema Array
#リファレンスが表示される

プレビューしてみる:

$ `rurema --preview`
#リファレンスの原稿があるディレクトリに移動する
$ rurema --preview _builtin/Array Array#pop --browser
#ブラウザにプレビューが表示される

というわけで、リファレンスに間違いや足らない部分を見つけたら、編集して、プレビューして、 svn diffでパッチを作ってるりまITSにチケットを作ってください。 内容が問題なければ、るりまコミッタがコミットしてくれます(あるいは、コミット権を渡されるかも)。

(9/2追記:残念ながら、1.9.2だとプレビュー機能がエラーになるようです(bc-tohtml.rbが未対応?)。1.8.7では大丈夫です。)


2010-09-08

[ruby] Tab Sweep

TabっていうかLDR pin sweepだけど。

http://rubyzucker.info/

ActiveSupportとかRuby Facets的なやつ。思考実験としては面白い。

Array#to_proc

>> [1,2,3,4].map &[:*, 5]
=> [5, 10, 15, 20]

とか。

http://github.com/c00lryguy/dsl

ryguy.edit do
  name 'Ryan Lewis'
  gender :male
  age 19
end

みたいなDSLを簡単に作るためのライブラリ。

fixture vs factory

http://www.metabates.com/2010/08/15/fixtures-v-factories-cant-we-all-just-get-along/

  • fixture: 数が増えるとわけわからなくなる
  • factory: 遅い
  • 両方使えばいいんじゃね?
  • fixtureで最も代表的なデータを作り、それを使い回す
  • 例外的なケースのみ、factoryを使う

SimString をRubyから使ってみた - とはえ領域

http://d.hatena.ne.jp/tohae/20100810/1281409877

「もしかして:」機能の実装。

unveil.js

http://github.com/michael/unveil

http://dejavis.org/ みたいな、リアルタイムに動かせるグラフをJSで。リファレンス

http://github.com/blog/677-how-we-deploy-new-features

設定項目をRedis上に保存することで、デプロイなしにアプリケーションの状態を設定する話


2010-09-09

[ruby] Tab Sweepつづき

AxeML

http://github.com/DerGuteMoritz/axeml

SchemeのSXMLのように、RubyオブジェクトでXMLを表現する。

AxeML.transform([:ul, { :class => 'menu' },
                 [:li, [:a, { :href => '/foo' }, 'foo']],
                 [:li, [:a, { :href => '/bar' }, 'bar']]]).to_s

fab

http://github.com/jed/fab

サーバサイドJSのための非同期フレームワーク。

…らしいのだが、見た目が衝撃的すぎたのでメモ。

with ( require( "fab" ) ) 

( fab )

  ( listen, 0xFAB )

  ( /^\/hello/ )

    ( tmpl )
      ( "Hello, <%= this %>!" )

    ( /^\/(\w+)$/ )
      ( capture.at, 0 )
      ( "world" )

  ( 404 );

[esolang] 闇プログラマーって、プログラミング言語「闇」を使う人のことですよね

こんばんわ。松江でRubyプログラマーをしているyharaです。

今日はTwitter上で「闇プログラマー」という単語が流行っていました。 Rubyプログラマーはプログラミング言語Rubyを使う人のことなので、 闇プログラマーとはつまりプログラミング言語「闇」を使う人のことに違いありません。

ということで、 みたいに「闇」っぽい漢字だけで構成されたプログラミング言語を考えようとしたんですけど、 途中で

これはプログラミング言語「門」だ

ということに気づいて止めてしまいました。

上のコードで「Hi」と表示されたりする予定でした。

4839927847


インスパイア元:

問こ 門ん 閂に 閂ち 問は

約6時間前 Tweenから 5人がリツイート

[Twitter / Akihiko Koizukaより引用]

残骸: http://gist.github.com/571695


2010-09-10

[ruby] nyacusでpikを使う方法

ちゃんと動きました!(nyaosユーザではないのに)ありがとうございます。

以下の設定を _nya に記述することで nyaos で pik が利用できるようになります。

pik{

pik_runner.exe pik.bat %*

if exist "%USERPROFILE%\.pik\pik.bat" then

source "%USERPROFILE%\.pik\pik.bat" 2> nul

endif

}

[nyaos で pik を使う設定と pik の動作原理 - *Trace Output*より引用]


2010-09-26

[mac] 白MacBookのバッテリーを交換してもらった

2008年に買ったMacBookのトラックパッドのボタンが押しにくくなってきた、とTwitterで発言したら 「バッテリの膨張ではないか?」というリプライをいただいた。検索すると、かなりの人が バッテリ膨張を経験している模様。

それだけなら良かったのだが(良くないけど)、その後、勝手にボタンがクリックされてしまう現象が発生したので、 Genius Barに持ち込むことに。

結果、すんなり無償交換になった。具体的な問題が出ているというのは大きいのかも。

そのほか、筐体の端っこ(右手首があたるくらいの位置)が割れて欠けてしまったのについても、 1週間くらい預ければ取り替えてくれるとのこと。こっちはまあ実害ないししばらくはこのままにするかな。


2010-09-29

[rails] Rails3で論理削除

http://railsplugins.org/ で調べたところ、rails3_acts_as_paranoidというgemがあるらしい。

state_machine gemとdefault_scopeで同じことができるよ、という話もあるけど。

[ruby][link] FFI and Ruby 1.9.2

Ruby 1.9.2のFiddleとdlを使うと、ffi gemと同様のことができるらしい。aaronpによる記事。

[book] ゲラの段階で文章の不自然さに気づくこと

執筆時に一度見直したはずなのに、ゲラ(原稿が出版時のデザインになったもの)を見てから改めて不自然な文章に気づくことがある。

執筆中は、脳内に書くべきことがぎっしり詰まっている。しかし書いたものをチェックするときは、 なるべく頭を空にして読むのが望ましい。

この100から0への切り替えが、ある程度時間を空けないと難しいのかなと思った。


2010-09-30

[ruby] Rubyで書かれたミニマルなブログエンジン、toto

c8ca48cef7f86409d479020748af81f5.png

  • Sinatraすら使わず、Rackのみで実装されている
  • 記事のバージョン管理はgitで
  • 記事のマークアップはmarkdownで(変更可能らしい)
  • コメントはdisqusで
  • サーバはThinなりPassengerなりunicornなり(CGIもいけそうな気がする)
  • 記事はテキストファイルに書く
  • 最初の数行にメタデータ(タイトルとか)を書く。
  • 独自のメタデータを書いて、ERBテンプレートからそれを表示するようなカスタマイズも可能

データベースが不要で、テキストファイルを編集してgitでpushするだけっていうシンプルさが良いかも。

使い方

すぐに使い始められる状態になったものがgithubのcloudhead/dorothyにあるので、それをcloneする。

Herokuにアップロードする手順が公式サイトに載っている。(Herokuについては10月発売のWEB+DB PRESSに書くよ!)

$ git clone git://github.com/cloudhead/dorothy.git myblog
$ cd myblog
$ heroku create
$ git push heroku master

ブログのコード自体はdorothyではなく、toto gemの方に入っている。名前は「」の主人公と、その愛犬ですね。

[ruby] mongoidのドキュメントを手元に置く方法

1.

 $ git clone http://github.com/mongoid/mongoid-site.git

2.

 $ bundle install   # bundlerがなければ先に gem install bundler

3.

 $ nanoc autocompile

4.

 $ open http://localhost:3000/

5.

 ArgumentError: invalid byte sequence in UTF-8
 /Users/yhara/.rvm/gems/ruby-1.9.2-p0/gems/nanoc3-3.1.5/lib/nanoc3/data_sources/filesystem.rb:242:in `=~'

6. nanocェ…と言いながらrvm use 1.8.7して上の手順を繰り返す

7. 動きました

20100930-n9ktirdiiykud8nbbt68cpq9ce.jpg

[ruby] mongoidのロケールを翻訳しようとしたのだが…

padrino (http://www.padrinorb.com/guides/localization ) も、mongoid (http://mongoid.org/docs/installation/ )も、英独仏伊西は翻訳者がいるけど日本語がなくて悲しい。言語の壁

[Twitter / yharaより引用]

と言うだけでは何なので自分で訳してみようと思ったんだが、これが思ったより難しい。英語と日本語ってちょっと違いすぎるよね。 下手に訳すと「メモリが"read"になることはできませんでした」みたいになりそうで怖い。

とりあえずやってみたのが以下。フィードバックください。

ja:
  activemodel:
    errors:
      messages:
        taken: は、既に利用されています
        # is already taken

  mongoid:
    errors:
      messages:
        document_not_found:
          idが%{identifiers}(のいずれか)である%{klass}クラスのドキュメントは見つかりませんでした。
#          Document not found for class %{klass} with id(s) %{identifiers}.
        invalid_database:
          データベースがMongo::DBではなく、%{name}になっています。
#          Database should be a Mongo::DB, not %{name}.
        invalid_type:
          %{klass}として定義されたフィールドに、%{value}という%{other}が渡されました。
#          Field was defined as a(n) %{klass}, but received a %{other} with
#          the value %{value}.
        unsupported_version:
          MongoDB %{version}はサポートされていません。
          %{mongo_version}にアップグレードしてください。
#          MongoDB %{version} not supported, please upgrade
#          to %{mongo_version}.
        validations:
          バリデーションに失敗しました:%{errors}
#          Validation failed - %{errors}.
        invalid_collection:
          埋め込まれたドキュメント%{klass}からはコレクションにアクセスできません。
          ルートドキュメントからアクセスしてください。
#          Access to the collection for %{klass} is not allowed since it
#          is an embedded document, please access a collection from
#          the root document.
        invalid_field:
          %{name}という名前のフィールドは定義できません。
          Mongoidが内部で使用している属性やメソッドと重複する名前の
          フィールドは定義できません。そのような名前については
          Document#instance_methods を参照してください。
#          Defining a field named %{name} is not allowed. Do not define
#          fields that conflict with Mongoid internal attributes or method
#          names. Use Document#instance_methods to see what names this includes.
        too_many_nested_attribute_records:
          %{association}の属性のネストは%{limit}レコードまでに制限されています。
#          Accepting nested attributes for %{association} is limited
#          to %{limit} records.
        embedded_in_must_have_inverse_of:
          embedded_inメソッドの:inverse_ofオプションは省略できません。
#          Options for embedded_in association must include inverse_of.
        dependent_only_references_one_or_many:
          オプション :dependent => destroy/delete は、
          references_oneまたはreferences_manyメソッドにのみ有効です。
#          The dependent => destroy|delete option that was supplied
#          is only valid on references_one or references_many associations.
        association_cant_have_inverse_of:
          このアソシエーションに:inverse_ofオプションは設定できません。
          このオプションはembedded_inまたはreferences_manyにのみ有効です。
#          Defining an inverse_of on this association is not allowed. Only
#          use this option on embedded_in or references_many as array.
        calling_document_find_with_nil_is_invalid:
          Document#findの引数がnilです
#          Calling Document#find with nil is invalid

おまけ

エルシャダイロケール

ja-ElShaddai:
  activemodel:
    errors:
      messages:
        taken: は既に利用されているが大丈夫か?

# (くだらなすぎるので以下略)
本日のツッコミ(全3件) [ツッコミを入れる]

ムムリク [>(くだらなすぎるので以下略) いえいえ、”そういうnlize”を彷彿とさせるので、ぜひ!]

okkez [padrino のは翻訳して送っておきました]

yhara [okkezさんかっこいい! ムムリクさん:"そういうnlize"の元ネタが分かりませんでした…]