インフラSE日記

OSS、仮想化、金融工学、ゲーム、ときどきラーメン

認知の歪みと存在価値について

ちょっといろいろあって、とある人から「一緒に死のう」と言われてしまいました。
自分のせいではあるのですが、なかなかつらいものがありますね。
改めて、自分は人間未満の生きる価値がない有機体だと実感しました。

ところで、皆さんは自分が生きる価値があると思ってますか? また、この世に生きる価値がない人間がいると思いますか?

価値とは何でしょうか。
Wikipediaによると価値とは以下のように記載されています(2018年4月8日参照)。

価値(かち)とは、あるものを他のものよりも上位に位置づける理由となる性質、人間の肉体的、精神的欲求を満たす性質[1]、あるいは真・善・美・愛あるいは仁など人間社会の存続にとってプラスの普遍性をもつと考えられる概念の総称。

自分には生きる価値があるのか?という自問自答を繰り返した結果僕が出した結論は

自分には生きる価値がない

でした。
誰からも愛されず、誰からも必要とされない人間になぜ生きる価値があるのでしょうか?
死ぬのが怖くて自殺もできず、生きる価値がない自分がのうのうと生きているのが許せないのです。

「生きる価値がない」で検索するとそこそこヒットします。みなさん同じようなことを考えているんですね。

「お前は認知が歪んでいる」と言われてから数年経ちました。
Wikipediaによると認知の歪みには10パターンあるそうです(2018年4月8日参照)。

1.全か無かの思考
2.行き過ぎた一般化
3.心のフィルター
4.マイナス思考
5.論理の飛躍
6.拡大解釈、過小解釈
7.感情の理由づけ
8.~すべき思考
9.レッテル貼り
10.誤った自己責任化(個人化)

かなり当てはまってしまってますね…。
あまりこういうことを普段から考えているとは他人に相談できないです。
なので、思い切ってブログに書いてみることにしました。
ただの生きる価値がない、二酸化炭素を製造するだけのゴミの戯言です。

僕が一番好きなバンドGRANRODEOのネジレタユガミの歌詞の一節を引用して終わりとします。

捻れた歪み
あの空の下で泣いて笑って思い出す


そんな感じです。

退職しました。

全くブログを更新していませんでした...

 

実家の家業を継ぐため、3年間新卒で入社したSIerを退職しました。

退職を決意した理由は以下の3つ。

1. 実家の家業を継ぐため

2. 前の会社に未来がないと思ったため

3. 「エンジニア」として成長できないと思ったため

 

1つめについては上で申し上げた通りです。

これがメインの理由です。最初は継がない予定でした。

でも以下の3つくらいの理由で継ぐことを決意しました。

①今までこんなしょうもなく、も取り柄もない糞 of クソ以下の人間を

 大学院まで行かせていただいた、両親への感謝

②会社が過渡期であり、たくさんの課題がある(それらを解決していく楽しみがある)

③小さい会社だが、経営に携われることができる

 

くらいと書いたのは他にもあるんですが、まだ自分で整理できていなくて文字にできないと思ったからです。

 

2つめは自分でもびっくりするくらい直球ですね。

今の時代にクラウドとかコンテナとか叫んでるSIerがどこにあるんですか?

今の時代にx86のサーバ機器を売りつけるSIerがどこにあるんですか?

何もかもが古すぎます。一番やっかいなのは、上層部が自分たちの考えが古いということに気づいていないことです。

これでは時代に追いつくどころか、置いていかれるだけです。

 

3つ目は、ある種自分のわがままというか、自分のせいでもあるのですが...

僕個人の考えですが、システムエンジニアシステムエンジニアであって「エンジニアア」ではないということです。

僕がこのように考える理由は以下の2つ。

①基本的に新しい技術を生み出さない

 (他人が作った技術で積み木遊びしているだけ)

②技術の人間よりも、管理の人間を評価する

 

①については、文字通りです。基本的にシステムエンジニアのやることってベンダが開発・発売しているサービスor製品を組み合わせて売りつけることですからね。自分たちで何も技術を生み出していないです。これについては否定するつもりもありませんが、

それしかできないのってどうなの?って感じです。

 

