yum -yの[-y]とは?

オプション -y は 問い合わせにすべて「y」と返答するオプション

$ man yum でマニュアルを見ると、

-y, –assumeyes
Assume yes; assume that the answer to any question which would
be asked is yes.
Configuration Option: assumeyes

なるほどね~

linuxのディレクトリ構造

/ ルートディレクトリ。全ての始まり。
/bin cpやchmodなどのシステムを管理する上で基本コマンド
/boot ブートに必要なファイル。ブートログやカーネルイメージ(Linuxカーネルを格納して圧縮したファイル)が保存されている。
/dev デバイスファイルが配置されている。デバイス(装置〈ハードウエア〉)をファイルとして扱うUNIXの設計思想からきています。
/etc ほとんどの設定ファイルが配置されます。カーネルだけでなく、追加された各ソフトの設定ファイル等が配置されているため、ファイル数が膨大で内容を把握するには骨が折れます。
⇒なるほど
/home 一般ユーザーのホームディレクトリ。通常ユーザーを追加するごとにユーザー名のディレクトリを追加します。
⇒vagrantは homeの中に入ってますね。
/lib /binや/sbinのコマンドを実行するのに必要なファイルが配置されています。基本的にユーザーが変更を加えることはありません。64bit用の共用ファイルは別途「lib64」というディレクトリにあります。
⇒/binは基本コマンド。libとbinは分けてるのですね。
/lost+found システムのバックアップや復元用のファイルが格納される。意図しない再起動やシャットダウン時に使われる。
⇒ すげー。人間の英知を感じずにはいられない。
/media リムーバブルメディアのマウントポイント。(floppy、CD、DVDなど)
⇒ 触ったことないな。
/mnt 一時的なマウントポイント。mediaとの違いは、一時的なファイルシステム(fstabなど)のマウントに使う点。
⇒ マウントの意味がわからん。。
/opt rpmなどパッケージ管理システムのインストール先。複数のユーザーで利用する場合追加したものをここに保存しておけば、変更点を把握しやすい。
⇒ /optは使用頻度が高いですね。
/proc プロセスのIDの付いたディレクトリが配置されています。プロセス独自の情報を格納することからプロセスディレクトリと呼ばれる。各種プロセスのステータスを確認する際に利用される。
/root rootユーザーのホームディレクトリ。homeがセキュリティ上の脅威にさらされてもこちらは大丈夫。という保険のディレクトリです。
⇒ 入れません。。。
/sbin 再起動やファイルシステムの操作などシステム管理者用のコマンドが配置されています。/bin同様、新しいコマンドの追加や変更は推奨されません。
/selinux セキュリティーを向上させるために利用する、Security-Enhanced Linux。rootへの権限が集中を分散することでセキュリティの向上を図る。ものらしい。CentOSではデフォルトで作成される。
/srv FTP、WWWなどで利用するユーザー用のスペース。/homeとも違う、FTP専用、WWW専用のユーザー用ディレクトリ。
/sys システム関連と思いきや、動作しているプロセスやドライバを/procで管理すると膨大になるため、/sysにドライバ関連のプロセスをまとめている。
/tmp テンポラリデータの保存場所。メモリ上の一時ファイルを保存します。ダウンロードフォルダとして利用することもあります。再起動時に消去されます。また通常はcronで定期的に消去されます。
⇒ なるほど、tmpにはおいては駄目なのね。
/usr 各ユーザーが共通して利用するプログラム・ライブラリのデータ。ソースからコンパイルしたソフトなどはこちらにインストールされます。通常パッケージの追加するこのディレクトリにインストールされることが多い。
⇒ インストールしたものは基本 /usrですな。
/var ログやキャッシュなど、可変的システムデータ(動的ファイル)。一時的なデータとしては/tmpと同じですが、こちらは再起動しても消去されずに残ります。
⇒ なるほど。ログはvarか。
/var/www Apacheのデフォルトデータ保存場所。インターネット関連のディレクトリはここに収めるのが普通。かつては/home/httpdディレクトリにあった。

ほう、使うものと使わないディレクトリがありますね。fluentdで使うvarはログだそうです。

macOSをSierraにupdateしてx-codeもupdate

Sierraを入れられず、mac book買い換えないとダメかと思いmac bookを物色していましたが、ストレージ周りをいろいろ整理していたら、何故かいけましたね。一安心。今日が日曜でなければ一杯飲んでたところ。
Xcodeが最新でないと、swiftの書き方だけでなく、あらゆる面で死活問題でしたので。。。

強制停止はcomand + option + esc

x-code 9.3.1 入りました。半日かかった。ヒャッホー

javascriptでランダムな英数字10桁と数字10桁

console.time('timer1');
var char = "abcdefghijklmnopqrstuvwxyz123456789"
var id = "";
for(var i=0; i<10; i++){
	id += char[Math.floor(Math.random()*35)];
}
document.write(id);
console.timeEnd('timer1');

0.24609375ms
timer1: 0.411865234375ms ※2回目
timer1: 0.324951171875ms ※3回目

