tatox

apacheでVirtualHost追加時のoverlapエラー

apacheでVirtualHostの設定を追加し、configtestを実行したら以下のエラー(warn)が出ました。

# apachectl configtest
[warn] _default_ VirtualHost overlap on port 80, the first has precedence

調べてみると、NameVirtualHostの設定が必要だそう。
以下がコメントアウトされていたら、コメントアウトを外してconfigtestを実行してみてください。

NameVirtualHost *:80

以上です。

東京にある種子島関連の居酒屋

東京で種子島料理を出す居酒屋を探してみました。 by ふらっとグルメーズ

種子島(十条駅)

十条駅から徒歩2,3分のところにある種子島。種子島料理、焼酎を味わえるお店。
種子島出身のご夫婦が暖かく迎えてくれます。

季節や在庫によって食べれる料理が変わってきますが、
トビウオやゆで落花生(らっかしょう)、さつま揚げ、刺身、安納芋などなど食べられます。

種子島焼酎の定番「甘露」も飲めます。

住所 東京都北区上十条1-20-2
営業時間 ?~23:00
定休日 不定休

居酒屋島(目黒駅)

目黒駅すぐ近くにある居酒屋島。
種子島の焼酎が飲めるようです。同じビルに種子島ショップもあるようなのですが、夜に行ったので閉まっていてどんな感じかはわかりませんでした。。

住所 東京都品川区上大崎2-25-5 久米ビル B1F
営業時間 17:00~23:00
定休日 日曜、年末年始

MacでEclipseの便利なショートカット一覧

よく使うmacのEclipseの便利なショートカットをめもめも。

Open Resource

ファイル名で検索することが出来ます。

command + shift + r

Undo

1つ前の状態に戻します。

command + z

Redo

1つ先の状態に進みます。

command + shift + z

Open Declaration

関数、変数が定義されている所へジャンプすることが出来ます。

fn + F3

Backward History

1つ前の箇所に戻ることが出来ます。

command + [

または

command + option(alt) + ←

Forward History

1つ前の箇所に進むことが出来ます。

command + ]

または

command + option(alt) + →

【PHP】マルチバイト文字をバイト数で切り出し文字化け対応

phpでマルチバイト文字列をバイト数で切り出す場合は、mb_strcut()を使用する。
substr()だと文字化けすることがある。
「あ」が3byteだとすると、1byte目や2byte目までで切り出した場合に文字化けする。

文字化けするパターン

例)文字コードutf8の場合

$a = 'aaあああ';
var_dump(mb_strcut($a, 0, 3)); //出力内容:aa
var_dump(mb_strcut($a, 0, 4)); //出力内容:aa
var_dump(mb_strcut($a, 0, 5)); //出力内容:aaあ

$a = 'aaあああ';
var_dump(substr($a, 0, 3)); //出力内容:aa�
var_dump(substr($a, 0, 4)); //出力内容:aa��
var_dump(substr($a, 0, 5)); //出力内容:aaあ

mb_strcutについて

(PHP 4 >= 4.0.6, PHP 5)
mb_strcut — 文字列の一部を得る

string mb_strcut ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )

パラメータ
str
取り出しの対象となる文字列。
start
start が非負である場合に返される文字列は、 string の start バイト目以降の文字列となります (ゼロから数えます)。 たとえば、文字列 ‘abcdef’ の 0 バイト目は ‘a’ で、 2 バイト目は ‘c’ のようになります。

start が負の数の場合に返される文字列は、 string の後ろから数えて start バイト目以降となります。

length
バイト単位での長さ。 省略したり NULL を指定したりした場合は、 文字列の最後までの全バイトを取り出します。
encoding
encoding パラメータには文字エンコーディングを指定します。省略した場合は、 内部文字エンコーディングを使用します。
返り値
mb_strcut() は、 start および length パラメータで指定した str の一部を返します。

postgresql.confの場所とアクセス(編集)方法

postgresql.confの場所とアクセス(編集)方法について
postgreSQLのバージョンが9.4でサーバーはlinuxです。

postgresql.confの場所

デフォルトで
/var/lib/pgsql/9.4/data
配下にあります。

postgresql.confへアクセス(編集)

pgsqlフォルダ配下にアクセスするにはpostgresユーザでログインします。
その後、viコマンドで編集。

$ su - postgres
$ vi /var/lib/pgsql/9.4/data/postgresql.conf

設定変更後に反映するにはリロードもしくは再起動が必要です。
postgresql.confに「change requires restart」と記述されている設定は再起動が必要です。

リロード、再起動コマンド

$ sudo systemctl reload postgresql-9.4
$ sudo systemctl restart postgresql-9.4

pgbench使用方法

