「RUN」を含む日記 RSS

はてなキーワード: RUNとは

2019-09-24

今日Container Runtime Meetupという勉強会に参加させていただいたのだが、KubernetesにContainerに詳しい第一人者による神々の集いに目がくらみそうになった。

ここにいる人たちを除いたら、日本でどなたがContainerに詳しいといえるのかわからない感じの人たちが一堂に揃っている。技術書典で池袋ジュンク堂GitHubのissueで名前を見たことがある人たちがいる。

Organizerにいらしゃったので来るかもしれないと期待していたgVisorの中の人たちがいないのが寂しいくらい。

そんな人たちによる登壇者の話がrunc runから始まったのはまだいい。予告があったり、自分は途中でinit処理にわけわからなくなった下地があったので。少なくともその後について腑に落ちたのだ。

だが、そこからいきなりnsexec.cに行ったのは突き放された感じがしてひたすらうなづくしかなかった。

Kushwahaさん。goのimportで定義されることにより本文が呼ばれる前にプリ実行されるCライブラリ名前空間を作成している、そのライブラリの処理の解説が行われた。

https://github.com/opencontainers/runc/blob/master/libcontainer/nsenter/nsexec.c

もうここで、unshare?unshare what?という気持ちになって、あー空のnamespaceを作成できるコマンドかと腑に落ちる暇もなくSudaさん。

ライブラリ実装と呼び出し方法について実際に処理を書いた人が、直直にケースごとのnamespace()の使い方の解説をするのだ。

こんなの後にも先にも一生聞けないだろう。聞き逃すまいと望んだが、MountNSの話は正直セキュリティ懸念があるのね、だから実装=サポート積極的にされてないということしかからなかった。

ファイルディレクトリ一つ一つのアクセス権限付与プロセスIDごと振り返る必要があって、それを高速にできるfsがsysfsという認識であってるのだろうか...自分でも何を言っているのかメモを見返しても呪文しか読めない。

その後もsd_notifyをruncから呼んでいることに端を発したコンテナ起動待ち処理をどう実装するかという議論やら、某ベンダーさんによるruncをガチ運用している環境下でftraceを使ったデバッグの実演やらもうこの夜ここでしか聞けないような話ばかりで。

祭りが終わった後、ほとんどの人が帰らずに、会場となった台所みたいな食卓を囲んでフリートークを交わしていた。

Cloud Controller Managerを自社内向けに実装する話の相談をしていたり、先ほどの登壇者が同じPCの画面を前に肩を並べてruncのソースコードリーディングを始めたり好き勝手にしてる。

それは正直自分みたいに浅い知識を持った人には、RHTechExchangeで聞いた英語雑談よりも遥かに遠い世界だった。

同じ日本語なのに正直何言っているのか本気でわからなくて。地味に悔しかった。

2019-09-19

"REVOLUTION WILL NOT BE TELEVISED" by Gil Scott-Heron, 1970


You will not be able to stay home, brother

You will not be able to plug in, turn on and cop out

You will not be able to lose yourself on skag and skip out for beer during commercials

Because the revolution will not be televised.

The revolution will not be televised.

The revolution will not be brought to you by Xerox in 4 parts without commercial interruptions

The revolution will not show you pictures of Nixon blowing a bugle and leading a charge by John Mitchell, General Abrams and Mendel Rivers to eat hog maws confiscated from a Harlem sanctuary

The revolution will not be televised.

The revolution will not be brought to you by the Schaefer Award Theatre and will not star Natalie Woods and Steve McQueen or Bullwinkle and Julia

The revolution will not give your mouth sex appeal

The revolution will not get rid of the nubs

The revolution will not make you look five pounds thinner

Because the revolution will not be televised, brother.

There will be no pictures of you and Willie Mae pushing that shopping cart down the block on the dead run

Or trying to slide that color TV into a stolen ambulance

NBC will not be able predict the winner at 8:32 on reports from 29 districts

The revolution will not be televised.

There will be no pictures of pigs shooting down brothers in the instant replay

There will be no pictures of Whitney Young being run out of Harlem on a rail with brand new process

There will be no slow motion or still life of Roy Wilkens strolling through Watts in a Red, Black and Green liberation jumpsuit that he had been saving for just the proper occasion.

The revolution will not be televised.

Green Acres, The Beverly Hillbillies and Hooterville Junction will no longer be so goddamned relevant

And women will not care if Dick finally screwed Jane on Search for Tomorrow

Because Black people will be in the street looking for a brighter day

The revolution will not be televised.

There will be no highlights on the eleven o'clock news

And no pictures of hairy armed women liberationists and Jackie Onassis blowing her nose

The theme song will not be written by Jim Webb or Francis Scott Keys, nor sung by Glen Campbell, Tom Jones, Johnny Cash or Englebert Humperdink

The revolution will not be televised.

The revolution will not be right back after a message about a white tornado, white lightning, or white people

You will not have to worry about a dove in your bedroom, a tiger in your tank, or the giant in your toilet bowl

The revolution will not go better with Coke

The revolution will not fight the germs that may cause bad breath

The revolution will put you in the driver's seat.

The revolution will not be televised

Will not be televised

Will not be televised

Will not be televised

The revolution will be no re-run, brothers

The revolution will be live.

2019-07-26

IDENTIFICATION DIVISION.

ENVIRONMENT DIVISION.

DATA DIVISION.

PROCEDURE DIVISION.

DISPLAY "HELLO WORLD" UPON COSOLE.

STOP RUN.

何も見なくてもこれぐらいかけるだろ

2019-07-23

”はやく人間になりたい”と思ってた

窮鼠、ねこをはんでごめんな!噛むよな!これまで、ずーーーっとはんでた。

さておき、先週末、tofubeatsライブの前売りを買った。

ライブに行くのなんて、本当に久しぶりで、ちょいビビってる。

まぁ、これで取り敢えず、秋までは大丈夫

あれを書いた時点で、俺はまだ境界線上にいると思ってたけど、

よくよく考えたら両親は捨て置けないだとか、

色んなアルバムやら、映画がすげぇ楽しみだとか、tofu見にいく約束だとか。

そういう事が続く限りは、もう、だいそれた事なんて、できっこないとわかった。

油断はしないし、悲しいことをしないよう努力し続けるよ。

から俺が無敵の人ってのは、もう正しくなかった。指摘してくれた人ありがとう

改めて、今、身の回りにあるもの豊かさに気づいた。

正しくは、引きこもり歴すげー長くて、発達障害おっさん夜間大学生だわ。

昔は、毎朝シャワー浴びながら、黒歴史こすり倒して

"ファックファックファーーック(@勝手にふるえてろ)"言ってた。

最近、そういうのほんとに少なくなってた。

あと指摘があったけど、引きこもりなのに夜間学生ってどういうこと?ってのは、

まり書きこんでなかったから年表書いた。世の中こういう奴もいる的な。

長くなりすぎたから、暇な人だけね。最初に謝る。

13-23歳 

ひきこもっていた。よく覚えていない。

母と折り合いが悪く、父と住んでいた。

20くらいのとき高認取得

22のとき合宿免許に放り込まれ

すんげーデブいじりされた。同室の元ヤンと買い出しに行ったときに、

一番デカポップコーンを手にしたら、"納得だわー"といじられる。

俺もすげー納得したので後にジムに通った。

11ヶ月ほどで102kgから62kgくらいまで落とした。

