はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

はてなブックマーク

  • はてなブックマークって?
  • アプリ・拡張の紹介
  • ユーザー登録
  • ログイン
  • Hatena

はてなブックマーク

トップへ戻る

  • 総合
    • 人気
    • 新着
    • IT
    • 最新ガジェット
    • 自然科学
    • 経済・金融
    • おもしろ
    • マンガ
    • ゲーム
    • はてなブログ(総合)
  • 一般
    • 人気
    • 新着
    • 社会ニュース
    • 地域
    • 国際
    • 天気
    • グルメ
    • 映画・音楽
    • スポーツ
    • はてな匿名ダイアリー
    • はてなブログ(一般)
  • 世の中
    • 人気
    • 新着
    • 新型コロナウイルス
    • 働き方
    • 生き方
    • 地域
    • 医療・ヘルス
    • 教育
    • はてな匿名ダイアリー
    • はてなブログ(世の中)
  • 政治と経済
    • 人気
    • 新着
    • 政治
    • 経済・金融
    • 企業
    • 仕事・就職
    • マーケット
    • 国際
    • はてなブログ(政治と経済)
  • 暮らし
    • 人気
    • 新着
    • カルチャー・ライフスタイル
    • ファッション
    • 運動・エクササイズ
    • 結婚・子育て
    • 住まい
    • グルメ
    • 相続
    • はてなブログ(暮らし)
    • 掃除・整理整頓
    • 雑貨
    • 買ってよかったもの
    • 旅行
    • アウトドア
    • 趣味
  • 学び
    • 人気
    • 新着
    • 人文科学
    • 社会科学
    • 自然科学
    • 語学
    • ビジネス・経営学
    • デザイン
    • 法律
    • 本・書評
    • 将棋・囲碁
    • はてなブログ(学び)
  • テクノロジー
    • 人気
    • 新着
    • IT
    • セキュリティ技術
    • はてなブログ(テクノロジー)
    • AI・機械学習
    • プログラミング
    • エンジニア
  • おもしろ
    • 人気
    • 新着
    • まとめ
    • ネタ
    • おもしろ
    • これはすごい
    • かわいい
    • 雑学
    • 癒やし
    • はてなブログ(おもしろ)
  • エンタメ
    • 人気
    • 新着
    • スポーツ
    • 映画
    • 音楽
    • アイドル
    • 芸能
    • お笑い
    • サッカー
    • 話題の動画
    • はてなブログ(エンタメ)
  • アニメとゲーム
    • 人気
    • 新着
    • マンガ
    • Webマンガ
    • ゲーム
    • 任天堂
    • PlayStation
    • アニメ
    • バーチャルYouTuber
    • オタクカルチャー
    • はてなブログ(アニメとゲーム)
    • はてなブログ(ゲーム)
  • おすすめ

    iPhone 17

