?= と or= を CoffeeScript 1.2.0 で調べてみる

CoffeeScript は Ruby に似ているところがたくさんあり,Ruby プログラマにも比較的馴染みやすい言語だと思います.たとえば,変数を初期化するのに便利な Ruby の ||= に対して,CoffeeScript にも予想通り or= があります.しかし,CoffeeScript (という…

Shoulda で Rails のテストにコンテキストを導入する

Ruby on Rails (以下,Rails)標準のテスティングフレームワークである Test::Unit は,一般にはフラットにテストメソッドを定義するものだと思われています(たとえば,Rubyist Magazine - 改めて学ぶ RSpec).しかし,Test::Unit にコンテキストを導入し…

Rails の ActiveRecord モデルテストの書き方ガイドライン

このエントリでは,Ruby on Rails (以下 Rails)の ActiveRecord モデルテストについて,1) どこの何をテストすればよいか,2) どのようにテストを書けばよいか,のガイドラインを示します.このガイドラインは Rails 公式のものではなく,id:passingloop …

factory_girl の採用面接: 自分の Rails プロジェクトで採用する前に確認すること

factory_girl は Ruby on Rails (以下 Rails)におけるフィクスチャリプレースメントの代表格で,採用している人も多いのではないでしょうか.「使い方」に関するブログ記事も多いです.しかし,採用を見送った人がその理由,「なぜ使わなかったのか」につ…

Rails で元に戻せないマイグレーションを書くときの作法: ActiveRecord::IrreversibleMigration

ActiveRecord のマイグレーションは,その中に up メソッドと down メソッドを書くことにより,データベースのスキーマを更新したり,変更を元に戻したりすることができ便利です.Rails 3.1 からは up, down を change メソッドにまとめて書くことができるよ…

find_by_sql で派生カラムを作ると update_attributes で更新できてしまう

ActiveRecord::Base を継承したモデルクラスで,テーブルに存在しないカラムに対して #update_attributes すると ActiveRecord::UnknownAttributeError 例外が発生します.たとえば,な foos テーブルに相当する class Foo < ActiveRecord::Base について,…

Rails の config で設定できる Rails 向け gem を作る

Rails アプリを開発していくと,プラグインやらエンジンやらで何やかんやと gem を作っていくことになります.このようにして作った gem は当然 Rails 向けなので,Rails アプリケーションの config で設定できるようにしたいところです.たとえば,passingl…

Project Tin Can とは

Project Tin Can は,SCORM 2004 の次の e-Learning を考える Rustici Software の研究プロジェクトです.Project Tin Can は ADL 公認のプロジェクトなので,実質的に SCORM 2004 の後継といってもいいでしょう.本エントリでは,この Project Tin Can の概…

AppleScript で iPhone 用に動画を変換する作業を自動化する(ただし,面倒なところは Ruby に任せる)

mac

最近,MacBook Pro にためてきた動画を iPhone でも見られるようにしたくなりました.しかし,iPhone で再生できるのは .m4v 形式なので,この形式に動画を変換する必要があります.幸い,Mac OS X に付属の QuickTime Player 7 を使えば iPhone 用 .m4v を…

仮説思考とは穴埋め問題思考のことだと理解した

数年前に話題になっていた 仮説思考 BCG流 問題発見・解決の発想法 という本を今更ながらに読みました.この本では問題解決の方法として仮説思考を推奨しています.仮説思考とは,情報が少ない段階から全体像と結論を考える思考スタイルだと書かれていて難し…

ソルトもストレッチングも両方必要

ある条件のもとでパスワードを守るには、ソルトもストレッチングも両方必要です.本当は怖いパスワードの話 (1/4):ハッシュとソルト、ストレッチングを正しく理解する - @IT がその理由の良い解説になっているのですが,4 ページに分かれていて長いので Q&…

7つの言語7つの世界 第6章 Erlang セルフスタディやってみた

7つの言語 7つの世界 第6章 Erlang のセルフスタディやってみました。私は Erlang 未経験者だったので最適解ではありませんが、私の解答例を書いておきます。 1日目 探してみよう Erlang のオフィシャルサイト Erlang Programming Language Erlang の関数…

7つの言語7つの世界 第5章 Scala セルフスタディやってみた

7つの言語 7つの世界 の第5章 Scala の宿題をやってみました。私が Scala に触るのはこれが初めてです。 インストール id:passingloop は MacPorts から Homebrew にのりかえました % brew install scala 2.9.1 がイストールされました。 1日目 探してみよ…

Pow をインストールするとシステムに何をされるのか確認する

mac

Pow は 37signals 謹製の Rack サーバです。Rails 開発で愛用している人も多いのではないでしょうか。Pow をインストールすると、 (1) http://my_app_name.dev/ にアクセスすると (2) Pow が Rack アプリケーションを自動的に起動して (3) ~/.pow/my_app_nam…

ガラパゴスな売り方とオライリーな売り方との違い。そして、Amazon Kindle はうまくやっているという話

オライリーは電子書籍と一緒に「安心」を売っている - ただのにっき(2011-09-16) を読んで考えたことをまとめてみます。オライリーは電子書籍という新しいメディアに対して旧態依然とした売り方をすることを選択しました。すなわち、「電子書籍も紙の本と同…

7つの言語7つの世界 第4章 Prolog 1-3 日目セルフスタディやってみた

