飴屋

開発日記

2026/3/14

長文を書いていて、途中でプログラムがハングアップする・・・最近あんまりなかったんですが、昨日久しぶりに発生しました。Windows端末でNAS関連のアクセスがうまくいかなくて、ファイラーとテキストエディタとビデオプレイヤーを巻き込んで反応しなくなっちゃいました。テキストエディタはTeraPadです。保存処理を試したんですが、半分くらい本文が保存された状態でtxtファイルが終わっていました。久しぶりの絶望感でした。

プログラムのGUIは完全に無反応で半分白っぽく描画されています。いつもなら諦めるのですが、今回ちょっとだけ抗ってみることにしました。タスクマネージャーを開いてプロセスが残っていることは確認できました。できそうなことは・・・メモリダンプファイルの作成くらいかな?TeraPad.DMPという200MBほどのファイルができました。試しにこれをTeraPad自身に開かせてみましたが、ファイルが大きすぎてダメでした。ノートパソコンの電池が尽きそうなのでこの日は諦めて寝ました。

翌日、デカいファイルを開けそうなエディタとして、VS Codeを試してみました。・・・開けたけど、200MBの制御文字だらけのバイナリの塊から何をどう探していいのかわかりません。ここは一旦AIさんに聞いてみましょう。

長文書いてたTeraPadがハングアップして保存が中途半端になっちゃいまして、とりあえずメモリダンプだけとっておいたんですが、テキストは復旧できるでしょうか?
TeraPadがハングアップして保存が中途半端になってしまった場合、メモリダンプからテキストを復旧できる可能性はかなりあります。ただし、成功率は状況によって大きく変わります(70〜90%くらいの感覚で、多くの人は取れてますが、100%ではありません)。TeraPadは軽量エディタの中では比較的素直にメモリ上にテキストデータを保持していることが多く、Notepadより復旧しやすい部類に入ります。...

いけそうな感じの回答!とりあえず進められた順に試してみます。まず、stringsコマンドを試します。これはファイルから文字列だけ抜き出すコマンドだそうです。デフォルトでも入ってましたが、Sysinternals Strings(Microsoft公式ツール)を勧められました。こっちには64bit OS用にstrings64.exeが同梱されており、-uオプションでユニコード文字も対応できるとのこと・・・しかし、日本語は全然拾えませんでした。文章中の英数字は拾えたので、多分、データとしては残ってるんじゃないかと思います。

次にバイナリエディタHxDを試してみます。200MB中身を見たくはないので、先ほど見つけた英数字をヒントに検索してみます。ここで気が付いたのですが、英数字のお尻にヌル文字がついていました。これはUTF16-LE(リトルエンディアン)の特徴と一致する!ってAIさんが我がことのように喜んでました。とりあえず、この辺かとあたりを付けた場所を選択して「ファイル > 選択範囲を保存」でテキストファイルとして保存してみます。

さて、バイナリを含んだUTF16-LEテキストファイルを何で読もうかと思いましたが、VS CodeはUTF16-LEも扱ってくれました。これでうまくいきました!復旧された文章をTeraPadにペーストして一件落着です。(時間はかかってしまった)うまくいったので。今後はメモリダンプを念のため保存しておくことにしようと思います。

2026/2/21

先ほど新しいAndroidアプリ「カーリングゆるくない」の公開申請作業を行いました。冬季オリンピックがそろそろ閉会式となって、この寝不足生活にも終止符が打たれそうですが、ウィンタースポーツの中でカーリングが一番視聴時間が長い私です。ロコ・ソラーレ(チーム)がメダルを取って改めて注目が集まるカーリングですが、フォルティウスっていうロコ・ソラーレの天敵みたいなチームが今回のオリンピックに出場して、大方の予想ほどにはパフォーマンスが上がんなかったんですよね。で、素人なので自分ならあーする、こーするをいろいろ妄想してたわけですが、実際どうなのかちょっと検証アプリを作ってみたのでした。選手の目線でいざ投石しようとすると、ハウスまでなんと遠いこと・・・。みんなこんなこと平気でやってのけてるのかっていう気分と、トップレベルのチームの精度の出し方がさっぱりわからない気持ちで包まれました。

せっかくなので、公開してみますので、何か「そうじゃない」があれば教えてください。

2026/2/13

