2023,江端さんの忘備録

私、プロ野球の仕組みについては、全く知らないと言っても過言ではありません。

I am not exaggerating when I know nothing about how professional baseball works.

ドラフト会議というものが、『巨人一強』という弊害から作られた、という話を聞いたことがあるくらいです。

I have heard that the draft conference was created out of the evils of the "Giants' monopoly."

なんでも、読売ジャイアンツが1965年(昭和40年)から1973年(昭和48年)まで、9年間連続してプロ野球日本シリーズを制覇していたそうです。

The Yomiuri Giants won the Japan Series of professional baseball for nine consecutive years, from 1965 to 1973.

で、私は、小学生の頃、巨人ファンの友だちに、『読売ジャイアンツがいかに強かったか』という話を、うんざりするほど聞かされました。

So, when I was in elementary school, my friends who were Giants fans told me stories about how strong the Yomiuri Giants were to the point that I was sick and tired of hearing them.

「選手が『監督。今日はどうしますか?』と尋ねると、巨人の監督が『うん。今日は勝て』と言った」

"When The players asked the Director, 'Director, what do you want to do today?' he said, 'Win today's game.'"

と、自慢気に語ってきました。

He bragged about it.

ただ、この話、現時点で裏が取れていません。ただ、私は、この話を、複数の人間から聞いたような気がします。

I have not been able to corroborate this story at this time. However, I think I have heard this story from more than one person.

-----

当時の私は、子ども心に『こんな醜悪は話は聞いたことがない』と、思いました。

At the time, I thought to myself as a child, 'I have never heard such an ugly story.'

当時の読売ジャイアンツが、その財力と人気によって、優秀な選手を集めて、プロ野球とゲームを一方的に支配していた、ということだからです。

This means that the Yomiuri Giants at that time attracted the best players and unilaterally dominated professional baseball through their financial power and popularity.

―― なんで、彼(友だち)はこんな話で、自慢ができるんだ? むしろ"醜聞"として隠すべきストーリだろう?

"How can he (my friend) brag about such a story? Isn't it instead an "ugly story" that should be hidden ?"

と、思ったものです。

I thought.

大相撲の八百長試合と同じことです。

This was the same story as the fixed Sumo game.

(こちらは論文)

(This is a paper)

-----

という訳で、この話("今日は勝て")は「架空の話が、勝手に一人歩きした」ものなのかもしれません。

So this story ("Win the today's game") may be a "fictional story that has taken on a life of its own."

どなたか、裏取りの済みの真偽をご存知の方は、御一報下さい。

If anyone knows the truth with evidence, please let us know.

―― あいつら、馬鹿

 

2023,江端さんの忘備録

ほうれんそうは、美味しいです。

Spinach is delicious.

私の昼食のハムエッグには欠かせない食材ですが ―― 最近、値段が高いです。

It's an essential ingredient in my lunch of ham and eggs -- but it's been pricey lately.

『一束400円は出せないなぁ』と、最近は、その隣りにある「小松菜(こまつな)」を手に取ってしまいます。

"I can't pay 400 yen for a bunch of Komatsuna," I say, picking up the komatsuna beside it.

小松菜の値段は、ざっくりほうれんそうの半額なのですが、どうしても味は、ほうれんそうには及びません。

Komatsuna is roughly half the price of spinach, but its taste is not as good.

ですので、小松菜の方は、1cm単位に切ってソテーして、味を曖昧にするようにしています。

So, for the komatsuna, I cut it into 1 cm pieces and saute it to obscure the flavor.

-----

―― 卵1個、ハム1枚、えのき、ほうれんそう、または、小松菜と、砕いた唐辛子1個でソテーしたハムエッグと、トースト1枚

"One egg, one slice of ham, enoki mushrooms, spinach, or komatsuna greens sauteed with one crushed red pepper and one slice of toast."

これが、私の、朝昼兼用の食事です。

This is my breakfast and lunch.

まあ、これくらいに抑えないと、在宅勤務で体重を維持し続けるのは難しいです。

I have to keep it down to this level while working from home to keep my weight down.

-----

ちなみに、メンタル不調になれば、この昼食すら抜いても大丈夫です。

By the way, if you have a mental breakdown, you can skip even this lunch.

いや、『大丈夫』ではないのですが。

No, this is not "okay".

