2024,江端さんの技術メモ

以下の方法は、以下のようにGeometry型にしなければならないらしい → 可読性が悪くなるので、この方法は採用しないことにした。
OBJECTID,BLDG_ID,Posting,HH_id,centroid_geom,AnsFlag,Shape_Area
1,1,1,,"POINT(139.6193534 35.3662534)",,2994.84232
2,3,0,,"POINT(139.6247907 35.36777712)",,2311.216892
3,4,0,,"POINT(139.6238161 35.36573877)",,1814.524575
4,5,0,,"POINT(139.6243819 35.36882641)",,1669.266149

================================
以下のHH.csvというファイルがあったとします。
OBJECTID,BLDG_ID,Posting,HH_id,CENTROID_X,CENTROID_Y,AnsFlag,Shape_Area
1,1,1,,139.6193534,35.3662534,,2994.84232
2,3,0,,139.6247907,35.36777712,,2311.216892
3,4,0,,139.6238161,35.36573877,,1814.524575
4,5,0,,139.6243819,35.36882641,,1669.266149
5,7,1,13033,139.6213946,35.36896447,1,1377.877194CENTROID_X CENTROID_Yが、それぞれ経度と緯度の情報が入っています。 このcsvファイルを使って、作成手順を具体的に説明して下さい。
================================
以下は、PostgreSQLにCSVファイルをインポートし、PostGISを使用して緯度経度情報を含むデータを扱う手順です。
  1. PostGIS拡張機能の有効化: PostgreSQLでPostGIS拡張機能を有効化します。
    CREATE EXTENSION postgis;
  2. テーブルの作成: CSVファイルをインポートするためのテーブルを作成します。緯度経度情報を含むカラムには、地理空間データ型のポイント(Point)を使用します。
    CREATE TABLE HH (
    OBJECTID INTEGER,
    BLDG_ID INTEGER,
    Posting INTEGER,
    HH_id INTEGER,
    CENTROID_GEOM GEOMETRY(Point, 4326),
    AnsFlag INTEGER,
    Shape_Area NUMERIC
    );

    ここで、HHはテーブルの名前を指定します。CENTROID_GEOMカラムは、緯度経度情報を格納する地理空間データ型のカラムです。

  3. CSVファイルのインポート: COPYコマンドを使用して、CSVファイルを作成したテーブルに直接インポートします。
    COPY HH (OBJECTID, BLDG_ID, Posting, HH_id, CENTROID_X, CENTROID_Y, AnsFlag, Shape_Area)
    FROM 'HH.csv'
    DELIMITER ','
    CSV HEADER;

    ここで、path_to_your_csv_fileは、インポートするCSVファイルのパスを指定します。

  4. 緯度経度情報の更新: インポートしたテーブル内の緯度経度情報を使用して、地理空間データ型のカラムを更新します。
    UPDATE HH SET CENTROID_GEOM = ST_SetSRID(ST_MakePoint(CENTROID_X, CENTROID_Y), 4326);

これで、CSVファイル内の緯度経度情報を持つデータをPostgreSQLにインポートし、PostGISを使用して地理空間データとして扱う準備が整いました。QGISなどのGISソフトウェアを使用して、地理情報を可視化したり分析したりすることができます。

2024,江端さんの忘備録

陽気で多弁、トレンドの話題に精通し、場の空気を読んだ話題を提供でき、誰とも気さくに話せる ―― 陽のキャラクタ『陽キャ』。

Cheerful, multi-syllabic, well versed in trending topics, able to talk about the issues of the moment, and friendly with everyone -- "Extrovert" character.

世間を見てみると、「陽キャ」だけが、世の中を幸せに生きる、というようなコンテンツが多いです。

If you look at the world, you will see a lot of content that says only "Extroverts" live happily.

私もティーンエイジャのころ、「根暗(ネクラ)」と言われたくない一心で、『陽キャのペルソナ』を作るのに一生懸命だったように思います。

When I was a teenager, I think I worked very hard to create an "Extrovert persona" with the sole intention of not being called "dark-rooted."

外面はどうあれ、私の内実は、「負け組」「陰キャ」「根暗(ネクラ)」で、そんな私にとって、学校は『地獄そのもの』だったのです。

しかし、「陽キャ」が通じるのは、社会人になるまでのことです。

However, "Extrovert" can only be helpful until one enters the workforce.

もちろん、「陽キャ」は、その後の人生においてもメリットになることは多いです(恋愛とか結婚とか友人とか)。

Of course, "Extrovert" is often an advantage in later life (love, marriage, friends, etc.).

しかし、社会は「陽キャ」だけで乗り切れるほど、甘いものではありません。

However, society is not so lenient that one can get through it with only an "Extrovert.

社会では、どんなに「陽キャ」であったとしても、アウトプット(成果)を出せない者に対して、恐しく厳しく、そして冷たいです。

In society, no matter how "Extrovert" you are, people who fail to produce output (results) are harsh and cold.

最近は、私は「陽キャでない」方が、メリットが大きいのではないか、と思うことがあります。

Lately, I have sometimes wondered if I would benefit more from being "less Extrovert."

-----

私は、長い間サラリーマンをやってきたのですが、その中で、誰が怖いかというと「有能」で「無口で無愛想な上司」です。

