██████████ のブログ

なんか技術的なメモ & ブクマ (no affiliate ads)

[草稿]Amazon ショッピングカート (技術書編)

この記事の読み方: なにこれ? → 目次 → 私家版 ターヘル・アナトミア / 坤輿万国全図 (Web) / 皇輿全覧図 (CS) → 各項目

なにこれ?

 

Amazon ショッピングカートが 爆誕 → 即死 して100年ぐらい経ったので、この記事をAmazonショッピングカート代わりに使ってみることにした。ショッピングカート内で商品にゴツいメモを付けられないし 商品の順番を入れ替えられないし 商品をグループ化したりグループ同士を繋げたりできないし 目次作れないし というのが主な不満 → 革命勃発 💥💣

この記事は、商品を手に取ってショッピングカートに放り投げる という行為ではなく、技術書を 買う/やる/積ん読する/... という行為の背景にフォーカスしている。つまり、(これらの本を「お勉強のために」「すべてやる」というお話ではなく、例えやらないにしても) どこがどう繋がっていてどのようにやっていけばいいのかの見通しを逐次アップデートしていきたい という強いお気持ちにフォーカスしている。

 

特定の分野でとても深い知識を持つよりは、広い範囲で人よりも詳しい分野を持っていた方が食べて行く方法を確保するという点でも優位に働くと思います。
あなたが何かの分野で超一流だったとしても、その分野自体が潰れてしまうかもしれません。

勉強は基礎を積み上げるよりも最初からトップダウンでやる方がいい - 学校の勉強しかできないあなたへ

専門性を高めるにせよ、守備範囲を広げるにせよ、変化に即応できるフットワークを実現する逞しい太腿を 獲得/維持 するための筋トレという観点では同じようなものと見なせる。全然関係ないけど、筋トレでは最初に背中と太腿を鍛えると体全体が大きくなっていいそうです。それでは、これから一緒にアイリス・カイルの美しいフォームの懸垂を見ていきましょう (見ません)。

 

目次

 

その他

一般書

平均思考 → なんか飛行機が落ちまくってパイロットが死にまくる → 平均的なパイロットなんて存在せーへんのや

平均思考は捨てなさい

平均思考は捨てなさい

 

『平均思考は捨てなさい』 みんなちがって、みんないい - HONZ

 

漠然とした不安を具体的な問題に置き換えて不安を和らげよ の精神

正しい家計管理・長期プラン編 老後のお金

正しい家計管理・長期プラン編 老後のお金

 

「30代-40代向けの、お金を切り口にした人生プラン作成の手引き書 ... 本のサポートを得ながら付録の表にプランを埋めていくうちに、自分の価値観や生きたい人生について改めて考えたりすることができます」

https://www.amazon.co.jp/gp/customer-reviews/R2AWYNRKDLO33A/

 

文化 / チーム / 人事

ワーク・ルールズ!―君の生き方とリーダーシップを変える

ワーク・ルールズ!―君の生き方とリーダーシップを変える

 

 

肩こり・腰痛・坐骨神経痛・眼精疲労・老眼 (?)・不老不死 対策

ACELETE 背筋矯正サポーター 猫背改善ベルト 男女兼用

ACELETE 背筋矯正サポーター 猫背改善ベルト 男女兼用

 
ピンホールアイマスク ネミール M

ピンホールアイマスク ネミール M

 

 

筋トレ

自宅で BIG 3 と順手懸垂がやりたいわん

 

夜食

最近 夜食にヨーグルトを食べ始めた

 

 

白髪染め

単なる ageism への皮肉です

ホーユー メンズビゲン ワンプッシュ 7 (ナチュラルブラック) 1箱(40g×2個入り)

ホーユー メンズビゲン ワンプッシュ 7 (ナチュラルブラック) 1箱(40g×2個入り)

 

 

 

 

私家版 ターヘル・アナトミア

 

「理解」の段階: 何かが動く仕組みを大まかな図で説明できる → 何かが動く仕組みをより詳しい原理で説明できる → 何かが動く仕組みをコードレベルで説明できる

 

ねこさん (赤ちゃん), きつねさん (赤ちゃん)

基礎^1 筋肉: 英語, 存在者さんチーム, 動物さんチーム

基礎^2 筋肉: Webサーバ, アルゴリズムとデータ構造, HTTP, 関数型プログラミング

基礎^3 筋肉: ネットワーク, 数学, 低レイヤ

 

 

赤ちゃんに嬉しい成分が多い?

独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで

 

インタビュー: "独学プログラマー" コーリー・アルソフ 【PyCharm Blog 翻訳】 — 清水川Web

 

英語

サイトラで英文を読みまくる

 

misc

日々のタスク (理想)

  • ドメインに適した抽象度を持つ機能が既にあって (* ライブラリ, フレームワーク, ...)
  • それらを適切に特殊化して
  • 直交した機能同士を組み合わせて
  • パフォーマンスに問題なく
  • バグは出ない

https://www.slideshare.net/RuiccRail/haskell-day2012

 

無さんチーム

人生がどうたらこうたら

マインドセットがどうたらこうたら

 