先日ついにjQueryのメジャーバージョンが4に上がりましたので、使用サイトでちょこちょこ交換作業を行っています。手厚かった後方互換性をいよいよ切って、モジュールとしてスリムに軽快になるくらいの印象でいたので、そんなに問題にならないだろうと思っていて、実際にそれほど問題が出なかったのですが、地味にカットされたdeprecatedメソッドを使っていたことがさっき判明しました。

jQuery.trim(string)

前後の空白文字をトリミングしてくれるメソッドですね。

今はString.prototype.trim()があるので、随分使った記憶はないのですが、太古のスクリプトの中に含まれていましたよ。

string.trim()

修正も大変ではなかったのですが、似たようなものあるかなと調べたけど、あんまりなさそうでした。(自分的には)jQuery.isArrayとか昔使ってたような気がしますが、探っても出てこなかったです。

ES Modules形式に対応したようなので、今度importしてみましょうかね。

2026/2/8

今日は衆議院の選挙の日ですが、あいにくの雪模様です。今回は注目度が高いのかわかりませんが、期日前投票に長蛇の列ができていたそうです。待たされるのと雪道を行くのとどっちがよかったかな?(午後に行く予定)冬季オリンピックも始まっていて、ジャンプ(ノーマルヒル)とスノーボード(ビッグエア)で早速メダルの色が三種類揃いました。これはしばらく生活時間帯が乱れちゃうな。

さて、今日はメーラーの話です。今どきはソフトウェアとしてPCに入れてない人も多いかもしれませんが、うちではメイン機にThunderbirdが入っていて、そいつを使っていたりします。スパムと広告とシステムからの定期動作通知がほとんどですが、お仕事のメールもいただくのです。ただ、長く使っている割に、あんまり操作方法を知らないなと思い、ちょっと調べたのでメモっておきます。今は3カラムで「メールフォルダペイン」「メール一覧+メール詳細」「スケジュール+TODOリスト」というレイアウトで使っているんですが、キーボードでフォルダと一覧を行き来してメールを選択したかったんですよね。何かフォーカスを二者で行き来するショートカットキーとかあるんだろうなと思ったら、ちょっと違ってました。

メール作成・送受信

  • 新規メール作成:Ctrl + N(または Ctrl + Shift + M)
  • 送信:Ctrl + Enter
  • 下書き保存:Ctrl + S
  • 受信トレイ更新(メール受信):F5
  • 印刷:Ctrl + P

返信・転送まわり

  • 返信:Ctrl + R
  • 全員に返信:Ctrl + Shift + R
  • 転送:Ctrl + L

メール整理

  • 削除:Delete
  • アーカイブ:A
  • 既読/未読の切り替え:M
  • 迷惑メールにする:J
  • タグ付け:1〜9(設定したタグに対応)
  • スター(重要)切り替え:S

検索・絞り込み

  • メッセージ検索(詳細検索):Ctrl + Shift + F
  • クイックフィルターバー表示/非表示:Ctrl + Shift + K

メール一覧の移動

  • 次のメッセージ:N
  • 前のメッセージ:P
  • 開く / 閉じる:Enter
  • スレッド展開/折りたたみ:*(テンキーじゃない方)

そのほか便利

  • アドレス帳:Ctrl + Shift + B
  • カレンダー:Ctrl + Shift + C
  • メッセージのソース表示:Ctrl + U

タグ付けは前からよく使ってましたね、そういえば。6番に「見積もり」と登録しておいてタグ付けして目立たせると、過去の見積もりを探すとき便利だなっていう利用方法です。
メッセージフィルタ窓をたまに開いて、広告メールをそれ用のフォルダに分類する操作をするのでショートカットキーがあるといいなって思ったんですが、それは用意されてないみたいです。「Alt」→「T(ツール)」→「F(メッセージフィルター)」でもいいけどさ。
私がやりたかったことはFキー、Bキーでメールの前後移動することでかなり満たされそうです。ペイン間のフォーカス移動も「F6」「Shift + F6(逆順)」でできるようです。

こんなに長く使うソフトなら、面倒くさがって調べずにいるより、知って楽できた方がよかったですね。今どきならThunderbirdがMCP的に動いてくれてLLMから叩けるようになっているとよさそうだけど、まだそれは自分で開発しなきゃならないみたいです。すぐ欲しいわけでもないから、なんか興が乗ったらやってみようかな。


アーカイブ