Weekly Selection 2021-09-20

Ubuntu 20.04の自動インストール

前にTwitterで見た記憶があったが,忘れていたので検索した.AutoinstallやSubiquityと呼ばれるらしい.

第615回 サーバー版インストーラーに導入された自動インストール機能:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社

GoFパターン

GoFパターンは現代において必要な知識かという議論がQuoraでされていた.

一時期プログラミングのデザインパターンというものが大流行しましたが、現在ではどのように評価されているのでしょうか? – Quora

前からOkuさんのツイートと同じ意見をもっていた.Javaでは実装ができるものが他の言語で実装できるかは別問題だなと.

GitHub ActionsでまとめてDockerfileをビルド

マイクロサービスを構成するイメージをまとめてビルドしたいニーズがあったので書いた.本当はタグを付与したタイミングや変更点にあわせてビルドを臨機応変にできるとよい.

GitHub Actionsで複数のDockerfileをまとめてビルド – Qiita

kubectlをプラグインで便利に

kubectlをプラグインで拡張したほうがよいと気がついた.

kubectlのプラグイン機構とおすすめプラグインのご紹介 〜 Kubernetes制御用コマンド #k8sjp – Yahoo! JAPAN Tech Blog

【小ネタ】EKSクラスタの切り替えをもう少し楽にする方法 – Qiita

特にpecoでnamespaceを切り返るのは導入したい.

マイクロサービスでの多変量でのA/Bテスト

A/Bテストを複数のマイクロサービスで投入することはあると思った.サービス同士の関係性に着目しているのは納得できた.

分割多変量テスト: マイクロサービス型システムにおける 干渉を回避した複数A/Bテストの実行方式/Seperated_MVT – Speaker Deck

Azure Container Instanceの乗っ取り

Azure Container InstanceはKubernetes上で動作しており,シェルから脆弱性ついてCluster Adminに昇格している.CaaSではアイソレーションを十分に設計していても,脆弱性が残されているケースがあることを知った.

Azurescapeの発見: Azure Container Instances(ACI)におけるクロスアカウントでのコンテナ乗っ取り

Slackへ全員を招待するコマンド

Konifarさんのブログで見つけて便利だと思った.Zapierはすごい.Lambdaより気軽にできそう.

特定のSlackチャネルに全メンバーを一括招待するコマンドをZapierで作る – Konifar’s WIP

はじめての論文執筆

お茶の水女子大学の伊藤先生がツイッターで放流していたのを見つけた.こうした内容が言語化されているのがよいと思った.

はじめての論文執筆 – ItolabWriting2018.pdf

一緒にQiitaの記事も更新した.

卒業研究をはじめる前に読んでおきたかったリンク集 – Qiita

余談

  • マイクロサービスの開発をした.
    • KubernetesのYAML職人をやった.
    • Longhornをインストールしようと苦戦した.
    • FastAPIでOpenAPI形式のJSONスキーマファイルを生成→ReDocでビルド→GitHub Pagesにホスティングをした.
    • GitHub Actionsで複数のコンテナイメージをビルド&リリースした.
  • 議論)渋谷区の電子申請を総務省が違法にしようとする動き
  • 炎上)Go言語を嫌う理由
    • 個人の意見を好きに言うのは自由だと思った.
    • 定量的に評価できない観点で言語をアレコレ言うのは説得力が低い気もした.
    • 最近,シェルスクリプトで同じような記事があった記憶がある.
    • mattnさんのツイートがしっくりきた.
  • 回転するお寿司屋さんでマグロのにぎりを食べた.
  • 大学の同期と再開してサーバを供養して,天ぷらを食べた.
  • モスバーガーでソイバーガーとレモンジンジャーを頼んだ.
  • ペンギンを見て観覧車にのった.
  • 夏休みが少ないのが悲しい.

Weekly Selection 2021-09-13

FastAPI Tips

FsatAPIで受信したファイルをbyte型で取得する方法

