コマンドプロンプト画面の文字色を固定に

コマンドプロンプトの色は、背景を黒、文字を白にしているのだが、プログラムによっては他の色の文字が表示される。 白以外の文字を黒背景に出すと非常に読みにくいので、白固定にした。

まず、レジストリ

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Console]
"ColorTable00"=dword:00000000
"ColorTable01"=dword:00ffffff
"ColorTable02"=dword:00ffffff
"ColorTable03"=dword:00ffffff
"ColorTable04"=dword:00ffffff
"ColorTable05"=dword:00ffffff
"ColorTable06"=dword:00ffffff
"ColorTable07"=dword:00ffffff
"ColorTable08"=dword:00ffffff
"ColorTable09"=dword:00ffffff
"ColorTable10"=dword:00ffffff
"ColorTable11"=dword:00ffffff
"ColorTable12"=dword:00ffffff
"ColorTable13"=dword:00ffffff
"ColorTable14"=dword:00ffffff
"ColorTable15"=dword:00ffffff

PowerShellは独自に色を出しているようで、設定ファイルに色を記述する。 ドキュメントフォルダ、デフォルトだと、C:\Users\ユーザ名\Documentsに、WindowsPowerShellというフォルダを作り、その中にMicrosoft.PowerShell_profile.ps1というファイルを作る。

$Host.PrivateData.DebugBackgroundColor = "black"
$Host.PrivateData.DebugForegroundColor = "white"
$Host.PrivateData.ErrorBackgroundColor = "black"
$Host.PrivateData.ErrorForegroundColor = "white"
$Host.PrivateData.ProgressBackgroundColor = "black"
$Host.PrivateData.ProgressForegroundColor = "white"
$Host.PrivateData.VerboseBackgroundColor = "black"
$Host.PrivateData.VerboseForegroundColor = "white"
$Host.PrivateData.WarningBackgroundColor = "black"
$Host.PrivateData.WarningForegroundColor = "white"

全部白にしないで、多少色を付けても良かったかも。

openssl.so でエラー

gem update で、opensslが2.1.1、2.1.2になると、

127: 指定されたプロシージャが見つかりません。   - 〜〜/gems/openssl-2.1.2/lib/openssl.so

というエラーになる。
対応としては、gems\openssl-2.1.0\lib\openssl.so を、gems\openssl-2.1.2\lib\openssl.so にコピーする。

ライフゲーム

data = <<EOF
++++++++++++++++++++
++++++++++++++++++++
+++++++OOOOOO+++++++
++++++O++++++O++++++
+++++O++++++++O+++++
++++++O++++++O++++++
+++++++OOOOOO+++++++
++++++++++++++++++++
++++++++++++++++++++
EOF

LOOP = false
board = data.split(/\n/)
Y = board.size
X = board[0].size

def alive(board,y,x)
  return 0 if not LOOP and ( x<0 or x>=X or y<0 or y>=Y )
  board[y%Y][x%X] == "O" ? 1 : 0
end

def update(t0, t1)
  (0...Y).each do |i|
    (0...X).each do |j|
      life = alive(t0,i-1,j-1)+alive(t0,i-1,j)+alive(t0,i-1,j+1)+
             alive(t0,i  ,j-1)+                alive(t0,i  ,j+1)+
             alive(t0,i+1,j-1)+alive(t0,i+1,j)+alive(t0,i+1,j+1)
      t1[i][j] =
        case life
        when 2 then t0[i][j]
        when 3 then "O"
        else        "+"
        end
    end
  end
end

while gets == "\n"
  puts board
  next_board = Array.new(Y){"+"*X}
  update(board, next_board)
  board = next_board
end

コンソールから切れたプロセスの標準出力をつなげなおす

コンソールから切れたプロセスを標準出力につなげなおす - 絶品ゆどうふのタレ に、gdbを使って稼働中のプロセスの標準出力、標準エラー出力を繋ぎ直す話が載っていた。
.bash_profileからscreenを起動しているので、ここに書かれた事態に陥ることはまず無いのだが、記憶するためにシェルスクリプトにしておく。

#!/bin/bash
usage(){
    cat <<-EOF >&2 ; exit $1
    Usage:
    既存プロセスの標準出力と標準エラー出力を割り当て直す
    ${0##*/} PID [[-a] OUTFILE]
EOF
}
error(){
    echo "$@" >&2 ; exit 1
}

pid="$1"
test -z "$pid" && usage 0
user=$(ps h p "$pid" o user 2>/dev/null) ||
error "プロセスが見つからない"

test "$USER" = root -o "$USER" = "$user" ||
error "プロセスオーナーが自分ではない"

FLAG=0001 # O_WRONLY

out="$2"
case "$out" in
"") out=/dev/$(ps h p $$ o tty) ;;
-a) FLAG=02001 # O_WRONLY | O_APPEND
    out="$3"
    test -z "$out" && usage 1 ;;
/*) ;;
*)  out=$PWD/$out ;;
esac
touch "$out" 2>/dev/null ||
error "出力先に書けない"

gdb -p "$pid" <<EOF
p close(1)
p open("$out", $FLAG)
p close(2)
p open("$out", $FLAG)
detach
quit
EOF

RD機にキーボードを付けたら快適

HDDレコーダーRD機に、USBキーボードがつなげられることは分かっていたのだが、「有線でキーボードつなぐのも面倒」と思っていました。
ふと、無線キーボードでもいけるのでは無いかと検索すると、物によってはいけそう。

パソコンの他に、PlayStation(R)3、WiiWiiUでも使用可能です。

という説明のあるキーボードをAmazon Prime Dayに買ってみた。問題なくつながり、タイトル修正が快適。
リモコン代わりの操作もできる。