2019/12/19 にっき

ruby-signature

いまのところ抜けもないこのカレンダーも残すところと3枠しか空いていない。登録するなら今がチャンス!

adventar.org

今日は空いていた2日の分と20日の分を書いた

github.com github.com

Quine

これデモ動画とりなおしたさがある

プレイするためにrubytelnetが必要な時点で若干不利な気もする

Firefoxがべんりなことに気がついた

右クリックからページのキャプチャをかなり手軽に撮れるようになっていて、求めていたブラウザはお前だったのか。。。!みたいな気持ちです。Firefox大好き。

YouTubeプレミアム

入っていたのでただでもらえる、気づいてよかった。Google Home miniは白いのもってるので紅白そろえてめでたくしたいのでコーラル色にした。

静音キーボード所感

カニカルキーボードよりは静かなんだけど、別にすごく静かというわけでもない

おいしい

明太子ソース買ったのでパスタにこれかけるだけという悪夢のような食生活を遅れそう

ArSync

typo直した

github.com

全部ファイルシステムがわるい

github.com

ruby 2.7、キーワード引数のwarningが渡した側と渡された側の場所両方出るようになっていてとてもべんり

github.com

2019/12/18 にっき

LoadErrorの型を直した

#pathnil なこともあると聞いて、マ?と思ったけど再現方法がわからずコメ返してなかった(駄目)んだけど、再現方法みつけたので型定義を nil 返すこともある感じに修正してテストを追加した

github.com

簡単にやる方法この記事でわかった

tagomoris.hatenablog.com

ruby/rubyrb_eLoadError で調べて raise_loaderror たどって rb_loaderrorraise_loaderror(Qnil, mesg); してるのみつけてたどり着いた

ruby-signature AdventCalendar連絡をした

URL登録まだな日があったのでpingして返してもらった。

ruby-signature 12/19を取った

はい

github.com

bitclustのコードレビュー

継承リストの順番、BasicObjectが1、Objectが2、みたいな順番でよいのではと自分は思うし、見た目の順番の問題が解消されているのでマージしてもいいんじゃないかなと思うけど、他の方々はどうだろう

github.com

docs.ruby-lang.orgに立ててたissueにコメントが

GDPR、はい...

github.com

2019/12/17 にっき

ruby-jp signature

えいやと枠を4つ取った、プルリはまだない。書いたらビンゴ状態。

adventar.org

16のぶん

github.com

17のぶん

github.com

18のぶん

github.com

るりまレビュー会

r7kamuraさんのこれ良さそうだと思っていたまま時間が経っていた。壊すと怖いッスなのでみんながいる時間にマージ...(いつマージしても変わらないのはガッテン承知之助)

github.com

これリストの並びはこの順がいいんじゃないかなと思っているけど見た目は逆順なるのちょっとやだなあと思っていてlistが右から左に並んでたら解消できそうだったのでCSSガチャガチャいじって試してたらなんかできた

github.com

flex-direction: row-reverse まじでべんり

developer.mozilla.org

doctreeの方はレビューする時間とれず

今日笑ったこと

室さんのブログを読んで

邪悪な検索をしてゲラゲラ笑っていた

室さんここ6年ぐらいブラウザをリロードすると死ぬ生活していて(と書いてる途中でまた笑ってしまう)、たいへん面白い

TypeScript

RubyもいいコードよくわからんけどJavaScript更にわからんむずい、となってる。 TypeScriptやると型がややこしいことにならないようにする癖がつきそうな気がしててなんか面白い。 Rubyで強引になんか頑張るのをよくやってるから特に

これはやっぱり書き初めが必要だな〜〜〜

気づき

なんか働きなくないといいつつ実態は家事育児雇用契約の履行OSSしてて労働好きなのかもしれないな

Scrapbox

諸事情でScrapboxの記法覚えたくなったのでこのtemporaryなやつをscrapboxで書くようにしてみようかな

リストじゃないものもなんでもリストで書いている使い方が目についてしまってすこし敬遠してたんだけど、リストだけで書くものではなく普通に書けるんだなあというのを最近しった程度の知らなさ。

何も分からない

わからなさ確認でIPA適当に受験しようかな〜。 育児休業してる間にもうちょっと雑に取っておけばよかったな。 情報処理安全確保支援士とか入札に便利そうなので取っておいたらどこかで使う機会あるのかもしれない。

