2014,江端さんの忘備録

クローンに関するコラムを執筆していて、

When I wrote the column about human-clone, I think that

■世間のヒトクローンに対する嫌悪感が凄く大きい

Disgust of ordinary people against human-clone is bigger that I expect.

というよりは、むしろ、

Moreover,

■私のヒトクローンに対する嫌悪感が凄く小さい

Disgust of me against human-coke is smaller than ordinary people expect.

ということに気がつきました。

なんで、そうなるのかなぁと、ボンヤリと考えていたのですが、最近、その理由の一つに思い当たりました。

I was absorbed in thought, I noticed one reason recently.

-----

私は、パソコンのバックアップを目的として、定期的にパソコン全部のソフトウェア(OSレベルから)のクローンを作成・保存しています。

I make and save the PC software clones in order for the software backup regularly.

全く同じ機種のPCも持っていますので、そのクローンをそっくりそのままコピーして使い回すことができます。OSの再構築をしなければならない時など、泣けてくるほど、助かります。

I have more than two PCs that have perfect same hardware specifications, so I can use the clone of a PC for other PC. When I have to reconstruct the operating system, I think that it is dreadful useful.

また、PCがウイルスに感染した時や、また原因不明で動かなくなった時には、そのクローンを入れ直せば、そのクローンを作った時の状態まで、完全に戻すこともできます。

Other, when the PC is infected with virus or don't work for unknown case, I can recover the PC perfectly at the time of making the clone.

とにかく、パソコンのクローンは、すごく便利なんですよ。

Anyway the PC clone is very useful.

そして、クローンのパソコンは、当初の状態から色々な変更(新しいソフトウェアの追加や、周辺装置の追加等)が加えられて、当初のパソコンとは、全く別のパソコンに変っていくことも知っています。

Additionally, the PC that installs the clone, become to change from the original, because I will add and modify other software in the PC later.

-----

で、結論ですが

In conclusion,

クローンは、確かに発生時においては完全に同じものではあるが、その後、オリジナルからどんどん別のモノに変わっていく ―― ということを、私は、他の人よりは、実感できる立場にある

I know well that even if the clone is generated, it is going to change to other easily at rapid paces.

と、いうことが、

■私のヒトクローンに対する嫌悪感が凄く小さい

The above is one of the reasons why the disgust of me against human-coke is smaller than ordinary people expect.

の、理由の一つではないかなー、と思っています。

-----

たとえ、私が私のヒトクローンが誕生させたとしても、彼は私とは全く異なる独立した人格を有する人間となる ―― という、何の根拠のない自信があるのです。

I have a groundless self-confidence that if I generate a human-clone of mine, he is growing up as a person with an independent character.

もちろん、「私が100%間違っている可能性」はありますが、これは実際に、ヒトクローンを作ってみないと分からないことでしょう。

(コラムでも説明しましたが、法律が禁止していますので、現実には無理です)

Thought there is a possibility of whole my misunderstanding, of course, nobody might know what is going to happen in fact.

(As a matter of fact, it is impossible to make the human-clone because of a Japanese law.)

そもそも、「パソコンのクローンと、ヒトのクローンを、同じレベルで論じるのは、あまりに乱暴すぎるだろう」という理屈も、実のところ良く分かってはいるんですけどね。

To tell you the truth, I understand that it is too extreme logic to compare the clone of PC with of human.

2014,江端さんの忘備録

私は学生の頃、大学の自治会の役員に立候補したことがあるような気がします。

When I was a college student, I was about to become a candidate of student association.

なんで、そんなあいまいな言い方をするかというと、―― よく覚えていないからです。

The reason why I tell you like such an ambiguous talking is that I don't remember it.

私の大学時代は、大きく前半と後半に大別できると思っております。

I think I can divide the former college life, and the latter.

前半を代表する内容はこちら「正しいデモのやりかた」になります。

This "Right way to demonstrating" was a representing column of the former, and

後半を代表する内容はこっち「やさしい水素爆弾の作り方 」ですね。

This "Right way to make hydrogen bomb" is of the latter.

大学自治会と強いコネを持っていたので、「名前を貸してくれ」と言われたら、ホイホイと名前を貸していたりしていた訳です。

At the former period, I had a strong connection with the association, so I usually gave my name easily.

ま、そんな訳で、

For the reason,

様々な政治的な集会のポスターが無秩序に張られ、ペンキで「インターナショナルの歌詞」や、チェ・ゲバラやトロツキーの語録が書き殴られた壁の中、

I could be in a walk around the front office of the association, that there are many posters and graffiti a politically charged term on the whole walls.

自治会本部の部屋にスタスタと入っていく私を、工学部の友人達は、畏怖(というか驚愕というか、嫌悪というか)の目で見ていたように思います。

I think that my friends of engineering department looked at me with awe (or consternation or disgust).

-----

ある日のこと、鴨川の東側に位置する、日本を代表する国立大学を拠点とする左翼集団が、こともあろうに、私の大学のキャンパスで集会を開いていました。

At a day in my college life, left-wing militants based on the famous National University in Kyoto occupied the college campus and held a rally.

私は激怒しました。

I was inflamed with rage.

これが学内の極右団体の集会や、カルト宗教団体の勧誘であったとしても、私はこれほどには怒らなかったと思います。

Even if they were right-wing extremists or religious cults, I believed that I didn't be in a rage.

