2010-01-01から1年間の記事一覧

MySQL Casual Talks #1 発表資料

MySQL Casual Talks #1 の発表資料を UP しました。MySQL 初めてのチューニングView more presentations from Craft works.資料の中でも言及しました、hirose さんが作成された mymemcheck という素晴らしいツールを !includedir に対応して Readonly.pm 依…

Nginx で Elastic Load Balancing などの Proxy の内側で正しい IP アドレスを取得する

EC2 だと ELB の内側では、nginx のアクセスログに ELB の IP アドレスが記載されてしまうので、HttpRealIpModule を使って Apache の mod_rpaf、lighttpd の mod_extforward と同じような挙動を設定します。configure オプションに --with-http_realip_modu…

warning メッセージ予防策

普段、wanrning を見つけるたびにせっせと defined 挟んだりして対応しているのですが、View の中で呼ばれてる箇所など、うっかり気付かないで数日過ぎてしまうと、あとで該当箇所を追うのが若干手間になってしまったりします。そこで、 use warnings FATAL …

Macbook Air 11'' を Ubuntu 10.10 とデュアルブートにしたまとめ

あまり日本語情報も無いようなので、メモ書き程度に紹介しておきます。新型 Macbook Air 11'' に Ubuntu 10.10 サーバー版 64bit をインストールしました。Boot Camp は使っていません。大まかな流れは、 OSX で rEFIt の導入とパーティション割り当ての調整…

Test::mysql で起動したインスタンスに mysql クライアントで接続するとテストがさらに快適に

昨日書いたエントリ、Test::mysqld を別ウィンドウで立ち上げたら開発時の prove が快適過ぎる件ですが、prove とか make test がコケたりしたときに、実際に DB の中身がどうなってるか見れた方がデバッグが捗りますよね。加えて、どうせなら使い慣れた mys…

ハッシュのキーとバリューを入れ替える方法

[追記] reverse() を使う方法の方が速くて簡潔でお勧めです! id:tomi-ru++あまり必要になるケースは無いと思いますが Tips です。 use strict; use warnings; use Test::More; my %a = ( foo => 1, bar => 2, baz => 3, ); my %b; @b{ values %a } = keys %…

Test::mysqld を別ウィンドウで立ち上げたら開発時の prove が快適過ぎる件

id:xaicron 氏が紹介なされていました make test で Test::mysqld を永続化させる方法 を早速導入していたのですが、make test は速くなって便利なのですが、prove で 1 つずつテストをするときは、相変わらず mysqld を毎回、起動・終了するので時間がかか…

Ubuntu に含まれている MySQL 及び InnoDB Plugin のバージョン

Ubuntu の apt で入る MySQL のバージョン Ubuntu 9.04 mysql-server 5.1.30 Ubuntu 10.04.1 LTS mysql-server 5.1.41 InnoDB Plugin 1.0.5 (RC) と、いうことで InnoDB Plugin を使いたかったら Ubuntu 9.04 では MySQL 公式サイトからパッケージを持ってく…

vim の SQL のシンタックスハイライトを MySQL 専用のものに変更する方法

id:tokuhirom 氏の use mysql syntax を読んで、これは良いと思い、早速自分の環境に適用しました。件の設定をどこに書くかですが、:help new-filetype (日本語訳)にどこに書くべきか何通りか紹介されています。自分は、C. ファイル形式が名前だけで検出で…

WWW::Curl で使えるオプション一覧

WWW::Curl は速いですがドキュメントが少ないのが玉に瑕です。perldoc に setopt() や getinfo() で指定できるオプション一覧が載っていないです。実は PHP のマニュアルに良い感じで載っています。setopt() に指定できるオプション一覧 getinfo() に指定で…

YouTube で閲覧中動画の短縮 URL を表示するブックマークレット

