diary

I like Hatena Star with a text selection.

2020-08-12

地名の楽しみ (ちくまプリマー新書)

地名の楽しみ (ちくまプリマー新書)

地名の楽しみを読んでいる。まだ40%弱しか読んでないけどめっちゃ面白い。

twitter.com

twitter.com

twitter.com

スルッと読めて面白くて良い。


github.com

TraceLocationにCLIを追加するPRがマージされてた。やったね。

PRの例ではtrace_location bundle -vとかやっててこれは実際動くのだけど、めっちゃ時間かかるしめっちゃでかい出力が出るのでこれだけだとそこまで実用的とは言いづらい。

ただ、例えば次のように局所的なコードを-eで指定すると割と実用的なんじゃないだろうか。

$ RUBYOPT=-ruri trace_location -e 'URI.parse("https:://github.com")' -f log
Created at /tmp/tmp.bYiuL59j5n/trace_location-2020081223081597243953.log 

$ cat /tmp/tmp.bYiuL59j5n/trace_location-2020081223081597243953.log
Logged by TraceLocation gem at 2020-08-12 23:52:33 +0900
https://github.com/yhirano55/trace_location

[Tracing events] C: Call, R: Return

C /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/common.rb:246 [URI.parse]
  C /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/rfc3986_parser.rb:71 [URI::RFC3986_Parser#parse]
    C /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/rfc3986_parser.rb:14 [URI::RFC3986_Parser#split]
    R /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/rfc3986_parser.rb:69 [URI::RFC3986_Parser#split]
    C /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/common.rb:151 [URI.for]
      C /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:169 [URI::Generic#initialize]
        C /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:334 [URI::Generic#set_scheme]
        R /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:336 [URI::Generic#set_scheme]
        C /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:509 [URI::Generic#set_userinfo]
          C /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:542 [URI::Generic#split_userinfo]
          R /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:543 [URI::Generic#split_userinfo]
        R /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:517 [URI::Generic#set_userinfo]
        C /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:603 [URI::Generic#set_host]
        R /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:605 [URI::Generic#set_host]
        C /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:692 [URI::Generic#set_port]
        R /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:695 [URI::Generic#set_port]
        C /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:779 [URI::Generic#set_path]
        R /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:781 [URI::Generic#set_path]
        C /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:829 [URI::Generic#query=]
        R /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:830 [URI::Generic#query=]
        C /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:873 [URI::Generic#set_opaque]
        R /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:875 [URI::Generic#set_opaque]
        C /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:919 [URI::Generic#fragment=]
        R /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:920 [URI::Generic#fragment=]
        C /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:39 [URI::Generic#default_port]
          C /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:32 [URI::Generic.default_port]
          R /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:34 [URI::Generic.default_port]
        R /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:41 [URI::Generic#default_port]
        C /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:39 [URI::Generic#default_port]
          C /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:32 [URI::Generic.default_port]
          R /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:34 [URI::Generic.default_port]
        R /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:41 [URI::Generic#default_port]
        C /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:692 [URI::Generic#set_port]
        R /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:695 [URI::Generic#set_port]
      R /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/generic.rb:214 [URI::Generic#initialize]
    R /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/common.rb:159 [URI.for]
  R /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/rfc3986_parser.rb:73 [URI::RFC3986_Parser#parse]
R /home/pocke/.rbenv/versions/trunk/lib/ruby/2.8.0/uri/common.rb:248 [URI.parse]

Result: https:://github.com

inspiredと書いているstackprof-runに比べると、実行速度の劣化と出力の扱いづらさがあるから雑にtrace_locationコマンドにRubyのプログラムを解析させてもあまり旨味がないのは確かだよなあと思っている。 まあ適当に使っていればそのうち利点も見えてくるかな。