ブルースクリーンが出て 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月 っていうのに毎回混乱する

YAPC::Asia Tokyo 2015 に行ってきました

ブログを書くまでが YAPC といわれたので、だいぶ間が開いてしまいましたが、ちょこっとだけ記録を残しておこうと思います。

僕が YAPC::Asia に初めて参加したのは去年で、今年が 2 回目でした。
この規模の勉強会だと、PHP カンファレンスにしか行ったことがなくて、それと比べると YAPC::Asia はチケットが高いので、行きたいけどどうしようかなあと長いこと迷っていて、やっと重い腰を上げたのが去年だったのでした。
もっと早くから行っておけばよかった……。

YAPC::Asia は、他の勉強会と比べると、扱っている内容のレベルが高いような気がします。
新しく始める人に向けた入門的な内容よりも、最前線で働いているエンジニアが、実務でどのようなことに悩み、どのように解決したかというような内容が多く、そういう話って本で学ぶのは難しいので、こういう勉強会で聞けるというのはとてもありがたいと思いました。

印象に残った発表はいくつもあったのですが、まだちゃんと消化し切れていないので、その中のひとつだけについて書こうと思います。

Windows 10 で UA-4FX を認識させる方法

Windows 10 がリリースされたので、さっそくメインで使ってるマシンを、Windows 8.1 Pro からアップグレードしてみました。
8 や 8.1 にアップグレードした時と違ってトラブルは少なく、ほとんどのアプリケーションや周辺機器はそのまま使えたのですが、いくつか問題が出たので、それについて解ったことをここに書いておこうと思います。

続いては EDIROL UA-4FX の問題。

Windows 10 にアップグレードしたら Hyper-V が消えた

Windows 10 がリリースされたので、さっそくメインで使ってるマシンを、Windows 8.1 Pro からアップグレードしてみました。
8 や 8.1 にアップグレードした時と違ってトラブルは少なく、ほとんどのアプリケーションや周辺機器はそのまま使えたのですが、いくつか問題が出たので、それについて解ったことをここに書いておこうと思います。

まずは Hyper-V の問題。