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 の問題。

カーソルキーを押したときにpecoの表示がバグる

zsh でコマンド履歴を表示するのに peco を使っているのですが、root ユーザにsuした状況で peco を起動し、選択項目を変更するために上下カーソルキーを押すと、表示が崩れる問題に悩んでいました。12
カーソルキーを使わず、Ctrl + N / Ctrl + P を使えば、表示が崩れないので、しばらくそうしていたのですが、やっと原因となる要素が特定できました。

LANG=en_US.UTF-8 だと崩れるみたいです。

英語に設定されているとどうして崩れるのか、というところまではまだ調べられていないのですが、とりあえず原因が分かったので、対策を講じられそうです。

zsh のコマンド履歴を peco で表示するために、.zshrc に以下のような設定を書いているのですが、

function peco-select-history() {
    local tac
    if which tac &> /dev/null; then
        tac="tac"
    elif which gtac &> /dev/null; then
        tac="gtac"
    else
        tac="tail -r"
    fi

    BUFFER=$(\history -n 1 | eval $tac | peco --query "$LBUFFER")
    CURSOR=$#BUFFER
    zle clear-screen
}

if which peco &> /dev/null; then
    zle -N peco-select-history
    bindkey '^r' peco-select-history
fi

赤字で示した peco を呼び出している部分に、環境変数LANG=ja_JP.UTF-8を指定するようにしました。

BUFFER=$(\history -n 1 | eval $tac | LANG=ja_JP.UTF-8 peco --query "$LBUFFER")

これで、peco を表示している間だけLANG=ja_JP.UTF-8となり、表示が崩れなくなりました。

  1. Windows 8.1 + PuTTY-GDI で Fedora 21 or CentOS 6.6 + zsh + peco v0.3.2 の環境で発生しました。
  2. PuTTY で使用しているフォントは Ricty for Powerline で、文字コードの設定は UTF-8 で "CJK 用の文字幅を使用する" にチェックを入れています。