るりまにissue建てた

丁寧な仕事をしていてドキュメント書かれてないのに気がついた

github.com

型がない

NoMethodErrorのnewの型、完全にやばいやつだとおもう...

2019/12/16 にっき

ruby-jp最高

昨日ウンウンうねって解決してなかったやつがruby-jpで聞いたら解決...! system callのトレースみれるの :tuyoi: あとで自分もやってみないとだな...

% docker run -ti -v /run/user/1000/docker.sock:/tmp/docker.sock bash ls -al /tmp/docker.sock
srw-rw---T    1 root     970              0 Dec 16 15:19 /tmp/docker.sock
% docker run -ti -v /run/user/1000/docker.sock:/tmp/docker.sock:ro bash ls -al /tmp/docker.sock
docker: Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\\"/run/user/1000/docker.sock\\\" to rootfs \\\"/home/sei/.local/share/docker/vfs/dir/74964046ceb671a408a2aed046f1f86e258e0ad1b84d4befaaa854e6490d0387\\\" at \\\"/home/sei/.local/share/docker/vfs/dir/74964046ceb671a408a2aed046f1f86e258e0ad1b84d4befaaa854e6490d0387/tmp/docker.sock\\\" caused \\\"operation not permitted\\\"\"": unknown.
ERRO[0000] error waiting for container: context canceled

udzuraさん += 1

雑にissueをたてた

github.com

MySQLのTIME型がTimeWithZone返すやつ

ActiveRecord::Base.default_timezoneタイムゾーンで返ってくるらしい、これもruby-jpで見た

gist.github.com

nginx-proxy完全に理解した

すごい便利、これはRedmineプラグイン開発で使えそうな予感

dnsmasqをdockerでたてるとべんり

ネットワークマネージャーとresolv.confで特定ドメインだけ別DNS向けるみたいな設定、できなさそう

仕方ないので 1.1.1.1, 127.0.0.1, 1.0.0.1 みたいな感じにしておいた

rootlessで建ててるんだけど注意するのが sysctl net.ipv4.ip_unprivileged_port_startで53開始にしないといけないやつ

# /etc/sysctl.d/99-docker-rootless.conf
net.ipv4.ip_unprivileged_port_start=53

これで# sysctl --systemでリロードできる

FERPA

どういうものか知ってないので概要を読んでいる

https://www.hawaiipublicschools.org/DOE%20Forms/Student%20Privacy/QuickGuide_Japanese.pdf

ruby-signature

今週は書くの厳しそうな気もしており

これpathがnilになる場合あるんだろうか、ソース読んでみようとおもう(時間ができたら)

github.com

明日

これする予定

rurema-review.connpass.com

るりまのレビューをオンライン完結させたい

いま真面目にやるときは

hub pr list
hub pr checkout
rake

してるんだけど、これがまた結構しんどいのでオンライン完結だと嬉しい

IMOではmasterにマージした状態で見たほうがいいのかもと思っていたりもする

まあマージする時間さえ気をつけていれば事故る可能性は低い(CI落ちてるの見てからなおす、みたいなデプロイされるまで十分時間の余裕がある)、けど

2019/12/15 にっき

室さんの動画さきにみさせてもらった

いや、AdventCalendarで動画はるの結構ありだと思った。室さんがやってる内容ずっと喋っていてわかりやすいというのもある。(初心者にわかりやすいかは分からなかったけど自分は完全理解できた)

若者なので1.5倍速で見た。無編集と倍速相性がかなりいい。

Dockerをrootlessで動かすようにした

やろうやろうと思ってやってなかったのでやった

元のDockerでpullしてきたイメージとか多分別の場所にstoreされてるのでそのへん消しておきたさ。

なんか1回再起動しないとうまく動かなくて謎だった。

AURにパッケージあったんだけどmd5sum変わってて通らなかったので

% ghq get https://aur.archlinux.org/docker-rootless.git

してきて書き換えた

diff --git a/PKGBUILD b/PKGBUILD
index a647a36..65d2a97 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -14,7 +14,7 @@ source=(
        "docker.service"
 )
 md5sums=(
-       "943e113aedab4ee159977d9d16f7e712"
+       "17ff08d600dcae2da96e52afba95d0cf"
        "c5158588c36fc80cf85835258f8cd345"
 )

