ブックマーク / zenn.dev/gtnao (2)

  • Embulkのcoreのソースコードから紐解くデータ転送のしくみ

    この記事は trocco Advent Calendar 2023 の6日目の記事となります。 はじめに 今回はtroccoの内部でも利用されているETLのためのOSSであるEmbulkについて、core部分のソースコードリーディングを通して、そのしくみを紐解いていきたいと思います。 おことわり Embulkの基的な使い方などについては解説しません。 筆者はembulk-coreにコントリビュートしているわけではないので、間違いなどがあればお気軽にご指摘ください。 今回見ていくcoreの実装自体は、比較的変更が少ないとされる各種プラグインが従うべきインターフェース部分(embulk-spi)から隠蔽されているため、今後この記事の内容が正しくなくなる可能性は容易にあります。 Embulkにはguessやpreviewやresumeといった機能も含まれていますが、今回は単純なembulk r

    Embulkのcoreのソースコードから紐解くデータ転送のしくみ
  • パイプのバッファーサイズの罠

    はじめに あるプログラムから別のプログラムを実行し、結果を受け取りながら処理を進めたい場面が時折生じます。 しかし、パイプの挙動への注意を怠ると思わぬ問題を引き起こす可能性があります。 実行環境 記事は、以下の環境にて実行しています。 Ruby: 3.0.6 Ubuntu: 20.04 LTS Linux kernel: 5.15.0-71-generic 以降のプログラムは筆者の普段使いの Ruby で記述していますが、質的には言語によらない問題です。 また、記事で取り上げているパイプの概念は Unix 系 OS に広く共通するものですが、具体的な説明としては Linux を中心に話を進めます。 サンプルプログラム 子プログラム 実行に一定時間を要し、その途中で標準出力に結果を書き込むプログラムです。 単純化のため、1 秒の固定頻度で標準出力に書き込むだけですが、現実世界では外部へ

    パイプのバッファーサイズの罠
  • 1