python – Reading binary file and looping over each byte – Stack Overflow

[QUESTION]How can I receive uploadFile and send to minio server without write to temp folder? · Issue #529 · tiangolo/fastapi

MongoDB on docker-composeで初期データの投入

mongo_seedコンテナをつくってDumpを流し込むのが一般的なプラクティスらしい.

Import Data on MongoDB using Docker-Compose – Stack Overflow

マイクロサービスの開発でのdocker-compose

マイクロサービスの開発でdocker-composeを複数たてるニーズがあったのでメモ.

以下はdindを使って複数のdocker-composeを一度に起動する方法

dind(Docker in Docker)で複数のdocker-composeを管理する · blog.stormcat.io

Docker-in-Docker で複数の docker-compose を同時に立ち上げる – upinetree’s mem

MoneyForwardはdocker-composeのoverrideを使って,依存関係を手動で解決して複数のdocker-composeを起動しているようだった.

MF KESSAIのマイクロサービス化を支える、Dockerをフル活用した開発環境の歴史 | Money Forward Kessai TECH BLOG

障害の原因と対策

システムの信頼性を計画する上で想定すべき項目が列挙されている印象がある.

障害から学ぶクラウドの正しい歩き方について考える – そーだいなるらくがき帳

NotionがAutomate.ioを傘下に

これは意外なニュースだった.Automate.ioは最近つかいはじめて,IntegromatよりもUIが好きだっただけに嬉しいニュースだった.

Taking building blocks beyond the workspace – Welcome, Automate.io!

AWSのDirect Connectで発生した障害の詳細

AWS独自で開発したプロトコルに含まれる潜在的なバグ(いわばコーナーケース)が原因という.日本の説明が英語を翻訳した感のある不自然な表現が感じられた.

Summary of AWS Direct Connect Event in the Tokyo (AP-NORTHEAST-1) Region

余談

Weekly Selection 2021-09-06

Dockerが法人利用を有償へ

OSSはDocker社に限らずマネタイズで苦労している印象がある.プラットフォーム戦略としては,シェアを獲得してから有償化していくのでこれには納得感がある.

Docker is Updating and Extending Our Product Subscriptions – Docker Blog

Kafkaを使ったSagaパターン

RabbitMQでの実装をみたことがあった.Kafkaでも実現できるらしい.

Kafkaを用いたマイクロサービスSagaパターンの検証 – Qiita

シェルスクリプトの変数

実は変数の先頭にある$は,変数展開するときの記号でしかないという話.だからこそ,変数にダブルクオートをつける必要があるとわかった.

シェルスクリプトの $ は・・・変数の接頭辞ではなく展開するときの記号 – Qiita

強そうな単語

自然言語処理はいつも見ながら面白いなと.特に単語の特徴に着目するのが面白いと思った.

ビーフストロガノフはどのくらい強いのか – Qiita

MITの分散システム

詳しく読んでいないが面白そうだと思った.あとでじっくり読みたい.

MITの分散システムの講義 6.824: Distributed Systems が面白かった件 – Qiita

MySQLのプライマリーキーをUUIDにセットするTips

データブロックのサイズ,データ同士の関係性(時系列),データへのアクセス特性,配置先ノード,キャッシュヒット率あたりを考える必要があり大変だなと.やはり面白い.ULIDを初めて知った.

MySQLでプライマリキーをUUIDにする前に知っておいて欲しいこと | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]

cdしたらls

以下を .zshrc へ追記した.快適すぎる.

chpwd() {ls}

cdした後にlsするのはzshにやらせよう。zshは両手を広げ我々を迎え入れてくれる。 – Qiita

setで重複を求める

PythonのSetについて,演算子 & をつかうことで,重複だけを取り出せる.

2 つのリストに重複する要素を抽出する (set と&) | まくまくPythonノート

打ち合わせ/チームワークの習慣

Slack Botやツールを活用しながら出来ていること,出来ていないことがあることを気づけた.

