Twitter Facebook github

Category “コード”

Amazon Linux に php7.1 をインストール

昔の記事 Amazon Linuxで nginx + php7 環境構築 を見返しつつセットアップを進めていたら、どうやら今はphp7.1系がリリースされているとのこと。

基本的に同じremi-php70のリポジトリで7.1のphpも参照できるようなので、特に難しいことはないですが備忘録として簡単にメモ。

nginx、php-fpm 諸々は古い記事をご参考ください。

雑な記事を量産しないようにしたい

Homebrewで最新のzshをインストール

以前、 zshことはじめ の記事でzshについて軽く触れましたが、
つい先日チェックした際にzshのバージョンが上がっていたので、これを機にHomebrew経由のzshに乗り換えることを決意しました。

バージョンの確認

Mac標準のzsh

Homebrewのzsh

Homebrewでインストール

依存関係で gdbm と pcre が先にインストールされます。

バージョンを確認します。

Read More »

jEnvでバージョンの異なる複数のJavaを管理する

Rubyのrbenv、nodeのnodeenvなどと同じように、Javaにも複数のバージョンを管理するための*env、jEnvがあります。

今回は真っ新のMacにJavaの開発環境を構築する際に、1.7、1.8、9(EA)をインストールすることにしたので、その手順をまとめておきます。

HomebrewでJDKをインストール

jEnvでは、nodeenvなどと異なりjEnvコマンドからJDKをインストールすることはできません。
先にJavaをインストールする必要がありますが、今回は後々アップデート等が楽なHomebrew経由でインストールしようと思います。
もちろんOracleのホームページから直接インストーラーで導入してもかまいません。

Javaの古いバージョン、またEAのバージョンをbrewで導入するには、versionsのリポジトリをtapする必要があります。

バージョンを付けずにインストールすると、執筆時点ではJava8がインストールされます。
今回はその前後の7と9も追加でインストールしておきます。

Read More »

zshことはじめ

Macでzshを使うときのセットアップメモ。

環境

  • macOS Sierra 10.12.1
  • Homebrew 1.1.2

インストール

Macはデフォルトでzshが入っているので、常に使う場合はログインシェルを変更するだけで事足ります。

まずは次のコマンドでプリインストールされているシェルの一覧を表示させます。

これによると /bin/zsh にあるようですね。バージョンも確認しておきます。

執筆時点での最新版も同じ5.2のようなので、今回はこれをそのまま指定することに。
もし最新版ではないようなら、Homebrewなどで brew info zsh して新しい方を使うといいでしょう。

(2017/01/02 追記)
追記時点でHomebrewからインストールできるバージョンが 5.3.1 になりました。
Homebrewを使ったインストール方法の記事を書きましたので、ご参考ください。
Homebrewで最新のzshをインストール

Read More »

Laravel 5.2 で withErrors が動作しない時は

かなりハマって悔しかったので備忘録。

現象

LaravelのAuth周りを使ってログイン機能を実装中、ログイン失敗時のフラッシュメッセージとして動かす予定だった withErrors が正常に動かない現象が起こりました。
具体的には AuthenticatesUsers クラスにある sendFailedLoginResponse メソッドがコールされたとき、ログイン失敗を示すメッセージがリダイレクト後のページで取得できず、
$errors 変数にはデータバッグは存在するものの、値が空の状態になりました。

結論

先に結論を書くと、webミドルウェアが二重適用していたことが原因でした。

php artisan route:list を実行すると定義されているルーティング一覧を確認できますが、
そのミドルウェア欄には web,web,auth のように web が二度呼ばれていることが分かりました。
Read More »

Laravel の Elixir で TypeScript を使う

こんばんは。つい最近までコートを羽織っていたと思えば、もう随分暖かくなりましたね。

数日前から趣味で新しいウェブアプリを書いていて、折角なので勉強がてら新たにPHPフレームワークのLaravelを採用することにしました。噂には聞いていましたが確かに素晴らしい出来で、今後PHPのプロジェクトでは第一候補としたくなるようなものでした。

検証環境

  • Laravel framework v5.2.31
    • Elixir v3.x

次の3つはグローバルインストール済み

  • TypeScript v1.9.0
  • typings v0.8.1
  • gulp v3.9.1

Elixir でも TypeScript 使いたい!

Laravel には、フロントエンドの開発を支援する Elixir という gulp のラッパーがあります。デフォルトでSassやLessのコンパイル、JSのcombine&minifyとかできるすごいやつ。でもTypeScriptはサポートしてくれないので、自力でがんばる必要があります。(CoffeeScriptは公式サポート対象なんてズルい!)

Read More »

TypeScriptの string と String の違い

すべてを String で書いてたら、あるときエラーになってしまったので共有します。

エラーの理由

クライアント側のコードをTypeScriptで書いていたとき、SocketIOのライブラリを使っていたところ、次のエラーになりました。

ライブラリの定義を確認すると string の引数を受け取るところに String の変数を与えていることが分かりました。
Stringとstring? あれ、同じじゃないの?なんて思っていたらどうやら違うようです。

エラーの再現コードはこんな感じです。

Read More »

Amazon Linuxで nginx + php7 環境構築

以前書いた「nginx + php7 + Lumen な開発環境をVagrantでつくる」をAmazon Linuxに持って行くときの補填記事です。

AmazonLinuxはCentOS 6系ライクだから、EC2に持って行くことを前提とするならVagrantの開発環境も6系で作った方が良かった気がしている。。

ベースは上の記事内で紹介している通りだから、ここではAmazon Linuxで構築するときのコマンドを差分として備忘録に。

nginxはそのままインストール

違いとしては、Amazonのリポジトリがデフォルトで提供してくれているから、nginxのリポジトリをインストールする必要がなくなった。ちょっぴり楽に。

Read More »

WebPackでnodeランタイム向けにビルドする

前回まででTypeScriptを使ってフロントエンドJavaScriptをビルドする話を書きましたが、TypeScrptに慣れてしまうとES2015で書く気にはなれません。

当然のようにサーバーサイドもTypeScriptでコードを書き始めたのですが、ビルドにフロントエンドでも使っていたWebPackを採用して少しハマったので共有します。

やりたかったこと

  • TypeScriptでsocket.ioを使ったソケットサーバーを書きたい
  • 変更検知でビルド自動化したい
  • glup/grunt抜きでWebPackでやりたい

環境

  • Mac OS X El Capitan
  • node.js v5.7.1 / npm v3.6.0
  • TypeScript v1.9.0-dev.20160312
  • typings v0.7.9
  • webpack v1.12.14

上3つのモジュールは npm でグローバルインストール済み。

  • ts-loader@0.8.1

WebPackでTypeScriptをビルドするためのローダーをローカルインストールしています。

忙しい人のために

先に結論を書くと、nodeランタイム用にWebPackを使ってビルドするとき、単に node_modules をexcludeするだけではダメで、代わりに webpack-node-externals を使いましょう、という話。

Read More »

nginx + php7 + Lumen な開発環境をVagrantでつくる

趣味のプロジェクトで、APIサーバーとしてLaravel製の軽量PHPフレームワーク、Lumenを採用することにしました。

ここではVagrantを使ったローカルの開発環境を作るための手順を残します。

前提

  • ホストOS: Mac OS X El Capitan
  • ゲストOS: CentOS 7.1 (bento/centos-7.1)
  • ホストOSにVagrant 1.7.4 をインストール済み

今回は開発用なので、Lumenは /vagrant の中に配置し、
パーミッションの問題を避けるために、nginxもvagrantユーザーで起動することにします。

Read More »