株式会社クリアコード > ククログ

ククログ

«前月 最新 翌月»
タグ:

groonga関連リリース週間

今週は全文検索エンジンgroongaとその関連ソフトウェアがいろいろリリースされました。

リリースされたソフトウェア

以下がリリースされたソフトウェアとそのバージョンです。

groonga 1.2.0
全文検索エンジン。一部非互換があるためマイナーバージョンがあがっています。詳細はgroonga-dev MLでのアナウンスを参照してください。
groonga storage engine 0.5.0
ストレージエンジンとしてgroongaを利用するMySQLのプラグイン。まだベータ版です。このリリースにはMySQL 5.5への対応強化などが含まれています。
rroonga 1.2.0
groongaをRubyから使えるようにするためのRubyの拡張ライブラリ。groonga 1.2.0対応だけではなく、新機能もあります。詳細はgroonga-dev MLでのアナウンスを参照してください。
ActiveGroonga 1.0.4
Rails 3でrroongaを利用するためのRubyライブラリ。Rails 3用のページネーションライブラリKaminari(のViewの部分のみ)に対応しています。これも詳細はgroonga-dev MLでのアナウンスを参照してください。
ActiveGroonga Fabrication 1.0.0 [NEW!]

オブジェクト生成ライブラリFabricationにActiveGroongaサポートを追加するライブラリ。gemでインストールできます。

% sudo gem install activegroonga-fabrication

使うための準備はこれだけです。

1
require 'active_groonga_fabrication'

後は、通常のFabricationの使い方と同じです。

まとめ

今週リリースされたgroonga関連のソフトウェアを紹介しました。

そういえば、先日、groongaを使ったアプリケーションであるるりまサーチで受賞した第3回フクオカRuby大賞のコミュニティ特別賞の賞状が届きました。

第3回フクオカRuby大賞のコミュニティ特別賞の賞状

つづき: 2011-12-26
タグ: Ruby
2011-04-01

Debian GNU/Linuxで一部のデータだけ簡単に暗号化する方法

Debian GNU/LinuxやUbuntuなど最近のLinuxディストリビューションではインストール時にディスクの内容を暗号化する設定をすることができます。インストーラのメニューで選択するだけなので、簡単に設定できます。

しかし、groongaの開発に参加していて、頻繁な単体テストの実行でデータベースを作成・削除を繰り返すなどキャッシュが効かないディスクI/Oが多い使い方をする場合は、暗号化による速度劣化を体感してしまいます。Linux上で開発をしている場合はよくあることですよね。

この場合、「一部だけ暗号化しない」または「一部だけ暗号化する」というように記憶領域を使い分ければ、安全性を高めながら開発効率を落とさずにすみます。しかし、インストール後に使い分けたくなった場合、追加のディスクがないと「一部だけ暗号化しない」使い方をすることはできません*1

そこで、ここではディスクを追加しないで「一部だけ暗号化する」簡単な方法を紹介します。インターネット上には日本語の情報があまり見つからない*2のですが、これは需要がないからという気もします。が、気にせずに続けます。

概要

loopデバイスを使うとディスク上のファイルをディスクのように扱えます。これを利用して、暗号化していないディスク上にイメージファイルを作成し、それをloopデバイスで追加のディスクのように扱えるようにして、そこに暗号化ファイルシステムを作成します。暗号化したいファイルはイメージファイル内に保存し、暗号化しなくてもよいファイルはいつも通りの場所に保存します。

これで追加のディスクなしに「一部だけ暗号化する」ことができます。簡単ですね。

初期設定

まず、cryptsetupをインストールします。

% sudo aptitude -V -r -D install -y cryptsetup

暗号化したいファイルを保存する領域として利用するイメージファイルを作成します。保存したいデータサイズを考えて作成してください。以下は20GBのイメージファイルを~/encrypted.imgに作成する例です。countの値でサイズを調整してください。

% dd if=/dev/zero of=$HOME/encrypted.img bs=1M count=20480

イメージファイルができたらloopデバイスに関連付けます。

% sudo /sbin/losetup /dev/loop0 ~/encrypted.img

これでデバイスファイルのように扱うことができるようになったので、イメージファイルを暗号化のために初期化します。初期化をすると内部のデータが壊れるので、確認のためのプロンプトがでます。今回は新しく作成したイメージで中には大事なものは何もないので大文字で「YES」と入力してください。

% sudo /sbin/cryptsetup luksFormat /dev/loop0

