「E+」を含む日記 RSS

はてなキーワード: E+とは

2020-08-01

anond:20200801184212

Master & slave or dual buffer 3x4x1000=12x1000

16=4+12=4+3*4=2OS+2Master+3*4(Slave)

 

Master/Master+Master/slave+Slave/slave

2020-06-20

使いにくいwebサイト

国立西洋美術館が日時指定チケットオンラインのみで発売してるっていうんで、チケットを取ってみた。

これがほんとに使いにくい。

購入にあたってこんなにイライラするwebサイト、はじめて見た。

致命的に使えないわけじゃなくて、購入までの各ステップでそれぞれちょっとずつイライラさせられる。

厳密には国立西洋美術館だけじゃなくて途中からe+サイトだけど、もうなんかセットで苛立つ。

西美サイトで「オンラインチケットは以下の各方法販売してるよ」って書いてある割に、その各サイトへのリンクが見当たらなかったり。

日時指定で空いてる日時をクリックした後、さらにもう一度日時一覧がズラっと出てきたり。

購入に会員登録がいるのかよ、面倒くせー…と思って進もうとしたら、会員登録方法説明ページに移動するだけで、登録には一度トップページに戻らないといけなかったり。

メールアドレスで仮登録して、メールに書いてあるアドレスに移動したら、そこからさらSMS認証があったり。

購入できた!チケットダウンロードしよう!と思ってダウンロードボタンを押したら、Google Playが開いて、まず別アプリダウンロードするよう求められたり。

もうなんなんだこの、購入者の心を細かくイライラさせる使いにくさは。

クソofクソ。

日本的手続きの面倒臭さを煮詰めたようなクソ。

アプリダウンロードするところで心が折れてブラウザを閉じたわ。後日やる。

2020-06-18

anond:20200618154215

https://books.google.co.jp/books?id=p6_1DM3ZUwYC&dq=bloodstone+heliotrope+heliopolis&pg=PT372

The jasper was held in high favor by the ancients, and Babylonian seals as old as 1,000 years before the Christian era have been found. The THET or Buckle of Isis was made chiefly of jasper. In those times the stone was found in quantities in the vicinity of the historic town of On or Heliopolis.

http://otakuyume.angelfire.com/gem.html

Bloodstone{heliotrope}—massive quartz, variety plasma, but with small spots of red jasper that resembled drops of blood. Hardness is seven, composition SiO2. found in Heliopolis, Egypt. Checking hemorrhages in ancient times and medieval times. Have the power to cause tempests.

ブラッドストーンを含む碧玉ヘリオポリスで大量に産出した」「ブラッドストーンヘリオポリス発見された」までは英語情報確認できたぞ。

ここからヘリオポリスで見つかったかヘリオトロープという呼称になった」と勘違いされたんじゃないか

2020-05-25

自分が利用中のサービス

https://anond.hatelabo.jp/20200525021541

そういえば自分が使ってるサービスソフトウェアは定期的に棚卸しすることにしてるんだけど、ここ何年かやってなかったのでこの機会にやってみる。

アプリとかもあったりするけど基本的Webサービス提供されているもの

順番は適当

仕事効率化(ってAppStoreなら言われそうなやつ)
Google KeepTodoist
ToDo管理メモに。
個人用は主にKeep、仕事やそれに近いタスクTodoistと使い分けている。
Googleカレンダー・TimeTree
Googleカレンダー個人用。
職場でもカレンダー系はあるが、TimeTreeは職場以外も含めた仕事関係の人との情報共有に使っている。
DropboxPaper ・ Notion ・ Code(vscode-gist) ・ Code+GoogleDrive
ノートサービスとか。
Paper個人用でスマホでも見たいもの、Notion趣味仲間での共有用
長文や思考整理メモはなんとなくマウス触らずに考えたいので markdown + VS Code で、GistGoogle Driveに保存している。
全部Gistに投げたいけど、vscode-gist並べ替え出来なかったりと不便も多くて使い分け。
Google Drive
Dropboxから乗り換えた。Dropboxは同期出来る端末制限がキツくなったのと小規模プランがないのがね。
Googleは100GBからあるのがありがたい。Gmail等にも反映されるし。使い勝手微妙に悪いところあるけど。
Pushbullet
ブラウザスマホ間でメッセージ画像をやり取り出来るサービス
スマホ1台しかなくても入れた方がいいし、タブレットも含めて2台以上あるなら是非。お勧め
あと通知も割と使いやすいので自作した何かの通知を投げる先にも。
Freedom
自分を縛って仕事させるサービス
流行ったポモドーロテクニックの応用で、指定した時間仕事関係ないもの封印してくれる。
かったるい仕事してるとついついニュースはてブを見てしまうような人にお勧め
1Password
パスワード管理サービス
前はChromeに投げっぱなしだったけど、UIが貧弱なスマホアプリログインでこそ使いたいと乗り換えた。
IFTTTAWS LambdaGoogle App Script
リガから何か実行するサービス系。
LambdaGASは違う事にも使うけどここではこの用途として。
簡単なことはIFTTT、複雑になってきたらLambdaGAS
Inoreader
RSSリーダー。私はあまりこだわりないのでキーボードで使えればなんでもいいんだけど。
CamScanner
スキャナアプリスマホアプリだけど一応Webサービス部分もあるのでついでに。
書類適当スマホで撮ると、適切にトリミングして長方形に変形してモノクロ強調してくれる。便利。
年額6k。個人でも紙の書類が多くて片っ端から取り込んで捨てたい人にお勧め
情報収集とか
Pocketはてなブックマーク
Pocketは「後で読む」に特化してるのでこれから読みたいものはてブは読んだものと使い分けている。
朝日新聞デジタルデジタル毎日(毎日新聞)
共に月1k程度でWeb版の全記事が読めて便利。
Google Alerts
指定したキーワードニュース毎日メールで送ってくれる。
最近だと「WH-1000XM4」を指定し、いつ発売かとやきもきしているw
AlexaYahooニュースNHKニュース
少し違うけど元増田情報収集に興味ありそうなのでついでに。
前者はYahooニュース自動音声読み上げ、後者は直近のNHKラジオヘッドラインニュース部分をそのまま流してくれる。
毎朝毎晩「アレクサ、今日ニュース」と無機物に語りかけている。
その他趣味とか
Spotify
音楽は今はこれだけ。Alexa関係Amazon Music Unlimitedも入ってたけどやめてしまった。
Sptifyはレコメンドがとても良い。
毎週Discorver WeeklyとRelease Readarを聴きつつ、あとは気分に合わせたDaily Mix流してたら音楽関係欲求が大体満たされてしまう。
Discord
コミュニケーションサービス。主にゲーム系・OSSコミュニティで使っている。最近Slack使ってないなぁ。
今昔マップ on the web
明治頃の地図とかと今の地図を比べられるサービス
からブラタモリ的な事が趣味なので使ってるけど、一般の人も引っ越しときかにこういうの調べるのは良いと思う。
周囲より少し盛り上がった道は大抵元自然堤防田んぼのあぜ道だったりとか分かったり。
weblio 類語辞典
文章書くとき類語辞典は欠かせないのでありがたい。
なんでもPodcastサービス(自作 非公開)
言葉通り。radikoとかagqrとか音泉とか。
色々アレなので公開してないけど、似たようなのはgithub探せば出てくるので興味ある人は運用すると幸せになれると思う。

以下は有名だし説明不要かと。

有料プランがある物は月500円ぐらいまでなら応援を兼ねて払うことにしているので、結構色々なサービスの有料ユーザになってる。

はてブ見てて使ってみたくなったサービス
HackMD
ノート系は一生理想を探すんだろうなと思う。ノートエディタ人生
draw.io
前に少し触ったけどそのまま忘れてた

自分用のまとめではスマホアプリ編・ブラウザ拡張編・ソフトウェア編もあるけど、長くなるのでこの辺で。

5/27 追記

意外と読まれたようで驚いた。言及ブコメに少し返事。

RoamResearchとかどう? まだβだけどメモに良いよ。

ありがとう、良さそうだし少し試してみるよ。

ぜひ続きをお願いしたいわ

ありがとう

ただ自分用のやつは説明がないかあっても自分向けで簡素から、書き足す時間があればまた増田にでも投げるよ。

yzkumayzkuma PushbulletがiOSDLできなくなったのは痛い。360円までなら出す。

え、マジすか、それは痛い。

iPhone次に買い換えるまでに復活して欲しいなぁ。同じく金なら出す。

takun71 1Password便利だよなあ。万一情報流出したら死ぬけどw

同じく流出を警戒してたけど、スマホ使う割合が増えるほどに、複雑なパスワード入力が不便で……

全部PIN+指紋ぐらいになればいいのにね。

2020-05-21

Vm9sLjEwNiDmlL/lupzjgavjgojjgovluIPjg57jgrnjgq/jga7nlJ/nlKPjg7vo qr/pgZTjgavjgaTjgYTjgabjgIHnmobmp5jjga7nlpHllY/jgavjgYrnrZTjgYjj gZfjgb7jgZk=

57WM5riI55Sj5qWt55yB44CA5pS/562W57Wx5ous6Kq/5pW05a6YCuaxn+W0jiDn

po7oi7EKCjIwMjDlubQ15pyIMjHml6XjgIBNUklDIGJ5IOWMu+eZguOCrOODkOOD

iuODs+OCueWtpuS8muOAgOeZuuihjOOAgOOAgGh0dHA6Ly9tZWRnLmpwCuaWsOWe

i+OCs+ODreODiuOCpuOCpOODq+OCueOBuOOBruWvvuW/nOOBruOBquOBi+OBp+OA

geOBneOBruWNseapn+OBruOCt+ODs+ODnOODq+OBruOCiOOBhuOBq+aJseOCj+OC

jOOBpuOBjeOBn+ODnuOCueOCr+OAguOBk+OBk+OBq+adpeOBpuS7ruioreW6l+iI

l+OChOmjsumjn+W6l+OBquOBqeOBp+OCgjUw5p6a5YWl44KK44GM5LiA566xMjAw

MOWGhuWJjeW+jOOBp+iyqeWjsuOBleOCjOOCi+OCiOOBhuOBq+OBquOCiuOAgeOB

suOBqOmgg+OBruOCiOOBhuOBquODnuOCueOCr+S4jei2s+OBrueKtuazgeOBr+aU

ueWWhOOBl+OBpOOBpOOBguOCiuOBvuOBmeOAggrjgZ3jgYbjgZfjgZ/kuK3jgafj

gIHmlL/lupzjgYzlrp/mlr3jgZfjgabjgYTjgovkuIDkuJbluK8y5p6a44Gu5biD

44Oe44K544Kv44Gu6YWN5biD44Gr44Gk44GE44Gm44CB44GT44KM44KS55aR5ZWP

6KaW44GZ44KL5oSP6KaL44GM5aKX44GI44Gm44GE44G+44GZ44CC6YWN5biD44GV

44KM44Gf44Oe44K544Kv44Gr6auq44Gu5q+b44KE57O444GP44Ga44GM5YWl44Gj

