2021/01,江端さんの忘備録

私は、3年くらい前から、私のプログラムの導師であるところのSさんから「"Go言語"こそが、江端さんが必要としているものです」と言われ続けていました。

For about three years now, my program guru, Mr. S, has been telling me that "Go language" is what Mr. Ebata needs.

しかし、私は、なかなか使用に踏み切れませんでした。

However, I was not able to start using it.

その理由を、建前で言えば「時間がない」で、本音で言えば「新しいことを覚えるのは辛い」です。

The reason for this, on the face of it, is "I don't have the time," and the real reason is "It's hard to learn new things.

しかし、今は、戦後最大級の国難「コロナ禍」による在宅勤務。

But now, I am working at home due to the "Corona disaster," one of the biggest national disasters of the postwar era.

―― この機会を逃したら、はっきりいって『バカ』

"If I miss this opportunity, I are clearly a 'fool'"

と、後になって、「自分で、自分を責めることになりそう」なので、今、一生懸命勉強しています。

I'm afraid that later I'll blame myself for what I've done, so I'm studying hard now.

-----

ところで、私がこれまで愛用してきたC/C++という言語は、コンピュータアーキテクチャにベタベタの「超低級言語」です。

By the way, the language I have been using, C/C++, is a "very low-level language" that is closely related to computer architecture.

ですので、超高速で、汎用性が高いです。

So, it is super fast and versatile.

その代わり、その言語表記の「愛想の悪さ」においては、他の言語の追従を許しません。

Instead, it is unrivaled in the "unfriendliness" of its language notation.

C/C++は、コンピュータ(正確に言うとUNIX OS)と同時に生まれた1970年ごろに生まれたロートル言語ですので、最新のWeb技術なんぞには、全く役に立たないといってもよいです。

C/C++ was born around 1970, at the same time as the computer (UNIX OS, to be precise), so it is O.K. to say that it is completely useless for the latest web technologies.

それでも、殆んどのコンピュータシステムのプラットフォーム、特に組み込み系マイコンが、C/C++でプログラミングされているのは事実です。

Still, it is a fact that almost all computer system platforms, especially embedded microcontrollers, are programmed in C/C++.

それはさておき。

Aside from that.

-----

最近になって、やっと"Go言語"の凄さが分かってきました。

Recently, I have finally come to understand the greatness of the "Go language".

「私の作ったシミュレータで、10万人分のスレッド(化したオブジェクト)が最後まで動き続けた」という事実に、感動しています。

I was impressed by the fact that 100,000 threads (objects) kept running until the end in my simulator.

『7000万以上のスレッドが動く』ということは、話で聞いていましたが、「聞く」のと「実際に自分で動かす」のでは、やはり違います。

I had heard that "more than 70 million threads are running", but there is a difference between hearing about it and actually running it by myself.

もしかしたら、日本国民全員のエージェントとした、「コロナ感染シミュレータ」が作れるかもしれません ―― 私の自宅のパソコンごときで。

Maybe I can make a "corona infection simulator" with all Japanese citizens as agents -- on my home computer.

-----

西浦先生のような統計的なアプローチに、私の考えているようなエージェントアプローチが加われば、きっと役に立つと思うんです。

I think it would be useful if the agent approach, which is what I am thinking of, is added to the statistical approach of Dr. Nishiura's.

ただ、このようなエージェントアプローチは、国民全員分のペルソナと環境を設定しなければなりませんので、めちゃくちゃ時間がかかることも明かです。

However, it is also clear that this kind of agent approach is insanely time-consuming because you have to set up personas and environments for the entire population.

まあ、もしできるとしても、完成は10年後くらいでしょうか ―― 10年後に、この災厄がどうなっているかは分かりませんが。

Well, if I can do it, it will be completed in about 10 years -- I don't know what this disaster will be going in 10 years.

2021/01,未分類,江端さんの技術メモ

この問題、

Step 4/7 : WORKDIR /go/hitachi_ride_hailing_go
---> Using cache
---> 62e20b49fae8
Step 5/7 : COPY . .
ERROR: Service 'app' failed to build: Error processing tar file(exit status 1):write /go/xxxxx_ride_hailing_go/static/fonts/Noto Sans Regular/12800-13055.pbf : no space left on device

は、

ディスクスペースを開けるのに"docker system prune"は便利だが、濫用しないこと。docker-compose buildが再び上手く動くという保障はないぞ

