Weekly Selection 2021-10-25

データベースのトランザクション分離レベル

忘れていたので思い出すために見た.

データベース: トランザクション分離レベルについてまとめてみる|TechRacho by BPS株式会社

Twitterを/dev/twtiterで扱う

mkfifoで名前付きパイプを作成すると簡単にできることを知った.このあたりの知識がほしい.

echo hello > /dev/twitterをやりたい – Qiita

ベンチャー企業での試行錯誤

チームや組織の運営で参考になる取り組みがあった.メリットだけでなくデメリットを説明している点が評価できる.

ベンチャー企業に4年居て、やってみたこと・感想 – Qiita

hdparam

高校生のころにサーバの書き込みを抑えたいことがあり,調べたことを思い出した.

うるさいHDDを黙らせる(hdparm でHDD電源オフ) – それマグで!

freeコマンドの結果の見方

availableとfreeの違いがとくに参考になった.

Linuxのfree コマンドの見方とオプション ~availableやbuff/cacheの定義~ | SEの道標

TLS1.3の0-RTT

授業でTLS 1.3を扱っていたので思い出した.

TLS 1.3 と 0-RTT のこわ〜い話

GoでJSONを構造体にマッピングする実装方法

静的型付けだと辛いなと思っていたことへのTipsがわかってよかった.

[Go] JSONを構造体にマッピングしつつ生データを保存するUnmarshalJSONの実装方法 – My External Storage

WhatsAppの開発チーム

チームの作り方や技術選定が書かれていたので面白かった.FreeBSDを使っていたことが意外だった.

Monday morning quarterback

ホリエモンのYouTubeで見つけた.何かでも政治とスポーツは素人がアレコレ言いやすいと聞いたことがある.

Kuberentesのリソース制限

LimitとRequestの値の仕組みを紐解いている.あとでゆっくり読む.

Kubernetesのリソース要求/制限(requests/limits)の内部処理をソースコードレベルで読み解く – inductor’s blog

Raspberry Piの消費電力削減

チューニングするパラメータの一覧があった.参考になった.

Raspberry Piの消費電力をカリカリにチューニングする – あっきぃ日誌

余談

Weekly Selection 2021-10-18

クイックソート

100日後に退職する47歳の中で登場した.クイックソートの計算量をきかれて答えられず困ってしまったという話.Twitterの有識者からは,言語標準のソート機能を使うので意識するケースは稀だと指摘されていた.O(n log(n) )で片付けるのではなく,最短な場合と最長の場合も考えられるとよいとの意見があった.

ソートの計算量を見積もるのは以下の書籍や記事がよさそう.

みんなのデータ構造 – 技術書出版と販売のラムダノート

Python HOW TO

Python公式が公開しているTipsのリンク集.研究室の勉強会でこの中の「関数型プログラミング」をやった.

Python HOWTO — Python 3.10.0b2 ドキュメント

jQueryの開発が終了

LAMP時代を懐かしく感じた.CSSアニメーションのためにベンダープレフィックスをつけていた時代がなつかしい.

jQuery UIとjQuery Mobileがついに開発終了、今後はメンテナンスのみに。jQuery本体は引き続き積極的に開発 - Publickey

Python 3.10新機能

新機能をサマリーしたスライド.パターンマッチングよさそう.

What’s New in Python 3.10 🚀

ptraceより高速なsyscallフック

専門外であるので何とも言えないが,論文で発表すると良いのではないかと思った.

ptrace より 100 倍速いシステムコールフック作った – かーねるさんとか

NTTドコモの大規模通信障害

ドコモの障害で困った.サブ回線があって救われた.総務省案件だろうなと.

12時間に及ぶ通信障害はなぜ起きたのか、ドコモの“輻輳”が長引いたワケ – ITmedia NEWS

大規模障害とBGPプロトコル

この説はかなり同意できると思った.ネットワークにおける経路は通信の基盤となる部分ではあるので,対策がやりにくい気がした.

