2019/12/19 にっき
ruby-signature
いまのところ抜けもないこのカレンダーも残すところと3枠しか空いていない。登録するなら今がチャンス!
今日は空いていた2日の分と20日の分を書いた
Quine
これデモ動画とりなおしたさがある
telnetで対戦できるQuineなsnake gamehttps://t.co/hYCRTGdtSE pic.twitter.com/aziv7ai6yB
— 𝓜𝓲𝔂𝓪𝓰𝓲 (@hanachin_) August 4, 2019
プレイするためにrubyとtelnetが必要な時点で若干不利な気もする
Firefoxがべんりなことに気がついた
右クリックからページのキャプチャをかなり手軽に撮れるようになっていて、求めていたブラウザはお前だったのか。。。!みたいな気持ちです。Firefox大好き。
YouTubeプレミアム
入っていたのでただでもらえる、気づいてよかった。Google Home miniは白いのもってるので紅白そろえてめでたくしたいのでコーラル色にした。
無料ゲト pic.twitter.com/PSQ7FGpJ1b
— 𝓜𝓲𝔂𝓪𝓰𝓲 (@hanachin_) December 19, 2019
静音キーボード所感
メカニカルキーボードよりは静かなんだけど、別にすごく静かというわけでもない
おいしい
明太子ソース買ったのでパスタにこれかけるだけという悪夢のような食生活を遅れそう
— 𝓜𝓲𝔂𝓪𝓰𝓲 (@hanachin_) December 19, 2019
ArSync
typo直した
全部ファイルシステムがわるい
ruby 2.7、キーワード引数のwarningが渡した側と渡された側の場所両方出るようになっていてとてもべんり
2019/12/18 にっき
LoadErrorの型を直した
#path
、nil
なこともあると聞いて、マ?と思ったけど再現方法がわからずコメ返してなかった(駄目)んだけど、再現方法みつけたので型定義を nil
返すこともある感じに修正してテストを追加した
簡単にやる方法この記事でわかった
ruby/rubyで rb_eLoadError
で調べて raise_loaderror
たどって rb_loaderror
で raise_loaderror(Qnil, mesg);
してるのみつけてたどり着いた
ruby-signature AdventCalendar連絡をした
URL登録まだな日があったのでpingして返してもらった。
ruby-signature 12/19を取った
はい
bitclustのコードレビュー
継承リストの順番、BasicObjectが1、Objectが2、みたいな順番でよいのではと自分は思うし、見た目の順番の問題が解消されているのでマージしてもいいんじゃないかなと思うけど、他の方々はどうだろう
docs.ruby-lang.orgに立ててたissueにコメントが
GDPR、はい...
2019/12/17 にっき
ruby-jp signature
えいやと枠を4つ取った、プルリはまだない。書いたらビンゴ状態。
16のぶん
17のぶん
18のぶん
るりまレビュー会
r7kamuraさんのこれ良さそうだと思っていたまま時間が経っていた。壊すと怖いッスなのでみんながいる時間にマージ...(いつマージしても変わらないのはガッテン承知之助)
これリストの並びはこの順がいいんじゃないかなと思っているけど見た目は逆順なるのちょっとやだなあと思っていてlistが右から左に並んでたら解消できそうだったのでCSSガチャガチャいじって試してたらなんかできた
flex-direction: row-reverse
まじでべんり
doctreeの方はレビューする時間とれず
今日笑ったこと
室さんのブログを読んで
開発者ツール開いてガシガシ書き換えてリロードして消える例のあれだー!!動画だとわかりやすいなー。 / デザイナーが開発チームの一員としてcommitしていくための知識(インブラウザデザイン編) - ムログ https://t.co/rBTnWF1U9o
— 𝓜𝓲𝔂𝓪𝓰𝓲 (@hanachin_) December 16, 2019
邪悪な検索をしてゲラゲラ笑っていた
@murokaco from:murokaco リロードで検索して爆笑しながらファボり続けてしまいました…w
— 𝓜𝓲𝔂𝓪𝓰𝓲 (@hanachin_) December 17, 2019
室さんここ6年ぐらいブラウザをリロードすると死ぬ生活していて(と書いてる途中でまた笑ってしまう)、たいへん面白い
永遠に笑ってしまう…https://t.co/mwywAfabpv
— サン鍛高譚 (@murokaco) December 17, 2019
TypeScript
RubyもいいコードよくわからんけどJavaScript更にわからんむずい、となってる。 TypeScriptやると型がややこしいことにならないようにする癖がつきそうな気がしててなんか面白い。 Rubyで強引になんか頑張るのをよくやってるから特に
これはやっぱり書き初めが必要だな〜〜〜
気づき
なんか働きなくないといいつつ実態は家事育児雇用契約の履行OSSしてて労働好きなのかもしれないな
Scrapbox
諸事情でScrapboxの記法覚えたくなったのでこのtemporaryなやつをscrapboxで書くようにしてみようかな
リストじゃないものもなんでもリストで書いている使い方が目についてしまってすこし敬遠してたんだけど、リストだけで書くものではなく普通に書けるんだなあというのを最近しった程度の知らなさ。
何も分からない
わからなさ確認でIPA適当に受験しようかな〜。 育児休業してる間にもうちょっと雑に取っておけばよかったな。 情報処理安全確保支援士とか入札に便利そうなので取っておいたらどこかで使う機会あるのかもしれない。
るりまにissue建てた
丁寧な仕事をしていてドキュメント書かれてないのに気がついた
型がない
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をたてた
MySQLのTIME型がTimeWithZone返すやつ
ActiveRecord::Base.default_timezone
のタイムゾーンで返ってくるらしい、これもruby-jpで見た
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になる場合あるんだろうか、ソース読んでみようとおもう(時間ができたら)
明日
これする予定
るりまのレビューをオンライン完結させたい
いま真面目にやるときは
hub pr list hub pr checkout rake
してるんだけど、これがまた結構しんどいのでオンライン完結だと嬉しい
IMOではmasterにマージした状態で見たほうがいいのかもと思っていたりもする
まあマージする時間さえ気をつけていれば事故る可能性は低い(CI落ちてるの見てからなおす、みたいなデプロイされるまで十分時間の余裕がある)、けど
2019/12/15 にっき
室さんの動画さきにみさせてもらった
いや、AdventCalendarで動画はるの結構ありだと思った。室さんがやってる内容ずっと喋っていてわかりやすいというのもある。(初心者にわかりやすいかは分からなかったけど自分は完全理解できた)
ライブコーディングのようなものをして動画をとってみたんだけど、誰か公開前に試しにみてやってもらえないですか
— モハメド・兄 (@murokaco) December 15, 2019
若者なので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の上で動かすという手もあるっぽい
あとはインストール後のメッセージとこの辺のドキュメント参考に設定を進める
表示されてるのはこれ
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についてこの辺とかそのリンク先読みながら雑に理解をして
~/.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.json
にcredsStore
書いて docker login
{ "credsStore": "secretservice" }
enable-linger
やりたいけどまた今度...
これを読み直してやっぱり入れ直しておく
# 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
渡しても動かない
一旦諦めてroot docker使う
rubygemsの全gemのソースコードをgrepする
ローカルにgem-codesearchをセットアップした。これでgemのソースググり放題。
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で衝撃のニュースが飛び込んできた
https://ruby-jp.slack.com/archives/CLWSHA76V/p1576224399439800
2019/12/14 にっき
平成Ruby会議01のドリコムのスポンサーセッションに映り込むことに成功
ruby-jpいい話だなあ
rubocop-rubycwのコードレビューに対応
ぽっけさんさんからコードレビューもらって
完全
理解
したので対応した。Rakefileみたいな中でコマンド実行するとき、読むことのほうが多いので省略形のオプションを使うよりは長い名前のオプションのほうが読みやすいよね、ということで雑Totally!リプして直した。
うどん欲しい
めちゃくちゃ便利そう
るりまのissue1つ閉じた
些末なコードレビューした
修正してもらった、入れてよさそうなんだけど雑にマージしていく気持ちの勢いが今ない
構造化データをCIでどうテストするかに興味がある
真のREST読んだ
リソースのHTMLちほーの姿が一番普及している理由がわかった気がする。JSONちほーの姿はハイパーメディアの部分がまだまだ固まってないっぽい。
何度も話されているあの話だよなあと思って雑にツイートしたらいいねされていてオッとなった
RESTの話だいたいこういうことかと思っている(資料あとでよむ)
— 𝓜𝓲𝔂𝓪𝓰𝓲 (@hanachin_) December 14, 2019
紹介されてるこの落書き文字ってるサイトみたことなかったので動画を見ようと思う
なんかうまく自分の中で真のREST理解でいているのか不安がのこる
こっちも読書して記録しておかねば...
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
読んだ
OSS(というかフリーソフトウェア)は実行、コピー、配布、研究、変更、改良する自由はある。 けど実際にOSSのソフトウェア開発をどう進めていくか、どうそこに参加していくかはいろいろあるよなあ(小並感)。 自分でOSSでソフトウェア開発して結果だすより、結果が出ているプロジェクトに参加して結果出すほうが結果出しやすそうなので、こういう資料あると初手どう動くかわかってよさそう。
Bluetoothキーボードでパスワード入力がたまに通らない原因がわかった
Fnを押しながらWindows/Android、iOS、Mac向けの動作に切り替えるボタンを押すとキー入力が大幅に変わることがあり、パスワード入力前にうっかりそのコンビネーションを押してると意図してない文字が入ってしまうことがあるのがわかった。
怖い
実際自分の子どもに起こると考えると怖いけどめちゃくちゃいい話だった
ruby-signatureたりてないインスタンスメソッド
思ったよりも結構型付けられててよかった。AdventCalendarの担当日ではないけどすぐ終わりそうなやつから型付けていこうかな...。
読んでいるとrdocやruremaのほうが間違っていることもあったり暗黙的な変換ができれば引数として受け取れるよ、みたいなメソッドが結構あることに気づく。 たいていの場合暗黙的な変換は実装しないので組み込みライブラリだけの範疇で型付けてしまっていい気がするけど、暗黙的な変換するインターフェイスで型を付けたほうがいいのか悩むところではある。
SimpleDelegatorべんりそう
絶対便利
遅延評価便利情報
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
これTwitterでtrickはreal worldじゃない言われてるのみて爆笑してた
gem mirrorしてgem unpackすると大量のreal world code手に入るのでregressionはかどりそうな気がする
人生は有限
平成Ruby会議の資料全部みたいけど人生は有限だから全部みれない...(これは業界用語の嘘だけど)
Ruby Associationに個人寄付一口5000円した
はい
Ruby Associationに個人寄付すると貰える課金アイテムのステッカー届いた。ウェブサイトにも名前が載る。https://t.co/Zrb9EePsbb pic.twitter.com/QZH0D4lwhE
— 𝓜𝓲𝔂𝓪𝓰𝓲 (@hanachin_) December 14, 2019
難病情報誌に年3000円寄付をしていたことがあって、そこは毎月会誌が届くのと年に1回振込用紙が届くので寄付を継続しやすかった。アイスバケツチャレンジ流行ったときから継続していたけど去年か今年ぐらいからやめてしまった気がする。 なにがいいたいかというとRuby Associationの個人寄付、たいていは松江のRuby World Conferenceとかで寄付する感じだと思うんだけど(偏見)、リテンションをちゃんとやるともうちょっと継続して集まりそうだよなーみたいな気がします。
同期ができた
rurema teamでpockeさんと同期だ、わいわい