で潰した。

しかし、

go: finding github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f
go: finding github.com/tidwall/match v1.0.1
go: error loading module requirements
ERROR: Service 'app' failed to build: The command '/bin/sh -c apk add --no-cache  git g++ curl ? && go mod download ? && GOOS=linux GOARCH=amd64 go build cmd/server/main.go ? && curl -L https://github.com/golang-migrate/migrate/releases/download/v4.13.0/migrate.linux-amd64.tar.gz | tar xvz ? && mv migrate.linux-amd64 /usr/local/bin/migrate' returned a non-zero code: 1

が、どうしても取れない。(全部のコマンドをバラバラにして実行する、までした)

何時間も格闘しているうちに、同じディレクトリにある、go.modの記載内容ではないか、と疑い始めたが、

module codes.xxxxx.co.jp/xxxxx/xxxxxx_ride_hailing_go
go 1.12
require (
        github.com/dgrijalva/jwt-go v3.2.0+incompatible
        github.com/go-chi/chi v4.0.2+incompatible
        github.com/go-chi/jwtauth v4.0.2+incompatible
        github.com/gomodule/redigo v2.0.0+incompatible
        github.com/gorilla/websocket v1.4.0
        github.com/jmoiron/sqlx v1.2.0
        github.com/kawasin73/htask v0.4.1
        github.com/lib/pq v1.1.1
        github.com/rs/xid v1.2.1
        github.com/tidwall/boxtree v0.0.0-20180928224827-327de8d774d7 // indirect
        github.com/tidwall/geojson v1.1.3
        github.com/tidwall/gjson v1.2.1
        github.com/tidwall/match v1.0.1 // indirect
        github.com/tidwall/pretty v0.0.0-20190325153808-1166b9ac2b65 // indirect
        github.com/tidwall/sjson v1.0.4 // indirect
        github.com/twpayne/go-geom v1.0.4
        github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect
        github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
        github.com/xeipuuv/gojsonschema v1.1.0
        github.com/xeonx/geodesic v0.0.0-20150531212225-499ffb552e21
        github.com/xeonx/geographic v0.0.0-20150531172044-7bc7968bc5f9
        golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f
        gopkg.in/guregu/null.v3 v3.4.0
)

の中のどれが原因か(それも1つとは限らない)をどうやって見つければいいのか、分からない。

で、さっき、なんだか分からない内に、以下の操作をしてしまったのだけど

ubuntu@ip-57:~/codes/hailing_go/docker/app$ go mod init m
go: creating new go.mod: module m

を見ているうちに、同じディレクトリにm.modというファイルができていることに気がついた。

その中身はこんな風になっていた。

go 1.13
require (
     github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect
     github.com/go-chi/jwtauth v4.0.4+incompatible // indirect
)
先程のリストと比較してみたら、
github.com/go-chi/jwtauth v4.0.2+incompatible
github.com/go-chi/jwtauth v4.0.4+incompatible // indirect
が違っていたので、この部分だけを変更して、再度 docker-compose buildを実行してみた。
go: finding github.com/twpayne/go-polyline v1.0.0
go: finding golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2
go: finding golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a
go: finding golang.org/x/text v0.3.0
go: finding gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0
 % Total % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100  652 100  652 0  0  2069 0 --:--:-- --:--:-- --:--:-- ?2063
0 16.1M  0  0 0  0  0               0 --:--:-- ?0:00:01 --:--:-- ? ? 0./migrate.linux-amd64
100 16.1M 100 16.1M 0  0 3974k 0 0:00:04 0:00:04 --:--:-- 5426k
Removing intermediate container 35c328df0ab6
---> e8cf5804a190
Successfully built e8cf5804a190
Successfully tagged xxxxxx_ride_hailing_go_app:latest
やっと通ったー、長かったー
ほとんどラッキーだけでdocker-compose buildに成功したー
Go moduleは、勝手にバージョン上げるんじゃねーーー
以上

2021/01,江端さんの忘備録

2階の自分の部屋でDockerのポーティングに四苦八苦しているところに、1階のリビングの長女から電話がかかってきました。

While I was struggling with porting Docker in my room on the second floor, I received a call from my senior daughter in the living room on the first floor.

『NetFlixでパパのお勧めのコンテンツは何?』

