give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

2012-01-01から1年間の記事一覧

Railsでlibディレクトリに格納した自作クラスをサーバーの再起動なしでリロードする方法

Railsのdevelopment環境ではサーバーを再起動しなくても、appディレクトリ内のmodelやview、controllerの変更内容は実行時にすぐ反映されます。 ところが、libディレクトリに格納した自作のクラスはサーバーを再起動するまで変更内容が反映されません。 lib…

Mac OS X 10.6(Snow Leopard)でGrowl, Guard, Spork, RSpecを連携させる場合の注意点

時々参考にしているRailsのTutorialサイトで、何度やっても僕のマシンではうまく動かない部分がありました。 Ruby on Rails Tutorial 3.6 Advanced setup 上記のセクションではRSpecをGrowl, Guard, Sporkといったライブラリと連携させて、より軽快に開発を…

Rubyでハッシュを別の形式のハッシュに変換する方法

2012.4.6 追記 えーっと、このエントリを公開したらコメントにて最強の変換方法を教えていただきました。 p Hash[initial_hash.map { |k,v| [@convert_table[k], v] }] わざわざメソッド化しなくても、これなら一撃必殺ですね。 keyesberryさん、どうもあり…

「1から5の倍数、または5の倍数より1少ない数の累積値は5の倍数となる」を数学的に証明してみた

先日、子どもと足し算ゲームをやっていました。 1から順番に「1+2=3, 3+3=6, 6+4=10・・・」といった感じで累積していく計算クイズです。 一緒にやっていると、途中である規則性に気付きました。 1 - 1 2 - 3 3 - 6 4 - 10 5 - 15 6 - 21 7 - 28 8 - 36 9 - …

Rubyのクラスメソッドは同じクラスのprotectedメソッドやprivateメソッドにアクセスできない

C#やJavaのプログラマがRubyの世界にやってくると「あれれ?」と思ってしまう言語仕様をまた見つけてしまいました。 タイトルにも書いた通り、Rubyのクラスメソッドは同じクラスのprotectedメソッドやprivateメソッドにアクセスできません。 言葉だけではピ…

2桁×1桁のゴースト暗算の証明に挑戦してみた

http://zasshi.news.yahoo.co.jp/article?a=20120425-00000001-president-bus_all へぇ~。面白い!これって数学的に証明できるんですか?/東大医学部生が考案した「ゴースト暗算」が話題沸騰!(プレジデント) - Y!ニュース http://t.co/TRmBTsod— Junichi…

ラムダ(lambda)を使ったアキュムレータ(累積器)

