yhara.jp

Recent Posts

Ovto 0.5.0をリリースしました

2019-12-22
Tech

このエントリはOpal Advent Calendar 2019の22日目の記事です。

Ovtoの0.5.0をリリースしました。

変更点

  • Opal 1.0がリリースされたので、対応しました。といっても具体的な修正は特に必要なく、gemspecを直すくらいでOKでした。
  • pockeさんに寄贈していただいたOvto::PureComponentという機能が入りました。性能が求められる時に役に立つかもしれません。


2019年10月 (Shiika 定数)

2019-11-03
Diary

近況です。

ISUCON2019 本戦出場

10月頭はISUCON本戦のために新宿まで行ってた。予選の規模もすごかったけど、本戦ではこの32チームのために予選とは全く違う問題が作られていて、本当に運営がすごいと思う。ありがとうございました。

結果は13位…なのだけど、実をいうと終了10分前からベンチマークのFailが連発しており、あわやNo Scoreかと思われたのだった。ので順位がついて良かったなあというのが正直な気持ち。

(more...)


vimに音声を再生させることで目を休める

2019-09-06
Tech

quickrunというプラグインを使うと、vim内から任意のプログラムを起動できるようになる。僕はこれを使って、Rustのユニットテスト(cargo testコマンド)を\rで起動できるようにしている。

ただ少し困るのは、場合によってコマンドの実行時間が大きくことなる点だ。コンパイルエラーがあるときは一瞬で結果が出るのだけど、コンパイルが通ると、実行に10秒程度かかることもある。どちらになるのかは実行してみるまで分からない。

これに対して、.vimrcを以下のようにすることでcargo testの実行前と実行後に音を鳴らすようにしてみた。afplayはMacにデフォルトで入っている音声再生コマンドである。

  let g:quickrun_config['rust'] = {
  \ 'exec': 'afplay ~/proj/sound/beep_low.wav; cargo test; afplay ~/proj/sound/beep1.wav',
  \}

こうすると、テストの実行が長い場合は音が鳴るまで目を閉じておくことができ、プログラミングという負荷の高い作業の中で少しでも目を休めることができる。


2019年8月 (syntax-case実装)

2019-08-31
Diary

近況です。

syntax-case

BiwaSchemeにsyntax-caseを実装した。まだ基本的なケースだけしかサポートしていないので本体にマージしていないが、とりあえず現時点のものはここにある。

シンボルを自動でリネームする機構("Beautiful Code"に載ってるやつ)までは何年か前に実装していたのだけど、それを一歩進めて、define-syntax + syntax-caseで(簡単な)マクロが定義できるようにした。おぼろげに「パターンマッチを実装する」という作業だと想像していたのだけど、それに加えて「マクロ展開時にScheme式を実行できるようにする」という作業があった。このあたりの話は月報ではとても書ききれないので、別途記事にしたい。

どうして数年ぶりに作業を再開したのかというと、define-syntaxないのと聞かれたからという単純なものである。まあ中途半端な状態で放置してたのがずっと気になってたというのもあるけどね。

(more...)

2019年7月 (Shiika コード生成)

2019-07-31
Diary

近況です。

Shiika

7月は主にShiikaのLLVM IR生成をやっていました。.llファイルの書き方は知っていても、それをinkwell(あるいはLLVM C API、あるいはLLVM C++ API)で出力する方法が分からなくて手間取ったりしましたが、だいぶ慣れてきて、Boehm GCでオブジェクト用のメモリをアロケートするところまでできました。あとはnewとinitializeを実装すればShiikaオブジェクトを実体化できるようになって、動くものが増えるはずです。

…と思ったのですが、p foo().bar がパースエラーになるのをきっかけにパーサ沼にはまってしまい、昔のRubyのparse.yを調べたりしていました。なんとなく分かってきたので、次の作業はこれを実装することになりそうです。

(more...)


とちぎRuby会議08で登壇しました

2019-07-09
Event

Tochigi RubyKaigi 08に呼んでいただいたので、zanzouというgemを作った話をしてきました。あと餃子を食べたりボルダリングに行ったりしました。楽しかったです。

zanzouはimmer.jsをRubyに移植できないかというチャレンジなのですが、ES6 Proxyがすごくて、JS以外で同じことをするのは結構大変そうだということが分かりました。ES6 ProxyはArray.sortの内部までトレースできたりするんですが、RubyのsortはCで実装されていて、その中のrb_ary_pushとかまではフックできないんですよねえ。

会場は駅から少し離れた場所でしたが、一つの部屋で昼食から夕食まで過ごすスタイルで楽ちんでした。懇親会は自由参加のLTがあったのですが、参加枠が全員分用意されてて、最終的に40人以上が発表者になっててすごかったです。

2分という時間設定が絶妙で、これが初LTという方も何人かいたり、資料なしで喋る人もいました。なんていうか、「自分も何かしたい」と思わせる場は多くても、実際に参加させてしまう場は貴重だと思います。

自分のスライドはこれでした。


Posts

(more...)

Articles

(more...)

Category

Ads

About

About the author