投稿

9月, 2023の投稿を表示しています

新下駄配列のマップ

イメージ
新下駄配列の見やすいマップがなかったので作りました。見ればわかると思いますが、いちおう説明しておきます。一番上の段はシフトキーを押したときに出る文字。真ん中は左から、iと共に押したとき、普段出る文字、oと共に押したときです。下段は左からkかsと共に押したとき、そのまま押したとき、lかdと共に押したときです。 RubyでSVGを出力するプログラムで書きました。なので、だいぶ冗長な感じになっています。Rubyプログラムも動けばいいやつなのでだいぶ雑です。このあとErgoDox EZの別レイヤーのキーも載せるつもりなので途中なのです。まあ、そのときでも汚いままな気もしますが。 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1200" height="700"><rect x="10" y="10" width="107" height="107" fill="white" stroke="black" /> <text x="30" y="33" text-anchor="middle" font-size="25" letter-spacing="-2" dominant-baseline="central"></text> <text x="63" y="33" text-anchor="middle" font-size="25" letter-spacing="-2" dominant-baseline="central">!</text> <text x="97" y=&quo

菱形継承になるときはたいてい設計ミスですよね

おれおれマークダウンにRubyのコードを実行しつつ、コードも表示する機能を入れました。 今までは同じコードを2回書いていたからめんどうだったんですよね。 コードを表示するクラスとコードを実行するクラスが作ってあったので、単純にやると菱形継承になるのでちょっと悩みました。 菱形継承回避の定石としてはモジュールにして外に出すことですよね。 でも、それもなんとなく大げさな感じがしました。 けっきょく、両者を統合したクラスに表示と実行のオプションを付けました。 だいたい菱形継承になるときって設計ミスなんですよね。

おれおれマークダウンの名前

おれおれマークダウンはマークダウンとの互換性を諦めたので新しい名前が必要だと感じています。 PandocだとPandoc拡張マークダウンと呼ばれたり、GitHubだとGitHub-flavored Markdownと呼ばれたりしますよね。 でも、あくまで拡張なんですよね。 もうマークダウンには縛られたくないから全く別の名前がいいんですけど、思いつきません。 そもそも、どういう仕様にするのか行き当たりばったりで決めてませんからね。 とはいえ、おれおれマークダウンは長すぎる。 そもそも、マークダウンじゃないし。 記法とかフォーマット? Oreore Markdown ExtensionでOMEとか書いたって誰もわからないし。 Rubyで書いているからRubyも入れておく? でも、Ruby以外で書きたくなるかもしれないし。 まだ、マークダウンっぽいからしばらくはおれおれマークダウンかな?

WSLでの親指シフトはどうやらMozcで実現可能と気がつくまで

WindowsではAutoHotKeyを使って疑似親指シフトで日本語を入力しています。もともとかな打ちだったんですが、キーボードをErgoDox EZに変えたら「ろ」とかのキーが足りなくなって、どうしようか悩んで親指シフトを見つけてきました。疑似なのは同時押しではなくて、親指でファンクションキーを押しながらアルファベットキーを押すことで出しているからです。AutoHotKeyを使って同時押しを実現しているものがあるのは知っていますが、とりあえずNICOLA配列を試しつつ今まで引っ張ってきた感じです。 Windowsではそれで満足していたのですが、WSLを使うようになって困りました。AutoHotKey(以下AHK)ではIMEの状態を取ってきてオンの場合には出力を変えているのですが、WSLだとAutoHotKeyからMozcの情報を取ってこられる気がしません。WSL側で検知してWindows側から読める位置にファイルを置くような、トリッキーな方法を使えばできなくはないような気もしますが、そこまでしてAHKに頼るのも変な感じです。 ということで、WSL側で親指シフトを使えるようにしようとぐぐって出てきたのは oyainput というやつでした。しかし、これがWSLでは動かない。エラーコードから察するに、 /proc/bus/input/devices が空なのでキーボードの情報が取れないのでだめみたいです。まあ、WSLですし。 しかたがないので、今度はWSLのEmacsでWindows側のIMEが使えるという「 emacs-mozc を動かすための設定(WSL 設定編) 」のmozc_emacs_helperというのを試してみました。で、苦労して動かしてみたものの、Windows側の辞書を使って変換はしているようですが、AHKがIMEの状態を把握できないので親指シフトモードに切り替わらないのは同じでした。残念。 いったんは諦めてMinGW版のEmacsを使うことにしたのですが、ぐぐってみたら「 [Question] Possible to (properly) implement simultaneous (custom) Kana-input layout? #512 」というMozcに新下駄配列を実装する話が出てきました。 新下駄配列は知らなかったのでぐぐ

数式を簡単に表示する方法

