WebHIDで PatliteのUSB機器を動かすコードを書いた

リポジトリ github.com デモサイト syohex.github.io 仕事でモバイルデバイスで USB機器の対応をする作業があって, Windowsとか macOSとか Linuxで対応する場合どんなコードになるのだろうかと調べていたんだけど, libusbを使ったりしてもポータブルに書くの…

emacs --no-window-systemで truecolorを効かせずに起動する

GUIエディタは VScodeでいいかということで, Emacsは常に -nw で起動するようにしてみたのだが, 昨今の terminal emulatorは truecolor対応になっており, リモートの環境で使っていた Emacsの色設定がかなり変に見えてしまう問題があった. 対応も面倒くさい…

Emacs 29の eglotを使った Rust環境の設定

Emacs 29から eglotが標準パッケージに入るということで, 最近はちょっとした C++や Goを書くときなどは Emacsを使うことが少し増えてきた. 仕事だと IDEや VScodeだけど. そこで Rustも設定しておくかということでやってみた. VSCodeだと基本的に全部自動だ…

tmux + 256colorで Emacsの見た目の調整

Ubuntu 22.10で環境変数 TERM=xterm-256color で Emacsを起動するとこんな感じなのだが tmuxを起動すると以下のようになりめちゃ見づらい これが嫌で TERM=xterm でここ 10年ぐらいやってきたのだが, さすがに 256colorの方が良いんじゃないって思って対応方…

i386 architectureのパッケージをすべて削除する

昨日メイン PCとサーバを Ubuntu 22.10に上げたけど改めて考えると i386パッケージいらないだろってことで消してみた. 複数あることでアップデートなんかも遅くなるので. パッケージを削除する 下記のコマンドなどで i386パッケージを一覧を得て, :i386 が末…

特定のプログラミング言語でショートカットキーを有効化する

[ { "key": "f1", "command": "rust-analyzer.openDocs", "when": "editorLangId == rust" }, ] when プロパティに editorLangId の条件を追加してやればよい. リファレンス - https://code.visualstudio.com/api/references/when-clause-contexts - https:/…

flutterの zsh補完を version 3対応した

zsh

github.com 古いままだぞという指摘されたので対応した. もっとちゃんとしない部分はあるけど基本は元のままにオプション等をひとまず version 3対応した. bash補完は公式で提供されるのが, flutterコマンドを実行して補完リストを使っているので遅い. コー…

ダウンロードした tar.gzをファイルに書き出さずに展開する

諸事情で Perlを書いていてやり方がわからなかったので調べた. ローカルファイルの tar.gzを展開みたいなのはそれなりにあったけど, オンメモリのまま処理する方法が皆無だった. #!/usr/bin/env perl use strict; use warnings; use HTTP::Tiny; use Encode;…

git-credential-manager-coreのインストール場所が Git for Windows 2.36.1で変更されていた

WSL2の git認証の手間を省くために git-credential-manager-coreを使っているが, Git for Windows 2.36.1でインストールパスが変わっており, pushや pullをしたりしようとすると file not found と出るようになってしまった. パスは次のように変わっていまし…

emacs 28.1で導入された repeat-modeに関する調査

はじめに 最近まともに追っていなかったから存在さえ知らなかったのだけど、markdown-modeの issueでそういう機能があってどういうものかと使い方を調べてみた. 機能 特定のコマンドのグループを連続でお手軽に実行するための仕組み. 例えば移動系コマンドで…

LinkedIn Learningの Rust Code Challenges をやった

www.linkedin.com 課題がいくつかあって解いて解説を見てという感じのコース。コードの雛形は githubに用意されているので, 足りていないところ埋めてテストが通れば OKという感じ. かっちりしたコースではなく解説はわりとグダっていたり雛形のコードに微妙…

Ubuntuで VSCodeの Quick Fixが使えなかった問題の調査と修正

VScodeには Quick Fixという機能があって, Rustとか Goの traitとか interfaceを実装する際の雛形の生成に使えるのですが, そのショートカットである Ctrl + . が Ubuntuで効かなかったのでその原因の調査と修正を行った. バインドされているキーを探す gset…

merge sort in F#

b.hatena.ne.jp merge sortを何も見ずに書けるかが気になって書いてみたが特に問題なく書けた. この手の問題は筋トレと同じでいかに普段手を動かして解いている感があるので, leetcodeなどは継続していた方がいいのかなと思った. open System let generateNu…

zero length array, flexible array

c

github.com たまたま目に入ったこのコードを見ていて, zero length arrayって末尾のメンバ以外でも使えたんだって思って気になるところを調べてみた. Flexible array en.wikipedia.org C99から入った機能. 配列の長さを宣言しないことで利用できる. sizeofは…

markdown-fontify-whole-heading-line

github.com markdown-mode に markdown-fontify-whole-heading-line flagを実装した. 機能としては org-fontify-whole-heading-line と同じで, non-nilの場合 header lineを丸々一行色付けできるようになる. 特に emacs 27で追加された faceの extend 属性を…