他の大学の団体に、自分の大学のキャンパスを占拠されている屈辱で、体が震えるほどの怒りを感じました。

I felt tremble anger with abasement with controlling effectively by left-wing militants of neighbor college.

-----

『先輩、こんな暴挙を許していいんですか! 武装して強制排除しましょう!!』

"Can we forgive this outrange, Chairman! Armed and let's eviction!!"

I exclaimed.

と叫び続ける私に、自治会の先輩は、私には応えず、彼等の集会を冷静な目で観察し続けていました。

The chairman of the association ignored me, and he kept silent and watching them quietly.

その態度は(江端、今は動くな)と無言の圧力をかけるものでした。

The attitude seemed to be a kind of pressure for me, with "Ebata, don't move now"

今になって思えば、自治会の先輩の判断は正しいものだったと思います。

Now I think that his judgment seemed to be correct.

彼等の全国的な組織力、武力、統率力等、そして「彼等は集会を終えれば、立ち去る」ことなどを、総合的に判断すれば、

I should have thought of their powers, organizations, forces, and the fact "they left from our campus eventually".

こちらから「仕掛ける」ことは、政治的に正しい行動ではなかったのです。

"Lunching any attach from our side" was not correct politically.

-----

今、クリミア半島では、ロシア軍による実効支配中が進行中のようです。

Now in the Crimea peninsula, the Russian military seems to be in progress under the effective control.

そこには、私のような者と、先輩のような者がいるはずです。

There seems to be two types of person in peninsula, like me and like the chairman.

彼らがどう動くのか、今、私は注意深く見守っています。

I am watching carefully how they move now.

2023,江端さんの忘備録

NHKBSプレミアム ヒューマニエンス 「“ゲノム編集” 新人類を生む技術か」を視聴しました。

NHKBS Premium Humanience "Genome Editing": Is it a Technology to Create New Human Beings?

ヒューマニエンスは、MCの織田裕二さんが『その内容を理解している/感動している』という様子が伝わってきて、とても気持ちがいいのです(織田さんの映画は、ちょっと私には合わなかったですが)。

