2020/05,江端さんの技術メモ

「DockerのpostgreSQLの起動方法」で、postgreSQL(ポスグレ)サーバは作れたのは良かったのですが、クライアント(例 pgAdmin4)からアクセスできないことが分かりました。どうやら原因は、パスワードがない、ということのようです。fe_sendauth: no password suppliedが消えません。

私は、CとかGoのプログラムから、ポスグレを使おうとしていますが、pgAdmin4からアクセスできないとなると、多分、「CとかGoのプログラムからは動せない」と思いました。

ロールやらなんやらを追加する方法もあるようですが、私は、ポスグレの運用は、できるだけ手を抜きたいし、そもそもポスグレを外部公開する予定はないので、セキュリティもスカスカでかまいません(もちろん、SSHなんぞも不要)。

そこで、Dockerのポスグレにパスワード("c-anemone")を追加しました。

C:\Users\ebata>docker start -a postgres122

C:\Users\ebata>docker container exec -it postgres122 bash

root@19e323b3f7c1:/# psql -U postgres

とした状態で、

postgres=# alter role postgres with password 'c-anemone';

と打ち込んだ後、psqlからログアウトして、別のコンソールから、

C:\Users\ebata>docker stop postgres122

C:\Users\ebata>docker start -a postgres122

と再起動をしました。

その後、pgAdmin4のCreateの設定画面にパスワードを入力したら、

さくっとログインできました。

2020/05,江端さんの忘備録

米澤穂信さんの氷菓シリーズ外伝(?)「ふたりの距離の概算」より抜粋

Excerpts from Honobu Yonezawa's "hyouka" series outside story "Estimating the Distance Between Us"

======

「黒い猫でも白い猫でも菓子をくれるのはいい猫だ」

"Black cat or white cat, it's a good cat to give me candy."

大日向はきょとんとした顔になった。

Ohinata frowned.

「えっと、周恩来」

"Let's see, Zhou Enlai"

「李登輝だろ」

"It's Li Teng-hui"

横から伊原が口を挟む。

Ihara speaks from the side.

「蒋介石じゃなかったけ」

"It wasn't Chiang Kai-shek, was it?"

やりとりを聞いて、千反田が無理に笑うようなひきつった表情になった。

Hearing the exchange, Chitanda got a twitchy look that made her laugh unreasonably.

「ええと、その、ホー・チ・ミンですよね」

"Um, it's, uh, you know, Ho Chi Minh."

なんとかボケようとしている。悪いことをした。ちなみに俺は本当に忘れていたのだが、話をしているうちに思い出した。トウ小平だ。("トウ"は、登におおざと)

Somehow she's trying to blur. I did something wrong for her. Incidentally, I had really forgotten about it, but as we were talking, I remembered it. This is To Kohei.

======

という話に登場してくる歴史上の人物について、次女(高校3年生)が全く知らなかったので、正直、青冷めました。

My second daughter, a senior in high school, had no idea about the historical figures featured in the above story. I went out of the blue, to be honest.

江端:「おい、『氷菓』の登場人物は、全員、高校2年生だぞ」

Ebata: "Hey, the characters in Hyouka are all 2nd year high school students.

次女:「『氷菓』の登場人物はフィクションだよ。あんな知識を日常的に持っている高校生はいない」

Second daughter: "The characters in "Hyouka" are fiction. No high school student has that kind of knowledge on a daily basis.

江端:「当時の私は、全部答えられたぞ」

Ebata: "I could have answered all of those questions back then!

次女:「それは、パパが偏った知識を持っていたからだ」

Second daughter: "That's because you had biased knowledge.

江端:「そんなことはない。ママだってちゃんと答えられる」

Ebata: "It's not like that. Even your mom can answer that question properly.

と、この話題を、嫁さんに振ったら、

And when I mentioned the subject to my wife, she said

嫁さん:「もちろん、それらの名前は全部知っている。ただ、その人が、何をした人かを忘れただけ」

Wife: "Of course, I know all those names. I just forgot who and what they did.

江端:「それを『答えられない』というんだ」

Ebata: "It's "I cannot answer".

と、ツッコんだところに、さらに、次女がツッコんできました。

In addition, the second daughter interrupted me.

次女:「というか、パパ、その人物の名前を知っていたからといって、何だというの?」

Second daughter: "Well, Dad, just because I knew the person's name, doesn't make it any less important.