44Gm44GE44Gf44KK44CB44Kr44OT44Go5oCd44KP44KM44KL5aSJ6Imy44GX44Gf

44Oe44K544Kv44GM44GC44Gj44Gf44Go44Gu5aCx6YGT44KS6ICz44Gr44GV44KM

44Gf5pa544KC44GE44KJ44Gj44GX44KD44KL44Gn44GX44KH44GG44CC5ZWP6aGM

44Gu44GC44KL44Oe44K544Kv44Gv6YCf44KE44GL44Gr5Lqk5o+b44GZ44KL5a++

5b+c44KS6KGM44Gj44Gm44GE44KL44Go44GT44KN44Gn44GZ44GM44CB5a6f6Zqb

44Gr5omL44Gr44GV44KM44Gf5pa544Gr5LiN5a6J44Go5LiN5L+h5oSf44KS5LiO

44GI44Gm44GX44G+44GE44G+44GX44Gf44GT44Go44Gv44CB5b+D44GL44KJ44GK

6Kmr44Gz55Sz44GX5LiK44GS44Gf44GE44Go5oCd44GE44G+44GZ44CCCgrluIPj

g57jgrnjgq/jgpLlt6HjgovkuIDpgKPjga7lr77lv5zjgbjjga7mibnliKTjga/j

gIHmlL/lupzjgajjgZfjgabjgZPjgozjgpLnnJ/mka/jgavlj5fjgZHmraLjgoHj

govjga7jga/lvZPnhLbjgafjgZnjgILjgZfjgYvjgZfjgarjgYzjgonjgIHlrp/p

mpvjgavjg57jgrnjgq/jgpLoo73pgKDjgZfjgZ/kuovmpa3ogIXjgavjgoLljrPj

gZfjgYTmibnliKTjga7nm67jgYzlkJHjgZHjgonjgozjgabjgYTjgovjgZPjgajj

ga/jgIHjgZPjga7kvZzmpa3jgpLjgYrpoZjjgYTjgZfjgZ/nq4vloLTjgavjgYLj

govogIXjgajjgZfjgaboqqDjgavnlLPjgZfoqLPjgarjgY/mgJ3jgaPjgabjgYrj

gorjgb7jgZnjgILku4rlvozluILloLTjgavlh7rlm57jgovjg57jgrnjgq/jga7k

vpvntabph4/jgYzlopfjgYjjgIHjg57jgrnjgq/kuI3otrPjgavlr77jgZnjgovl

jbHmqZ/mhJ/jgYzoloTjgozjgovjgavjgaTjgozjgabjgIHku4roiKzjga7luIPj

g57jgrnjgq/jga7nlJ/nlKPjgavmkLrjgo/jgaPjgZ/kuovmpa3ogIXjgavlr77j

gZfjgabjgYTjgaPjgZ3jgYbljrPjgZfjgYTnm67jgYzlkJHjgZHjgonjgozjgovl

j6/og73mgKfjgYzjgYLjgorjgb7jgZnjgILnt4rmgKXmmYLjga7lr77lv5zjgYzl

ubPmmYLjga7ln7rmupbjgavjgojjgaPjgaboqZXkvqHjgZXjgozjgovjgZPjgajj

ga/lvoDjgIXjgavjgZfjgabjgYLjgorlvpfjgovjgZPjgajjgafjgZnjgYzjgIHm

h7jlv7XjgZnjgbnjgY3jga/jgIHjgZ3jgYbjgZfjgZ/oqZXkvqHjgYzluoPjgYzj

govjgZPjgajjgavjgojjgaPjgabjgIHku4rlvozjgIHlm73jga7nt4rmgKXkuovm

hYvjgavljZTlipvjgZfjgojjgYbjgajjgZnjgovkvIHmpa3jgYznj77jgozjgarj

gY/jgarjgaPjgabjgZfjgb7jgYbjgZPjgajjgafjgZnjgIIKCuWFiOaXpeOBruWb

veS8muWvqeitsOOBruS4reOBp+OBr+OAgeOAjOaUv+W6nOOBjOmFjeOCi+W4g+OD

nuOCueOCr+OBr+OBneOBruWkp+WNiuOBjOS4jeiJr+WTgeOBp+OBguOCiuWFqOOB

puW7g+ajhOOBmeOBueOBjeOAjeOBqOOBhOOBo+OBn+i2o+aXqOOBruitsOirluOB

jOWxlemWi+OBleOCjOOBn+OBn+OCgeOAgeOBneOBrue1jOe3r+OCkueQhuino+OB

l+OBpuOBhOOBn+OBoOOBj+OBn+OCgeOBq+OAgeizqueWkeOBq+WJsuOCiui+vOOC

gOW9ouOBp+etlOW8geOCkuOBleOBm+OBpuOBhOOBn+OBoOOBjeOBvuOBl+OBn+OA

guOBl+OBi+OBl+OAgeengeOBruetlOW8geOBr+mAmuWRiuOBleOCjOOBn+izquWV

j+OBq+etlOOBiOOCi+OCguOBruOBp+OBr+OBquOBi+OBo+OBn+OBn+OCgeOBq+OA

geaAkuWPt+OBqOWPseiyrOOBruS4reOBp+WNgeWIhuOBq+OBiuS8neOBiOOBmeOC

i+OBk+OBqOOBjOOBp+OBjeOBvuOBm+OCk+OBp+OBl+OBn+OAguOBneOBk+OBp+OB

k+OBruWgtOOCkuOBiuWAn+OCiuOBl+OBpuOAgeWkmuOBj+OBruaWueOBrueWkeWV

j+OBq+OBiuetlOOBiOOBmeOCi+W9ouOBp+OAgeOBneOBruiDjOaZr+OBqOe1jOe3

r+OBq+OBpOOBhOOBpuabuOOBjeiomOOBl+OBpuOBiuOBjeOBn+OBhOOBqOaAneOB

hOOBvuOBmeOAggrvvJzjgarjgZzjgIHluIPjg57jgrnjgq/jgaDjgaPjgZ/jga7j

gYvvvJ4KCuWGjeWIqeeUqOOCkuWJjeaPkOOBqOOBl+OBn+mVt+acn+mWk+S9v+eU

qOWPr+iDveOBquW4g+ijveODnuOCueOCr+OCkuWkp+mHj+OBq+eUn+eUo+ODu+iq

v+mBlOOBmeOCi+OBk+OBqOOBq+OCiOOBo+OBpumcgOe1puOCruODo+ODg+ODl+OC

kuWfi+OCgeOAgeS9v+OBhOaNqOOBpuODnuOCueOCr+OCkuWMu+eZgumWouS/guiA

heetieOBq+WEquWFiOeahOOBq+WbnuOBm+OCi+eSsOWig+OCkuaVtOOBiOOCiOOB

huOBqOOBl+OBn+OBruOBjOOAgeW4g+ODnuOCueOCr+OBq+WPluOCiue1hOOCk+OB

oOacgOWkp+OBrueQhueUseOBp+OBmeOAggoK5pys5bm0MeaciOmgg+OBi+OCieOA

geOBneOCjOOBvuOBp+WbveWGheS+m+e1puOBrjjlibLnqIvluqbjgpLljaDjgoHj

gabjgYTjgZ/kuK3lm73jgYvjgonjga7jg57jgrnjgq/jga7ovLjlhaXjgYzpgJTn

tbbjgYjjgIHjg57jgrnjgq/jga7lk4HoloTnirbmhYvjgYzlp4vjgb7jgorjgb7j

gZfjgZ/jgILjgZPjga7jgZ/jgoEy5pyI44Gr44Gv44Oe44K544Kv44KS5rGC44KB

44Gm5pep5pyd44GL44KJ5bqX6IiX44Gu5YmN44Gr6KGM5YiX44GM44Gn44GN44KL

54q25rOB44Go44Gq44KK44CB5Zu95Lya562J44Gn44KC44Oe44K544Kv44Gu5L6b

57Wm44KS5aKX44KE44Gb44Go44Gu5oyH5pGY44GM55u45qyh44GO44G+44GX44Gf

44CCMuaciOS4i+aXrOOBq+OBr+OAgeODnuOCueOCr+OBruiyt+OBhOWNoOOCgemY

suatouOBruOBn+OCgeOBq+ODjeODg+ODiOOCquODvOOCr+OCt+ODp+ODs+OBruiH

queym+OCkuaxguOCgeOCi+OBqOWFseOBq+OAgeWbveWGheeUn+eUo+ioreWCmeOB

ruWil+W8t+OCkuWQq+OCgeOBn+S+m+e1pumHj+aLoeWkp+OBq+WPluOCiue1hOOB

v+OBvuOBl+OBn+OAggrjgZfjgYvjgZfjgarjgYzjgonjgIHlvZPmmYLjga7lm73l

hoXjgavjgYrjgZHjgovjg57jgrnjgq/jga7kvpvntabog73lipvjga/mnIjnlKM0

5YSE5p6a56iL5bqm44Gn44GC44KK44CB44Gd44Gu5q6G44Gp44GM5LiN57mU5biD

44KS55So44GE44Gf5L2/44GE5o2o44Gm44K/44Kk44OX44Gn44GX44Gf44CC5Zu9

5YaF55Sf55Sj5Yqb5aKX5by344Gu44Gf44KB44Gu6KOc5Yqp6YeR44Gr5b+c5Yuf

44GX44Gf5LyB5qWt44KC5YWo44Gm5LiN57mU5biD44KS55So44GE44Gf5L2/44GE

5o2o44Gm44Oe44K544Kv55So44Gu6Kit5YKZ5oqV6LOH44Gn44GX44Gf44CC44GT

44Gu6aCD44CB5oSf5p+T55eH44Gu5bCC6ZaA5a6244Gq44Gp44GL44KJ44Gv44CB

5L2/44GE5o2o44Gm44Oe44K544Kv44Gu5YaN5Yip55So44KS6KGM44GG44G544GN

44Gn44Gq44GE5peo44Gu6KaL6Kej44GM5Ye644GV44KM44Gm44GK44KK44CB6ZyA

57Wm44Ku44Oj44OD44OX44Gv5ouh5aSn44Gu5LiA6YCU44KS6L6/44KL44GK44Gd

44KM44GM55Sf44GY44Gm44GE44G+44GX44Gf44CCCgrjgZPjga7jgZ/jgoHjgIHj

g4/jg7Pjgqvjg4HjgoTjgq3jg4Pjg4Hjg7Pjg5rjg7zjg5Hjg7zjgavjgojjgovm

iYvkvZzjgorjg57jgrnjgq/jgarjganjgIHkvb/jgYTmjajjgabjg57jgrnjgq/k

u6XlpJbjga7lr77lv5zjgpLogIPjgYjjgovkuK3jgafjgIHmlL/lupzjgajjgZfj

gabjgZ/jganjgornnYDjgYTjgZ/ntZDoq5bjgYzjgIHjgqzjg7zjgrzjg57jgrnj

gq/jgafjgZfjgZ/jgILjgYvjgaTjgablsI/lrabmoKHjgarjganjgafntabpo5/l