ここ2~3日は、食事を取ることすら、面倒です。

2023,江端さんの忘備録

今年のノーベル生理学・医学賞が、新型コロナウイルスのmRNAワクチンにつながる技術を開発した科学者2人に贈られることが、発表されました。

It was recently announced that this year's Nobel Prize in Physiology or Medicine will be awarded to two scientists who have developed the technology leading to an mRNA vaccine for a new coronavirus.

―― 凄く嬉しい

"I'm so happy."

以前、私は、

I have previously stated that

「ノーベル賞10年分の先行予約に値するイノベーションで、科学史に残る金字塔だと確信している」

"I am convinced that this is a milestone in the history of science, an innovation worthy of a 10-year Nobel Prize advance."

と記載しましたが、あまりにも早い受賞で、正直驚きました。

However, I was honestly surprised by the award so quickly.

-----

今回の受賞で、mRNAの研究そのものが、かなり以前(2005年)に公開されていることを知りました。

With the news of this award, I learned that the mRNA research itself was published long ago (2005).

つまりmRNAワクチン研究も、いわゆる『ノーベル賞のタイムラグ問題』をクリアしていたようです。

In other words, mRNA vaccine research also seems to have cleared the so-called "Nobel Prize time lag problem.

―― ノーベル賞を受賞する為には、なによりも、まず、長生きをしなければならない

-----

また、mRAN研究も、結構な期間「冷や飯」(冷遇の時代)を喰わされてきたことを知って、これまで以上に親近感が湧いてきました。

I also feel closer to "mRNA" research than ever before, knowing that they had been fed "cold rice" (a period of cold treatment) for quite some time.

こういう話は、研究員に勇気を与えてくれます ―― たとえ、私が"ちんけ"な研究員であったとしても。

Stories like this give researchers courage - even if I am an unknown researcher.

それでも、"ちんけ"な研究員&エンジニアには、"ちんけ"なりの人類への貢献方法があるんですよ。

未分類

-- カスタムプロトコルの識別子(任意の値を設定)

local NX_PROTOCOL = Proto("NXDlink", "nxdlink protocol dissector")

 

-- プロトコルのフィールド定義

local nx_protocol_fields = NX_PROTOCOL.fields

nx_protocol_fields.magic = ProtoField.string("nx_protocol.magic", "Magic Number")

nx_protocol_fields.message_length = ProtoField.uint32("nx_protocol.message_length", "Message Length")

nx_protocol_fields.source_address = ProtoField.uint32("nx_protocol.source_address", "Source Address")

nx_protocol_fields.destination_address = ProtoField.uint32("nx_protocol.destination_address", "Destination Address")

nx_protocol_fields.timestamp = ProtoField.uint32("nx_protocol.timestamp", "Timestamp")

nx_protocol_fields.message_number = ProtoField.uint32("nx_protocol.message_number", "Message Number")

nx_protocol_fields.m_ctl = ProtoField.uint32("nx_protocol.m_ctl", "M_CTL")

nx_protocol_fields.inq_id = ProtoField.string("nx_protocol.inq_id", "INQ_ID")

nx_protocol_fields.tcd = ProtoField.uint32("nx_protocol.tcd", "TCD")

nx_protocol_fields.ver = ProtoField.uint32("nx_protocol.ver", "VER")

nx_protocol_fields.gtid = ProtoField.string("nx_protocol.gtid", "GTID")

nx_protocol_fields.mode = ProtoField.uint32("nx_protocol.mode", "MODE")

nx_protocol_fields.pver = ProtoField.uint32("nx_protocol.pver", "PVER")

nx_protocol_fields.pri = ProtoField.uint32("nx_protocol.pri", "PRI")

nx_protocol_fields.cbn = ProtoField.uint32("nx_protocol.cbn", "CBN")

nx_protocol_fields.tbn = ProtoField.uint32("nx_protocol.tbn", "TBN")

nx_protocol_fields.bsize = ProtoField.uint32("nx_protocol.bsize", "BSIZE")

nx_protocol_fields.fui = ProtoField.uint32("nx_protocol.fui", "FUI")

-- nx_protocol_fields.fc = ProtoField.uint32("nx_protocol.fc", "FC", base.HEX)

nx_protocol_fields.fc = ProtoField.uint32("nx_protocol.fc", "FC")