pgbenchとは

postgresqlのベンチマークツールで、postgresqlのパフォーマンスを計測できます。
postgresqlをチューニングする際に、とても役に立ちます。

使用方法

以下、コマンドラインで作業

1.postgresqlをインストール

こではバージョン9.4をインストールしました。
インストール情報はこちら
※postgresql9.4ではpgbenchが既にインストールされている状態ですので、個別でインストールする必要はありません。

2.postgresqlのスーパユーザアカウントでログイン

$ su - postgres

3.sqlを使用できるツールpsqlを起動

$ psql -U postgres

4.テスト用のデータベースを作成

ここでは「test」という名称のDBを作成しました。CREATE DATABASEと表示されればOKです。

postgres=# create database test;
CREATE DATABASE

5.psqlを¥qで終了する

$ ¥q

6.以下コマンドを実行し、ベンチマークデータを初期化する

$ pgbench -i test

実行履歴

NOTICE:  table "pgbench_history" does not exist, skipping
NOTICE:  table "pgbench_tellers" does not exist, skipping
NOTICE:  table "pgbench_accounts" does not exist, skipping
NOTICE:  table "pgbench_branches" does not exist, skipping
creating tables...
100000 of 100000 tuples (100%) done (elapsed 0.64 s, remaining 0.00 s).
vacuum...
set primary keys...
done.

んっ、失敗・・・?
もう一回同じコマンドを実行

実行履歴

creating tables...
100000 of 100000 tuples (100%) done (elapsed 0.70 s, remaining 0.00 s).
vacuum...
set primary keys...
done.

成功したぽい
ひとまず次へ進んでみよう・・・

7.以下コマンドでベンチマーク実行

pgbench -c 2 -t 100 test

実行結果

starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 1
query mode: simple
number of clients: 2
number of threads: 1
number of transactions per client: 100
number of transactions actually processed: 200/200
latency average: 0.000 ms
tps = 187.624829 (including connections establishing)
tps = 199.760088 (excluding connections establishing)

実行できました。
初期化を2回実行しましたが、1回目の初期化で成功してたみたいでした。

コマンドの説明
「-c 2」:同時に2本の接続
「-t 100」:各接続で100本のトランザクションを実行
「test」:データベースの指定

実行結果
「number of transactions actually processed: 200/200」:2本の接続×100本のトランザクション=200回中、200回正常に実行できたことを示しています。
「tps = 187.624829 (including connections establishing)」:1秒間に実行できたトランザクション数(PostgreSQLへの接続含む)
「tps = 199.760088 (excluding connections establishing)」:1秒間に実行できたトランザクション数(PostgreSQLへの接続含まない)
※tpsは数値が高いほど性能が良いです。

pgbenchがデフォルトで実行する1トランザクションのSQLは以下です。

a.pgbench_accountsを1件更新
b.pgbench_accountsから1件検索
c.pgbench_tellersを1件更新
d.pgbench_branchesを1件更新
e.pgbench_historyに1件行を追加

以下オプションを付けることでデフォルトの実行SQLを制御できます。
「-N」
cとdを除いたSQLを実行します。
pgbench -c 2 -t 100 -N test

「-S」
更新処理を除いたSQLを実行します。
pgbench -c 2 -t 100 -S test

次回は、pgbenchで計測しながら実際にチューニングを行っていきたいと思います。

【種子島】ふらっと2泊3日プラン in 観光・飯・飲み

『ふらっとプランナーズ』プランニングの東京ー種子島ふらっと2泊3日旅。
+α 前夜祭がありつつのw

スケジュール

2016/10/13
22:00 新橋で前夜祭(飲み)
2016/10/14
01:20 東京駅から深夜バスで成田空港へ
02:25 成田空港 第3ターミナル着
成田空港 第3ターミナルのフードコートでグータラ
07:20 成田空港発
09:15 鹿児島空港着
鹿児島市をふらっと
13:00 天文館付近で昼飯
15:30 電車でフェリー乗り場付近まで移動
16:30 タクシーでフェリー乗り場まで移動
17:00 フェリー乗り場着
18:00 フェリー乗り場発
21:40 種子島着
22:00 珊瑚礁(宿)に到着
22:10 五右衛門風呂を堪能
23:00 ふじ十でラーメン
23:40 スナック センチュリー
2016/10/15
02:00 Bar センチュリー3
03:00 珊瑚礁(宿)へ帰還
就寝
08:30 珊瑚礁(宿)で朝食
11:00 レンタカー借りる
11:30 お土産屋偵察
12:30 鉄砲館
14:30 門倉岬
15:30 種子島宇宙センター
17:30 マングローブ地帯
18:00 サンシード(スーパー)
19:00 珊瑚礁(宿)で夕食
20:30 珊瑚礁(宿)で岩風呂堪能
22:30 pure
2016/10/16
00:30 ラグジュ
01:30 スナック センチュリー
03:00 珊瑚礁(宿)へ帰還
就寝
08:30 珊瑚礁(宿)で朝食
10:30 レンタカー返却
お土産購入
15:00 種子島発(Toppy)
16:55 鹿児島着(Toppy乗り場)
鹿児島中央駅へ移動
17:30 バスで鹿児島空港へ
20:10 鹿児島空港発
22:00 成田空港着&解散