大規模サービス障害、BGPプロトコル絡みがち説 – orangeitems’s diary

同じ誕生日

冷静に考えると当たり前ではあるものの,思っているよりも人数の増加にともなう確率の上昇が大きかった.

なぜ「23人いれば同じ誕生日の人がいる確率は50%」なのか | PRESIDENT Online(プレジデントオンライン)

コンテナ/マイクロサービスの開発環境

研究室でマイクロサービスを開発しているので,これは使ってみたい.docker-composeで開発するのは限界があって困っていた.

Kubernetes上のアプリケーション開発を加速させるツール(1) Skaffold | Think IT(シンクイット)

Kubernetes上のアプリケーション開発を加速させるツール(2) Telepresence | Think IT(シンクイット)

No Class CSS

ラボの後輩から教えてもらった.クラスを付与しなくても最低限がいい感じになるらしい.

dbohdan/classless-css: A list of classless CSS themes/frameworks with screenshots

Google Cloud Runのプライベート通信

text-lintをアップロードされたPDFファイルに適用してくれるWebアプリをつくってGoogle Cloud Runへデプロイした.Azure Container Instanceの学生ライセンスが切れたので乗り換えた.

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

移行のタイミングでPython → Node.js(textlint)の呼び出しで使っていたシェル呼び出しをHTTPによる通信にかえて,PythonとNode.jsのコンテナへ分離した.Google Cloud Runのサービス(コンテナ)間のプライベート通信には「サーバーレス VPC アクセス コネクタ」を使った.このコネクタが意外と高いのが悩み.

VPC ネットワークへの接続 | Cloud Run のドキュメント | Google Cloud

Azureが大規模DDoSに耐える

Azureが大規模DDoSを自社技術で緩和したそう.基本はサンプリングと検出アルゴリズムがすごいのだろうと思った.CDNを運用する事業者は常にこれだろうなと思った.

Microsoft Azure、2.4Tbpsもの大規模DDoS攻撃をさばき切る – PC Watch

DMM Booksでのセールの裏側(SRE)

セールの裏側で発生していたインシデントが細かく説明されていて,ケーススタディに有用だと思った.特に,データへのアクセスパターンがセールによって変化し,古いコンテンツへのアクセスが増えたことでサービスに影響が発生するのは良い学びだった.通常は平常時のアクセス傾向からインフラの設計を行うため,コンテキスト(Usage)によって問題が生まれるのは気をつけたい.

60億円の損害を出した 「DMMブックス」 70%OFFキャンペーンでプラットフォームに何が起きていたか – Speaker Deck

余談

  • 少しタスクが消化できずブログを忘れていた.
  • ミーティングや相談にのる時間が多く自分の時間をつくるのが難しい.
  • うどんを食べたり,ラーメンを作ったり,松屋のテイクアウトをした.
  • 大学への通学時間でパソコンを開けばタスクが1,2つ消化できることがわかった.
  • もふもふ(犬)はかわいい(正義)

Weekly Selection 2021-10-11

Python 3.10がリリース

新しいパターンマッチを使ってみたい.セイウチ演算子も使いこなせていないのに…

Python 3.10の新機能(その1) パターンマッチ: Python3.10の新機能 – python.jp

Python Insider: Python 3.10.0 is available

VMwareがTanzu Community Editionをリリース

独自の機能や特徴,製品間での連携ができるのか気になる.

VMware、無償のKubernetesディストリビューション「VMware Tanzu Community Edition」リリース。AWS、Azure、ローカルマシンなどに導入可能 - Publickey

WasmEdge

WASMランタイムは注目しているだけに気になった.Krustletも申請していたはずなので今後の動向が気になる.

コンテナ標準のOCI対応、クラウドネイティブなWebAssemblyランタイム「WasmEdge」が、CNCFのサンドボックスプロジェクトに採用 - Publickey

KubernetesのノードとしてWebAssemblyランタイムを用いる「Krustlet」、CNCFのサンドボックスプロジェクトに申請 - Publickey