おかげで妊娠線はばっちり刻まれた。

元ヤンは大型取りに来てる人で、車をもってきてた。こっそり海に連れて行ってくれたりした。

浜辺に転がっていたウニに車の鍵を突き立てて、中身をすすった。粗野な味がした。密漁だよな。

ちなみに適正検査は全て最低だったし、VRで受けた危険予測講習では、

飛び出したボール子供もみーんな轢いてしまった。すまん。

24-26歳

引きこもりから、使えねーやつになる。バイトはじめる。

ミスりまくる。高校生バイトdisられまくる。

より良くなったる!と決意。

一時期、はてなに氾濫していたlifehack英語記事を全ブクマ自己啓発書を読みあさる。

"道は拓ける"したかったし、"思考現実化する"したかった。全部、真に受けた。元気だけはあった。

5時に起き始める。勉強する。音読する。運動する。

じっとできない、瞑想できない。野菜350g取れない。今も取れてない。

(でも、キムチ鍋と蒸し野菜は時々やるようになった。)

作業熟練するも、同期より能率悪いことに気づく。

職場に居づらくなる。シフトを減らされる。ジョブチェン

何度か上記の流れを繰り返した後に、

家族の紹介で、初めてスーツを着るような仕事をする。

非正規だったが、二年後には正規に、という今思えばクソほど有り難い話だった。

博多駅そばにある誰もが名前を知ってるような企業だった。

仕事内容はちょっぴり特殊事務って感じだったけど、

これまでの職場で一番人が穏やかで、一番仕事が楽だった。

公衆面前で誰かを痛罵する人もいなければ、生ゴミぶっかけるやつもいなかった。

周りのおいちゃん達はすきあらばタバコ休憩とソリティアしてたから、

コツコツやってればうさぎと亀というか、そこそここなせていた。

なんとなく職場女性が気になったりもした。

お互い読書音楽が好きだったこともあり、すこし話すようになった。

本の貸し借りを何度かした。俺は穂村弘とか、向田邦子とかを貸した。

向こうから江國香織エッセイを借りた。

売れっ子かぁ、と舐めてかかって読んで、ビビりまくった。超よかった。

一緒に中洲ジャズにいった。後ろ姿が凛としていて、綺麗だった。

あと一歩で某委員会に送れるエピソードだったのではないか

職場を離れ、数年後に再会するが、詳細は割愛する。

やれたか委員会の各エピソードは、それがその夜の最適解だと思う。

5時起きは続けてた。DUO3.0やall in oneの例文を単語アプリのflashcards deluxeに突っ込んで、

ひたすらシャドウイングしていた。こういう反復作業めっちゃ得意だった。ADHDで良かった。

ああ、中学行ってないから、導入に教科書発音用にフォニックスは挟んだ。

完全英語上達マップとか、ライフハック記事に踊らされまくってた。俺だけじゃないよな?

あと語彙蓄えた後で、速読英単語音読とかも勿論やった。

例文でコアラの生態を知って戦慄した。毒ばっか食うてんのかよ。

交通事故でしにがちなんかよ。なんか、ごめんと思った。

そこらへんから、色々と英語で読み下せるようになり、面白くなった。

アクセスできる情報が一気に増えて、"ネットは広大だわ”ってなった。

ご多分に漏れrarejobもやった。英会話学校も通った。放送大学の単科受講生にもなった。

超冷や汗かいて、ふるえて、人前で英語を話す度胸がついた。

もっと学びたいと思った。本当に楽しかたから。

何も知らずに上辺だけでやり通すのに無理も感じていた。

貯金もある程度できてたので仕事をやめ、バイトしながら夜間大学に行こうと思った。

一番行きたかった神戸市外大の2部には落ちた。地元の2部に通うことにした。

親の力も多分に借りて、一人暮らしを始めた。

27-今

少し背伸びして部屋をしつらえて、初めて友達を家に招いたりした。

ikeaがある事に感謝した。それっぽいけど、リーズナブル

一年の頃、大分辛かった。生徒の大半は学習に意欲的でなく、先生もそのことに疲れていた。

鳥が先か、卵が先かというような話ではある。

放送大学講義面白かったなぁ、とか思ってた。大学の使い方がよくわかってなかった。

二年になると生徒が減り(体感4割減)、大教室だけではなく、

狭い教室での講義も増えた。すこし質問もできるようになり、楽しくなった。

英語で行われる講義や、留学生混合の講義に参加するようにした。

先生に"どこで育ったの?"と聞かれるくらいには話せた。結構、込み入った議論もできた。

ありがとうはてなありがとうライフハックアジアから留学生の賢さにびびった。

何人かの女性デートする機会があった。

そのうちの一人とは縁あって付き合いが長くなり、同棲した。喧嘩もよくした。

母国語でキレたときやばいと学んだ。まぁ、未だにビビッドな記憶なので、詳細は割愛する。

ただ当時、元彼女家族skypeするのを見ながら、家族観もだいぶ影響された。

俺は正月お盆すらも帰るか帰らないかというぐらいだったが、

元彼女はほぼ毎日おかんと"鯖?"、"じゅてーむ、おぶわー"の人だった。

散々、罵倒しあってきて、今も仲良しこよしじゃないけど、

俺は両親のことを愛してる、といえるようにはなった。

彼女と別れる直前ぐらいから、通院を始めたり、

家族間でのトラブルがあったりして、すごく荒んでいた。バイトもきつくなりはじめた。

弁護士相談とかしながら、家ではおっさんなのに泣いてばかりいた。

まりに身内ネタでエグくて、身内同士でやりあうと行くとこまで行っちゃう感じのやつで、

彼女には心配をかけるばかりで、内容を話せなかった。凄く未熟だった。

ちゃんと話をしない事で元彼女大分傷つけたと思う。

彼女スポイルしてしまう気がして、一緒にいるのが本当に申し訳なくて、別れてもらった。

それから一年半くらい貝になった。よく覚えてない。

休学した。バイトやめた。宅建落ちた。奨学金は打ち切られた。

妹に絶縁された。家から出られなくなった。知り合いにあいたくなかった。

寝れなかった。薬の量が増えた。netflixつけた。

"その他の決済手段選択してください"

限度額だった。水が止まった。未払い2、3ヶ月で止まると知った。

親父がきた。前より老けてた。凄く泣いた。

それから家族と、様々な人の助けを得て、復学できた。

久々に参加した講義で、全く英語が話せなかった。超久々にflashcards deluxe開いた。

DUO3.0やら金のフレーズやらやった。すげぇ楽しかった。一ヶ月くらいで話せるように戻った。

それ以外の、少し背伸びして選んだ講義は歯ごたえあるけど、楽しかった。

質問も良くするようになった。わかんない事が多すぎるし、

三十路になった分、面の皮も厚くなった。

たまに喜んでくれる先生もいて、何だかありがたかった。

後輩だった似たような境遇おっさんが、大学事務室で働くようになってた。

涙が出るぐらい嬉しかった。

食堂のおばちゃんが、まだ俺のことを覚えてた。少し痩せてた。

最近元彼女ともジムで再会した。幸せそうにしていて、ほっとした。謝った。

"学校はいってる?"だとか、"仕事大丈夫?"だとかひどく心配された。

あんな別れ方をしたのに、まだ友人でいてくれるのが有難かった。

それで、この間のやつを書いた。ついたブコメは本当に全部読んだ。

