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が。
ワーニング?・・・レベルなのかな・・・