yhara.jp

Recent Posts

Go Language Specification輪読会に参加した

2020-10-16
Tech

たまたま時間の都合ができたので、前から気になっていた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を使う

2020-07-14
Tech

VimでRustのLanguage Serverを使う手順。

rlsまたはrust-analyzerを入れる

rlsはrustupでインストールできる。

rustup component add rls rust-analysis rust-src

rust-analyzerはrlsより新しいのだが、まだrustupではインストールできない模様。バイナリ配布があるのでそれをダウンロードしてPATHの通ったところに置く。

(more...)

OS X Catalinaに上げた

2020-06-28
Tech

家のMacBookはずっとOSアップグレードをしてなかったのだけど、qmk_firmwareのためにavr-gccを入れようとしたらXCodeが古すぎると言われたので、重い腰を上げてCatalinaにアップグレードした。

以前のアップグレードの際は途中で止まったりして印象が悪かったのだが、今回はすんなり行ってくれた。

ただmakeコマンドを打つと

unable to find utility "make", not a developer tool or in PATH

というエラーが出るようになってしまった。

このへんを見るも原因がよく分からず、App StoreからXCodeのインストールを試したら直った。


puma-devの残骸が残っていて.devドメインが閲覧できなかった

2020-05-17
Tech

puma-devを.devで運用していたのだが、最近は.devドメインで提供されるサイトが存在して、実用上困ることになっていた。例えば以下のエントリが閲覧できなかった。

puma-dev -uninstallで直るかと思ったけど直らず、/etc/resolver/dev というファイルを削除したら直った。



GitHubで存在しないファイルのsecurity alertが出た

2020-02-29
Tech

最近のGitHubは使っているライブラリの脆弱性報告が出たときにalertで教えてくれるんだけど、自分のプロジェクトの一つで削除済みのファイル(exmaples/rails4/Gemfile.lock)に対してalertが出たままになっていたので、サポートに問い合わせてみた。

Hello,

In the page https://github.com/yhara/ovto/network/alerts I see two security alerts.
One is for example/rails5/Gemfile.lock and another is for example/rails4/Gemfile.lock.

However, both files are already deleted from git master. Why these alerts are shown?
(more...)

DXOpal 1.4.1をリリースしました

2020-01-18
Tech

Rubyでブラウザゲームが作れるライブラリ、DXOpalの1.4.1をリリースしました。

v1.4.0はバグがあって取り下げたので、1.3.0以来のリリースとなります。

主な変更点は以下です。

  • dxopal initの代わりに、railsみたいにdxopal new GAME_NAMEとできるようにした(新規ディレクトリが作られる)
  • いくつかメソッドを追加(touch event対応等)
  • Opal 1.0に対応

touch eventは#21で作ってもらったもので、いまのところシングルタッチのみ対応ですが、これでスマホ用のゲームも作れるようになりますね。


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という機能が入りました。性能が求められる時に役に立つかもしれません。

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',
  \}

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


Posts

(more...)

Articles

(more...)

Category

Ads

About

About the author