読みすぎるくらいに読んだ。なんか泣いたりもしたし、

俺の考えが至らなくて悪かったと思うことも沢山あった。

一つ一つ返事したかったけど、明日からテスト期間でちょっと難しそうだ。

でも、それぞれのブコメに本当に感謝してる。

昔も今も、俺にとってはブコメの方がその他のメディアよりもずっと距離が近くて。

色んな人が大真面目に、時に露悪的に、物事について話してるのに影響されてきた。


はてぶには、どんなポジションの人でも、弱者に対する視線が柔らかい人が多いような気がする。

そういうのに日々、助けられた。外に出始めてから出会った人々の中には、

本当に人を削るようなことを躊躇わない人も多かった。

みんな、人のこと構ってられるほど余裕がないから。

学もスキルもない俺がアクセスやす職場ほど、ポリコレやら、

アファーマティブ・アクションやら、そういう横文字綺麗事から距離があった。

から、建前であれ、誰かに優しくあろうとする人は本当に凄いと思う。

ポリティカル・コレクトネスの是非とかあるけど、

たとえば"次の007は、若い黒人女性"となったときに、

それを(建前でも)歓迎できない世の中は、ちょっと息苦しいから。

うそう。勿論、joy divisionも好きだし、UniqloコラボTもゲトった。

James Blakeも好きだよ。今年はtoro y moiとかも新譜出したし、

chillwaveが流行ってた頃のアーティストリリースが多くて、嬉しかったな。

あと去年だけど、小袋成彬とか本当にやべー日本人でてきて、それも嬉しかった。

Asianとして、88risingの躍進は楽しんでる。Yaejiかわいい


映画も超好きなまま。最近ラースフォントリアーの"ハウスジャックビルト"を観たかな。

相変わらずの胸糞映画で、芸風変わってねえな!と思った。

あとnetflixリラックマを定期的に見返してる。

恐ろしい労力をかけて作られた、最高の精神安定剤やで。

リラックマたちのフラダンスみてたらどうでも良くなんねん。

シュヴァンクマイエルもびっくりや。

時系列に起こしてたら、はてぶの記事に流されまくりだったわ。

おかげで教育うけられたわ。恋愛できたわ、貝になったわ、もう色々だったわ。

そう言えば、引きこもりやめて、初めてできた友達もはてぶのユーザーだったわ。

まだ見てるんだろうか。

"早朝、パン屋の前を通ると世の中が動いてる感じがして少し嬉しい"って会話、未だに覚えてる。

あの頃、通勤経路に大楠のウーパンベーカリーがあったから、

たまに思い出し笑いしてた。元気にしてたら、うれしい。

さて書いてる途中でエモくなりすぎて、長くなった。もう朝だわ。

でも今は"太陽は僕の敵"ってよりも、"Everybody loves the sunshine"な感じだ。

完全に薬切れてる。

"started from the bottom"だけど、もう"life's a bitch"なんて思わないよ。

たまに食らって"I'd rather be the devil"とか考えるけど、悪墜ちはしない。

"shit, damn, mother fucker"とかいいながらも、

基本は"love is everywhere"だと信じてたい。

まぁ、オールドスクールな言い方すると長文スマソってやつ。





以下、引用とか。

"太陽はぼくの敵" by Cornelius 言わずと知れたクソ野郎。曲はいい。

"everybody loves the sunshine" by Roy Ayers 鉄琴叩いてるファンキーな神。

"started from the bottom" by Drake 元子役。本当はあまり"Started from the bottom"でもない。

"Life's a bitch" by Nas クソみたいな日々だが、俺、お酒控えめにして宝くじ買うぜ!って曲。

"宝くじ愚者への課税"という言葉もよぎるが、団地育ちの20そこそこの黒人が夢を買う手段でもあった。

"I`d rather be the devil" by Skip James NTRソング。切ないファルセットを持った牧師

映画Ghost world"でも使われている。良い映画なのでオススメしたい。

"Shit, damn, mother fucker" by D'angelo NTRソング2。D'angelo現代Prince的な存在

とりあえず天才。そして繊細。キャリアの大半は引きこもったり、薬中してたりする。最近復活した。

"love is everywhere" by Pharoah Sanders 御大。恐ろしくながい曲を作りがち。そしてそのどれもが美しい。

Toro y moi

"Still Sound"

https://www.youtube.com/watch?v=0Gqh4e1S6j0

"So Many Details"

https://www.youtube.com/watch?v=O0_ardwzTrA

Jamese Blake

"The Wilhelm Scream"

https://www.youtube.com/watch?v=isIABK-0ohQ

tofubeats

"Run"

https://www.youtube.com/watch?v=c0wsotqcKr0

小袋成彬

"Lonely One"

https://www.youtube.com/watch?v=OFvyPVWYnK4

Yaeji

"Drink I'm Sippin On"

https://www.youtube.com/watch?v=xoxCItHxLiM

2019-06-22

れい新選組立憲民主党 どちらが正しいか (自民党とどちらが正しいか追記しました)

参議院議員選挙が近づき、れい新選組山本太郎議員がした減税のためなら安倍内閣とも組むとの発言が支持者の間で炎上する一方、立憲民主党経済政策を発表するなど、経済ニュースになった1週間でした。山本太郎議員は「2%を目指して物価を上げる」を公約にし、立憲民主党は「上げるべきは物価ではない、賃金だ」を公約にしています。どちらが正しいのでしょうか?

おまんじゅうが10,000個の経済があったします。1コ100円ならGDPは1,000,000円です。

これが翌年90円に値下がりしたとします。数量が同じであればGDPは900,000円です。物価全体が下がることを「デフレ」といいます

名目成長率」はマイナス10%ですが、これは物価10%下落したからで、それを差し引いて考えた「実質成長率」は0%で、名目成長率<実質成長率となりました。

ところでおまんじゅうの値段が下がれば、同じお金おまんじゅうが余分に買えるようになったのだから、とてもよいことのように思います。でも、来年物価が下がるとしたら、企業は人を雇うでしょうか。お金を金庫にしまっておけば同じお金でも来年価値があがって余分に物が買えるようになるのだから、人なんて雇いませんよね。借金して投資するなんてトンデモない。返済の負担が重くなるのですから投資が落ち込み、雇われる人が少なくなります。雇われる人が少なく、お給料の総額が減れば物を買う人が少なくなり、次の年はさらに消費も落ち込みますさらに物の値段が下がるのだからますますお金は使われなくなります。こうして物価の下落と経済の縮小がらせん階段を下っていくように進むありさまを「デフレスパイラル」といいます企業の「内部留保」が増えているのはデフレからです。

民主党政権時代物価はほぼ全期間下がり続け、名目成長率は常に実質成長率を下回っていました。だから民主党政権時代は、現金を持っている人、安定した職がある人は「物が安くなった」と幸せでも、不安定な職しかつけなかった人、これから職に就こうとする人にとっては最悪で-デフレになれば売上も下がります仕入れも下がります。ただ同じように下がらないものがあります。それは「賃金」です。正社員賃金には下方硬直性があるからで、それゆえデフレ化で企業にとって一番負担に感じられるのは賃金です。だからデフレになると新卒採用不安定就労層の雇用が一番打撃を受けるのです。-安月給で長時間労働を強いるブラック企業が全盛でした。

