CentOS7にmoshをインストール

CentOS7にmosh(mobile shell)をインストールする。

yumからインストール
$ sudo yum install mosh

firewallの設定を変更。
$ sudo firewall-cmd –add-service=mosh –zone=public –permanent
success

$ sudo firewall-cmd –reload

サーバによっては別でファイアウォールが設定してあるので、 60000〜61000 / UDP を解放する必要がある。

なんども忘れるfirewalldの操作
https://qiita.com/kenjjiijjii/items/1057af2dddc34022b09e

DockerのPHP公式イメージでモジュールを追加

PHP公式のDockerイメージを使用する際、モジュールの追加を簡単にする
[shell]docker-php-ext-install[/shell] が用意されている。

[shell]
FROM php:5.4-apache
RUN apt-get update && \
apt-get install -y \
libfreetype6-dev \ # gdに必要
libjpeg62-turbo-dev \ # gdに必要
libpng12-dev && \ # gdに必要
docker-php-ext-install gd mbstring pdo_mysql pdo_mysql mysqli mysql intl
[/shell]

上記では重複して不要なものも入れているので、適宜必要なものだけに修正。

DockerのPHPでMySQL拡張モジュールを使う

PHP PDOのエラー確認

PDOはエラーがあった場合も自動でエラーメッセージを吐かないため、開発時には自分で出力する必要がある。

PDO::setAttribute を使用してエラーの形式を設定。

[php] $pdo = new \PDO( 設定 ); $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_WARNING); // 処理 var_dump( $pdo->errorCode() ); var_dump( $pdo->errorInfo() ); [/php]

PDO::setAttribute の第一引数に、設定する項目、今回はエラーの設定なのでPDO::ATTR_ERRMODE を指定。第二引数に設定したいエラーモードの種類を指定。
エラーモードには
・PDO::ERRMODE_SILENT
・PDO::ERRMODE_WARNING
・PDO::ERRMODE_EXCEPTION
がある。

公式ドキュメント http://php.net/manual/ja/pdo.error-handling.php

CakePHP3でDBに予約語を使用した際の対応

DBに予約語を使用していた場合は、カラム名をバッククォートで括る必要がある。CakePHP3だとデフォルトでオフになっている。(CakePHP2まではオン)

/cake/config/app.phpにあるDBの設定を 'quoteIdentifiers' => trueに変更。

予約語一覧
https://dev.mysql.com/doc/refman/5.6/ja/reserved-words.html

コマンドラインから複数のファイルの文字列を置換(mac)

複数のファイルをコマンドで一括置換をする方法。

[shell] $ grep -l ‘置換前文字列’ 対象のファイル | xargs sed -i ” ‘s/置換前文字列/置換後文字列/g'[/shell]

macではsedがBSD版のため、sedのiオプションに空文字を渡す必要がある。これはバックアップ用拡張子で、例えば[shell] sed -i ‘.bak'[/shell]とすると 対象ファイル.bak というバックアップファイルが作成される。iオプションにから文字を渡すことで、既存のファイルに上書きさせることができる。

参考

vimでファイルの文字コードや改行コードを変えて読み直す

windowsで作成したテキストファイルをmacのvimで開くときなど、文字化けが発生する場面での処理方法。

文字コードを変える

[shell]
:e ++enc=euc-jp
:e ++enc=shift_jis
:e ++enc=utf-8
[/shell]

改行コードを変える

[shell]
:e ++ff=dos // CRLF
:e ++ff=mac // CR
:e ++ff=unix  // LF
[/shell]

同時に指定することも可能

[shell]
:e ++enc=shift_jis ++ff=dos
[/shell]

参考

http://nanasi.jp/articles/howto/file/open-with-format.html
https://qiita.com/bezeklik/items/aca37ffb127821311d6b

flexibility.jsとカラム落ち

flexibility.jsでieのflexbox対応しようと思ったらカラム落ちしたので、対応方法をメモ。

[css]
.container {
display: flex;
flex-wrap: wrap;
}
.inner {
width: 32%;
margin: 0 2% 0 0;
}
.inner:nth-of-type( 3n ) {
margin-right: 0;
}
[/css]
[html]
<div class=”container”>
<div class=”inner”>inner</div>
<div class=”inner”>inner</div>
<div class=”inner”>inner</div>
<div class=”inner”>inner</div>
<div class=”inner”>inner</div>
</div>
<!–[if lte IE 9]>
<script src=”https://cdnjs.cloudflare.com/ajax/libs/flexibility/2.0.1/flexibility.js”></script>
<script>
window.addEventListener( “load”, function() {
flexibility(document.documentElement);
}, false );
</script>
<![endif]–>
[/html]

3カラムの一覧。とても単純。
これを fexibility.js を読み込んだ ie で表示したところ、2カラム表示となった。なぜ?

space-betweenを使用

[css]
.container {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.inner {
width: 32%;
}
.inner:nth-child(3n+2):last-child {
margin-right: 34%;
}
[/css]

marginを space-between に任せたらうまくいった。

ちなみにspace-between + after擬似要素だとうまくいかない

3カラムだと以下のように最後にafter擬似要素を加えて最後の行のコンテンツが両端に行くのを防ぐやり方があるけど、flexibility.jsだとafter擬似要素が無視される。

[css]
.container {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.container::after {
display: block;
content: ”;
margin-right: 34%;
}
.inner {
width: 32%;
}
[/css]

ieはいつまでたっても困らせてくるなぁ。

よく使う npx コマンド

さらっとnodeを使用したいときに使うコマンド。

Browser Sync

軽いコーディングとか、自分の環境にサーバ立てて作業していたけど他の人にも見せたいときに便利。
[shell]
# 作業ディレクトリを指定
$ npx browser-sync start -s path/to/directory
# サーバのurlを指定
$ npx browser-sync start -p www.hoge.test
[/shell]
デザイン制作時とかでも、ネットワーク内の他の人に確認してもらうのにも使える。

node-sass

[shell]
$ npx node-sass input.scss -o path/to/directory –output-style compressed
# watch
$ npx node-sass -w path/to/directory
[/shell]