"What's your favorite content on NetFlix?"

内容が簡単で、感動系で、短いもの、という注文をつけられました。

I was given an order that the content should be simple, touching, and short.

-----

江端家では、NetFlixの1月だけ契約というのを繰り返しています。

In the Ebata household, we have repeatedly signed up for NetFlix for only one month.

連休などの期間のある月だけ契約するのです。

I only sign up for months that have a period of time, such as consecutive holidays.

で、今月の契約期限があと数日になっており、現在、「NetFlixの駆け込み需要」が発生しております。

So, with this month's contract expiring in a few days, we are currently experiencing a "NetFlix rush".

-----

―― それでは 、アニメ『宇宙よりも遠い場所』を勧める

"Then I recommend a anime "A Place Farther Than the Universe""

内容について問われたので、"高校生"、"女の子"、"南極"、などのキーワードを挙げたら、嫁さんが渋い顔をしていました。

When asked about the contents of the book, I mentioned keywords such as "high school students," "girls," and "Antarctica," and my wife looked at me with a reluctant expression.

しかし、

However, I said to them,

『特に、第12話は、バイオレットエバーガーデンの"7話"と"10話"に匹敵する内容であることを保証する』

"In particular, I can assure you that episode 12 is comparable to episodes 7 and 10 of Violet Evergarden"

『もし、時間の無駄だったと思ったら、5万円支払ってもいい』

"If you think it was a waste of time, I'll pay you 50,000 yen.

と私が言い切ったこともあって、しぶしぶ見出したようです。

My wife reluctantly started watching it, because I assured her that I would do so.

-----

この賭け、私が勝つことは、もう分かっています。

I already know that I will win this bet.

2021/01,江端さんの技術メモ

"docker system prune"は濫用しないこと。docker-compose buildが再びビルドできるという保障はないぞ!
怖い思いをしたので、戒めの為に記載。
---> Using cache
---> 62e20b49fae8
Step 5/7 : COPY . .
ERROR: Service 'app' failed to build: Error processing tar file(exit status 1): write /go/XXXXX_ride_hailing_go/static/fonts/Noto Sans Bold/64256-64511.pbf: no space left on device  
てなものがでてきて、ディスクが足りないと言われました。
「そんなはずがない」と思いました。
動いているシステムと比較して、その倍の容量のEC2を選んだから。
で、調べてみると、どうもDockerの残骸たちが悪さをしているようでした。
"df" で調べてみると、ルートが93%ほどの使用率となっていたのですが、

を、参考にして、"docker system prune"を実行してみたところ60%以下になり、上記の問題は解決しました。

別のAWSでも試してみました。

現在、64%です。

"docker system prune"を実行

実行後は39%になっていました。

で、その後、悲劇が発生した・・・ docker-compose buildが正常終了しなくなる、という悲劇が。

2021/01,江端さんの技術メモ

助けて頂いた資料: 

 Proxy環境でdockerを外に繋ぐ方法 

今、困っていること

Goが動かん。下記(1)~(4)をやっても、

package main

import "fmt"

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

以下のエラーが出てきて取れない。(なんだこれ?)

