2016-12-13
Tech 本記事はOpal Advent Calendar 2016 の13日目の記事です。
11日目 のエントリではOpalのString以外クラスを読むと書いたのですが、実際読んでみるとあんまり解説することがない(Stringの回と似たような内容になってしまう)ことに気づいたので、今回はパーサを読むことにしました。
パーサはどこにある?
OpalはRubyからJavaScriptへのコンパイラです。コンパイラなのでパーサはホスト側言語(=Ruby)にあれば良い…と思いきや、Opalにはevalがあります。Kernel#evalが呼ばれた場合、Opalプログラムのパースを「実行時に」行う必要があります。このためパーサはJavaScriptかOpal自身で実装されていると予想できます。
ということを念頭に置きつつ、githubでparserで検索 してみます。どうもlib/opal/parser.rbがそれのようです。あれ、lib以下ということはRuby用なのか?と一瞬思いましたが、if RUBY_ENGINE == 'opal'
という行があるので、RubyでもOpalでも動かせるようにしてあるようです。
2016-12-11
Tech 2016-12-07
Tech Opal はJavaScriptで書かれたRuby処理系です。OpalではArray#findといった組み込みライブラリもJavaScriptで再実装しているので、テストが膨大な数になりそうですが、そのあたりはどうしているのでしょうか。
ruby/spec
Rubyにはruby/spec というテストスイートがあります。これは、CRubyやJRubyなど複数の処理系間で挙動を揃えるために作られたものです。READMEにあるようにもとはRubySpecという名前でしたが、現在はThe Ruby Spec Suiteというのが正式名称になっています(が、カジュアルには今でもrubyspecといえばこのruby/specを指すことが多いようです)。
Opalはこのrubyspecをテストとして使うことで、テストを0から書く手間を省きつつ、他の処理系との互換性を担保しています。
Opalとrubyspec
2016-12-06
Tech このエントリはErgoDox Advent Calendar 2016 の6日目のエントリです。
今年の5月に仕事用キーボードとしてErgoDox EZ (組み立て済みErgoDox) を購入し、半年が経ちました。ErgoDoxのメリットの一つとしてキーマップのカスタマイズ性の高さがありますが、一方で「Pキーの右にたった一列しか場所がない」という特殊な形状のため、キー配置をどうカスタマイズしても慣れるまでに多少の練習が必要になるという問題もあります。
本稿ではなるべく練習が要らないキー配置について考えます。
ポイント
キーボード上にはたくさんのキーが存在しますが、それぞれの使用頻度には大きな隔たりがあります。「%」や「&」など使用頻度の少ないキーは、多少変なところに配置してもそれほどストレスにはなりませんが、EnterやBackSpaceなどの基本的なキーを変わったところに置くと慣れるまで大変です。
2016-12-06
Tech 2016-12-01
Tech 12月です。今年もアドベントカレンダーの季節がやってきました。
Web上におけるアドベントカレンダーというのは12/1から12/25までの間、一つのテーマで毎日ブログなどに記事を投稿するイベントで、日本においてはPerlコミュニティから始まったような記憶があったのですが、はっきりとは覚えていなかったのでこの機会に確認してみました。
2008年
2008年12月、日本のPerl界隈でアドベントカレンダーが開催されます。以下の記事によると海外のPerlコミュニティでは2000年から 同様のイベントが行われており、それを日本に輸入するという形だったようです。この年は特殊ルールとして、原稿を書いた人が翌日の担当を指名するというバトン式で行われています。
2016-11-23
Tech Though LLVM itself does not have a GC algorithm, it is not so difficult to use existing GC library, especially conservatice GCs like Boehm GC .
Link Boehm GC
Call GC_malloc instead of malloc
Prerequisites
LLVM (eg. brew install llvm
)
Boehm GC (eg. brew install boehmgc
)
2016-11-22
Tech
ということでいろいろ考えた のだけど、とりあえずboehm gcをちょっと触ってみることにした。
Boehm GC
Macだとbrew install boehmgcで入る。
とりあえず最小のサンプル。GC_MALLOCというのがBoehm GC版のmallocで、メモリ確保にはこれを使うことになる。GCを開始するというAPIを呼んでいないけど、GC_MALLOC時に適宜呼ばれるようだ。
2016-11-17
Tech 今さらだけど「近&況」というタイトルについて。わりあい適当に付けた。今夏にブログを作り始めたときに仮のものとしてh1タグに「近況」と書いていて、公開後もしばらくそのままになってたのだけど、このブログは英語記事もいっしょくたに書くので、タイトルだけ日本語だと英語圏の人から見て変な感じになる可能性がある。ということで近と況の間に記号を入れることでこう、ロゴタイプっぽくならないかなと思ったのだった。&自体は最&高 から拝借した。久しぶりにPON PON PONのPV見たけど1億再生超えててやばい。
VIDEO
2016-11-17
Tech 今年もアドベントカレンダーの季節がやってきました。Rubyのカレンダーが埋まるのが遅くてあれっ?と思ったのですが、よく考えると近年ではひとくちにRubyと言ってもいろいろなトピックがあり、それぞれの話題別のカレンダーが立っているようです。ということで、Rubyに関係ありそうなカレンダーをまとめてみました。
Rubyそのものについてのカレンダーです。
Railsについてのカレンダーです。もう一個立ってる のでそちらにも記事が上がるかも…?