入門Goプログラミング(SHOEISHA) の Lesson31 の "Pipeline1.go"のコメントによる私の為の解説
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) // 荷物を読み上げる
}
}
■Go言語のアンダースコアーの意味
良く忘れるので書いておく。
(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)
// go build -gcflags "-N -l" main.go ← これで、golangのプログラムをgdbで動かすことができたぞ(マグレかもしれないけど)
// 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)
}
}
DockerでPostgreSQL環境を構築する
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=#
お名前.comからRoute53へネームサーバーを変更できなくて、本当に困った
現在、お名前.comで、2つのドメイン名取得して、AWSで運用しています。しかし、そのうち一つは上手く動いているのに、もう一つでは動かずに困っていました。
AWSのLBSやらRoute53の設定を消したり追加したりしても、何も状況が改善されません。
PCにwiresharkをインストールして、調べたのですが、そもそも名前解決事態ができておらず、AWSのネームサーバに飛んでいないようです。
お名前.comの登録を調べてみると、以下の「登録済み」がどうしても消せない。
とりあえず、これを全滅させなければ、お話にならないので、
の一番下の方にある
なんかねー、ドメインを削除されるんじゃないかと、ドキドキしながらボタン押しました。
やっとこれで、全削除に成功しました。
さて、Route53の情報を書き込みましたが、明日くらいに反映されているといいな
EC2を停止して開始した時はELBに再登録する
https://dev.classmethod.jp/articles/elb-re-register/
AWS Certificate Manage で、AWSの無料の証明証をゲットしようとして、いつまでたっても発行されない件
以下の手続が必要だったらしい
(1)"DNS設定をファイルにエクスポート"を押して、excelファイルを得る。
(2)_2063067eb965145f723aadfgfd2c0b1302e78.more.more. てな感じも文字列と、_866388707fdaetouadfhioe3c9c5c8c3854a613.auiqqraehs.acm-validations.aws.てな感じの文字列をコピーしておく
(3)Route53の初期画面から、more.moreを選んで、「レコードセットの作成」をクリックして、タイプに"CNAME"を選ぶ。
(4)"名前"のところに、_2063067eb965145f723aadfgfd2c0b1302e78 を放り込む
(5)"値"のとろに_866388707fdaetouadfhioe3c9c5c8c3854a613.auiqqraehs.acm-validations.aws. を放り込む
(6)"レコードセットの保存"をクリックして、"Certificate Manager" の画面に戻って、数分待つと、"検証状態"が、"成功"になっている
―― といいな。(今回は上手くいったけど)
EC2にWebリクエストが届かないので、悩んでいたら、インバウンドルールの設定が何もしていななかった
セキュリティの問題は後回しとして、考えうるポートを全部開けてしまう(デフォルトでは、SSHだけ開いていた)
これで、EC2のWebサーバへの直接アクセスが可能状態になる
リモートから、>curl (IPアドレス (SSHのログインアドレス)) の直打ちで、htmlの内容が表示されれば成功
購入した木材を切断せずに、バイク用屋根付き車庫を作ってみました
嘘です。コンパネを真っ二つにする裁断を1回だけやりました(Unidyでやってもらった)。
使った材料は、1800x900のコンパネ3枚と、4X2の1800の角材5本、木ネジ60本、自宅の庭に放置されていたコンクリートの固定具です。制作時間は2時間強くらいでした。
自宅プリンタの有線/無線の接続の変更方法
リビングのPCまたは有線LANで接続印刷する時は「有線」
無線LANから接続するときは「無線」にに設定すること