7月第3週
あるブログでその週に知ったこと / 学んだことをブログに書くということをしていていいなぁと思ったので、自分もやってみる。(いつまでつづくかわからんけど…)
IaaS と PaaS と SaaS
IaaSはOS、ハードウェア、ネットワークといった ”インフラ” の部分が用意されていて、そこに仮想サーバーを立て、ミドルウェアを自前でインストールし、アプリケーションをデプロイする。なので、Linux上での設定やセキュリティ対策もすべて自前でしなければならないが、その分自分ですべて管理し設定できるというメリットもある。
PaaSはIaaSの提供するものに加えて、データベースや言語の実行環境などのミドルウェアの範囲まで提供する。そのため、アプリケーションさえ用意すれば簡単にデプロイすることができ、OSの更新や脆弱性対策までサービスの管理下にあるので手間いらずではあるが、そのPaaSが提供するミドルウェアしか選択することができないというデメリットもある。
SaaSはアプリケーションまで用意されているので、そのサービスを使って目標を達成すればいい。GmailやこのはてなブログもSaaSに該当する。
IaaS と VPS
IaaSとVPSは基本的には同じであるが、IaaSは従量課金制で柔軟にリソース(CPUやストレージなど)を変更できるが、VPSはリソースの変更のためには契約を更新しなければならないなどの違いがある
VPSとレンタルサーバー(共有サーバー)
VPSとレンタルサーバーって同じでしょ?って思ってたら、そういうわけではないらしい。VPSは一つの物理サーバーを複数人が使うが、ユーザーごとにゲストOSが作られゲストOSごとにリソースが確保される。そのため、他のユーザーが負荷の高い処理を行ったとしても、基本的に自分には影響しない。これがVirtual Private Server(仮想専用サーバー)という名前の由来だろう。
それに対し、共有サーバー型のレンタルサーバーは同じOS、同じリソースを複数人で使うため、他のユーザーの負荷の影響が自分にも現れる。
静的リンクライブラリと動的リンクライブラリ(.soファイル)
ライブラリには、
- コンパイル時に結合する静的ライブラリ
- 実行時に結合する動的リンクライブラリ
の2種類がある。
動的リンクライブラリは共有ライブラリとも呼ばれる。
実行時に結合されるので、ライブラリの改造、交換などがしやすい。
動的リンクライブラリの拡張子は、ウインドウズでは.dll、Unixでは.so(Shared Object: 共有オブジェクトの略)であることが多い。
システムコールとは
C言語の関数のことではなく、OSに処理を依頼するもので、CPU割り込みなど通常のプログラムとは違う動作をする。
そう遠くない昔の私がそうでしたが、素直なプログラマならシステムコールをCライブラリで提供されている関数のことだと定義するかもしれません。しかしこれは全く正しくありません。確かにCライブラリに含まれる関数群はシステムコールときれいに対応するものが多い一方(例:chdir)、オペレーティング>システム(OS)に対して特定の動作を要求する以上に色々な処理が行われるものもあります(例:forkや fprintf)。またこれらの他に、qsortやstrtokに代表されるような、OSの機能は特に使わずにプログラミングのための機能を提供するような関数もあります。
実は、システムコールには非常に明確な定義があります。それは、「ユーザーが実行したい操作をユーザーの代わりに実行するように、OSのカーネルに対して要求する手段」です。
intel Coreシリーズの型番の読み方
【CPU】Intel Core i7, Core i5, Core i3の世代の一覧・見分け方のまとめ
IntelのCPUの末尾についているK, S, Tなどのアルファベットについて
デカルト座標系とユークリッド空間
みんなが普通に使っている直交座標系のことを「デカルト座標系」、そして2点間の距離をピタゴラスの定理で定義したものを「ユークリッド空間」と呼ぶ。
つまり「デカルト座標系」や「ユークリッド空間」は「普通の空間」のこと。
構文と式と文
まず「構文(Syntax)」は、そのプログラミング言語内でプログラムが構造を持つためのルールです。多くの場合、プログラミング言語内で特別扱いされるキーワード、たとえばclassやval、ifなどが含まれ、そして正しいプログラムを構成するためのルールがあります。 classの場合であれば、classの後にはクラス名が続き、クラスの中身は{と}で括られる、などです。この節はScalaの制御構文を説明するので、処理の流れを制御するようなプログラムを作るためのルールが説明されるわけです。
次に「式(Expression)」は、プログラムを構成する部分のうち、評価することで値になるものです。たとえば1や1 + 2、"hoge"などです。これらは評価することにより、数値や文字列の値になります。
最後に「文(Statement)」ですが、式とは対照的にプログラムを構成する部分のうち、評価しても値にならないものです。たとえば変数の定義であるval i = 1は評価しても変数iが定義され、iの値が1になりますが、この定義全体としては値を持ちません。よって、これは文です。
ペンライトとサイリウムとUO
ペンライトは電池式の光る棒。電池を交換すれば再利用可能。
サイリウムは液体薬品の混合により発光する棒。使い捨て。5〜6時間光り続ける。200円くらい。
UOはサイリウムの一種で同じように使い捨て。サイリウムよりも強烈に発光する。5〜6分くらいで暗くなる。つまりは短時間だけ強烈に発光するサイリウム。160円くらい。
百万畳ラビリンス
友人に勧められて読んだマンガ。SFファンタジーみたいな感じ。ゲーム会社のデバッガーとして働く主人公(ふたりいる)が異世界に迷い込んでしまうが、デバッガー業で培ったバグ探し技能や発想の機転を駆使し、異世界を攻略していく。異世界の仕様を把握し、それを逆手に取って武器にしていく様がカッコイイ。
主人公のふたりのうち一人は平凡な人間で一般的な常識人という立ち位置。もう一人は人と違う価値観や能力を持っているために人の間に入れなかった人間。この二人の対比から「人と違う人」の幸せ・価値観・向かう先みたいなものを描いていたりもする。