Web関係

低価格VPS比較 ~ OVH VPS SSD1プランを試す

2016/10/11

このブログやお遊びWebサービスは、メモリ2GBぐらいのプランを1台契約して突っ込んでいたのですが、コストが年間1万円オーバーなので、節約のために格安のServersman@VPS Entryプラン(メモリ1GB)に移行してみました。しかし、データベースをごりごり使うアプリを動かすと、やはりメモリ1GBでは厳しいことが分かりました。そこでスペックと安さを両立させるために、国内にこだわらず、海外の格安VPSを契約してみました。

ベンチマークを交えて、これまで使っていたVPSについて比較・考察したいと思います。

Read more…

一つのカラムに貼られた複数のFULLTEXT INDEXを使い分ける

2015/7/26

Mroongaでお手軽全文検索して遊んでいたんですが、前方一致を使う場合は

Qiita: mroongaでgroongaの前方一致検索を使うには

にあるように、パーサーを無効にしないと期待した結果が得られません。

一つのカラムに対して、普通に全文検索する場合と前方一致検索を使い分けたい場合には、上記記事のように2つカラム用意してそれぞれにパーサーを使ったFULLTEXT INDEXと、無効にしたFULLTEXT INDEXを貼らなきゃいけないのでしょうか。
ちょっと無駄な感じがしましてどうにかできないかな~と。

そこで思いついたのが、USE INDEXとかで明示的にインデックスを指定してやったらどうなるのでしょうか。
そんでリファレンスを見てみると・・・

MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.2.9.3 インデックスヒントの構文

「自然言語モードの検索の場合、インデックスヒントは暗黙のうちに無視されます。」
を読んで、ダメか~と思ったのですが、
「ブールモードの検索の場合、FOR ORDER BY または FOR GROUP BY を含むインデックスヒントは暗黙のうちに無視されます。FOR JOIN を含むインデックスヒント、または FOR 修飾子を含まないインデックスヒントは受け付けられます。」
ということらしいのでIN BOOLEAN MODEであれば、FOR {ORDER|GROUP} BYを除き、使えるっぽいですね。

ということで試してみましょう。

サンプルとして使うスキーマとデータは以下の通り。

CREATE TABLE test (
  id int(11) NOT NULL AUTO_INCREMENT,
  content varchar(255) NOT NULL COLLATE 'utf8_unicode_ci',
  PRIMARY KEY (id),
  FULLTEXT INDEX idx_content (content),
  FULLTEXT INDEX idx_content_off (content) COMMENT 'parser "off"'
) ENGINE=mroonga COMMENT = 'engine "InnoDB"' DEFAULT CHARSET=utf8;
INSERT INTO test (content) VALUES ('とらっく');
INSERT INTO test (content) VALUES ('とらっくばっく');
INSERT INTO test (content) VALUES ('東京都');
INSERT INTO test (content) VALUES ('京都');

まずはインデックスを指定せず前方一致検索をしてみます。

SELECT * FROM `test` WHERE MATCH(content) AGAINST('とらっく*' IN BOOLEAN MODE)

検索結果は空でした。EXPLAINしてみると、使用されたのはidx_contentが使われていたので、正しい結果です。

お次はUSE INDEXでパーサを無効にしたidx_content_offを指定してみます。

SELECT * FROM `test` USE INDEX (idx_content_off) WHERE MATCH(content) AGAINST('とらっく*' IN BOOLEAN MODE)

すると、以下のような結果が得られました。
idx_content_offが使用され、意図した前方一致検索が行われているようです。

|2|とらっくばっく
|1|とらっく

ということで、USE INDEXを使うことで、異なるパーサを用いたFULLTEXT INDEXを使い分けすることができますね。

FuelPHP MigrationでMroongaのラッパーモードを利用する

2015/6/11

FuelPHPのマイグレーションでMroongaのラッパーモードを利用したテーブルを作成する方法です。
備忘録として書いておきます。

Mroongaのラッパーモードを利用するには、テーブルオプションを ENGINE = Mroonga COMMENT = 'engine "InnoDB"' のように指定する必要があります。

DBUtil::create_table メソッドの第5引数 $engineでストレージエンジンの指定は可能なのですが、コメントの指定をどうしようかと悩んでいました。
create_tableメソッドのソースを読んでみると、$engineはエスケープなども行われずにそのまま文字列結合しているようなので、COMMENTも一緒にぶち込むことにしました。
見た目は良くないですが、Coreを拡張するのも面倒なので…