江端:「何だか、それくらいのことを知っていないと、めちゃくちゃヤバい気がするんだが」

Ebata: "Somehow, I feel like I'm in deep serious if you don't know that much about it.

次女:「それは、パパの思い込みだ。そんなことより、『お菓子のレシピ』の内容を知らない方が、私達の世界では遥かにヤバい。パパは、お菓子について論じることができる?」

Second daughter: "That's what you think. It's far worse in our world to not know the contents of the "cake recipe". Dad, can you argue about sweets?"

江端:「1mmも論じることができないな」

Ebata: "I can't argue it at all"

次女:「歴史上の人物よりも、お菓子のレシピの方が有用性があり、有用性があるものが正解でしょう」

Second daughter: "There's more utility and usefulness in a cake recipe than in a historical figure, and something useful would be the right thing to do.

江端:「確かに、私は、これまで、そう主張してきたと思う」

Ebata: "Certainly, I think I've been arguing that

-----

どの教師も、『自分の教えている教科こそが重要だ』と言います。

Any teacher says, "It's the subject I am teaching that's important."

それは、教師たちの自分の存在意義と尊厳を守る為の、「矮小な自己防衛」とも言えます。

It can also be described as "petty self-defense" to protect the teachers' sense of existence and dignity.

実際に、歴史の教師は「歴史が重要だ」と言い続けていますが、はっきり言います―― 「古代エジプトのファラオが誰であろうか、その国が滅びようが、それが何だと言うのか」

In fact, history teachers keep saying "history is important," but let's be clear "Whoever the pharaohs of ancient Egypt were, whether their country perished or not, what does it matter?

つまるところ、嫁さんの名言「リトマス試験紙が何色になろうが、それがどうだと言うの」と同じ話です。

In short, it's the same story as my wife's famous quote, "It doesn't matter what color the litmus test paper is.

知識に有用性を求めるのであれば、「実学に基づく利益回収モデル」が唯一の正解です。

If you want usefulness in knowledge, a "profit-recovery model based on actual learning" is the only correct answer.

長女:「自分の知っていることを、世の中の基準のように論じることは、"暴力"なんでしょう?」

Eldest: "It's violence to argue what you know as if it's the world's standard, isn't it?

と、纏められてしまいました。

-----

この話のことも、思い出していましたが ――

I was thinking about this story...

『間違っているのは、私なのか?』

"Am I wrong?

と、暫くの間、深い懐疑の闇に沈んでいました。

For a while, I sank into a deep darkness of skepticism.

未分類

所要時間2時間の簡易調査(裏取り不完全につき引用は止めた方がいい)

未分類

本日は、コラムがリリースされた日なので、日記はお休みです。

Today, new my column is released, so I take a day off.

踊るバズワード ~Behind the Buzzword(2)量子コンピュータ(2):

量子コンピュータよ、もっと私に“ワクワク”を

Dancing Buzzword-Behind the Buzzword (1) Quantum Computer (1)

The quantum computer, give me more excitement.


先月「私の「量子コンピュータ」のコラムの内容を監修して頂ける方を探しております」という日記を掲載しました。

In last month's diary, I wrote, "I am looking for a person who can supervise the contents of my column on "Quantum Computer".

私は、「ウソ」と分かった上で「ウソ」を書くことには、抵抗がない人間ですが、「ウソ」かどうか分からないことを、「ウソ」かどうか分からないことを分からないままに書くことが、どうにも気持ち悪いのです。

I'm not one of those people who is reluctant to write a "lie" when I know it's a "lie", however I can't help but feel uncomfortable writing something that I don't know if it's a "lie" or not without knowing if it's a "lie" or not.

詳しくは、今回のコラムの中で記載していますが、今回から、ご協力をして頂ける方(「量子コンピュータ大好きのTUさん、通称『量オタのTさん』」)にご登場して頂けることになる、かなり安堵しております。

The details are described in this column. I'm very relieved to see that one of my collaborators (Mr. TU who loves quantum computers, a.k.a. "Mr. T who is a quantum geek") will appear from this column.

それはさておき。

Aside from that.


最近、イラスト作成に、かなり時間がかかるようになってきました。

Lately, I've been taking a lot of time to create illustrations.

私がコラムを書くときは、全体構成(目次のようなもの)→図表作成→本文執筆→協力者の皆さんへの査読依頼→イラスト作成、という順番で作業をしているのですが、最近は、イラスト作成に結構な時間がかかりました。