$ go run hello.go
go: github.com/go-chi/jwtauth@v4.0.2+incompatible: reading github.com/go-chi/jwtauth/go.mod at revision v4.0.2: unknown revision v4.0.2
このメージを読んで頂いたプログラミングの師匠のSさんに、"go mod vendor" を試すようにアドバイスさました。以下、その挑戦の経緯を記載します。
ubuntu@ip-57:~/codes/hailing_go/docker/app$ go run hello.go
go: github.com/go-chi/jwtauth@v4.0.2+incompatible: reading github.com/go-chi/jwtauth/go.mod at revision v4.0.2: unknown revision v4.0.2
やっぱりダメかなぁ(ちなみに、~/hello.go なら、サクっと動く)
ubuntu@ip-57:~/codes/hailing_go/docker/app$ go mod vendor
go: github.com/go-chi/jwtauth@v4.0.2+incompatible: reading github.com/go-chi/jwtauth/go.mod at revision v4.0.2: unknown revision v4.0.2
これもダメかぁ
ubuntu@ip-57:~/codes/hailing_go/docker/app$ go mod download
go: github.com/go-chi/jwtauth@v4.0.2+incompatible: reading github.com/go-chi/jwtauth/go.mod at revision v4.0.2: unknown revision v4.0.2
(手あたり次第モードになってきた・・・)
ubuntu@ip-57:~/codes/hailing_go/docker/app$ go mod init
go: cannot determine module path for source directory /home/ubuntu/codes/hailing_go/docker/app (outside GOPATH, module path must be specified)
Example usage:
'go mod init example.com/m' to initialize a v0 or v1 module
'go mod init example.com/m/v2' to initialize a v2 module
Run 'go help mod init' for more information.
(手あたり次第モードが進む)
ubuntu@ip-57:~/codes/hailing_go/docker/app$ go run hello.go
go: github.com/go-chi/jwtauth@v4.0.2+incompatible: reading github.com/go-chi/jwtauth/go.mod at revision v4.0.2: unknown revision v4.0.2
やっぱりダメかぁ
ubuntu@ip-57:~/codes/hailing_go/docker/app$ go mod github.com/go-chi/jwtauth/go.mod
go mod github.com/go-chi/jwtauth/go.mod: unknown command
そりゃ、だめだよなぁ
ubuntu@ip-57:~/codes/hailing_go/docker/app$ go mod verify
go: github.com/go-chi/jwtauth@v4.0.2+incompatible: reading github.com/go-chi/jwtauth/go.mod at revision v4.0.2: unknown revision v4.0.2
ubuntu@ip-57:~/codes/hailing_go/docker/app$ go mod why
go: github.com/go-chi/jwtauth@v4.0.2+incompatible: reading github.com/go-chi/jwtauth/go.mod at revision v4.0.2: unknown revision v4.0.2
ubuntu@ip-57:~/codes/hailing_go/docker/app$ go mod init m
go: creating new go.mod: module m
あれ、ググったコマンドを適当に入力したら、"m"というモジュールができてしまったらしい。変なモジュール作ってしまって、やばくないか?
ubuntu@ip-57:~/codes/hailing_go/docker/app$ go run hello.go
go: finding github.com/go-chi/jwtauth v4.0.4+incompatible
go: downloading github.com/go-chi/jwtauth v4.0.4+incompatible
go: extracting github.com/go-chi/jwtauth v4.0.4+incompatible
go: finding github.com/dgrijalva/jwt-go v3.2.0+incompatible
go: downloading github.com/dgrijalva/jwt-go v3.2.0+incompatible
go: extracting github.com/dgrijalva/jwt-go v3.2.0+incompatible
Hello world
あれ、モジュールが自動的にインストールされて,"hello.go"が動いてしまった・・・
この話、実は続続きがある・・・
https://wp.kobore.net/%e6%9c%aa%e5%88%86%e9%a1%9e/post-2156/

(とりあえず、ここまで)

試行錯誤で分った事項

(1)/etc/apt/apt.conf を作る

Acquire::http::Proxy "http://12.34.56.789:8080";
Acquire::https::Proxy "http://12.34.56.789:8080"; // (×https://)
Acquire::ftp::Proxy "ftp://12.34.56.789:8080";

(2)/etc/systemd/system/docker.service.d/http-proxy.confを作る

/etc/systemd/system/docker.service.d/http-proxy.conf を力づくで作った(最初はなかった(みたい))。

修正前:

[Service]
Environment="HTTP_PROXY=http://12.34.56.789:8080/" "HTTPS_PROXY=https://12.34.56.789:8080" "NO_PROXY=localhost,127.0.0.1,.12.34.56.789"

修正後:

[Service]
Environment="HTTP_PROXY=http://12.34.56.789:8080/" "HTTPS_PROXY=http://12.34.56.789:8080" "NO_PROXY=localhost,127.0.0.1,.12.34.56.789"

(なんのことはない、HTTPS_PROXY の "https:"→"http:" としただけ。ただし、これは、個々の環境に依存する問題だと思う)

(3)関係のありそうな"Dockerfile"に片っ端から、以下を書き込む(関係ありそうなファイルは2つ。hitachi_ride_hailing_go/docker/postgis-pgrouting/Dockerfile
hitachi_ride_hailing_go/docker/app/Dockerfile)

ENV http_proxy http://12.34.56.789:8080
ENV https_proxy http://12.34.56.789:8080

(一番最初の”RUN”の前に書き込んでおくとよい)

(4)シェルに以下を書き込んでおく(設定方法は後で調べる)

