タグ

ブックマーク / qiita.com (202)

  • レイテンシ(遅延)とスループット(帯域幅)と帯域幅遅延積 - Qiita

    マルチクラウド展開にまつわる既成概念を覆すより データ転送では、特に長距離の場合にレイテンシ(遅延)が問題になることがありますが、現在はすべてのクラウド・プロバイダーがそれぞれの物理インフラストラクチャを互いの近くに配置(専門用語では「コロケーション」)しているため、これはさほど問題となりません。この近接性(場合によっては同一コロケーション施設内の別の部屋)は、クラウド間のレイテンシがミリ秒単位であることを意味します。それに加え、クラウド・データセンター・リージョンは世界中で増加しており、クラウド・リージョン間の距離は縮まっています。 という事で、レイテンシ(遅延)について、まとめてみてみます。 ■ Agenda レイテンシ(遅延)とスループット(帯域幅) レイテンシと TCP の動作 帯域幅遅延積(Bandwidth-Delay Product) TCP Window Size の調整と

    レイテンシ(遅延)とスループット(帯域幅)と帯域幅遅延積 - Qiita
    kwhrtsk
    kwhrtsk 2024/02/07
  • RAG評価ツールの "RAGAS" を使って、RAGパイプラインの性能を測定する - Qiita

    はじめに こんにちは、KDDIアジャイル開発センターのはしもと(仮名)です。 LLMで何かしたい勢のみなさま、検索拡張生成こと RAG (Retrieval Augmented Generation)、やってますか? 自社で持っているデータを使ってエンタープライズサーチを実現したい、それができればきっと無敵。そう考えて色々やろうとしているんじゃないでしょうか。私です。 RAGを使って意図した出力を得られるようにするには、十分なデータセットを準備したりパラメータを変更しながらチューニングをするなど、地道な作業が必要となります。 開発ライフサイクルにおける評価・テストステップで有効な、評価用フレームワーク RAGAS を使ってみましたので、記事ではそれについてまとめます。 RAGASとは RAGパイプラインを評価/テストするためのフレームワークです。 パイプラインを構築するためのツールは多く

    RAG評価ツールの "RAGAS" を使って、RAGパイプラインの性能を測定する - Qiita
    kwhrtsk
    kwhrtsk 2023/11/23
  • HaskellとRustを足して2で割ったような関数型言語Fixを作っている話 - Qiita

    はじめに ここ1年ぐらいかけて、Fixという名前のプログラミング言語を作っています。 コアとなる機能の実装がある程度落ち着き、実際にFixを使ってプログラムを書けるようになってきたので、そろそろ言語の紹介をしてみようと思います。 記事はFixのチュートリアルではなく、どういう思想で設計されていて、どういう特徴を持つ言語なのか、という点を紹介するものです。 意見・提案・助言などをいただけるとうれしいです。 リポジトリはこちらです。 ※ コメントやコミットメッセージは一応拙い英語で書いていますが、日語でissueを立てたりdiscordで意見・質問してもらっても大丈夫です。 ※ 急いで作った部分もあるため、コンパイラのコードは結構汚いです。ご容赦ください。 現状、Fixをローカルで実行するためにはLLVMのインストールが必要で時間がかかりますが、Fix playgroundを使えばブラウザ

    HaskellとRustを足して2で割ったような関数型言語Fixを作っている話 - Qiita
    kwhrtsk
    kwhrtsk 2023/08/07
  • [Docker / Python / M1 Mac]Docker を利用して Jupyter を構築 - Qiita

    Docker を利用して Jupyter を構築した理由 使用している PC の環境を汚したくないため 他の人への共有を簡単にするため(若手メンバーに教材として払い出す際の手間を減らしたい) Docker の実用的な使い方を確認したい GitHub リポジトリ 前提条件 Docker Desktop を既にインストールしていること Docker Desktop の状態が Engine Running になっていること 開発環境 項目 内容 備考

    [Docker / Python / M1 Mac]Docker を利用して Jupyter を構築 - Qiita
    kwhrtsk
    kwhrtsk 2023/07/16
  • Makefile警察「ぐぬぬぬ…」 - Qiita

    ?「プロジェクトでよく使うコマンド Makefile に書いたろー」 ?「docker compose up -d --wait っと…」 👮‍♀「 Makefile警察 だ!」 👮‍♀「 Makefile は、ソフトウェアのビルドプロセスを自動化するためのファイルだ!」 👮‍♀「多目的なタスクランナーとして使うな!」 ?「せやったんか。誠にごめんなさい。」 Makefile は広く使われていますが、時々目的外に使われてしまうことがあります。しかし、そのような使い方にはより適した代替手段が存在します。この記事では、 Taskfile というツールについて解説します。 Makefile のつらみ Makefile は主にビルドプロセスを自動化する目的で生まれましたが、様々なコマンドをまとめて実行する便利さから多目的なタスクランナーとしてもよく使われます。しかし、次のような問題があります

    Makefile警察「ぐぬぬぬ…」 - Qiita
    kwhrtsk
    kwhrtsk 2023/07/03
    少なくともGNU Makeは想定用途をビルドプロセスに限ってない “Make is not limited to building a package. You can also use Make to (中略) anything else you want to do often enough to make it worth while writing down how to do it. “ https://www.gnu.org/software/make/
  • CodeSandbox が Rust や Python など様々な言語に対応したので Qiita に埋め込んでみた - Qiita

    Qiita にはさまざまなコンテンツを埋め込み可能です。CodeSandbox も埋め込み可能なコンテンツの一つです。 従来の CodeSandbox はブラウザ上で動作するため ReactVue などのフロントエンドのみ対応していましたが、近年の CodeSandbox は Firecracker の microVM という仮想マシンによる処理の実行が可能になりました。それにより、フロントエンド以外のさまざまな言語の実行が可能となっています。 従来のブラウザ上で ReactVue を動かす sandbox を browser sandbox、最新の microVM で動作する sandbox を cloud sandbox と呼びます。(詳細はリンク先のドキュメントをご確認ください。) この cloud sandbox では、Rust や、 Python が公式にサポートして

    CodeSandbox が Rust や Python など様々な言語に対応したので Qiita に埋め込んでみた - Qiita
    kwhrtsk
    kwhrtsk 2023/06/25
  • 個人的docker composeおすすめtips6選 - Qiita

    はじめに 皆さん、docker composeを利用しているでしょうか? 複数のdockerコンテナをまとめて立ち上げたり、環境変数を定義できたり便利ですよね。 今回はある程度docker composeを利用している方向けに私が便利、便利そうと感じたdocker composeの機能を挙げてみました。 docker compose cli v2を利用 docker-composeではなく docker composeコマンドも利用可能になってます。 Docker Desktopでは v3.4.0から利用可能で、基的にはコマンドの互換性あります。 Docker image名やコンテナ名のプレフィックスをディレクトリ名から変更する 通常は ${ディレクトリ名}_${サービス名}でイメージが作成されます。 環境変数COMPOSE_PROJECT_NAMEでプロジェクト名を指定することにより

    個人的docker composeおすすめtips6選 - Qiita
    kwhrtsk
    kwhrtsk 2022/12/25
  • Amazon DynamoDB の論文を読んでいく - Qiita

    概要 AWS で人気のサービス DynamoDB についての論文が公表され巷で噂になっていたと思う。 今回は、その論文を読み込んでいき、ざっくりまとめていくという記事になります。 完全趣味な記事なので、興味ある人がいれば幸いです笑 Abstract まず論文のタイトルですが、「Amazon DynamoDB: A Scalable, Predictably Performant, and Fully Managed NoSQL Database Service」と題したものとなっています。 Amazon DynamoDB は、NoSQL とよばれる部類のデータベースサービスです。 一貫した耐久性、可用性、パフォーマンスを提供してくれるマネージドなサービスなのが特徴ですね。 冒頭、2021年に66時間にわたる「Amazon Prime Day」中にピーク時8920万リクエスト/秒をさばいてい

    Amazon DynamoDB の論文を読んでいく - Qiita
    kwhrtsk
    kwhrtsk 2022/12/14
  • 2022年Reactを使ってる人には必ず知っていてほしい最強のdata fetchingライブラリであるRTK Queryの優位性とメンテナンスの際に役立つTips - Qiita

    import type { ConfigFile } from "@rtk-query/codegen-openapi"; // https://redux-toolkit.js.org/rtk-query/usage/code-generation#simple-usage const config: ConfigFile = { schemaFile: "https://petstore3.swagger.io/api/v3/openapi.json", apiFile: "./store/emptyApi.ts", apiImport: "emptySplitApi", outputFile: "./store/petApi.ts", exportName: "petApi", hooks: true, }; export default config; import { empty

    2022年Reactを使ってる人には必ず知っていてほしい最強のdata fetchingライブラリであるRTK Queryの優位性とメンテナンスの際に役立つTips - Qiita
    kwhrtsk
    kwhrtsk 2022/07/02
  • 急なTypeScript案件🔥最初の30日間に使い倒したい「コードリーディング支援ツール」 - Qiita

    この投稿では、「TypeScriptの文法や用語がよく分からない」という問題を解消してくれそうなツールを紹介します。 勉強しながらの見切り発車 最近はTypeScript未経験でも、TypeScript案件にアサインされることが増えてきているように思います。 運がいいと着手前にTypeScriptをじっくり学習する時間を与えられることがあります。しかし、多くのケースでは、見切り発車で開発に参加するのではないでしょうか。 コードリーディングから始まる TypeScript案件は、理解すべき既存のTypeScript/JavaScriptコードがあるケースが多いです。 そのため、 読んで理解すべき既存のTypeScriptコードがある しかし、TypeScriptの知識が乏しい状態でスタート といった事態がよく起きます。 新規プロジェクトでは既存コードがありませんが、ググって出てきたサンプルコ

    急なTypeScript案件🔥最初の30日間に使い倒したい「コードリーディング支援ツール」 - Qiita
    kwhrtsk
    kwhrtsk 2022/01/12
  • Rails 7.0 + Ruby 3.1でゼロからアプリを作ってみたときにハマったところあれこれ - Qiita

    Ruby on Rails Advent Calendar 2021の枠が空いていたので、あとから登録しました はじめに 個人的なプロジェクトになりますが、僕が翻訳しているRSpecの入門書「Everyday Rails - RSpecによるRailsテスト入門」を2022年前半にRails 7.0バージョンにアップデートしようと考えています。 そこでこのの中で使っているサンプルアプリケーションをRails 7.0でゼロから作り直してみました。フロントエンド周りを中心に結構考え方が変わっている部分があったので、「ここでハマった!」とか「こういうポイントを押さえておくといいかも」という点をあれこれ書いてみます。 なお、Rails 7.0版のサンプルアプリケーションはまだ公開できる状態ではないので、公開はもうしばらくお待ちください🙏 今回作成したサンプルアプリケーションはこちらで公開してい

    Rails 7.0 + Ruby 3.1でゼロからアプリを作ってみたときにハマったところあれこれ - Qiita
    kwhrtsk
    kwhrtsk 2022/01/02
  • libbpf-rsを使ったRustとeBPFプログラミング - Qiita

    この記事は、Supershipグループ Advent Calendar 2021の17日目の記事になります。 はじめに この記事ではeBPFを活用してLinuxカーネルにフック用プログラムを注入することにより、ネットワークパケット処理を拡張する例を示します。 その実装にあたり、Rustとlibbpfの統合を行うlibbpf-rsを使った開発体験を記したいと思います。 TL;DR libbpf-rsによってRustとeBPFを組み合わせたプログラムのコンパイルやロード処理の手間は省けるようになります。実際、システムコールの呼び出し部分はほとんど意識する必要がありませんでした。 一方でeBPFプログラミングで特に苦労したのは以下の点でした。 デバッグとテスト つまりeBPFプログラミングにおいて周辺的な問題がツールによって解決されていき、よりプログラムの機能そのものの問題に時間を割くことができ

    libbpf-rsを使ったRustとeBPFプログラミング - Qiita
    kwhrtsk
    kwhrtsk 2021/12/17
  • Rustの標準ライブラリは小さいのか? - Qiita

    はじめに 「Rustの標準ライブラリは小さい」と言われます。実際、正規表現や乱数など多くの言語で標準ライブラリに入っているようなものが、Rustの標準ライブラリにはありません。こうなっている理由は「標準ライブラリに入っていなくても依存関係を簡単に追加できる」「後方互換性を保ちながら大きな標準ライブラリを維持するのは難しい」といったことが挙げられます。もちろん標準ライブラリが小さいと不便なこともあり「サードパーティライブラリの選択が難しい」というのはよく言われるところです。 ところでRustの標準ライブラリは実際に小さいでしょうか?小さいというと、どうしても低機能・できることが少ないというイメージになりますが、個人的な印象としては「Rustの標準ライブラリはカバー範囲は狭いが高密度」というものです。 あまりこういう観点で書かれたものは見たことがないので、この記事ではRustの標準ライブラリの

    Rustの標準ライブラリは小さいのか? - Qiita
    kwhrtsk
    kwhrtsk 2021/12/04
  • 妄想的DHH理解2:概念的距離の圧縮 - Qiita

    Caution この記事はDHHファンの妄想によるシナリオが多分に含まれます。 というかほとんどです。 成り立ちや考え方が間違ってることも当然あるように思うので話半分で読んでください。 これは一体 前回かいた妄想的DHH理解のエピソード0的な話です。 妄想的DHH理解では、DHHがどういう過程で今のRailsフロントエンドに達したかの話が主題でしたが、そこでは「なぜ〜を選ばなかったか」は説明されていませんでした。 彼はモノリシックを愛したり、トレンドと真逆のアプローチでフロントエンドに新しいレールを引き始めたりするので、単に彼が天邪鬼であったり車輪の再発明大好きおじさんとして捉えられがちですが、実は太い太い一筋をもった技術選定をし続けてるってことが広まればいいなと思ってるファンの記事です。 前提知識 前回とほぼ同じです。 Railsの生みの親、Rubyist。 実はカーレーサーでもありま

    妄想的DHH理解2:概念的距離の圧縮 - Qiita
    kwhrtsk
    kwhrtsk 2021/09/30
  • やっと React Server Components が腑に落ちた - Qiita

    2020 年末に発表された React Server Components は、一言でいうと React コンポーネントをサーバ側でレンダーする仕組みです。……が、初見ではちょっと魔法すぎて訳が分からない技術でもあります。トーク動画だけ見てても「具体的にどんな仕組みで動いてるの?」みたいな疑問が山ほど浮かんでくると思います。 一体裏で何がどうなっているのか、この技術はどう使うのか、デモコードを触りながらやっと具体的に理解しはじめたので、なるべく動作が想像しやすいようにまとめました。なお、この記事単体よりは、他の記事や上記動画を見てある程度概要や公式の売り文句を掴んでからの方が理解しやすいと思います。 これまでの、普通にブラウザで動作するコンポーネントのことを、区別のためにクライアントコンポーネントと呼びます(単に区別のために既存のコンポーネントに別名がついただけです)。以下ではサーバコンポ

    やっと React Server Components が腑に落ちた - Qiita
    kwhrtsk
    kwhrtsk 2021/09/22
    通常RESTやGraphQLで実装されているサーバ・クライアント間のインターフェースをアプリから隠蔽するという点において、RailsがHotwireで実現しようとしている事に似ているというのが興味深い。アプローチは真逆だけど。
  • すごいReactフック8選 - Qiita

    はじめに React.jsは現在、フロントエンド開発者に最も人気のあるJavaScriptライブラリです。Facebookが開発し、オープンソースのプロジェクトとして提供されているReactは、世界中の開発者や企業が使用しています。 Reactは、シングルページアプリケーションの構築方法を大きく変えました。その最大の特徴の1つがフックです。フックは2019年に導入されたもので、状態処理の時に、クラスコンポーネントの代わりに関数コンポーネントを使用できるようになりました。組み込みのフックに加えて、Reactは独自のカスタムフックを実装する方法を提供しています。 ここでは、アプリケーションやプロジェクトで使用できる、カスタムフックとその実装に関するお気に入りをいくつか紹介します。 1. useTimeout 宣言型アプローチでsetTimeoutを実装できます。まず、コールバックと遅延を受け取

    すごいReactフック8選 - Qiita
    kwhrtsk
    kwhrtsk 2021/07/06
  • 「正直9年経ったいまでもfor文ググってる」 - Qiita

    「正直9年経ったいまでもfor文ググってる」 という議論記事があった。正直なところ私もググる方の人だ。私の感想: ポンとテキストエディタだけ渡された時に書けるか自信ないぞ...IDEがあればまあ大丈夫かなあ。 JavaScriptだけじゃない。言語色々扱うしという言い訳。正規表現とか毎度調べる。 だから世の中にチートシートというものがあるのだ。お気に入りチートシート多数。 実戦でどうしているか?結局周りのソースを見て馴染む書き方にしていますよ多分。 暗記するかしないかは受験勉強みたいなもので、コーディング面接に受かるなら必要。暗記そのものには意味はないとは思う。 競技プログラミングが使えないとかいう論もあったな。 ググり力も大事。 でも「最低限」もできないのはやはり恥ずかしい気持ちはある。 なんかこれ英語できるできないと似てるな。英語なんてGoogle翻訳、DeepL翻訳あればいいけど、実

    「正直9年経ったいまでもfor文ググってる」 - Qiita
    kwhrtsk
    kwhrtsk 2021/03/25
    for文の条件式内で定義された変数のスコープは言語によってループの外と内で違ったりするので、Java/JavaScript/Go/C++/Rubyあたりをたまに書くと混乱する人は多そう。
  • 共有ライブラリを使うのを止めてほしい - Qiita

    以下は共有ライブラリに虐げられ共有ライブラリをもう使いたくないという個人的な愚痴をまとめたものです。特にことわらない場合は Linux の話です。 何故共有ライブラリを使うのか? 前回説明したように共有ライブラリをリンクした実行ファイルは必要な共有ライブラリを実行時にシステムから検索してロードします。この際ライブラリを検索する方法は名前です。先に見つけたものを使います。しかもこの検索パスは環境変数 LD_LIBRARY_PATH によって変更できます。また検索する順序に当然依存します。 この機構は何のために存在するのでしょう?いくつかの目的があげられます。 ディスク容量を節約する 複数の実行バイナリで同じ関数のバイナリを持たなくていいので単純にディスク容量を節約できます。これは現代のように十分大容量なディスクが安価で利用できる時代には特に問題になりません。 共有ライブラリを更新すればそれを

    共有ライブラリを使うのを止めてほしい - Qiita
    kwhrtsk
    kwhrtsk 2021/01/02
    運用がコンテナベースになっても共有ライブラリを使っていればアプリ更新時にレイヤキャッシュが効くので無意味という訳ではない。
  • どれだけリクエストをさばけるのかを待ち行列理論で考えてみた - Qiita

    テレビで素敵なサイトが紹介されていたのでアクセスしてみたら、なかなかレスポンスが返ってこなかったりステータスコード503になったりすることってありますよね。 テレビで紹介されたことで多くの人がサイトにアクセスした結果、そのサービスのキャパシティを超えてしまったわけです。 どうなるとキャパシティを超えるのでしょうか? また、いつからレスポンスが遅くなるのでしょう。 効果的にリクエストをさばくにはどうしたらいいのでしょう。 Photo by Roman Arkhipov on Unsplash 待ち行列理論を使って理想的なモデルからこれらを考えてみたいと思います。 待ち行列理論はコンピュータサイエンスをやってきた人はみんな触れたことがあるとは思いますが、大石の場合はそれが何十年も(!)前のことなのであらためて思い出してみました。 モデル Railsでサービスを提供するとき、rackサーバとして

    どれだけリクエストをさばけるのかを待ち行列理論で考えてみた - Qiita
    kwhrtsk
    kwhrtsk 2021/01/02
    待ち行列理論を実践的なシナリオで解説。スループット、サーバ側の並列度、レイテンシの組み合わせが表になっていてわかりやすい。
  • 今流行りのgRPCについて簡単にまとめてみた(Goのサンプルコード付き) - Qiita

    はじめに (当時)Go歴1ヶ月の私が急遽gRPCを用いてバックエンドのAPIを開発してる業務に参画することになり、必要にかられて急いで学んだので、その時の学びを共有します✎ gRPCって最近よく聞くけど、「なにそれ?」って方も多いと思うので(私もそのうちの1人でした)、自分の学びを纏めるためにもgRPCのエントリー記事を書こうと決意し、Go 5 Advent Calendar 2020に登録しました! gRPCとは gRPCって良いらしい 最近gRPC流行ってるらしい 等聞いたことは多いと思いますが、簡単に説明すると RPC (Remote Procedure Call) を実現するためにGoogleが開発したプロトコルの1つ Protocol Buffers を使ってデータをシリアライズし、高速な通信を実現できる IDL(インターフェース定義言語)を使ってあらかじめAPI仕様を .pro

    今流行りのgRPCについて簡単にまとめてみた(Goのサンプルコード付き) - Qiita
    kwhrtsk
    kwhrtsk 2020/12/27
    RESTのようなopinionatedなAPIと較べてgRPCは設計の自由度がかなり高いので、開発初期からAIPのようなガイドラインを使って、CRUDみたいな定型的なRPCの形式だけでも揃えておくのがおすすめ。https://google.aip.dev/131