nx_protocol_fields.field_x =  ProtoField.uint32("nx_protocol.field_x", "FIELD_X")

nx_protocol_fields.field_y =  ProtoField.uint32("nx_protocol.field_y", "FIELD_Y")

nx_protocol_fields.field_z =  ProtoField.uint32("nx_protocol.field_z", "FIELD_Z")

 

-- カスタムプロトコルの識別子(任意の値を設定)

--local DATA_PROTOCOL = Proto("DATALink", "datalink protocol dissector")

-- プロトコルのフィールド定義

--local data_protocol_fields = DATA_PROTOCOL.fields

--data_protocol_fields.fc = ProtoField.uint32("data_protocol.fc", "FC")

 

 

 

 

-- パケット解析関数

function NX_PROTOCOL.dissector(buffer, pinfo, tree)

-- フレーム情報を表示

pinfo.cols.protocol:set("NX Protocol")

local subtree = tree:add(NX_PROTOCOL, buffer(), "NX Protocol Data")

 

-- "NUXM" ヘッダ文字列を確認

local data = buffer():string()

-- local offset = data:find("NUXM")

local offset = data:find("NUXM") -1 -- 1を引かないと、ずれる

if not offset then

-- "NUXM" が見つからない場合は解析を中止

return

end

 

-- ヘッダ情報を解析

 

subtree:add(nx_protocol_fields.magic, buffer(offset, 4))

subtree:add(nx_protocol_fields.message_length, buffer(offset  + 4, 4))

subtree:add(nx_protocol_fields.source_address, buffer(offset  + 8, 4))

subtree:add(nx_protocol_fields.destination_address, buffer(offset + 12, 4))

subtree:add(nx_protocol_fields.timestamp, buffer(offset + 16, 4))

subtree:add(nx_protocol_fields.message_number, buffer(offset + 20, 4))

subtree:add(nx_protocol_fields.m_ctl, buffer(offset + 24, 4))

subtree:add(nx_protocol_fields.inq_id, buffer(offset + 28, 12))

subtree:add(nx_protocol_fields.tcd, buffer(offset + 40, 2))

subtree:add(nx_protocol_fields.ver, buffer(offset + 42, 2))

subtree:add(nx_protocol_fields.gtid, buffer(offset + 44, 8))

subtree:add(nx_protocol_fields.mode, buffer(offset + 52, 2))

subtree:add(nx_protocol_fields.pver, buffer(offset + 54, 1))

subtree:add(nx_protocol_fields.pri, buffer(offset + 55, 1))

subtree:add(nx_protocol_fields.cbn, buffer(offset + 56, 1))

subtree:add(nx_protocol_fields.tbn, buffer(offset + 57, 1))

subtree:add(nx_protocol_fields.fui, buffer(offset + 60, 4))

subtree:add(nx_protocol_fields.fc, buffer(offset + 64, 2))

 

-- fcの値を取得

-- local fc_value = buffer(offset + 64, 2):le_uint() -- リトルエンディアンの場合

local fc_value = buffer(offset + 64, 2)-- リトルエンディアンの場合

 

-- デバッグ情報を表示

-- print("fc_value:", string.format("0x%04X", fc_value)) -- 16進数表示

 

 

 

-- fcの値に応じてフィールドを追加

-- if fc_value == 0x181 then

-- if fc_value == 385 then

if fc_value = 0 then

-- 0x181の場合、特定のフィールドを追加

subtree:add(nx_protocol_fields.field_x, buffer(offset + 66, 4))

elseif fc_value == 0x183 then

-- 0x183の場合、別のフィールドを追加

subtree:add(nx_protocol_fields.field_y, buffer(offset + 66, 4))

elseif fc_value == 0x188 or fc_value == 0x189 then

-- 0x188または0x189の場合、共通のフィールドを追加

subtree:add(nx_protocol_fields.field_z, buffer(offset + 66, 4))

else

-- その他の場合、何もしない

end

 

 

end

 

--function DATA_PROTOCOL.dissector(buffer, pinfo, tree)

-- フレーム情報を表示

--   pinfo.cols.protocol:set("DATA Protocol")

--   local subtree = tree:add(DATA_PROTOCOL, buffer(), "DATA Protocol Data")

--   subtree:add(data_protocol_fields.fc, buffer(64, 2))

--end

 

 

