giantneco’s blog

技術メモ

システムパフォーマンス勉強会第 2 回

社内で行ったシステムパフォーマンス勉強会のメモ。資料の公開はなし。

第2回は第3章のカーネルをテーマにしているが、まだまだ基礎でパフォーマンスにどれだけ関わるのかわからないという声もあった。

章の内容としては: - 用語の説明 - カーネル - 割り込みと割り込みスレッド - プロセス・スレッド - システムコール - メモリ、スケジューラ、ファイルシステム

大体のトピックを軽く触る程度で、詳細な解説はのちの章で改めて詳しく解説がある。

進み具合がよくないので、年度内に一通り読めるかどうかやや不安である。

あと p96 で inctl() というシステムコールが紹介されてたがこれってioctl()の間違い?

「まつもとゆきひろの言語のしくみ」を読んだ

まとめ

  • Pros
  • Cons
    • 教科書的な内容の本ではない
      • 理論的,網羅的ではない
    • C言語を使用しているので、使ったことがない人にはつらいかも

メモ

ようやく読んだので読書メモなど。

この本は元々は連載されていた記事を本にまとめなおしたもので、 Streem という新言語の設計と実装を追いながらインタプリタの仕組みを見ていく内容になっている。 それもあってこの本だけでコンパイラに関するすべての点をカバーするのは難しい。

本書で紹介されている内容で目についたのは次のようになる: - 言語処理系 - バーチャルマシン - Streem の設計と実装 - オブジェクト指向 - ガーベージコレクション

このようにコンパイラの入門としてはいろいろ足りない部分が多いが、 Streem 言語で実際に検討・実装されたテクニックが紹介されているので読み物としては面白い。 むしろ Streem 言語に興味がある人向けの本なのかと思う。 一方であまり理論的な部分にはそれほど触れられていないので、 物足りない部分も多々あった。

他個人的に気に入ったトピック: - 言語を作るモチベーション - NaN Boxing

言語を作るモチベーション

言語を作るモチベーションとして紹介されていた - プログラミング能力の向上 - デザイン能力の向上 - 自己ブランド化 - 自由の獲得 - 楽しい

NaN Boxing

NaN Boxing浮動小数点数をオブジェクト表現に流用するテクニックで、 IEEE754 での NaN の仮数部が 0 以外であればよいのを利用しそこに値を詰め込む。 このテクニックは知らなかったので素直に驚いた。

www.slideshare.net

この資料の他に Jupyter を使ってグラフも作っていた。 しかし会社に PC 持って行って Jupyter を再起動したところ、ネットワークがないため必要な JavaScript がダウンロードできずにグラフを描画できなかった。 割とありがちなミスだと思う。

下期勉強会

10月中は特に行動を起こさなかったが、上期同様に下期でも何か勉強会開こうかと考えている。 候補としては:

  • 詳解システムパフォーマンス読書会
    • 自分がまだ通読できてないので
    • 人をかなり選ぶんじゃないかと思う
  • CI
    • 需要は高そう
    • 勉強するってほどのことでもない気はする。どういう CI にするかはプロジェクトしだいだし
  • なにかプログラミング言語
    • 良さそうなのがあれば
    • 書いてみたもののあまり思いつかない
  • 機械学習
    • もう別の人がやっている

やっぱりよそのプロジェクトでの需要が分からないので、計画を立てづらい

ドメイン駆動設計勉強会の結果を発表した

www.slideshare.net

職場の部会で、今年の 5 月から 8 月あたりに行った勉強会の発表をやれと言われたときに作った資料。 15 分しかないので、DDD というよりは勉強会自体に関しての発表にした。

後々見てみて思ったのは: - まとめがない - 掴みの写真でも入れておいた方がよかったのでは?

直近で旅行行ってたんだからその写真を貼り付けておいてもよかった気がする。

LINE Developer Day 2017 に参加してきたメモ

ちょっと前の 9/28 に行われた LINE Developer Day に参加してきた。 半分くらいは会社見学のつもり。

セッションの内容としては「Developer」とあるように、 LINEが作成した OSS やプラットフォームについての紹介をするセッションが多かった。 大体のセッションはフロントエンドエンジニア向けという感じで、ちょっと前提知識に欠ける自分には厳しかった。 LINE でどういう体制でどういう働き方をしているか、というのに興味があったがそこら辺の紹介は少な目。

見てきたセッションは以下:

  • Opening Session
  • The Technologies in Clova
  • Central Dogma:LINE の Gitをベースにした高可用性サービス構成レポジトリ
  • Paying back technical debt - LINE Androidクライアントの事例から -
  • なぜLINEではウェブトラッキングシステムがフロントエンド開発チームによって構築されたのか
  • HBase at LINE 2017
  • LINE Login - new features and mechanism
  • Verda Cloud Family
  • セキュリティのためのデータ分析 / ログ分析プラットフォーム Monolith と LINE Spam対策の現状

個人的に面白かったのは Paying back technical debt のセッション。 LINE の Android チームは技術負債の返済のため次のようなことをしていた。

  • コードの改善
    • Kotlin の採用
    • ReactiveX, Data Binder の採用
    • コーディングスタンダードの設定
    • ベストプラクティスに従った実装をすることによる制
  • CIの改善
    • コード変更の支援
      • PR 作成の手伝いをする Bot の作成
        • 対応する PR を確認しやすいようにリンクを生成したり
        • レビュアーの提案を行ったり
    • ブランチマージャーでの定期的なマージ
    • ルールの強制
      • issue を管理する Bot の作成
        • PR に BTS 番号を記述するように強制
      • ライブラリのバージョンを監視
        • 新しいバージョンが出た場合にすぐに対応できるようにする
  • チームの改善
    • 技術負債の支払いを属人化させないためにチーム文化も変えた
    • チーム文化の改善
    • 知識共有

CI と Bot は結構相性良さそうだ。 あとインストール手順とか、バグの再現手順とかをコピペして実行できるようにするのはまねしたい。

余談だが LINE のノベルティはかなり豪華だった。定番のシールに加えてマグカップと四葉のクローバー栽培キットがついてくる。