2009-12-02
■ [ruby] Ruby 1.9ではハッシュをJavaScriptっぽく書けます
(※12月の1日から25日まで、日替わりでRubyのTipsを紹介するイベント、Ruby Advent Calendar jp: 2009参加記事です。)
ご存じない(あるいは、忘れている…)方もいると思いますが、Ruby 1.9ではハッシュリテラルをJavaScriptのオブジェクトリテラルのように簡潔に書ける 文法が追加されています。
例えば、
{:a => 1, :b => 2}
の代わりに
{a: 1, b: 2}
と書くことができます。キーはSymbol限定とはいえ、これは短い!
Railsでよくあるオプションなんかも:
has_many :moves_from, :class_name => "Move", :foreign_key => :account_id_from
このように、短くなります。
has_many :moves_from, class_name: "Move", foreign_key: :account_id_from
Ruby 1.9の最新版はRuby 1.9.1-p243です。 MacPortsなら「port install ruby19」、Ubuntuなら「aptitude install ruby-1.9」でインストールすることができます。 Debianはruby1.9.1-fullとからしいです(コメント欄参照)
更に、より洗練されたRuby 1.9.2が来年のリリースを控えています。新しいメソッドやライブラリを提案したい人はお早めに!
おまけ
「Ruby Advent Calendar jp: 2009」というタイトル(ujihisa案)は、 この新しいハッシュ記法を元にしています :-)
以下のコードをadvent.rbとして保存し、Ruby 1.9.xで実行してみてください。
実行結果:
Merry Christmas 2009!
2009-12-05
■ [javascript] 楽天で買い物するときにML参加のチェックボックスを外すuserjs書いた
会社のそばのファミマで受け取れるという理由で、Amazonよりも楽天ブックスを使うことが多いのですが、 注文時にいちいちメーリングリストに参加させようとするのが鬱陶しいのでOperaのuser javascriptを使って自動的にオフにするようにしてみた。
いつもPrototypeとかjqueryに頼ってますが、生のJS(+DOM)で書くとこんな風になるんですね。 https内でuserjsを動かすことになるので、opera:configでHTTPSで検索してそれっぽい設定をオンにする必要があります。
Firefoxでも動くのかも知れませんが試してないです。
2009-12-07
■ [web] 旧ドメインから新ドメインへのリダイレクトを設定した
なんかRSSがリダイレクトできてなかったのでmod_rewriteで。
Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^mono\.kmc\.gr\.jp RewriteRule ^(.*)$ http://route477.net/$1 [R=permanent,L]
LDR的にはどうなるんだろうなぁ。
- http://reader.livedoor.com/about/http://mono.kmc.gr.jp/~yhara/d/index.rdf
- http://reader.livedoor.com/about/http://route477.net/d/index.rdf
(追記:たぶん、普通に301でリダイレクトすれば追従してくれるはず。けれど今回のように新URLと旧urlが並列されてsubscribeされた期間があると、別々になってしまうのだろう)
2009-12-09
2009-12-12
■ [book] 技術書のPDF販売を提供する「達人出版会」始まる
日本Rubyの会の高橋会長による新プロジェクト。札幌Ruby会議02のLTで発表があったらしい。
メモ
- PDFを販売する。(pragmatic bookshelfみたいな感じ)
- 売り上げは著者とシステム側で折半*1。pragprogがそうなのと、システム側で新しいことをやる余力のために50%にする予定
- 再配布自由(CC)な本も売りたい(対価というより、お布施的なモデル)
余裕が出来たらなんか書いてみたいなぁ。
続きは:
*1 山分け、というとなんとなく気分が良いw
2009-12-14
■ [ruby-station] @ITでRubyStationが紹介されました
twitterでのやりとりが、有識者っぽい感じになったw
最近のトピック。
- Windows対応
- 忘れてましたすいません。やります。何が問題だったんだっけ。(追記:思い出した。do_sqlite3の1.9用バイナリがないんだ…。面倒だ)
- Macのlaunchd経由での起動
- 試してみたところ、調子よく動いています。ただし普段の環境変数が使えないので、~/.ruby-station/config.ymlのgemとrubyをフルパスにする必要あり。あとでWikiに書く。
- クラサバ構成
- Mac miniでRubyStation動かしたら家中のどのマシンからでもアクセスできて便利じゃね?と思ったが、アプリが増えるごとにMac OSのファイヤウォールいじる必要があることが発覚(ポートが別だから)。ポート番号は一つだけで、各アプリへのアクセスをプロキシする構成にできないか検討する。
- Ruby以外の言語対応
- portsやaptの再実装は大変すぎるなーと思ってたんだけど、そこを諦めて切り離してしまえば、「指定したコマンドをRubyStationアプリとして登録」というメニューを作るだけで対応できるかも。アプリ側は、規約(コマンドラインオプション--port=12345 --data_dir=...)を満たしていればなんでもいいです。
2009-12-16
■ [ruby-station][memo] Windows対応
1.8
- forkもProcess.spawnもないので、「アプリを起動してそのpidを得る」ことができない(pidはアプリを終了させるために必要)。
1.9
- do_sqlite3の1.9用バイナリがない(´・ω・`)
2009-12-20
■ [misc] サブブログを移転しました
Bloggerでしばらくサブブログを書いてたんだけど、WYSIWYGに馴染めなかったのでtDiaryに移行しました。
本音をいうと、Bloggerだと短い記事を投稿しにくい(気分的に)というのが主たる理由なんですが、たぶん僕の思い込みだと思います。
■ [ruby][event] Ruby Advent Calendar jp: 2009 のRSS
順調に終わりが近づいてきたRuby Advent Calendar jp: 2009ですが、 画面の真ん中あたりにコメントのRSSフィードがあります。
これをSubscribeすると、更新をRSSリーダでチェックできるようです。
■ [ruby][book] Rubyの本格派ゲームライブラリ、Miyakoの本が発売
著者のサイロスさんから献本いただきました。ありがとうございます。
4839932115
MiyakoはRuby/SDLの上に構築されたゲーム用ライブラリで、 SDLの薄いラッパーであるRuby/SDLと違い:
- スプライト機能
- マップ機能
- ノベルゲーム向け機能
など、実際にゲームを作るのに便利なクラスを提供してくれます。本書ではこれらの機能を使って、簡単なゲームを作るところまでが解説されています。
以下、いずれもMiyakoメインサイトより。
MiyakoはWindowsだけでなくMacやLinuxにも対応、そしてRubyは1.9.1以降*のみ*対応となっています。素晴らしいですね :-)
Rubyでゲームというと、MyGameを使った 4777512924 が既刊ですが、 MyGame本がプログラミング未経験者からを対象としているのに対し、Miyako本はRubyの初歩的な知識を前提にしています。 それぞれ初級者向けと、中級者向け、という感じですね。
2009-12-21
■ [mac] Mac上でバックスラッシュを打とうとすると円記号になる件
KeyRemap4MacBookをインストールののち、 For Japanese→Remap Yen Key→JIS Yen to Backslash でいけた。
vimだと大丈夫なんだけどgvimで円記号になってしまって困っていたのでした。
2009-12-26
■ [xml] XMLの本を読んだ
XMLってそういやちゃんと調べたことがないなと思って本を買ってみた。Amazonだと多すぎてよく分からないので、秋葉原の 書泉ブックタワーで。
4774130311
XMLの基礎から応用までが200ページとコンパクトにまとめられている。当然、各技術の詳細は書いてないんだけど、 「あまり深入りする気はないけど、XMLでどんなことができるか大まかに知りたい人」にはおすすめ。(07年3月発行なので、最新情報はWebで補完したほうがいいけど。)
メモ
- XMLは1.0と1.1があるが、特殊な用途でない限り1.0でよい
- DTD、XML Schema、RELAX NGはどれもスキーマ定義用の技術
- DTDで定義したスキーマに準拠している=valid XML、XML的に正しい=well-formed XML。
- XPathはファイルのパス名のように、特定ノードを指し示す式。
- XSLTはXPathを使ったパターンマッチで、ノードを置き換えることによって、変換先のXMLデータを作る。
しっかり学びたい人は:
479735366X 4798106658 4873111846
あるいは
4798104876 4798107220
あたりが良さそうだった。
2009-12-27
■ [ruby] irbで自動で再requireしたい
- irbでrequire 'foo.rb'する
- エディタでfoo.rbを書き換える
- irbでプロンプトを表示するタイミングで、foo.rbが書き換わってたらload foo.rbする
みたいな仕組みを作ると試行錯誤がやりやすくて良さそうな気がした。
■ [ruby][event] Ruby Advent Calendar jp: 2009 まとめ
無事終了しました。参加された皆さんと、読んでくれた皆さんに感謝。
いま数えたら、全記事トータルで438ブックマークですよ。凄いね。
どんな記事があったかおさらいしてみましょう。
- Day 1 - Standards: Write Implementation and Spec on the Same File
- [Test] コードとテストを同じファイルに書くTips。
- Day 2 - Route 477 - Ruby 1.9ではハッシュをJavaScriptっぽく書けます
- [Ruby1.9] ハッシュリテラルの新記法。
- Day 3 - Windows で使う Ruby を自分でビルドする方法 - ドレッシングのような
- [Env] VS2008 Express Editionを使ったRubyのビルド方法。
- Day 4 - メモリ破壊の現場を見つけるTips - I am Cruby!
- [Hack] メモリ破壊のデバッグ方法。
- Day 5 - System.Exit - Growl で開発の効率をUP!
- [Debug] Growlを利用したデバッグ。
- Day 6 - Ruby1.9に対してできること - takkan_mのNo planな日常
- [Ruby1.9] Rubyへのcontribute。
- Day 7 - irb を快適に使うための Tips
- [Dev] irbの便利な使い方。
- Day 8 - Road To RDoc - はてなかよっ!
- [Doc] YARDを使ったドキュメンテーション。
- Day 9 - Stringクラスに関するいくつかのTIPS - チナミニ
- [Dev] Stringの便利なメソッド。
- Day 10 - Railsで簡単にテストを増やす方法が使えなくなった件 - Nov's daily? report(2009-12-10)
- [Rails][Test] Test*というモデル名について。
- Day 11 - dRubyで並列処理
- [Lib] dRubyを使ったプロセスレベル並列。
- Day 12 - controllerを少しだけスリムにするtips - おもしろWEBサービス開発日記
- [Rails] content_forを使ったTips。
- Day 13 - Ruby1.8.7、1.9.1、1.9.2preview1を簡単に切り替える@Ubuntu9.10
- [Env] update-alternativeを使ったTips。
- Day 14 - ハッシュを構造体のように使う
- [Dev] 特異メソッドを使って、あるハッシュだけを構造体化するTips。
- Day 15 - Advent Calendarプラグイン作ったよ!
- [App] BilboのプラグインによるAdventカレンダー。
- Day 16 - Ruby とすてきな難読化
- [Esoteric] かんたんなRubyコードの難読化方法。
- Day 17 - 1日に1つ、穴を空ける
- [Hack] RubyのSEGV報告。
- Day 18 - そろそろるりまを使ってみませんか?
- [App] るりまのさまざまな使用方法。
- Day 19 - 初めての C extension の書き方
- [Dev] rake-compilerを使ったC拡張の作り方。
- Day 20 - Rubyでデータを解析する
- [App] Rubyでマラソンのタイムを解析する。
- Day 21 - Rubyを256倍わかりやすくデバッグする方法
- [Hack] gdb-rubyを使ったRuby処理系のデバッグ。
- Day 22 - ROMAをちょっとだけ手軽に起動する
- [App] ROMAの起動手順を簡略化するツール。
- Day 23 - Haml レシピブック 11の技
- [Lib] 日本Hamlの会会長によるTips集。
- Day 24 - Ruby Facets(Core)でおしゃれRuby!
- [Lib] Facetsによるコアクラスの拡張。
- Day 25 - Qu'ils mangent de la X'ruby(クリスマスリリースがないならクリスマスRubyを作ればいいじゃない)
- [Hack] XMLリテラルを追加したRuby。
以下、来年主催する人のためのメモ。
最初こそTwitterでリマインドしたり、ATNDのコメント欄にURLを書いてくださいとお願いしたりしましたが、流れができてからは 特に何もしていません。というわけで来年はこのATNDをコピーするだけで良いんじゃないでしょうか。余裕があれば、自動でTwitterにリマインドしたり、更新情報を流したりすると良いですが。
■ [misc] 2009年をふりかえる
今年はBiwaSchemeとSinatra/RamazeとRubyStationの年だった模様。ゲームをやらなくなって、本を読む時間が増えた。電子ピアノを買ったけどそんなに練習せず。ジャグリングはぼちぼち(4ファウンテン20キャッチ)。
来年は読書を減らしてコードを書く時間に充てたい。ゲームはIIDXくらいはやってもいいと思うけどいかんせん環境が。TGM4はどうなるんだろうなぁ。 ジャグリングは5ボールフラッシュを目標にする(妥当なのかどうか分からん)。
生活面では健康の維持に腐心した一年だった。来年は自律の精度を上げたい。
以下メモ。
- 1月
- WavesとかWebratとかについて調べてたらしい。
- 2月
- アンバライトアーチャーで勝利。松江Ruby会議-01、Shibuya.lisp TT#2。
- 3月
- いろんなScheme処理系を動かしてみる。BiwaSchemeをMITライセンスに決定。初めてナランハに行く。Tsukuba.R。Kansai.pm。歯医者。
- 4月
- Ruby Freaks Loungeに寄稿。BiwaScheme Hackerthon #1。
- 5月
- 寄稿つづき。CSSについて勉強しようと思う(思っただけ)。
- 6月
- Rubyのパッケージ作成ツールについて調べる。サブブログを書き始める。ICFPC。
- 7月
- RubyKaigi2009で、RubyStationについて発表。Operaウィジェットでタイマーを作り、プレゼン時間の精度が上がる。Time Machineを使い始める。JSのテストについて調査。
- 8月
- 天下一カウボーイ大会でLT。gemcutter登場。_why失踪。rsdlのgem化を試す。biwascheme.orgを公開。
- 9月
- BiwaSchemeのソースを分割、YUI compressorを使うように。R6RSの例外について調べる(が、未実装)。RubyStationをリリースしようとする。
- 10月
- sudo gem派を卒業、~/.gemを使うように。GNU Smalltalkを触る。モナドについて調査。RubyStation 0.1.5リリース。
- 11月
- iMovieでRubyStationのデモ動画を作る。gemiをマージ。関西Ruby会議02。
- 12月
- Ruby Advent Calendar jp: 2009。サブブログ移転。
2009-12-28
■ [ruby][java] 今日の「誰か調べて」
Java用ライブラリをRubyGemsのように配布する、javagems
Pancake: Rails3のsliceみたいに、複数のアプリケーションを一画面にまとめるためのライブラリ…のような気がする。
- Pancake: How To Stack and Loosely Couple Rack-Based Webapps Together
- http://github.com/hassox/pancake
Rango: Rubyの新しいWebフレームワーク。djangoを意識してそう。サイズ的にはRamazeと競合する?
Before...
□ 斎藤ただし [あぁ間違った、"Debian testing(squeeze)では" でした><]
□ okkez [ruby1.9.1-full よりも aptitude install '?source-package(^rub..]
□ yhara [追記しました。ありがとうございます>みなさま]