"Humanience" is very pleasant because you can see how the MC, Yuji Oda, 'understands/is moved by its content' (although Oda's film was not quite right for me).

比して、「サイエンスZERO」は、ゲストコメンテータが『その内容を理解できていない/感動していない』という様子が、手に取るように分かり、イライラして、視聴するのを止めました。

In contrast, I found the guest commentators on "Science ZERO" to be unimpressed and not understanding the content, which irritated me and made me stop watching the program.

それはさておき。

That aside.

-----

さて、今回の"ゲノム編集"では、やはり「デザイナーベイビー」の話が出てきました。

Now, in this issue of "Genome Editing," they are also talking about "Designer Babies.

私、ヒトのクローンとか、デザイナーベイビーについて、一般の人より抵抗感が低い方だと思います。

I think I am less resistant to human cloning and designer babies than most people.

私のヒトクローンに対する嫌悪感は、凄く小さい

とは言え、

However,

■自分と100%同一のDNAを持つ子ども(遺伝的には、100%自分自身)を養育する

- Foster a child with DNA 100% identical to your own (genetically, 100% your own)

■自分の望む才能を持つ子どもを、設計、出産、養育する

- Design, give birth to, and nurture a child with the talents you desire.

というのは、私ですら、(現時点においては)倫理的に大問題であることは分かります。

Even I can understand that these are major ethical issues (at this time).

実際に、これを強行した中国の研究者が、有罪判決を受けています。

In fact, the Chinese researcher who enforced this was convicted.

-----

このような「DNAの人為的な編集」による生命の誕生と、今や不妊治療では当たり前(主流)となった「試験管ベイビー」が、同列に論じられないことは、よく分かっています。

I understand that the birth of life through such "artificial editing of DNA" and the "test-tube baby" that has now become the norm (mainstream) in fertility treatment cannot be discussed in the same stage.

とは言え、今や、体外受精による出産は、今や16人に1人です。

Nevertheless, IVF births now account for 1 in 16 births.

学校の1クラスあたり2人は、試験管ベイビーで誕生してきたわです。

Two per school class have been born in test tube babies.

「試験管ベイビー」について、思考停止のタブーを続けていたら、2022年の新生児80万人のうち、5万人は誕生していなかったことになります。

If we had continued our thoughtless taboo about "test tube babies," 50,000 of the 800,000 newborns in 2022 would not have been born.

-----

現在、政府は「"異次元"の少子化対策」を唄っていますが、どうせ、"異次元"という言葉を使うのであれば、

Currently, the government is talking about "countermeasures against the declining birthrate in the "other dimension," but if you are going to use the word "other dimension," why not try the followings?

(1)人間への体細胞クローンの法律の緩和

(1) Relaxation of regulations on human somatic cell cloning

(2)人口子宮装置の研究開発費の大型投入

(2) Large R&D expenditures for artificial uterus equipment

(3)同性カップルの生殖研究開発費の大型導入

(3) Large-scale introduction of reproductive R&D funding for same-sex couples

くらいのことを、やればいいのに、と思っています。

もちろん、上記(2)、(3)については、国民の合意形成と、立法措置も併わせて行っていく必要があります。

Of course, it is necessary to build public consensus on (2) and (3) above, as well as to take legislative measures.

-----

私は、この日本国を、壮大な実証実験フィールドにすることに、あまり抵抗がありません。

I have little resistance to making this country of Japan a grand demonstration field.

我が国が、上記(1)~(3)のような技術を確立し法的な保護を与えれば、世界中から我が国への移民希望者が殺到し、労働人口問題など、たちまち解決すると思うのですが ――

If Japan could establish and provide legal protection for the technologies listed in (1) through (3) above, I believe that immigrants from all over the world would come to Japan in droves, and the labor population problem would be quickly solved.

まあ、夫婦別姓やマイナンバーカード程度のことで、ゴタゴタしている我が国では、当面(100年単位で)無理でしょうね。

Well, it will not be possible in the foreseeable future (in 100 years) in our country, which is in a mess over matters as minor as married couples' separate surnames and my number card.

―― 一体、裁判所も、立法(国会)も、『識別子の取扱い』ごときに、なんで、こんなにゴタゴタしていやがるんだ

 

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/12,江端さんの技術メモ

https://www.nikkoken.or.jp/pdf/project/2021/A-854.pdf

これまで述べてきたように、MATSimは移動の均衡をモデル化するための統合シミュレーションツールキットとして設計されました。このため、MATSimは交通需要と供給の両方をモデル化できる必要があります。の部分をモデル化する必要があります。この目的のために、MATSimは図2.3に示すように、均衡に収束するための共進化反復ループを採用しています。図2.3に示すとおりである(p.19)。

このループは、各個人の1日の行動とトリップチェーンという形で、最初の旅行需要から始まります。ループが始まる。このアクティビティとトリップチェーンは、Mobsimの段階で道路ネットワークにロードされる。一日のシミュレーションが終わると を計算し,その結果をもとに,各エージェントのアクティビティ・チェーン(計画)のスコアを計算する.最後の このとき,各エージェントは,以前の計画から生成された計画の集合を所有し を持つことになり,そのスコアに基づいて次の反復で実行するものを選択しなければならない.
ネットワーク負荷の部分では、MATSimのデフォルトとしてトラフィックフローモデルQSimが採用されている。この QSimは計算効率の良い待ち行列ベースのアプローチを適用している。基本的に、車両が道路セグメントに進入する際 を計算することができる.次に、その車両は道路の待ち行列の最後尾に挿入される。第二に,車両は道路の待ち行列の最後尾に挿入され,最後に,道路の流出能力に応じて道路を離れます.ここで、流出速度は各道路に固有であり、容量属性で指定される。

スコアリングとリプランニングの部分では、各エージェントにとって「より良い」プランと「より悪い」プランを区別する基準を提供するために、一般化された効用様式でスコアが定式化される。再計画では、このスコアをもとに、過去の計画、すなわち特定のエージェントが行った計画をもとに、完全に新しい計画を「品種改良」する遺伝的アルゴリズム(または進化的アルゴリズムと呼ばれる)を適用する。一般に、突然変異と選択という二つの演算子が使われる。突然変異演算子は、以前に実行された計画中の特定のコンポーネントを変更し、この変更された(すなわち、突然変異)計画を次の反復に使用する。次の反復処理に採用する。
MATSimで使用できるセレクタは、使用する平衡状態によって複数種類あります。
る平衡状態によって異なる。ベストリプライセレクタは、前回の反復からベストプランを選択するものです。
MNLセレクタは、プラン選択のアプローチを離散的選択の方法で適用し、エージェントの行動における以下の確率を考慮する。エージェントの行動には確率がある。

MATSim OSS & フリー Google Scholar(GS) 5750
http://bin.t.u-tokyo.ac.jp/kaken/pdf/2014_wakabayashi1.pdf
インプットデータ
・1日のスケジュール
・道路ネットワーク
・モデルのパラメータ
2. 1日のスケジュール効用を計算
𝑈𝑎𝑐𝑡 : 活動の効用 𝑈𝑡𝑟𝑎𝑣𝑒𝑙 : 移動の効用 𝑖:1回の活動
1. シミュレーションの実行
3. プランの変更
・出発時刻
・交通手段
・経路
・目的地
・駐車場
1~3を効用(Score)が収束するまで繰り返す
https://progsoft.net/ja/software/matsim

MATSimは、Javaで実装されたアクティビティベースの拡張可能なマルチエージェントシミュレーションフレームワークです。
これはオープンソースであり、インターネットからダウンロードできます(MATSim、2016; GitHub、2015)。
フレームワークは大規模なシナリオ向けに設計されています。つまり、対象となる機能を効率的に処理するために、すべてのモデルの機能が取り除かれています。
並列化も非常に重要です(例:Dobler and Axhausen、2011; Charypar、2008)。 たとえば、ネットワーク負荷シミュレーションの場合、キューベースのモデルが実装され、非常に複雑で計算コストの高い自動車追従動作が省略されます(セクション1.3を参照)。
現時点では、MATSimは、アクティビティベースのモデルの分析の一般的な単位である1日をモデル化するように設計されています(たとえば、Bowmanによるレビュー、2009aを参照)。
それにもかかわらず、原則として、複数日モデルを実装することができます(Horni and Axhausen、2012年)。

SUMO OSS & フリー 交差点解析などに使われている様子  GS 35700
https://kudzuyu.github.io/SUMO-wiki-ja/SUMO_at_a_Glance/

  • シミュレーション
    • 連続空間かつ離散時間での車の動き
    • 複数の自動車の種類
    • 車線変更のある複数車線道路
    • 異なった右側通行ルールや信号
    • 高速なopenGL GUI
    • 数万単位の枝(道路)を含むネットワークの制御
    • 高速起動(1GHzマシンにおいて10万台までの車を1秒以内に更新)
    • 起動中の他のアプリケーションとの相互利用性
    • ネットワーク範囲での道路、車、検知器基準の出力\
    • 人基準のマルチモーダル移動のサポート
      -

交通シミュレーションの研究をやっていることから、MATSimの調査を行っています。

もう、昨日から本当にドタバタやっているのですが、MATSimの環境構築について、記載されているドキュメントが、非常に乏しく、日本語のものはゼロと言って良いと思います。

いろいろやって、現時点で上手くいかなかったこと

> git clone https://github.com/maptic/matsim-docker.git

> docker-compose build

> docker-compose upで、"docker-compose build" は成功したのですが、"docker-compose up" は以下ようにになってしまいました。

あきらめてhttps://www.matsim.org/downloads/からアプローチしてみた

>docker run -v /opt/matsim/data/input -v /opt/matsim/data/output maptic/matsim:latest

Vscode以外のIDEは入れたくないが、IntelliJ IDEA を入れろと言われたので、入れることにする(Dockerで手早く片づけたかったが)、アプローチがさっぱり分からんので仕方ない。

「The Multi-Agent Transport Simulation MATSim」を読むことにしました。


から、C:\Users\tomoi\matsim-14.0 に展開しておきました

つぎにここから「The Multi-Agent Transport Simulation MATSim」を落してきました。

で、

の、

のこれを出せるかどうかが、勝負だと見ました。

まず、javaをインストールしました。
私は、https://adoptopenjsk.net から、64bit版WindowsJDKのZIP版をダウンロードしました。
1. Choose a Version では、OpenJDK11 を、2. Choose a JVMではHotSpotを選択、Other platformsのボタンをクリックしました。
Windows, x64, .zip でダウンロードして、C:\Program Files\Java\jdk-11.0.17+8\bin にパスを通しておきました。

:\Users\tomoi\matsim-14.0>java -jar matsim-14.0.jar を起動すると、以下の画面が表示されます。


で、先程展開した、C:\Users\tomoi\matsim-14.0のサンプルの中にあるconfig.xmlを使うと、何か計算をしているようです。

2023-01-01T00:33:27,301 INFO IOUtils:215 Resolved C:\Users\tomoi\matsim-14.0\examples\berlin\config.xml to C:\Users\tomoi\matsim-14.0\examples\berlin\config.xml

ただ、今のところ、エラー終了してしまうようです。

上記の問題については、https://github.com/matsim-org/matsim-code-examples/issues/736 の方に記載されていました。
内容はこんな感じでした。

残念ながら、これはまだ修正されていないバグです。GUI クラスを実行する代わりに、RunMatsim クラスを直接実行することもできます。

java -cp matsim-example-project-0.0.1-SNAPSHOT.jar org.matsim.project.RunMatsim
デフォルトの設定ファイルとは別の設定ファイルを使用したい場合は、コマンドが変わります。

java -cp matsim-example-project-0.0.1-SNAPSHOT.jar org.matsim.project.RunMatsim /path/to/your/config.xml となります。

こんにちは、私は同じエラーに遭遇し、それはWindowsにリンクされているように見えた。このバグが修正されるかどうか、またいつ修正されるか知っていますか?

Windows の MATSimGUI で AccessDeniedException が発生する matsim-org/matsim-libs#2052

matsim-org/matsim-libs#2052 にissueを作成しました。ご指摘ありがとうございました。

JDKのバージョンを確認してください。この問題は、jdk 17 以降で発生するようです。JDK11でmatsim-14.0.jarを動かしてみてください。がんばってください。

も、私、jdk11を使っているんだけどなぁ?

続きがありました。

私もJDK11を使用していますが、同じ問題に遭遇しました。なぜなら、私が知る限り、LegHistogramChartクラスはpngを保存するために適切なローカルパスを送っていますが、jfreechartはC:³³に一時ファイルを作成しようとし、パーミッション問題に遭遇しています。簡単な回避策は、<param name="createGraphs" value="false" />を追加して、グラフをオフにすることです。をconfig.xmlのcontrollerモジュールに追加することです。そうすれば問題なく実行できます。もちろん、グラフは表示されませんが、その他の出力や解析はすべて可能です。

ということのようです。

で、C:\Users\tomoi\matsim-14.0\examples\berlin\config.xml の中をちょっくら弄ってみました。

<module name="controler">
<param name="outputDirectory" value="./output/berlin" />
<param name="firstIteration" value="0" />
<param name="lastIteration" value="0" />
<param name="createGraphs" value="false" />
</module>

の赤字の一行を追加したら、エラーで止まることはなくなりました。

さて、多分、ここ(C:\Users\tomoi\matsim-14.0\examples\berlin\output\berlin)にできているファイルを使って、シミュレーションの見える化をするのだろうと思います。


https://www.matsim.org/downloads/の

Visualization の翻訳

シミュレーションが実行されると、その出力ディレクトリに多くのファイルが作成されます。GUIには出力ディレクトリに到達するためのボタンがあることに注意してください。そのうちの1つは、いわゆるイベントファイルで、通常10回目のイテレーションごとに生成されます。0回目の繰り返しのイベントファイルは .../ITERS/it.0/...0.events.xml.gz に格納されています。これには可視化できる情報がたくさん含まれています。

MATSimの出力を視覚化する最も簡単な方法は、VIAを使うことです。エージェントの数に制限のある無料版がダウンロード可能です。VIAを起動すると、大きな黒い領域が表示されるはずです。ここがトラフィックを可視化する場所です。このエリアの左側に、上部に4つのアイコンがある小さなエリアがあります(「コントロール」)。最初のアイコン(Data Sources)をクリックします。このセクションにファイルをドラッグ&ドロップするか(例:network.xml、events.xml.gz)、下部の「+」をクリックして追加するファイルを選択できます。いずれかの方法で、まずnetwork.xmlを利用可能なデータのリストに追加し、次にevents.xml.gzを追加します。これでビジュアライザーがデータを認識し、どのようにビジュアル化するかを指示することができます。

次に、コントロールセクションの 2 番目のアイコン ("レイヤー") をクリックします。初期状態では、背景レイヤーのみが表示されています。をクリックして、表示させたいデータを選択します。読み込んだnetwork.xmlでネットワークを視覚化するよう既に提案されているはずなので、「Add」をクリックします。しばらくすると、ネットワークが可視化エリアに表示されるはずです。をもう一度クリックし、今度はレイヤーの種類として「ビークル」を選択します。event.xml.gzファイルはすでに選択されています。追加]をクリックします。イベントに依存するレイヤと同様に、レイヤタグの下部に「データを読み込む」ボタンが表示されます。これをクリックすると、イベントから車両の位置が抽出されます。