そのご

# makepkg -si

最初docker消してdocker-rootlessいれるんかな?と思ってたんだけどそんなことはなかった あとAURで入れる選択肢の他にdocker rootlessをroot権限もってるdockerの上で動かすという手もあるっぽい

あとはインストール後のメッセージとこの辺のドキュメント参考に設定を進める

docs.docker.com

表示されてるのはこれ

1. configure kernel settings
create '/etc/sysctl.d/99-docker-rootless.conf': 'kernel.unprivileged_userns_clone=1'
and then run: 'sudo sysctl --system'
> see https://docs.docker.com/engine/security/rootless/#distribution-specific-hint for detailed information
2. configure subuid and subgid
and create '/etc/subuid' and '/etc/subgid' with: 'testuser:231072:65536' (for example, 'testuser' is username)
> see https://docs.docker.com/engine/security/userns-remap/#prerequisites for detailed information
3. start and enable user service: 'systemctl --user status|start|stop docker'
4. finally set docker socket environment variable: 'export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock', you can also add it to '~/.bashrc' or somewhere alike

ruby-jpのSlackでznzさんに sysctl kernel.unprivileged_userns_clone で現在の設定値とれると教えてもらったので確認すると、ファイル作らなくてもすでに1

% sysctl kernel.unprivileged_userns_clone
kernel.unprivileged_userns_clone = 1

usernsについてこの辺とかそのリンク先読みながら雑に理解をして

udzura.hatenablog.jp

~/.zshrc にこれ書いて

export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock

動かしてみたんだけどエラーが出てしまった

% systemctl --user start docker
% systemctl --user status docker | cat                                                                                  ● docker.service - Docker Application Container Engine (Rootless)
     Loaded: loaded (/usr/lib/systemd/user/docker.service; disabled; vendor preset: enabled)
     Active: active (running) since Mon 2019-12-16 00:36:20 JST; 6min ago
       Docs: https://docs.docker.com
   Main PID: 656333 (rootlesskit)
     CGroup: /user.slice/user-1000.slice/user@1000.service/docker.service
             ├─656333 rootlesskit --net=vpnkit --mtu=1500 --slirp4netns-sandbox=auto --slirp4netns-seccomp=auto --disable-host-loopback --port-driver=builtin --copy-up=/etc --copy-up=/run /usr/bin/dockerd-rootless.sh --experimental --storage-driver=vfs
             └─656352 vpnkit --ethernet /tmp/rootlesskit488549275/vpnkit-ethernet.sock --mtu 1500 --host-ip 0.0.0.0
Dec 16 00:36:20 TracePoint dockerd-rootless.sh[656333]: + which vpnkit
Dec 16 00:36:20 TracePoint dockerd-rootless.sh[656333]: + net=vpnkit
Dec 16 00:36:20 TracePoint dockerd-rootless.sh[656333]: + '[' -z ']'
Dec 16 00:36:20 TracePoint dockerd-rootless.sh[656333]: + mtu=1500
Dec 16 00:36:20 TracePoint dockerd-rootless.sh[656333]: + '[' -z ']'
Dec 16 00:36:20 TracePoint dockerd-rootless.sh[656333]: + _DOCKERD_ROOTLESS_CHILD=1
Dec 16 00:36:20 TracePoint dockerd-rootless.sh[656333]: + export _DOCKERD_ROOTLESS_CHILD
Dec 16 00:36:20 TracePoint dockerd-rootless.sh[656333]: + exec rootlesskit --net=vpnkit --mtu=1500 --slirp4netns-sandbox=auto --slirp4netns-seccomp=auto --disable-host-loopback --port-driver=builtin --copy-up=/etc --copy-up=/run /usr/bin/dockerd-rootless.sh --experimental --storage-driver=vfs
Dec 16 00:36:20 TracePoint dockerd-rootless.sh[656333]: time="2019-12-16T00:36:20+09:00" level=warning msg="\"builtin\" port driver is experimental"
Dec 16 00:36:20 TracePoint dockerd-rootless.sh[656345]: [rootlesskit:child ] error: executing [[ip tuntap add name tap0 mode tap] [ip link set tap0 address 02:50:00:00:00:01]]: exit status 1