②についてはよく言われますね。いわゆるマネジメントです。実際に技術に特化した人間はあまり評価されていませんでした。「工数」という現代に蘇った奴隷制度の下で人間・タスク(WBS)を管理できる人間を高く評価していました。

確かにマネジメントは必要だと思います。僕自身マネジメントなんてできませんし、マネジメントできる人は素直にすごいと思いますし、尊敬します。

ですが、なぜ技術に特化した人間は評価されないのでしょうか?

それは、利益に直結しないからと僕は考えています。技術だけでは利益に直結しないです。しかしそれをうまく応用できればより大きな利益を生み出すことができるのではないかと思っています。裏を返せばそれを活かす環境がない(きつくいえばそれをできるだけの能力がない)だけなのではと思っています。

 

色々言いましたが、今後IT系の企業の社員として働くことはおそらくないですが、

元インフラエンジニアとして様々なことを書いていこうと思います。

 

現在はガロア理論ルベーグ積分不完全性定理サポートベクターマシンとある国家資格について勉強中です。

メモ程度になるかもしれませんが自分が勉強したことを書いていきたいです。

 

そんな感じです。

 

 

4月6日追記

一つ言い忘れていたことがありましたので、追記します。

本当に何もできなかった無能のクソ以下の僕を3年間雇っていただいて、いろいろ経験させていただいた会社および先輩方(特にOJT担当者)には感謝しています。

技術以外にも、人間的に成長することが少しはできたかと思います。

 

本当にありがとうございました。

これからも精進いたします。

 

よろしくおねがいします。

可算集合のルベーグ測度が0であることの証明

コルモゴロフが構築した現代確率論を学習するときに、測度論は避けて通ることはできません。そこで、今回は基礎的な定理である「可算集合ルベーグ測度は0である」ということを証明しようと思います。

ちなみに、測度と言えば「掛谷集合」という面白い集合があるのを知っていますか?

掛谷集合とは、以下の性質を満たす集合のことです。

任意の角度の長さ1の線分を含み、測度が0となるような二次元集合が存在する。

 

不思議な集合ですよね。

もともとは、長さ1の線分を回転させられるような集合で、面積が最小となるような集合は何かという数学者掛谷宗一の問題です。

それはともかく、測度論の基礎の基礎のところから学んでいきたいと思います。

測度

測度の定義を以下に述べます。

集合{\displaystyle X}のべき集合{2^{\displaystyle X}}の部分集合{\mathfrak{F}}上で定義される加算加法的測度\mu[0,\infty]に値を持つ写像であり、以下を満たす。

1.空集合の測度は0

\mu(\phi)=0

2.完全加法性を満たす.すなわち、互いに素な集合E_{1},...,が以下を満たすならば

E_{i} \cap E_{j}=\phi \: for \: all \: i, j \in \mathbb{N} \: i\neq j

{\displaystyle \mu(\bigcup_{k=1}^{\infty}E_{k})=\sum_{k=1}^{\infty}\mu(E_{k})}

 

証明

実数\mathbb{R}の部分加算集合Aに対し、\mu(A)=0を示す。

Aのk番目の実数q_{k}と任意の正の実数\epsilon_{k}を用いて開区間E_{k}=[q_{k}-\epsilon_{k},q_{k}+\epsilon_{k}]を定める。

{\displaystyle A \subset \bigcup_{k=1}^{\infty}E_{k}}であることから

 {\displaystyle \mu(A) \leqq \mu(\bigcup_{k=1}^{\infty}E_{k}) \leqq \sum_{k=1}^{\infty}\mu(E_{k}) \leqq 2\sum_{k=1}^{\infty}\epsilon_{k}}

ここで\epsilon_{k}をあらたに\epsilonを正の実数として、以下のように定義する。

\epsilon_{k}=\epsilon^{k}

すると

{\displaystyle \mu(A) \leqq 2\sum_{k=1}^{\infty}\epsilon_{k}=2\frac{\epsilon}{1-\epsilon}}

となり、\epsilonは任意の正の実数であるため\epsilon\rightarrow0として\mu(A)=0となる。

 

証明終了

 

 

厳密に言えば、数学的には証明できてませんね。

専門家がみたら証明(笑)みたいな内容でしょう。

正確に言えば上記に書いた\mu(A)ルベーグ測度ではなく、ルベーグ外測度ですしね。それでも、数学初心者の僕からしたら十分な内容です。

 