VIAというビューアについて調査中

https://simunto.com/via/download

 

2023,江端さんの忘備録

以前、町内会で広報係を担当していたことがありました。

I used to be in charge of "public relations" at a neighborhood association.

町内イベントの撮影を行う必要があったので、私は町内会費で「腕章」を購入しました。

I had to shoot town events, so I purchased "armbands" with my township dues.

こんなのです。

It is like this.

これを装着しているだけで、心理的に作業がしやすくなったのを覚えています。

I remember that just wearing this made it psychologically easier to work with.

「他人から自分がどう見えるか」という視点での安心感が大きかったです。

I felt a great deal of relief from the perspective of "how I was seen from others".

-----

逆にいえば、この腕章の「悪用」は簡単です。

Conversely, it is easy to "abuse" this armband.

盗撮等など、堂々とやられる可能性があります。

Voyeurism, etc., may be done with impunity.

という訳で、皆さんは、腕章をして撮影をしている人がいたら

So, if you find someone wearing an armband and taking pictures,

―― 身分証明書の提示を要求しましょう

"you may demand him/her to see their ID"

逆に「お前は誰か」と問われたら、堂々と『警察の関係者だ』と言いはりましょう。

On the other hand, if they ask, "Who are you?", you proudly claim, "I'm related to a police official".