export http="http://12.34.56.789:8080"
export https="http://12.34.56.789:8080"

 

2021/01,江端さんの忘備録

「働く細胞」というマンガが、これほど流行っているのに、

With a manga called "Working Cell" being so popular,

「働くコンピュータ」というマンガが登場してこないのは何故だろう ―― と考えています。

I've been wondering why there hasn't been a "Working Computer" manga.

-----

『コンピュータが働くのは、当たり前だろう』というのであれば、『細胞が働くのだって、当たり前だ』と反論します。

If you say, "It's natural for computers to work," then I would argue, "It's natural for cells to work, too.

しかし、細胞の擬人化に、これほどの魅力を感じるのは、

But what makes anthropomorphic cells so appealing,

言うまでもなく、原作者の方の才能と努力のたまものですが ―――

Needless to say, it is the result of the talent and efforts of the original author

細胞の持つ多様な能力や、他の細胞との関係性に、無数のバラエティがあるからで、その中にドラマを見い出せるからでしょう。

there are countless varieties in the various abilities of cells and their relationships with other cells, and I think this is because we can find drama in them.

-----

比して、コンピュータは、基本的にプログラムに命じられたことを、実施するだけの機械です。

A computer, on the other hand, is basically just a machine that does what the program tells it to do.

その動作には、原則として例外がありません(エラービットが発生しても、自己修正されます)。

In principle, there are no exceptions to its behavior (even if error bits occur, they are self-correcting).

プログラムの指示通りにしか動かない機械に「知能が発生する」という考え方が ―― やっぱり私には理解できないのです。

I still don't understand the idea of "intelligence" occurring in a machine that only works according to the instructions of a program.

-----

ですので ――

So...

だれか「働くコンピュータ」というマンガを描いて、私を納得させてくれないかなぁ、と思っています。

I'm wondering if someone could draw a manga called "Working Computers" to convince me to do so.

2021/01,江端さんの技術メモ

なぜ、動き出したのか分からないので、historyを残しておく