I have been a businessman for a long time and who I fear is the "competent" and "silent and unsympathetic boss".

私が、色々な話題を組み込んで、一生懸命説明して、私なりのリズムで説明しても、そのノリで返してくれず、会話の途中で黙り込む上司は、本当に怖いです。

I am terrified of a boss who doesn't get back in the groove and shuts down in the middle of a conversation, even when I do my best to incorporate a variety of topics and explain them in my rhythm.

私が言わないで誤魔化したいと思っていることを、全て見抜かれているような、そんな恐怖があります。

I fear they can see everything I am trying to deceive myself into not saying.

そして、大抵の場合、そのような上司の多くは『それを見抜きます』。

And, by and large, many such bosses 'see through it.

「陽キャのノリ」にノラない上司は、「ノリ」ではなく、「自分の考え」を「自分のペース」で話をします。

Bosses who don't get into the "Extrovert groove" will talk about "their ideas" at their own pace, not "in the groove."

そのような上司は、「場の空気を読む」ことをしません。

Such a boss does not "read the air".

それ故に、彼らは『最強』であり、そして多くの場合『正しい』。

Hence, they are 'strongest' and often 'right'.

私のような、「完璧否定主義者」「手抜き至上主義者」にとっては、このような人は、本当に怖いのです。

For a "perfection denier" and "corner-cutting supremacist" like myself, these people are horrifying.

私たちは、所詮、「組織の歯車」という「兵隊」ですから。

-----

我が国の大企業の社長さんには、このような人が多いように思います。

I think many of the presidents of large companies in our country are like this.

(ウラは取っていないのですが)、『学生の頃に、生徒会長やら、テニス部の部長やら、陽のサイドにいた人間は、将来出世しない』という仮説があるようです。