日本国民は、公共サービスの被提供者ですから、全員『警察の関係者』です。

Japanese citizens are the recipients of public services, so we are all 'related to police personnel.

もし、そいつが逃げ出そうとしたら、取り抑えましょう。

If he/she tries to escape, restrain him/her.

知らない方も多いかと思いますが、私たち国民全員に、逮捕権があります。

Many of you may not know this, but all of us citizens have the right to arrest.

2023,江端さんの忘備録

私のブログを読んで頂いている方なら、私がC/C++の後継言語として(そして、人生最後の言語として)として、Go言語を使っていることはご存知かと思います。

If you have been reading my blog, you know that I am using Go language as a successor to C/C++ (and as the last language in my life).

個人的には、今でもC/C++の方が使いやすいですが、C/C++ではどうしても実現できない2つ

Personally, I still prefer to use C/C++, but there are two things that C/C++ just can't achieve.

- 軽量スレッド(Goroutine)

-Lightweight threads (Goroutine)

- チャネル(Channel)

- Channel

in Golang

ちなみに、当時の弊社では、メモリリークを起こす実装をしたエンジニアは、回りの人間から『バカ、アホ、死ね』と言われて、頭(こうべ)を垂れ続けなければなりませんでした。

-----

さて、本日、

Well, today. I found an article whose title was

「プログラミング言語「Go」が攻撃者に人気の理由」

"Why the programming language "Go" is so popular with attackers"

という記事を見つけました。

これは、『これからのエンジニアがGo言語に興味を持つきっかけになるかもしれない』と思い、期待して読んだのですが、「そうかなぁ」という"???"な内容でした。

I read this with high expectations, thinking that it 'might trigger future engineers' interest in the Go language,' but I wondered "Is that so?"

「今時、マルチプラットフォーム対応でないプログラム言語があったら知りたいくらいだ」と思いますし、

I'd like to know if there is a programming language that is not multi-platform compatible nowadays.

「攻撃プログラムがディスクにロードされずに、オンメモリで攻撃するなど普通だ」とも思いました。

I also thought, "It's normal, for example, for an attacking program to attack on-memory, without being loaded to disk."

つまるところ、最大の理由は、『Go言語のコードが(まだ)珍しい』『現時点で、Goがまだマイナーな言語である』というだけのことのように読めました。

