akishin999の日記

調べた事などを書いて行きます。

Monit でお手軽に外部のサーバを監視する

Monit はサーバ内のプロセスやリソースの使用率などを監視する為に使われる事が比較的多いようですが、実は外部の Web サーバに対する URL 監視や Ping 監視などもとても簡単に設定できるため非常に便利です。というわけで、Monit を使用して外部のサーバの…

mail コマンドで from を変更する方法まとめ

シェルスクリプトでメール送信する際などに from を変更したい場合が時々あるのですが、ディストリビューションによってオプションの指定方法が異なっていたりすることが度々・・・。毎回調べるのも面倒なので、この機会にまとめてみました。 mail コマンド…

Ruby の sprintf で名前付きパラメータ

先日会社の後輩に教えて貰ったんですが、Ruby 1.9 から Kernel.#sprintf や String#% が Hash を受け取れるようになっていたんですね。 ずっと知らなかったんですが、便利だと思ったので試してみました。これにより、文字列で SQL での名前付きプレースホル…

Ruby で PDF にフッタを埋め込む

Pdftk を使用して Ruby から PDF にフッタを埋め込む方法を調べてみました。 ちなみに Ruby のバージョンは以下です。 # ruby -v ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux] Pdftk のインストール Pdftk は大抵のディストリビューションで…

Ruby 1.9 の正規表現の名前付きキャプチャ

Ruby 1.9 の正規表現では名前付きキャプチャが使えるそうなので、いまさらですがちょっと試してみました。適当なサンプルを思いつかなかったので、とりあえず Apache の Common Log Format 文字列を分解してみます。 正規表現が若干適当なのは名前付きキャプ…

I18n のバックエンドにデータベースを使用する

Rails 3.2.7 で I18n のバックエンドに RDBMS を使う、というのを試してみました。 i18n-active_record という gem を使うようです。まずはお試し用のプロジェクトを作成します。 RDBMS には MySQL を選択しました。 $ rails new i18n_backend_example -d my…

CentOS 6.2 用に Ruby 1.9.3 p194 の RPM を作成する

CentOS 6.2(x86_64)上で Ruby 1.9.3 p194 の RPM を作成してみました。 当初 checkinstall を使おうと思ったのですが、紆余曲折ハマった挙句、結局上手く行かなかったため、rpmbuild を使いました。 必要なライブラリのインストール # yum groupinstall -y "…

Gitlab で作成したリポジトリでのコミットメール送信とリポジトリのミラーリング

実運用するにあたっては結構重要な push 時のコミットメール送信とバックアップとしてのリポジトリのミラー作成についてまとめてみました。 他に良いやり方があるかもですが、手元では以下のようにして実現しています。 コミットメール送信 まずは gitolite …

CentOS 6.2 に gitolite v3.03、GitLab v2.6.2 をインストールする

前回 試した時から結構バージョンが上がったようなので、gitolite 3.03 & GitLab 2.6.2 をインストールしてみました。2013.08.16 追記 新しいバージョンについて記事を書いています。 こちらも参照してください。 GitLab 5.4.0 を CentOS 6.4 にインストール…

GitLab を Apache2 + Passenger で動かしてみる

前回インストールした GitLab を Apache + Passenger で動作するように設定してみます。 httpd、httpd-devel は既にインストール済みのものとします。2013.08.16 追記 新しいバージョンについて記事を書いています。 こちらも参照してください。 GitLab 5.4.…

CentOS 6.2 に GitLab をインストールする

少し前に GitHub クローンである GitLab を検証していた際の環境構築メモを整理がてらまとめてみました。GITLAB http://gitlabhq.com/現在公式リポジトリでは 2.3.1 が最新のようですが、試した時のバージョンなので 2.2.0 での記事になっています。2013.08.…

CentOS 6.2 用に Apache 2.4.1 の RPM を作成する

CentOS 6.2(i686)用に先日リリースされた Apache 2.4.1 の RPM を作成しインストールしてみました。 事前準備 開発用ツールのインストール。 # yum groupinstall -y "Development Tools" yum リポジトリに EPEL を追加。 # rpm --import http://ftp.riken.jp…

VMware Player 上の CentOS で yum が使えない

VMware Player 上に CentOS 6.2 をインストールしたのですが(ネットワークは NAT)、yum を実行すると以下のようなエラーが発生してしまいました。 # yum update Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from ca…

gitolite のユーザ管理の仕組み

Git

最近になって gitolite を使ってみたのですが、かなり便利ですね。gitolite では OS のユーザを作成せずに、SSH の公開鍵を登録するだけでユーザを追加できる仕組みになっているのですが、これって一体どうやっているのでしょうか。gitolite ユーザの author…

tmail-1.2.7 で Encoding::CompatibilityError

Ruby 1.9.3 で Rails 2.3.12 アプリケーションを動かしてみたところ、iso-2022-jp でメールを送信している箇所で以下のようなエラーが発生しました。 incompatible encoding regexp match (ASCII-8BIT regexp with ISO-2022-JP string) /var/rails_apps/exam…

