おもこん

おもこんは「思いつくままにコンピュターの話し」の省略形です

Google サイトを試してみた

Google サイトを試してみました。細かい設定はできませんが、簡単にウェブページを作れるのがとても良いと思いました。これならば HTML を知らない人でも無理なく作ることができます。写真を貼り付けたり、リンクを設定したりするのも簡単です。しかし、複数ページを1つのウェブサイトに組み立てたり、レイアウトをカスタマイズするにはいくぶん習熟が必要です。

また、他の機能との連携も可能です。例えばGoogle driveの上にあるファイルへのリンクを貼って、そのファイルをダウンロードさせることができます。特にPDFファイルの配布には便利でしょう。その際にはGoogle driveの共有設定をしておくことが必要です。

料金が発生しないことも魅力ですし、広告も表示されません。もし、あなたがユーチューブチャンネルなどを持っているならば、それをこのサイトで紹介することも可能です。Googleの様々な機能と連係することによってより価値を高めることができると思いました。

今回は以前作った(英語で書いた)数学のPDFファイルを公開しました。以前、ボランティア活動でソロモン諸島の大学生に数学を教えたときに作ったものです。内容は日本の高校数学程度のものです。ウェブページへのリンクはこちらです。

IbusからFcitx5へ

Ubuntu22.04にしてからどうも日本語入力の調子が悪い。ログイン直後には日本語入力ができる状態なのだが、しばらくすると右上のibusのアイコンが消えてしまう。エディタを立ち上げるとアイコンが復活して日本語入力できるが、LibreOffice Calcではアイコンが消えて日本語入力ができない。この現象の原因は分からない。が、X.OrgからWaylandに移行していることが関係してるような気がする。ネットで調べてみるとibusはWaylandに対応していないらしい。別の入力システムのFcitx5はWayland対応だそうだ。それで、この際Fcitx5に変えてみることにした。なお、Fcitxという、5の付かない入力システムがある。これは古いバージョンで、現在開発は終了しているそうだ。紛らわしいが間違えずに5のついている方をインストールする。

sudo apt install fcitx5-mozc

これでパッケージのインストールはできた。

設定から「地域と言語」を選び、「インストールされている言語の管理」というボタンをクリックする。現れたダイアログの下の方に「キーボード入力に使う IM システム」という選択ボタンがあるので、それをibusからfcitx5に変更する。ここで、一旦ログアウトして再ログインする。

fcitx5のアイコンがメニューバーの右側に現れるので、それをクリックし、設定を開く。左側のペインに「キーボード日本語」と「Mozc」がある。そのペインの下に「システムキーボードのレイアウトを選択」ボタンがある。それをクリックするとどういうわけか英語キーボードになっていた。それではまずい。日本語キーボードに変更する。警告メッセージが現れるが、気にせず日本語キーボードに変更する。

ここで改めて設定(システムの設定)を開き、キーボードを見ると、「日本語」と「Mozc-jp」がある。それぞれの長方形の右側に点が3つ縦に並んだボタンがあるので、それを開いてキーボードレイアウトが両方とも日本語キーボードになっていることを確認する。一旦ログアウトして再ログイン。

以上でmozcが動くようになった。Calcでもきちんと動く。ちなみに、CalcはWaylandではなく独自のツールキットを用いているらしい。

Linux版Zoomの画面共有

今日はズームによるオンライン会議があった。そのとき、画面共有できないトラブルが発生。会議本番中の出来事だったので困ってしまった。他の人にデータファイルを送り、そちらで画面共有していただき何とか凌ぐことができたが、各方面に迷惑をかけたことを反省している。後で原因を調べてみた。

私のパソコンは LinuxでZoomもLinux版である。Zoomのウェブサイトを調べたところ「Waylandで個々のファイルについて画面共有することはできない。その場合はX.orgを用いれば良い」という記述があった。WaylandやX.orgは画面をコントロールするライブラリで、この1年くらいの間にWaylandが普及してきた。現在はその移行についての過度期後半にあたる。試してみると、確かにX.orgでは画面共有が動く。ちなみに、X.orgにするには、一旦ログアウトし再ログインの前に画面右下をクリックしてX.orgを選んでおけば良い。