min:1000000000 ~ max 9999999999 の10桁の数字の場合

var id = Math.floor(Math.random() * 9000000000)+ 1000000000;
document.write(id);

timer1: 0.329833984375ms
timer1: 0.248779296875ms ※2回目
timer1: 0.24462890625ms ※3回目

感覚的に、1回の演算処理に較べて10回のforループを回す場合、レジストリの演算処理が10倍に増えるので、処理時間も約10倍位になるかと思いきや、計算してみるとforループでも処理時間はほとんど変わらない(2倍以下)ですね。multiplyとplusのCPUの処理はそんなに時間がかからない、ということなんでしょうか。よくわかりませんね。

Parallel Processing

CPU1 CPU2 CPU3

#include <pthread.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <assert.h>

void* f1(void* arg){
	int whos_better;
	whos_better = 1;
	while(1)
		printf("Thread 1: thread %d is better.\n", whos_better);

		return NULL;
}

void* f2(void* arg){
	int whos_better;
	whos_better = 2;
	while(1)
		printf("Thread 2: thread %d is better.\n", whos_better);

	return NULL;
}

int main(int argc, char **argv){
	pthread_t th1, th2;

	pthread_create(&th1, NULL, f1, NULL);	
	pthread_create(&th2, NULL, f2, NULL);

	pthread_join(th1, NULL);
	pthread_join(th2, NULL);

	pthread_exit(NULL);
}

File System

Key Abstractions
1. file
2. file name
3. Directory Tree

#include 
#include 
#include 
#include 

int main(int argc, char **argv){
	int fd;
	ssize_t len;
	char *filename;
	int key, srch_key, new_value;

	if(argc < 4){
		fprintf(stderr, "usage: sabotage filename key value\n");
		exit(EXIT_FAILURE);
	}

	filename = argv[1];
	srch_key = strtol(argv[2], NULL, 10);
	new_value = strtol(argv[3], NULL, 10);
}

Naive Memory Model

CPU
Memory: fast, random access, temporary
Disk: slow, sequential access, durable

CPU Register <- cache -> Main Memory
10 cycle latency, 256 bytes / cycle

Memory Hierarchy
CPU
Main Memory

Write Policy
Hit:
– write-through
– write-back

Miss:
– write-allocate
– no-write allocate

Virtual Address Abstraction
Kernel addresses, user stack, heap, uninitialized data, initialized data, code

Heavy Lifting Done by the run time

spow workers assign mappers
assign reducers

Issues to be handled by the run time
Master data structures
– location of files created by completed mapper
– score board of mapper/reducer assignment
– fault tolerance
* start new instances if no timely resonse
* completion message from redundant stragglers
– locality management
– task granlarity
– backup tasks

Content Delivery Networks
Napster started for music sharing

content hash, node-id where content stored
content-hash = 149 => <149, 80>

Name space {key-space, node-space}
content -> sha-1 -> unique 160-bit key, unique 160-bit node id
Objective:
-> node id such that
APIs
– put key, getkey

CDN – an overlay network
routing table at A, name, node id, next

multimedia API
middleware
commodity OS

Parallel program
-pthreads: API for parallel programs
Distributed programs
-sockets: API for distributed programs
Conventional Distributed program
client – unix(socket) – server e.g. NFS

Novel multimedia Apps
sensor-based: sensors, distributed
sense -> prioritize -> process -> actuate
computationally intensive, real time

large-scale situation awareness

PTS Programming Model
Channel ch1 =
lookup(“video channel”)
while(1){
// get data
response γ =
ch1.get()
// process data

// produce output
ch2.put(item,)
}

RioVista

RioVista
– performance-conscious design of persistent memory
Quicksilver
– making recovery a first class citizen in os design

LRVM Revisited
begin-xact, nomal program writes, end-xact
cpu, undo <- memory, cpu memory, memory data reda CPU, application memory, File cache mmap => normal application memory secomes rersistent

Crash Recovery
Treat like abort
– recover old image from undo log -> servives crashes since it is in RIO file cache
Crash during crash recovery?
– idempotency of recovery -> no problem

Server design

Server design
-persistent metadata m1, m2, ..mm
-normal data structures + code
=>
create external data segments to back persistent data structures
-apps manage their persistence needs

Designer’s choice to use single or multiple data segment

RVM Primitives
Initialization
– initialize(options)
– map(region, options)
– unmap(region)

Body of server code
– begin_xact (tid, restore_mode)
– set_range(tid, addr, size)
– end_xact(tid, connect, t_mode)
– abort_xact(tid)

GC to reduce log space
– flush()
– truncate()

bigin_xact(tid,mode);
	set range(tid, base_addr, #bytes);
	write meta data m1
	write meta data m2
end_xact(tid, mode);

No action by LRVM
LRVM create redo log in memory

Redo log
-AV changes of different region between begin and end xact

Commit
Redo log, window of vulnerability

Log truncation
apply to data seg, read redo log