タグ

ブックマーク / techblog.kayac.com (15)

  • ISUCON8本戦出題記というよりぶっちゃけ工数感どうなの?って話 - KAYAC engineers' blog

    こんにちは! サーバーサイドサイドエンジニアの荒賀です。 普段はソーシャルゲーム事業部でゲームの開発したり、Lobi事業部でコミュニティサービスの開発をしたりしています。 さて、この度ISUCON8の戦問題の出題を担当させていただきました。 問題に関する解説は公式のブログを書きましたのでこちらを御覧ください。 ISUCON8 選問題の解説と講評 こちらでは技術的なことは置いておいて、業務としてどのようにISUCON8に関わってきたかを書き残しておきたいと思います。 (※カヤックの出題はISUCON3でもしており今回が2回目です。) はじまり (2017/12〜2018/2) だいぶ曖昧な記憶ですが、ISUCON7で優勝させていただいた直後の打ち上げの場で、僕の耳元で941さんが「来年はカヤックさんどうですか〜(ニヤニヤ)」と囁いてきたので、とりあえずニヤニヤで返したことを覚えています。

    ISUCON8本戦出題記というよりぶっちゃけ工数感どうなの?って話 - KAYAC engineers' blog
  • フロントエンドの画像軽量化まとめ【2017年版】 - KAYAC engineers' blog

    こんにちは、面白法人カヤック フロントエンドエンジニアのごんです! 今回は、Webの画像の軽量化について、フロントエンドチームで使ってるツールややり方をまとめてみました。 画像の軽量化などで困ってる方の参考になればと思います。 なぜ画像の軽量化をするのか Webサイトのローディング時間は、ユーザーの直帰率やコンバージョン率に関わる大切な指標です。 ローディング時間に関わる要因はさまざまですが、 特に画像は容量が大きいため、画像の軽量化をすることで表示速度の大きな改善を望むことが出来ます。 例えば、当ブログのある記事は、画像が全体の容量の約1/3を占めていました。 一般に、PhotoshopやIllustratorから出力された画像は、十分な色数やクオリティで出力されており、 ツールなどを使うことで、見た目をそれほど損なわず、容量を大幅に減らすことができます。 また、一部の画像形式には、メタ

    フロントエンドの画像軽量化まとめ【2017年版】 - KAYAC engineers' blog
  • CloudWatch + SQS でバッチサーバー冗長化のために実装した「sqsjkr」の話 - KAYAC engineers' blog

    Lobiの吉村(moulin)です。今回はCloudWatch + SQSのバッチサーバ冗長化のために作成した「sqsjkr」についてご紹介します。また、sqsjkrはGo実装です。 github.com 目次 背景 sqsjkrについて 運用について 背景 バッチサーバーとは、マシンリソースの消費が高い処理を定期的に実行させたい場合、体アプリケーションに影響が及ばないようにするために建てられるバッチ処理専用のサーバーを指し、Lobiでも様々なバッチ処理を実行するサーバーを建てています。 バッチサーバーはcrontabが設定されているものが1台、バックアップとして同じ構成でcrontabが設定されていないものが1台起動しており、cronを実行するサーバーに障害が発生した場合は、手動でcrontabをバックアップのサーバーに設定することでフェイルオーバーする運用をしていました。 しかし、バ

    CloudWatch + SQS でバッチサーバー冗長化のために実装した「sqsjkr」の話 - KAYAC engineers' blog
  • javascriptプログラマのレベル10 : tech.kayac.com - KAYAC engineers' blog

    週末料理をしていて足を切ってしまいました。agoです。 以前Perlは書いていたんですが、その頃以下の記事を読んで非常に感銘を受けました。 Perlプログラマのレベル10 - Perlプログラミング救命病棟より - naoyaのはてなダイアリー 当時あまりコミュニティとのつきあいがなかったので、「自分のスキルの絶対位置」、「次のレベルへ行くために必要なもの」を知ることで非常に安心感を感じた記憶があります。 いま確認したところ、「JavaScriptプログラマのレベル10」はないようなので書いてみました。 Perlプログラマ Schemeプログラマ Rubyプログラマ (家に直接リンクできるURLが無かったため、参照ページへリンクしています) haskellプログラマ 堕落したCプログラマ HTML知識レベル プログラマレベル 企業法務 JavaScriptの業務スキルレベル 判別表 (5

    javascriptプログラマのレベル10 : tech.kayac.com - KAYAC engineers' blog
  • 複数のデータベースをまとめてSELECTできるツール「mdq」を公開しました - KAYAC engineers' blog

    こんにちは。 2016新卒でLobiのサーバーサイドエンジニアをやっているmorikuniです。 今回は、mdqというGo製のツールを作ったので、その紹介をします。 mdqは複数のデータベースに並列にクエリを投げて、結果をJSONで出力してくれるというものです。 github.com mdqに近いコンセプトのツールとして、弊社の荒賀(@ken39arg)が作ったshard_promptがあります(#6「Shardingマジ怖い」tech.kayac.com Advent Calendar 2012)。 こちらはSQLを解析し、複数データベースにまたがる集約関数を一部サポートしていますが、MySQL専用かつ直列にクエリを投げるというものでした。 mdqでは複数データベースにまたがる集約関数はサポートしませんが、PostgreSQLなどMySQL以外のデータベースへのクエリや、並列処理による速

    複数のデータベースをまとめてSELECTできるツール「mdq」を公開しました - KAYAC engineers' blog
  • Software Design 2月号のDocker特集に記事を寄稿しました - KAYAC engineers' blog

    あけましておめでとうございます! @acidlemon です。 2017年1月18日発売のSoftware Design 2017年2月号の第一特集「いまはじめるDocker」に記事を寄稿しました。第5章の「導入事例で見えてくるDockerの使いどころ」を私と同僚の矢吹 (@Konboi)で書きました。 ソフトウェアデザイン 2017年 02 月号 [雑誌] 出版社/メーカー: 技術評論社発売日: 2017/01/18メディア: 雑誌この商品を含むブログ (1件) を見る 執筆の話をいただいたきっかけは過去に書いたDockerで開発環境を上げ下げするmirageの記事でした。今回の特集はプログラマー向けのDocker入門ということで、プログラマー向けであれば番環境のデプロイの話よりもまず自分の開発環境からDockerを使い始めて便利さを感じていく内容がよいであろう、ということで開発現場で

    Software Design 2月号のDocker特集に記事を寄稿しました - KAYAC engineers' blog
  • KAYAC engineers' blog

    SREチームの藤原です。 今回は Amazon CloudFront Functions をテストするためのOSSとして、cfft というものを書いたので紹介します。 github.com 3行でまとめ CloudFront Functionsのテストは手元ではできなくて面倒です CloudFront Functionsをテストする cfft というOSSを書きました KeyValueStoreの操作を含め、便利な使い方がいろいろありますのでどうぞご利用下さい CloudFront Functionsをテストするのが面倒という問題 CloudFront Functions (以下CFF) は、AWSが提供するCDNであるAmazon CloudFrontのエッジノード上でリクエストやレスポンスの操作が行える、JavaScriptの実行環境です。典型的なユースケースとしては、キャッシュキーの

    KAYAC engineers' blog
  • Lobiのログ集約・解析のはなし - KAYAC engineers' blog

    Lobiチームの長田です。 あらゆるWebサービスがそうであるように、Lobiでも日々大量のログが出力されています。 今回はこのログをどのように集約・解析しているかを紹介します。 TL;DR アクセスログ・アプリログなど、毎秒10000行以上のログが生成されている Fluentdを使用しログを集約 consul serviceを利用した集約サーバーの冗長化 ログ中のイベント検知・集約にはNorikraを使用 アクセスログの各種解析にはAmazon Redshiftを利用 ログの集約 ログ収集エージェント Lobiではログの集約にFluentdを利用しています。 Fluentd | Open Source Data Collector | Unified Logging Layer ログファイルの集約にはfluent-agent-hydraを、Perlアプリケーション内からのログ送信にはFl

    Lobiのログ集約・解析のはなし - KAYAC engineers' blog
  • .emacs分割のすゝめ - KAYAC engineers' blog

    最近ロードバイクを買いました。nagata(@handlename)です。 前回、安易にも無防備な.emacsを晒したら、我らがtypester先生に 「.emacsに全部書くのは小学生までだよね〜」(大幅に誇張あり) と言われてしまったので、早速.emacsを分割してみたいと思います! (設定ファイル群をgithubにあげました) なんで分割するの? そもそもなんで分割するんでしょうか? メリットとしては、こんなものがあります。 見通しがよくなる 環境依存の設定を切り分けられる 一部のファイルにエラーがあっても他のファイルの設定は適用される それぞれ個別にbyte compileできる 一部のエラーが全体に影響しないっていうのはいいですね。とっても。 では、実際に分割する方法を見ていきましょう。 分割してみよう 分割した設定ファイルを読み込むために、IMAKADOさん謹製のinit-lo

    .emacs分割のすゝめ - KAYAC engineers' blog
  • emacsのM-!とM-|の使い方 - KAYAC engineers' blog

    来週ようやく夏休み!のnagata (@handlename) です。 シェルコマンドを実行したいとき、どうしてますか? emacsを使って開発する場合、 ターミナルとemacsを行ったり来たりすることはよくあると思います。 現在のディレクトリのパスがほしかったり(pwd)、 IPアドレスを調べたかったり(ifconfig)、 あるいは編集中のテキストを処理したかったり。 そんな場合、いちいちターミナルに移動して、 出力結果を確認(場合によってはコピー)して、 あらためてemacsに戻ってくるのは面倒です。 それ、emacsからできます! 往復するのが面倒ならば、すべてemacs上で完結させてしまえばいいのです。 shell-mode を使うという手もありますが、 今回はもっとお手軽な M-! (shell-command) と M-| (shell-command-on-region)

    emacsのM-!とM-|の使い方 - KAYAC engineers' blog
  • Dockerで非エンジニアでも開発環境を上げ下げできる、mirageというツールを作りました - KAYAC engineers' blog

    いやー今年もISUCONの予選参加募集がはじまりましたね! 昨年は出題側だったので胃が痛かったですが、今年は参加側ですので大変楽しみにしております。@acidlemonです。 Docker使ってますか? さてみなさん、Docker使ってますか? 使ってる? 使ってない? ぼくは使ってませんでした。えー今どきBlue-Green Deploymentやってないの? Immutable Infrastuctureじゃないの? と言われそうですが、世の中にはいろんなしがらみとかもあってなかなか簡単にエイヤーでコンテナに移行できるわけでもないのは皆さんなんとなく感じているのではないでしょうか。 とはいえ、最近これだけ話題になっているDockerですので、そろそろ使ってみたいなぁ…ということで、まずは開発環境をDockerで上げられるようにしました。 Dockerでコンテナを作るときには2つのアプロ

    Dockerで非エンジニアでも開発環境を上げ下げできる、mirageというツールを作りました - KAYAC engineers' blog
  • Firebugの意外と知られていない機能紹介(プログラマ向け) - KAYAC engineers' blog

    羊毛布団を洗濯機にかけられないことを知りました。ago(@kyo_ago)です。 意外と知られていない機能が多い!?Firebugの使い方を見て、プログラマ向けも欲しくなったので書いてみました。 1. ショートカット一覧 以下のページでFirebugのショートカット一覧が公開されています。 http://getfirebug.com/wiki/index.php/Keyboard_and_Mouse_Shortcuts 取り合えず以下の二つだけでも覚えておくと効率的かもしれません。 F12でFirebugの有効、無効の切り替え 広いコマンドラインモード時にCtrl+Enterでコードを実行 また、以下のメニューからショートカットの変更も行えるので、他の拡張等とショートカットがかぶった場合でも別のキーで使用することが出来ます。 2. Firefox体のツールバーに「要素を調査」ボタン Fi

    Firebugの意外と知られていない機能紹介(プログラマ向け) - KAYAC engineers' blog
  • ジョブキューサーバ Gearmand を PHP から使ってみた - KAYAC engineers' blog

    もうすぐ子供が生まれます。春菜です。 今やってるプロジェクトで新機能追加を検討していて、Perl で有名な「TheSchwartz のようなジョブキューシステムとか試してみたいなぁ。」 なんて話してたらちょうど弊社 村瀬 が社内 TIPS 会で Gearmand について話してたので使ってみました。 Gearmandって何? 元々は Perl で書かれたジョブキューシステムで、つい最近 C でリライトされたようです。 クライアントライブラリとして CPAN はもちろんのこと、PHPPython などたくさん用意されていて活発的に活動されているみたいです。(期待大!!) PHP では PECL と PEAR のクライアントライブラリが利用でき、家サイトでも PHP のサンプルが多く紹介されていてそのまま試す事ができて楽チンです。 インストールと起動 ローカルの Mac にインストール

    ジョブキューサーバ Gearmand を PHP から使ってみた - KAYAC engineers' blog
  • jQuery使いが陥りやすい罠 : tech.kayac.com - KAYAC engineers' blog

    肩こり歴20年のagoです。 社内でもjQueryを使う人間が増えてきたので、jQueryを使う人が陥りやすい罠をいくつかあげてみたいと思います。 (私が過去にはまったり、今はまっている罠です) 1 グローバルの名前空間を使わない jQueryはwindow objectの汚染が少なくほかのライブラリとの共存が行いやすいですが、特定のサイト向けに開発する場合window objectを使用してもそれほど問題は発生しません。 しかしjQueryに慣れるとwindow objectの使用をいかに避けるかを考えるようになり、jQueryと関係ないfunctionや変数まで$.hogehogeに実装しようとしてしまいます。 これはwindow objectの代わりにjQuery objectを汚染しているだけなので、素直にwindow objectを使用したほうが普通に実装しやすいでしょう。 2

    jQuery使いが陥りやすい罠 : tech.kayac.com - KAYAC engineers' blog
  • javascript libraryを作るときに便利な3つのfunction : tech.kayac.com - KAYAC engineers' blog

    社内で唯一(?)の8 tab派。agoです。 suzunari.js、sisso.jsと、最近いくつかJSのライブラリを公開する機会があったので、そのとき使ったライブラリを作るときに便利なコードを紹介したいと思います。 1 script tagからのパラメータ読み込み 外部からの指定によりライブラリ内の動作が変わる場合、script tagから値を指定できると設定のための記述要素を減らすことができます。 (ファイル名を静的に指定している理由に関しては「最後のscript tagの取得方法」をご覧ください) <script type="text/javascript"http://example.com/path/script_file_name.js#param1=value1&param2=value2"></script> var param = (function (file_nam

    javascript libraryを作るときに便利な3つのfunction : tech.kayac.com - KAYAC engineers' blog
  • 1