Docker(17.12.0)をもう少し真面目に弄って見た
前回 docker run -it ubuntu /bin/bash
を叩いた後の事。
別シェルを開いて、今度は docker ps
でプロセスを眺めてみた
bash が普通に動いているのが見えるわけだ。
まずはファイルを作成して見る。
別タブで差分を表示してみる。
普通に Ctrl+D
で終了して再起動すると、当然消えてしまい再起動後には存在しない。
それでは続きができないので、現在の状況を保存する。
XXXXXX:~ azalea$ docker commit mystifying_beaver test/changed sha256:8de0aa05cb311ad331dfe64598359e3c927245d247994bc578e65a976854cdcc XXXXXX:~ azalea$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE test/changed latest 8de0aa05cb31 10 seconds ago 112MB ubuntu latest 0458a4468cbc 2 weeks ago 112MB nginx latest 3f8a4339aadd 7 weeks ago 108MB hello-world latest f2a91732366c 2 months ago 1.85kB
ubuntu
イメージをちょこっとだけ変えた test/changed
ができた。
今のシェルを終了して、test/changed
で起動してみる。
root@9f0b92b0e617:/opt# exit XXXXXX:~ azalea$ docker run -it test/changed /bin/bash root@c619799653fe:/# ls /opt/ example.txt root@c619799653fe:/#
これで色々いじりやすくなった。
Docker(17.12.0)をインストールしてみた
事の始まりは先月末の会社の勉強会。
色々別の事をしていて中々手を出せなかった物だけど、使い捨ての実行環境を簡単に作れるという事でやって見ることにした。
教科書はこれ
- 作者: 吉岡恒夫
- 出版社/メーカー: マイナビ出版
- 発売日: 2016/05/30
- メディア: Kindle版
- この商品を含むブログを見る
それまでぶっちゃけ Vagrant + VirtualBox で作ってたのだが、こっちの方が簡易そうだったので(汗
最初に Docker をダウンロード&インストール。
起動まではインストーラにしたがっておけば OK 。
途中で Docker アカウントを作成するかどうか聞かれるので、無視しても作ってもいい。
僕は作った。
あと、起動後のメニューから、Kitematic というアプリもリンクがあるので、それもインストールした。
Docker はサーバクライアント方式のアプリケーションで、サーバ(デーモンとかサービスとかいう奴ら)を裏で起動しておいて、クライアント(コマンドラインや操作インターフェースなど)で弄る形式。
とりあえず Docker コマンドで
docker run hello-world
曰く、docker コマンドでアプリケーションなり環境なりを実行するのだが、ローカル上にその定義がなければ、Dockerhub というリポジトリからダウンロードしてインストールしてくれるのだとか。
そして実行すると、ローカル常にその定義が残る。
これは、Kitematic を起動すると見れる。
この←のメニューダブルクリックで起動できる。
うむ便利。
そして何がいいって、表示されている docker run -it ubuntu bash
コマンド。
これだけで Ubuntu が起動してシェルが叩ける!
マジか?
何がいいって、VM ではなさげなので超軽量に Ununtu が弄れるって事だ。
コマンド叩いてイメージのダウンロードさえ完了すれば、1秒かからない。
本気で開発環境こっちに移行したくなってくる…
Kotlin で SpringBoot (2.0.0.M6) で DI した時のメモ
Java では普通に使ってたのだけど、Kotlin で試して見たメモ。
サンプルは単純に設定を読むだけのコード.
package net.white.azalea.todo.utilities.security import org.springframework.boot.context.properties.ConfigurationProperties import org.springframework.stereotype.Component @Component @ConfigurationProperties(prefix = "crypt") class CryptConfig(var secret: String = "value")
地味にハマったのが下記。
- コンストラクタ引数に初期値を与えないと、なぜか Spring が「引数入りのコンストラクタみつかねーよ」とゴネて落ちる
どうやら Kotlin の生成するコンストラクタをコンストラクタとして認識できない模様。
そのため、初期値を与えてクラスフィールド化してやれば、コンストラクタインジェクションではなく、フィールドインジェクションとして辛うじて認識してくれる。 - 上記がわかると、var も指定してやらないと「setter ねーよ」といってコケる。
- 試した感じ、コンストラクタインジェクションを諦めて、クラス変数に
@Inject
するくらいが一番分かりやすい。
まだまだ kotlin での運用は微妙臭い印象。
個人的に、Kotlin で Spring はやらなくていいかなという気持ち。
わんくま勉強会(109回メモ:終了まで随時更新)
PowerShell とコマンドライン
- はるにゃさん
歴史的な話。
2003 年から開発開始、2006 年公開、Windows10 の Creators Update で Win+R のデフォルトシェルになった。
コマンドプロンプトは、そもそも DOS からずっと動いてた。
拡張されてきたくせに実は仕様書がない(過去の仕様があるにはある)。
バッチファイルの正式には cmd が正しく、bat は下位互換でのこされた…はずがずっと生きてる。
exe/com が実行バイナリだが、com はもう殆ど残ってない。
dir /s /b g:¥Windows¥System32¥*.exe
とかで探す。
- if 文と比較演算が大きく変化
DOS だと基本コマンド(シェル系)と、実行コマンド exe に分かれる。 シェルコマンドは、if - else しか書けない、要するに elseif がないし、利用可能な比較演算子が==, EQU, NEQ,GER, GEQ, LES, LEQ
くらい。
対して、PS だと-eq, -ne, -gt, -ge, -lt, -le
と意味が分かりやすくなった。 - DOS シェルの FOR が死ぬほど分かりづらかったが、PS で foreach (コマンドラインだと For-Each のみ)で書ける。
- pause 消えた
- goto / call / exit この辺りは Function に変わった
call の代わりに Start-Process で扱うなど
ただ、パワーシェルスクリプトは署名がつかないとデフォルトでは実行できない。
Set-ExecutionPolicy
で実行ポリシー指定する事で先ずは実行できる。
パワーシェルは言語寄りなので、細かい事できるようだ。
ただし、起動速度はどうあがいても DOS の方が早い、現状では DOS から PowerShell を呼び出して利用するのがオススメ。
LT
- Marp 紹介
- 5分でわかる MR
MR の定義説明。
RDB と数学
- うづきさん
正規形さえしていない非正規形データとは、以下のような感じ。
- カラムにCSVとか複数の値
なんというか蕁麻疹湧きそうなクソデータである。
(発表が死ぬほど香川推しなんだが(汗)
ここから第四正規形まで…(面倒なので略。知らない人は調べて)
RDB はリレーションによる 1:N 関係のデータを作る。
これは n 項関係という数学モデルとマップできる。
N項関係(二つ以上の直積集合の部分集合)、直積集合(単純列挙)という事らしい。
直積集合 を S1 = (a, b), S2 = (c, d)
として、S1 x S2 = (a, c), (a, d), (b, c), (b, d)
となり、この部分集合 (a, d), (b, c)
N 項関係というらしい。
この条件で見ると
- 第一正規形、様々な種類のデータ(名前と職業等)がごちゃ混ぜとなっているものは、単純値と呼ぶ
ある集合値の特定組み合わせが決まると、他の値も決定できるというような従属性を関数従属性という。
例えば、郵便番号が決定すれば市区町村まで断定できる。要するに郵便番号に対して都道県市区町村名は関数従属なわけだ。
こうした関係が保たれているのが第3正規形。
DB で言えばプライマリキー決まれば、値がが取れると言える。
多値従属性…(時間がない
代数学の話題
- IIJIMAS さん
集合の定義、基本の話から開始。A={x: x: 正整数}
d:X → Y
X に対してただひとつの Y が対応する物を写像。
また、x ≠ z => f(x) ≠ f(z)
の時単射という。
y∈Y
において、f(x) = y
が言える時、 f を X から Y の上への全射という。
直積: X,Y の要素に対して (x,y) という順序づけられた組み合わせ全体の集合を直積(XxY)という。
二項演算:ρ: SxS → S
を二項演算という。
群:含まれる任意 2 要素でいくつかのルールが成り立つ 整数Z、有理数Q、複素数C、実数R
環:足し算で前後可換、乗法で結合律 (ab)c=a(bc)
が成り立つ。分配律a(b+c) = ab+ac
が成り立つ。
…数学記号が入力しきれない…
k-means を紐解く
- XENO@小柴
クラスタリングアルゴリズムのひとつ。
つっても、分かりやすい話は、平面にデータマップして、大まかに「K 個グループあるはずだ!」という想定の元、画面上に K 個の移動可能なポインタをランダムに置く。
で、ポインタと各要素の平均距離を計算していって、ポインタの位置をずらしていき、移動しなくなったら完成。
で、ポインタから見て近い要素は同一グループとみなすと…
Marp がやたら便利な件
会社で業務外に勉強会を開きたくなったのでその資料
誤解を招きそうな表現ならどこかにありそう…。 指摘あると助かるかな…
SpringBoot2 でたお
今気づいた。
見てさわればわかるけど、SpringBoot2 の名前がある。
対応しているバージョンは Spring 5 らしい。
公式を表面だけなぞっても Reactive Web に対応したらしい。
非同期万歳!
というのは多分自分みたいなオタクだけ…。
悲しいけど、非同期をきちんと理解できるプログラマは案外少ないのです。