1 ;s
2 pwd
3 ls
4 ;
5 :
6 pwd
7 ls
8 whoami
9 pwd
10 ls
11 pwd
12 ls
13 ping kobore.net
14 ls
15 pwd
16 ls
17 pwd
18 ls
19 sudo apt-get update
20 sudo apt-get install
21 sudo apt-get upgrade
22 ls
23 ls
24 ls -al
25 pwd
26 ls
27 wd
28 ls
29 pwd
30 ls
31 exit
32 ls
33 pwd
34 ls
35 sudo apt-get install
36 sudo apt-get update
37 ls
38 pwd
39 ls
40 pwd
41 ls
42 sudo apt-get install emacs
43 sudo apt-get install vim
44 emacs
45 sudo apt-get install emacs-nox
46 emacs-nox
47 sudo apt install emacs-nox
48 ping kobore.net
49 ping amazon.com
50 ls
51 pwd
52 ls
53 gcc
54 pwd
55 ls
56 cd /usr
57 cd local
58 cd bimn
59 cd bin
60 ls
61 pwd
62 cd /bin
63 ls
64 printenv http_proxy
65 printenv http_proxy https_proxy
66 export https_proxy=$http_proxy
67 sudo apt-get update
68 printenv http_proxy
69 printenv http_proxy https_proxy
70 history
71 export http_proxy="12.34.56.789:8080"
72 export https_proxy=$http_proxy
73 printenv http_proxy https_proxy
74 sudo apt-get update
75 ping kobore.net
76 ping hitachi.com
77 ping amazon.com
78 export http_proxy="http://12.34.56.789:8080"
79 export https_proxy=$http_proxy
80 printenv http_proxy https_proxy
81 sudo apt-get update
82 export http_proxy="http://12.34.56.789:8080"
83 export https_proxy=$http_proxy
84 printenv http_proxy https_proxy
85 sudo apt-get update
86 sudo apt-get install
87 sudo apt-get upgrade
88 sudo apt-get update
89 export http_proxy="http://12.34.56.789:8080"
90 EXPORT HTTP_PROXY=http://12.34.56.789:8080
91 EXPORT HTTP_PROXY="http://12.34.56.789:8080"
92 export HTTP_PROXY="http://12.34.56.789:8080"
93 export HTTP_PROXY=http://12.34.56.789:8080
94 printenv http_proxy https_proxy
95 sudo apt-get update
96 sudo apt-get install emacs
97 emacs
98 sudo apt install emacs-nox
99 export
100 history
101 printenv http_proxy https_proxy
102 emacs
103 sudo apt install emacs-nox
104 apt install emacs
105 clear
106 apt install emacs
107 ping amazon.com
108 sudo apt-get install
109 sudo apt-get update
110 cat apt.conf
111 vim
112 vim /etc/apt/apt.conf
113 sudo vim
114 sudo vim /etc/apt/apt.conf
115 more /etc/apt/apt.conf
116 cd
117 sudo apt-get update
118 sudo apt-get upgrade
119 sudo apt-get install emacs
120 pwd
121 ls
122 emac
123 emacs
124 sudo emacs /etc/apt/apt.conf
125 ls
126 pwd
127 ls
128 pwd
129 ls
130 pwd
131 ls
132 pwd
133 ls
134 pwd
135 ls
136 pwd
137 ls
138 sudo apt-get install
139 exit
140 ,s
141 ls
142 sudo apt-get remove docker docker-engine docker.io containerd runc
143 sudo apt-get update
144 sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
145 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
146 sudo apt-gey gpg
147 sudo apt-key gpg
148 sudo apt-key add gpg
149 sudo apt-key fingerprint 0EBFCD88
150 gpg
151 sudo apt-key fingerprint 0EBFCD88
152 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
153 sudo apt-get update
154 sudo apt-get install docker-ce docker-ce-cli containerd.io
155 sudo apt-get install docker-ce
156 sudo apt-get install containerd.io
157 apt update
158 ls
159 sudo apt-get install
160 sudo apt-get update
161 sudo apt-get upgrade
162 sudo apt-get install
163 sudo apt-get remove docker docker-engine docker.io containerd runs
164 sudo apt-get remove docker docker-engine docker.io containerd runc
165 sudo apt-get update
166 sudo apt-get install docker-ce docker-ce-cli containerd.io
167 sudo apt-get install docker-ce
168 sudo apt-get remove docker
169 sudo apt-get remove docker-engine
170 sudo apt-get remove docker.io
171 sudo apt-get remove docker-engine
172 sudo apt-get remove docker
173 sudo apt autoremove docker
174 sudo apt autoremove docker-engine
175 sudo apt autoremove docke-ce
176 sudo apt autoremove docker-ce
177 sudo apt autoremove docker-cli
178 sudo apt autoremove docker-ce
179 sudo apt autoremove docker-ce-cli
180 sudo apt autoremove containerd.op
181 sudo apt autoremove containerd.io
182 docker
183 sudo reboot
184 curl -L kobore.net
185 ping kobore.bet
186 ping kobore.met
187 ping kobore.net
188 vf /udt
189 cd /ysr
190 cd /usr
191 cd share/
192 cd
193 cd /etc
194 s
195 ls
196 cd
197 cd curl --help
198 curl --help
199 curl --help | grep proxy
200 curl -X PUT http://kobore.net
201 curl -k http://kobore.net
202 curl -I http://kobore.net
203 sudo apt-get install curl
204 sudo apt-get remove curl
205 curl
206 sudo apt-get install curl
207 curl
208 curl -L http://kobore.net
209 more
210 cd /etc/
211 ls
212 curl -L http://localhost
213 curl -L https://amazon.com
214 sudo apt-get install emacs
215 nslookup kobore.net
216 nslookup www.google.com
217 curl --version
218 curl localhost
219 curl -sS 'https://kobore.net'
220 curl http://kobore.net
221 more /etc/apt/apt.conf
222 export http="http://12.34.56.789.4:8080"
223 export https="http://12.34.56.789.4:8080"
224 curl http://kobore.net
225 printenv
226 sudo apt-get remove docker docker-engine docker.io containerd runc
227 ls
228 cd
229 pwd
230 ls
231 ks
232 ls
233 wd
234 ls
235 lsb_release -cs
236 curl kobore.net
237 sudo apt-key fingerprint 0EBFCD88
238 sudo emacs /etc/apt/sources.list
239 sudo apt-get update
240 cat /etc/apt/sources.list
241 cd
242 apt-cache madison docker-ce
243 sudo apt-get install docker-ce=5:19.03.13~3-0~ubuntu-focal docker-ce-cli=5:19.03.13~3-0~ubuntu-focal containerd.ioCopy
244 sudo apt-get install docker-ce=5:19.03.13~3-0~ubuntu-focal docker-ce-cli=5:19.03.13~3-0~ubuntu-focal containerd.io
245 sudo apt-get install docker-ce=5:19.03.13~3-0~ubuntu-focal docker-ce-cli=5:19.03.13~3-0~ubuntu-focal containerd.ioCopy
246 Markup
247 sudo apt-get install docker-ce=5:19.03.13~3-0~ubuntu-focal docker-ce-cli=5:19.03.13~3-0~ubuntu-focal containerd.io
248 sudo apt-get install docker-ce docker-ce-cli containerd.io
249 sudo apt-get install docker-ce
250 E: Package 'docker-ce' has no installation candidate
251 sjdl
252 sudo apt install docker-ce
253 Package docker-ce is not available, but is referred to by another package.
254 history
255 cat /etc/apt/sources.list
256 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
257 E: The repository 'https://download.docker.com/linux/ubuntu focal Release' does not have a Release file.
258 ls
259 sudo emcs /etc/apt/sources.list
260 sudo emacs /etc/apt/sources.list
261 sudo apt install docker-ce
262 sudo apt remove docker-ce
263 sudo apt
264 cat /etc/apt/sources.list
265 sudo emacs /etc/apt/sources.list.d/docker.list
266 history
267 sudo apt-get remove docker docker-engine docker.io containerd runc
268 sudo apt-get install docker docker-engine docker.io containerd runc
269 sudo apt-get install docker docker.io containerd runc
270 sudo apt-get remove docker docker.io containerd runc
271 history
272 sudo emacs /etc/apt/sources.list.d/docker.list
273 sudo apt-get remove docker docker.io containerd runc
274 sudo apt autoremove docker docker.io containerd runc
275 sudo apt install docker docker.io containerd runc
276 sudo apt install docker-engine
277 docker
278 dokcer ps
279 docker ps
280 sudo gpasswd -a $(whoami) docker
281 sudo gpasswd -a USER_NAME docker
282 sudo gpasswd -a $(whoami) docker
283 whoami
284 more /etc/group
285 history
286 whoami
287 sudo gpasswd -a $(whoami) docker
288 cat /etc/group | grep docker
289 sudo emacs /etc/group
290 sudo gpasswd -a $(whoami) docker
291 docker ps
292 Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/
293 sudo emacs /etc/group
294 sudo groupadd docker
295 whoami
296 cat /etc/grou | grep docker
297 more /etc/group
298 sudo emacs /etc/group
299 cat /etc/grou | grep docker
300 cat /etc/group | grep docker
301 history
302 sudo gpasswd -a $(whoami) docker
303 sudo /bin/systemctl restart docker.service
304 docker info
305 docker ps
306 exit
307 docker ps
308 docker info
309 history