ClouflareのWaiting Room

FIFOなキューイングではなくランダムサンプリングにするという話.

Waiting Room: Random Queueing and Custom Web/Mobile Apps

ユーザ情報を保存するときのテーブル設計

データベース設計で悩むときに参考にしたいと思った.データ構造への変更を考慮していて良いと思った.

ユーザ情報を保存する時のテーブル設計 – そーだいなるらくがき帳

NoSQLデータモデリング技法

前にみた記憶があるが,NoSQLでのデータ構造の参考にしたい.

NoSQLデータモデリング技法

Facebookで大規模障害

AS32934 (Facebook)で障害が発生した.大部分のサービスが利用できない状況であった.

BGPの経路数が減少していることが確認された.

Facebookが10月5日の全面ダウンの詳細を報告。バックボーンの停止がBGP停止となりインターネットから離脱、外部からのアクセスを失いデータセンターに乗り込んで対応 - Publickey

Apache HTTP Serverの脆弱性

複数のApache HTTP Serverへの脆弱性が立て続けに公表されていた.

Apache HTTP Server 2.4.50におけるパストラバーサル脆弱性(CVE-2021-42013)の発見 – wizSafe Security Signal -安心・安全への道標- IIJ

InnoDBのMVCCガーベージコレクション

MVCCについて初めて知った.データベースなにもわからない.

InnoDBのMVCCのガベージコレクションについて – shallowな暮らし

ソウゾウのソフトウェアエンジニア選考ガイド

候補者と採用側のミスマッチをへらすためにアウトプットは重要だと感じた.

ソウゾウのソフトウェアエンジニア選考ガイドを公開しました | メルカリエンジニアリング

余談

Weekly Selection 2021-10-04

Istioのインストール

Istioの状態をKialiで確認したところ「Missing Sidecar」と表示されていた.sidecar.istio.io/inject: "true" を付与したところ解消された.

Istio / Installing the Sidecar

UberがNoSQLからNewSQLに移行

スケーラビリティやデータ同士の関係性(マッピング),トランザクションの問題に対して的確に議論している点がすばらしい.図や見出し,具体的なクエリや例が示されている点もわかりやすい.Uberで働きたくなった.(←N回目M度目)

Building Uber’s Fulfillment Platform for Planet-Scale using Google Cloud Spanner

動的なhrefの書き換え

JavaScriptやTypeScriptでのhrefを動的に書き換えていることに驚いた.

Salckの障害

DNSSECの設定を投入した後に戻したことが原因という話.誤ったレコードがキャッシュされた結果,アクセスできない状態が生まれたらしい.

Google AppSheetを使ったノーコード

Google AppSheetはノーコードを実現するサービスでSpreadsheetとの相性が良さそう.Google Forms + Google App Scriptで連携していたシステムを簡単に作れそう.

Make an App with No-Code. Start building today for free.

AppSheetと20行のGoogle Apps Scriptで作るバーコード蔵書管理アプリ – Qiita

AWS Dev Day

タイムラインで実況が流れてきたのでピックアップした.

「運用性に優れたソフトウェアは運用を無視した開発からは生まれない」はそのとおりだと思った.どちらも経験している人でなければ無理そう.

「プログラマがセキュリティを好きではない理由トップ10」は,セキュリティを提案する場合に欠かせない視点だと思った.

ペトリネット

論文でみつけた.ソフトウェア工学の授業でも見聞きしていた.2種類のノード(プレースとトランザクション)をもつ二部有効グラフのことをさす.見ていると少しだけたのしい.

ペトリネット

ロックエスカレーション

MS SQL Serverでテーブルを作るとデフォルトでSELECTにロックが入る実装らしい.

【トレースフラグ 1211】──ロックエスカレーションを無効化する:SQL Serverトレースフラグレファレンス(21) – @IT

余談

コンピュータ・サイエンスを学んでおく意義はまさにこれだと思った.

