赤ちゃん育てシミュレーションゲームの構想

スマホを想定してる。

新生児モード

  • 昼夜問わず約2時間毎にお腹空いた泣きが発生する。
  • 母乳の場合、授乳には毎回30分かかる。画面をタップし続けると授乳できる。手を離すと泣く。(血が出て痛いのはゲームでは再現できない…)
  • 夜の授乳後は高確率で眠いからなんとかしろ泣きが発生する。寝るまで5-30分あやし続けると止まる。
  • 授乳後、ゲップするまで画面をトントンする。しなかったらスマホを横にして20分ほど吐き戻さないか様子を見る。
  • ランダムで理由分からん泣きが発生して5~60分あやし続けると止まる。
  • 2時間に1回おむつを変える。
  • ちゃんとあやしているかはジャイロセンサで判定。振りすぎると揺さぶられっ子症候群アラートが出る。赤ちゃんが保護されて連れていかれる。

母乳、ミルク、混合モードの選択

  • 母乳
    • お腹すいた泣きの間隔が短くなる (1時間~2時間になる)
    • ミルクをあげて母乳をあげるのをスキップすると胸が張って痛くなる(状態異常になる)。スキップしまくると熱がでて病気になってゲームオーバーになる。
  • ミルク
    • お腹すいた泣きの間隔がやや長くなる (2時間~3時間)
    • 母乳がない代わりに、ミルク作成、哺乳瓶洗浄・消毒タスクが加わる。自分以外がやっても良い。
    • ミルクは3時間間隔を空けるのが望ましい(赤ちゃんの胃の負担的な問題で)ので、3時間経たないうちに泣き出したらその時間分あやして時間を稼ぐ。
  • 混合
    • ミルクのときのタスクに加えて母乳もあげる
    • 1回の授乳に約1時間かかる (母乳(30分) + ミルク(準備・洗浄等含み20分) + ゲップ・おむつ・寝かしつけ(10分~))。つまり、授乳が終わって1, 2 時間後にはまたお腹すいたコールが入る。
    • 3時間経たないうちに泣き出しても授乳して時間を稼ぐことができる。

おっぱいから血が出て痛いとか肩とか腰が痛いとかは再現できず。

就活してたときの自分に伝えたいこと

中小ベンチャーの方が裁量があって、いろいろ経験できそう。成長できそう。

なんて、何を見て、何を知ってそう結論付けたのか、考えて。

 

そういうの盾にして自分を守ってないかな

怖いという感情から逃げるために、面倒だからと言い訳して目を背けてないかな

ギークハウスに住んでみて感じたこと

ギークハウス Advent Calendar 2015 の 12 日目の記事です!

 

ギークハウスって実際どうなのかと聞かれることがあるので、今まで、ギークハウスでどんな感じで過ごしていたか、どんなことを感じてきたかを書こうかなと思います。

ギークハウスに住もうか悩んでいる方や、どこに入居するか悩んでいる方のお役に立てると幸いです。

略歴

ギークハウス国分寺、テックレジデンス表参道、ギークハウス自由が丘に住んでいました。今はギークハウスではないところにいます。

結論

長くなりそうなので、先に結論を。

ギークハウスに住んで、本当によかったと思っています。人として、エンジニアとして、たくさん大切なことを学べました。

立地や設備も大切ですが、一番の価値はそこに住んでいる人だと思います。入居を迷っている方は一度住民の方とお話ししてみることをお勧めします。

ギークハウスについて

ギークハウス国分寺

ときさば系ギークハウス*1と呼ばれるシェアハウスの一つです。(ちなみに今はギークハウス国分寺はなくなっています…)

ときさば系では、家賃に光熱費、ネット代、お米(白米・玄米)、共用品(洗剤など)購入代が含まれています。ギークハウス国分寺では 4 万円でした。

ドミトリーなので、家にいるときは皆共用リビングにいました。ほぼ毎日、取り留めもないことを話したり、たまに技術的なことを話したり…を PC を触りながらしてました。
今思うと、目を合わせて話すことがあまりなかったような気がします。それが当たり前で、でも、何か言うと誰かしら反応する (ただ、画面からは目を話さない)、そんな緩くて居心地の良い空間でした。