vZPnlarjga7pmpvjgavkvb/jgaPjgabjgYTjgZ/jgqzjg7zjgrzjg57jgrnjgq/j

ga/jgIHmtJfmv6/jgZfjgabkvZXluqbjgoLliKnnlKjjgZXjgozjgabjgYTjgb7j

gZfjgZ/jgILjgZ3jgZPjgafjgIzlgaXluLjogIXjgavjgojjgovpo5vmsqvmhJ/m

n5Pjgavlr77jgZnjgovkuojpmLLjgajjgZfjgabjga/jgIHmiYvjgZnjgorjgoTj

g4njgqLjg47jg5bjgarjganjgavop6bjgozjgZ/miYvjgafoh6rjgonjga7pvLvj

goTlj6Pjgavop6bjgozjgarjgYTjgZPjgajjgYzph43opoHjgajjga7oprPngrnj

gYvjgonjgIHluIPjg57jgrnjgq/jgavjgojjgaPjgabjgoLmnInlirnjgarlr77l

v5zjga/lj6/og73jgafjgYLjgovjgI3jgajljLvnmYLplqLkv4LogIXjgavnorro

qo3jgZfjgIHluIPjg57jgrnjgq/jga7nlJ/nlKPjg7voqr/pgZTjg5fjg63jgrjj

gqfjgq/jg4jjga/jgrnjgr/jg7zjg4jjgZfjgb7jgZfjgZ/jgIIK77yc5biD44Oe

44K544Kv44Gv5L2V5pmC44G+44Gn44Gr44Gp44KM44GP44KJ44GE44Gu6YeP44KS

6Kq/6YGU44GX44KI44GG44Go44GX44Gf44Gu44GL77yeCgrjgIzjg57jgrnjgq/j

gYzmiYvjgavlhaXjgonjgarjgYTjgZPjgajjgavlr77jgZnjgovlm73msJHjga7k

uI3lronjgpLou73muJvjgZnjgovjgZ/jgoHjgavjga/jgIHnubDjgorov5TjgZfk

vb/nlKjjgafjgY3jgovluIPjg57jgrnjgq/jgpLmnaXmnIjvvIg05pyI77yJ5pyr

44G+44Gn44Gr44Gq44KT44Go44GLMeWEhOaemuimj+aooeOBp+iqv+mBlOOBp+OB

jeOBquOBhOOBi+OAjeOBqOOBhOOBhuOBruOBjOW9k+aZguOBruiqjeitmOOBp+OB

l+OBn+OAguengeiHqui6q+OBjOOBk+OBruW4g+ODnuOCueOCr+eUn+eUo+ODu+iq

v+mBlOODl+ODreOCuOOCp+OCr+ODiOOBq+WPgueUu+OBl+OAgeS6i+alreiAheOB

qOOBruiqv+aVtOOBq+aQuuOCj+OBo+OBn+OBruOBr+OBvuOBleOBq+OBk+OBrumg

g+OBp+OBmeOAggoK5pys5bm0M+aciOOBq+OBr+OAgeODieODqeODg+OCr+OCueOD

iOOCouOChOOCueODvOODkeODvOOBruW6l+mgreOBi+OCieODnuOCueOCr+OBjOa2

iOOBiOOAgeS4gOaXpeS4reODnuOCueOCr+OBq+mWouOBmeOCi+WgsemBk+OBjOa1

geOCjOOAgeWbveS8muOBp+OCguODnuOCueOCr+OBruS+m+e1puS4jei2s+OBq+Wv

vuOBmeOCi+aUv+W6nOOBruWvvuW/nOOCkumdnumbo+OBmeOCi+izquWVj+OBjOe2

muOBjeOAgeODnuOCueOCr+S+m+e1puOBruOBn+OCgeOBq+OBguOCieOChuOCi+aJ

i+OCkuWwveOBj+OBm+OBqOiyrOOCgeeri+OBpuOCieOCjOOCi+eKtuazgeOBp+OB

l+OBn+OAguWFqOWbveawkeOBjOS4gOaWieOBq+ODnuOCueOCr+OCkuiyt+OBhOax

guOCgeOCi+OBqOOBhOOBhuOBk+OCjOOBvuOBp+OBq+e1jOmok+OBl+OBn+OBk+OB

qOOBruOBquOBhOeIhueZuueahOOBqumcgOimgeWil+OBruS4gOaWueOAgeS4reWb

veOBi+OCieOBrui8uOWFpeOBjOWFqOOBj+imi+mAmuOBm+OBquOBhOOBquOBi+OB

p+OAgTHlhITmnprjgajjgYTjgYbopo/mqKHjga7nm67mqJnjgYzlvaLmiJDjgZXj

gozjgabjgYTjgY3jgb7jgZfjgZ/jgIIK77yc44Gq44Gc44CB5pel5pys6KO944Gu

44Oe44K544Kv44KS6Kq/6YGU44GX44Gq44GL44Gj44Gf44Gu44GL77yeCgrjgZ3j

goLjgZ3jgoLjg57jgrnjgq/jga7mnZDmlpnjgajjgarjgovjgqzjg7zjgrzjga/k

uK3lm73jgafjgZfjgYvnlJ/nlKPjgZfjgabjgYrjgonjgZrjgIHjgqzjg7zjgrzj

ga7lm73lhoXlnKjluqvjgoLmrobjganlrZjlnKjjgZfjgarjgYTnirbms4Hjgafj

gZfjgZ/jgIIKCuOBk+OBruOBn+OCgeOAgeWbveWGheOBp+S+m+e1puOBp+OBjeOC

i+W4g+ODnuOCueOCr+OBr+OAgeOBm+OBhOOBnOOBhDHkuIfmnprjgYvjgonlpJrj

gY/jgabjgoIxMOS4h+aemuOBruODrOODmeODq+OBp+OAgeOBiuOCiOOBnTHlhITm

nprjgajjgYTjgaPjgZ/opo/mqKHjgavjga/lsYrjgYvjgarjgYTnirbms4Hjgafj

gZfjgZ/jgILku67jgavjgarjgpPjgajjgYvlm73lhoXjgavmnZDmlpnjgajjgarj

govjgqzjg7zjgrzjgpLmjIHjgaHovrzjgpPjgafjgoLjgIHluIPoo73jg57jgrnj

gq/jgpLnuKvoo73jgZnjgovoqK3lgpnvvIjjg5/jgrfjg7PvvInjgoTkurrlk6Hj

gpLmj4PjgYjjgovjgZPjgajjgoLlm7Dpm6Pjgarnirbms4HjgafjgZfjgZ/jgILn

j77lnKjjgafjgoLjgIHjgIzluIPoo73jg57jgrnjgq/jgpLkvZzjgovjgarjgonm

l6XmnKzjgafnlJ/nlKPjgZnjgbnjgY3jgaDjgI3jgajjga7mhI/opovjgoLlpJrj

gYTjga7jgafjgZnjgYzjgIHlm73lhoXjga7nlJ/nlKPoqK3lgpnjga7mrobjganj

gYzkuI3nuZTluIPjgpLnlKjjgYTjgZ/kvb/jgYTmjajjgabjg57jgrnjgq/nlKjj

ga7mqZ/morDoo4Xnva7jgafjgZnjgIIK77yc44Gq44Gc44CB44CM6IiI5ZKM44CN

44KS5aeL44KB44Go44GZ44KL54m55a6a44Gu5LyB5qWt44Go44Gg44GR5aWR57SE

44GX44Gf44Gu44GL77yeCgrku4rlubQz5pyI5pmC54K544Gn44CB5rW35aSW44Gn

MeWEhOaemuimj+aooeOBruODnuOCueOCr+eUqOOCrOODvOOCvOOCkuiqv+mBlOOB

meOCi+ODjeODg+ODiOODr+ODvOOCr+OCkuacieOBl+OAgeW4g+ijveODnuOCueOC

r+OCkuadkOaWmeOBruiqv+mBlOOBi+OCieijgeaWreOAgee4q+ijveOAgeaknOWT

geOAgeiii+ipsOOCgeOBvuOBp+OCkuS4gOiyq+OBl+OBpuihjOOBiOOCi+S8geal

reOBr+OAgeiIiOWSjOOBl+OBi+OBguOCiuOBvuOBm+OCk+OBp+OBl+OBn+OAggoK

44Gf44Gg44CB6IiI5ZKM5Y2Y54us44Gn44GvMeWEhOaemuimj+aooeOBrueUn+eU

o+OBr+WbsOmbo+OBp+OBguOBo+OBn+OBn+OCgeOAgeS4reWbveOBp+e4q+ijvemW

ouS/guOBrualreWLmee1jOmok+OBruOBguOBo+OBn+S8iuiXpOW/oOOBqOODnuOD

hOOCquOCq+OCs+ODvOODneODrOOCt+ODp+ODs+OBruWNlOWKm+OCkuW+l+OBpueU

n+eUo+S9k+WItuOCkuani+evieOBl+OBn+OCguOBruOBp+OBmeOAggrlvZPliJ3j

gIHjgZPjgozjgokz56S+44GL44KJ44Gv44CBNOaciOacq+OBvuOBp+OBqzHlhITm

nprjga7nlJ/nlKPjgarjganliLDlupXnhKHnkIbjgaDjgajoqIDjgo/jgozjgb7j

gZfjgZ/jgYzjgIHml6XmnKzjga7nqq7nirbjgpLmlZHjgYbjgZ/jgoHjgavjgYLj

gonjgobjgovmiYvjgpLlsL3jgY/jgZfjgabnm67mqJnjgpLpgZTmiJDjgZfjgabm

rLLjgZfjgYTjgajjgYrpoZjjgYTjgZfjgb7jgZfjgZ/jgILntZDmnpzjgIHjg5nj

grnjg4jjgrfjg4rjg6rjgqrjgafntIQ55Y2DNueZvuS4h+aemuOBvuOBp+epjeOB

v+S4iuOBkuOAgTHlhITmnpropo/mqKHjga7nm67mqJnpgZTmiJDjga7lj6/og73m

gKfjgYLjgorjgajjgZfjgabjgIHnm7TjgaHjgavmnZDmlpnjga7norrkv53jgIHo

o73pgKDjg6njgqTjg7Pjga7nq4vjgaHkuIrjgZLjgpLjgrnjgr/jg7zjg4jjgZfj

gabjgYTjgZ/jgaDjgY3jgb7jgZfjgZ/jgIIK77yc5a6f6Zqb44Gu44Oe44K544Kv

55Sf55Sj5L2T5Yi244Gv44Gp44GG44Gq44Gj44Gm44GE44KL44Gu44GL77yeCgo0

5pyI5pyr44G+44Gn44GrMeWEhOaemuimj+aooeOBrueUn+eUo+OCkuihjOOBhuOB

n+OCgeOBq+OAgeiIiOWSjOOBoOOBkeOBp+OCguS4reWbveOBq+OBiuOBhOOBpue0

hDIw44Kr5omA44Gu57ir6KO95bel5aC044Go57SEMeS4h+S6uuOBrue4q+OBhOWt

