Weekly Selection 2021-12-27

英語語彙リスト

英語の論文を書いているときに調べて見つけた.

理工系学生のための英語語彙リスト策定に向けた基礎資料

因果をあらわす英語表現

検索していたら見つけた.

【英語論文の書き方】第7回 原因・結果を表す動詞の使い方:その2 結果→原因 論文翻訳・英文校正 研究者専門の翻訳会社 ワールド翻訳サービス

Kubernetesでのスケジューラの自作

Twitterで話題になっていた.Kubernetesのスケジューリングアルゴリズムを拡張した提案を研究でやるときに使えそう.

自作して学ぶKubernetes Scheduler | メルカリエンジニアリング

DevToolsでDevToolsを覗き見る

Twitterで流れてきた記事.Web技術だったことが意外だった.

DevTools の Web 技術でできている部分を覗き見る – polamjaggy nikki

HTTPSリソースレコードの状況

Internet WeekのDNS Dayの内容がINETNET Watchで紹介されていた.

「HTTPSリソースレコード」を使うと何がうれしいのか? その効果への期待と現実を解説【Internet Week 2021】 – INTERNET Watch

例年通りであれば,PDF形式の資料が公開されるはず.

コーディングインタビューの対策と意義

Twitterで見つけた.これは同意できる部分があった.

コーディングインタビューの対策とその意義 (1/2) – 16bitのメモランダム

CloudFrontのキャッシュの挙動

CDNでのキャッシュは,その制御がユーザ体験とバックエンドのパフォーマンスに影響を及ぼす.一方でメルカリで発生したFastlyのキャシュ制御設定不備のように設定のミスは大きなインシデントにつながる.以下では,エッジから返されるキャッシュ制御ヘッダ内のTTL値とヘッダ(例: Cache-Control)がCloudFrontの動作にどう影響するのか検証していた.

急いで CloudFront コンテンツキャッシュの挙動について確認する 〜 最小 TTL の設定には気をつけたい 〜 – ようへいの日々精進XP

Rustで実装するmalloc

Rustは何もわからないが面白そうだったので貼っておく.

Rustで実装するmalloc – NTT Communications Engineers’ Blog

インド工科大学

IITの学生のスキルが高い理由を分析していた.

インド工科大学、世界的IT企業が欲しがる人材輩出の秘密 写真9枚 国際ニュース:AFPBB News

K8sのRequestsとLimitsの内部実装

研究室のTwitterでinductorさんから教えてもらった.Kubernetesなんもわからん.

KubernetesのResource Requests & Resource Limitsの内部処理をソースコードレベルで読み解く – inductor’s blog

余談

  • クリスマスに英語で論文を書いてsubmitした.
  • 研究室にディスプレイが増えた.
  • クリスマスにチキンを食べた.
  • 大学のそばで五目やきそばを食べた.
  • Twitterでプログラマ数学不要論を主張するプログラミングスクールの記事が燃えていた.
  • Staticなお寿司を食べた(写真を忘れた).
  • LINEギフトでギフトを贈った.かなり便利でユーザ体験がよい.
  • ZOZOTOWNでPayPayキャンペーンを使ってダウンコートを買った.あたたかい.
  • PayPayカードを申し込んでみた.PayPayでの支払いに強いので活用したい.

Weekly Selection 2021-12-20

ファイルディスクリプタの上限

ファイルディスクリプタ数の上限変更とlimits.confの罠 | ゆめみ

Pythonのデコレータでロギング

def logger(func):
    def inner():
        print("#" * 10, "[BEGIN]", func.__name__, "#" * 10)
        func()
        print("#" * 10, "[END]", func.__name__, "#" * 10)

    return inner

@logger
def main()
    pass

ジェノサイド条約

ジェノサイド条約 – Wikipedia

Linuxカーネルパラメータ

研究関連でリソースの上限に衝突したので調べた.

net.core.somaxconnについて調べてみた – 祈れ、そして働け ~ Ora et labora

LinuxサーバーのTCPネットワークのパフォーマンスを決定するカーネルパラメータ – 2編 | NHN Cloud Meetup

limits.confを使えば授業で使うような共有計算リソースをユーザごとに適切な制限ができると思った.

/etc/security/limits.confに関するメモ – OpenGroove

sshの多重接続

sshでfdが枯渇していたときに調べて見つけた.やっている人は知らないがユースケースによっては使えるかも.