When I write a column, I work in the following order: overall structure (like a table of contents), creation of figures and tables, writing the text, requesting reviewers, and creating illustrations. Lately, I've been spending quite a bit of time creating illustrations.

今回の場合は、イラストのコンセプトを「井戸の中の猫」としたところまでは良かったのですが、これをどういう風に描いたものか、結構悩みました。

In this case, the concept of the illustration was "the cat in the well", which was good, but I was quite worried about how to draw it.


いずれにしても、「シュレーディンガー方程式」から、無限匹のネコが無秩序に登場してくる「猫カフェ」のコンセプトを導いた人物は、私が世界で最初の1人、と自負しております。

Anyway, I am proud that I am one of the first people in the world to come up with the concept of a "cat cafe" in which an infinite number of cats appear in a haphazard manner from the "Schrodinger Equation".

これからは、「シュレーディンガーの猫」に倣い、境界条件確定時の「シュレーディンガー方程式」から導き出せる量子エネルギーの離散状態ことを、

From now on, following Schrodinger's cat, the discrete state of quantum energy derived from the Schrodinger equation when the boundary conditions are fixed will be called

「江端の猫カフェ」

"Ebata's Cat Cafe"

と、称呼して下さい。

2020/05,江端さんの技術メモ

よく忘れるのでメモしておく。