Ruby 1.9.3 & Passenger 3.0.9 で「Unexpected end-of-file detected」

自宅サーバのRuby を 1.9.3 にアップデートした途端、以下のようなエラーが出るようになりました。アプリケーション側の対応が必要なのかな?とも思ったのですが、Apache の error_log を調べてみるとどうやら Passenger 側の不具合のようです。 ruby 1.9.3p…

Rails3 で acts_as_tritonn

Rails2 + Tritonn の時には結構お世話になっていた acts_as_tritonn を Rails3 で使ってみました。 インストール $ rails new tritonn_example -d mysql $ cd tritonn_example $ rails plugin install git://github.com/ryu00026/acts_as_tritonn.git 使って…

PDF ファイル内の文字列を一括置換する

Adobe Acrobat では PDF ファイル内の文字列を一括置換する方法がないようなので、何か他のツールなどはないかと探していたところ、CAM::PDF という CPAN モジュールに付属の changepagestring.pl というスクリプトで出来そう、という情報を発見。changepage…

インストール済みの mod_jk のバージョンの調べ方

引継ぎなどで面倒を見る事になったサーバで、前任者不在、ソースコードも見当たらない、といった状況は結構あったりします。そんな中で Apache モジュールである mod_jk のバージョンを調べる必要があったので、以下のようにして調べました。 # strings ./mo…

pik を使ってみた

Windows 環境で複数の Ruby 処理系を管理できる pik を使ってみました。 vertiginous's pik at master - GitHub https://github.com/vertiginous/pik インストール インストールは gem から行えます。 また、下記ページにて配布されている msi インストーラ…

Windows の Ruby で native extension を使う

以前 Windows 環境で Cassandra を触った時に書いた RubyInstaller で native extension を使うための Development Kit 導入方法が変わったようなのでメモです。 RubyInstaller のインストール まずは RubyInstaller のインストールからです。 Downloads htt…

HAProxy 環境で MySQL 接続時にエラー

久しぶりに自宅サーバにアクセスしてみたら、DB 接続系のアプリが軒並み 500 エラーになってしまっていました。 慌てて調べますが、Rails アプリのログにも、HAProxy のログにも特に異常は見られません。ためしにコマンドラインから DB への接続を試みると、…

WindowsXP でシンボリックリンク

Windows で開発をしている場合に、本番環境の Linux などと同じようなディレクトリ構成を取るために、シンボリックリンクを貼りたくなる場合があります。 Windows Vista からは、mklink.exe が含まれるようになり、シンボリックリンクが使えるようになりまし…

ScanSnap と裁断機を購入

ついに ScanSnap と裁断機を買ってしまいました。 と言っても実は先月購入したのですが・・・。 この二つを購入して以来、自宅にいる時間は勉強よりも手持ちの400冊程度の書籍の取り込みに追われてしまっている毎日です。 どこでも勉強できるように環境構築…

CGLIB で実行時にクラスにメソッドを追加する

CGLIB を使って実行時に新たにメソッドを追加する方法を調べた時のメモです。 Code Generation Library - Code Generation Library http://cglib.sourceforge.net/ 使用した Jar は以下のバージョンのものです。 cglib-nodep-2.1_3.jar バイトコード拡張なの…

値の入れ替えコードのパフォーマンス

Java Puzzlers のパズル 7 : フリーマーケット(Swap Meat) の解説に、以下のような一時変数を使わず、排他的論理和を使った値のスワップ(入れ替え)を記述する事は Java でも可能だが、素直なコードよりは遅く動作する事が多い、といった記述がありました。 y…

久々に Java Puzzlers を再読中

最近仕事で久々に Java を触っているので、本棚の奥に眠っていた Java Puzzlers をなんとなく読み返してるんですが、やっぱりこの本面白いですね。 public class Change { public static void main(String[] args) { System.out.println(2.00 - 1.10); } } …

Java から SSTable を Export してみる

Cassandra 同梱の「bin/sstable2json」スクリプト内で実行している「org.apache.cassandra.tools.SSTableExport」クラスを Java から直接実行して、Cassandra のデータのダンプを取得してみました。 参照ライブラリ SSTableExport クラスを使用するには、実…

Ruby から Cassandra を使ってみる その4

Ruby の Cassandra ライブラリから、 SuperColumn を使ってみました。 SuperColumn スーパーカラムとは、通常のカラムを値に持つカラムです。 スーパーカラム名がキー、通常のカラムが値のマップのようなイメージのデータ構造で、通常のカラムをグルーピング…

Cassandra と Ruby で簡易掲示板を作ってみる

そろそろ Cassandra で具体的なアプリケーションを作ってみたくなったので、簡単な掲示板を作成してみました。作成環境は以下のようになります。 ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mingw32] Rails 2.3.5 データモデル まずはアプリケーションか…