Visual Studio Code 1.67(2022 April)で入った Toggle Inlay Hintsが良い

code.visualstudio.com 詳細は公式サイトを見てください。 Visual Studio Codeでは上記のように型を書いていなくても型を表示してくれるわけですが, 正直うざいと思うことが多い。特にあまり型を明示的に書かない F#や Rustの場合. 見た目もそうなのだが, 文…

scoop cleanup

Windowsでのパッケージ管理には scoopを使っているが, scoop cleanup を知らなかった. > scoop cleanup '*' Removing 7zip: 19.00 21.06 Removing bat: 0.18.2 0.18.3 0.19.0 Removing cmake: 3.21.3 3.21.4 3.22.0 3.22.1 3.22.2 3.22.3 Removing deno: 1.1…

HTTP::Tinyで httpsアクセスで 599が返るようになった問題の修正

某モジュールのメンテンスでテストに必要なモジュールを入れようとしたらそもそもエラーが出るということで, エラー原因を調べてみたところ下記のようなエラーが出ていた。HTTP::Tinyを使った httpsへの GETが軒並み失敗していることが原因であった。 $VAR1 …

apt-key deprecation warningの解消

askubuntu.com gihyo.jp W: https://packagecloud.io/slacktechnologies/slack/debian/dists/jessie/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details. 最近上記の…

良いコード/悪いコードで学ぶ設計入門

gihyo.jp 良いコードを書くのは難しいなと思った。自分が今どういうコード書いているのかとか激しく依存するからここに載っていることをすべて実践すればうまくいくのかと言われるとなんとも言えない。経験がある人で良いものも悪いものも知った上で今の自分…

Ubuntu 22.04で JetBrains Toolboxが動かなくなった問題の対応

https://youtrack.jetbrains.com/issue/TBX-7534 ふと気づいたら, JetBrains Toolboxが動かなくなっていた。libfuse2を dlopenしているようだが, Ubuntu 22.04で libfuseが 3系がデフォルトになってしまったので動かなくなっていた。 以下のようなエラーが出…

/var/log/journal 以下を掃除する

unix.stackexchange.com 10年超動かしている Ubuntuサーバ(systemdが動いていたのは10年もないかもしれないが)のディスク容量が残り少なくなってきて掃除できないかなといろいろなディレクトリのサイズを見ていると /var/log/journal 以下にログが 10GB近く…

Ubuntu 22.04にアップデートした

トラブルは特になく自前でコンパイルしていたソフトウェアの emacsと h2oを再コンパイルしたぐらい. h2oはバンドルしている mrubyが古く Ruby 3では mruby handlerを有効にしてビルドできないため, Ruby 2が必要になった. github.com Ubuntu 22.04の Rubyは …

List::UtilsBy::XS 0.06をリリースした

metacpan.org github.com Debugビルドした Perlだと extract_by で assertionに引っかかることがあった問題の修正. 戻り値の個数が引数の数より多い場合 EXTEND を使って Stackを確保しないといけないという理解. 他のメソッドはなんで引っ掛からないんだっ…

世界一やさしい海外移住の教科書

世界一やさしい海外移住の教科書: ビザなし、スキルなし、英語力ゼロから海外移住を目指す方法作者:ZiziAmazon 最近英会話を始めたりしたりして海外移住、海外で働くというのが幾分気になっているため読んでみた。1ページ当たりの情報量が少ないのですぐに読…

F#を4ヶ月ほど学んでみて

F#

今年に入って新しい言語を学ぶかということで F#の勉強を初めて 4ヶ月ほど経ったので現状のまとめ。 やったことは主に小さいプログラムを書いたり, LeetCodeの問題を 100問ほど解いたという程度(LeetCodeは現状 F#未対応なので対応してほしい)。 結論として…

F#で外部コマンドを起動し, その標準出力結果を扱う

コード open System.IO open System.Diagnostics let cmd = new Process() cmd.StartInfo.FileName <- "ls" cmd.StartInfo.Arguments <- "-l /usr/bin" cmd.StartInfo.UseShellExecute <- false cmd.StartInfo.RedirectStandardOutput <- true if cmd.Start(…

F#で Priority Queueを使う

概要 競技プログラミング的なものを解いているときに, 優先度付きキューを使いたくなることがあるのでそのメモ コード .NETの標準ライブラリには存在しないので F#向けのコレクションライブラリを nugetから取ってくる. fsxで書いている場合は以下のような行…

quadmath Perlでハマったところ備忘録

細々とメンテナンスしている Perlモジュールで quadmathが有効な Perlで失敗しているケースがいくつか見られたので対応していた. その対応に関する記録. usequadmathとは https://perldoc.perl.org/Config#usequadmath 数値の保持に可能であれば 4倍精度浮動…

unzip file which contains symbolic link by zip-rs

zip-rs does not support symbolic link yet(https://github.com/zip-rs/zip/issues/77). However it is possible by using public APIs as below. use std::fs; use std::io; fn main() { std::process::exit(real_main()); } fn real_main() -> i32 { let …