物価が上がればどうでしょうか?お金を持ったままだと来年価値が減ってしまますから、人を雇ってより儲けなければなりません。だから企業はより人を雇うようになります

デフレ放置した民主党政権下で雇用ヘロヘロだったのも、2014年に成長率の名実逆転を解消し(17年ぶり)、2017年需給ギャップを解消した(9年ぶり)安倍政権下で雇用が劇的に改善したのも、経済学的にはまったく理に適っています(なお、先日朝日新聞に"年収200万円未満が75% 非正規リアル政治は"という記事がありましたが、この記事アベノミクスによっても雇用に成果がでていないというのであれば明確に誤りです。また雇用環境改善したのは少子高齢化や団世代の大量退職のせいだという人がいますが、それも誤りです。この記事はその点を説明するためのものではないので、詳しくは論じませんが、失業率の分母は生産年齢人口ではなくて労働力人口で、労働力人口民主党政権化では増えておらず、安倍政権下では増え続けているとだけ指摘しておきます。)。

党首討論で、枝野議員は、「経済数字の最終成績はどこなのかと言ったら、やはり実質経済成長率2010年から12年の実質経済成長率は1.8%。2013年から18年は1.1%。これが客観的経済トータルの総合成績であることは、自信をもって申し上げたい。」と発言し、安倍首相に「実質成長の自慢をなされたが、名実逆転をしている実質成長の伸びは、デフレ自慢にしかならない。」と諭されていましたが、まさにそのとおりです。立憲民主党物価を上げずに賃金をあげて雇用も増やすとしていますが、それは卵を割らずにオムレツを作りますといってるのと同じです。

では、上がった方がいいとして、毎年10%も20%も上がるのがよろしくないのは当然として、なぜ2%なのでしょうか?

理由は3つです。まず、それが経済成長にとって最適というのが現時点のコンセンサスからであり、為替レートの安定のためであり、デフレに陥らないためです。

世界各国の中央銀行インフレ目標は2%です。

FRBは「年2%」が物価の安定と雇用の最大化という2つのマンデートを達成するには最適としています

"The FOMC noted in its statement that the Committee judges that inflation at the rate of 2 percent (as measured by the annual change in the price index for personal consumption expenditures, or PCE) is most consistent over the longer run with the Federal Reserve's statutory mandate."

https://www.federalreserve.gov/faqs/money_12848.htm

ECB欧州中央銀行)は中期的に「2%を超えない、但しそこに近いところ」を目指しています

"The primary objective of the ECB’s monetary policy is to maintain price stability. The ECB aims at inflation rates of below, but close to, 2% over the medium term."

https://www.ecb.europa.eu/mopo/html/index.en.html

イングランド銀行イギリス中央銀行)もすべての人の将来の計画を立てるのに資するとして「2%」をターゲットにしています

"To keep inflation low and stable, the Government sets us an inflation target of 2%. This helps everyone plan for the future."

https://www.bankofengland.co.uk/monetary-policy/inflation

オーストラリア準備銀行オーストラリア中央銀行)も「2~3%」のインフレ率を目指しています

"The Governor and the Treasurer have agreed that the appropriate target for monetary policy in Australia is to achieve an inflation rate of 2–3 per cent, on average, over time. This is a rate of inflation sufficiently low that it does not materially distort economic decisions in the community. "

https://www.rba.gov.au/inflation/inflation-target.html

世界の中銀が2%にしているのはそれが経済成長と物価の安定のためには最適というのがコンセンサスからですが(1つめ)、そのなかで日本けがそれより低い目標を掲げるということは、ちょっと物価が上がると他国に先駆けて引き締めますと事前にアナウンスしているのと同じことになりますから、事あるごとに円高が進んでしまます(2つめ)。

3つめの理由は、いったんデフレに落ち込むとなかなか抜け出せないからです。日本経営者アベノミクスデフレが解消しても内部留保を取り崩すことには慎重なままです。経営者マクロ経済学理解しているわけではないので、この20年間合理的だった経営=金をできるだけ使わない=が行動原理として染みついてしまっています。そして高齢化が進行し、低成長が常態になって、常にデフレ圧力がかかっている環境で、インフレ目標をたとえば1%などに設定して、低い物価上昇率をもって金融緩和を止めてしまうと、すぐにデフレに陥ってしまうのです。その失敗を日本2000年と2006年に経験済みで、最近だと昨年末ECBが同じミスを犯しました。

麻生財務大臣から財界幹部朝日新聞まで、ことあるごとに「2%なんて無理なんだからさっさとその目標放棄せよ」と提言していますが、彼らより山本議員の方が正確に経済理解しています

物価が上がった方がいいというのは、私たち生活で感じる直感とは異なります。私も物の値段は下がった方がうれしいです。但し、直感にしたがった行動が、悪い結果をもたらすことはしばしばあります法学経済学、社会学、それを知ることに学問価値があるのだと思います

追記

dc42jk 現在経済状況から金融緩和財政拡張政策の両方が必要だと思う。その両方を掲げているのはれいしかない。自民金融政策に触れてないし立民は金融引締めを示唆している。

まさに。賃金の上昇はどうしても物価の上昇に遅れますし、デフレ脳に染まった経営者を変えるのは簡単ではないので、デフレ脱却の過程ではどうしても、特に安定した雇用を得ていた層の実質賃金が低下します(新たに職を得た人が増えたので、総雇用所得は増えてはいますが)。それを補うために積極的財政支出が求められるのですが、1年目を除き高齢化に伴う社会保障費増以外の財政支出の拡大を渋ったのが安部政権の最大の問題点です。現在国債新規発行のたびに0.1%程度しかクーポンがつかないのにその4倍も5倍も札が入り(落札利回りはマイナス)、政府債務調達はただ同然、これはデフレ現象のものである民間部門の過剰貯蓄、特に企業ISバランスのI<S化と表裏一体です。ご指摘のとおり金融緩和とあわせて財政拡張をしない手はないのに、その両方を掲げているのは国債を財源に、奨学金をチャラにして、最低賃金1500円を政府補償し、公務員を増やし、公共事業積極的に行いますとしているれい新撰組だけです。

(ご参考)

日本財政政策選択肢オリヴィエブランシャール・田代毅(2019年5月

https://piie.com/system/files/documents/pb19-7japanese.pdf

「景気の回復が感じられないのはなぜかー長期停滞論争」ローレンス・サマーズ、ベン・バーナンキポール・クルーグマン、アルヴィン・ハンセン山形浩生翻訳)(2019年4月

https://www.amazon.co.jp/%E6%99%AF%E6%B0%97%E3%81%AE%E5%9B%9E%E5%BE%A9%E3%81%8C%E6%84%9F%E3%81%98%E3%82%89%E3%82%8C%E3%81%AA%E3%81%84%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%8B%E3%83%BC%E9%95%B7%E6%9C%9F%E5%81%9C%E6%BB%9E%E8%AB%96%E4%BA%89-%E3%83%AD%E3%83%BC%E3%83%AC%E3%83%B3%E3%82%B9%E3%83%BB%E3%82%B5%E3%83%9E%E3%83%BC%E3%82%BA/dp/4790717313

"Macroeconomics"(12th Edition) " Robert J Gordon2013年

https://www.amazon.com/Macroeconomics-12th-Pearson-Economics-Hardcover/dp/0138014914

(未翻訳ですがアメリカ代表的マクロ経済学教科書です。IS-LM分析の箇所で日本に対する処方箋が取り上げられています。"combined monetary-fiscal policy expansion""The IS and LM curves shift rightward together"れいわの政策はそれに合致しています。)

追記2)

