2014-11-01から1ヶ月間の記事一覧

MySQL int(10) の意味するところ

MySQLにおいてint(10)は整数データタイプの表示幅を10桁に指定するという意味になります。 create文例: CREATE TABLE `test` ( `id` int(10) unsigned NOT NULL DEFAULT '0', `name` varchar(40) NOT NULL DEFAULT '', `type` smallint(6) NOT NULL DEFAULT …

JSON にコメント(っぽいもの)を書く方法

JSONは便利ですが、一点不満なところがあるとすればそれはコメントが書けないことです。 例えば以下の様なJSONがある場合、 JavaScriptのように // などでコメントを表現しようとするとエラーとなります。 { "startAt":0, // 開始位置 "maxResults":18, "tot…

Mac OS X に homebrew で mysql を install する

MySQLのインストール、初期設定まで MySQL のインストール まずは homebrew を使ってmysqlをインストールします。 % brew install mysql ここでインストール後の設定方法が出力されます。 これらの情報は brew info mysql で確認可能。 データベース及びユー…

PerlのArrayとListでは挙動が異なるので注意が必要です

Perlのarraysとlistsは似ていますが全く異なるものです。 どこがどう違うのかはよくまとめられた記事がありましたのでこちらを見ていただくとして、 ここでは自分用にメソッドの戻り値としてarraysとlistsそれぞれを指定したときに、 スカラーコンテキストで…

transactionの途中でトランザクションが切れてしまった時にそのトランザクションを殺す方法

起こったこと transactionモードで作業途中、セッションが切れた。 そのとき特定tableにinsertをしたがcommitしていない状態だった。 後ほど再度そのtableをselectしたが、当然commitしていないのでデータがなかった。 しかしinsertしようとすると、 ERROR 1…

mac os x で 音源ファイルのフォーマットを mp4 へ変換するコマンド

afconvert はmac os x に標準で搭載されているコマンド。 SNDFILE.aiff を aac フォーマット、拡張子 mp4 で変換するコマンド例 (-f mp4f なのがみそ) $ afconvert -f mp4f -d aac -b 256000 SNDFILE.aiff $ afplay SNDFILE.mp4 Ref. LH質問箱:音質にビット…

Herokuの登録とデプロイ

HerokuはWebアプリ用のホスティングプラットフォームです。 初期はRuby on Railsなアプリケーションのみのサポートでしたが, 現在は Java, Node.js, Scala, Cloure, Python, PHP などに対応しているらしいです。(DBはPostgresQL, MySQLなど) ソースコードの…

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つの分離…