ほぼ10ヶ月ぶりの更新情報。と言っても放置していたわけではなく、Gnuplotライブラリを取り込んで整備するなど数多くの変更を行っていた。Gnuplotライブラリの詳細は別記事で投稿済みなので省略するとして、それ以外の追加機能に関するまとめである。そろそ…
C++20で導入されたstd::formatは、既に多くの人が活用していることだろうと思う。printf系関数や<iomanip>に比べて本当に便利になった。昔私はstd::stringをprintfのようにフォーマットする関数という記事を書いたことがあるが、C++20環境に移行してからは一切使って</iomanip>…
タイトルのとおりである。前回は1次元の一般的なヒストグラムを実装したが、今回は2次元の方を追加した。と同時に、その周辺での色々な設計の整理を行った。 プロット機能の詳細はこちらへ。 GitHubリポジトリはこちらへ。 2次元ヒストグラム(binscatter)…
ADAPTにおけるプロット機能の更新情報である。 プロット機能の詳細はこちらへ。 GitHubリポジトリはこちらへ。 ラベルプロット機能の追加 PlotLabels関数を用意した。指定した座標に文字列を表示する機能である。ラベルはstd::stringや数値型のrangesであれ…
作った(嘘)1。 もう更新することはないと思っていたC++用GnuplotライブラリADAPT-GPM2であるが、データ分析ライブラリADAPTへ取り込むことでメンテナンスを再開した。 GitHubリポジトリはこちらへ。 C++には既にMatplot++というライブラリがあり、私もこの…
動機 C++20では指示付き初期化が導入された。これは集成体初期化を行う際にメンバ変数名を明示的に指定しつつ初期化する方法で、ありがたいことに、極めて簡単にC++での疑似名前付き引数として利用できる。 ただし指示付き初期化にも難点が多数ある。まず初…
ADAPTの更新情報である。本ライブラリを私個人も研究の中で本格的に導入し、その都度欲しくなった機能の追加などを行ってきたので、そのまとめだ。 ADAPTについての説明はこちらへ。 ADAPTのGitHubリポジトリはこちらへ。 条件指定可能な階層関数の追加 ADAP…
たぶん誰の役にも立たない記事。最近ブログを更新するネタがないので、気の抜けた記事の一つ二つ書いてもまあ良いかなぁと。 動機 私は自作ライブラリの中で、よく次のようなコードを書く。 auto [abc, def, ghi] = x.GetPlaceholders("abc"_fld, "def"_fld,…
もしかするとこれが最後の更新になるかもしれないと思いつつ。 SlackLogViewerの説明はこちらへ。 Windows、macOS版のダウンロード先はこちらへ。 本記事は2024年8月31日に公開されたものの、すぐさま別のバグ報告が寄せられたため一旦非公開とし、バグ修正…
動機 諸事情あってSIMDとやらの勉強をしている。ちょっとループ処理の高速化を目論んで色々調べていたのだが、私の使い方だと自動ベクトル化が働かないことが分かったので、自前で書かねばといろいろ勉強中なのである1。 ところで、SIMDについて色々と調べて…
ADAPTの更新情報である。リポジトリを公開してから3ヶ月間で色々と修正や機能追加してきたが、そのあたりについて簡単にまとめておく。 ADAPTについての説明はこちらへ。 ADAPTのGitHubリポジトリはこちらへ。 DTable、STableの追加 ADAPTがもともと有してい…
1年近くほったらかしていたSlackLogViewerの更新である。特に機能追加などはないので、主として不具合修正である。 SlackLogViewerの説明はこちらへ。 Windows、macOS版のダウンロード先はこちらへ。 Qt5のサポート終了 メンテナンスをしていて初めて、OpenS…
C++20に対応したインタプリタを使ってみた話。CERNのROOTというデータ分析ツールのプロジェクトチームが同時にClingというC++インタプリタを開発しており、これを導入してみた話である。ClingはLLVMに基づくインタプリタであり、公式にはClangにできることは…
前回の記事で、自作のデータ分析ライブラリADAPTの紹介をした。本記事はその開発に関して色々と思うところを書き並べるものである。しょうもない自分語りなので興味のない人は引き返してほしい。 ADAPTは私が大学院生時代からちまちまと作ってきたライブラリ…
1. はじめに 以前からブログやX(旧Twitter)でしばしば触れていることではあるが、私はC++でデータ集計や分析をするためのライブラリを制作している。今回、そのライブラリの最新版がいくらか動作するようになったので、GitHubでの公開とともにこのブログで…
例えば次のような関数があるとする。 constexpr int multiply(int a, int b) { return a * b; } inline int func(int a, int b, int c) { return a + multiply(b, c); } int main() { int a = 1; std::cout << func(a, 2, 3) << std::endl; return 0; } この…
nullポインタに関するメモ。 あるクラスのポインタを経由してそのメンバにアクセスしたい場合、通常はそのポインタがnullポインタであってはならない。しかしnullポインタであったり、有効なアドレスでなかったりした場合にも、staticメンバへのアクセスに利…
背景 私が調べた限り、Ray v2.4.0時点で、多数のノードにまたがって動作するmutexは実装されていない。 一応、Actorが共有リソースと排他処理を実現しているので、これで十分な場合もあるだろう。しかしActorはあるノードの中で1個のプロセスとして動作する…
SlackLogViewerの更新情報である。GitHubリポジトリに来ていた多数の不具合、機能要求などを一掃すべく、色々と更新した。とはいえ、表面的な変更点は引用文、画像の表示くらいである。 SlackLogViewerの説明はこちらへ。 Windows、macOS版のダウンロード先…
最近Rayによる複数PCでの分散処理をする機会があったので、気がついたことをメモしておく。Windows環境を前提としている。 ノードIPアドレスの指定 通常、ray startコマンドは以下のように実行する。 ray start --head --port=6379 (ヘッドノード側) ray sta…
先日、と言ってももう2週間くらい前のことだが、博士(理学)を授与された。こんなブログでプログラミング中心の記事を書いてはいるものの、私の専門は素粒子物理である。プログラミングは仕事道具兼趣味だ。この一年半ほどまともにブログを更新できていなか…
一年以上ぶりのC++記事であるが、緩めの内容。研究の方で一つ山場を乗り切ったので、気分転換にちょっと遊んでみた結果である。 動機 以前、巨大なテキストファイルの読み出しを並列化する記事を書いたことがある。CSVやSSVのように、ある程度統一されたフォ…
SlackLogViewerの更新情報である。ちょっと大きめの更新をしたので、ここらでver-1.2へと引き上げることにした。 SlackLogViewerの説明はこちらへ。 Windows、macOS版のダウンロード先はこちら。 なおバグ修正のみを適用したver-1.1.0も同時に公開している。…
基本的にはプログラミングなどを中心とする記事を投稿するブログであるが、たまには最近の出来事についての所感などをつらつらと書き連ねるのもよかろうかと。 ボーナスタイムが終わってしまった、そんな喪失感に苛まれている。 先月、このブログは7000PV/月…
Slackのメッセージをエクスポートしたい時、最も一般的な方法は公式が用意しているエクスポート機能である。これはGUI上で簡単にエクスポートできること、フリープランであってもパブリックチャンネルであれば過去全てのメッセージをエクスポートできる点で…
前回(4)と同じく、バグ修正である。主としてMac版の不具合に対応するためのもので、既存のバージョンで満足しているWindowsユーザーは無視しても構わないが、本バージョンからはキャッシュ保存先が変更されるので、キャッシュ機能をバックアップとして使って…
更新情報とは少し異なる。Windows版ユーザーには関係のない話である。 cielavenir様からプルリクエストをいただき、SlackLogViewerがMac、Linux上で使用可能になった。Mac用のビルド済みのバイナリもcielavenir様が作成してくださったので、Releasesにて配布…
超久々のブログ更新だが、単なるSlackLogViewerのバグ修正である。 SlackLogViewerの説明はこちらへ。 Windows版のダウンロード先はこちら。SlackLogViewer.v1.1.Beta-4.zipをダウンロードして解凍すればよい。 更新情報 ver-1.1.Beta-3で次のようなバグを確…
最初はちょっとしたバグフィックスをして更新するつもりだったのだが、Qtでzipファイルを解凍せずに読み出すためのとても良いライブラリを見つけてしまったので、それも導入しつつ色々と改造した。 SlackLogViewerについての説明はこちら。 Windows版のダウ…
動機 オープンソース版のQtは基本的にLGPLライセンスであるため、ライセンスの汚染を避けるためには動的リンクが必要になる。この場合、何らかのアプリケーションを作って配布するときは、Qtの関連する共有ライブラリなどをアプリケーションに同梱して配布す…