WARNING!
========
This will overwrite data on /dev/loop0 irrevocably.

Are you sure? (Type uppercase yes): (YESと入力)
Enter LUKS passphrase: (パスフレーズを入力)
Verify passphrase: (確認のため同じパスフレーズをもう一度入力)

暗号化のための初期化が完了したら暗号化して読み書きできるデバイスファイルを作成します。

% sudo /sbin/cryptsetup luksOpen /dev/loop0 encrypted
Enter passphrase for /dev/loop0: (初期化時に設定したパスフレーズを入力)

これで、/dev/mapper/encryptedというデバイスファイルができます。このデバイスファイル経由で読み書きすれば暗号化されるので、今後はこのデバイスファイルに対して操作します。

まず、デバイスファイルをフォーマットします。

% sudo /sbin/mkfs -t ext4 /dev/mapper/encrypted

mountし、読み書きできることを確認します。

% sudo mount -t ext4 /dev/mapper/encrypted /mnt
% ls /mnt
lost+found
% echo test | sudo tee /mnt/file
% cat /mnt/file
test

これで初期設定は完了です。後始末をしましょう。

% sudo umount /mnt
% sudo cryptsetup luksClose encrypted
% sudo losetup -d /dev/loop0

umountして暗号化デバイスを閉じてloopデバイスの関連付けを削除しています。

運用

実際に使うときは必要になったときに、以下の手順を行います。

  1. loopデバイスをイメージファイルに関連付ける
  2. loopデバイスに暗号化して読み書きするデバイスを作る
  3. 暗号化して読み書きするデバイスをmountする

用が済んだら逆順に後片付けをします。

しかし、これでは面倒なので、シェルスクリプトを作ります。

mount-encrypted.sh:

1
2
3
4
5
6
#!/bin/sh

sudo mkdir -p /mnt/encrypted
sudo /sbin/losetup /dev/loop0 ~/encrypted.img
sudo /sbin/cryptsetup luksOpen /dev/loop0 encrypted
sudo mount -t ext4 /dev/mapper/encrypted /mnt/encrypted

umount-encrypted.sh:

1
2
3
4
5
#!/bin/sh

sudo umount /mnt/encrypted
sudo /sbin/cryptsetup luksClose encrypted
sudo /sbin/losetup -d /dev/loop0

以下のように使います。

% mount-encrypted.sh
Enter passphrase for /dev/loop0: (パスフレーズを入力)
% (/mnt/encrypted以下を使う)
% umount-encrypted.sh

実際は以下のように/mnt/encrypted/以下に1つディレクトリを作り、そこを一般ユーザ権限で読み書きできるようにし、そこに対して一般ユーザで読み書きするようにすると便利でしょう。

% sudo mkdir -p /mnt/encrypted/$USER
% sudo chown -R $USER:$(id -g -n) /mnt/encrypted/$USER
% echo test > /mnt/encrypted/$USER/file
% cat /mnt/encrypted/$USER/file
test

さらに、メールボックスなど暗号化したいファイルは暗号化イメージにmvして、ホームディレクトリからはシンボリックを張ると暗号化以前と同じように使えます。

% mv ~/Mail/ /mnt/encrypted/user/
% ln -fs /mnt/encrypted/user/Mail/ ./

まとめ

Debian GNU/Linuxで、通常の暗号化されていないディスク上に追加のディスクなしで暗号化した領域を作成する方法を紹介しました。データを暗号化した領域に置いておくとディスクを盗まれたときなどに簡単にデータを読み出すことができなくなり、万が一のときの安全性が高まります。

しかし、ログインして利用しているときは同じマシンにログインしているユーザからは見えてしまう可能性があります*3。暗号化しただけで安心しないで、大事なデータは適切に扱うようにする必要があります。

*1 既存のパーティションのサイズを小さくして新しくディスク領域を作ったりすれば追加のディスクがなくてもできます。

*2 2011/4/6時点では2件くらい見つかる。

*3 これはディスク全体を暗号化していても同じ。

2011-04-06

検索エンジンはなぜ見つけるのか

1ヶ月ほど前になりますが、検索エンジンについての本が出版されました。GoogleなどのWeb検索システムからAmazonなどのショッピングサイトまで、今では検索システムはなくてはならないものになりました。そんな検索システムのベースとなる考えや知識などを把握したい場合に向いているのがこの本です。検索システムを作ろうとしている人には読んで欲しい一冊です。

