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=#

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

現在、お名前.comで、2つのドメイン名取得して、AWSで運用しています。しかし、そのうち一つは上手く動いているのに、もう一つでは動かずに困っていました。

AWSのLBSやらRoute53の設定を消したり追加したりしても、何も状況が改善されません。

PCにwiresharkをインストールして、調べたのですが、そもそも名前解決事態ができておらず、AWSのネームサーバに飛んでいないようです。

お名前.comの登録を調べてみると、以下の「登録済み」がどうしても消せない。

とりあえず、これを全滅させなければ、お話にならないので、

の一番下の方にある

なんかねー、ドメインを削除されるんじゃないかと、ドキドキしながらボタン押しました。

やっとこれで、全削除に成功しました。

さて、Route53の情報を書き込みましたが、明日くらいに反映されているといいな

EC2を停止して開始した時はELBに再登録する
https://dev.classmethod.jp/articles/elb-re-register/

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

以下の手続が必要だったらしい

(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" の画面に戻って、数分待つと、"検証状態"が、"成功"になっている

―― といいな。(今回は上手くいったけど)

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

セキュリティの問題は後回しとして、考えうるポートを全部開けてしまう(デフォルトでは、SSHだけ開いていた)

これで、EC2のWebサーバへの直接アクセスが可能状態になる

リモートから、>curl (IPアドレス (SSHのログインアドレス)) の直打ちで、htmlの内容が表示されれば成功

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

嘘です。コンパネを真っ二つにする裁断を1回だけやりました(Unidyでやってもらった)。

使った材料は、1800x900のコンパネ3枚と、4X2の1800の角材5本、木ネジ60本、自宅の庭に放置されていたコンクリートの固定具です。制作時間は2時間強くらいでした。

 

 

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

リビングのPCまたは有線LANで接続印刷する時は「有線」

無線LANから接続するときは「無線」にに設定すること

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

ルクセリタス 公式サイト

■【ルクセリタス】Googleアドセンス広告の貼り付け方(https://insilico-notebook.com/luxeritas-googlead/)

■5分でWordPressサイトをプラグインでAMP化する方法(https://moukegaku.com/wordpress-amp/)

■さくらサーバーでWordPressの最大アップロードファイルサイズを変更する方法(https://www.vektor-inc.co.jp/post/sakura-upload-max-filesize/)

■t2m.rb tDiaryMTConverter(https://github.com/kackyt/tdiarymtconverter)

■luxeritas(ルクセリタス )でアドセンスの広告を配置する方法(https://losenotime.jp/luxeritas-adsense-setting/)