maeshimaの日記

メモ書きです

移行

結局 id:willnet アカウントで使えるようにした下記のブログにメモ用ブログを移行することにしました。ここは恐らくもう更新しません http://maeshima.hatenablog.com/

はてなブログのサブアカウント

はてなダイアリーだと、本アカウントでサブアカウントのブログの編集もできたんだけど、はてなブログだといちいち切り替えないとできない><これはもう(このブログの更新は)だめかもわからんね

はてなブログに移行

かなり放置していましたが、はてなブログをちょっと試してみたくなったのでダイアリーから移行してみました。 もしかしたらこっちもときどき更新するかもしれません。

let

beforeがネストされるexpectationのときにletの導入を考えるとよさげ。でも階層深いときに多用しまくるとかえって見づらくなる? Rubyist Magazine - 改めて学ぶ RSpec

tapp

復習用エントリ。tapを使う頻度をもっと上げたいなと思った tappと書いてタププ - うんたらかんたら日記 tapp についてガツンと申し上げたい - ursmの日記

validates_confirmation_of

validates_confirmation_of は valid? ではチェックされず、saveの時にチェックされるっぽい confirmation用の属性がnilのときはチェックされないみたい。

inf-ruby

使ってはすぐ存在を忘れてターミナルを使ってしまう…。C-c C-sでバッファが開く。 参考 inf-rubyメモ - odz buffer

capistrano_colors

gem install capistrano_colors だけで色が付くようになるのかなと思ってたけど違った(当たり前)。全部のプロジェクトの cap コマンドを色つけしたいので ~/.caprc を作って require 'capistrano_colors' としたら色が付きました 参考 stjernstrom/capistran…

複数ユーザ毎のコメント数を調べるコード

復習用エントリ。これは絶対に覚えなくてはならないコード! user = User.all(:joins => :comments, :select => "users.*, count(comments.id) as comments_count", :group => "users.id") 各ユーザ毎に user.comments とすると、クエリがユーザ数分発行され…

Hash#fetch

キーに対応する値を返す。値がない場合はKeyError。デフォルト値をブロック中に指定できる。 hash = {} hash.fetch(:hoge) {'fuga'} #=> "fuga" hash.fetch(:hoge) #=> KeyError: key not found: :hoge 名前付き引数を使うようなときに使う。

ActiveRecord::RecordInvalid と ActiveRecord::RecordNotSaved

ActiveRecord::RecordInvalid を手動で raise するには引数として model オブジェクトが必要。 下記のように、validationに失敗したオブジェクトを取得できる begin complex_operation_that_calls_save!_internally rescue ActiveRecord::RecordInvalid => i…

Arrayを分割する系のメソッド

railsで拡張されたメソッド。 Array#in_groups(n) n個の配列を持つ配列を返す。 Array#in_groups_of(n, fill_with = nil) n個の要素を持つ配列を持つ配列を返す。each_slice と似てるけど、配列(の配列)を返すメソッドであるというのと、fill_with に何か値…

ctagsのオプション

Rで再帰、eでemacs用の出力にしてくれる ctags -Re app

閲覧専用のgitクライアントはtigで十分

git

Rails の git log を RSS か何かで継続的に読みたいと思ってgitクライアントぐぐったけど、別に tig で必要十分っぽい。調べたらdiffから変更ファイル全体も見に行けるし。

innodbログとバイナリログの違い

どうも混同してしまいがち。 innodbログ innodb専用 更新を早めるためのもの binaryログ 全部のストレージエンジン用 レプリケーションの同期用 ロールフォワード用 更新は遅くなる

スタートダッシュ型仕事術

一年前にブクマしたけど、もうあと何回か読みたいのでメモ。 Life is beautiful: スタートダッシュ型仕事術:実践編 書いたプログラムを捨てることを恐れないこと この段階で仕様書を書くことは時間の無駄と認識すること 細かなことを無視して、一番難しい部…

MySQL用topコマンド

はてブ棚卸しから。こんなのあったっけか。 MySQLの状態がリアルタイムでわかるMySQL用topコマンド「mytop」と「innotop」 - GIGAZINE

rlwrap

一年前のブクマ履歴から発掘。rlwrap - readline ラッパー - 川o・-・)<2nd life brew install rlwrap ではいった。とりあえず直近ではつかう場面ないけど備忘録てきにメモ。