そんな毎日 + ギークハウスのコミュニティで飲み会を催したりバーベキューしたり初詣に行ったり、本当に楽しかったです。

数ヶ月住んで、学校の卒業を機に出て行くことにしました。交通の便がとても悪かったなどの理由で…。これは正直に言うと、かなり後悔しています。みんなと一緒にいることが当たり前になってしまって、その大切さを見失っていたのかもしれません…。

今は全員ばらばらになってしまいましたが、私にとっては彼らは今でも家族のような、とても大切な存在です。そう思える人たちに出会えた素敵なギークハウスでした。

たまに他のときさば系ギークハウスに遊びに行くことがありますが、共通して、どこかほっとするような、そんな暖かい雰囲気があります。

 テックレジデンス表参道

次に、テックレジデンス表参道というエンジニア向けのシェアハウスに移りました。4 つ棟が分かれていて、各棟に 4 部屋の個室とトイレ、キッチン、バスルームがあります。4 つの棟のうちの一つに共用リビングがあって、そこでみんな集まれるようになっていました。

全員個室 + 共用リビングが少し行きにくい場所にあるという性質上か、人と会うことはあまりありませんでした。

前の家とのギャップが激しく、私には馴染めませんでしたが、設備や周りの風景も綺麗ですし、管理人さんもとても頑張っていて、良い場所だと思います。あと、棟によって雰囲気が違うようです。合う人には合うと思います。

ギークハウス自由が丘

最後にギークハウス自由が丘に移りました。

最寄りは尾山台駅という、自由が丘駅から 2 駅のところです。落ち着いた雰囲気の場所で、渋谷までだいたい 25 分ほどで着けます。1~3 階がギークハウスで、各階に 2, 3 人用のシェアハウスが独立してあるような、そんな作りです。5~6 畳ほどの個室 + 共用キッチン + 共用リビング + もくもく部屋があります。

こちらも個室ですが、たまに共用リビングで会って、話していたらいつの間にか朝になっていた、なんてこともありました。(あと、do {} while() をネストして、いかに気持ち悪く書くかみたいな、しょうもないことして遊んでみたり…。)

最も重要な出来事ですが、ここでは、エンジニアとして、初めて師匠と呼べる方に出会いました。
コードレビューをしてくれたり、設計思想を教えてくれたり。世界がどんどん拓けていく感じで、楽しくて楽しくて、本当に、どうしようもない感じでした!

今でも、プログラミングする上での思考の拠り所はギークハウス自由が丘で学んだことです。

私も彼らも、今は違う場所に移りましたが、入れ違いに入居された方や、他の階の方も優しくて面白い方々なので、入居を検討されている方はお話ししてみると良いかもしれません。 

さいごに

振り返ってみて、ギークハウスで過ごして感じていた楽しさや幸せな気持ちは、一緒に住んでいた人たちが与えてくれていたのだと、心から思いました。
入居を迷っている方、ぜひ、住人の人と話してみてください。内見もできますし、短期で住むこともできます。

*1:北村さんが運営しているギークハウスの総称

【Objective-C】なぜブロックを copy して保持するのか

ブロックをプロパティに保持したいとき、下記のようにブロックをコピーしますが、参照カウントを増やすのではなくコピーして保持するのはなぜでしょうか。

@propaty(nonatomic, copy) void (^hoge)();

self.hoge = ^{...};

 

答えは、ブロックがスタック領域に作成されるからです。

スタック領域とは、ローカル変数など特定のスコープの中でのみ使用されるデータを記録しておく場所です。スコープから出る (例えば、メソッドで return を呼び出して終了するなど) と自動的に破棄されます。つまり、参照カウントを増やそうとしても解放されてしまうのです。

スコープから出てもメモリ上に残しておくためには、ヒープ領域を使う必要があります。

ヒープ領域とは、メモリを動的に確保したり解放したりできる場所です。実行してからしか必要なメモリのサイズがわからない場合、ここが使われます。ここでは解放する処理(参照カウントを減らすなど)をするまで残ったままになります。
例えば、
poge = [Poge new];
などとして新規にオブジェクトを作成したときに使われます。
なので、copy (オブジェクトのコピーを新たに作成) すると、ヒープ領域に作成され、スコープを出ても保持されたままになるのです。

