yhara.jp

Recent Posts
Edit

WebAssemblyとは何であり、何でないのか

2017-12-01
Tech

これはWebAssembly Advent Calendar 2017の1日目の記事です。明日はyamachuさんによるElectronでWebAssemblyを使う話だそうです。楽しみですね。

WebAssemblyとは

アドカレ初日記事なので、WebAssemblyとは何か?という話を簡単にしておきます。WebAssemblyはWebのための新しいコンパイルターゲットで、Chrome/Firefox/Safari/Edgeでの動作が既にサポートされています

Webのためのコンパイルターゲット、とは何でしょうか。WebAssembly以前は、JavaScript以外の言語をブラウザ上で動かそうと思ったらまずJavaScriptに変換してやる必要がありました。近年だとScala.js(Scala→JavaScript)やGopherJS(Golang→JavaScript)というプロジェクトがあり、古くはC/C++のコードをJavaScriptにするEmscriptenがあります。しかし例えばEmscriptenでC言語で書かれたゲームをまるごとJavaScriptにしたりすると、出力結果の.jsファイルが巨大になり、ダウンロードや読み込みに時間がかかってしまうという問題がありました。

これを解決するのがWebAssemblyです。.wasmファイルはバイナリフォーマットなので.jsよりずっと小さくでき、またパース処理も単純なのでロードも速くなります。WebAssemblyの登場により、JavaScript以外の言語をブラウザで動かすことがずっとやりやすくなったと言えるでしょう。

(more...)
Edit

qmk_firmwareで「tmuxのコピーモードに入るキー」を作る

2017-11-24
Tech

来年1月のレツプリ組み立てに備えてergodox ezのキーマップをレツプリに寄せてるんだけど、[がベースレイヤーでなくなった関係で、tmuxのコピーモードに入る手順(^z [)が Ctrl z RAISE kみたいな4キーになって結構厳しかったので、qmk_firmwareの設定で「それ用のキー」を作ってみた。

当該コミットはこれ。

マクロを定義する

やり方は簡単で、keymap.cの下の方にあるaction_get_macro関数を編集し、キー配置欄にM(0)とか書くだけ。今回はRAISE + ,Ctrl z [を入力したいので、以下のようになる。

SEND_STRING(SS_LCTRL("z")"[");

SEND_STRINGの使い方は以下を参考にした。

Edit

Gateron Brownより軽めのTactileなスイッチを探しているのだが

2017-10-30
Tech

Kailh Speed Copperのスペックが40gと書いてあるサイトと50gと書いてあるサイトが混在してて混乱してる。

(more...)
Edit

qmk_firmware: TAPPING_TERMで記号入力ミスを改善する

2017-10-17
Tech

qmk_firmwareの話。

最近はLOWER+Qで「!」を入力とかやってるんだけど、LOWER押してからQを押すまでが速すぎるとqが入力されてしまってちょっと困っていた。

どうもTAPPING_TERMという値を設定すると改善するようだ。

いろいろ試した結果、75だとまだ困る場面がありそうだったので思い切って5にしてみた。これでだいぶ良くなった。

TAPPING_TERMという設定値はTap Dance機能に使われるもののようだ。あるキーをカカッと連打したときだけ別のキーコードを送信するというやつ。TAPPING_TERMは何ms以内に2回押したらTap Danceと判定するかの閾値なので、5とかに設定するとまともに動かないと思う(デフォルトは200ms)。僕は使ってないからいいけど。

ところでこの状態でも、LOWER→Qを最速で押すと誤入力してしまう場面がある。LOWERを押しっぱなしにしてれば大丈夫だけど、Qを押す前にLOWERを離してしまうとだめなようだ。いやまあそりゃそうか。でも記号をひとつだけ入力したいときってこうなりがちなんですよね。気をつけるしかないのかな。(あ、上で困ってたのはこのケースかも。ということは5ほどは小さくしなくても大丈夫かもですね)

Edit

ブログを作る(14) v1.0.0にした

2017-10-08
Tech

このブログのソースコードを更新して、バージョン1.0.0にした。あんまり長いこと0.xを続けると1.0にするタイミングを失いがちなので、とりあえず実用はできてるという意味で1.0にした。別に他の人に使わせるわけじゃないのでどうでもいいんだけど(READMEにも書いてありますがこれをそのまま使うよりは、これを参考にして自分が欲しい機能を作り込むのが良いと思います)。

1.0ではDBのスキーマをいじって、http://yhara.jp/LetsSplit のようにWikiっぽいURLでアクセスできる記事と、通常のブログ記事が別のAR modelになるようにした(今まではPostクラスが両方を兼ねていた)。

Edit

Adding SUSHI key to my ErgoDox EZ

2017-09-27
Tech

I got some cute keycaps at the RubyKaigi 2017. As a natural consequence, I wanted to input a Sushi emoji(U+1F363) by pressing it. Here is how I configured my ErgoDox EZ to do that (Note that steps depend on your OS. The following is steps for macOS.)

1. Configure qmk_firmware

First, you need to add some settings and rebuild qmk_firmware (as you may always do for your ergodox.)

This is the patch I used this time.

(more...)
Edit

またqmk_firmwareのコンパイル方法が変わっていた

2017-09-27
Tech

qmk_firmwareをgit pullしたらまたコンパイル手順が変わっていた。開発が活発でありがたいことである。付いていくのが大変だけど。

試しに、keyboards/ergodox_ez/keymaps/yhara/keymap.cを置いて、qmk_firmware/以下でmake ergodox_ez-yharaしてみる。

(more...)
Edit

Dropbox内でsymlink作ると競合が発生しまくる問題

2017-09-27
Tech

Dropboxはずっと個人用に使ってるんだけど、たまに「xxxの競合コピー」みたいなファイルが発生しまくることがあって困っていた。

発生しまくる、というのは要するにvimでファイルを保存するたびに、という意味で、僕はESCを押してinsert modeを抜けた瞬間にセーブする設定にしているので、発生しまくるのであった。

symlinkが悪い?

どうもDropbox内にinternalなsymlinkを作る (つまり、Dropbox内のファイルへのsymlinkをDropbox内に作る) とこういうことが起きてしまうようだ。

回避策

僕の用途だとsymlinkを作るのはあるディレクトリに短いパス名でアクセスしたいときなので、symlink自体をDropboxの外(例えば~/以下)に作ることで回避できた。

まとめ

Edit

RubyKaigiで発表しました

2017-09-20
Tech

RubyKaigi 2017 Hiroshimaで発表しました。

スライドは英語ですが、話す内容を日本語でメモしたものがあります。

CFP応募時点では着地点を決めてなかったので大変だった。特にwasmでは実行速度そのものは改善しない[^1]のだと気づいたあと、どうしようかなと思ったけど、RubyとWebAssemblyの接点について検討するという話にした。

(more...)
Edit

Ergodoxを最上段を使わないキー配置にしてみる

2017-09-14
Tech

いまはErgodox EZを会社で使ってるのだけど、レツプリ組み立てを視野に入れて、最上段がなくてもやっていけるかどうかを試してみている。いま現在のキー配置はこれ。

ポイントをいくつか解説する。

レイヤー

BASE, SYMB, MDIAの3レイヤー構成だったのを、LOWERとRAISEを足して5レイヤー構成にしている。ただSYMBはもう使わない予定で、MDIAも音量操作くらいでしか使わないので、実質的には3レイヤーに近い。

(more...)
Next »