Linuxはカーネルだけでなく様々なライブラリが独自に開発を行っている。そのため、全体が一貫した計画のもとで開発されてないという弱点がある。もしも全体が計画的に開発されていれば、ZoomのWayland対応も早いタイミングでできたと思う。オープンソースの不利な点が現れたということだろう。

もちろんWindowsでは普通に画面共有は動作する。Zoomのようなメジャーなソフトを使う場合は、日本ではWindowsを使った方がトラブルに巻き込まれることが少ないように思った。

バックアップについて

今日はバックアップについて書きたいと思います。バックアップは本来定期的にすべきですが、そうでない人が多いでしょう。それでも再インストール、とくにクリーンインストールをするときは、どんな人でもバックアップを取ると思います。(クリーンインストールとは、全てのデータを消去して新たにインストールすることです)。バックアップの方法にはどんなものがあるでしょうか?

  • コピーコマンドなどを使う
  • バックアップ用のプログラムを作る(コピーを体系的に行う)
  • バックアップ用のツールを使う

ざっと考えただけでもこのような方法があります。これらについて考えてみましょう。

これらの方法で共通しているのは、ファイルの内容は確実にコピーされる、ということです。しかし、ファイルの属性についてはそうではありません。 ファイルの属性とは、作成日時、更新日時、所有者、パーミッション(どのユーザが読み書きできるか)などです。これらがコピー先で保存されるかどうかに影響するのは、

  • コピーに用いるコマンド(アプリケーション)
  • コピー先のデバイスのフォーマットの種類

です。とくに2番目は見落としがちで、FAT系のフォーマットでは所有者情報とパーミッションは保存されません。ですから、単純なファイルコピーではこれらの情報は失われてしまいます。ファイル属性は、あまり問題にならないことが多いですが、時には大きな問題になることがあります。例えば、gitではファイルの中身が同じなのに属性が違っているとファイルに変更が加えられたと判断されることがあります。

コピー先のデバイスの種類によらず、属性情報も保存するには、

  • tarを使う
  • UBUNTUに付属のバックアップというアプリを使う

方法があります。

バックアップアプリはあるフォルダ以下をまるごとバックアップするには便利です。しかし、ファイルを選別してバックアップしたい場合には、細かい設定ができません。その場合はプログラムを作成し、tarをその中で呼び出すようにすると良いです。

今のところ、カスタマイズと属性保存の両方が可能な「tar + 自作プログラム」が最も有力な手段だと思います。

(追記 2022/6/2)

重要なことを書き忘れました。 「コピー先のデバイスのフォーマットの種類」で追加すべきことがあります。 それは、FATなどには1つのファイルの大きさの最大値があり、それを超えるファイルは作れません。 tarファイルがあまりに大きくなるとその制限に引っかかります。 そのため

  • 適度の大きさのディレクトリ単位でtarファイルを作るようにする
  • 普通はホームディレクトリの1つ下のディレクトリを単位とすると良いと考えられる。
  • ダウンロードしたアプリなどは(1)サイズが大きくなりがちで(2)そもそもダウンロードできるのでバックアップする価値が低い、ということから対象外とするのが良い

ということがいえます。

バックアップはただ丸ごとやるのではなく、対象を絞り、分割すると効率的になります。 その点でも、時々の状況に応じたバックアップ用プログラムを自作するのは理にかなっているといえます。

(追記 2022/6/3)

このブログに書いた考えをもとにバックアップとリストアのプログラムを作りました。 Githubに公開しました。 興味のある方はご覧ください。

kindle本「Gtk+3入門」の販売を停止しました

Kindle本「Gtk+3入門」の販売を停止しました。 すでにGtkのバージョンが4になってから1年以上が経過しました。 Gtk4の発表当時はUBUNTUはじめ各ディストリビューションが未対応でしたが、現在ではすべての主なディストリビューションが対応しています。 したがって、Gtk+3の解説を必要とするケースは無くなりました。 いつまでもそのような本を販売するのは本意ではありません。