『zenn.dev』

  • 人気
  • 新着
  • すべて
  • ECH時代のインターネット検閲とその運用的課題

    3 users

    zenn.dev/catatsuy

    以前SNIや検閲について以下の記事を書きました。 この記事はその続編としてEncrypted Client Hello (ECH)の現状と展望を整理します。何か誤りがあれば教えてもらえると非常にうれしいです。 ESNIからECHへ 以前の記事では韓国政府によりESNIがブロッキングされたことを紹介していましたが、その後に中国政府からもESNIがブロックされました。これによりESNIの標準化が事実上中止され、その後ECHの標準化作業が開始されました。 ESNIの問題点はESNIを利用していることが検閲側から分かってしまうことでした。そこでClientHello全体を暗号化し、既存のClientHello (Outer)にダミー拡張を加え、真のClientHello (Inner)を暗号化して送信する仕様に進化しました。 ブラウザ側はencrypted_client_hello拡張を常に付与す

    • テクノロジー
    • 2025/05/17 20:01
    • Goの古いコードが動かなくなることはほぼない理由

      162 users

      zenn.dev/catatsuy

      古いGoのコードが腐ったという話を聞いて、状況はよく分かりませんが、そんなことは基本ないので安心して欲しいという話を書きます。 2行まとめ 一般的なアプリケーション(cgoやHTTPやgoroutineの細かい挙動に依存していない限り)であればGoは古いコードでも動くはず ただし依存先のコードが消えていたり、非互換な変更が入っていたら動かなくなるので、動かしたいならvendorディレクトリ以下にソースコードを入れて完全固定するべき Goは非常に互換性が高い言語 Goはversion 1のリリース以降、互換性を維持しており、コードが動かなくなることは基本的にありません。 実はGo 1.22で初めて非互換な変更(forループの変数を毎回生成する変更)が入りましたが、これにより問題が出るのは、もともとバグがあったコードである可能性が極めて高いです(少なくともGoogle社内で見つかった非互換なコ

      • テクノロジー
      • 2024/12/29 17:10
      • golang
      • go
      • あとで読む
      • なんだこれ
      • 未分類
      • 言語
      • article
      • プログラミング
      • ユーザー名をURLに含めるなら@始まりにするとよさそう

        164 users

        zenn.dev/catatsuy

        SNSなど、ユーザー名をURLに含めているサービスは色々ある。このZennもそうだ。ただ、考えることが多い。例えば以下の点だ。 システムで使いたい文字列をユーザー名に使われる可能性があるので、ユーザー名に使えない膨大な文字列のリストを管理する必要がある 実装に失敗すると、一部のユーザーだけ特別扱いするルーティングを独自実装する必要が出かねない 簡単な対応策としては /user/{ユーザー名} のようなURLの規則にすること これを採用しているサービスもあるが、見た目がダサいからか、あまり好まれていない印象がある ということで、現実的な解決策として @user_name みたいな@始まりのURLにする方法がある。 自分が知る限り、最初にこれをやったのはMediumだが、Mediumは現在サブドメインにするルールになったようで、いつの間にかこの形式を辞めてしまった。 実はTwitter(現X)

        • テクノロジー
        • 2024/12/21 15:40
        • webサービス
        • あとで読む
        • web
        • service
        • web制作
        • development
        • nginx 1.27.3でupstreamにresolve指定が可能に

          28 users

          zenn.dev/catatsuy

          個人的にはビッグニュースなのに、あまり話題にしている人がいなかったのでメモ的に書いておきます。 nginxは最近開発がGitHubに移ってから、開発が活発になっており、以前から期待されていたupstreamでresolveを指定する機能がOSS版でも使えるようになりました(有料版では以前から使えていた)。 今までの問題 nginxのproxy_passにドメインを指定すると、起動時に名前解決が走り、その後はずっとそのIPアドレスに対してproxy_passされます。よってDNSが更新されても古いIPアドレスにリクエストが行く問題がありました。 その状態で直したい場合はreloadすればまた名前解決されるので、reloadするくらいしかありません。 reloadをせずにDNS更新を反映させる方法としては、以下のように一度変数にsetするという荒技もありました。 resolver 8.8.8.

          • テクノロジー
          • 2024/11/30 18:23
          • nginx
          • あとで読む
          • 開発
          • ISUCON向けにGoの便利キャッシュライブラリを作りました

            4 users

            zenn.dev/catatsuy

            ISUCON向けにGoのcacheライブラリを作成しています。 このライブラリは、ISUCONのように高パフォーマンスが求められる場面での利用を想定し、次のような経緯で開発を始めました。 以前は、キャッシュ用のコード片をコピーして微調整しながら使っていましたが、最近のGoのアップデートにより、状況が大きく改善されました。Genericsが一般的に使えるようになり、型ごとにコードを修正する必要がなくなったほか、deferのパフォーマンス問題もほとんど解消されています。こうした背景から、よりシンプルかつ効率的なキャッシュライブラリが作れると考え、次の方針で開発に取り組みました。 Genericsを活用して型安全かつ柔軟なキャッシュ機能を提供 標準ライブラリのみを使用して依存関係を最小限に 実際の利用を想定したシンプルで効率的な実装 使い方は以下で紹介しています。 この記事では日本語で簡単に使い

            • テクノロジー
            • 2024/11/10 16:34
            • あとで読む
            • ISUCON練習用にメンテナンスしている問題について

              3 users

              zenn.dev/catatsuy

              ISUCONの練習で過去問を用意しようとすると、repoが壊れていてセットアップできなかったり、セットアップできても諸々バージョンが古すぎてつらい、とかが起こりがちです。 ということでISUCON練習用に自分がメンテナンスしている問題があるので紹介します。何か問題があったらPRを送ってくれればベストエフォートで見るつもりなので何かあったら教えてください。 いずれも詳しい使い方は各repoのREADMEに書いてあるので参照してください。 private-isu 気付いたらISUCON練習用のデファクトスタンダードになっていて、ISUCON本の題材にもなっています(私はISUCON本の著者の1人です)。CIも整備されて、現在も精力的にメンテナンスをされています。 元々新卒研修用に作られたので、難易度は本家ISUCONより低めですが、ISUCONのエッセンスはふんだんに取り入れられているので、I

              • テクノロジー
              • 2024/09/29 19:29
              • isucon
              • Let's EncryptでOCSP staplingを有効にしている人は無効にしよう

                4 users

                zenn.dev/catatsuy

                タイトルの通りです。 自分はnginx(最近はfreenginx)を趣味で運用しています。そこでLet's Encryptで証明書を作成してTLSを有効にしています。 これまではOCSP staplingを有効にしていましたが、Let's Encrypt側がOCSP staplingのサービスを停止しました。 元々OCSP staplingは失敗したから何か問題が起こる仕組みではない(だからこそ廃止されたわけですが)ので、このまま放置してもいいと言えばいいですが、nginxのエラーログが地味に埋まるし、動かない設定を残しておくのも健全ではないので削除するべきでしょう。 ちなみに自分のサーバーではそれまで出ていなかった以下のエラーが2024/07/20 17:35:15 JSTから断続的に出るようになりました。 2024/07/20 17:35:15 [error] 98574#98574:

                • テクノロジー
                • 2024/08/18 21:11
                • nginx
                • セキュリティ
                • あとで読む
                • ChatGPTのAPIを利用してGitのブランチ名・コミットメッセージを自動生成するbentoを作りました

                  34 users

                  zenn.dev/catatsuy

                  使い方は柔軟ですが、自分が使っている方法を紹介します。 まず環境変数OPENAI_API_KEYにChatGPTのAPIのtokenをセットします。 ~/.gitconfigに以下の設定を足します。 [alias] sb = !git diff -w | bento -branch -model "gpt-4o" sc = !git diff -w --staged | bento -commit -model "gpt-4o" git sbでブランチ名推薦、git scでコミットメッセージ推薦をしてくれます。-modelでモデルを指定できますが、精度や速度の問題でgpt-4oがおすすめです。 色々使った結果、実際にGitのフローで使う場合、以下のことを考える必要があります。 ブランチ名を作りたい時はaddする前 新規ファイルは特に自動生成のファイルだとかなり大きくなることがあり、そういう

                  • テクノロジー
                  • 2024/07/06 19:10
                  • git
                  • あとで読む
                  • 人工知能
                  • api
                  • プログラミング
                  • Goの標準のutf8.RuneStart関数がエレガントすぎる

                    36 users

                    zenn.dev/catatsuy

                    先日以下の記事を書きました。 ここでUTF-8の最初の文字かどうかの判定を以下の自作した関数で実装していました。 const ( t1 = 0b00000000 tx = 0b10000000 t2 = 0b00000110 t3 = 0b00001110 t4 = 0b00011110 ) func isUTF8LeadByte(tmp byte) bool { if tmp&tx == t1 { return true } tmp >>= 3 if tmp == t4 { return true } tmp >>= 1 if tmp == t3 { return true } tmp >>= 1 if tmp == t2 { return true } return false }

                    • テクノロジー
                    • 2024/05/20 12:29
                    • golang
                    • 文字コード
                    • unicode
                    • あとで読む
                    • sedやgrepの代替として使えるpurlを作りました

                      5 users

                      zenn.dev/catatsuy

                      作りました。 Go製です。 何で作ったのか、どういう機能があるのか簡単に紹介します。 これまでの課題 sedやgrepには以下の問題があります。 正規表現の記法がPerl互換ではなく、使いにくい sedはmacとLinuxで互換性がなく(BSDとGNUで互換性がない)、OS依存のコードになりやすい これまでその問題を避けるために私はPerlのワンライナーを利用してきました。Perlは正規表現が使いやすく、柔軟な指定もできます。OS依存にもなりにくいです。しかしPerlには以下の問題がありました。 最近のmacやLinuxにはデフォルトでinstallされていないので使いにくい 特にDockerのようなコンテナ環境は顕著 最近は利用例が減っているので敬遠されがち ワンライナー専用ツールではないのでオプション名がわかりにくい そこで以下のツールを求められていると思います。 Perl互換の使いや

                      • テクノロジー
                      • 2024/04/13 15:21
                      • Linux
                      • programming
                      • CDNを活用して高速なWebサービスを提供する

                        9 users

                        zenn.dev/catatsuy

                        TechFeed Experts Night#21 発表資料 自己紹介 本名:金子達哉 株式会社PR TIMES開発本部長CTO 2021/4入社 達人が教えるWebパフォーマンスチューニング〜ISUCONから学ぶ高速化の実践(技術評論社)(通称:ISUCON本)の著者の1人 6章「リバースプロキシの利用」・7章「キャッシュの活用」・8章「押さえておきたい高速化手法」を担当 ISUCON9予選・ISUCON6本選運営 今年のISUCON13はアドバイザーとして運営に関わります catatsuyというIDで各種SNSをやっています かたついと呼ばれることが多いです 本発表の対象者 ISUCON本は既に読んでいて、実際にCDNを活用して高速なWebサービスを提供したい人 初心者向けの一般論の話はしないので、一般論を知りたい方はISUCON本を読むのがおすすめです ISUCON本で紹介されていな

                        • テクノロジー
                        • 2023/06/21 20:25
                        • cdn
                        • performance
                        • SEO
                        • web
                        • あとで読む
                        • nginxでHTTP/3を使う方法 2023年5月版

                          48 users

                          zenn.dev/catatsuy

                          ついさっき、ついにHTTP/3対応のブランチが本家のnginxにmergeされました。 このまま何事もなければ次のMainline versionである1.25.0がリリースされたタイミングで使えるようになるはずです。 検索するとnginxでHTTP/3を使う方法を解説しているサイトがいくつかヒットしますが、実はmergeするちょっと前くらいから非互換な変更をいくつも入れていたので、そのままだと動かないはずです。なので簡単に使い方を解説しておきます。 なお分かっていると思いますが、こちらの記事は記事執筆時点(2023/05/20)の内容です。 OpenSSLの代わりを選ぶ HTTP/3を使うには自分でbuildする必要があります。いずれpackageが配布されるだろうと思っている人がいるかもしれませんが、nginxのHTTP/3対応はBoringSSLのAPIで対応されています。OpenS

                          • テクノロジー
                          • 2023/05/20 20:06
                          • nginx
                          • HTTP3
                          • QUIC
                          • http
                          • あとで読む
                          • M1 Macでnginx+LibreSSLがbuildできるようになりました(+LibreSSLの紹介)

                            5 users

                            zenn.dev/catatsuy

                            そういえば書いてなかったので軽く書いておきます。まだ開発版ですが3.7.0から可能になっています。 LibreSSL単体はM1 Macでもbuildできました。というかそもそもMacにプリインストールされているOpenSSLはOpenSSLではなくて(かなり古めの)LibreSSLです。 ただnginxと一緒にbuildするとエラーが出る状況でした。この状況はM1 Macを買ってすぐくらいから気付いていたのですが、いつか直るだろうと放置していました。しかしこの現象に困っているのが自分だけなのか全く直る気配がなく、ここは自分が動くしかないかということで調査しました。調査の結果、以下のPRを出しました。 図らずもキリ番(死語?)の800番のPRです。 LibreSSLをnginxと一緒にbuildすると、config.subというプログラムが実行しているマシンのplatformを判定しています

                            • テクノロジー
                            • 2023/01/08 07:09
                            • 開発
                            • あとで読む
                            • RackとGoのhttp.Clientの相性問題について

                              6 users

                              zenn.dev/catatsuy

                              ずっと悩んでいるので色んな意見を聞きたくて、情報を簡単にまとめておきます。 関連PRは以下です。 経緯 私は以前社内ISUCONのために以下のリポジトリを作成しました。 このリポジトリを作成してから5年後に、この問題を題材に書籍化することになりました。これについてはもちろん嬉しいことではありますが、このリポジトリを作成したときは私は新卒3年目でエンジニアとしての能力も高くなく、業界的にもISUCONの問題作成ノウハウが貯まっているとは言えない状況で、しかも私自身が問題作成ができるのか分からない中で模索しながら作った問題という経緯があります。なので作り込みはかなり甘く、ツッコミどころは正直色々あります。 それもそれで当時の私の技術力で果敢に挑んだ結果ではあるので許して欲しいところではあるのですが、今回解説する問題が発生してしまっているので、その問題を解説します。 まずprivate-isuの

                              • テクノロジー
                              • 2022/12/04 17:37
                              • ISUCON12で惨敗しました

                                3 users

                                zenn.dev/catatsuy

                                リポジトリはこちらです。アプリケーション担当とインフラ担当の2人で参加して、私はアプリケーション担当で参加しました。チーム名は「帰ってきた鍋部」というチーム名です(同じメンバーでISUCON10本選の並行チームで「鍋部(2人前)」というチームで参加したのと、ウルトラマンの年ということでこのチーム名にしました)。 1万点を超えていたタイミングはありましたが、最終的にベンチマークが通らなくなり0点で終わるという惨敗だったので反省ブログです。 反省点1:手元の開発環境にこだわった結果、2時間消費してしまった ISUCONだとどうやって開発するかが重要です。今回の問題のつらかったのがサーバー上に謎のバイナリが起動していて、そちらが認証を行っていた点です。認証を行うために同じドメインでAPIを提供する必要があるのでnginxでproxy_pass先を変える実装になっていました。ここで大きく2つの問題

                                • テクノロジー
                                • 2022/07/26 10:54
                                • ファイルが多すぎてlsが打てなくなったディレクトリでファイル名のリストを出すllsを作りました

                                  3 users

                                  zenn.dev/catatsuy

                                  2021/09/18追記: v0.0.2を出しています https://zenn.dev/catatsuy/articles/7e3292778396b4 この記事を読みました。 私はファイルが増えすぎてlsが打てなくなってしまったディレクトリを見たことをこれまで何度かあります。その度に無力感を味わうことになりました。それに対して挑む方法をずっと求めてきました。そんな中、記事を読みました。記事内ではC言語での実装方法が紹介されていますが、実際に使われたC言語の実装は公開されていなそうでした。 しかしやるべきことはgetdents64というシステムコールを実行することだけで、別に実装することは難しくなさそうです。 Goの場合はsyscallパッケージを使うことでシステムコールを実行できます。今回のgetdents64はLinuxにしか実装されていないので実装すればMacなど他のOSで実行でき

                                  • テクノロジー
                                  • 2021/08/30 19:46
                                  • linux
                                  • isucandarとISUCON9予選ベンチマーカーについて

                                    42 users

                                    zenn.dev/catatsuy

                                    前提 このエントリーは isucon/isucon9-qualify: ISUCON9予選 のベンチマーカー実装者としての観点から isucon/isucandar の解説をします。isucandar自体の解説についてはリポジトリのREADMEにある程度書かれているので、そこを参照してください。 このエントリーはISUCON9予選ベンチマーカーを実装していた時に私自身が何を考えていたのかという思い出話も入ります。ベンチマーカーを実装したことがある人以外にはほとんど益がないエントリーになると思いますが、そういうエントリーなので興味がなければこの先は読まずに閉じることをおすすめします。 また去年私が書いた以下のエントリーを読んでいることが前提になるので、このエントリーを読んでいない人はまずこちらを読んでから読んでください。 ISUCON9予選の出題と外部サービス・ベンチマーカーについて ISU

                                    • テクノロジー
                                    • 2020/10/11 00:41
                                    • isucon
                                    • golang
                                    • あとで読む

                                    このページはまだ
                                    ブックマークされていません

                                    このページを最初にブックマークしてみませんか?

                                    『zenn.dev』の新着エントリーを見る

                                    キーボードショートカット一覧

                                    j次のブックマーク

                                    k前のブックマーク

                                    lあとで読む

                                    eコメント一覧を開く

                                    oページを開く

                                    はてなブックマーク

                                    • 総合
                                    • 一般
                                    • 世の中
                                    • 政治と経済
                                    • 暮らし
                                    • 学び
                                    • テクノロジー
                                    • エンタメ
                                    • アニメとゲーム
                                    • おもしろ
                                    • アプリ・拡張機能
                                    • 開発ブログ
                                    • ヘルプ
                                    • お問い合わせ
                                    • ガイドライン
                                    • 利用規約
                                    • プライバシーポリシー
                                    • 利用者情報の外部送信について
                                    • ガイドライン
                                    • 利用規約
                                    • プライバシーポリシー
                                    • 利用者情報の外部送信について

                                    公式Twitter

                                    • 公式アカウント
                                    • ホットエントリー

                                    はてなのサービス

                                    • はてなブログ
                                    • はてなブログPro
                                    • 人力検索はてな
                                    • はてなブログ タグ
                                    • はてなニュース
                                    • ソレドコ
                                    • App Storeからダウンロード
                                    • Google Playで手に入れよう
                                    Copyright © 2005-2025 Hatena. All Rights Reserved.
                                    設定を変更しましたx