kOOBqOaknOafu+imgeWToeOCkueiuuS/neOBl+OBpuOBhOOBvuOBmeOAggoK44GT

44KM44Gr44Gv44CB6IiI5ZKM44GM5Lit5Zu944Gr5pyJ44GZ44KL5qeY44CF44Gq

44ON44OD44OI44Ov44O844Kv44KS6aeG5L2/44GX44Gm44CB5bCL5bi444Gn44Gq

44GE44K544OU44O844OJ44Gn44GT44Gu5L2T5Yi244KS5pW044GI44Gf44Go6IGe

44GE44Gm44GE44G+44GZ44CC5LyK6Jek5b+g44KE44Oe44OE44Kq44Kr44Kz44O8

44Od44Os44O844K344On44Oz44KC54us6Ieq44Gu44ON44OD44OI44Ov44O844Kv

44Gn5p2x5Y2X44Ki44K444Ki44Gu5Zu944CF44Gr57ir6KO95bel5aC044Go5Lq6

5ZOh44KS56K65L+d44GX44CB55Sf55Sj44KS6KGM44Gj44Gm44GE44G+44GZ44CC

CuOBk+OCjOOBoOOBkeOBruS6uuWToeOCkumbhuOCgeOBpuOCguOAgee4q+OBhOWt

kOOBleOCkzHkurrlvZPjgZ/jgoox5LiH5p6a44KC44Gu44Oe44K544Kv44KS57ir

6KO944GZ44KL5b+F6KaB44GM44GC44KK44CBMjTmmYLplpPkvZPliLbjgafjga7n

lJ/nlKPjgpLooYzjgaPjgabjgYTjgb7jgZnjgILlkITlt6XloLTjgafkuIDlrprp

h4/nlJ/nlKPjgYzpgLLjgpPjgaDmrrXpmo7jgafmpJzlk4Hjg7vmorHljIXjgZfj

gIHnm7TjgaHjgavoiKrnqbrmqZ/jgafml6XmnKzjgavpgYvjgbbjgajjgYTjgaPj

gZ/jgqrjg5rjg6zjg7zjgrfjg6fjg7PjgavjgarjgaPjgabjgYTjgb7jgZnjgIIK

77yc44Gq44Gc44CB5LiN6Imv5ZOB44GM55m655Sf44GX44Gf44Gu44GL77yeCgrl

vZPliJ3jgIHoiIjlkozjgYvjgonjga/jgIzoiIjlkozjga7lkI3liY3jgYzlh7rj

govku6XkuIrjgIHlvpPmnaXpgJrjgorjga7lm73lhoXmpJzlk4HjgpLooYzjgYbj

ga7jgafjgarjgZHjgozjgbDjgZPjga7ku5Xkuovjga/lvJXjgY3lj5fjgZHjgonj

gozjgarjgYTjgI3jgajlvLfjgY/oqIDjgo/jgozjgb7jgZfjgZ/jgILjgZfjgYvj

gZfjgIHoiIjlkozjga7lm73lhoXmpJzlk4Hjga/jgIHkuIDml6blhajjgabjga7j

g57jgrnjgq/jgpLkuIDjgYvmiYDjga7mpJzlk4Hmlr3oqK3jgavpm4bjgoHjgIEx

44Of44Oq56iL5bqm44Gu57ir44GE55uu44KE5oqY44KK55uu44Gu44Ga44KM44CB

5biD44Gu44G744Gk44KM44KC5LiN6Imv5ZOB44Go44GX44Gm5by+44GE44Gm44GX

44G+44GG44Go44GE44GG44Os44OZ44Or44Gu5a++5b+c44Gn44GZ44CC44GT44Gu

44Gf44KB5b6T5p2l44Gp44GK44KK44Gu5Zu95YaF5qSc5ZOB5L2c5qWt44KS6KGM

44Gj44Gm44GE44Gf44Gu44Gn44Gv55uu5qiZ44Gu5Y2K5YiG44KC6YGU5oiQ44Gn

44GN44Gq44GE5Y+v6IO95oCn44GM44GC44KK44CB57eK5oCl6YG/6Zuj55qE44Gq

5a++5b+c44Go44GX44Gm54++5Zyw5qSc5ZOB44KS5Z+65pys44Go44GZ44KL44Kq

44Oa44Os44O844K344On44Oz44Gr5aSJ5pu044GX44Gm44KC44KJ44GE44G+44GX

44Gf44CCCuaXpeacrOOBq+aMgeOBoei+vOOCk+OBoOW+jOOBr+OAgemFjeW4g+a6

luWCmeautemajuOBp+acgOe1guODgeOCp+ODg+OCr+OCkuihjOOBhuOBruOBp+OB

meOBjOOAgeOBk+OBk+OBp+OBruODgeOCp+ODg+OCr+OCkuOBmeOCiuaKnOOBkeOB

n+S4jeiJr+WTgeOBjOWIqeeUqOiAheOBruaJi+WFg+OBq+WxiuOBhOOBpuOBl+OB

vuOBo+OBn+OBk+OBqOOBr+iqoOOBq+eUs+OBl+ios+OBquOBj+aAneOBo+OBpuOB

hOOBvuOBmeOAguOBvuOBn+OAgeiHquayu+S9k+OBq+OCiOOBo+OBpuOBr+OAgeOB

k+OBhuOBl+OBn+S9nOalreOCkuS/neWBpeaJgOOBq+S+nemgvOOBl+OBn+OBk+OB

qOOBp+OAgeS/neWBpeaJgOiBt+WToeOBruS9nOalreOCkuWil+OChOOBmee1kOae

nOOBq+OBquOBo+OBn+OBk+OBqOOCguWPjeecgeeCueOBqOOBl+OBpuiqjeitmOOB

l+OBpuOBhOOBvuOBmeOAggoK44Gh44Gq44G/44Gr44CB54m55a6a44Gu5Yy755mC

55So44Oe44K544Kv44KS6Zmk44GN44CB44Oe44K544Kv44Gr5a++44GZ44KL5Zu9

6Zqb55qE44Gq5ZOB6LOq5Z+65rqW44Gv5a2Y5Zyo44GX44G+44Gb44KT44CC44G+

44Gf44CB5Zu95YaF44Gr44GK44GR44KL44Oe44K544Kv44Gu5qWt55WM5Zuj5L2T

44GM5Ye644GX44Gm44GE44KL5ZOB6LOq5Z+65rqW44KC44Ob44Or44Og44Ki44Or

44OH44OS44OJ44Gu5qSc5Ye65Z+65rqW44GM56S644GV44KM44Gm44GE44KL44Gg

44GR44Gn44CB5ZCE56S+5q+O44Gu6Ieq5Li75Z+65rqW44Gr44KI44KL5qSc5ZOB

44GM5Z+65pys44Go44Gq44Gj44Gm44GE44G+44GZ44CCCgrkuI3oia/lk4Hjga7l

oLHpgZPjgpLlj5fjgZHjgabjgIHnj77lnKjjgafjga/kuovmpa3ogIXjgavjgYrj

gYTjgabjgoLoh6rkuLvnmoTjgavlm73lhoXmpJzlk4HjgpLlrp/mlr3jgZfjgabj

gYTjgZ/jgaDjgYTjgabjgYTjgovjgajjgZPjgo3jgafjgZnjgILjgIzlj5fms6jj

gZfjgZ/ku6XkuIrjgIHkvIHmpa3jga/lroznkqfjgaroo73lk4HjgpLlsYrjgZHj

govjga7jgYzlvZPnhLbjgaDjgI3jgajjgYTjgaPjgZ/mhI/opovjga/jgoLjgaPj

gajjgoLjgafjgZnjgYzjgIHjgZ3jgozjga/jgYLjgY/jgb7jgaflubPmmYLjgavj

gYrjgZHjgovluLjorZjjgafjgIHnt4rmgKXkuovmhYvjga7lr77lv5zjgavjgb7j

gafjgZPjgozjgpLopoHmsYLjgZnjgovjgZPjgajjga/phbfjgaDjgajmgJ3jgYTj

gb7jgZnjgILjgZ3jgozmlYXj Permalink | 記事への反応(1) | 14:01

2020-03-01

Message for DIALOGUE+

https://youtu.be/dxyFwdCsABU?t=140

ゆーな「これからは私がみんなを支えるので」

やかん「いっぱい失敗しちゃうと思うけど」

ねーね「こういうおっきいところで8人で歌って踊って」

さっぴ「名をこの日本に轟かせたい」

きょんユニット活動とかできないって思ってて」

まゆゆん「こんな仲間っているんだなって」

まなてぃ「友達誰とかいわれるともう一番にみんなの顔が浮かぶし」

ゆりにゃ「ダイアローグとして歩んでいきたいって思ってます

2020-01-31

VIMを使っていて gfファイル開くときVue.jsとかで

import fuga from '@/hoge/fuga.js'

みたいなファイルパスプロジェクト任意ディレクトリを示すアットマークが入っている謎のインポート表記があるやつを開く方法

autocmd FileType vue setlocal isfname+=@-@  includeexpr=substitute(v:fname,'^@/','src/','')

2019-04-06

作画資料参考ページ

個人用メモ



https://e-hentai.org/g/1383297/605020f175/

平成同人物語

https://e-hentai.org/tag/parody:getsuyoubi+no+tawawa

月曜日のたわわ

ttps://chan.sankakucomplex.com/?tags=himura_kiseki%20order%3Apopular

月曜日のたわわ(sankakucomplex)

https://e-hentai.org/g/1568331/7eb9441874/

ららまじチューナーノート2

https://e-hentai.org/g/1520949/67a7887ed5/

[よー清水]「キャラの背景」描き方教室 CLIP STUDIO PAINTで描く! キャラの想いを物語風景技術

https://e-hentai.org/g/1511811/c6c1574bad/

[isuZu] プロが教える!CLIP STUDIO PAINT PROの教科書

https://e-hentai.org/?page=9&f_cats=767&f_search=official&f_sname=on&f_stags=on&f_sr=on&f_srdd=5&advsearch=1

景教本が特に多いページ

ttps://e-hentai.org/g/1483978/1f6473e191/?p=4

クロノトリガーアルティマニア

ttps://e-hentai.org/g/1508441/aa361ba353/

聖剣伝説LOM キャラクター設定画集

ttps://e-hentai.org/g/1581326/3fc1dc150a/

ミカピカゾ

ttps://danbooru.donmai.us/posts?tags=mika_pikazo

ミカピカゾ2

ttps://e-hentai.org/g/1489415/90f6b1c158/?p=2

ファイアーエムブレム設定資料

ttps://e-hentai.org/?f_cats=34&f_search=megami+magazine&advsearch=1&f_sname=on&f_stags=on&f_spf=&f_spt=

メガミマガジン

ttps://e-hentai.org/g/1353102/869b408c7e/

ごちうさ画集

ttps://e-hentai.org/g/1338066/466687e162/

アズールレーン一周年記念画集

ttps://e-hentai.org/g/1526505/50eed6bb19/

機動警察パトレイバー設定資料

ttps://e-hentai.org/g/1559166/2b371b13b1/

RocksyChan 赤ずきんコス