測度が定義できないヴィタリ集合についても書きたいです。

 

 

そんな感じです。

 

 

VyOSというオープンソース仮想ルータを使ってみた

vyosとは

Vyattaからフォークされたオープンソースのネットワーク用OS。

BGP、OSPF、RIPなど基本的なプロトコルを扱える。また、NATやF/Wなどのルーティング以外の機能も有する。

 

N/W構成図

我が家のN/W構成図を書いてみます。

以下のようになっています。f:id:chemicallogical:20171008221847p:plain

WKはVMware Workstationの略です。

一番上のルータはBaffalo製のルータ(最近たまに接続不可になり要再起動なので早く買い替えたい)です。

今回赤で囲った箇所がvyosで構築したルータです。

ちなみに、ESX01はVMware Workstation上で稼働している仮想マシンです(いわゆるNested Virtualization)。

VMware Workstationで作成した3つのセグメント192.168.197.0/24(NAT)と192.168.41.0/24(Only)と172.19.16.0/24(Only)を接続していきます。

 

やったこ

VMware Workstation上に172.19.16.254と192.168.41.254をもつ

 仮想ルータ(vRouter01)をvyosで構築し、2つのインタフェースでRIP起動

VMware Workstation上に192.168.41.253と192.168.197.253をもつ

 仮想ルータ(vRouter02)をvyosで構築し、2つのインタフェースでRIP起動

③ESX01上に192.168.41.252と192.168.197.252のポートグループに所属する

 仮想ルータ(vRouter99)をvyosで構築し、2つのインタフェースでRIP起動

疎通検証結果

以下の4つの仮想マシンを使って、各ペアで疎通できるか検証してみました。

その結果を以下に記載します。

VM1(Win2008R2, 172.19.16.2)

VM2(Win2008R2CP、192.168.41.2)

VM3(ESX01、192.168.197.136)

VM4(Win2008、192.168.41.128)

 

ペア 送信元 送信先 疎通結果
1⇔2 VM1 VM2 ×
VM2 VM1 ×
1⇔3 VM1 VM3 ×
VM3 VM1 ×
1⇔4 VM1 VM4 ×
VM4 VM1 ×
2⇔3 VM2 VM3 ×
VM3 VM2 ×
2⇔4 VM2 VM4 ×
VM4 VM2 ×
3⇔4 VM3 VM4 ×
VM4 VM3 ×

 

全部通信できませんでした。

原因は不明。今後特定します。

今の自分のネットワークの知識では特定できず、悔しい結果となりました。

とりあえず不満だらけの結果で本当は載せたくないのですが、あえて自分に厳しくネットワークの知識・技術がまったくないことを反省し今後の自分の成長の期待して載せます。

必ず原因特定して解消します。

 

今回vyos構築作業で使ったコマンド

今回使ったコマンドを下記に載せます。

RIPを使ったので、静的ルーティングはしてないです。

【ホスト名】

ホスト名確認

show host name

ホスト名変更

set system host-name <ホスト名>

 

IPアドレス

IPアドレス確認

show interfaces

IPアドレス設定

set interfaces ethernet <インタフェース名> address <IPアドレス(CIDR表記)>

 

【ルーティングテーブル】

ルーティングテーブル確認

show ip route

 

プロトコル

RIP設定

set protocols rip <ホスト名>

 

ネットワークって難しいですね。

机上だけの知識だけでは本当にわかったことにならない、なるべく実機で触って理解しよう!ということからやってみました。実機で設定しても思ったようにうまくいかないです。何度モニターぶん殴ろうかと思ったことか…

それでも、改めて全くネットワークのこと理解していないということが理解できましたので、よかったです。

かならずリベンジします。

 

 

そんな感じです。

対角線論法について

カントール自然数\mathbb{N}と実数\mathbb{R}との間に全単射がないことを証明するために対角線論法を使ったことはあまりにも有名です。 その他にもチューリングの停止性問題、ゲーデル不完全性定理を証明するために対角線論法を使ったことでも有名ですね。

個人的に昔から対角線論法の証明内容が腹落ちしないというか、納得がいかなかったので自分で納得がいく証明方法を考えてみました。

