読者です 読者をやめる 読者になる 読者になる

Amazon CloudSearch のドメインから全ドキュメントを削除する

CloudSearch の検証中にドメイン内の全ドキュメントを削除したくなったのだが、

Troubleshooting Amazon CloudSearch - Amazon CloudSearch

Deleting All Documents in an Amazon CloudSearch Domain

Amazon CloudSearch currently does not provide a mechanism for deleting all of the documents in a domain.

とのことで、いまのところ公式ではその手段が提供されていない。 新しいドメインを作りなおすといちいち待ち時間が発生するのでうまくない。

Amazon CloudSearch 用 deleteByQuery を書きました。 - よしだのブログ を参考にしてもよかったが、Python には不慣れなのと、ちょっと大仰な気がしてうまくやれる方法がないか考えてみた。

$ rm -f delete.json && rm -f tmp.json && aws cloudsearchdomain search --endpoint-url https://<Search Endpoint> --query-parser lucene --search-query "*:*" --size 5000 | jq '.hits.hit[].id' | while read i;do echo -n {\"type\": \"delete\", \"id\": ${i}}, >> tmp.json ;done; sed 's/\(.*\),/[\1]/' tmp.json > delete.json

上記で、削除用のバッチファイルを作成し(Preparing Your Data for Amazon CloudSearch - Amazon CloudSearch)、

$ aws cloudsearchdomain --endpoint-url https://<Document Endpoint> upload-documents --content-type application/json --documents delete.json

