ng-japanに参加してきました!
3/21(土)に開催されたAngularJSのカンファレンス、ng-japanに参加してきました!
AngularJSの中の人3名を招いてのセッションを含め、とてつもなく濃い内容で非常に楽しかったです。
間違いなくAngularJS初級者の私ですが、AngularJSの未来にワクワクしましたし、今後も使われ続けていくだろうという安心感を覚えました。
ただメインセッションに集中しすぎて尋常じゃなく疲れてしまったので、途中退出したのが心残りでした。。
多分いろいろ間違ってると思いますが、セッション中に色々メモを取ったので備忘として貼り付けます。
続きを読むホスト名が原因でMacのMySQL起動に失敗した話と、その後の対応について
今日あったことをメモ。
MacBookAirにHomebrewで入れたMySQLが、起動済みだったはずなのに何故か落ちていました。
$ mysql.server status ERROR! MySQL is not running
仕方ないので再度起動をしようとしましたが、何故か起動できず。。
$ mysql.server start
Starting MySQL
.. ERROR! The server quit without updating PID file (/usr/local/var/mysql/hogehogenoair.pid).
訳が分からずps
コマンドで一応確認してみると、以下のような結果に。
$ ps aux | grep mysql imamoto 2849 0.0 0.0 2432784 604 s002 S+ 12:48AM 0:00.00 grep mysql imamoto 2819 0.0 10.9 3118408 457736 s002 S 12:43AM 0:00.69 /usr/local/Cellar/mysql/5.6.22/bin/mysqld <以下略> imamoto 2735 0.0 0.0 2444628 1116 s002 S 12:43AM 0:00.02 /bin/sh /usr/local/Cellar/mysql/5.6.22/bin/mysqld_safe <以下略> ※実行結果はイメージです
なんかいる!!!mysql起動してる!!
その後、一旦実行中のプロセスをkill
して再びmysql.server start
を試みるも先ほどと同じエラーでやはり失敗。
続いて、起動時のエラーメッセージに含まれていたpidファイル(/usr/local/var/mysql/hogehogenoair.pid
)が存在するのか確認してみます。
$ ls -la /usr/local/var/mysql -rw-r----- 1 hogehoge admin 92775 3 3 10:26 hogehogenoair.err -rw-r----- 1 hogehoge admin 76509 3 4 00:43 hogehoge-no-MacBook-Air.local.err -rw-rw---- 1 hogehoge admin 5 3 4 00:43 hogehoge-no-MacBook-Air.local.pid <以下略>
すると、探していたpidファイルの代わりにhogehoge-no-MacBook-Air.local.pid
が見つかりました。
pid拡張子の前についているhogehoge-no-MacBook-Air.local
とは、普段自分のmacで使われているホスト名です。
ここで念のためホスト名を確認してみます。
$ uname -n hogehogenoair
ホ、ホスト名が変わってる。。。
これを見て、おそらく原因はホスト名が変わってしまったことにあるのではないかと思い色々と調べてみると、こんな記事を見つけました。
この記事によると、macでは接続するネットワークによってホスト名が変更されてしまうことがあるとのこと。
今日は普段と違って私物のスマホのテザリングを使っていたので、ホスト名が変わってしまっていたようです。
ホスト名を固定にしたかったので、記事を参考に/etc/hostconfig
に以下の一行を加えてmacを再起動しました。
HOSTNAME=hogehoge-no-MacBook-Air.local
これでテザリング中でもホスト名は固定されたので、mysql.server start
で無事MySQLが起動できました。
ただ、、他にも良い方法がありそうな香りがプンプンします。
知っている方がいたら教えてください。。
Laravelのartisanでサーバを立ち上げた時にプライベートIPでアクセスできない問題と、その対処法
以前ハマったことを備忘を兼ねてメモです。
LaravelでPHPのビルトインサーバを立ち上げる
サーバサイドでLaravelを使っている場合、ローカルでWebサーバの設定をしなくても以下のコマンドでPHPのビルトインサーバを立ち上げてページを確認することができます。
$ php artisan serve
デフォルトだとlocalhost:8000
でサーバが起動しますが、オプションを付けるとポートを変更することもできます。
以下のコマンドで起動すればポート8080を使用できます。
$ php artisan serve --port 8080
プライベートIPでのアクセスができない問題
基本はlocalhost:8000
へのアクセスで一切問題ないのですが、自分のローカル環境の状態を他のデバイスから見たくなったりすることもあります。
例えば同じ現場での複数人の作業時や、スマホでの表示確認の場合などです。
そんな時はプライベートIP(例えば192.168.0.3:8000
)へアクセスしたいのですが、デフォルトの設定で起動するとホスト名がlocalhost
で固定されてしまうのでプライベートIPでアクセスすることができません。
プライベートIPでアクセスする方法
PHPのビルトインウェブサーバーのドキュメントに以下の記述があります。
ウェブサーバーを、任意のインターフェイスからポート 8000 でアクセスできるようにするには、このようにします。
$ php -S 0.0.0.0:8000
これにならって、artisanコマンドのオプションでホスト名を以下のように0.0.0.0
にしてあげると、プライベートIPでアクセスが可能な状態でサーバが起動します。
$ php artisan serve --host 0.0.0.0
この方法だと任意のインターフェイスからアクセス可能にしてくれるので、プライベートIPはもちろん、localhost:8000
からでもアクセスすることができます。
これで無事解決できました。
LaravelのBladeテンプレートエンジンとAngularJSにおける二重の波括弧の競合と、その解決方法
サーバ側でLaravelフレームワーク、クライアント側でAngularJSを使う際に少しハマったのでメモです。
クライアント側でAngularJSを使用した時に以下のようにHTML内に二重波括弧を書くと
AngularJSのテンプレートエンジン機能によって囲まれた変数の値に置き換えてくれます。
(この表記法をエクスプレッションといいます)
<!-- {{ name }}の部分が置き換わります --> <div ng-controller="NameController"> <p class="name">私の名前は{{ name }}です。</p> </div>
しかしLaravelのBladeテンプレートエンジンでも全く同じ記法でViewに渡された変数を参照して書き出すことになっている為、
レスポンスを返す前にBladeの記法として解釈&変換をしてしまいます。
なのでBladeを適用させるファイル(*.blade.php)にこのHTMLを記載すると「nameなんて変数知らないからエラーやで」とサーバ側から怒られてしまいます。
そんな時は以下のようにエクスプレッションの直前に"@"を付け加えれば良いみたいです。
<!-- name.blade.php --> <div ng-controller="NameController"> <p class="name">私の名前は@{{ name }}です。</p> </div>
この書き方をすれば、LaravelはViewに渡された変数の値と置き換える代わりに"@"を消してレスポンスを返してくれます。