ちなみに、初めてはてなブログMarkdown記法を使ってtexの数式で書いたのですが、 なかなかうまく書けないですね。

定理 自然数\mathbb{N}から実数\mathbb{R}への全単射は存在しない。

証明

自然数\mathbb{N}から実数\mathbb{R}の部分集合[0,1]へ全単射fが存在すると仮定する。

ここで関数g,hを下記の通り定義する。


g:[0,1]\times\mathbb{Z}_{10}\to\mathbb{Z}_{10}


g\left(r, n\right)=\lfloor r\times10^{n} \rfloor mod 10


h:\mathbb{Z}_{10} \to \mathbb{Z}_{10}

関数hは任意のx\in\mathbb{Z}_{10}に対しh\left(x\right)\neq x

を満たす関数であればなんでもよい

ここで実数rを以下の通り定義する。

r={\displaystyle
\sum_{i=1}^{\infty}\frac{h(g(r_{i},i))}{10^{i}}
}

仮定から、実数rに対応する整数Nが存在する。

{\displaystyle
g\left(r,N\right)=g\left(r_{N},N\right)=\lfloor \sum_{i=1}^{\infty}\frac{h(g(r_{i},i))}{10^{i}}\times10^{N} \rfloor mod 10=h(g(r,N))}

となり、矛盾する。 すなわち、自然数\mathbb{N}から実数\mathbb{R}全単射fが存在するという命題が偽であることがわかり、自然数から実数への全単射が存在しないことが証明できた。

僕が普通の対角線論法で納得いかない部分は、自然数から実数への対応表から、対応表にない実数を構成するところでした。対応表にない実数が、無限に並んだ自然数から実数への対応表のどれにも一致しないという論法において、何故無限個の実数と異なることを示すことができるのだろうという疑問がありました。 具体的に対応表に存在しない実数rを対角線上にある自然数から構成し、自然数と実数の間に全単射が存在するという仮定から、実数rに対応する自然数Nが存在することになるが、実数rのN番目の自然数は実数rのN番目の自然数と異なるという矛盾を導き出す。 このことによって、自然数から実数への全単射がないことが証明できる。

次は、ゲーデル不完全性定理かな?

そんな感じです。

ARP REQUSTの挙動について

今更、ネットワークの基本的なことを勉強しています。

その中でも、ARPは基本的な通信プロトコルであるため、どのような挙動をするか実験してみました。

何を今更そんな、という方もいらっしゃるかもしれませんが、ほとんど自分用のメモなので許してください!

 

結論

ARP REQUSTは他のサーバのARPテーブルを書き換えることができる

 

実験内容

仮想マシンVM1, VM2, VM3を使い、イーサネットヘッダの送信元MACアドレス送信先MACアドレスARPヘッダの送信元MACアドレス、送信元IPアドレス送信先MACアドレス送信先IPアドレスを変えながらARP REQUEST(ブロードキャスト)を投げる。ARP REPLYの内容と実際に書き換わったARPテーブルの内容を確認する。

 

通信するプログラムはVM1で実行する。VM1はUbuntu 14.04であり、生ソケットを使うものとする。

 

わかったこと①

イーサネットヘッダの送信元MACアドレスARPに全く影響しない。

 

イーサネットヘッダの送信元MACアドレスをVM1, VM2, VM3のMACアドレスに変更しながら実行してみたが、ARP REPLYに影響はなかった。

 

わかったこと②

ARP REPLYを返すサーバは、ARP REQUESTのARPヘッダに書かれている送信先IPアドレスのサーバである。

 

もともと知りたいIPアドレスに対応するMACアドレスのサーバにARP REPLYを返してほしいため、当たり前の挙動である

 

わかったこと③

ARP REPLYを返したサーバは、ARP REQUESTのARPヘッダに書かれている宛先IPアドレスのサーバのMACアドレスを、ARP REUESTのARPヘッダに書かれている送信元MACアドレスとして学習する

 

つまり、ARP REQUESTを受け取ったサーバは、素直にARP REQUESTを投げたサーバのIPアドレスMACアドレスを素直に学習する

この仕様を使えば、ARP REQUESTでブロードキャストドメイン上に存在するサーバのARPテーブルを改ざんできる

 

下に実験結果をまとめてみます

No.7以降の学習結果を書いていないのはめんどくさくなって実験してないからです

