PS4 に外付けSSDを導入

もうMHWは100時間以上プレイしているのですが、今更ながらSSDを導入してみました
起動時間やクエスト出発時のロードが本当に短くなるのでおすすめです

今回はPS4がSATA2までしか対応してないのと、
システムソフトウェアの再インストールが面倒そうだったので外付けにしました
PS4ProならSATA3なので内蔵化した方がいいです

購入したSSDは売れ筋のCrucial SSD 500GB MX500です
250GB以上であればなんでも良いですが、SATA3のものにしておきましょう

外付けケースはSATA3かつUSB3.0以上のものを選んでおけばとりあえず問題ないと思われますが、
メーカーホームページを参照するなどして最大転送速度の説明はよく読みましょう
予算に余裕がある場合は、今後を考えるとUSB3.1 Gen2又はSuperSpeed+という10Gbpsの規格に対応した製品が良いかもしれません
自分はセンチュリーのCSS25U31BKにしました
本当は玄人志向のGW2.5FST-SU3.1が欲しかったのですが、秋葉原の店頭でも売り切れていました。。。

2.5インチストレージには7.5mmと9mmの2種類があり、ケースも対応している厚さが違うので組み合わせに注意しましょう
上記は7.5mm同士の組み合わせになります

ケースにSSDをセットしてケーブルでPS4に繋ぐと自動的に認識されフォーマットを促されます
フォーマット完了後は新規ソフトのインストール先が外付けストレージになり、
設定メニュー>ストレージから内蔵の方にあるソフトを移動させたり出来るようになります

スマホが突然壊れた時にやったこと

先日、普通に操作中に Nexus5X がシャットダウンしてしまいました
ファクトリリセットなどを試してもブートアニメーションを突破出来ず、
故障と判断して諦めてスマホを新調することになったのでその時大変だったことをまとめておきます

一応再起動出来るかの検証

cache, data パーティションの初期化、電源ボタン連打、端末を冷やしてから再起動などググって出て来る方法は一通り試しましたがダメでした
bootloader はアンロックしていなかったのでファクトリイメージの再書き込みで回復出来たのかは未検証です

SIMカードの入れ替え

悲しいことに N5X 付属のピンを紛失しており途方に暮れました
代わりになりそうなものがなかったので仕方なく爪楊枝をカッターで加工して頑張って取り出しました。。。
N5X のSIMスロットの穴は iPhone などと比べて小さく、安全ピンなどの代用品でも太さ次第では使えないので注意が必要です
新しい端末の Xperia XZ1 compact は防水のためかSIMスロットがキャップ式で、トレーも指で簡単に引き出せて感動しました

各種アカウントの復旧

新しい端末に Google アカウントをセットアップする際に、旧端末の2段階認証アプリが使えなかったため詰みかけました
結局PCブラウザでログインしっぱなしだったため、パスワード入力でリカバリコード画面にアクセス出来て助かりました
Slack もアプリで認証していたのですが、たまたまPC版クライアントがログイン状態であればなんとかなる仕様だったため助かりました

このような場合、リカバリコードを保存したり代替のアクセス手段を用意しておかないとサービス次第で詰みます
またコードの保存先も検討が必要で、例えば dropbox に置いても dropbox 自体がアプリでの2段階認証になってると詰みます
自分は最近2段階認証を有効化したものはアプリに登録するのが面倒でSMS認証になっていたため助かりました(dropboxもその一つ)
とはいえ端末の物理的紛失・盗難を考慮するとリカバリコードを紙に印刷しておくのが一番無難ということになるかもしれません…

Switch ソフトのDL版は量販店で買おう

先日運良く amazon で Switch を定価購入することが出来た

早速ゼノブレイド2のDL版をニンテンドーeショップで購入(もちろん定価)した
…のだが、よくよく調べると量販店の方がお得な値段でDL版を提供していることに気付いた
Sony PS4 のDL版は PlayStation Store でしか提供されておらず、
定価で買うのが習慣化していたので完全に油断していたorz