技術カンファレンスでの登壇は局所最適なのかもしれない.書籍も絶版になるので残りにくい気がした.やはり論文を書くべきということだろうか?

Googleが訴訟でBingの検索クエリを証拠提出したという話.

  • 自民党総裁選で岸田文雄氏が選出された.
  • アルバイト先のIoTスタートアップを退職した.
  • 大学院の授業が始まった.
  • 研究室にサークルの後輩が配属されていて驚いた.
  • ランチ:モスバーガー,はなまるうどん
    • モスカードのチャージがリアルタイムでなく店舗での決済に失敗した 😦

Weekly Selection 2021-09-27

協調フィルタリング/コサイン類似度

以下のサイトで説明されている果物の例がわかりやすい.

協調フィルタリング cos(コサイン)類似度 | 優技録

iOS 15がリリース

事業者の立場で気になるのはiCloud Private RelayとMPPの導入.

iCloud Private Relayに向けたネットワークの準備 – サポート – Apple Developer

Private Relay と IP Blindness による Fingerprint 対策 | blog.jxck.io

iOS15で導入されるメールプライバシー保護(MPP)についてQ&A形式で情報をまとめました

Private Relayの説明は以下のツイートの画像が分かりやすかった.

Longhornのインストール

LonghornをRKE2にインストールしようとしてハマった.

root@doktor-stg1:~# kubectl describe pod/instance-manager-e-c43705e0 -n longhorn-system
  Warning  OutOfcpu  0s    kubelet  Node didn't have enough resource: cpu, requested: 250, used: 1820, capacity: 2000

[Git] 特定のリモートブランチをローカルに取得

コピペしていたが,そろそろ覚えた.

git pull origin <REMOTE_BRANCH_NAME>:<LOCAL_BRANCH_NAME>

ローカルブランチに特定のリモートブランチをpull – Qiita

Bash Scriptの作法

シェルスクリプトを書くときに心がけていたことのうち,言語化できていない部分がはっきりした.特に cd "$(dirname "$0")" はこれから使いたい.

Bash Scriptの作法 – Qiita

GraphQLで任意のカラムが取得可能な脆弱性

スキーマの自由度が高まる反面,アクセス制御を適切に行う必要があると感じた.RDBのカラムレベルセキュリティに話は少し似ている気がした.

GraphQL採用サービスで任意カラムを取得できる脆弱性を見つけた話

Headless CMSとJamstack

NetlifyがHeadless CMSとJamstackの解説をしている.翻訳したのがWordPrerssホスティングで知っていたデジタルキューブだったのが意外だった.

Headless CMS と Jamstack の解説 | Netlify

New Type Pattern

研究室のRust好きな同期から教えてもらった.

Rustで強めに型をつけるPart 1: New Type Pattern | κeenのHappy Hacκing Blog

Pythonのマルチスレッドは並行処理

言われてみれば納得したが,はじめは違和感があった.スレッドセーフとGILの関係を覚えた.

Pythonにおける並行・並列処理について調べてみた – okigaki_log

Block Pong

Podcastで知ったアプリで遊んでいたら見つけた.ブラウザのニッチな実装の差がおもしろい.それと調べようと思う根気に驚かされた.

Block Pong: Web 技術を駆使したゲームアプリの実装舞台裏 – DevFest 2020 – Google スライド

みずほ銀行で発生した障害の詳細

時系列で細かく説明されていたのが興味深かった.ハードウェアレベルの冗長化もディスクだけは不安だと思った…

みずほ銀行窓口業務ストップの真相、DC切り替えをためらい障害が長期化 | 日経クロステック(xTECH)

YelpがElasticsearchから独自OSSのNrtsearchへ移行

Twitterでみつけた.どこもElasticsearchの運用が大変なんだなと思った.

Yelp/nrtsearch: A high performance gRPC server on top of Apache Lucene

余談

Yahooの黒帯でさえ感じるのかと思った.