Hardware Keyboard Remapper(OS に依存しないキーボードのキー入れ替え)を作った

皆さんはキーボードのキーを入れ替えてますか? キー入れ替えのメジャーな用途は、 Ctrl キーと Cap Lock キーの入れ替えでしょう。 そのような人は、 「OS のキー入れ替え設定」するのが新しい PC セットアップ時の手順の一つに なっている人も少なくないでしょう。 しかし、「OS のキー入れ替え設定」が常に出来るとは限りません。 例えば、共有 PC を使うケースや、 そもそも OS がキー入れ替えをサポートしていないケースなど。 そのような時に使うこ

液晶ディスプレイメーカーのドット抜け保証

4K ディスプレイが欲しくなったので調べものをしている。 液晶ディスプレイを選ぶ際、用途によってさまざまな観点でチェックするだろう。 しかし、誰もが気になるのは 「ドット抜け」 だろう。 そんな訳で、各メーカー毎のドット抜け保証についてまとめてみた。 ドット抜け保証まとめ 国内で購入可能なメジャーメーカーの保証状況を以下に示す。 順位 メーカー 保証内容 リンク 1? EIZO 1点もない (例外あり) リンク 2? ACER 中央に集中して3点以内、又

LuneScript がエラーハンドリングと大域脱出をサポートできていない理由

数ヶ月間 LuneScript から離れていますが、生存アピールのためにちょっと触れておきます 今日現在、 LuneScript は言語機能としてエラーハンドリングと大域脱出をサポートしていません。 現在でも、module 機能を利用して 裏技的にエラーハンドリングと大域脱出を使うことは出来なくもないです。 しかし、それはあくまでも裏技で正式機能ではありません。 「何故サポートしていないか?」というと、 エラーハンドリングと大域脱出のベストプラクティスが

WSL2 共存による VirtualBox/VMWare の性能低下と、性能重視時の排他設定方法

VirtualBox/VMWare と WSL2 は共存可能です。 しかし、共存させると VirtualBox/VMWare 上の GuestOS にオーバーヘッドがかかります。 今回はオーバーヘッドの概要と、共存と排他の設定切り替え方法のネタです。 VirtualBox と WSL2 共存のオーバーヘッド 以下に VirtualBox と WSL2 の実行時の階層図を示します。 この図は、次の 4 つの状態を表わしています。 (A) 従来の Windows で VirtualBox を動かす状態 (B) Windows で WSL2 を動かす状態 (C) Windows で WSL2 と VirtualBox を動かす状態(異常時) (D) Windows で WSL2 と VirtualBox を動かす状態(正常時) (A) は、 WSL サポート前の Windows で VirtualBox を

MS Teams client の作り方

自作ツールで、MS Teams に対して投稿を read/write する方法について書きます。 Teams の管理者権限の許可が必須 「 Teams の管理者権限の許可が必須 」です。 大事なことなので始めに書きます。 自作ツールで、MS Teams に任意に投稿を read/write するには、 「 Teams の管理者権限の許可が必須 」です。 たとえ自分自身のアカウントを使って投稿したくても、 自作ツールから行なうには管理者権限の許可が必須 なんです。 MS Graph API へのアクセス MS Graph API は、以下のサイトにリファレンスが

asciidoc の pdf 化

asciidoctor-pdf を利用すると asciidoc を pdf 化できます。 ここでは、 asciidoctor-pdf のセットアップと pdf 化時のレイアウト変更方法について説明します。 asciidoctor-pdf のセットアップ asciidoctor-pdf が既にインストールされている場合、 日本語フォントのインストール時に conflict することがあるので、 ここでは docker を利用します。 docker を使わなくても、ローカル環境に ruby をインストールし、 Dockerfile の RUN と同等の手順を実行してもインストールできます。 asciidoctor-pdf が conflict した場合は、 asciidoctor-pdf をアンインストールしてから asciidoctor-pdf をインストー

org-mode ドキュメントの翻訳ツールの使い方

先日の記事に書いた org-mode ドキュメントの翻訳ツールを作成したので、 今回はそのツールの使用方法を書きます。 セットアップ golang がインストールされている環境で、以下を実行してください。 go install -tags gopherlua github.com/ifritJP/trans-orgmode@latest GCP の設定 GCP アカウントを既に持っていることを前提に説明します。 アカウントが無い場合は、作成してください。 プロジェクトの作成 以下の手順に従って作業します。 <https://cloud.google.com/translate/docs/setup?hl=ja#project> これにより、以下を行ないます。 プロジェクトを作成 API の有効化 サービスアカ

org-mode ドキュメントの翻訳ツール検討

私は org-mode を使って LuneScript のリファレンスを作成しています。 日本語のリファレンスを書くのも大変ですが、 それを英訳しようとすると気が遠くなります。 そこで機械翻訳を使う予定ですが、 .org ファイルをそのまま機械翻訳で処理すると、 コードブロックや org-mode の区切り記号まで変換され、 意図した結果を得られません。 そこで今回は、org-mode の機械翻訳をスムーズに行なえるツールを検討します。 構成 今回検討する org-mode 翻訳ツールは、以下の構成

LuneScript のトランスコンパイル高速化 (スタック割り当て)

今回の記事は、 先日検討した LuneScript のクラスのオブジェクトを スタックに割り当てて高速化できるかどうか?の検討結果です。 結果 今回の検討結果は以下の通りです。 「スタック割り当て自体は有効ですが、 スタック割り当てから escape されないように設計しないと効果を得られません。」 なんだか当たり前な検討結果ですが、そうなんだから仕方がない。 では、なぜそのような結果になったかを説明していきます。 検討内容 LuneScript でオブジェクトをスタック

LuneScript のトランスコンパイル高速化 (トランスコンパイル時間を 2273 パーセント改善)

先月から続いて、LuneScript のトランスコンパイル高速化作業をしています。 セルフホストのトランスコンパイル時間 今回の時間短縮は以下の通りです。 lua VM 版 go ビルド版 lua/go 改善前 5/6 (6e5661a9) 25.69 sec 5.84 sec 440% 改善後 5/25 (364095ef) 17.42 sec 2.22 sec 785% 改善後2 6/7(52df422b) 17.57 sec 1.82 sec 965% 改善後3 6/29(8898c475) 18.07 sec 1.13 sec 1599% 改善率(改善前/改善後3) 142% 517% この表は、セルフホスティングしているソースのトランスコンパイル時間の計測結果を 示しています。 lua VM で動作させた lnsc と、go でビル