MacのサービスでRubyスクリプトを動かす
Macの「サービス」からRubyスクリプトを起動する手順。
まず以下を参考に、Automator.appを起動し、「シェルスクリプトを実行」を登録する。
入力の引き渡し方法は「引数として」を選択。
シェルスクリプト部分を以下のように変更。
Macの「サービス」からRubyスクリプトを起動する手順。
まず以下を参考に、Automator.appを起動し、「シェルスクリプトを実行」を登録する。
入力の引き渡し方法は「引数として」を選択。
シェルスクリプト部分を以下のように変更。
qmkの環境構築をしてたら、tmuxが起動しなくなった。
/Users/yhara % tmux
[exited]
^[[?62;4c^[[ITERM2 3.3.12n%
brew upgradeを^Cで止めたりしたせいか…?と思ったが、ps aux | grep tmux
してみたら起動中のtmuxが一つあった。
killall tmux
で当該プロセスを止めたら無事起動できるようになった。(参考)
Rust + LLVMで自作プログラミング言語Shiikaを作っているのだが、開発中に遭遇するエラーには以下の種類がある。
一番面倒なのはもちろん最後のケースだが、これもさらにいくつかの種類に分けられる。
tl;dr This worked for me (iTerm2 on Mac)
$ cargo --color always build | less -R 2>&1
When I use lv
(or bat
) to read the output of cargo build
, the output is not colored, even with --color always
(i.e. $ cargo --color always build |& lv
).
Shiikaのctx周りをリファクタリングしたので、何をやったかメモしておく。
リファクタリングしたのはHirMakerContextという構造体である。こいつはASTからHIR(高レベル中間表現)を作る際に使うもので、もとはこういう定義だった。
このエントリは言語実装 Advent Calendar 2020の4日目のエントリです。昨日はmitsuchiさんのLLVM の Kaleidoscope を育てながら作るでした。
言語実装アドカレ、今年は全日埋まってるんですねえ。処理系Slackのおかげでしょうか?すごいなあ。
Shiikaは私が作っている、Ruby風の文法を持った静的型付けプログラミング言語です。Rubyのような手触りを保ちつつ、型をベースにしたプログラミングを楽しめる言語を目指しています。数年前から開発していて、昨年夏からはRust + LLVMによる処理系実装を始めました。
本記事では今年の主な成果を振り返ってみようと思います。
このエントリはキーボード #1 Advent Calendar 2020の2日目の記事です。前日はskyhigh_worksさんの【QMK】VSCodeでKeycodeの補完を有効にする - 天高工房でした。
本記事では28キーのミニマルなキーボード、Alphaの紹介をします。一見とっつきにくそうですが、とっても楽しいですよ!
僕のゲーミングキーボード見て pic.twitter.com/MSmcaLo0Fp
— yhara (Yutaka HARA) (@yhara) December 2, 2020
Alphaはキー数がわずか28しかない小さなキーボードです。いわゆる30%キーボードの一種ですが、代表的な30%キーボードであるGherkinでさえ30個のキーがあるのに、そこからさらに2つキーが減っています。
たまたま時間の都合ができたので、前から気になっていたGo Language Specification輪読会に参加してみた。今回はExpressionsの冒頭を読んだ。
面白かったのは、 if u = User{}; true {
のようにifのあとに中括弧を書くとエラーになるという話。
Goの中括弧はブロックを示す場合と、composite literalを示す場合がある。のだが、上記の場合はどちらなのか決定できない。そのため、ifの直後はパーサが特別なモードになっていて、中括弧は必ずブロックと見なすらしい。その結果、上記は(EBNF上はvalidにもかかわらず)エラーになるというわけ。
ちなみに以下のようにまぎらわしい箇所を括弧でくくってやると通る。
if u = (User{}); true {
CやJavaScriptではifのあとに括弧が要るからこういう問題は起こらない。Goでは括弧をなくした代わりにパーサが状態を持つようになったというわけ。
Rubyではこういうのが無数にあるんだけど、Goにもあるのが意外で面白かった。
VimでRustのLanguage Serverを使う手順。
rlsはrustupでインストールできる。
rustup component add rls rust-analysis rust-src
rust-analyzerはrlsより新しいのだが、まだrustupではインストールできない模様。バイナリ配布があるのでそれをダウンロードしてPATHの通ったところに置く。