最近の application controller のテスト方法

application controller のテスト用に controller メソッドがある。このメソッドのブロック中にメソッドを定義すると、それは appliction controller のテスト用のサブクラスのモックアクションとなる。

メタプログラミングRuby 第5章

eval instance_evalやclass_evalも、evalと同じように文字列を引数にすることが出来る。 evalとセーフレベルと汚染の考えはワンセット。 Binding TOBLEVEL_BINDING トップレベルのスコープが束縛されている eval で実行時の束縛を指定できる。どっかで使えそ…

ペイロード

「最大積載量」という意味の英単語で、ITの世界では通信パケットのうちヘッダ部分(行き先等の付加情報)を除いた、本来転送したいデータ本体のことを指す。 ペイロードとは【payload】 - 意味/解説/説明/定義 : IT用語辞典

SCSSの関数で出来ること

lighten(), darken() に感動したので、他にSCSSでなにが出来るか気になった。Module: Sass::Script::Functionsを見てざっくりおおまかにまとめました。 出来ること 赤色、緑色、青色の調整 色相、彩度、光度の調整 透明度の調整 明るさの調整 二色をまぜる …

メタプログラミングRuby 4章

カレントクラス カレントクラスはカレントオブジェクト(self)とは別。Rubyのプログラムは常にカレントオブジェクトとカレントクラスを持っている。メソッドを定義したときに、そのメソッドはカレントクラスのインスタンスメソッドになる。 class MyClass def…

Rails 3.1 で annotate_models

Rails 3.1 だと annotate_models がうまくうごかないっぽい -> annotate のhead なら大丈夫だったctran/annotate_models - GitHub

groonga

db

groongaのMySQLストレージエンジンあり rubyプラグイン(rroonga)あり railsで使えるプラグイン(activegroonga)あり Try ActiveGroonga!

sunspotで検索する

Working with search - GitHubの意訳。 検索ことはじめ Sunspot.search メソッドで検索できる。引数は検索で使う一つ以上のクラス(モデル)。オプションでブロックに検索条件を書ける。一番簡単な例としては、渡したクラスのインスタンス全部を検索する物があ…

sunspot-rails-tester

justinko/sunspot-rails-tester - GitHubのREADMEの意訳。この gem は特定の箇所のテストで solr をオンにするためのもの。solr を使用せず、sunspot を stub 化することで不必要なインデックス構築を避けている。RSpec2 の spec_helper.rb の例。 $original…

sunspot_rails

sunspot_rails/README.rdoc at master from outoftime/sunspot - GitHubの意訳。Sunspot::Rails は Sunspot の Solr 検索を Rails に統合するためのプラグイン。下記のような機能を提供する。 config/sunspot.yml で sunspot の設定が出来る ActiveRecord を…

sunspot(solr)の設定方法

Advanced Fulltext Search Configuration - GitHubの意訳。デフォルトの設定だと、スペースか他の区切り文字で区切られている前提。区切りにはStandardTokenizerというのを使ってる。大文字小文字を区別させないようにするためにはLowerCaseFilterというのを…

sunspotのチュートリアル意訳

インストール solrのインストールはmacなら brew install solr でOK。Rails側はまずGemfileに gem 'sunspot_rails' を書いて bundle install。それから rails g sunspot_rails:install で config/sunspot.yml を作成。 solr のインスタンスを起動 下記の rak…

thinking_sphinx の設定