-- プロトコルをWiresharkに登録

local udp_table = DissectorTable.get("udp.port")

udp_table:add(10631, NX_PROTOCOL) -- UDPポート10631でカスタムプロトコルを解析

udp_table:add(40311, NX_PROTOCOL) -- UDPポート40311でカスタムプロトコルを解析

udp_table:add(40312, NX_PROTOCOL) -- UDPポート40312でカスタムプロトコルを解析

 

 

2023,江端さんの忘備録

私が大学生の頃、カルト教団批判を続けてきた人が『空気銃で狙撃された』という話を聞きました。

When I was a college student, I heard that someone who had been a critic of cults had been 'shot with an air gun.

―― 私も危ないかもしれない

"I might be in danger, too."

と、危機感を持っています。

I have a sense of urgency.

江端家は、私の作った24時間体制の監視システムが動き続けています。

The Ebata family has a 24-hour surveillance system that I created that keeps it running.

しかし、仮にこのシステムで犯人が特定できても、私や家族が襲撃され殺傷されたら、それは『負け』です。

However, even if this system can identify the culprits, it would be a loss if they attacked and killed me or my family.

以前から申し上げている通り『テロは襲撃側が必ず勝つ』し、『自爆テロを防ぐ手段はない』からです。

As I have said, the attacker always wins in terrorism, and there is no way to prevent suicide bombings.

-----

私の場合、屋外で襲撃されたら、手も足も出ません。

In my case, if I am attacked outdoors, I have nothing to do.

だから、(他の人は知りませんが)私に関して言えば、

