Introduction of Happy Eyeballs Version 2 (RFC8305) to the Socket library
Introduction of Happy Eyeballs Version 2 (RFC8305) to the Socket library
これは何? ソケットにおけるノンブロッキングI/OについてPumaのコードを絡めて調べてみたまとめです。 PumaはRubyで書かれたOSSのWebサーバーです。 ソケットに限らずノンブロッキングI/Oという言葉をよく聞きます。ですがイマイチなにを意味しているのかわからなかったので調べてみました。 ブロッキングI/Oとは ユーザーモードからシステムコールをカーネルに発行し、結果が帰ってくるまでに待ちが発生するI/O処理のことです。ファイル全般に言えることであり、ソケットもファイルなので当然ブロッキング発生します。 ソケットにおけるブロッキングI/Oは以下のようなものがあります。 accept(2)でlistenキューからソケットを取り出すときに接続が確立されていない場合(TCPハンドシェイク中など)は確立されるまでブロックされる。 ソケットに対してread(2)やwrite(2)を実行する
先日行われたRails Developers Meetup 2019で、Clean Test Code Revisedというタイトルで発表しました。スライドはこちら。 動画も上がっているようなので興味のある方はどうぞ*1。 所感 ご存知のかたもいると思いますが、この発表は2017年5月に行われたRails Developers Meetup第一回目で発表した内容を更に一歩進めたものとなっています。 Rails Developers Meetup で綺麗なテストコードの書き方について発表した - おもしろwebサービス開発日記 当時僕の頭の中にあった「こういうケースのときはこう書く。なぜならこうだから」というものを点で出したのが前回の発表で、それらを「脳に負荷をかけない」という線でつなげてまとめたのが今回の発表になります。 テストコードをレビューしたときに「これなんか読みづらいな…」と思って
Introduction of Happy Eyeballs Version 2 (RFC8305) to the Socket library
様々なツールやサービスを繋げていく事は、全体像の把握がとても大事になってきます。 まず大きい流れを確認しましょう。時系列順に列挙すると以下となります。 ###アプリが自動でコンテナデプロイされるまでの流れ (0.TerraformでAWS上のリソースを定義) 1.RailsアプリをGithubにpush 2.CircleCIでCI開始 3.CIでDockerイメージをビルド 4.DockerイメージをECRへpush 5.ECSのTaskDefinitionを更新 6.CIでmigration 7.アプリがデプロイされる! 画像に表すと、以下となります。 ざっくり各ツールの役割も解説すると ####terraform インフラストラクチャ定義ツール。 クラウド上のリソースを定義ファイルの状態になるように生成・操作してくれる。 画面上でポチポチやってたインフラの操作をコードにできる。 ###
この記事は Akatsuki Advent Calendar 2019 1日目の記事です。 はじめに アカツキでは Ruby on Rails を使ったゲームサーバを開発・運用しています。ゲームの体験を向上するために、レスポンスタイムは一つの重要な要素となるため、種々のパフォーマンスチューニングを行なっています。今回はその一例として、環境変数を1つ設定するだけで、あるAPIのレスポンスタイムが10%も改善した例をご紹介します。 TL;DR 多数の時刻を含むレコードを扱う Ruby on Rails サーバでは、 TZ 環境変数を設定することで、デフォルトタイムゾーン設定ファイル /etc/localtime へのアクセスが減り、高速化が図れるかもしれません。 効果は Time オブジェクト1個あたり数μsの短縮といったオーダーですが、チリも積もれば山となり、数千個のレコードを処理するAPI
はじめに:銀座Rails #12で登壇させてもらいました 去る2019年8月29日、銀座Rails #12で「プログラマがコードを書きながら考えること 」という発表をさせてもらいました。 ginza-rails.connpass.com この発表では「プログラマが書き上げたコード(=完成形)」ではなく、「そのコードをどうやって書いたのか?(=何を考え、どんなツールやテクニックを使って、どれくらいのスピードで書いたのかという点、すなわち、コードを書く過程)」をテーマにしました。 そして、その過程をわかりやすく伝えるために、スライドだけでなく、僕がガチンコでコードを書いていく様子を動画コンテンツとして会場のみなさんにお見せしました。 これまでいろんな勉強会やイベントで発表してきましたが、動画を事前に用意して発表で使ったのはこれが初めてです。 初めての試みなので、どうなるかちょっと不安でしたが、
まえがき 本記事は、私がRailsConf 2019で話した「Terraforming legacy Rails applications」↑の、いわばB面に相当します。この記事を読んで、皆さんがアプリケーション開発をDockerに乗り換えるとまでは考えていません(皆さんが以下の動画で若干言及しているのをご覧になっていたとしても)。本記事の狙いは、私が現在のRailsプロジェクトで用いている設定を皆さんと共有することです。それらのRailsプロジェクトは、Evil Martiansのproduction development環境で生まれたものです。どうぞご自由にお使いください。 原文免責事項: 英語版記事は最新の推奨事項に合わせて更新を繰り返しています。詳しくは記事末尾のChangelogをご覧ください(参考: 原文Changelog)。 私がdevelopment環境でDockerを使
お久しぶりです、エムスリーエンジニアリンググループ 兼 QLife エンジニアの園田です。 今回は、Rails のアプリを AWS の Lambda で動かして、ALB 経由でアクセスしてみようという内容です。 実現するためには ALB から Lambda を呼び出す。 Lambda で Rails を動かす。 上の2つをクリアするだけでいいので、動かすだけならとても簡単にできてしまいます。 1つめは、ALB の TargetGroup に Lambda 関数が指定できるので、それを使います。 2つめは、Github にある aws-samples/serverless-sinatra-sampleの Lambda 関数ブリッジ用ソース (MITライセンス、以降 aws-samples のサンプルソース と表記します) を利用にすればほぼ何もいじることなく実現できます。 serverles
「技術書LT&懇親会【Caraquri Tech Night #1】」で、LTプレゼンをしました。 オススメの技術書を紹介し合って、気づきや知見を増やすイベントです。 caraquri.connpass.com 私は本が好きなので、定期的に書店に足を運んでいます。 今回のイベントでは、技術系同人誌についてプレゼンされる方が多かったです。 におうコードの問題集 私は「におうコードの問題集」について発表しました。 におうコードの問題集とは? 「におうコードの問題集」は技術書典で頒布されているシリーズ作品で、過去に3作が頒布されています。 技術書典4: リファククタリング 〜バリエーションに立ち向かう編〜 技術書典5: セキュリティ 〜セキュリティホールに立ち向かう編〜 技術書典6: 設計 〜ソフトウェア設計に立ち向かう編〜 におうコードとはなにか? 「におうコード」とは、脆弱性・バグ・保守性が
Rubyを書いていると、サーバを書きたくなることがあります。皆さんもそうだと思います。 ということで今日はRubyでスッとサーバを書くためのgem、serverengineの簡単な使い方メモ。 github.com Rubyでサーバを書きたくなった時 そもそも的に、Rubyでただサーバを書くのは非常に簡単である。具体的には Kernel#loop などを回してその中でリクエストを待ったり、何かしら処理を行えば終わり。特別なgemは必要ないし、TCPを扱うクラスなども組み込みで用意されている。 以下のような9行のスクリプトを起動すれば、サーバを書いたと言える。ところで TCPServer#accept_nonblockでないと、acceptでブロックしてしまって終了処理が遅れたりするのでノンブロッキングの方のAPIを好んで使うのがいいだろう。 require 'socket' server
最近業務でも耳にすることが増えたGraphQLについて今すぐ話を聞きたい!と思ったので、現場でGraphQL使っているぜという皆さまにお声がけして話を聞くアンド話をする会を設けました。 当日は各位から、なんでGraphQLなの?とか、GraphQLこれで悩んでる!などのお話を聞く予定です。 予定が近いですが、各位ダッシュでかけつけてください! 受付にて名札をご用意するので、その際に「GraphQLやってる」「やってない」「言語」などのプロフィールを示していただけるようにしようとおもいます。懇親会などでの話題のきっかけにご利用ください。 ## LT内容 タイトルは仮のものを含... 五反田のfreeeさんでGraphQLナイトが開催されたので参加してきました。会社のSlackの開発者チャンネルで@hsbtさんが貼ったリンクを見て開催に気づけたので、ありがたい限りでした。 また、LT枠が急遽空
明示的 意味 แพลตฟอร์มการเรียนรู้และพัฒนาทักษะด้วยเทคโนโลยี https://suin.io เป็นแพลตฟอร์มที่ให้คุณเรียนรู้และพัฒนาทักษะทางเทคโนโลยีอย่างสะดวกสบาย เรามุ่งมั่นในการให้ความรู้และประสบการณ์ที่มีคุณค่าในการพัฒนาตนเอง pascalcase
こんにちは、バックエンドエンジニアの田島(@katsuyan121)です。 5/31〜6/2にかけて仙台で開催されたRubyKaigi2018に、スタートトゥデイテクノロジーズから5人が参加しました。 今年のRubyKaigiは3日間で50を超える講演があり、参加者も1000人を超える大変大規模なカンファレンスでした。たくさんの講演の中で、スタートトゥデイテクノロジーズのエンジニアが興味を持ったものを、この記事でいくつか紹介します。 また今回スタートトゥデイテクノロジーズはスポンサーブースを出展したので、そこで得られたことを共有します。 セッション Proverbs(Matz) Rubyのお父さんであり、弊社スタートトゥデイテクノロジーズの技術顧問でもあるMatzさんの発表です。 今回の発表では3つの諺を例にお話を展開されました。 名は体を表す 「名は体を表す」という通り、名前は重要である
今年もRubyKaigiでしたねー。実によいカンファレンスでした。 rubykaigi.org 仙台は東京からも新幹線で1.5〜2時間で着けるというアクセスの良さ、加えてちょうど新緑の時期で街中も郊外も美しいし、日本酒も酒に合う魚もおいしい場所だし、地方開催のカンファレンスは本当にすばらしいなって話をずっとしてた。そういうところに隔離されてずっとソフトウェアの話ができるの、本当に良いと思う。 しゃべってきた 今年は去年のRubyKaigiから間が短いこともあってトークの応募どうしようかなと思ってたんだけど、最近Asakusa.rbで @joker1007 さんとよく盛り上がる技術ネタがあって、それを共同で応募してみたら通ったから話してきた。(jokerさんのエントリ) Hijacking Ruby Syntax in Ruby - RubyKaigi 2018 スライドはこちら。 Hija
RubyKaigi 2018 仙台行ってきた!楽しんでいただけたでしょうか。 太助 本店、太助 分店、山形ラーメン、大漁旗(笹かま)、ホテルの朝食、そしてマネーフォワード提供の会場のランチがとても心に残っています。 今回はMinRubyを改造して自分用の言語作ろうって話でした。最後はこういう感じになります。 なにこれminrubyを改造して分散メッセージングシステムを作れるようにしたのすごい https://t.co/sdiqTQMkIp— keiichiro shikano λ♪ (@golden_lucky) June 1, 2018 今回は直前に とてか05 があったり英訳問題があったりほんとに準備不足になってしまいました。説明飛んじゃったところや滑舌が死んだところがあったりして申し訳ない。 発表はうまくいかなかったけど、会場で売ってた「RubyでつくるRuby」を売り切れたので満足
Railsの勉強会、Step-to-Rails-Expert.rb#19 に参加してきました! Step-to-Rails-Expert.rb って? 公式の説明をそのまま… 本勉強会はStep-to-Rails-Expert.rbというRails関連中級者向けの勉強会です。 コンセプトとしては、初心者を抜けたレベルの人が中級者・上級者になる上で、一歩進んだ技術やハマリどころなどを議論形式で共有し、場合によってはともに解決策を考えていけるような勉強会を目指しております。 なお、2017年9月よりExpert-TodoというTodoアプリを各々作って来て参加者同士でレビューし合う企画を実施しております。アプリを作ってきた人だけでなく、そうでない人もレビューの仕方や実装方法などの知見を貯められる企画となっていますので、ぜひご参加ください。 step-to-rails-expert-rb.con
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く