[C++][ADAPT]データ分析、処理ライブラリADAPTの更新情報(3)。

ほぼ10ヶ月ぶりの更新情報。と言っても放置していたわけではなく、Gnuplotライブラリを取り込んで整備するなど数多くの変更を行っていた。Gnuplotライブラリの詳細は別記事で投稿済みなので省略するとして、それ以外の追加機能に関するまとめである。そろそ…

[C++]std::formatをstd::variantに対応させる。

C++

C++20で導入されたstd::formatは、既に多くの人が活用していることだろうと思う。printf系関数や<iomanip>に比べて本当に便利になった。昔私はstd::stringをprintfのようにフォーマットする関数という記事を書いたことがあるが、C++20環境に移行してからは一切使って</iomanip>…

[C++][ADAPT]2次元ヒストグラム、3Dの追加。Gnuplotライブラリ更新(2)。

タイトルのとおりである。前回は1次元の一般的なヒストグラムを実装したが、今回は2次元の方を追加した。と同時に、その周辺での色々な設計の整理を行った。 プロット機能の詳細はこちらへ。 GitHubリポジトリはこちらへ。 2次元ヒストグラム(binscatter)…

[C++][ADAPT]ヒストグラムとラベル。Gnuplotライブラリ更新(1)。

ADAPTにおけるプロット機能の更新情報である。 プロット機能の詳細はこちらへ。 GitHubリポジトリはこちらへ。 ラベルプロット機能の追加 PlotLabels関数を用意した。指定した座標に文字列を表示する機能である。ラベルはstd::stringや数値型のrangesであれ…

[C++][ADAPT]C++用Gnuplotライブラリを作った。

作った(嘘)1。 もう更新することはないと思っていたC++用GnuplotライブラリADAPT-GPM2であるが、データ分析ライブラリADAPTへ取り込むことでメンテナンスを再開した。 GitHubリポジトリはこちらへ。 C++には既にMatplot++というライブラリがあり、私もこの…

[C++]C++20/23時代でも独自の名前付き引数は必要だった。

C++

動機 C++20では指示付き初期化が導入された。これは集成体初期化を行う際にメンバ変数名を明示的に指定しつつ初期化する方法で、ありがたいことに、極めて簡単にC++での疑似名前付き引数として利用できる。 ただし指示付き初期化にも難点が多数ある。まず初…

[C++][ADAPT]データ分析、処理ライブラリADAPTの更新情報(2)。

ADAPTの更新情報である。本ライブラリを私個人も研究の中で本格的に導入し、その都度欲しくなった機能の追加などを行ってきたので、そのまとめだ。 ADAPTについての説明はこちらへ。 ADAPTのGitHubリポジトリはこちらへ。 条件指定可能な階層関数の追加 ADAP…

[C++]可変引数マクロの引数を変換しつつ展開する方法を探る。

C++

たぶん誰の役にも立たない記事。最近ブログを更新するネタがないので、気の抜けた記事の一つ二つ書いてもまあ良いかなぁと。 動機 私は自作ライブラリの中で、よく次のようなコードを書く。 auto [abc, def, ghi] = x.GetPlaceholders("abc"_fld, "def"_fld,…

[SlackLogViewer]Slack過去ログ閲覧ツール更新(9)。

もしかするとこれが最後の更新になるかもしれないと思いつつ。 SlackLogViewerの説明はこちらへ。 Windows、macOS版のダウンロード先はこちらへ。 本記事は2024年8月31日に公開されたものの、すぐさま別のバグ報告が寄せられたため一旦非公開とし、バグ修正…

[C++]SIMDをクラステンプレート化したかった話。

C++

動機 諸事情あってSIMDとやらの勉強をしている。ちょっとループ処理の高速化を目論んで色々調べていたのだが、私の使い方だと自動ベクトル化が働かないことが分かったので、自前で書かねばといろいろ勉強中なのである1。 ところで、SIMDについて色々と調べて…

[C++][ADAPT]データ分析、処理ライブラリADAPTの更新情報(1)。

ADAPTの更新情報である。リポジトリを公開してから3ヶ月間で色々と修正や機能追加してきたが、そのあたりについて簡単にまとめておく。 ADAPTについての説明はこちらへ。 ADAPTのGitHubリポジトリはこちらへ。 DTable、STableの追加 ADAPTがもともと有してい…

[SlackLogViewer]Slack過去ログ閲覧ツール更新(8)。

1年近くほったらかしていたSlackLogViewerの更新である。特に機能追加などはないので、主として不具合修正である。 SlackLogViewerの説明はこちらへ。 Windows、macOS版のダウンロード先はこちらへ。 Qt5のサポート終了 メンテナンスをしていて初めて、OpenS…

[C++]C++20対応のインタプリタを使いたい。Clingの導入。

C++

C++20に対応したインタプリタを使ってみた話。CERNのROOTというデータ分析ツールのプロジェクトチームが同時にClingというC++インタプリタを開発しており、これを導入してみた話である。ClingはLLVMに基づくインタプリタであり、公式にはClangにできることは…

ADAPT制作に関する所感とか言い訳とか。

前回の記事で、自作のデータ分析ライブラリADAPTの紹介をした。本記事はその開発に関して色々と思うところを書き並べるものである。しょうもない自分語りなので興味のない人は引き返してほしい。 ADAPTは私が大学院生時代からちまちまと作ってきたライブラリ…

[C++]データ処理、分析のためのライブラリ制作。

1. はじめに 以前からブログやX(旧Twitter)でしばしば触れていることではあるが、私はC++でデータ集計や分析をするためのライブラリを制作している。今回、そのライブラリの最新版がいくらか動作するようになったので、GitHubでの公開とともにこのブログで…

[C++]非constexpr関数の引数からconstexpr関数をコンパイル時に評価させたかったのに。

C++

例えば次のような関数があるとする。 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; } この…

