2022/12,江端さんの忘備録

Amazonで、演劇集団キャラメルボックスのDVD(中古)を買ってしまいました。

I bought a DVD (used) of the theater group Caramel Box on Amazon.

で、今日、DVDが届いたのですが ―― 我が家にDVDプレーヤがないことに気がつきました。

So, the DVD arrived today -- and I realized that I do not have a DVD player in my house.

正確に言えば「ある」のですが、今年購入したテレビにVCRインターフェースがないので接続できない。

To be precise, it "is" there, but I can't connect it because the TV I bought this year does not have a VCR interface.

さらに言えば、HDMI->AVの変換器もあるのだけど、逆方向(AV->DMI)がないし、経験的にアナログ->デジタル変換は画像の品質が悪いことを知っています。

More to the point, there are HDMI->AV converters, but I don't have the reverse direction (AV->DMI), and I know from experience that analog->digital conversion has poor image quality.

面倒ですが、DVDからリッピングして、ノートPCで上映するしかないなぁ、と思っています。

It's a hassle, but I think I'll have to rip it from the DVD and show it on my laptop.

Amazon Primeや、NetFlixの弊害ですね。

This is the downside of Amazon Prime and NetFlix.

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

自分の環境で作ったpostgresqlのDBを、先方にわざわざ作ってもらうのは申し訳ないので、丸ごとコピーして送付する方法

環境はこんな感じ

[192.168.0.23 の中に作ったDockerのPostgresqlのDBを起動]

中身は、

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 |
 kitaya_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
(5 rows)

[192.168.0.8(localhost)に入っている psqlクライアント一式]

【PostgreSQL】Windows に psql コマンドだけをインストールする手順

で、

C:\Users\ebata>pg_dump -U postgres -h 192.168.0.23 -p 15432 kitaya_db > kitaya_db.sql
Password:

C:\Users\ebata>pg_dump -U postgres -h 192.168.0.23 -p 15432 agent_db > agent_db.sql
Password:

で完了

あとは、kitaya_db.sql と agent_db.sqlを先方に送って、

バスが宇都宮ライトレールの上を驀進している ―― 宇都宮ライトレールの利用を拒否させるような、ダイクストラをどうやって作ろうか

の最後の2行10行を参考に、DBを作って貰えばOK

以上

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

楕円内の一様乱数

などと苦労しているのですが、結局のところ、私は地図のある領域を指定して、任意の緯度・軽度情報を出す乱数を作りたかったのです。

川の中から人が歩き始める」とか「山の中で人が消える」とか、シミュレーションと言えども、ちょっと許されない設定だと思いまして。

で、上記の記事を読まれた師匠のSさんから「こんなのがあるよ」と教え貰いました。

https://aginfo.cgk.affrc.go.jp/docs/pgisman/2.3.0/ST_GeneratePoints.html

適当なdbに接続して、例題を試してみました。

yama_db=# SELECT ST_GeneratePoints(ST_Buffer(ST_GeomFromText('LINESTRING(50 50,150 150,150 50)'), 10, 'endcap=round join=round'), 12);
st_generatepoints
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
01040000000C0000000101000000BBA9D0DF47496240F87F69424E0E5F400101000000B7F51F68D5646240F55A898F1F17504001010000003572FBDA8A5F5F400F87342089BE5E400101000000D4A38750931D5C40ED72799B370B5E4001010000006667943B23885B4066E8F671D97C5B400101000000EBA3152848526340221E78F6C3965D400101000000113BA23198BF6240C7234B9EF33D5840010100000069499F8062745540FF88E6BF407355400101000000A581F43AC300624042D083BD5A2262400101000000636CD355C19E62404AD3293D4D904B40010100000045F7B8041DAA4E405A849AF069A34F400101000000DE1370CF02E5564050D2988109CE5940
(1 row)

geom形式で出されても全然分からんので、st_asTextでラッピングしてみました。

