タグ

ブックマーク / ssig33.com (39)

  • ssig33.com - DeNA TechCon 2018 『『Nintendo みまもり Switch』を支える技術』 の内容紹介と感想

    そういうわけで https://techcon.dena.com/ にいってきました。 表題の発表は、撮影および SNS での内容共有の禁止ということになっていたので、内容を個人サイトで共有致します。その場にいなかった方でこの記事を読んだ方であればこの記事およびその内容を SNS で共有することは一切禁じられないかと思いますのでよろしくお願いします。 発表者 DeNA 堀、平賀 任天堂 名前メモし忘れた 公開されたスケジュールでは堀および平賀による発表ということになっていたが、任天堂の何者かが急遽参加したということだった。おそらく技術者ではなく広報の人。 サービス紹介 (任天堂の人) サービス内容については検索すれば分かることを普通にしゃべり、クッパがサービスを使うあの動画を流すだけ。(ssig33 の感想: なにしにきたんだコイツ) 開発体制 (堀) 任天堂は企画、ディレクション、 Sw

  • ssig33.com - Docker で Go で作ったバイナリを実行するなるべく小さいコンテナを作る

    Go でアプリケーションを作ると、そのまま他になにもなくとも実行できるバイナリが出来あがります。この特性によりデプロイが大変楽です。 このような特性があるので、 Go を使う場合 Docker のようなオーケストレーションツールを使わなくても多くのサーバーにアプリをデプロイしていくことも可能かと思われますが、そこはまあ Docker という巨人に乗っておくと楽なことが多いです。具体的には swarm と docker-compose が便利なので Docker 上で実行したい。 ここで問題となってくるのが何も考えずに Docker イメージを作るとイメージサイズが膨れあがってしまってシングルバイナリによる手軽さなどが損なわれてしまうという点です。 たとえば golang:alpine のような比較的小さいイメージを使ってもファイルサイズはバイナリサイズ + 300MB ほどにもなってしまい

  • ssig33.com - なぜ SPA か

    顧客は SPA であることを望んでいるのか?そうではないです。技術者は SPA を作りたいのか?そうではないです。 ではなぜ SPA 的なものが出来てしまうかといえば、いちいち UI の遷移のために大量のデータをロードしているのは時間と資源の無駄だからです。 もちろんあるべき姿としては、サーバーの CPU やストレージやメモリは爆速で、回線も爆速で、用いられるデータは必要最低限で、クライアントマシンも爆速で、クライアント側でフォームを一個書き換えるたびにページをフルロードしても全くストレス無く使える、というような世界観です。 しかし実際にはサーバーのスペックも回線もクライアントのスペックも不足気味ですから頑張って補っていく必要があります。 すると最初にロードしたデータをクライアントは保持し続けて、 HTML 全体を書き換えるのではなく必要なところだけを最小限の通信とともに書き換えてみたいな

  • ssig33.com - ドワンゴもめ事の一番面白い点

    最後は総務部を追い出し部屋にしたことです。やめさせたい人間をグループウェアから登録解除し、総務部という名前を持った統合思念体に統一し、PCも共有で1台しか与えない。昨日までエンジニアをしていた人間がスーツを着て社内を歩いて備品の補充をする。そんなことが許されていました。 ドワンゴは大量退職に関する印象操作をやめろ - hiroki-uemuraのブログ 一番大きなのは給与の問題。ソシャゲバブルのタイミング。開発環境の問題。インフラの問題。そのほかいろいろな理由。ほぼ、事実認識としては間違ってないじゃん。ニュアンスの違いは立場が違うからしょうがない / “ドワンゴは大量退職に関する…” http://t.co/cEZY0Pa9zf — kadongo38 (@kadongo38) September 1, 2015 ドワンゴ川上、 kuzuha のエントリが事実として間違ってないといってるし

  • ssig33.com - 最悪!意地でも Heroku を無料で使う

    Heroku は最近料金体系に変更があって、無料では一日 18 時間までしかアプリを起動できなくなりました。 自分専用のアプリとかそういうものなら全く問題はないのですが、それなりにユーザーがついているようなアプリだとなんだかんだで 24 時間 Dyno が起動しっぱなしということはおおいと思います。 一番安いプランは 7 ドルで、とりあえずこれだけ払えば 24 時間 Dyno を起動しっぱなしにできます。 公開しているアプリが 1 個ならまあ 7 ドルぐらい払っとけよで済む話なのですが、私のように 18 時間制限にひっかかってるアプリが 30 個もあるとなると 210 ドルを払うのは躊躇してしまいます。 ということで今日は石に齧りついてでも Heroku をタダで使う方法を考えていきます。 基的なアイディア Heroku でアプリ 2 個用意して、同じ DB 向くようにして、 12 時間

  • ssig33.com - docker ホストを長期間運用する際の注意点

    うちには 2013 年末ごろからずっと docker コンテナを運用し続けていた物理ホストがあったのだけど、最近 $ docker ps とかしても結果が戻ってくるのに 20 秒ぐらいかかるし、コンテナの起動とかにも同じくらい時間がかかる $ /etc/init.d/docker restart などとしようもんならコンテナが使用可能になるまで 3 時間ぐらいかかってた。とはいえそう頻繁にコンテナを手動で起動したり終了したりするホストではないし、 docker のデーモン自体を再起動するとかは当に稀なのでずっと放置してたんだけど、さすがに放置できなくなってきた。 $ docker ps --all | wc -l とすると 103781 とかなってて、ゴミコンテナやイメージが大量にありすぎるのが諸悪の根源なのではないかという予想を立てた。 そこでこのようなスクリプトでコンテナを掃除してみ

  • ssig33.com - Amazon API Gateway と S3 で動的なサイトを作る。

    Amazon API Gateway と S3 においた静的なファイルだけで、動的なサイトを作ることができそうなのでやってみました。 http://ssig33-keijiban.s3-website-ap-northeast-1.amazonaws.com/ わりと楽に作れます。めんどうなのは CORS 対応だけです。うまくまとまったドキュメントがあるので参考にしましょう。 認証とかが必要な場合は、 Cognito が使えると思います。 データストアに Dynamo DB などを使えば当に何も考えずに自動的にスケールしていくサイトを作ることが出来るのではないかと思います。 現状やってみて分かった課題は以下のとおりです AWS Lambda Function のデプロイと管理がやりづらい Amazon API Gateway の設定をコードで管理できないと絶対に破滅する どうやら API

  • ssig33.com - 2ch どうしたらいいんだろうか

    2ch.net の今後の課題として以下が挙げられるのではないか 広告収入の増加 コミュニティの再活性化 2ch.sc の排除 この内 1. 3. の目標のみがクローズアップされ、 2. が無視されているのが現状なのではないか。 実際のところ 1. の達成の為に一番重要なのは 2. だ。書き込みをしやすい環境にし、書き込みの数を増やしてサイトの魅力を増やさなければならない。 その観点で見たとき、専用ブラウザ内に広告を表示することを義務化しようという現在の施策は全く間違っている。 なぜなら、専用ブラウザを使うような人はそもそも絶対に広告をクリック/タップしないからだ。 そしてわざわざ 2ch に 2015 年にもなって書き込みをしようとする人は、専用ブラウザを用いていることが想像される。 結果として専用ブラウザに広告表示を義務化することは、書き込みをしようとする人をより不便にして 2ch 離れ

  • ssig33.com - 2ch のアレ

    robots.txt は法律上以下のようになってます。 無視してクロールしてもいいけど、無視してクロールした結果を公開するのはダメ つまり新 2ch では以下のようなサイトが法律上 NG になります API キーをアプリから解析して新 API 勝手に使ったりクロールしたりして過去ログ公開するようなサイト 上記のような仕組みで旧 2ch っぽいインターフェイスを提供するプロキシサイト 上記のような仕組みで動作する Web アプリケーション型 2ch クライアント OK なのは以下の行為です スクレイピングして動作するデスクトップ、携帯電話向けのクライアントを開発、配布する 無論、これらのクライアントが常軌を逸した動作をして、結果 2ch のサービス継続を妨害するようなことがあれば、 2ch は民事、刑事で適切な対応を取ることができるでしょう。この場合参考になるのは librahack 事件

  • ssig33.com - よく分からない人のためのセキュリティ

    いろいろと原則論はあるんですが。昨今のアプリケーションは複雑化し、扱う情報はよりセンシティブになり、そしてより幅広く使われるようになっています。よって「安全な」アプリケーションを作るために必要な知識はますます増える傾向にあります。 よく分かってない人は以下のことにとりあえず気をつけましょう 1. なるべく自分で作らない これは最も重要なことです。検索する、他人に聞く、自分で考えない。これは重要です。大抵の問題は他人が作ってくれた解決策を適用できます。 例えばセキュアな問合せフォームを作ることにしましょう。気をつけるべきことは以下のことぐらいでしょうか。 送信内容の確認画面を表示する場合、ユーザーの入力した値は適切にエスケープするように 送信内容をアプリケーションの DB に格納する場合には SQL インジェクションを防がなければならないので、プリペアドステートメントを用いる CSRF 対策

  • ssig33.com - ファイルダウンロード自動化を含むスクレイピング

    なんのこっちゃという感じですが、具体的にやりたいことは以下の通り Amazon の コンテンツと端末の管理 から購入した Kindle 書籍を自動ダウンロード 何故こんなことをしたいかというと、 Kindle は DRM をクラックする確実な手段があります。 DRM をクラックすることは違法ですが、 Amazon という企業が消滅した時に、購入したが読めなくなるのは困ります。 Amazon が消滅するときは世紀末のような社会でしょうから、 DRM のクラック程度の犯罪が問題になることは無いでしょう。 AZW3 をローカルに保存しておけば、その時がくれば DRM をクラックすればいいということになります。 以上の考えは半分気、半分はまあスクレイピングしづらそうなものがあればやってみたい、というだけです。 JavaScript を含まないページのスクレイピングはどうとでもなります。 Ja

  • ssig33.com - プロダクトに深い理解を示してくれる人を採用したい

    UI エンジニア云々にかかわらず、プロダクトに深い理解をしめして幅広い範囲でコミットしてくれるメンバーが(しかも年収 600 万円とかで)ほしいみたいなのがよくあります。 しかしそんな優秀な人が入ってくればあなたはお払い箱で、あなたがただのマネージャーならば解雇されますし、あなたが企業のオーナーだとすると優秀な社員は VC と結託してあなたを追い出します。 なのでそれなりのメンバーをうまく組み合わせてやるほうがいいです。 back to index of texts Site Search

  • ssig33.com - Jenkins で Rails アプリを docker build する話

    Rails アプリを Docker で稼動させる際に、 Gemfile と Gemfile.lock を先に ADD して bundle install してからアプリケーション全体を ADD することで、 bundle install の結果をキャッシュする手法はよく知られています。 ADD Gemfile /app/Gemfile.lock ADD Gemfile /app/Gemfile WORKDIR /apps RUN bundle -j4 ADD . /app こういうやつ。 ところがこの手法は Jenkins のように毎回リポジトリが clean にチェックアウトされる環境では全く無効です。 何故なら、 Docker は ADD するファイルが更新されているかどうかを、ファイルの中身そのものではなく、タイムスタンプなどのメタデータで確認しているからです。 git checko

  • %E8%87%AA%E5%AE%85%E3%81%A7%E5%A4%A7%E5%AE%B9%E9%87%8F%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%E3%82%92%E9%81%8B%E7%94%A8%E3%81%99%E3%82%8B

    前回 RAID に関するちょっとした話を書きましたが個人が巨大なストレージを運用するにあたって得られたノウハウをだいたい全部書いておきます。 そもそもメリットあるのか? メリットはあります。金です。 Google Drive は安いですが、それでも 1TB 月 1000 円です。しかし運用にかなり制限がでます。柔軟に使える Amazon Web Service ならその 3 倍+転送量課金です。 16TB だと月 5 万円もかかってしまいます。ちなみにもっとも柔軟に使える EBS だと 16TB で 83000 円ぐらいです。 Google Compute Engine の低冗長性ストレージは S3 より少し安かった気はするけど別にとても安いわけではなかったと思う(よく覚えていないし調べるのがめんどくさい)。 50TB のストレージを Google Drive でごまかしごまかし運用したと

  • ssig33.com - WD Green を mdadm で使う

    Western Digital の GREEN シリーズの HDD は大変に安価なことで知られていますが、エラー訂正のために無反応になることがあるために RAID の構築には使わないようにとメーカーから警告されていることはよく知られています。 ですがまあそんなことは知ったこっちゃないわ金ないし WD GREEN で RAID 組むわみたいな風に考える人もいることでしょう。 私もその一人で、現在 26 台の HDD を用いて mdadm と LVM を用いて 54TB のアレイを構築して 24 時間 365 日稼働させています。ちなみに現在空き容量は 14TB ほどで 40TB のデータを自宅にためていることになります。 システムが現在の構成を取るようになってから 3 年ほどは経過しており、その間増設に増設を重ねて、全体としては安定して稼働しているといえます(個人のサーバーおよび録画システム

  • ssig33.com - Rails アプリでのビューキャッシュ戦略

    キャッシュでレンダリングコストケチっていかないといけないようなことになってる時点でビジネスとして成立してないので撤退を検討したほうがいいと思う。 殆どスタティックな記事を配信して動的な部分は JS でやるとかあるけど、結局それってサーバー代を使わないかわりに膨大なエンジニアリングコストを使うことになる。意味ない。 予想外の形でサービスがヒットした結果酷い状態のコードをなんとか飛ばし続けないといけないこともあってその場合はとりあえずキャッシュを導入して時間かせぎをしつつビューをまともにしていくとかそんなことになると思う。けどその場合そこに「戦略」なんてものがあることはなくてひたすら泥縄的な対処が繰り広げられる。 何か問題がある時にとりあえずキャッシュで質的な解決が得られるということはないので、データ構造を直していくとか、よい CPU を買うとかもっと質的な解決法が重要。重ねて言いますがよ

  • ssig33.com - AWS Elastic Beanstalk メモ

    最近ちょこちょこ触ってみて得られた知識。 Beanstalk 専用に AWS アカウントを作ったほうがよい 試行錯誤と共に膨大な量の Security Group が作られていって意味不明な事態になる Beanstalk に Environment を作る時に一緒に RDS を作らないほうがよい スワップしてデプロイするやつが使えなくなる。 正確には使えないわけではなくて、 RDS の設定をアプリケーションに直接記述すればよい。 RDS と紐づいていない Env からは環境変数が見えない。なので環境変数から設定読み込むやつが使えなくなる。なので一緒に RDS 作るのは意味がないし管理が複雑になる。 スワップしてデプロイするやつは初期に設定しておきましょう。 そうじゃないと上記のようなめんどくさいことが起きます。 Beanstalk はデプロイスクリプトの実行に 10 分かかるとデプロイを勝

  • ssig33.com - Docker 運用しまくって得られたしょぼい知識

    よく知られているように Docker ではコンテナ自体は使い捨てで、アプリケーションが保持すべきデータはコンテナの外に格納する必要があります。 RDBMS 多くのアプリケーションが RDBMS を使用しています。 RDBMS の運用は実際のところかなり厄介ですが、まあ Amazon RDS を使っちゃいましょう。それが一番楽です。 EC2 じゃないところにサーバー置いてて RDS との通信量課金を払いたくないという場合は適宜頑張ってください。 Redis と memcached 現代の多くのアプリケーションが Redis や memcached を使っています。これも Amazon Web Services に ElastiCache があるので EC2 にサーバー置いてる場合はこれを使います。置いてない場合は適宜頑張ります。 その他 ここまでのことは特に何ということもないのですが、ここか

  • ssig33.com - DHH についての見解

    DHH の主張って TDD は糞だ TDD によって「テストのしやすさ」が主眼となるため設計がむしろ歪む DCI は糞だ、 Concerns でいいだろ Concerns の結果として超絶巨大なドメインモデルが実行時に作られたところで知ったことではない とかそんな感じで、ある種の複雑さを許容しよう。結果として最適な設計を得られる。というような感じのことが多いと思ってます。 ソフトウェアというのは元来複雑なものです。結局のところ、その複雑さをどのレイヤーで受け入れるかというのが、ソフトウェア開発の質の一つではないかと思います。 DHH の主張というのは、それを薄く広く受け入れろというようになっている。 一方で TDD や DCI の仕組みって人に何かをアサインする人が全体的な整合性を整えて、あとの人は目の前の問題解決に注力するみたいな形になりがちで、中央集権的と言えると思う。 つまらない話

  • ssig33.com - クラウドソーシング

    クラウドソーシングやってる会社から求人メールがくる ssig33「自社のサイトで人集めたらどうなんですか」 ク「それはいまいちなので、、、」 ということがこの前ありました。全部が全部そんなんだとは思いませんが、ちゃんとドッグフードってるところあんまないなあというのはまあ。 大変ですね。 back to index of texts Site Search