はてなキーワード: SUBとは
https://anond.hatelabo.jp/20210907184611 の続き
たとえば、以下のような問題を考えます。演習問題に限らず、教科書の本文や、解答の一文一文も「証明問題」だと捉えてこのような態度で読み解く必要があります。
x2 - 2a|x| - b = 0
それほど典型的な問題ではありません。少なくとも、何か簡単な公式があって2aやbなどを代入すれば答えが出てくる、というものではありません。
この問題を解くには、左辺の式が何を意味しているのか理解していなければいけません。これは、何か上手いやり方があって機械的に解ける場合でもそうです。
とxの二次式になるので、既に知られた方法で解の個数を求めることができます。ただし、たとえば方程式f≧0(x) = 0の解は、x≧0を満たすものだけを数えることに注意が必要です。したがって、単に判別式の符号を調べるだけでなく、二次関数f≧0(x)のx≧0の範囲での増減を調べる必要があります。x<0の場合も同様です。
結局、この問題を解くには
ということができる必要があります。特に前者を理解していないのは、問題文の式が何を意味しているのか分かっていないということですから、解法を覚えるとか言う以前の問題です。当然、これらが分からなければ調べたり他人に聞く必要があります。その際は、定義の数式を形式的に覚えたり当て嵌めたりするだけではなく、具体例を通じて、その意味を理解する必要があります。絶対値記号|x|であれば、xが正の数ならどうなるのか、負の数ならどうなるのか、y = |ax + b|や、y = |ax2 + bx + c|のグラフの概形はどうなるのか、等。
もし二次関数を調べた際に平方完成が分からなければ、それも調べる必要があります。平方完成を調べて文字式の展開で分からないところがあれば、それも調べる必要があります。そもそも、二次方程式を解く際になぜ(一次方程式では必要無かった)平方完成をするのか。そういった問題が解ける理屈(あるいは類似の問題と同じやり方では解けない理屈)を理解している必要があります。
また、自分で問題を解いて、たとえば場合分けの仕方が解答と異なるならば、それらが本当に同値なのかをきちんと確かめる必要があります。最初のうちは計算ミスをして符号などが逆になることもあるでしょうが、それもどこで間違えたのかをきちんと確かめる必要があります。
そういうことをすべて完璧にこなして初めて、この問題を理解したと言えるのです。
以下、解答例を載せます。匿名ダイアリーなので文字のみですが、実際は図を付けた方が良いでしょう。
f(x) = x2 - 2a|x| - bとおくと、
f(x) = 0の実数解の個数は、y = f(x)のグラフと、y = 0のグラフの交点の数であるから、これを求める。
とおく。y = f≧0(x)のグラフは、(a, -(a2 + b))を頂点とする下に凸な放物線で、y軸との交点は-bである。一方、y = f<0(x)のグラフは、(-a, -(a2 + b))を頂点とする、下に凸な放物線で、y軸との交点は-bである。
したがって、y = f(x)のグラフは、y = f≧0(x)のグラフのx≧0の部分を、y軸に関して対称に折り返した形をしている。
f(x)は、x = ±aで最小値-(a2 + b)を取る。したがって、y = f(x)のグラフとy = 0のグラフの交点の数は、
f(x)は、x = 0で最小値-bを取る。したがって、y = f(x)のグラフとy = 0の交点の数は
以上、(1-1)〜(1-5), (2-1)〜(2-3)がf(x) = 0の実数解の個数である。
上の解答例ではy = f(x)のグラフの位置関係を用いましたが、もちろん、f≧0(x) = 0、f<0(x) = 0の解を実際に求めても解けます。
この場合は、それぞれの解がx≧0、x<0を満たすかどうかを確かめる必要があります。そして、それぞれの場合でf≧0(x) = 0のx≧0を満たす解の個数とf<0(x) = 0のx<0を満たす解の個数を足したものが答えになります(x≧0とx<0に共通部分は無いので、これらを同時に満たすことはありません)。
f≧0(x) = 0の解は、
x = a ± √(a2 + b)
である。同様に、f<0(x) = 0の解は
x = -a ± √(a2 + b)
である。
とおくと、ra(b)はa2 + b≧0の範囲で定義される。また、ra(b)はbに関して単調増加であり、ra(0) = |a|である。つまり、f≧0(x) = 0およびf<0(x) = 0の2つの解が同じ符号を持つか否かは、b = 0を境界にして分かれる。
したがって、a2 + b≧0のとき、f≧0(x) = 0の解は
同様に、f<0(x) = 0の解は、a2 + b≧0のとき、
また、D < 0の場合は、f≧0(x) = 0、f<0(x) = 0ともに実数解を持たない。
以上をまとめると、f(x) = 0の解の個数は、以下のようになる。
(1-1) a2 + b<0のとき、0個
(1-2) a2 + b = 0のとき、2個(③と⑥でD = 0場合)
(1-3) a2 + b>0かつb<0のとき、4個(③と⑥でD>0の場合)
(2-2) b = 0のとき、1個(②と⑤で D = 0の場合)
何度も書いているように、たとえばx2 - 2ax - b = (x - a)2 - (a2 + b)などの式変形の意味が分からないのであれば、二次関数の復習をする必要があります。解答文中に出てきた「単調増加」などの用語も分からなければ調べる必要があります。
上記の場合分けが(a, b)のすべての組を網羅しているのか、と言ったことも注意する必要があります。
解答例2の①〜⑥の場合分けは、y = f≧0(x)およびy = f<0(x) のグラフとy軸との交点を考えています。これの符号と軸の位置で、どの範囲にy = 0の解が存在するかが決まります。たとえば、下に凸な放物線がy軸と負の値で交わるならば、x軸とは必ず正負両方の値で交わらなければいけません。逆に、y軸と正の値で交わるならば、x軸とは交わらない(D<0)か、放物線の軸がある方で2回交わります(D = 0の場合は1回)。解答例2ではra(b) = √(a2 + b)という関数を用意しましたが、このy軸との交点と軸に関する条件を代わりに説明しても良いです。このように、数式や条件が図形のどのような性質に対応するのかを考えることも数学の勉強では重要です。
また、「二次関数f(x)が下に凸で最小値が0以下であれば、f(x) = 0は実数解を持つ」ということを認めています。これは明らかに思えるでしょうが、極限を習った後であれば
実数値関数fが区間[a, b]で連続であれば、f(a)とf(b)の間の任意の実数γに対して、γ = f(c)となる実数c∈[a, b]が存在する。
という「中間値の定理」を暗に使っていることを見抜けなければいけません。このような定理が出てきたら、Part1でも述べたように、具体的な関数でどうなっているのか(たとえばf(x) = x2 - 2に対して、f(a) = 0となる実数aが存在することなど)、仮定を緩めたら反例があるのか(たとえばfの定義域が有理数ならどうか、連続でなければどうか)などを確認する癖をつけましょう。
y = x2 - 2a|x| - bのグラフとy = 0のグラフの交点を考える代わりに、y = x2 - 2a|x|のグラフとy = bのグラフの交点を考えても良いです。これは、本問と同値な方程式
x2 - 2a|x| = b
を考えていることに相当します。記述量はそれほど変わらないでしょうが、こちらの方が見通しは良いかも知れません。
仮に本問と異なり、aが定数の場合、たとえばa = 1であれば
y = x2 - 2|x|
のグラフは変数に依りませんから、y = bとの交点を考えるのは容易です。
実際、y = x2 - 2|x|のグラフは、頂点が(1, -1)、y軸との交点が0の、下に凸な放物線のx≧0の部分をy軸に関して対称に折り返した形です。
したがって、この場合は
です。
以上のことは、問題を解く際だけに行うのではなく、教科書本文、問題文、解答例の一文一文を「証明問題」だと思って常に意識する必要があります。
自分で参考書を書いてみれば分かりますが、数学の検定教科書はおそろしく完成度が高いです。そのことを具体的な実感をともなって理解できれば、あなたの学力は入試レベルなど優に超えています。
数学の本の出来は、理論の構成で決まります。数学の理論の構成とは、かんたんに言えば定義や定理をどう配置するかと言うことです。どのトピックを載せるか、ある定理を述べるために事前にどのような概念を定義しておく必要があるのか、その定理を証明するために事前にどのような命題を示しておく必要があるのか。トピックの選定が的確で、理論の道筋が明快であるほど、数学書の完成度は高いです。たとえば、余弦定理は重要ですから当然載せます。余弦定理を述べるには三角比を定義する必要があります(鋭角だけではなく鈍角に対しても)。そして、証明には通常、三平方の定理と有名な等式
が必要になります(これも三平方の定理のcorollaryです)。さらに三平方の定理を示すには、ふつうは三角形の相似を使用します。この道筋をいかに最適化できるかに、著者の力量が現れます。もちろん、余弦定理を要領良く示すために他の定理に至る過程が鈍臭くなってはいけません。全体の最適化を考えなければいけないのです。
証明の最適化を図るには、定義から再考しなければいけません。同じ概念であっても、それを特徴づける性質が複数あるなら、どれを定義として採用しても良いですが、それによって効率は違って来るからです。たとえば、ベクトルの内積は
のどちらを定義としても良いですが、後者の場合は別の座標(たとえば、45°回転した座標など)で考えたときに値が同じになるのか疑問が残ります。前者は座標の取り方によらずに定義できています。
この場合はどちらを採用してもそれほど変わりはありませんが、指数関数などは定義の仕方で必要な議論の量はまるで変わってきます。多くの教科書では、自然対数の底
e = lim (1 + 1/n)n -- (☆)
を定義し、そのべき乗として指数関数exを定義します。もちろん結果だけ知っていれば、微分方程式
df/dx = f
を満たすf(x)で、f(0) = 1となる関数としても指数関数を定義することはできます。しかし、このようなfが存在することを、(☆)を使わずに示すのは高校レベルを遥かに超えます。そのようなfが一意的であることも明らかではありません。
以上のようなことを考えるだけでも相当大変ですが、これに加えて検定教科書では、直感的な理解を損ねないことも考慮しなければなりません。高校生が読んで理解できなければならないからです。理論の整合性・効率と教育的配慮の間でバランスを取るという難しいことを、数学の専門家たちが苦心して行い、作成されたのが検定教科書です。このような本は他の参考書にはありません。場当たり的に問題の解き方を解説するだけの本とは格が違います。
数学の検定教科書は極めて洗練されています。教科書の理論構成を把握し、その流れや証明手法に合理性や必然性を見出だせる水準まで理解できれば、入試などは余裕で通過できます。
Tommy Sub Manager "Hyamaokaaaa!!"
最近の商業BLは攻めと受けの体格差が少なくなってきているそうな。
なので、数年前はニッチな趣味だったマッチョ受けというのが、一般の受けの筋肉増量により稀釈されて目立たなくなったらしい。
そして、男性同士で恋仲になることへの障害の少ない世界観の物語が多い。
一応はポリコレ配慮の作品も出てきており、危険な性行為を描かない作品で人気のものもある。成人×少年のBLや少年同士での18禁はあまり見られなかったりする。
BLに禁忌性がめっきりなくなってしまった昨今だけれど、数年前に海外発のBL文化「オメガバース」が輸入されてきた。これは自然発生的なブームではなく、出版社のふゅーじょんぷろだくとが意図的に流行らせたものだ。
オメガバースによって格差恋愛が復活してきた。また、オメガバースのおかげで海外のBL特殊設定に興味が持たれ、Dom/Subユニバース(主に遺伝によってSMのSかMとなることを宿命づけられているという設定)も輸入された。
そして、BLに限らないけど、最近では格差恋愛を可能にする設定として時代もの・異世界もの・獣人ものがある。最近は結婚ものというか輿入れ譚が流行ってるようだ。本屋のTL(中高生の好みそうな少女漫画的な作風で男女の恋愛を描いた、エロあり18禁のジャンル)の棚の端から端までどの本の表紙も結婚している……。
倫理ゆるゆる規制ゆるゆるの日本製の二次エロは、世界中の日本ヲタクに需要がある。
なので、強者がいないジャンルのエロ(たとえば女攻め・男受け) を狙えば、英文・中文 sub つけりゃ、ワンチャンあるんじゃない?
アラ還以降、なんならアラフィフ以降は、エロマンガやショート動画をお小遣い稼ぎの柱にするのも有なんじゃないか?
まぁ "エロに対する情熱は皆無" +"現状の画力はへっぽこ" なのだけど 🙄
・・・とか思っていたけれど、 AI が 低・中品質の アニメ・マンガ・イラストを喰っちゃう速度は、
ワイたちが思っているよりもずっとずっと速そう。少なくともワイがアラフィフになる前には確実に到来するな 😨
既に blender が原画と原画を繋ぐ作画、"中割り" を自動作成してくれるのはご存知の通りなのだけど、
▼ Blender2.92から自動中割実験。blenderデータ付き|PIXIV FANBOX|りょーちも。
ディープラーニング(深層学習) を使ったプロダクトたちがもうそれはそれはスゴイ。
例えば、Googleでソフトウェアエンジニアとして働くプラムック・カンガーン氏が作った、
たった1枚の2次絵画像で、不自然では無い 笑い顔・困り顔・怒り顔 の表情差分を自動作成ができる。
この時点でスゴ過ぎて考えるのを放棄するのだが、VTuber なので当然アニメーションである。
目パチするし、頭振りもするし、眉・黒目・虹彩・口の形や動きも調整可能だし、
製作者のプラムック・カンガーン氏の動画見た方がたぶん早いので見てみて。
ホビーユースならもう Live2D 要らなくね?ってなる
そして同じくディープラーニングを使った「Deep Nostalgia(ディープ・ノスタルジア)」という海外で人気っぽいアプリ。
オリジナル家系図を作成するサイト(MyHeritage) で公開されているアプリで、 1枚の画像から、自然な瞬き・微笑み・目パチ・微笑み・頭振りを自動生成する。
本来は故人の写真で生きているかのような動画を作成するのが目的のアプリなのだけど、
2次絵キャラや3DCGキャラであっても、写真(人間)と同じレベルで自然な瞬き・微笑み・目パチ・微笑み・頭振りのアニメーションを自動生成してくれる。
この2次絵キャラや3DCGキャラのアニメーションの自動生成のレベルがヤバい。Live2D超えてる。もうホビーユースなら自分でアニメ作る必要なくない?ってレベルだ。
身体を動かすのは桁違いの学習が必要になるので現状は顔(付随して髪)だけなのだけど、コレが無料でだれでも利用可能だぞ?どうすんの?
とりあえず、ウンウン唸ってイチから自分でアニメや表情パターンを作るより Deep Nostalgia で作成した動画をトレスした方が早そう。
なお、Deep Nostalgia は、イスラエルの顔認識技術企業、D-IDの「Live Portrait」を利用しているとのこと。
#DeepNostalgia (Twitter 検索で自動作成されたアニメーションを見てみよう)
https://twitter.com/search?q=%23DeepNostalgia&f=live
▼古い写真の顔をディープラーニングでリアルに動かせる「Deep Nostalgia」 無料で利用可能|ITmedia NEWS
https://www.itmedia.co.jp/news/articles/2102/28/news018.html
さて、ここまでもスゴ過ぎて思考を放棄するのだけど、とりあえず元となる1枚の絵は必要だった。
アニメーションや差分表情は AI にお任せしても "元の絵" 、"キャラクター" は必要で、製作者に 最低限の絵心、2DCG・3DCGの修練が必要だった。
ここまで言えばもうわかると思うのだけど、絵心がなくてもキャラクターを自動生成(塗り付き)するシステムがもう出来ている。
なお顔だけじゃなくて身体も自動生成してくれる。もちろん関連システムでアニメーションも自動生成してくれる。
▼キャラクター生成プラットフォーム「Crypko™」の編集機能 / Editing characters generated by Crypko™
▼[公式サイト] Crypko | Preferred Networks
▼ 自動生成システムが生成したキャラクターを元にデザインされた3DCGキャラが主人公のMV
MVの中の3DCGも自動生成された3DCGを利用したもの(流石に調整はしてるらしい)
いま既に出来ること・これから出来るようになることにワクワクしてヒャッハーってなるけど、ワクワクはワクワクとして、ヒャッハーはヒャッハーとして、
学術研究レベルでAI周りについていけないとあらゆるお金稼ぎが危ういな・・・😨って感じだよね
もちろん短期的に見ればイニシャルゼロで出来るので人間のマンパワーでやった方があらゆものは安い。悲しいけどこれは事実だ。
けど、修練レベル低めの人間が手間暇かけて作ったものよりも、高コストでもAIがやった方がクオリティも速度も上であるという現実。切ないね。
もっと言えばAIを導入・運用出来る資本力があるならば将来的にはAIの方が安いまである。
ちなみ絵(アニメーション)だけじゃなくて、文章もけっこうAIに喰われてます。日本語は遅れてるけど英語圏では
「AI Dungeon」というAIに対して対話形式で物語を作って遊ぶテキストベースのRPG(基本無料)が出てる。
[2021-02-23]AI Dungeonの素晴らしさを語る
再投稿です
ちょっと調べてみたところ、やはりそうだった。具体的には『タクティクスオウガ』(1995)のスタッフで『ファイナルファンタジータクティクス』(1997)にも参加しているのは、松野、皆川、吉田という中核スタッフ3人と、外部のサウンドスタッフである岩田、崎元だけだった。
私がFFTから感じていた「タクティクスオウガ感」は、お話、絵、音楽という表層的なものだったのか(もちろんスクウェアのスタッフもタクティクスオウガに“寄せて”作ってただろうけれど)。
件の中核3人以外の『タクティクスオウガ』スタッフは、その後ニンテンドー64で任天堂より発売された『オウガバトル64』(1999)に参加している。
クエストはそこからGBAで『タクティクスオウガ外伝 The Knight of Lodis』(2001)をリリースするのだが、そこに『タクティクスオウガ』のスタッフはほぼ残っていない。 ここに至ってクエスト閥とスクウェア閥で完全に道が分かれたように見えるが、実はここからまた一捻りある。
その後クエストはIPをスクウェアに売却するのだが、そのときにスタッフもスクウェアに移籍したようだ。その結果、『タクティクスオウガ』(1995)にも『FFタクティクス』(1997)にも未参加だった『タクティクスオウガ外伝』(2001)の若いスタッフの中から、スクウェアに移籍後『FFタクティクスアドバンス』(2003)に10人、『FF XII』(2006)に11人ものスタッフが名を連ねている。ていうか『FFタクティクスアドバンス』ってこれもう実質『タクティクスオウガ外伝』じゃん、というメンツで作られている。『タクティクスオウガ外伝』の村澤裕一ディレクターは現在もスクエニでデザイナーとして『FF XIV』の開発に関わっているようだ。そして、その『FF XIV』のアートディレクターは皆川裕史。タクティクスオウガの遺伝子はまだ息づいている。
倫理ゆるゆる規制ゆるゆるの日本製の二次エロは、世界中の日本ヲタクに需要がある。
なので、強者がいないジャンルのエロ(たとえば女攻め・男受け) を狙えば、英文・中文 sub つけりゃ、ワンチャンあるんじゃない?
アラ還以降、なんならアラフィフ以降は、エロマンガやショート動画をお小遣い稼ぎの柱にするのも有なんじゃないか?
まぁ "エロに対する情熱は皆無" +"現状の画力はへっぽこ" なのだけど 🙄
・・・とか思っていたけれど、 AI が 低・中品質の アニメ・マンガ・イラストを喰っちゃう速度は、
ワイたちが思っているよりもずっとずっと速そう。少なくともワイがアラフィフになる前には確実に到来するな 😨
既に blender が原画と原画を繋ぐ作画、"中割り" を自動作成してくれるのはご存知の通りなのだけど、
▼ Blender2.92から自動中割実験。blenderデータ付き|PIXIV FANBOX|りょーちも。
ディープラーニング(深層学習) を使ったプロダクトたちがもうそれはそれはスゴイ。
例えば、Googleでソフトウェアエンジニアとして働くプラムック・カンガーン氏が作った、
たった1枚の2次絵画像で、不自然では無い 笑い顔・困り顔・怒り顔 の表情差分を自動作成ができる。
この時点でスゴ過ぎて考えるのを放棄するのだが、VTuber なので当然アニメーションである。
目パチするし、頭振りもするし、眉・黒目・虹彩・口の形や動きも調整可能だし、
製作者のプラムック・カンガーン氏の動画見た方がたぶん早いので見てみて。
ホビーユースならもう Live2D 要らなくね?ってなる
そして同じくディープラーニングを使った「Deep Nostalgia(ディープ・ノスタルジア)」という海外で人気っぽいアプリ。
オリジナル家系図を作成するサイト(MyHeritage) で公開されているアプリで、 1枚の画像から、自然な瞬き・微笑み・目パチ・微笑み・頭振りを自動生成する。
本来は故人の写真で生きているかのような動画を作成するのが目的のアプリなのだけど、
2次絵キャラや3DCGキャラであっても、写真(人間)と同じレベルで自然な瞬き・微笑み・目パチ・微笑み・頭振りのアニメーションを自動生成してくれる。
この2次絵キャラや3DCGキャラのアニメーションの自動生成のレベルがヤバい。Live2D超えてる。もうホビーユースなら自分でアニメ作る必要なくない?ってレベルだ。
身体を動かすのは桁違いの学習が必要になるので現状は顔(付随して髪)だけなのだけど、コレが無料でだれでも利用可能だぞ?どうすんの?
とりあえず、ウンウン唸ってイチから自分でアニメや表情パターンを作るより Deep Nostalgia で作成した動画をトレスした方が早そう。
なお、Deep Nostalgia は、イスラエルの顔認識技術企業、D-IDの「Live Portrait」を利用しているとのこと。
#DeepNostalgia (Twitter 検索で自動作成されたアニメーションを見てみよう)
https://twitter.com/search?q=%23DeepNostalgia&f=live
▼古い写真の顔をディープラーニングでリアルに動かせる「Deep Nostalgia」 無料で利用可能|ITmedia NEWS
https://www.itmedia.co.jp/news/articles/2102/28/news018.html
さて、ここまでもスゴ過ぎて思考を放棄するのだけど、とりあえず元となる1枚の絵は必要だった。
アニメーションや差分表情は AI にお任せしても "元の絵" 、"キャラクター" は必要で、製作者に 最低限の絵心、2DCG・3DCGの修練が必要だった。
ここまで言えばもうわかると思うのだけど、絵心がなくてもキャラクターを自動生成(塗り付き)するシステムがもう出来ている。
なお顔だけじゃなくて身体も自動生成してくれる。もちろん関連システムでアニメーションも自動生成してくれる。
▼キャラクター生成プラットフォーム「Crypko™」の編集機能 / Editing characters generated by Crypko™
▼[公式サイト] Crypko | Preferred Networks
▼ 自動生成システムが生成したキャラクターを元にデザインされた3DCGキャラが主人公のMV
MVの中の3DCGも自動生成された3DCGを利用したもの(流石に調整はしてるらしい)
いま既に出来ること・これから出来るようになることにワクワクしてヒャッハーってなるけど、ワクワクはワクワクとして、ヒャッハーはヒャッハーとして、
学術研究レベルでAI周りについていけないとあらゆるお金稼ぎが危ういな・・・😨って感じだよね
もちろん短期的に見ればイニシャルゼロで出来るので人間のマンパワーでやった方があらゆものは安い。悲しいけどこれは事実だ。
けど、修練レベル低めの人間が手間暇かけて作ったものよりも、高コストでもAIがやった方がクオリティも速度も上であるという現実。切ないね。
もっと言えばAIを導入・運用出来る資本力があるならば将来的にはAIの方が安いまである。
ちなみ絵(アニメーション)だけじゃなくて、文章もけっこうAIに喰われてます。日本語は遅れてるけど英語圏では
「AI Dungeon」というAIに対して対話形式で物語を作って遊ぶテキストベースのRPG(基本無料)が出てる。
[2021-02-23]AI Dungeonの素晴らしさを語る
あそこで出している数字は、直近1週間の陽性人数と、その前の1週間の要請人数の比を、5分の7乗しただけの物だから、本当は実効再生産数でも何でもないよ。
実効再生産数とは「1人の感染者が平均して何人に感染させるか」を表す指標。
計算式は「(直近7日間の新規陽性者数/その前7日間の新規陽性者数)^(平均世代時間/報告間隔)」。
平均世代時間は5日、報告間隔は7日と仮定。リアルタイム性を重視して流行動態を把握するため、報告日ベースによる簡易的な計算式を用いている。
精密な計算ではないこと、報告の遅れに影響を受けることに注意。
これを簡潔にすると、
ということになる。
東洋経済のサイトでは、この式を監修した西浦教授のGitHubリポジトリが紹介されていて、そこには nishiura_Rt会議_12May2020.pdf というPDFファイルがあって、そこに基本再生産数と実効再生産数の定義や関係がいろいろ書いてある。(以下、PDF内の説明に言及するときは「スライドno.N」)
基本再生産数は R0=∫[0,∞)A(τ)dτ らしいよ。(スライドno.4)
実効再生産数はスライドno.20「R(t)の推定へ」によれば、
i(t) = R(t)∫[0,∞)i(t-τ)g(τ)dτ
E(idomestic(t))=RtΣ(τ=1→t-1)itotal(t-τ)g(τ){(F(T-t)/(T-t+τ)}
L(Rt;Cdomestic(t))=Π(t=1→T)[(exp(-E(idomestic(t)))(E(idomestic(t)))idomestic(t))/idomestic(t))!]
って書いてあるけど、僕には何のことかわからない。感染症数理モデルすごいね。
数式はわからないけど、それじゃ何を数式にぶち込めば良いのか。検査結果の報告日だと、検査から報告までの人間界の制約が入り込んじゃうからおかしなことになる。
なので、基本的には検査時に聞き取る発症日や発症日から逆算した推定感染日ごとに人数を集計してぶち込むみたい。(スライドno.14など)
専門家たちが「エピカーブ」を一生懸命作ってるのはそのためかも?
つまり何が言いたいかというと、本来の実効再生産数Rtは、①なんか難しい数式に、②発症日ベースの数字をぶちこんで計算するものだということ。
それに比べると、東洋経済が「実効再生産数」と称して表示しているものは①数式はずいぶんと簡単だし、②ぶちこむデータは発症日ではなく報告日ベースだ。
そんなもので良いのか?良いのです。
上の複雑な式は、数理的概念に過ぎない※スライドno.5 R0になるべく近付くように精緻化した成果なんだと思う。
実効再生産数という概念の最初期のコンセプトは2つの期間の感染件数の比というものだったそうな。(スライドno.26)
それに、Rtのキモは、それが1より大きいか小さいか、どのくらいの程度で増減しているかを、数値化することにある。(スライドno.10)
そうであれば、①直近7日間の患者数とその前7日間の患者数の比率を見ることは、実効再生産数とコンセプトとして近い。これなら数式は簡単。(スライドno.30)
あと②目的が流行動態の理解のためなら、リアルタイム性を重視して、発症日や感染日ではなく報告日ベースで計算しても大きくは外さないはず。(スライドno.30)
そこで、 1週間単位での比率を、一定の報告期間と世代間隔 (スライドno.29) で補正した値を、Rtとコンセプト的に同じようなものとして扱っても、まぁ一般レベルなら良いかな、といえるわけです。
東洋経済式では(直近7日間の新規陽性者数/その前7日間の新規陽性者数)に常に同じ指数「5/7」で累乗してるので、(直近7日間の新規陽性者数/その前7日間の新規陽性者数)が1より大きければ東洋経済式Rtも1より大きくなるし、1より小さければ東洋経済式Rtも1より小さくなる。
だから、東洋経済が実効再生産数として掲載している指標の情報量は、(直近7日間の新規陽性者数/その前7日間の新規陽性者数)、つまり、かつての東京都モニタリング項目(3)と同じでしかない。
そのため、東洋経済式Rtは東京都モニタリング項目(3)と同じ欠点を引き継いでいます。
それは、祝祭日の影響による検査数の増減・報告時期の偏りや、クラスター発掘による大量発見などといった、実際の感染状況以外の要因によって生じる報告件数のブレの影響をそのまま受けること。年末年始に変な値が出がちなので、専門家会議ではちゃんとエピカーブを作ってちゃんと計算してるはずだし、今の東京都モニタリング項目(3)は接触歴等不明者の増加比に限ることでクラスター発掘の影響を消している。
それと、そもそも過去2週間分のデータを使って算出する以上、どうしても、現時点の値そのものではないということ。厳密さを欠いたイメージで説明すると、先々週の10000人が先週何人に感染させたかは示すけれども、今日の1000人が何人に感染させるかを示すものではないということ。これは東洋経済式に限らずRtの観測の欠点だけど。
そういうわけで、東洋経済式Rtを「これがRtだ!」って言ってる人がいたら馬鹿にして良いと思う。
あと、東洋経済式Rtは公開情報から誰でも計算できるものなので、東洋経済が更新しないからって古い東洋経済式Rtを持ってくる人も馬鹿にして良いと思う。
500件くらいの請求書があり、エクセルで管理しています。 A1の数値1~500に変えると、別シート内の請求情報をvlookupで拾ってきて、フォーマット内の品名や金額が変わるVBAが下記の通りあるのですが、印刷をPDFで保存したいと思っています。ただ、下記を実行すると1枚1枚PDFのファイル名を入力しなければならず、できれば複数ページを一つのPDFで保存したいのですが、方法はありますでしょうか。 説明が下手ですみません。
------------------------------------
Sub 請求書印刷() bango = 1 owari = 500 cb = "A1" Do While bango <= owari Range(cb).Value = Right("00" & bango, 3) ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True bango = bango + 1 Loop End Sub
-------------------------------------
俺はHDMIには縁がないんだよ。
D-subのIBM ThinkVision L151っていう15インチの液晶、つい先週まで使ってたんだぜ。サブモニタとしてだけど。
でメインで使ってたのが、DVIのLG W2246Tっていう21インチのなんだが、先々週ついに壊れた。
でXiaomiの曲面34インチウルトラワイドを買った。こいつはDisplay PortもHDMIもイケるんだが、付属してきたのはDPケーブルだったからDPで繋いだ。
ただね、モニタは144Hz対応してるものの、俺のグラボわりと古くてGTX970なんだよ。HDMI 2.0、Displayport 1.2なわけ。
WQHD(2560x1440)だったら144Hzいけたのかもしれんが、このモニタはUWQHD(3440x1440)だから、ちょっと帯域足りんわけ。
120Hzでは異常なく使えてるけれども、144Hzにすると映像が潰れた感じになるね。
よく分からんが、規格上はHDMI 2.0の方が帯域に余裕があるから、ケーブルを変えればいけるのかもしらん。
なのだが、ウルトラワイドモニター買う層は最新のグラボ使ってるような人ばかりだから、ちょっと調べたくらいじゃ確信に至る情報がなくてな。
というわけで今の所、縁がないんだ、という話さ。
俺はD-Subでもいいぞ
「端末の値引き販売」っていう枝葉に拘ってクソなルール作るからこうなる。
果てはルール作りどころか商売人の具体策にこまごまと文句言う始末。
下らねぇキャリアいじめするぐらいならB2Cが焼け野原になってるMVNOを救えよ。
元々そっちが値下げのメインだろうが。
根本のインフラ支える企業の体力削ってどんな将来見据えてんだよ。
そういうことやってるから5Gで惨めなほどに出遅れてんじゃねーか。
端末が増えねーからインフラ整備のコストが減って、それで整備がどんどん遅れるって
なんで5G走り出す直前に端末の値引き規制やったんだよ、やるならどんなに早くたって
2022年とか2023年あたりだろ。Sub-6もミリ波もスポット単位でしか使えねーのに何が5Gだよ。
土建屋や旅行業界にばら撒く金はあっても通信の根幹を支える企業の体力は削るのか?
頼んでいた液タブが届いたのだがHDMI端子がモニターに既に使われていて接続できなかったのでD-subを買いに行くことにした.
帰る途中,いつしかのバイトのパーティで景品としてもらったサーティーワンの500円クーポンが財布にあるのを思い出したので使ってしまおうと店に足を運ぶ.
メニューの立て札を見ながら何にしようかと考えていると横から子供が食い入るようにメニューを凝視しながら近づいてきた.
後ろによけた拍子に少し周りを見てみると店には子供と女性しかいないことに気づいた.理系大学生にはとてもアウェーな空間だ.
しかし長い時間メニューを見ていたのにここで帰ってしまうのはそれはそれで恥ずかしいのでさっさと並ぶ.
お店の人に何にするか聞かれたので500円クーポンを最大限使える600円のトリプルを頼み,フレーバーはフルーツが食べたいような気がしたので「マスクメロン」「サンセットサーフィン(ライチとパイナップル)」[マンダリンオレンジチーズケーキ」を選んだ.我ながらおしゃれなチョイスだ.フレーバーセンスだけならここに並ぶ資格はあるだろう.
レジを済ませるときにドライアイスの有無やスプーンなどいろいろ聞かれたのだがここで私はきょどったり必要以上にペコペコしてしまった.自分の悪い癖だ.大学生になってからはそんなことがないように意識して堂々とふるまっていたのだが,コロナ生活で対面での人との会話がほとんどなかったからか他人との接し方を忘れてしまったようだ.
そのあとも呼ばれたと思って近づいたら別の人の注文だったりとしんどい目にあった.一回他人の目を気にし始めると悪循環に陥ってしまうのも自分の悪い癖だ.もう叫びたい気分だった.商品をもらってサッサっと帰る.
人気の映像コンテンツは投稿者の魅力によって支持されている。ひたすら楽しいばかりのコンテンツが無数にあって、支持者たちは信仰の代価に多大な時間を費やす。ある個人や組織の感性に基づいた表現と作品に対して、何かがあると思って夢中になる、感情を動かされる。彼らはどこへ連れて行ってくれるのか、期待が膨らむ。夢中であるのを肯定できることは幸いである。感化されて、ある者は自らの感性で新たな表現者として高みにのぼることもあろう。
ときに単独で提示された謎掛けのような作品がある。どうとでも解釈してください、という割には、遡ると、取材に乏しい、目新しさはあるが才能溢れる独創性もない、そうして下火になったコンテンツがある。これに対する考察の深まりが、どこまで私の生活や感性に資するだろう。社会集団をなす者としての人間は、共通の認識を土台とした相互の意思疎通を行うが、表現の造形や背景にこだわることを放棄した作品は、コミュニケーションの具にするには身がなさすぎる。そうなると熱心な蒐集家によって辞書的に記憶されるようにはなっても、見出しとして以上の価値は無くなってゆく。(あるいは様式、慣用句として生き残る。)
翻って流行を超えた価値の見出されたものは古典としての地位を獲得してゆく。この社会のうねりは、世代を超えた古典的価値というレーティングを施すアルゴリズムであるといえる。
それでは、視聴数や独自のアルゴリズムによってソート・ピックアップされた映像作品の視聴サービスは、どうだろう。上位に表示された映像作品は、いかなる意味において価値があるのか。それは語るに値して、われわれを夢中にし、どこかへ連れて行ってくれるのだろうか?
なんかやってしまった
wget https://raw.githubusercontent.com/lukes/ISO-3166-Countries-with-Regional-Codes/master/all/all.csv wget https://github.com/owid/covid-19-data/raw/master/public/data/owid-covid-data.csv SELECT country.name as '国名', covid.population AS '人口', covid.population_density as '密度', covid.gdp_per_capita as '一人あたりのGDP?', MAX(covid.total_cases) as '報告件数', ROUND(1.0 * MAX(covid.total_cases) / MAX(covid.population), 7) as '人口あたりの報告件数', MAX(covid.total_deaths) as '死者', ROUND(1.0 * MAX(covid.total_deaths) / MAX(covid.population), 9) as '人口あたりの死者件数', ROUND(1.0 * MAX(covid.total_deaths) / MAX(covid.total_cases) , 3) as '感染者死亡率' from all.csv as country inner join owid-covid-data.csv as covid on covid.iso_code = country.\"alpha-3\" WHERE country.\"sub-region\" = 'Eastern Asia' GROUP BY covid.iso_code ORDER BY 6 DESC"
国名 | 人口 | 密度 | 一人あたりのGDP? | 報告件数 | 人口あたりの報告件数 | 死者 | 人口あたりの死者件数 | 感染者死亡率 |
Korea, Republic of | 51269183.0 | 527.967 | 35938.374 | 11165 | 0.0002178 | 266 | 5.188e-06 | 0.024 |
Japan | 126476458.0 | 347.778 | 39002.223 | 16536 | 0.0001307 | 808 | 6.389e-06 | 0.049 |
China | 1439323774.0 | 147.674 | 15308.712 | 84081 | 5.84e-05 | 4638 | 3.222e-06 | 0.055 |
Mongolia | 3278292.0 | 1.98 | 11840.846 | 141 | 4.3e-05 | 0 | 0.0 | 0.0 |
Taiwan, Province of China | 23816775.0 | 441 | 1.85e-05 | 7 | 2.94e-07 | 0.016 | ||
Hong Kong | 7496988.0 | 7039.714 | 56054.92 | 0 | 0.0 | 00.0 |
国名 | 人口 | 密度 | 一人あたりのGDP? | 報告件数 | 人口あたりの報告件数 | 死者 | 人口あたりの死者件数 | 感染者死亡率 |
Turkey | 84339067.0 | 104.914 | 25129.341 | 154500 | 0.0018319 | 4276 | 5.07e-05 | 0.028 |
Iran (Islamic Republic of) | 83992953.0 | 49.831 | 19082.62 | 131652 | 0.0015674 | 7300 | 8.6912e-05 | 0.055 |
India | 1380004385.0 | 450.419 | 6426.674 | 125101 | 9.07e-05 | 3720 | 2.696e-06 | 0.03 |
China | 1439323774.0 | 147.674 | 15308.712 | 84081 | 5.84e-05 | 4638 | 3.222e-06 | 0.055 |
Saudi Arabia | 34813867.0 | 15.322 | 49045.411 | 67719 | 0.0019452 | 364 | 1.0456e-05 | 0.005 |
Pakistan | 220892331.0 | 255.573 | 5034.708 | 52437 | 0.0002374 | 1101 | 4.984e-06 | 0.021 |
Qatar | 2881060.0 | 227.322 | 116935.6 | 40481 | 0.0140507 | 19 | 6.595e-06 | 0.0 |
Singapore | 5850343.0 | 7915.731 | 85535.383 | 30426 | 0.0052007 | 23 | 3.931e-06 | 0.001 |
Bangladesh | 164689383.0 | 1265.036 | 3523.984 | 30205 | 0.0001834 | 432 | 2.623e-06 | 0.014 |
United Arab Emirates | 9890400.0 | 112.442 | 67293.483 | 27892 | 0.0028201 | 241 | 2.4367e-05 | 0.009 |
Indonesia | 273523621.0 | 145.725 | 11188.744 | 20796 | 7.6e-05 | 1326 | 4.848e-06 | 0.064 |
Kuwait | 4270563.0 | 232.128 | 65530.537 | 19564 | 0.0045811 | 138 | 3.2314e-05 | 0.007 |
Israel | 8655541.0 | 402.606 | 33132.32 | 16690 | 0.0019282 | 279 | 3.2234e-05 | 0.017 |
Japan | 126476458.0 | 347.778 | 39002.223 | 16536 | 0.0001307 | 808 | 6.389e-06 | 0.049 |
Philippines | 109581085.0 | 351.873 | 7599.188 | 13597 | 0.0001241 | 857 | 7.821e-06 | 0.063 |
Korea, Republic of | 51269183.0 | 527.967 | 35938.374 | 11165 | 0.0002178 | 266 | 5.188e-06 | 0.024 |
Afghanistan | 38928341.0 | 54.422 | 1803.987 | 9216 | 0.0002367 | 205 | 5.266e-06 | 0.022 |
Bahrain | 1701583.0 | 1935.907 | 43290.705 | 8414 | 0.0049448 | 12 | 7.052e-06 | 0.001 |
Kazakhstan | 18776707.0 | 6.681 | 24055.588 | 7919 | 0.0004217 | 35 | 1.864e-06 | 0.004 |
Malaysia | 32365998.0 | 96.254 | 26808.164 | 7137 | 0.0002205 | 115 | 3.553e-06 | 0.016 |
Oman | 5106622.0 | 14.98 | 37960.709 | 6794 | 0.0013304 | 32 | 6.266e-06 | 0.005 |
Armenia | 2963234.0 | 102.931 | 8787.58 | 5928 | 0.0020005 | 74 | 2.4973e-05 | 0.012 |
Iraq | 40222503.0 | 88.125 | 15663.986 | 3964 | 9.86e-05 | 147 | 3.655e-06 | 0.037 |
Azerbaijan | 10139175.0 | 119.309 | 15847.419 | 3855 | 0.0003802 | 46 | 4.537e-06 | 0.012 |
Uzbekistan | 33469199.0 | 76.134 | 6253.104 | 3078 | 9.2e-05 | 13 | 3.88e-07 | 0.004 |
Thailand | 69799978.0 | 135.132 | 16277.671 | 3040 | 4.36e-05 | 56 | 8.02e-07 | 0.018 |
Tajikistan | 9537642.0 | 64.281 | 2896.913 | 2350 | 0.0002464 | 44 | 4.613e-06 | 0.019 |
Kyrgyzstan | 6524191.0 | 32.333 | 3393.474 | 1364 | 0.0002091 | 14 | 2.146e-06 | 0.01 |
Maldives | 540542.0 | 1454.433 | 15183.616 | 1274 | 0.0023569 | 4 | 7.4e-06 | 0.003 |
Lebanon | 6825442.0 | 594.561 | 13367.565 | 1086 | 0.0001591 | 26 | 3.809e-06 | 0.024 |
Sri Lanka | 21413250.0 | 341.955 | 11669.077 | 1068 | 4.99e-05 | 9 | 4.2e-07 | 0.008 |
Cyprus | 875899.0 | 127.657 | 32415.132 | 927 | 0.0010583 | 17 | 1.9409e-05 | 0.018 |
Georgia | 3989175.0 | 65.032 | 9745.079 | 723 | 0.0001812 | 12 | 3.008e-06 | 0.017 |
Jordan | 10203140.0 | 109.285 | 8337.49 | 700 | 6.86e-05 | 9 | 8.82e-07 | 0.013 |
Palestine, State of | 5101416.0 | 778.202 | 4449.898 | 608 | 0.0001192 | 4 | 7.84e-07 | 0.007 |
Nepal | 29136808.0 | 204.43 | 2442.804 | 548 | 1.88e-05 | 3 | 1.03e-07 | 0.005 |
Taiwan, Province of China | 23816775.0 | 441 | 1.85e-05 | 7 | 2.94e-07 | 0.016 | ||
Viet Nam | 97338583.0 | 308.127 | 6171.884 | 324 | 3.3e-06 | 0 | 0.0 | 0.0 |
Yemen | 29825968.0 | 53.508 | 1479.147 | 205 | 6.9e-06 | 33 | 1.106e-06 | 0.161 |
Myanmar | 54409794.0 | 81.721 | 5591.597 | 201 | 3.7e-06 | 6 | 1.1e-07 | 0.03 |
Brunei Darussalam | 437483.0 | 81.347 | 71809.251 | 141 | 0.0003223 | 1 | 2.286e-06 | 0.007 |
Mongolia | 3278292.0 | 1.98 | 11840.846 | 141 | 4.3e-05 | 0 | 0.0 | 0.0 |
Cambodia | 16718971.0 | 90.672 | 3645.07 | 124 | 7.4e-06 | 0 | 0.0 | 0.0 |
Syrian Arab Republic | 17500657.0 | 59 | 3.4e-06 | 4 | 2.29e-07 | 0.068 | ||
Bhutan | 771612.0 | 21.188 | 8708.597 | 24 | 3.11e-05 | 0 | 0.0 | 0.0 |
Timor-Leste | 1318442.0 | 87.176 | 6570.102 | 24 | 1.82e-05 | 0 | 0.0 | 0.0 |
Lao People's Democratic Republic | 7275556.0 | 29.715 | 6397.36 | 19 | 2.6e-06 | 0 | 0.0 | 0.0 |
Hong Kong | 7496988.0 | 7039.714 | 56054.92 | 0 | 0.0 | 0 | 0.0 |
あってんのかなあ?
どもども。
わたしは「なにか作ってみろ」系の言説にはまったく同意しません。
わたし自身、会社に3ヶ月間みっちり導入教育をしてもらい(COBOL85とPL/I。時代がわかる……)、基本的なアルゴリズム(コントロールブレーク、マッチング、マスタ-トランザクション、ソート、マージ、etc.いよいよ時代がわかる……)の演習を(給料をもらいながら)やって、その後もプログラムとつかず離れずでフラフラと生きてきました。
こういう経験は新卒カードがあるから有効なもので、では1から始めるとしたら……、というときに、プログラミングスクール(専門学校)というのは悪くない選択肢ではないかと思います。が、行ったことないので正直わかりません。
実際自分が1から始めるという立場になったら、まったくオロオロして元増田さんのように世のなか(の気にいらないヤツら)に呪詛を吐いて満足するだけだったと思います(当然ながらそれをいくらやってもプログラミングは上達しません)。
話をプログラミングだけに限っていえば、一番大事なのはやりかたじゃなくて動機だろうと思います。
「なにか作ってみよう」というのは、なにか作ってみようと思ってない人にはまったく心に響かないでしょう。
動機ドリブンで「なにか作ってみた」人といえば思いだすのは、MikuMikuDanceの樋口優さん(ミクを簡単に踊らせたい!)とhinadanの若宮正子さん(高齢者にも遊べるゲームが欲しい!)でしょうか。
ただかれらはわたしから見れば(モチベーションを維持しそれを行動に移す)天才で、あんまり参考にならないのも確かです。
あと、元増田さんの動機は「プログラミングを生業にしたい」ということなので、野良プログラマでは履歴書上でのアピール力が弱いかも、と思います。
ビジネスで使われるアルゴリズムにはそれなりのルールがあります。安全な(バグの出にくい)コードの書きかた、「車輪の再発明」はぜず、枯れた(将棋で言えば定跡のような)アルゴリズムを使う、ほかの人に使ってもらえるための工夫(可読性の向上など)、etc.です。
「なにか作ってみよう」を繰りかえしても、そういった作法的なものが身につくかどうか、それは才能に関わってくる問題だと思います。才能だのみの手法を推奨するのは無責任だと思いますね。
また、たとえば「例をコピーして解析する」というのもある意味有効なプログラミング学習法ですが、「下手に習うと下手が伝染る」ともいいます。どれがお手本として優れているか、それを見る目はある程度ビジネス用途のプログラムに関わっていないと持てないというジレンマがあります。
野生のプログラマで就職に有効なくらいの力を見せるとしたら、なにかのコミッター(なにする人かよく知りませんが)とかになって「××ならこの人」となったり、プログラミングコンテストで上位の成績を残したりしなければいけないのかもしれません。
どうしたものでしょうね。ブクマカのみなさんの反応を見ると、専門学校でもあまり就職に有利にならない(ホントか?専門学校の意味あるのか?)という話ですが、目的が就職ならば、一番の近道のような気がします。
そこらへんからは、元増田さんがなにをしたいか、あるいは聞いてみたいだけだったのかによります。仕事には適性とやる気が大事です。あとは年齢と必要性かな。進路はオーダーメイド以外にはありえないので、提示された案を自分で選んでそれに賭けるしかないのかな、と思います。
さて、この文章は実はこの一文に反応してのものです。(↑のは前書き)
GWあたりからトシも考えずにRubyの再入門をしていまして、手始めに「首相動静」の整形ツールを作ってみました。
初心者で(Rubyに関しては仕事で使ったことないので)なにか作ってみよう、というとこの程度ですね。
これで就職に有利になるかというと、あんまりそうは思えないなあ。Excelのマクロが組めるとかのほうがどこかの事務所に潜りこめそうですよ(でもそれも最近はインフレ気味かもしれませんね)。
朝日新聞の首相動静は詳細ですが、改行が入っておらず、大変読みにくいものです。こんな感じです。
【午前】9時31分、自民党本部。33分、同党役員会。10時2分、官邸。5分、閣議。21分、宇宙開発戦略本部。34分、柴山昌彦文部科学相。38分、岩屋毅防衛相。41分、山下貴司法相。11時3分、安全保障と防衛力に関する懇談会。
【午後】0時11分、政府・与党連絡会議。44分、山口那津男公明党代表。1時27分、日韓議員連盟の額賀福志郎会長、河村建夫幹事長。2時20分、行政改革推進会議。52分、兼原信克官房副長官補、秋葉剛男外務事務次官。3時36分、麻生太郎財務相、財務省の岡本薫明事務次官、太田充主計局長。4時7分、太田氏出る。可部哲生理財局長加わる。15分、全員出る。25分、黒川弘務法務事務次官。34分、谷内正太郎国家安全保障局長、北村滋内閣情報官、宮川正内閣衛星情報センター所長。41分、谷内、宮川両氏出る。5時3分、北村氏出る。10分、東京・永田町のザ・キャピトルホテル東急。宴会場「鳳凰」で中曽根康弘世界平和研究所設立30周年記念式典に出席し、あいさつ。20分、官邸。6時18分、ガーナのアクフォアド大統領を出迎え。記念撮影。19分、儀仗(ぎじょう)隊による栄誉礼、儀仗。27分、アクフォアド大統領と会談。7時12分、署名式、共同記者発表。32分、公邸。首相主催の夕食会。8時43分、アクフォアド大統領を見送り。9時、ヨルダンのアブドラ国王と電話協議。
ただ、これはフォーマットがはっきりしており、
と、例を見るかぎりキッチリとしたルールに則っているようです。
なので、「これだったら整形できるかも」と思い、再び学びはじめたRubyで整形ツールを作ってみることにしました。
【午前】
10時02分、官邸。
10時05分、閣議。
10時21分、宇宙開発戦略本部。
【午後】
01時27分、日韓議員連盟の額賀福志郎会長、河村建夫幹事長。
02時20分、行政改革推進会議。
03時36分、麻生太郎財務相、財務省の岡本薫明事務次官、太田充主計局長。
04時15分、全員出る。
04時34分、谷内正太郎国家安全保障局長、北村滋内閣情報官、宮川正内閣衛星情報センター所長。
04時41分、谷内、宮川両氏出る。
05時10分、東京・永田町のザ・キャピトルホテル東急。宴会場「鳳凰」で中曽根康弘世界平和研究所設立30周年記念式典に出席し、あいさつ。
05時20分、官邸。
06時18分、ガーナのアクフォアド大統領を出迎え。記念撮影。
06時19分、儀仗(ぎじょう)隊による栄誉礼、儀仗。
あと、午後の時刻を24時間制にしたいな、とも思いますが、それは今後の課題(つぎに首相動静が話題になったとき)とします。全角数字の計算ってどうやるんだろう?
たぶんRubyistにいろいろ突っこまれると思うけど、こんな感じです。
プログラマは玉石混淆ですが、これは石のほうの例だと思っていただければさいわいです。
※ はてな記法にはシンタックスハイライトあるけど、増田だとInternal Server Errorになるのではずしました。見にくくてスマソ。
# encoding: utf-8 # 漢字コンバータのライブラリを取りこむ(Stringに漢字変換メソッドを付けてくれる。神) require 'kconv' # 正規表現パターン # 時刻をh時m分形式からhh時mm分形式にする # 否定後読みを使用する # 時は行頭にある OneDigitHour = /^((?<![0-1])[0-9]時)/ # 分は時のあとにある。このパターンとマッチすると、92;1が時、92;2が分になる。 OneDigitMinute = /^([0-9]{1,2}時)(?<![1-5])([0-9]分)/ # 分のない、時だけの行のパターン。否定先読みを使用 HourWithoutMinute = /^([0-9]{1,2}時)(?![0-5]?[0-9]分)/ # 行頭のh時m分をhh時mm分にするサブ処理(これは関数といっていいの?) def convTopHourMinute2TwoDigits(oneLine) # 時を変換 oneLine.sub!(OneDigitHour, "092;92;1") # 分を変換 oneLine.sub!(OneDigitMinute, "92;92;1092;92;2") # 分がない場合"00分"を追加 oneLine.sub!(HourWithoutMinute, "92;92;100分") # 戻り値 oneLine end # 入力ファイルの名前 InputFilename = "首相動静2018年12月11日.txt" # 出力ファイルの名前 OutputFilename = "首相動静2018年12月11日_編集済.txt" # 入力ファイルをオープン inFile = File.open(InputFilename, "r") # 出力ファイルをオープン outFile = File.open(OutputFilename, "w") # 時刻パターンはシンプルに、h時、m分、h時m分、という3パターンを結合する # 1つのパターンで全部カバーするよりこちらのほうが見やすい。というか、脳の容量の問題で1文に書ききれなかった jikokuPattern = /[0-9]{1,2}時[0-9]{1,2}分、|[0-9]{1,2}時、|[0-9]{1,2}分、/ # 午前/午後 ampm = /(【午前】|【午後】)/ # 午前/午後、あるいは時刻の前で改行するためのパターン kaigyouSign = Regexp.union(ampm, jikokuPattern) # ファイル一括読み込み # 昔は1行ずつ読みこんでました。メインメモリが3MByteとかだったので contents = inFile.read.toutf8 # 入力終了。閉じておきます inFile.close # スコープの関係から、ここでローカル変数に代入 # ※ Rubyのスコープと暗黙の型には泣かされました。これに慣れるのがRubyのコツかしら # 明示的な型宣言はあったほうがいいと思うなあ。エラー出力の理由がわからなかったりするので。 hour = "" # デバッグ行はコメント化しています # 時刻パターンチェックのため、コンテンツを出力してみる # p jikokuPattern.match(contents) # エントリを改行サインで行に分ける contents.gsub!(kaigyouSign, "92;n92;92;&amp;") # "92;92;&amp;"はマッチした文字列そのもの。2重のエスケープ"92;92;"が必要 # 改行チェックのため出力 # p contents # 入力を行で分割して各行ごとに処理 contents.split("92;n") do |oneLine| # 午前/午後を示す開きカッコ"【"があるか if (oneLine =~ /^【/) then # そのまま出力 outFile.write(oneLine + "92;n") # p "午前午後:" + oneLine next # 空白行は無視(スキップする) elsif (oneLine =~ /^[92;s ]*$/) then # 出力しない # p " 空白行:<skip>" next # 行頭に「時」があるか elsif (oneLine =~ /^[0-9]{1,2}時/) then # あったら時間表示を抜きだしておく hour = oneLine.match(/^([0-9]{1,2}時)/)[0] # p " 時:" + oneLine outFile.write(convTopHourMinute2TwoDigits(oneLine) + "92;n") next else # 「時」がなければつけて出力 oneLine = hour + oneLine # p "普通の行:" + oneLine outFile.write(convTopHourMinute2TwoDigits(oneLine) + "92;n") end end
手でやったほうが早いね。
以上
Javaのfinallyはreturnの直前に実行されない。
ググると Javaのfinallyはreturnの直前に実行され「る」という記事を見かけてしまったので、んなわけ無いだろうって、
直感的には return 文が評価されたあとに実行されるという肌感覚だったが、確証がないので動かしてみた。
try { return sub(); } finally { System.out.println(42); }
もし記事の言うようにreturnの直前にfinallyが実行されるなら、
上記みたいなコードではsubが実行される前に、「42」が表示されるはずだが、subの中身が実行されたあとにfinallyは実行される。
なので、finally は return の直前に実行されるのではなくreturn の右辺が評価され終えた直後に実行されます。
まぁ普通の結果ですね。
https://hyperlapsepro.zendesk.com/hc/ru-ua/community/posts/360042168274-27-03-2020-Запретный-плод-75-серия-Yasak-Elma-последние-серии-смотреть-от-27-марта-
https://hyperlapsepro.zendesk.com/hc/ru-ua/community/posts/360042345473--Дочь-посла-14-серия-Sefirin-Kizi-27-03-2020-последние-серии-смотреть-от-27-марта-
https://hyperlapsepro.zendesk.com/hc/en-us/community/posts/360042168534-27-03-2020-Запретный-плод-76-серия-Yasak-Elma-русская-озвучка-хорошее-качество-смотреть-от-27-марта-
https://hyperlapsepro.zendesk.com/hc/ru-kz/community/posts/360042167954--Запретный-плод-74-серия-Yasak-Elma-27-03-2020-последние-серии-смотреть-от-27-марта-
https://hyperlapsepro.zendesk.com/hc/en-us/community/posts/360042168834--Дочь-посла-15-серия-Sefirin-Kizi-27-03-2020-русский-перевод-все-серии-сезона-
https://hyperlapsepro.zendesk.com/hc/en-us/community/posts/360042167914--Жестокий-стамбул-38-серия-Zalim-Istanbul-27-03-2020-русская-озвучка-хорошее-качество-смотреть-
https://hyperlapsepro.zendesk.com/hc/ru-kz/community/posts/360042345473--Дочь-посла-14-серия-Sefirin-Kizi-27-03-2020-последние-серии-смотреть-от-27-марта-
https://hyperlapsepro.zendesk.com/hc/en-us/community/posts/360042168954-27-03-2020-Дочь-посла-16-серия-Sefirin-Kizi-смотреть-качество-HD-от-27-марта
https://hyperlapsepro.zendesk.com/hc/ru-kz/community/posts/360042167914--Жестокий-стамбул-38-серия-Zalim-Istanbul-27-03-2020-русская-озвучка-хорошее-качество-смотреть-
「A.png」が画面上に表示され、隠しタグOneの中に「A.png」と記載される。
「B」というボタンを押したら
「B.png」が画面上に表示され、隠しタグOneの中に「B.png」と記載される。
前にあった画像の上に重なるように表示され、別の隠しタグSubの中に「C.png」と記載される。
「Push」ボタンを押したら、画面上に表示されている画像が「Default.png」でサーバー上に保存する。
ユーザー側が保存できたらDefault.pngファイルを消す(どうやるか不明)
そうだったとして。
1人目がA+Cを実施し保存 2人目がA+Bを実施し保存したとする。
「同時に保存ボタンを押す」というのはあまり考えられないんだけれど
ユーザーのキャッシュ?等を考えるのが一番いい方法だと思うけれど
正直どうやったらいいのか分からない。
ファイルは必ず「Default.png」でサーバー上に保存してからユーザー側に持っていきたい。
どういった手段があるだろうか。