パスワードを忘れた? アカウント作成
14217956 journal
日記

passer-byの日記: uim + anthy on upgraded Debian 10 buster

日記 by passer-by

だいぶ前にデスクトップの Debian を buster にアップグレードしたら、uim+anthy でかな漢字変換ができなくなっていた。
先日ようやく解決したので、その備忘録。

  • apt-get dist-upgrade でパッケージは(例によって改廃は色々あるが)正しく入る。
  • buster では、anthy は EUC で記述されたモジュールが廃止されて UTF-8 版に移行している。これに伴い、各所で露わに anthy を要求していたところを anthy-utf8 に置き換えてやらなければならない。
    • stretch まで anthy を使っていたなら、~/.uim を手でいじっているかもしれないので要確認。
    • uim-pref-gtk を使って GUI 環境で設定したことがあれば、そちらでも anthy が意識せず露わに指定されている可能性がある。「全体設定」の「入力方式の利用準備」にある「使用可能にする入力方式」をきちんと設定して、"Anthy (UTF-8)" を入れて "Anthy" を外すこと。
  • anthy-utf8 でも EUC-JP locale で問題なく使える。

UIM が認識する入力方式名が変わっているのは盲点でした。
個人設定はクリーンインストール環境にアカウント移しても引き継がれる筈なのだけど、他にハマった人はいないのかなぁ……?

14205670 journal
日記

passer-byの日記: xterm で日本語表示 3

日記 by passer-by

苦節○年、ようやく成功した。

  • UTF-8 locale で xterm を起動すること。
  • -fw で iso10646-1 フォントを指定すること。只し、日本語を含んでいないものだと当然NG。
  • -u8 オプションを付け UTF-8 モード(?)にすること。

つまり、

env LANG=ja_JP.utf-8 xterm -u8 \
  -fn -efont-fixed-medium-r-normal--24-240-75-75-c-120-iso10646-1 \
  -fw -efont-fixed-medium-r-normal--24-240-75-75-c-240-iso10646-1

とかすればいい。試行錯誤段階では -report-fonts オプションが役に立った。

いつのまにか man page の記述がえらく充実していて参考になる。試してないが、もしかして -lc +u8 して使うと euc-jp とかでも使えるんだろうか?

(追記 2020-06-09)-fn の指定フォントが間違っていたので修正。

13575353 journal
Windows

passer-byの日記: Windows10 on vmware

日記 by passer-by

実は1年ほど前に Windows10 が creators update になってから、vmware 上の仮想マシンが画面真っ黒で使い物にならなくなっていた。アップデートしなければ普通に使えていたので古いバージョンのまま使ってきたのだけど、そろそろサポートが切れそうなんでなんとかしてみることにした。

今までは仕事の都合で入れていた某監視ソフトが悪さをしているもんだと思い込んでいた。で、それを簡単にはアンインストールできそうにないのでこの際だからと fall creators update を新規インストールして、無事に走ったように見えたのだけど。

VMware tools をインストールしたところで、やっぱり画面真っ黒になった。どうやらずっとこいつが悪さをしていたらしい。とっくにサポートの切れた VMware 7 をずーっと使ってきたのだけど、もはやこれまでか。

という訳で、画面真っ黒になってた仮想マシンを急遽ダウンロードした VMware workstation 14 で動かしたところ、無事に使うことができた。そうかサポート切れの古い仮想マシンでは最新の OS が使えないことがあるのか、と最新版ライセンスを手配中。仕事で使う物だからね、やっぱライセンスは買わないと。ただ、掛売りしてくれるところを探すのが大変なんだよなぁ……。

2018-04-15 追記:そうそう、使ってるのは HiDPI な環境なんだけど、firefox と違って GDK_SCALE=1 としないと表示が大き過ぎた。同じ gdk を使ってて何故違いが出るのかは謎だけど、個人的には HiDPI を意識せずに済む VMWare の方が好印象。

13553976 journal
UNIX

