diary

I like Hatena Star with a text selection.

2020-02-21

github.com

GraphQLとGraphiQLがあまりにも目が滑って腹が立つので、クソゲーを作った。


github.com

github.com

RuboCopの気になっているIssueを見ていて、$,がexplicitなのはそうだけど誰も使ってないよなあと思ったのでコメントした。 ついでにdeprecationになる時のNEWSを読んでいたらtypoがあったので直した。


github.com

KibelaでRuboCopのアップデート業をしてて、Cop名でCHANGELOGgrepしたのにCopが見つからなくてびっくりしたのでPRにした。

今回のアップデート業では、とりあえずpendingになっているやつを全部Enabled: trueにして終わりました。


github.com

rbs prototype rb foo.rbとかやるとfoo.rbからいい感じにrbsファイルを生成してくれる機能があるのだけど、メソッドの戻り値の型が常にuntypedになってしまっていた。 ただ、メソッドのbodyが単にliteralだけを含む場合は簡単に型をつけられるので、つけるようにした。

たとえば、Hashを返すケースとか、String Interpolationを返すケースとかはわりと便利なんじゃなかろうか。

def foo
  {
    foo: 1,
    bar: {
      a: 42,
    },
  }
end
# => def foo: () -> { foo: 1, bar: { a: 42 } }

def cache_key
  "#{self.class.name}/#{self.id}"
end
# => def cache_key: () -> String

2020-02-20

github.com

久々のruby-signature。--no-stdlibオプションが効いていなかったので直した。


github.com

ruby-signatureのSyntax Errorをチェックするコマンドが欲しかったので足した。

サブコマンドの名前はなにがよいのかね。アイディアなし…


github.com

private def foo
end

上のようなメソッド定義を書いていた時にrbs prototype rbコマンドがこれを無視していたのを直した。 弊社ではこのスタイルでprivateメソッドを定義していてこれは最高なので、社とは関係のないプロダクトでもだいたいこのスタイルで書いている。


github.com

Rails向けにrbsファイルを生成するやつを作っている。 今できるのは次のコードの生成。

  • path helperの生成
  • Active Recordまわり
    • カラムに対応するメソッドの定義
    • has_many, belongs_to, has_oneに対応するメソッドの定義
    • enumで定義されるメソッド、scopeの定義
    • scopeで定義されるscopeの定義
      • これはscopeが定義されていたらそれは自身のクラスのAR::Relationを返すものと雑に判定している

あとなんか生成しておくとうれしいやつあるかな。


https://github.com/pocke/rbs_rails/blob/596ad0a1de9daedcbe173761164fc6f11727e038/lib/rbs_rails/active_record.rb#L144-L148

静的解析をしていて、リテラルを表すASTをたどるコードを書くよりも、そのリテラルを表すRubyオブジェクトを扱った方がはるかに楽。 なので、ASTにリテラルしか含まれていないことを確認してコードをevalするという雑なコードを書いた。これは便利。

2020-02-19

github.com

github.com

今日のRuboCopアイディア。型はなし。


github.com

GitHubの新Notificationで、リポジトリのownerを検索クエリにできなくて不便だったので作った。 user:rubocop-hqみたいな検索クエリをrepo:rubocop-hq/rubocop repo:rubocop-hq/rubocop-rake ...のようなrepo:クエリの羅列に変換してくれる君。


github.com

前に気がついてIssueを上げ忘れていたので上げた。


twitter.com

気になる。

ruby-jpで軽く聞いてみた感じだと、基本は自身のRelationを返すもので、とはいえ古いコードだとpluckしたりfindしたりしているのはあるよね、というのが多数派っぽい。 has_manyぽい感じに他クラスのRelationを返すこともあるかなあと思っていたけど、それは見たことがないと言われた。確かに見たことがなさそう。

2020-02-18

目がかゆい。


github.com

キリ番

昨日mergeされたPRで、そういえばgit cloneしたきりGitLabで試そうと思って試していなかったなとやってみたらコケてしまったのでIssueにした。 今日のうちに見たい。

github.com

↑のIssueの件のPR


twitter.com

そーいやuniquenessのやつ、今はカラムの集合が完全に一致する場合しかokと判断していないのだけど、部分的に一致するのでもokで良いのだろうか。 unique制約が守られるという点ではindexの対象が少ない場合でもokだけど、速度的な意味では逆にindexの対象が多くてもokとなりそう。うーん

どうなんですかね。まあとりあえずは現状でリリースで良さそう。 unique制約の意味がなくなる方が重要だろうし速度的な話では全部のカラムにindexが効いてなくても良いだろうし、まあunique制約がちゃんと効くこと優先で、ゆるめの指摘にするモードがあってもよいのかなと思った。


rurema-review.connpass.com

るりまレビュー会。前半はFit Boxingやっていて忘れてた。 ちょこちょこPRをマージして回っている。

github.com

古いIssueを掘り返してきて直した。


github.com

WIP

2020-02-17

twitter.com

e21cという単語があることがわかった。

$ < /usr/share/dict/words | ruby -e 'puts ARGF .read.lines.grep(/^[a-zA-Z]+$/).map(&:chomp).max_by(&:size).then {|w| [w, "#{w[0]}#{w.size-2}#{w[-1]}"]}'
electroencephalographic
e21c

PIXIV TECH FES. に行っていた。久しぶりに新宿に行ったら駅が変わっていて難しかった。


pocke.hatenablog.com

rubocop-railsにPRしていたやつがmergeされたのでブログ記事を書いた。 記事自体は最初の実装した直後ぐらいに書いていたので、それを見返しつつ加筆修正をした。

便利そうな気がしつつ、警告されたところで今更unique indexはれない……みたいなケースもありそう。

db/schema.rbをパースする関係上、未知のdb/schema.rbでコケる可能性はある。 とりあえず自分が見れるRailsアプリいくつかで動作確認はしている。 自動生成されたファイルだからまあ複雑なコードは出てこないしそんなに心配はしていないけど、Active Record周りの拡張gemとか入れていると壊れたりするかもなあ(なにもわからない)。

2020-02-15

今日はでかけていたので進捗はなし。 強いて言えば歩いた。

twitter.com


github.com

昨日書いていたパッチを投げた。


scrapbox.io

Rubyの考古学をしていてよく分からん番号が出てきてどうやって見に行けばいいんだっけ、となりがちなのでまとめた。 SVNのコミットだけどうやってたどるのかよく分からなかった。誰か教えて

と言っていたら笹田さんに教えてもらった。 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=12345 からアクセスできるとのこと。


GPD PocketにArch Linuxを入れた時の記事を発掘したので供養しておく。 書こうと思って飽きたっぽい

以下その記事

GPD Pocket(初代)にArch Linuxを入れた

だいたい https://pocke.hatenablog.com/entry/2019/06/26/113235 をなぞりつつ、baseから色々減っている1のを追加で足したりしていた。

足したもの

Wi-Fi

Wi-Fiは上記packageを入れていれば動く。元々は専用パッケージを入れないとダメっぽかったのだけど、ちゃんと動くようになっていて便利。 インストールディスクでは何もしなくてもWi-Fiが動く。

音が出ない?

TODO: 確認して直す

バッテリー残量がわからない

TODO: 確認して直す

キーボード

破壊してしまったので https://www.dentonlineshop.com/product-page/交換用キートップ-gpd-pocket用 で交換用キートップをポチった

参考