左派リベラルはほんとうに山本太郎に乗ってほしい。今まで何か提言する度に、財源はどうするんだ、そんなことして景気はだいじょうぶなのかと突っ込まれ、やれ法人税増税だ、富裕層増税だ、行政改革埋蔵金だと、見当外れなことを言うだけで(法人税は支払うのは企業ですが負担するのは庶民です。富裕層増税格差縮小の意味はあっても財源にはなりません。埋蔵金なんて結局みつからなかったし、公務員減らせば貧しくなるだけです)、結局有効提案を何ひとつできませんでした。何を言っても信用されないのはそのせいです。

そこに、自民党と異なる価値観を唱えながら、景気はむしろ良くします、財源はありますという政治家が現れました。しかブランシャールやサマーズ、ゴードンのような権威ある学者提案と軌を一にしている。これに乗らない手はないでしょ?

追記3)

立憲民主党は「アベノミクスによって事実上財政ファイナンス化した弛緩した金融政策について、市場と丁寧に対話しつつ、正常化を図っていく。」要するに、日銀による長期国債の買い入れ=量的緩和財政ファイナンスであり、やめますとしています。そのうえで消費税増税凍結を訴えています国債発行も減らして消費税増税分の2兆円もあきらめる、足りない分は金融所得法人税課税するというのだから、その二つの税金は大幅にアップするということになります金融所得に対する課税強化はリスクプレミアムを高めるので、日銀による買入れ縮小と同じく金融引き締め効果があります。すべての経済学の教科書に書いてあるとおり、法人税を支払うのは企業ですが、負担するのは庶民です。

彼らの政策を実現したらどうなるか。FRBが利下げを示唆し、ECB量的緩和への復帰を口にしているなか、日本だけ量的緩和をやめますリスクプレミアムを高めます金融は大幅に引き締めますというのだから円高が急速に進みます物価上昇率は下落し、またデフレに戻るでしょう。企業業績は悪化し、円高特に製造業が打撃を受け、そこに増税が追い打ちをかける。雇用シュリンクし、製造業海外移転拍車をかける特に地方高学歴でない層の雇用やこれから就職する人たちの雇用環境が大幅に悪くなります民主党政権のころの方が実質成長率が高かったから良かったと今でも主張する人たちなので当然なのかも知れませんが、彼らは要するに民主党政権当時に戻します、と言っています。同じく消費税増税に反対していても、デフレが最大の問題だとするれい新選組(「新撰組」じゃなくて「新選組」でした。ややこしいのは良くないと思いますが…)とは方向性がまったく違います

2019-05-31

"REVOLUTION WILL NOT BE TELEVISED" by Gil Scott-Heron, 1970

You will not be able to stay home, brother

You will not be able to plug in, turn on and cop out

You will not be able to lose yourself on skag and skip out for beer during commercials

Because the revolution will not be televised.

The revolution will not be televised.

The revolution will not be brought to you by Xerox in 4 parts without commercial interruptions

The revolution will not show you pictures of Nixon blowing a bugle and leading a charge by John Mitchell, General Abrams and Mendel Rivers to eat hog maws confiscated from a Harlem sanctuary

The revolution will not be televised.

The revolution will not be brought to you by the Schaefer Award Theatre and will not star Natalie Woods and Steve McQueen or Bullwinkle and Julia

The revolution will not give your mouth sex appeal

The revolution will not get rid of the nubs

The revolution will not make you look five pounds thinner

Because the revolution will not be televised, brother.

There will be no pictures of you and Willie Mae pushing that shopping cart down the block on the dead run

Or trying to slide that color TV into a stolen ambulance

NBC will not be able predict the winner at 8:32 on reports from 29 districts

The revolution will not be televised.

There will be no pictures of pigs shooting down brothers in the instant replay

There will be no pictures of Whitney Young being run out of Harlem on a rail with brand new process

There will be no slow motion or still life of Roy Wilkens strolling through Watts in a Red, Black and Green liberation jumpsuit that he had been saving for just the proper occasion.

The revolution will not be televised.

Green Acres, The Beverly Hillbillies and Hooterville Junction will no longer be so goddamned relevant

And women will not care if Dick finally screwed Jane on Search for Tomorrow

Because Black people will be in the street looking for a brighter day

The revolution will not be televised.

There will be no highlights on the eleven o'clock news

And no pictures of hairy armed women liberationists and Jackie Onassis blowing her nose

The theme song will not be written by Jim Webb or Francis Scott Keys, nor sung by Glen Campbell, Tom Jones, Johnny Cash or Englebert Humperdink

The revolution will not be televised.

The revolution will not be right back after a message about a white tornado, white lightning, or white people

You will not have to worry about a dove in your bedroom, a tiger in your tank, or the giant in your toilet bowl

The revolution will not go better with Coke

The revolution will not fight the germs that may cause bad breath

The revolution will put you in the driver's seat.

The revolution will not be televised

Will not be televised

Will not be televised

Will not be televised

The revolution will be no re-run, brothers

The revolution will be live.

2019-04-29

i☆Risちゃんはすごいという話

私はi☆Risオタクです。

これを読んでいる人にどうしてもi☆Risちゃんライブに来てほしいので、書きます


まず、何も知らない方へ。

i☆Risアイリス)とは「アイドル声優ハイブリッドユニット」です。

メンバー6人が女性声優として個々で活動しながら、アイドルとしても全力でライブを行うことをコンセプトとして結成されたユニット

声優アイドル売りやアイドル声優デビューとはひと味違い、どちらも本職です。

ここでは「アイドルとしてのi☆Risちゃん」を主に書いていきます

簡潔にメンバーを紹介します。

さきさまこと山北早紀(やまきたさき)さん。

最年長リーダーでおっとりしていますが、ギャグのキレがすごくて変わってる人。グリーン担当

ゆうちゃんセリコこと、芹澤優(せりざわゆう)さん。

その人気は間違いなく一番。表情のくるくる変わるパフォーマンスは見ものです。ブルー担当

みこと茜屋日海夏あかねやひみか)さん。

本名です。存在美術のビューティウーマン筋肉量優勝のダンスリーダー。パープル担当

わかちーこと、若井友希(わかいゆうき)さん。

歌唱力がエグい。作詞作曲もこなi☆Risの愛され末っ子で、ダントツちいちゃい。レッド担当

みゆたんこと、久保田未夢(くぼたみゆ)さん。

あざとかわいさで右に出るものはありません。一本芯の通ったっょぃプリンセスオレンジ担当

ずっちゃんこと、澁谷梓希(しぶやあずき)さん。

声優アイドル以外にもマルチ活躍、なんかイケメンいるなと思ったらこの人。イエロー担当

以上この6人でi☆Risです。個性的ですね。覚えやすいと思います

ちらっと画像見てもらえばわかると思うんですけど、美少女なんですね。顔面偏差値が高い。顔が良い×6。

今年の7月7日で結成7周年を迎え、メンバー一人も欠けず増えずで7年間フルスロットル活動してます

こんなに可愛い子揃いなんですけどなんと、パフォーマンスヤバイです。



○歌が上手い

歌が上手いです。