例えばゼノブレイド2は定価だと税込み8618円だが、 amazon ではご覧の通り
自分が確認した時は約1割の値引きがされていた(実際の値段はamazonで確認して欲しい)

ヨドバシも10%のポイント還元が受けられるので、ほぼ同額だ
さらに amazon の場合は下記のような複数本同梱でのディスカウントもしていて、強い

知ってる人にとっては当たり前のことなのだけど、戒めとして記しておく
次からは絶対にニンテンドーeショップ以外で買おうと心に誓った。。。

osx 版 Synergy2 がスリープ復帰後に再接続してくれない

Synergy2 になってから表題の現象が起こっているのに気づいた
ver は 2.0.1, 2.0.2 で確認している

osx 版は一度起動すると以降 Synergy.app を実行しても何も表示されないのがそもそもバグっぽいのだけど、
とりあえずプロセスを kill すると勝手に再起動してくれて繋がったのでスリープ解除後に下記コマンドを自動で実行するようにした

killall synergy-service

自動実行には sleepwatcher を使った
homebrew の場合以下のようにインストール出来る

brew install sleepwatcher
brew tap homebrew/services
brew services start sleepwatcher

インストール後、 ~/.sleep~/.wakeup というシェルスクリプトを作成して置いておくとそれぞれスリープ時と解除時に自動で実行してくれる

PageSpeed Insights スコア向上のためにやったこと

PageSpeed Insights

www.yusukezzz.net のスコアはPC版で90、モバイル向けで87となっている
github.io に置いてるサイトなので出来ることはあまり多くないのだけど、元は70点台ぐらいだったのでここまで上げるためにやったこと2点をまとめておく

CSS, JS の縮小

いわゆる minify と言われているやつ
wordpress だと plugin で出来たりするが、この blog では cloudflare の機能を利用している

Speed タブの Auto Minify から有効化出来る
CSS, JS, HTMLの3種類が選べるが、この blog だとHTMLの minify は不具合があったので CSS, JS だけ使用している

レンダリングをブロックしているコンテンツの排除

同期的に読み込まれる CSS, JS はページのレンダリングを遅くするため、非同期的に読み込むとスコアが向上する
読み込むだけで効果のある単純な JS であれば async または defer 属性を付けるだけでなんとかなる(※)が、
読み込んでから初期化処理を呼び出す必要がある場合は読み込み完了に hook して実行する必要がある
この blog では highlightjs が該当し、ページ末尾で以下のような script を実行している

※document.write しちゃってるような行儀の悪い script や読み込み順に依存関係があるものを除く

<script>
  function loadCss(url) {
    var l = document.createElement('link'); l.rel = 'stylesheet'; l.href = url;
    var h = document.getElementsByTagName('head')[0]; h.parentNode.insertBefore(l, h);
  }
  function loadJs(url, cb) {
    var d = document, t = 'script',
        o = d.createElement(t),
        s = d.getElementsByTagName(t)[0];
    o.async = true;
    o.src = url;
    if (cb) { o.addEventListener('load', function (e) { cb(null, e); }, false); }
    s.parentNode.insertBefore(o, s);
  }
  var cb = function() {
    loadCss('https://www.yusukezzz.net/wp-content/highlightjs/solarized-light.css');
    loadJs('https://www.yusukezzz.net/wp-content/highlightjs/highlight.pack.js', function() {
      hljs.initHighlightingOnLoad();
    });
  };
  var raf = requestAnimationFrame || mozRequestAnimationFrame ||
      webkitRequestAnimationFrame || msRequestAnimationFrame;
  if (raf) raf(cb);
  else window.addEventListener('load', cb);
</script>

もっとも、小規模なものであれば外部ファイル化せずに直接 head タグ内に書いたほうが良い(インライン展開)