Perl Image::Imlib2 を CentOS6 にインストールする

手順 RPMforgeレポジトリをインストールします。 $ wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.0-1.el5.rf.i386.rpm $ sudo rpm -ivh rpmforge-release-0.5.0-1.el5.rf.i386.rpm RPMforgeのdefaultを無効化します。 $ less rpmforge…

Perl で2つのテキストファイルの差分をみるには

UNIX のコマンドでテキストファイルの差分箇所を抽出するには diff が便利です。 そしてこれはもちろん Perl でも行うことができます。 以下に3通りのdiffに対応したPerlコードを示します。 一致しているかどうかだけ分かればよい場合 Digest::MD5 もしくは…

memcached の Slab Allocator について理解する

Slab Allocator とは 従来の memcached のではすべてのレコードに対して malloc と free を行うというものでした. しかしこの方法では memory の fragmentation (断片化) を発生させてしまい, OS の memory manager に負荷をかけてしまいます. この問題を解…

Unable to find the chromedriver executable 対応

capybara を使った自動テストを実行しようとした時に下記のエラーが発生してこけました. /Users/${YOUR_NAME}/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/chrome/service.rb:20:in `executable_path…

ログインシェルを変更する

Mac OS X ではdefaultのログインシェルは/bin/bashです。 これをhomebrewなどで入れた他のシェルに切り替えたい場合にはchshを使います。 zshに切り替える。 $ chsh -s /usr/local/bin/zsh bashに切り替える。 % chsh -s /bin/bash see also man chsh

revealjsで作成したスライドをpdfに出力する方法

web serverが立ち上がっていない場合、まずweb serverを起動します。 $ grunt server http://localhost:9000/ にスライドが表示されますね。 そうしたら、このURLに ?print-pdf を追加します。 http://localhost:9000/?print-pdf#/ Mac OSX かつ Chrome なら…

hubotをインストールする

MacOS X にインストール まずはnodeをインストールします。 #node $ PREFIX=$(brew --prefix) $ sudo mkdir -p $PREFIX/{share/man,bin,lib/node,include/node} $ sudo chown -R $USER $PREFIX/{share/man,bin,lib/node,include/node} $ brew install node n…

SQLite GUI クライアント "SQLite Database Browser" のインストール手順

公式に書いてあるとおりなのですが備忘録ということでここにも書いておきます。 gitからソースを取得してきて自分でコンパイルする方法でインストールしてみました. 手順 homebrew を使って sqlite 及び qt をインストールします. $ brew install sqlite --w…

sqlite3 の exit コマンド

おもむろに sqlite3 と打ち込んだら exit の仕方がわからなかったので。 SQLite ではすべてのコマンドに prefix "." をつけます。 よって、exit するには prefix として "." をつけて sqlite> .exit などとします。 ちなみにその他の特殊コマンド一覧を見た…

MySQL のパスワードを変更する方法

背景 プロジェクトで MySQL w/rails を使う事になったが, development のパスワードが config/database.yml に固定で記載されていたため, localの mysql のパスワードを変更する必要があった. 手順 mysql に入ります. mysql -u root -p user:Password を新し…

個人的に memcached を使うべきと思うシーン

memcached をどういう場面で使用するべきかについて、 現時点での考えをまとめておきます。 キャッシュすべきなのは "レコードユーザの閲覧履歴などユーザに紐づくレコード" だと思います. RDBからレコードを取得するには selectをかけた時に対象レコードが…

sleepimage肥大化に伴う領域削除とhibernatemodeの設定変更

経緯 HDD内の"その他"領域肥大化が発覚。対象ディレクトリを調べる。 基本的に $ sudo du -h -x -d 1 / で調べていく。 今回は原因が /private/var//vm/sleepimage っぽい。 $ sudo du -h -x -d 1 /private/var//vm 8.1G /private/var//vm $ ls -l /private/…

Pig で 2 つのカラムを outer join する

pig

Pig ではレコードA, B に対して id で left outer join するときには下記のようにします。 result = JOIN A by id LEFT OUTER, B by id; これを例えば id, log_date という2つのカラムで left outer join をしたいときには、そのカラム群を () で囲んむこと…

chrome で cookie の内容を編集する方法

Chrome で cookie を確認したり削除したりすることがあると思いますので、 GUI操作手順を載せておきます。 まず "設定" に行きます (⌘ + , とかでもいけます) 下の方にリンクしてある "詳細設定" にいきます。 "コンテンツの設定" を押します。 "すべての Co…

ag は EUC-JP や Shift-JIS のファイルが検索対象からはずされてしまう

ag

EUC-JP や Shift-JIS がてんこ盛りなリポジトリでおもむろに ag で検索をかけてもスキップされるファイルがあることを発見しました。 調べてみると、どうやら ag では EUC-JP や Shift-JIS のファイルがバイナリファイルとみなされ、検索対象からはずされて…

得た知識をしっかり自分のものにするために

すごくよく出来る人が作った、すごくよく要点がまとまっているノートがほしい!という人がいます。 確かに、すごくよく出来る人のノートは要点がよくまとまっており、必要な情報にアクセスしやすく、また簡単に理解することができるため、欲しがる気持ちもわ…

各種偽装データを作成できる Faker が便利

Ruby gem の Faker が便利だったのでメモしておきます。 この gem はTESTをする時などに用意したくなる fixture などを作成するときなどに活躍します。 文字数指定で validation しているコードを TEST したいときや email アドレスのフォーマットに従ってい…

演算子 && と and の使い分け

Ruby における演算子 && と and は同じ意味を持ちますが優先度が異なります。(Perlについても同様) これによって使うべきシーンがそれぞれ異なりますので、ここにはその辺りの使い分けについて書いておきます。 定義 定義は && も and も「左辺を評価し、真…

RSpec expect の () と {} の違い

RSpec の expect において expect() expect {} はそれぞれ値を引数として取得するか、ブロックつきメソッドを引数とするかが異なります。 expect() これにより、expect() ではすでに取得済みのレコードがあり、それが予期する値と等しいかどうかなどをTESTす…

binding.pry から脱出するコマンド

binding.pry は debug の際に step 実行を行うことができ非常に便利なものです。 ただ脱出方法がいまいちわからず RSpec などで複数のテストケースを実行してしまう時など Ctrl + D の連打はつらいものがありました。 それでちょっと調べてみたらすぐにでて…

**args は引数として期待していないハッシュが送られてきた時にとりあえず受け取ってくれるものらしい

def log(msg, level: "ERROR", time: Time.now) puts "#{ time.ctime } [#{ level }] #{ msg }" end みたいなメソッドがあった時に、正しくハッシュを渡してやると log('Hi!', level: 'ERROR', time: Time.now) #=> Thu Nov 13 01:42:07 2014 [ERROR] Hi! み…

配列における `<<` と `+` の違い

a = [1, 2, 3] に b = [4, 5, 6] を a << b とかで突っ込むと b は a の1要素として入ります。 つまり、[1, 2, 3, [4, 5, 6]] ですね。 これを平坦化したいときには a.flatten! とかやると a が破壊的に平坦化されます。 [1, 2, 3, 4, 5, 6] しかし、最初か…

MySQL の分離レベルとか自動コミットとか

今回は分離レベルの話と自動コミットについて雑多なメモを。 分離レベル MySQL InnoDB のデフォルト分離レベルは REPEATABLE-READ になっています。 このモードはダーティーリードは禁止するものの、ファントムリードなどは発生するというやつで、 4つの分離…

スレッドとプロセスの違い (箇条書きメモ)

スレッドのプロセスがいまいちよくわからなくなったのでさくっと調べたものを箇条書きでメモしておきます。 プロセス プロセスはプログラムの実行単位のこと リソースを共有するには別プロセスのリソースをコピーしてこなければならない。 プロセスが実行す…

Perl 及び Ruby におけるMixin

Perl Perl は言語として多重継承が可能です。 例えば Cafe クラスが Shop クラスを継承しつつ、 Spot のメソッドも使いたい、 という場合には下記のように書くことができます。 package Cafe use strinct; use warnings; use parent qw(Spot Shop); ... 1; N…

初めての Ruby を読んだ

初めての Ruby を読みました。 良書でした。 この本は他の言語を使ったことがある人が Ruby の言語仕様をざっとキャッチアップするのに最適な本な気がします。 自分は本を読んだ後に書かないと知識が残留しない方なので、 自分忘備録として個人的に便利だっ…

認証と認可

認証はサイトのユーザーを識別することであり、認可はそのユーザーが実行可能な操作を管理することです。 認証 ... サイトのユーザーを識別すること 認可 ... そのユーザーが実行可能な操作を管理すること 権限付与とかを例に取ってみると、 付与のためにそ…

expect change を複数データ同時にTESTしたいときに

expect change を複数データ同時にTESTしたいときなどがあります。 そんな時には以下のようにするとできます。(例はあまり適切ではありません...) expect{ execute }.to change{ [User.find_by(id: 1).coin, User.find_by(id: 1).skill] }.from([100, 0]).to…

`{ ... }` と `do ... end` の違いと使い分けるべきシーン

ブロック付きメソッド呼び出しを記述する際には { ... } あるいは do ... end を使うと思います。 しかしこれらは厳密にいうと異なります。 その違いは 結合強度 です。 { ... } の場合 some_method other_method { ... } この式は次のように解釈されます。 …

OS X への Redis インストール

homebrew 経由でインストールしました。 Install $ brew search redis hiredis redis redis1310 redis24 homebrew/nginx/redis2-nginx-module homebrew/php/php54-redis homebrew/php/php56-redis homebrew/php/php53-redis homebrew/php/php55-redis $ brew…