akishin999の日記

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

Vim で全角空白入力時に半角空白に置き換える

Vim

職場の人から「Vim で全角空白を入力した場合に、自動的に半角空白に置き換えたい」という話を聞いて、確かに便利そうだと思って調べてみました。 通常であれば inoremap とか使えば良さそうなんですが、どうやら全角空白には効かない模様。 " 普通の全角記…

Redis の仮想メモリはどうなったのか

一時期 Redis の特徴として良く挙げられていたものに、搭載している物理メモリ量以上のデータを扱える Virtual Memory という機能がありました。仮想メモリ技術仕様 ― redis 2.0.3 documentation http://redis.shibu.jp/hacker/virtualmemory.html個人的には…

Munin で Redis のリソース監視

Munin で Redis のリソースをモニタリングするためのプラグインをいくつか試してみたんですが、個人的には以下のものが気に入りました。bpineau/redis-munin · GitHub https://github.com/bpineau/redis-munin気に入った理由としては シェルスクリプト製なの…

ab コマンドで VirtualHost をテストする

Apache の ab コマンド(Apache Bench) ってリクエストヘッダ指定できたんですね。 これで Host ヘッダ送ってやると、DNS や /etc/hosts を設定してなくても VirtualHost に対して負荷テストをかけることができます。 $ ab -H 'Host: akishin.example.com' -n…

redis-rb で ConsistentHashing の仮想ノード数を指定する

redis-rb では Sharding のアルゴリズムとしてコンシステント・ハッシュ法が使われています。 コンシステント・ハッシュ法でサーバごとのキーの偏りを減らす為の仮想ノードという仕組みがあるのですが、redis-rb を使う場合に仮想ノードの数をどうやって指定…

Redis でダウンタイム無しの再起動

Apache でいうところの「graceful restart」的な機能が Redis には無いのかを調べてみたのですが、どうやらそういった機能そのものは無いようでした。 では Redis の場合はサービスを無停止でバージョンアップなどを行い、プロセスを再起動するにはどうした…

Redis で Sharding してみた

Redis の Sharding は現状クライアントサイド、つまりライブラリ依存で実現されています。 ここでは Ruby と Java のライブラリで実際に Sharding を試してみました。 redis-rb redis/redis-rb · GitHub https://github.com/redis/redis-rbRuby から Redis …

Redis 2.6 の RPM を作成する

ちょっと使う必要があったので、Redis の最新版の RPM を作成してみました。環境は CentOS 6.3 です。まずは RPM の作成に必要な rpmbuild、rpmdevtools をインストールします。 # yum install -y rpm-build rpmdevtools 次に RPM 作成用のユーザを作成して …

Ubuntu に rbenv で Ruby 1.8.6 系をインストールしようとしたらハマった