passer-byの日記: GB2312 のメール

日記 by passer-by

ここ何年か、時々 GB2312 と銘打ったメールを受け取ることがあって(英語メールに返信する形で Shift_jis に含まれない文字を含むメールを書くと、一部のメーラで生成されるらしい)、mutt で読むのに苦労していた。iconv で文字コードを GB2312 と指定しても、色々と文字化けして読めなかったりする。

調べてみると、やはり難儀した先人たちがちゃんと解決してくれていた。要するに GB2312 と言いつつ実はそれを拡張した GBK という文字セットになってるらしく、それは更に GB18030 に拡張されて中国の正式文字コードになってるという事。なので、iconv -f GB18030 -t UTF8 するとすんなり読めた。

なお、Shift_JIS や EUC-JP 環境を使ってる人は、これを更に nkf -W8 とかで受けて使うと良い。というのも、iconv は出力側文字セットに含まれてない文字を受け取ると、そこで動作を止めてしまうから。nkf なら -I オプションで ISO-2022-JP に無い文字は「〓」に変換してくれるし、知らない文字はそのまま放置して更に先に進もうと頑張ってくれる。nkf 偉い。

という訳で、以下のように日本語文字コードだけ nkf を使う変換フィルタをシェルスクリプトをでっちあげて使用中:


#!/bin/sh
# usage: $0 -f CODESET_FROM -t CODESET_TO [[[input] input] ...]
#
# いわゆる二条項BSDライセンスで。(2018-04-30 追記)
# 可能なら著作権放棄でいきたいものですが。

# parse the -f and -t options, and remove them from $*
while getopts f:t: name
do
    case $name in
        f) INCODE=$(echo $OPTARG | tr A-Z a-z);;
        t) OUTCODE=$(echo $OPTARG | tr A-Z a-z);;
    esac
done
shift $(($OPTIND - 1))

case ${INCODE:=iso-2022-jp} in
sjis|shift-jis|shift_jis)
    CMD="nkf -SX"
    ;;
ujis|euc-jp|eucjp)
    CMD="nkf -EX"
    ;;
iso-2022-jp*)
    CMD="nkf -JX"
    ;;
utf-8|utf8) # entry added on 2018-04-02
    CMD="nkf -WX"
    ;;
gb2312) # subset of GB18030, which includes Japanese and Korean characters.
    CMD="iconv -f gb18030 -t utf-8"
    ;;
*)
    CMD="iconv -f $INCODE -t utf-8"
    ;;
esac

case ${OUTCODE:=utf-8} in
sjis|shift-jis|shift_jis)
    if [ "${CMD%% *}" = nkf ]; then
        CMD="$CMD -sI $@" # -I added on 2018-04-02
    else
        CMD="$CMD $@ | nkf -W8X -sI"
    fi
    ;;
ujis|euc-jp|eucjp)
    if [ "${CMD%% *}" = nkf ]; then
        CMD="$CMD -eI $@" # -I added on 2018-04-02
    else
        CMD="$CMD $@ | nkf -W8X -eI"
    fi
    ;;
iso-2022-jp*)
    if [ "${CMD%% *}" = nkf ]; then
        CMD="$CMD -jI $@" # -I added on 2018-04-02
    else
        CMD="$CMD $@ | nkf -W8X -jI"
    fi
    ;;
utf-8|utf8) # entry added on 2018-04-02
    if [ "${CMD%% *}" = nkf ]; then
        CMD="$CMD -w $@"
    else
        CMD="iconv -f $INCODE -t $OUTCODE $@"
    fi
    ;;
*)
    CMD="iconv -f $INCODE -t $OUTCODE $@"
    ;;
esac

if [ $INCODE = $OUTCODE ]; then
    CMD="cat $@"
fi

eval "$CMD"

拙いコードなのはしょうがないとして、ちゃんと POSIX compliant になってるかがちょっと心配。