チームワークがよくなる!私の周りにいる人たちの素敵な習慣【打ち合わせ・チームワーク編】 – Qiita

余談

  • ビールを買った.
  • 合同ハッカソンの準備をした.
  • ゴンチャにハマった気がする.
  • ラーメンを食べた.

Weekly Selection 2021-08-30

Pythonの標準モジュールを一覧

How can I get a list of locally installed Python modules? – Stack Overflow

pydoc modules
help('modules')

ヤフーのマルチテナント KaaS/CaaS

情報処理学会のデジタルプラクティスでヤフー(ゼットラボ)のマルチテナントをサポートしたKubernetes as a Serviceの紹介をしていた.こんな仕事をしたいのだが,新卒採用で選べるかは微妙だなと思った.

マルチコンテナオーケストレーションを用いた大規模コンテナ環境の設計と運用

ガートナーのハイプ・サイクル 2021

毎年でているが,単語が多すぎて分かりにくすぎると感じた.

ガートナー「先進テクノロジのハイプ・サイクル:2021年」を発表。NFTやAIによるソフトウェア開発支援などは過度な期待、黎明期に量子MLなど - Publickey

Linuxが30周年

Linuxが30年も経つことに驚いた.Ubuntu 11.10あたりから使い始めたので感慨深い.

Linux turns 30 | Network World

Elasticsearchのディスク削減

新たにElasticsearch 7.1.4に入ったmatch_only_textを使うと10%のディスク容量が削減できるらしい.

Kazuhiro YOSHIKAWAさんはTwitterを使っています 「Save 10% disk space on your logging datasets with match_only_text https://t.co/IiL0No5bf9 @elasticより」 / Twitter

goのnet/httpの使い方でハマった話

特定の条件下で判明する実装の誤りは沼すぎる.ソケットの

ECSへ移行したらマシンリソースを使い果たした問題がnet/httpのhttp.Transportの使い方の誤りにあった話 – Qiita

Init Container

KubernetesのPodをセットアップする前に初期化するときに使える.

Init Containers | Kubernetes

「Railsは終わった」の理由

プロダクトを大きくしたいスタートアップでの初期フェーズでは良い気がした.ただし,プログラマのコーディングスキルによってコードの品質が損なわれる恐れがあるのは注意したい.

「Railsは終わった」と言われる理由 – Qiita