この6人は7年前のアニソンヴォーカルオーディション、のちにWake Up,Girls!Run Girls,Run!を生み出したオーディション第一合格者です。

キラキラしたアイドルソングから扇情的ダンスミュージックまで、楽曲の幅は広く、どんな曲も表現します。

特に元々歌手志望の若井さんは、2月放送されたTHEカラオケ☆バトルで好成績を残すほどの歌唱力

ハモリの精度は声優ユニットでも随一。何億回聴いても圧倒されます

歌の上手さを感じられるオススメ曲をまとめておきますので、お時間あればぜひ聴いてみてください。

Goin'on(11thシングルGoin'on」、2ndアルバムTh!s !s i☆Ris!!!」収録)

・My Bright...(若井ソロ、2ndアルバムTh!s !s i☆Ris!!!」収録)

・Daily Berry!!(3rdアルバム「WONDERFUL PALETTE」収録)

卒業式(16thシングル「Changing point」収録)



ダンスが上手い

ダンスやばいです。

所詮声優でしょアイドルでしょと言われることもありますが、そのパワフルさたるや業界人も驚くほど。元々ダンスやってる人たちだと思ってた、という方もよく見かけますが全員が未経験でした。

振り付けほとんどの曲を同じダンサーの方が担当されており、メチャクチャかわいくてこっちが照れるような振りから、キレッキレのかっこいい振りまで見飽きることがありません。フォーメーションの変動も気持ちいいです。

メンバー全員が出演するアニメプリパラ」のライブイベントでは、演じるキャラクターに合わせて同じ振りでも動きが変わっていたりして、表現へのこだわりもすごい。

特に今年の「i☆Ris 5thLiveTour FEVER」はやばいです。声優アイドルユニットなのに、ダンスオンリーパートがあるんです。もはや表現団体です。

かわいい女の子が歌って踊る姿、見ているだけで元気になりますね。

avex公式YouTubeダンスMV(通常のMVではなく定点カメラで全体のダンスの動きを見ることができるもの)が上がっているので、ご覧になってみてください。全部良いのでオススメは決めかねますが、「ドリームパレード」のラインダンスは必見です。



ライブに来てほしい

歌が上手いならCDを聴けばいいし、ダンスが見たいなら動画円盤再生すればいいですよね。

でも、i☆Risちゃんの最大の魅力って「生のライブ」なんです。

生で聴く声の圧力。生だからわかるパワフルな動き。大きなステージの上で身体いっぱい表現している女の子たち。その目で見なきゃわかりません。

なんてったって彼女たちはアイドルですから、その表現ファンに届けてくれますファンの目を見てくれます

一度でもレスをもらったら抜け出せません。あんなにキラキラ笑顔で指を差されたら一生の思い出になります

抵抗があるのはわかりますちょっと調べればi☆Risオタクは厄介多いみたいなのたぶん出てきますよね。

実際、アニメオタク敬遠するイェッタイガーとかジャージャーとか当たり前にあります前奏などで入れるコールのこと)。

私も初めてライブに行くとき絶対そんなの言わないと思ってました。何言ってるかわかんないし、謎すぎてきもいし。

ライブ自体、ど田舎地方民の私にとってそれは都会の人のものでした。一年に一度ツアー地元に来てくれるときに行ければ十分だと。

しかし、ツアーに行って、武道館ライブに行って、リリースイベントに行ってまたツアーがあって……現場に行く回数が増えるたび、もっと行きたい、もっと彼女たちを応援したい、現場楽しい!と思えるようになりました。

今となっては月2以上のペースで推しに会いに行ってますし、コールに関してはメンバー肯定的なのもありライブを盛り上げるひとつ文化と考えています

それほど楽しいんです。「また来たい」と思わせる力が、彼女たちのパフォーマンスにあるんです。


最後に。

声優としての実力を伸ばし、個々が忙しくなってきた今、i☆Risとして単独ライブがあるのは4月6月ツアー期間と11月デビュー記念など、ほんのわずかです。

まりi☆Risライブに行くなら今がチャンスなんです。

来年も当たり前にツアーがあると思っていたら、もしかしたらないかもしれない。このご時世、いつ活動が終わってもおかしくはありません。

もし行きたいと思っている方がいるのなら、来てください。

チケットとれます。探したら余らせてる人が良い席を譲ってくれることもありえます

曲を全部覚える必要はありません。コールも覚えなくて大丈夫です。推しが決まってなくてもいい。余力があれば、今回のツアー過去公演のセットリストを予習しておくとより楽しめるかもしれません。

今、全力で輝いているi☆Risに会いに来てください。

よろしくお願いします。



i☆Ris 5thLiveTour FEVER

5月4日(土) 宮城公演(日立システムホール仙台) 15:00〜/19:00〜

5月6日(月) 大阪公演(ZeppNamba) 15:00〜/19:00〜

5月11日(土) 愛知公演(日本特殊陶業市民会館ビレッジホール) 15:00〜/19:00〜

5月19日(日) 北海道公演(Zepp Sappopo) 14:30〜/18:30〜

5月25日(土) 神奈川公演(関内ホールホール) 15:00〜/19:00〜

6月1日(土) 東京公演(中野サンプラザ) 15:00〜/19:00〜

2019-03-30

You asked me once what running is.

You said you wanted to know what it is.

The answer is you.

It's you.

Well?

Did you get to see the top?

How the new team?

It's stronger than back then.

Really?

You can't back in time.

Just as old records are overwritten, we keep moving forward.

Sometimes it makes me sad, but that's...

The wind is blowing.

And we defy it by running.

Believing the answer we seek lies ahead.

What is strength?

What is running?

What is living?

It's all beyond the wind.

Hope resides within our hearts.

Look. The road is right before your eyes.

So we run again today.

We'll run to the edges of the earth.

Hey, do you like running?

From the line of "Run with the Wind".

Yes, I like running!

We're running to the future to make it together.

2019-03-06

Because waiting for me.

Just because there're all waiting for me.

From the line of "Run with the wind".

2019-02-25

anond:20190225091610

45歳173㎝83kg (2018年10月)が、毎日1時間時速6キロで歩いて4カ月。

ようやく80kg代に突入したよ。

歩く距離と速さは、「Nike Run Club」というアプリで計ってる。

体重オムロンスマホ連動の体重計で記録してる。

2019-01-16

Watching "Run with the Wind".

I'm watching myself.

2019-01-03

anond:20190103184241

// 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(&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(&msg, NULL, 0, 0, PM_REMOVE))
				{
					if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
					{
						TranslateMessage(&msg);
						DispatchMessage(&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, &ps);
				this->OnPaint(ps);
				EndPaint(hWnd, &ps);
				::UpdateWindow(hWnd);
				RECT Rect2 = { 0,0,48*9,48 * 100 };
				InvalidateRect(hWnd, &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, &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, &Rect, hBrush);


		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.left += width;
		Rect.right += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &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, &Rect, hBrush);


		Rect.top    += width; 
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.left   += width;
		Rect.right  += width;
		ret = FillRect(hdc, &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, &Rect, hBrush);


		//Rect.left   += width;
		//Rect.right  += width;
		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &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 &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, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint(ps);


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &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;
}

anond:20190103170543

テトリス

落ちてくるブロックの描き方

わかりやす関数化してみた

まずはブロックの種類は3種類

 

WriteBoxLとWriteBoxIとWriteBoxZ

の違いをよく見比べて