(追記)nkf だけを使うときに -I フラグを忘れていたのを追加。utf-8 対応エントリを入出力共に忘れていたのを追加。on 2018-04-02

13553895 journal
Firefox

passer-byの日記: モバイル版 firefox のブックマーク

日記 by passer-by

Sync 目的で firefox on iPad を使っていてブックマークを編集できないことに辟易していたのだけど、デスクトップ版からの「モバイルのブックマーク」を見ることでアクセスも編集もできることに気づいた。これでようやく並べ替えとタイトルの修正ができる……。

13502284 journal
日記

passer-byの日記: NTFS disk サルベージ(続) 4

日記 by passer-by

前回の続き。といっても少し。

HDD のクラッシュの方は機械的トラブルを想定してディスクイメージを ddrescue で吸い出してから TestDisk で救出する戦略を考えた。が、考えてみると ddrescue が走るのは Linux だが十分な大きさを持つドライブは NTFS だけだったので、急遽 Windows ホストの VMware で Linux を走らせそこから共有フォルダ機能で書き出すことに。

で、やってみると VMware からの USB 経由アクセスが死にそうなほど遅い事が判明。なのでおとなしく諦め、SSD の場合と同じく Windows から TestDisk で NTFS イメージを読んで必要なディレクトリ以下をコピーすることにした。

TestDisk の挙動を見ていると、問題のディスクは(1)最初読むのに時間がかかる(2)ある瞬間以降に全領域が等しく読めなくなる、という症状なことがわかった。ので、コピー途中で読めなくなる→ディスクの USB を抜き差しして TestDisk 再起動して失敗したサブディレクトリから再開、の繰り返しでサルベージを完了する。なんか途中から失敗しなくなってその後数日は安定して読めていたのは色々と謎。読めなくなる時はまるごとダメなので、多分電気的なトラブルなのだと思うのだけど、どーしてある時から安定したのやら。再利用は怖いので考えてないが。

13494971 journal
Debian

passer-byの日記: VMware 14 の共有フォルダ(Linux ゲスト)

日記 by passer-by

挙動不安定でクラッシュしたディスクをサルベージするのに、ddrescue というソフトでエラーセクタを適宜読み飛ばしながらディスクイメージを作って、それに対して TestDisk を実行すればよいらしい、という事がわかった。

ddrescue が走るのは Unix(Linux)。然るに十分な空きのあるディスクは Windows ボリュームのみ。なので、そのボリュームを持つマシン上の VMware で Linux を走らせて、共有フォルダ機能でホスト側ディスクにディスクイメージを作ることにする。

Linux は慣れで Debian 9 (stretch) を選択。VMware をインストールして、Debian を「最小のCD」という奴を使って導入して(GUI は無しでいく)、更に open-vm-tools パッケージを導入。これで vmware tools が走っているのと等価な状態になるので、VMware の方で共有フォルダの設定をしてから

# vmhgfs-fuse /mnt/hgfs -o auto_unmount -o allow_other

すれば /mnt/hgfs/ 以下に VMware 側で設定したフォルダがマウントされる。
ls -la /mnt/hgfs して見えるディレクトリは dr-xr-xr-x なパーミッションだが、実際に書いてみるとホスト側の設定に従って書き込みできる(この際、ホスト側の共有設定は不要)。

起動時に自動的にマウントするように設定できれば尚良いのだけど、/etc/init.d/open-vm-tools をいじってもどうもうまくいかない。きっと LSB に従った init script の書き方をわかってないだけなのだと思うのだけど……。

13488062 journal
Windows

passer-byの日記: NTFS disk サルベージ

日記 by passer-by

背景:

  1. ノート PC の内蔵 SSD を交換すると、何故か外したディスクの中身が読めなくなったりその前にdd で移行構築した筈の新ディスクの中身が消えたり(パーティション自体が消えたり)した。どうも外付け SATA I/F を通した時と PC 内蔵 SATA I/F を通した時とでディスクジオメトリの見え方が違ってしまう模様。原理は知らない。
  2. デスクトップ PC の内蔵 HDD がクラッシュした。正確には、ディスクの中身が読めなくなった。バックアップをこの何か月かサボってたらしく、その分だけでも救い出せないかと泣き付かれる。