(I didn't get the original information), there seems to be a hypothesis that 'people who were student body president, tennis club president, or on the yang side when they were students, don't get ahead in the future.

私の長いサラリーマン人生で見てきた限り、この仮説は"採択"できます。

From what I have seen in my long career as a businessman, I can "adopt" this hypothesis.

「陽」だけで乗り切れる期間は、人生の中のほんの一部です。

The period you can get through with only "Extrovert " is only a tiny part of your life.

社会で求められるのは、アウトプット(成果)だけです。

In society, only output (results) is essential.

-----

『努力し続ける無口なコミュ障が、最強となる』 ―― (他の国は知りませんが)我が国の多くの組織には、このメカニズムが組み込まれているように思います(その是非はともあれ)。

The silent communicator who keeps trying will be the strongest." - I think this mechanism is built into many organizations in our country (I don't know about other countries), regardless of their merits or demerits.

もちろん、「陽キャ」であることが悪い訳ではありません。

Of course, being "Extrovert " is not a bad thing.

ただ、「『陽キャのペルソナ』を作るのに一生懸命になる」ことは、あまり意味がないと思っています。

However, I don't think it makes much sense to "work hard to create an 'Extrovert persona.'"

―― ということを、ティーンエイジャの皆さんに申し上げても無駄であることは、分かっているんですけどね。

I know that it is useless to say this to teenagers.

ティーンエイジャの世界線においては、「恋人」と「友人(数)」が、"通貨"であることは、揺がせない事実ですから。

In the teenager's world line, it is true that "lovers" and "friends (number)" are the "currency,"

そして、彼等は、その"貨幣"の多少、つまり"友人数"という価値の呪縛から逃れられないからです。

2024,江端さんの忘備録

子育て支援金の具体的な金額が出てきました。

The specific amount of the childcare subsidy is now available.

賛否に関係なく、このようなデータが出てくのは良いことだと思います。htt

Regardless of the pros and cons, it is good to see this kind of data coming out.

そのデータを計算するプログラムや計算表も開示してくれれば、(私は)助かります。

It would be helpful (to me) if you could also disclose the program or spreadsheet that calculates that data.

しかし、それを開示すると、私のような計算オタクが『いらんことをやりだす』ことが予想できますので、政府が開示しないのは当然でしょう。

However, if they disclose it, I can expect math geeks like me to 'start doing things they don't want,' so it's not surprising that the government won't disclose it.

プログラムや計算表を見たければ、『NDA(守秘義務契約)にサインしてから、政府の仕事(国家プロジェクト)に関われ』が、政府の言い分でしょう。

If you want to see the program or the spreadsheet, the government will say, 'You have to sign an NDA (Non-Disclosure Agreement) before you can get involved in government work (national project).

例えば、昨年、私は、ある省庁の持っているデータを閲覧する許諾を得るために、数ヶ月の時間を要しました。

For example, last year, it took me several months to get permission to view a ministry's data.

思ったほどではなかったのですが、それなりに大変ではありました。

It wasn't as complicated as I thought, but it was a lot of work.

それはさておき。

Aside from that.

-----

「出生率の低下」が何故悪いのか。

Why is "declining birth rates" bad?

私個人としては、私は子どもが少なくなっても、人口が減っても良いと思っています。

I am willing to have fewer children and a smaller population.

結婚、非婚もどーだっていいです。

Married or unmarried, it doesn't matter.

問題は、その変化の"速度"なのです。

The problem is the "speed" of change.

"長時間"かけて、"ゆっくり"と変化していくことに意味があると思っています。

It is meaningful to change "slowly" over an "extended period.

こちらに、国家のシステムコストから考えた、少子化対策の意義について、私の私見を記載をしていますので、興味がある方はどうぞ。

If you are interested, the following is my personal view on the significance of fertility reduction measures from the perspective of national system costs.

例えば、幼児や小学生の女児がいるような家に、頻繁に独身の男がやってくるのを、歓迎する親がいると思うか?

 

-----

「子育て支援金」に対する対抗策として、(一部の人が)使える戦略を考えてみました。

I have come up with a strategy that can be used by (some) as a counter to "childcare subsidies."

―― 「お年玉」という我が国の慣習の撤廃

"Eliminating the Japanese custom of "New Year's gifts"."

私は、親戚づきあいが少ないので、「お年玉」を出すこと自体が少ないので、対象外ではあるのですが、そうでない人は、これからは、こういう言い方で「お年玉」の支出を0円にできます。

I don't have many relatives, so I don't often give out "New Year's gifts," so I am not eligible, but for those who don't, from now on, you can use this kind of wording to make your "New Year's gift" spending zero yen.

『お前へのお年玉は、我が家からは、政府を経由してすでに年間3~4万円を渡してある。今後、お年玉はそっち(政府)から貰ってくれ』

The government has already given you 30,000 to 40,000 yen a year as a New Year's gift through the government. From now on, please get your New Year's gift from there (the government).

とした上で、

And,

―― 日本国政府から子どもへのお年玉の支給、 別名『子どもボーナス』

The "Children's Bonus is the Japanese government's New Year's gift to children."

を設立。

They will establish the above.

電子マネーで、子どものスマホや学校支給のタブレットに直接チャージされるようにすれば、デジタル教育や投資教育にも役に立ちます。

Electronic money, charged directly to a child's smartphone or school-issued tablet, would be helpful for digital and investment education.

なにより、このお年玉の額で、子どもは我が国の経済の実態を、肌で感じることができると思います。

Above all, I believe that the amount of this New Year's gift will allow children to experience firsthand the economic reality of our country.

そして、政権は、子ども(の関心)を引きつけ、その後の投票率に繋げることになります。

The administration will then attract children (and their interest), leading to subsequent voter turnout.

現在、現在の政権は、票田である高齢者に「いい顔」をする政策を取っていますが、この『子どもボーナス』によって、政権が若者の方に向く可能性も出てきます。

The current administration is pursuing policies that "look good" to the elderly, who are the voting base, but this "child bonus" could lead to the possibility that the administration will turn toward the young.

-----

いずれにしろ、「お年玉の撤廃」によって、「子育て支援金」という制度が、子どもからも憎悪される対象となります。

In any case, the "elimination of the annual allowance" makes the "child care subsidy" program a target of hatred even among children.

そして、「子育て支援金」が、『子どもを含めた我が国全体の問題』であるという認識を、「怒り」で共有されることに意義があると考えています。

We believe it is significant that "anger" is shared in the recognition that "child care subsidy" is "an issue for our entire nation, including children.

-----

なお、勘違いされると困るので、申し上げておきますが、私は「子育て支援金」を支持しております。

In addition, I would like to state, lest you misunderstand me, that I support the "child care subsidy."

我が国のシステムを総入替するコストに比べれば、この程度の金額なら、(今のところは)十分に許容範囲です。

Compared to the cost of a total replacement of our country's systems, this amount of money is (for now) well within the acceptable range.

2024,江端さんの技術メモ

「レイヤ」→「輝度を透明度に変換」→不透明度保護にチェック → 白で塗りつぶし(バケツ)

上記のレイヤーの下に新規レイヤー→黒で塗りつぶし

 

2024,江端さんの忘備録

先週末、家族で、映画「オッペンハイマー」を見てきました。

Last weekend, my family and I saw the movie "Oppenheimer."

私が、予想していた内容とちょっと違っていました。

It was a little different from what I had expected.

私は、「プロジェクト管理」とか「技術」とかの話を期待していましたので、政治(戦後の赤狩り)の話は、ちょっと重かったです。

この監視社会は、私達が選択した社会です。

I was expecting a "project management" or "technology" talk, so the politics (post-war red hunts) were a bit heavy.

まあ、それはさておき。

Well, let's put that aside.

私、マンハッタン計画については、NHKスペシャルの他、この本を読んだりして、色々知っていますが、今でも疑問に思っていることがあります。

I know much about the Manhattan Project from reading this book and the NHK Special, but I still have questions.

『原爆実験(トリニティ実験)が初回で成功した』ということです。

The Trinity test was successful the first time.

技術に関する実験は、大抵、最初は失敗します。例えば、「ロケット実験」などが良い例でしょうか。

Technology experiments usually fail at first. A good example would be "rocket experiments.

これまで、人類がどれだけのロケットが打ち上げに失敗してきたかは、昔話ではなく、現在進行形の話です。

It is not an old story of how many rockets humanity has failed to launch in the past, but an ongoing story.

もちろん、膨大な費用と月日をつぎ込み、しかも失敗が許されない、というミッションであることは分かっているのですが ―― それでも、なお失敗するのが、実験というものです。

Of course, this mission requires tremendous money and time, and that failure was unacceptable. Even so, Still, any experiment is doomed to fail.

「爆縮レンズ」という原爆を起爆する装置(爆弾)が、初回で作動したということが、ちょっと信じられないのです。

It is a little hard to believe that the device (bomb) that detonates the atomic bomb, called the "detonation lens," worked the first time.

さらに言いますと、広島、長崎に原爆を投下する場合には、もう一段、難しいものになっていたはずです。

Furthermore, in the case of the atomic bombings of Hiroshima and Nagasaki, it would have been even more difficult.

空中に放り出した原爆の爆縮レンズの爆破タイミング(調べたら、ナノ秒単位の精度が必要とのこと)をコントロールするには、想像を絶する難しい技術が必要だったと思います。

Controlling the timing of the detonation of the detonation lens of an atomic bomb thrown up into the air (I checked and found that it requires nanosecond precision) would have required unimaginably tricky technology.

もし、映画「オッペンハイマー」に、その手の「技術」の話を期待している人には、方向性が違うと思います。

If you expect the movie "Oppenheimer" to be about that kind of "technology," you will be disappointed.

まあ、そういう技術の話だけで、アカデミー賞7部門受賞を得るのは、無理でしょうが。

They can't get seven Academy Awards just for that kind of technology.

-----

私が、この映画でショックを受けたのは、「原爆の爆発で、大気が発火して地球全体が焼き尽くされる」という仮説があり、実際に検証が行われていたということです(これはフィクションではないようです)。

What shocked me about the movie was that there was a hypothesis that the explosion of the atomic bomb would ignite the atmosphere and burn up the entire earth and that they tested this hypothesis (this does not seem to be fiction).

私は、この仮説について、全く知りませんでした。

I had no idea about this hypothesis.

―― もし、この仮説が採択されていれば、人類は、原爆を持つことを放棄せざるを得なかった

"If they adopted this hypothesis, mankind would have been forced to abandon the idea of having atomic bombs."

と考えると『惜しいことをしたな』とも思います。

When I think about it, I also think, 'That was a shame.

しかし、「原爆のない世界」が、「今よりはマシな世界」になっただろうかと問われたら、私は「分かりません」としか答えられません。

However, when asked if a "world without atomic bombs" would have been "a better world than the one we live in now," I can only answer, "I don't know.

-----

あと、これは当時の知識から鑑みて妥当かと思うのですが、登場人物に『被爆への恐怖が感じられない』ということです。

Another thing, which I think is appropriate in light of the knowledge of the time, is that the characters do not seem to fear being "exposed to the atomic bomb.

まあ、原爆による被爆の被害については、かなり後になって分かってきたことなので、そういう意味では、この映画はその時代を正しく反映している、とも思います。

Well, we learned about the "damages of exposure" to the atomic bombing much later, so in that sense, I think the film is an accurate reflection of its time.

- 長崎の原爆投下終了時に、米国には、まだ9発の原爆のストックがあった

2024,江端さんの技術メモ

■tcを使って帯域を10Mbpsに制限する"だけ"のコマンド
sudo tc qdisc add dev eth0 root tbf rate 10mbit burst 10kb latency 100ms
(burst 10kb latency 100msを付けないと、エラーになる)

■tcを使って遅延を500msに制限するだけのtcコマンド
sudo tc qdisc add dev eth0 root netem delay 500ms

■tcを使ってパケットロスを10%に制限する"だけ"のコマンド
sudo tc qdisc add dev eth0 root netem loss 10%

■tcを使ってパケットを保持できるキューの最大数を1000に制限する"だけ"のコマンド
sudo tc qdisc change dev eth0 root handle 1: pfifo limit 1000

  • change: 既存のキューイング方式を変更する際に使用されるオプションです。
  • dev eth0: 変更を加える対象となるネットワークインターフェースを指定します。この場合はeth0です。
  • root: ルートキュー(ルートディスクリプタ)に変更を加えることを示します。
  • handle 1:: ルートキューを特定するためのハンドルを指定します。1:は一般的にルートキューを表します。
  • pfifo: パケットを先入先出順で処理する単純なキューイング方式です。
  • limit 1000: パケットを保持できるキューの最大数を指定します。ここでは1000としています。
分類 qdiscの名前 カーネルソースファイルの場所 概要
クラスレス qdisc pfifo_fast net/sched/sch_generic.c デフォルトのqdiscです。FIFOのキューが3つあります
pfifo net/sched/sch_fifo.c FIFOのキューが1つあります。キュー長の最大値はパケット数で表します
bfifo 同上 FIFOのキューが1つあります。 キュー長の最大値はバイト数で表します
sfq(Stochastic Fairness Queueing) net/sched/sch_sfq.c フローにもとづいてパケットをスケジューリングします。フローとは送信元/送信先IPアドレス、ポート番号の組です
tbf(Token Bucket Filter) net/sched/sch_tbf.c パケットシェーピング機能を提供します。制限レートを超えたパケットはキューに保留されます
netem(Network Emulator) net/sched/sch_netem.c 送信パケットに対して、パケット廃棄、遅延等の操作をするためのqdiscです
fq(Fair Queue Packet Schedule) net/sched/sch_fq.c Fair Queue Packet Scheduler (per flow pacing)
クラスフル qdisc prio net/sched/sch_prio.c ルールにしたがってパケットを分類(class)します。デフォルトでは3つのクラスがあります。それぞれのクラスにqdisc(sfq,tbf等)を設定することができます。
htb(Hierarchy Token Bucket) net/sched/sch_htb.c 1つのリンクを複数のサービス(www,ftp等)で共有する場合、各サービスに最低限必要な帯域を割り当てることができます

計測は、iperf3で行う

iPerf3を使用したネットワーク速度計測

sudo tc qdisc add dev eth0 root tbf rate 10mbit burst 10kb latency 100ms このコマンドにパケットロス10%を追加して下さい

sudo tc qdisc add dev eth0 root handle 1: tbf rate 10mbit burst 10kb latency 100ms sudo tc qdisc add dev eth0 parent 1:1 handle 10: netem loss 10%

 

 

 

2024,江端さんの忘備録

私は、現場の苦労も知らずに命令をしてくる奴が嫌いです(まあ、好きな人はいないでしょうが)。

I don't like guys who give orders without knowing the hardships in the field (well, who doesn't like them).

