黒木玄 Gen Kuroki
- いいね数 389,756/311,170
- フォロー 995 フォロワー 14,556 ツイート 293,980
- 現在地 (^-^)/
- Web https://genkuroki.github.io/documents/
- 自己紹介 私については https://twilog.org/genkuroki と https://genkuroki.github.io と https://github.com/genkuroki と https://github.com/genkuroki/public を見て下さい。
2020年10月22日(木)
gist.github.com/phasetr/03d408... 1から始めるJuliaP51で下3行の確認があるが、Julia1.5.2 だと mutable struct Point{T} の定義の段階で ERROR: invalid redefinition of constant Point が出る。そもそも mutable がある時点で気に食わないという話もあるが、これはバージョンアップで挙動が変わった事案?
タグ:
posted at 00:18:05
gist.github.com/phasetr/03d408...
Julia 1.5.2、P.52 にある次のコードが通る?
function distance(p::Point{Number})
sqrt(p.x^2 + p.y^2)
end
タグ:
posted at 00:31:35
Nice seeing the ability to make data oriented apps for end users now being possible in #JuliaLang. Or has for some time, but improved Dash implementation makes this a lot more accessible to data scientists. twitter.com/plotlygraphs/s...
タグ: JuliaLang
posted at 00:35:48
armアーキテクチャなSurface Pro XのwslでConda.jl使いたいなと思ってたらこれのおかげで普通に使えた
github.com/jjhelmus/conda...
タグ:
posted at 00:45:07
非公開
タグ:
posted at xx:xx:xx
Steve Canon (PARODY) @stephentyrone
@johnregehr @RReverser @pedantcoder Has Julia done work on optimizing data layouts? Seems like a good fit. (cc @JeffBezanson @StefanKarpinski @KenoFischer @Viral_B_Shah etc)
タグ:
posted at 01:23:41
@stephentyrone @johnregehr @RReverser @pedantcoder @JeffBezanson @StefanKarpinski @Viral_B_Shah For Celeste we had a system that would take in a data layout description and rewrote things manually while keeping the programmer facing semantics the same. We don't get have a general system, but it's on my list of things to try.
タグ:
posted at 01:27:03
@stephentyrone @johnregehr @RReverser @pedantcoder @JeffBezanson @StefanKarpinski @Viral_B_Shah Julia does have dynamic semantics, so in general there is a limit to what we can do without delimiting a region of the to allow non-standard semantics. It is pretty useful for a whole range of things though, so we're working on a compiler framework for local fancy compiler magic.
タグ:
posted at 01:30:43
@stephentyrone @johnregehr @RReverser @pedantcoder @JeffBezanson @StefanKarpinski @Viral_B_Shah E.g. for a machine learning model. We don't statically know the whole program, but our static analysis can usually see the entire training loop just fine, so it would be nice to say "for this particular region of the code, just tune the hell out of things" (and error otherwise).
タグ:
posted at 01:32:30
@stephentyrone @johnregehr @RReverser @pedantcoder @JeffBezanson @StefanKarpinski @Viral_B_Shah I think that gives a pretty nice trade-off to allowing domain specific optimizations without having to build a whole domain specific compiler.
タグ:
posted at 01:33:13
I found this UI change more confusing than I probably should have. twitter.com/Twitter/status...
タグ:
posted at 01:38:48
小6のときに顔を合わせると「きーっく、きーっく、キックのおにーだー」と『キックの鬼』のテーマ曲を歌いながら、沢村忠の真似をして襲い掛かってくる友人がいた。その後某近代文学館の事務局長になった。 twitter.com/bigburn/status...
タグ:
posted at 01:42:21
@phasetrbot #Julia言語
【ERROR: invalid redefinition of constant Point】
Pointについてやってはいけない再定義をしています。
対策
①struct Pointの定義を削除(おそらくこれがやりたいこと)
②mutable struct Point{T}をmutable struct Point2{T} とかに変えて残りの部分も適切に書き換える。 pic.twitter.com/XbDKDv1ihi
タグ: Julia言語
posted at 02:29:34
@phasetrbot #Julia言語
struct Point{T}
x::T
y::T
end
function distance_error(p::Point{Number})
sqrt(p.x^2 + p.y^2)
end
p = Point(3, 4)
distance_error(p)
は no method matching エラーになります。
なぜならば Point{Int64} <: Point{Number} はfalseだからです。
タグ: Julia言語
posted at 03:44:22
@phasetrbot #Julia言語
function distance(p::Point{<:Number})
sqrt(p.x^2 + p.y^2)
end
p = Point(3, 4)
distance(p)
ならば正常に動きます。
Point{<:Number} == Point{T} where T<:Number
なので、
Point{Int64} <: Point{<:Number}
はtrueになります。
gist.github.com/genkuroki/a2be...
タグ: Julia言語
posted at 03:46:31
@phasetrbot #Julia言語 個人的な意見では、Juliaの初心者はまずJuliaの型システムの詳細に触れず済ます方が得策だと思います。
「自前で型を定義して多重ディスパッチでいぇーい!」をいきなり目指すのは難しいです。
既存の型を使いこなせるようになれば、自然に自前で型も上手に定義できるようになります。
タグ: Julia言語
posted at 03:50:06
@phasetrbot #Julia言語 函数の引数の型の制限は可能な限り無くした方が得です。そうしないと、適用範囲が不当に狭い函数が簡単にできてしまう。
例えば、
f(x::Number) = sin(x)
のように書くと、行列xに適用できない函数ができてしまいます。Juliaでは行列のsinも定義されています。
タグ: Julia言語
posted at 03:54:05
@phasetrbot #Julia言語
distance(p::Point{<:Number}) = ~
と定義すると、成分がNumberの点にしか適用できない函数になります。非可換な作用素環を扱った経験がある人がそれで満足しちゃいかんでしょう。
LinearAlgebra.norm(p::Point) = √(norm(p.a)^2 + norm(p.a)^2)
なら適用可能範囲が大きく広がる。 pic.twitter.com/L3umaen7yT
タグ: Julia言語
posted at 04:09:09
@phasetrbot #Julia言語 既存の型についての理解はそのまま自前の型の定義に繋がります。
個人的にはJuliaのComplex型の定義が分かり易いと思います。例えば、mutable struct ではなく、struct としてComplex型が定義されている。
これを真似すれば自分で「数」を定義できます。
github.com/JuliaLang/juli...
タグ: Julia言語
posted at 04:12:45
@phasetrbot #Julia言語 訂正
誤り→ LinearAlgebra.norm(p::Point) = √(norm(p.a)^2 + norm(p.a)^2)
訂正版→LinearAlgebra.norm(p::Point) = √(norm(p.x)^2 + norm(p.y)^2)
以下のリンク先も自前での型の定義について参考になるかも。
twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 04:17:38
@phasetrbot #Julia言語 たぶん、これを見れば、色々疑問が解消するはず。
struct の再定義はできないので、module(名前空間)の中でstructを定義して、module(名前空間)全体を置き換えてしまえば、見掛け上structの再定義が可能になったかのようにできます。
gist.github.com/genkuroki/a540... pic.twitter.com/LYqUxxhFTz
タグ: Julia言語
posted at 04:26:31
@phasetrbot #Julia言語 私は自前で型を定義する試行錯誤を行う場合には、Jupyter notebook上で繰り返し、moduleを上書きして、型の定義を確定させる作業をしています。(Jupyter notebook以外の環境でももちろん同じことをできる。)
そして、確定したら、パッケージにしてしまう。
タグ: Julia言語
posted at 04:28:31
発注した人は横2×縦3のつもりだったのに、順序固定派の方は縦2×横3と言ったと思い込んで間違えるパターンもありますね。
順序否定派は2×3だけでは情報不足と判断して「どちらが縦ですか?」と聞き返します。 twitter.com/yamma_heybox/s...
タグ:
posted at 07:31:55
@Josh_Ebner It's ok you don't like Julia and I'm not going to argue on that, you're entitled your own opinions, but suggesting that everybody should choose their tools based on what is trendy instead of technical merits doesn't sound fair and doesn't help progress
タグ:
posted at 07:49:49
数式は(情報の)不可逆圧縮なので、このようにコミュニケーションしようとするのが間違いのもとです。横とか縦とかの情報を併せて伝えればよいだけの話。順番がどうのこうのとかややこしいことを約束させないでほしい。 twitter.com/yamma_heybox/s...
タグ:
posted at 07:54:02
フランシスコ教皇が支持したのは同性<婚>ではなく、敢えて日本語に対応物を探すなら同性パートナーシップですね。恋愛関係や同居人以上のものではあるが、結婚とはいっていません。たしか数年前から一貫しているはずです。 twitter.com/spearsden/stat...
タグ:
posted at 08:01:45
なんだか,大学院生が霞でも食って,そのへんのダンボールで生活していると思ってるのかな。こういうお金の設定をしている人たちは。 twitter.com/tunatuna_01/st...
タグ:
posted at 11:26:32
久しぶりにJulia (1.5.1)起動してPkg.add("RDatasets")したらUbuntuで動かしているのにmacOSがどうとか意味不明なエラーが出て困った。が、1.5.2にアップデートしたら治った。既知のバグかな?まあ、動いたからいいんだけれど。
タグ:
posted at 11:56:58
#Julia言語 パラメータ付きの型による函数の引数の型の制限をJulia初心者は無理してやる必要はないと思う。
正しく使用できても無駄に函数の適用範囲を狭めがちになる可能性が高いし、function f(x::Point{Number}) ~ ではなく、function f(x::Point{<:Number}) と書けない人も多いと思う。 twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 12:52:40
#Julia言語 parmetric types の省略された書き方の詰め合わせ
例えば、
module B
struct Foo{T<:Number, N, Y<:AbstractArray{T, N}}
a::Y
end
end
のとき
B. Foo{Int64}
は
B. Foo{Int64, N, Y} where Y<:AbstractArray{Int64, N} where N
と同じ。
gist.github.com/genkuroki/141e... pic.twitter.com/iImAQ4tvhH
タグ: Julia言語
posted at 13:25:30
#Julia言語
where はJuliaの文法では中置きの二項演算子扱いになります。
parametric type関連の事柄は色々アレで大変なので、学習を後回しにするのは悪い選択肢じゃないと思う。
function f(x) ~ end
function f(x::AbstractArray) ~ end
などでできないことに出会ってからでも遅くない。 pic.twitter.com/P1Rqalq5dL
タグ: Julia言語
posted at 13:34:20
#Julia言語 私はComplex型の定義を直接見て色々納得しました。
人工的な例よりも実際にJuliaで使われている実践的な例の方が、応用例が豊富でわかり易く、しかも「実戦配備」されている型なので迫力があります。
Complexがmutableになっていないことにも注目!
github.com/JuliaLang/juli... pic.twitter.com/Hs1mMZwpCS
タグ: Julia言語
posted at 13:39:06
#Julia言語 現在のJuliaのパラメトリックタイプが抱えている問題について主に扱っている抱腹絶倒のJeff Bezansonさんによる講演がある。
新しい試みによるプログラミング言語の開発が試行錯誤のかたまりであることがよく分かる。「不当な非難」さえ愛する必要有り(笑)
www.youtube.com/watch?v=TPuJsg...
タグ: Julia言語
posted at 13:46:32
#Julia言語
添付画像1: ~ is ambiguous. Candidates: ~ 型のエラーに初めて出会った人はぎょっとすると思う。しかし、エラーメッセージに訂正法が書いてある😊
添付画像2: しかし、その次にはpromotion of types ~というエラーに悩まされるかも(笑)
ソースコード↓
gist.github.com/genkuroki/141e... pic.twitter.com/JGMIrM24B1
タグ: Julia言語
posted at 14:22:52
#Julia言語 以下Main.D.WをWと略す
①+(x::W{T}, y::T) where TのTは任意。
②+(x::Number, y::Number}がすでに定義されている。
①②の+の定義域の間に包含関係は成立していない。片方がもう一方より真に小さければ問題は生じない。
+(W(1), 2)で①②のどちらを実行するべきかが決定不能になる。 pic.twitter.com/EqO1fqwVu2
タグ: Julia言語
posted at 14:29:18
最近あったOSS話:
issueで質問
↓
的ついてたらしく"welcome to innermost universe !"的な感じで褒めてくれて嬉しい
↓
でも結局うまくいかない原因は分からずHACKを重ねるしかないかってなる
↓
1箇所タイポを修正したら全てうまく動いちゃった
Revise.jlの後ろ側の話
github.com/JuliaDebug/Low...
タグ:
posted at 14:30:19
簡単なミスで時間を使ってしまったのでメモ:
pythonで呼び出したimshowだと二次元データの一列目のindexはy軸方向に下から始まるけど、これがjuliaだとy軸の上側から始まる...
何故に...
タグ:
posted at 15:21:30
非公開
タグ:
posted at xx:xx:xx
ASIOS - 超常現象の懐疑的調査のた @Asiosorg
ジェイムズ・ランディが死去: 本城です。 アメリカの懐疑論者のジェイムズ・ランディが10月20日に亡くなりました。92歳でした。 We are very sad to say that James Randi passed… dlvr.it/Rk5WmR
タグ:
posted at 15:49:01
『残酷で悪質で破廉恥なゲーム、哀しみ助けを必要とする人を利用して。』・心霊詐欺に対するジェームズ・ランディの痛烈な批判 (James Randi | TED2007) www.ted.com/talks/james_ra...
タグ:
posted at 15:58:39
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
Juliaの区間演算パッケージ。区間ベクトルをテキトーにやるととんでもないことになる?(私だけ?)
julia> using IntervalArithmetic, LinearAlgebra
julia> a = [interval(-1,2); interval(-1e-5,1e-15)];
julia> norm(a,Inf)
[0, 1.00001e-05]
タグ:
posted at 17:01:28
こんなんにするといけるみたいだけど、コンパイルがめっちゃ遅い。。
julia> norm(SVector{2,Interval}(a),Inf)
[0, 2]
おとなしく
julia> maximum(abs.(a))
[0, 2]
と定義通り書くのが良いのかな?
タグ:
posted at 17:03:41
非公開
タグ:
posted at xx:xx:xx
@takitoshi julia> norm(abs.([interval(-5,5),interval(2,3)]),Inf)
[2, 3]
やっぱりなんか変?
タグ:
posted at 17:44:00
#統計 1年以上前の話題にクリアな回答がないようなので、以前言っていたことを繰り返し。
最小二乗法がやっていることは、計画行列Xの線形写像としての像へのデータを成分とするベクトルyの直交射影bを求めることです。
これが分かっていれば X^T X が退化している場合に素直に一般化できます。続く twitter.com/physics303/sta...
タグ: 統計
posted at 17:53:02
非公開
タグ:
posted at xx:xx:xx
#統計 そういう場合には、事前分布を使うベイズ法が有効な道具になるだろうというようなことは、1980年の論説に中で赤池弘次さんも述べています。
事前分布を主観・信念・確信のように解釈したがる前世紀の黒歴史を否定し、赤池弘次さん的な合理的な考え方をするべきです。 twitter.com/genkuroki/stat...
タグ: 統計
posted at 18:53:34
母の子育て戦法が皆様の目に留まり嬉しく思います。
今でも弟と二人でネズミーに行くほど、仲の良い兄弟に育ちました。お母さんありがとう!
記念に舞浜の推し社畜ヤンキー
エイトフットのジョーさんの宣伝を
一部お写真@omoteno_urize 様からご厚意で拝借をお許し頂きました! pic.twitter.com/dUXkVePtnt
タグ:
posted at 18:53:55
バズったら宣伝をやってみたぜ!
母には「夢夢しく育てすぎたかしら?」と言われますが、兄弟二人でネズミーファンに育ちました
弟がマレ様推し、私がスラ様推し。
たまに兄弟間で空気が張り詰めるのは、眠れるのアトラクがないこと。O社さんにおかれましては眠れるエリア増設をお願い致します
タグ:
posted at 18:58:11
@genkuroki 最尤推定とベイズ推定におけるMAP推定とでは、結局パラメータAが目的の関数の値を最大にするポイントを探しているという意味で、非常に似たもののように思います。目的の関数が尤度関数(結合分布)か事後分布というだけで。この観点から言うと、計測値が決定論的な扱いをされるかどうかは
タグ:
posted at 19:07:41
あまり意味がない事のように思うのですが、師が最近おっしゃっていたベイズと頻度論で区別する必要がないというお話とリンクする点はありますでしょうか?
自分でも区別論に関していろいろと咀嚼しようとしている過程です。何かコメントありましたら、幸いです。
タグ:
posted at 19:10:25
非公開
タグ:
posted at xx:xx:xx
What is the best way of shipping huge amount of foreign code in Julia packages? Trying to compile them after installation in the user machine? Downloading precompiled binaries?
#JuliaLang
@JuliaLanguage
タグ: JuliaLang
posted at 19:42:13
#統計 #線形代数
線形写像の像への直交射影(=最小二乗法)の図 pic.twitter.com/gq8FSQRbHV
posted at 20:14:01
@genkuroki 普段MATLABを使っているので、そちらで計算してみました。意図的にPrediction Matrixを操作して、H^T*Hが縮退している場合に、は大きく結果が変わるのがわかります。MLEはやはり不安定になりますね。 pic.twitter.com/ZpvY1m1j3e
タグ:
posted at 20:28:58
なんてことだ…「無料で受けられる定期接種の対象を既に過ぎた2000~03年度生まれの女性では、避けられたはずの患者が計1万7千人、死者が計4千人発生するとの予測を大阪大チームが22日までにまとめた」接種勧奨の中止で死亡4千人増か 子宮頸がん予防ワクチン(共同通信)news.yahoo.co.jp/articles/4fd78...
タグ:
posted at 20:29:36
#線形代数 #統計 標本の平均や分散を計算することでさえ、クリスタルクリアな理解のためには、線形代数的直観が必須。
線形代数的直観の習得を目標に線形代数をじっくり勉強すれば認識力が大幅に高まると思う。 twitter.com/genkuroki/stat...
posted at 20:35:40
もし愛猫が脱走してしまったら、1週間以内は半径500m以内を徹底的に探すようにしてください。特に完全室内飼いの猫ちゃんは発見場所の中央値が39mと、家の近くに隠れている可能性が非常に高いです。あまり想像したくないことですが、いざという時のために覚えておいてください。 pic.twitter.com/NwXBYxyw4G
タグ:
posted at 20:46:46
探す時は猫が隠れそうな茂み、車や物置の下、室外機周辺を注意深く探しましょう。驚いた猫は上に登る習性があるので、屋根や木の上などにも目を向けてください。大好きなおやつをふりながら探すのも良いです。
タグ:
posted at 20:46:47
また、猫は隠れ家を好みます。ダンボールに入口の穴を開けた隠れ家をつくり、中にお気に入りの毛布やクッションを入れて、おうちの近くに置いておくのも効果的です。また猫の習性を考えると探す時間は早朝もしくは夕方から夜にかけてが良いでしょう。
タグ:
posted at 20:46:47
同時に警察・保健所にも連絡を入れましょう。一方で、多くの人は保健所=殺処分のイメージがあり、保護してくれた人が保健所等に連絡していないケースもあるので、ポスターやチラシで呼びかけることもとても大事です。
すべての猫が家族のもとに帰れますように。
タグ:
posted at 20:46:47
@genkuroki 恐縮です。解きやすい例を出していただいてありがとうございました。たしかにこれはMLEとMAPの良い比較になりますね。勉強になります。
タグ:
posted at 20:52:53
Juliaの資料ちょっと読んでて,多重ディスパッチってなんじゃいって思ったら,いわゆるC++のtemplateとかJavaのGenericsとかのことか...
タグ:
posted at 21:19:49
Re: RTsのスレッドの感想
日本語圏に限らず本当によく見るのが、
*「静的型付けこそ至高」教団
*「0始まりインデックス」教団
あとこれに
*「クラスがないと困る」教団
を合わせると、「大三元」の完成かな。
自分達が合理的だと信じている教条主義者達。
タグ:
posted at 21:21:44
自身の技術を売りにしなければいけない人達は、頭のかたい教条主義者だとばれて馬鹿にされることを恐れる存在だと思うのですが、上の3つの教団の信者は自分が信者であることを隠そうとしない。
世界的に「これを言っても恥にならない」ということになっているようだ。そのこと自体が大問題かも。
タグ:
posted at 21:25:59
子供の掛け算勉強が始まり遂に我が家にも掛け算の順序問題が来たなど。前からネットでは見ていたけど自分も体験するとは。ちょっと感慨深い。 pic.twitter.com/fxDnGpD7jh
タグ:
posted at 21:29:11
Pythonで今のところ仕事ができているので、それをメインにするのは良いのですが、これからのことを考えるとJulia言語にも手を出したくなりますね。
スクリプト言語なのに、LLVMのおかげでコンパイラ言語とも遜色ない速度が出るのは魅力です。。
タグ:
posted at 21:37:19
@takitoshi @mkashi これは #Julia言語 本体のnormInfが > で大小を判断して片方を選ぶことの繰り返しで計算していることが原因です。 > を使わずに max を使うようにすれば、この問題は解決します。
詳しくは↓
gist.github.com/genkuroki/b334...
これを見れば自力で原因を調べることができるようになるはず。 pic.twitter.com/LPiT7lDgxg
タグ: Julia言語
posted at 22:18:27
#Julia言語 区間計算に対応するためには、maxやminを不等号による大小関係の判断で計算してはダメで、区間計算対応のmax, min函数を使う必要がある。
max, minが定義されているのに、不等号を使ってmax, min計算するのはおかしいので、誰か issue を立てるべき話題かも。
twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 22:21:41
その15万人減ったとする出生っていつ妊娠したことになってるんです?コロナの国内での本格的流行からまだ半年ちょっとしか経ってないんですが twitter.com/Isseki3/status...
タグ:
posted at 22:27:27
非公開
タグ:
posted at xx:xx:xx
#数楽 計算用紙は大きい方が使い易い。
しかし、その次の段階もあって、計算結果の紙束を持ち歩くようになると、その重さに耐えられなくなるときがやって来る。
某氏は重い紙束と本を大量に持ち歩き過ぎて体を壊し、医者から重いものを持ち歩くことを禁止されている。
twitter.com/bicycle1885/st...
タグ: 数楽
posted at 22:39:08
JuliaのBinaryBuilder.jlでHPhiをコンパイルしようとしているけれど失敗する。LIBDIRを指定してcmakeでlapackは見つかったって言っているのに、zgemmがないとか言われてこけてしまう...
タグ:
posted at 22:39:54
It is straightforward to write an async and multi-threading program by using #julialang . pic.twitter.com/cpLR0zTVVj
タグ: julialang
posted at 22:49:36
仕事では化石みたいな環境で化石みたいな言語を使っているので、趣味で世間とのギャップを埋めたいと思っています。取り敢えずPython、Juliaあたりを使えるようになりたいのと機械学習も扱えるようになりたいです!
#プログラミング初心者と繋がりたい
#駆け出しエンジニアと繋がりたい
タグ: プログラミング初心者と繋がりたい 駆け出しエンジニアと繋がりたい
posted at 23:08:02
#統計 そもそも、甘利さんが前世紀の黒歴史を踏襲したスタイルでベイズ統計について語っている点が酷い。
「データを生成した確率分布のパラメータ①」と「分析用のモデル内のパラメータ②」を同じ記号「θ」と書いて区別ないのは論外だと思いました。続く twitter.com/junotk_jp/stat... pic.twitter.com/vMylpBudhh
タグ: 統計
posted at 23:09:38
浮動小数点数のscanfとprintfに対応する機能を自分で実装しようとするととにかく大変。Bailey先生のdd/qdもここの実装はかなり手抜きに見えた。
タグ:
posted at 23:30:05
#統計 そういう21世紀の数学的成果に頼らなくても、20世紀の中頃には、オーバーフィッティングが生じやすい簡単な場合に、最尤法よりも適切な事前分布を使うMAP法の方が平均予測精度が高いことが知られていました。
James-Stein推定。詳しい解説↓
nbviewer.jupyter.org/github/genkuro...
タグ: 統計
posted at 23:34:05
Time to take #JuliaLang serious? International standard aircraft collision avoidance system, ACAS X was written in highly optimized C++. A Julia version was written to merely document algorithm. But it ran just as fast! #programming #HPC #CPP #performance lwn.net/SubscriberLink...
タグ: CPP HPC JuliaLang performance programming
posted at 23:55:50
うちの高3長男、数Ⅲは受験科目に無いのだが、「難しいけど面白い!楽しい!」と言って勉強している。
くだらない #掛算 の順序とかを拘って教え込まれていたら、こうはならなかっただろうなぁとしみじみ思う。 twitter.com/vecchio_ciao/s...
タグ: 掛算
posted at 23:58:05