自力で違いがわかれば

プログラマーにはなれるとおもう

とはいえ、コレを自力でわかるならもっと儲かる仕事あるとはおもうけどな

 

	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(&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(&msg, NULL, 0, 0, PM_REMOVE))
				{
					if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
					{
						TranslateMessage(&msg);
						DispatchMessage(&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, &ps);
				this->OnPaint(ps);
				EndPaint(hWnd, &ps);
				::UpdateWindow(hWnd);
				RECT Rect2 = { 0,0,48*9,48 * 8 };
				InvalidateRect(hWnd, &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, &Rect, hBrush);


		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.left += width;
		Rect.right += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &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, &Rect, hBrush);


		Rect.top    += width; 
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.left   += width;
		Rect.right  += width;
		ret = FillRect(hdc, &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, &Rect, hBrush);


		//Rect.left   += width;
		//Rect.right  += width;
		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		DeleteObject(hBrush);

		return TRUE;
	}


	BOOL OnPaint(PAINTSTRUCT &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, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint(ps);


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &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;
}

「いろんな「」のコーナー」のコーナー

エヴァンジュリン以外の30人にも続編を考えてあげよう」のコーナー

光る風から続いているハッピー誘って、君のもとへLOVEドライブ行こう

どうも、好きなネギま声優こやまきみこです。

作品では、二つの社会にわたって多くの登場人物存在する。一つは表の世界、すなわち我々の社会のものである日本教師として赴任した主人公ネギ・スプリングフィールドは、魔法使いとしての正体を隠したままA組の31人の生徒と出会うことになる。生徒の多数は一般人であるが、ネギの正体を知ってしまものもおり、魔法使い世界に関わりをもつことになる。

です!

「『キツツキは嘘つきだから気をつけて』という歌詞差別表現である」のコーナー

それにあなた名前真綾であって、しおりではないでしょ! 嘘つきなのはあなたの方じゃないか

かに嘘つきのキツツキもいるかもしれませんが、全てのキツツキが嘘つきのわけがありません。

なので、そのような歌詞主語が大きすぎます

そもそも動物動物という種でくくること自体差別的な表現なのです。

そこで、たった一人にのみ該当する小さい主語を使った「キツツキは嘘つきだから気をつけて」に変わる新しい歌詞を考えてみました。

ネクソンを買うぐらいなら他にいい買い物があるんじゃないの? そんなことない!」のコーナー

ネクソン? いい思い出がなにもないなあ。

でも、このいい思い出でない思い出もまた、今の自分を形作っているのだから過去否定するのはよくないと思います

そこで、買おうとしている数々の企業ネクソンのいいところを教えてあげましょう。

「「色彩」ってすげえいい曲だけどそれを満喫するためだけにFGO課金するのは躊躇しちゃうなあ。そうだ! 坂本真綾について詳しくなろう!!!」のコーナー

貧困層にとってはFGOは怖くて近寄れません。

そこで、FGOプレイしなくても色彩を満喫するために、坂本真綾のことを教えてください。

目標は、浅野真澄を超える坂本真綾ファンです。

もしくは鈴村健一を超える坂本真綾旦那です。

「「愛があって夢があってだけど、変わらぬ思いを重ねて、あなたと行きたいのふぉーえばふらまーいらーーぶ。髪をほどいて見上げるオリオンあなたは遠く感じる。打ち消すように」の打ち消すようにの時に唱える打ち消し呪文を考えよう」のコーナー

意思の力? 目くらまし? 呪文貫き? そんなな呪文じゃ南央美さんの自意識は打ち消せません。

南央美さんも満足するような格好いい打ち消し呪文を教えてください。

「「帰る家さえ見失う私の胸で眠れ、私の胸で眠れ」の私とはセシリーにとっての誰だったのか!」のコーナー

誰だったんでしょうね?

「きんぎょ注意報の好きなキャラクタを教えてください」のコーナー

僕は葵ちゃんです。

「じゃあ「私のすてきなピアニスト」の話だけしようぜ!」のコーナー

このコーナーは、魔法の天使クリィミーマミ第46話私のすてきなピアニストに関することだけを募集しています

魔法の天使クリィミーマミ第46話私のすてきなピアニストの話だけをしてください。

それ以外のメールは何があっても読みません。

プリクラを開発したこと宝くじにあたったようなものなら、P4という面白ゲームを開発したことは何にあたるのか考えてみよう!」のコーナー

アトラスゲームはどれも面白いなあ。

とくにペルソナ4

僕はペルソナ4が大好きなんだ!

まずなんといっても、声優さんが可愛い

堀江由衣さんに釘宮理恵さんに小清水亜美さんに山口勝平さん! どの声優さんもとってもキュート可愛いですよね。

P4Dで恋する名探偵フルバージョンが聞けるかと思ったのに聞けなくてとっても残念でした!!!

堀江由衣さんの楽曲の中でも僕は一番好きなんですよね恋する名探偵

そうえば、僕、グランブルーファンタジー堀江由衣さんの限定キャラ無料ガチャで引いたんですよ! すごくないです?

これもう、俺と堀江由衣シンクロ率が極限まであがっており、俺自身田村ゆかりであり、俺と堀江由衣やまなこからだと思うんですよ?

そこで、俺と田村ゆかり共通点を教えてください。

はやく、世界一かわいくなりたーーーい。

「「じゃあエンジェルビーツはどうしてたらよかったんですか!?」のコーナーの答えは「関根入江百合を濃厚に描く」で決定しているので「好きなガルデモの曲を募集します」」のコーナー

僕はRun With Wolvesです。

エンジェルビーツ面白かったと思うけど、今もう展開してるのは漫画版だけなんですよねえ。

いや、漫画版に不平不満はないよ。

ないけど、やっぱり、あの「声優のわちゃわちゃ感」が重要コンテンツだったと僕は思うのだけど。

うーん、難しかったなあ。

今、Re:ゼロWeb小説版読んでるけど、アニメ版結構違うんだね。ラム事務的に手コキされる同人誌よみたーい

よみたーい

anond:20190101175055

テトリス風?プログラムに向けて

第何回だろうな

キー入力を追加した

まだ、何を押してもブロックが右に移動するだけ(右端にいくと左にワープ

タイマー自動落下

 

でもまぁ ここまでサンプルがあるとほぼテトリスは見えてきた

// 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(&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(&msg, NULL, 0, 0, PM_REMOVE))
				{
					if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
					{
						TranslateMessage(&msg);
						DispatchMessage(&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, &ps);
				this->OnPaint(ps);
				EndPaint(hWnd, &ps);
				::UpdateWindow(hWnd);
				RECT Rect2 = { 0,0,48*9,48 * 8 };
				InvalidateRect(hWnd, &Rect2, TRUE);
			}
			else if (obj == WAIT_FAILED)
			{
				rc = GetLastError();
			}
			else {

			}
		}


		return TRUE;

	}

	BOOL OnPaint(PAINTSTRUCT &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, &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, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint(ps);


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &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;
}

2019-01-01

anond:20190101174626

こんな感じ

GetMessageの上にタイマーも扱える

MsgWaitForMultipleObjectsExを追加

GetMessageだとタイマーを処理できないのでPeekMessageに変更

>なぜかは ちょっと考えると面白い

Getとき必要なかった 終了処理を追加

msg.message == WM_QUIT

この部分 QUITメッセージが来たら終了する