そう言いつつも、私も、そういう「命令をする側」になっていると思います。

I, too, am on the side of such "giving orders."

ただ、自分が、「命令をする側」に立っていると自覚することは難しいです。

However, it isn't easy to realize that you are standing on the side of giving orders.

人は「命令する側」になって、部下や他人から、恨まれ、憎まれていることには、全く無頓着です。

People are indifferent to the fact that they are "the ones giving orders" and are resented and hated by their subordinates and others.

私たちは、自分が部下が追いつめていることや、部下が病気になっていることや、退職していることに、気がつくことができません。

We are unaware of the pressure we put on our people, making them sick and retiring them.

一方、人間は、「命令される側」になると、不快な気分になります。そして、その人間への憎しみを決して忘れません。

On the other hand, humans feel uncomfortable when they are being "ordered around." And we never forget our hatred for that human being.

(たまにテレビのインタビューなのどで、『今になって思えば、あの上司の叱責は、私を思ってのことであった』などの美談で纏めている奴は、『能天気な人格者』か『保身に走る嘘吐き』か『自分史の歴史改竄者』と思っています)。

「青春」とは「歴史改竄」のことです。

(Sometimes, in TV interviews, those who summarize with beautiful stories such as "In hindsight, my boss's reprimand" are "good-natured personalities" or "self-protective liars" or "falsifiers of their history").

