AutoHotKey を更新したら Invalid Hotkey といわれた

Windows 10 のクリーンインストールに伴って、色んなソフトを入れ直していたのですが、その中で AutoHotKey 1.1 系の最新版を入れたところ、今まで使っていたスクリプトが読み込めなくなってしまいました。

読み込めなくなったのは以下の設定

; Ctrl + 無変換 で ESC キー
^vk1Dsc07B::Send, {Esc}

調べてみると vk__sc___ という表記の仕方に仕様変更があったみたいで、修正が難しそうだったので、ひとまず AutoHotKey のバージョンを最後のこの表記が有効だった 1.1.26.01 に戻したら、無事スクリプトが読み込まれました。

古いディスクからレジストリ情報を抽出

Windows 10 をクリーンインストールしたので、インストールしていたソフトを片っ端からインストールし直しています。

最近は C:\Users\<ユーザー名>\AppData\Roaming に設定を保存してくれているものが多いので、ここのファイルをコピーするだけで半分くらいのソフトは復元できました。
ただ、レジストリに設定を保存しているタイプのソフトは復元が難しく、今まで不可能だと思い込んでいたのですが、レジストリの情報はファイルに保存されているらしく、そのファイルから値を取り出せば、設定を復元できるようです。

クリーンインストールしたらブルースクリーンが出なくなった!

ブルースクリーンが出て Windows が起動しなくなったのですが、新しい SSD に Windows 10 をクリーンインストールしたら、ブルースクリーンが出なくなりました。

Windows 10 のインストール時に、インストール先のドライブを選択するところで 0x80300024 というエラーが出たのでググってみたら、どうやらドライブを接続する順番に制約があるらしく、それを直したら無事インストールできました。

もしかしたらブルースクリーンの INACCESSIBLE BOOT DEVICE の原因ってこれだったのかも……?

ブルースクリーンが出て Windows が起動しなくなった話

Windows 10 にしてからというもの、しばしばブルースクリーンが現れるようになり、気にはしてたんですけど原因が解らず放置していたら、Intel CPU なのに Meltdown/Spectre 脆弱性に対応する Windows Update で INACCESSIBLE BOOT DEVICE というブルースクリーンが出て起動しなくなってしまいました。

以下の記事の方法に従って、原因と思われるプログラムをアンインストールすることで一時は起動するようになったのですが、数日後、またブルースクリーンが現れ、また起動しなくなってしまいました。

自作 PC なのでパーツを最小限にして試してみたりもしたのですが、最小構成 + C ドライブの SSD でもブルースクリーンが発生したので、原因として思い付くのは……

  • Windows がソフトウェア的に壊れている(ただし修復はできなかった)
  • C ドライブのファイルシステムが壊れている(ただし chkdsk では問題は発見されなかった)
  • C ドライブに使っている SSD が壊れている(ただし S.M.A.R.T は正常)
  • マザーボードが壊れている
  • CPU やメモリなどのその他のパーツが壊れている

で、まず試せるのは新しい SSD を使って OS をクリーンインストールすることかなあ。
それでダメだったらマザーボードごと一式買い直すか……?

CentOS 7 で Let's Encrypt が使えなかったときにやったこと

Let's Encrypt で SSL 証明書を取得するための certbot が CentOS 7 でうまく動かなかったので、そのときにやったことをメモしておきます。

yum でインストールした certbot コマンドを実行すると、次のようなエラーが発生してしまいました。

ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.

pyOpenSSL というモジュールを v0.14 以上にアップデートしてねと書いてあります。
pyOpenSSLcertbot と一緒に yum でインストールしたものが入っていて、バージョンは v0.13.1 でした。
これをアップデートすればよさそうです。

Python モジュールのアップデートには pip コマンドを使います。

$ sudo pip install --upgrade --force-reinstall pyOpenSSL

このとき --force-reinstall を付けないとアップデート後も同じエラーが出てしまいました。

以上で certbot コマンドが使えるようになりました。

Perl でファイルの更新日時を Time::Piece で取得する

もしかしたらこれらをまとめてやってくれるモジュールがあるのかもしれないけど……

use common::sense;
use Time::Piece qw/localtime/;

my ($accessed_at, $updated_at, $created_at) = map { scalar localtime($_); } (stat $file)[8..10];

stat 関数で取得した、ファイルのアクセス日時,更新日時,作成日時を map を使って Time::Piece オブジェクトに変換しています。

初めスカラーコンテキストの指定をしてなくてハマったのでメモしておきます。

PuTTY+tmux 環境で Ctrl+矢印 が効かなかった原因が解ったかも

tmux で <Ctrl+矢印> を使いたい場合は、.tmux.confに以下のように設定しろという記事をよく見かけます。

set-window-option -g xterm-keys on

しかし、PuTTY から SSH アクセスしている時に、この設定をしていても、<Ctrl+矢印> が tmux の中で実行しているプログラムにうまく伝わってくれなくて、そのために Ctrl + 左右キーで vim のタブ切り替えをする という設定が使えず、もう何年も tmux を使うのを諦めていました。

ところが、ようやくxterm-keysの意味と、PuTTY を使った環境でなぜこの設定が効かなかったのかが解ってきたので、改めてここに記しておきます。

「スタート画面に表示するフォルダーを選ぶ」が選べなくなった

Windows 10 でスタートメニューのバグがなかなか直らないので、試しに Insider Preview にしてみたところ、Hyper-V で Linux が起動しなくなってしまったので、「回復」を使って戻したのですが、するとスタートメニューに配置していた項目のほとんどが消え、それらと一緒に「電源」の上にあった「設定」などの項目も消えてしまいました。

この「設定」などの項目は、「設定」→「パーソナル設定」→「スタート」→「スタート画面に表示するフォルダーを選ぶ」で表示するかどうかを設定できるのですが、項目がグレーアウトして選べなくなってしまいました。

これを直す方法を見付けたので、メモしておきます。

GitLab の日付を日本人に馴染むように書き換える Greasemonkey

GitLab で英語形式で表示される日付を、日本語形式に変換する Greasemonkey を書いてみました。1

コミットログの 21 Oct, 2015 みたいなのを 2015/10/21 に置き換えます。
ツールチップの日付も変換しようと試みていますが、GitLab では timeago という jQuery プラグインが使われており、読み込むタイミングによってはうまく変換できないかもしれません。

公開はしますが、JS に関しては今回初めて Class を作ってみたというくらい素人なので、各自直して使っていただければと思います。

  1. Oct ってどう見ても 8 なのに 10月 っていうのに毎回混乱する