7つの言語 7つの世界 第4章 Prolog 1-3 日目のセルフスタディやってみました。Prolog を触るのは今回が初めてだったのですが、やっていて楽しかったです。もっとやりたいかと聞かれれば、もういいですと答えますけど。 Prolog のインストール 例によって、…

MacPorts の gprolog 1.4.0 で Segmentation Violation

mac

7つの言語 7つの世界 第4章 Prolog のセルフスタディをやろうとして、MacPorts で GNU Prolog 1.4.0 をインストールしてみました。 $ sport install gprolog (sport は sudo port への alias です。詳しくは、MacPorts 2.0.1 インストールメモ: PATH とフ…

Graffletopia で見つけたおすすめ OmniGraffle ステンシル

mac

Graffletopia で見つけたおすすめ OmniGraffle ステンシルを 4 つ紹介します. はじめに Mac OS X で定番のドローツールといえば OmniGraffle です*1.これを使うと,パワーポイントで描くよりも綺麗に速く図を仕上げることができるので重宝しています.Omni…

引数のバインディングと実行を遅延させる Io 言語: 7 つの言語 7 つの世界 第 3 章を読んだ感想

7つの言語 7つの世界 第3章 Io 言語を読んでいて最初に疑問に思ったのが, 制御構造が無い Io 言語がどのように Ruby の && 相当を実現しているか です.前のエントリに書いたように, Ruby で AND, OR の論理演算を行うための論理演算子には {&&,||} と {…

7 つの言語 7 つの世界 第 3 章 Io 言語 1-3 日目のセルフスタディやってみた

インストール →Mac OS X への Io のインストール - passingloopの日記 1日目 探してみよう Io のいくつかの問題点の例 名前を Google で検索しにくい コミュニティが小さく OS の最新バージョンでしかテストされていない→id:passingloop:20110908:p1 質問に…

Mac OS X への Io のインストール

本記事の Io とは Io 言語のことです.*1さて,本題に入ります.Mac OS X に Io をインストールするのなら,MacPorts が便利です. $ sudo port install Io するだけでインストールできます.しかし,MacPorts がインストールする Io には問題があります.そ…

MacPorts で自家製 ports を使う方法

MacPorts は 1万2000以上のソフトウェアを ports としてサポートしています*1.しかも,MacPorts の ports は sudo port selfupdate するだけで最新のものを入手できるので便利です.MacPorts の ports は種類も豊富で便利なので,普段は MacPorts の ports …

Ruby の論理演算子、&& と || は制御構造で & と | はメソッド

Ruby で AND, OR の論理演算を行うための論理演算子には {&&,||} と {&,|} の 2 種類あります。この 2 種類は似ていてまぎらわしいのですが、 {&&,||} は制御構造で、{&,|} はメソッド とだけ覚えておきえば区別できます。これだけ覚えておけば、 (1) {&,|} …

Git を使い始めるときに設定する global gitignore の見本

自分の開発環境だけでできてしまうようなファイルのために、プロジェクト内の.gitignore に設定追加してしまうと他の人に嫌がられますよね。そこで、自分用に追加でホームディレクトリの.gitignore ファイルを利用するようにします。 $ git config --global …

7つの言語7つの世界 第2章 Ruby 1-3 日目練習問題やってみました

7つの言語 7つの世界 は Ruby Io Prolog Scala Erlang Clojure Haskell の 7 つの言語の言語の雰囲気を味わえる本です。7つの言語 7つの世界作者: Bruce A. Tate,まつもとゆきひろ,田和勝出版社/メーカー: オーム社発売日: 2011/07/23メディア: 単行本(…

内田和成「仮説思考」

某所で紹介されていたのが面白そうだったので,図書館で借りてきて読んでみました.全 236 ページで,30 分ほどで読めます.副題に「BCG 流問題発見・解決の発想法」とあるので読むのに身構えてしまいそうです.しかしなんのことはない,「何らかの問題解決…

MacPorts 2.0.1 インストールメモ: PATH とファイルシステムの case-sensitivity に注意

Lion に対応した MacPorts 2.0 が先月リリースされました。続いて、今月 2 日には 2.0.1 がリリースされています。このバージョンは完成度が高く、目立った不具合も報告されていないようでした。「そろそろ大丈夫だろう」と考えて私もインストールしたところ…

世界最速の Rails 3.1 対応本「Rails3 レシピブック 190 の技」は全 Rails 開発者におすすめ

Rails 開発者なのに「Rails3 レシピブック 190 の技」をまだ買っていない人はいませんか。万が一まだの人がいたら、すぐに買いにいきましょう。とはいえ、後で「騙された」と後ろ指をさされるのも嫌なので、このエントリを読んで納得してからにしてください…

初級と中級と上級の違い

スキルレベルを示すのに、よく初級・中級・上級といった表現が使われます。しかし、「どこまでが初級でどこからが上級なのか」、明確な定義が無いままに使われるのをよく目にします。そのままでは、自分が中級だと思っても実は初級だったり、あるいは、その…

Rails テストに関する便利だけど見過ごされがちな 2 つの rake タスク

Rails テストで便利であるにもかかわらず知名度の低い、かわいそうな 2 つのタスク: rake test:recent タスク rake test:uncommitted タスク を紹介します。この記事は執筆時点の Rails 3.1.0.rc5 を対象としています。 Rails 謹製のテストタスク: rake test…