動かざることバグの如し

近づきたいよ 君の理想に

VSCodeでbinding.pryをサジェスト入力できるようにする

頑張って拡張機能作ろうと思ったけど基本設定でできたわ(

やりたいこと

RubyもといRailsデバッグではかかせない「binding.pry

が、入力するのも億劫なので、サジェストで一発で入力できるようにしたい

やりかた

VSCodeの世界ではサジェスト周りの設定をスニペットとよぶ。

  • VSCodeを開いた状態で「Cmd+Shift+P」でコマンドパレットを開き、
  • user snippet」と入力
  • Configure User Snippet」という項目が出てくるのでエンター
  • すると言語一覧が表示されるので「Ruby」を選択

するとJSON形式の設定ファイルが開かれる。VSCodeではスニペット設定もJSONで書くのである。

で、以下を追加

{
    "Debug Console": {
        "prefix": "pry",
        "body": "binding.pry\n",
        "description": "A runtime developer console"
    }
}

あとは.rbのファイルを開いたときに「pry」と入力してエンターすれば自動で binding.pry と保管入力されるはず やったね

Nginxで拡張子の.phpを省略してもPHPが動作するように設定したい

rewriteは魔剤 使いすぎると死ぬ

やりたいゴール

http://hogehoge.turai.work/foo でアクセスされたときに、/foo.phpリダイレクトなしに実行して表示したい

仕様としては以下のような感じ

Nginxの設定

以下は普通のNginxの設定例

server {
    listen 80;
    server_name hogehoge.turai.work;
    root /app/public;

    index index.html index.php;

    location ~ \.php$ {
        fastcgi_pass php-fpm:9000;
        include fastcgi_params;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

これにRewriteを付け加えるだけ

server {
    listen 80;
    server_name hogehoge.turai.work;
    root /app/public;

    index index.html index.php;

    location / {
        if (!-e $request_filename) {
            rewrite ^(.*)$ /$1.php;
        }
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        fastcgi_pass php-fpm:9000;
        include fastcgi_params;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

これで systemctl reload nginx で反映すればおk

PHPで「Class 'UConverter' not found」エラーになる

久々にPHPの記事 コード探してもないと思ったら単にライブラリ不足だった

環境

エラー内容

PHP実行したら

Fatal error: Class 'UConverter' not found in ...

でエラーになる。

ソースgrepしても出てこないからおかしいなと思ったらUConverterは標準のクラスだった

じゃあなんで見つからないのかって言うと国際化関数と呼ばれるintlを追加インストールしないと行けないため

インストール

apt install php5.6-intl
or
apt install php7.2-intl

DockerでPHPのイメージを使っている場合は

docker-php-ext-install intl

でおk

install memo

rbenv

# apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm5 libgdbm-dev libjemalloc-dev
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
mkdir -p ~/.rbenv/plugins
cd ~/.rbenv/plugins
git clone git://github.com/rbenv/ruby-build.git
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 2.6.4

/etc/profile.d/rbenv.sh chmod +x 必須

export RBENV_ROOT="${HOME}/.rbenv"
if [ -d "${RBENV_ROOT}" ]; then
  export PATH="${RBENV_ROOT}/bin:${PATH}"
  eval "$(rbenv init -)"
fi
rbenv global 2.6.4
gem update --system
gem install bundler

cert-bot

as root

git clone --depth 1 https://github.com/certbot/certbot
/root/certbot/certbot-auto  plugins
/opt/eff.org/certbot/venv/bin/pip install certbot-dns-route53
/root/certbot/certbot-auto  plugins
/root/certbot/certbot-auto certonly --dns-route53 -d 'turai.work' -d '*.turai.work' --email xxxxxx@gmail.com --agree-tos -n

docker

apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
apt-get install docker-ce docker-ce-cli
adduser thr3a docker # 再ログイン必須
COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4)
sh -c "curl -L https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose"
chmod +x /usr/local/bin/docker-compose

nodejs

curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
apt-get update && sudo apt-get install -y nodejs yarn

依存ライブラリ

apt install -y libmysqlclient-dev libsqlite3-dev

raspiのIP登録

Nexus 5XにAndroid10をインストールしてみた

公式はサポートは打ち切ったが、カスタムROMだとギリギリいける

Nexus 5Xのバージョン古い問題

Nexus 5Xは国内発売の最後のNexusシリーズだが、2015年発売ということもあって、悲しいことにAndroid 10は公式としてはリリースされることはない。ってか何ならAndroid 9ですでに切られているので最新が8.1のままである。

が、有志の方々によって、Android 9が使えるようになったりとかなんとか新しいバージョンが出てたのだが、先日リリースされたAndroid 10もNexus 5X版がリリースされた。

ということで早速入れてみた 自己責任なのと、Betaなので注意

ダウンロード

スレッドは以下

forum.xda-developers.com

その先のここからダウンロードする。今回は「PixelExperience_bullhead-10.0-20190916-2100-BETA-OFFICIAL.zip」を使った

インストール

ここが若干厄介で、通常なら

  • TWRP起動
  • DataとかSystem領域を全部Wipeする
  • ダウンロードしたROMをインストール

で可能だが、Android 7以降では強制的にデータの暗号化がされてしまって、そのデバイスにWipeしたあとインストールしても正常に起動しないっぽい(ずっとロード画面が表示される

ので、既存のROMの暗号化が始まる前にAndroid 10をインストールする必要がある 手順は以下

  • ここから公式ROMをダウンロード
  • ZIPを解凍して初期化 flash-all.batを実行する
  • スクリプト実行完了後勝手に再起動するのでボリュームキー下をずっと押しておくことでブートローダーへ行くようにする
  • TWRPをインストールして全領域Wipe後ROMをインストール

スクリーンショット

最初の画面 無事に起動した

f:id:thr3a:20190923004411p:plain

初期設定完了後のホーム画面 質素である

f:id:thr3a:20190923004415p:plain

ほとんどアプリは入ってなかったが、プレイストアは最初からインストールされててアプリも入れることができた

f:id:thr3a:20190923004419p:plain

Android 10

f:id:thr3a:20190923004403p:plain

Android 10の目玉機能の1つ、「ダークモード」 個人的には見づらくなるので使ってない

ChromeYoutubeなどのGoogle謹製アプリですら対応してないのでサードパーティが対応するのはもっとあとになりそう。。

f:id:thr3a:20190923004406p:plain

ステータスバーをおろした様子 最近Android触ってなかったが、標準でブルーライトカット機能が付いてるの嬉しい

f:id:thr3a:20190923004409p:plain

まぁ正直なところEssentialPhoneと比較しちゃうとスペックが雲泥の差だし、動作が一昔のAndroidのそれって感じが否めない(ブラウザですらカクカクする

が、安価な検証端末としては有能なのでは>Nexus 5X