ttps://e-hentai.org/g/562431/389777fa90/

良いドレス資料

ttps://danbooru.donmai.us/posts?page=4&tags=love_live%21+official_art+

ラブライブオフィシャルアートワーク

ttps://danbooru.donmai.us/posts?tags=atelier_%28series%29+official_art

アトリエシリーズオフィシャルアートワーク

ttps://danbooru.donmai.us/posts?page=1&tags=hibike%21_euphonium+official_art

響け!ユーフォニアム

ttps://danbooru.donmai.us/posts?page=1&tags=tamako_market+official_art

たまこまーけっと

ttps://danbooru.donmai.us/posts?page=1&tags=k-on%21+official_art+

けいおん!

ttps://yande.re/post?page=1&tags=houkago_no_pleiades

放課後のプレアデス

ttps://yande.re/post?page=1&tags=fantasista_doll

ファンタジスタドール

ttps://e-hentai.org/g/1076222/6a007e40b0/

Cave Shooting Art Works

ttps://yande.re/post?tags=disc_cover

CDジャケット

ttps://danbooru.donmai.us/posts?tags=mandrill

mandrill氏イラスト集

ttps://danbooru.donmai.us/posts?tags=kantoku

カントクイラスト集

ttps://danbooru.donmai.us/posts?tags=kanzaki_hiro

かんざきひろイラスト集

ttps://danbooru.donmai.us/posts?tags=namori

なもりイラスト集

ttps://danbooru.donmai.us/posts?page=1&tags=nardack

nardack氏イラスト集

ttps://chan.sankakucomplex.com/?tags=hanamura_mai%20order%3Apopular

hanamura mai

ttps://chan.sankakucomplex.com/?tags=narumi_arata%20order%3Apopular

arata narumi

ttps://chan.sankakucomplex.com/ja/?tags=monable

monable

ttps://chan.sankakucomplex.com/ja/?tags=mokyu

mokyu

ttps://chan.sankakucomplex.com/ja/?tags=mmu

mmu

ttps://chan.sankakucomplex.com/ja/?tags=utako_yukihiro

雪広うたこ

ttps://chan.sankakucomplex.com/?tags=non-web_source%20order%3Apopular

non-web source

ttps://chan.sankakucomplex.com/?tags=dengeki_girl%27s_style%20order%3Apopular

dengeki girl's style

ttps://danbooru.donmai.us/posts?tags=whoisshe

whoisshe

ttps://danbooru.donmai.us/posts?page=2&tags=anmi

anmi

ttps://danbooru.donmai.us/posts?tags=tiv

tiv

ttps://danbooru.donmai.us/posts?tags=misoni_comi

misonikcomi

ttps://yande.re/post?page=3&tags=shirabi

shirabi

ttps://yande.re/post?page=2&tags=range_murata

村田蓮爾

ttps://danbooru.donmai.us/posts?page=1&tags=ataruman

ataruman

ttps://yande.re/post?page=1&tags=cuteg

cuteg

ttps://yande.re/post?page=3&tags=oyari_ashito

大槍葦人

ttps://danbooru.donmai.us/posts?page=1&tags=kuroboshi_kouhaku

黒星紅白

ttps://danbooru.donmai.us/posts?page=1&tags=momoko_%28momopoco%29

momoko

ttps://danbooru.donmai.us/posts?tags=necomi

necomi

ttps://e-hentai.org/g/1515496/7385b962a1/

幻像黒兎

ttps://danbooru.donmai.us/posts?tags=naruko_hanaharu

鳴子ハナハル

ttps://danbooru.donmai.us/posts?page=6&tags=narumi_arata

鳴海アラタ

ttps://danbooru.donmai.us/posts?page=1&tags=nishihara_isao

いさお

ttps://danbooru.donmai.us/posts?tags=shigure_ui

しぐれうい

ttps://danbooru.donmai.us/posts?page=1&tags=nekometaru

ねこめたる

ttps://danbooru.donmai.us/posts?tags=himura_kiseki

月曜日のたわわ

ttps://danbooru.donmai.us/posts?tags=u_jie

u介

ttps://danbooru.donmai.us/posts?page=1&tags=kkuem

kkuem

ttps://danbooru.donmai.us/posts?tags=mery_%28yangmalgage%29

mery

ttps://danbooru.donmai.us/posts?page=1&tags=akizone

akizone

ttps://danbooru.donmai.us/posts?tags=kagawa_yuusaku

香川悠作

ttps://ocolorboard.tumblr.com/

ocolorboard

ttps://danbooru.donmai.us/posts?page=1&tags=lf

If

ttps://danbooru.donmai.us/posts?page=1&tags=handheld_game_console+official_art+

携帯ゲーム機を持つポーズ

ttps://danbooru.donmai.us/posts?tags=heart_hands

手でハートを作るポーズ

ttps://chan.sankakucomplex.com/?tags=shopping+order%3Apopular+%E5%85%AC%E5%BC%8F%E3%82%A2%E3%83%BC%E3%83%88&commit=Search

買い物シチュエーション

ttps://danbooru.donmai.us/posts?page=1&tags=undressing+official_art+

海外版:脱衣シチュエーション

ttps://danbooru.donmai.us/posts?tags=novel_illustration

ノベルイラストレーションラノベイラスト集

ttps://danbooru.donmai.us/posts?tags=hiota_no_kanojo_ga_ore_no_motteru_eroge_ni_kyoumi_shinshin_nandaga......

ttps://danbooru.donmai.us/posts?page=492&tags=multiple_girls+official_art+

multiple girls 492ページ目

https://e-hentai.org/g/1393321/d6d6ceb56b/

https://e-hentai.org/g/1211889/df9210a0f8/

https://e-hentai.org/g/1307324/9b7765cdb4/








仕事が来たという報告があったサイト 他に情報が上がれば随時追加

 ・pixiv

 ・TINAMI

 ・アイラブユカンパニー ttp://www.iloveyou-company.com/

 ・アビルダング ttp://abbildung.jp/

 ・Arrows ttp://www.arrows-g.jp/

 ・アンシャントマン ttp://www.mangaculture.com/

 ・Ameizia ttp://ameizia.co.jp/

 ・アクア ttp://aqua-web.co.jp/

 ・S-TRIVE ttp://s-trive.com/

 ・EXYS ttp://exys2008.com/

 ・オートクチュール ttp://hautecouture.jp/

 ・Ga-show ttp://ga-show.co.jp/";

 ・Qmax ttp://www.qmax.co.nz/

 ・クラウドゲート ttp://www.crowdgate.co.jp/

 ・QBIST ttps://www.qbist.co.jp/

 ・クラウドグラフィックス ttp://crowdgraphics.jp/

 ・クラゲ ttp://crage.co.jp/

 ・クリークアンドリバー ttp://www.cri.co.jp/

 ・グレープ ttp://www.grapee.co.jp/

 ・グレイゾーン ttp://gray-zone.biz/

 ・グラフィクト9 ttp://graphict9.jp/

 ・グラホリック ttp://grapholi.com/

 ・サーチフィールド ttps://plusgeek.jp/

 ・C2 ttp://www.c2inc.co.jp/

 ・サイドランチ ttp://www.sideranch.co.jp/

 ・サンバード ttp://sun-bird.jp/

 ・SeAL ttp://seal-web.jp/

 ・スカイリンク ttps://sky-link.co.jp/

 ・スタジオハードデラックス ttp://www.hard.co.jp/

 ・Skillots ttp://www.skillots.com/design/

 ・スポマ ttp://spoma.jp/company/

 ・テクノアート ttp://technoart-tokyo.com/

 ・デジタルハーツ ttp://www.digitalhearts.co.jp/

 ・デジタル職人 ttp://digishoku.co.jp/

 ・トゥーザワールド ttp://totheworld.jp/

 ・PANDAGRAPHICS ttp://panda-graphics.net/

 ・Permission ttp://www.permission.co.jp/

 ・フロンティアエージェント ttp://www.frontier-agent.co.jp/

 ・BookLive Artstudio ttp://booklive.co.jp/artstudio/

 ・フーモア ttp://whomor.com/

 ・フーム ttp://www.foom.co.jp/

 ・マグノリアファクトリー ttp://magnolia-factory.com/

 ・水野プロダクション ttp://www.mizunopro.co.jp

 ・ムゲンアップ ttps://station.mugenup.com/

 ・Monoii ttp://www.monoii.jp

 ・ベアトリックス ttp://www.beatrixx.co.jp/

 ・ロータス ttp://www.lotus-creative.net/

 ・ロフトワーク ttp://www.loftwork.jp/

 ・ランサーズ ttp://www.lancers.jp/

 ・Wakka ttps://www.wakka-illustorder.com/

 ・キュートロン ttp://www.qtron.jp/index.html

 ・ex-design ttp://www.exdesign.info/

 ・Asian Bridg ttp://graphics.asianbridge.jp/

 ・トラスロッド ttp://trussrod.jp/

 ・ORATTA ttp://www.oratta.net/

 ・ツジヒール ttp://tsujiheal.com...contact/recruit.html

 ・シリコンスタジオ ttp://www.siliconstudio.co.jp/

 ・Lavan7(マエストロ?) ttp://maestro-work.com/

 ・フロンティアクリエイターズプロジェクト(FCP) ttps://fw-fcp.jp/


261名無しさんお腹いっぱい。2020/02/02(日) 21:51:40.21ID:eRB+DOb2

>>258

自分もツイとかシブやってなくて飛び込み面接ポートフォリオ持って仕事貰いに行ったわ

全くの素人(デッサン赤まみれレベル)だったけど普通に仕事貰えて今まで悶々としていたのは全て無駄だった事に気がついた

上手くなるには~とか、仕事受けられるレベルは~ってのは自分妄想が混じる

仕事金も貰えて更に勉強も出来る素晴らしい環境

263名無しさんお腹いっぱい。2020/02/02(日) 22:07:41.75ID:wA0UU6Qz>>264

上手くなって何とかしようという発想しかねぇわ

飛び込み面接とかムリムリカタツムリ

264名無しさんお腹いっぱい。2020/02/02(日) 22:20:28.70ID:eRB+DOb2

>>263

企業から「上手いです!仕事受けて貰えますか…!?」ってのを期待するのが勘違い

「なに?仕事欲しいの?…じゃあお前でもできる仕事これな」って感じでもいいから何か仕事する

気がついたら仕事絵は増えていき、いつの間にかその絵を見た他企業からお仕事受けて貰えますか…?」に変わるよ

下積み時代は年齢的にも早く始める方がいいし、仕事してる時間の成長と1人練習する時間じゃ全く上達具合が違うから後悔してる

2019-01-31

e+登録した

SMS認証はまあいいんだけど認証コード取得のために登録したらすごい勢いで電話がかかってくる

おそらく音声ガイダンスなのだろうけどその電話番号で検索するとアダルトサイト請求とか出てくる

認証コード自体ショートメッセージで別の番号からくるのでユーザ的にその電話必要なく

ユーザ体験としては「e+SMS認証したら秒でアダルト詐欺から電話がかかってくる」

