パソコン(mac book air)断捨離の覚書

パソコン (mac book air 64GB 2011年モデル)を断捨離したいと思う。エンジニアにとってパソコンは商売道具だから、断捨離の順番でいくと本当に最後の最後(20万のスーツより後)になった。

パソコン(macbook)を断捨離する理由
– 現在、他のパソコンを使っており、ほぼ使用していない
– 64GBはHDDのスペック低すぎる。Unity、X-codeを入れたらすぐに容量が足りなくなる。HDDは256GBくらい欲しい
– CPUもcore-iシリーズの一つ前のスペックで、遅い。最低corei 5以上は欲しい
– mac bookにはphotoshop、illustrator、x-codeが入っており、それが気になって、思考の邪魔をする
– 必要なタイミングでmac bookを買いなおしてphotoshop、illustrator、x-codeを入れればいいと思えるようになった

macbookの断捨離方法
– 必要なデータはi cloudに移行
– データを全て削除し初期化
– mac bookの外装を掃除
– キーボードカバー、電源アダプターなどは処分
– じゃんぱらに買い取ってもらう
http://www.janpara.co.jp/

パソコン断捨離の効果

– 時間が増える(パソコンを買い替えるかどうか考えなく済むようになった)
– 思考がよりクリアーになり、優先順位がつけやすくなった
– より今の仕事にコミットできるように感じる
– 自分自身を今のクライアントに捧げている感じ
– するとクライアントから少しづつ面白い仕事が舞い込んでくる。これはマジ。自分でも理解不能。
– 周りのエンジニアとのコミュニケーションが格段に良くなった。みんなが色々教えてくれる。これもすげー不思議。
– 相手の要望をちゃんと聞ける余裕ができてきた。余裕がないときは自分のプライドをひたすら守っていたが、今は、相手のプライドや立場、考えを尊重しようと思えるようになった。結果的に1対1の交渉事が上手くいきやすくなる。
– その結果、謎の臨時収入が入る(笑) 使い道が全くない。再投資か。。。
– そして更に、金だけでなく色々教えてもらえる。
– やりたかったことをしたり贅沢しまくってるのに金が全く減らない。どうしよう。

パソコン断捨離のデメリット
– 正直何一つない
– あえて言うならば他に断捨離するものがほぼなくなってきた

OK!三連休一番の仕事した!!

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