After all, I thought the biggest reason is just that 'Go language code is (still) rare' and 'Go is still a minor language at this point'.

-----

私としては、

As for me,

『Goroutineを使った、1000万のサーバの同時攻撃』

"A simultaneous attack on 10 million servers using Goroutine",

とか

or

『懦弱なサーバの発見と同時に、集中攻撃を開始』

Launch a concentrated attack as soon as a vulnerable server is discovered.

などのような、これまでにない自律的な攻撃プログラムをGo言語で作れる ―― というような内容を期待していたので、正直ガッカリしています。

I was expecting to be able to create an unprecedented autonomous attack program in the Go language, so I am honestly disappointed.

-----

そういえば、「江端 = サイバー攻撃者」というイメージをもっている人がいるように思えます。

Come to think of it, apparently the public has an image of "Ebata = cyber attacker".

はっきり言いますが、誤解です。

To be clear, this is a misunderstanding.

むしろ、サイバー攻撃の被害者となる可能性の方が高いです。

Rather, they are more likely to be victims of cyber attacks.

先日も、『江端さんなら、公共カメラをハックして、家からモニタリングできるのではないですか?』というメールを頂きました。

The other day, I received an e-mail from someone who asked me, "Mr. Ebata, I think you could hack a public camera and monitor it from your home".

このような誤解は、私にとっては、結構な"賞賛"でもあるのですが ―― 残念ながら、私には、その「スキル」がないですし、なにより「時間」がないです。

This kind of misunderstanding is quite "admirable" to me -- unfortunately, I don't have the "skills" and most of all, I don't have the "time".

アニメやドラマの世界では、ハッカー(正確にはクラッカー)が、たちまち国家や企業のサーバに侵入したりしていますが、あれ、かなりの"幻想"です。

In the world of cartoons and dramas, hackers (crackers, to be precise) quickly break into national and corporate servers. However, that is quite an "illusion.

サイバー攻撃は、私に言わせると「どぶ掃除」のような作業だと思います ―― 面倒で、根気もいります。

Cyberattacks, in my opinion, are a "ditch-cleaning" process -- tedious and requires a lot of patience.

ただ、十分な時間をかけて、身元がバレないように、ゆっくりとトライアルを続ければ、多くのシステムは突破できると思います。

However, if you take enough time and continue the trial slowly enough so that your identity is not revealed, I believe that much of the security can be breached.

問題は、そのようなスキルと時間が、誰にでもあるわけではない、ということです。

The problem is that such skills and time are not available to everyone.

ですから、システムを突破される時間より短い時間で定期的にパスワードを変更するだけで、相当に高い確率でサイバー攻撃は阻止できるのですが ―― これをサボる人が、実に多いんですよね。

Therefore, simply changing passwords on a regular basis in less time than it takes to break through the system will stop a cyber attack with a fairly high probability -- but there are so many people who skip this.

2023,江端さんの技術メモ

出典を忘れてしまいましたが、どなたかが作られたコードを丸パクリさせて頂きました。→たぶん"これ"

ノード1 → "A", ノード2 → "B", ノード3 → "C", ノード4 → "D", ノード5 → "E" として取り扱います。

package main

import (
	"errors"
	"fmt"
)

// ノード
type Node struct {
	name  string  // ノード名
	edges []*Edge // 次に移動できるエッジ
	done  bool    // 処理済みかを表すフラグ
	cost  int     // このノードにたどり着くのに必要だったコスト
	prev  *Node   // このノードにたどりつくのに使われたノード
}

func NewNode(name string) *Node {
	node := &Node{name, []*Edge{}, false, -1, nil}
	return node
}

// ノードに次の接続先を示したエッジを追加する
func (self *Node) AddEdge(edge *Edge) {
	self.edges = append(self.edges, edge)
}

// エッジ
type Edge struct {
	next *Node // 次に移動できるノード
	cost int   // 移動にかかるコスト
}

func NewEdge(next *Node, cost int) *Edge {
	edge := &Edge{next, cost}
	return edge
}

// 有向グラフ
type DirectedGraph struct {
	nodes map[string]*Node
}

func NewDirectedGraph() *DirectedGraph {
	return &DirectedGraph{
		map[string]*Node{}}
}

// グラフの要素を追加する (接続元ノード名、接続先ノード名、移動にかかるコスト)
func (self *DirectedGraph) Add(src, dst string, cost int) {
	// ノードが既にある場合は追加しない
	srcNode, ok := self.nodes[src]
	if !ok {
		srcNode = NewNode(src)
		self.nodes[src] = srcNode
	}

	dstNode, ok := self.nodes[dst]
	if !ok {
		dstNode = NewNode(dst)
		self.nodes[dst] = dstNode
	}

	// ノードをエッジでつなぐ
	edge := NewEdge(dstNode, cost)
	srcNode.AddEdge(edge)
}

// スタートとゴールを指定して最短経路を求める
func (self *DirectedGraph) ShortestPath(start string, goal string) (ret []*Node, err error) {
	// 名前からスタート地点のノードを取得する
	startNode := self.nodes[start]

	// スタートのコストを 0 に設定することで処理対象にする
	startNode.cost = 0

	for {
		// 次の処理対象のノードを取得する
		node, err := self.nextNode()

		// 次に処理するノードが見つからなければ終了
		if err != nil {
			return nil, errors.New("Goal not found")
		}

		// ゴールまで到達した
		if node.name == goal {
			break
		}

		// 取得したノードを処理する
		self.calc(node)
	}

	// ゴールから逆順にスタートまでノードをたどっていく
	n := self.nodes[goal]
	for {
		ret = append(ret, n)
		if n.name == start {
			break
		}
		n = n.prev
	}

	return ret, nil
}