まぁ、ある程度仕様わかったしね、ある程度は大丈夫でしょう

これでARP SPOOFINGには偽のARP REPLYを投げてする方法と、偽のARP REQUETを投げる方法があることがわかりましたね!

 

良い子はARP SPOOFINGなんてやっちゃダメですよ!

 

No. 実行端末 ETH SRC MAC ETH DST MAC ARP SRC MAC ARP SRC IP ARP DST MAC ARP DST IP ETH SRC MAC ETH DST MAC ARP SRC MAC ARP SRC IP ARP DST MAC ARP DST IP VM1 VM2 VM3
1 VM1 VM1 FF:FF:FF:FF:FF:FF VM1 VM1 00:00:00:00:00:00 VM2 VM2 VM1 VM2 VM2 VM1 VM1 VM2のMACアドレスを、VM2のMACアドレスとして学習した VM1のMACアドレスを、VM1のMACアドレスとして学習した 学習していない
2 VM1 VM1 FF:FF:FF:FF:FF:FF VM2 VM1 00:00:00:00:00:00 VM2 VM2 VM2 VM2 VM2 VM2 VM1 VM2のMACアドレスを学習できなかった VM1のMACアドレスを、VM2のMACアドレスとして学習した 学習していない
3 VM1 VM1 FF:FF:FF:FF:FF:FF VM3 VM1 00:00:00:00:00:00 VM2 VM2 VM3 VM2 VM2 VM3 VM1 VM2のMACアドレスを学習できなかった VM1のMACアドレスを、VM3のMACアドレスとして学習した 学習していない
4 VM1 VM2 FF:FF:FF:FF:FF:FF VM1 VM1 00:00:00:00:00:00 VM2 VM2 VM1 VM2 VM2 VM1 VM1 VM2のMACアドレスを、VM2のMACアドレスとして学習した VM1のMACアドレスを、VM1のMACアドレスとして学習した 学習していない
5 VM1 VM2 FF:FF:FF:FF:FF:FF VM2 VM1 00:00:00:00:00:00 VM2 VM2 VM2 VM2 VM2 VM2 VM1 VM2のMACアドレスを学習できなかった VM1のMACアドレスを、VM2のMACアドレスとして学習した 学習していない
6 VM1 VM2 FF:FF:FF:FF:FF:FF VM3 VM1 00:00:00:00:00:00 VM2 VM2 VM3 VM2 VM2 VM3 VM1 VM2のMACアドレスを学習できなかった VM1のMACアドレスを、VM3のMACアドレスとして学習した 学習していない
7 VM1 VM3 FF:FF:FF:FF:FF:FF VM1 VM1 00:00:00:00:00:00 VM2 VM2 VM1 VM2 VM2 VM1 VM1      
8 VM1 VM3 FF:FF:FF:FF:FF:FF VM2 VM1 00:00:00:00:00:00 VM2 VM2 VM2 VM2 VM2 VM2 VM1      
9 VM1 VM3 FF:FF:FF:FF:FF:FF VM3 VM1 00:00:00:00:00:00 VM2 VM2 VM3 VM2 VM2 VM3 VM1      
10 VM1 VM1 FF:FF:FF:FF:FF:FF VM1 VM2 00:00:00:00:00:00 VM2 Gratuitous ARP
11 VM1 VM1 FF:FF:FF:FF:FF:FF VM2 VM2 00:00:00:00:00:00 VM2
12 VM1 VM1 FF:FF:FF:FF:FF:FF VM3 VM2 00:00:00:00:00:00 VM2
13 VM1 VM1 FF:FF:FF:FF:FF:FF VM1 VM3 00:00:00:00:00:00 VM2 VM2 VM1 VM2 VM2 VM1 VM3      
14 VM1 VM1 FF:FF:FF:FF:FF:FF VM2 VM3 00:00:00:00:00:00 VM2 VM2 VM2 VM2 VM2 VM2 VM3      
15 VM1 VM1 FF:FF:FF:FF:FF:FF VM3 VM3 00:00:00:00:00:00 VM2 VM2 VM3 VM2 VM2 VM3 VM3      

 

 

 

そんな感じです。

Nutanix CE構築手順

家のNutanix CEの仮想マシンが壊れたので、再構築してみました。