class Create_test
{
	public function up()
	{
		\DBUtil::create_table('test', array(
			'id' => array('constraint' => 11, 'type' => 'int', 'auto_increment' => true, 'unsigned' => true),
			'content' => array('constraint' => 255, 'type' => 'varchar'),
		), array('id'), false, "Mroonga COMMENT  = 'engine \"InnoDB\"'", 'utf8mb4_general_ci');

		\DBUtil::create_index('test', 'content', 'idx_content', 'fulltext');

	}

	public function down()
	{
		\DBUtil::drop_table('test');
	}
}

他に良い方法があれば是非教えてくださいー

Z210 Intel Management Engine アップデート & Intel AMTを使う

2015/5/7

サブPC交代と開発用サーバーとして、HP Z210を2台ほど調達してきました。
購入したZ210のCPUはSandy Bridge世代のXeon E3-1225ですが、大抵の用途には十分な性能ですね。

HP Workstationの中古はそこそこの性能のものがお手頃価格で入手できるので、以前からお世話になっています。
筐体はしっかりした作りですし、メンテナンスしやすく工夫がされています。
タワー型であれば拡張性も十分ですし、下手に自作するよりかなり安くて済むのでオススメです。

さてさて、今回はせっかくIntel vPro対応しているのでIntel AMTでリモート管理してみようというお話です。
忘備録として書いておきます。


HP Support Center: Intel Management Engine Firmware Update and Utilities (sp71010)
Version: 7.1.86.1221 Rev.A(25 Mar 2015)

まずはIntel MEの更新が公開されていたのでアップデート。
WindowsまたはDOS環境でアップデートできるツールが同梱されている。
当方はLinuxをインストールしているので、USBメモリからDOS起動してアップデートすることに。

maruko2 Note. : DOS 起動 USB メモリの作成

上記のツールを利用すると便利。UEFIも対応。
DOS起動用USBメモリを作成したら、HPからダウンロードしたアップデータに含まれる以下のファイルをルートにコピーしておく。

sp71010/ME Flash/71861221.BIN
sp71010/ME Flash/Local-DOS/FWUpdLcl.exe

そしたら、USBメモリをZ210に挿入して起動時にF9キーでブートメニューに入れるので、USBメモリを選択してDOSを起動する。
ちなみに、私は何をやってもブートメニューに表示されず、USBメモリからブートできないという問題が発生し、だいぶ時間を無駄にした。
以下のForumの情報を参考にして、結果としてBIOSをデフォルトにリセットしたら直った。

HP Support Forums: Z210 Workstation will not boot from USB

ブートしたら、以下のコマンドを実行して、しばらくすれば完了するはず。

FWUpdLcl.exe -F 71861221.bin

Intel ME設定で「Local FW Update」を「Password Protected」に設定している場合は、「-PASS<PASSWORD>」とオプションを付ける必要がある。

本題のIntel AMTの設定やらツールは以下のサイトを参考に。

ZIGSOW: 究極のリモートデスクトップ&PC管理が可能です
tuedaの日記: [TS130] TS130をいじってみた
徒労日記: DQ67EPのIntel AMTでWindowsHomeServer2011をリモートする

Mozilla Open Web Day in Tokyo でうちわを扇いできたよ!

2014/10/22

10/5に「Mozilla Open Web Day in Tokyo」が開催されました。
昨年は同時期にMozilla Festival in Tokyoというイベントで行われましが、今回の会場が3331 Arts Chiyodaという閉校した学校を改造した施設で、まるで文化祭のような雰囲気でした。

全体としては様々なジャンルで出展がありましたが、IoTやWoTに関するもの、ハードウェア系が多かったようにも思います。

Mozilla Open Web Day
今回はKDDIの重大発表があるとのことで、そちら方面でも賑わっていたようです。
社長のビデオレターによる発表で、Firefox OS端末が年内、クリスマスプレゼントに間に合うように発表するとのことでした。
ビデオ内では濃いモザイクで全く分かりませんでしたが、ネジ一本から作り上げ、パフォーマンスも十分改善されるとのこと。

Ustream: http://www.ustream.tv/recorded/53589728
発表スライド: http://www.mozilla.jp/static/docs/events/2014-open-web-day/slides/3.pdf


うちわ over Internet

さて、私はというと、その傍らでうちわを扇いでいただいておりました(笑)

というのは半分冗談で、「うちわ over Internet」と題した作品を出展していました。
IoTの形の一つとして、うちわ×インターネットを実現したものです。(むしろこの場合はWoTかな?)
機能としては、インターネット越しにうちわを扇げる/扇いでもらえる、というものです。 Read more…