今読んでる「ハッカーと画家」にこんなRubyのサンプルコードが載ってました。 def foo(n) lambda {|i| n += i} end 本の解説によるとこれは「数nを取り、『数iを取ってnをiだけ増加させ、その増加した値を返す関数』を返す関数」というアキュムレータ(累積器…

Be Vimmerのコマンド取得元をVimクイックリファレンスに変更しました

Vim

Be Vimmerに関するお知らせです。 先日、EX コマンドの出現率を下げるという変更を実施しましたが、まだまだ実用度が不十分な気がしたので、今回コマンドの取得元を一新しました。 (日本語版のみ。英語版、中国語版は後日対応予定) 変更前 vimindex - Vim日…

「業界の新入社員に向けた100文字程度のコメント」を考えるなら

ツイッターを見てるとソニックガーデンの倉貫社長のこんなツイートが目に留まりました。ある書店のフェアに向けて「業界の新入社員に向けた100文字程度のコメント」を依頼されてるけど、これを考えるのが思ったより難しくて苦戦してる。皆さんなら何を伝えま…

RailsのMigrationでカラムの型を変える時の注意点

先日めでたくリリースしたTwitterボットのBe Vimmerですが、Migrationにバグがありました。 class CreateVimCommands < ActiveRecord::Migration def change create_table :vim_commands do |t| t.string :mode_id #しまった!integerだった!! t.string :c…

Be VimmerのEXコマンド出現率を下げました

Vim

先日紹介したBe Vimmer(Vimコマンドを解説してくれるボット)は現時点で500人以上の熱いプログラマーの方々にフォローされています。みなさんどうもありがとうございます。 ところで自分自身でもBe Vimmerのツイートを見てるんですが、ちょっと気になる点が出…

Vimコマンドを定期的に解説してくれるTwitterボットを作りました

はじめに 昨日、初めてBe VimmerというTwitterボットを開発しました。 このエントリではそのプログラムと制作過程を紹介しようと思います。 Be Vimmerとは? 定期的にVimコマンドとその説明をランダムにツイートするボットプログラムです。 日本語版、英語版…

社内でVimコマンド古今東西ゲームをやってみた

はじめに サクラエディタからVimに移行して、そろそろ半年ぐらいになります。 最近では覚えたVimコマンドもだいぶん増えてきて、Vimの便利さを改めて実感している今日この頃です。 サクラエディタに戻ることはたぶんもうないですね〜。 ところで、チーム内に…

MacBook (Late2009)のSuper Driveを交換してみた

我が家にはMacが2台あります。 1台は3〜4年前に買ったiMacで、もう1台は2年ほど前に買ったMacBookです。 ちなみにMacBookは最近僕のRuby/Railsお勉強マシンになってます。 ところがこのMacBookくん、半年ぐらい前からSuper Drive(DVDドライブ)の調子が悪くな…

プロフィール写真を変えました

Twitterとかで使ってたプロフィール写真を変えました。 妻からそろそろ変えた方がいいんとちゃう?と言われたもんで。 Before After 新しい写真は妻の撮影&妻のチョイスです。 自然な表情で優しい感じに見えるから、という理由でこれが選ばれました。 あと…

OSSのWikiページにツッコんだら自分で書き直すことになった話

Deviseってご存知ですか? 僕も最近知ったのですが、Railsでよく使われるユーザー認証ライブラリです。 で、このライブラリを使ってちょこちょこ実装していったのですが、UserモデルのMigrationを実行したときにこんな警告メッセージが出てきました。 [DEVIS…

プログラマとして影響を受けた本を3冊選ぶなら

先日知人から「これまでに読んだ本で、プログラマとして、エンジニアとして、ソフトウェア業界に携わる人として、感銘を受けたり、影響を受けた本を3冊選ぶとしたら、どれですか?」という質問を受けました。 今まで300冊以上の技術書を読んできましたが、そ…

Rails3.1ではchange_tableメソッドでマイグレーションするとロールバックできない

注意!! このエントリの内容はRails3.1.3での実行結果を元にしています。 将来的にこの内容が最新のRailsの仕様と異なる可能性も高いので、トラブルシューティングの目的でこのエントリを参照する場合は使用中のRailsバージョンをよく確認してください。 Ra…

Railsのdb:migrate:down VERSION=xxxはRails上のスキーマバージョンが古いと実行されない

問題と原因 Rails3.1のマイグレーションでちょっとハマったのでメモしておきます。 マイグレーションのdownを実行する場合は rake db:migrate:down VERSION=20120324025500のような形で実行できます。 しかし、VERSIONで指定したバージョンがRailsが管理して…

Rails3.0から3.1への移行とRSS(Atom)フィードの取得

はじめに 妻がやってるパン屋さんのWebサイトを変更してみました。 変更と言っても、トップページにRSS経由で最新のブログ記事へのリンクを表示する、ただそれだけの変更です。 こんな感じね。↓ 妻は週に1〜2回ブログを更新しますが、店のサイトの方は最近放…

iPadからSafariのアイコンが消えた場合の対処法

僕のiPad2から突然Safariのアイコンが消えてしまいました。 原因はよく分かりません。子どもが間違って消したのか、先日iOS 5.1にアップデートして何かおかしくなったのか・・・。 復旧するまでちょっと手間がかかったので、メモしておきます。 一時的な対処…

OracleやSQL Serverでテーブルやストアドの一覧を取得する

たまに仕事で使う時があるので、自分用の備忘録として書いておきます。 なお、これらのSQLを発行する際は特別な権限が必要な場合があります。 SQL Serverでテーブルやストアドの一覧を取得する 目的のデータベースにて以下のSQLを実行します。 typeが略称に…

英語ブログを書いてredditに投稿してみた

はじめに 先日書いた「JavaやC#の常識が通用しないRubyのprivateメソッド」というエントリはMatz先生の回答を頂けたことで、かなり価値のある内容になりました。 そこで僕は「たぶんこの話は日本のプログラマのみならず、海外のプログラマにとっても有益なん…

JavaやC#の常識が通用しないRubyのprivateメソッド

衝撃を受けたできごと 最近Rubyを勉強しています。 JavaやC#でオブジェクト指向プログラミングの基本はマスターしてるから、Rubyもそのあたりは楽勝〜!・・・と思っていたら、JavaやC#の常識が全く通用しない振る舞いに遭遇してかなり衝撃を受けました。そ…

F5, F6キーでVim内の全選択、全コピーができるようにしてみた

Vim

全選択するのに「ggVG」、全コピーをするのに「ggVGy」とタイプするのが面倒だったので、ショートカットキーを設定してみました。 gvimrcの設定はこんな感じです。 nmap <silent> <F5> ggVG nmap <silent> <F6> :%y<CR> 参考にしたのはこのページです。clipboard - vim - yank entire fil</cr></f6></silent></f5></silent>…

僕の花粉症対策

だんだんと寒さも和らいできて、春の足音が近づいてきました♪ が、多くの人が困っていると思われる花粉症の季節でもあります。 はい、僕も花粉症です。 大阪にいた頃からそうですが、5年ほど前に今の兵庫の田舎に住み始めてからはさらにひどくなりました。 …

僕が実践しているブログの書き方

はじめに ブログの書き方は人それぞれだと思いますが、普段僕がどんな感じでブログを書いているのか気になっている人はきっと多いはずです。 え?気にしてない?いや、絶対気になってるはずです!! というわけで、みんなが気になっているに違いない、という…

もし中学時代の自分に本を薦めるなら

はじめに 先日ツイッターを見てると、「何で本は読まなきゃいけなくて、漫画はダメなの?」という中学生の話が載ってました。 なるほど、今でこそ山ほど本(主に技術書)を読んでますが、僕も社会人になるまではほとんど本を読みませんでした。 また、この中学…

技術書買い漁り〜!

はじめに 最近また「色々新しい知識を吸収したい欲求」が沸き上がってきて、どさっと技術書を買い込んでしまいました。 独身時代は日常的にこういうことやってたんですが(仕事帰りに紀伊国屋に寄って1万円以上まとめ買い〜!とか)、結婚してからは自由に使え…

「誰のためのデザイン?」を読んだ

今まであまりデザイン関連の勉強をしてこなかったので、「誰のためのデザイン?」という本を買ってみました。 原著は1988年に書かれたので今から20年以上前の本になりますが、今でも時々名前を見かけるベストセラーです。 で、実際に読んでみたら確かにすご…