自分への備忘として、構築時の手順を以下に記載します。

構築してからスクリーンショットをとってないことに気づきましたが後の祭りでした。

構築所要時間は1時間くらいです。

 

■構築環境

 仮想基盤:VMware Workstation Pro

 メモリ:16G

 vCPU:4

 HDD1::200GB(Hot)

 HDD2:500GB(Cold)

 Nutanix Host IP:192.168.197.11

 CVM IP:192.168.197.21

 

1. Nutanix CEのインストール
1-1. Nutanix CE用のimgを下記URLからダウンロードする
 【URL】
  http://next.nutanix.com/t5/Discussion-Forum/Download-Nutanix-CE-Docs-and-Guides/m-p/3188#U3188
1-2. 1-1.で取得したimgファイルを解凍し、ファイル名を「ce-flat.vmdk」に変更する
1-3. Nutanix用のVMDKファイルを下記URLからダウンロードする
【URL】
  https://www.virtuallifestyle.nl/2015/06/nextconf-running-nutanix-community-edition-nested-on-fusion/
 【ファイル名】
  ce.vmdk
1-4. Nutanix用の仮想マシン(以下Nutanix01とする)を作成する
 メモリ:16GB
 プロセッサ:4
 ブート用メディア:ce.vmdk    SATA
 Hot Disk(SSD):200GB   SCSI(0:0)
 Cold Disk(HDD):500GB SCSI(0:1)
1-5. NutanixをBIOS起動する
下記をvmxファイルに追記
vhv.enable = "TRUE"
bios.forceSetupOnce = "TRUE"
1-6. [Boot]->[Hard Drive]より起動ディスクの優先順位をSATA(ce.vmdk)に変更し、再起動する
1-7. Nutanixにログインする
 ユーザ名:root
 パスワード:nutanix/4u
1-8. 下記コマンドを実行し、認識しているディスクを確認する
 【コマンド】
  fdisk -l
1-9. 下記コマンドを実行し、Hot Diskとして認識させたいデバイスを擬似的にSSDとして認識させる
 【コマンド】
  echo 0 > /sys/block/sda/queue/rotational
  cat /sys/block/sda/queue/rotational
1-10. 下記ユーザ名入力し、ログインする
 【ユーザ名】
  install
1-11. キーボードのレイアウトを指定する※1
 【レイアウト】
  jp106
1-12. ネットワーク設定を行う
・Host IP Address
・Host Subnet Mask
・Host Gateway
・CVM IP Address
・CVM Subnet Mask
・CVM Gateway
DNS Server

1ノード構成の場合、下記にチェックを入れる※2
 Create single-node clusrter?

 ※2チェックを入れインストールすると後のクラスタ構築時に失敗することがあるため、チェックを入れない

1-13. EULAを最後まで読んで、「I accept the end user license agreement.」にチェックを入れる
1-14. Nutanixのインストールが終了するまで待つ

 

2. クラスタの構成
2-1. 下記ユーザ名とパスワードを入力し、CVMにログインする
 ユーザ名:root
 パスワード:nutanix/4u
2-2. 下記コマンドを実行し、クラスタを構成する
 【コマンド】
  cluster -s <CVMのIPアドレス>
2-3. 下記コマンドを実行し、DNSサーバを設定する
 【コマンド】
  cp -p /etc/resolv.conf /etc/resolv.conf.default
  cluster add-to-name-servers servers="8.8.8.8"
  cat /etc/resolv.conf
2-4. 下記URLアクセスし、管理コンソール(PRISM)にログインする

 https://192.168.197.21:9440/

2-5. 下記を入力し、パスワードを設定する
  ユーザ名:admin
  パスワード:admin
2-6. PRISM初回ログイン時、「NEXT username」と「NEXt password」を入力し、認証する
  [NEXT username」はNutanix NEXTに登録しているメールアドレス

2-7. [admin] > [Nothing To Do?]をクリックして2048で高得点を出す

 

 Nutanixの入門書が出ていたので思わず買ってしまいました。

まだ、途中までしか読めていませんが思ったよりも詳しいことを書いています。

GW中に読了したいです。

Nutanix Hyper Converged Infrastructure入門

Nutanix Hyper Converged Infrastructure入門

 

 

 

そんな感じです。