2025-03-05

LibreOffice CalcのCSV読込みに文字コード自動判別機能が追加された

ずいぶん以前よりMicrosoft Officeを使うのを止めて、LibreOfficeを利用しています。そのCalcにおいて、CSVファイルを読込む際に、CSVファイルの文字コードを指定しなければなりませんでした。UTF8なのかShiftJISなのか、その他なのかを適切に指定しないと、文字化けしてしまいます。

 

ところがLibreOffice 25.2.1.2では、文字コードの自動判別機能が追加されたようです。これまでは、UTF8だったりShiftJISだったりするのを、個別に手動で指定していましたが、「auto detect」ならば自動的に判別してくれます。とても便利です。

 

余談ですが、LibreOfficeは「無料のMicrosoft Office」ではないと思います。確かにLibreOfficeは無料で使えるし、MicrosoftOfficeで作成したファイルを読込めますが、それを完璧に再現できることを保証しているわけではありません。読込んだ情報は保たれますが、凝った書式は崩れてしまいます。雑誌などでは、「MicrosoftOfficeを止めて、LibreOfficeを使おう」のような記事を見かけます。これが間違っているわけではないと思いますが、MicrosoftOfficeとLibreOfficeが全く同じだと認識しているなら、それは違うでしょう。 

2025-02-24

SIMH CLASSICのvax.exeはEthernet対応と非対応がある

Hobbyist OpenVMS VAXをsimh VAXで動かしてみようとして、いろいろと調査しています。まずsimhですが、simh自体は依然よりありましたが、最近はOpen SIMHというものがあります。その経緯は「Announcing the Open SIMH project」に書かれているとおりですが、これが存在するために従来のsimhはSimH "Classic"と呼ばれるようになりました。

 

新しい方を使ってみたい気もしますが、今回は従来版を使います。その主たる理由は、Windows用のバイナリが提供されているからです。FreeBSDやLinuxなどをホスト環境にするなら、最新版のソースを自分でビルドするのは簡単です。しかしWindowsをホスト環境として使おうと思っており、コンパイラなどは入っていないので、既にビルドされたバイナリを利用しようと考えています。公式サイトに置いてあるので、それを使うつもりです。

 

当初はSIMH 3.9-0のvax.exeを使うつもりでした。しかしネット上で見つかる情報を参考にしても、どうも挙動が異なります。特にネットワークデバイスを扱おうとするとエラーになります。

VAX simulator V3.9-0
sim> show xq
XQ, address=20001920-2000192F*, vector=250, MAC=08:00:2B:AA:BB:CC, type=DELQA-T,mode=DELQA, poll=100, not attached
sim> show version
VAX simulator V3.9-0 [64b data, 64b addresses, no Ethernet]
sim>


何が悪いのか不明でしたが、公式サイトにあるドキュメントを読んでも、解決に至りません。特に「SIMH FAQ」では次のように書かれています。ここで記されているように、「The pre-compiled binaries」は「Ethernet support」が有効なのです。ただしWinPCAPが入っているのが前提ですが、Wiresharkを利用していることもあり、インストール済です。

 2.2 How do I install SIMH with Ethernet support on Windows?
The pre-compiled binaries will provide Ethernet support depending on whether or not the WinPCAP package has been installed on the host computer. (以下略)

 

なかなか解決できなかったので、SimH Classicの古いバージョンのバイナリで試してみようと考えました。公式サイトを核にすると、ビルド済バイナリは、2種類あるようです。

simhv38-1-exe-ether.zip    2009-02-08 11:08     763K     
simhv38-1-exe.zip    2009-02-08 11:07     2.6M     

ファイル名に「-ether」がついている方のバイナリを利用してみたら、うまくいくようです。

VAX simulator V3.8-1
sim> show xq
XQ, address=20001920-2000192F, no vector, MAC=08:00:2B:AA:BB:CC, type=DELQA, poll=100, not attached
sim> show version
VAX simulator V3.8-1 [64b data, 64b addresses, Ethernet support]
sim>

 

「show version」で出力を見れば、Ethernetサポートの有無は一目瞭然なのですが、「show xq」の出力だけを見ていると、Ethernetサポート無しでも、サポートされているかのような出力が出てくるので、なかなか気づけませんでした。

 

またSimH ClassicはV3.12-5が最新ですが、ビルド済バイナリが公式サイトに置かれていません。しかもV3.9-0には「-ether」の付いたファイルも置かれていないのです。そうなると、自前でビルドしないなら、Ethernetサポート済なのは、V3.8-1となります。

2025-02-23