シェルスクリプトの[は/bin/[ではない

むしろ/bin/[があったことに驚いた.

シェルスクリプトの [ は /bin/[ と言ったり [ “x$var” = “xval” ] と書く人はオジサン – Qiita

研究発表の仕方

わかりやすい資料を見つけた.これは良さそう.

研究発表の仕方 / Happy Presentation – Speaker Deck

余談

  • 査読の回答書をかいてsubmitした.
  • 学内イベント Cloud Native Dojo を開催した.
    • 学部2年生を対象にPythonで書いたWebアプリをコンテナ化してKubernetesへデプロイした.
  • ICM Workshop 2021へ参加&運営した.
  • 人生が楽しくなった.

Weekly Selection 2021-08-23

踏み台VMの廃止

研究室の踏み台サーバとして運用していたVMをコンテナ化した.

さよなら踏み台VM,こんにちは踏み台コンテナ! – クラウド・分散システム研究室

PFN秋葉拓哉の勝ち方

同意できるポイントが多かった.

――では、競プロやKaggleと、実務で違う部分はあるのでしょうか。

秋葉:一つ大きな違いがあるのは、競プロやKaggleでは、解くべき問題が与えられていることです。実務では、そもそも自分が何を解くべきか、あるいは、今自分やチームが取り組んでいる課題は本当に正しいのかまで見ないといけない。必要なのはコンテストで出題する側の視点で、視座を一段高くする必要があります。

「まずは一つ勝つ。それ以外は負けてもいい」。競技プログラミングやKaggleを極めた | 若手プロフェッショナルのキャリア支援ならLiiga

現実の課題は,対象が抽象的でパラメータ同士の関係性をモデルに落とし込むのが難しい気がする.制約条件や実現性を考えると難易度はなおさら高くなりそう.

基礎をしっかり押さえることも非常に重要です。技術は日々変わり、追い続けるのが大変です。しかし、基礎的なコンピューターサイエンスの知識は風化しません。数学やアルゴリズム、情報理論の他、特に知ってほしいのはコンピューターやプログラミング言語処理系やオペレーティングシステムの仕組みです。

「まずは一つ勝つ。それ以外は負けてもいい」。競技プログラミングやKaggleを極めた | 若手プロフェッショナルのキャリア支援ならLiiga

この通りだと実感している.駆け出す前に情報科学を学ぶべき理由はここにあると思っている.改めて修士過程に進学して実感している.

このままPFNに就職したい気持ちにさえなる記事だった.

「まずは一つ勝つ。それ以外は負けてもいい」。競技プログラミングやKaggleを極めた | 若手プロフェッショナルのキャリア支援ならLiiga

自分の時間づくり

自分も将来はこうした状況がくるだろうと思っている.家族をもつことは,自分の時間を犠牲に投資をすることだと思う.体力や知力は落ちるので経験値や蓄積をいかすようになるのかなと思った.

自分の勉強や開発をできなくなった – Konifar’s ZATSU

ISUCON11

チーム「東工大(八王子)」で出場した.スコアは「34564」だった.後輩2人と楽しめたのが良かった.

ISUCON11 オンライン予選 全てのチームのスコア(参考値) : ISUCON公式Blog

コンテナランタイムの解説

細かく読んでいないが日本語の記事では数少ない詳細な解説らしい.

Low-level Container Runtime:Runc Internals – 鳩小屋

末尾が数字なドメイン名の扱い

最近のWeb技術はドメイン名に対して細かく制約をつけるようになってきた印象がある.従来は詳細な制約が設定されていなかったとも言えるが.

ホスト名の最後が数字なURLの扱いについて – ASnoKaze blog

STNSにissueを投げた

GitHub Actions上でAlpine LinuxでSTNSのコンテナイメージをビルドしていたら失敗していたのでIssueをあげておいた.元のライブラリのリポジトリのIssueにもコメントを入れてみた.

Breaking changes on package tredoe/fileutil · Issue #124 · STNS/STNS

昨日のうちにpyamaさんが修正を入れてくれた.手があいたらPull Reqを出そうと思っていたら早くて驚いた.

FIX #124 packages update by pyama86 · Pull Request #125 · STNS/STNS

SMB over QUIC

Windows Server 2022のリリースがひっそりなのも時代かも..? 従来もSMB Over TLSが実現されていたはず.QUICをサポートしたことは気になる.

Windows Server 2022正式版がひっそりとリリース。セキュアコアサーバ搭載、SMB over QUICでVPN不要のファイルアクセスなど - Publickey

テクレポレビューWebアプリ

研究室でテクニカルレポートのレビューを頼まれるので,最低限の誤字脱字は見ないで済むようにWebアプリ化した.自分の工数を自動化で削減できるのは良い.

cdsl-research/text-checker: テクニカルレポートのPDFをアップロードすると自動で添削する.

余談

  • 人生で初めての丸ぶちメガネを買った.
  • 2回目のワクチンをうった.
    • 当日は,腕の痛みだけ
    • 翌日は,頭痛や発熱(max: 38.5℃),倦怠感や腰痛があった.
  • 査読の修正が忙しい(やばやば)
  • 3色のお蕎麦を食べた.美味しい!
  • 研究室でディスプレイアームの設置をした.
  • イベントの運営に関わりすぎてしまい忙しい.
  • 論文やテクニカルレポートを書きながら,明瞭に説明することの大切さを実感している.図や表,動画の重要性は共通であると思った.