もしかして登録ページ自体が巧妙な偽物で水飲み場フィッシング詐欺なのかな?と思ってしまったしそれを疑い始めると何を信じていいかからなくなる

Google電話番号を検索すると1番上に「ワンクリック アダルトサイト請求詐欺」と出てくるのでガセならe+は訂正なり何かの措置をとったほうがいいのでは?

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;
}

2018-12-23

anond:20181223182722

一気に並べてみる

オーソドックスな書きかた

int i;
int space;
for (int i = 0; i < 8; i++)
{
	for (space = 0; space < i; space++)
	{
		printf(" ");
	}
	printf("Hello world\n");

}

すまん <は半角の<に置き換えてくれ(w)

バッファをつかってループを1つ削る

	int i;
	int space;
	char buffer[8];
	char buffer2[8];
	memset(buffer, 0, 8);
	memset(buffer2, 0, 8);
	for (int i = 0; i < 8; i++)
	{
		memset(buffer, 0x20, i);
		printf("%sHello world\n",buffer);

	}

memsetも削ってみる

	int i;
	int space;
	char buffer[8];
	char buffer2[8];
	memset(buffer, 0, 8);
	memset(buffer2, 0, 8);
	for (int i = 0; i < 8; i++)
	{
		buffer[i] = 0x20;
		printf("%sHello world\n",buffer);

	}

この場合特に影響はないが一般的にはmemsetを使う使わないは大きな影響になるので

memsetを削る場合は注意が必要

C++を使ってみる

	std::string space;
	for (int i = 0; i < 8; i++) {
		printf("%sHello world\n", space.c_str());
		space += " ";
	}

C++を使ってみるの別回答

	std::string space_org;
	for (int i = 0; i < 8; i++) {
		std::string space = space_org + " ";
		printf("%sHello world\n", space.c_str());
		space_org = space;
	}

考察

ざつにかんがえても 書き方いろいろ 

それぞれメリット デメリットが有る

まり まぁ どれがいいというよりは

状況に応じてかき分けていく必要がある

学校の授業などだと

アルゴリズムの話で

ヒープソート マージソート クイックソート比較みたいな話があるけど

そこまで難しい話にいかなくても

ハローワールドだけ見てかつ雑に考えてもこのぐらいは

書き方がたくさんある

どれを書くか?どれがいいか? 考えると面白い

anond:20181223150830

3つともおなじ

int i;
int space;
for (int i = 0; i < 8; i++)
{
	for (space = 0; space < i; space++)
	{
		printf(" ");
	}
	printf("Hello world\n");

}

すまん <は半角の<に置き換えてくれ(w)

	int i;
	int space;
	char buffer[8];
	char buffer2[8];
	memset(buffer, 0, 8);
	memset(buffer2, 0, 8);
	for (int i = 0; i < 8; i++)
	{
		memset(buffer, 0x20, i);
		printf("%sHello world\n",buffer);

	}
	int i;
	int space;
	char buffer[8];
	char buffer2[8];
	memset(buffer, 0, 8);
	memset(buffer2, 0, 8);
	for (int i = 0; i < 8; i++)
	{
		buffer[i] = 0x20;
		printf("%sHello world\n",buffer);

	}

書き直すごとにアルゴリズムちょっとづつ良くなったり悪くなったり

どれがすき?

int i;
int space;
for (int i = 0; i < 8; i++)
{
	for (space = 0; space < i; space++)
	{
		printf(" ");
	}
	printf("Hello world\n");

}

すまん <は半角の<に置き換えてくれ(w)

====

Hello world
 Hello world
  Hello world
   Hello world
    Hello world
     Hello world
      Hello world
       Hello world

2018-12-10

anond:20181210113445

俺はワークブーツちゃん

川底のワークブーツこういうのならそんなに違和感ない。

問題は「楽にはける」という当初の目的から逸脱してること...

2018-10-16

anond:20181016154609

知らんけど、Apple Care+に入ってる前提として、インシデント代は全額過失者負担でも別におかしくないんちゃうかな。(8000円くらい)

壊れる可能性がある中でApple Careに入ってないのなら全額弁償はナシで折半位やろうけど。

2018-09-26

プロデューサーよ、お前らの愛は結局金か?

どうも、元アイマスPです。

元、というのは私はもうすでにPを引退たからです。

現状アプリの類は消去しました。

グッズの類が大量に残っていますが、まぁいずれ処分するでしょう。

今回このブログを書こうと思ったのは、私のとある胸糞悪い経験を吐き出しておきたかったのと、これを見たPさん、あるいはアイドルマスターに限らず、いわゆる課金アプリゲームプレイしてる全ての人に表題の内容を問いかけたいからです。

課金ゲームにおける「愛」は結局課金しか測れないのか?という事

アイマス風の言い方をすれば

プロデューサーの「担当愛」は結局課金額でしか測れないのか?

という事です。

事の発端は2年前、私がサークルの先輩からアイドルマスターを勧められた事に始まります

私はどちらかというとオタクコンテンツはそれなりに嗜んでいたのでアイマスもすぐにはまり、のめり込んでいきました。

アニマスから入り、劇場版で気になった後輩の子達を見てミリオンライブを始め、シンデレラガールズSideMと次々にどハマりしていきました。

改めて説明するまでもないと思いますが、アイマスにはゲームライブがありますゲーム内のガシャを回し、イベントを走って担当SRカードをゲットする。ライブ声優さんパフォーマンスを見て感動して「アイマス最高」と唱える(笑)まぁそんな感じで各々楽しんでると思います

コンテンツ応援するにはいろんな方法がありますゲーム課金する、ライブに参加する、グッズを買う、二次創作をしてみる。

楽しみ方は本来人それぞれであり、それぞれがそれぞれの形で趣味謳歌しています

私の楽しみ方は基本的ライブに参加する事でした。

アイマスにハマった当初、私はまだ学生でした。

学生アルバイトでは月々稼げる金額はどんなに頑張ってもたかが知れています

どんなに頑張っても、社会人が月々稼げる金額になど到底及ばない事は想像に難くないでしょう。

アイマスを含めいわゆるソーシャルゲームには「天井」が設けられていることが多いです。

ガシャなどで「この金額までつぎ込めば必ず目当てのカードが手に入りますよ。」というボーダーラインだ。

ゲームにもよるがアイマスは大体ソシャゲの方は5万くらい、音ゲーアプリの方だと10万程度だろうか。

5万10万など学生にとってはかなりの大金である

それ以上を稼ぎ出せたりお小遣いをもらっていたりと状況は様々だがこの金額を毎月叩き出せる人は全国でもそんなにいないだろう。

さらイベントランキング上位に到達するためにも上記レベル課金はある程度必須と言っていい。

私は各コンテンツ(当時3つ)毎に「担当(他のコンテンツで言うところの「推し」)が複数人いた。

一人がイベントないしガシャで来たら5〜10万ぶっ飛ぶのである

しかもそれが複数人いると言うことは数ヶ月に一回レベルでその出費、ましてやイベントが重なろうものなら倍プッシュである

どんなにバイトを増やして掛け持ちしても追いつけるものではない。

そもそもバイトを増やしたら肝心の学業遊び就活諸々に支障が出る。

でも、担当の事は本当に好きだから何かしらの形で応援したい。

なので私はライブを中心に応援することを選んだ。

ライブなら事前に日程が設定されているのでそれに向けて貯金ができる。

ライブを通じて金銭面でも、気持ち的にも担当コンテンツ応援できる。

そう思っていた。

だが、アイマス布教してくれた先輩(仮にN氏としよう)は違った。

彼は社会人であるしかもどうやらそこそこ良い仕事をしていると見られる。

毎月のように一定数の金額を彼の担当のガシャやイベントに費やし、コンスタント入賞していたところを見ると間違いない。

はいわゆる「ライブ勢」が大嫌いで、「声優ライブを見て何が面白いんだ」

「こいつらがライブにつぎ込んだ金を直接課金すれば良い話だ」

「こいつらは声優オタとしては一流だがアイマスPとしては三流」

などと事あるごとにこき下ろしていた。

まぁ、いわゆる「在宅」というやつである

彼はサークルOBオタク仲間の中の中心的な存在だったため、同期後輩もなかなか彼に意見する事は難しかった。

それを知ってか知らずか、彼はその集まりの中で二言目には「プロデューサー流儀」を語りたがり、「コンテンツ課金できない奴は三流のにわか」という定説を偉そうに唱えていた。

私はミリオンライブが初めて触れたアイマスだったため、イベントの走り方など分からず、中途半端課金額で爆死するということを繰り返していた。

といっても前述した通り、学生にとっての大金を定期的にぶち込めるなんて暴挙ができるわけがないので突然イベントが告知されて担当が上位報酬に来てさぁ走れと言われたって走れるわけがない。

突然の出費もある、月々のいろんな支払いがある。それを社会人と比べれば微々たるお金の中で工面してるのだ。趣味であるゲームに対する優先順位なんて、お察しである

それでもなんとか工面したお金をつぎ込んだところで結果は散々たるものだった。それを知ったN先輩は事あるごとに

「お前の担当愛はその程度なのか?」

中途半端な事しかできなくて担当申し訳ないと思わないのか?」

「おい爆死野郎w」

バカにしてきた。

自分担当が本当に好きだったからそれなりに調べてるし、イベントも出来る限り追ってるし、二次創作を出してみたりもした。何よりライブ担当が出演すると分かれば必ずCDを積んだり、e+に殴りこんだり、最悪友達を頼ってでも必ず参加した。極力現地で。

それなのに爆死したら担当を名乗る資格がないのだろうか?

ゲーム課金できなかったら担当としてダメなのか?

そんな漠然とした疑問が胸の内を占めていた。

だが、所詮趣味だし、好きでやっている事だからと気に留めていなかった。

今年の3月あの日が来るまでは。

大学卒業した私はサークル追い出しコンパ(追いコン)に参加した。

1年生から4年生まで数十人という大規模な追いコンで、サークルで顔を合わせるけど名前は知らない後輩も数多くいた。

N先輩も参加していた。

追いコン事態は順調に進み、最後に4年生が一人ずつ挨拶をするとき事件は起きた。

自分の番になった時にN先輩が

「よっ!三流クソにわかP!」

「爆死野郎!」

と大声で叫んでいたのだ。

みんなに聞こえる声で

流石に私も堪忍袋の緒が切れた。

いくらなんでも後輩が何十人もいる前でそんなこと言わなくても良いじゃないか

これでは卒業間際の最後最後で飛んだ赤っ恥である

その時は笑って流したが、後日、新歓ミーティングに顔を出していたN先輩に詰め寄り、あの時の発言意味説明し、訂正して欲しい。本気で恥ずかしかったんだからみんなの前で謝罪してほしいと訴えた。

すると、彼の隣にいた別の先輩(A先輩とする)が顔を真っ赤にして怒り、怒鳴り散らし始めたのだ。

彼の主張を要約すると以下の通りである

・先輩に向かってその態度はなんだ。

大勢の前で生意気な態度を取ったお前もNの事を貶めている。お前にNを断罪する資格などない。お互い様だ。