基本 config/sphinx.yml に設定を書く。下記のように database.yml っぽく environment 毎に設定を分けることが出来る。 development: port: 9312 test: port: 9312 production: port: 9312 rake ts:conf などとすると、このファイルを元に設定ファイル(conf…

ASCIIcasts - Template Inheritance

ASCIIcasts - “Episode 269 - Template Inheritance”を見て。以前、Edge Rails.info :: Template Inheritanceを見て、3.1 から 「デフォルトのビューの位置にファイルがない場合は、親のコントローラのビューを見る」という仕様が追加されるのは知ってた。で…

3.1のストリーミング機能の話

Automatic Flushing: The Rails 3.1 Plan « Katz Got Your Tongue?を読んで。3.1のストリーミング機能の実装が大体どんな感じか、非常に詳しく書かれていてためになった。Fiberを使っている手前、1.9でしか使えないのね。

thinking_sphinx の rake コマンドまとめ

インデックスとコンフィグの作成 下記のうちのどれでもOK。 rake thinking_sphinx:index rake ts:index rake ts:in デフォルトでは、インデックスの作成に加えてコンフィグファイルも生成される。インデックスの作成だけしたいときには rake thinking_sphinx…

railsがTimeに追加してる便利メソッド

ActiveSupport::TimeWithZoneに追加されてる。 today? past? future? between?

thinking_sphinx 利用時のテスト方法

transactional fixtures をオフにしないと search メソッドは値を返さないそうな。 cucumber 1.3.2 から、thinking_sphinx は cucumber と連携しやすくするためのヘルパーメソッドを用意した。features/support/env.rb に下記の二行を足す。 require 'cucumb…

attributeの変更

changed? はともかく _was とかすっかり忘れてた><attributeの変更確認 - うんたらかんたら日記

メタプログラミングRuby 第3章

ブロックは定義された場所の束縛を保持する。 束縛とはローカル変数、インスタンス変数、selfなどの情報のこと スコープゲートは module class def class を Class.new {} にしたり、def を define_method {} にしたりすることでスコープをフラットにするこ…

今週のrailscasts - Authentication in Rails 3.1

#270 Authentication in Rails 3.1 - RailsCastsを見て。 Railsでのベーシック認証 secure_password force_ssl の三つについてだった。ベーシック認証以外は知ってたので省略。 ベーシック認証 3.1 から controller に下記のように書くだけでベーシック認証…

Capybaraをコンソールで試す

こんな感じで試せる>|ruby|| session = Capybara::Session.new(:rack_test, YourApp::Application) session.visit "/" session.fill_in "login", with: "login" |

メタプログラミングRuby 第2章

似たようなメソッド群をどのようにリファクタリングするかという課題に対して、動的ディスパッチ&動的メソッドと method_missing の二つの手段で解決をはかる話。 ゴーストメソッド作成時の Object#respond_to? と Object#methods method_missing でゴース…

ATOKオン時に半角スペース

shift + space で半角スペースにできる。もしくは設定をいじると常に半角スペースを入力できる

マスクとしてグループ化

RedLine Magazine : Fireworks コレ、5分で作ります。その1を試してみて。Fireworksレッスンブックで試した機能である「マスクとしてグループ化」を完全に忘れていた。一年以上fireworks触ってなかったし仕方ないか。

homeとhouse

home うち house 一軒家 みたいな感じかな homeとhouseの違い - maeshimaの日記

今週のASCIIcasts - SASS Basics

ASCIIcasts - “Episode 268 - SASS Basics”を見て。 SCSSの仕様 ネストが出来る a:hover みたいなやつは &:hover のように & にするとネストできる $main-color: #FFFFFF; みたいに $ 使うと変数として使える 関数が用意されている。例えば darken(#FFFFFF, …

ASCIIcasts - CoffeeScript Basics

ASCIIcasts - “Episode 267 - CoffeeScript Basics”気になったとこだけメモ this は @ に置換 三項演算子は if then else に置換が可能 coffee script 中のエラーもコンソールに出力してくれる

retry

retry 使ったことなかったけど、begin ~ rescue でとても使えそう!retry回数制限つきrescueの書き方のメモ - Hello, world! - s21g retry は、ループ以外に後述の rescue 節でも使えます。この場 合は、begin 式を始めからもう一度実行します。retry を使う…

cookieのpathは基本使わない

cookieのpathを利用してURL上のパス毎にcookieを分けるやりかたはセキュリティ的には穴がたくさんある。例えばいずれかのパスで frameset を仕込んでそこから parent.subframe.document.cookie などとすると、別のpathのcookieを読めてしまう。らしい。高木…

RDBMSでNULLは使うな

3値論理を見て。 not in や not exist でNULLを含むレコードを取り扱うと結果が直感とは反したものになる。めちゃめちゃややこしいので、この場合の挙動を覚えるよりも、おとなしくNULLを使わない習慣を付ける方が賢明だと思った。

cloneとdup

普通はdupでいいんじゃないかと思った オブジェクトのコピーについて - おもしろWEBサービス開発日記