おれおれマークダウンで$LaTeX$形式で数式を書くのがめんどくさいです。特に式の変形とかは、似たようなことをコピペして修正して書くのが、なんか無駄な作業のような気がしてつらいです。 とりあえず、$LaTeX$マクロを使えばまだマシになります。例えば、組み合わせとかはいくつかの表記方法があるようで、${}_n\mathrm{C}_r$だったり行列みたいに書いたりします。「やっぱり、こっちがいいな」と思っても、直接書いてしまっていては変更が大変です。この場合はマクロで $$ \newcommand{\combination}[2]{{}_{#1} \mathrm{C}_{#2}} $$ $$ \newcommand{\combination}[2]{{}_{#1} \mathrm{C}_{#2}}$$と書いておけば $\combination{n}{r}$ で$\combination{n}{r}$が出ます。意味を書いて、表記法を指定して出力がよさそうです。 しかし、普通のマークダウンだと、ファイルの先頭でマクロを定義して、その後のMathブロックでマクロを使えないんですよね。これが不便なので普通のマークダウンとの互換性は捨てることにしました。プログラムで変換してHTMLを吐き出す方法でやります。となると、別にMarkdownとの互換性を考慮する必要もないので独自フォーマットでよくなるんですよね。 独自フォーマットで良しとすると、一気に自由度が上がりました。自由すぎてなにをしていいのかわかりません。とりあえず、 ```exec ruby a = 100 p a + 50 ``` で 150 と表示できました。前に書いたPlantUMLを別プロセスで呼ぶコードをコピペしてRubyでevalしただけですけど。 もうちょっと意味のある式だと、 ```exec ruby class Combination def initialize(n, r) @n = n @r = r end def print printf "\\combination{#@n}{#@r}" end end print "$$" print "(a + b)^4 = &

Emacs始めました

ずっとVim派だったんですが、最近Emacsに挑戦中です。Vim派でしたが、Emacsはデフォルトが論理行でカーソル移動なので、長めの文章を書くときには使っていたこともあって、抵抗はありません。昔、サーバルームでVimがなくてViだけしかなかったため、多段Undoが使えなくて非常に不便な思いをしたことがありました。そのときEmacsを見つけてとてもありがたかった体験もあって、練習がてら使っていたんですよね。viperもありますし、意外といい感じです。なぜかggコマンドが使えなかったりしますけど。1Gでなんとかなるからいいけどなんででしょう?まあ、細かいところはおいおいですね。 きっかけはAgdaをちょこっといじってみて、ℕとかの黒板太字を使うようになってCygwin版のtmuxでは正常に表示されないことがわかったからです。本当はℕは表示できるんですけど𝕟や𝕏がだめなんですよね。たぶん、UnicodeのBMPに無いやつはおかしくなるのではないかな?数学で使うやつ以外は使わないからいいかとも思ったんですが、Twitterが𝕏になったでしょう?エディタで下書きするから困ってしまったんですよね。tmuxを使わないと表示できるんですけど。でも、Window Managerを使わないとかないですよね。GNU Screenなら使えたんですが、prefixをCtrl-Alt-aに割り当る方法がわからなくて。tmuxではprefixをCtrl-Alt-aに割り当てて、それをAutoHotKeyでF24-aで入力できるようにしていたのが便利で、それができないとだめな体になっていました。 それでWindows Terminalとかいろいろ調べてみたんですけど、𝕟や𝕏は表示できてもUnicodeをちゃんと表示できるのはEmacsだけでした。Windows Terminalはなかなか頑張っていたんですが、🇯🇵や🧜‍♂を扱えるのはEmacsぐらいだったんですよね。フォントが無くてもコードポイントを表示してくれるのもポイントが高いです。 Windows版のVimもなかなかでしたが、ターミナル代わりに使うにはハードルが高そうです。フォントを「UD デジタル 教科書体 N-R」にしてℕを入力すると中黒になってしまうという現象もありました。フォントを切り替えると表示されるのでフォ

ブログの運用方法

文章等を公開する場としてレンタルサーバ、このブログ、𝕏、Mastodonと4つ用意しています。本当はFacebookとかもアカウントはあるけど、ほぼ使っていないので。昔使っていたFC2もあるか。でもあれはそのうち撤収する予定。 使い分けはレンタルサーバはまとまった文章、𝕏は思いついたこと、Mastodonはネタバレありそうな思ったこと、このブログは𝕏では書ききれないこととしていたつもりでした。なので、このブログは𝕏のようなどうでもいいことをばんばん書いていく予定だったんですよね。でも、なんとなくあまり短いものは寝かせて長くなるまで待つようになってしまった。これからはどうでもいいことをばんばん書いていく所存です。