EC2 Reserved Instanceの有効期限をAPIで管理する

EC2 Reserved Instanceの有効期限が切れた通知って僕の知る限りはメールで来ないんですよね。カレンダーに登録しとくとかタスク管理ツールに入れとくとかすればいいんですがAPIを使ってcronで毎日確認する方法もあるので軽く書いてみた。引っかかったインス…

Atom上でWindows Explorerぽく動作するfile-explorerというパッケージを書いた

Problem github製のテキストエディターであるAtomにはデフォルトでfuzzy-finderというファイル探索機能がありファイル名を入力すればどこにあるファイルでも見つけることができる。これはとても便利なのだが、Railsなどで開発をしてると開いてるファイルと同…

Passengerでゾンビプロセスを殺す時のベストプラクティス

Passenger EnterpriseでRollingRestartを有効にしているとworkerプロセスがゾンビになって再起動してもプロセスが死なない時がある。 下記のケースではPID24388がtmp/restart.txtをtouchしても死なない状況である。 $ passenger-status Requests in queue: 0…

Atom上でRailsプロジェクト内のファイル移動を楽にするRails-Transporterというパッケージを書いた

最近Emacsからgithub製のテキストエディターであるAtomに移行しました。慣れるまで1週間ほど移行期間は必要でしたがデフォルトの設定で十分高機能で使いやすいです。自分は普段の仕事ではRailsアプリの開発をする事が多いのでRails開発で使える便利そうなパ…

RailsでArgumentError: invalid byte sequence in UTF-8が発生する場合の解決策

Railsで作成されたアプリケーションのリクエストURLにURLエンコード(壊れていてUTF8にデコードできない)された文字列を含めるとArgumentErrorが発生します。 環境 ruby 2.0.0p353 rails-4.0.4 再現方法 サンプルプロジェクトを構築 # railsの最新版をインス…

Apache Passengerの設定項目について調べた

PassengerはRailsを動かす事ができるアプリケーションサーバである。 Apache版の設定項目について調べたので自分用の備忘録として残しておく。 バージョン Passenger-4.0.37 http://www.modrails.com/documentation/Users%20guide%20Apache.html Configuring…

dalliの挙動を検証してみた

Rails4でmemcachedをキャッシュストアで使う定番gemといえばdalliとRailsGuideに書いてある。ただ、このgemが実際どうゆう挙動をするのかググってみてもあまり日本語の情報が見つからなかったので試してみた。 環境 Ruby-2.0.0p353 Rails-4.0.2 dalli-2.7.0 …

active_adminの認証を他のページに設定する方法

active_adminはrailsで定義したモデルを操作するwebインターフェースを数コマンド叩くだけで簡単に定義してくれるお手軽なツールです。まれにあるページに対して認証を定義したい時がありますがactive_adminの認証を簡単に設定する方法があります。認証を設…

CoffeeScriptで定義したクラスを別のcoffeescriptファイルから呼び出す方法

普通にcoffeescriptを書くとglobal汚染を防ぐためにfunctionの中に入れられてしまうのでwindowに領域を確保してそこに格納しておく必要がある。HogeClassの前にHogeProjectを定義しているのはnamespaceみたいなもので他のjsがHogeClassを定義している時のた…

redis-mutexで排他制御

例えばサーバが2台あったとして同じ時間に全く同じ内容のcronスクリプトが実行されるとする、その処理がDBのバッチ処理など大きなコストを必要とするなら両方のサーバで実行されるのは無駄でしかないし場合によってはデータの不整合なども発生するかもしれ…

事前にprecompileしたassetsをS3に配置してdeployを高速化する方法

Railsで作られているサービスとおもわれるbasecampやgithubはassetsファイルをアプリケーションサーバとは別のCDN(akamaiやCloudFront)サービスから配信している。CDNに配置する事のメリットとして世界中のEdgeサーバからassetsを配信できるのでどこからアク…

active_adminにロック機構を導入する

active_adminをインターネットに公開する場合にアカウントロックを設けたいなぁと思った。いろいろ調べていたらdeviceでアカウントロックを後から追加するの記事がとても参考になりました。 要約するとactive_adminはdeviceという認証フレームワークを使って…

active_adminのassets precompileが失敗する

