はてなキーワード: rcとは
20世紀(2000年)までに出たアルバムを「古典」としています。
1.Revolver / The Beatles
2.Beggars Banquet / The Rolling Stones
4.Led Zeppelin 2 / Led Zeppelin
5.Paranoid / Black Sabbath
6.Trout Mask Replica / Captain Beefheart
7.Live at the Harlem Square Club / Sam Cooke
8.Red / king Crimson
9.Tarkus / Emerson, Lake & Palmer
11.Piper At Gates Of Dawn / Pink Floyd
13.Future Days / Can
14.Stand By / Heldon
16.White Light White Heat / The Velvet Underground
18.Radio Ethiopia / Patti Smith
19.End Of The Century / Ramones
20.Blank Generation / Richard Hell & The Voidoids
21.Remain In light / Talking Heads
22.Buy / James Chance & The Contortions
23.Never Mind The Bollocks / Sex Pistols
24.Damned Damned Damned / The Damned
26.Inflammable Material / Stiff Little Fingers
27.No More heroes / The Stranglers
30.Dameged / Black Flag
31.Rock For Right / Bad brains
33.Heaven Up Here / Echo & The Bunnymen
34.Substance / Joy Division
36.Killing Joke / Killing Joke
38.Cut / The Slits
39.Songs About Fucking / Big Black
40.Y / The Pop Group
41.Metal Box / Public Image Limited
43.In"Jane Fron Occupied Europe" / Swell Maps
44.Heroes / David Bowie
45.Purple Rain / Prince & The Revolution
46.Our Favourite Shop / The Style Council
47.Psycho Candy / The Jesus and Mary Chain
48.Kollaps / Einstürzende Neubauten
49.Daydream Nation / Sonic Youth
50.Appetite For Destruction / Guns N' Roses
53.Green Mind / Dinosaur jr.
54.Loveless / My Bloody Valentine
55.Screamadelica / Primal Scream
56.The Comforts Of Madness / Pale Saints
57.Siamese Dream / Smashing Punmpkins
58.Odelay / Beck
62.Weezer (Blue Album) / Weezer
63.Satori / Flower Travellin' Band
65.EVE / Speed, Glue & Shinki
68.風街ろまん / はっぴいえんど
70.燃えつきる キャロル・ラスト・ライヴ!! 1975.4.13. / CAROL
71.Public Pressure / Yellow Magic Orchestra
72.Welcome Plastics / Plastics
73.虫 / The Stalin
75.蔵六の奇病 / 非常階段
78.THE ROOSTERS / THE ROOSTERS
82.GOOD EVENING WONDERFUL FIEND / THE WILLARD
83.Shambara / Dead End
85.DETESTation / G.I.S.M
88.THE BLUE HEARTS / THE BLUE HEARTS
89.ヘッド博士の世界塔 / Flipper's Guitar
94.C.B.Jim / Blankey Jet City
95.ココロに花を / エレファントカシマシ
96.GEAR BLUES / thee michelle gun elephant
97.Kocorono / Bloodthirsty Butchers
追記2/21
すみません。Jimi Hendrixを完全に入れ忘れてしまいました。
追記② 2/21
Sonic Youthの綴りが違う、ご指摘感謝。訂正しました。
Stone RosesやSmithsあたりはTOP110なら入ったと思います。
追記③ 2/22
四人囃子も「一色即発」と書いていたので
順位ではありません。
とある増田経由でこのtogetterまとめにたどり着いたが。これはひどい。
山口先生の解析では山口(2008)で“男女の所得格差は男性に比べ女性に非正規雇用が多いことが一因ではあるが、より大きな原因は正規雇用者中の男女格差で、特に女性の管理職昇進率が男性に比べ著しく低いことが要因だ”ということが示され、さらに山口(2014ab)で勤続年数・就業時間・年齢・学歴・職場の種類だけでは男女の管理職割合/所得の格差を説明しきれない(これらの項目が全て同じだったとしてもまだ大きな男女格差が残る)ことが示された(※1,2)。
つまり、ショーン君の「山口一男氏を始めとして、多くの研究から所得の男女格差は女性が辞めたり時短にした結果によって生じているもので、そうしなければ女性の所得は男性並みであることが分かっておりますので、女性も自信をもって主たる家計支持者になって大丈夫ですよ。」は間違い。
むしろ何で山口先生の名前出したん?たぶん読んでないでしょ君。それで本人から訂正されるって一番恥ずかしいやつぅ。
……とまあ本来はここで終わり。あるいは、少し後退して「賃金の男女格差の要因の一部には女性が辞めたり時短にすることが含まれうる」と主張を弱めるか。はたまた「貴方の論文/解析は間違っている」と文献を挙げるか自分の研究結果を出すか。
※1:就業時間と管理職割合の関係は因果が両方向(長く労働する社員は管理職になりやすい/管理職になると労働時間が長くなる)だが、前者だけを考慮している。そのため、就業時間の実際の説明力は解析結果よりもっと弱い。
※2:平均の就業時間ではなく、就業時間区分に分けてその割合で解析している。理由としては平均値だとあまり男女差は無いが、区分分けすると“長時間労働者”区分の割合で男女差が大きくなるため。平均差より区分分けして解析した方が労働時間の説明力が高くなる。山口(2014a)では具体的に述べてはいないが山口(2014b)では週当たり平均労働時間の男女差は約4時間だが区分分けすると労働時間50時間以上の区分で女性割合が男性の3分の1になる。
ここからショーン君は鮮やかな論点ずらしを見せる。「男女格差は女性が辞めたり時短にした結果」という自分の発端のツイートとそれへの指摘は無視して、別の話を始める。
まあショーン君も実際に解析結果見て「あ、ヤベ」って思ったんだろうなあ。他の人の研究でも女の時短とか離職は数あるファクターの一つに過ぎないし。
『「男女格差は女性が辞めたり時短にした結果」ではありませんよ。要素の一つにすぎません』に反論しようがない。
でも凄いよショーン君は。まるで最初っからそう言ってたみたいに論点ずらすんだもん。ネット論客かくあるべし、みたいな?尊敬はしないけど。
1) 日本でも同じ勤続年数・職位・職階であれば所得の男女差はない
2) 日本の所得の男女差はa.勤続年数・職位・職階の分布の違いとb.職種の分布の違いで説明できる
というのが基本かと思います。
うんうん。まあもう少し言えば補正後も男女差は残るし、職階の分布の男女差の説明変数の一つが勤続年数なんだけど、まあ細かいことはいいんだよ。
山口先生と私が違っているのはそのファクトの解釈です。山口先生は例えば《意思決定ラインの登用には男性が優先されていると考えられ》とここに男女差別があるのだという解釈になっています。ですが、この解釈には直接的なエビデンスがありません。
うん?差別?突然出てきたが何の話だ。実際に解析結果では「係長‐課長‐部長という意思決定ラインの登用には男性が優先されている」し、少なくとも引用元では山口先生はそれを差別と呼んでいないぞ。
事務職コースみたいな、女性が多く(というか実質女性向け職)かつ賃金・昇給が低く抑えられている企業内コース制度のことは間接差別だと言ってるけど。
2020年管理職30%目標など企業も努力しており、その中で問題になってくるのが「女性に昇進を打診しても断られる」「管理職候補だった女性が寿退社してしまう」という問題です。女性の昇進意欲については山口先生の間接的データの解釈とは別に直接的エビデンスが存在します。
うぅん!?“昇進意欲”なるものが唐突に出てきた。え?女の時短や離職で賃金格差が生じてるんじゃなかったの?
しれっと別の話始めないでよショーン君。たぶん山口先生も混乱したでよ。
例えば、『多様な選択を可能にする学びに関する調査報告書』(gender.go.jp/research/kenky…)では女性の昇進意欲は男性のそれの半分です。パーソルの調査(rc.persol-group.co.jp/research/activ…)でも同様の結果で、日本の女性はアジアの中でも管理職昇進意欲が最低で、男女のオッズ比も最も大きい。
「女性に昇進を打診したのに断られる」という企業の困惑は実際そうでしょう。引用先から図表を持ってくるとこのようになります。
この問題は日本に限った話ではなく、例えばスーザン・ピンカーが「なぜ女は昇進を拒むのか」(hanmoto.com/bd/isbn/978415…)という本を書いていたりしますが、この本の主張はともあれ多かれ少なかれ「女性に昇進を断られる」という問題は現実的な話ではあります。
いやしれっと進めないでよね。それに女は昇進意欲が小さいんじゃい!と連呼されてもさ、それが職階分布の男女差をどれくらい説明できるのかなんも言ってないじゃん?(※3)
いやはややっぱりすり替えがうまい。女は昇進意欲が小さいというエビデンスを、それによって職階分布の男女差ひいては男女の賃金格差が生じているというエビデンスに誤認させてる。
山口先生がただ結果を述べているだけなのを「男女差別があるのだという解釈」ということにして信頼を毀損しようとする。
やりますねえ!
※3:たしか昇進・労働意欲の影響を調べた解析もあった気がする。あ、これだ馬&乾(2016)。これだと係長への昇進は意欲で一部説明可能だが課長以上はできないって結果。ちなみにこの調査では、管理職割合については属性格差(人的資本の男女差)より評価格差(人的資本の評価における男女格差。例えば同じ人的資本を持つ男女では男性の方がより評価されるなど)の影響の方が大きく、男女の職階差は差別的扱いに由来するものと結論付けている。馬ら(2017)でも昇進意欲の影響を見てるがこちらはもっと説明力が少ない。
次に、寿退社の話です。スローター「仕事と家庭は両立できない?」とその種になっているコラム"Why Women Still Can’t Have It All"(theatlantic.com/magazine/archi…)やサンドバーグ「Lean In」では夫選びの重要性が説かれます。妻の出世に協力的な夫でないと出世は難しいと言う話です。
こらまたアクロバティックな方向転換。なぜに夫選びの話に?
43歳でFacebookのCOO(その前はGoogle、さらにその前は米財務省の首席補佐官、その前はetc.)のスーパーウーマン、シェリル・サンドバーグが「女のリーダー少なすぎ!女だからって仕事辞めなくていいよ!子育ても仕事も両立できるし、バリバリ働けばキャリアだって男に負けない!頑張れ頑張れできるできる!!」と抜かすLean In (悪意的要約)と、それに「いや無理だし」と返しているアン・マリー・スローターを同じ意図で引用するってどういう脳みそだ。ほんとに読んだん?
夫選びに限定したって、サンドバーグは「理解のある夫くんが居れば無問題」、スローターは「夫は重要だけど、それだけじゃ無理」と言っている。
ちなみにショーン君の引用しているアン・マリー・スローターの文は日本語訳があるので置いとくよ。→https://courrier.jp/news/archives/77602/
最近の共働き志向の中では「出世に伴う転勤・引っ越しについてくる配偶者か否か」という問題で表出しやすくなっています。先生も研究者ですからポストを得るのに引っ越しが必要であり、現実的に引っ越しについてくる配偶者か別居を選ぶかしか選択肢がないのはご存じでしょう。
ただし、引っ越しについてくる夫を選ぶ女性が極めて少ないのは、中野円佳「育休世代のジレンマ」(kobunsha.com/shelf/book/isb…)4章2「なぜ夫選びに失敗するのか?」や、
あるいは有名どころで上野千鶴子のインタビュー(toyokeizai.net/articles/-/224…)にもそれは表れています。他人に白河桃子『「専業主夫」になりたい男たち』も同じ旨が書かれます。
女性が結婚相手選びで所得を重視するのは婚活産業や少子化関連の調査から明瞭で、言ってしまえば女性は自分の出世の邪魔になる夫を選んでしまうのですが、ここを変えようとしてもプライバシーへの干渉になるので、現実問題としてはここが非常に大きなボトルネックになっています。
まだまだ続くよ夫選びの話。ええい印象論はいい。エビデンスを出せエビデンスを。
って言うか最初に言ってた寿退社の話はどうなった。転勤・引っ越しと寿退社に何の関係があるんじゃ。
ちなみに山口(2014a)は制約は多いながらも「既婚および子供の有る女性/男性は、そうでない場合より昇進し難い/易い」という解析結果をだしている。あとさっき引用した馬&乾(2016)では結婚は女性の昇進に影響なし、男性にプラス。
しかし解釈は容易ではない(※4)。「夫が足引っ張るせいで妻が出世できない」のエビデンスには全く足りない。
あとこのツイートからわかるのはショーン君の「女が悪いフィルター」の強さかな。
「出世の邪魔になる夫」の問題じゃなくて『「出世の邪魔になる夫」を選ぶ女』の問題って言うんだぜ。賭けてもいいが、ショーン君ならDV被害はDV男を選ぶ女の問題って言ってくれるはず。
①/② 結婚が男性/女性(の昇進)にプラス/マイナスの効果を生じる
③/④ 独身が男性/女性(の昇進)にマイナス/プラスの効果を生じる
⑤/⑥ 昇進が男性/女性の結婚にプラス/マイナスの効果を生じる
①~⑥は全部同時に成立しうるし、①③⑤は⑦と、②④⑥は⑧と、⑦は⑧と排他である。
さらにプラス/マイナスが具体的に何によってもたらされるかも考えねばならない。超複雑!
最後に専門職の話。これは、実は「ジェンダーギャップ指数が良好な国ほど女性のSTEM系進学率が低くなる」現象があり、Gender-Equality Paradoxという名前で他国でも問題提起されています(eprints.leedsbeckett.ac.uk/id/eprint/4753…)。
問題提起?されたなあ確かに。その論文Stoet&Geary (2018)の信頼性についてだがね。
発端はこの論文に興味を持った他の研究者がデータから結果の再現を試みるも失敗したこと。よく見たらデータ自体も合わない(例えばポーランドの女性のSTEM学位取得率は43%だが、論文中では27%くらいになってる)ことが判明。著者らに問い合わせたんだ。
すると――聞いて驚け!――この論文の著者らはMethodsにも書いていない、非公開の独自の計算方法を用いて数値を算出していたのだと。
でまあ指摘を受けた著者は論文の大幅な――元論文の1割以上、1,113語にも及ぶ――修正をしている(Stoet&Geary, 2020)。
その訂正の多さもさることながら、元論文では言い切っていたところを「傾向(propensity)」という弱い表現に差し替えてる。つまり非公開の手法でデータいじって主張を誇張してたわけだ元論文は。
ぶっちゃけ個人的にはアウトもアウトな話だと思うんだけど、皆さんどう思う?
さらにそれを指摘した学者らの出したRichardson et al. (2020)では、国の数や男女平等の指標等が変わるだけで男女平等とSTEM分野の男女格差の相関は消えることが示された(=Stoet&Geary (2018)に再現性なし)。Richardsonら曰く「複数の指標や手法を試して結果の一貫性を確認すべき。自説に合う結果が出たやつだけ使うのはダメ」とのこと。
おっと、引用元の解説を長々しすぎた。Gender-Equality Paradox云々は置いといて、ショーン君が言いたいことは分かるよ。「女の選好のせい。女が悪い」でしょう?
良い手だが、それは結局ファクターの一つを提示したに過ぎない。それの説明力や、それがどの程度社会的に形成されたものであるのかが重要だ。
ちなみに山口先生の解析では、男女の専攻の選好は理工学部を除き、男女の職業分を説明しない。その理工学部にしても最大推定で約50%しか男女の職業分離を減少させない(※5)。
勘違いしないでほしいが、男女の選好の違いは男女のSTEM分野ないしより広い範囲の職業選択において重要なファクターの一つであることは間違いない。
論点はそれがどれくらい生物学的(対処不能)でどれくらい社会的(対処可能)であるかということだ。極端な主張の人達――100%生物学的 or 100%社会的――もいるがね。
※5:
男女の大学の選好の違いの多くは、男女の職業分離を説明しないが、例外は理工学部の女性の増大で、もし理工学部女性の割合が男性と同等になり、かつ彼女たちの職業分布が男性の理工学部卒の職業分布と同じになるという2条件が満たされるなら、タイプ1型(※6)の専門職割合の男女格差が最大の推定でほぼ半減すると期待できる。
※6: タイプ2専門職=教育・養育、医療・健康・看護、社会福祉分野の専門職から医師・歯科医師、大学教授(教員)を除いたもの。
タイプ1専門職=医師・歯科医師、大学教授(教員)およびタイプ2に含まれない専門職。
1) 元々出世意欲が低く打診しても断られる
まるで“山口先生が知らない問題”であるかのような口ぶりだが、2)と3)は山口先生の解析で男女の賃金格差の主因足りえないことが示されている(個別でも組み合わせても)。山口先生が研究で(たぶん)扱っていない1)についても要因の一つたり得るがエビデンスは少ない。
1) → 出世意欲の男女差では賃金/管理職割合格差を説明しきれない(調査も少ない)。
2) → 勤続年数が同じ(寿退社しない)でも格差は残る。また夫選びは勤続年数に影響を与えるファクターたり得るが、勤続年数そのものは
はてなあもすなる家買日記といふものを 我もしてみんとてするなり
(はてなーが最近やっている家購入記を、俺も便乗してみようと思い書いた)
・子供が産まれることになったので、それまで住んでた借家をやめて家を買うことにした。
子供が動き回るようになると床や壁を汚したり壊したりするだろうし、家のカスタマイズもしたくなるだろう。これまで数回の引っ越し・荷造り作業が非常に手間だったので、幼児の育児しながらの引っ越しはまず不可能だと予想された。
・妊娠初期からなんとなく探し始め、妊娠6ヶ月で本格的に探し始め、出産3ヶ月前に物件決定、1ヶ月前に引っ越した。
物件選定、下見、ローンや物件の契約は俺と妻二人で行い、実際の引っ越し作業は俺一人で行った。
・庭付き一戸建てを借りて2年間住んでおり、自分たちが家に求める重視したい要素と、どうでもいい要素をある程度把握できていたので、それを家探しに反映させた。
物件選定
・ネットの物件情報サイトで市町村名で絞り込み、安価順にソートして諸条件から気になる物件を20件ほどリストアップ。
中古の場合は値引きの可能性もあるので、これまでなら出せる上限価格の2割増しまでリストアップした。
リストアップした物件はぜんぶ休日に現地に行き外観や周辺環境を見た。不動産屋に連絡して内覧させてもらったのは上位5件。
・エクセルで物件比較表を作り、要素ごとに傾斜配点して点数を付けて最も高得点の物件を買った。
高配点順に、「駐車場台数」「延床面積(部屋数)」「価格」「構造」「築年数」「両実家からの距離」「校区小学校からの距離」「最も近い保育園からの距離」「バス停からの距離」「敷地面積」「土地条件」「駐車場が露天か屋根付きか屋内か」「他」
俺が比較表を作り、いちおう妻にも見せて意見を聞いてたが、ほぼ追認状態だった。
(実際に使ったエクセルファイルを晒そうかと思ったけど、増田は添付ファイル付けられないんだね。)
以下、各項目ごとに説明する。
「駐車場台数」
地方都市なので車がないと何もできん。俺バイク通勤、妻は車通勤。子供が産まれれば子の保育園への送迎のため俺の車も必要になる。なので最低2台分。駐車場無しは論外、1台分のみの場合は庭を潰して駐車場追加できるか、もしくは周辺道路に恒常的に路駐できる立地か(車庫法違反になるが、住宅街では実家で車庫証明とっていつも路駐してる人も多い・・・)で判断。
両親が子育て手伝いに来てもらえばその車を止めるスペースも必要になる。できれば3台分ほしい。
→ 3台分ある家を買った、妻車、子送迎車、残り1台分はバイクガレージとして使ってる。両親が来たときは住宅地の最奥で交通量が少ないので車庫の前に路駐してもらってる。
「延床面積(部屋数)」
リビング、俺の部屋、妻の部屋、寝室、将来の子供部屋、で4LDKが最低条件。もちろん部屋は多いほど良く、面積は広いほど良い。
→ 6LDKとなった。部屋は多いほどいいと実感している。寝室二つにしていつもは3人一緒に1Fで寝て、風邪ひいたら一人だけ2F寝室で寝たり、いろいろ助かる。
「価格」
世帯年収1700万~2200万。物件価格4000万が上限と妻と合意したので、4800万以内で探した。
(妻は公立病院勤務医で、当直・オンコール量により増減。妊娠後期から産休までは時間外一切無しなので1200万、育休明けから現在までは週2のオンコールのみなので1400万程度。ただ住宅ローン審査では前年までの源泉徴収票で判断するので、金融機関からは1700万として見られてたはず。
俺は残業あっても無くても500万。県庁は時間外手当ほとんど付かない)
→ 建物の登記で持分1/2ずつ、土地は保留地なので組合の所有者台帳に連名で記載、実際の負担も1/2ずつとした。
「構造」
当時住んでた借家が築10年のプレカット工法の木造住宅だったが、壁の外板(サイディング)つなぎ目シーリングが劣化して雨水が浸入し、中の木が腐って雨漏りがあり、さらに同構造の隣家の2Fベランダが腐って半壊してて、プレカット木造住宅には不信感があり対象外とした。
両実家は築2~30年の鉄筋コンクリート造だが目立った不具合はなく、信頼感があった。
よって鉄筋コンクリート(RC)造、鉄筋コンクリートブロック(RCB)造、軽量鉄骨造の順に高評価とした。
→ RC造を買った。売主(建て主)がリフォーム業の社長で、その知識を生かして作った注文住宅ということで、内覧して一目見て質がいいとわかる造りだった。階段上り下りしても木の軋み音が全くしないとか、天井が高いとか、天井裏みたら断熱材が分厚いとか、床下も広いとか、壁収納が各所に多い(いまだ使い切れてない)とか。
「築年数」
新築のほうがもちろん良かったが、当時は型枠職人不足が顕著でRC新築坪単価が異常に高騰しており、手が出る価格の新築はプレカット木造ばかりなので、中古住宅中心に探した。
住宅ローン控除が効くのがRCだと築25年以内の購入なので、築25年が一つの基準。ただし利率負担以上に安い物件があれば築25年以上でも良い。
→築20年を買った。コンクリートのひび割れ等は全く見られない。
とても幸運なことに、俺の実家と妻の実家が車で10分の近距離で、かつお互いの職場からも車で20分以内の距離だったため(これは結婚決めてから判明)、両実家に近い位置で探した。
夫婦二人ともフルタイムで働いており、育休あけてから祖父母のサポートが絶対に必要になると予想されたため、両実家から車で30分以内の条件で探した。
妻実家のあるA市と俺実家のあるB市は隣接。AB市か隣接した市町村で絞り込んだ。
→両実家の間で妻の実家寄り(妻の両親の毎日の散歩コース)の物件となった。
中学生になれば自転車やバスが使えるから距離があってもいい。小学生(特に低学年)は徒歩通学が基本になると思われるので、子供が歩いていける距離として2km以上で足きり。できれば1km以内。
→買った家の校区小学校は崖を迂回しないといけないので延長距離4kmあり足切り対象なのだが(この家が家の造りや面積の割に安かったのはこれが第一要因だと思う)、妻の実家が市境を挟んだ隣の市にあり、妻実家の校区小学校は家から800m。これを生かす。
越境入学は同市内ならまだなんとかなるかもだが、別の市だとほぼ不可能。市民税納めてないし仕方ないね。
認可保育園であっても世帯年収から保育料が最高負担額(月6万ほど)になるので、認可外・認定保育園でもいい。車で送り迎えになると思われるので小学校ほど距離は気にしないが、あまりに遠いと渋滞もからんで勤務時間に支障する。
→結局、基準に沿って運営されてる認可保育園が安心だねとなり、家から3kmほど離れた保育園に入園できて車で送迎してるので考慮する必要はなかった項目。
子供が高校生になれば離れた進学校に行くかもしれず、そうなればバス通学となるだろうから、あまり遠くないほうがいい。2km以上で足きり。
→1.5kmほど先に本数の多い路線のバス停がある。高校生なら歩ける距離だろう。
「敷地面積」
庭は無くてもいいが、あればいろいろ使えるだろうから。ガーデニングとか、子供が歩けるようになったら庭でプールとか、小学生になれば犬を飼うとか。
→30㎡ほどの土の庭がある。興味なかったが、いろんな植物植えてデザインするのはやってみると楽しい。
「土地条件」
当時は東日本大震災から数年のちで津波の記憶が新しく、標高は確保したい。
谷地は通気性悪く水害ありそうなので避けたい。崖ぎわ地は見晴らし良いが安定性が心配だが切り土なら問題なし、盛り土は絶対不可。平坦な住宅地の中なら土地安定性やリセールバリューは良いが、道に面した1方以外の3方を他民家に囲まれていて息が詰まらないか心配(両実家も借家も、2方のみ他民家で1方は林や崖だった)
→ 数十年前に台地を切り土して造成した住宅地の南に開けた崖ぎわの物件にした。この物件を候補にしてからは県立図書館に行って明治時代以前からの古地図を見たり、国土地理院のサイトで米軍撮影の1945年前後の航空写真を見たり、県の地図サービスで災害指定区域を確認したりして、
昔と今とで大きく地形が変わってない(その間の大きな地震でも崩落等してない=地盤が強い)こと、盛り土ではなく切り土であること、敷地が急傾斜地崩落危険区域に指定(再建築時に制限がかかる)てないこと、を確認した。
眺めはいいし、日当たりはいいし、リビング先の庭の先は斜面で林なので四六時中リビングのカーテンを開けたままにしておけるし、今のところは満足している。かつてない巨大地震が来たら土地も家も無くなって無くかもしれないけど。
→ 土地区画整理事業が施工中で保留地上の物件なので、いろいろ勉強して詳しくなった。ネットバンクの住宅ローンが使えない以外はデメリットは無かった。リセールバリューには影響するかもしれんが、この家を売る頃には換地処分は終わってるでしょ。
→ 用途地域にこだわりは無かったが、小学校やバス停までの距離で足きりすると必然的に市街化調整区域は除外され、市街化区域の第一種低層住宅地域の物件ばかりとなった。
車もバイクも雨ざらしにはしたくないので最低でも屋根があったほうがいい。無ければあとからカーポートを付ければいいが費用が200万ほどかかる。できれば横風や埃も防げる屋内駐車場だといい。
→ 電動アルミシャッター付の屋内駐車場となった。ガレージとしてバイク整備に使えて最高。壁にアンカーボルト打ち込んでメッシュパネル付けて工具並べてある。密閉空間で音が漏れないので雨でも夜でもエアコンプレッサーやディスクグラインダーが使える。ぐへへ
「他」
周辺環境は閑静な住宅地の最奥で、家の前の1.5車線道路は交通量少なく(周辺家に用事のある車しか通らない)子供を道で遊ばせても大丈夫そう。家が売りに出ている理由が、売主夫婦が高齢になり介護付住宅に引っ越すための処分ということで、周辺とのトラブルが理由ではない。下見や内覧のときに両隣・道向かい・道向かい両隣の方に挨拶して少し話したが、変な人はいなかった。
→現在も、たまに顔を合わせたら挨拶してちょっと世間話するくらいで、軽い近所付き合いのみしている。
保留地のせいか自治会対象外となっており、自治会費や行事参加の負担がない。
なにより妻の両親の毎日の散歩コースにある家で、毎日周辺を見てる妻の両親から「問題ない」とお墨付きをもらえて安心できた。
県庁所在地隣接の市街化区域なので、小児科は車で10分以内に3院、大きな総合病院も車で20分以内に2院、他内科や整形外科クリニックも徒歩(車2分程度)に数院あり、医療関係に不安はない。
買い物も価格重視のスーパーからちょっと高めのデパート系列のスーパーなど車10分圏内に5~6件、ドラッグストアやホームセンターも車10分圏内にあり問題ない。
(年とって車も運転できなくなったらどうしようね?3食つき老人ホームに入るしかないか)
購入
妻は倹約家(いくつかの趣味以外には服や娯楽に金使わない)なので現金一括で買えるだけの貯蓄があったが、住宅ローン減税のおかげで利息負担無しで借りられるので、何かあったとき手持資金確保のためもあり、常識的に頭金を1割入れて残りはローンを組んだ。
均等に資金負担しようということで、持分1/2ずつの共同債務とした。
住宅ローン控除年1%よりも融資利率が低ければ、借金して金が入ってくる逆ざやとなるので、控除が効く10年間はなるべく融資残高を増やすべく、20年ローンとした。10年たったら一括繰り上げ返済する。月々の返済額が減るぶん貯めておく。
変動金利のほうが遙かに利率は低かったが、金利変動リスクを避けたくて10年固定金利にした。(でも今の状況だと変動のほうが得だったな。賭けに負けた。)
土地区画整理事業地内の保留地上の物件という特殊条件のため、年利0.65%等の低金利を誇るJNBやソニー銀行等のネットバンクのローンは使えなかった。
地場の都市銀行2行に仮申し込みし、低利率のほうに本申込した。(妻がメインで使ってる銀行のほうが高かったので担当者からずいぶん引き留められたが、仕方ない)
世帯年収の2~3倍程度の物件価格、お互い安定した職業ということで審査はトントンで進んで融資決定の連絡があった。
年収(源泉徴収票)以外の金融資産も開示したが、融資担当者は俺の数百万の貯金はチラッと見ただけで終わりだった。ちょっとプライドが傷ついたぜ。
利息は0.8%台で、融資手数料等の諸費用を含めると逆ザヤは僅かとなった。
住宅ローン減税は初年度こそ税務署に行っての確定申告が必要で面倒だったが、2年目以降は年末調整で職場に用紙出すだけなので慣れれば手間でない。
・値引き
基本的に都市部の中古住宅は売り手市場だが、この物件は1年前に4800万で売りにだして売れず4600万で売られており(校区小学校が遠いのと保留地なのが原因だと思う)ちょっと強めに出てみた。
不動産屋を介して、「もともとの予算が4000万なんです、がんばって4100万なんです、保留地なので金利の安い住宅ローンが使えなくて苦しいんです、金利分まかりませんか?」と。
4400万のオファーがあり、こっちは4200万で再度要請。最終的に「4300万よりは下げられん、それで無理なら売るのは諦める」との回答で、4300万で妥結した。
近くにある小学校距離と保留地以外の広さや造りや築年数が似た物件は6~8000万で売られてるので、造りのいい広い家を安くで買えたと満足している。
・不動産屋
仲介手数料は上限いっぱい取られたが、土地区画整理組合との所有者変更のやりとりや価格交渉で駆け回ってくれたので不満はない。
・司法書士
登記関係は銀行指定の司法書士に一任した。土地は登記がないので建物分のみ。市中の方に依頼したらもっと安かったと思う。
反省点
結果論だが、保育園までの距離は考慮しなくてもよかった。それ以外は満足。
子供が産まれる前は「田舎で静かなところがいいね」と学校までの距離をきにせず人里離れた田舎の広い一軒家をネットで見た「こんなところいいね」と話してたりしてたが、子供が産まれると子供第一の選定となった。でも子供が独立したらまた判断基準が変わるんだろうな。
凄く頑張って、真面目に勉強して、どうやって戦うかを考えてプレイしただろうことが、非常によく分かるからだ。
だからこそ、どのように戦い、どのように負けたのかが、投稿内容からまざまざと見える。
「何が出るかな?」は出てきたアイテムに応じて動きを変える必要がある必殺技だ。
ただ漫然と投げているだけでは、ファウストの得意とする位置でプレッシャーのない隙きを晒すだけの愚行であり、
から、
当然のようにこうなる。
格ゲーはテクを披露するゲームじゃない。相手の体力をゼロにするゲームだ。
ソルの飛びモーションが見えたらしゃがみ前歩きで空かせる
こういうことは、戦える人が勝率を上げるためにすることで、初心者が狙うことじゃない。
必要なのは直接的な勝ち筋、相手への触り方と、ダメージの取り方、カタへの嵌め方だ。
必要なのは地上を制圧する遠Sや2HS、入れ込み・生出しの「レレレの突き」であり、
飛んでくる相手に対する置きKや6P対空であり、意表を突く黄含むドアぶっぱやドリルであり、
それらの選択肢を警戒して対戦相手がジャンプを見せたり、立ち止まったり、ダッシュガードをしだして初めて、
「何が出るかな?」が機能するようになるし、相手を詰めて行けるようになる。
まあ、その上でカタに嵌める部分、
そもそも初心者に対応型のキャラであるファウストを使わせるのが土台不可能なんですよ。
つまり選ぶべきは、特殊な操作がなくてもダウンが取れて起き攻めに行けて、中下段、表裏で崩せる無敵技持ち……
そう、適当に攻撃ボタンや必殺技をポチポチするだけで相手に対応を要求するレオ=ホワイトファングです。
判定が強く長いHSと見てから対処の難しいS弾をブンブン振り回し、
ガード・ヒット関係なく適当に6HS, 波動S, 波動HS(ガードさせて有利)に繋いで表裏を翻弄、
波動Sがガードされても二段目止めと三段目RCで対応を強要し、
三段目RCがヒットしていれば空中コンボ波動HSで地上に引きずり下ろしたら、
密着有利からボタンを押すだけで見切りにくい中下段連携起き攻めおかわりだし、
でも、3Dプリンターがなかった時代はその金型までが大変だったんだと思う
3Dプリンターは…、みたいにダラダラ書いたけど、自分なりの結論としては、3Dプリンターは試作用途には断然アリだと思う
精度が多少悪かろうが、ときどき大失敗しようが、基本CAD通りの物体がとりあえず手に入るというメリットは大きい
だからCADと3Dプリンターを行ったり来たりして試作を詰めていって、
これ以上ないところまで行ったらDMMに頼むとか金型作るとかが3Dプリンターの使い方としていいと思う
最終完成品を3Dプリンターで作って一般消費者に売ろう、とか考えると失敗すると思う
Togetterのまとめのどこだったか失念したんだが、3Dプリンターでミニチュアのライフルとか作ろうとしてたと思う
それをワンフェス?だったかその手のイベントで売りたいみたいなんだけど、そのライフルが曲がって出力されてしまい、
かなり一喜一憂しているのを読んで、あー、光造形でも理想通りにはならんのだなー、と思ったり
うろ覚えだけど、光造形だとたしか印刷する位置によって、真ん中なのか端っこなのかで精度が変わるとかあったと思う
FDMでもあるw普通にあるw
同じ部品を一度に多く欲しいときに、コピーして並べて出力するわけだけど、その出力結果が配置した位置によって精度が異なってしまう
ネジみたいなものだと致命的
まあネジを出力するのは3Dプリンターのパフォーマンス自慢的な意味合いもあるので、規格にあるネジなら3Dプリンター出力はオススメできない
ネジ以外の部品も同様で、規格にある部品はホームセンターに行ったほうが無難
でも、3Dプリンターがない時代だったら、樹脂材ならプラ板とかエポキシパテとかプラモのフルスクラッチまがいのことをしなければならなかったけど、
それに比べれば3Dプリンターの方が断然楽ではある
だから、3Dプリンターは無駄な代物ではないのだけど、夢を見すぎて買うと痛い目に遭うと思う
買う前にThingiverseとか見て、こういう使い方だったらできるのかなあ、と購入後の使い道を想像してみるといいと思う
GitHubにもロボット作ったり人工知能の車とか作ってる人がCADデータやSTLがあるので探してみるといいかも
Thingiverseの注意点は、絶対投稿者本人が出力してないだろ、と思えるような精巧すぎるものとかはスルーした方が無難
あと、いいね!みたいな評価が高くても、評価者も作らずにいいね!を押してるので、
作品ごとに、自分も出力してみた、みたいな箇所があるので、それを見て色んな人がそれぞれのプリンターでどう出力されたかを見るといい気がする
まあ「沼」だね
3Dプリンターは沼
でもArdinoのケース作ったり、Arduino組み込んだロボットみたいなの作ったり、やろうと思えばRC飛行機とか作れるし、
ときどき夢見すぎる人がいて、これがあれば市販のプラモみたいなのコピーし放題じゃん、みたいに思うと痛い目に遭うと思うけど
あと、自分の家の洗濯機と排水口の接続部に問題が会ったので、3Dプリンターで部品を設計して出力して自分で直したw
賃貸の管理人に問い合わせたら、修理業者と一緒に部屋に行くんで都合が良い日を教えろだの、壊したんかーおまえはーみいたいな剣幕で対応されて、
いや、壊してないから、どっちかというと排水口より自分の古い洗濯機の問題だから、と思って、どうしよーかー、と思ってたんだけど、
と思って、排水口と洗濯機の結合部を定規で簡単に測って、簡単な部品を設計して、まずはPLAで出力
水が流れすぎることが原因だと思われたので、流量を制限する部品を設計した
2回目の出力で設計に問題なさそうなことが分かったのでABSで出力し直した、で数年間問題なく使えてるw
PLAは水に弱いしお湯で変形したり溶けてしまうので
最近はRCカーのレース本番でも車体にカメラを設置することがOKみたいで、YouTubeで見つけた動画を眺めていた。
私はRCカーのようなコントロールが非常に苦手で、例えば初代のバイオハザードみたいなのは苛々してプレイすら無理だった。
同時期のDoomやQuakeのようなFPSは問題ないのでそればかりやっていた。
同世代がプレステでバイオハザードのような定点カメラやタスクをこなして動画を観させられるようなRPGが非常に苦痛であった。
一方で同じプレステでもPsygnosisのWipEoutのような洋ゲーは好きだった。
これもFPSであるが、日本独自実装の苦労も感じられる素晴らしいゲームだった。
ジャンピングフラッシュ!のようなFPSは問題なかった。(ただジャンピングフラッシュ!は退屈すぎた
RCカーに設置したカメラの映像は自分には非常に好感が持てた。
これなら自分のような人間でもRCカーを運転する気になるというものである。
そもそも、最近はドローンとHMDの組み合わせによる運転、レースは常識になっている。
ただ、これはこれでちょっと怖い。
運転が怖いのではなく、振り向かないと後ろが見えないというのが逆に怖い。
HMDでマルチコプターを運転して自分に衝突させたり、他人に衝突させるのが怖いのである。
個人的には寧ろ定点カメラ、HMDを使わない操作の方がマルチコプターは安心できる。
農家がRCヘリコプターの農薬散布でもよく事故を起こしているような気がする。
あれは当然、定点カメラ式であるわけだが、それでも事故るのである。
自分はポケバイやカートをちゃんと運転したことがないのだが、あれは速度が数字より速く感じられる。
速度的には大したことがないわけで、自動車であれば寧ろのろく感じられるかもしれない速度である。
しかし、視点を低くしただけで、地面のアスファルトの速い流れが感じられる。
うっかり転倒したら痛いだろうな、と思うわけだが、こういうヒヤッとする感覚は自動車に乗ってるときには感じられないものである。
https://pbs.twimg.com/media/C0zntbDUUAAiNBW.jpg
視点が高すぎると時速200kmでも遅く感じられることはありえると思われる。
ガンダムのような巨大な二足歩行は実現がほぼ不可能に思われるが、資源採掘などで使われる巨大な特殊車両、
ロケットを運ぶような車両でも乗ればそう感じられるのではないだろうか。
同じように、遅々として進まないように感じられる現状、プロジェクトがあったとしても、
それは高い視点から眺めているからそう感じられるわけであって、
低い視点、例えばそれは泥臭い現場であったり、鉄道であれば線路を工事している人達には違う速度で感じられるかもしれない、
そんなことを思ったのであった。
眺める高さ、場所によって、その速度の感じ方は変わるのではないだろうか。
7月からマイナポイント申し込みが始まったので挑戦する(たかが5,000円に飛びつく貧乏人です)
↓
↓
自スマホは対応機種であるが、「お使いのデバイスはこのバージョンに対応していません」と出る。
どうもスマホ本体の機種だけでなく、通信事業者も対応可否がある模様。(カードの読み取りに通信事業者を制限してくる意味不明さに脱帽)
https://mynumbercard.point.soumu.go.jp/doc/nfclist.pdf
↓
仕方がないのでパソコンからやることにし、マイナンバーカード読み取りに必要なICカードリーダーを購入(ソニー PaSoRi RC-S380 2,782円2020/07/11時点)
適当なリーダー買って使えないとか辛いのでちゃんと公開されている対応機種を買う
https://www2.jpki.go.jp/prepare/pdf/nfclist.pdf
↓
マイナポイント申し込みには、マイキーIDの発行が必要とのことで、キーを発行してくれるマイナプラットフォームというサイトにいく
https://id.mykey.soumu.go.jp/mypage/MKCAS010/
↓
「マイナポイントの予約(マイキーIDの発行)」ボタンを押すとInternetExplore11じゃないとだめだと怒られる。(今どきIE11指定とか大丈夫か・・・)
↓
↓
↓
また怒られる
カードリーダーにマイナンバーカードをセットした状態じゃないと進めない模様(ちっ)
↓
カードをセットする(非接触リーダーだが、リーダー本体にちゃんと密着セットしないと読み取りエラーになる)
↓
暗証番号を入れる
↓
”予期せぬエラー”とでる(画面が進んだのでカードはずしてた)
↓
カードをセットしたままじゃないとだめらしい。(エラー文の解読難易度の高さ)
↓
↓
決済IDとセキュリティコードの入力を求められる(なにそれ?)
↓
決済IDとはEDY番号のこと、セキュリティコードとはEDYカードに記載されているコードの模様
↓
自分は お財布ケータイのEDYを常用しているのでどうすればよいのか調べる
↓
お財布ケータイにはEDY番号はある。セキュリティコードはないとのこと。
↓
さらに調べると、お財布ケータイEDYの場合は、楽天EDYアプリから申し込んでと書かれている(楽天EDYアプリからできるのかよ・・・)
↓
楽天EDYアプリは入っているので、そこから申し込みしようとする
↓
マイナポイントアプリが必要と言われる(前述の通り、自分のスマホは通信事業者が非対応なので使えない。糞が。)
↓
さらに調べると、お財布ケータイEDYの場合は、セブン銀行ATMからも申し込みできる模様(セブンに行くのめんどくさい)
↓
さらに確認すると、セブン銀行ATMからの申し込み対応開始時期は9/1からとのこと。
↓
終了
結論:マイナポイントアプリ非対応機種・通信事業者の場合で、かつ、お財布ケータイEDYの人は、ICカードリーダーを買ったところで無駄になる。申し込みは9/1以降(予定)セブン銀行ATM。それもすんなりできる気がしない。
パソコンやスマートフォン以外の申し込み | Q & A | 楽天Edyで困った時は https://support.rakuten-edy.co.jp/faq/show/5932?back=front%2Fcategory%3Ashow&category_id=482&page=2&site_domain=default&sort=sort_access&sort_order=desc
5,000円のために2,782円のリーダーを買い、予約できずに徒労に終わったいう記録でした。
一軒目
大量のヤスデ出現
不動産屋は適当にガムテープで侵入経路であろう箇所を塞いだが以前変わらず 夢にまで見るようになり引っ越し
二軒目
壁がまあ〜薄い この時期はネットを鵜呑みにしていてRC=防音性が高いイメージだけで選ぶ(ヤスデが完全にトラウマになってて早く引っ越したかったというのもあったが)
こんな話し声がはっきり聞こえるのかとただでさえ薄い上に隣人の民度が低く重低音の音楽が鳴り響く
不動産屋に仲介してもらって色々話してもらったが解決せず 引越し
三軒目
RCマンションでも硬い壁とそうでない壁があることを知り内見で異常に気を使いようやく硬い壁のマンションを見つける
…が上階の音が滅茶苦茶うるさい 足音何かものを落とす音が自分の部屋で落とすより聞こえる 脳に直接叩きつけられるような
部屋のひどさもそうだが不動産が大手にも関わらず今までのどこよりも動きが遅く手紙だけでも二週間はかかっていた
不眠がひどくなり目にクマを初めて作った 包丁を手にとって上階のやつを大真面目に殺そうとしたことがあった 階段で盛大に転び冷静になって引き返したが まあそのぐらいブレーキが効いてなかった
貯金もこんな立て続けに引っ越せばすぐなくなる でも何回かまだ引っ越す余裕はあった でもまた次で失敗してお金をなくすとと考えると行動できなかった
ラストチャンスだと思い引っ越す
四軒目
引き戸がうるさい
内見は数え切れないくらい行った 不動産屋の言うことは信じずにRC最上階、壁が固く音が反響するような所、床はクッションフロア
そんな物件を見つけるには苦労したがやっとのこさ見つけられた
ただ懸念点が一つ引き戸があったこと 今まで住んでいた所にはないものでこういうのの音ってどうですかねと聞いてしまった たまたま不動産屋の年齢が近く親しみ易さが合ったからだろう
答えとしては鉄筋なので安心してもいい 苦情がはいったこともありませんと
なんでか分からないが信用してしまった 自分でも相当心が疲弊していたと思う
住んでみてやっぱり引き戸うるせーじゃねえーか!!
どっちかっていうと閉め方の問題な気がするがパアンッ!!って音が家中に鳴り響くんだよ異常だろ
現状に関しては今からまた不動産と相談となるが解決するかは分からない
クレーマー、神経質なのかと思われるかもしれないが音に関しては全て耳栓をしてそれでも防げなかった上で抗議している
正直もう疲れた 不動産のあのニコニコ顔を見るだけで吐き気を催すレベルまで来た
どうして自分だけどうしてこんなに運が悪いんだと四六時中考えてる
こんないい加減な紹介の仕方しかしない不動産になんで金払ってるんだ なんでいい加減なやつらを通さないといけないんだ
やってること詐欺と一緒じゃねえか
こいつら○した上で捕まって警察の自供で同じようなことを話してそれがニュースにでも流れるなら世の不動産は少しでも変わるのだろうか
RCマンションを4つ経験してまったく無音だったのは1物件のみ。
隣が男か女かも重要。
女だったらまだ許せるが男のくしゃみとかゲーム音とかだと殺意が湧く。
何度か引っ越してるんだけど、今回の家が上と隣の物音?に悩まされてる。
今は何かわからないが重低音ずーんって鳴ってる。
カーテンの開け締めの音もする。
これでRCのマンションなんだそうな。もう精神的に無理になって、管理会社に連絡したが対応は無し。
いろいろ調べたところ、戸境壁の厚みが無いとRCだろうが関係ないとのことだった。
ここで思ったんだが、物件情報に壁の厚みの記載ないから、普通に選ぶと音が漏れる物件がほとんどじゃないのかって思った。
じゃあ、みんなどうしてるんだ?気にならないものなのだろうか?
ちなみに、耳栓、イヤーマフ、ノイズキャンセリングイヤホン、音楽を流す辺りは試したのですが、効果は足りずと感じました。
285あとで/2602users 【転職エントリ】Googleに入社します|Lillian|note
265あとで/1967users 趣味で作ったソフトウェアが海外企業に買われるまでの話 - knqyf263's blog
232あとで/1101users 2019夏、先輩が若手に贈る「お世話になった技術書60選」- 入門からガチまで – | DevelopersIO
231あとで/1177users 無料で読めるITまんが 2019年版 - Publickey
225あとで/2284users 【3868】コンサータによって自己の連続性を失いつつある | Dr林のこころと脳の相談室
220あとで/1144users 【無料公開終了】廃村で見つかった4人の少年の死体から始まる民俗ホラーとミステリーの短編マンガにめっちゃ惹き込まれる人たち - Togetter
202あとで/1000users 実はアイデアの宝庫? 刺激的なWikipediaの記事150選|INSPI(インスピ)|広告デザインとアイデアの教科書|note
195あとで/1803users 平均年齢30歳のIT企業に入社した還暦の大工。「1カ月お試し」のつもりが一瞬でなじんだ理由 | BUSINESS INSIDER JAPAN
169あとで/829users 独学でWebサービスを作り起業した僕が選ぶ、オリジナルのサービスを作る時に便利なツール19個|かずたか@プログラミング独学して起業した人|note
166あとで/1717users 「容姿が悪く、交際経験が一度もない」47歳女性に鴻上尚史が本音で応える (1/4) 〈dot.〉|AERA dot. (アエラドット)
163あとで/986users 「GitとGitHub用語」の可愛いイラストを使用した解説に対して圧倒的わかりやすさを感じる人たち - Togetter
161あとで/1180users 高齢の両親のために、僕が「実家のIT化」を目指してやったこと|tayorini by LIFULL介護
160あとで/1191users 徹夜明けに、知らない人とウイグルを旅した日々のこと|砂漠|note
156あとで/853users SFマニアからビギナーまであらゆる層を満足させる、オールタイム・ベスト級の傑作SF短篇集──『なめらかな世界と、その敵』 - 基本読書
150あとで/1032users カメラ苦手な人向け 「カメラで大事故を起こさないポイント」が凄まじく参考になると大好評 - ねとらぼ
140あとで/874users 様々なTODOアプリやタスク管理方法を試行した結果最終的にプレーンテキストに行き着いた話 - みんからきりまで
134あとで/500users IPA「情報セキュリティ白書2019」PDF版の無料公開開始! AIやIoTなどをテーマに解説 - INTERNET Watch
131あとで/567users 深層学習の数理
131あとで/1130users 圧倒的キャリアを誇る勝間和代が「社会人にもなって、努力や成長なんて必要ない」と語るワケ|新R25 - 20代ビジネスパーソンのバイブル
130あとで/983users TR-808の開発者、元Roland社長の菊本忠男さんが40年の時を経て、新バージョンRC-808を発表。度肝を抜くサウンドと拡張性を持ち無料でリリース | | 藤本健の "DTMステーション"
126あとで/588users 秒間100万リクエストをさばく - Googleの共通認可基盤 Zanzibar - 発明のための再発明
125あとで/991users 15年間務めた会社に退社を切り出したら史上稀にみるクソ展開になった(後編) - 放浪軍師のアプリ開発局
125あとで/1168users 香港が大変すぎて、見ていて悲しい|山本一郎(やまもといちろう)|note
123あとで/1171users 今さら聞けない「慰安婦」問題の基本を研究者に聞く――なぜ何度も「謝罪」しているのに火種となるのか(2019/08/07 19:45)|サイゾーウーマン
123あとで/493users Node.js徹底攻略 ─ ヤフーのノウハウに学ぶ、パフォーマンス劣化やコールバック地獄との戦い方 - エンジニアHub|若手Webエンジニアのキャリアを考える!
122あとで/517users 新 GitHub Actions 入門 - 生産性向上ブログ
122あとで/907users 介護職歴25年、メイプル超合金安藤なつが語る、介護現場のつらさと楽しさ|tayorini by LIFULL介護
121あとで/531users VSCodeでコードを書く時に役立つ設定・テーマ・機能拡張、知っておくと便利なテクニック | コリス
119あとで/1266users 教育ボランティアで出会った小4の子の話|よんてんごP|note
119あとで/714users 「ビジホの朝食バイキング」を極めた達人が教える、出張&旅行で一度は泊まってみたい全国のビジネスホテル - メシ通 | ホットペッパーグルメ
具体的には3〜5階建ての団地だ。ただし川沿いとかの軟弱地盤はやめとけよ。
1981年以前に建てられたマンションは旧耐震扱いでかなり安い。
マンションの工法にはラーメン構造と壁式構造というのがあって、壁式構造の耐震基準は旧耐震と新耐震でほとんど変わっていない。
この壁式構造っていうのは5階建てまでしか作れない。公団や公社分譲の団地で多く採用されている。
マンションの間取りを見たときに、柱や壁の出っ歯理がなくて平面な壁で構成されているのが壁式構造だ。
リノベーションするときに壁式だと間取りを大きく変えられないから、「中古マンションを買うならラーメン構造がおすすめ!」なんて言われているが、耐震を気にするならまったく逆だ。
揺れにくい地盤の団地は往々にして丘の上や斜面に立っていたりするが、坂も我慢しろ。
団地を買うのだ。
RC造なら防音は大丈夫だろうと思って築浅1Kに引っ越ししたら、これが大外れ。
確かに部屋の主要部分は床が厚くて頼りがいのある質感だけれども、壁が木造かそれ以下の防音性で殺意しか感じない。
マジで、朝は隣人の目覚ましで起きるわけ。ピピピピッって。私の出勤時間まであと2時間あるんですけど。
それで、基本的にキッチンへの扉や外への扉を閉める音が、ガチャドン!ってめっちゃ響く。
で、キッチン部分の床板が薄くて何か床下に反響しているっぽくて、RCなのに隣室の足音がドカドカ聞こえる。
そんでさ、土曜の朝はギュイーンて掃除機の音で起こされるわけ。実家かよ。こっちも掃除機使えないじゃないか。
なんか大家族で同居してるかシェアハウス並みの気配を感じる。上京依頼ずっと独り暮らしで通してきたので、心落ち着かない。
夜は隣人はめちゃ笑ってる声が聞こえてくる。なにがそんなにおもろいねん?
ボイスチャットか何かをしてるっぽいけど会話の内容までは聞こえない。
昨晩はずいぶんと咳をしていたけど、体調大丈夫?
時々隣人が壁にぶつかるドンっという音で、目が覚めたりする。いったいどうゆう生活したら壁にゴンゴンぶつける生活になるわけ?
早朝に大騒ぎしていたこともあったぞ。その日が有給じゃなかったら通報してたぞ。
こっちの音がどこまで隣人に聞こえてるのかちょっと不安なんだよね。こうやって夜中にキーボード打つのが迷惑だったりするんだろうか。普段ぶつぶつ独りごと行ったり鼻歌歌ってるのも聞こえてるんだろうか。一番困るのはオナってるのも気配で聞かれてたりするんだろうか。はあ耐えられないぞ。
一軒目
二軒目
三軒目
ネットで調べるとrc鉄筋なら音は聞こえないとドヤ顔で書き込んである
なら分かった多少値は貼るがしょうがないとrc鉄筋に引っ越した
音の大きさでは耳栓を突っ込めば聞こえなくなった二軒目とは違い三軒目は普通に聞こえる
正直まともに寝ることもできない
20代もなかばの独身男性であるが情けない話だがこの年でわんわんと泣いてしまった
日増しに目のクマも増えている
犯罪を犯す人はどんな気持ちなんだろうと思ってたけど最近なんとなく分かってきた気がする
生活の基盤である住居がストレスになるとこんなに"クる"ものだと思ってなかった
https://10mtv.jp/pc/column/article.php?column_article_id=2160
1つ目は機会費用法という、家事をしていて仕事に出ていなかった時間を、もし賃金の出る仕事に充てていた場合の報酬金額を算定する方法です。最低賃金に照らし合わせてみると、平成30年10月時点の最低賃金は全国平均で時給874円なので、1日6時間、365日で計算すると月15万7320円、年収は191万4060円となります。
2つ目はRC-S法という、その仕事を職業にしている人の賃金に換算するものです。今回は家事代行サービスで働く人は平均時給が1185円とされています。専業主婦が家事に費やしている1日6時間を家事代行業者の時給で計算してみると、月21万3300円、年収は259万5150円となります。
一方、別の調査結果となりますが、キリンビール株式会社が平成28年9月に専門家の監修のもとでおこなった「主婦の年収シミュレーター」の調査結果によると、専業主婦(主夫)が1日に家事に充てる時間は平均5.3時間、その年収はなんと469万8670円という金額になりました。この調査では一般企業の給与体系、家事代行サービスの市場価格、そして実際に家事を行う主婦(主夫)の実感値を踏まえた独自ロジックから算出されたもの。上記の結果と比べると、大きな差があることが分かります。
都合のいいところだけ引っぱり出して引用するのはねつ造と変わらんぞ
家事代行サービスで働く人は平均時給が1185円とされています。専業主婦が家事に費やしている1日6時間を家事代行業者の時給で計算してみると、月21万3300円、年収は259万5150円となります。
1日平均6時間の家事を家事代行サービスに依頼すると、年間で438万円~657万円ものコストがかかることになります(1時間あたり2000~3000円相場から計算)。
// WindowsProject7.cpp: アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" #include "WindowsProject7.h" #define MAX_LOADSTRING 100 // グローバル変数: HINSTANCE hInst; // 現在のインターフェイス WCHAR szTitle[MAX_LOADSTRING]; // タイトル バーのテキスト WCHAR szWindowClass[MAX_LOADSTRING]; // メイン ウィンドウ クラス名 // このコード モジュールに含まれる関数の宣言を転送します: //ATOM MyRegisterClass(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); #include <list> class MyWindow; std::list< MyWindow *> windows; class MyWindow { public: HWND hWnd; MyWindow() :hWnd(NULL) { windows.push_back(this); } virtual ~MyWindow() { std::list< MyWindow *>::iterator it; for (it = windows.begin(); it != windows.end(); it++) { if (*it == this) { windows.erase(it); break; } } } static MyWindow * find(HWND key) { std::list< MyWindow *>::iterator it; for (it = windows.begin(); it != windows.end(); it++) { MyWindow *target = *it; if (target->hWnd == key) { return target; } } return NULL; } // // 関数: MyRegisterClass() // // 目的: ウィンドウ クラスを登録します。 // ATOM MyRegisterClass(HINSTANCE hInstance) { WNDCLASSEXW wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7)); wcex.hCursor = LoadCursor(nullptr, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7); wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); return RegisterClassExW(&amp;wcex); } // // 関数: InitInstance(HINSTANCE, int) // // 目的: インスタンス ハンドルを保存して、メイン ウィンドウを作成します。 // // コメント: // // この関数で、グローバル変数でインスタンス ハンドルを保存し、 // メイン プログラム ウィンドウを作成および表示します。 // int blocks[100][100]; BOOL InitInstance() { hInst = hInstance; // グローバル変数にインスタンス処理を格納します。 ATOM c = MyRegisterClass(hInstance); x = 0; y = 0; boxType = 0; hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr); for(int x = 0 ; x < 100 ; x++) { for (int y = 0; y < 100; y++) { blocks[y][x] = 0; } } if (!hWnd) { return FALSE; } return TRUE; } BOOL ShowWindow() { BOOL ret; ret = ::ShowWindow(hWnd, SW_SHOW); ::UpdateWindow(hWnd); return ret; } HINSTANCE hInstance; MSG msg; BOOL run; int x; int y; BOOL Main() { HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7)); run = true; int rc; // メイン メッセージ ループ: while (run) { DWORD obj = MsgWaitForMultipleObjectsEx(0, NULL, 100 , QS_PAINT| QS_ALLEVENTS,0); if (obj <= WAIT_OBJECT_0) { while (PeekMessage(&amp;msg, NULL, 0, 0, PM_REMOVE)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &amp;msg)) { TranslateMessage(&amp;msg); DispatchMessage(&amp;msg); } if (msg.message == WM_QUIT) { run = FALSE; } if (msg.message == WM_CLOSE) { run = FALSE; } } } else if (obj == WAIT_TIMEOUT) { y++; PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &amp;ps); this->OnPaint(ps); EndPaint(hWnd, &amp;ps); ::UpdateWindow(hWnd); RECT Rect2 = { 0,0,48*9,48 * 100 }; InvalidateRect(hWnd, &amp;Rect2, TRUE); } else if (obj == WAIT_FAILED) { rc = GetLastError(); } else { } } return TRUE; } int boxType; BOOL WriteBoxOLDBox() { int width = 24; HDC hdc = GetDC(hWnd); HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 48)); for (int y = 0; y < 30; y++) { for (int x = 0; x < 8; x++) { if (blocks[y][x] == 0) { continue; } RECT Rect = { 0,0,48,48 }; BOOL ret; Rect.left = width * x + 1; Rect.right = width * (x + 1) - 1; Rect.top = width * y + 1; Rect.bottom = width * (y + 1) - 1; ret = FillRect(hdc, &amp;Rect, hBrush); } } DeleteObject(hBrush); return FALSE; } BOOL WriteBox() { WriteBoxOLDBox(); switch (boxType) { case 0: return WriteBoxI(); case 1: return WriteBoxL(); case 2: return WriteBoxZ(); } return TRUE; } BOOL WriteBoxZ() { HDC hdc = GetDC(hWnd); HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246)); int width = 24; RECT Rect = { 0,0,48,48 }; BOOL ret; Rect.left = width * x + 1; Rect.right = width * (x + 1) - 1; Rect.top = width * y + 1; Rect.bottom = width * (y + 1) - 1; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.left += width; Rect.right += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); DeleteObject(hBrush); return TRUE; } BOOL WriteBoxL() { HDC hdc = GetDC(hWnd); HBRUSH hBrush = CreateSolidBrush(RGB(48, 246 , 48)); int width = 24; RECT Rect = { 0,0,48,48 }; BOOL ret; Rect.left = width * x + 1; Rect.right = width * (x + 1) -1 ; Rect.top = width * y + 1; Rect.bottom = width * (y + 1) -1; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.left += width; Rect.right += width; ret = FillRect(hdc, &amp;Rect, hBrush); DeleteObject(hBrush); return TRUE; } BOOL WriteBoxI() { HDC hdc = GetDC(hWnd); HBRUSH hBrush = CreateSolidBrush(RGB( 246 , 48 , 48)); int width = 24; RECT Rect = { 0,0,48,48 }; BOOL ret; Rect.left = width * x + 1; Rect.right = width * (x + 1) - 1; Rect.top = width * y + 1; Rect.bottom = width * (y + 1) - 1; ret = FillRect(hdc, &amp;Rect, hBrush); //Rect.left += width; //Rect.right += width; Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); DeleteObject(hBrush); return TRUE; } BOOL SaveBoxI() { blocks[y ][x] = 1; blocks[y+1][x] = 1; blocks[y+2][x] = 1; blocks[y+3][x] = 1; return TRUE; } BOOL OnPaint(PAINTSTRUCT &amp;ps) { if (x > 8) { x = 0; } if (x <0) { x = 8; } if (y > 20) { switch (boxType) { case 0: SaveBoxI(); break; case 1: break; case 2: break; } y = 0; boxType++; if (boxType > 2) { boxType = 0; } } this->WriteBox(); return TRUE; } BOOL OnKey(WPARAM wParam) { if (wParam == VK_LEFT) { x++; } if (wParam == VK_RIGHT) { x--; } return TRUE; } }; int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); // TODO: ここにコードを挿入してください。 // グローバル文字列を初期化しています。 LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING); //MyRegisterClass(hInstance); MyWindow win; win.hInstance = hInstance; // アプリケーションの初期化を実行します: if (!win.InitInstance()) { return FALSE; } BOOL ret; win.ShowWindow(); ret = win.Main(); if (ret) { return 0; }else { return (int)win.msg.wParam; } } // // 関数: WndProc(HWND, UINT, WPARAM, LPARAM) // // 目的: メイン ウィンドウのメッセージを処理します。 // // WM_COMMAND - アプリケーション メニューの処理 // WM_PAINT - メイン ウィンドウの描画 // WM_DESTROY - 中止メッセージを表示して戻る // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_COMMAND: { int wmId = LOWORD(wParam); // 選択されたメニューの解析: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } } break; case WM_KEYDOWN: { MyWindow *target = MyWindow::find(hWnd); target->OnKey(wParam); } break; case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &amp;ps); MyWindow *target = MyWindow::find(hWnd); target->OnPaint(ps); // TODO: HDC を使用する描画コードをここに追加してください... EndPaint(hWnd, &amp;ps); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } // バージョン情報ボックスのメッセージ ハンドラーです。 INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { UNREFERENCED_PARAMETER(lParam); switch (message) { case WM_INITDIALOG: return (INT_PTR)TRUE; case WM_COMMAND: if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { EndDialog(hDlg, LOWORD(wParam)); return (INT_PTR)TRUE; } break; } return (INT_PTR)FALSE; }
テトリス風
落ちてくるブロックの描き方
まずはブロックの種類は3種類
の違いをよく見比べて
自力で違いがわかれば
プログラマーにはなれるとおもう
とはいえ、コレを自力でわかるならもっと儲かる仕事あるとはおもうけどな
BOOL WriteBox() { switch (boxType) { case 0: return WriteBoxI(); case 1: return WriteBoxL(); case 2: return WriteBoxZ(); } }
// WindowsProject7.cpp: アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" #include "WindowsProject7.h" #define MAX_LOADSTRING 100 // グローバル変数: HINSTANCE hInst; // 現在のインターフェイス WCHAR szTitle[MAX_LOADSTRING]; // タイトル バーのテキスト WCHAR szWindowClass[MAX_LOADSTRING]; // メイン ウィンドウ クラス名 // このコード モジュールに含まれる関数の宣言を転送します: //ATOM MyRegisterClass(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); #include <list> class MyWindow; std::list< MyWindow *> windows; class MyWindow { public: HWND hWnd; MyWindow() :hWnd(NULL) { windows.push_back(this); } virtual ~MyWindow() { std::list< MyWindow *>::iterator it; for (it = windows.begin(); it != windows.end(); it++) { if (*it == this) { windows.erase(it); break; } } } static MyWindow * find(HWND key) { std::list< MyWindow *>::iterator it; for (it = windows.begin(); it != windows.end(); it++) { MyWindow *target = *it; if (target->hWnd == key) { return target; } } return NULL; } // // 関数: MyRegisterClass() // // 目的: ウィンドウ クラスを登録します。 // ATOM MyRegisterClass(HINSTANCE hInstance) { WNDCLASSEXW wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7)); wcex.hCursor = LoadCursor(nullptr, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7); wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); return RegisterClassExW(&amp;wcex); } // // 関数: InitInstance(HINSTANCE, int) // // 目的: インスタンス ハンドルを保存して、メイン ウィンドウを作成します。 // // コメント: // // この関数で、グローバル変数でインスタンス ハンドルを保存し、 // メイン プログラム ウィンドウを作成および表示します。 // BOOL InitInstance() { hInst = hInstance; // グローバル変数にインスタンス処理を格納します。 ATOM c = MyRegisterClass(hInstance); x = 0; y = 0; boxType = 0; hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr); if (!hWnd) { return FALSE; } return TRUE; } BOOL ShowWindow() { BOOL ret; ret = ::ShowWindow(hWnd, SW_SHOW); ::UpdateWindow(hWnd); return ret; } HINSTANCE hInstance; MSG msg; BOOL run; int x; int y; BOOL Main() { HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7)); run = true; int rc; // メイン メッセージ ループ: while (run) { DWORD obj = MsgWaitForMultipleObjectsEx(0, NULL, 100 , QS_PAINT| QS_ALLEVENTS,0); if (obj <= WAIT_OBJECT_0) { while (PeekMessage(&amp;msg, NULL, 0, 0, PM_REMOVE)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &amp;msg)) { TranslateMessage(&amp;msg); DispatchMessage(&amp;msg); } if (msg.message == WM_QUIT) { run = FALSE; } if (msg.message == WM_CLOSE) { run = FALSE; } } } else if (obj == WAIT_TIMEOUT) { y++; PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &amp;ps); this->OnPaint(ps); EndPaint(hWnd, &amp;ps); ::UpdateWindow(hWnd); RECT Rect2 = { 0,0,48*9,48 * 8 }; InvalidateRect(hWnd, &amp;Rect2, TRUE); } else if (obj == WAIT_FAILED) { rc = GetLastError(); } else { } } return TRUE; } int boxType; BOOL WriteBox() { switch (boxType) { case 0: return WriteBoxI(); case 1: return WriteBoxL(); case 2: return WriteBoxZ(); } } BOOL WriteBoxZ() { HDC hdc = GetDC(hWnd); HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246)); int width = 24; RECT Rect = { 0,0,48,48 }; BOOL ret; Rect.left = width * x + 1; Rect.right = width * (x + 1) - 1; Rect.top = width * y + 1; Rect.bottom = width * (y + 1) - 1; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.left += width; Rect.right += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); DeleteObject(hBrush); return TRUE; } BOOL WriteBoxL() { HDC hdc = GetDC(hWnd); HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246)); int width = 24; RECT Rect = { 0,0,48,48 }; BOOL ret; Rect.left = width * x + 1; Rect.right = width * (x + 1) -1 ; Rect.top = width * y + 1; Rect.bottom = width * (y + 1) -1; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.left += width; Rect.right += width; ret = FillRect(hdc, &amp;Rect, hBrush); DeleteObject(hBrush); return TRUE; } BOOL WriteBoxI() { HDC hdc = GetDC(hWnd); HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246)); int width = 24; RECT Rect = { 0,0,48,48 }; BOOL ret; Rect.left = width * x + 1; Rect.right = width * (x + 1) - 1; Rect.top = width * y + 1; Rect.bottom = width * (y + 1) - 1; ret = FillRect(hdc, &amp;Rect, hBrush); //Rect.left += width; //Rect.right += width; Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); DeleteObject(hBrush); return TRUE; } BOOL OnPaint(PAINTSTRUCT &amp;ps) { if (x > 8) { x = 0; } if (x <0) { x = 8; } if (y > 8) { y = 0; boxType++; if (boxType > 2) { boxType = 0; } } this->WriteBox(); return TRUE; } BOOL OnKey() { x++; return TRUE; } }; int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); // TODO: ここにコードを挿入してください。 // グローバル文字列を初期化しています。 LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING); //MyRegisterClass(hInstance); MyWindow win; win.hInstance = hInstance; // アプリケーションの初期化を実行します: if (!win.InitInstance()) { return FALSE; } BOOL ret; win.ShowWindow(); ret = win.Main(); if (ret) { return 0; }else { return (int)win.msg.wParam; } } // // 関数: WndProc(HWND, UINT, WPARAM, LPARAM) // // 目的: メイン ウィンドウのメッセージを処理します。 // // WM_COMMAND - アプリケーション メニューの処理 // WM_PAINT - メイン ウィンドウの描画 // WM_DESTROY - 中止メッセージを表示して戻る // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_COMMAND: { int wmId = LOWORD(wParam); // 選択されたメニューの解析: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } } break; case WM_KEYDOWN: { MyWindow *target = MyWindow::find(hWnd); target->OnKey(); } break; case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &amp;ps); MyWindow *target = MyWindow::find(hWnd); target->OnPaint(ps); // TODO: HDC を使用する描画コードをここに追加してください... EndPaint(hWnd, &amp;ps); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } // バージョン情報ボックスのメッセージ ハンドラーです。 INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { UNREFERENCED_PARAMETER(lParam); switch (message) { case WM_INITDIALOG: return (INT_PTR)TRUE; case WM_COMMAND: if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { EndDialog(hDlg, LOWORD(wParam)); return (INT_PTR)TRUE; } break; } return (INT_PTR)FALSE; }
第何回だろうな
まだ、何を押してもブロックが右に移動するだけ(右端にいくと左にワープ)
// WindowsProject7.cpp: アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" #include "WindowsProject7.h" #define MAX_LOADSTRING 100 // グローバル変数: HINSTANCE hInst; // 現在のインターフェイス WCHAR szTitle[MAX_LOADSTRING]; // タイトル バーのテキスト WCHAR szWindowClass[MAX_LOADSTRING]; // メイン ウィンドウ クラス名 // このコード モジュールに含まれる関数の宣言を転送します: //ATOM MyRegisterClass(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); #include <list> class MyWindow; std::list< MyWindow *> windows; class MyWindow { public: HWND hWnd; MyWindow() :hWnd(NULL) { windows.push_back(this); } virtual ~MyWindow() { std::list< MyWindow *>::iterator it; for (it = windows.begin(); it != windows.end(); it++) { if (*it == this) { windows.erase(it); break; } } } static MyWindow * find(HWND key) { std::list< MyWindow *>::iterator it; for (it = windows.begin(); it != windows.end(); it++) { MyWindow *target = *it; if (target->hWnd == key) { return target; } } return NULL; } // // 関数: MyRegisterClass() // // 目的: ウィンドウ クラスを登録します。 // ATOM MyRegisterClass(HINSTANCE hInstance) { WNDCLASSEXW wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7)); wcex.hCursor = LoadCursor(nullptr, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7); wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); return RegisterClassExW(&amp;wcex); } // // 関数: InitInstance(HINSTANCE, int) // // 目的: インスタンス ハンドルを保存して、メイン ウィンドウを作成します。 // // コメント: // // この関数で、グローバル変数でインスタンス ハンドルを保存し、 // メイン プログラム ウィンドウを作成および表示します。 // BOOL InitInstance() { hInst = hInstance; // グローバル変数にインスタンス処理を格納します。 ATOM c = MyRegisterClass(hInstance); x = 0; y = 0; hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr); if (!hWnd) { return FALSE; } return TRUE; } BOOL ShowWindow() { BOOL ret; ret = ::ShowWindow(hWnd, SW_SHOW); ::UpdateWindow(hWnd); return ret; } HINSTANCE hInstance; MSG msg; BOOL run; int x; int y; BOOL Main() { HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7)); run = true; int rc; // メイン メッセージ ループ: while (run) { DWORD obj = MsgWaitForMultipleObjectsEx(0, NULL, 100 , QS_PAINT| QS_ALLEVENTS,0); if (obj <= WAIT_OBJECT_0) { while (PeekMessage(&amp;msg, NULL, 0, 0, PM_REMOVE)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &amp;msg)) { TranslateMessage(&amp;msg); DispatchMessage(&amp;msg); } if (msg.message == WM_QUIT) { run = FALSE; } if (msg.message == WM_CLOSE) { run = FALSE; } } } else if (obj == WAIT_TIMEOUT) { y++; PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &amp;ps); this->OnPaint(ps); EndPaint(hWnd, &amp;ps); ::UpdateWindow(hWnd); RECT Rect2 = { 0,0,48*9,48 * 8 }; InvalidateRect(hWnd, &amp;Rect2, TRUE); } else if (obj == WAIT_FAILED) { rc = GetLastError(); } else { } } return TRUE; } BOOL OnPaint(PAINTSTRUCT &amp;ps) { HDC hdc = GetDC(hWnd); HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246)); RECT Rect = { 0,0,48,48 }; Rect.left = 48 * x; Rect.right = 48 * (x+1); Rect.top = 48 * y; Rect.bottom = 48 * (y+1); if (x > 8) { x = 0; } if (x <0) { x = 8; } if (y > 8) { y = 0; } BOOL ret = FillRect(ps.hdc, &amp;Rect, hBrush); DeleteObject(hBrush); return TRUE; } BOOL OnKey() { x++; return TRUE; } }; int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); // TODO: ここにコードを挿入してください。 // グローバル文字列を初期化しています。 LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING); //MyRegisterClass(hInstance); MyWindow win; win.hInstance = hInstance; // アプリケーションの初期化を実行します: if (!win.InitInstance()) { return FALSE; } BOOL ret; win.ShowWindow(); ret = win.Main(); if (ret) { return 0; }else { return (int)win.msg.wParam; } } // // 関数: WndProc(HWND, UINT, WPARAM, LPARAM) // // 目的: メイン ウィンドウのメッセージを処理します。 // // WM_COMMAND - アプリケーション メニューの処理 // WM_PAINT - メイン ウィンドウの描画 // WM_DESTROY - 中止メッセージを表示して戻る // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_COMMAND: { int wmId = LOWORD(wParam); // 選択されたメニューの解析: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } } break; case WM_KEYDOWN: { MyWindow *target = MyWindow::find(hWnd); target->OnKey(); } break; case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &amp;ps); MyWindow *target = MyWindow::find(hWnd); target->OnPaint(ps); // TODO: HDC を使用する描画コードをここに追加してください... EndPaint(hWnd, &amp;ps); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } // バージョン情報ボックスのメッセージ ハンドラーです。 INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { UNREFERENCED_PARAMETER(lParam); switch (message) { case WM_INITDIALOG: return (INT_PTR)TRUE; case WM_COMMAND: if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { EndDialog(hDlg, LOWORD(wParam)); return (INT_PTR)TRUE; } break; } return (INT_PTR)FALSE; }
こんな感じ
MsgWaitForMultipleObjectsExを追加
GetMessageだとタイマーを処理できないのでPeekMessageに変更
msg.message == WM_QUIT
この部分 QUITメッセージが来たら終了する
obj == WAIT_TIMEOUT
タイマーを追加
y++で高さを変更してから
作画を呼ぶ
こんだけ
<が&LT;
>が&GT;
&が&
HINSTANCE hInstance; MSG msg; BOOL run; int y; BOOL Main() { HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7)); run = true; int rc; // メイン メッセージ ループ: while (run) { DWORD obj = MsgWaitForMultipleObjectsEx(0, NULL, 100 , QS_PAINT| QS_ALLEVENTS,0); if (obj <= WAIT_OBJECT_0) { while (PeekMessage(&amp;msg, NULL, 0, 0, PM_REMOVE)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &amp;msg)) { TranslateMessage(&amp;msg); DispatchMessage(&amp;msg); } if (msg.message == WM_QUIT) { run = FALSE; } if (msg.message == WM_CLOSE) { run = FALSE; } } } else if (obj == WAIT_TIMEOUT) { y++; PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &amp;ps); this->OnPaint(ps); EndPaint(hWnd, &amp;ps); ::UpdateWindow(hWnd); RECT Rect2 = { 0,0,48,48 * 8 }; InvalidateRect(hWnd, &amp;Rect2, TRUE); } else if (obj == WAIT_FAILED) { rc = GetLastError(); } else { } }
// WindowsProject7.cpp: アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" #include "WindowsProject7.h" #define MAX_LOADSTRING 100 // グローバル変数: HINSTANCE hInst; // 現在のインターフェイス WCHAR szTitle[MAX_LOADSTRING]; // タイトル バーのテキスト WCHAR szWindowClass[MAX_LOADSTRING]; // メイン ウィンドウ クラス名 // このコード モジュールに含まれる関数の宣言を転送します: //ATOM MyRegisterClass(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); #include <list> class MyWindow; std::list< MyWindow *> windows; class MyWindow { public: HWND hWnd; MyWindow() :hWnd(NULL) { windows.push_back(this); } virtual ~MyWindow() { std::list< MyWindow *>::iterator it; for (it = windows.begin(); it != windows.end(); it++) { if (*it == this) { windows.erase(it); break; } } } static MyWindow * find(HWND key) { std::list< MyWindow *>::iterator it; for (it = windows.begin(); it != windows.end(); it++) { MyWindow *target = *it; if (target->hWnd == key) { return target; } } return NULL; } // // 関数: MyRegisterClass() // // 目的: ウィンドウ クラスを登録します。 // ATOM MyRegisterClass(HINSTANCE hInstance) { WNDCLASSEXW wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7)); wcex.hCursor = LoadCursor(nullptr, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7); wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); return RegisterClassExW(&amp;wcex); } // // 関数: InitInstance(HINSTANCE, int) // // 目的: インスタンス ハンドルを保存して、メイン ウィンドウを作成します。 // // コメント: // // この関数で、グローバル変数でインスタンス ハンドルを保存し、 // メイン プログラム ウィンドウを作成および表示します。 // BOOL InitInstance() { hInst = hInstance; // グローバル変数にインスタンス処理を格納します。 ATOM c = MyRegisterClass(hInstance); y = 0; hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr); if (!hWnd) { return FALSE; } return TRUE; } BOOL ShowWindow() { BOOL ret; ret = ::ShowWindow(hWnd, SW_SHOW); ::UpdateWindow(hWnd); return ret; } HINSTANCE hInstance; MSG msg; BOOL run; int y; BOOL Main() { HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7)); run = true; int rc; // メイン メッセージ ループ: while (run) { DWORD obj = MsgWaitForMultipleObjectsEx(0, NULL, 100 , QS_PAINT| QS_ALLEVENTS,0); if (obj <= WAIT_OBJECT_0) { while (PeekMessage(&amp;msg, NULL, 0, 0, PM_REMOVE)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &amp;msg)) { TranslateMessage(&amp;msg); DispatchMessage(&amp;msg); } if (msg.message == WM_QUIT) { run = FALSE; } if (msg.message == WM_CLOSE) { run = FALSE; } } } else if (obj == WAIT_TIMEOUT) { y++; PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &amp;ps); this->OnPaint(ps); EndPaint(hWnd, &amp;ps); ::UpdateWindow(hWnd); RECT Rect2 = { 0,0,48,48 * 8 }; InvalidateRect(hWnd, &amp;Rect2, TRUE); } else if (obj == WAIT_FAILED) { rc = GetLastError(); } else { } } return TRUE; } BOOL OnPaint(PAINTSTRUCT &amp;ps) { HDC hdc = GetDC(hWnd); HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246)); RECT Rect = { 0,0,48,48 }; Rect.top = 48 * y; Rect.bottom = 48 * (y+1); if (y > 8) { y = 0; } BOOL ret = FillRect(ps.hdc, &amp;Rect, hBrush); DeleteObject(hBrush); return TRUE; } }; int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); // TODO: ここにコードを挿入してください。 // グローバル文字列を初期化しています。 LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING); //MyRegisterClass(hInstance); MyWindow win; win.hInstance = hInstance; // アプリケーションの初期化を実行します: if (!win.InitInstance()) { return FALSE; } BOOL ret; win.ShowWindow(); ret = win.Main(); if (ret) { return 0; }else { return (int)win.msg.wParam; } } // // 関数: WndProc(HWND, UINT, WPARAM, LPARAM) // // 目的: メイン ウィンドウのメッセージを処理します。 // // WM_COMMAND - アプリケーション メニューの処理 // WM_PAINT - メイン ウィンドウの描画 // WM_DESTROY - 中止メッセージを表示して戻る // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_COMMAND: { int wmId = LOWORD(wParam); // 選択されたメニューの解析: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } } break; case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &amp;ps); MyWindow *target = MyWindow::find(hWnd); target->OnPaint(ps); // TODO: HDC を使用する描画コードをここに追加してください... EndPaint(hWnd, &amp;ps); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } // バージョン情報ボックスのメッセージ ハンドラーです。 INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { UNREFERENCED_PARAMETER(lParam); switch (message) { case WM_INITDIALOG: return (INT_PTR)TRUE; case WM_COMMAND: if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { EndDialog(hDlg, LOWORD(wParam)); return (INT_PTR)TRUE; } break; } return (INT_PTR)FALSE; }
コンクリートだと広島大の田澤先生が自己収縮を発見し、東大の前川先生がRCの構成則をバリバリ作ってた時。
IPSとかもそうだけど、何かを発見する余地がある時は日本人は強いと思う。(発見したもの勝ちなので政治(大学内間、省庁とかのね)とかに作用されにくいからかな?)
今のコンクリートは分かりすぎてしまって(まだ分からんとこはたくさんあるけど)、みんな迷ってるんだよね。
中国みたいに新しい材料を使いまくればまだ何かあるかもしれないけど、日本で新しい材料は絶望的に使われない(主に建築基準法のせい)。
技術書とは離れるかもしれないけれど、そういう状況だと、人口多い方が有利なのかなと思う。まぁ人口だけじゃないかもしれんが。