そもそもアイマスにおいて何を持って担当とするかなんて人それぞれで明確な基準などない。お前の主義主張押し付けるな。

私はとても惨めな気持ちになった。

私はただ、あの時の発言を取り消して欲しかっただけで、せめてみんなの前で謝って欲しかっただけなのに…

これではただの公開処刑ではないか

するとA先輩の怒りっぷりを見たN先輩はへらへらと笑いながらA先輩をなだめ、以下のような主張を始めた。

・酒の勢いで言っただけだ、気にするな。

・お前が○○(私の担当)をいかに愛してるのかはみんながよく知っている。

・なのにも関わらずイベントの走り方が下手くそから私はそれをいじってるだけ

自分は昔ライブ専門でゲームに全く金を落とさない同期に「お前はだから三流なんだ」と言われたことが本当に悔しかった。お前にそうなって欲しくないからああやって言ってあげてたんだ。

彼の口から最後まで「後輩数十人の前で私の名誉を貶めた事に関する謝罪言葉」はありませんでした。

これを期に私はアイマスから遠のきました。百年の恋も冷める瞬間とはこの事なのでしょう。

アイマスPは課金額で他人マウントを取り合うような人間しかいないんだなぁ

こんなデータクラッシュしたら吹っ飛ぶ画像にうん万円も賭けなきゃ担当名乗る資格がないのが、Pの常識なんだなと察してしまいました。

ここまでの話を聞いて

別にこの先輩がおかしいだけ。」

増田が考えすぎ気にしすぎ。」と思う人が大半なのではないかと思います

ですが、私がこの件について許せないのはそこだけではないのです。

私の担当田中琴葉でした。

そう、中の人である種田梨沙さんが昨年活動を休止されて、ミリシタでの実装が大幅に遅れた、あの田中琴葉です。

私は、声優さんの不在によって琴葉の存在だんだん希薄になっていく事をずっと悩んでいました。

4th Liveでも現地で感じた「琴葉が置いていかれてるのではないかという不安」にずっと悩まされていました。(最後のThank youでそれが解消され、安心から大泣きしてしまいましたが笑)

ちょうど就職活動中だった事もあり、イベントになかなか課金ができず、どうすれば琴葉を応援できるのか、どうしたらミリシタから入ったPさんに琴葉がここにいると示すことができるのか、ずっと悩んで、苦しんで、精神をかなり病みましたがそれでも2月に琴葉がミリシタに実装されてやっとこれからなんだと思いました。

自分就職が決まり、やっとこれから琴葉にたんまりお金を使ってあげられる、本気でプロデュースできると思っていました。

その思いを、悩み抜いた思いの全てを、N先輩はみんなの前で汚い足で踏みにじったのです。「課金額が少ない」「ゲーム投資してない」たったそれだけの理由で。

もう一度言いますが、わたしライブを中心にお金を落としています

ライブだけに費やした金額なら数十万に上るでしょう。

でも、それ以外に一切お金をかけていないということではありません。そんなこと有り得ません。

グッズも買ってるしCDだって全て新品で揃えたし肝心のゲームだって課金してます

学生時代はイベント時に1,2万が限度でしたがそれでも担当が来たら必ず走って回すようにしてます

それでも足りないのでしょうか。

担当が取れなかったらその時点でP失格なのでしょうか。

私はあの日大勢の前で3流にわかと罵られないといけなかったのでしょうか。

もう全てがバカバカしくなってしまいました。

5thは一応参加しました、最高でした。

もも自分アイマス人生はこれで終わりだなと思いました。

あんな辱めに公開処刑まで受けては大学の後輩や同期に顔向けできないからです。

いまだにガシャやイベントが来るたびにN先輩の言葉が、あの日の恥ずかしさ惨めさが胸をよぎって、まっすぐアイマスを愛することができないからです。

もうすでに周囲には引退を伝えました。

N先輩はいずれ勝ち誇った顔で「やっぱりあいつはその程度だったかw」と話すことでしょう。

画像データ音声データにうん万もぶち込んで一生イキってろバカ

2018-09-22

JWTに関してのお伺い

http://b.hatena.ne.jp/entry/s/co3k.org/blog/why-do-you-use-jwt-for-session

適当コメントを書いたら

スーパーエンジニアに「そういうことではない」

と厳しい叱責を受けたため、無能の見識を書いてみた。

「聞くは一時の恥、聞かぬは一生の恥」のとおり、

せっかくの機会のため、びしばしセキュリティに関する認識の甘さを指摘してほしい所存

expの期限と任意セッションが切れないデメリットに対する私見

作ったシステムではexpは約1時間でやってしまいました(機密保持契約違反を恐れ多少ぼかしております)

私は無能なのでたぶんユーザーから報告を受けて

確認している間に1時間はかかるからいいやと思ってしまっていた

師はきっとJWT生成直後3秒でユーザー

「これは、セッションハイジャックか・・・!?

と気づいて通報

そして師が2秒で

「これは、セッションハイジャックだ!」

と検知してセッション遮断、秒速で一億円の被害が出るところを阻止する前提なのではないかと推測している

これは確かにJWTだと厳しそうだ

そもそもログインできるアプリなら

セッションハイジャック成功直後にパスワードを変更された場合

セッション任意に切れることに意味はないのでは、と思えてきたが、浅はかだろうか

(師はログインを即座に検知してセッションを切れるから問題ないのか)

とにかくアカウントロック機能を作れば上記懸念全てにきれい対応できそうに見えている

「定期的な鍵交換が必要」に関する私見

この理屈だと例えば.envに書くような他のkeyも定期的な交換が必要に見える

これはまずい、自分の今までの見識の甘さを思い知らされた

今使っているフレームワークリファレンスを見たが

keyは初回に設定したのみで、定期的な交換を勧める文が見つからない

私の検索力不足なのかと思ったが、もしかして彼らもこの危険性に気付いていないのではないか

JWTはhash化してつないでいる前提で

hashのkeyを総当たりで破る仮定で書く

私は無能なのでライブラリを用いることにしている

32文字keyが生成された

解読時間は下記を参考に、計算windows10電卓アプリを用いて手動で行った

https://ja.wikipedia.org/wiki/%E7%B7%8F%E5%BD%93%E3%81%9F%E3%82%8A%E6%94%BB%E6%92%83

数字大文字文字で約60の時は10桁で20万年と書いているが

現代の解析技術20万倍は速度が出ると仮定して1年として計算する

果たして、どのくらいの速度で鍵はやぶられると推定されるのか

とりあえず60を10乗した時点で(20文字相当)

6.0466176e+17

日本語に直すと60京4661兆7600億年かかる計算となった

実際にはこれが6.0466176e+17倍されさらに3600倍されつまりどういうことだ

これだけ長くともkeyの交換は必要なのであろうか

そもそも師は何年で交換したら安全と書いていないが、何年なら安全という意見だったのだろうか

「JWTはセッションIDを含めれば安全」に関する私見

から「そういうことではない」と指摘された点である

私の理解ではとかくuser_idのみ必要なら意味がないと思っていたため落ち込んでいる

まず、IDとpassを内蔵するネイティブアプリに対するapiサーバでの実装経験しかないこと

JWTが切れたら都度IDとpassを投げる方向でリフレッシュトークン実装しなかったことを告白しておく

そのためapiサーバ上記前提で用いた場合に考えたことを書く

webアプリのJWT実装経験はないので、そちらの論は差し控えさせていただく

JWT送信→user_id取得

では危険

JWT送信セッション(cookie形式?)送信切り替え→セッションからuser_id取得

だと安全になるのか検討する前提で記載する

とりあえず思いついたのは下記だった

通信途中で傍受されてログイン情報が奪われる危険が上がる
アプリから直接ログイン情報が奪われる危険が上がる

通信途中で傍受される危険に関して

tokenはheaderにbearerで付けユーザーID(あるいはそれに代わる特定可能識別子)が含まれ

おそらく一般構成仮定で書く

https通信するのでパケットキャプチャによる傍受は不可能と思っていた

(http通信するのはJWTとかcookieとか関係なく傍受できるため考慮しない)

0に何をかけても0なので、何回送っても解読されないならJWTを何回送っても問題ない

というかJWTが抜けるなら同様にheaderに付けるcookieでも抜けると思うので

JWTだからといって危険性に差はない、という論拠により安全性は変わらないという個人的結論になった

※余談だが、たまに送る回数が少ない方が安全という

言説を見るのだが、個人的には上記理由で納得できていない

アプリから情報が抜かれる危険性に関して

クライアントネイティブアプリ場合

攻撃者がアプリに保存されたJWTが取得できるならIDもpassも同じ方法で抜けそうに見えた

(厳密には保存場所が違ったかもしれんが実装依存なので同一とする)

その前提のため、わざわざ

JWT送信セッション(cookie形式?)送信セッションからuser_id取得 

接続しても、おそらくcookie形式で送れる何かもJWTらと同じ方法で抜かれると思われる

まりcookieだろうがJWTだろうがアプリから直接情報が抜かれる危険性には変わりがないという結論になった

結論

まりcookieだろうがjwtだろうがidpasswordの組だろうが同じ危険性で抜かれる可能性があり、いずれでも同じことができるなら

JWT→user_id

でいいじゃん、わざわざcookieと同様の形式を間に挟むの無駄じゃん、となりコメント発言に至った

ここまで書いて、常にJWTにsession_idを含めておいて送ることを意図されていた可能性にも気づいたが

それならもっと無駄なため考慮しない

セッションにするメリットとして唯一思いついているのは任意サーバ側でセッションを切れることだが

それを指していたのであろうか

それは最初段落問題と同一と思っている

余談だが、ブコメ雰囲気日和って「ユーザーIDのみ入れ」(そもそもJWTを自然に作れば入るのだが)

というセッションストア的にJWTに他の情報を入れると入れない時に比べて危険性があがることに同意したような記載をしてしまったが

結局JWTが奪えたら中身に関係なくbearerとしてセットして接続するだけなので

正直JWTを使った時点でついでにセッションストアのように使おうが使わまいがセキュリティ的にそこまで変わらないのでは、と思っている

強いて上げるならセッションに保存している内容が分かる可能性があり、サーバー内部の実装が推測できる危険があるくらいだろうか

でも暗号化したらよいのでは、と思った

私的結論

expの期限と任意セッションが切れないデメリットに関して

expを適切に設定しつつ、必要ならアカウントロック機能を入れる

(アカウントロック機能はJWTに関係なく被害の増加を抑えられる可能性がある)

定期的な鍵の交換について

長いkeyを設定すれば不要

「JWTはセッションIDを含めれば安全」について

少なくともapiサーバネイティブアプリに関して、セッションIDを含めても危険性は変わらない

正直webアプリでも大して変わらんのでは、と思っているのは内緒である

と思ったので短慮なところ、見落としている視点があるようなら今後のためにご教示をいただきたく

以上、よろしくお願いいたしま

2018-09-06

プロデューサーよ、お前らの愛は結局金か?

どうも、元アイマスPです。

元、というのは私はもうすでにPを引退たからです。