active_adminのprecompileが失敗する。 環境 Mac OS X 10.8.2 ruby-1.9.3-p125-p194 rails-3.2.11 active_admin-0.5.1 プリコンパイルしてみると.. $ bundle exec rake assets:precompile /Users/hakutoitoi/.rbenv/versions/1.9.3-p194/bin/ruby /Users/hak…

protect_from_forgeryが何をやっているのか調べた

Rails3でCSRF対策としてApplicationControllerにデフォルト指定されるprotect_from_forgeryですが、実際のところ何をやっているのかわからなかったのでコードリーディングしてみたメモ。 環境 Mac OS X 10.8.2 ruby-1.9.3-p125 rails-3.2.9 処理の流れ 0. Ap…

capistrano-unicornでハマった

capistrano-unicornはその名の通りcapistranoでunicornを扱う便利なgemです。 早速Railsのサービスに導入してみた。試した環境は ruby-1.9.3p194 rails-3.2.9 capistrano-2.13.5 capistrano-unicorn-0.1.6 githubの使い方を参考にGemfileに下記を追加してbun…

EC2にMonitをセットアップする

Monitとは指定したプロセスを監視して落ちていた場合に再起動を行なってくれるデーモンプロセスです。 DaemontoolsとSuperVisordと比べると設定が一番シンプルな気がします。 yumからインストール $ sudo yum install monit # 確認 $ yum list installed | g…

検索条件をWHEREで指定する場合とJOIN ONで指定する場合の違い

mysqlにおいてWHEREとJOIN ONで条件を指定した場合の違いがよくわかっていなかったのでまとめておく。映画を表すmoviesテーブルと映画の日毎の再生回数を表すplaycountsテーブルがあるとする。 moviesテーブル +----+------------+ | id | title | +----+---…

rakeで引数を受け取る

demo.rake desc "task to receive args" task :demo, :arg1, :arg2 task :demo => :environment do |t, args| puts args[:arg1] puts args[:arg2] end 実行例 rake "demo[aaa,bbb]" もうちょっと普通に引数を渡したいものです。

railsでnamespaceの中にあるModelのObserverの設定方法メモ

RAILS_ROOT/app/model/page/count.rb class Page::Count < ActiveRecord::Base end RAILS_ROOT/app/model/page/count_observer.rb class Page::CountObserver < ActiveRecord::Observer def after_save(model) logger.info "Saved!" end end RAILS_ROOT/conf…

Rails3で1つのアプリケーション内に複数ドメインのサービスを提供させる方法

PCとモバイルでドメインを別にしてサービスを提供することもあると思う。 その場合アプリケーションを別にしてもいいのだがモデルを共有したい場合もある。 そういう時はconfig/routes.rbでconstraints指定をしてrequestされたhost名でコントローラを出し分…

Action Mailerでエクセルを添付する方法

環境 rails 3.2.8 ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.4.0] actionmailer 3.2.8 rails3のaction mailerでメールを送る際にエクセルを添付したいケースがあると思う。 Rails Guideにならって書くとこうなる。 # -*- coding: utf-8 …

turbo-sprockets-rails3を試してみた

Rails3といえばasset pipeline。 賛否両論ありますが僕はそのコンセプトが好きです。 ただ欠点があってCPUの性能が低いマシン(EC2 smallインスタンスなど)ではasset precompileがくそ遅い。 仕事で運用しているあるサイトでは大体150秒くらいかかってしまっ…

httpステータスコードをチェックしてからXML解析

c xml

前回の記事で使ったlibxml2はhttpレスポンスヘッダのステータスコードの取得ができない。 まずCURLでhttpのヘッダ情報と本文を取得して、ヘッダのチェックをしてステータスコードが200なら本文をlibxml2に渡してパースするようにした。 yahoo!掲示板のRSSのi…

C言語のlibxml2を使ってwebAPIのXMLを解析

c xml

apacheモジュール内でwebAPIを呼んでXMLを解析する必要があるため、C/C++で利用できるXMLパーサを調べてみた。Cだと expat libxml2 C++だと tinyXml Xerces などなど他にもさまざまなライブラリがあるようだが今回はlibxml2を使ってパースしてみる事とした。…

telnetを使ってみる

