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

を見て、コーディングしてみたのですが、全然思うような結果になりません。

サンプル数を増やすと、どんどん0に近づいていくんだけど(そりゃそうだ)、サンプル数を減らした方が、2越えは発生するけど、解説の内容と会いません。

以下のコーディングで致命的に変な点があったら、どなたかご教示下さい。

package main

import (
	crand "crypto/rand"
	"fmt"
	"github.com/seehuhn/mt19937"
	"math"
	"math/big"
	"math/rand"
	"time"
)

type Scratch_Card struct {
	 UpperLeft  int64
	 LowerLeft  int64
	 UpperRight int64
	 LowerRight int64
}

var sc Scratch_Card

func main() {
	//計算開始日時
	started := time.Now()

	//乱数の設定
	seed, _ := crand.Int(crand.Reader, big.NewInt(math.MaxInt64))
	rng := rand.New(mt19937.New())
	rng.Seed(seed.Int64())


	for k := 0; k < 1; k++ {

		var pattern1_count, pattern2_count, pattern3_count, pattern4_count int64;
		var pattern1_sum, pattern2_sum, pattern3_sum, pattern4_sum 		   float64;
		var rightCat,rightPattern int64
		var leftCat,leftPattern int64




		//fmt.Println(sc.UpperLeft,sc.UpperRight)
		//fmt.Println(sc.LowerLeft,sc.LowerRight)
		//fmt.Println()


		for i := 0; i < 400; i++ {

			// スクラッチカード1枚を作る
			sc.UpperLeft  = rng.Int63()%2
			sc.LowerLeft  = rng.Int63()%2
			sc.UpperRight = rng.Int63()%2
 			sc.LowerRight = rng.Int63()%2


			// スクラッチカードの左側を削る
			if rng.Int63()%2 == 0 {   // 上を削ることになった
		  	   leftPattern = 0	      // 左上が削られたことのフラグ
		   	   leftCat = sc.UpperLeft // 左上のネコがスクラッチから表われる
			} else {                  // 下を削ることになった
		   	   leftPattern = 1	      // 左下が削られたことのフラグ
		   	   leftCat = sc.LowerLeft // 左下のネコがスクラッチから表われる
		    }

		    // スクラッチカードの右側を削る
		    if rng.Int63()%2 == 0 {    // 上を削ることになった
		       rightPattern = 0	       // 右上が削られることになったフラグ
		       rightCat = sc.UpperRight// 右下のネコがスクラッチから表われる
		    } else {                   // 下を削ることになった 
		       rightPattern = 1        // 右下が削られることになったフラグ
		       rightCat = sc.LowerRight// 右下のネコがスクラッチから表われる	   
		    }

		    ////////////////////

		    // ○○
		    // ××

		    if leftPattern == 0 && rightPattern == 0 {
		        pattern1_count += 1      // パターン1の回数の加算
		   
		       if leftCat == rightCat { // マークが同じ
		   	      pattern1_sum += 1
		       } else {                 // マークが違う 
		   	       pattern1_sum -= 1
		       }
		    }

		    // ××
		    // ○○
		    if leftPattern == 1 && rightPattern == 1 {
		       pattern2_count += 1   // パターン2の回数の加算   
		   
		       if leftCat == rightCat { // マークが同じ
		   	      pattern2_sum += 1
		       } else {                 // マークが違う 
		   	       pattern2_sum -= 1
		       }
		    }

			// ×○
			// ○×

		   if leftPattern == 1 && rightPattern == 0 {
		       pattern3_count += 1  // パターン3の回数の加算   
		   
		       if leftCat == rightCat { // マークが同じ
		   	      pattern3_sum += 1
		       } else {                 // マークが違う 
		   	       pattern3_sum -= 1
		       }
		    }

   		    // ○×
		    // ×○

		   if leftPattern == 0 && rightPattern == 1 {
		       pattern4_count += 1  // パターン4の回数の加算   
		   
		       if leftCat == rightCat { // マークが同じ
		   	      pattern4_sum += 1
		       } else {                 // マークが違う 
		   	       pattern4_sum -= 1   
		       }
		   }
	   }

	   fmt.Println("pattern1_count ", pattern1_count, "pattern1_sum", pattern1_sum)
	   fmt.Println("pattern2_count ", pattern2_count, "pattern2_sum", pattern2_sum)
	   fmt.Println("pattern3_count ", pattern3_count, "pattern3_sum", pattern3_sum)
	   fmt.Println("pattern4_count ", pattern4_count, "pattern4_sum", pattern4_sum)

	   var pattern1_ave,pattern2_ave,pattern3_ave,pattern4_ave float64

	   pattern1_ave = pattern1_sum / float64(pattern1_count)
	   pattern2_ave = pattern2_sum / float64(pattern2_count)
	   pattern3_ave = pattern3_sum / float64(pattern3_count)
	   pattern4_ave = pattern4_sum / float64(pattern4_count)
		
	   fmt.Println()

	   fmt.Println("pattern1_ave ", pattern1_ave)
	   fmt.Println("pattern2_ave ", pattern2_ave)
	   fmt.Println("pattern3_ave ", pattern3_ave)
	   fmt.Println("pattern4_ave ", pattern4_ave)

	   fmt.Println()
	  }

	//計算終了日時から計算開始日時を差し引いて、経過時間を出力
	fmt.Println("Elapsed: ", time.Now().Sub(started))
}

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

以前、書いていた投稿を編集しなおして、その編集の最新日時にしたいというニーズは、私の中では結構高くて、色々なプラグインを入れて試していたのですが、上手く動きませんでした(多分、phpファイルをいじっているからだろうなぁと思っていますが)

とこが、気がつかなったのですが(あるいはWPがバージョンアップしてできるようになったのか?)、今、WP5.5ではこの機能があることに気がつきました。

結構盲点だったので、メモしておきます。

以上

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

新規投稿を追加しようとすると、何を記入しようとしても「このブロックでエラーが発生したためプレビューできません」がでてきて、何もできなくなりました。

で、Webで調べたことを片っぱしから試してみたのですが(ブラウザのキャシュをクリア、wp-config.phpを修正しJavaScript連結を無効化する)、まったくダメダメでした。

原因を考えてみると、「昨日、WordPressのアップデートがあったなー」と思い、"WP Downgrade | Specific Core Version"というプラグインを入れて、WordPressのダウングレードを実施したのですが、状況が悪化しました

過去の投稿の編集画面が真っ白になって、何もできなくなりました。

で"WP Downgrade | Specific Core Version"を使って、元のバージョンに戻したのですが、別段状況が改善されている訳ではありません。

で、すったもんだしているうちに、どうやら、私が使わせて頂いているテーマ(Luxeritas, Luxeritas Child Theme)のバージョンが関係していそうだということが分かってきました。

FFFTPとか使って、いろいろ小手技(ファイルの入れ替え)とかやったのですが、全くダメだっだので、テーマの強制インストールを実施しました。

ここから、「本体」と「子テーマ」をダウンロードする。

でもって、「外観」→「テーマ」→「新規追加」→「テーマのアップロード」で

さきほどダウンロードしたファイルを、それぞれインストールする。

「すでにダウンロード済み」と言われれるが、構わずインストールを強行する。

で、理由は分からんけど、これで問題が発生しなくなりました。

まあ、釈然としないけど、WordPressのバージョンアップは、結構なリスクがあるので、これからは消極的に対応するようにします。

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

これをやられると、コマンドのコピペをする時に、困ったことになるので、対応を探していたら、"WordPress 半角の「"」や「'」が、全角に変換されてしまう件"と同じ対応したら上手くいったので、メモを残しておきます。

remove_filter("the_content", "wptexturize");
remove_filter("the_excerpt", "wptexturize");
remove_filter("the_title", "wptexturize");

の3行をまとめてfunctions.php(https://wp.kobore.net/wp-admin/theme-editor.php?file=functions.php&theme=luxech)に追記したら、上手くいきました。

ここを弄って、WordPressが立ち上がらくなって、青さめたことがあったので、動いている状態のログを取っておく。

ただ、動かなくなったら、この画面にすら行けなくなるので、ffftpの画面も付けておく

現時点でのfunctions.phpの中身は以下の通り。

<?php
/**
 * Luxeritas WordPress Theme - free/libre wordpress platform
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * @copyright Copyright (C) 2015 Thought is free.
 * @link http://thk.kanzae.net/
 * @license http://www.gnu.org/licenses/gpl-2.0.html GPL v2 or later
 * @author LunaNuko
 */

/* 以下、好みに応じて子テーマ用の関数をお書きください。
 ( Below here, please write down your own functions for the child theme. ) */
remove_filter("the_content", "wptexturize");
remove_filter("the_excerpt", "wptexturize");
remove_filter("the_title", "wptexturize");

ところで、驚くべきことが書かれていたのですが「PHPの最後の終了タグ ?> は付けないでおこう」だそうです。(事実、タグを付けたら、WPが動かなくなった)

functions.phpはあまりさわらないこと、ですね。

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

江端家では、2本の愛用包丁(南部鉄(*))があります 。これらの包丁は、長期の使用で私が修理を繰返して使い倒しています。

(*)鉄分補給がしやすい、という特徴があるそうですが、包丁(×鍋、×フライパン)でその効果が発揮できるのかは不明です

今回も柄が折れしまったので、Amazonで新しい柄を購入して修理することにしました。

で、こちらが解体した包丁。

解体に際に気を付けることは、包丁に力を加えないこと。包丁の金属の柄の部分は、すでに長期に渡って金属疲労が与えられ続けられており、簡単に「ポッキリ」いきかねないから。包丁の刃の柄が折れたら、もう再利用はできない

木の柄の部分と、プラスチック(黒)の部分を、ペンチやニッパーを使って、地道に破壊していくことが必要。

Amazonから届きました。

IMG-0608.JPG を表示しています

コンロで、刃の柄の先端が真っ赤になるまで加熱する。

IMG-0604.JPG を表示しています

あとは、鉄の柄を、木の柄に差し込むだけ。簡単にズブズブと刺さる。(私の場合)刃を立ててそのまま押し込みました。

IMG-0606.JPG を表示しています

本当は、この後、ロウを入れたりするらしいが、私は全部省略して、自然に冷えるのを待って作業を完了しました。

(追記)

その後、刃の柄が、木の柄にガッチリ固定されずに、グラグラしてしまうので、一度、刃の柄を出した後、木の柄の溝に木工用ボンドを投入して、一日程、放置した。

結果としては、固定されなかった。

これは、木工用ボンドが柄の中で固まらなかった為と思われる(多分、まだ液状になっているのだと推測)。

そこで、刃の柄を、木の柄に差し込んだ状態で、刃をコンロの火に晒してみた。これによって、木工用ボンドを強制的に乾燥させる為である。

上手く接着できたかどうかは、後日報告する。

以上

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

golang ではファイル名が _test.go で終わるファイルを run すると
上記のエラーが表示されて実行できません。

ちなみに、buildだと

$ go build echo_test.go
no packages to build

と表示されて、なんのことやらさっぱり分かりませんでした。

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

$ go build echo.go
echo.go:4:5: cannot find package "github.com/trevex/golem" in any of:
        c:\go\src\github.com\trevex\golem (from $GOROOT)
        C:\Users\ebata\go\src\github.com\trevex\golem (from $GOPATH)

ebata@DESKTOP-P6KREM0 MINGW64 ~/go_websocket_test
$ go get -u github.com/trevex/golem

ebata@DESKTOP-P6KREM0 MINGW64 ~/go_websocket_test
$ go build echo.go

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

  1. データベース新規作成
    psqlでデータベースを新規作成する(以下、データベース名をca_simとする)。

postgres=#CREATE DATABASE ca_sim

  1. データベース拡張

psqlに入って次のコマンドを実行する。

postgres=# \c ca_sim
postgres=# create extension postgis;
postgres=# create extension pgrouting;

  1. kashiwanoha.osmを読み込む

C:\Users\ebata\Desktop\20190327_casim_final\environment>docker cp kashiwanoha.osm ebata_db_1:/db_data

4.osm2pgrouting をインストール(が、できると思わなかったので、かなり驚いた)

うまくいなかかったときは、apt-get update; apt-get update をやってみる

root@70fa5aa3a11d:/# apt-get install osm2pgrouting

5.kashiwanoha.osmをインポート

root@70fa5aa3a11d:/# osm2pgrouting -f /db_data/kashiwanoha.osm -c /usr/share/osm2pgrouting/mapconfig_for_cars.xml -d ca_sim -U postgres

6.sqlファイルをシェルから実施する

root@70fa5aa3a11d:# psql -f /db_data/make_bus_route_table.sql -d ca_sim -U postgres

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

Docker commitで作ったイメージをアップしてみようと思って、docker pushを使ってみたんだけど、上手く動きませんでした。

ebata@DESKTOP-P6KREM0 MINGW64 ~/xxxxxxx_ride_hailing_go
$ docker push ebata_db_data_1_back2
The push refers to repository [docker.io/library/ebata_db_data_1_back2]
d103f95b4a98: Preparing
195be5f8be1d: Preparing
denied: requested access to the resource is denied

ebata@DESKTOP-P6KREM0 MINGW64 ~/xxxxxxx_ride_hailing_go
$ docker push ebata_db_data_1_back2
The push refers to repository [docker.io/library/ebata_db_data_1_back2]
d103f95b4a98: Preparing
195be5f8be1d: Preparing
denied: requested access to the resource is denied

なんで上手くいかないのかなー、とググッてみたら、イメージ名にルールがあったみたいです。ユーザ名がtomoichiならば、image作る時に、こういう名前にしなければダメみたい。

ebata@DESKTOP-P6KREM0 MINGW64 ~/xxxxxxx_ride_hailing_go
$ docker commit f5ae64d47096 tomoichi/ebata_db_data_1_back2
sha256:bf565f55a2cf06e0c9fe6ecb3460f7afe7228cf48886ae0a71cde6bf770ebf1c

ebata@DESKTOP-P6KREM0 MINGW64 ~/xxxxxxx_ride_hailing_go
$ docker commit 64101530c199 tomoichi/ebata_db_1_back2
sha256:6243b4ad2ea96bca6183b331a1c2c4467c9337ce2b305e40ca6a1d456b58df8d

でもって、

ebata@DESKTOP-P6KREM0 MINGW64 ~/xxxxxxx_ride_hailing_go
$ docker push tomoichi/ebata_db_data_1_back2
The push refers to repository [docker.io/tomoichi/ebata_db_data_1_back2]
d103f95b4a98: Preparing
195be5f8be1d: Preparing
d103f95b4a98: Pushed
195be5f8be1d: Pushed
latest: digest: sha256:e69eb3011f892fc5fe80530657f2ed0c1b59202cdca62788483315412a54be50 size: 734

みたいに成功するようです。