人間は、組織化(社会化)されると必ずこの様になります。

Whenever human beings are organized (socialized), they become like this.

そして、これを修正する方法が、絶望的に存在しないことを知っています。

And we know that there is hopelessly no way to fix this.

この社会において、私たちは「命令される側」「命令する側」のどちらからも逃れることは、本当に難しいのです。

In this society, it is tough to escape from "the one who orders" and "the one who gives orders."

-----

ところが、最近、私が「命令する側」になっていることを、自覚できる手段があることが分かってきました。

Recently, however, I have discovered that there are means by which I can become aware that I am on the "commanding side."

「生成AI」です。

Generative AI.

最近の私は、プログラムの殆どを、"ChatGPT"か、"Github Copilot"に作ってもらっています。

Recently, I have been using "ChatGPT" or "Github Copilot" for most of my programs.

最近、『ChatGPTを使うコツは、仕事を人に頼む時と同じ』ということが分かってきました。

生成AIに頼りすぎていて、『自分のコーディング力が、恐しく低下しているのではないか』と心配になる程です。

I rely so much on generative AI that my coding skills may decline.

(というか、間違いなく低下していると思う)

(I mean, I think it's declining.)

現在の私のプログラムの作り方は、こんな感じです。

Here is how I currently make my program.

======

(Step.1)プログラムの概要を日本語で生成AIに入力する

(Step.1) Input the outline of the program in Japanese to the generating AI.

(Step.2)生成されたプログラムを実行する

(Step.2) Execute the generated program

(Step.3)エラーが出てきたら、それを生成AIに入力し、(Step.2)に戻る。

(Step.3) If an error appears, enter it into the generating AI and return to (Step.2).

(Step.4)エラーは出てこないが、期待通りの結果が得られなかったら、その旨を生成AIに入力し、(Step.2)に戻る。

(Step.4) If no error appears but I cannot get the expected result, enter that into the generating AI and return to (Step. 2).

======

これを繰り返して、プログラムが期待通りに動くまで続けます。

I would repeat this and continue until the program works as expected.

しかし、これを何度繰り返しても、プログラムが動かないこともあります。

However, no matter how often repeated, the program may not work.

すると、私は生成AIに対して『何で動かないんだ!』と文句を言いたくなります ―― ろくにプログラムも読まずに、助けて貰っているのにもかかわらずです。

Then I want to ask the generative AI, 'Why isn't it working? -- even though I'm getting help without having read the program thoroughly.

この私の態度は、私がもっとも軽蔑する人間の振る舞いと同じです。

This attitude is the same as the behavior of the people I despise the most.

こうして、私は、「命令する側」を自覚するに至りました。

Thus, I became aware of the "ordering side".

-----

私がどれほど厳しいことを言っても、生成AIは「うつ病」になったり「退職」したり「自死」したりすることはない ―― この、安心感は、多分、人間を『傲慢』にしていくと思います。

No matter how harsh I am, the generated AI will not become "depressed" or "retire" or "commit suicide" -- this, I think, a sense of security will probably make humans 'arrogant.'

私は、多くの人が考えている方向 ―― AIに職を奪われる ―― とは別の方向で、生成AIによる弊害を心配しています。

I am concerned about the harm caused by generative AI in a different direction than many people think -- losing jobs to AI.

生成AIの利用は、普通の人を「攻撃的」で「衝動的」な人間に変えてしまう可能性が高いのです。

Generative AI will likely turn ordinary people into "aggressive" and "impulsive" people.

「生成AI」が文句を言わないで服従する道具であるから「攻撃的」で「衝動的」になっても良い、という理屈は、

The logic that it is OK for a "generative AI" to be "aggressive" and "impulsive" because it is a tool that complains and obeys without complaint,

「気弱な人」が文句を言わないで服従する人間だから「攻撃的」で「衝動的」になっても良い、という理屈と同じです。

It is equal to the logic that it is OK for a "feeble-minded person" to be "aggressive" and "impulsive" because they are human beings who submit without complaint. It is the same logic that justifies "bullying" and "power harassment.

つまり、「いじめ」や「パワハラ」を正当化するロジックと同じです。

In other words, it is the same logic that justifies "bullying" and "power harassment.

-----

という訳で、私は、

Therefore, I recommend the following mechanisms in the generative AI:

―― 理性的に生成AIを扱えない人間は、生成AIが、その人間へのサービスの提供を拒否する

"If a human being cannot rationally handle a generative AI, the generative AI will refuse to provide services to that human being."

というメカニズムを、現時点で組み込むことを提言します。

It is not "for the sake of generative AI" but "for the sake of us humans."

2024,江端さんの技術メモ

/*
	c:\Users\ebata\tomioka3b\others\main42.go
	指定されたファイルから時刻表を読み込み、最も近い未来の時刻を取得します。
*/
package main

import (
	"bufio"
	"fmt"
	"os"
	"strings"
	"time"
)

func main() {
	// 指定されたファイル名
	fileName := "To_Sengakuzi_weekdays.csv" // ここにファイル名を入力してください

	// 指定されたファイルから時刻表を読み込む
	schedule, err := readScheduleFromFile(fileName)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	//fmt.Println("時刻表:", schedule)

	// 現在時刻を取得
	now := time.Now().Format("15:04:05")
	now = "12:29:00"

	// 最も近い未来の時刻を取得
	nextTime := getNextTime(schedule, now)

	// 結果を出力
	fmt.Println("最も近い未来の時刻:", nextTime)
}

func readScheduleFromFile(fileName string) ([]time.Time, error) {
	// ファイルを開く
	file, err := os.Open(fileName)
	if err != nil {
		return nil, err
	}
	defer file.Close()

	var schedule []time.Time

	// ファイルから時刻を読み取る
	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		line := scanner.Text()
		times := strings.Split(line, ",")
		for _, t := range times {
			//fmt.Println("時刻:", t)
			t1, err := time.Parse("15:04:05", t)
			if err != nil {
				fmt.Println("時刻のパースに失敗しました:", err)
				return nil, err
			}
			schedule = append(schedule, t1)
		}
	}

	// fmt.Println("pass4")
	// fmt.Println("schedule: ", schedule)

	return schedule, nil
}