pacman -S slirp4netns とか試したけど動かず

試しに再起動してみたらするりと動いた。ので消しとく。

# pacman -R slirp4netns

docker login が必要で前試したけどうまくいかなかった気がするんだけどもっかい試す

% yay -S docker-credential-secretservice

なんかするりと動いた

~/.docker/config.jsoncredsStore 書いて docker login

{
    "credsStore": "secretservice"
}

enable-linger やりたいけどまた今度...

これを読み直してやっぱり入れ直しておく

medium.com

# pacman -S slirp4netns

net.ipv4.ip_unprivileged_port_start=0

Dnsmasq動かしたくてこれを設定した

% cat /etc/sysctl.d/99-docker-rootless.conf
net.ipv4.ip_unprivileged_port_start=0
% sysctl net.ipv4.ip_unprivileged_port_start
net.ipv4.ip_unprivileged_port_start = 1024
% sudo sysctl --system

しかしnginx-proxyが /var/run/docker.sock 渡しても /run/user/1000/docker.sock 渡しても動かない

github.com

一旦諦めてroot docker使う

rubygemsの全gemのソースコードをgrepする

ローカルにgem-codesearchをセットアップした。これでgemのソースググり放題。

github.com

milkodeはなんかうまくインデックスできてないのでとりあえずcsearchだけ。index 4GBあってウケる。

% ls mirror/gems | wc -l
1026271
% ls latest-gem | wc -l
153957
% ls -alh ~/.csearchindex
-rw------- 1 sei sei 3.9G Dec 10 00:44 /home/sei/.csearchindex

そしたらruby-jpのSlackで衝撃のニュースが飛び込んできた

f:id:h6n:20191215015453p:plain
https://ruby-jp.slack.com/archives/CLWSHA76V/p1576224399439800

なんか専用ユーザーもらったら使えそうな雰囲気でべんりな気配を感じたのでruby-jpの #ruby から転載しました。

2019/12/14 にっき

平成Ruby会議01のドリコムのスポンサーセッションに映り込むことに成功

ruby-jpいい話だなあ

rubocop-rubycwのコードレビューに対応

ぽっけさんさんからコードレビューもらって

完全
理解

したので対応した。Rakefileみたいな中でコマンド実行するとき、読むことのほうが多いので省略形のオプションを使うよりは長い名前のオプションのほうが読みやすいよね、ということで雑Totally!リプして直した。

github.com

うどん欲しい

めちゃくちゃ便利そう

goku-nokimochi.com

るりまのissue1つ閉じた

github.com

些末なコードレビューした

修正してもらった、入れてよさそうなんだけど雑にマージしていく気持ちの勢いが今ない

github.com

構造化データをCIでどうテストするかに興味がある

真のREST読んだ

リソースのHTMLちほーの姿が一番普及している理由がわかった気がする。JSONちほーの姿はハイパーメディアの部分がまだまだ固まってないっぽい。

何度も話されているあの話だよなあと思って雑にツイートしたらいいねされていてオッとなった

紹介されてるこの落書き文字ってるサイトみたことなかったので動画を見ようと思う

www.graphiti.dev

なんかうまく自分の中で真のREST理解でいているのか不安がのこる

こっちも読書して記録しておかねば...

restfulwebapis.com

rubocopのTargetRubyVersionは RUBY_VERSION を見てくれない

この辺で RUBY_VERSION 見てくれれると嬉しいなあという気持ちがあります https://github.com/rubocop-hq/rubocop/blob/3c5881edaa726cb9c2f52c82f3352677328d3df4/lib/rubocop/config_validator.rb#L181-L190 https://github.com/rubocop-hq/rubocop/blob/3c5881edaa726cb9c2f52c82f3352677328d3df4/lib/rubocop/config_validator.rb#L52-L70

自分の関わってるプロジェクトのrubocopでもTargetRubyVersion切り替えた2つのconfigつくってるやつとかあって原因は

  • Gemfileでrubyバージョン固定してない
  • .ruby-version でバージョン固定してない

そして固定できない理由がある、からなんだよなあ

OSS

読んだ

speakerdeck.com

