Michi -GPSログ整形アプリを.NETへ移行する。 5

scottPlotやNPlotでフォントが化けるのは、結局System.Drawing.Commonが.NET6 unixではサポートされていないから?らしいですね…ということはImageSharpでゴリゴリとグラフを描画するしかないのかなぁ。

という訳で、とりあえずImageSharpで文字が描画できるかだけを確かめた。

using (SixLabors.ImageSharp.Image img = new Image<Rgba32>(500, 100))
 {
  //var font = SixLabors.Fonts.SystemFonts.CreateFont("Arial", 39, SixLabors.Fonts.FontStyle.Regular);
  var font = SixLabors.Fonts.SystemFonts.CreateFont("Ubuntu Mono", 39, SixLabors.Fonts.FontStyle.Regular);

  string text = "Hello World ハローワールド";

  img.Mutate(ctx => ctx
    .Fill(SixLabors.ImageSharp.Color.Gray)
    .DrawText(text, font, SixLabors.ImageSharp.Color.Black, new SixLabors.ImageSharp.PointF(0, 0))
  );

  img.Save("/path/test.png");
}
こんな感じに出力できた。

日本語が出ないのはフォントの指定方法が悪いせいなのか調べてません。とりあえず英語が出れば問題ないので、ImageSharpで(非常に)簡単なグラフ ライブラリを作ってみます。

Michi -GPSログ整形アプリを.NETへ移行する。 4

細かい追加事項です。

  1. nPlotはnuGetでも追加できました。そしてScottPlotと同じように文字化けする。
  2. アプリをWindows11でビルドすると、scottPlotは文字化けしませんでした。なので、文字化けはlinux版のSystem.Drawing.Common(?)のバグらしい。
  3. https://github.com/ScottPlot/ScottPlot/issues/1079 にも情報があった。
  4. System.Drawing.Common (6.0.0) をnuGetしてみたらscottPlotもnPlotもエラーが出てグラフを構築できなかった。
  5. AppDomain.CurrentDomain.BaseDirectory はlinux版とwindows版で挙動が違う?linux版では「.TrimEnd(‘\\’)」が必要だった。

■追記 2022/ 5/31 Release版を作って実行したら、文字化けしませんでした。めでたし、めでたし。

Michi -GPSログ整形アプリを.NETへ移行する。 3

■ScottPlotを使ってみる。こちらの方がImageSharpより簡単そうなので試してみる。NuGetでVSCodeにインストールするとバージョンは4.1.45だった。適当にgoogleってサンプルをあたってみる。


上がnPlot、下がScottPlotです。

とりあえず概要はできましたが、フォントが文字化け…

■追記 2022/ 5/22
ちょっとだけ前進

Michi -GPSログ整形アプリを.NETへ移行する。

■要素
目的: Michi -GPSログ整形アプリ を.NETへ移行する。
input: GPSログ(NMEA-0183)、Google Maps API Key
output: Google Maps ページ + 速度グラフ(jpeg)、高度グラフ(jpeg)
build on: MonoDevelop 7.8.4 & GTK+
特徴: 元々はGUIツールとして作成したけど、コンソールアプリとしても動作します。

MonoDevelopもいずれは.NETに統合されるらしい(?)ので、ゆっくりと移行について考えていきます。ついでにグラフ出力に使用しているNPlotも永らく更新されていないので、置き換えたい。マルチプラットフォームにもできたらいいなぁ。

“Michi -GPSログ整形アプリを.NETへ移行する。” の続きを読む

Ubuntu 22.04 LTS

先週末にインストールして使ってますが、問題点が2つ。

一つはAudacity、素材をロードしても波形が、[ALT]+1や[ALT]+3で追随してくれない。編集線も表示されないので安心して編集できない状態です。これは待つしかないのかな?

2つめはMonoDevelop、インストールできないので、Monoで作った自作アプリが実行用にビルドできない。これは.NET 7 + MAUIに移行した方が良いのかなぁ。

Ubuntu 21.10で問題があった Remmina の[super]キー問題は解消されていますね。とりあえず、日本語Remixリリースが出たらもう一度インストールしてみよう。

スキャナをリモートアクセス

普段はノートPCを使っているので、たまにスキャナを使うときはスキャナの近くに行って、USBケーブルを接続して…と少し面倒に思っていました。

先月にWin11マシンを独立させたので、どうせならスキャナをこっちに繋ぎ放しにしておいて、スキャンもWin11経由でやってしまおうと考えました。が、うまくいかない…

“スキャナをリモートアクセス” の続きを読む

PowerShellのライブラリとか

昔に仕事でPowerShell使って画像処理してたのですが、エンジン部分をC#で書いたPowerShellの画像処理スクリプトが、C++ネイティブのバイナリよりも実行速度が速い!ということがありました。きちんと実行時間を計測したわけではないのですが、体感でも感じるほどの差ですから、充分実用に耐え得るでしょう。

“PowerShellのライブラリとか” の続きを読む

英字キーボードが売ってない

年に1度くらいしか使わないUSB接続のThinkPadキーボード(英字)が調子悪いので、安いキーボードを買おうと量販店と小規模パソコンショップ2店を巡りましたが、安い英字キーボードって置いてないんですね。

amazonで1,400円くらいの安いものを注文しました。普段はノートPCですが10年くらい英字キーボードしか使ってないので日本語キーボードは使いづらいです。

これを機に在宅のお仕事でも英字キーボードを使おうかな。

Remminaで[win]キーが効かないこともない

Ubuntu 21.10上の https://remmina.org/ 経由でWindows11を使ってますが、[super]キーの挙動がちょっと不可解。

普通に[super]キーを押下するとGNOMEの処理で使用中のアプリがタイル状に表示されます。まぁ、そうだろうなとは思いましたが[win]キーとして使えないかgoogleってみるとありました。デフォルトでは右[ctrl]キー押下のトグルで「全てのキーを(remminaが)取得」モードになるらしい。

試してみると、右[ctrl]、[super]順に押下でならない。試してみると、右[ctrl]+[super]、右[ctrl]+[super]と同時押し2回で[win]キー押下と同じになる。

試しに同じマシンでdebian 11 + remminaで見てみると、マニュアル通りに右[ctrl]押下で「全てのキーを(remminaが)取得」モードになり、[super]キーが[win]キーと同じように働く。

とりあえず[win]キーとして使えています。Ubuntuのremminaの設定を何か変な風に変えてしまっただけかも知れないけど、ちょっと気持ち悪いので、また調べてみます。

■2022/ 4/28 追記

Ubuntu 22.04では普通に右[ctrl]が効いています。原因は何だったんだろう?