2019/12/30 にっき

最近さぼりがちだったので書くことにした、休んだときしれっと投稿しはじめるほうがいいのは学校もブログも同じなんだよな...

ruby-signature

読んだ

github.com

修正で積んでもらったコミットを読んでいた github.com

修正コミット、自分のforkしたリポジトリに積めるんだ!?とちょっとびっくりしていた

help.github.com

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でどうでっしゃろ?的な記事をみつけたんだけど

dev.to

Scouts BSAが訴えられていた

nypost.com

Twitterググるとこれがひっかかって

リプライツリーの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枠しか空いていない。登録するなら今がチャンス!

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使う

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