GMOのロリポップで無料のSSL(Let's Encrypt)をカスタム設定で使う方法

ムームードメインのDNSサーバー(ムームーDNS)を利用しているという環境において、CNAMEレコードではなくAレコードでロリポップのサーバーを指定したら無料SSLを使用できるボタンが出てきました。

通常はロリポップのネームサーバーを指定することが公式のようですが、それだとGMOのサービス縛りになってしまいますので、カスタム設定に拘りたいと考えている人は多いと思います。

ロリポップのサーバーは激安かつ、最低限の使用可能レベルを維持しているので、使いたい人は多いと思いますが、それは一部のシーンにおいてであってまともな使用シーン(Dockerでアプリケーションを稼働させたいとかJavaでWebアプリケーションを運用したいとか、Railsがどうとか)では対応できないので、カスタム設定を使いたい人は多いはず。

JavaScriptでquerySelectorAllの結果をarrayで扱う

検索結果の最上位ページが少し分かりづらかったのでこちらは答えを先に。またこの記事は常に最新になるよう編集の努力をしていきたいなあと思います。

querySelectorAllの結果をforEachに渡したい

Array.prototype.forEach.call(document.querySelectorAll('a'), function(a) {
console.log(a.href);
});

querySelectorAllの結果をmapに渡したい

var result = array.prototype.map.call(document.querySelectorAll('a'), function(it) { return it.href; });
console.log(result);

querySelectorAllの結果をsliceに渡したい

var array = Array.prototype.slice.call(document.querySelectorAll('a'), 0);
array.forEach(function(it) {
console.log(it.href);
});

PHP7でsession_regenerate_id()でFailed to create(read)というエラーが出る場合の対策

久しぶりに昔のPHPのコードを触る機会がありPHP5系からPHP7系にアップデートしていた時のことです。Sessionハンドラーでmysql関数が使われていたのでpdoに書き直していたところこんなエラーが出てくるようになってしまいました。

Catchable fatal error: session_regenerate_id(): Failed to create(read) session ID: user (path: /var/lib/php/sessions) in /app/src/handler/session.php on line 18

session_regenerate_idはSessionIDを再発行してくれるものなんですが、readメソッドが文字列を返していない時にこのようなエラーが出てくるようでした。

絶対文字列を返しているつもりだったんですが、まじまじと眺めて、最終的に返す値の型をよくチェックしたら文字列型が返っていなかったみたい。思い込みって恐ろしいですね。

参考

https://www.glenscott.co.uk/fixing-session_regenerate_id-failed-createread-session-id-error/