// 指定された時刻表から最も近い未来の時刻を取得する関数
func getNextTime(schedule []time.Time, inputTime string) string {
	// 入力時刻のパース
	input, err := time.Parse("15:04:05", inputTime)
	if err != nil {
		panic(err)
	}

	// 時刻表の各時刻との差を計算し、最小の差を見つける
	minDiff := time.Hour * 24
	var nextTime string
	for _, t := range schedule {
		// 時刻の差を計算
		diff := t.Sub(input)

		// 負の差(過去の時刻)を無視
		if diff < 0 {
			continue
		}

		// 最小の差を更新
		if diff < minDiff {
			minDiff = diff
			nextTime = t.Format("15:04:05")
		}
	}

	return nextTime
}

To_Sengakuzi_weekdays.csv

4:53:00
5:08:00,5:23:00,5:32:00,5:44:00,5:55:00
6:03:00,6:14:00,6:26:00,6:33:00,6:40:00,6:44:00,6:49:00,6:53:00,6:59:00
7:04:00,7:09:00,7:14:00,7:19:00,7:26:00,7:30:00,7:37:00,7:46:00,7:52:00,7:58:00
8:06:00,8:14:00,8:21:00,8:26:00,8:33:00,8:41:00,8:47:00,8:54:00
9:02:00,9:10:00,9:21:00,9:31:00,9:41:00,9:53:00
10:03:00,10:13:00,10:24:00,10:33:00,10:44:00,10:53:00
11:04:00,11:13:00,11:24:00,11:32:00,11:44:00,11:53:00
12:04:00,12:13:00,12:24:00,12:33:00,12:44:00,12:53:00
13:04:00,13:13:00,13:24:00,13:33:00,13:44:00,13:53:00
14:04:00,14:13:00,14:24:00,14:33:00,14:43:00,14:52:00
15:02:00,15:12:00,15:22:00,15:31:00,15:41:00,15:52:00
16:01:00,16:10:00,16:20:00,16:31:00,16:42:00,16:53:00
17:02:00,17:13:00,17:23:00,17:34:00,17:43:00,17:53:00,17:59:00
18:12:00,18:19:00,18:28:00,18:38:00,18:48:00,18:57:00
19:08:00,19:18:00,19:26:00,19:36:00,19:46:00,19:55:00
20:06:00,20:16:00,20:27:00,20:36:00,20:46:00,20:56:00
21:08:00,21:15:00,21:18:00,21:29:00,21:39:00,21:50:00
22:01:00,22:11:00,22:21:00,22:26:00,22:38:00,22:53:00
23:12:00,23:33:00,23:54:00

 