前夜祭

続きを読む

phpのstr_replace文字化けについて

phpの関数「str_replace」
検索文字列に一致したすべての文字列を置換する関数です。

str_replaceマニュアル

スペースを置換しようと思ってstr_replaceを使って置換してたのですが、なんと文字化けするパターンがありました。
「ァ」などの全角小文字があると置換した際に文字化けしてしまいます。
原因と対処法をメモ。

原因

str_replaceはマルチバイト対応していない模様
「ァ」があるとコードにした際に、途中で違う文字と判定されるため

対処法

str_replaceではなく、mb_ereg_replaceを使用する
mb_ereg_replaceはマルチバイト対応関数

mb_ereg_replaceマニュアル

日本語が含まれる文字列を変換する際は、気をつけましょう!

【鹿児島】種子島のスナック&バー|現地調査編

20161013 in種子島_7742.jpg

『ふらっとスナックーズ』による種子島のスナック現地調査!!
事前調査ではあまり見つけられませんでしたが、楽しめるスナック&バーがありました。
大丈夫です、夜の街、楽しめます!w

今回は西之表市メインです。
若い子がいるスナックは、センチュリー2とpure。
基本的に店の人は種子島の人達で、いろいろ島の話を聞けて楽しかったですー。

こちらも参考に → 【鹿児島】種子島のスナック|事前調査編

地図全表示

CENTURY(センチュリー)

西之表市にあるフェリー乗り場から近めのお店、センチュリー。
カウンター5席、テーブル2台くらいのスナック。
3店舗あるうちの1号店。

基本的にはママさん+2人で回してるそう。若い子はいませんが、お客さんとも仲良く飲める楽しいスナックです!
料金は良心的というか、安いです!時間で料金がかかるタイプではないので、長く飲みたい方はぜひ!

住所 鹿児島県西之表市西町 大洋ビル 2F
営業時間 ?〜2:00(ママがいれば、朝までw)
定休日 不定休
tel ?

地図表示・非表示

CENTURY2(センチュリー2)

西之表市にあるフェリー乗り場から近めのお店、センチュリー2。
3店舗あるうちの2号店。

タクシーの運転手とセンチュリー1号店でママさんに聞いたのですが、若い子がいるスナックです。
料金は1時間3000円くらい。結構広めのお店だそうです。

住所 鹿児島県西之表市西町27
営業時間 ?~00:30
定休日 不定休
tel ?

地図表示・非表示

CENTURY3(センチュリー3)

西之表市にあるフェリー乗り場から近めのお店、センチュリー3。
3店舗あるうちの3号店。

3号店はスナックではなく、バー。落ち着いた大人の雰囲気のおしゃれなバーです。
飲み物は、焼酎はもちろん、ウイスキー、カクテルなどあります。カウンター7席くらい、テーブル2台のバー。優しそうなお姉さんが1人で切り盛りしてました。
場所は、センチュリー2の隣。

住所 鹿児島県西之表市西町27
営業時間 ?~03:00
定休日 不定休
tel ?

地図表示・非表示

pure(ピュア)

西之表市にあるフェリー乗り場から近めのお店、pure(ピュア)。
2店舗あるうちの1号店。

店員は若い子がメイン。カウンター7席くらい、テーブル5台くらいのスナック。料金は1時間3000円くらいだったかな。
若い子がいるスナックがいい場合は、ここへ。ワイワイ楽しめます!

住所 鹿児島県西之表市西町32−1F
営業時間 ?~00:00
定休日 不定休
tel ?

地図表示・非表示

ラグジュ

西之表市にあるフェリー乗り場から近めのお店、ラグジュ。
2店舗あるうちの2号店。

1号店と2号店でお店の名前が違いますが、姉妹店です。ラグジュはどちらかというとスナックというよりバーに近い感じです。カラオケがあるバー的な。落ち着いた雰囲気のお店で、ゆったり飲むことも出来ますし、カラオケで盛り上がることも出来ます。

住所 鹿児島県西之表市東町3 3F
営業時間 ?~02:00
定休日 不定休
tel ?

地図表示・非表示

続きを読む