yama_db=# SELECT st_asText(ST_GeneratePoints(ST_Buffer(ST_GeomFromText('LINESTRING(50 50,150 150,150 50)'), 10, 'endcap=round join=round'), 12));
st_astext
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MULTIPOINT(147.766265850576 102.733187047914,84.0318650671786 83.712367636874,149.077046025334 68.9777848138994,107.54047530747 106.78013766944,121.059921872846 120.108716631886,137.475992983887 141.067784163524,145.074876095804 96.5277972374404,92.7965422941866 103.656943557244,66.0805226475207 56.7924152255781,72.3801321221102 71.3671567226799,145.087956158666 41.5121740980702,151.631108302923 156.218459065337)

なるほど、乱数が出力されているようです。

'LINESTRING(50 50,150 150,150 50)'), 10 → 座標 (50,50)(150,150)(150,50)で繋がれた幅10の直線上に

'endcap=round join=round'), 12));  →  12個の座標乱数を作れ

という意味のようです。

 


さて、実際の地図で試してみました。

kitaya_db=# SELECT st_asText(ST_GeneratePoints(ST_GeomFromText('POLYGON((35.66463989558893 139.69827111644202,35.663009879798764 139.6983247606236,35.663436999453225 139.7011571734108,35.665398233838545 139.7012966482829,35.66463989558893 139.69827111644202))'),12));

これは、以下の地図の4点で取り囲まれた地区で、任意の12点を抽出しろというSQL文になっています。

POLYGON((35.66463989558893 139.69827111644202,35.663009879798764 139.6983247606236,35.663436999453225 139.7011571734108,35.665398233838545 139.7012966482829,35.66463989558893 139.69827111644202))

ポリゴン(POLYGON)は、始点と終点(上の赤字)を同じ座標として閉じなればならないようなので、注意して下さい。

このSQL文のアウトプットは、以下のようになりました。

st_astext
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MULTIPOINT(35.6638134136244 139.699085401991,35.6638440750173 139.700762425247,35.6634366319309 139.699705025931,35.6644917235626 ,35.66424835050 139.69868073913379 139.70025902483, 35.664689711471 139.700525986493,35.6635000403398 139.700601350665,35.6637472356065 139.698748086462,35.6641512918098 139.699288949827,35.6643791061995 139.701118277182,35.6636240715869 139.699272976596,35.6645803781279 139.699116246391)

エクセルで座標描いて、当ててみました。

全て領域の中に入っているようです。

さて、今度は、プログラム(go言語)でのこの座標の取り出し方です。


package main

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

	// "os"
	_ "github.com/lib/pq"
)


func main() {

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

	//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")

	rows, err := db.Query("SELECT st_asText(ST_GeneratePoints(ST_GeomFromText('POLYGON((35.66404878 139.6931452,35.66051393 139.6943828,35.65878732 139.6973512,35.658431 139.6997472,35.66067562 139.705346,35.66404467 139.706768,35.66790807 139.7049654,35.66945399 139.702109,35.66672151 139.7018011,35.66475716 139.6987517,35.66362838 139.6955941,35.66641828 139.6934209,35.66404878 139.6931452))'),12))")
	if err != nil {
		log.Fatal(err)
	}
	defer rows.Close()

	var msg string

	for rows.Next() {
		if err := rows.Scan(&msg); err != nil {
			fmt.Println(err)
		}

		// まずはMULTIPOINTをバラバラに分解する
		arr1 := regexp.MustCompile("[() ,]").Split(msg, -1) // '('か、')'か、' 'か、","で分割する → "[中身]" という構造でまぎらわしい

		for _, s := range arr1 {
			fmt.Printf("%s\n", s)
		}
	}
}

出力結果

> go run main3.go
MULTIPOINT
35.6601418389163
139.702654481044
35.661087233013
139.694572689447
35.6617615089132

Keyword: postgis postgres エリア 領域 範囲 指定 乱数 座標 囲む

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

先日購入した持ち歩き用のPCですが、普段は、自宅で実験用のデータベースサーバとして使っています。

本日、とあるソフトをインストールしたら、psql(Postgresqlのクライアント)が繋がらなくなりました。