// つながっているノードのコストを計算する
func (self *DirectedGraph) calc(node *Node) {
	// ノードにつながっているエッジを取得する
	for _, edge := range node.edges {
		nextNode := edge.next

		// 既に処理済みのノードならスキップする
		if nextNode.done {
			continue
		}

		// このノードに到達するのに必要なコストを計算する
		cost := node.cost + edge.cost
		if nextNode.cost == -1 || cost < nextNode.cost {
			// 既に見つかっている経路よりもコストが小さければ処理中のノードを遷移元として記録する
			nextNode.cost = cost
			nextNode.prev = node
		}
	}

	// つながっているノードのコスト計算がおわったらこのノードは処理済みをマークする
	node.done = true
}

func (self *DirectedGraph) nextNode() (next *Node, err error) {
	// グラフに含まれるノードを線形探索する
	for _, node := range self.nodes {

		// 処理済みのノードは対象外
		if node.done {
			continue
		}

		// コストが初期値 (-1) になっているノードはまだそのノードまでの最短経路が判明していないので処理できない
		if node.cost == -1 {
			continue
		}

		// 最初に見つかったものは問答無用で次の処理対象の候補になる
		if next == nil {
			next = node
		}

		// 既に見つかったノードよりもコストの小さいものがあればそちらを先に処理しなければいけない
		if next.cost > node.cost {
			next = node
		}
	}

	// 次の処理対象となるノードが見つからなかったときはエラー
	if next == nil {
		return nil, errors.New("Untreated node not found")
	}

	return
}

func main() {
	// 有向グラフを作る
	g := NewDirectedGraph()

	// グラフを定義していく
	g.Add("A", "B", 2)
	g.Add("A", "C", 7)
	g.Add("A", "D", 5)

	g.Add("B", "D", 4)

	g.Add("C", "E", 2)

	g.Add("D", "C", 1)
	g.Add("D", "E", 4)

	g.Add("E", "C", 2)

	// "s" ノードから "z" ノードへの最短経路を得る
	path, err := g.ShortestPath("A", "E")

	// 経路が見つからなければ終了
	if err != nil {
		fmt.Println("Goal not found")
		return
	}

	// 見つかった経路からノードとコストを表示する
	for _, node := range path {
		fmt.Printf("ノード: %v, コスト: %v\n", node.name, node.cost)
	}
}

 

出力結果

C:\Users\ebata> go run .\dijkstra.go
ノード: E, コスト: 8
ノード: C, コスト: 6
ノード: D, コスト: 5
ノード: A, コスト: 0

ラベル修正法の練習(だけ)

2023,江端さんの技術メモ

「Golangでcsvファイルを読み出す」の記事は多いのですが、特定の行まで引っ張り出す情報があまりないので、メモを残しておきます。

/*
以下のcsvファイル(kai_20220522holyday18.csv)の中身を取り出す
id,age,type,departure_name,departure_number,departure_lat,departure_lng,arrival_name,arrival_number,arrival_lat,arrival_lng
0,43,resident,,,34.173408,131.470684,,,34.155862,131.501246
1,24,resident,,,34.179449,131.482543,,,34.164116,131.471791
2,42,resident,,,34.168739,131.470768,,,34.160989,131.491124
3,21,resident,,,34.169494,131.469934,,,34.173498,131.471351
4,58,resident,,,34.185295,131.47414,,,34.191481,131.49456
5,48,resident,,,34.150778,131.480747,,,34.16536,131.471872
6,56,resident,,,34.16536,131.471872,,,34.174066,131.479312
7,73,resident,,,34.155731,131.500845,,,34.16776,131.472831
8,47,resident,,,34.167237,131.471785,,,34.155775,131.476531
9,21,resident,,,34.154931,131.50468,,,34.156678,131.49581
10,37,resident,,,34.16727,131.472899,,,34.171253,131.471177
11,40,resident,,,34.147241,131.474921,,,34.150675,131.486268
12,67,resident,,,34.173683,131.476347,,,34.173643,131.471027
13,28,resident,,,34.183079,131.484303,,,34.174245,131.474592
14,46,resident,,,34.146154,131.472711,,,34.159611,131.491548
15,25,resident,,,34.162497,131.489283,,,34.147212,131.475984
*/

package main

import (
	"encoding/csv"
	"fmt"
	"log"
	"os"
	"strconv"
)

func main() {
	file, err := os.Open("kai_20220522holyday18.csv") // 先ほど入手した郵便番号データをos.Openで開く
	if err != nil {
		log.Fatal(err)
	}
	defer file.Close()

	r := csv.NewReader(file)
	rows, err := r.ReadAll() // csvを一度に全て読み込む
	if err != nil {
		log.Fatal(err)
	}

	// 行ごとに
	for i, row := range rows {
		if i == 0 {
			continue // CSVのヘッダー行を無視
		}

		age := row[1]

		departure_lat, err := strconv.ParseFloat(row[5], 64)
		if err != nil {
			log.Fatal(err)
		}
		departure_lng, err := strconv.ParseFloat(row[6], 64)
		if err != nil {
			log.Fatal(err)
		}

		arrival_lat, err := strconv.ParseFloat(row[9], 64)
		if err != nil {
			log.Fatal(err)
		}

		arrival_lng, err := strconv.ParseFloat(row[10], 64)
		if err != nil {
			log.Fatal(err)
		}

		fmt.Println(age, departure_lat, departure_lng, arrival_lat, arrival_lng)

	}
}

 

