未分類

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

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)  // 荷物を読み上げる
	}
}

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

良く忘れるので書いておく。

(1)Goは一度も使われない変数があると、全部エラーにしてしまう → 「せっかく買ったのに、どうして使わないの?」と言い続ける、うっとうしい母親みたいなもの

(2)返り値のある変数があるけど、別に返り値が必要でないときがある。
例えば、2つの返り値がある関数で、「2つもはいらんわ」という時に、こうなる

f := func(num1 int, num2 int)(int, int){
	return num1 + num2, num1 - num2
}
ret1, ret2 := f(8, 7)  // "a"が不使用のためエラー:a declared and not used
fmt.Println(ret2)

(3)でも、こうすれば、エラーにならない

ret1 はいらん → これを"_"と書く

_, ret2 := f(8, 7)  // エラーがでてこなくなる
fmt.Println(ret2)

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

// go build -gcflags "-N -l" main.go ← これで、golangのプログラムをgdbで動かすことができたぞ(マグレかもしれないけど)

package main

import (
    "fmt"
    "time"
)

func counting(c chan<- int) {
    for i := 0; i < 10; i++ {
        time.Sleep(2 * time.Second)
        c <- i
    }
    close(c)
}

func main() {
    msg := "Starting main"
    fmt.Println(msg)
    bus := make(chan int)
    msg = "starting a gofunc"
    go counting(bus)

    for count := range bus {
        fmt.Println("count:", count)
    }
}

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

PostgresSQLは使い慣れてくると手放せなくなります。もう、テーブルをプログラムの中に作るな面倒くさくてやっていられません。どんなに小さいテーブルでも、PostgreSQLにつくって、そのまま放置しておきます。CSVすら面倒くさい。

しかし、PostgreSQLは頻繁にバージョンアップするので、結構面倒くさい思いをします。

そこで、Dockerで作って、そのまま放置するという戦略を取ることにしました。理屈は分からないけど、取り敢えず、ネットの情報を使ってここまでやってみたところ、動いているっぽいです。

C:\Users\ebata> docker run --rm -d -p 15432:5432 -v postgres-tmp:/var/lib/postgresql/data -e POSTGRES_HOST_AUTH_METHOD=trust postgres:12-alpine

C:\Users\ebata>docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e373f69553b8 postgres:12-alpine "docker-entrypoint.s…" 11 minutes ago Up 11 minutes 0.0.0.0:15432->5432/tcp frosty_golick

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

bash-5.0# psql -U postgres
psql (12.3)
Type "help" for help.

postgres=#