C:\Users\ebata>psql -U postgres -h 192.168.0.23 -p 15432
psql: error: could not connect to server: Connection timed out (0x0000274C/10060)
Is the server running on host "192.168.0.23" and accepting
TCP/IP connections on port 15432?

まあ、間違いなく、そのソフトのインストーラが、『頼みもしないセキュリティを勝手に設定していきやがった』のは確実です。
私はこういうソフトウェアに心底頭に来ています。
こちらは、少ないコンピュータリソースを四苦八苦しながら回しているので、こういう所業をしてくるソフトウェア会社の「保身」の無神経さを、許せません。

私が、自宅のドメインの中のシステムで、どういうセキュリティの設定をしようが、私の自由です。人の庭に勝手に手を入れるな! と怒鳴りたい気持です。
(江端家ネットワークのファイアウォールを破って侵入して、PCを乗っとられたら私の負けですので、その時は『負けました』といいます)

で、まあ、これからのこういうことがありそうなので、もう壮大にセキュリティを緩めてしまいました。

この後、名称を「全てのTCPのポートをオープン」とかして、登録しました。

で、この後、再度psqlでアクセスしてみたところ、無事に

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=#
と、ログインできるようになりました。
こういう所業をしてくるソフトウェア会社の「保身」によって、私のPCの一台のセキュリティレベルが下がりました。
もし、江端家のシステムやPCがクラッキングを受けたら、この会社の責任です。
以上

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

[Control]+[Shift]でSKKが出てくる

[ALT] + [半角/全角漢字] で 日本語入力とアルファベット入力が切り変わる

 

モバイルPCとして購入した

を設定しているのですが、やっぱりEmacs+SKKが欲しくて、色々作業しています(やること山ほどあるけど、これをやらないと作業が捗らないので)

今回は、これまでと違って、SKKFEPというものを入れていみました(SKKのインストールで苦労するのが嫌だったからです)

今、動いているのですが、なんで動いているのか分からない状態なので、現時点で覚えていることを書き下しておきます。

参考にしたのはこちらのページ → SKK日本語入力FEP 今だ!インストールだ! (fc2.com)

Webサイト上の最新版の手動更新をブラウザでクリックして直接実行をすると、以下の画面がでてきて、設定してくれるようです。(管理者モードにしたかもしれないし、しなかったかもしれない)

で、次に、

SKK日本語入力FEP セットアップ処理一式 (Windows 7~10/Vista/XP)
β0+12i版 skkfep012_20220524.zip (92,698バイト) 追加ライブラリは不要です
異世界最新版のダウンロード
をダウンロードして、解凍して、その中にあったSETUP.jsを叩いた(ような気がする)

で、これで多分、SKKFEPが、この辺に表示されるだろう・・・と思ったのですが、これが出てこない。

のように、Microsoft IMEしかでてこなくて、頭を抱えました。

手当たりしだい、メニューを叩いて上記のように「言語バーのオプション」を叩いたら、以下の画面がでてきて、「キーの詳細設定」を選ぶとやっと、"SKK"という言葉がでてきました。

「シーケンスキーの変更」を押して、

のようにして、Ctrl+Shiftを押したら、やっとこさ、SKKのモードになりました。

少しインターフェースに戸惑うことがありますが、取り敢えず、後の設定は後で考えることにします。

以上

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

emacsやviに関する批評(というか”批判”ですね)は、数多くされていますが、これも前回、コンピュータ言語比較で論じた通り同様に『ばかばかしい』と思っています。

私のemacsで作成する文章の速度を越える人の数は、統計的には2σ以上(偏差値70以上)になると思いますので、これを捨てる必要はなかろうと思っています ―― emacsとSKKなしに、私の超長文コラムは製造できないと思います。

―― 自分の推しのプログラム言語のコラムをご希望の方。いつでもお仕事お引き受けします。


昨日、新しいマシンにWindowsに、手動で、もう誰も使っていないであろうemacs(Meadow)を手動でインストールしてみたのですが

これが、まだまだ、十分に動くんだなー(自分でも、かなりビックリしましたが)。
WindowsXPのころから使っているんだけど、凄いなー