あまり知られてない(ような気がする)sshの多重接続 – hylom’s

datamash

awkで研究の測定データを処理しようと調べていたら見つけた.medianやmaxが簡単に集計できて,SQLのgroup byみたいな処理も簡単にできる.研究室に普及させていく.

GNU datamashを使ってLinuxコンソール上でテキストデータの加工・集計を行う | 俺的備忘録 〜なんかいろいろ〜

S3の軽量形式手法

Twitterで見つけた.元の論文をよんでみる.

Amazon S3の軽量形式手法 – masateruk’s blog

迷惑メール防止法

メールを送るときも商用目的の場合は大変だと感じた.ユーザ登録時にデフォルトでチェックボックいれる実装の禁止や,1クリックでの購読解除も追加してほしい.

m_mail_pamphlet.pdf

CISCとRISC

Complex Instruction Set ComputerとReduce Instruction Set Computerの略らしい.

CISCの例はx86, IBM System 360.RISCの例はPowerPCやARM, MIPS.

2-6_CISC¤ÈRISC.pdf

OverleafでGrammaly

これがかなり便利だった.

robindijkhof/overleaf-textarea: This plugin displays your tex source in a textarea so plugins like grammarly can check it.

悪意あるプロセスをクラウドネイティブ環境で発見

プロセス一覧からプロセスを隠すテクニックを調べたときに見つけた.

クラウドネイティブ環境でFalcoを使って隠れた悪意のあるプロセスを明らかにする – Sysdig

トヨタ自動車のソフトウェアエンジニ

Twitterで見つけた.楽しそう.

トヨタの3.5ヶ月のソフトウェアエンジニア(研究開発)生活を振り返る | 俺とお前とlaysakura

Log4jの難読化された攻撃ペイロード

Twitterで見つけた.

Log4jで話題になったWAFの回避/難読化とは何か – WAF Tech Blog | クラウド型 WAFサービス Scutum 【スキュータム】

余談

  • クラウドベンダーの1dayインターンに参加してみた.
    • トラブルシューティングのミニゲームと社員によるパネルディスカッションがおもしかった.
    • 社員から実際の様子をきけてはたらくときのイメージと現実のすり合わせに有用だった.
  • 「脱モノリシック」がバズっていた.物知りそう.正しくは「モノリシック」.
  • プリンタの調子が悪いので,ブラザーのプリンタ DCP-J926N に買い替えた.UIがシンプルでセットアップも簡単なのが素晴らしい.久しぶりに快適
  • スシローでメルペイのクーポンを使ってお寿司を食べた.

本当にこれすぎてこれ.

Weekly Selection 2021-12-13

Apache Dubbo

論文を読んでいたら見つけた.RPCフレームワークらしい.Alibaba社が開発してOSS化されたそう.

Dubbo とは?動作確認や機能、特徴などを解説 | OSSサポートのOpenStandia™【NRI】

Apache Ozone

Preferred Networksの社内向けデータ基盤をApache HadoopからApache Ozoneに移行した話.

Apache Ozoneをやっていた一年 – Preferred Networks Research & Development

Kubernetes 1.23のリリース

IPv6のサポートがついに入ったのかという印象.

Kubernetes 1.23が正式リリース。IPv4/v6デュアルスタック、水平PodオートスケーラーAPIv2が安定版、Kubelet CRI APIがベータ版になど - Publickey

Log4jの脆弱性

最初にTwitterでMinecraftが影響を受けるという話でLog4jが注目を受けていた.その後,影響範囲が広くなるとの情報があり,各方面で対応を行う状態になっていた.

Restrict LDAP access via JNDI by rgoers · Pull Request #608 · apache/logging-log4j2

Worst Apache Log4j RCE Zero day Dropped on Internet – Cyber Kendra

Log4Shell: RCE 0-day exploit found in log4j 2, a popular Java logging package | LunaSec

【注意喚起】Log4jの脆弱性を狙う攻撃を多数検知、至急対策を! | セキュリティ対策のラック

実際のサービス群で検証した結果を掲載しているが,信憑性は定かでない.

YfryTchsGD/Log4jAttackSurface

BurpSuiteで検出されるExternal Service Interactionに近い気がした.

External service interaction (DNS) – PortSwigger

ワクチンが開発されていて面白い.