検索エンジンはなぜ見つけるのか
森大二郎
日経BP社
¥ 2,592

「この本を読めば独自の検索エンジンを作れるようになる!」といった類の本ではなく、「検索エンジンの基本がわかる!」という類の本です。そのため、「この検索エンジンをもっとカリカリにチューニングして性能をあげたい!」というときに読む本ではありません。そうではなく、「検索エンジンについてまとまった知識がないので、基本をしっかりおさえたい!」という用途向きです。

内容

著者は全文検索エンジンgroongaのメイン開発者の森さんですが、groongaなど特定の検索エンジンに依存した内容ではなく、検索システム全体の基本について書かれています。つまり、検索エンジンだけではなく、クローラーについても、利用者の入力から質問の意図を汲み取ることについても、検索システムに必要な機能は網羅的に扱っています。

もちろん、一番ボリュームがあるのは検索エンジンの部分で、様々なアルゴリズムが登場します。アルゴリズムの登場の仕方が段階的なので読み進めやすくなっています。「○○という問題があります。」→「△△でこれを解決できます。」→「次は●●という問題があります。」→「▲▲でこれを解決できます。」といった具合です。

プログラムで実装するためにアルゴリズムを説明する場合は細かいことまで説明した方が便利です。しかし、この本ではアルゴリズムの重要なアイディアだけを抜き出して図も使いながら説明しているため、アルゴリズムのコンセプトを理解しやすくなっています。注釈に参考文献が載っているのも嬉しいところです。もっと詳しく知りたいときは参考文献の方をあたることができます。

まとめ

検索エンジンについてのオススメの本を紹介しました。

検索はこれからもっと重要に、そして便利になっていくでしょう。例えば、kdmsnrさんが若い頃はかわいかったことを検索することがもっと重要に、そして便利にできるようになるかもしれませんね。

つづき: 2011-12-26
タグ: Groonga
2011-04-17

milter managerとは?

先日milter manager 1.6.9をリリースしたので、久しぶりにmilter managerについて紹介します。

特長

milter managerはサーバーサイドの迷惑メール対策システムをできるだけ簡単に構築するためのフリーソフトウェアです。その秘密は強力な設定記述力にあります。

多くのソフトウェアはパラメーターを変更することでプログラムの動作をカスタマイズすることができます。milter managerにはRubyという本格的なプログラミング言語のインタプリタが内蔵されていて、単にパラメーターを変更するだけではなく、システムにインストールされている迷惑メール対策プラグインを自動検出する(設定の自動化)、怪しい送信元は迷惑メールチェックを強化するが認証済みユーザは緩くする、といったこともできてしまいます。しかも、多くの便利な設定は組み込みで含まれているため、そのまま使うだけでも自動でシステムに合わせて効果的な設定になってくれます。

もちろん、導入・運用を簡単にしたいという場合は、外部のメールシステムやアプライアンス製品の利用も十分選択肢に入るはずです。この場合は費用対効果やメールシステムを外部に出してもよいか、どこまでカスタマイズする必要があるか、などが判断基準になることでしょう。milter managerにはユーザ向けメーリングリストもあるので、検討段階などで疑問点などがあった場合はそこで質問してみてください。

まとめ

久しぶりにmilter managerについて紹介しました。

最近のmilter managerはパフォーマンス改善もおこなっており、個人サーバーから大規模なメールシステムまでいろいろな環境で効率的に動かせるようになっています。機会があったらmilter managerの利用を検討してみてはいかがでしょうか。

以下は参考情報です。

2011-04-27

«前月 最新 翌月»
2008|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|
タグ:
RubyKaigi 2015 sponsor RubyKaigi 2015 speaker RubyKaigi 2015 committer RubyKaigi 2014 official-sponsor RubyKaigi 2014 speaker RubyKaigi 2014 committer RubyKaigi 2013 OfficialSponsor RubyKaigi 2013 Speaker RubyKaigi 2013 Committer SapporoRubyKaigi 2012 OfficialSponsor SapporoRubyKaigi 2012 Speaker RubyKaigi2010 Sponsor RubyKaigi2010 Speaker RubyKaigi2010 Committer badge_speaker.gif RubyKaigi2010 Sponsor RubyKaigi2010 Speaker RubyKaigi2010 Committer
SapporoRubyKaigi02Sponsor
SapporoRubyKaigi02Speaker
RubyKaigi2009Sponsor
RubyKaigi2009Speaker
RubyKaigi2008Speaker