という訳で、windowsが11,12,....とバージョンアップを続けても、動き続けるまで動かしてやろうと思っています。

で、

vscodeのemacsキーバインドマッピング 諦めました。

vscodeでは、emacsのキーバインドを完全に再現できそうにないことが分かってきましたし、vscodeは、Windowsタスクが重くなると頻繁にフリーズして、イライラさせられます。なので、コーディングは、全部Emacsで行うことにしました。

しかし、IDE (統合開発環境)としてのvscodeは完璧ですので、これを使わない手はありません。

で、今回、VSCodeのアドインの一つである、"Open in External Editor"というのを使って、(すったもんだありましたが)動いえているようなので、設定のメモを残しておきます。

拡張機能から、Open in Editorをインストールして、ギアをクリックします。

「拡張機能の設定」を選んで、メニューにある"setting.json"で編集をクリックします(どれをクリックしてもいい)

私の場合、最後の2行に以下を追加しました。

こうして、vscodeの方でファイル名の上で右クリックすると、"Open in Externl Editor"というメニューがでてくるので、これをクリックすると、emacsが立ち上がってきます。

vscodeの内容と、emacsの内容は、リアルタイムで連携しているようです(時々外れますが、その場合は、emacsを消してやりなおすと元に戻ることが多いです。

開発している様は無様でしょうが、コーディングでカッコつけても仕方ありません。
私は、このやり方で、押し通します。

以上

 

 

2021/12,江端さんの技術メモ

■Windows Updateの後は、絶対にWindows Defenderの設定をしなおせ

■Windows Updateがなくても、「重い」と思ったら、Windows Defenderの設定を見ろ → 勝手に設定されているぞ

昨日から「Windows10が重くて使えない」という状態が続くので、タスクマネージャーを見てみたら、Antimalware Service Executableのメモリ消費量がシャレにならないくらい大きいことが分かりました。

メモリ/ディスクを使用する重いAntimalware Service Executableの対処法【停止も】

対処2: Windows Defenderのタスクスケジューラで設定を変更する

  1. 「Windowsマーク」をクリックし、「Windows管理ツール」→「タスクスケジューラ」の順にクリックします。
  2. タスクスケジューラの画面が表示されたら、左ペインで「タスクスケジューラライブラリ」をクリックしてツリーを展開します。
  3. 「Microsoft」→「Windows」→「Windows Defender」の順に展開します。
  4. 「Windows Defender」を選択して、右側にある「Windows Defender Scheduled Scan」をダブルクリックします。
  5. 画面が表示されたら「全般」タブを選択します。
  6. 画面下部にある「最上位の特権で実行する」のチェックを以下の4つの項目全部で外します。(つまり、以下の処理を項目ごとに、全部で4回やる、ということです)
  7. 「最上位の特権で実行する」のボタンが押せないので、「プロパティ」を押す

    ここからチェックを外す

  8. 「OK」をクリックします。

とりあえず、これで「Windows10が重くて使えない」状態は解消できるようになりました。


ノートPCも恐しく遅くて使えないので、この方法を試しました。現在、ちんたらと再起動処理をしているようですので、多分改善すると思います。

あやうくノートPCを廃棄してしまうところでした。

 

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

先程、シミュレータを動かそうとしたら、

ebata@DESKTOP-P6KREM0 MINGW64 ~/yamaguchi/src/PruneMobile
$ go run .
file cert.crt found switching to https
The process exited with https error: listen tcp :8080: bind: Only one usage of e
ach socket address (protocol/network address/port) is normally permitted.
exit status 1

が出てきたので、昨日インストールした、MSIPのサービスを停止したら、問題が解決した。

昨日、MSIPのサービスをインストールしたのだけど、その時ポート番号8080を使うようなパラメタの設定が少々気になったけど、デフォルトだったので、そのままにしておいた。

ポート番号を替えればいいのだろうけど、それはまたそれで、別の問題作りそうなので、当面は、サービスを止めて対応することにする(そのうち、シミュレータの方のポートを変更しようと思う)