“Log4j用ワクチン”登場 脆弱性を利用して修正プログラムを実行 – ITmedia NEWS

忙しい研究者のためのテストコードとドキュメントの書き方

インターフェースの定義をdocstringで書いて,pydocを組み合わせていた.余裕のある時に実践してみたい.

忙しい研究者のためのテストコードとドキュメントの書き方 – Qiita

Pythonのシステムプログラミング

標準関数の内部実装を追跡していた.意外と知らないことがあると感じた.

Pythonならわかるシステムプログラミング – Qiita

実行できるライブラリ

標準ライブラリのうち,Pythonコマンドの -m 引数から呼び出せるものが列挙されていた.calendarやbase64があることは知らなかった.

実行できる Python 標準ライブラリ – Qiita

GoogleのレジュメTips

名前やメールアドレス,GitHubアカウントやプログラミング言語を最上段に書くことだけでも学びだった.

NSSプラグインの作成

NSSプラグインの作成を説明していた.シェルのユーザ名やホスト名の補完もこれで実現できそう.

プラグインを書いて学ぶGNU NSS – ローファイ日記

SSHの最大セッション数

デフォルトは10なので増やしたほうがよい.

OpenSSHの設定について整理する(sshd_config) – oneのはてなダイアリー

HHKBの誕生した経緯

IIJ技術研究所の和田英一先生が書かれていた.面白い.

Happy Hacking Keyboard 誕生の経緯 | IIJ Engineers Blog

余談

新たに技術を学ぶ時に意識していること

技術をキャッチアップするときに意識していることを言語化しておくとよさそうだと思ったので残しておきます.

技術の特徴やメリット・デメリット

どんな領域や場面で使うのか,どんな特徴があるのか理解するように心がけています.

例)アプリケーションのデバッグに使うツールで,関連するデータ自動的にトレースできる.ただし,適用できるプログラミング言語の種類が少ないことが課題にある.

技術の目的

その技術は何を達成するため(目標/目的)に存在するのかを意識しています.また,技術が標準化されるまでの歴史や経緯を知ることも目的を意識するときに役立ちます.

例)アプリケーション開発者がデスクトップアプリケーションのログとサーバサイドのログを一貫して追跡するためにある.

他の関連技術との違い

先にあげたメリットやデメリットと似ていますが,他の関連する技術での実装や実現と比較して何が優れているのか意識しています.

例)既存SaaSであるXは,新しいSaaSに比べスケーラビリィが優れているが,SSOへ対応がなくパスワードレスログインの要件を満たしていない.

用語や概念の定義

新たな単語や概念がある場合は,理解する前に定義を明らかにしておきます.これは,コンテクストによって単語が意味する内容が異なるためです.

例)日本語での「認証」と対応する英単語

NginxでCVE-2021-44228(Apache Log4j 2)を狙った攻撃を簡易的にブロック

Apache Log4j 2に深刻な脆弱性 CVE-2021-44228 が見つかりました.アクセスログから管理するサーバへもこの脆弱性を狙った攻撃を観測しました.

Log4jの深刻な脆弱性CVE-2021-44228についてまとめてみた – piyolog

今回はNginxで簡易的に攻撃をブロックしてみます.本質的にはペイロードを任意のヘッダへ追加された場合の対処にはならないため注意が必要です.

環境:

  • Nginx v1.20.1
  • Ubuntu 20.04.3 LTS (Focal Fossa)

設定例

以下は,設定を追加したNginxのConfigの抜粋です.mapを使い攻撃リクエストのペイロードが含まれるURLとUserAgentをパターンマッチでブロックしています.ブロックにはHTTPのステータスコード 444を使いました.

http {
    map $http_user_agent $block_ua_request {
        default 0;
        "~*\${jndi:" 1;
    }
    map $request_uri $block_request {
        default 0;
        "~*\$%7Bjndi:" 1;
    }

    server {
        if ($block_ua_request = 1) {
            return 444;
        }
        if ($block_request = 1) {
            return 444;
        }
    }
}

実際にcurlでリクエストを発行するとリクエストが拒否されていることがわかります.

$ curl "https://blog.koyama.me/$%7Bjndi:xx"
curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)

余談

Qiitaへ記事を投稿しようと試みたところ,WAFにブロックされました.

参考資料

過去のISUCONで知ったNginxのmapを活用できてよかったです.