並び順

ブックマーク数

期間指定

  • から
  • まで

41 - 80 件 / 174件

新着順 人気順

並行処理の検索結果41 - 80 件 / 174件

  • C言語向けコルーチン非同期 I/O ライブラリ neco を使ってみた。

    はじめに C言語でコルーチンを扱う方法は色々ありますが、専用の命令を専用の記述方法で実装しなければならなかったりなど、あまりとっつきやすいものではありませんでした。 今日 X/Twitter のタイムラインで見付けた neco はまさにそんな悩みを解消できる物でした。 neco とは neco はコルーチンを使った非同期 I/O ライブラリです。 コルーチン: 開始、スリープ、一時停止、再開、移譲、および結合。 同期: チャネル、ジェネレータ、ミューテックス、条件変数、および待機グループ。 デッドラインとキャンセルのサポート。 ファイルディスクリプタを使った Posix フレンドリーなインターフェース。 ネットワーク、シグナル、ランダムデータ、ストリーム、およびバッファ付き I/O の追加 API。 公正かつ決定論的なスケジューラを備えた軽量ランタイム。 高速なユーザースペースのコンテキス

      C言語向けコルーチン非同期 I/O ライブラリ neco を使ってみた。
    • Goとマルチコアスケール実装

      マルチコア化の未来予測 半世紀前にSF映画「2001年宇宙の旅」に登場するコンピューターHAL-9000が並列コンピューティングの未来を示しました。マルチコアで構成されたコンピューターの物理コアを取り除いてもすぐにクラッシュせずに性能ダウンして処理が継続するという演出がありました。 当時ですらシングルコアコンピューティングの限界が予想されていて、現状のコンピューティングがマルチコア化しているという未来をしっかり予測できていたことがわかります。 演出はコア数に応じてコンピューティング性能がスケールしていることを表現しています。これはマルチコアスケールするソフトウェア実装の未来を示していたと思います。 シングルコア性能向上の頭打ち 2003年以降あたりはCPUの動作周波数が伸び悩み出したところ。 https://queue.acm.org/detail.cfm?id=2181798 より その

        Goとマルチコアスケール実装
      • Google製GNU gold以上の速さを実現 超高速リンカ「mold」を支えるテクニック

        Kernel/VM探検隊はカーネルや仮想マシンなどを代表とした、低レイヤーな話題でワイワイ盛り上がるマニアックな勉強会です。rui314氏は、制作中のリンカである「mold」について発表しました。全2回。後半は「mold」速さと、その高速化を実現するテクニックについて話しました。前半はこちら。 リンカが速いと何がうれしいのか 植山類氏(以下、植山):リンカが速くなって何がうれしいのか。普通にうれしいです。プログラムを書いているとうれしいことがわかると思いますが、makeを実行すると、普通は自分が直前に変更したファイルしかビルドしないので、デバッグをしていると1つのファイルを編集してビルドすることになります。 コンパイラは1つだけのファイルをコンパイルするのはそこそこ速いですが、リンカは基本的には実行ファイルを丸ごと作ります。全体の入力を一気に受け取って出力するため、差分コンパイルであっても

          Google製GNU gold以上の速さを実現 超高速リンカ「mold」を支えるテクニック
        • GitHub Actionsで連続pushした時に止めるアレ

          大分時間が経ってしまいましたが、2022/8/31 に開催された stand.fm 主催の TECH STAND #9 GitHub イベントに参加しました。 その際に呟いたやつが今回の記事の内容です 有り難いことに直ぐにフォロー頂きました。 あまり纏まった記事が見当たらなかったので、自分用のメモとしてまとめます。 他のCIにはあったアレ GitHub Actionsを利用する前は、TravisCIやCircleCIを利用していました。 移行してから随分使ってないので、記憶が定かではないのですが という機能が標準であった気がします。 この機能の名前は何と呼ぶのでしょうか?地味だけれども、ないと困るアレですw GitHub Actionsのリリース直後にこちらの機能と [ci skip] が使えずに後発なサービスなのにーと不満を覚えていました。 その後にアレの機能を実装したカスタムアクション

            GitHub Actionsで連続pushした時に止めるアレ
          • Concurrency in modern programming languages: Rust vs Go vs Java vs Node.js vs Deno vs .NET 6

            This is part of my "Concurrency in Modern Programming Languages" series Concurrency in modern programming languages: IntroductionConcurrency in modern programming languages: RustConcurrency in modern programming languages: GolangConcurrency in modern programming languages: JavaScript on NodeJSConcurrency in modern programming languages: TypeScript on DenoConcurrency in modern programming languages

              Concurrency in modern programming languages: Rust vs Go vs Java vs Node.js vs Deno vs .NET 6
            • Rustのasync/awaitとスケジューラの話 / rust-async-await

              Effectで作る堅牢でスケーラブルなAPIゲートウェイ / Robust and Scalable API Gateway Built on Effect

                Rustのasync/awaitとスケジューラの話 / rust-async-await
              • Python multiprocessing vs threading vs asyncio - JX通信社エンジニアブログ

                エンジニアの鈴木(泰)です。 今回は、multiprocessingとthreadingとasyncioの違いとはなんだろう?という問に挑戦してみたいと思います。 この問の答えをグーグル先生に聞いてみると、非常にたくさんの情報がヒットします。しかしながら、どの情報も断片的なものばかりで(本記事もそうなのかもしれません)、色々と本を読んだりネットを漁ったりして、情報を補完しなければなりませんでした。 本記事は、僕が調べた限りの情報を集約し、この問に対する結論を1つの記事にまとめたものとなっています。 前提 マルチプロセスとは マルチスレッドとは Pythonにおけるマルチスレッド 本題 マルチプロセス(multiprocessingライブラリ)を利用したほうが良い場合 cpu_sec.py cpu_multiprocessing.py cpu_threading.py cpu_asyncio

                  Python multiprocessing vs threading vs asyncio - JX通信社エンジニアブログ
                • [Cloud OnAir] Cloud Run Deep Dive ~ GCP で実践するモダンなサーバーレス アプリケーション開発 ~ 2019年9月12日 放送

                  [Cloud OnAir] Cloud Run Deep Dive ~ GCP で実践するモダンなサーバーレス アプリケーション開発 ~ 2019年9月12日 放送

                    [Cloud OnAir] Cloud Run Deep Dive ~ GCP で実践するモダンなサーバーレス アプリケーション開発 ~ 2019年9月12日 放送
                  • Pythonの非同期処理の基礎とOpenAI APIへ並列リクエストする実践例

                    こんにちは、commmuneでデータサイエンティストをしているひぐです。 人間が苦手なマルチタスクをLLMに任せたら、効果的に処理してくれるのではないか?というモチベーションのもと、Pythonの非同期処理を使って並列かつストリーミングでChatGPTの回答を出力するアプリを作りました🤖 例えば下記は、ある課題を入力すると、深さ・広さ・構造・時間軸という異なる観点で解像度を上げてくれるアプリケーションです。 アプリに関する登壇資料↓ このアプリ作成にあたってPythonの非同期処理を勉強したところ、最初は多くの専門用語(コルーチン、イベントループ...)や独自の記法により、全体像をつかむのに苦戦しました。一方で、学んでみると予想以上にシンプルな記法で実装できること、そして応用範囲が広くて便利だと理解しました。 この記事では、そんな少し取っつきにくけど便利なPythonの非同期処理にフォー

                      Pythonの非同期処理の基礎とOpenAI APIへ並列リクエストする実践例
                    • Rustの std::sync::RwLock はLinuxでwriter starvation問題を起こす (macOSなら平気)

                      まとめ: std::sync::RwLock::{write(), try_read()} を併用した場合には「書き込みロックを最優先」という挙動は必ずしも期待できない (LinuxではNG) Pthread の規約が挙動に自由度をもたせており、Linuxにおけるデフォルト実装では writer starvation が発生する Rustにおいて writer starvation を回避しつつ readers-writer lock を使うには parking_lot::RwLock を使うと良い 目次 背景: Readers-writer lock とは? 背景: Rustにおける readers-writer lock 背景: RwLock::write() と RwLock::try_read() 再現コード 原因分析 修正: parking_lot::RwLock を使う おわり

                        Rustの std::sync::RwLock はLinuxでwriter starvation問題を起こす (macOSなら平気)
                      • 状態機械を合成してデッドロックを検出できる Go 言語パッケージを作ってみました - チェシャ猫の消滅定理

                        はじめに マルチスレッドで動作するプログラムの設計は難しい問題です。個々のスレッドの動作は単純に見えても、複数が並行して動作する場合の動作は組み合わせ論的に複雑になります。また、タイミングに依存する不具合は狙って再現することが難しく、通常の単体テストによる検出にも限界があります。 そんなとき、有効な手法がモデル検査です。システムの取りうる状態をあらかじめ網羅的に探索することで、「実際に動作させた際にごく低い確率で踏むバグ」であっても、動作させることなく設計段階で発見することが可能になります。 ところでちょうど先日、デッドロック発見器を自作するハンズオンに参加する機会がありました。内容は非常にシンプルなモデル検査器を実装するというもので、せっかくなのでそのときの成果物を Go のパッケージとしてまとめたものを以下に公開しました。 github.com 以下、このパッケージで何ができるのかを具

                          状態機械を合成してデッドロックを検出できる Go 言語パッケージを作ってみました - チェシャ猫の消滅定理
                        • Rust Atomics and Locks by Mara Bos

                          About this Book The Rust programming language is extremely well suited for concurrency, and its ecosystem has many libraries that include lots of concurrent data structures, locks, and more. But implementing those structures correctly can be difficult. Even in the most well-used libraries, memory ordering bugs are not uncommon. In this practical book, Mara Bos, team lead of the Rust library team,

                            Rust Atomics and Locks by Mara Bos
                          • Rustで高速に大量のHTTPリクエストを投げる - Qiita

                            自己紹介 趣味でRustをやっている Twitter https://twitter.com/hatookov Github https://github.com/hatoo SoundCloud https://soundcloud.com/gfyxxqjngkze ネットワーク初心者なので誤りがあるかも知れません モチベーション oha HTTPロードジェネレータ Apache Bench(ab)みたいな tui-rsでリアルタイム表示 とにかくいっぱいリクエストを投げたい! ベンチマーク環境 WSL 2 Ryzen 3950x 今回はtokio https://github.com/hatoo/rust_http_benchmarks ベンチマーク雛形 ベンチマーク系のライブラリは複数回実行してしまい、時間がかかるのでやめた ざっくりと時間がわかればいいかな 簡単のためにサーバーはw

                              Rustで高速に大量のHTTPリクエストを投げる - Qiita
                            • PNG Parser Differential

                              This PNG image renders differently in Apple vs non-Apple decoders: If you're using Apple-flavoured software, you should see "HELLO APPLE", and on all other software, you should see "HELLO WORLD". I found this while writing my own multi-threaded PNG decoder. While pondering my design, I realised that I had an exploitable implementation bug. After learning that Apple has their own implementation of

                              • 並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その1「背景: クロック周波数の停滞とコア数の増加」 - Qiita

                                大学の授業で講義資料を作ったので,Qiitaにも展開しておきます. 背景: クロック周波数の停滞とコア数の増加 コンピュータはクロック周波数に同期して計算をします.おおむね1秒間にクロック周波数の数で示されるだけの数の機械語命令を実行できると考えると良いです.たとえばクロック周波数が1GHzであれば,1GHz=1,000MHz=1,000,000(百万)kHz=1,000,000,000(10億)Hzですので,1秒間に1,000,000,000(10億)個の機械語命令を実行できるというような感じです.もちろんこれは概算です. いわゆるヘネパタ本(J. L. Hennessy & D. A. Patterson: Computer Architecture: A Quantitative Approach, 6th edition. Morgan Kaufmann, 2017; 邦訳 中條・

                                  並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その1「背景: クロック周波数の停滞とコア数の増加」 - Qiita
                                • Choose the Right Python Concurrency API - Super Fast Python

                                  How to Choose the Right Python Concurrency API Python standard library offers 3 concurrency APIs. How do you know which API to use in your project? In this tutorial, you will discover a helpful step-by-step procedure and helpful questions to guide you to the most appropriate concurrency API. After reading this guide, you will also know how to choose the right Python concurrency API for current and

                                    Choose the Right Python Concurrency API - Super Fast Python
                                  • マルチコアのCPUを使い切って圧縮を速くする - それマグで!

                                    gzip の限界 = CPU 1コア マルチコア・マルチスレッドのCPUがあるのに、gzip や lzma(xz)や bzipといったメジャーな圧縮は、CPUを1コアで処理するんですね。 CPU使用率を見てみたら、CPU利用率は100%を超えないんですね。 HDD・SSDの書き込み速度に限界があるからそれでも良かったんだろうが。いまはメモリが一般的に64GBもある時代です。うちのマシンでもメモリが12GBもあるのに3GB程度の圧縮に、5分とか耐えられません。もうちょっと速くしたい。 cpu利用率が100%で頭打ちになる。gzip gzipを使ってると、CPU利用率が100%で止まるんですよね。lzma などの他の圧縮でも同じ。 gzip/ gunzip をマルチで処理する pigz / unpigz Pigz のマニュアルには次のように書いてある。スレッドを使って並列処理をするっぽい。 P

                                      マルチコアのCPUを使い切って圧縮を速くする - それマグで!
                                    • Rustの非同期ランタイムが多すぎる?io_uringなやつを使おう!

                                      AWS、Google、Microsoftらが、Rust Foundationを設立し、今やRustでなければクラウドネイティブじゃない、と言っても過言ではありませんよね。クラウドネイティブと言えば、スケーラブルなシステム、Goはgoroutineを標準機能として提供しますが、Rustのasync/awaitは、標準機能に含まれていない外部ライブラリを必要とします。悪いことに、複数のライブラリ(非同期処理ランタイム)が乱立し、APIの互換性もありません。Rustはクラウドネイティブなのだろうか、という疑問を抱きながら、いくつかのランタイムの性能を、いつものgRPCベンチマークで比較してみました。 比較対象数多くのランタイムの中から、前回の記事で試した、Linuxの新しい非同期I/Oインターフェイスのio_uringを利用しているglommioと、普及している思われる、tokio、smol、a

                                        Rustの非同期ランタイムが多すぎる?io_uringなやつを使おう!
                                      • 「Rust Atomics and Locks」を読んだ

                                        「Rust Atomics and Locks」を読んだ #2023-02-05 発売前からすごく楽しみにしていた本で、発売日に買って年末から一生懸命読んでいた。 今なら以下から無料で読める。 https://marabos.nl/atomics/ 内容としては求めるものが分かりやすく書かれており、すでに2023 年に読んで良かった本の1つに入りそう。 目次書籍を通して得たかった知識 #例えば以下のようなコードを書いた際に、println!でどのような数値のペアが表示されるのか。結論から書くと0 0,10 20といった値がまずは思い浮かぶと思うが、0 20というペアで表示される可能性もあるとされており、その際以下のような疑問・不明点があった。 0 20と表示になるのはどのような条件で何が起こった場合なのか強いメモリモデルとされるx86でも0 20というペアは発生するのか本ケースにおいてx8

                                          「Rust Atomics and Locks」を読んだ
                                        • 並列処理と排他処理 - ROBOT PAYMENT TECH-BLOG

                                          こんにちは、ROBOT PAYMENTの開発統括室ペイメントシステム課のtaniguchikun です。 たまたま業務で並列処理と排他処理を実装することになったので、その辺について記事にしたいと思います。 並列処理とはなんぞや 例え話 排他処理 今回のキーワード ミューテックス セマフォ Lock関数(C#言語) チェックポイント 静的変数 サンプルコード ミューテックスの挙動確認 セマフォの挙動確認 ロック関数の挙動確認 並列処理とはなんぞや 恐らく本記事を読まれている方はエンジニアの方々だと思いますが、一応軽く解説をしたいと思います。 並列処理とは複数の処理を同時に行うといったものになります。 例え話 上記でピンとくる方は読み飛ばしていただいて問題ないです。 一般の方でプログラミングしたことがない方ですと例え話で説明した方がピンとくるものがあると思うので、現実世界のバスに例えたいと思い

                                            並列処理と排他処理 - ROBOT PAYMENT TECH-BLOG
                                          • Virtual Thread導入の背景 - Javaのマルチスレッドの歴史を振り返る

                                            このエントリーは Java Advent Calendar の9日目のエントリーです。 qiita.com Virtual ThraedはJava 19でPreview (JEP 425)、Java 20でSecond Preview (JEP 436)となり、うまくいけば次のLTSであるJava 21で導入予定です。 パフォーマンスを考える時に、一般的にはスループットと応答性の2つがあります。スループットは単位時間あたりにどのくらいリクエストをさばけるか、応答性は処理のリクエストから結果が帰るまでの時間です。Virtual Threadのこの2者のうち、スループットを向上させるために導入されます。 では、なぜ今になってVirtual Threadが導入されるのかということを、歴史を振り返りながら考えてみるのがこのエントリーです。 いにしえの時代 - Java 1.0からJ2SE 1.4

                                            • Swift Concurrency チートシート

                                              Swift 5.5 で Swift に Concurrency (並行処理)関連の言語機能が追加されました。これによって、 Swift で非同期処理・並行処理のコードをより簡潔かつ安全に書くことができるようになります。 しかし、 Swift Concurrency は Structured Concurrency や Actor など、多くの人にとって馴染みが薄いだろうと思われる概念を含みます。具体例を通して効率よく Swift Concurrency を習得できるように、本記事では iOS アプリを題材に、 Swift Concurrency 導入以前( Before )と導入後( After )のコードを比較することで、何がどのように変わるのかを紹介します。 なお、 Swift Concurrency 関連の機能は次の三つに大別できるため、本記事の Before & After の例も

                                                Swift Concurrency チートシート
                                              • RNNからTransformerまでの歴史を辿る ~DNNを使ったNLPを浅く広く勉強~ - arutema47's blog

                                                Amazon Prime 一ヶ月無料 Seq2seqからBERTまでのNLPモデルの歴史をざっとまとめる。 DNNは知ってるけどTransformerってなんだかわからない、って人におすすめです。 Abst. 画像認識にもTransformerが使われることが多く、DeepRLやGPT-3といったNLPモデルも身近になってきています。"Attention is 何?"と言えなくなってきたので勉強しました。 Feedforward NetworksからSeq2Seq, Attention機構からTransformer登場、そしてBERT GPTといった最新モデルまでの流れを広く浅く記述する予定。 またKaggle NLPコンペの上位解法から利用例を探る。 Tl;DR TransformerはSelf-Attentionという機構でデータ内の時系列的特徴を抽出でき、従来のRNNを始めとするNN

                                                  RNNからTransformerまでの歴史を辿る ~DNNを使ったNLPを浅く広く勉強~ - arutema47's blog
                                                • PythonのマルチスレッドWSGIサーバーの選定 - methaneのブログ

                                                  今までuWSGIをシングルスレッド、マルチプロセスで使っていたのだけれども、昔に比べて外部のAPI呼び出しが増えているのでマルチスレッド化を検討している。 uWSGI uWSGIでマルチスレッドを有効にした時は、各workerスレッドがacceptする形で動作する。スレッド数以上の接続をacceptすることがないので安心。 プロセス内のスレッド間ではmutexで排他されて、同時にacceptを実行するのは1スレッドのみに制限されている。つまりthendering herd問題はプロセス間でしか起こらない。マルチスレッド化でプロセス数はむしろCPUコア数まで減らせるので、thendering herd問題はむしろ今よりも軽減できる。(ちなみにプロセス間でもロックしてthendering herdを許さないオプションもあるけど、プロセス間同期は怖いので使っていなかった。) ただしuWSGIのマ

                                                    PythonのマルチスレッドWSGIサーバーの選定 - methaneのブログ
                                                  • Goにおいてアクターモデルを実現するライブラリ"Molizen"とその未来

                                                    こんにちは。@sanposhihoです。 この記事では、アクターモデルとはなんぞやという話から始まり、僕が卒業論文のプロジェクトとして作成したGoのライブラリ、“Molizen”の紹介をします。 わりと長く、乱文ですが、適宜読み飛ばして興味のある部分だけをご覧いただければと思います。 マサカリは優しく投げてください。ここはこうした方がいいんじゃないかみたいなのも参考にしたいので是非。 Twitter(@sanpo_shiho)に投げていただいても、雑にGitHubのissueを立てていただいてもいいです。 sanposhiho/molizen: Molizen is a typed actor framework for Go. Goのアクターモデルのフレームワークを公開しました。未完成なので暖かく成長を見守ってください🌱 sanposhiho/molizen: Molizen is a

                                                      Goにおいてアクターモデルを実現するライブラリ"Molizen"とその未来
                                                    • Swift 6で来たる並行処理の大型アップデート近況

                                                      最近、 Swift リポジトリに並行処理関係の Pull Request (PR) が続々とマージされています。 たとえば、次のような PR があります。 Add async to the Swift type system. #33147 Add @asyncHandler attribute. #33476 Import "did" delegate methods as @asyncHandler. #34065 Import Objective-C methods with completion handlers as async #33674 Basic support for actor classes and actor isolation #33906 Swift の並行処理( Concurrency )関連の機能については、 2020 年 1 月に発表された "On th

                                                        Swift 6で来たる並行処理の大型アップデート近況
                                                      • AWSを活用した機械翻訳のためのGPU並列処理環境の構築

                                                        はじめにこんにちは、ストックマークでエンジニアをしている麻生です。ストックマークでは、「Anews」というウェブサービスを提供しています。この度、Anewsで新機能導入のために日次バッチの大規模なインフラ変更を行い、GPU並列処理環境を構築しましたのでご紹介します。 組織の自律化を支援するナレッジプラットフォーム「Anews」Anewsは国内外30,000メディアのニュースを毎日収集し、最先端の自然言語処理で個人や組織のミッションに即したニュースをレコメンドします。コメント機能で簡単にチームにアイデアを共有でき、社内の知見者から学ぶことでチームの情報感度が底上げされます。 エンタープライズを中心に、累計1500社以上のお客様にご利用いただいているサービスです。 英語記事をレコメンドする上での課題Anewsでは、記事への行動履歴からユーザーや組織の好みを学習し、記事をレコメンドしています。ユ

                                                          AWSを活用した機械翻訳のためのGPU並列処理環境の構築
                                                        • 書評: 並行プログラミング入門

                                                          まえがき オライリーから発売される「並行プログラミング入門」が若干早く入手できました。せっかくなので、紹介とか感想を書いてみようかと思います。結論だけ先に書いておくと、並行/並列プログラミングに興味があるなら買いましょう必ず役に立ちます。 どんな本? この本は、大学のOSの授業とかで習うような並行/並列プログラミングの基礎を網羅的に扱っている素晴らしい本です。それだけに留まらず近年利用されているような幅広い技術に関する発展的な内容まで広く扱っています。 どんな人におすすめ? 並行/並列プログラミングの基礎が学びたい人 ロックなどの基礎技術の実装例について学びたい人 Rustを使った並行/並列プログラミングについて学びたい人 並行/並列プログラミングの計算モデル(意味論など)について学びたい人 ロックフリー、STM、async/awaitといった最新の技術について学びたい人 書籍の紹介 この

                                                            書評: 並行プログラミング入門
                                                          • Rustによる並列処理でDynamoDBへのデータ投入を20倍高速化してみた

                                                            はじめに 言語として高速だと謳われているRust。そのRustを使用してDynamoDBへのデータ登録処理を直列処理と複数の並列アルゴリズム処理で速度比較してみました。 DynamoDB DynamoDBは公式で以下のように謳われています。 Amazon DynamoDB の応答時間は 1 桁ミリ秒で、最も要求の厳しいアプリケーションでも一貫してこのパフォーマンスを発揮できます。例を挙げると、2022 年の Amazon プライムデーに Amazon DynamoDB は、1 桁ミリ秒のパフォーマンスで、数兆回の API コールに対して 1 秒あたり 1 億 520 万件のリクエストを確実に処理しました。 上記だけみると爆速のようにも思われますが、読み込みと書き込み双方に以下の制限があります。 BatchWriteItemのデータ投入は1回で25リクエストまで、Queryのデータ取得は1回

                                                              Rustによる並列処理でDynamoDBへのデータ投入を20倍高速化してみた
                                                            • ダウンローダーGNU Wgetの後継となる「GNU Wget2 2.0」が公開 | OSDN Magazine

                                                              GNU Wgetの後継となる「GNU Wget2」の開発チームは9月26日、最新版となる「GNU Wget2 2.0」を公開した。 GNU Wget2はWebサーバーからコンテンツを取得するダウンローダーGNU Wgetの後継で、HTTP、HTTPS、FTP、FTPSを使ってファイルの取得を行う。libwgetを使ってラッピングするようスクラッチから設計し、マルチスレッド対応などの機能を加えた。HTTP2、HTTP圧縮、並列接続、If-Modified-Sinceヘッダ(HTTP)などにより、多くの場合でWget1系よりも高速にダウンロードできるという。ライセンスはGPL v3以上。 バージョン2では、HTTP2アップロードのサポートが加わった。HTML5 ‘download’属性が使用できる–download-attrオプションをサポートしたほか、HTMLダウンロード属性もサポートした。

                                                                ダウンローダーGNU Wgetの後継となる「GNU Wget2 2.0」が公開 | OSDN Magazine
                                                              • sync.Cond/コンディション変数についての解説

                                                                sync.Cond(コンディション変数)について、Goをよく使ってる人たちですら「うまく説明できん」という話がmercarigoで出てたので、あとで誰かの役に立てばよいな、という気持ちで新たな解説記事を書いてみたいと思います。 自分はPerl5をバリバリ書いていた時代ではAE::Cond、Goを使うようになってからはsync.Condと、とにかく非同期処理でピタゴラ装置を作らないといけない時はこの仕組みがあったことでロジックを無駄に小難しくしないで実装することができたので、この仕組みは是非広く知られて欲しいのです。 というわけでまたあらたにGoのsync.Condを解説してみます。 なお、Web+DB Press vol 113の私の連載、「Goにいりては…」でもこの話を書いていますが、あちらの記事では Broadcast を使った方法ではなく、 Signal を使った方法について書いてあ

                                                                  sync.Cond/コンディション変数についての解説
                                                                • 【C#】マルチスレッド関連操作の詳説。 - ねののお庭。

                                                                  この記事は Qiita C# Advent Calendar 2021 23日目の記事です。 マルチスレッドプログラミングにおける問題。 原子性 コンパイラによる命令の並び替え メモリバリアについて acquire / release acquire / releaseの取り扱いづらさ sequential consistency C#でのマルチスレッド関連操作 lock (statement) volatile (keyword) Volatile (class) Interlocked (class) Common Language Infrastructure (CLI)における volatile read/write の仕様 まとめ References この記事のお話の流れは、①マルチスレッドプログラミングで発生する問題、②それらの問題に対処するためのメモリバイアについて、③それ

                                                                    【C#】マルチスレッド関連操作の詳説。 - ねののお庭。
                                                                  • PHP 8 で Web 以外の世界の扉を叩く

                                                                    PHP カンファレンス 2020 の発表資料 本番で使ったものにスタイルの修正 / リンクの追加など若干の手直しを入れています 本番でうまくデモが動かなかったので、後から録画を幾つか上げています https://twitter.com/sji_ch/status/1337774274606555141 https://twitter.com/sji_ch/status/1337690042165149697 https://twitter.com/sji_ch/status/1337693697907933186Read less

                                                                      PHP 8 で Web 以外の世界の扉を叩く
                                                                    • PythonからDataprocを操作してシームレスに並列処理を実現する - astamuse Lab

                                                                      初めまして。2019年6月にAstamuseにjoinした rinoguchi です。 ついに昨日、日本でも緊急事態宣言が出ましたね。小学校の休校も1ヶ月程度延長されましたし、会社もリモートワークにほぼ移行してますし、ここできっちりウイルスの拡散を防ぎたいところです。 ちなみに、妻がドイツに単身赴任中なのですが、ドイツでは感染者は多くて外出自粛モードになっているものの、現地の人たちはせっかくだからと日曜大工したり、庭を改造したりとそれなりに楽しんでいるみたいです。私たちも制限された環境の中ですが、せっかくなので楽しみたいですね! 屋根瓦. なんとなく並列処理を連想しませんか? はじめに それはそうと、私は当社で、特許データなどの名寄せ(同一人物に対してユニークなIDをふる作業)を担当しております。 特許の名寄せには、人物名・組織名・出願日・共同出願人など様々な特徴を利用するのですが、中国人

                                                                        PythonからDataprocを操作してシームレスに並列処理を実現する - astamuse Lab
                                                                      • テストを5倍速にする - BASEプロダクトチームブログ

                                                                        この記事はBASE Advent Calendar 2019の20日目の記事です。 devblog.thebase.in PAY株式会社でテックリードを務める東と申します。 主にバックエンド全般に広く携わっています。最近はサーバーアプリばかり書いていますがインフラもわりとやります。 当ブログの読者の方には弊社のことをご存じない方もたくさんいらっしゃるかと思いますので、簡単に社の紹介をさせていただきます。 PAY株式会社はBASE株式会社の100%子会社で、オンライン決済サービス「PAY.JP」とID決済サービス「PAY ID」などの決済サービスを開発・運営している会社です。 「支払いのすべてをシンプルに」をミッションに掲げ、お金を扱うすべての事業者・個人がもっと豊かな生活ができることを目指しています。 さて、決済というミッションクリティカルなテーマを扱うにあたって、品質保証は最も重要な課題

                                                                          テストを5倍速にする - BASEプロダクトチームブログ
                                                                        • Pythonで並列処理をするなら知っておくべきGILをできる限り詳しく調べてみた - Qiita

                                                                          最近Pythonでオーケストレーション層(BFF)のアプリケーションを書く機会がありました。 Python3.4からはasyncioが導入され、I/Oバウンドな処理はシングルスレッドでも効率的に捌けるようになったものの、依然としてCPUバウンドな処理はGILが存在することで、シングルプロセス下では並列処理が制限されます。 このことから言語特性として、CPUバウンドよりもI/Oバウンドな処理を複数捌くことに適していると見ることができます。言語選択の意思決定をする際に重要なファクターとなりますが、そのためにはGILの仕組みを改めて知る必要があると思い、調べてみました。 GIL(グローバルインタプリタロック)とは そもそもGILとは何のことでしょうか。 正式にはGlobal Interpreter Lock(グローバルインタプリタロック)といい、PythonやRuby等の言語に見られる排他ロック

                                                                            Pythonで並列処理をするなら知っておくべきGILをできる限り詳しく調べてみた - Qiita
                                                                          • Cloud Run が GA になったから改めて色々見てみる

                                                                            この記事は Google Cloud Japan Customer Engineer Advent Calendar 2019 の 7日目の記事です。 本記事で触れるのは Fully managed 版の Cloud Run のみです 🙇 みなさん、こんにちは。Google Cloud の Kazuu( かずー ) です。2019 年 4 月 9 日に Fully managed 版の Cloud Run が Beta としてリリースされてから半年以上経ち、去る 2019 年 11 月 14 日にとうとう GA となりました㊗️ 本記事では GA に至るまでにどんな機能が主に追加されてきたのかリリースノートの時系列で見ていきたいと思います。 Cloud Run の基本的なところを知りたいという方は Next Tokyo の動画や Cloud OnAir も併せてご覧ください。Cloud

                                                                              Cloud Run が GA になったから改めて色々見てみる
                                                                            • Effect – The best way to build robust apps in TypeScript

                                                                              Maximum Type-safety (incl. error handling)Makes your code more composable, reusable and testableExtensive library with a rich ecosystem of packagesClustering and Workflows (Alpha)

                                                                                Effect – The best way to build robust apps in TypeScript
                                                                              • C++でジョブシステムを作ってみる(1)

                                                                                ジョブシステム (Job System) ゲームエンジンの勉強をしているとジョブシステムの話がよく出てくるので、実際にC++20で実装してみました。マルチスレッドに慣れていないため、正しいアプローチである確信はありません。重要なミスがあったら教えていただけると助かります。 コードは標準ライブラリにある機能は素直に使い、シンプルな実装を目指します。また、この記事の全てのコードはパブリックドメインとします。 これから、3つのステップでジョブシステムを実装していきます。 ジョブを並列実行する機能 ジョブ同士に依存関係を設定する機能 大きなジョブを分割して並列化する機能 この記事ではステップ1の最も基本的なジョブシステムを実装することを目標にします。 実装に入る前に、雰囲気を伝えるために、各ステップにおけるインターフェイスを示します。 // スレッド数4としてジョブシステムを作成 JobSyste

                                                                                  C++でジョブシステムを作ってみる(1)
                                                                                • Python3.12で新たにサポートされたsub-interpretersの紹介 | gihyo.jp

                                                                                  門脇(@satoru_kadowaki)です。11月の「Python Monthly Topics」は、Python 3.12の新機能であるsub-interpretersについて紹介します。 2023年10月2日に「 Python 3.12.0 」がリリースされました。今回も気になる新機能が多く、本記事で紹介するsub-interpretersもPythonで並列処理を行うための新機能です。 Python 3.12の新機能については以下のリンクを参照してください。 What’s New In Python 3.12 -Python 3.12.0 Documentation 本記事ではPythonにおける並列実行のこれまでと、sub-interpretersが現状どのように使用できるかについて説明します。 なお、執筆にあたり先日開催されたPyCon APAC 2023において、sub-in

                                                                                    Python3.12で新たにサポートされたsub-interpretersの紹介 | gihyo.jp