So, as far as (I don't know about others),

―― リモートワークによる「引きこもり」という自衛手段

"Self-defense by "shutting myself away" through remote work"

は重要なのです。

is important.

ですから、「出社が面倒」―― そんなこと、1mmも思っていません。

So, "Going to the office is a hassle" - I don't think that for a single millimeter.

という訳で ―― この平和な時代にあっても、「武装」という概念を持ち続けているシニアが存在していることを、覚えておいて下さいね。

2023,江端さんの忘備録

ジャニーズ事務所の社名変更問題ですが、私は、

As for the issue of changing the company name of Johnny's Office, I think

―― 大都芸能

"Daito Entertainment"

が、いいんじゃないかと思うんですが、いかがでしょうか?

is a good name.

「紅天女」の上映権を取得して、現実世界で「ガラスの仮面」の幕を引く、というのは、なかなか良いアプローチだと自負しております。

I am proud that acquiring the rights to screen "Red Tennyo" and pulling back the curtain on "The Glass Mask" in the real world is a good approach.

『"紅天女"なんぞに、どれだけのコストと時間をかけているんだ?』と

2023,江端さんの技術メモ

今迄、エージェントプログラムでは、エージェントの中に内部時計(正確にはSleep())を組み込んで、エージェント間の時刻同期については、無視してきたのですが、交通シミュレーションに時刻表を入れる必要になって、無視できなくなってきました。

今や、私の十八番となったredisを使ったgolangのgoroutineで作った複数エージェントへのメッセージのブロードキャストを使って、時刻同期をするサンプルプログラムを作ってみました。

BaseClock()から、所定時間間隔で、シミュレーション共通の時刻をブロードキャストして、person()のエージェントで、その時刻情報を割り込み受信させることにしました。

ブロードキャストによる遅延や割り込み取りこぼしが心配ではありますが、これまでの経験上redisのブロードキャストは十分に高速なようなので、多分大丈夫だと思います。

// C:\Users\ebata\tomioka3B\src\others\main26.go

package main

import (
	"encoding/json"
	"fmt"
	"sync"
	"time"

	"github.com/gomodule/redigo/redis"
)

var Clock1 chan interface{}

type Clock_Info struct {
	VirtualTime time.Time
	RealTime    time.Time
}

func BaseClock(wg *sync.WaitGroup) {
	defer wg.Done()

	// 接続
	conn, err := redis.Dial("tcp", "localhost:6379")
	if err != nil {
		panic(err)
	}
	defer conn.Close()

	// スタート時刻を指定
	startTime := time.Date(2023, 10, 1, 7, 0, 0, 0, time.UTC)

	// 1秒値を保持する変数
	seconds := 0

	var ci Clock_Info

	// ループを開始
	for {
		// 現在の時刻を計算
		ci.VirtualTime = startTime.Add(time.Duration(seconds) * time.Second)
		ci.RealTime = time.Now()

		// 現在の時刻を表示
		fmt.Println("シミュレータの時刻:", ci.VirtualTime.Format("2006/01/02 15:04:05"))
		fmt.Println("現在の時刻:", ci.RealTime.Format("2006/01/02 15:04:05")) // "2006/01/02 15:04:05"はフォーマットの形を真似るもので、内容に意味なし

		// パブリッシュ
		json_ci, _ := json.Marshal(ci)
		r, err := redis.Int(conn.Do("PUBLISH", "ClockInfo_1", json_ci))
		if err != nil {
			panic(err)
		}
		fmt.Println(r)

		// 5秒待つ (実際は、0.05秒くらいだが、確認用に長くしている)
		time.Sleep(5000 * time.Millisecond)

		// 1秒値を増加させる
		seconds++
	}
}

func person(person_num int, wg *sync.WaitGroup) {
	defer wg.Done()
	// 接続
	conn, err := redis.Dial("tcp", "localhost:6379")
	if err != nil {
		panic(err)
	}
	defer conn.Close()

	psc := redis.PubSubConn{Conn: conn}
	psc.Subscribe("ClockInfo_1")

	for {
		ci := new(Clock_Info)
		switch v := psc.Receive().(type) {
		case redis.Message:
			_ = json.Unmarshal(v.Data, &ci)
			fmt.Println("Person:", person_num, "VirtualTime:", ci.VirtualTime)
			fmt.Println("Person:", person_num, "RealTime:", ci.RealTime)

		case redis.Subscription:
			fmt.Printf("%s: %s %d\n", v.Channel, v.Kind, v.Count)

		case error:
			return
		}
	}
}

func main() {

	wg := sync.WaitGroup{}

	wg.Add(1)
	go BaseClock(&wg)

	for i := 0; i < 10; i++ { // 10人
		wg.Add(1)
		go person(i, &wg)
	}

	wg.Wait()
	fmt.Println("end of ... main()")
}

 

 

2023,江端さんの忘備録

今の日本には、同性婚、ジャニー喜多川性犯罪、新しい資本主義、少子化対策、拉致、年金 ・・・ 色々あります。

In Japan today, there are many things: same-sex marriage, Janie Kitagawa's sex crimes, new capitalism, declining birthrate, abductions, pensions, etc.

何かの問題が出れば、SNSで叫んで、自分の気分をすっきりさせて、すぐに忘れる人間 ―― 彼らのやっていることは、詰るところ、自慰行為です。

Whenever a problem arises, people shout about it on social media to make themselves feel better and quickly forget about it. What they are doing is, after all, masturbation.

以前、私は、この「自慰行為を見せつけらている被害者」として、このような人々を批判したことがあります。

As a "victim," I have previously criticized those who show me the masturbation.

世の中のかなり多くの人が、『私の記事を一行も読まない』まま、私の記事に対して批判や非難をしてくるからです。

私の「浅学」「狭量」「卑怯」の中でも、得に「卑怯」の面目躍如と言えましょう。

とは言え、私のブログも、自慰行為と言えば、自慰行為です ―― ですが、私は、それが自慰行為であったとしても、そのオカズのエロ本は、一冊に集中したいと考えています。

However, my blog is also a masturbatory act. But I want to focus on one erotic book, even if it is a masturbatory act.

という訳で、今の私は、『旧統一教会の解散請求』の問題に集中しています。

This is why I am now concentrating on the issue of the "Request for Dissolution of the former Unification Church."

-----

旧統一教会は、我が国が保証する「宗教性善説に基づく宗教の自由」の解釈のスキを付いた、(何回もの警告にも関わらず)人権無視の非人道的行為を行い続け、それによって法律が改正されるまでに至りました。

The former Unification Church continued to engage in inhumane acts of disregard for human rights (despite numerous warnings) that skirted the interpretation of our country's guarantee of "freedom of religion based on the goodness of faith. This has led to the law being amended.

この私ですら、『やむを得ない』と思える改正でした。

Even I, here, found the revision 'unavoidable.

ともあれ、旧統一教会の宗教法人格を認め続ければ、第2、第3の旧統一教会の登場を許すことになります。

At any rate, if we continue to recognize the religious juridical status of the former Unification Church, we will allow a second or third former Unification Church to emerge.

これまでの対応(文化庁の質問権に対する反応を含める)で、旧統一教会に、全うな人権の考え方や、現代の社会通念や、法治の概念が発生してくることを期待するのは、『全くの無駄』だと理解しました。

From the responses so far (including the response to the right of the Cultural Affairs Ministry to ask questions), I understand that it is 'completely futile' to expect the former Unification Church to come up with a full concept of human rights, modern social conventions, and the rule of law.

詐欺まがいの寄付(犯罪)をやるなら、―― 社会問題にならない程度の金額や規模に抑える、という程度の『犯罪の運用・管理』もできないほどに、絶望的にマヌケなんですよ、ヤツら(旧称統一教会)は。

―― 当たり前だバカ。この異常な養子縁組の上、金銭の授受までやっていたら、お前らは『本物の悪魔』だ

(2)(黙示的な内容)人の心の弱さに付け込んで、信者の生命と生活を危機に陥れて、なお、それを"献金"だの"浄財"だのと言い張る宗教団体ふぜいが「宗教の自由(憲法第20条)」を語るんじゃねえ

では、今回の解散請求の意義は何か?

So, what is the significance of this dissolution request?

このような、法を濫用し、人権を踏み躙る宗教団体が、再び「国家の庇護対象」とならないよう『旧統一教会にその先例となって貰う』ことです。

We must "let the former Unification Church set a precedent" so that religious organizations that abuse the law and trample on human rights will not again become "state patronage targets.

----

『宗教というのは人の心を救済するものであり、人々を幸せにするものであり、それゆえに、国家によって保護される必要がある』と、私は心底から信じています。

I believe wholeheartedly that 'religion is something that saves people's hearts and makes them happy and, therefore, needs to be protected by the state.

それ故、信者を洗脳し、家族の絆を破壊し、誰一人として見たこともない来世をエサにして個人財産を巻き上げるような集団に、宗教を名乗る資格はない。

Therefore, a group that brainwashes its followers destroys family ties and uses the afterlife, which none have seen as bait to take their personal property. It has no right to call itself a religion.

いや、正確言えば、こんな団体であってさえ、宗教を名乗っても良いのです。どんな宗教であれ「宗教」は「自由」なのですから(日本国憲法第20条)。

No, to be precise, even such an organization may call itself a religion. Because "religion" of any kind is "freedom" (Article 20 of the Constitution of Japan).

しかし、国家が法律で、そして我々日本国の国民の血税で、やつらの宗教法人格による特権を、守ってやる義理も義務もありません。

However, the state has neither the obligation nor the duty to protect the privileges of their religious juridical status by law and with the blood taxes of the Japanese people.

旧統一教会にとっても、これが「一番かっこいい国家との決別」だと思います。

未分類

ラプラス分布は、ランデル分布とも言われて、交通工学のシミュレーションでは非常に重要な確率分布として使われているようです。

パラメータとして、平均(location parameter)を表す μ と尺度(scale parameter)を表すbを持ち、ラプラス分布の確率密度関数は、 f(xμ,b)=1/2b exp(bxμ∣​) と表される。

でもって、

交通シミュレーションで使われる場面

■交通の到着間隔のモデリング → 乗客の到着間隔をモデル化するため

■トラフィックの所要時間の予測 → 自動車の移動時間やトラフィックの所要時間を予測するため

■信号制御の最適化 → 信号のサイクルタイムやフェーズの最適化を行うため

■交通事故の発生確率の評価 → 交通事故の発生確率を評価するため

と、まあ、ここまでは分かったのですが、この分布の数学的な意義が分かりません。(正規分布や指数分布などは、理解できていると思います)

ですが、ラプラス分布の数学的な意義が分かりません。

で、以下のように推察しているのですが、私のこの推察は正しいでしょうか?

ラプラス分布を使う理由(江端の私見)

■外れ値のモデル化の為

→ そもそも、バスの到着時間が、正規分布のように曖昧に分散していたらとても困る。情報通信についても同様。とは言え、外れ値を完全に無視することはできない。そこで、このような、交通、情報を扱う分布として、(積分して1になる関数として)便利なツールとして、ラプラス分布が使われている

どなたか、ご見解を頂ければ幸いです。

江端