現状アプリの類は消去しました。

グッズの類が大量に残っていますが、まぁいずれ処分するでしょう。

今回このブログを書こうと思ったのは、私のとある胸糞悪い経験を吐き出しておきたかったのと、これを見たPさん、あるいはアイドルマスターに限らず、いわゆる課金アプリゲームプレイしてる全ての人に表題の内容を問いかけたいからです。

課金ゲームにおける「愛」は結局課金しか測れないのか?という事

アイマス風の言い方をすれば

プロデューサーの「担当愛」は結局課金額でしか測れないのか?

という事です。

事の発端は2年前、私がサークルの先輩からアイドルマスターを勧められた事に始まります

私はどちらかというとオタクコンテンツはそれなりに嗜んでいたのでアイマスもすぐにはまり、のめり込んでいきました。

アニマスから入り、劇場版で気になった後輩の子達を見てミリオンライブを始め、シンデレラガールズSideMと次々にどハマりしていきました。

改めて説明するまでもないと思いますが、アイマスにはゲームライブがありますゲーム内のガシャを回し、イベントを走って担当SRカードをゲットする。ライブ声優さんパフォーマンスを見て感動して「アイマス最高」と唱える(笑)まぁそんな感じで各々楽しんでると思います

コンテンツ応援するにはいろんな方法がありますゲーム課金する、ライブに参加する、グッズを買う、二次創作をしてみる。

楽しみ方は本来人それぞれであり、それぞれがそれぞれの形で趣味謳歌しています

私の楽しみ方は基本的ライブに参加する事でした。

アイマスにハマった当初、私はまだ学生でした。

学生アルバイトでは月々稼げる金額はどんなに頑張ってもたかが知れています

どんなに頑張っても、社会人が月々稼げる金額になど到底及ばない事は想像に難くないでしょう。

アイマスを含めいわゆるソーシャルゲームには「天井」が設けられていることが多いです。

ガシャなどで「この金額までつぎ込めば必ず目当てのカードが手に入りますよ。」というボーダーラインだ。

ゲームにもよるがアイマスは大体ソシャゲの方は5万くらい、音ゲーアプリの方だと10万程度だろうか。

5万10万など学生にとってはかなりの大金である

それ以上を稼ぎ出せたりお小遣いをもらっていたりと状況は様々だがこの金額を毎月叩き出せる人は全国でもそんなにいないだろう。

さらイベントランキング上位に到達するためにも上記レベル課金はある程度必須と言っていい。

私は各コンテンツ(当時3つ)毎に「担当(他のコンテンツで言うところの「推し」)が複数人いた。

一人がイベントないしガシャで来たら5〜10万ぶっ飛ぶのである

しかもそれが複数人いると言うことは数ヶ月に一回レベルでその出費、ましてやイベントが重なろうものなら倍プッシュである

どんなにバイトを増やして掛け持ちしても追いつけるものではない。

そもそもバイトを増やしたら肝心の学業遊び就活諸々に支障が出る。

でも、担当の事は本当に好きだから何かしらの形で応援したい。

なので私はライブを中心に応援することを選んだ。

ライブなら事前に日程が設定されているのでそれに向けて貯金ができる。

ライブを通じて金銭面でも、気持ち的にも担当コンテンツ応援できる。

そう思っていた。

だが、アイマス布教してくれた先輩(仮にN氏としよう)は違った。

彼は社会人であるしかもどうやらそこそこ良い仕事をしていると見られる。

毎月のように一定数の金額を彼の担当のガシャやイベントに費やし、コンスタント入賞していたところを見ると間違いない。

はいわゆる「ライブ勢」が大嫌いで、「声優ライブを見て何が面白いんだ」

「こいつらがライブにつぎ込んだ金を直接課金すれば良い話だ」

「こいつらは声優オタとしては一流だがアイマスPとしては三流」

などと事あるごとにこき下ろしていた。

まぁ、いわゆる「在宅」というやつである

彼はサークルOBオタク仲間の中の中心的な存在だったため、同期後輩もなかなか彼に意見する事は難しかった。

それを知ってか知らずか、彼はその集まりの中で二言目には「プロデューサー流儀」を語りたがり、「コンテンツ課金できない奴は三流のにわか」という定説を偉そうに唱えていた。

私はミリオンライブが初めて触れたアイマスだったため、イベントの走り方など分からず、中途半端課金額で爆死するということを繰り返していた。

といっても前述した通り、学生にとっての大金を定期的にぶち込めるなんて暴挙ができるわけがないので突然イベントが告知されて担当が上位報酬に来てさぁ走れと言われたって走れるわけがない。

突然の出費もある、月々のいろんな支払いがある。それを社会人と比べれば微々たるお金の中で工面してるのだ。趣味であるゲームに対する優先順位なんて、お察しである

それでもなんとか工面したお金をつぎ込んだところで結果は散々たるものだった。それを知ったN先輩は事あるごとに

「お前の担当愛はその程度なのか?」

中途半端な事しかできなくて担当申し訳ないと思わないのか?」

「おい爆死野郎w」

バカにしてきた。

自分担当が本当に好きだったからそれなりに調べてるし、イベントも出来る限り追ってるし、二次創作を出してみたりもした。何よりライブ担当が出演すると分かれば必ずCDを積んだり、e+に殴りこんだり、最悪友達を頼ってでも必ず参加した。極力現地で。

それなのに爆死したら担当を名乗る資格がないのだろうか?

ゲーム課金できなかったら担当としてダメなのか?

そんな漠然とした疑問が胸の内を占めていた。

だが、所詮趣味だし、好きでやっている事だからと気に留めていなかった。

今年の3月あの日が来るまでは。

大学卒業した私はサークル追い出しコンパ(追いコン)に参加した。

1年生から4年生まで数十人という大規模な追いコンで、サークルで顔を合わせるけど名前は知らない後輩も数多くいた。

N先輩も参加していた。

追いコン事態は順調に進み、最後に4年生が一人ずつ挨拶をするとき事件は起きた。

自分の番になった時にN先輩が

「よっ!三流クソにわかP!」

「爆死野郎!」

と大声で叫んでいたのだ。

みんなに聞こえる声で

流石に私も堪忍袋の緒が切れた。

いくらなんでも後輩が何十人もいる前でそんなこと言わなくても良いじゃないか

これでは卒業間際の最後最後で飛んだ赤っ恥である

その時は笑って流したが、後日、新歓ミーティングに顔を出していたN先輩に詰め寄り、あの時の発言意味説明し、訂正して欲しい。本気で恥ずかしかったんだからみんなの前で謝罪してほしいと訴えた。

すると、彼の隣にいた別の先輩(A先輩とする)が顔を真っ赤にして怒り、怒鳴り散らし始めたのだ。

彼の主張を要約すると以下の通りである

・先輩に向かってその態度はなんだ。

大勢の前で生意気な態度を取ったお前もNの事を貶めている。お前にNを断罪する資格などない。お互い様だ。

そもそもアイマスにおいて何を持って担当とするかなんて人それぞれで明確な基準などない。お前の主義主張押し付けるな。

私はとても惨めな気持ちになった。

私はただ、あの時の発言を取り消して欲しかっただけで、せめてみんなの前で謝って欲しかっただけなのに…

これではただの公開処刑ではないか

するとA先輩の怒りっぷりを見たN先輩はへらへらと笑いながらA先輩をなだめ、以下のような主張を始めた。

・酒の勢いで言っただけだ、気にするな。

・お前が○○(私の担当)をいかに愛してるのかはみんながよく知っている。

・なのにも関わらずイベントの走り方が下手くそから私はそれをいじってるだけ

自分は昔ライブ専門でゲームに全く金を落とさない同期に「お前はだから三流なんだ」と言われたことが本当に悔しかった。お前にそうなって欲しくないからああやって言ってあげてたんだ。

彼の口から最後まで「後輩数十人の前で私の名誉を貶めた事に関する謝罪言葉」はありませんでした。

これを期に私はアイマスから遠のきました。百年の恋も冷める瞬間とはこの事なのでしょう。

アイマスPは課金額で他人マウントを取り合うような人間しかいないんだなぁ

こんなデータクラッシュしたら吹っ飛ぶ画像にうん万円も賭けなきゃ担当名乗る資格がないのが、Pの常識なんだなと察してしまいました。

ここまでの話を聞いて

別にこの先輩がおかしいだけ。」

増田が考えすぎ気にしすぎ。」と思う人が大半なのではないかと思います

ですが、私がこの件について許せないのはそこだけではないのです。

私の担当田中琴葉でした。

そう、中の人である種田梨沙さんが昨年活動を休止されて、ミリシタでの実装が大幅に遅れた、あの田中琴葉です。

私は、声優さんの不在によって琴葉の存在だんだん希薄になっていく事をずっと悩んでいました。

4th Liveでも現地で感じた「琴葉が置いていかれてるのではないかという不安」にずっと悩まされていました。(最後のThank youでそれが解消され、安心から大泣きしてしまいましたが笑)

ちょうど就職活動中だった事もあり、イベントになかなか課金ができず、どうすれば琴葉を応援できるのか、どうしたらミリシタから入ったPさんに琴葉がここにいると示すことができるのか、ずっと悩んで、苦しんで、精神をかなり病みましたがそれでも2月に琴葉がミリシタに実装されてやっとこれからなんだと思いました。

自分就職が決まり、やっとこれから琴葉にたんまりお金を使ってあげられる、本気でプロデュースできると思っていました。

その思いを、悩み抜いた思いの全てを、N先輩はみんなの前で汚い足で踏みにじったのです。「課金額が少ない」「ゲーム投資してない」たったそれだけの理由で。

もう一度言いますが、わたしライブを中心にお金を落としています

ライブだけに費やした金額なら数十万に上るでしょう。

でも、それ以外に一切お金をかけていないということではありません。そんなこと有り得ません。

グッズも買ってるしCDだって全て新品で揃えたし肝心のゲームだって課金してます

学生時代はイベント時に1,2万が限度でしたがそれでも担当が来たら必ず走って回すようにしてます

それでも足りないのでしょうか。

担当が取れなかったらその時点でP失格なのでしょうか。

私はあの日大勢の前で3流にわかと罵られないといけなかったのでしょうか。

もう全てがバカバカしくなってしまいました。

5thは一応参加しました、最高でした。

もも自分アイマス人生はこれで終わりだなと思いました。

あんな辱めに公開処刑まで受けては大学の後輩や同期に顔向けできないからです。

いまだにガシャやイベントが来るたびにN先輩の言葉が、あの日の恥ずかしさ惨めさが胸をよぎって、まっすぐアイマスを愛することができないからです。

もうすでに周囲には引退を伝えました。

N先輩はいずれ勝ち誇った顔で「やっぱりあいつはその程度だったかw」と話すことでしょう。

画像データ音声データにうん万もぶち込んで一生イキってろバカ

2018-08-30

anond:20180830191405

Santa Cruzが来てもどうせワイヤレス技適通らないので、今VIVE+TPLINK+フルトラセット買うのが正解やぞ。

ログイン ユーザー登録
ようこそ ゲスト さん