無と有の狭間さんチーム

研究の仕方 / 研究的なアプローチ

 

ここまで先行の状態を批判し対案もだせるのだから、あとは自分でアクションを起こせばいいのではないか。論文で言うと、研究の視角(「はじめに」)がしっかりしているようなものと思えて、行けそうな気がするんだが

http://b.hatena.ne.jp/entry/356645482/comment/n_kasei

まず、最初に学んだことは、研究の良し悪しは、多くの場合、最初の段階でほぼケリがついている、という点でした。これは、そもそも実装を始める以前に、そのアイデアを聞いた瞬間に、「あぁこれは(学会に)通りそうだと思えるかどうか」はかなり重要なファクターだと思いました。

スタンフォードで学んだ研究の生産性を上げる4つの方法|Ryo Suzuki|note

 

  1. イシューありき: つまり何に白黒つけたら良いのか、自分は何にケリをつけるのか(=issue)、というのが非常に最初の段階でクリアにあるのだ。
  2. 仮説ドリブン: 一番上にタイトル(メインメッセージ)、その下は左がサブメッセージが五つぐらい並び、その右に一つ一つデータ、実験結果のイメージ、見せ方が絵コンテのように入っている。要は紙芝居的なストーリーラインになっている。その一つ一つが大体非常に手堅い手法によって、どの程度のワークロードが発生するのか、誰にどう聞くとすぐに立ち上がるのか(註:同じラボの人とは限らない)が見えている。
    また個々のサブ論点(sub-issue)でも、何がどういえるかどうかが勝負、という本当の見極めどころがものすごくクリアにある。
  3. アウトプットドリブン: で、これに基づいてある種、その五つなら五つのパズルを埋めるように研究を進めていく。当然、この論理が崩れると、根底から見直しが必要という、issueの流れでいくと上流にある、かなり根源的な課題から取り組んでいく。
    そして、アウトプットが出て論理に影響が出そうであれば、それに合わせて全体のストーリーライン、トップラインのメッセージを見直していく。
    サブ論点が、考えていた方法でらちがあきそうになかったら、すぐにその方法は捨てる。... どんな方法でも良いから、その論点がサポートできれば良い。
  4. メッセージドリブン: こういう形で進めてきているので当然だが、テキストは非常に歯切れが良く、力強い。なぜそれが大切なのか、何をするために何をやったのか、その意味合いは何なのか、ここから入る。

圧倒的に生産性の高い人(サイエンティスト)の研究スタイル - ニューロサイエンスとマーケティングの間 - Being between Neuroscience and Marketing 

 

メンタルスイッチ

ふて寝

 

【質問の仕方】

 

存在者さんチーム

(主動筋: 本, ドキュメント, 断片的な情報のまとめ 等で得られるもの; 補助動筋: 実践の中でしか得られないもの)

 

落下傘方式

社会人が統計学や機械学習を学ぶなら「落下傘方式」で - 六本木で働くデータサイエンティストのブログ

ある文系プログラマがテックリードを任されるまでに学んだこと ── 最前線で生き延びる4つの戦略 - エンジニアHub|若手Webエンジニアのキャリアを考える!

 

ツールの使い方

  • それを使うと何が嬉しいのか/同種のものとの違い を把握する
  • 基本的な使い方を把握する (チュートリアルなど)
  • メッセージの 意味/読み方 を把握する
  • 基本事項を把握する (e.g. Git: コミットメッセージ と コミット単位, ブランチモデル, 開発フロー, プラクティス, ...)
  • 周辺ツール を把握する (e.g. Git: VS Code, tig, ...)
  • 発展的な使い方を知るには/トラブルが起こったときには どうすればいいのかを把握する (公式ドキュメントや良さげな 記事/本 を読む, エラーメッセージで検索する, コードリーディング, ...)
  • 発展的な使い方を 徐々に身につけていく/ある程度まとめて身につける

主動筋と補助動筋とが共同することによって練度やメンタルモデルの精度が徐々に向上していく (いきなり主動筋だけを Lv. 99 目指すのは...🤔) (そもそも great mix world 住人にとって1つのものを Lv. 99 目指すのは...🤔)

 

 

検索の仕方

 

など (よく使うものは 辞書に登録している OR 履歴から選ぶ OR Chrome の「検索エンジンの管理」で検索エンジンに追加している)

 

検索 → 語彙力向上 → 検索 → ...

 

用語

不思議の国のSE用語 - Qiita

 

動物さんチーム

