ブックマーク / future-architect.github.io (17)

  • Real World HTTPの第3版ができあがりました | フューチャー技術ブログ

    https://www.oreilly.co.jp/books/9784814400669/ ひとえに読者の皆さんが買ってくれたおかげで、Real World HTTPを改訂し、このたび3版を上梓しました。ありがとうございます。2016年ごろから書き始めて、2017年に初版を出版したので、執筆段階からすると8年ほど経過しているのですが、これだけ長くこのに関わり続けられるというのは、書を買ってくださるみなさまのおかげです。 今回は、ひさびさに無料のミニ版も更新しました。日、このブログと同時にリリースしました。よりミニ版が学習コンテンツとして使いやすくなるように、そもそもブラウザってどんな動きをするの? というイントロの章をミニ版とオリジナル版に追加しました。 また、オリジナル版だけになりますが、HTTPが単なるブラウザとの通信を超えてプラットフォーム API化していっている流れに合わせ

    Real World HTTPの第3版ができあがりました | フューチャー技術ブログ
    havanap
    havanap 2024/05/20
  • Makefile覚書: Goアプリ開発に役立ちそうな基礎知識 | フューチャー技術ブログ

    はじめにTIG真野です。育休明けです。 フューチャー社内のタスクランナーはmakeやTaskなど複数の流派があり、チームによって使い分けられています。個人的にはmakeで良いんじゃないかと思っていますが、Taskも良いですよね。 makeは細かい記法をいつも忘れる+調べるとC言語向けの情報が出てきて脳内変換に手間を感じたため、makeを用いてWebバックエンドアプリをGoで開発するということをテーマに、役立ちそうな情報をまとめます。 なお、今記事におけるmakeは、GNU Makeを指します。バージョンは以下で動かしています。 MakefileのためのEditorConfigMakefileのインデントはハードタブである必要があります。誤りを防ぐためにもEditorConfigを設定しておくと良いでしょう。 makeは通常、Makefileという名称をデフォルトで認識しますが、同一フォルダ

    Makefile覚書: Goアプリ開発に役立ちそうな基礎知識 | フューチャー技術ブログ
    havanap
    havanap 2023/10/13
    make以外のなにかのほうがいいのでは…とおもわんでも
  • Go 1.21連載始まります&slogをどう使うべきか | フューチャー技術ブログ

    Go 1.21は久々の新しいライブラリが大量追加だったり、既存のパッケージへの改良の多数行われたり、あたらしい組み込み巻数が追加されたりで記事などが書きやすいリリースです。残念ながら、フューチャーで一番Goを使っているプロジェクトが山場で今回はちょっと書き手が少ないのですが、今回もお付き合いいただけるとうれしいです。 1.21の更新内容のまとめダイジェスト 1.18の時に入るといって直前にキャンセルになった、ジェネリクスのためのパッケージslices/mapsの復活 新しい組み込み巻数のmin/max/clearの追加 言語仕様の強化 パッケージの初期化順序が仕様化 型推論ちょっぴり強力に 次期バージョンで入る予定のループ変数が共有されちゃうバグ対策が実験実装 ランタイムの性能改善(いつもの) 深いスタックオーバーフロー時のトレースが見やすく(最新100ではなく、最新50と一番外側の50表

    Go 1.21連載始まります&slogをどう使うべきか | フューチャー技術ブログ
    havanap
    havanap 2023/08/02
  • Go 1.20 Wrapping multiple errors | フューチャー技術ブログ

    はじめにこんにちは! TIG の川口です。 記事は Go 1.20リリース連載 の3目です。Wrapping multiple errors についてお話します。 Release Note では、こちら の箇所になります。 Proposal は、こちら になります。 何が変わったか?さて具体的に何が変わったかをはじめにおさえておきます。 Go 1.20 expands support for error wrapping to permit an error to wrap multiple other errors. An error e can wrap more than one error by providing an Unwrap method that returns a []error. The errors.Is and errors.As functions hav

    Go 1.20 Wrapping multiple errors | フューチャー技術ブログ
    havanap
    havanap 2023/04/19
  • Go 1.20 HTTP ResponseController | フューチャー技術ブログ

    TIGの辻です。Go 1.20 リリース連載の5目は Core library の HTTP ResponseController のアップデートを紹介します1。 何が変わるのか net/http パッケージに新しく ResponseController 型が追加されます 従来から存在する ResponseWriter インタフェースでは実現できなかったHTTPリクエストごとの制御が実現できるようになります ResponseController 型にある SetReadDeadline() や SetWriteDeadline() メソッドを利用して、リクエストごとの読み書きのデッドラインを設定できます 何が嬉しいのかGo のユーザーとして見たときの ResponseController 型の追加による具体的な嬉しいポイントはHTTPハンドラごとに読み書きのデッドラインが設定できることで

    Go 1.20 HTTP ResponseController | フューチャー技術ブログ
    havanap
    havanap 2023/01/31
  • パスワードレス技術の現状と未来について | フューチャー技術ブログ

    はじめにこんにちは。TIG の吉岡です。秋のブログ週間 10 目の投稿です。 2022年の 5 月に Apple, Google, Microsoft そして FIDO Alliance が マルチデバイス対応FIDO認証資格情報 を発表してから、パスワードレス技術に対する注目が高まっています。1 パスワードレスの概要について調査してまとめてみました。 目次 私たちとパスワード パスワードの抱える問題 パスワードマネージャ 公開鍵暗号の活用 パスワードレスと FIDO Alliance FIDO v1.0 FIDO2 FIDO の認証フロー Passkeys パスワードレスな未来 私たちとパスワード今日、私たちのデジタルアイデンティティはパスワードに支えられています。私たちは日々 Google で検索し、Netflix を観て、Twitter でつぶやき、Amazon で買い物をしますが

    パスワードレス技術の現状と未来について | フューチャー技術ブログ
    havanap
    havanap 2022/11/18
  • Go 1.19のメモリ周りの更新 | フューチャー技術ブログ

    Go 1.19リリース連載の6目です。 Go 1.19では、いくつかメモリ周りの更新がありました。1つはガベージコレクタ周りのお話と、あとはメモリモデルの更新です。 ライブラリではsync/atomic.Int64など、いくつか型が追加されました。 ガベージコレクタガベージコレクタの詳細と調整の仕方についてのドキュメント が追加されました。このドキュメントはスライダーで動作の変化がみられるインタラクティブなドキュメントになっているので、ぜひご覧ください。 「GoJavaと違って、GCの調整ポイントがほとんどなく、最初からトップスピード(オプションの選択の中で相対的に)だよ」みたいに説明されることもありましたが、そういうわけにも行かなくなったというか、ある程度知っておく必要はあるかもしれません。とはいえ、デフォルトでも十分うまくやってくれますし、そもそも即座に終了するユーティリティでは頑

    Go 1.19のメモリ周りの更新 | フューチャー技術ブログ
    havanap
    havanap 2022/09/06
  • OpenTelemetryとgo-chiを繋げてみる | フューチャー技術ブログ

    PHP/Rust/Swift/Erlangあたりはコミットチャンス? 2年前からアップデートされていると感じたポイントOpenTelemtryと、その前身のOpenCensusについてはこのブログでも取り上げました。 OpenCensus(OpenTelemetry)とは | フューチャー技術ブログ 基的な考え方は前回紹介したものと変わっていませんが、2年前からいくつか変わったかも? と思ったところをピックアップするとこんなところですかね。 OpenTelemetryはOpenTelemetry専用のエージェント(ログ中継サービス)の活用も最初から視野に入っており、エージェント向けのエクスポーターも提供されている(OpenCensusにもあったがバージョンが最終版でも0.1.11で安定版ではなかった)。 stdoutロガーが一級市民扱い? トレース、メトリックスという2種類の機能のほかに

    havanap
    havanap 2022/08/02
  • Go 1.19リリース連載始まります GoDoc/ツール周りのアップデート | フューチャー技術ブログ

    まずは、GoDocと、その他ツール周りのアップデートの紹介です。 Docコメントの更新以前、Qiitaの方に、チョットできるGoプログラマーになるための詳解GoDocという記事を掲載しました。 https://qiita.com/shibukawa/items/8c70fdd1972fad76a5ce GoDocの書き方の詳細ですが、以前は空行をあけて段落、インデントをしてフォーマット済みテキスト、URLがあればリンク、という程度のマークアップしかなく、とてもシンプルでした。GitHub FlavorなMarkdownとまでもいかなくても、もうちょっとマークアップが高機能になってほしい、せめてリストだけでも・・・と思っていた日全国1億2000万のGoプログラマーにとって待望のアップデートが1.19で入りました。 セクションタイトル リンク リスト また、gofmtが改善され、Docコメン

    havanap
    havanap 2022/08/02
  • Flutter でプッシュ通知するときに知っておきたいこと | フューチャー技術ブログ

    はじめにこんにちは。TIGの越島です。 Dart/Flutter連載 の5日目のお題はFlutterプッシュ通知です。 Flutter製のスマホアプリにプッシュ通知機能をつけるとなったときに「最初に教えてもらってたら楽だったな〜」という情報をまとめてみました。また、最後に具体例としてFlutter x Firebase Cloud Messaging x Amazon Pinpointを組み合わせた場合の実現方法も簡単にご紹介します。 プッシュ通知の基礎知識まずはプッシュ通知について、基からおさらいをしていきましょう。 ローカル通知とリモート通知プッシュ通知には大きく分けて以下の2種類があります。 ローカル通知 リモート通知 ローカル通知は、デバイスの内部で完結するプッシュ通知で、インターネット接続を必要としないものになります。リマインダーアプリで決まった日時に通知を飛ばす等、外部のサ

    Flutter でプッシュ通知するときに知っておきたいこと | フューチャー技術ブログ
    havanap
    havanap 2022/07/19
  • AWS Lambdaの初期化処理と初期化タイミングの考慮不足によるはまりどころ | フューチャー技術ブログ

    こんにちは、TIGの辻です。失敗談をテーマにした連載の5目です。 AWS Lambda(以下Lambda)は様々なユースケースで利用できる、なにかと便利で強力なサービスです。ブログでも以下のようにLambdaに関するたくさんの記事が投稿されています。 Lambda Function URLs をGoでお試し。実行時間の上限(タイムアウト)やWeb API構築周りで気になること Lambda×Go並列処理で100万回APIを呼び出す LambdaをカスタムDockerランタイムで開発する方法 私もLambdaが好きで、Lambdaの実行時間制約以内で終了する処理であれば、初手の候補の一つとしてLambdaを考えます。 そんなLambdaですが、予約済同時実行数5を1に制限して使っていたときに、初期化処理と初期化タイミングの考慮不足により、はまったことがありました。記事ではLambda

    AWS Lambdaの初期化処理と初期化タイミングの考慮不足によるはまりどころ | フューチャー技術ブログ
    havanap
    havanap 2022/06/10
    はまりそう
  • Go言語で定数として扱いたいmapを毎回アロケートさせて性能劣化した話 | フューチャー技術ブログ

    はじめに失敗談をテーマにした連載の3目です。 TIG DXユニットの原です。21年度4月に新卒で入社し、2年目となります。 参加しているプロジェクトで、数百万件のデータを処理する機能を担当したことがありました。 記事はその際の失敗と、その失敗から得た経験を共有するため、執筆しました。 内容のサマリ 来フィールドで宣言すべき定数的に扱いたい変数を、関数内で毎回生成しreturnしてしまったので呼び出す度に毎回アロケートが発生し性能劣化してしまった Benchmark Test、Profiling、Escape Analysisでどういう挙動になってしまっていたか調べてみた 内容記事では、まずどのような状況であったかを説明し、どのような順番で問題を解決したかの順で説明します。 主にGoのテストとProfilingに関した内容です。 Goのテストについての関連記事として、Goのテストに入

    Go言語で定数として扱いたいmapを毎回アロケートさせて性能劣化した話 | フューチャー技術ブログ
    havanap
    havanap 2022/06/06
    ひとに説明するのに便利そう
  • 失敗談連載2022を始めます | フューチャー技術ブログ

    こんにちは。技術ブログ運営の伊藤です。 今回は、タイトルの通り、普段仕事している中での失敗談を集めた連載開始のインデックス記事となります。 いろんな失敗普段、仕事で開発などを進めているとき、そのときのレビューが通過したり、気づきにくい小さなミスなどがあるかと思います。そういった内容がちょっとずつ積もっていき、どこかで障害になったり、性能の劣化を引き起こします。 はたまた、日頃の作業をしている中で、一つ忘れてしまったがために、クラウドプロバイダーから高額な請求が来てしまうこともあります。 そういった、人が作業、開発する上ではどこかに失敗はつきものであるので、連載を読んで、失敗しそうな落とし穴を事前に把握したり、日々の業務をちょっと気をつけるなどしていただければ幸いです。 連載スケジュール連載は以下のスケジュールで記事を公開します。 扱う内容が変わったり、公開日程がずれることがございますが

    失敗談連載2022を始めます | フューチャー技術ブログ
    havanap
    havanap 2022/06/06
  • GoとDynamoDBを用いた開発で反省していること | フューチャー技術ブログ

    はじめにTIG真野です。失敗談をテーマにした連載で、ちょうどプロダクト開発的に良い区切りのタイミングでもあるため、振り返りがてら、DynamoDB,Go,AWS Lambda技術要素について自分自身の理解・見込みの甘さについて反省します。 DynamoDBのシステム項目created_atとかupdated_atのタイムゾーンはJSTにすれば良かったDynamoDBは日付型を直接サポートしておらず、文字列型で保存することになります。 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes.String データサイズや諸々の理由でUnixTime 勢力もあるかもしれませんが、アプリケーションから直接参照

    havanap
    havanap 2022/06/02
  • GoのORマッパー連載を始めます | フューチャー技術ブログ

    (2021.09.18追記)おまけとして、筒井さんがさらに寄稿してくれました。 lib/pq から jackc/pgx への移行 O/RマッパとクエリビルダーO/Rマッパは Object Relational Mapperの略で、通常はGoの構造体とRDBのレコードを紐付ける処理のことを指します。O/Rマッパーと呼ぶことが多いですが、略してORMとも呼びます。名前から見るとSQL検索結果を構造体にマッピングすること(Goだとsqlx相当の処理)かなと思いますが、実際はSQLを組み立てるDSLを提供するライブラリが多いです。 クエリビルダーは、広い意味のO/Rマッパ機能のうち、SQLクエリを組み立てるライブラリのことです。調べると goquとかがまさにそれにあたります。 細かくはgoquを連載テーマにした伊藤真彦さんに譲るとして、簡単ではありますがここでサンプルコードも出しちゃいます。 ds

    GoのORマッパー連載を始めます | フューチャー技術ブログ
  • OpenSLOについて | フューチャー技術ブログ

    はじめにはじめまして、原木と申します。 皆さまはSRE NEXTをご覧になりましたでしょうか? SRE NEXTは 先日実施された『信頼性に関するプラクティスに深い関心を持つエンジニアのためのカンファレンス』です。国内外のエンジニアが日々SRE(サイト信頼性エンジニアリング/Site Reliability Engineering)の実践手法を共有することで、Webサービスが今後運用、成長していくための次世代の信頼性を担おうとしています。 もしもWebサービスの運用を安定的に行う手法やそのためのチームビルディングに興味がある場合、SRE NEXTの動画セッションやスライドが公開されると思うのでご覧ください1。 さてブログではそんなSREとも関係の深い、OpenSLOに関して取り上げたいと思います。 OpenSLOとは最近、SLOモニタリングという言葉が注目を集めつつあります。例えば、Go

    OpenSLOについて | フューチャー技術ブログ
    havanap
    havanap 2022/05/18
  • k6の使い方 シンプル&軽快な負荷試験ツールを試す | フューチャー技術ブログ

    TIGの伊藤真彦です。 業務で行っている開発がいよいよリリースを視野に入れたフェーズに入り、E2Eテストや各種性能試験を行いました。 負荷試験とはリリース前に行いたい試験の一つに負荷試験があります。 なるべく実際の運用に近い環境、データベースの状態を整え、実際に利用されるであろうユーザー数、もしくはそれ以上の同時接続にシステムが耐えられるかを試験します。特にソーシャルゲームの世界では想定を超えたアクセスによりリリース直後にサーバーがダウンしてしまう悲劇が発生しがちです。IT業界の外にいる人々にとっても覚えのある経験かもしれません。 そんな負荷試験ですが、実際に数百人、数万人規模の同時アクセスを人力で再現するには膨大な予算が必要です。そのため、一台のコンピュータで複数人からの同時アクセスを再現する負荷試験ツールが数多く存在します。 負荷試験ツールの定番と言えばApache Jmeterがあり

    k6の使い方 シンプル&軽快な負荷試験ツールを試す | フューチャー技術ブログ
    havanap
    havanap 2021/07/12
  • 1