SQL のWHERE句の条件に関数を使うとインデックスが使用されない

Rails でfind_by_sql を使う場合に、大きいSQL だと次のようにSQL 中に関数を使ってしまうことがありました。 単純な例だとこんな感じ。 User.find_by_sql([<<-SQL, {:id => 1}]) SELECT * FROM users WHERE IF( :id, id = :id, 1 ) SQL でも、このようにIF …

*scratch*, *Messages* 以外のバッファを一気にkill

欲しかったので作成。初elisp! (defun my-kill-all-buffer() (interactive) (yes-or-no-p "kill all buffer? ") (dolist (buf (buffer-list)) (unless (member (buffer-name) '("*scratch*" "*Messages*")) (kill-buffer buf)))) 動作確認 GNU Emacs 22.2.50…

大きめのテーブルにカラムやインデックスを追加する際の注意

先日大きめ(といっても500万行くらい)のテーブルにインデックス付きのカラムを追加しようとして痛い目にあったので調査。 大きめのテーブルにカラムやインデックスを追加するとどうなるか 今回は単純に、「ALTER TABLE 〜 」で追加しようとしました。追加す…

Hash を使ったよくある集計

メモ。あるオブジェクトの集合があって、各オブジェクトの属性を集計したいとかそういう場合。 基本的に、Hash を使って、key-value 型でやればいい。 # -*- coding: utf-8 -*- if RUBY_VERSION < "1.8.7" require 'enumerator' end Club = Class.new do att…

Trac + SVN + IRC の良さ

ちょっと考える機会があったのでメモ。僕の仕事環境だと、Trac, SVN, IRC(, あとplagger) を中心に開発している。 これらを使っていて思うこと Trac と連動しているとタスク管理が楽だよねー!……違うよ!全然違うよ!それだけなんて勿体ない > ↑ぶっちゃけ最初…

クラスがレシーバの場合のclass_eval とinstance_eval の違い

ここ以前から分からなかったので調べてみました。 基本 class_eval Module で定義されている なので、クラスやモジュールにしか使えない irb(main):009:0> String.respond_to?(:class_eval) true irb(main):011:0> Enumerable.respond_to?(:module_eval) tru…

Ruby 1.8.5 のSHA1 がやたら速いんだが

何故だ。MD5 の方が速いんじゃないの? ベンチマーク $ /usr/local/bin/ruby -v hash_bench.rb [~/tmp] ruby 1.8.5 (2006-08-25) [i686-darwin9.5.0] Rehearsal ---------------------------------------- MD5 4.070000 0.010000 4.080000 ( 4.102120) SHA1 1…

UNIQE INDEXと JOIN とORDER BY で無用なソートが発生するケースとその回避方法

Amazon.co.jp: 実践ハイパフォーマンスMySQLを読んでいたら「クエリチューニング」の章(p. 101)でタイトルにある問題が取りあげられていたので考察。 MySQL のバージョンは「5.0.67」。 サンプルDB サンプルとして、よくある商品と注文のテーブルを使います…

まつもとゆきひろ氏が語る「ビューティフルコード」セミナーに行って来た

まつもとゆきひろが語る「ビューティフルコード」×「プログラマ35歳定年説」に行ってきました〜。今年初めて行ったイベントなのですが、とてもいいお話を聞くことができました。美しいコードとはどのようなものか、またそのようなコードを書けるようになるた…

nano jpmobile

rails で携帯アプリと言ったら定番のjpmobile の超軽量コピー。 できること キャリア判定 端末情報取得 ソース # porting from http://github.com/darashi/jpmobile/tree/0.0.3 class Mobile def self.carriers self.constants - %w[Base] end def self.crea…

一次情報にあたることの重要性

最近考えていることがありました。それは、いわゆるギークな人やハッカーは人はどんな風に勉強してきて、今その高みにいるんだろうということです。Shut the fuck up and write some code. ってつっこまれそうな内容ですね(ノ∀`)でも考えてしまうわけです。…

LDR のエントリー中のリンクを開くグリモンが便利

id:hogelog さんが作成されたldr_view_entry_link.user.js(RSS消化を高速化 - 大学6年生のhogelog で紹介されてる) が便利。 僕もRubyNewsとかreddit.com 日本語版 のfeed を購読しているので、エントリー中のリンクをショートカットで開けたらな〜って思っ…

GoogleChartAPI Wrapper(QR コード)

Rails でQR コードを出力する必要がありました。要求は以下の3点。 普通のビュー内でも使いたい Helper でQR コードAPI用のURL を生成して、それをimage_tag に渡せばおk QR コードだけポップアップする機能も欲しい Controller でsend_data + ビューでlink_…

Evernote からChangeLog + chalow に移行した!

今までEvernote を使って作業ログを残していたのですが、chalow の方がメリットがあったので、chalow を使ってみました! Evernote のいいところ シンクロできるのでどこでも使える クロスOS なクライアントソフトがある チェックボックスを挿入できて、Todo…

Macports のmysql の文字化け問題、readline 問題を直す

macports のmysql4 やmysql5 を普通にインストールすると、mysql クライアントから日本語を正しく入力できません。例えば、以下のようなクエリを入力すると、Return を押した時に日本語が見事に化けます。 SELECT name AS 名前 from users; さらに困ったこと…

Rails はString/Fixnum の違いで結構はまる

昨日、はっまった ^^); ・・・ ActiveRecod.find(id) の id は文字列でも良いが、全てのAPIがそうなわけではない! - yuum3のお仕事日記と全く同じハマり方をしました。 form のselect はハマる 例として、商品を作成するフォーム。商品にはジャンルが指定で…

Rails 1.2.3 〜 2.2.2 までの主な変更点のまとめ

rails の2.x 系をまともに勉強していなかったので、調査しました。コピペの部分も多いですが、情報ソースと共に記述します。 あまり変更点がなかったマイナーアップデートは除外してあります。 1.2.4 2.0 からエラーになる構文に対する警告出力 1.2.4 で警告…

rake rails:freeze:edge が上手く動かない

現在の環境 ruby 1.8.7 rubygems 1.3.1 rails 2.2.2 他のバージョンのrails はインストールしていない 試しにfreeze この状態で、1.2.6のrails アプリに対してfreeze を実行しようとする。 1. config/environment.rb の内容を書き換える(今回の例では1.2.6) …

現在閲覧しているページをはてブしている「お気に入りユーザ」を表示するGreasemonkey

あったらいいなーって思い、作ってみました。機能概要は以下の通りです。 機能 現在閲覧しているページをはてブしている「お気に入りユーザ」を表示する ついでに、自分がはてブしているかも表示する 導入するとこんな感じに、左下にお気に入りユーザのfavic…

URL からページのタイトルを引いてくるスクリプト

ちょっと必要になって書いてみた。 リダイレクトを追うようにしている 例外の処理の仕方がまだまだ汚い fetch_title.rb require 'net/http' require 'net/https' require 'uri' require 'nkf' Net::HTTP.version_1_2 USER_AGENT = 'Mozilla/5.0 (Macintosh; …

特定のカラムの編集を禁止したい場合のvalidation

あるテーブルのカラムがシステムのみによって編集される値で、ユーザから編集させたくない場合、そのvalidation が欲しいと思った。 例えば、はてなブックマークのエントリーのタイトルは、ユーザは編集できず、ページのtitle タグの内容で固定したいみたい…

プログラマと仕事

最近、仕事に当てる時間が多くて、Blog が更新できてない・・・。はてダ初めて以来更新していない期間が一番長いです(⊃д⊂)更新が止まると、「最近勉強してないなぁ」っていう感じが押し寄せてきてしょんぼりします。 残業続きだったこともあり、仕事について…

新はてなブックマークでもMinibufferBookmarkCommand を使う

なんか、リニューアルされたらMinibufferBookmarkCommand 経由ではてブできなくなった。「100%」とかでるけど、実際にはブックマークされない( ゚д゚) ブックマークレットだと、タグの[]を打つのが面倒なので、MinibufferBookmarkCommand を修正。一応動くよ…

日本人は頑張りすぎなのか

今日昼頃テレビを見ていたらちょっと興味があるものがやっていた。「東大の研究室に所属するあるセルビアから来た人」の話。 日本の宗教に関して学んでいるという。「日本ではクリスマスを祝い、亡くなればお墓に入り等宗教がMix している」と言う。そして、…

find_by_sql を使う際のTips

読んでいたコードで面白いテクニックを使っていたのでメモ。 Rails のActiveRecord のfind 系メソッドは優秀だと思うけど、自分でSQL を書きたい時があると思います。そこで、find_by_sql を使うわけですが、その際、大規模なSQL を書く場合のTips です。 環…

「クックパッド」のものづくりセミナーに行ってきたまとめ

昨日、ウェブキャリアさんが主催する月間524万人が利用する食のインフラ、「クックパッド」のものづくりセミナーに行ってきました。 クックパッドと言えばRails での大規模リニューアルがニュースになりました。また、大規模開発には向かないと言われたこと…

belongs_to アソシエーションの動作を読む

以下の動作が実際どのような動きをしているかメモ。 class User < ActiveRecord::Base belongs_to :club end User.column_names => ["id", "club_id" ....] user = User.find(:first) user.club => #

IME 関連のキーバインドを変更して快適に編集する

Windows のIME 関連のキーバインドって物凄い使いにくいですよね!EeePC とかでWin 使うと耐えられない。 IME のON/OFF を切り替えるキーの位置が遠すぎ IME のON/OFF がトグル 英字を入力しようとして「半角/全角キー」押したら実は元々IME OFF でまた押す…

イテレータを便利にするenum_for

ruby 1.8.7 からenumerator が組み込みで使えるようになった。enum_for がデフォルトで使える。 enum_for Enumerable に定義されているメソッドの多くはinclude 先のクラスのeach メソッドを使って実現されている。 例えばmap の実装は以下のようなイメージ…

growlnotify が警告だす

growlnotify を使うと、毎回以下のような警告がでる。 growlnotify -m "test" 2008-11-09 03:56:17.817 growlnotify[727:10b] could not find local GrowlApplicationBridgePathway, falling back to NSDNC 動作には影響ないですが、毎回でてくるので調べて…