[C++]Nullポインタ経由のstaticメンバへのアクセスは許されている。らしい。

C++

nullポインタに関するメモ。 あるクラスのポインタを経由してそのメンバにアクセスしたい場合、通常はそのポインタがnullポインタであってはならない。しかしnullポインタであったり、有効なアドレスでなかったりした場合にも、staticメンバへのアクセスに利…

[Python]分散処理フレームワークRayでmutexらしきものを作る。

背景 私が調べた限り、Ray v2.4.0時点で、多数のノードにまたがって動作するmutexは実装されていない。 一応、Actorが共有リソースと排他処理を実現しているので、これで十分な場合もあるだろう。しかしActorはあるノードの中で1個のプロセスとして動作する…

[SlackLogViewer]Slack過去ログ閲覧ツール更新(7)。

SlackLogViewerの更新情報である。GitHubリポジトリに来ていた多数の不具合、機能要求などを一掃すべく、色々と更新した。とはいえ、表面的な変更点は引用文、画像の表示くらいである。 SlackLogViewerの説明はこちらへ。 Windows、macOS版のダウンロード先…

[Python]分散処理フレームワークRayに関する備忘録。

最近Rayによる複数PCでの分散処理をする機会があったので、気がついたことをメモしておく。Windows環境を前提としている。 ノードIPアドレスの指定 通常、ray startコマンドは以下のように実行する。 ray start --head --port=6379 (ヘッドノード側) ray sta…

少しばかり事後報告。

先日、と言ってももう2週間くらい前のことだが、博士(理学)を授与された。こんなブログでプログラミング中心の記事を書いてはいるものの、私の専門は素粒子物理である。プログラミングは仕事道具兼趣味だ。この一年半ほどまともにブログを更新できていなか…

[C++]フォーマット動的解析を行わないsscanfっぽい関数は速いのか。

C++

一年以上ぶりのC++記事であるが、緩めの内容。研究の方で一つ山場を乗り切ったので、気分転換にちょっと遊んでみた結果である。 動機 以前、巨大なテキストファイルの読み出しを並列化する記事を書いたことがある。CSVやSSVのように、ある程度統一されたフォ…

[SlackLogViewer]Slack過去ログ閲覧ツール更新(6)。

SlackLogViewerの更新情報である。ちょっと大きめの更新をしたので、ここらでver-1.2へと引き上げることにした。 SlackLogViewerの説明はこちらへ。 Windows、macOS版のダウンロード先はこちら。 なおバグ修正のみを適用したver-1.1.0も同時に公開している。…

7000PV/月達成記念、そして転落記念。

基本的にはプログラミングなどを中心とする記事を投稿するブログであるが、たまには最近の出来事についての所感などをつらつらと書き連ねるのもよかろうかと。 ボーナスタイムが終わってしまった、そんな喪失感に苛まれている。 先月、このブログは7000PV/月…

slackdumpの出力ファイルをSlackLogViewerで読ませたいときの注意点。

Slackのメッセージをエクスポートしたい時、最も一般的な方法は公式が用意しているエクスポート機能である。これはGUI上で簡単にエクスポートできること、フリープランであってもパブリックチャンネルであれば過去全てのメッセージをエクスポートできる点で…

[SlackLogViewer]Slack過去ログ閲覧ツール更新(5)。

前回(4)と同じく、バグ修正である。主としてMac版の不具合に対応するためのもので、既存のバージョンで満足しているWindowsユーザーは無視しても構わないが、本バージョンからはキャッシュ保存先が変更されるので、キャッシュ機能をバックアップとして使って…

[SlackLogViewer]Mac、Linuxへの対応。

更新情報とは少し異なる。Windows版ユーザーには関係のない話である。 cielavenir様からプルリクエストをいただき、SlackLogViewerがMac、Linux上で使用可能になった。Mac用のビルド済みのバイナリもcielavenir様が作成してくださったので、Releasesにて配布…

[SlackLogViewer]Slack過去ログ閲覧ツール更新(4)。

超久々のブログ更新だが、単なるSlackLogViewerのバグ修正である。 SlackLogViewerの説明はこちらへ。 Windows版のダウンロード先はこちら。SlackLogViewer.v1.1.Beta-4.zipをダウンロードして解凍すればよい。 更新情報 ver-1.1.Beta-3で次のようなバグを確…

[SlackLogViewer]Slack過去ログ閲覧ツール更新(3)。

最初はちょっとしたバグフィックスをして更新するつもりだったのだが、Qtでzipファイルを解凍せずに読み出すためのとても良いライブラリを見つけてしまったので、それも導入しつつ色々と改造した。 SlackLogViewerについての説明はこちら。 Windows版のダウ…

[C++][Qt]windeployqtをCMakeから実行する。

動機 オープンソース版のQtは基本的にLGPLライセンスであるため、ライセンスの汚染を避けるためには動的リンクが必要になる。この場合、何らかのアプリケーションを作って配布するときは、Qtの関連する共有ライブラリなどをアプリケーションに同梱して配布す…