とりあえずtelnetでhttpリクエストしてみる。 ヘッダ情報を取得する $ telnet www.yahoo.co.jp 80 Trying 124.83.139.192... Connected to www.yahoo.co.jp. Escape character is '^]'. HEAD / HTTP/1.1 Host: www.yahoo.co.jp HTTP/1.1 200 OK Date: Fri, 0…

w3mをfirefoxぽく使う

firefoxで利用しているキーバインドとemacs-w3mキーバインドを合わせてみた。alt-tで新規タブ作成 ctl-tabで次のタブに切り替えをできるようにした。 .emacs-w3m (setq browse-url-browser-function 'w3m-browse-url) (global-set-key "\C-xm" 'browse-url-a…

phpの連想配列

php

perlのhashにforeach()でアクセスする場合、格納した順番は保持されない。 でもphpの連想配列にforeachでアクセスする場合は格納した順番でアクセスされるみたいだ。これはとても重要なことだと思う。 初めてのPHP5 のp56に載っていた。web検索のクエリを投…

php-modeのコメント行シンタックスがおかしい

emacsのphp-mode-1.5だとコメント行にある >func() >var 等がコメントとして認識されずに色付きで表示されてしまうのが気持ち悪い。たとえばdoxgenとかでありがちな以下のようなコメント行だと色が付いてしまう。 /** * 検索 * * 検索して結果を返す * * exa…

初めてのperl

初めてのPerl作者: ランダル・L.シュワルツ,トムフェニックス,Randal L. Schwartz,Tom Phoenix,近藤嘉雪出版社/メーカー: オライリージャパン発売日: 2003/05メディア: 単行本購入: 14人 クリック: 420回この商品を含むブログ (293件) を見る 3年前にぱらぱ…

emacs上でリージョンを選択して実行する

PERL HACKSを立ち読みしてたら発見。 これも必須だな。 (defun perl-eval (beg end) "Run selected region as Perl code" (interactive "r") (save-excursion (shell-command-on-region beg end "perl")) )

perl開発に便利なemacs設定

perlを本気で勉強しようと思い、emacsを使った便利な設定をwebからリストアップしてみた。 perltidy インデント整形ツール。 選択したリージョンを一気に整形してくれるので、昔誰かが作ったインデントなしのプログラム等を一気に整形してくれる。 (defun pe…

pcl-cvsモードで色設定をする方法

cvsのある環境では emacs + pcl-cvs or vc-modeを使うのが普通だと思います。というかコマンドラインでcvsやsvnにcommitやdiffするのはあほらしいです。 僕はどちらかというとvc-modeよりpcl-cvsのほうが好きでvc-modeはほとんど使っていません。(というか使…

||=演算子

最近初めてのperlを読みながらperlについて勉強しています。 =演算子の意味がよくわからなかったけどこういう事らしい。 以下の2つは同じ。 $port ||= 8000; $port = $port || 8000; つまり$portが真でないならデフォルト値で8000が代入されるありがちな処理…

zsh最強シェル入門

zsh最強シェル入門作者: 中島能和出版社/メーカー: 翔泳社発売日: 2008/12/04メディア: 単行本(ソフトカバー)購入: 7人 クリック: 163回この商品を含むブログ (50件) を見るを読んだ。 その名の通りzshの入門書であって、決して「zsh Cookbook」ではないな…

XMLからスキーマ生成

素のXMLファイルからxsdやDTDといったXMLスキーマを自動で生成するツールが欲しかったのでwebで調べてみた。 フリーで今でもメンテナンスされていそうなのはTrangというツールしか見つけられなかった。 日本語訳されたページ使い方はシンプルで以下のような…

置換に改行を入れる方法

Query-replace等で置換する時に改行を入れたい場合、普通にC-jやC-mやreturnを打っても決定になってしまう。 こういう場合はC-q C-jで改行を入れることができる。置換前 void func() { void func() { void func() { void func() {query-replaceを行う M-x qu…

分割ブラウザ

firefoxにFox Splitter (旧称:Split Browser / 分割ブラウザ) :: Add-ons for Firefoxという拡張があると会社のエース級エンジニアに教えてもらった。その名の通りブラウザを分割できる拡張です。 その人は設定がめんどいとかで使っていないらしいが自分…

関数ポインタ

c c++

関数ポインタを触ってなかったら完全に忘れてしまっていたのでメモ。以下サンプルコードの3行目で引数がint, char*で戻り値がint型の関数ポインタの別名を定義している。 main関数の1行目でFuncを宣言してprint()やprintHello()のポインタとして使うことがで…

log4cppの調査

c++

会社でlog4cppというC++のロギングライブラリを利用しているためmacで調査がてら使ってみた。log4cppはlog4jというjavaのライブラリのC++版らしく詳しく解説されたページがある。 Log4J�O�������`�ڎ� 設定ファイルを読み込んでログ出力をハンドリングできる…

shell-toggleがいい

emacs上で使えるshell環境は shell eshell shell-command などなど色々あるんだけど、表示がおかしかったりとしっくりくるものがなかなかなかったんだけど、 ansi-termというのを発見した。これはすごい。なにがすごいってemacsの中で普通にzsh,bashが動く。…

タイピング

プログラムを書くためにはコンピュータにタイピングをしなければならない。 これ、念力とかでタイピングしたい。自分のタイピングスピードは相当速いと自負しているけど、スピードなんて何の意味もないと思っている。 最近はコードを書きすぎて小指が痛い、…

emacs-w3mでローカルのhtmlファイルを表示する

仕事でhtmlを生成するperlプログラムを書いています、perlは大好きなんだけどなかなか触る機会がありませんでした。 サーバで開発している場合、生成したhtmlをterminal上のemacsからブラウザチェックできたら便利だなーと思っていたらやっぱあった。Meadow/…

boost_regexの正規表現

c++

C++で正規表現を使う必要が出てきたのでboost::regex_merge()に関して調べている。 なんでregex_replace()じゃなくて"duplicated"なregex_merge()なのか? 開発環境のboostのバージョンが1.30.2なんだからしょうがないのです。1.30.xはもうドキュメントにも…

emacsのインデントに空白を使う

emacsのオートインデントなんてスペースでもタブでもどっちでもいいと思ってたけどCVSにアップした時に字崩れするのでスペースで統一することにした。.emacsに以下を追加すればOKぽい。 ;; オートインデントでスペースを使う (setq-default indent-tabs-mode…

値渡しにconstを付ける?付けない?

c++

最近会社でプロジェクトメンバーにソースコードレビューしてもらう習慣ができました。 自分のソースコードをリーダー・後輩にレビューしてもらったんですが自分のコードを晒す事と人のコードを読む事に勝る勉強はない。それで今回は一つの指摘点にスポットを…

たのしいCocoaプログラミング 【leopard対応版】

iPhoneアプリの開発でもしてみようという事で、基本の基本Cocoaアプリケーション開発を知るために読んでみた。読んでみればわかると思うけど図の挿入が多くて文字が少なくて直感的にわかりやすい。 僕みたいに読書が苦手な人でもあっという間に読めてしまう…

Firefoxの検索バーから英単語検索

英単語の意味を調べたいときに僕は英語・語学の学習情報サイト「スペースアルク」:アルクを使うんだけど 毎回アルクのページを開いてフォーカス合わせるのが面倒くさくなってきたので 検索バーから検索する事にした。 僕はできるかぎりマウスを使いたくない…

OS移行で忘れてた事

leopardへのクリーンインストールはほぼ思い通りにいったんだけど、 微妙に忘れてて設定し直した部分のメモ。 tigerにバンドルされてたアプリケーションのインストール クリーンインストールでmacOSを入れた場合、tigerバンドルのアプリケーション が存在し…

OS移行メモ

tiger -> leopardへのクリーンインストールを行うため、 とりあえずtime capsuleにバックアップしておくか、後で入れ直すもの をまとめる。 外部HDDなどがマウントされる場所 /Volumes/デバイス名/ App http://osx.iusethis.com/iconbonanza/hakutoitoi それ…

.zshrc 20080426

export PATH=/opt/local/bin:/opt/local/sbin:$PATH export DISPLAY=:0.0 zstyle ':completion:*:sudo:*' command-path /usr/local/sbin /usr/local/bin \ /usr/sbin /usr/bin /sbin /bin /usr/X11R6/bin zstyle ':completion:*:default' list-colors ${(s.:…