kenju's blog

About Programming and Mathematics

"The dRuby Book" を読んだ

http://www.druby.org/sidruby/the-druby-book.html 背景 http://druby.hatenablog.com/entry/20170304/1488568155 関さんの ^ の記事を見つけて、"The dRuby Book" が公開されていることを知りました。こうして公開してもらえるのはありがたいです。 発売さ…

『オブジェクト指向設計実践ガイド』を読んだ

オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方作者: Sandi Metz,?山泰基出版社/メーカー: 技術評論社発売日: 2016/09/02メディア: 大型本この商品を含むブログ (1件) を見る 設計力って難しくて面白い。日々…

Ruby で Numbers->SVG のコンパイラを書いた

過去に書いたこれの Ruby 版。 itiskj.hatenablog.com Ruby で書き換えた理由は、TDD の型の練習だったり、オブジェクト指向開発をライトなレベルで実践したかったり、とまあいくつかあるものの、特に深い理由ではない。気が向いたので書いてみた。 前回同様…

『すごいHaskellたのしく学ぼう!』を読んだ

すごいHaskellたのしく学ぼう!作者: Miran Lipovača,田中英行,村主崇行出版社/メーカー: オーム社発売日: 2012/05/23メディア: 単行本(ソフトカバー)購入: 25人 クリック: 580回この商品を含むブログ (73件) を見る 実際読んだのはだいぶ前の話だが。。多…

新訳版『テスト駆動開発』を読んだ

テスト駆動開発作者: Kent Beck,和田卓人出版社/メーカー: オーム社発売日: 2017/10/14メディア: 単行本(ソフトカバー)この商品を含むブログ (1件) を見る 旧訳版も読んだことがなかった。この本が非常に優れているのは、すごく細かいステップを経ながら、…

スライド『Black Belt Online Seminar Amazon CloudWatch』メモ

資料:https://www.slideshare.net/AmazonWebServicesJapan/black-belt-online-seminar-amazon-cloudwatch CloudWatch システム監視(死活監視、性能監視、キャパシティ監視) Metrics, Namespace, Dimension が基本的概念 標準メトリックスの他、独自メトリ…

『メタプログラミングRuby 第2版』を読んだ

メタプログラミングRuby 第2版作者: Paolo Perrotta,角征典出版社/メーカー: オライリージャパン発売日: 2015/10/10メディア: 大型本この商品を含むブログ (3件) を見る メタプログラミング周りを中心に、Ruby のオブジェクトモデル関連の API についてより…

AWS Lambda の Versioning と Alias 機能についてメモ

資料:AWS Black Belt Techシリーズ AWS Lambda Updates https://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-aws-lambda-updates tl;dr Lambda は明示的にバージョン管理ができる エイリアス機能を使うことで、「本番用」かどうかなど…

スライド『AWS Black Belt Online Seminar 2017 Amazon Kinesis』メモ

AWS

資料:https://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-online-seminar-2017-amazon-kinesis Amazon Kinesis Streams ストリームデータを処理するためのアプリケーション開発 3AZの永続ストレージに強い整合性でデータを複製 順序付きイ…

スライド『AWS Black Belt Online Seminar 2017 Amazon DynamoDB』メモ

資料:https://www.slideshare.net/AmazonWebServicesJapan/20170809-black-belt-dynamodb 自分用メモ。 学び: capacity を安易に減らすことはリスクであることがわかった Auto Scaling, LSI/GSI は知っていはいたけどまだガッツリ使っていない Atomic Coun…

Cookpad TechConf 2018 で LT『広告配信サーバーと広告配信比率最適化問題』で話してきました

https://techconf.cookpad.com/2018/ 本日のLTを公開しました。質問お待ちしております。 #CookpadTechConf https://t.co/m4UqB2CNmU— kenju (@itiskj) February 10, 2018

Railsでiframeからのリクエストを許可するHeadersをafter_actionで設定する

Abstract iframe からのリクエストを許可するには、 X-Frame-Options: ALLOW-FROM https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Option 'Content-Security-Policy: frame-ancestors https://w3c.github.io/webappsec-csp/#directive-…

IODATAルーターを経由してVPNに接続できない時に見直すべき設定

例えば、会社のネットワークにVPNで接続するような場合、無線ルーターの設定によってはデフォルトでつながる場合とそうでない場合が存在する。 ルーターを再起動したり、新しいルーターを設定したときにVPNに接続しなくなった場合は、以下の項目を調べてみる…

Programming Contest: 数字をローマ数字に変換する

exercism.io をやっていて、http://exercism.io/tracks/ruby/exercises/roman-numerals という問題に出くわした。数字が渡されたときに、ローマ数字(String)に変換するメソッドを実装しろ、というものだ。 Problem Specの一部抜粋は以下のような感じ。 def…

社内GHEとGitHub用のGit Author/Emailを分ける方法

基本的には、社内PCを使っているので、 git config --global user.name "ghe author name" git config --global user.email "me@example.com" とGloballyには社内用GHEアカウントでGitを定義した上で、GitHub用のアカウントを使いたいレポジトリでは、 git c…

2017年振り返り

