雷って幻想的だよね?

宗教:C#、ラノベ好きの戯言です。

今更ながらDockerのチュートリアルをやってみた。

gradleもそうだけど、まず、触ってみる必要があるよね、知ったときに忘れないようにしないと・・・
自分のメモをかねて。

Docker チュートリアル(part1~4)

docker --version

ヘルプは

--help

をつける

実行

docker run hogehoge

イメージリスト

docker image ls --all

サーバーを立てて起動

docker run --interactive --tty ubuntu bash

起動中のDockerの確認

docker container ls --all

デタッチ

docker run --detach --publish 80:80 --name webserver nginx

コンテナのストップ

docker container stop hogehoge

lsのNameをせっとする


ビルド

docker build --tag=hogehoge

ポートを指定して起動

docker run -p 4000:80 friendlyhello

ログイン(イメージのプッシュなどで利用する)

docker login

タグ付け
docker tag イメージ名 リポジトリ名:タグ名
例:

docker tag friendlyhello taketakekaho/get-started:part2

プッシュ

docker push リポジトリ名:タグ名

Dockerのロードバランサーの初期化

docker swarm init

アプリに名称をつけて、Dockerへデプロイする

docker stack deploy -c docker-compose.yml getstartedlab

例:

docker stack deploy -c docker-compose.yml getstartedlab

サービスの一覧(バランサーの一覧???)

docker service ls

サービスタスクの一覧を表示

docker service ps getstartedlab_web

サービスを停止して切り離す

docker stack rm getstartedlab


【環境準備】

↑をするためにはVMの作成が必要 windows10/Hyper-V
Hyper-Vマネージャーを起動
PC名を選択状態にして、メニューの操作から「仮想スイッチマネージャー」を選択
「外部」を選択して「仮想スイッチの作成」を行う
が、「docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1」のコマンドでも良いらしい

・名前を「myswitch」にする。(サンプルコマンドを動かすため)
ネットワークアダプターの共有のチェックボックスがチェックされていることを確認する


配置(Hyper-Vに配信):コマンドプロンプトを管理者権限にする

docker swarm init
↑もしかしたらいらないかも(環境準備していなくてエラーになっていたので・・・)
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm2

VMのリスト表示

docker-machine ls

swarmの初期化と、ノードの追加

docker-machine ssh myvm1 "docker swarm init --help"
docker-machine ssh myvm1 "docker swarm init --advertise-addr マシンのIPアドレス:2376"
※例:
 docker-machine ssh myvm1 "docker swarm init --advertise-addr 192.168.99.100:2376"

docker-machine ssh myvm2 "docker swarm join \

    • token \

<マシンのIPアドレス>:2377"
↑改行はなくすこと

docker-machine ssh myvm1 "docker node ls"

解放する場合は

docker swarm leave

コマンドで行う(2つとも)

クラスター群にデプロイする
「docker-compose.yml」を作成したフォルダに移動して、以下のコマンド行う(Part3で作ってるはず)

docker-machine env myvm1

※ポート番号には注意!(後で開かなくて???となってたので)

なんかサンプルと違うけど以下のコマンドを実行する
@FOR /f "tokens=*" %i IN ('docker-machine env myvm1') DO @%i
※このコマンドは一つ前のコマンドの実行結果で表示されている内容です。
これでアクティブになった。

デプロイする

docker stack deploy -c docker-compose.yml getstartedlab
docker stack ps getstartedlab

または、ログインして持ってくる

docker login
docker stack deploy --with-registry-auth -c docker-compose.yml getstartedlab

docker-machine ls
でIPを確認して、ブラウザで開く
※ポートはそのままの流れで来ていると4000番なので注意

削除

docker stack rm getstartedlab

開始と停止

docker-machine stop myvm1
docker-machine start myvm1
docker-machine restart myvm1

参考:
https://qiita.com/taketakekaho/items/62aee171c942af323b4c
↑途中で諦めてる・・・残念

