AngularJS: Enterキーイベントをトリガーにするメモ
テキスト入れてEnterしたら検索実行とか、キーイベントをトリガーにして
なんかしたいときはこれを書くだけでいけます。
ng-keyup="$event.keyCode == 13 ? doSomething() : null"
htmlだけで完了です。
<div> <input type="text" placeholder="キーワード" ng-model="keyword" ng-keyup="$event.keyCode == 13 ? doSomething() : null" /> <button ng-click="doSomething()">検索する</button> </div>
どうでも良い話ですが、 サンプルなどで doSomething() って書くとき、脳裏のはるか彼方から
つがいのチーターがスケボーに乗ってやってきます。
AngularJS: コンパイル前のテキストを描画しないメモ
AngularJSでwebページをロードするとき、
と記述したまんまの状態がチラッと描画されてしまうことがあります。
これは、表示されたくないタグに
ng-cloak
を追記することで解決します。
<div class="result" ng-cloak> キーワード: {{keyword}} の検索結果({{total || '0'}}件) </div>
こんな感じで。
Mac OS X で Docker(+nginx)を試す
Dockerでnginxに「Welcome to nginx!」と言われたい
# docker と boot2docker をインストールしよう brew install docker boot2docker # boot2docker を準備しよう boot2docker init #=>Success: downloaded https://github.com/boot2docker/boot2docker/releases/download/v1.5.0/boot2docker.iso # boot2docker を起動しよう boot2docker up #=>Waiting for VM and Docker daemon to start... ... To connect the Docker client to the Docker daemon, please set: export DOCKER_CERT_PATH=/Users/you/.boot2docker/certs/boot2docker-vm export DOCKER_TLS_VERIFY=1 export DOCKER_HOST=tcp://192.168.XXX.XXX:2376
boot2docker up 後、環境変数をセットするように言われるので
内容を .bash_profile に追記します。
vi ~/.bash_profile # 言われたとおりに以下を追記 export DOCKER_CERT_PATH=/Users/you/.boot2docker/certs/boot2docker-vm export DOCKER_TLS_VERIFY=1 export DOCKER_HOST=tcp://192.168.XXX.XXX:2376
以下のコマンドで、追加した内容を有効化します。
source ~/.bash_profile
Docker のイメージは
# 最新の CentOS
docker pull centos:latest
や
#最新の MySQL
docker pull mysql:latest
コマンドだけで簡単に入手できます。
イメージはほかにもいろいろ、以下のサイトなどで公開されています。
Docker Hub Registry - Repositories of Docker Images
今回は最新の nginx のイメージを使うので、
#最新の nginx
docker pull nginx:latest
を実施してみます。
ちなみに、 docker pull したときに、
FATA[0000] Post http:///var/run/docker.sock/v1.16/images/create?fromImage=centos%3Alatest: dial unix /var/run/docker.sock: no such file or directory
このエラーが出た場合は source ~/.bash_profile していないか、
環境変数がうまく設定できていないかもしれません。
さて、無事 docker pull できたら、以下を実行してみます。
# nginxのポート80のサービスをポート8080で受けるようにして起動しよう docker run -it -p 8080:80 nginx:latest /bin/bash # nginx を開始しよう service nginx start
ここで、ブラウザから以下にアクセスしてみます。
DOCKER_HOST の部分は、さきほど環境変数で設定したIPアドレスの値です。
http://[DOCKER_HOST]:8080
「Welcome to nginx!」できました!
あとしまつ
起動しているイメージは以下のコマンドで確認できます。
docker ps -a #=>CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES #=>602fe5bb2372 nginx:latest "/bin/bash" 2 minutes ago Up 2 minutes 443/tcp, 0.0.0.0:8080->80/tcp romantic_lumiere
コンテナIDを指定してdockerを停止します。
# ぜんぶおしまいにしよう docker stop [CONTAINER ID] #上記例の場合 => docker stop 602fe5bb2372 docker rm [CONTAINER ID] #上記例の場合 => docker rm 602fe5bb2372 boot2docker down
docker runの時にイメージに一意の名前をつけておくと、CONTAINER IDの
代わりに名前を引数にして上記と同じことができます。
すべてを終了させたあと、 docker ps -a してみると、コンテナが消えた
ことを確認できます。
docker ps -a #=>CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
おつかれさまでした!
Vagrant に EC-CUBE (+ mysql )をインストールするメモ
EC-CUBE向けに最適な Vagrantfile (+chefレシピ)がgitで公開されているので
使わせていただきました。
nanasess/vagrant-lamp · GitHub を git clone したあと
cd vagrant-lamp
vagrant up
を実行します。
http://localhost:8888/ でアクセスするとphpinfoのページが表示されるように
なります。
このときドキュメントルートは
/var/tmp/www/ec-site
になっているので、このディレクトリにEC-CUBEを配置してしまいます。
Apacheの設定が一切必要なくなります。
vagrant環境にSSH接続し、以下のスクリプトを実行します。
vagrant ssh #=>Welcome to your Vagrant-built virtual machine. # ダウンロードページ http://www.ec-cube.net/download/ から EC-CUBE をダウンロードしよう cd /var/tmp/www/ mv ec-site ec-site.org wget http://downloads.ec-cube.net/src/eccube-2.13.3.tar.gz tar xf eccube-2.13.3.tar.gz rm eccube-2.13.3.tar.gz mv eccube-2.13.3 ec-site # rootになろう sudo su # タイムゾーンを変えよう mv /etc/localtime /etc/localtime.org cp /usr/share/zoneinfo/Japan /etc/localtime # mysqlサーバーを用意しよう yum -y install mysql mysql-server php-mysql chkconfig mysqld on service mysqld start # mysqlにEC-CUBE用のDBを用意しよう # DB名:eccube_db、ユーザー名:eccube_db_user、パスワード:password # の場合の例を以下に示します。 mysql -u root mysql> create database eccube_db character set utf8; mysql> grant all privileges on eccube_db.* TO eccube_db_user@localhost identified by 'password'; mysql> flush privileges;
ここまできたら、一旦vagrant環境から離れて、自身のPCのブラウザから以下へ
アクセスしてみます。
http://localhost:8888/
/install にリダイレクトされ、以下のページが
確認できれば設置はOKです。
デフォルトのままでインストールする場合、URLは
http://test.local:8888/
になると思いますので、その場合は自身のPCのhostsに以下の1行を追記して
ください。
127.0.0.1 test.local
以上です。
追記:
当初、githubで公開されているEC-CUBEのリポジトリからインストールを試みたのですが
失敗してしまいました。
配布版とgit版ではディレクトリ構成が大きく異なっているので、現在大規模改修中なのかも
しれません。
Amazon RDS for MySQL で Too many connections
長時間実行してるバッチアプリケーションで、RDSのMySQLが
「Too many connections」て言うようになって困っていました。
MySQLの同時接続数 max_connections の設定値が足りないのかなと
思いきや、information_schema.PROCESSLIST の中身を見たら
mysql> SELECT * FROM information_schema.PROCESSLIST WHERE USER='user' and Command='Sleep' and TIME > 1000\G *************************** 1. row *************************** ID: 66825542 USER: user HOST: ip-01-23-45-67.ap-northeast-1.compute.internal:xxxxx DB: db COMMAND: Sleep TIME: 4306 STATE: INFO: NULL *************************** 2. row *************************** ID: 66825357 HOST: ip-01-23-45-67.ap-northeast-1.compute.internal:xxxxx DB: db COMMAND: Sleep TIME: 4325 STATE: INFO: NULL (省略) 213 rows in set (0.00 sec)
大漁!大漁にある!
バッチの中で接続の切断/破棄が正しくできていないようです。
正しく切断/破棄できるよう、根本の調査が必要なのですが
取り急ぎ、長々と眠っているプロセスをkillします。
mysql> kill 66825542; ERROR 1095 (HY000): You are not owner of thread 66825542
oh,
門前払いをくらいました。
killコマンド、スーパーユーザーしか実行できないようです。
調べたところ、RDSでは mysql.rds_kill および mysql.rds_kill_query
という、killコマンドの代わりになるものが提供されてました。
早速実行してみます。
mysql> CALL mysql.rds_kill(66825542); Query OK, 0 rows affected (0.00 sec)
おお!
無事消えました!
詳しくはこちらをどうぞ
kill mysql thread
https://forums.aws.amazon.com/message.jspa?messageID=337243
10.8 Mountain Lion から 10.9 Mavericksへアップグレードしたらapacheのphpサイトが死んだ
バーチャルホストで用意してある複数のサイトのうち、htmlのサイトは平気なのに
phpのサイトだけ
[notice] child pid XXX exit signal Segmentation fault (11)
これがでる。
クラッシュレポートを見てみると、libphp5.soの読み込みの途中で息絶えてた。
アップグレードで再インストールされたApacheとPHPのバージョンが合ってない?
と思いphpのバージョンを5.5へあげてみる。
curl -s http://php-osx.liip.ch/install.sh | bash -s 5.5
んで、LoadModule php5_moduleを以下に変えてみた。
/usr/local/php5-5.5.XXXX/libphp5.so
結果、動作するようになった!と思いきや、アプリケーション内で使用してる
aws-sdkのSimpleDBのとこで
Maximum function nesting level of XXX reached, aborting!
を返す。
Fixed circular to string method in simplexml #39
https://github.com/amazonwebservices/aws-sdk-for-php/pull/39
PHP 5.3.10では出ないけど、PHP 5.4.7で発生するエラーらしい。
Fixed案件なのでSDKのバージョンを上げれば解決なんですが、ここはPHPの
バージョンを5.3に落とすことにした。
curl -s http://php-osx.liip.ch/install.sh | bash -s 5.3
そしてlibphp5.soを5.3に差し替え。ようやく動作するようになりました。
ここまでありつくのに、gdbで動作させたり、その準備でXcodeのコマンド
ラインツールいれたりと無駄にすごい時間を費やしてしまった。