diary

Dairy by @pocke

2020-02-28

履修登録をした。情報系の科目はゼロ。面白そうなのないしなあ。


ぼっち・ざ・ろっく! 2巻を読んだ。 絶妙なネタで好きなところもありつつ、インターネットで流行りがちなネタを入れてくるのはうーんという気持ちもありつつ。 読んでるとゴミ箱に入りたくなる。


github.com

PRにコメントした

2020-02-27

若い読者のための哲学史を読み終わった。これでこのシリーズの本は全部読んだことになる。 シリーズで特に面白かったのはアメリカ史と経済史かなあ。


起業のファイナンス 増補改訂版

起業のファイナンス 増補改訂版

読んでる。読みやすい。脚注が多いのは嫌い。 読みやすいけど、今のところは未知のことがあんまり書かれてなくて本当に読む意味あるんかなという気はする。 まー知識を得るというよりは雰囲気を知っておくという感じだから、明確に未知のことが書いてあったぞという気持ちにはならなさそう。

2020-02-26

docs.ruby-lang.org

Set#add?を知った。

require 'set'
s = Set.new

p s.add?(1) # => #<Set: {1}>
p s.add?(1) # => nil

自身に引数のitemを追加し、追加する前にすでにそのitemを持っていたらnilを返し、追加が成功したらselfを返す。

next if set.include?(item)
set << item

上のようなコードが次のように書けて便利。

next unless set.add?(item)

ただ、ifunlessが逆になるので少し混乱した。


github.com

Kibelaのgraphql-rubyのv1.10.xへのアップデートができていなくて、調べてたらすでにIssueが上がっていたので追いコメントした。

2020-02-25

github.com

annotate_modelsのバージョンを上げたらdiffが出てしまったのでIssueを書いた。


github.com

github.com

github.com

github.com

手持ちのCop ideaストックをRuboCop coreのIssueにした。


rurema-review.connpass.com

るりまレビュー会。いくつかPRをマージした。

github.com

bitclustでRuby 2.7+の警告が出ていたのを直した。

bitclust入門を書きたいなあ。


雑にirbにlsを実装した。雑なのでそのうちもうちょっとちゃんとする

https://github.com/pocke/dotfiles/commit/d74f9564a9df1f006e2a96698e07bd2902a14b51

2020-02-24

String#encode がfallbackとして [] メソッドを持つオブジェクトも受け付けるように書かれているのだけど、実際には受け付けてくれなくてよく分からんなとなったのでruby-jpで質問してみた。

Sets the replacement string by the given object for undefined character. The object should be a Hash, a Proc, a Method, or an object which has [] method https://docs.ruby-lang.org/en/2.7.0/String.html#method-i-encode

と言っているから受け付けそうなものだけど。

試したコードは次の通り

class C
  def [](str)
    p str
    '!'
  end
end

str = "\u00b7\u2014"
p str.encoding
p str.encode("Windows-31J", fallback: C.new)
# => U+00B7 from UTF-8 to Windows-31J (Encoding::UndefinedConversionError)

bugs.ruby-lang.org

nobuさんにbugsに登録してと言われたので、少しコードを整理して登録した。 1.9.3からのバグらしい。マジ……

nobuさんがそっこーで直していた。感謝


github.com

↑のbugsに上げたチケットの件で、そもそもこれを見つけた原因であるruby-signatureの方にも型定義を直すPRを出した。


github.com

Pathnameの型付けをしていたら、ドキュメントがおかしかったので直した。


確定申告をしていた。とりあえず一段落したから、来週あたりに仕上げて出すかな。


github.com

RuboCopに出しているPRのスタイルガイド版もPRした。英語レビューがほしい。

いつの間にかMarkdownからAsciiDocに変わっていてびっくりした。


twitter.com

この会話スレッドが勉強になった


github.com

ずっとるりまのメソッド一覧って読めないなと思っていたのでIssueを立てた。明日あたり作業してしまいたい

2020-02-23

github.com

regexp_parser gemにはeach_expressionというメソッドがあるのだけど、これを引数なしで呼び出した時にエラーになっていてしまったのを修正した。

こういうのは引数なしで呼び出した時にEnumeratorが返るようになっていると、ほかのEnumeratorのメソッドと連携しやすくて大変便利。


github.com

regexp_parserのPRではバグを見つけていて、それをRuboCopのCopにできそうだったからとりあえず雑にIssueを上げた。


github.com

これを踏んだのでIssueを読んでた。ちゃんと読んでないけど、Rubyの実装の詳細の話だからそこまで面倒見なくていいんじゃないか、という感じかなあ


gist.github.com

会社のRailsアプリでSteepを試すために使っている、型定義を生成するRake taskを公開しておく。

steep:baseで、既存コードからrbs prototype rbコマンドで型定義を吐いている。 ただ、これを単純に実行しただけだとクラスが重複するのでそれをいい感じに解消している。

多分、次のようなケースで重複していたような気がする(記憶が曖昧…)

# path/to/ns.rb
class NS
end

# path/to/ns/c.rb
class NS
  class C
  end
end

path/to/ns/c.rbの型定義としてNSクラスの空の型定義も吐かれてしまうのだけど、当然path/to/ns.rbNSクラスの型定義を吐くので死ぬ。みたいな問題だった気がする。

これはruby-signature側でなんとかしてほしい気がする。


github.com

↑の問題をruby-signatureのIssueにした。


mobile.twitter.com

てきとーに買ってきたみかんがわりと美味しかった。


github.com

Pathnameの型が足りなくて困っているので型付けしている。 いつのまにかassert_send_typeというアサーションが生えていた。 https://github.com/ruby/ruby-signature/pull/191 で生えたっぽい。


github.com

github.com

型付けはるりまとRDocを両方見ながらやっているのだけど、そうするとるりまの間違いがちょくちょく見つかるので直している。

2020-02-22

github.com

しばらく前に作っていた、rubocop-regular_expressionの件をRuboCop coreのIssueに上げた。 Coreにマージする方針で良さそうな感じがあるので、週末のあいだに作業しちゃおうかな