2014年12月11日木曜日

Android Studio 1.0 で既存のプロジェクトをインポートしてみた

Android Studio 1.0で既存のプロジェクトをインポートすると、
ビルドでエラー出まくりなのでメモ。

想定済みのようですでにドキュメントがありましたので、ここを参照しました。

Building Project Gradle

https://github.com/excilys/androidannotations/wiki/Building-Project-Gradle

Migrating Gradle Projects to version 1.0.0

http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0

後の祭りですが、次のところにビルドシステムの変更履歴がまとめられていて、しかも重要な変更は赤文字になっていて, Oh...
http://tools.android.com/tech-docs/new-build-system

build.gradleを修正した

-        classpath 'com.android.tools.build:gradle:0.9.+'
+        classpath 'com.android.tools.build:gradle:1.0.0'

-    tasks.withType(Compile) {
+    tasks.withType(JavaCompile) {
-apply plugin: 'android'
+apply plugin: 'com.android.application'
 
-        androidManifestFile variant.processResources.manifestFile
+        androidManifestFile variant.outputs[0].processResources.manifestFile

-                runProguard true
+                minifyEnabled true

次のようなエラーメッセージが出るので参考まで

Error:The project is using an unsupported version of the Android Gradle plug-in (0.9.2). The recommended version is 1.0.0.
Fix plugin version and re-import project
Gradle DSL method not found: 'runProguard()'
Error:(12, 0) Could not find property 'processResources' on com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@3bec7d05.

あと、インポート直後はプロジェクトのディレクトリが見えなかったけど、
ビルドが成功したら見えるようになった。
そういうものらしい・・・。

2014年8月23日土曜日

rsyncのエラー for Ubuntu 14.04 LTS

安心・信頼のrsyncでちょっとはまったのでメモ。

Ubuntu 14.04からNASにrsyncして次のエラーが発生

rsync: opendir "/media/path/to/dir" failed: Permission denied (13)

sent 59 bytes  received 24 bytes  33.20 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.0]

rsyncのバージョン情報

コマンドでバージョン確認
rsync --version

Ubuntu 14.04 LTS
rsync  version 3.1.0  protocol version 31

NAS
rsync  version 3.0.9  protocol version 30
調べたところ同様の現状が見つかり--protocolオプションをつけて解決できた人もいたようなので、次のオプションを試すも失敗。
rsync --protocol=30
rsync --protocol=26
新しいバージョンがないか調べたところ、バージョン3.1.1を発見。 変更履歴確認したところバグフィックスも多いようなので、3.1.1をビルドして試したところ無事ファイル転送できました。
http://rsync.samba.org/
http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1-NEWS
NG 3.1.0 -> 3.0.9
OK 3.1.1 -> 3.0.9
このエラーは、おそらく転送元のフォーマットがHFS+(OSX)なのが影響してそう。
exFATだったかも・・・忘れた。 ext4上のファイルは問題なく転送できました。

2014年7月11日金曜日

knife soloのプロキシー設定 for CentOS 6.5

knife solo prepareがproxy設定で動作した設定値のメモ 環境変数で動作したので環境依存なのかな。 knife.rbで動作しないのが気になる気になる。
動作したのは次の設定

動作環境

環境 CentOS 6.5
Chef 11.14.0.rc.2-1

実行コマンド

knife solo prepare ホスト名

設定ファイル

/etc/environment

設定値

http_proxy="http://ドメインorIPアドレス:ポート番号"
https_proxy="https://ドメインorIPアドレス:ポート番号"

動作しなかった設定


knife.rb
http_proxy "http://ドメインorIPアドレス:ポート番号"
https_proxy "http://ドメインorIPアドレス:ポート番号"
knife[:bootstrap_proxy]="http://ドメインorIPアドレス:ポート番号"

/etc/profile.d/proxy.shにhttp_proxyの環境変数を設定

ソースは追ってないので、原因はまた時間あるときに。

2014年6月13日金曜日

Haswell Refresh?結局コスパがいいCPUってどれなの?

Haswell Refresh版CPU関連の製品も出そろった感がある今日この頃、
皆様いかがお過ごしでしょうか?

Haswell Refresh搭載のほとんど変化を感じられなかったMacBook Airにがっかりされた方は多いかと思いますが、Core M版出るのか?または全然別の製品になるのか?ARM版とかおもしろいの出ないかな?とかとか、妄想が膨らみます。

また、14nmプロセスのCore Mは、年末出荷開始ようなので、この分野はそれまでは目立った新製品はないかと思っています。

いずれにせよ、お楽しみは秋頃までお預けっぽいので、
今買えるCPUは、コスパ重視のものを選ぶのががよいと思い、
いくつかコスパの良い1万円以下のCPUを中心とした製品をご紹介いたします。

しかし、「コスパ重視」と言っても、
用途によっては全くコスパがよくないので、用途別にご紹介したいと思います。

コスパと言えば省電力


ASRock Intel マザーボード BayTrail-D クワッドコア Celeron J1900 Mini-ITX Q1900B-ITX


参考価格 ¥9,157 (2014/6/13時点のamazonの価格です)

いきなりCPUではないのですが、Celeron J1900オンボードのマザーボードです。
このマザーボードにmini-ITXケース、電源、メモリー、SSDつければ、TDP10Wのファンレス静穏PCがさくっと作れます。CPU性能は高くはないですが、低消費電力なのでつけっぱなしでも電気代にやさしく、しかも4Coreなので自宅サーバなどの用途にはもってこいなのではないでしょうか。
ちなみに低電圧 SO-DIMM以外に通常電圧のSO-DIMMにも対応しているのでノートPCのメモリ余っていたら流用できそうですね。

コスパ重視・・・できればゲームも


仕事も快適に、たまにゲームもプレーしたいという人。
一般的にはゲーマーな方はコスパよりそもそも性能重視なのですが、FF14とか、ドラクエ10とかプレーしたいぞ!というあなたはズバリ、まさかのPentium!!!

Intel CPU Pentium 3.20GHz 3Mキャッシュ LGA1150 BX80646G3420


参考価格 ¥7,442 (2014/6/13時点のamazonの価格です)

まさかのPentiumですが、実はすごいんですよ。
何がすごいかというか、シングルスレッドの性能です。
ゲームを快適にプレーするには、今でもわりとシングルスレッドの性能が重要だったりします。

詳しくはこちらのサイトをみてください。
http://www.cpubenchmark.net/singleThread.html

上記のサイトでのシングルスレッドの性能を比較した場合ですが、
Intel Core i7-4790 3.60GHzは、2,319です。
Intel Pentium G3420 3.20GHzは、1,861です。

ちなみにCore-i7-4790は、参考価格¥32,874 (2014/6/13時点のamazonの価格)です。

価格は「4.4倍」もするCPUなのに、
シングルスレッドの性能差は「1.2倍」程度なんです!!!!


ただし、最近のゲームはグラフィック性能が求められるので、グラフィックボードは別に購入された方がよいです。
こちらもコスパの良い次のボードあたりを積むと快適にゲームがプレーできるのではないかと思います。CPUより高いですが、オンボードのグラフィックとは桁違いの性能です。

玄人志向 ビデオカード R9 270搭載 RD-R9-270-E2GB



参考価格 ¥16,735 (2014/6/13時点のamazonの価格です)


ちなみにPentiumは20周年記念で、コスパ良さげな20周年記念モデルが発売される・・・


G3258(Anniversary Edition 3.20GHz) LGA1150


参考価格 ¥ 8,186 (2014/6/13時点のamazonの価格です)

この20周年記念モデルの特徴としては、オーバークロック可能なので遊べるCPUですね。もしかすると大当たりが含まれているのかな?当たりならコスパいい?

4.5GHzで安定動作した場合に、「より上位のCore i3シリーズがすべて不要になってしまうのでは」という声もあるそうです。
http://www.gdm.or.jp/crew/2014/0605/73070

OC魂に火がつく人にオススメです。

コスパ重視・・・だけどPentiumはいや!せめてCore-iがいい!?


という、ブランド指向のあなたは、ズバリ Core i3 4130にしましょう。
Intel CPU Core-I3 3.40GHz 3Mキャッシュ LGA1150 BX80646I34130 【BOX】
参考価格 ¥13,349 (2014/6/13時点のamazonの価格です)
amazon以外では、¥12,000台のところもあるようです。

今回唯一の1万円オーバーのCPUですが、Core-iブランドの威力だけでなく、Pentiumには無いハイパースレッディングにも対応しているので、マルチスレッド実行環境ではそれなりの価値があるかと思います。アプリケーションをいくつも立ち上げて同時にいろいろ作業される方向きですね。

まとめ


今回は、コスパ重視ということで1万円以下のCPUをご紹介しまいたが、実は高いCPUにも高いなりの性能があり特にマルチスレッド環境では十分に性能を発揮してくれます。
コスパ重視と言っても用途によってはその価値が大きく異なるので、用途に見合った性能を得るのが正しいコスパ最強への道だと思います。

2014年4月3日木曜日

Kindle Fire HDX 7タブレットを3ヶ月使ったのでそろそろ言っておくか

Kindle Fire HDX 7タブレットを購入してから3ヶ月が過ぎたでの、
購入するまでの経緯と結果どうなったかを書いてみます。

たまたまですが、Amazonで「Kindle Fire HDX 7が最大22%OFF! 4/25 23:59まで」らしいので、
タブレットを探している方で、なかなか購入に踏み切れない方は参考になれば幸いです。

あと、Amazon MasterCardの入会キャンペーンで通常のカードでも2000円分のポイントつくらしいので、キャンペーンも利用すると約7,780円OFFくらいで購入できそうですね。

ちなみにここだけ見るとすごいKindle推しのステマのようですが、
残念ながら関係者でもステマでもありません。


家でiPadを使っているけど・・・


iPadは、通勤電車で片手で扱うには大きくて重いので外では使っていません。

通勤時間に外で使える小さめのタブレットはずっと探しいていたのですが、旧式とは言えすでにiPadを持っていたので、なかなかiPad mini Retinaの購入の決断はできませんでした。そんなわけで使い道とコストに見合うか考えを整理してみました。


タブレットを購入する目的を明確にした

  • 読書する時間を増やしたい
  • 鈍器のような分厚い技術書をPDFに変換して持ち歩きたい

まずは、目的を2つにしぼりました。

過去にも通勤電車に文庫本とか持ち込んだことがありましたが、満員電車では片手でページめくりしたり読むのは至難の技で、文庫本以上のサイズだと荷物になったりですぐにやめてしまいました。でも本を読んでいる時間は没頭できて有意義だった記憶があります。
ものぐさな私ですが、この苦痛な通勤時間をなんとかせねばと常々思っていたのと、なぜか自然に読書熱がわいてきたのと、重い鈍器のような技術書を毎日読み進めたいという思いが、 いろいろできそうなタブレットを目の前にしても、あえてこの2つの目的に絞り込めました。


タブレット選びとコスパ

通勤電車で読書する時間が増やせればいいという目的にたどり着いたので、タブレットを選ぶ条件を考えました。
  • 電子書籍が快適に読める
  • PDFファイル(1000ページを超えるような自炊した本も含む)が快適に読める
  • 電車で片手で持てるサイズ
  • 小さい文字もきれいに見える
  • コスパ

上記の条件を確認するために、家電量販店で実機をいくつかさわったら、 結局よくある次の3候補に絞り込まれました。
機種 価格 感想
iPad mini Retina 16GB ¥38,800 個人的には本を読むのに一番適していると思いました。
Kindleとの価格差14,000〜18,000円以上
Nexus7 2013 16GB ¥27,800 Google Playが使えるので汎用的に使えてかなり魅力的です。
Kindle Fire HDX7 16GB ¥24,800 この値段で画面が奇麗で快適な動作はすごいと思います。

どのタブレットも画面がきれいで見やすく性能も高いので、どれを購入しても後悔はないかと思います。その中でも画面の縦横比の関係か、やはりiPad mini Retinaが1位かと思いましたが、当時Kindleがキャンペーン価格で2万円を切る価格で買えたので、iPad mini 1台の価格でKindle2台買えそうなくらい価格に差がありました。
あと、すでにiPad Retinaを持っていたというのもあって、Kindleを試したいという気分にもなり、最後はコスパで決めてKindleになりました。この性能で2万円を切るというのはかなり背中を押されたと思います。


タブレットを持ち歩くようになった結果wwwwww


劇的に読書量が増えましたwwwwwwwwww

目的通りというか、本当にそうなりました。
これまで積んでいた技術書も読んだり、違うジャンルの本も読むようになりました。
しかも、通勤時間のストレスが減って有意義な時間に思えます。
1000ページ以上ある「ストラウストラップのプログラミング入門」も自炊して愛読書となりました。

最近はleanpubを利用する機会が増えました。
leanpubは購入した書籍を直接Kindleに送れて便利ですね、別途紹介できたらいいかも
Kindleには副作用があって・・・。 気になる本をバンバン買ってしまったり、角川祭り(50%〜70%OFF)が開催されたりで、コスパ優先で買ったKindleですがその後のコスパはよろしくないようです(涙)
角川祭りの影響が出過ぎている画像・・・。


まとめ

  • 荷物になるから本を持ち歩きたくないという人は、読書量が劇的に増加する可能性があります。
  • 少し空いた時間でも手軽に読書できるようになります
  • 7インチのタブレットは、電車で本を片手で読むにはいいサイズだと思います。
  • 読書が目的なら容量は16GBでも十分いいと思う
  • Amazon Kindle Fire HDX スタンド付き ORIGAMI 合皮 カバー/ケースがすごくいい。カバーとしてもスタンドとしてもかなりいい感じに機能してくれます。価格は高いけど満足度も高いのでKindle購入する人にはオススメしたい
  • 「紙の本と電子書籍を同時に発売してくれればいいのに・・・」と思うようになります。
  • DRMフリーで電子書籍を販売してくれるO'Reillyはすごいと思う。DRMフリーだとPCでも見れるので助かります。
  • タブレットの使用目的が読書と明確ならコスパ重視のKindleが幸せ(差額で本を買いましょう)
  • 予算が十分にある人は、LTEついてるiPad mini RetinaかNexus7がオススメなのは言うまでもない

タブレット選びのご参考になると幸いです。

2014年3月27日木曜日

Amazon Linuxでyumリポジトリのバージョンを指定する

Amazon Linuxは、ソフトウェアのバージョンアップが定期的に行われているので、
yumで追加モジュールをインストールしようとすると他のパッケージも同時にバージョンアップされることがあります。
他のパッケージはバージョンアップしたく無い場合は、yumリポジトリの参照先を変更すると、
過去のパッケージがインストール可能となります。

yum.confの修正

sudo vi /etc/yum.conf

#releasever=latest  <- コメントアウトする
releasever=2012.09       <- リポジトリのバージョンを指定する

yumのキャッシュ削除

sudo yum clean all

パッケージのバージョン確認

sudo yum list | grep apc

php-pecl-apc.x86_64                 3.1.13-1.8.amzn1           amzn-updates  
これで2012.09のパッケージがインストールできますね。


パッケージリスト


リリースノート


2014年3月7日金曜日

sftp接続できなくなった for Coda2

Vagrantで作業してたところ、Coda2というかsftp接続ができなくなった。
次のようなエラーメッセージが出ます。

Coda2のエラーメッセージ

サーバ “ホスト名” に接続できませんでした。
Unable to extract public key from private key file: Wrong passphrase or invalid/unrecognized private key file format

sftpコマンド試してみる

sshは接続できるので、sftpコマンドで接続したところ同様に接続できませんでした。
$ sftp 192.168.33.10
Received message too long 1433626990
Coda2のエラーメッセージと違いこちらはなんとなく原因がわかりました。 事前に設定していた.bashrcの内容をコメントアウトしたら無事接続できました。

rvmをコメントアウト

次の1行をコメントアウトしただけです。
rvm use 2.1.1
さすがにコメントアウトは不便なので、
sftp接続の時に処理されないように.bashrcを修正します。

.bashrcの修正

CentOSでsftp接続の場合は次の環境変数が設定されていたのでこれを使用して、.bashrcの先頭の方に次のように追記しました。
[ -z "$PS1" ] && return

ちなみに環境変数の差分取ってみたところ、
sftp接続限定の場合は、BASH_EXECUTION_STRING変数を利用してもよいかもしれません。
# CentOS6の場合
if [ "$BASH_EXECUTION_STRING" = "/usr/libexec/openssh/sftp-server" ]; then
 return
fi

# または正規表現でマッチさせる
if [[ "$BASH_EXECUTION_STRING" =~ sftp ]]; then
  return
fi

結論

対話的じゃないときは余計なことしないように、$PS1で条件分岐した方が無難ですね。
Debian Wheezyの/etc/bash.bashrc
# If not running interactively, don't do anything
[ -z "$PS1" ] && return

CentOS
/etc/bashrc
# are we an interactive shell?
if [ "$PS1" ]; then

OSX
/etc/bashrc
# System-wide .bashrc file for interactive bash(1) shells.
if [ -z "$PS1" ]; then
   return
fi

シェル環境を見直すよい機会となりました。

2014年2月24日月曜日

最近気になるPHPフレームワークHelloWord性能比較大会

最近気になっているPHPフレームワークのベンチマークを取得してみました。
サーバやフレームワークなどのチューニングはほとんどしていないので、
結果は、あくまで参考程度としてください。

テスト環境

仮想環境 (1CPU memory 4GB)
PHP 5.5.9 (opcache使用)
NGINX 1.4.5

確認したコマンド※

ab -n 1000 -c 20 http://localhost.local/
※外部からではなく同じサーバで実施しています。

結果


Phalcon 1.2.6


Time taken for tests: 0.523 seconds
Requests per second: 1910.87 [#/sec]

FuelPHP 1.7


Time taken for tests: 1.704 seconds
Requests per second: 586.90 [#/sec]

Laravel 4.1


Time taken for tests: 6.171 seconds
Requests per second: 162.04 [#/sec]

php artisan optimizeで最適化
Time taken for tests: 4.925 seconds
Requests per second: 203.02 [#/sec]

Ruby on Rails 4.0.3 (特別ゲスト)


Time taken for tests: 2.851 seconds
Requests per second: 350.73 [#/sec]

Ruby On Rails4も含めてみました。
環境はPHPとは異なり次のとおりです。
NGINX 1.4.4
Passenger4.0.37
ruby 2.1.0

感想


Phalconが圧倒的な処理速度で1位です。
Laravelと比較すると約11倍以上速いですね。
FuelPHPはLaravel寄りではありますが、まずまずの性能です。

artisanコマンドで最適化されたLaravelでもそれほど大幅には変化がなかった(でもLaravel比だと25%アップ)ので、速度が出ないのは、autoloadが原因ということはなさそうです。
LaravelはIoC Containerというのが得意で、コードがきれいで書きやすいのですが、
それが原因かどうかはわかりませんがパフォーマンス面では他に劣るようです。
今のところPHPでもRailsと同様にパフォーマンスと便利な機能は相反するようですね。
またPhalconが速いのはC言語で実装されたフレームワークの部分だけなのでPHP部分はそんなに変わらないのではないかと思います。
結果はPhalconが目立ちすぎてますが、実際のロジックを実装した状態ではそこまでは差がないのではないかと考えています。
また、PhalconはC言語で実装されているので運用面でトラブルの際の調査も難しくなりそうで、
仕事に使うのはZephirで実装されるバージョン2.0までは様子をみようかと思っています。
Zephirは今後どうなるか気になるところです。
LaravelがZephirで実装されたりとか・・・、今のところその動きはなさそうですが。

Railsは、言語違いますがフルスタックのフレームワークの代表例として参考になるかと思って追加しました。
LaravelとFuelPHPの中間くらいで以前より速くなってますね。
RubyのVMが進化していたり、Rails自体もチューニングが進んでいるのかも。

いずれにせよ、現実的ではないHelloWorld程度の比較なので、
あまりこの結果を鵜呑みにしないようにご注意ください。



2014年2月3日月曜日

Python3.3.3でdistributeインストール中のエラー

ランチ食べ過ぎて若干苦しい昼下がり、
Python3.3.3環境を作ってみたところ、distributeのインストールでこけましたとさ。 環境は、VagrantのCentOS6.5環境
curl -O http://python-distribute.org/distribute_setup.py
python distribute_setup.py

Downloading http://pypi.python.org/packages/source/d/distribute/distribute-0.6.49.tar.gz
Traceback (most recent call last):
  File "distribute_setup.py", line 556, in 
    sys.exit(main())
  File "distribute_setup.py", line 552, in main
    tarball = download_setuptools(download_base=options.download_base)
  File "distribute_setup.py", line 211, in download_setuptools
    src = urlopen(url)
  File "/home/ono/.pythonz/pythons/CPython-3.3.3/lib/python3.3/urllib/request.py", line 156, in urlopen
    return opener.open(url, data, timeout)
  File "/home/ono/.pythonz/pythons/CPython-3.3.3/lib/python3.3/urllib/request.py", line 475, in open
    response = meth(req, response)
  File "/home/ono/.pythonz/pythons/CPython-3.3.3/lib/python3.3/urllib/request.py", line 587, in http_response
    'http', request, response, code, msg, hdrs)
  File "/home/ono/.pythonz/pythons/CPython-3.3.3/lib/python3.3/urllib/request.py", line 507, in error
    result = self._call_chain(*args)
  File "/home/ono/.pythonz/pythons/CPython-3.3.3/lib/python3.3/urllib/request.py", line 447, in _call_chain
    result = func(*args)
  File "/home/ono/.pythonz/pythons/CPython-3.3.3/lib/python3.3/urllib/request.py", line 692, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "/home/ono/.pythonz/pythons/CPython-3.3.3/lib/python3.3/urllib/request.py", line 469, in open
    response = self._open(req, data)
  File "/home/ono/.pythonz/pythons/CPython-3.3.3/lib/python3.3/urllib/request.py", line 492, in _open
    'unknown_open', req)
  File "/home/ono/.pythonz/pythons/CPython-3.3.3/lib/python3.3/urllib/request.py", line 447, in _call_chain
    result = func(*args)
  File "/home/ono/.pythonz/pythons/CPython-3.3.3/lib/python3.3/urllib/request.py", line 1310, in unknown_open
    raise URLError('unknown url type: %s' % type)
urllib.error.URLError: 

stackoverflow先生によるとopenssl-develが必要らしい
http://stackoverflow.com/questions/18833442/installing-distribute-for-python-3-3
しかも、openssl-develインストール済みの状態でpyothon3をビルドしないとダメっぽい。

openssl-develを忘るべからず

yum install openssl-devel.x86_64
pythonz uninstall 3.3.3
pythonz install 3.3.3
curl -O http://python-distribute.org/distribute_setup.py
python distribute_setup.py
ちなみにpythonzで入れた3.3.3のpythonのシンボリックリンクがpython3-configに向いてるんですが・・・・
びっくりした・・・。ので、リンク張り直した。
python -> ~/.pythonz/pythons/CPython-3.3.3/bin/python3.3-config

rm -f ~/.pythonz/pythons/CPython-3.3.3/bin/python
ln -s ~/.pythonz/pythons/CPython-3.3.3/bin/python3.3 ~/.pythonz/pythons/CPython-3.3.3/bin/python

stackoverflow先生今日もありがとう!

2014年1月29日水曜日

Xcode5でアイコン画像が変更できない場合の対処方法

Asset Catalog以前の環境ですが、アイコン画像を変更してもなぜか反映されない症状が発生しました。
そういえば、この症状は・・・。

Xcodeのワークスペース(DerivedData)の削除

いろいろ試してみるも効果があったのは、Xcodeのワークスペースの削除でした。
メニューの[Window]->[Organizer]を開いて、Derived Dataの[Delete]ボタンで削除できます。
または、オーガナイザーでパスも見えているので、Finderや直接コマンドでもOKです。
cd ~/Library/Developer/Xcode/DerivedData
rm -fr ProjectName-xxxxxxxxxx
変なところではまりたくないものですね。

2014年1月25日土曜日

NGINXの仮想ホスト名(server_nameディレクティブ)のメモ

NGINXで仮想ホスト名(サーバ名)を指定する方法が公式のドキュメントにコンパクトにまとまっていたのでメモ。
あまり難しいことをやらない分わかりやすいですね。

マスタリングNGINX(20,21ページ)はもう少し詳しいですが、普通の使い方なら以下の完全一致、ワイルドカード、正規表現の内容で十分かもしれません。


サーバ名

http://nginx.org/ja/docs/http/server_names.html

以下引用です。

サーバ名解決の優先順位

  1. 完全一致名
  2. アスタリスクで始まるワイルドカード名: *.example.org
  3. アスタリスクで終わるワイルドカード名: mail.*
  4. 設定ファイル内の順序での正規表現

ワイルドカード

・ワイルドカード名にはそのサーバ名の最初か最後のみ、そしてドットに隣接したところのみにアスタリスクが含まれます。
・サーバ名 www.*.example.org や w*.example.org は無効です。
・特別なワイルドカードの形式 .example.org は、完全一致名 example.org とワイルドカード名 *.example.org の両方にマッチさせるように利用できます。

正規表現

サーバ名は正規表現を使用して、例えば ~^www\..+\.example\.org$ や ~^w.*\.example\.org$ として指定することができます。

ワイルドカードで有効なサーバ名の指定方法

server_name *.example.org
server_name example.*
server_name ~^www\..+\.example\.org$
server_name ~^w.*\.example\.org$

無効なサーバ名の指定方法

server_name www*.example.org
server_name www.*.example.org

サーバ名未定義のリクエストを防ぐには、_のように無効なドメイン名を使います。

サーバ名未定義のリクエストの処理を防ぐ

http://nginx.org/ja/docs/http/request_processing.html#how_to_prevent_undefined_server_names
server {
    listen       80  default_server;
    server_name  _;
    return       444;
}
シンプルでわかりやすいルールですね。
仕事ではApacheを使うことが多いですが、個人的にはNGINXいいですね。

2014年1月23日木曜日

Vagrant環境でMySQL5.6が起動しない?

VagrantでCentOS6.5でMySQLインストールしても起動しない・・・、
MySQL5.6だから?とかmy.cnfの設定がダメ?とかいろいろ考えすぎましたが、
デフォルトでも起動しないためそんなことはないようです。
ログには Cannot allocate memory・・・・と、
空きメモリーあるんだけどなと思いつつもinnodb_buffer_pool_sizeを小さくしてもダメでした。
[Note] InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
[ERROR] InnoDB: Cannot allocate memory for the buffer pool
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
[ERROR] Aborting

対策

メモリー(物理)を増やすほど富豪ではなかったのでswap領域を追加してみることにしました。

swap領域の確認

swapon -s
Filename    Type  Size Used Priority
確かにありません・・・。

スワップ領域作成

容量は環境に合わせて適宜変更してください。
sudo dd if=/dev/zero of=/swapfile bs=1024k count=512
sudo mkswap /swapfile
sudo swapon /swapfile
sudo chown root:root /swapfile
sudo chmod 0600 /swapfile

再起動しても反映されるように修正

sudo vi /etc/fstab
# 次の行を追記
/swapfile swap swap defaults 0 0 

OSのスワップの利用頻度を低くする

できるだけスワップしない用に設定する(0〜100) 100の方が多くスワップ領域を使用する
vi /etc/sysctl.conf
vm.swappiness=10
sysctl -p 

これで無事にMySQL5.6が起動したのでいろいろ検証できます。
ちなみにPHPでもワーニング出ていたのが解消しました。
 PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/gd.so' - libvpx.so.0: cannot map zero-fill pages: Cannot allocate memory in Unknown on line 0
ここにもさりげなくCannot allocate memoryが。
ワーニング?・・・レベルなのかな・・・