仕事 仕事でRubyをがっつり使うようになったので、一年通してずっとRuby中心に書いていた。サブでは、前半はWebアプリでReact/Redux/TypeScriptのアプリを書いていたので、ES6やNode.jsを結構書いた気がする。後半は機械学習系タスクが増えたので、Python (J…

2017年に買った技術書・一般書籍

年末の棚卸し。備忘録として。 9割方は読了済みだけど、リファレンス目的で買った厚めの本とかはもちろん全部読んでいない。 基本的にAmazonで買った購入履歴を参考にしているので、紙媒体で買った本もあるので網羅はできていない。 こうやって振り返ると、…

"Weighted Random Sampling (2005; Efraimidis, Spirakis)"

ランダムサンプリングのお話。 課題 配列の中から、ランダムに値を選択したい。 その際、必要に応じて重み付けしたい。 実用例 広告配信サーバーにおいて、ランダムにクリエイティブを選択したいときとか。 解決策の一つ "Weighted Random Sampling (2005; E…

Implement Timeout in Ruby

Rubyでタイムアウトをアプリ側で実装したいときなどは、Timeoutというビルトインのmoduleを使えば簡単に実装できる。 docs.ruby-lang.org Example Definition DEFAULT_TIMEOUT = 1 * 60 # 1min def with_timeout(timeout_sec: DEFAULT_TIMEOUT) begin Timeou…

広告配信サーバーのGolang国内事例

Gunosy https://www.slideshare.net/SatoshiSatoshi1/ss-63362495 Pythonだった広告配信サーバーの入札ロジックをGoに置き換え Goのプロファイラにはpprof 関数ごとのCPU処理時間が計測できる https://github.com/google/pprof Pixiv https://speakerdeck.co…

Google Advertising Systemで使われているストリーム処理アーキテクチャ"Photon"調査メモ

Photonは、Google Advertising Systemで使われている、ストリーミングデータの処理システムの別称。 Photon is deployed within Google Advertising System to join data streams such as web search queries and user clicks on advertisements. It produce…

DoubleclickのAd Exchange Real-Time Bidding Protocol公式ドキュメントからRTBの仕組みを探る

developers.google.com Google子会社であるDoubleclickの提供するReal-Time Bidding Protocolの公式ドキュメント、非常に参考になる。 基本的にはAd Exchangeを使っている人向けの開発者ドキュメントなんだけど、RTBやターゲティングの実アプリケーションの…

社内システムのCoffeeScriptをES6に書き換えた

久々にフロントエンド周り書いた。 広告配信サーバーの入稿システム、20-30程度のCoffeeScriptファイルが中途半端な移行期状態で残っていたので、一気に移行した。 主業務がかなり忙しかったので、時間を見つけながらちょこちょこやってきた。 CoffeeScript…

読了『人工知能 Vol 32 No.4(2017年7月号)』の「ディスプレイ広告に対するリアルタイム入札」

人工知能 Vol 32 No.4(2017年7月号) [雑誌]出版社/メーカー: オーム社発売日: 2017/08/04メディア: Kindle版この商品を含むブログを見る "読了『人工知能 Vol 32 No.4(2017年7月号)』の「アドネットワークにおける広告配信計画の最適化」"に引き続き、"…

読了『人工知能 Vol 32 No.4(2017年7月号)』の「アドネットワークにおける広告配信計画の最適化」

週末に以下の雑誌をKindleで購入して読んで見た。 人工知能 Vol 32 No.4(2017年7月号) [雑誌]出版社/メーカー: オーム社発売日: 2017/08/04メディア: Kindle版この商品を含むブログを見る haginoさんがこの号に寄稿したことを以下のブログポストで知り、是…

Adtech/広告領域のドメイン知識を身につけるための情報収集について

広告配信サーバーの開発担当が決まってから、いち早くドメイン知識を身につけるたかったんだけど、どこらへんから情報収集したらいいか結構他の人のブログとか探したけれど、浅く広く情報収集について書かれたものが無かった。 そこで、社内ブログの情報や元…

新しいチームでSoftware Engineerとして成果を出すということ

10月から新しいチームにジョインして、広告配信サーバーの開発をしている。 すごく刺激的な環境で、技術的挑戦のネタがたくさん落ちているし、技術力さえあればやりたいことをやらせてもらえる環境。 10年近く動いて入るかなり重厚なアプリケーションで、会…

How to Install Raspberry Pi 3 with Headless-mode & Setup Tips

tl;dr Raspberry Pi 3にHeadless-modeでインストールする方法 wpa_supplicant.confにWiFIの設定を書き込むことで起動時に無線LANに接続することも可能 Raspberry Pi起動後はソフトウェアのアップデートなどを行っておく 動作環境 macOS RASPBIAN STRETCH LIT…

Pull-Requestのレビュー時と作成時に意識していること

Pull-Requestをレビューするとき 最近よく気をつけていることは 開発文化の醸成に意識する わからないことはわからないままにしておかない 重要なPRは必ず手元で検証を加える の三つ。 開発文化の醸成に意識する エンジニアの文化があまり醸成されていない現…

動画配信におけるHTTP Live Streamingの概要について

動画配信プラットフォームを設計している。 Streaming/Download2種類の配信方法がある 配信方法には大きく分けるとStreaming/Downloadの2種類 + 他の動画プラットフォームを利用する手法が考えられる。 Streaming Download Pre Download Progressive Downloa…