ブックマーク / moznion.hatenadiary.com (10)

  • 所属変更のお知らせ - その手の平は尻もつかめるさ

    2024年4月1日より id:moznion の所属が以下の通り変更となります。 旧: 株式会社ソラコム 新: ソフトバンク株式会社 (SB Intuitions株式会社出向) 以上となります。 引き続きよろしくお願い申し上げます。 ソラコムには大体6年半くらいいて、実際数えきれないほどたくさんのものを作り、たくさんのものを直し、たくさんのとりくみをしました。なおかつ最後の2年はUSのシアトル駐在で働いていたということもあり非常に貴重な体験となりました。あと在米中にCTO Technical Advisorという迫力のあるタイトルがついたりもしました。 僕がソラコムに入った日はちょうどKDDIがソラコムを買収した2017年9月1日で、そして先日2024年3月26日にソラコムがIPOを成し、ちょうどそのタイミングで退職するということとなり、つまり上場と共に去る男と相成りました。これはソラコム

    所属変更のお知らせ - その手の平は尻もつかめるさ
    toshikish
    toshikish 2024/04/01
  • GoのHTTPクライアントがAWS NLB配下にあるコンポーネントと通信するときに5-tupleが分散しないので特定のインスタンスにしか負荷分散されないという話題 - その手の平は尻もつかめるさ

    Microservicesのようなものを考えた際、Goで書かれたコンポーネントがHTTP(S)を使って他のコンポーネントと通信するという場合があると思います。 その「他のコンポーネント」がAWS NLBの配下にある時、GoのHTTPクライアントがTCPコネクションを使い回す場合があり、その状況においては特定のNLB配下のインスタンスにしかリクエストを割り振らない挙動をするという話題です。 NLB プロトコル、ソースIP、ソースポート、宛先IP、宛先ポート、そしてTCPシーケンス番号に基いてフローハッシュアルゴリズムを用いて割り振り先のインスタンスを選択するようになっています。 ref: For TCP traffic, the load balancer selects a target using a flow hash algorithm based on the protocol,

    GoのHTTPクライアントがAWS NLB配下にあるコンポーネントと通信するときに5-tupleが分散しないので特定のインスタンスにしか負荷分散されないという話題 - その手の平は尻もつかめるさ
    toshikish
    toshikish 2023/01/18
  • 書評: ISUCONを「ゴール」で終わらせない。『達人が教えるWebパフォーマンスチューニング ~ISUCONから学ぶ高速化の実践』 - その手の平は尻もつかめるさ

    達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践 作者:藤原 俊一郎,馬場 俊彰,中西 建登,長野 雅広,金子 達哉,草野 翔技術評論社Amazon 著者のid:catatsuyさんよりご恵投いただきました。ありがとうございます。実は著者の方からを頂戴するのってはじめてです。 さて、この書籍のタイトルをはじめて見たときは「オッ、ついにISUCONの攻略が来ましたね、これでワシも優勝間違いなしや!!」と思ったものですが実際に手に取ってみると必ずしもそうではないことに気付きました。むしろ「ISUCONで勝つための小手先のテクニック」のような話題は極力排除されており、高速かつ高可用なWebアプリケーションをどのように構築・運用していくか、というような実戦的な内容がその多くを占めています。 まず書籍の冒頭では「『Webアプリケーションのパフォーマンス』の定義」か

    書評: ISUCONを「ゴール」で終わらせない。『達人が教えるWebパフォーマンスチューニング ~ISUCONから学ぶ高速化の実践』 - その手の平は尻もつかめるさ
    toshikish
    toshikish 2022/06/12
  • API越しでタイムスタンプをやりとりする時のフォーマットをどうするべきか - その手の平は尻もつかめるさ

    APIのリクエストにせよレスポンスにせよ、タイムスタンプを利用するというのはよくある話です。 この時、そのタイムスタンプのフォーマットをどうするのが良いのかという話題です。IDLを使って縛るというというのは良い考えだと思いますが、IDLを使うにせよフォーマットについては決めなくてはならないので。 1. 文字列を使う これあんま良くないと思うんですよね……というのも、とあるAPIを触っている時に「タイムスタンプはRFC3339です」というフィールドがあったんですけれどRFC3339ではないフォーマットで返却されたり受け入れられたりしたのであまり信用ができない…… まあフォーマットが不正というのは極端な例かもしれないですが、仮にフォーマットが不正だと多くの場合 strptime() や time.Parse() なんかの時刻文字列のparserが正しく動かず (良いケースだとエラーが上がる、悪

    API越しでタイムスタンプをやりとりする時のフォーマットをどうするべきか - その手の平は尻もつかめるさ
    toshikish
    toshikish 2022/01/11
  • 実行中のシェルスクリプトをchattr(1)を使ってimmutableにするというのはどうか - その手の平は尻もつかめるさ

    [追記] 実行中のシェルスクリプトをchattr(1)を使ってimmutableにするというのはどうか - その手の平は尻もつかめるさ 調べてみたけどこれが良さそう <a href="https://stackoverflow.com/a/3399850/1921216" target="_blank" rel="noopener nofollow">https://stackoverflow.com/a/3399850/1921216</a>2022/01/02 17:02 b.hatena.ne.jp このブックマークコメントで指摘されましたが、immutableにするまでもなくこのラッパースクリプトを噛ませると良さそう。 #!/bin/bash # usage: # sh-run.sh script-you-want-to-run.sh args... set -ue file="$

    実行中のシェルスクリプトをchattr(1)を使ってimmutableにするというのはどうか - その手の平は尻もつかめるさ
    toshikish
    toshikish 2022/01/02
  • 古いaws/aws-lambda-goでAWS Lambdaのcontainer image runtimeを使うと刺さる - その手の平は尻もつかめるさ

    具体的に言うと、aws/aws-lambda-go@v1.18.0よりも前のバージョンでAWS Lambdaのcontainer image runtimeを使うとハンドラが呼び出されず、タイムアウトするまで刺さります。 例えば以下のような非常に簡単なLambda Functionをデプロイした時、 package main import ( "context" "fmt" "github.com/aws/aws-lambda-go/events" "github.com/aws/aws-lambda-go/lambda" ) func handler(ctx context.Context, event events.DynamoDBEvent) error { fmt.Println("CALLED") return nil } func main() { lambda.Start(h

    古いaws/aws-lambda-goでAWS Lambdaのcontainer image runtimeを使うと刺さる - その手の平は尻もつかめるさ
    toshikish
    toshikish 2021/12/20
  • テクノブレーン被害者アドベントカレンダー Day 19 - その手の平は尻もつかめるさ

    この記事はテクノブレーン被害者アドベントカレンダーの19日目として書かれています。このアドベントカレンダーは今まさに作りましたから、参加者は自分しかいません。他に被害者がいたら続きを書いておいてください。 この記事は特定の企業に対する苦情および批判が含まれます。お前だ、テクノブレーン。 こんなことが横行していては、「リクルーティング」という職業の価値が著しく毀損されてしまうし、ソフトウェアエンジニアリング産業自体がスポイルされていってしまう。 明確に、俺は強く怒っている。お前たちは「駄目」だ。 TL;DR テクノブレーンは当に悪質なリクルーティング企業なので使ってはなりません。 テクノブレーンから電話が来ましたか? 奴らはカモフラージュしてきますが相手をしてはいけません。 テクノブレーンを貴方の所属する企業が採用目的で利用していますか? こんな邪悪な企業を使っているようでは自身の会社も邪

    テクノブレーン被害者アドベントカレンダー Day 19 - その手の平は尻もつかめるさ
    toshikish
    toshikish 2021/12/19
  • 独自ドメインのメールアドレスを使うようにした - その手の平は尻もつかめるさ

    2021年の記事とは思えないタイトルですが、そのようにしたのです。 特定のメールサービスが提供するメールアドレスに依存していると、そのメールサービスからBANされた際に人権を維持できない可能性があります。というのも仮にメールアドレスが凍結すると、そのアドレスをアカウントのidentifierとして登録しているサービスを巻き込んでしまい大惨事が起きてしまいます。 プレッパーじみた危機意識ではありますが、そのような気持ちになったのでこのたび独自ドメインでメールアドレスを払い出し、それを使うようにしてみました。 しかし自前でpostfixを運用する……みたいなことは断固やりたくなかったので、今回はさくらのメールボックスを利用して、元々保有していたドメインのサブドメインを使ったメールアドレスを払い出し、そこに送られてくる全てのメールをGmailへと転送するという構成を取りました。 メールボックスに

    独自ドメインのメールアドレスを使うようにした - その手の平は尻もつかめるさ
    toshikish
    toshikish 2021/01/06
  • ネットワーク越しリトライ考 - その手の平は尻もつかめるさ

    ここ最近では何らかのインターネットサービスを構築・運用するにあたって、ネットワーク越しのリトライを考えることは避けられなくなりつつあります。 micro services のようなアーキテクチャを採用している場合はサービス間のメッセージのやり取りはまず失敗する前提 (つまりリトライをする前提) で組む必要がありますし、たくさんのクライアントがいてそのクライアントが定期的に何かを処理してセントラルにデータを送ってくる IoT のようなシステムを構築する時もその処理のリトライをよく考える必要があります。 というわけで「ネットワーク越しのリトライ」についてここ最近考えていることをざっくりと書き留めるものであります。 前提 リトライをする側をクライアント、リトライを試みられる側をサーバと呼称します リトライにおいて、サーバおよびネットワークはクライアントよりも弱者です クライアントはリトライをコン

    ネットワーク越しリトライ考 - その手の平は尻もつかめるさ
    toshikish
    toshikish 2020/11/17
  • Dockerコンテナ内でpuppeteerを使うとChromeゾンビプロセスがたまる問題 - その手の平は尻もつかめるさ

    表題のような問題があり,その調査したという記録です.なお,結論を一言で言うと--initを使え,ということになります. そもそもDockerコンテナを起動すると,CMDあるいはENTRYPOINTに指定されたコマンドがコンテナ内でPID 1として起動します.これが何を意味するかと言うと,「CMDあるいはENTRYPOINTに指定されたコマンド」はそのコマンド自体の責務をまっとうするのと同時に,initプロセスとしての振る舞いも行わなければならないということになります (id:hayajo_77さんにこの辺を詳しく教えてもらいました,ありがとうございます). つまりPID 1で動いているプロセスは「SIGCHLDをトラップすることで孤児プロセスを適切に回収し,waitpidをかける」という処理も適切に行う必要があります. さて,puppeteerを使ってChromeブラウザを起動するとどうな

    Dockerコンテナ内でpuppeteerを使うとChromeゾンビプロセスがたまる問題 - その手の平は尻もつかめるさ
    toshikish
    toshikish 2019/03/02
  • 1