※以下のサイトの<>でくくられているところは置き換え前提の箇所とのこと(by:https://github.com/docker/machine/issues/4303
https://docs.docker.com/get-started/part1/
https://docs.docker.com/get-started/part2/
https://docs.docker.com/get-started/part3/
https://docs.docker.com/get-started/part4/
swarmに関して
http://docs.docker.jp/swarm/overview.html
docker stackに関して
https://medium.com/@Akitsuyoshi/docker-%E3%81%AEstack%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6-f58db0202673

GoLandの日本語化

忘れないようにメモ
※環境:Windows10

※以下のToolboxを入れていると、公式通りで良いかも・・・
GoLandのインストールと起動 - ヘルプ | GoLand


まず、GoLandをインストール。

JetBrains 製品の日本語化マニュアル - IntelliJ IDEA

より、WindowsのPleadesの日本語化ファイルを取得する

http://ftp.jaist.ac.jp/pub/mergedoc/pleiades/build/stable/pleiades-win.zip
多分これ。

で、解答すると中に、
「setup.exe」が存在する。

ので、これを起動する。

そうすると、アプリの選択が表示されるので、ディスクトップに作成されているショートカットから、
「ファイルの場所を開く」
を選択し、そのフォルダアドレスを
setup.exeのアプリ設定のダイアログに打ち込んで、対象として「goland64.exe」を選択する。
そうするとそれ以外の項目も自動ではいるのでそのまま進める。

完了すると、日本語化されていた。

・・・公式さん、説明が冗長ではありませんか・・・・
dotnetCoreみたいに簡潔でいい気がします(すっごい簡潔化されてるけど・・・)
(ついでに、Toolboxの中にないし、というか、Toolboxのフォルダがないし・・・びっくりしたよ・・・)

以上です。

追記:2019/03/04

一度Uninstallしてから、Toolboxでインストールしてファル構造を以下にして実行したら、動いた。

【構成】

test
└hello.go

【hello.goの中身】

package main

import "fmt"

func main(){
fmt.Printf("Hello, world\n")
}

コンソールに以下みたいなのが表示される

API server listening at: 127.0.0.1:51031
Hello, world

Debugger finished with exit code 0

以上。
なぜ前回だめだったのかはよくわからない。
日本語化はおんなじようにしてOKでした。

ちょっと、掃除の概念が変わるかもしれない、ハンディ掃除機の紹介

概要:EVOPOWER ハンディクリーナー | Shark(シャーク)

これを買いまして、
えぇ、16000ぐらいのですね!(電池2個もいらない)

買ってからの動きですが、
・ストレッチをするためにひいてあるマットレスにてストレッチ・筋トレをすると、、、ゴミが見えますよね?
 その、見えた瞬間に、このハンディ掃除機があると、さっと掃除できてしまうんです。
・PCで遊んでいるときに、テーブルや、キーボード・・・時々、ゴミが気になりますよね?
 その、見えた瞬間に、このハンディ掃除機があると、さっと掃除できてしまうんです。(コピペが楽
・部屋を出た瞬間・出る直前の埃が気になったら・・・
 その、見えた瞬間に、このハンディ掃除機があると、さっと掃除できてしまうんです。(コピペが楽

つまり、部屋の手を伸ばしてもいい範囲にあると、掃除の意識が高まると思うのです。
値段は高いですが、専有量が非常に少なくて、とてもよいです。


もちろん、問題点もあります。
量販店の定員さんはそれを認知していませんでした。

・内部のフィルターの清掃(HPにも乗ってないし、ショップにも交換品が乗ってない)
 すごく悲しいですよね?


それ以外は、かなり良いです。
買ってから2週間以上使ってますが、ちょっと気になったところにちょびっと当てるという使い方をしていて、
9割の日で電源ボタンを押しています。

数秒ですが、ちょこちょこ掃除ができてとても、よいと思います。

部屋の埃が気になる方にはおすすめしたいです。(潔癖ではなく、なんか気になるけど面倒と感じる方に対してです)

いいぇーい!

M.2が想像以上に早かった。

Androidのプログラミングと、ゲームの読み込み速度向上のため、ついでに5G超えたかったため、PCのリニューアルをした。

以下、変更したパーツである。

GIGABYTE Z390 AORUS ELITE (Z390 1151 ATX)
Intel Core i7 9700K BOX
G.SKILL F4-3200C16D-32GTZSW (DDR4 PC4-25600 16GB 2枚組)
Sumsun 970 PRO M.2 MZ-V7P512B/IT
虎徹 MarkII  SCKTT-2000

※電源は前勝ったやつをそのまま。


M.2を実際に利用すると、起動が遅くなっていたのが、何だったのかというほど早くなった。
具体的には、電源押してからだと、おっそいなーと感じてとりあえず電源入れてから何かしていたのが、
電源押すと、椅子に座ってふぅ~ぐらいで立ち上がるので、すごくうれしいし、SSDの職場のPCが遅すぎてつらい・・・

また、クリーンインストールしたが、VisualStudioなど、インストールに時間がかかると思っていたら、アッサリインストールされ、想像以上に待ち時間がなかった。

さらに、Androidエミュレータが一瞬で立ち上がるようになった。
ハードウェアアクセラレーターを利用できるからかもしれないが、、、マジで意味不明。ひゃっほい!

この速度を体験すると、クリーンインストールしたのも大きいかもしれないが、すごく買ってよかった。

ストレスのないPCライフはやはりよいものだ。

もし、購入を考えている人がいたら参考にどうぞ。

surfaceでPDFを縦書きで読みたいときのアプリと設定

なろうの小説を縦書きPDFで読みたくて仕方がない人間ですが、今までいいアプリに出会えず、つらかったです。

今回、良いのに出会えたので、ご紹介です。

Perfect PDF Reader
soft Xpansion Productivity

リンクが張れなかったのがとても残念・・・

必須設定は、オプションの
ビュー
・Switch fullcreen mode together with reading mode

これをOFFにしないと、常にページの先頭に戻る(バグかもしれないけど)

必須以外では、
コントロール

・ページの情報を表示(OFF)※進行状況が見えるので、それが見たい人には必要
・拡大縮小ボタン(OFF)使わない
・ナビゲーションボタンを自動表示(ON)
・ナビゲーションボタンを自動非表示(OFF)※表示されていないと余分に一回タップしないといけないため

レンダリング

・ページキャッシュ(大)※気分

後は適当に変更するのが良いと思っています。


以上です。
迷える方がおりましたら参考になるとうれしいです。

マザボのM.2を利用した際のSATAの接続制限「Z390 AORUS ELITE」

購入予定の「Z390 AORUS ELITE」のM.2を使いたく、その際、SATAが制限を受ける可能性があると、
以下の記事で知ったので、調べてみた。
M.2 SSDとは?メリットやデメリットを解説。オススメの製品も紹介

結果は、2か所あるM.2のスロットの片方のみ(Aのみ)なら阻害なし、2個使うと、二つ死ぬようだ。
※PCIeの場合のみ

Z390 AORUS ELITE (rev. 1.0) | マザーボード - GIGABYTE Japan

の日本語P15の下の図参照ください。

Xamarin.AndroidでSQliteの中身を確認する(Dropbox経由)

以前、エミュレーターからデータをとって、中身を確認していたが、Dropboxを経由するほうが、バージョン間の互換を気にしなくても利用できたため、ご紹介する。

※以下は、Clickイベントで処理されることを想定しているが、その処理は、デバグ時のみ利用できる想定である
 理由としては、リリース時は、デバグ状態ではできないためで、ユーザへの影響がありえないと考えられるためである。

Dropboxへの保存処理

		public async Task UploadSqliteDB(string path)
		{
			using (var dbx = new DropboxClient(HiddenData.accessTokenForDropbox))
			{
				string dbFilePath = path;

				Console.WriteLine("アップロード:SQLite");
				try
				{
					
					using (var data = new StreamReader(dbFilePath))
					{
						var updated = await dbx.Files.UploadAsync(
							"/data"+DateTime.Now.ToString("yyyy_MM_dd")+".db3",
							WriteMode.Overwrite.Instance,
							body: data.BaseStream);
						Console.WriteLine("WriteLine:Upload");
						Console.WriteLine("Saved " + dbFilePath);
					}
				}
				catch (Exception e)
				{
					Console.WriteLine("エラー:" + e);
				}
				Console.WriteLine("アップロード-END");
			}

		}

Clickイベント

		/// <summary>
		/// DBへのパスを取得する
		/// </summary>
		/// <returns></returns>
		public string GetPath()
		{
			return dbContext.DatabasePath;
		}

		private async void SaveSqliteDataOnClick(object sender, EventArgs e)
		{
			var dropboxControl = new dropBoxControl();
			var context = Common.ConnectDB.GetDBContext();
			await dropboxControl.UploadSqliteDB(context.GetPath());
		}

※dropBoxControlは「public static SQLiteConnection dbContext;」を保存しているとする。