広告システムを全く知らなかった私が約2ヶ月弱の開発期間で初期バージョンをローンチ、アーキテクチャも日々変更していき、あれから1年が経過しました。 SmartNews Adsは一般的な広告配信サーバとは異なる特徴をいくつか持っています。今回は運用型広告と純広告型の配信サーバのアーキテクチャを中心に、個人の裁量でどのように設計し、何を採択し、どのように変更していったのかを可能な限り公開し、発生した障害(課題)も晒しながらポストモーテムをします。Read less
![SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム](https://cdn-ak-scissors.b.st-hatena.com/image/square/52a91e7640c393f26c1a660ec34c7a5960fc0d76/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Ftamtam180slidepub-160114104558-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
DockerのPros/Consとか今更感ある。他の仮想化技術との比較記事はよく目にするが、開発にどのようなメリット・デメリットがあるのかあまり周知されていないようなので自分なりの感想を書いておく。 Pros 同一性 複数人で開発する際に、環境の差が生まれない。 カプセル化 アプリケーション込みの環境をコンテナというカプセルに隠蔽することができる。 コンテナという単位に対するテストが可能に。 コンテナを捨てる・再生成するのが容易。 ポータビリティ(一貫性とも) 開発に使ったコンテナをCIでテストできる。 CIでテストしたコンテナをサーバーにデプロイできる。 デプロイしたコンテナをスケールできる。 Prosで防げる消耗 おれの環境では動いた。 はい。 複数の開発者で同一の環境で開発できるので防げる。 ローカルで通ったテストがCIでコケる。 開発と同一の環境でテストできるので防げる。 bund
karma + babel + browserify + isparta を使って、es2015 で書いたフロントエンドテストのカバレッジを出す設定JavaScriptTDDkarmacoveragebabel こちらの記事も合わせて参考にしてください。 - karma + babel + istanbul でフロントエンドのカバレッジを出す設定 2016年版 フロントエンドで es2015 かつ browserify でバンドルしつつ書きたいという需要はそこそこ高まっているんじゃないかと思いますが、そのセッティングで開発した場合に、テストカバレッジってどうやって出したらいいの?という情報があまり出回っていない気がしたので、自分なりにミニマルだと思う設定の例をまとめてみました。 なお、この記事では、テストランナーには、karma、バンドラには browserify を使う前提で書いています
React初学者のためのガイドで著者のPete Hunt氏がオススメしていたwebpack入門を和訳しました。 意訳が含まれるため、誤りやより良い表現などがあればご指摘頂けると助かります。 原文:https://github.com/petehunt/webpack-howto Webpack入門 このガイドの目的 これはwebpackで物事を成し遂げるためのクックブックです。インスタグラムで実際に使用されているものをほぼ網羅した実践的な内容となっています。 私からのアドバイス:まずはこれをwebpackの参考資料として手元に置いて始めてみましょう。公式ドキュメントは理解を深めるために後で参照することにしましょう。 前提条件 browserify、RequireJSまたは類似したものを知っていること 下記のいずれかに価値を見出していること バンドルの分割 非同期ローディング 画像やCSSの
注釈: CASH LAYER:キャッシュレイヤ FRONT END:フロントエンド ASSET SERVE:アセットを供給 WEB SERVER W/ROUND ROBIN FAILOVER:ラウンドロビンとフェールオーバーを実装したWebサーバ THE CLOUD:クラウド ALL READS! :全ての読み込み WRITES:書く READS:読む MASTER:マスタ INPORTANT POINTY THINGS:重要な鋭い情報 MULTI MASTER DB CLUSTER:複数のマスタからなるデータベースの集合体 「エンジニアはまずアーキテクチャの全体像から始めるべき」、というのが先人たちの知恵からの教訓となっています。データベースを使ったサービスが他のサービスと関係する様子を、線や矢印で表したのが上の図です。キャッシュレイヤ、ロードバランサ、その他の複雑な形も上図の情報フロー
参加者全員がTipsを発表する というコンセプトの iOS/Androidアプリ開発者向けの勉強会、potatotips #25に行ってきました。 ここしばらくは発表をしに行っていたのですが、ラッキーなことに連続参加が続いていたのでネタ切れ。今日は「iOSブログまとめ枠」での参加でした。 今日の発表について、印象に残ったもののリンクのご紹介と発表を聞いて思ったことメモです。 @kitasukeさん 「SwiftCoreを読んで」 Swiftのコードを読んで面白いところをご紹介、という内容。 SwiftのコードはC++とSwiftで書かれている。 ソースの中には、設計の説明も含まれていて面白い。これ。 Arrays, weak.html, SIL.htmlあたりは特に面白い。 未実装の仕様は fatalError(“Not Implemented”) 的になっているので実装してプルリク送るな
2015年11月にGoogleが公開したGoogle General Guidelines(Google検索品質評価ガイドライン)をすべて日本語に翻訳したものを公開します。元のPDFファイル160ページをすべて翻訳しています。 SEOコンサルタント、Web担当者、Webコンサルティングをする方には必見の内容です。ぜひご覧ください。 翻訳文の中でリンクがたくさんありますが、アクセス出来ないリンク(www.raterhub.com など)があります。翻訳前のデータでもアクセスできない状態です。リンクがあるという認識を持って頂くためにあえてそのままにしております。ご了承ください。また、画像などは翻訳していません。Google検索品質評価ガイドラインの原盤をご覧頂きながら見ると理解を深めやすいと思います。翻訳はなるべく忠実に行っておるつもりですが誤訳などがありましたらご連絡頂くと幸いです。また、最
Conversions don’t always equate to purchases or transactions, they can also appear in the form of newsletter sign-ups and contact forms. Contact forms are one of the most common features on a website. Standard contact forms work just fine, but you can make them nicer by using AJAX to submit the form data in the background. In this blog post, you’ll learn how to create a website contact form that s
We ran a survey at about the time the standard became official in June 2015 to see how many people were using ES6. Nearly half of respondents already were. Because of the availability of transpilers and polyfills, the world adopted ES6 much faster than previous enhancements to the language specification. ES6 includes lots of great enhancements that will make you & your team more effective. If you
LinuxやUNIXで、区切り文字で句切られているファイルの、特定の列だけ値を置き換える場合は、sedかawkを用いる事で楽に行う事ができる。 sedで行う場合 sedで特定列のみ置き換える場合は、以下のようにコマンドを実行する。 sed '{s/"区切り文字"[^"区切り文字"]*}/"区切り文字"置換後の文字/置き換える列-1} 対象ファイル 例えば、「,(カンマ)」で句切られたファイルの3列目を「hige」に置き換える場合だと、以下のように記述する。 sed '{s/,[^,]*/,hige/2}' 対象ファイル [root@localhost ~]# cat /tmp/test.file aaaaa,11111,super,66666661 bbbbb,22222,wonder,66666662 ccccc,33333,dorderar,66666663 ddddd,44444,a
Phoenix の開発者である Chris McCord さんが 2015/11/18 に書いた記事「Phoenix is not Rails」の翻訳です。 僕は Rails 未経験の状態で Phoenix を始めたクチなのですが、最近 Rails もやるようになり、両者を比較して考えることが多くなってきたので、いい機会だと思い翻訳してみました。 誤訳があれば編集リクエストを頂けると幸いです。 まえがき 昨年12月、ブライアン1は年次総括で 開発を Elixir と Phoenix に移行する計画を公表しました。それから1年、実際に Rails から Phoenix へ移行してみて分かったのは、この作業はそれほど大変ではないということです。というのも、Phoenix は Rails と非常によく似た作りをしているからです。もちろん、フレームワークのきちんとした理解にはそれなりの学習が必要で
2016/1/14現在、AWS Lambdaにはなんとリージョン毎!にアップロードできるパッケージの合計サイズがたったの1.5GBという悲しい制限があります。特にlibraryを同包したり、versioningを使ったりしてCIをガンガン回してると、結構すぐこの上限に達してしまいがちです。そこで、Lambdaの総容量はAWSコンソール上には表示されるものの、トラッキングし辛いので監視する仕組みを作ってみました。 仕組み LambdaのScheduled Eventsを使って、ListFunctionsとListVersionsByFunction APIを叩いて、個別functionのCodeSizeをサマって、PutMetricDataでCloudWatchに投げて、Alarm設定してるだけ。 (*) 2016/1/26 追記:@marcy_teruiさんからのご指摘でVersionsの
「ママ向けNo.1アプリ」の 更なる成長を支える仕組み / startup-engineer-night-connehito
こんにちは、サイボウズ・ラボの星野です。 先日の記事(半年かかったバグ調査の顛末は)では、長期間苦労した不具合調査についてあっさりとまとめて頂いたので、その行間に起きたたくさんのことを思い起こし、ひとり感慨にふけっています。 (私も記事原稿をレビューしましたが、もし私が書いたら思い入れが強すぎて長文になってしまい、きっと読みづらくなってしまったでしょう。。) さて、今回は、crashblk というソフトウェアをオープンソース化したので、その紹介をしたいと思います。 ソースコードは GitHub レポジトリ に置いてあります。 ライセンスは GPLv2 or 3 です。 crashblk とは crashblk (くらっしゅぶろく、と読んでいます) は、Linux カーネルのブロックデバイスドライバやファイルシステムなどをテストするためのブロックデバイスドライバです。私は WalB を開発し
✅ 100% compatible with UIKit. All IBAnimatable APIs are extensions of UIKit. No pollutions to UIKit's APIs. ✅ 100% compatible with Auto Layout and Size Classes. No custom layout system. ✅ User interface design and preview in IB: corner radius, border, mask, shadow, gradient colors, tint color, blur effect etc. ✅ Animation design in IB: slide in/out, fade in/out, zoom in/out, flip, pop, shake, rota
Visual Studio Codeの拡張機能開発で必ずお世話になる、拡張機能をアクティベートするタイミングの制御について解説する。 今回解説する方法を使えば、プロジェクトフォルダーにREADME.mdなるファイルがあるときだけアクティベートしたり、C#ファイルを開いたときだけアクティベートしたりできる。 activationEventsの書き方 プロジェクトフォルダーの最上位にpackage.jsonを置き、”activationEvents”というプロパティ内に複数の条件を書く。それぞれの条件は並列に判断され、1つでも合致する条件があれば拡張機能がアクティベートされるという仕組みになっている。
In a December 2015 talk at JSConf US, we announced that we would be open-sourcing the key components of the Chakra JavaScript engine that powers Microsoft Edge. Today, we are excited to share with you that we’ve just made the sources for ChakraCore available under the MIT License at the ChakraCore GitHub repository. Going forward, we’ll be developing the key components of Chakra in the open. The C
--------------------------------------------------------------------- ■設定ガイド:ゾーン転送要求への応答を制限するには【BIND編】 株式会社日本レジストリサービス(JPRS) 初版作成 2016/01/12(Tue) --------------------------------------------------------------------- ▼はじめに 本資料は、意図しないゾーン転送を許可する状態になっているBINDの設定を、 簡単なステップで修正する事を目的としています。 ゾーン転送についての技術的な解説は本資料では行いません。手順に沿った 操作で設定を変更し、読者が運用するDNSサーバーが意図しないゾーン転送 を許可する状態ではなくなることを目指しています。 ゾーン転送の設定不備及びそれを利用した情
以前、技術文書をソフトウェア開発する話でtextlintやGitBookを使って文書を開発する方法についてお話しました。 その時に、自然言語のチェックの自動化などはまだ色々考えられることがあるという話をしました。 文書のテストはまだまだ色々できることがある カバレッジを取るとかメトリクスを取るとか – まとめ1 | 技術文書をソフトウェア開発する話 そこで文章のカバレッジというものを考えて実装してみました。 textlintとコードカバレッジの仕組みを使ったものですが、こういうのをなんと呼べばいいのかよくわからなかったので、ここではとりあえず”文章カバレッジ”と読んでいます。 textlintは全ての文に対してLintを実行するので命令網羅と近い感じがします。 命令網羅(statement coverage:SC) コード内のすべての命令が少なくとも1回は実行されるようにテストを設計する。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く