タグ

mooonymannのブックマーク (11,540)

  • 同接1500人耐える配信サーバーをCloudflareを使って構築した

    始めようと思ったきっかけ Twitchのクローンサイトを作りたいとずっと考えていて、おおえのたかゆき(おえちゃん)さんが一般の配信サイトでは放送できないジャンルのコンテンツを配信できるサイトを探していると知って作成に取り掛かりました。なのでおえちゃんの元々配信していたサイトであるOPENRECにちなんで、サイト名はOpen放送室にしました。 前提 サーバーのプロバイダー: Linode クライアント: Next.jsUIはNextUI バックエンド: Express.js 環境 NginxでRTMPとHLS配信 NginxAPIとクライアントへのリバースプロキシ 全ての通信はCloudflare経由 ①初期段階の構成 第一回目のテスト放送での出来事です。 結果から言うと600人ぐらいで落ちました。 サーバー Ubuntu 4GB 2 Core (Dedicated Server) Ca

    同接1500人耐える配信サーバーをCloudflareを使って構築した
  • Sculpt Ergonomic Mouse

  • ユーザ情報を保存する時のテーブル設計 - そーだいなるらくがき帳

    はじめに ※この発言は個人の見解であり、所属する組織の公式見解ではありません 用法用量を守り、個人の責任で業務に投入してください 参考資料 2024/02/14追記 実際のテーブル設計の詳細はこちらを参考にどうぞ。 agilejourney.uzabase.com 要件 User情報を保存するときにどのようなテーブル設計を行うか 今北産業で頼む テーブルに状態を持たせず状態毎のテーブルを作る 状態が変わればレコードを消して別のtableに作る tableの普遍的な情報は別に持たせる 僕の考えた最強のDB設計 PostgreSQLをベースの雑なER図を作った。 これを元に話を進める。 table構成 users 親tableであり、すべてのユーザはここに属する。 基はINSERTのみでUPDATE、DELETEを考慮しない。 user_detail userに付随する詳細の情報がここに登録

    ユーザ情報を保存する時のテーブル設計 - そーだいなるらくがき帳
  • 33歳パイプカット男性です、皆様の質問にお答えします。|CK/旧七式敢行

    ω<スゥ……CKのキンタマです。すべてお話しします……ω<まさか「パイプカット」がトレンド入りするとは思わなかったよ。 コメント等いただければ適宜追記していきますのでお気軽にどうぞ。 はじめに俺には理解ができないよ。 パイプカットする判断をしたのも俺。 パイプカット手術の痛みに耐えたのも俺。 パイプカットのネタを面白おかしく発信してたのも俺(と) なのにみんなアルファ垢が漫画を引用したツイートばかり反応する。 できたぞ。33歳パイプカット男性のお気持ち表明だ。キンタマの政的消費をやめろ! まぁ僕が言いたいのはここですよね。普段性的消費だの搾取されてるだの言いながらも自分たちは平然とクレジットなしの無断転載をする。それはさすがに筋が悪いでしょう。 そして僕たち夫婦が相談して決めたことを対立する意見や派閥を攻撃するための材料にしてフォロワーからのインプレッションを稼ぎ、有料記事やマガジン

    33歳パイプカット男性です、皆様の質問にお答えします。|CK/旧七式敢行
  • 米国でスタートアップの要職をやってたけどレイオフされてしまった話|井上恭輔(きょろ)

    気づけばもう半年以上前の話になりますが、2024年5月、Interim CTOやSoftware Architectとして頑張って働いていた米国でスマートホームを開発するスタートアップ「HOMMA」からレイオフされ、事業を離れることになりました。入社時の夢いっぱいのブログエントリーはこちらからどうぞ。 ※ この記事は退職エントリーです。興味のある方だけお読みください。 何を作っていたの?最終的にどんなものを作ってたの?と思われると思うので、開発したプロダクトのデモを貼っておきます。ちなみに、この動画を作ったのも自分です。私物のBlackmagick Pocket Cinema Camera 4Kを持ち込んで、ポートランドの寒空の下、1人で撮影&編集しました。 タッチパネルが壁一面にあったり、音声クライアントやアプリで操作するドヤ!っとしたスマートホームではなく、埋め込まれたセンサーが人間の

    米国でスタートアップの要職をやってたけどレイオフされてしまった話|井上恭輔(きょろ)
  • C/C++の「ポインタ」とは

    C/C++ の「ポインタ」は、難しいとか、実は簡単だとか、色々言われます。 ポインタについては規格に書かれています。この記事は、ポインタをより正確にイメージするため、規格に私の解釈を追加したものです。区別のため、C++23 草案 (N4950) の内容には節番号を付け、私の解釈は 斜体 で書きます。 私の解釈は以下の記事の影響を受けています。 ポインタとは、IDとオフセットの組 まず、ヌル以外のポインタは、以下の ID とオフセットの組 です。 ID:新しいオブジェクトが作られるたびに振られる、ユニークな値。 オフセット:オブジェクト先頭からのバイト数。 詳しく話していきます。 ID の割り振り 変数を定義するとオブジェクトが作られ (6.7.2)、各オブジェクトに固有の ID が割り振られます。たとえば、 と書くと整数 x と配列 arr が作られるので、x と arr にそれぞれ ID

    C/C++の「ポインタ」とは
  • N 文字以上なら省略表示 - Object.create(null)

    「N 文字以上 / 以内」みたいなことを言われたときに考えること. 「文字」とは? 単に「文字」と言っても, それが指しているものが何かは自明ではない. 符号単位 (code unit) JavaScript の場合, 文字列は UTF-16 としてエンコードされている*1ので, そのエンコードの単位である 16 bit ごとに分割するというのがこの方法. .length で取得できるのはこの符号単位の数で, .slice() に与えるのも符号単位で数えたインデックスとなっている. > "あいうえおABCDE".length 10 > "あいうえおABCDE".slice(0, 5) "あいうえお" ところで Unicode には 16 bit で表せる数以上の「文字」 (U+0000 〜 U+10FFFF) が含まれるので, UTF-16 では 1 つの符号単位で表せない「文字」は 2

    N 文字以上なら省略表示 - Object.create(null)
  • Netflixで2億3800万人の会員を管理するということ

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    Netflixで2億3800万人の会員を管理するということ
  • HPCプログラマの書くコードってなんで古臭いの?

    TL;DR Q: HPCプログラマの書くコードってなんで古臭いの? A: そうしないと性能が出なかったから はじめに スパコンを使ってそれなりに長いこと研究をしています。初めてスパコンを使ったのは今から25年くらい前です。発展の早い世界ですので、昔と今ではだいぶ違ってきています。この前、スパコンを使う時の「常識」がすでに現在では常識ではなくなっているっぽいことを知り、私も「そっち側」になったのか、と感慨深くなりました。以下は、HPC業界の語り部に片足を突っ込んだおっさんの戯言です。 なお、以下では主に「京」の話をするため、富士通C++コンパイラに文句を言う形になりますが、富士通が悪いのではなく、昔のスパコンに搭載されていたC++コンパイラはどれもかなり酷かったということはあらかじめ言っておきたい気がします。IBMのコンパイラとかも酷かったし、なんならIntelのコンパイラもバグだらけだっ

    HPCプログラマの書くコードってなんで古臭いの?
  • RealWorld 業務 Rust - Qiita

    RealWorld 業務 Rust 実際に Rust 1.0 の頃から業務で Rust を使ってコードを保守してきてハマった落とし穴についての 知見 恨み言です Rustが素晴らしい言語であるというあたりまえのことにはこの文書では触れません 気が向いたら追加します 開発環境編 ビルドマシンを買ってもらえ ノートパソコンのCPUとメモリでは限界がある CPU 二桁コアのマシンを何人かで共有して使え VSCode の Remote SSH でがんばれ vim でもいいぞ ストレージは可能な限りデカくしろ target はブラックホール 10GB 超はあたりまえ、中には 100GB 超も sccache、 cargo cache 、 cargo sweep などを駆使してがんばれ docker も使うので大容量ストレージだけが正義だ sccache 使用例

    RealWorld 業務 Rust - Qiita
  • Init Struct Pattern

    Introduction Let’s talk initialization of complex structures in Rust. There’s a few popular ways to go about this, some of which include the pub fn new() convention and the builder pattern. In this blog post I’m going to compare these, and also introduce a new pattern which I’m going to call the Init Struct Pattern. New The first and most common way to initialize structures is by declaring a funct

  • Steamで配信したゲームがウイルス検知された話|frenchbread

    Dungeon Antiquaというゲームを2024/10/10にSteamでリリースしまして、その後も不具合修正や要望の多かった機能の追加などアップデートを重ねていたのですが、あるタイミングでのアップデートにより突然ゲームがウイルス検知されるという事案が発生し、そこから地獄を見ました。 もしかして今後同じ目に遭う人がいるかもしれないので、体験記としてまとめておきます。 問題発生〜暫定対応まで12/6アップデート以降、ウイルス検知発生のXのポストなどを見かけるようになる。調べるとPyInstallerでexe化したファイルにはありがちなことらしい(詳しくは次項)。とりあえず連絡が取れた方にウイルス検知からの除外設定を個別にお願いしたり、Steamにお知らせを掲示したりした。 12/11早朝、Steamサポートから「あなたのゲームがウイルスであるという報告が複数寄せられたため、販売を停止した

    Steamで配信したゲームがウイルス検知された話|frenchbread
  • Postman Flows を Webhook経由で起動し、JSON Body を引き渡す - Qiita

    今日は前回以下の記事で作った環境をWebhookで起動してみます。https://qiita.com/KameMan/items/b3313738bf29ec469dd1 まず最初に少しAPIコールを行う各タスクの名前の整理をします。 各APIコールを設定する画面で以下のように名前を記載して保存ボタンを押せばOKです。 以下のように見やすくなりました。 Flowの名前も同様に整理できます。 Webhookからの起動 このPostman Flows では作成したFlowをWebhookから起動させることが出来ます。 画面左下のWebhookをクリックします。 Publishを押します。 Postmanが管理するクラウド領域へFlowがアップロードされます。 この値をcurlなどで呼び出すとFlowが実行されます。 ブラウザでこのURLを読み込んでも動作しますが2回起動されます。これは暗黙的に

    Postman Flows を Webhook経由で起動し、JSON Body を引き渡す - Qiita
  • マイク入力ボリュームが自動で変わる autoGainControl を無効にしたい

    TL;DR 以下のように audio.autoGainControl オプションを指定することで、マイク入力のボリュームが自動で調整されます。 audio.autoGainControl は、audio: true と指定した場合にも、デフォルトで true になっています。 navigator.mediaDevices.getUserMedia({ audio: { autoGainControl: true } }); // or { audio: true } もしくは、chrome://flags/#enable-webrtc-allow-input-volume-adjustment を無効にすることで、autoGainControl を無効にすることができます。 対象読者 ブラウザでマイクを使う際に、マイクのボリュームが自動で調整されるのが気になる マイクを使う Web アプリ

    マイク入力ボリュームが自動で変わる autoGainControl を無効にしたい
  • LINEヤフーが「フルリモートOK」から「原則週1回出社」へ 社員は「働き場所の変更」拒否できる? - 弁護士ドットコムニュース

    LINEヤフーが「フルリモートOK」から「原則週1回出社」へ 社員は「働き場所の変更」拒否できる? - 弁護士ドットコムニュース
  • Go言語のlenについて - Qiita

    Go言語のlenは、配列、スライス、マップ、文字列などの長さを取得するために使用されます。以下に、配列、スライス、マップ、文字列のlenを取得するサンプルコードを記載。 func main() { // 配列のlenを取得する a := [3]int{1, 2, 3} fmt.Println(len(a)) // => 3 // スライスのlenを取得する s := []int{1, 2, 3} fmt.Println(len(s)) // => 3 // マップのlenを取得する m := map[string]int{"apple": 100, "banana": 200} fmt.Println(len(m)) // => 2 // 文字列のlenを取得する str := "hello world" fmt.Println(len(str)) // => 11 } この例では、配列、

    Go言語のlenについて - Qiita
  • GitHub Actionsでtmateを使ってシェルに繋いでデバッグする - @znz blog

    tmate を使って GitHub Actions の環境に ssh またはブラウザーから端末のシェルに繋いで、調査やデバッグなどができます。 環境 GitHub Actions の ubuntu または macos Debugging with tmate https://github.com/mxschmitt/action-tmate tmate 最初に試した時は macos には対応していなかったのですが、今は対応していました。 Windows は対応していません。 概要 tmate という tmux のセッションを公開してリモートから接続できるものがあって、 そのサーバー側を GitHub Actions 側で動かしてくれる Debugging with tmate があります。 それを steps に追加すると URL にログが出てくるので、それを開くとシェルに接続できます。

  • プロダクトのスケールによって顕在化しうるリスクをどう管理するか?

    SRE NEXT 2024での登壇資料です https://sre-next.dev/2024/schedule/#jp040 System Risk Records テンプレートはこちら: https://docs.google.com/spreadsheets/d/e/2PACX-1vT2…

    プロダクトのスケールによって顕在化しうるリスクをどう管理するか?
  • Golang: errors.Is、errors.Asについて

    こんにちは。 Go言語でテストコードを書いていた時、エラー内容をテストしたい時がありました。その際に、エラーを確認する方法としてerrors.Is、error.Asのどちらを利用すればよいか迷うという経験をしたので、そんな過去の自分に向けて記事を書きたいと思います。 errors.Isについて まずerrors.Isがどういったものかを説明します。 関数シグネチャは次の通りです。 errors.Isの説明として公式ガイドの1行目には次のように書かれています。 Is reports whether any error in err's tree matches target. 日語に訳すと、 Isはerrツリー内のerrorがtargetに一致するか否かを報告する。 となります。 言葉だけでは分からないので実装部分も見てみましょう。 errors.Isの実装コード errors.Isの実装

    Golang: errors.Is、errors.Asについて
  • Meta Quest 3/3SをWindowsの仮想マルチモニターにする機能がプレビュー実装

    Meta Quest 3/3SをWindowsの仮想マルチモニターにする機能がプレビュー実装