やりたい事:
なんとか読み出せるディスクイメージから、できればパーティションを復活させる。それができなくても断片的にでもファイルを救出する。HDD の方はアクセスと共に劣化する可能性もあるので慎重に。

使ったツール:
TestDisk Windows 版。基本的にパーティションテーブルを復旧/再構築するソフトなのだが、ディスク書換の前に対象パーティションの中を読んでファイル単位で外部ディスクにコピーできるのが秀逸。

手順:
「TestDisk」の使い方を参考に実施。但し、SSD 復旧の方はパーティションを復活させるだけではダメで(復活させたパーティションの block size が 4096 bytes と、NTFS の標準値 512 bytes と異なっていた)、それが判明した時点でまずどうしても救い出したいフォルダだけを別ディスクにコピーして救い出した。
(続く)

13374211 journal
Windows

passer-byの日記: Windows10 の復旧 4

日記 by passer-by

いつものように Windows10(仮想マシン)にアップデートが来たので、適用して再起動したら起動しなくなった(それを再「起動」というのかはともかく:-)。具体的には、最初のロゴ+くるくるが表示され、それがフェードアウトしたらそれっきり。とはいえ、暫くはディスクアクセスは続いていた模様。何度再起動をかけても同じ状態になるので、セーフモード的な物に入る方法をぐぐって探した、その備忘録。

「起動に失敗する時の、Windows10 の回復オプションへの入り方」

  1. 電源を入れ、ロゴ+くるくる画面まで持っていく
  2. くるくるしている間に電源を強制切断する
  3. 上記を計2度繰り返す
  4. その次からはロゴ+「自動修復を準備しています」な画面になる

回復オプションに入ったら、以前のバージョンに戻すを選ぶなり、セーフモードで起動するなり。

13323295 journal
Firefox

passer-byの日記: firefox on linux

日記 by passer-by

Firefox を長く使っていると、こいつや OS やハードウェアの更新(バージョンアップ)に伴って色々と不都合が生じることがある(あった)。その備忘録。

HiDPI 設定
Firefox が使っている GDK の機能により、高 DPI ディスプレイ環境(GDK が DPI と画面ピクセル数から勝手に決める模様)になると勝手に全てを2倍にスケーリングして描画するようになる。ひどい仕様だと思うのだが(全て pt 単位で扱って、pixel 単位を要求してくる奴には pix → pt 変換係数を設定すれば良いだろうに)、この機能を使わないと妙に横幅が狭く描画されるページが出てきたりする。
という訳で、強制的にこれを ON にするには環境変数 GDK_SCALE を 2 に設定すればよい。整数値のみ設定可能で、1 にすると等倍描画するんじゃないかと思う(未検証)。
ところで、別に GDK_DPI_SCALE というのもあって、こちらはメニュー等のフォントのみをスケールさせる。正の実数値が設定可能な筈。例えば、GDK_SCALE=2 かつ GDK_DPI_SCALE=0.5 とすると、メニュー等だけ小さいフォントで描画される。やってみたけど、こちらをいじるメリットを感じなかったので未設定のまま。
日本語変換
いつの頃からか firefox や thunderbird で日本語入力ができなくなった事がある。メールは mutt を使っているので大きな影響は無かったのだが、暫く不便だった。
色々調べてみると、GTK_IM_MODULE を設定してやらなければならないらしい。という訳で、現在の設定は

    XMODIFIERS="@im=uim"
    GTK_IM_MODULE=xim

という状態で uim を使用。なお SCIM を使うなら

    XMODIFIERS="@im=SCIM"
    GTK_IM_MODULE=scim

だそうだ。大文字小文字の区別に意味があるのかどうかは未検証。
typodupeerror

未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー

読み込み中...