参考

【追記】

  • copy じゃなくて strong にしても動く謎…。
  • Objective-C のオブジェクトはヒープ領域に作成されます。ただし、NSString *str = @"aaa"; としたとき、文字列オブジェクトはヒープ領域に作成されますが、文字列オブジェクトをさすアドレスはスタック領域に保存されるようです。

Ruby on Rails 4 でのエラー(Specified 'sqlite3' for database adapter, but the gem is not loaded.)

Ruby on Rails 4 を始めたところ、いきなりつまづいたのでメモ

window (x64)でやってます。

環境を構築して、プロジェクト作って、サーバを起動したら、

Specified 'sqlite3' for database adapter, but the gem is not loaded. Add `gem 'sqlite3'` to your Gemfile.

というエラーメッセージが・・・

Gemfile に sqlite3 は書いてあるのに動かない

 

Gemfile.lock 内の

sqlite3 (1.3.8-x86-mingw32) を

sqlite3 (1.3.8-x64-mingw32)

とすると上手くいきました。

 

すみだITセキュリティ勉強会 その1.5 に参加してきました

10/6 に開催された「すみだITセキュリティ勉強会 その1.5」で、@ozuma5119 さんと @inaz2 さんの発表を聞いてきました。

学校では教わらない、生々しい(?)話が聞けてとても面白かったです。知識があるとこういうことができるんだなーと感動しました。夢が広がります。

簡単なまとめと、補足で説明があったことを書いておこうと思います。

発表内容は下記の 3 つでした。

 さくらの VPS に来たいろいろアタック観察記

脆弱性があるふりをしたら、攻撃者がほいほい攻撃スクリプトを投げつけてきたので遠慮なく中身を見てやったぜっていう話でした。古い CGI 版 PHP の脆弱性(外部からスクリプトが実行されてしまう)を狙った攻撃をターゲットにしていました。

p.11:今回の攻撃は脆弱性のスキャンの後にすぐスクリプトが送られてきましたが、様子見をしてくるものもあるらしいです。攻撃側も手の内を見せないように対策をしているようですね。

p.33:セミコロンの件は、前からあるスクリプトを使い回し、継ぎはぎした結果残ってしまったのではないかということでした。

あと、今回の内容に直接は関係がないのですが、以前はフレッツ接続ツールを使うと、ルータを介さないで直接グローバルアドレスを振られていたと聞きました。昔それを使ってましたが、知らなかったです。

 Sniffing BitTorrent DHT ~人はBTで何を落とすのか~

BitTorrent については今まで全く知らなくて、勉強会の前にウィキペディアなどで調べておきました。ほとんどの参加者が知っていて、冷や汗をかきました。

 BitTorrent DHT の get_peer クエリを使って他のユーザの欲しがっているファイルを調べてみるという話でした。GitHub に置いてあったクライアントプログラムを改造してログを収集していました。

ログの内容については・・・ふせます。

p.20:ネットワークが近いもの同士ではなく、ID のハミング距離が小さいもの同士で送受信を行います。これは、特定のノードにアクセスが集中しないようにするためです。

BitTorrentWinny の違い:BitTorrent は欲しいファイルを指定してネットワークを形成するのに対して、Winny は全体で大きなネットワークを作ります。

辞書攻撃をする人は何をどう使っているのか

 辞書を使ったパスワード攻撃についての話でした。最近は、Twitter などパスワードを用いるシステムでも辞書を使った対策がされているようです。

p.17:BASIC 認証へのアタックは数秒で終わりました。ローカルで実行したことを考慮しても、短時間で完了することが分かります。ただ、ログが残るので、管理者に目をつけられたり、ブロックされたりする可能性があります。

p.18:ssh は TAT が大きく、時間内に終わらないので中断しました。

p.17, 18:いくつかのスレッドで並行してアタックを実行しているそうです。

 

セキュリティについては授業と独学で少し学んだだけだったので、ついていけるか心配でしたが、丁寧に説明をしてくれたので理解できました。

あっという間に時間が過ぎました。行ってよかったです。