AWS CLI でデータの更新ができる(http://docs.aws.amazon.com/cloudsearch/latest/developerguide/uploading-data.html#uploading-data-clt)。

Amazon Linux を使っていれば追加でインストールするのは jq のみなので、こっちのほうが準備は簡単かな?

2015年9月25日追記

aws cloudsearchdomain search の size オプションは10,000 が上限のようだ。
それ以上のドキュメントが入ってる場合にはちょっと考えないといけない。

ChatWork adapter for Ruboty を作った

github.com

Idobata のアダプタ を参考にしています。

ChatWork のAPI はルーム内の発言を取るのに毎回HTTP リクエストが発生するのでなんか微妙……。

Ruby とかよく分からないので、プルリクをお待ちしております。

Ubuntu 14.04 LTS に Fluentd をインストールする

2014年7月4日時点で公式の deb パッケージが用意されていないので自前で。

rbenv とかは使っていない。なるべく楽に。

先に下記のとおり設定を確認、変更。
Before Installing Fluentd | Fluentd

下記のパッケージをインストール。

$ sudo apt-get install ruby2.0 ruby2.0-dev build-essential

Ruby2.0系をデフォルトに変更。

$ sudo update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9.1 0
$ sudo update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby2.0 1
$ sudo update-alternatives --config ruby

Gemも。

$ sudo update-alternatives --install /usr/bin/gem gem /usr/bin/gem1.9.1 0
$ sudo update-alternatives --install /usr/bin/gem gem /usr/bin/gem2.0 1
$ sudo update-alternatives --config gem

irbも(2014/07/29追記)。

$ sudo update-alternatives --install /usr/bin/irb irb /usr/bin/irb 0
$ sudo update-alternatives --install /usr/bin/irb irb /usr/bin/irb2.0 1
$ sudo update-alternatives --config irb


rbenv で入れよう。
Twitter / mhag: 結論 Ubuntu 14.04 ...
Twitter / mhag: @yoshi_ken 以前に ...
Twitter / mhag: @yoshi_ken rbenv から 2.1.2 ...

有名事案だったらしい
Google グループ

oh...
Twitter / tagomoris: 今日も ruby 2.0.0-p353 ...

最後にFluentd のインストール。
Installing Fluentd Using Ruby Gem | Fluentd

$ sudo gem install fluentd --no-ri --no-rdoc

動作確認。

$ fluentd --setup ./fluent
$ fluentd -c ./fluent/fluent.conf -vv &
$ echo '{"json":"message"}' | fluent-cat debug.test

お疲れ様でした。

CentOS 6.3(64bit) にmod_mruby をインストール

11月1日時点で

# git clone git://github.com/matsumoto-r/mod_mruby.git
# cd mod_ruby
# make

すると

/usr/bin/ld: ./vendors/mrblib/mrblib.o: relocation R_X86_64_32 against `mrblib_irep' can not be used when making a shared object; recompile with -fPIC
./vendors/mrblib/mrblib.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
apxs:Error: Command failed with rc=65536
.
make: *** [mod_mruby.so] エラー 1

でmake に失敗するので

diff --git a/Makefile b/Makefile
index 5855d2b..702ddab 100644
--- a/Makefile
+++ b/Makefile
@@ -52,7 +52,7 @@ tmp/mruby:
        cd tmp; git clone git://github.com/mruby/mruby.git

 libmruby.a: tmp/mruby
-       cd tmp/mruby && make
+       cd tmp/mruby && make CFLAGS="-O3 -fPIC"
        cp -r tmp/mruby/include vendors/
        cp -r tmp/mruby/lib vendors/
        cp -r tmp/mruby/src vendors/

こんな感じで修正した。

JavaScript でオブジェクトのクローンを生成(ディープコピー)

jQuery を使っていると超シンプル。

// Shallow copy
var newObject = jQuery.extend({}, oldObject);

// Deep copy
var newObject = jQuery.extend(true, {}, oldObject);


What is the most efficient way to clone a JavaScript object? - Stack Overflow


ちなみに jQuery.extend については jQuery.extend マニアックス - てっく煮ブログ が詳しい。

pecl_http を Mac OS X Leopard のApache で使うために大切なこと

PEARPECL のインストールは適当にぐぐればおk。
PHP 5.2 以上の場合には go-pear.phar を使うことに注意。


sudo pecl install pecl_http のあとに
php.ini の extension_dir と extension を編集。


php -m することでモジュールの読み込みを確認できるが、
Apache httpd の再起動時にエラーログが吐かれる。

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20060613/http.so' - (null) in Unknown on line 0


10.5: Install tips for PHP's pecl_http on 64-bit Intel Macs - Mac OS X Hints
に書かれているとおり /System/Library/LaunchDaemons/org.apache.httpd.plist を修正することで
Apache は32bit モードで起動され、pecl_http をロードできるようになる。

さくらVPS と Linode を比較する

さくらインターネットの田中邦裕様が 格安の低価格VPSを比較する - さくらインターネット創業日記 というエントリを書かれていたので、
(さくらVPS への移行を検討していたのにうっかり継続契約してしまった)Linode との比較をしてみる。

プラン名さくらのVPSLinode
5121G1.5G4G8G51276810241536204840968GB
初期費用(円)02,9804,9809,98019,980$0$0$0$0$0$0$0
月額(円)9801,4801,9803,9807,980$19.95$29.95$39.95$59.95$79.95$159.95$319.95
年払い割引1か月分割引10% discount(2年契約で15% discount)
試用期間2週間記載なし
メモリ容量512MB1GB1.5GB4GB8GB512MB768MB1GB1.5GB2GB4GB8GB
HDD容量20GB30GB50GB120GB240GB16GB24GB32GB48GB64GB128GB256GB
SWAP設定
リモート
コンソール
固定IPv4
v6××
追加IP×
月額$1.00
IP逆引き
仮想化プラットフォームKVM完全仮想化Xen完全仮想化
OSCentOS
Debian
Ubuntu
Fedora
FreeBSD×
現在のキャンペーン

その他試用期間中は2Mbps制限
試用期間中はOP25Bあり
プランごとに転送量の上限あり
メモリ、HDD、転送量の上限は料金を支払うことで「個別に」追加、増設可能

Linode では最大でメモリ20GB までのプランを用意しているが、さくらVPS にあわせた形とする。

プラン名さくらのVPSLinode
5121G1.5G4G8G51276810241536204840968GB
年間の利用額(円)10,78019,26026,76053,760107,760$215.46$323.46$431.46$647.46$863.46$1727.46$3455.46
メモリ1MBあたり(円)21.018.817.413.113.2$0.42$0.42$0.42$0.42$0.42$0.42$0.42
HDD 1GBあたり(円)539.0642.0535.2448.0449.0$13.46$13.47$13.48$13.48$13.49$13.49$13.49

見て分かるとおり、上位プランを使ってもメモリやHDD の単価はほぼ変わらない。
ライトユーザからすると安心して下位プランを選択できるが、上位プランを選ぶ人は……。


また、私の契約している512 プランで unixbench を行ったところ、スコアは1223.8だった。
※ スコアに大きな影響は与えていないと思うが、いくつかのサービスが稼動している。
さくらVPS(980)は1200〜1500 なので、ほぼ同じくらいということにしておこう。


コストパフォーマンスではさくらVPS、 柔軟なカスタマイズや8GB を超えるメモリが必要ならばLinode と言ったところだろうか。
※ 単純なマシンスペック以外の付加サービスについては、さくらVPS 側を調べていないので比較していない点に注意。
http://twitter.com/#!/kunihirotanaka/status/42367374313271296 とのご質問をいただいたので
さくらVPS についても簡単ではあるが調査を行って比較した。
# 5分探してなかった機能、サービスは×としているので、誤っている場合はご指摘いただきたい。


プラン名さくらのVPSLinode
HDD, メモリの増設×
リサイズ(運用開始後のプラン移行)×
ネームサーバ
(別途契約)
ディスククローン×
IP フェイルオーバー×
バックアップサービス×
(有償)

その他、Linode では Linode - Cloud Servers といった機能やサービスを利用できる。
# ネームサーバはドメイン取得代行業者から無償で提供されていることが多いので特に困らないが、一応。


表だけで比較すると、さくらVPSェ……となってしまうかもしれないが、
ターゲットとするユーザ層や、価格が違うので仕方ないという面もある(さくらVPS は格安が売りなのだ)。
# ディスククローンやIP フェイルオーバーを必要とするユーザが果たしてどれだけいるだろうか。
# 高可用性を求められる小中規模の商用利用ならばLinode のほうがよいのかもしれない。
ただし、柔軟なスペックの変更やバックアップサービス(専用サーバにはある)は
間違いなくユーザの利便性の向上につながるので、ぜひご検討いただきたい。


また、Linode は海外にデータセンタがある点などについても留意しなければならない。
この点については、 のFAQ や、
2ch を参考にしていただきたい。


さて、そもそも私がLinode を利用し始めた理由は、当時の日本には海外と比較して
まともなVPS を提供する企業がなかったためである。
が、私のようなライトユーザにとっては、さくらVPS は十分に検討対象となり得るし、
欲しい機能があればTwitter を使って社長に直接意見を言うことで「やりましょう!」と
なるかもしれない。
今後のさくらVPS のさらなる機能の拡張、サービスの展開に期待したい。





最後にこっそりと、referral code とreferral URL を載せておく。
code : 4375366bd5f28af0004c7e7d82f5607cd7df1993
URL : http://www.linode.com/?r=4375366bd5f28af0004c7e7d82f5607cd7df1993