OpenVMS Hobbyというサイトを発見

simhを利用して、Hobbyist OpenVMS VAX V7.2かV7.3をインストールしてみるため、参考資料をネット上で探しています。そうすると「OpenVMS Hobby」というサイトを見つけました。2022年頃に生まれたようです。

 

このサイトの「The Purpose of This Site」には、以下のように記されています。

 I have created this site because while I have found lots of information and tutorials covering all of the above, it required a lot of searching, it uncovered a lot of out-of-date and misleading or contradictory information, and I had to go through a lot of trial and error to figure out exactly what worked and what didn’t. While I don’t deny that was all fun, I decided to provide a site where — at the very least — all of the information and research and working examples I have gone through can be shared with anyone else wanting to go through the same journey.

 

これを読んで、誰でも同じことを考えるのだと思いました。私も同様に、情報をネット上で探していると、雑多な情報に混乱することがあります。全く情報が見つからないよりはマシですが、自分にとって必要な情報を選び出していくことになります。その過程を楽しんでいるのは間違いないですが、楽しくも苦しい道のりです。

 

このサイトの情報は、とても参考になると思います。ただし、私の場合は若干環境が異なるので、完全に真似できるわけではなさそうです。

  1. OpenSimh V4を利用しているようだが、simh V3.9を使う。このため、エミュレートするのは、VAX 8600ではなく、MicroVAX 3900になる。
  2. インストールするのは、OpenVMS VAX V7.1ではなく、Hobbyist OpenVMS V7.2かV7.3になる。
  3. ホスト環境はLinuxのようだが、Microsoft Windows 10を使う。

Hobbyist OpenVMS VAXのISOイメージをbitsaves.orgで発見

simh VAXを利用してOpenVMS VAXをインストールしてみるために、手持ちのCD-ROMからISOファイルを生成するために、試行錯誤しました。ひとまずISOファイルはできたので、もはや済んだ話ではありますが、ネット上にISOファイルが存在していたのを発見しました。

 

DECの資料を探すために、以前からbitsavers.orgを利用しています。膨大な資料が置かれているので、隅々まで見ているわけではなかったので、見落としていたのかもしれません。「OVMS_7.2_Hobbyist」というディレクトリには、Hobbyist OpenVMS VAX V7.2のISOファイルが圧縮されて置いてありました。また別のディレクトリにもHobbyist OpenVMS VAX V7.3のISOファイル(圧縮済)がありました。


自分で態々苦労してISOファイルを生成する必要はなかったのかもしれません。試行錯誤して、いろいろと経験できたのは、それはそれで成果だったのかもしれません。

2025-02-21

OpenVMS Hobbyist VAXのCD-ROMをファイルに書き出す

もう四半世紀ほど前、OpenVMS Hobbyist ProgramからOpenVMS VAX V7.2とV7.3のCD-ROMを入手しました。また時期は異なりますが、VAXstation 3100/M76なども入手しました。しかしこのワークステーションにはCD-ROMドライブが付いていなかったので、インストールすることはできませんでした。その後にOpenVMS Hobbyist Programは廃止されてしまい、VAX用のPAKを入手する手段が断たれてしまいました。

 

OpenVMS VAX用のPAKは、真偽のほどは不明ですが、HPなのかVSIが知りませんが正規に購入することができるようです。ただし気軽に購入できるような価格ではないようです。しかしながら、PAKがなくてもインストールしてみるくらいはできるはずです。インストールした後も使い続ける気があるなら、PAKを入れる必要がありますが、技術的興味でインストールしてみるだけであれば、PAK無しでもなんとかなるでしょう。

 

 2004年1月22日付の「Running VAX/VMS Under Linux Using SIMH」という記事を参考に、ちょっと試してみようと思います。この記事が書かれたのは20年ほど前なので、同じ手順で実行できるとは限りません。また記事は、Linux上のsimhを利用しているようですが、私はWindows上のsimhを使おうと思います。これらの環境が異なることで何かに躓くかもしれませんが、それを解決するのも技術的関心の一環です。

 

 記事の中では、CD-ROMの内容をファイルに書き出してsimhから参照するような手順になっています。ddコマンドでファイルに書き出していますので、私の場合も同様に行ってみました。手元にはFreeBSD/amd64 14.2-RELEASE-p1の環境があるので、これを使うつもりでした。ところがCD-ROMをアクセスできず、この操作がエラーになってしまいます。

 

