diary

I like Hatena Star with a text selection.

2020-02-14

twitter.com

昨晩からこれが気になっている。 状態Sを状態Tに変化させるような手順fと、状態Sを状態Uに変化させるような手順gがある時に、状態Sに手順hを実行し続けて状態Sに戻るまでにTとUの両方を経由するような手順hがあることを示せば芋づる式に証明できそうな気がする。

と言っていたら面白そうな本をruby-jpで教えてもらった。物理本しかないけど、ポチろうかなあ…


qiita.com

github.com

git diffでpagerを表示したくないなと調べていたら、どうやらgitコマンドに--no-pagerオプションを渡すと良いらしい。 git diff --helpしても出てこなかったのでググったら見つかった。なるほどなあ


github.com

rubocop-rake の v0.5.1 をリリースした。修正内容は↑のPRのbug fixのみ。

PRはだいぶ前に作ってたんだけど、1晩ぐらい放置して何も言われなかったらmergeしようと思っていて、mergeするのをすっかり忘れていた。


https://github.com/ruby/ruby/blob/2efb38e766b6fc304bb933d696c7500425d178a1/compile.c#L2832-L2861

Rubyのrangeの最適化を眺めていて、両端がIntegerじゃなくても、両端がStringであれば最適化されるのに気がついた。

ただ、どうやらwhen節の条件文などに置いてある状況じゃないと最適化されないっぽい。なんでだろう?

# 最適化されない
x = 'a'..'z'


case x
# 最適化される
when 'a'..'z'
end

あと、frozen string literalのときはputstringputobjectになると知った。

$ ruby --dump=insns -e '"a"'
== disasm: #<ISeq:<main>@-e:1 (1,0)-(1,3)> (catch: FALSE)
0000 putstring                    "a"                                 (   1)[Li]
0002 leave


$ ruby --dump=insns --enable-frozen-string-literal -e '"a"'
== disasm: #<ISeq:<main>@-e:1 (1,0)-(1,3)> (catch: FALSE)
0000 putobject                    "a"                                 (   1)[Li]
0002 leave

github.com

そういえば放置していたのでコメントをした

2020-02-13

読み終わった。すこし時間がかかった気がする。

https://scrapbox.io/pocke-sub/%E8%8B%A5%E3%81%84%E8%AA%AD%E8%80%85%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E8%80%83%E5%8F%A4%E5%AD%A6%E5%8F%B2


こないだ投資信託ポートフォリオを組み直したのだけど、定期積立が特定口座で買われていてびっくりした。 とりあえずNISAに設定し直したけど、特定口座で買ってしまった銘柄が少しだけ残っている。これどうしようかなあ。

2020-02-12

twitter.com

便利そう、dotfilesで使える気がする


scrapbox.io

ruby-jpで教えてもらった。記事にもあるとおり、rails consoleだとブロック無しでtransactionを使いたいなーと思って探していた。

2020-02-11

るりまレビュー会。今日は大江戸の影響もあって参加人数が少なかった。いつもの時間に見ていたのは一人もいなさそう。大江戸に行ってない私も漫画読んでてすっかり忘れていた。

github.com

github.com

レビューしたPRをマージして、コメントした点を自分でPRした。


github.com

ruby-jpのslackでRationalで盛り上がっているのを見て、なんとなくRationalのドキュメントを見ていたら間違った記述っぽいのを見つけたので直した。

2020-02-10

github.com

Rackのバグを踏み抜いたのでIssue報告したら即対応してもらえた。ありがたい。


今日は珍しく8時過ぎまで仕事をしていた。1年に1回ぐらいはこういう日があってもよさそう


github.com

これは昨日書いてたやつ。 querlyはquerlyのパターンマッチ言語があるけど、Rubyをパターンマッチ言語として使うと便利なのではと思って試しに実装してみている。 実装したらquerlyのパターンマッチ言語があることの魅力が分かってきた。


github.com

コメントをもらっていた、今日はもう眠いので明日見る。

2020-02-09

github.com

stackprof-runがRuby 2.8で動かないのを見つけたので、直してv0.4.3をリリースした。


github.com

なるほどなあとなったのでコメントした。あとPRもちょっとレビューした。


github.com

るりまのIssueからRubyの最適化を眺めていた。


Twitterの鍵垢に飽きたので鍵を外した。

2020-02-08

github.com

久しぶり?の新作Copです。

class Article < ApplicationRecord
  validates :user_id, uniqueness: true
end

このようなvalidationsがある時に、user_idにDBでunique indexが張られていなかったら怒るCop。 indexがないと結局uniqueにならなかったり、テーブルが育ってくると重いクエリがinsert/updateの度に走って破滅したりする。

これを実装するにはRuboCopがdb/schema.rbの情報を知らないといけないので、db/schema.rbをパースしていい感じにするコードを書いた。 rubocop-railsが本体から分離したのでこういうコードもガンガン入れていける気がする。

とりあえずこのCopを実装してみたけど、db/schema.rbの情報があればもっといろいろできるんじゃないかなあ。


github.com

RuboCop RakeにIssueが来ていたのに今更気がついたので直した。


github.com

うーん、むずかしそうだなあ。そのうち見る……