obj == WAIT_TIMEOUT

タイマーを追加

y++で高さを変更してから

作画を呼ぶ

こんだけ

<が<

>が&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(&msg, NULL, 0, 0, PM_REMOVE))
				{
					if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
					{
						TranslateMessage(&msg);
						DispatchMessage(&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, &ps);
				this->OnPaint(ps);
				EndPaint(hWnd, &ps);
				::UpdateWindow(hWnd);
				RECT Rect2 = { 0,0,48,48 * 8 };
				InvalidateRect(hWnd, &Rect2, TRUE);
			}
			else if (obj == WAIT_FAILED)
			{
				rc = GetLastError();
			}
			else {

			}
		}

anond:20190101172100

タイマーを使ったアニメーションを付けた

// 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(&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(&msg, NULL, 0, 0, PM_REMOVE))
				{
					if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
					{
						TranslateMessage(&msg);
						DispatchMessage(&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, &ps);
				this->OnPaint(ps);
				EndPaint(hWnd, &ps);
				::UpdateWindow(hWnd);
				RECT Rect2 = { 0,0,48,48 * 8 };
				InvalidateRect(hWnd, &Rect2, TRUE);
			}
			else if (obj == WAIT_FAILED)
			{
				rc = GetLastError();
			}
			else {

			}
		}


		return TRUE;

	}

	BOOL OnPaint(PAINTSTRUCT &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, &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, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint(ps);


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &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;
}

2018-12-22

anond:20180611181350

切り方は

ラン・ドグ・シャ

run dog cat

ではないか

2018-12-02

Completely run out of my patience with idiot .

I have to make my job and my days without idiot.

2018-11-07

Bomb A Head! 生誕20周年記念盤

1. Bomb A Head! (オリジナル) (TVヴァージョン)

2. Bomb A Head! (インストゥルメンタル)

3. Bomb A Head! (12MIX)

4. Bomb A Head! (The Remix)

5. Bomb A Head! (EXTENDED MIX) (ピストン西沢MIX)

6. Bomb A Head! (m.c.A・T The@Special Primal Live Ver.) (ライブ収録)

7. Bomb A Head!V

8. Bomb A Head! (RAVEMAN mix)

9. Bomb A Head! (AAAヴァージョン)

10. Bomb A Head! (ボサノバヴァージョン)

11. Bomb A Head! (アカペラ) (ボーナストラック)

愛のメモリー(発売35周年 アニバーサリーエディション)

1. 愛のメモリー 2012 ver.

2. 愛のメモリー Bossa ver.

3. 愛のメモリー アルバム「OLD FASHION LOVE SONG」 【2000.11.29 Release】

4. 愛のメモリー アルバム「My Favorite Songs」 【2005.11.2 Release】

5. 愛のメモリー 2009 アルバムYes We Can!!」 【2009.5.27 Release】

6. 愛のメモリー 21 アルバム「OLD FASHION LOVE SONG」 【2000.11.29 Release】

7. 愛のメモリー アルバムMemories of love」 【1994.11.2 Release】

8. 愛のメモリー シングル「愛と復讐の嵐」

9. 愛のメモリー DVD「Emotional Live

10. 愛のメモリー アルバムTIME

11. 愛のメモリー シングル

12. 愛の微笑 (愛のメモリー原曲) 【1975】

13. 愛のメモリー 2012 ver.

14. 愛のメモリー Bossa ver.

Love Somebody 完全盤(初回限定盤)(DVD付)

1. Love Somebody (CINEMA Version IV) (初CD化)

2. Love Somebody (CINEMA Version III) (初CD化)

3. Love Somebody (CINEMA Version II)

4. Love Somebody (AKIRA’S PALMDRIVE REMIX)

5. Love Somebody (CINEMA Version)

6. Love Somebody (Acoustic Version)

7. Love Somebody (DJ Hasebe Remix)

8. Love Somebody (SECRET Version)

9. Love Somebody (ALBUM Version)

10. Love Somebody (Remix)

ALL the “Get Wild” ALBUM

1.Get Wild (“FANKS CRY-MAXVersion)

2.Get Wild

3.Get Wild (“COLOSSEUM I”Version)

4.GET WILD '89

5.Get Wild (“RHYTHM RED TMN TOUR”Version)

6.Get Wild (techno overdub mix)

7.Get Wild (“tour TMN EXPO ARENA FINALVersion)

8.GET WILD '89 (“TMN final live LAST GROOVE 5.18”Version)

9.GET WILD DECADE RUN

10.GET WILD DECADE RUN (112 CLUB MIX)

11.Get Wild (VER.0)

青山テルマ スーパーベスト

01.そばにいるね original mix

02.そばにいるね 2009

03.そばにいるね English ver.

04.そばにいるね a cappella ver.

05.そばにいるね Tokyo ver.

06.そばにいるね Disco ver.

07.そばにいるね T.K remix

08.そばにいるね EURO MIX

09.そばにいるね Korean ver.

10.そばにいるね Spanish ver.

11.そばにいるね HΛL’S MIX

12.そばにいるね instrumental

初回限定ボーナストラック

13.そばにいるね Orchestra Version

14.そばにいるね Jazz Version

DVD

01.そばにいるね PV

02.そばにいるね Live version

03.Making of「そばにいるね

三木道三スーパーベスト

01.Life Time Respect original mix

02.Life Time Respect 2008

03.Life Time Respect English ver.

04.Life Time Respect a cappella ver.

05.Life Time Respect Tokyo ver.

06.Life Time Respect Disco ver.

07.Life Time Respect T.K remix

08.Life Time Respect EURO MIX

09.Life Time Respect Korean ver.

10.Life Time Respect Spanish ver.

11.Life Time Respect HΛL'S MIX

12.Life Time Respect instrumental

初回限定ボーナストラック

13.Life Time Respect Orchestra Version

14.Life Time Respect Jazz Version

2018-10-25

Even though you run by yourself, you're no actually alone.

You're always running with someone else.

2018-10-11

anond:20181011134402

左様。欧米こそ至高 の はてなーに習い、オックスフォード辞典より、

otaku
(in Japan) a young person who is obsessed with computers or particular aspects of popular culture to the detriment of their social skills.
‘every other otaku can run on about their hobby endlessly’

大衆文化特定の側面にこだわるあまり社会性を損ねるそうである

えらいっこっちゃなぁ

では英語圏オタク意味のあるgeeknerd はどうだろう?

geek
1 An unfashionable or socially inept person.
1.1 usually with modifier A knowledgeable and obsessive enthusiast.
‘a computer geek

社会不適応者だそうです、容赦ないね

nerd
1 A foolish or contemptible person who lacks social skills or is boringly studious.
‘I was a serious nerd until I discovered girls and cars’
1.1 A single-minded expert in a particular technical field.
‘a computer nerd

いちばん表現マイルドではあるが社会性に欠けるガリ勉だそうな

しかし、いちばんマイルドっぽいnerd日常では単なる悪口らしい

かにgeek日本でも自称したり褒め言葉に使ったりするがnerdは無い

まぁいずれにせよ自ら『社会性に問題がある』と表明するのは賢い振る舞いとは言えないので

バカでおおまかに問題ない

2018-09-26

anond:20180926173441

“If you run into an asshole in the morning, you ran into an asshole. If you run into assholes all day, you're the asshole.”

― Raylan Givens("Justified")

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん