2022/11,江端さんの技術メモ

VSCodeがなかなか立ち上がってこずに、プログラム開発が滞ってしまうほどでしたが、色々試してみた結果、悪い奴がoffice.comであることが分かりました。

ブラウザをchromeにしたりedgeにしてみたのですが、office.comを上げると、たちまちディスク0が100%になってしまうことが分かりました。その後、office.comのタブを消しても、100%が維持しつづけるようです(いずれ収まるようですが)。

office.comは便利なんですけど(iPadでもサクっと使えます)、意外なところで仕事の邪魔をされていました。

chromeの設定をクリアにしてしまったり、edgeを再インストールしたりと、酷い回り道をしてしまいました。
特に、chromeのアドインを全部消したのは、かなり痛いです。スクショくらい取っておけばよかった。

という訳で、これからoffice.comは、始業時、昼、就業時の3回だけ立ち上げるようにします。
江端に、至急の業務連絡をとりたい人はteamsでお知らせ下さい。

ちなみにvscodeも、立ち上げ時には、そこそこ鬱陶しいです。こんな感じ↓

こっちは、数分ほっておけば、こうなりますので、そこまで我慢します。

2022/11,江端さんの技術メモ

■PDFをブラウザで直接編集するサイト

https://smallpdf.com/jp/edit-pdf
一回実施すると、次の実施まで12時間かかるので、実質的には使えない

(T.B.D)

 

 

2022/11,江端さんの技術メモ

/*
C:\Users\ebata>psql -U postgres -h 192.168.0.23 -p 15432
Password for user postgres:
psql (13.4, server 12.5 (Debian 12.5-1.pgdg100+1))
Type "help" for help.

postgres=# \l
                                 List of databases
   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
-----------+----------+----------+------------+------------+-----------------------
 agent_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
 yama_db   | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
(5 rows)

postgres=# \c agent_db
psql (13.4, server 12.5 (Debian 12.5-1.pgdg100+1))
You are now connected to database "agent_db" as user "postgres".
agent_db=# \dt
           List of relations
 Schema |   Name    | Type  |  Owner
--------+-----------+-------+----------
 public | user_list | table | postgres
 public | user_log  | table | postgres
(2 rows)


agent_db=# select * from user_list;
 id  | age |   type   | departure_name | departure_number | departure_lat | departure_lng |     arrival_name     | arrival_number | arrival_lat | arrival_lng
-----+-----+----------+----------------+------------------+---------------+---------------+----------------------+----------------+-------------+-------------
   0 |  51 | tourist  | 山口駅         |             9324 |   131.4815191 |     34.172788 | 藩庁門               |           1396 |    34.18463 |  131.471535
   1 |  59 | tourist  | 山口駅         |             9324 |   131.4815191 |     34.172788 | 五重塔               |           7136 |   34.190132 | 131.4734607

*/

package main

import (
	"database/sql"
	"fmt"
	"log"

	_ "github.com/lib/pq" // ←これを追記
)

func main() {

	db, err := sql.Open("postgres",
		"user=postgres password=password host=192.168.0.23 port=15432 dbname=agent_db sslmode=disable")
	if err != nil {
		log.Fatal("OpenError: ", err)
	}
	defer db.Close()

	//rows, err := db.Query("select * from user_list")
	rows, err := db.Query("select id, age, type, departure_name, departure_number, departure_lat, departure_lng, arrival_name, arrival_number, arrival_lat, arrival_lng from user_list")
	if err != nil {
		log.Fatal(err)
	}
	defer rows.Close()

	var id, age, departure_number, arrival_number int
	var type1, departure_name, arrival_name string
	var departure_lat, departure_lng, arrival_lat, arrival_lng float64

	for rows.Next() {
		//if err := rows.Scan(&dt); err != nil {
		if err := rows.Scan(&id, &age, &type1, &departure_name, &departure_number, &departure_lat, &departure_lng, &arrival_name, &arrival_number, &arrival_lat, &arrival_lng); err != nil {
			fmt.Println(err)
		}
		fmt.Println(id, age, type1, departure_name, departure_number, departure_lat, departure_lng, arrival_name, arrival_number, arrival_lat, arrival_lng)
	}
}

/*
出力結果

C:\Users\ebata\yamaguchi\src_try1\others>go run .
0 51 tourist 山口駅 9324 131.4815191 34.172788 藩庁門 1396 34.18463 131.471535
1 59 tourist 山口駅 9324 131.4815191 34.172788 五重塔 7136 34.190132 131.4734607
2 55 tourist 湯田温泉駅 7247 131.4606901 34.1597909 ザビエル記念聖堂 2570 34.1796352 131.4728818
3 60 tourist 湯田温泉駅 7247 131.4606901 34.1597909 ザビエル記念聖堂 2570 34.1796352 131.4728818
4 42 tourist 山口駅 9324 131.4815191 34.172788 五重塔 7136 34.190132 131.4734607

*/

2022/11,江端さんの技術メモ

package main

import (
	"fmt"
	"time"
)

func main() {
	now := time.Now() // 
	time.Sleep(time.Second * 3)

	a := time.Since(now).Milliseconds()

	fmt.Printf("経過: %vms\n", a) // 

}

C:\Users\ebata\yamaguchi\src_try1\others>go run .
経過: 3008ms

2022/11,江端さんの技術メモ

The target audiences of this primer are researchers and practitioners in the interdisciplinary fields of
transportation, who are specialized or interested in social science models, behavioral models, activitybased
travel demand models, lane use models, route choice models, human factors, and artificial
intelligence with applications in transportation.

こんな感じでemacsにコピペしたら、

  ← (見えないけど)半角のスペースが入っている。これで行末に" "'(半角スペース)が入る

としてから、

M-x replace-string C-q C-j (改行) (改行)

とすると、こうなる。

The target audiences of this primer are researchers and practitioners in the interdisciplinary fields of transportation, who are specialized or interested in social science models, behavioral models, activitybased travel demand models, lane use models, route choice models, human factors, and artificial intelligence with applications in transportation.

コマンド
タブ C-q C-i
改行 C-q C-j

これから濫用すると思うので、メモ

2022/11,江端さんの技術メモ

以前、

円周内の一様乱数

から、乱数の生成を作ることができました。

現在、斜め45度くらいに述びた街の位置情報を乱数で作る為に、楕円周内の一様乱数を調べていたのですが、見つけられていません。

累積密度関数が一様になるように計算式を作れば良い、ということは分かったのですが、そんなの面倒くさくてやっていられません。

ふと思ったのですが、円周内の一様乱数ではθとr を使って、乱数を使っていて、この場合、r=sqrt(乱数)を使っているのだから、θの値に応じた新しいr'を作ってそのまま放り込んでやればいいのでは、と思いつきました。

面倒なので、x軸方向の長さは1.0として、y軸方向の長さをbとすれば、

x=cosθ 、 y=b sinθ となるので、r'= sqrt(x^2+y^2) に放り込むだけ、上記の円周内の一様乱数と同じやり方でできるんじゃないの、と考えて、エクセルで試しました。ここではb=0.5にしています。

結論:上手くいきませんでした。

もう面倒くさくなったので、r' に sqrt(0~1)の乱数を使って、x=cosθ 、 y=b sinθ に乗算するだめの「なんちゃって楕円内の一様乱数」 を作って対応しました。

こんな感じです。

// 住民の居住区を計算
		shita := 2.0 * 3.141592654 * rand.Float64()
		x := 0.03296 * math.Cos(shita)
		y := 0.01893 * math.Sin(shita)
		r := math.Sqrt(rand.Float64())
		rx := r * x
		ry := r * y
		// 45度回転 + 基本座標
		x_map := 1.0/math.Sqrt(2.0)*(rx-ry) + 131.46231887576513
		y_map := 1.0/math.Sqrt(2.0)*(rx+ry) + 34.171317284454766

「ここは主戦場でなない」と腹を括って、逃げるのも、エンジニアには必須の技量です。

2022/10,江端さんの技術メモ

論文購読発表の準備をしていますが、このSEMというのがなかなか面白そうで、今、調べています、

「動かして理解する」が私の信条ですので、"R"と、"RStudio"をインストールして、

井出草平の研究ノート

を参考にして勉強させて頂いております。

install.packages("lavaan")
install.packages("semPlot")
In install.packages("XML") :
   パッケージ 'XML' のインストールは、ゼロでない終了値をもちました

→ が、上手くいかないなぁ

エラーメッセージは、

make: *** [C:/PROGRA~1/R/R-42~1.1/etc/x64/Makeconf:253: DocParse.o] Error 1
ERROR: compilation failed for package 'XML'
* removing 'C:/Users/ebata/AppData/Local/R/win-library/4.2/XML'
Warning in install.packages :
パッケージ ‘XML’ のインストールは、ゼロでない終了値をもちました

ですね。
MSYS2から、pacmanで libxml2-devel のインストールを試みています。

(ここまで)

$ pip install --upgrade pip

install.packages("XML", type = "binary") # これで上手くいった

以下、メモ

install.packages("AER")
install.packages("memisc")

library(lavaan) #lavaanパッケージの読み込み
library(AER) #AERパッケージの読み込み。
data(CPS1985) #データCPS1985の読み込み


2022/10,江端さんの技術メモ

変数や構造体などを一箇所に集めておいて、ソースコードから、#include "include.h" みたいに使うのは、Cの定番ですが、これだけのことをGoでやりたいだけなのに、酷く苦労しました。

大切なのは、ソースコードと違う場所に、そのインクルードファイルみたいなものを置きたい(×ソースコードの配下のディレクトリ)でなく、複数のgoのプロジェクトから共通して使いたい。

まあ、こんな感じです。

(人生最初のアイビスペイント+iPadの手書きです)

ソースファイルは、こんな感じです。

include.go

package include // この名前が、mail.goで使われるので覚えておいて下さい

type Person struct {  //  先頭大文字
	FirstName string // 先頭大文字 
	Age       int // 先頭大文字
}

main.go (これは、src,src2の両方で使っています)

package main

import (
	"fmt"
	"m/include"
)

func main() {
	var mike include.Person  // この "include.Person"という変数名が特徴です
	mike.FirstName = "Mike" // あとは構造体の属性を持ってくるだけ(先頭大文字を忘れないように)
	mike.Age = 20           // 同上
	fmt.Println(mike.FirstName, mike.Age) //=> Mike 20
}

で、ここからが重要なんですが、例えばsrcディレクトリの中で実行すると

PS C:\Users\ebata\dummy\go_test2\src> go run .
go: cannot find main module, but found .git/config in C:\Users\ebata
to create a module there, run:
cd ..\..\.. && go mod init

てなことを言われますので、include, src, src2の上のディレクトリで、

go mod init m // "m"でも、"mm"でも、"mmm"でも、かまわん

を実行すると、go.modができます。中身はこれだけです。

go.mod の中に、includeが書き込まれているとか、そういうことはないようです(どうなっているか分かりません)が、とりあえずsrcに移動して、main.goが動きました。