「エンジニア」を取り巻く世界を知る
不思議の国のSE用語 - Qiita - inteltank
インターネット。ネットワーク
aws vpcで学ぶ
ルーター
海底ケーブル
ロードバランサー
vpn
ネットワーク
OSI参照モデル
各種ヘッダ
HTTP
TCP
IP
なぜレイヤー3のルーティングが必要か
Ethernet
データベース
高負荷の軽減
正規化、非正規化
データベースとは
サーバー
高負荷の軽減
クライアントサーバモデル
P2P
Skype、LINE電話はこれ。写真動画の共有もこれ
暗号の解読
オクテットとは
RSA暗号のアルゴリズム
セキュリティ
PCについて
PCの得意・不得意を知るために
CPUとGPUと機械学習
学習はCPU。推論はGPU。
terminalを使う
シェルとカーネルとは
細かいエンジニアの歴史
アセンブラ→C言語→JAVA→Ruby。プログラミング言語の歴史
Scala, Kotlin
VCSとチーム開発。
OSS活動とgithub
エクストリームプログラミング
明示的な振り返りの実施(イテレーション、朝会)
暗黙知の共有(ペアプログラミング)
変化に強いソースに(リファクタリング、継続的インテグレーション、YAGNI) スクラム
日本発の開発手法
ITが「モノづくり」を超えた存在へ(devだけでなくops、Bizも巻き込む)
プログラミング言語の名前の由来
どの言語から勉強始めるべき?
言語の特徴
なぜRuby人気?
人気出たのが2006年なのでRailsの影響が大きそう
そう書いてあったわ
コーディングするときにやること
出来物を利用する
API, ライブラリ
よく使うもののI/O
txt, csv, json
処理
文字列
数字
正規表現
IF文
for文
と、配列・連想配列
可読性(保守性)を上げる何か
関数
クラス
オブジェクト指向
インターフェイス設計
OS
直接ハードウェアに指示しない。ことで抽象的(効率的)に操作できる
現代のOSの主な機能は、ファイルシステムなどの補助記憶装置管理、仮想記憶などのメモリ管理、マルチタスクなどのプロセス管理、更にはGUIなどのユーザインタフェース、TCP/IPなどのネットワーク、など
商品として(ないし製品として)のOSには、デスクトップ環境やウィンドウシステムなど、あるいはデータベース管理システム (DBMS) などのミドルウェア、ファイル管理ソフトウェアやエディタや各種設定ツールなどのユーティリティ、ウェブブラウザや時計などのアクセサリが、マーケティング上の理由などから一緒に含められていることもある
1950年代に「アセンブラ」「コンパイラ」のバッチ処理機能として。
1960年代に
スプール、ジョブ管理、記憶保護、マルチプログラミング、タイムシェアリングシステム、そして、仮想記憶の概念が登場し始めた。
1970年代-1980年代前半 分散システムの台頭
1980年代の別の特筆すべき流れとして、GUIを標準装備したアップルコンピュータのMacintoshがある。MacintoshのOS (Mac OS) は、当時の性能的制約から、多くの部分がファームウェアの状態でハードウェアに組み込まれてはいたが、現在でいうウィジェット・ツールキットを含むToolboxと呼ばれるAPI群を持ち、アプリケーションにおけるGUIのデザイン開発をある程度まで標準化した。
マイクロプロセッサの高性能化と低価格化が進むと、業務用途のシステムでは、高機能な端末を大量に用意することが可能になり、UNIXをベースとしたクライアントサーバモデルが普及した。クライアント機であるワークステーションのOSとしてSunOS、IBM AIX、IRIXなどのUNIX系OSが用いられた。
1980年代後半-2000年代初頭 次世代OSへの流れ
1987年にはIBMとマイクロソフトが、パーソナルコンピュータ用に堅牢なマルチタスク機能・GUI(同年末の1.1より)・ネットワーク機能(拡張版)を装備したOS/2を発表した。1988年に登場したNEXTSTEPは、業務用途に耐える堅牢性・全面的なオブジェクト指向導入による柔軟性・高度なグラフィック機能・一貫したGUIといった、新世代のデスクトップOSで求められる機能を全て実現した。しかしこれらは当時のハードウェア性能では負荷が大きかったため広くは普及せず、代わりに、軽量だが堅牢なメモリ管理やマルチタスク機能は持たないMac OSや、Windows 3.x などのGUI環境が徐々に普及していった。これらは当時の限られたハードウェアでも快適に動作したが、安定性や機能では劣っていた。
1991 Linuxがフリーソフトウェアに
1994 Windows NT
CPU
1970
マイクロプロセッサ
1970年後半
PCの台頭
2004年末
インテルのPentium 4が採用していたNetBurstマイクロアーキテクチャは、発熱と消費電力の増加が抑えられず、ついに一般向けCPUの周波数が3.8GHzで頭打ちになった。インテルは周波数向上をあきらめ、64ビット・SIMD・プリフェッチ・マルチコアなどの技術で性能向上を図ることになる。これに関連して、インテルもAMDに続きプロセッサー・ナンバーを導入することになる。インテルは開発中のCPUをキャンセルしてクロックあたりの性能を重視した路線への転換を余儀なくされることとなった。
2000年代後半
クロック周波数の急激な増大に伴い発熱と消費電力が増大の一途をたどり、マイクロアーキテクチャの複雑化とクロックの増大で性能を稼ぐ従来の方向性は行き詰まった。半導体の微細化につれてリーク電流が加速度的に増大し、半導体回路を単純に微細化しても高速化につながりにくくなった。インテルとAMDで約2年ぐらいごとに行われていた新規のCPUコアの開発ペースも鈍化し、既存コアの改良に開発の重点が向けられる。なおインテルは、2007年に発表したコードネームPenrynより、ムーアの法則に続くモデルとして、CPUの製造プロセスとアーキテクチャを1年ごとに交互に進化させていく「チックタックモデル」を導入している。「消費電力あたりの性能」が重要視され、マルチコアCPUが普及する。パーソナルコンピュータ向けでは2コアが主流だが、サーバ向けCPUでは「UltraSPARC T1」のようにマルチコアとハードウェアマルチスレッディングによりワンチップで数十のスレッドを実行するCPUが現れる。単一スレッドの実行速度は停滞気味となり、ハードウェアによる仮想化機能の搭載や、相対的に低いクロックでも高い性能を引き出しやすいSIMDの性能向上に力点が置かれるようになった。
intel core2
2006年
分散処理
HadoopとSpark
処理だけでなくデータも分散
Mapreduce
アルゴリズム・競技プログラミング
Python
Docker
開発をしてみる。
開発マネージャになる
デバッグ
ネットワーク系
tracerouteを通して「ああ、ルーター通っているなぁ」を感じよう
なぜアスタリスクになるのか
フォワードしかしないルーターだから
ping
シェルスクリプト