Chrome 拡張もあるのですが、短縮 URL 取得のためだけに拡張増やすのもメモリが勿体無いのでブックマークレットを作りました。動作確認 Chrome 7.0 です。ブックマークレットからは document.execcommand('Copy') でクリップボードを操作出来ない(Chrome 拡…

YAPC::Asia Tokyo 2010 に行ってきました

今年も Perl の国際的カンファレンス YAPC::Asia に行ってきました。 YAPC に行くと 毎年感じることですが、YAPC に行って色々なトークセッションを回ると、他(社|者)の実際の運用や開発の現場レベルでのノウハウを聴くことができるので、この二日間で自分ひ…

YAPC::Asia Tokyo 2010 のタイムテーブルを手軽に PC/iPhone で見る方法

今年の YAPC::Asia もタイムテーブルはパンフレットをあてにしていたのですが、載っていなかったので慌てて用意しました。公式サイトに iCal が用意されているので、これを Google Calendar にインポートします。左下の「他のカレンダー」の「追加▼」のプル…

Ubuntu 10.04 LTS の MySQL で InnoDB Plugin を有効にしようとしたらハマったメモ

Ubuntu 10.04 LTS の MySQL は 5.1.41 なので、InnoDB Plugin をソースからインストールしなくてもそのまま使えますが、セットアップしていて少しつまづいたのでメモです。/etc/mysql/my.cnf に ignore-builtin-innodb plugin-load=innodb=ha_innodb_plugin.…

EC2 のロードバランサーの内側の lighttpd で本来のアクセス元 IP アドレスを取得する方法

Amazon EC2 のロードバランサーのオプションの Elastic Load Balancing は便利なのですが、これを経由すると内側の lighttpd のアクセスログにはアクセス元 IP アドレスは 10.204.xx.xx などと、全てロードバランサーの IP アドレスになってしまいます。これ…

「Google JavaScript Style Guide」の文法チェックツール + vim で JavaScript の開発を2倍楽にする方法

Google が先日 JavaScript のコーディングスタイルガイド Google JavaScript Style Guide (邦訳) を発表しましたが、今度はその文法に沿ってチェックをしてくれる Lint ツール Closure Linter を公開したようです。(via. 「Google JavaScript Style Guide」…

iPhone の Mobile Safari で JSON を(エン|デ)コードする

JavaScript でデータを扱っていると、JSON でシリアライズなどしたくなりますが、Safari 4.04 や FireFox 3.6.8 では、JSON.stringify() や、JSON.parse() が使えますが、iOS 3.1.2 の Mobile Safari には実装されてません。そこで、ネイティブで JSON が実…

Plack::Test で HTTP クライアントのテストを書く方法

先日、WWW::Curl をラッピングした HTTP クライアントなモジュールを書いたのですが、テスト用に HTTP サーバーを用意しないといけないと思いつつ、他の HTTP クライアントがどのようにテストをしているか調べてみたところ、WWW::Curl は、 my $url = $ENV{C…

EC2 に MySQL (InnoDB Plugin + Q4M) インストールからセットアップまで

インスタンス:m1.small 対象 OS:Ubuntu 9.04apt で入る MySQL は 5.1.31 とちょっと古いので、MySQL 公式で配布しているバイナリを利用しました。備忘録です。 前準備 ユーザー作成 UID/GID などは Ubuntu 9.04 の MySQL パッケージのトリガースクリプトが…

Server::Starter + Starman で HUP 再起動が上手くいかないことがある

現在、Server::Starter + Starman で運用している環境があるのですが、週に1回ほど古いワーカーが終了しないで残り続けるという現象が起こっています。FCGI 起動の名残りで、毎時間 HUP を投げていたのですが、普段は問題なく starman プロセスが再起動して…

クリエイティブなエンジニアに起業のチャンス

8月3日にサイバーエージェント・インベストメント主催でクリエイター支援のイベントの一つとして、エンジニア向けの無料カンファレンスがあるそうです。 http://www.cai.co.jp/startups2010/技術系の講演は、 えとらぼバタラ氏 ウノウ山田氏 モバツイの藤川…

動的に変わる EC2 のインスタンスの IP アドレスを自動収集するスクリプト書いた

EC2 は便利なのですが、プライベート IP アドレスが変更されない保証が無いので、/etc/hosts に他のインスタンスのアドレスを書いておいても、ある日変わっている可能性があります。そこで、ec2-api-tools の ec2-describe-instances でサーバーインスタンス…

Perl で時刻の文字列を生成する速い方法

DateTime が重くて遅いのは周知ですが、一応どれくらい差が出るかベンチマーク。「2010-07-01 15:10:53」みたいなフォーマットのタイムスタンプ文字列を生成したい場合です。DateTime はオブジェクトをキャッシュして使い回しても相当遅いです。POSIX はコア…

ローディングアイコンを画像の代わりに canvas でアニメーション描画

アニメ GIF だと、背景色に合わせて透過画像を作らないといけないので、canvas でアニメーションしてみました。ソースはこちら http://gist.github.com/380581loading = new LoadingIcon('rgb') したのちに、 loading.start() すると setInterval() でアニメ…

超初心者向け vim チュートリアル

意外と知られていないのですが、vim には、まったくの初心者が、基礎的な一通りのコマンドを数日で完全に覚えることができるチュートリアルプログラムが付属しています。そのプログラムは、vimtutor といい、Ubuntu の場合、vim-runtime パッケージに含まれ…

mysql クライアントの操作性を psql コマンドと同じように良くする方法

mysql コマンドでは、psql や bash のように、Ctrl+W で単語だけ消そうと思っても行が全部消えてしまったり、Ctrl+R でコマンドヒストリ検索できなかったりと、PostgreSQL の psql コマンドに比べると大分不便でイライラするので、操作性を向上させます。mys…

HTML タグをエスケープする方法 3 通りと速度比較

HTML::Entities を使う方法と、正規表現を段階的に使う方法と、変換テーブルを用意して正規表現で置換する方法と、どれが一番速いか気になったので計測してみました。& から順番に変換していく方法が一番速かったです。ベンチマークスクリプトは以下です。 R…