2019/12/30 にっき
最近さぼりがちだったので書くことにした、休んだときしれっと投稿しはじめるほうがいいのは学校もブログも同じなんだよな...
ruby-signature
読んだ
修正で積んでもらったコミットを読んでいた github.com
修正コミット、自分のforkしたリポジトリに積めるんだ!?とちょっとびっくりしていた
true/false/nilは、特定のメソッドがboolじゃなくてtrue/falseを返すことが確定してたりして、若干特殊なケースぽい。 型検査器とセットでいろいろ試さないとなんか使い勝手で困りそうな気がする。
TypeScriptの場合は一番詳しい型から徐々にゆるい型の順序でオーバーロードを書くのがよいよう
In order for the compiler to pick the correct type check, it follows a similar process to the underlying JavaScript. It looks at the overload list and, proceeding with the first overload, attempts to call the function with the provided parameters. If it finds a match, it picks this overload as the correct overload. For this reason, it’s customary to order overloads from most specific to least specific. www.typescriptlang.org
FalseClass型付けた github.com
服
旅先の服装調べるときにここが便利っぽい wear.jp
GitHubのコミュニティ情報はべんり
ライセンス抜けてたりしないか✓してくれる
https://github.com/ruby/ruby-signature/community
ボーイスカウトルールのジェンダーニュートラルな言い換え
こないだ調べたときはリブランディングでScouts BSAになったしScout Ruleでどうでっしゃろ?的な記事をみつけたんだけど
Scouts BSAが訴えられていた
Anyone have a good gender-neutral variant of the "Boy Scout Rule"? https://t.co/8yTaXCnm7M
— Pete Hodgson (@ph1) August 11, 2017
リプライツリーのhappy camper ruleとかCampsite Ruleそういうのがよさそうな感じだった(Campsite Ruleはなんか別の本の内容が出てきて若干紛らわしい)。部活動をしていたころ「きたときよりもうつくしく」みたいな謎単語があった気がする。
RuboCopでrubocop-rubycwだけを使う.rubocop.ymlの設定方法
この記事は rubocop-rubycw
アドベントカレンダーの2日目の記事です。
1日めはpockeさんの rubocop-rubycw
とは、でした。
実在しないアドベントカレンダーなので明日はないです。
導入して自分で3日目を名乗りましょう。
pocke.hatenablog.com
全容
require: rubocop-rubycw AllCops: TargetRubyVersion: 2.6 # このバージョン指定は.ruby-versionやGemfileでのrubyのバージョン指定がある場合不要 DisabledByDefault: true # デフォルトだと勝手にオンになっているCopがあるので一旦全部切っておく Exclude: - 'test/**/*_test.rb' # テストぐらいはおおらかに書きたい場合こうしておくとべんり - 'vendor/bundle/**/*' # ここにはCIサーバー等でbundle installする先なども含めて書く Rubycw/Rubycw: Enabled: true
rubocop-rubycw
だけを使うといいところ
- warningを消しました、みたいなPull Requestを生まれる前から消し去ることができてとても便利
- CIのテスト実行画面へ行ってwarningが発生してないか目grepで確認する必要がなくなって便利 (これは一種の才能でできない人間もいっぱいいる、自分はできない)
- rubocopの設定を全く考えなくていいわりに実際に発生する可能性のあるrubyの警告を検知できてコスパがよくて便利
まとめ
いかがでしたか? rubocop-rubycw
だけを入れるならrubocopの設定もあまり考えなくても使えるし、とても便利です。
なにもcop入れてない場合まず最初に入れるCopとしてお手軽便利です。ぜひ導入してみましょう!
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使う