/etc/default/docker

export http_proxy=http://xxx.xxx.xxx.xxx:8080/
export https_proxy=http://xxx.xxx.xxx.xxx:8080/

2021/01,江端さんの技術メモ

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: proxyconnect tcp: tls: oversized record received with length 20527.
See 'docker run --help'.

で、5~6日間、苦しめられて、今もまだ完全には解決していないけど、酷いオチだったのでメモを残しておく

環境:  AWS EC2:Ubuntu20.04

状況: この問題、世界中のエンジニアを悩ませているらしい

条件: 個人の環境によって、まったく役に立たない情報であることがある。これはたまたま私(江端)の環境で上手くいっただけのものである(故に、私に質問しても無駄である)

助けて頂いた資料:  Proxy環境でdockerを外に繋ぐ方法 

修正前:

/etc/systemd/system/docker.service.d/http-proxy.conf を力づくで作った(最初はなかった(みたい))。

[Service]
Environment="HTTP_PROXY=http://12.34.56.789:8080/" "HTTPS_PROXY=https://12.34.56.789:8080" "NO_PROXY=localhost,127.0.0.1,.12.34.56.789"

修正後:

[Service]
Environment="HTTP_PROXY=http://12.34.56.789:8080/" "HTTPS_PROXY=http://12.34.56.789:8080" "NO_PROXY=localhost,127.0.0.1,.12.34.56.789"

(なんのことはない、HTTPS_PROXY の "https:"→"http:" としただけ。ただし、これは、個々の環境に依存する問題だと思う)