タイトル通りですが、ちょっと古いコードの検証環境が欲しかったので、開発環境として使用している Ubuntu に rbenv で Ruby の 1.8.6 系をインストールしようとしたところ、予想外にハマって時間を取られたのでまとめておきます。環境は Ubuntu 12.10(32bit…

elasticsearch で clustering を試してみる

elasticsearch だと簡単に clustering が出来るということなので、実際に試してみました。 環境は CentOS 6.3、elasticsearch 0.20.5 です。まずはダウンロードして展開します。 # wget https://download.elasticsearch.org/elasticsearch/elasticsearch/ela…

elasticsearch での Kuromoji の使い方

前回インストールした elasticsearch で日本語形態素解析器 Kuromoji を使ってみます。 環境は CentOS 6.3、elasticsearch 0.20.5 です。elasticsearch はプラグインで機能を拡張できるようです。 利用可能なプラグインは公式サイトの以下のページにまとめら…

CentOS に elasticsearch を入れてみた

elasticsearch は Apache Solr と同じく Apache Lucene を使用した全文検索エンジンです。 REST ベースの API を備え、curl コマンドだけで操作できるなどの使いやすさが特徴とのことです。 詳しくは こちら や こちら の資料を読んでみてください。今回は C…

tmux + tmuxinator + rbenv の環境で RBENV_VERSION が勝手に設定されてしまう件

tmux + tmuxinator + rbenv の環境で rbenv local を設定しても指定した Ruby が使われない、という現象が発生。 調べてみると環境変数 RBENV_VERSION が設定されているため、rbenv がそちらを見てしまう事が原因のようでした。しかし RBENV_VERSION を設定…

Ruby 2.0 で Passenger を動かしてみた

Ruby 2.0.0-p0 がリリースされましたね。 ということで、早速インストールして Passenger で Rails の簡単なサンプルアプリを動かすところまでやってみました。環境は CentOS 6.3 x86_64 です。 準備 まずは必要なパッケージをインストールします。 README …

64bit 版 CentOS での CheckInstall 導入方法

このところ CheckInstall の挙動についていろいろと調べていました。 検証に際して使用していた 64bit 版 CentOS での導入方法を整理しておきます。確認した環境は CentOS 5.9 x86_64 ですが、CentOS 6 系でもほぼ同じ方法でいけると思います。また、事前に …

restful-authentication から sorcery に乗り換える

今更といえば今更なのですが、Rails 2.x で作ったアプリケーションを Rails 3.2 に移行しました。ただ、該当アプリケーションでは認証プラグインとして restful-authentication を採用していたため、そのままでは 3.2 で動かす事はできません。 単純に Devis…

Linux サーバでの「Too many open files」対策について

Linux サーバでの「Too many open files」エラー対策について調べたのでまとめてみました。 確認した OS は CentOS 5.9 と CentOS 6.3 です。「Too many open files」は Linux でプロセスが開けるファイルディスクリプタの上限に達してしまうと発生するエラ…

iptables で他のサーバとの通信を禁止する

作業ミスの予防として手元の開発環境から本番環境の MySQL への接続を禁止したくなったのですが、他で使っていたりするのでサーバ側でポートを閉じたりは出来そうにありません。ということで、取りあえずクライアント側で iptables を使って本番サーバの特定…

Gistub をインストールしてみた

このところ「インストールしてみた」的な事ばかり書いていて、あまり深く突っ込んでない感じがなんだか情けないと自分でも思いますが、懲りずに今回もインストールしてみた系です。今回は こちら の記事で紹介されていた、Rails 製のオープンソースの Gist …

CentOS 6.3 に MySQL 5.6 をインストールしてみた

MySQLのインストール方法が進化していた! - sakaikの日々雑感〜(T)編 http://d.hatena.ne.jp/sakaik/20130205/mysql5_6_installこちらの記事を読んだら使ってみたくなったので、 MySQL 5.6 を CentOS 6.3(x86_64) にインストールしてみました。 手順もほぼ…

Pivotal Tracker クローン「Fulcrum」をインストールしてみる

オープンソースの Rails製 Pivotal Tracker クローン「Fulcrum」をインストールしてみました。 インストールした環境は以下です。 CentOS 6.3 64bit Ruby 1.9.3p327 MySQL 5.1.66 fulcrum のセットアップ まずは必要なライブラリをインストール。 # yum inst…

CentOS 5.9 の Apache を 2.2.23 にアップデート

CentOS を 5.9 へアップグレードしたので、ついでに Apache も 2.2 系最新バージョンである 2.2.23 にアップデートした際のメモです。最初は自前で RPM を作成しようと思っていたのですが、いざ始めてみると libuuid-devel 辺りの依存関係の解決が結構面倒く…

rails-dev-box を使ってみる

Rails 本体の開発環境(Ubuntu)をコマンド一発で作成できる rails-dev-box を使ってみました。rails/rails-dev-box GitHub https://github.com/rails/rails-dev-boxRails 本体用開発環境のようですが、普通に Rails アプリケーションの開発にも便利に使えそう…

Git リポジトリを GitLab へ移行した

自宅の LAN 内に GitLab サーバを立てたので、古い git リポジトリとかを移行しました。 またそのうちやるかも知れないので備忘録としてメモしておきます。 移行先リポジトリの作成 まずは GitLab 上に移行先となるリポジトリを作成しておきます。 リモート…

CentOS 5.3 を 5.9 へアップグレード

自宅サーバの CentOS 5.3 を 5.9 へアップグレードした際のメモです。 CentOS 5.9 はまだ QA テスト中との事ですが、サーバといっても Subversion と Git のリポジトリを置いてあるくらいなので気軽に試してみました。5.7 あたりから ReleaseNotes にアップ…

1.8 の $LOAD_PATH でうっかりハマる

今日 1.8 系を触っていて、うっかり 1.9 との $LOAD_PATH の仕様の違いで小一時間ハマってしまいました。 1.8 系では $LOAD_PATH に自動でカレントディレクトリが含まれているんでしたね・・・。具体的には以下のようなライブラリの検証コードをいくつか書い…

Ruby のヒアドキュメントのあまり見かけない使い方

最近知った Ruby のヒアドキュメントのあまり見かけない(?)機能をいくつか備忘録としてまとめてみました。 メソッドの引数に渡せる 以下のようにしてヒアドキュメントをメソッドの引数にそのまま渡せます。 def here_method(arg1, arg2, arg3) puts arg1 …

Ubuntu 12.10 へ mroonga をインストールする

Tritonn の後継で MySQL 5.1 以降で日本語全文検索を可能にする mroonga を Ubuntu 12.10 にインストールした際のメモです。 MySQL 5.5 のインストール まずは MySQL 本体をインストールします。 ここでは apt から以下をインストールしました。 % sudo apt-…

tmux + tmuxinator が便利

最近ローカルの開発環境を Ubuntu 12.10 に上げていろいろ弄っていたのですが、遅ればせながらやっと導入してみた tmux + tmuxinator がかなり便利だったのでご紹介。tmux は GNU screen などと同様のターミナルマルチプレクサと呼ばれるソフトウェアです。 …

rbenv のインストール用シェルスクリプト

環境構築の度に毎回 rbenv を入れるのが面倒だったので、簡単なインストールスクリプトを書いてみました。 こんな感じで実行すると ~/.rbenv ディレクトリ以下に rbenv + ruby-build + rbenv-gemset がインストールされます。 % wget https://raw.github.com…