次に、Windows10上のWSL2を利用してみようかと考えました。WSL2では Ubuntu 24.04.2 LTSを使っています。ところで、WSL2上のUbuntuでは、Windows PC本体のCDドライブをどのようにしてアクセスしたら良いのでしょうか。少なくとも/dev/cdromのようなデバイスファイルはありませんでした。ネットを検索してみると「mount -t drvfs D: /mnt/D」とすれば良いという情報がありましたが、エラーになってしまいます。

 

最後の手段として、Windows10上にインストールしてあった「HxD Version 2.5.0.0 (x86-64)」を使ってみました。これを使えば、管理者モードとして起動する必要がありましたが、CD-ROMの内容をファイルに書き出すことができました。

 

2025-02-20

GNU parallel = xargs -n1

かなり以前から「GNU Parallel」に関心がありましたが、使用したことがありませんでした。名前からすると分散処理に役立つのだろうとは思っていましたが、どのように利用するのか具体的なイメージがわかなかったのです。

 

使い方が分からないので使っていないのですが、そうは言っても、使ってみないと何に使えるのか分かるようになりません。ひとまずインストールしてみて、簡単に使ってみました。参考にしたのは、公式サイトにある「GNU Parallel Tutorial」です。

 

使ってみた感想としては、便利そうです。ただし活用できる状況を上手く見つけられるかに依存する気がします。私自身では、これまで「find」と「xargs」を組み合わせた処理をすることが多かったので、その延長線上として、利用できそうです。公式サイトにある「GNU PARALLEL EXAMPLES」でも、次のように記されています。まさにこの文がGNU parallelが何であるかを一言で表していると思います。

 GNU parallel can work similar to xargs -n1.

 

GNU parallelには「--xargs」というオプションがあるようです。私としては、このオプションをデフォルトとして使用し、「GNU parallel --xargs can work similar to xargs.」として利用しようかなと考えています。

2025-02-19

バッチキューのようなもの

以前にOpenVMSを使用した時には、「バッチキュー」というものがありました。一連の処理をスクリプト(コマンド・プロシージャ、通称コマプロ)としてファイルを作成しておき、それをバッチキューに登録しておくと、キューがFIFOとして処理をしてくれます。UNIXで言うところのバックグラウンド処理のようなものですが、それとバッチ処理は同じではありません。

 

UNIXでコマンドラインの末尾に「&」を付けてバックグラウンド処理にした場合、何の制御もなされないので、無茶をすればマシン負荷が急上昇してしまうでしょう。またUNIXには「batch」とか「at」というコマンドが用意されていますが、UNIXにはバッチキューの仕組みが用意されていないので、コマンドが「batch」だとしてもバッチ処理にはなりません。

 

MS-DOSや今日のWindowsでも、拡張子を「.bat」として「バッチファイル」というものを作成することがありますが、これもまたバッチ処理とは関係ありません。MS-DOSを開発していた当初は、当時の汎用機におけるバッチジョブのことが頭の片隅にあったのかもしれません。しかしMS-DOSのバッチファイルと汎用機のバッチ処理は、全く関係ありません。

 

FreeBSDやLinuxのようなUNIXの世界にも、OpenVMSや汎用機のようなバッチキューの仕組みがないのだろうかと、ずっと探していました。このような疑問を相談すると、日常的にUNIXを利用している人々は汎用機などの利用経験が浅いのか、なかなか問題意識が理解されません。Message Passing Interfaceを使えば良いなどと助言されたこともありますが、方向性が違う気がします。またPortable Batch Systemというものもあるようで、これが希望するものに近いかもしれませんが、ちょっと違うような気もします。

 

UNIXの設計思想と汎用機の世界観は、ずいぶん離れている気はするのですが、それでもUNIXの世界で汎用機的なバッチキューの仕組みを必要とする状況はあるのではないかと思います。きっと誰かが何か作っているはずだと思い、以前ならGoogleで検索し、最近ならGeminiに尋ねてみたりしましたが、紹介されるのはMPIだったりPBSだったりして、私が求める方向の回答がありません。

 

そんな中で、ふとpueueというものがあることを「Linuxメモ : あると便利かもしれないRust製コマンドラインツール」で知りました。こういうものを求めていたのです。RUSTで作成されているようです。どのようなものなのか検証するために、VirtualBOX上のUbuntu 24.02 LTSで確かめてみようと思いましたが、aptでインストールできるパッケージは存在しないようです。そこで、まずaptでRUSTの環境を入れ(apt install rustc)、その後にcargoでpueueを入れました(cargo install pueue)。インストール先が「~/.cargo/bin」になっているので、PATHを通しておく必要があります。

 

まだ簡単に動作を確認しただけですが、バッチキューのような仕組みが提供されており、気に入りました。