出力結果

C:\Users\ebata\yamaguchi\src_try1\others> go run main5.go
43 34.173408 131.470684 34.155862 131.501246
24 34.179449 131.482543 34.164116 131.471791
42 34.168739 131.470768 34.160989 131.491124
21 34.169494 131.469934 34.173498 131.471351
58 34.185295 131.47414 34.191481 131.49456
56 34.16536 131.471872 34.174066 131.479312
73 34.155731 131.500845 34.16776 131.472831
47 34.167237 131.471785 34.155775 131.476531
21 34.154931 131.50468 34.156678 131.49581
37 34.16727 131.472899 34.171253 131.471177
40 34.147241 131.474921 34.150675 131.486268
67 34.173683 131.476347 34.173643 131.471027
28 34.183079 131.484303 34.174245 131.474592
46 34.146154 131.472711 34.159611 131.491548
25 34.162497 131.489283 34.147212 131.475984

 

2017,江端さんの忘備録

我が家の次女(中3)は、毎日電車を使って往復3時間くらいかけて通学しています。

My second daughter (the 9th grade) uses a train every day for about 3 hours to go to school.

そして、通学路の途中の「立ち食いそば」について、その辺にいるグルメ評論家に負けないくらいの「一言家」になっています。

And about "stand-up-eating soba noodle shop" on the way to school, she became an "expert", I think that she will not lose to the gourmet critic around here.

私の方が、出張の時に、次女の薦める立ち食いそば屋にいっているくらいです(本当)。

When I travel on business, I am going to a "stand-up-eating soba noodle shop" recommended by my second daughter (really).

―― "そば"を語れる女子中学生 (但し「立食いそば」限定)

"Junior high school girls who can talk about "soba" (However, "stand-up-eating soba" only)"

私の自慢の娘です。

My daughter is proud of me.

マクドナルドとかのファストフードを語る女子中学生など、掃いて捨てるほどいるでしょう。

I think that junior high school girls are now a dime a dozen to talk about fast food such as McDonald's

-----

私もそばが好きなのですが、『今一つ、私が自分の殻を破れない』と思っていることの一つに、

I also like soba too, however, I think that one of "what I cannot break out of my shell" is

「コロッケ入りそば」

"Croquette Soba"

があります。

私は、「コロッケを蕎麦汁に沈める」というパラダイムを、まだ受け入れられないでいます。

I am still unable to accept the paradigm "to sink croquette in soba soup".

「コロッケ入りそば」の素晴しさについては、多くの人が多くの媒体で語っていますので、その真偽については、私は1mmも疑っていません。

Regarding the taste of "Croquette Soba", I don't suspect the good taste, since many people are talking on many media.

間違いなく「コロッケ入りそば」は美味しいはずです。

Definitely "Croquette Soba" should be delicious, I believe.

実際、私は、「かき揚げを蕎麦汁に沈める」ことに躊躇がありません。

In fact, I do not hesitate to "sink Tempura in soba soup".

(ちなみに嫁さんは、「かき揚げは、沈めずに食べるもの」というポリシーの持ち主であることを、今回知りました)

(By the way, I learned that my wife has a policy "Eating Tempura without sinking" this time)

-----

このような「コロッケ入りそば」に対するクローズドマインドな私に対して、

For me with a closed-mind against "Croquette Soba",

次女は、

My second daughter

『フッ、所詮、パパも、その程度の器(うつわ)か』

"Huh, my father has also such a small-heart, after all"

と、冷たい笑みを浮べて、吐き捨てるように言います。

told me to spit up with a cold smile.

そして、彼女は「コロッケ入りそば」の食べ方のイシューについて、熱く語り出しました。

And, she spoke hotly about the issue of how to eat "Croquette Soba".

なんでも、

She said,

『先ず、コロッケを2分割して、半分はコロッケの味を楽しみ、もう半分は蕎麦汁に沈めて、その時間経緯ととにも変化するそばの味を楽しむ』

"First of all, a croquette should be divided into two parts. One half is for enjoying the taste of croquette, another half should be submerged in soba soup and we will enjoy the taste of soba which also changes with the time"

―― というのが、彼女の「コロッケ入りそば」の哲学のようです。

This is her philosophy of "Croquette Soba".

-----

最近の駅の立ち食いそば屋は、美しそうなそばの写真を、巨大な壁全体のディプレイとして施し、集客を図っています。

Recently "stand-up-eating soba noodle shops" are trying to attract customers. with put big photos of a beautiful soba over the huge wall.

朝飯を抜いて出社した朝とか、ダイエット中の会社からの帰宅時などに、

In the morning when I got out of the breakfast or, in the midnight when I go back home while dieting,

"これらのディスプレイが、私にとって、どれほど非人道的な殺人兵器として機能しているか ―― "

"How these displays function work well as murder weapons for me"

皆さんにも、ご理解頂けるものと確信しております。

I believe you can understand that.