[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の関連する共有ライブラリなどをアプリケーションに同梱して配布す…

[C++]ふと文字列リテラルによる名前付きtupleが欲しくなった話。

C++

何らかのクラスをタグとして与えるtuple、なら作る方法はネット上にいくらでも転がっているが、タグ用のクラスをいちいち宣言しなければならないのが鬱陶しいし、名前空間を汚してしまうのも気になるので、文字列リテラルで与えられるようにできないかなぁと…

[C++]アロー演算子オーバーロードでtuple、pairその他一時オブジェクトを返したい場合。

C++

久々の投稿だけど小ネタ。独自クラスのイテレータを設計しているときにちょっと悩んだので。 例えば何らかのイテレータを作っていたとして、そのイテレータの間接演算子が参照型ではなく、何らかの一時オブジェクトを返すものだったとする。 struct iterator…

[C++][vcpkg]vcpkgのパッケージバージョン管理、レジストリ編。

本頁の内容はvcpkgの非常に新しい機能についての説明で、正確な説明のなされた公式ドキュメントが著しく不足していることもあり、完全に手探りで書いています。他の環境やパッケージで動く保証も、また将来に渡り同じ方法が通用する保証もありません。私には…

[C++][vcpkg]vcpkgのパッケージバージョン管理、マニフェストモード編。

はじめに vcpkgはクラシックモードとマニフェストモードの2種類の動作があるようだ。クラシックモードはvcpkgの日本語解説でもよく説明されている、以下のようにパッケージを一つ一つ指定してインストールしていく方法である。 vcpkg install opencv3:x64-wi…

[C++][CMake]複数のコンポーネントから成るパッケージを作りたい時。

動機 多数のライブラリを含む自作のパッケージを、find_packageで他のプロジェクトからコンポーネント単位で利用できるようにしたかった。 つまり例えば次のように、ある自作のパッケージ(mylib)が複数のライブラリ(lib1、lib2、lib3)を持っており、その中か…

[C++][vcpkg]vcpkgに関する備忘録。

疑問が解決する度に追記していきたい。基本的にWindowsで使用することを想定している。 デフォルトのtripletを変更する 環境変数VCPKG_DEFAULT_TRIPLETの値を任意のtripletにすればよい。いちいちpackage名のあとにtripletを入力する手間が省ける。 個人的に…

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

SlackLogViewerの詳細はこちらの記事へ。ツールのダウンロードはこちらのGitHubページから。v1.1.Beta-2のSlackLogViewer.v1.1.Beta2.zipをダウンロードし展開すれば良い。 更新内容 キャッシュの管理機能を作った。ウィンドウ右上のアイコンをクリックする…

[C++][Qt]Qtのsignals、slotsなどのマクロ名が衝突するとき。

Qtに関する備忘録。 サードパーティーのライブラリなどではsignals、slotsのような名前が何かしら使われていることは珍しくないが、Qtはこれらの名前のマクロを持っているので、採用するライブラリによっては名前の衝突によってコンパイルできなくなることが…

[C++]日時、任意の数値型、任意の文字列、任意のrangeに対応させた。Gnuplotライブラリ更新(4)。

github.com 更新内容 これまでプロットに使えるデータ型はdoubleまたはstd::stringのみだったが、これをstd::is_arithmetic_v<T>またはstd::is_convertible_v<T, std::string_view>を満足する任意の数値型、任意の文字列型へと拡張した1。 データ配列の形式としてはstd::vectorのみが</t,></t>…

[C++]std::any_castせず格納されたオブジェクトを扱えるようなstd::anyは作れるか。

C++

以前作った実行時ジェネリクスのためのAnyは自由度を高め可変長引数や完全転送に対応させるために非常に入り組んだ設計になってしまったので、ずっと簡単でC++初級者にも分かりやすい設計にしてみようという試み。拘り過ぎると自分にとっては便利でも他人に…

[C++]std::ranges::views::zip、enumerateの代替機能を作ってみる。

C++

※本記事の内容はC++20の<ranges>を全く理解できていない人間が手探りで書いたものです。参考にするのは構いませんが鵜呑みにしないでください。 私はまだC++20を導入していないのだが、時代に取りに越されないために最低限の使い方を理解すべく、<ranges>で遊んでいる。ただ</ranges></ranges>…