ちなみに私のところでは徒労だった(と思われる)作業:

$ host registry-1.docker.io
registry-1.docker.io has address 52.72.232.213
registry-1.docker.io has address 54.85.56.253
registry-1.docker.io has address 54.236.165.68
registry-1.docker.io has address 3.211.199.249
registry-1.docker.io has address 18.213.137.78
registry-1.docker.io has address 18.232.227.119
registry-1.docker.io has address 52.20.56.50
registry-1.docker.io has address 52.54.232.21

と調べた後で、/etc/hostsに書き込んだ

127.0.0.1 localhost
23.22.155.84 registry-1.docker.io
34.195.246.183 registry-1.docker.io
35.174.73.84 registry-1.docker.io
52.5.11.128 registry-1.docker.io
52.20.56.50 registry-1.docker.io
52.54.232.21 registry-1.docker.io
107.23.149.57 registry-1.docker.io
18.232.227.119 registry-1.docker.io

これ↓もダメだった

$ docker run hello-world --dns 12.34.56.789:8080/

これ↓もダメだった

export http="http://proxy server : port 番号"
export https="https://proxy server : port 番号"
export ftp="ftp://proxy server : port 番号

現状、未解決な問題:

"E: Unable to locate package docker-engine"

以上

2021/01,江端さんの技術メモ

背景はこちら。

curlが動かない件について、明日試すこと(後で消す)

会社の方に教えて貰ったのがこちら

curlコマンドにてproxy設定

を参考にしながら、手抜き(taro:passwordを省略)で、

$ curl kobore.net -x http:192.168.1.1:8080

としてみたが、通った。

現在は、~/.curlrc に

proxy=http:192.168.1.1:8080

と書き込んで使用中。

 

キーワード: curl proxy

 

 

2021/01,江端さんの忘備録

(昨日の続きです)

(Continuation from yesterday)

新型コロナ感染のリスクは、量子論を持ち出すまでもなく、中学校で学んだ(ことになっているはず)の確率論で計算ができます。

The risk of new coronary infections can be calculated using probability theory, which you learned in middle school (or should have), without having to bring up quantum theory.

会食の人数による、感染確率の変動の計算方法は、こちらにも記載しています。

How to calculate the variation in the probability of infection depending on the number of people at a dinner can be found here.

そもそも、

To begin with.

■昼のランチが安全で、夜の会食が危険

- Lunch is safe, dinner is dangerous.

とか、

or

■緊急事態宣言前なら安全で、宣言後なら危険

- Safe before a state of emergency is declared, dangerous after.

とか、

―― なんの冗談だ、それ?

"What a joke, that? "

と思われるようなことを信じていた人がいる(らしい)、という事実に、私は心底驚いています(*)。

I was really surprised to find out that there were people who believed in such things (*).

(*)新型コロナウイルス感染症対策担当大臣が「昼間でも感染リスクは変わりません。夜だけでなく昼の外出も控えてください」との緊急メッセージを出した

(*)The Minister in charge of countermeasures against the new coronavirus infection has issued an urgent message saying, "The risk of infection remains the same even during the daytime. Please refrain from going out not only at night but also during the day.

-----

私のメッセージは、一貫して同じです。

My message has been consistently the same.

『外食しても良い。深夜まで酒を飲んでもいい。一晩中語っていても、騒いでいても一向に構わん ――

"It's okay to eat out. You can drink until midnight. You can stay up all night talking, making noise, it doesn't matter.

ただし、それを一人でやれ』

However, do it alone."

これだけです。

That's all.

一人の状態で、ウイルス感染させることなんか、神様にだってできません。

Even God can't infect you with a virus when you are alone.

-----

時代は、「Boys, Be ぼっち」

The time has come to "Boys, Be Alone"!

です。

======

少年よ、孤立を抱け。

Boys be alone!

しかし、独善を求める孤立であってはならない。

Be alone not for your egoism

自己満を満たす孤立であってはならない。

not for your self-satisfaction

他人を批判するという浮ついたものを求める孤立であってはならない

not for that evanescent thing which men call criticism for others.

人間としてあるべき全ての物を求める孤立を抱きたまえ

Be alone for the attainment of all that a man ought to be.

======

上記が、何のパロディであるか分からない人は、スルーして下さい。

If you don't know what the above is a parody of, please go through it.