今回はほぼネタ回なんですが。
ネットもUSBも使えなくなったPCから、他のPCにデータを移さなければならないとしたらどうしますか?
その答えのひとつとして、以下の方法を考えました。
方法:QRコードでプログラムを渡す。
手順:
- QRコードは容量が少ないので、送りたいファイルをrarで圧縮する。
- ish(!)でバイナリーを文字化する。(懐かしいなおい!)
- QRコード化する。1枚じゃ収まらないので、必要分作る。(大変だよ!)
- スマホとかで読み取る。枚数分頑張って読み込んでテキストを合体させる。(大変だよその2!)
- テキストをネットが使えるPCに送って、ish→rarで元に戻す!(ムチャするね!!)
今回はそんなネタ回じゃよ。ちなみに実験は成功しとるぞ
rarを使う
WinRARで良いでしょう。購入しろって表示されるけど何年も使えるし。(一応購入した)
容量大きくなるけどzipでも問題無い。ish使うなら雰囲気出してLZHでも良いけどw
ishを使う
パソコン通信時代によくお世話になったよ!HOST PROはバイナリー扱えなかったし!
で、ishて…まだ配布されてるん?64bit Windowsで動くん?と思って調べたらいくつかあったよ!
ish for Linux/Windows 2.01b1で良いと思う。GUIじゃないけど。
ダウンロードして解凍後、いっぱいファイル有るけど、使うのは「ish.exe」だけ。(コンパイルしたい人は、一旦「*.o」を削除し、makefileをMinGW用の該当箇所を修正してMinGWのmingw32-make.exe実行)
コマンドプロンプト(Winキー+Rで、名前のとこにcmdと打ってOKボタン)で、
ish.exeの置いてあるフォルダに移動(例 cd c:\work)し、
・エンコードするなら ish hoge.rar -ss -m -n
・デコードするなら ish hoge.ish -r -m
みたいに使う。(ちなみに、デコードする際、ishファイルの1行目に書かれている、エンコードした時のフォルダにデコードされるので注意。”-f=”付けてもうまくいかないのはなぜ)
※「ish -h」 でヘルプ表示
QRコード作成サンプルコード
QRコード作成はVS2022で。
QRコード作成に「ZXing」を使うので、「ツール>NuGetパッケージマネージャー>ソリューションのNuGetパッケージの管理」で、「参照」タブを選択、検索窓に「ZXing」と打って選択し、右側のプロジェクトにチェック☑入れてインストールボタン押す。
using ZXing;
using System.Drawing.Imaging;
//■QRコードを作成し、PNGでセーブ
//引数:
// string strData QRコード化したい文字データ(QRの容量的に、ishの24行分ずつがよい)
// string pngPath PNG出力ファイルのフルパス
void makeQR(string strData, string pngPath)
{
BarcodeWriter writer = new BarcodeWriter();
writer.Format = BarcodeFormat.QR_CODE;
writer.Options.Height = 600;
writer.Options.Width = 600;
writer.Options.Margin = 2;
//ish設定をshift_jisにしてるので、ここもshift_jis。
//ちなみにishファイルの改行は「\r\n」(CR+LF)
writer.Options.Hints.Add(EncodeHintType.CHARACTER_SET, "shift_jis");
writer.Options.Hints.Add(EncodeHintType.ERROR_CORRECTION,
ZXing.QrCode.Internal.ErrorCorrectionLevel.M);
//QRコード生成しPNGでセーブ
using (var bmp = writer.Write(strData))
{
bmp.Save(pngPath, ImageFormat.Png);
}
}
下のダウンロードサンプルでは、rarファイルを指定して実行すると、ish変換や、連番png出力までやってくれます。
ダウンロード
QRコードからの復元
ここから手作業になりますwww(ツール作る気力が)
※2024/9/6追記
AndroidスマホとGoogleドキュメントでもっと簡単にできました。(Pixel8aで確認)
AndroidスマホのGoogleレンズでQRコードを読み、読み取ったテキストをGoogleドキュメントに貼り付けます。(QRコードが複数ある場合は、最終行にどんどんテキストを追加していく)
最終的にWindowsPCでGoogleドキュメントを開き、内容をコピー。ローカルに作ったテキストファイル(例えばhoge.txt)にペーストして、そのファイルに対して「ish hoge.txt -a -m」でOK
僕が再現した方法:
QRコードをiPhoneのカメラにかざす。右下に四角で囲まれた三本線が表示されるのでタップ。
すると、デコードされたテキストが表示されるので、「コピー」。
TextForceという、DropBoxにセーブしてくれるテキストエディタアプリがあるので、+ボタンでファイルを新規作成し、最終行に貼り付ける。カメラ読み込みとコピペを、QR画像の数だけ行う。
PCでDropBoxからファイルを取得する。秀丸エディタで開く。
秀丸エディタのメニューの「ファイル」>「エンコードの種類」で、「日本語(Shift-JIS)」を選ぶ。
ダイアログが表示されるので、「内容を維持したまま適用」を選ぶ。
保存するため「Ctrl+S」を押すと、またダイアログが表示される。
「保存せずに変換出来ない文字へジャンプする」でOKを押すと、問題のある箇所に色が付く。
(付かない場合は、上記で「カラーマーカーで色付け」にチェックが入っているか確認。
色が付いてる物は毎回2種類。それぞれ全置換で解決できる。
・‾ → ~
・¥ → \
「¥」は何が違うのか良くわからないけど(¥がバックスラッシュ表示だと、確かに前者は¥のままになってる)、全置換するとマーカーが消えてくれる。
んで、コマンドプロンプトで「ish hoge.ish -r -m」すると、エンコードされたときのフォルダにrarファイルが出現する。これをWinRARで解凍すれば元のファイルができあがり。
Androidスマホと
QRコード、1.2MB入るようになればフロッピーの代わりになるのにw
コメント