C:\Users\ebata>docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
19e323b3f7c1 postgres:12.2 "docker-entrypoint.s…" 2 months ago Exited (255) 2 months ago 0.0.0.0:5432->5432/tcp postgres122
70fa5aa3a11d pgrouting/pgrouting:v3.0.0-dev-postgresql_12 "docker-entrypoint.s…" 2 months ago Exited (255) 2 months ago 0.0.0.0:15432->5432/tcp ebata_db_1
78c979ee1238 busybox "sh" 2 months ago Exited (0) 2 months ago ebata_db_data_1
C:\Users\ebata>docker start -a postgres122
PostgreSQL Database directory appears to contain a database; Skipping initialization
2020-05-24 15:58:13.237 UTC [1] LOG: starting PostgreSQL 12.2 (Debian 12.2-2.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
2020-05-24 15:58:13.250 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
2020-05-24 15:58:13.250 UTC [1] LOG: listening on IPv6 address "::", port 5432
2020-05-24 15:58:13.290 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2020-05-24 15:58:13.352 UTC [24] LOG: database system was interrupted; last known up at 2020-03-12 10:28:44 UTC
2020-05-24 15:58:13.535 UTC [24] LOG: database system was not properly shut down; automatic recovery in progress
2020-05-24 15:58:13.568 UTC [24] LOG: redo starts at 0/166F4D8
2020-05-24 15:58:13.569 UTC [24] LOG: invalid record length at 0/166F5C0: wanted 24, got 0
2020-05-24 15:58:13.569 UTC [24] LOG: redo done at 0/166F588
2020-05-24 15:58:13.730 UTC [1] LOG: database system is ready to accept connections
C:\Users\ebata>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
19e323b3f7c1 postgres:12.2 "docker-entrypoint.s…" 2 months ago Up 13 minutes 0.0.0.0:5432->5432/tcp postgres122
C:\Users\ebata>docker container exec -it postgres122 bash
root@19e323b3f7c1:/# ls
bin boot dev docker-entrypoint-initdb.d docker-entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@19e323b3f7c1:/# psql -U postgres
psql (12.2 (Debian 12.2-2.pgdg100+1))
Type "help" for help.
postgres-# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
ca_db | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
postgres-# \c ca_db
You are now connected to database "ca_db" as user "postgres".

その他、viを使いたければ、

root@19e323b3f7c1:/#apt-get update

root@19e323b3f7c1:/#apt-get install vim

2020/05,江端さんの忘備録

昨日、深夜、家族全員で、Amazon PRIMEで「シンドラーのリスト」を見ました。

Yesterday, late at night, the whole family watched "Schindler's List" on Amazon PRIME.

視聴の後、家族全員でグッタリしていましたが、私は、長年の懸案をようやく終えたような気持になりました。

The whole family was gutted after watching it, but I felt like I had finally finished what had been on my mind for years.

娘たちが、酷いショックを受けていないようだったので、安心しました。

I was relieved that my daughters didn't seem to be in a terrible state of shock.

理由を聞いたとろ、『パパから、結構、色々聞かされていたからね』と言われました。

When I asked them the reason, they said, "I've heard a lot of things from you".

確かに、私は、

Certainly,

ナチスドイツ、日本陸軍、スターリン、ポルポト、中共(文革)等、原爆投下に至るまで ――

"Nazi Germany, the Japanese Army, Stalin, Pol Pot, the Chinese Communist Party, etc., up to the atomic bombing"

「近代虐殺史」ならなんでもござれ、という保護者です。

I'm an expert of "modern genocide history".

2020/05,江端さんの忘備録

最近、本格的に電子書籍を購入することが多くなりました。

I've been buying e-books in earnest a lot lately.

いくつか理由はあるのですが、家中が本で溢れかえって本気で鬱陶しくなってきたことと、「すぐに読みたい」というニーズに応じられることです。

There are a couple of reasons, but one is that my whole house is overflowing with books and I'm getting seriously depressed, and the other is that it meets my need to read quickly.

特に、専門書の購入が、多くなってきました。

In particular, I've been buying a lot of specialized books.

私は、マルチディスプレイ環境(正確には、4つのディスプレイ)で仕事をしています。

I work in a multi-display environment (four displays, to be exact).

コラムを執筆する時に、パソコン画面の右側に電子書籍を表示しながら、左側のディスプレイで執筆をすると、とても便利です。

When I'm writing a column, I find it very useful to have the e-book on the right side of my computer screen while I'm writing on the left side display.

コピペを使えば、引用もラクです。

It's also easier to quote if I use copypes.

特にプログラムの教本は、そのままソースコードをコピペしてコンパイルとビルドに持ち込めるので、助かります。

Especially for program textbooks, it's helpful to be able to copy and paste the source code to compile and build.

(コピペできない書籍もあります。こういう書籍は面倒です)

(Some books can't be copied and pasted. They annoy me)

------

Amazonでも電子書籍で購入できないものもあります。その場合、版元からPDFを購入しなければなりません。

Some of them are not even available as ebooks on Amazon. In that case, I have to buy the PDF from the publisher.

その場合、面倒なのが「支払い」です。

In that case, it is the "payment" that is troublesome.

素直に「カード払い」にしてくれれば簡単なのですが、「電子マネー」を絡ませるところが厄介です。

It's easy if I just make it a "card payment", but it's awkward to get "electronic money" involved.

電子マネーの種類を増やすことは、面倒くさいのです。

Having more types of e-money is a hassle.

電子マネー毎に、カード番号の入力や、住所や氏名、電話番号の登録情報するのには、抵抗がありますし、特にパスワードの管理が、うっとうしくてかないません。

There is a psychological resistance to the input of the card number, address, name, and phone number registration information, and especially the management of the password is annoying.

そもそも、電子マネーの殆どは、個人間でお金のやりとりができません。

In the first place, most of the electronic money cannot be exchanged between individuals.

-----

そんな中、最近、便利だなーと思うのが、Amazonギフト券(チャージタイプ)です。

In such a situation, recently, I think it's convenient, Amazon gift certificate (charge type).

1円単位でギフト券を作り、送付先の電子メールで送付すれば、処理は完了です。

Simply create a gift certificate in increments of one yen and send it to the recipient via email, and the process is complete.

もっとも、Amazonでしか使えないギフト券なので、高額送金には向いていませんが、少額なら使い勝手が良いです。

However, because it is a gift certificate that can only be used on Amazon, it is not suitable for a high amount of money transfer, but if it is a small amount, it is convenient to use.

これからは、子どもの小遣いや、お年玉も、このようなネットサービスのギフト券で渡されるようになるかもしれません。

In the future, children's pocket money and even new year's gift may be given in gift certificates for such online services.

-----

となれば、お年玉のパラダイムも変わるかもしれません。

If so, the paradigm of "new year's gift" may change.

例えば、

For example,

1月1日に、子どもが、KPI(Key Performance Indicator)の内容を発表し、翌年の1月1日に、私達大人が、そのKPIの目標達成度を判断して、お年玉の金額を決定する、というものです。

On January 1, the children presented the contents of KPI (Key Performance Indicator) and on January 1 of the following year, we adults will determine the amount of the New Year's gift by judging how well we have achieved the KPI goal.

KPIとしては、

As a KPI, the

■逆上がりをできるようになる

going to be able to do the "back-hip circle"

■縄跳びの二重跳びが連続10回ができるようになる

going to do the "double jump" of jumping rope 10 times in a row

などから、

■部活のレギュラーの獲得

Getting regulars in club activities

■予備校の模試の偏差値

Prep school examinations deviations

■受験の志望校の合否

Passing or failing the school of your choice for the examination

まで、色々あると思います。

I think there are a lot of things we can do.

成果を金額に反映するのは、子どもに酷に過ぎるというのであれば、「ギフト券」から「商品」に変えて贈るという手もあります。

If it's too hard for your child to show the results reflected in a monetary value, we can change them from a "gift certificate" to a "product".

例えば、小学生の子どもに、「缶詰セット」とか「カニ鍋用の冷凍カニ」とか贈ることで、ペナルティとするのも一つの手です。

For example, one way to penalize an elementary school child is to give them a "canned set" or "frozen crabs for the crab pot".

-----

―― ラクに金が手に入ると思うなよ

"Don't think you're going to get your money easy"

「正月最大の楽しいイベント」を、「初年度最初の最悪最低のイベント」にしてしまう、というのは、なかなかよくできた「大人の嫌がらせ」だと思います。

I think it's a very good "adult harassment" to turn "the biggest fun event of the New Year" into "the first worst and worst event of the first year".

2020/05,江端さんの技術メモ

下記のプログラムをコンパイルする

/*
		go build -gcflags "-N -l" main.go
*/
package main

import (
    "fmt"
    "database/sql"
    _ "github.com/lib/pq"
    "os"
)

// ----------------------------------------------------------------
func main() {
    fmt.Fprintln (os.Stderr,"*** 開始 ***")
    db, err := sql.Open("postgres", "user=scott dbname=city password=tiger123 sslmode=disable")
    defer db.Close()

    sql_str := "select id,name,population,date_mod from cities order by id"

    rows, err := db.Query(sql_str)
    if err != nil {
        fmt.Println(err)
        }
    defer rows.Close()

    for rows.Next() {
        var id string
        var name string 
        var population int
        var date_mod string 
        if err := rows.Scan(&id,&name,&population,&date_mod); err != nil {
            fmt.Println(err)
        }
        fmt.Printf ("%s\t%s\t%d\t%s\n",id, name,population,date_mod)
    }

    if err := rows.Err(); err != nil {
        fmt.Println(err)
        }

    fmt.Fprintln (os.Stderr,"*** 終了 ***")
}

で "github.com/lib/pq" がない、とエラーが出てくる。

C:\Users\ebata>go get github.com/lib/pq

で、すんなりインストール成功。で、コンパイルをしたら通ったので、とりあえずメモしておく。これからdockerでDBつくって動作を試す。

2020/05,江端さんの技術メモ

package main

import (
	"fmt"
	"strings"
)

func main() {
	c0 := make(chan string)  // makeってなんだ? →"配列"でも"共有メモリ"でもいいが、
	c1 := make(chan string)  // 江端理解では「トンネル」とか「パイプ」とか「Amazonのダンボール箱」 

	go sourceGopher(c0)      // "c0"とラベルの付いたダンボール箱を使うぜ
	go filterGopher(c0, c1)  // "c0","c1"とラベルの付いたダンボール箱を使うぜ 
	printGopher(c1)          // "c1"とラベルの付いたダンボール箱を使うぜ
}

func sourceGopher(downstream chan string) {
	for _, v := range []string{"hello world", "a bad apple", "goodbye all"} {
		downstream <- v   // "c0"のダンボール箱に、(1)"hello world",(2)"a bad apple", (3)"goodbye all"を投げ入れる
	}
	downstream <- ""   // "c0"のダンボール箱の底にクッション(プチプチ)を入れる
}

func filterGopher(upstream, downstream chan string) {
	for {
		item := <-upstream     // "c0"のダンボール箱からクッションを取り出す
		if item == "" {        // クッションだったら
			downstream <- ""   // "c1"のダンボール箱にクッションを入れる
			return             // ダンボール箱の蓋を閉める
		}
		if !strings.Contains(item, "bad") {   // "bad"という文字列が入っていない荷物だったら
			downstream <- item // "c1"のダンボール箱に荷物を入れる
		}
	}
}
func printGopher(upstream chan string) {
	for {
		v := <-upstream // "c1"のダンボール箱から荷物を出す
		if v == "" {    // "c1"の荷物がクッションだったら
			 return     // ダンボール箱を閉める
		}
		fmt.Println(v)  // 荷物を読み上げる
	}
}