ブックマーク / gihyo.jp (160)

  • 第2章 詳解QUIC ~ TCPに代わり下位層で使用する新しいトランスポートプロトコル | gihyo.jp

    章では、HTTP/3がTCPに代わって下位層で用いるQUICについて解説します。 QUICはトランスポートプロトコル QUICはトランスポートプロトコルです。QUICの説明に入る前に、トランスポートプロトコルついておさらいします。 TCP/IPの4階層モデル プロトコルは階層で役割を分担しています。TCP/IPの4階層モデルでは、アプリケーション層、トランスポート層、インターネット層、ネットワークインタフェース層に分かれます(図1⁠)⁠。 図1 TCP/IPの4階層モデル アプリケーション層に分類されるアプリケーションプロトコルは、クライアントやサーバで動作するアプリケーションの動作に関するデータやメッセージの通信ルールを規定します。たとえばSMTP(Simple Mail Transfer Protocol)は、メールを送信する通信ルールを規定しています。HTTPはこの層に属します。

    第2章 詳解QUIC ~ TCPに代わり下位層で使用する新しいトランスポートプロトコル | gihyo.jp
    toshikish
    toshikish 2023/08/19
  • Tailwind CSS実践入門 第2章 Tailwind CSSの基本 ──開発環境へのインストール、設定ファイルの記述、エディタの設定 | gihyo.jp

    Tailwind CSS実践入門 ~まず作ってから、あとで共通化する Tailwind CSS実践入門 第2章 Tailwind CSSの基 ─⁠─開発環境へのインストール⁠⁠、設定ファイルの記述⁠⁠、エディタの設定 章では、開発環境にTailwindをインストールする方法に加えて、設定ファイルの記述方法や、エディタの設定などについて説明します。執筆時点でのTailwindの最新バージョンである、3.2.4の使用を前提にします。 Tailwind CSSのインストール Tailwindは、さまざまな開発環境にインストールして使用できます。Tailwindに関連するアプローチとして、CSS in JSやCSS Modulesなどのツールもありますが、これらを使用できるのは一部のSPA(Single Page Application)などの環境だけに限られます。しかしTailwindであれ

    Tailwind CSS実践入門 第2章 Tailwind CSSの基本 ──開発環境へのインストール、設定ファイルの記述、エディタの設定 | gihyo.jp
    toshikish
    toshikish 2023/07/26
  • Tailwind CSS実践入門 第1章 ユーティリティファーストとは何か ──従来の課題を解決する大胆なアプローチ | gihyo.jp

    Tailwind CSS実践入門 ~まず作ってから、あとで共通化する Tailwind CSS実践入門 第1章 ユーティリティファーストとは何か ─⁠─従来の課題を解決する大胆なアプローチ CSSフレームワークのTailwind CSSが注目を集めています。その特徴は、flex、pt-4、text-centerといったユーティリティクラスの組み合わせだけで、ほとんどすべてのスタイリングをしてしまおうという大胆なアプローチです。これまでのベストプラクティスと真っ向から対立するようなやり方ですが、だからこそ享受できるいくつもの強みがあります。特集では、そうしたTailwind CSSの考え方や、具体的な使い方について紹介します。 お知らせ:特集のサンプルコードは、GitHubの筆者リポジトリからダウンロードできます。https://github.com/yuheiy/wdpress133_

    Tailwind CSS実践入門 第1章 ユーティリティファーストとは何か ──従来の課題を解決する大胆なアプローチ | gihyo.jp
    toshikish
    toshikish 2023/07/25
  • Misskeyのパフォーマンス改善の取り組み・2023年7月 | gihyo.jp

    連載は分散型マイクロブログ用ソフトウェアMisskeyの開発に関する紹介と、関連するWeb技術について解説を行っています。 ここ最近でMisskeyのユーザー数がさらに急激に増えています。そのため、運営者がより少ないコストでサーバーを維持できるよう、Misskeyのスケーラビリティ改善を急いでいます。 今回は、そういった最近のMisskeyのパフォーマンス改善の取り組みについて、検討中のものも含めて紹介したいと思います。 misskey.ioの登録ユーザー数の推移 Identicon生成の無効化オプション Identiconはユーザーが自身のアイコンを設定していないときに代わりに表示されるアイコンで、これはユーザーごとに異なるようになっています。 仕組みとしては、https://misskey.example.com/identicon/hogeにリクエストされた際に、hoge部分をシー

    Misskeyのパフォーマンス改善の取り組み・2023年7月 | gihyo.jp
    toshikish
    toshikish 2023/07/19
  • ChatGPT APIのFunction callingを使って、請求書の構造化データを抽出する | gihyo.jp

    いまからわかる!ChatGPT活用プログラミング ChatGPT APIのFunction callingを使って⁠⁠、請求書の構造化データを抽出する 先月、OpenAIからFunction calling(関数呼び出し)機能がリリースされました。これが何なのか、何のために使うべきなのか、ちょっと見ただけでは分かりづらいと思います。 今回は請求書から情報抽出をするというよくありがちなケースを題材に、Function callingの利便性を示してみます。 Function callingとは OpenAI2023年6月13日にリリースしたChat APIの追加機能です。主にできることとして以下の3つが挙げられています。 外部ツールを呼び出して質問に答えるチャットボットを作成する 自然言語を内部APIの呼び出しやSQLに変換する テキストから構造化データを抽出する たとえば天気予報と血液型

    ChatGPT APIのFunction callingを使って、請求書の構造化データを抽出する | gihyo.jp
    toshikish
    toshikish 2023/07/18
  • PythonとRustの融合:PyO3/maturinを使ったPythonバインディングの作成入門 | gihyo.jp

    Cargo.tomlにはデフォルトのメタデータとPyO3の依存関係(バージョン)などが記載されています。また、pyproject.tomlにはビルドツールとしてmaturinが使用されることなどがあらかじめ定義されています。 注目すべきはRustスクリプトを記述するsrc/lib.rsファイルです。以下のようなscaffold(足場)が最初から記載されています。 src/lib.rsにデフォルトで記載されているscaffold 1 use pyo3::prelude::*; 2 3 /// Formats the sum of two numbers as string. 4 #[pyfunction] 5 fn sum_as_string(a: usize, b: usize) -> PyResult<String> { 6 Ok((a + b).to_string()) 7 } 8 9

    PythonとRustの融合:PyO3/maturinを使ったPythonバインディングの作成入門 | gihyo.jp
    toshikish
    toshikish 2023/07/13
  • 1秒動画のつくり方 ― 「家族アルバム みてね」における動画エンコードパイプラインとその最適化事例 | gihyo.jp

    なお上記の「大量配信」とは、「⁠1~3月分の四季版を4月15日から配信開始し、1週間で全家族に配信完了する」などのように、「⁠新しい期間の1秒動画をはじめて配信してから、その時点で条件を満たす全家族への配信が完了するまで」の期間を指します。1秒動画の生成・配信の大部分はこの大量配信期間に行っていることから、これを「大量配信」と呼んでいます。 生成⁠・配信の流れ 1秒動画の生成・配信は、図1のとおり(1)対象家族抽出、(2)素材選択、(3)動画エンコード、(4)配信、の4段階で実現しています。以下ではその詳細を説明します。 図1 1秒動画の生成・配信の流れ (1)対象家族抽出 1秒動画の生成・配信処理は、基的にはバッチ処理として毎日実行しています。そのはじめに行うのは、「⁠その日、どの家族に、どのバージョン・どの期間の1秒動画を生成・配信するか」を取り出す対象家族抽出です。この処理は四季版

    1秒動画のつくり方 ― 「家族アルバム みてね」における動画エンコードパイプラインとその最適化事例 | gihyo.jp
    toshikish
    toshikish 2023/07/06
  • 第768回 OpenSpeedTestとウェブブラウザーを使って家庭内ネットワークの速度を計測しよう | gihyo.jp

    家庭内ネットワークにも2.5GbEや5GbEなどの「マルチギガビットイーサネット」が押し寄せています。上流であるインターネット側の10Gbpsサービスが増えてきたことに加えて、Wi-Fiの高速化、対応NICやスイッチの増加に加えて価格も安くなっています。第693回の「Ubuntuでも2.5GbEを使用する」や第761回の「Alder Lake-Nで省エネPC生活」のように、すでに活用している読者もいることでしょう。今回はそんな「新しいネットワークデバイス」向けに、簡単に速度テストできる「OpenSpeedTest」を紹介します。 お父さんと一緒のネットワークセグメントにしないで 家庭内ネットワークの管理者でもある読者の皆様におかれましては、日々の中で自分の趣味や家族からの要望に応じて、ネットワークのメンテナンス・拡張に腐心されているかと思います。要望と言ってもおおよそは回線の安定性と速度の

    第768回 OpenSpeedTestとウェブブラウザーを使って家庭内ネットワークの速度を計測しよう | gihyo.jp
    toshikish
    toshikish 2023/06/30
  • Maxime Chevalier-Boisvertさん「Optimizing YJIT’s Performance, from Inception to Production」 ~RubyKaigi 2023 2日目キーノート | gihyo.jp

    RubyKaigi 2023 キーノートレポート Maxime Chevalier-Boisvertさん「Optimizing YJIT’s Performance, from Inception to Production」 ~RubyKaigi 2023 2日目キーノート 最近のRubyインタプリタの進化において非常に重要なトピックの一つが、JITコンパイラの登場です。特にShopifyのJITコンパイラチームを中心に開発されたYJITは、世の中で広く使われているRailsアプリケーションを有意に高速化できるJITコンパイラとして、既にproduction-readyであると評価されており、各所で採用が進んでいます。 RubyKaigi 2023 2日目のMaxime Chevalier-Boisvertさんによるキーノートでは、開発チームがYJITを開発するにあたってどういったアプロ

    Maxime Chevalier-Boisvertさん「Optimizing YJIT’s Performance, from Inception to Production」 ~RubyKaigi 2023 2日目キーノート | gihyo.jp
    toshikish
    toshikish 2023/06/20
  • メモリプロファイラ「Memray」の解説 | gihyo.jp

    Memray公式サイトのキャプチャ インストール方法は以下のとおりです。 $ pip install memray Memrayの基的な使い方 Memrayがインストールされていると、memrayコマンドが使えるようになります。 プロファイリング対象のスクリプトをmemrayから実行すると、スクリプトを実行した同じフォルダに実行時のプロファイリング結果がバイナリ形式でファイルに保存されます。 プロファイルの実行 サンプルのPythonスクリプトとしてsample.pyを準備します。以下のコードでは、状態表示をわかりやすくするために1秒間の待ちを入れています。実行内容は、リスト内包表記で要素数が約1億個のリストを生成しています。 sample.py - リスト内包表記でリストを作る import time time.sleep(1) # 状態表示をわかりやすくするために1秒待つ resul

    メモリプロファイラ「Memray」の解説 | gihyo.jp
    toshikish
    toshikish 2023/06/13
  • 第763回 RustDeskですいすい繋がるリモートデスクトップを実現する | gihyo.jp

    今回はオープンソースでマルチプラットフォームなリモートデスクトップソフトウェアであるRustDeskを紹介します。 RustDeskとは RustDeskはオープンソースでマルチプラットフォームなリモートデスクトップソフトウェアです。あけすけな表現をするとセルフホストできるTeamViewerやAnyDeskのようなものです。 使い勝手もおおむね同じで、今回構築する中継サーバーに接続することによりルーター等の設定を変更しなくてもすいすい繋がるリモートデスクトップ環境を構築できます。 サーバーはUbuntuやDebianとWindowsが想定されていますが、クライアントはUbuntu/Debian/Windows/macOS/Android/iOSなど、何にでも対応しています。ただし今回はUbuntuとWindowsしか取り上げません。 TeamViewerやAnyDeskを使用したことがあ

    第763回 RustDeskですいすい繋がるリモートデスクトップを実現する | gihyo.jp
    toshikish
    toshikish 2023/05/17
  • 第762回 定番のデバッグ・調査ツールであるstraceでエラーインジェクション | gihyo.jp

    straceはユーザーランドアプリケーションの挙動の確認やデバッグに使える便利なツールです。どのシステムコールが、どのような引数で呼び出され、その結果どうなったのかをログとして残せます。不可解な挙動をするプログラムを調べる上で覚えておくと損はないツールです。今回はstraceの基的な使い方に加えて、わざとシステムコールをエラー終了させる、エラーインジェクションについても紹介しましょう。 不可解なプログラムについて この世にあるソフトウェアはすべて何らかの不具合を抱えています。もし不具合のないソフトウェアが存在するとしたら、その事実自体が不具合と言えるかもしれません。そのまま放置しておくと、きっと将来なにがしかの不具合が顕現することでしょう。よってソフトウェアエンジニアと呼ばれる人たちは、日々ソフトウェア様のご機嫌を伺い、こびりついた不具合を削ぎ落とし、場合によってはあえて不具合を埋め込み

    第762回 定番のデバッグ・調査ツールであるstraceでエラーインジェクション | gihyo.jp
    toshikish
    toshikish 2023/05/12
  • ルーター自作でわかるパケットの流れ ~ソースコードで体感するネットワークのしくみ

    2011年7月8日紙版発売 小俣光之 著 A5判/192ページ 定価2,068円(体1,880円+税10%) ISBN 978-4-7741-4745-1 Gihyo Direct Amazon 楽天ブックス ヨドバシ.com 書のサポートページサンプルファイルのダウンロードや正誤表など このの概要 ネットワークはどのようにつながるのか,「パケットの気持ちになって」考えてみたことはありますか? 書では,パケットキャプチャ,ブリッジ,ルーターを「プログラムとして」作りながら,パケットの流れを体感理解。ネットワークの理解がより深まるうえ,「低レイヤーでのネットワークプログラミングのテクニック」「ネットワークで実現したいことを幅広く考えられる力」「障害発生時に問題を切り分ける力」も身につきます。 こんな方におすすめ ネットワークの仕組みを頭ではなく体で覚えてみたい方 ネットワーク機器を自

    ルーター自作でわかるパケットの流れ ~ソースコードで体感するネットワークのしくみ
    toshikish
    toshikish 2023/05/08
  • 『WEB+DB PRESS』 休刊のお知らせ:WEB+DB PRESS

    WEB+DB PRESSは,2023年8月発売のVol.136をもって隔月刊誌としては休刊させていただきます。物価上昇による製作費の高騰など諸般の事情により,今回の決定に至った次第です。 突然の休刊案内にてたいへん恐縮ではございますが,何卒ご理解を賜りますよう,お願い申し上げます。 22年以上の長きにわたり,絶大なご支援をいただきましたことを,厚く御礼申し上げます。 弊誌で扱っていた分野のコンテンツは,今後も弊社刊行のSoftware Designやgihyo.jp,書籍などで提供させていただきます。また,必要な場合には「特別号」の編集・刊行なども検討してまいります。 最後に,皆様の一層のご活躍を心より祈念しております。

    『WEB+DB PRESS』 休刊のお知らせ:WEB+DB PRESS
    toshikish
    toshikish 2023/05/01
  • 新人・未経験にこそオススメ Linuxをはじめよう! | gihyo.jp

    新年度となり、新規プロジェクトがはじまったり、所属チームが変わったりと、変化の多い季節ですが、そろそろ皆さん慣れてきたでしょうか。4月から、新入社員として働き始めた方もいらっしゃるかもしれませんね。せっかくの新年度。新人エンジニアや、何か新しいことを始めたい方にオススメなのが、Linuxの学習です。 Linuxは、オープンソースのOS(オペレーティングシステム)であり、そのシェアの大きさから、多くのエンジニアにとって「一番身近な存在となるOS」の一つです。 クライアントパソコンとしては、WindowsMacを使っている人が多くても、サーバーとしてはLinuxにお世話になっている人がほとんどでしょう。 今回は、そんなLinuxと、どんな距離感で付き合っていけばよいのか?というお話です。そんなに小難しいことを言うつもりはないので、「⁠Linuxナンモワカラン」皆さんも気楽に読んでくださいね。

    新人・未経験にこそオススメ Linuxをはじめよう! | gihyo.jp
    toshikish
    toshikish 2023/05/01
  • 第195回 MySQLレプリカの自動ソース切り替え | gihyo.jp

    ソースリストを確認するには以下のいずれかのテーブルを確認します。 mysql.replication_asynchronous_connection_failoverテーブル performance_schema.replication_asynchronous_connection_failoverテーブル mysql> SELECT * FROM mysql.replication_asynchronous_connection_failover; +--------------+-----------+-------+-------------------+--------+--------------+ | Channel_name | Host | Port | Network_namespace | Weight | Managed_name | +--------------

    第195回 MySQLレプリカの自動ソース切り替え | gihyo.jp
    toshikish
    toshikish 2023/04/26
  • 生成系AIについて開発者が知っておくべきこと | gihyo.jp

    この記事は、GitHub Blogに4月7日に掲載された「What developers need to know about generative AI」の翻訳記事です。 昨今のニュースを席捲する「生成系AI(Generative AI⁠)⁠」ですが、厳密にはどのようなものでしょうか? 生成系AIについて知っておくべきこと、また開発者にとってどのような意味を持つのかについて説明します。 皆さんはこれまでに、ChatGPT、DALL-E、GitHub Copilotといった生成系AI人工知能)ツールについて聞いたことがあるかと思います。生成系AIツールを利用すると、メールの件名からプログラミングコードの関数、アートに至るまで、誰でも瞬時にコンテンツを作成できるため、幅広い関心を集めています。 様々な業界のコンテンツ制作に革命をもたらす可能性があることから、生成系AIとは何か、どのように利

    生成系AIについて開発者が知っておくべきこと | gihyo.jp
    toshikish
    toshikish 2023/04/25
  • 第5回 テストピラミッド ~自動テストの信頼性を中長期的に保つ最適なバランス~ | gihyo.jp

    粒度の異なる各自動テストをどの程度書くか悩まれている方は多いと思います。今回は、自動テストの理想的なバランスを示す「テストピラミッド」について説明します。 テストピラミッドとは何か テストピラミッドとは、コスト(記述コストと実行コスト)と忠実性(物の挙動を反映している度合い)が高く、実行速度と決定性(テストが毎回同じように安定して動く度合い)が低いテストほどケース数を減らすべきだという、自動テストケース数の望ましい比率をピラミッド型に視覚化したものです。 図1は、テストの粒度をユニットテスト、インテグレーションテスト、E2E(end to end)テストの三段階で示しており、テストピラミッドの説明によく用いられます。ユニットテストが最も多く、E2Eテストが最も少ない状態に近づけることで、開発速度と信頼性の高いバランスが得られると言われています。 図1 テストピラミッド なぜ比率を意識する

    第5回 テストピラミッド ~自動テストの信頼性を中長期的に保つ最適なバランス~ | gihyo.jp
    toshikish
    toshikish 2023/04/20
  • 僕たちが考える最強のNo-code AI ~行動認識AIをノーコードで実現するプラットフォーム構成例 | gihyo.jp

    誰でも使えるNo-code AIを開発しよう 近頃、文章生成AI画像生成AIが世間を賑わしています。文章生成AIChatGPT」は、わずか2か月でユーザー数が1億人を超え、画像生成AIサービス「DreamStudio」は、有償でありながら2か月でユーザーを150万人以上獲得しています。これらのAIサービスが爆発的なトレンドとなった背景には、「⁠専門家が構築する」といったイメージのある従来のAIとは違い、「⁠誰でも簡単に使える」という点が大きいと言えます。 このように、AIをもっと身近に、ふつうの人が作ったりカスタマイズしたりできるようにする動きがあります。それが「No-code AI」です。 No-code AIとは、その名の通り、コードを書かずにAIモデルを作れる手法のことを言います。No-code AIでは、ドラッグ&ドロップやキー入力など簡単な操作でAIモデルを作ることができます

    僕たちが考える最強のNo-code AI ~行動認識AIをノーコードで実現するプラットフォーム構成例 | gihyo.jp
    toshikish
    toshikish 2023/04/20
  • WebブラウザでPythonが動作する!PyScriptの詳解 | gihyo.jp

    鈴木たかのり(@takanory)です。今月の「Python Monthly Topics」では、Webブラウザ上でPythonが動作するPyScriptについて、内部構造なども含めて詳しく解説したいと思います。 PyScript公式サイト(https://pyscript.net/) Warning:PyScriptは現在非常に活発に開発が進んでいるプロダクトのため、将来的にこの記事のサンプルコードが動かなくなる可能性があります。記事執筆時点では最新バージョンであるPyScript 2023.03.1で動作確認しています。うまく動かない場合はPyScriptの公式ドキュメントなどを参照してみてください。 PyScript - PyScript documentation PyScriptとは? PyScriptは公式サイトに「Run Python in Your HTML」と書いてあると

    WebブラウザでPythonが動作する!PyScriptの詳解 | gihyo.jp
    toshikish
    toshikish 2023/04/12