OSS(というかフリーソフトウェア)は実行、コピー、配布、研究、変更、改良する自由はある。 けど実際にOSSのソフトウェア開発をどう進めていくか、どうそこに参加していくかはいろいろあるよなあ(小並感)。 自分でOSSでソフトウェア開発して結果だすより、結果が出ているプロジェクトに参加して結果出すほうが結果出しやすそうなので、こういう資料あると初手どう動くかわかってよさそう。

Bluetoothキーボードでパスワード入力がたまに通らない原因がわかった

Fnを押しながらWindows/AndroidiOSMac向けの動作に切り替えるボタンを押すとキー入力が大幅に変わることがあり、パスワード入力前にうっかりそのコンビネーションを押してると意図してない文字が入ってしまうことがあるのがわかった。

怖い

実際自分の子どもに起こると考えると怖いけどめちゃくちゃいい話だった

qiita.com

ruby-signatureたりてないインスタンスメソッド

思ったよりも結構型付けられててよかった。AdventCalendarの担当日ではないけどすぐ終わりそうなやつから型付けていこうかな...。

gist.github.com

読んでいるとrdocやruremaのほうが間違っていることもあったり暗黙的な変換ができれば引数として受け取れるよ、みたいなメソッドが結構あることに気づく。 たいていの場合暗黙的な変換は実装しないので組み込みライブラリだけの範疇で型付けてしまっていい気がするけど、暗黙的な変換するインターフェイスで型を付けたほうがいいのか悩むところではある。

SimpleDelegatorべんりそう

絶対便利

github.com

遅延評価便利情報

ruby-jpのSlackで流れてて便利だったので転載しておく

Enumerable::Lazy は以下のようなものに対しても.mapや.selectを使えるようにするためのもので、速くするものではないですね 1. 大きすぎて全体をメモリに乗せられないもの 例:数GBのファイル 2. 終わりがわからないもの 例:ネットワーク越しにやってくるデータ 3. 終わりがないもの 例: (Date.today..) https://ruby-jp.slack.com/archives/CLWSHA76V/p1570530359455500

lazyは基本的には遅くなる https://ruby-jp.slack.com/archives/CLWSHA76V/p1570523882451400

遅延させることによって評価しなくて済む部分が大きければ結果としては速くなることがある https://ruby-jp.slack.com/archives/CLWSHA76V/p1570523937452300

極端な例が無限の Enumerable https://ruby-jp.slack.com/archives/CLWSHA76V/p1570523969452800

自分の理解で雑にマイクラで例えると無限を扱う場合がこれで

イクラでダイヤ探すときに1階層ずつ整地して削って行く(ワールドの広さは∞とする)か直下ぼりするかみたいな...? ∞に1階層削ってもダイヤは手に入らないけど直下ぼりだとダイヤ出た時点で終われるので便利

評価しなくて済む部分が∞ではないが大きい場合がこれ

実際はワールドの広さは有限なので1階層ずつ全部削ってもダイヤは手に入るんだけどダイヤ10個集めるまでかえれま10みたいなのやったときに直下ぼりのほうが早く帰れる

みたいな感じのチャットをした

あとはよくわからん例

無限キャベツの味を理解するときに無限に食べ続けないといけないのが最初の一口でわかるようになって便利

rubocop

これTwittertrickはreal worldじゃない言われてるのみて爆笑してた

docs.google.com

gem mirrorしてgem unpackすると大量のreal world code手に入るのでregressionはかどりそうな気がする

人生は有限

平成Ruby会議の資料全部みたいけど人生は有限だから全部みれない...(これは業界用語の嘘だけど)

Ruby Associationに個人寄付一口5000円した

はい

難病情報誌に年3000円寄付をしていたことがあって、そこは毎月会誌が届くのと年に1回振込用紙が届くので寄付を継続しやすかった。アイスバケツチャレンジ流行ったときから継続していたけど去年か今年ぐらいからやめてしまった気がする。 なにがいいたいかというとRuby Associationの個人寄付、たいていは松江のRuby World Conferenceとかで寄付する感じだと思うんだけど(偏見)、リテンションをちゃんとやるともうちょっと継続して集まりそうだよなーみたいな気がします。

同期ができた

rurema teamでpockeさんと同期だ、わいわい

いいなと思ったらKyashでお金を下さい
20191128011151
GitHubスポンサーも受け付けています
https://github.com/sponsors/hanachin/