2024,江端さんの技術メモ

/*
	c:\users\ebata\tomioka3b\src\others\main41.go
	2次元スプライン関数を使用して、緯度と経度のペアに対応する目的地までの時間を計算します。
*/

package main

import (
	"fmt"
	"sort"
)

// スプライン補間用の関数
func splineInterpolation(dataSet [][]float64) func(float64, float64) float64 {
	n := len(dataSet)

	// xの値を昇順にソートする
	sort.Slice(dataSet, func(i, j int) bool {
		return dataSet[i][0] < dataSet[j][0]
	})

	// トリディアゴナル行列を作成
	h := make([]float64, n-1)
	for i := 0; i < n-1; i++ {
		h[i] = dataSet[i+1][0] - dataSet[i][0]
	}

	// 2階微分の値を計算
	delta := make([]float64, n)
	for i := 1; i < n-1; i++ {
		delta[i] = (dataSet[i+1][1]-dataSet[i][1])/h[i] - (dataSet[i][1]-dataSet[i-1][1])/h[i-1]
	}

	// トリディアゴナル行列を解く
	m := make([]float64, n)
	l := make([]float64, n)
	zArray := make([]float64, n)
	l[0] = 1
	for i := 1; i < n-1; i++ {
		l[i] = 2*(dataSet[i+1][0]-dataSet[i-1][0]) - h[i-1]*m[i-1]
		m[i] = h[i] / l[i]
		zArray[i] = (delta[i] - h[i-1]*zArray[i-1]) / l[i]
	}
	l[n-1] = 1
	zArray[n-1] = 0

	c := make([]float64, n)
	b := make([]float64, n)
	d := make([]float64, n)
	for j := n - 2; j >= 0; j-- {
		c[j] = zArray[j] - m[j]*c[j+1]
		b[j] = (dataSet[j+1][1]-dataSet[j][1])/h[j] - h[j]*(c[j+1]+2*c[j])/3
		d[j] = (c[j+1] - c[j]) / (3 * h[j])
	}

	// 補間関数を返す
	return func(xVal, yVal float64) float64 {
		// xの範囲を確認
		if xVal < dataSet[0][0] || xVal > dataSet[n-1][0] {
			panic("x value is out of range")
		}

		// 対応するiを探す
		i := 0
		for i < n-1 && dataSet[i+1][0] <= xVal {
			i++
		}

		// スプライン補間を計算
		dx := xVal - dataSet[i][0]
		return dataSet[i][2] + b[i]*dx + c[i]*dx*dx + d[i]*dx*dx*dx
	}
}

func main() {
	// データ点の定義
	dataSet := [][]float64{
		{35.7281578, 139.7680665, 73},
		{35.7214573, 139.7754384, 63},
		{35.7141672, 139.7748342, 57},
		{35.7075171, 139.7564025, 67},
		{35.698383, 139.7704968, 65},
		{35.6997175, 139.7618655, 61},
		{35.7020484, 139.7509267, 66},
		{35.6918216, 139.7683569, 63},
		{35.6812362, 139.7645499, 57},
		{35.6750133, 139.7604455, 59},
		{35.666379, 139.7557649, 55},
		{35.6553809, 139.754554, 54},
		{35.6457361, 139.7449875, 54},
		{35.6284713, 139.7361848, 43},
		{35.6208763, 139.7405387, 50},
		{35.6147448, 139.7412068, 49},
		{35.6086671, 139.7426731, 45},
		{35.6052508, 139.7421627, 50},
		{35.5983959, 139.7391046, 50},
		{35.58754, 139.7355111, 51},
		{35.5788485, 139.7348961, 40},
		{35.5721351, 139.7318494, 53},
		{35.5666392, 139.7281759, 53},
		{35.5613144, 139.7215761, 33},
		{35.5446458, 139.7493338, 46},
		{35.5329877, 139.6982966, 30},
		{35.5348941, 139.7449763, 42},
		{35.5229857, 139.6889874, 41},
		{35.5179115, 139.6811867, 40},
		{35.5071467, 139.677526, 34},
		{35.4998507, 139.6713032, 31},
		{35.4923606, 139.6622968, 30},
		{35.4852628, 139.6544734, 29},
		{35.4846744, 139.6452731, 32},
		{35.4808759, 139.6394986, 26},
		{35.4763238, 139.631979, 30},
		{35.4688634, 139.6268306, 32},
		{35.4659811, 139.6194871, 20},
		{35.4571602, 139.6199226, 27},
		{35.4464751, 139.6235656, 25},
		{35.436673, 139.6217708, 24},
		{35.4334892, 139.6206713, 18},
		{35.4314711, 139.6030542, 16},
		{35.424238, 139.5927802, 17},
		{35.4201765, 139.586678, 14},
		{35.413768, 139.582819, 10},
		{35.3819518, 139.6165374, 3},
		{35.4091204, 139.5781752, 7},
		{35.3966138, 139.6051573, 4},
		{35.3645904, 139.6267988, 1},
		{35.3428573, 139.6190711, 3},
		{35.3314185, 139.6176347, 6},
		{35.330416, 139.6295796, 17},
		{35.3337822, 139.630869, 18},
		{35.3407534, 139.6332478, 18},
		{35.3400425, 139.6390968, 20},
		{35.323276, 139.6151587, 13},
		{35.2973885, 139.5758056, 31},
		{35.3158184, 139.6222558, 15},
		{35.312573, 139.6250891, 16},
		{35.308405, 139.628248, 17},
		{35.2825803, 139.6405151, 19},
		{35.2916167, 139.6283632, 17},
		{35.277848, 139.6379121, 21},
		{35.2802815, 139.6599103, 19},
		{35.2786985, 139.6674653, 20},
		{35.2616259, 139.6679659, 26},
		{35.2635438, 139.6841348, 23},
		{35.2482969, 139.6775595, 25},
		{35.2509382, 139.712402, 30},
		{35.2315701, 139.699661, 29},
		{35.2120725, 139.6824547, 33},
		{35.2055645, 139.671602, 44},
		{35.1986888, 139.663162, 37},
		{35.1880928, 139.6507295, 39},
		{35.1775554, 139.6306392, 42},
	}

	// スプライン補間関数を作成
	interpolatedFunction := splineInterpolation(dataSet)

	// 特定の座標で補間された値を計算
	xValue := 35.4688634
	yValue := 139.6268306

	xValue, yValue = 35.7214573, 139.7754384

	interpolatedValue := interpolatedFunction(xValue, yValue)

	// 結果の出力
	fmt.Printf("補間された値: %.2f\n", interpolatedValue)
}