技術書っていうのは、まったく未知の分野を高速で学習するためのものやで。ある程度習熟したら、もうまとまった書籍なくなるからなあ。(´・_・`)
https://ask.fm/tanakh184/answers/133711221651

 

 

開発環境 / チーム開発 / DevOps / 開発インフラ

Git

一般に、gitを学ぶ方法としては、おそらく、最初は基本的なことしかせずに、十分に慣れて、基本に自信がつくまで、他のことには手を出さないことだ

本の虫: gitの10周年を記念したLinus Torvalsへのインタビューの翻訳

 

[Git チュートリアル

Learn Git Branching

 

[コミットメッセージ と コミット単位]

feat: a new feature
fix: a bug fix
docs: documentation only changes
style: changes that do not affect the meaning of the code (white-space, formatting, missing seme-colons, etc)
reafactor: a code change that neither fixes a bug nor adds a feature
perf: a code change that improves performance
test: adding missing or correcting existing tests
chore: changes to the build process or auxiliary tools and libraries such as documentation generation

(Angular.js 開発者ガイド)

【今日からできる】コミットメッセージに 「プレフィックス」 をつけるだけで、開発効率が上がった話 - Qiita

  • 変更量が多い場合は適度に分割する
  • 無駄な commit をなくす
  • どの commit でも最低限動く状態にする

commit をどう分割すべきか 〜コードレビューの観点から〜 - あらびき日記

gitにおけるコミットログ/メッセージ例文集100

 

[ブランチモデル]

 

GitHub Flow 公式ドキュメント

Understanding the GitHub Flow · GitHub Guides

 

あとは GitLab Flow や『[改訂新版]Git ポケットリファレンス』の「ブランチのプラクティス」などが参考になるかも

 

[開発フロー]

込み入った話は ↓ の DevOps でやることになる

 

[プラクティス]

merge --no-ff

(* ff) の場合、ある機能を実装したコミットオブジェクトをGitの履歴から見つけられない――あなたは全てのコミットログメッセージを手動で見なければならなくなるだろう。機能の全て(例えば、一連のコミット)を revert しなきゃいけないなら、右の状況では本当に頭を痛くさせる。だがもし --no-ff フラグを使用したなら、簡単に終わるのだ。

見えないチカラ: A successful Git branching model を翻訳しました

 

[周辺ツール]

Visual Studio Code の git 連携機能と git コマンドについて (2018/01/07) - Qiita

gitignore.io - Create Useful .gitignore Files For Your Project

VS Code, tig,  ...

 

[公式ドキュメント]

Git - Book

git help ほげ

 

[その他ドキュメント]

見えないチカラ: 【翻訳】Gitをボトムアップから理解する

 

【改訂新版】Gitポケットリファレンス

【改訂新版】Gitポケットリファレンス

 

 

DevOps

 

DevOps導入指南 Infrastructure as Codeでチーム開発・サービス運用を効率化する (DEV Engineer’s Books)

DevOps導入指南 Infrastructure as Codeでチーム開発・サービス運用を効率化する (DEV Engineer’s Books)

 

 

[チケット管理ツール / ITS]

GitHub

 

[ChatOps]

 

複数列Slack - みずぴー日記

 

IBM Bluemix の登場を受けて Heroku も無料枠を設けた?

Slack / Hubot / GitHub / CircleCI によるChatOpsなデプロイ方法 - Qiita

 

[Slackbot大全]63種類の事例・ツールをまとめて紹介! botを活用してSlackを便利に【2017夏】 - エンジニアHub|若手Webエンジニアのキャリアを考える!

 

[CI]

CircleCI

 

 

[インフラ構成管理ツール]

Ansible実践ガイド 第2版

Ansible実践ガイド 第2版

 

 

[サーバ構成テスト]

Serverspec

 

 

[コンテナ]

 

Kubernetesに入門したい // Speaker Deck

 

Kubernetes 特集

ソフトウェアデザイン 2018年3月号

ソフトウェアデザイン 2018年3月号

 

 

チュートリアル

Learn Kubernetes using Interactive Browser-Based Labs | Katacoda

 

公式チュートリアル

Overview | Kubernetes

 

コンテナ・ベース・オーケストレーション Docker/Kubernetesで作るクラウド時代のシステム基盤

コンテナ・ベース・オーケストレーション Docker/Kubernetesで作るクラウド時代のシステム基盤

 

 

 

[モニタリング]

ログの収集: Fluentd

ログの全文検索: Elasticsearch

ログの可視化: Kibana

 

 

コードの読み方

 

タグジャンプを使ってトップダウンボトムアップで読むか、デバッガーで実行順序で読むか、Gitとかを使って時系列で見るか、が三大流派です。

カーネルハッカー・小崎資広の「コードを読む技術」 | サイボウズ式

 

補助ツール

パッケージ間の依存関係を図示

そろそろ理解しておきたいのでDockerのソースコードをビジュアルに読む! - Qiita

 

grep

 

例えば、1ファイル数千行ぐらいのあまり構造化されてないpythonスクリプトの処理内容を把握したいときなど。

紙に印刷するメリットは、

  • 同時に何枚も見ることができる
  • 現在位置がわかりやすい
  • メモを書き込むことができる(文字だけでなく矢印なども)

コードリーディング

 

タグジャンプ派

GNU GLOBAL (gtags)

人間とウェブの未来 - GNU GLOBALとvimで巨大なコードでも快適にコードリーディング

 

ソースコード検索

OpenGrokによるソースコード検索環境の構築 - Qiita

 

トップダウン

 

 

ボトムアップ

ひらメソッド - LinuxKernelHackJapan

 

関数に対応する Wiki エントリーをトップダウンで作成していく (まだコードを読まない)

ボトムアップでコードを読んでいく (メモを Wiki に書き込んでいく)

⇒ どこまで読んだか どういう内容だったか の備忘録になる

 

↑ のおかげで頻繁に呼び出される関数を何度も読まずに済む

⇒ 関数は粒度が大きくなればなるほど呼び出される回数が減るピラミッドである。ひらメソッドでは解読が進むにつれて粒度のより小さな関数は読まなくなっていき、粒度のより大きな関数に集中して読めるようになっていく。

 

規模が大きなプログラムのソースは2割も読めば他の8割はなんとなく読めるようになるので2割を目標とするとよい

 

実行順派 (あとで掘る)

初心者でもカンタンにRailsの中身のコードをコードリーディングする方法 - Qiita

 

時系列派

GitベースのコードリーディングTips - クックパッド開発者ブログ

 

まとめ (あとで刈る)

ソースコードを読むための技術

コードリーディングについて | ありえるえりあ

太一のコードの読み方メモ · GitHub

巨大な(あるいは、汚くて邪悪な)コードの泳ぎ方 - mizchi's blog

コードリーディングのためのIntelliJ IDEAショートカット - oinume journal

 

本棚

JSLintのコードは読むとすごく勉強になる。コンパクトで読み易いよ。
https://blog.satotaichi.info/modern-javascript_201701/

 

テスト

フロントエンドの現実的な単体テストは、他の開発者のために、自分が書いたコードの要求を満たしているか検知する手段として、防衛的にテストアフターしておく。これぐらいしか現実的な手法がない。それ以上は、手動テスト、E2E、あるいはUXデザインの範疇だ。

フロントエンドの負債と向き合う - mizchi's blog

 

 

 

 

初めての自動テスト ―Webシステムのための自動テスト基礎

初めての自動テスト ―Webシステムのための自動テスト基礎

 

「初めての自動テスト」を読んだ – Aki Ariga – Medium

 

xUnit Test Patterns: Refactoring Test Code (Addison-Wesley Signature Series (Fowler))

xUnit Test Patterns: Refactoring Test Code (Addison-Wesley Signature Series (Fowler))

 

xUTPの著者から教えてもらった「テストのクラフトマンシップ」 - PoohSunny's blog

 

レガシーコード改善ガイド

レガシーコード改善ガイド

 

 

コードの書き方

コメント:

 

ネーミング と リファクタリング:

 

プログラムのネーミングに迷ったら GitHub でコード検索すると参考になる説 - Qiita

メソッド名の三単現の s ちゃんと付けてる? | プログラマーズ雑記帳

 

本:

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

 

 

Clean Code アジャイルソフトウェア達人の技

Clean Code アジャイルソフトウェア達人の技

 

 

コード設計

  • DRY原則 (DRY原則だけの生兵法は怪我の元)
  • 凝集度を高める / 結合度を低める
  • 単一責任原則: あるクラスが変更される理由が2つ以上あってはいけない (どこが変わりそうで どこが変わらなそうか → どう分割するか)
  • 開放閉鎖原則: 拡張しても / 修正しても それぞれに影響を与えない

今あえてDRY原則に向き合う // Speaker Deck

 

Game Programming Patterns ソフトウェア開発の問題解決メニュー (impress top gear)

Game Programming Patterns ソフトウェア開発の問題解決メニュー (impress top gear)

 

「Game Programming Patterns」読了 (Chromium コミッタ)

 

テスト駆動開発

テスト駆動開発

 

 

例外ハンドリング

Webアプリケーションフレームワーク導入時に考慮すべき22の観点 - Qiita

 

 

 

技術選定

技術選定の審美眼 / Understanding the Spiral of Technologies // Speaker Deck

 

 

 

 

JavaScriptのトレンドを素振りして確認する方法 - Qiita

 

 

デバッグ

 

 

第1回 Visual Studio Codeでデバッグをするための基礎知識:特集:Visual Studio Codeデバッグ入門 - @IT

Git - Git によるデバッグ

 

ツールの詳細ではなく体系だった取り組み方がテーマげ

デバッグの理論と実践 ―なぜプログラムはうまく動かないのか

デバッグの理論と実践 ―なぜプログラムはうまく動かないのか

 

 

セキュリティ

安全なWebアプリケーションの作り方 第2版 (2018年6月頃)

 

 

坤輿万国全図 (Web)

Web Developer Roadmap 2018が出たので2017年版と比較してみる - Qiita

 

ねこさんチーム

JavaScript

イマドキのJavaScriptの書き方2018 - Qiita

この書籍について · JavaScriptの入門書 #jsprimer

JavaScript Promiseの本

MDN

 

ECMAScriptの使い方

 

フロントエンド

短命なJavaScriptフレームワーク

 

10年のツケを支払ったフロント界隈におけるJavaScript開発環境(2016年4月現在)。 - 日々、とんは語る。

なぜ仮想DOMという概念が俺達の魂を震えさせるのか - Qiita

Modern JavaScript概観、そしてElectronへ | さにあらず

 

 

 

これ一冊で Browserify, Jest, ESLint, Flow, Flux, ... に入門できて赤ちゃんにお得っぽい

Reactビギナーズガイド ―コンポーネントベースのフロントエンド開発入門

Reactビギナーズガイド ―コンポーネントベースのフロントエンド開発入門

 

 

超速!  Webページ速度改善ガイド ── 使いやすさは「速さ」から始まる (WEB+DB PRESS plus)

超速! Webページ速度改善ガイド ── 使いやすさは「速さ」から始まる (WEB+DB PRESS plus)

 
Webフロントエンド ハイパフォーマンス チューニング

Webフロントエンド ハイパフォーマンス チューニング

 

 

リスさんチーム

モバイル

React Native

省略

 

きつねさんチーム

Rust

RustはC++と比べてどういいですか?

ライフタイムによる、GCを用いないメモリ安全性が全てですかねえ。これはひっくり返ってもC++には入りませんから。まああと、それを使いやすくするために、型の表現力が強かったり、結果として型クラスのようなTraitが入ってたり、暮らすベースのOOPがパージされてたりするけど、始まりが望ましいから、全体的に理に適った物になってる。

https://ask.fm/tanakh184/answers/145785017235?utm_source=tw_share_own_ar#_=_

 

プログラミング言語Rust

Programming Rust: Fast, Safe Systems Development

Programming Rust: Fast, Safe Systems Development

 

 

Go

 

スターティングGo言語

スターティングGo言語

 

 

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

 

 

バックエンド

 

SQLを書く

[改訂第4版]SQLポケットリファレンス

[改訂第4版]SQLポケットリファレンス

 

[書評&勝手に補足] SQLポケットリファレンス(改訂第4版) (1) | キムラデービーブログ

 

チュートリアル

SQLZOO

SQLBolt - Learn SQL - SQL Lesson 1: SELECT queries 101

 

Best SQL Formatter Online

 

SQLアンチパターン

SQLアンチパターン

 

 

DBMSを運用する

俯瞰

RDB の問題点・苦手なデータの種類
 A: スケールアウトできない
 B: 複雑な処理を大規模なデータに実行すると
   大規模なスローダウンを引き起こす
 P: グラフ, 再帰的構造
 Q: 非構造化データ (XML, JSON, ...)
   (XMLJSON は主要な RDB でサポート済み)

A・B対策は「厳密なトランザクション制御によるデータ整合性」「SQLで実現していた高度なデータ操作」とのトレードオフ

 

A対策:
 複数の DB のインスタンスクラスタを構成する
 KVS を含む NoSQL 製品の多く

B対策:
 データモデルを単純化し複雑なデータ操作を制限する
 KVS (Redis, memcached)

P対策:
 P を RDB のテーブルに変換することなくネイティブに扱う
 MongoDB, CouchDB

Q対策:
 Neo4j

 

【決定版】RDBとNoSQLにみるDB近現代史 データベースに破壊的イノベーションは二度起きるか? - エンジニアHub|若手Webエンジニアのキャリアを考える!

 

MySQL

エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド

エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド

 
詳解MySQL 5.7 止まらぬ進化に乗り遅れないためのテクニカルガイド (NEXT ONE)

詳解MySQL 5.7 止まらぬ進化に乗り遅れないためのテクニカルガイド (NEXT ONE)

 

 

Pro MySQL NDB Cluster

Pro MySQL NDB Cluster

 

 

ソフトウェア・アーキテクチャ / アプリケーション・アーキテクチャ

アプリケーションアーキテクチャ設計パターン

アプリケーションアーキテクチャ設計パターン

 

 

ゲームエンジン・アーキテクチャ 第2版

ゲームエンジン・アーキテクチャ 第2版

 

 

色んなOSSアーキテクチャがてんこもり

The Architecture of Open Source Applications

 

マイクロサービスアーキテクチャ

マイクロサービスアーキテクチャ

 

 

ゴリラさんチーム

 

Linux に慣れる

どこに何があるか

FHS - Pocketstudio.jp Linux Wiki

 

略語に慣れる

新版 UNIX/Linux 由来/読み方辞書

 

シェル・コマンド
[改訂第3版]Linuxコマンドポケットリファレンス

[改訂第3版]Linuxコマンドポケットリファレンス

 

原因調査用Linuxコマンド | 外道父の匠

JM Project (Japanese)

The Linux man-pages project

 

Bash

Man page of BASH

 

Linux デスクトップ

Linux デスクトップ元年!!

 

システムプログラミング入門

 

オペレーティングシステム入門
[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識

[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識

 

linuxのしくみのご意見集 - Google スプレッドシート

Big Sky :: 書評:[試して理解]Linuxのしくみ

 

システムプログラミング

Goならわかるシステムプログラミング

Goならわかるシステムプログラミング

 

 

Linuxシステムコール基本リファレンス ──OSを知る突破口 (WEB+DB PRESS plus)

Linuxシステムコール基本リファレンス ──OSを知る突破口 (WEB+DB PRESS plus)

 

IBM developerWorks 日本語版 : Linux 徹底調査

 

 

リチャード・スティーヴンスの後継者

Linuxプログラミングインタフェース

Linuxプログラミングインタフェース

 

 

ネットワーク

 

HTTP

 

 

Real World HTTP ―歴史とコードに学ぶインターネットとウェブ技術

Real World HTTP ―歴史とコードに学ぶインターネットとウェブ技術

 

「Real World HTTP」読了

 

マスタリングTCP/IP 入門編 第5版

マスタリングTCP/IP 入門編 第5版

 
パケットキャプチャの教科書 (Informatics&IDEA)

パケットキャプチャの教科書 (Informatics&IDEA)

 

 

いまなぜHTTPS化なのか? 技術者が知っておきたいSEOよりずっと大切なこと ― TLSの歴史と技術背景 - エンジニアHub|若手Webエンジニアのキャリアを考える!

 

プロフェッショナルSSL/TLS

プロフェッショナルSSL/TLS

 

『OpenSSLクックブック』提供開始のお知らせ – 技術書出版と販売のラムダノート

 

RPCに特化したGoogleのセキュリティ通信ALTSとは何か - ぼちぼち日記

 

OpenFlow, NFV

 └→[CPU]

 

インフラ

Webサーバ

nginx実践ガイド impress top gearシリーズ

nginx実践ガイド impress top gearシリーズ

 
nginx実践入門 (WEB+DB PRESS plus)

nginx実践入門 (WEB+DB PRESS plus)

 
Nginx: A Practical Guide to High Performance

Nginx: A Practical Guide to High Performance

 

 

インフラ入門

改訂3版 サーバ/インフラエンジニア養成読本 (Software Design plus)

改訂3版 サーバ/インフラエンジニア養成読本 (Software Design plus)

 

 

まとめ

 

監視

ソフトウェアエンジニアのための ITインフラ監視[実践]入門 (Software Design plus)

ソフトウェアエンジニアのための ITインフラ監視[実践]入門 (Software Design plus)

 
Mackerel サーバ監視[実践]入門

Mackerel サーバ監視[実践]入門

 

 

パフォーマンス

詳解 システム・パフォーマンス

詳解 システム・パフォーマンス

 

 

AWS

省略

 

 

 

皇輿全覧図 (CS)

http://www.is.s.u-tokyo.ac.jp/pamph/pdf/utokyo_ISguide2013_01.pdf

 

「コンピューターサイエンスのすべての分野に精通していること」という応募資格に込めた想い

https://www.preferred-networks.jp/ja/job

 

 

プログラミング言語

Ranking Programming Languages by GitHub Users

 

C++

Binary Hacks ―ハッカー秘伝のテクニック100選

Binary Hacks ―ハッカー秘伝のテクニック100選

 

 

 

 

基礎からしっかり学ぶC++の教科書 C++14対応

基礎からしっかり学ぶC++の教科書 C++14対応

 
[改訂3版]C++ポケットリファレンス

[改訂3版]C++ポケットリファレンス

 
Effective Modern C++ ―C++11/14プログラムを進化させる42項目

Effective Modern C++ ―C++11/14プログラムを進化させる42項目

 

 

Optimized C++ ―最適化、高速化のためのプログラミングテクニック

Optimized C++ ―最適化、高速化のためのプログラミングテクニック

 

 

 違法な職務質問をうけて精神的苦痛を負った

江添亮の詳説C++17

江添亮の詳説C++17

 

 

Python

省略

 

なんか CS っぽいやつ

Coding Interview

Elements of Programming Interviews: The Insiders' Guide

Elements of Programming Interviews: The Insiders' Guide

 

またこちらの本は、コンピュータサイエンスの学位を持っている人が知っているべき内容が網羅されているので、プログラマになりたい人の独学用の本としてもおすすめです。

アメリカでプログラマとして就職するための戦略 - 学校の勉強しかできないあなたへ

 

アルゴリズムとデータ構造

プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?

プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?

 

 │
 └→[競技プログラミング

1000問で黄色 2500問で赤ぐらいの気持ちでいればよさそう

AC数を数えてみた · うさぎ小屋

AtCoder の ABC を新しいものから順にやっていく
(http://kenkoooo.com/atcoder/ の contest 名から飛ぶのが楽そう)


自分で考えてコードを書いてデバッグする (& AC/解説 を見る) OR
AC/解説 を理解して自分で考えながらコードを書く OR
AC/解説 を理解できなくても写経する


(s/Topcoder/AtCoder/)
競技プログラミングの練習法について - skyaozoraの日記 - TopCoder部

 

分散アルゴリズム

Introduction to Distributed Algorithms

Introduction to Distributed Algorithms

 

 

純粋関数型データ構造

純粋関数型データ構造

 

 

 簡潔データ構造とは,データをエントロピーの限界まで圧縮して保存しつつ,検索等の処理を行う際にはあたかも非圧縮のデータに対してアクセスしているように扱えるデータ構造である。... 本書は,基本的な簡潔データ構造(ビットベクトル,文字列,木構造等)の理論を説明する ... 容易に実装可能であり実際の性能も良い。

 ├→[連続系アルゴリズム
 │

離散数学

Discrete Mathematics - Science - Under Graduate - The University of Tokyo Online Course Catalogue

 

離散数学―コンピュータサイエンスの基礎数学 (マグロウヒル大学演習)

離散数学―コンピュータサイエンスの基礎数学 (マグロウヒル大学演習)

 

 ↓

計算量理論

Complexity Theory - Engineering - Under Graduate - The University of Tokyo Online Course Catalogue

 

計算理論の基礎 [原著第2版] 3.複雑さの理論

計算理論の基礎 [原著第2版] 3.複雑さの理論

 

 

 

 

連続系アルゴリズム

Numerical Analysis - Science - Under Graduate - The University of Tokyo Online Course Catalogue

 

数値計算の常識

数値計算の常識

 

 

関数型プログラミング

 

ベンジー

プログラミングの基礎 (Computer Science Library)

プログラミングの基礎 (Computer Science Library)

 

 

 関数プログラミング入門 ―Haskellで学ぶ原理と技法― の新版

Haskellによる関数プログラミングの思考法

Haskellによる関数プログラミングの思考法

 

 

JS で関数型プログラミング #定期

JavaScript関数型プログラミング 複雑性を抑える発想と実践法を学ぶ impress top gearシリーズ

JavaScript関数型プログラミング 複雑性を抑える発想と実践法を学ぶ impress top gearシリーズ

 

  └→[FRP][TypeScript][Rust][型理論]など

 

オートマトン形式言語

Formal Language Theory - Science - Under Graduate - The University of Tokyo Online Course Catalogue

 

計算理論の基礎 [原著第2版] 1.オートマトンと言語

計算理論の基礎 [原著第2版] 1.オートマトンと言語

 
Finite Automata

Finite Automata

 

正規表現入門 星の高さを求めて

 ├→[正規表現][言語処理系]
 ↓

情報論理

Information Logic - Science - Under Graduate - The University of Tokyo Online Course Catalogue

 

論理と計算のしくみ

論理と計算のしくみ

 

 ↓

言語モデル

Computation Models and Languages - Science - Under Graduate - The University of Tokyo Online Course Catalogue

 

The Formal Semantics of Programming Languages

The Formal Semantics of Programming Languages

 

 ↓

型理論

 

型システム入門 −プログラミング言語と型の理論−

型システム入門 −プログラミング言語と型の理論−

  • 作者: Benjamin C. Pierce,住井英二郎,遠藤侑介,酒井政裕,今井敬吾,黒木裕介,今井宜洋,才川隆文,今井健男
  • 出版社/メーカー: オーム社
  • 発売日: 2013/03/26
  • メディア: 単行本(ソフトカバー)
  • クリック: 68回
  • この商品を含むブログ (11件) を見る
 

書評「型システム入門」 - 純粋関数空間

 

Proofs and Types

 ↓

定理証明 / 形式手法 / 静的コード解析

定理証明手習い

定理証明手習い

 
抽象によるソフトウェア設計−Alloyではじめる形式手法−

抽象によるソフトウェア設計−Alloyではじめる形式手法−

 

 

Certified Programming with Dependent Types

 

静的コード解析の会#6で発表してきた - ::Eldesh a b = LEFT a | RIGHT b

 └→ 組み込みシステム や クリティカルな基盤ソフトウェア 等のお仕事

 

機械学習

 

データ分析は「強者の武器」、駆け出しのうちはデータが貯まるまでの間に他にやるべきことがある - 六本木で働くデータサイエンティストのブログ

 

[草稿]実務家による 基礎 応用 フットワーク 筋トレ - ██████████ のブログ

 

暗号理論

 

[草稿]実務家による 基礎 応用 フットワーク 筋トレ - ██████████ のブログ

 

並列分散処理

 

 

プラクティス派 (ビッグデータ / 並列分散処理基盤 / データ分析基盤)


ビッグデータを支える技術―刻々とデータが脈打つ自動化の世界 (WEB+DB PRESS plus)

ビッグデータを支える技術―刻々とデータが脈打つ自動化の世界 (WEB+DB PRESS plus)

 

Hadoop: The Definitive Guide

Hadoop: The Definitive Guide

 

 

ZooKeeper: Distributed Process Coordination

ZooKeeper: Distributed Process Coordination

 

管理が困難―分散処理の常識はZooKeeperで変わる:ビッグデータ処理の常識をJavaで身につける(8) - @IT

 

もうちっとだけ続くんじゃ (Spark, Hive, ...)

 

理論派

理論書まとめ

技術書を読む読む詐欺 - kuenishi's blog

 

分散タネンバウム本

Distributed Systems: Principles and Paradigms

Distributed Systems: Principles and Paradigms

  • 作者: Andrew S. Tanenbaum,Maarten Van Steen
  • 出版社/メーカー: Createspace Independent Pub
  • 発売日: 2016/02/26
  • メディア: ペーパーバック
  • この商品を含むブログを見る
 

 

分散本 

Distributed Systems

Distributed Systems

 

 

合意本 (ビザンチン将軍問題とか げ)

Communication and Agreement Abstractions for Fault-Tolerant Distributed Systems (Synthesis Lectures on Distributed Computing Theory)

Communication and Agreement Abstractions for Fault-Tolerant Distributed Systems (Synthesis Lectures on Distributed Computing Theory)

  • 作者: Michel Raynal
  • 出版社/メーカー: Morgan and Claypool Publishers
  • 発売日: 2010/09/01
  • メディア: ペーパーバック
  • クリック: 5回
  • この商品を含むブログを見る
 

 

TX本

Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery (The Morgan Kaufmann Series in Data Management Systems)

Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery (The Morgan Kaufmann Series in Data Management Systems)

 

TX本勉強会終了 - 急がば回れ、選ぶなら近道

 

分散DB本 

Principles of Distributed Database Systems

Principles of Distributed Database Systems

 

 

低レイヤ

「既存のプロジェクトを解析してみる -> (改造して遊んで見る) -> 自分で書いてみる の繰り返しになると思います」

カーネル/VM探検隊

 

「上位レイヤーは動きが激しく、付いていくための勉強を続けないといけない。一方、最初はものすごい量の勉強をしないといけないが一生変わらないものはなにか。それが低レイヤーだ」

プログラマ兼経営者 登大遊が語るエンジニアに伝えたいこと |転職ならDODAエンジニア IT

 

 

言語処理系

Language Processing System - Science - Under Graduate - The University of Tokyo Online Course Catalogue

 

コンパイラ: 作りながら学ぶ

コンパイラ: 作りながら学ぶ

 

コンパイラ―原理・技法・ツール (Information & Computing)

コンパイラ―原理・技法・ツール (Information & Computing)

コンパイラの構成と最適化

コンパイラの構成と最適化

 

言語実装パターン ―コンパイラ技術によるテキスト処理から言語実装まで

言語実装パターン ―コンパイラ技術によるテキスト処理から言語実装まで

 

インタープリタ

Crafting Interpreters

 

LLVM

 

きつねさんでもわかるLLVM ~コンパイラを自作するためのガイドブック~

きつねさんでもわかるLLVM ~コンパイラを自作するためのガイドブック~

Implementing a JIT Compiler with Haskell and LLVM ( Stephen Diehl )

  └→[WebAssembly]など

 

オペレーティングシステム

 

コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方

コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方

 
ディジタル回路設計とコンピュータアーキテクチャ 第2版

ディジタル回路設計とコンピュータアーキテクチャ 第2版

 
オペレーティングシステムの仕組み (情報科学こんせぷつ)

オペレーティングシステムの仕組み (情報科学こんせぷつ)

 

 

@0xAX (Erlang/Elixirlang developer) によるLinuxカーネル解説

Introduction · Linux Inside

 

 

『低レイヤーの歩き方』からの引用

 

Expanded Main Page - OSDev Wiki

はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ (Software Design plus)

はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ (Software Design plus)

 

 ↓

「だいたいこの3つでLinux2.6は読むことができます。... 2.6ってかなり古いですが、最近のバージョンにも適応可能な基本的な設計思想やアーキテクチャが多く載っており、非常に役に立ちます」

Linuxカーネル2.6解読室

Linuxカーネル2.6解読室

 
詳解 Linuxカーネル 第3版

詳解 Linuxカーネル 第3版

 

LKH-jpの概要 - LinuxKernelHackJapan

 

 

連載記事 「Linux Kernel Watch」

 

ネットワーク

Understanding Linux Network Internals

Understanding Linux Network Internals

 
Linux Kernel Networking: Implementation and Theory

Linux Kernel Networking: Implementation and Theory

 

 

カーネルモジュールで Linux カーネルハックに入門してみる

 

カーネル開発

Git - プロジェクトへの貢献 - メールを使った公開プロジェクトへの貢献

誰得UNIX: git-flowでもgithub flowでもない、Git本家推奨のワークフロー

 

 

簡単な OS を自作してみる

 

See MIPS Run (The Morgan Kaufmann Series in Computer Architecture and Design)

See MIPS Run (The Morgan Kaufmann Series in Computer Architecture and Design)

 

ちなみに、もし自作MIPSで例外、キャッシュ、MMUなどOSカーネルとのやりとりのあたりをきっちり実装したかったら、この本がさらなる神本となるであろう ... MIPSLinuxカーネルとの間の、まー低レベルもいいとこの詳細を話を解説した本だ

ハード素人が32bit CPUをFPGAで自作して動かすまで読んだ本のまとめ - スティルハウスの書庫

 

HPC

 

GPGPU

自作PCクラスタ超入門 ゼロからはじめる並列計算環境の構築と運用

自作PCクラスタ超入門 ゼロからはじめる並列計算環境の構築と運用

 
GPUを支える技術 ――超並列ハードウェアの快進撃[技術基礎] (WEB+DB PRESS plus)

GPUを支える技術 ――超並列ハードウェアの快進撃[技術基礎] (WEB+DB PRESS plus)

 
CUDA C プロフェッショナル プログラミング (impress top gear)

CUDA C プロフェッショナル プログラミング (impress top gear)