43
54

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ヴァル研究所Advent Calendar 2017

Day 4

ぼくのかんがえた さいきょうの新人研修

Last updated at Posted at 2017-12-03
1 / 24

お断り

  • これは過去に社内LTで発表した内容です。
  • 実際にこの内容を実施した実績も予定もありません。
  • レビューを受けたりはしていないので、至らないところもあると思います。
  • ネタ半分としてお読み下さい。

前々から考えていた…

  • もし自分が新人研修カリキュラムを作ることになったら
  • 十分な研修期間があったら

対象者

  • Web系フルスタックエンジニアを目指す人向け
  • 初心者の頃の私を想定
  • 前提スキル
    • Cプログラミング基礎
    • Rubyプログラミング基礎
    • Linuxコマンド基礎
  • 情報系の専門教育は受けていない

コンセプト

簡単でいいから自分で作ることで原理を理解する


では始めます


PC自作

  • 自作本を読む
  • パーツを選ぶ
  • 秋葉原に買いに行く
  • 自分で組み立てる

なぜそんなことをするか?
→コンピュータ・アーキテクチャを学ぶため


コンピュータ・アーキテクチャといえば

  • パターソン&ヘネシーが有名だが、それ以前にPC自作できるくらいの知識がないと読んでもピンとこないと思う。

この本もオススメ
image.png


Linuxインストール

  • 自作したPCにインストール
  • ディストロはなんでもよい
  • Linux From Scratchは時間がかかる割に教育的効果は小さいので素人にはオススメできない

ネットワーク構築入門

  1. LANケーブル(クロス)とPC2台を使い、IPアドレスとネットマスクを合わせて通信する
  2. ハブを使って複数台のPCを接続する
  3. ルータを設定してネットワークアドレスの異なるPC同士を接続する
  4. ONU(光回線終端装置)とPCをつなぎ、グローバルIPを設定してインターネット直接続
  5. ドメインをとってDNSを設定。ドメインでアクセス

SSL対応Webサーバ構築

  1. Let's Encryptでサーバ証明書を取得
  2. nginxをインストール
  3. nginxにサーバ証明書を設定してSSL対応

ここで公開鍵暗号と電子署名の基礎、opensslコマンドの使い方も学ぶ。

image.png


Unixプロセスモデル

  • この辺はなんとなくじゃなくてしっかり理解
    • 環境変数
    • fork, exec
    • シグナル
    • スレッド
    • パーミッション
    • ファイルディスクリプタ

image.png

本当は「詳解UNIXプログラミング」か「Linuxプログラミングインタフェース」を読んでほしい…


ネットワークプログラミング初歩


  • HTTPサーバ(GETだけ対応でよい。RFCとかうるさいことは言わない)
  • forkを使って並行サーバ化
  • マルチスレッドで並行サーバ化

rack入門

  • rackとは
    • RubyにおけるWebサーバとWebアプリケーション間のやりとり方を定める仕様である
    • webrick, unicorn, pumaなどはrack対応Webサーバ
    • sinatra, RailsなどはWebアプリケーション
  • Webサーバをrack対応
    • つまり、rackアプリケーションを呼び出せるようにする

TCP/IP入門

  • 3分間ネットワークのレイヤ3とレイヤ4を読む
  • 目標は
    • SYN, ACK, FINの意味
    • コネクション状態遷移
    • を理解する
  • (ゆくゆくは)Linuxカーネルのネットワーク関連パラメータの意味が理解できるようになればいいなあ
  • 演習としてWiresharkを用いたパケットキャプチャ、netstatを用いたコネクション状態確認などを行うことになろう

リレーショナルデータベース入門


トランザクション分離レベル

これをMySQLとPostgreSQLで実験する

ダーティリード ファジーリード ファントムリード
トランザクションの途中で、他トランザクションでCOMMITされていないUPDATEやINSERTの影響を受けてしまうこと トランザクションの途中で、他トランザクションでCOMMITされたUPDATEの影響を受けてしまうこと トランザクションの途中で、他トランザクションでCOMMITされたINSERTの影響を受けてしまうこと
READ UNCOMMITED 起きる 起きる 起きる
READ COMMITED 起きない 起きる 起きる
REPEATABLE READ 起きない 起きない 起きる
SERIALIZABLE 起きない 起きない 起きない

言語処理系自作入門

  • yacc/lexを使って独自言語のインタープリタを作る。
  • ↓この本を読んで実践

image.png

正直あまり意味は無い。
インタープリタ自作本でもっといい本があったら教えてください。


OS自作入門

  • 「12ステップで作る組込みOS自作入門」の実践
    • マイコン実機上で動くOSを自作
    • BIOSの力も借りず、電源投入後最初に動くコードから書く
    • マイコンボードとPCをRS232-Cでつないで開発
    • OSが行っていることを実感とともに理解する
    • リンカとローダに対する理解も深められる

image.png


落穂ひろい


これくらいやれば十分だろう

  • まだ物足りない人には…
  • 書籍「コンピュータシステムの理論と実装」
    • NANDからテトリスまで
  • 書籍「アンダースタンディングコンピュテーション」
    • ラムダ計算、チューリングマシン


採用情報

ヴァル研究所ではこういった研修を受けたいエンジニア志望の方を募集しています(…たぶん)。

43
54
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
43
54

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?