2024,江端さんの忘備録

先日の夜の次女との会話です。

Here is a conversation I had with my second daughter the other night.

私:「『理系』とか『文系』という言葉は残っていると思うが、まだ、この両者は、対立関係にあるのか」

Me: "I think the terms 'science' and 'liberal arts' are still around, but are the two still at odds with each other?"

次女:「『多様化』という言葉で、曖昧にされつつあるけど、『理系の大学生』が『地獄の中で生きている』であることは変わりはないと思う」

Second daughter: "The word 'diversification' is getting blurred, but I don't think it changes the fact that 'science college students' are 'living in hell.'"

私:「まあ、私が大学生だったころも理系の学生は『文系=バカ』と思っていたし、文系の学生は『理系=専門バカ』と公言してたからなぁ」

Me: "Well, even when I was a college student, science students thought 'liberal arts = stupid,' and liberal arts students professed that 'science = professional stupid.'"

次女:「『理系の人間が留年もなく普通に進級することが、いかに凄いことか』を文系の人間は理解していない」

Second daughter: "People in the humanities don't understand 'how great it is for a person in the sciences to advance to the next grade normally without any retention.'"

私:「まあ、当時は、『理系の人間は、文系たちの卒論レベルの作業を、隔週で実験とレポートでやっている』という地獄を、全く分かっていない、とは思っていたな」

Me: "Well, at the time, I thought they didn't know that 'science majors are doing bi-weekly experiments and reports on the thesis-level work of humanities majors.'"

-----

かつて、私が大学在学時代、文系の友人(女性)との会話で、

Once, in college, I conversed with a humanities friend (female).

友人:「卒論仕上げるのに、3日間徹夜しちゃったよー」

"I stayed up all night for three days to finish my thesis!"

というフレーズに、何と答えるのが正解なのか、分からなくなったことを覚えています。

But I remember I didn't know what to say to this phrase.

(1)『ヘー、それはラクでいいね』

(1) "Heh, that's easy and nice"

(2)『えー、それは大変だったね』

(2) "Well, that was tough"

なにしろ、その程度の徹夜作業、工学部では、隔週で発生する通常イベントだったからです。

After all, that kind of all-night work was a regular occurrence every other week in the Faculty of Engineering.

江端:「何・・・だと・・・? 今、"SPSS"と言ったか?」

-----

「結論としては、

In conclusion, I guess that's what I'm saying, 

(1)理系とか文系とかの対立概念は消されようとしている

(1) The opposing concepts of science and humanities are about to be erased

が、

but,

(2)理系の地獄は残存している

(2) the hell of the sciences remains,

それ故

Therefore

(3)理系に対する世間の理解は以前よりも悪化している

(3) The public's understanding of the sciences is worse than before.

ということになるかな」

と、次女は纏めました。

The second daughter summed it up.

-----

ちなみに、現在の江端家の理系、文系構成は、こんな感じです。

Incidentally, the current science and humanities composition of the Ebata family looks like this.

私: 理系(工学部出身)

Me: Science (Master of Engineering)

嫁さん:文系(英文学部出身)

Wife: Humanities (English Literature)

長女:文系(心理学部出身)

Eldest daughter: liberal arts (in the Faculty of Psychology)

次女:理系(建築学部在籍)

Second daughter: Science (in the School of Architecture)

(但し、心理学は、統計学の学問でもあるので、理系に近い文系かな、と思っています。)

(However, psychology is also the study of statistics, so I think I have a liberal arts background similar to a science background.)