もしGtkを知りたいという方がいらっしゃたら、バージョン4対応のGtk4-tutorialをご覧ください。 英語ですが、コード例も豊富で分かりやすくなっています。

また、これを日本語にしてくださる方がいれば大歓迎です。 翻訳は著者がやるべき仕事でしょうが、大きなチュートリアルなので、なかなか手が出ません。

今まで「Gtk+3入門」を購入していただいた方には改めて御礼申し上げます。 ありがとうございました。

WNoteのバージョンアップ

先週、WNoteのバージョンアップをした。前回のアップロードでは、Rrailsのバージョンは5で、Bootstrapも3だった。それが、現在はRailsは7でBootstrapは5になっている。 バージョンアップの作業は大体一週間ぐらいで終わった。作業の多くはBootstrapの修正だった。

Railsの主な変更は2つあって、HTMLのInputタグを生成するメソッドがform_forform_tagからform_withに変わったことである。古いメソッドも使えるが非推奨となっている。その仕組みは変わっていないので 少しの変更のみで、大した作業ではない。 もう一つはデータをdeleteする方法が変わった。以前はlink_toメソッドの中で、method: :deleteを指定して、HTTPプロトコルのメソッドにDELETEを指定するのだった。(注:ブラウザでDELETEメソッドをサポートしていない場合はPOSTメソッドで代用)。それが、新しい方法では、Turboが使われていて、具体的にはlink_toメソッドに、data: {turbo_method: :delete, turbo_confirm: "Are you sure?"}などと書き込む。この部分はHTMLのInputタグのdata-turbo-method属性になる。data-*という属性はユーザ定義属性で、RailsではJavascriptで処理をする。Javascriptがオンになっていないと機能しない。また、それを受け取ったコントローラーでは、destroyメソッド中で削除処理後のリダイレクト時にstatus: :see_otherとHTTPステータスを変えなくてはいけない。それをしないとひどいことになるらしい。

その他にassetsの取り扱いが変わってきている。しかし、Sprocketsもまだ使えるので、ここについては問題はない。ただ、assetとして使っているBootstrapとjQuery-UIは、gemを使わず、直接それぞれのウェブサイトからダウンロードしたスクリプトをvendorフォルダ下に配置した。とくに、jQuery-UIの現バージョンが1.3.1なのだが、jQuery-railsのgemは1.2.1しかサポートしていない。これがgemを採用しなかった理由である。JavaScript の世界は以前と大きく変わってきたようで、iQuery UIは開発が終わりメンテナンスモードになっている。Web の技術はどんどん新しくなっていくので、このような栄枯盛衰があるということなのだろう。

Railsのassetの取り扱いは、次期バージョンではSprocketsが非推奨になるかもしれない(あくまで予想だが)。

ハッシュについて

今日はハッシュについて書こうと思う。ハッシュは、あるオブジェクトから、ある定まった範囲の整数への関数で、違うオブジェクトに対して違う整数が対応することが期待されているものである。実際には一対一対応は難しいので、できるだけ一対一になるような関数を作る。ハッシュはオブジェクトを登録、参照するプログラムで用いられる。例えばコンパイラにおいて変数名の登録、参照で用いられる。

Cのハッシュの例は、「プログラム言語C」に載っている。プログラムは短く簡単なので、自分でアレンジするのは容易いだろう。

今回、対称群の部分群を検索するプログラムで、部分集合の登録にハッシュを使ってみた。前のバージョンではリストで管理していたが、ハッシュの導入により非常に速くなった。具体的には14秒かかったものが5秒になった。この経験から、検索というのは時間がかかるコストの高いプログラムなのだということが良く分かった。そしてハッシュが非常に価値があるということもわかった。リストは線形に検索をするので効率が悪く、ある意味最悪の検索方法である。より良い方法には二分木やハッシュがあるが、ハッシュが最速ではないだろうか。

このおかげで6次対称群の部分群が5時間40分で求まるようになった。このプログラムは githubにアップロードされている。