2026年になってもC++でCSVを処理したくなる機会は思いのほか多いです。 ログ解析、バッチ変換、設定読み込み……。 個人的には最近業務が変わって膨大なアイテム情報が記載されたCSVファイルの処理に直面してたりします。 こんな時にライブラリを選ぼうとする…
githubのAPIに頼らずにgitリポジトリの最新タグを取得する必要がでてきて、libgit2を使う方法を色々試した内容をまとめてみました。 やりたかったことは、 複数の git リポジトリの最新タグを並列で取得して新規で追加されたタグの情報を時系列で表示する と…
はじめに quill は、低レイテンシ・高スループットを追求した C++ 向け非同期ロギングライブラリです。 個人的にはC++ロギングライブラリの決定版だと思っています。 quillは低レイテンシを実現するためにフロントエンドとバックエンドの2つの部分に分かれて…
C++20で導入された std::format(C++26では std::print も追加されました)が使えるようになって、C++もだいぶモダンな書き方ができるようになってきました。 何よりiomanipで状態管理をする必要がないのはストレスがなくてよいですね。 第1引数のフォーマッ…
先月のブログ記事でとりあげた「特定の正規表現パターンでCTREが極端に遅くなる」という問題ですが、どうやらgcc15のconstexprの最適化が原因のようです。 Fedora Linux 44で梱包されているgcc16.1ではこの問題は発生しないことが確認できたことで、gcc15の…
CTRE(Compile Time Regular Expressions)の紹介 一般にC++の標準ライブラリで提供されているstd::regexは正規表現エンジンの中では比較的遅いとされています。 私が正規表現を高速に処理したい場合に考慮するライブラリの1つがCTRE(Compile Time Regular E…
はじめに C++でコーディングするのが大好きな私にとって、vcpkgは非常に便利なツールです。 vcpkgだと最新のライブラリを簡単にインストールできるし、プロジェクトごとの依存関係を簡単に管理できるのがとても便利です。 しかし、vcpkgの公式レジストリには…
vcpkgは便利ですね。 C++で何かをやろうとするとき、依存関係の管理が面倒ですが、vcpkgを使うと簡単にライブラリをインストールできます。 しかし、最近opencvやwxwidgetsなどをLinuxで利用しようとすると、segmentation faultが発生してしまうことに気づき…
unordered_denseの紹介 unordered_denseというライブラリをご存知でしょうか? std::unordered_mapの代替として利用することができ、基本的にstd::unordered_mapより高速に動作し、特定の用途においては沢山あるハッシュマップコンテナの中で最速の性能を出…
glazeで環境変数から構造体に値を読み取る 前回の続きです。 glazeのリフレクション機能がだんだん分かってきたので、すこし実用的なコードを書いてみました。 やりたいこと 集成体の各メンバーに環境変数から値を取得して代入する という関数を書いてみよう…
今月も相変わらずglazeをうまく活用することを考えていました。 今回はglazeのリフレクション機能を利用する話です。 ※ この記事では2025-10-22にリリースされたglaze v6.0.1を対象としています。 TL;DR glazeはC++23時代の現時点で現実的なリフレクション機…
はじめに 普段から使っているライブラリのドキュメントになっていない便利な機能を発見すると嬉しくなります。 今日は普段遣いしているglazeというC++のライブラリでそういう嬉しい体験をしたので紹介します。 TL:DR glazeにはドキュメントはほとんどないが…
PATH_MAXを使いたいだけなのにエラーになる はじめに 「ファイルシステムのパスの最大値を取得する」方法として、macOSとLinuxなら定数PATH_MAXを使う方法があります。 MSVCだったらMAX_PATHですね。 しかし、これを使うとエラーが出ることがあります。 これ…
C++20以降の世界ではstd::chronoを使うのがすっかりあたり前になりつつありますね。ありがたや。 私もstd::chronoの恩恵に預かっていたのですが std::chronoが提供する型を標準出力やログに出力したい という用途がでてきて少し嵌ったのでメモしておきます。…
前提 スクレイピングをC++で実装していると、URLの正規化がしたくなることがあります。 相対的なPATHだけがhref属性に指定されている時に、https://www.example.com/a/b/../c/d/index.htmlみたいなURLをログに出すより、https://www.example.com/a/c/d/index…
「Rustが生成するバイナリのサイズがC言語のそれより無茶苦茶大きい」みたいなXの投稿を見て、「さすがにそれはアンフェアだろう」と思ったので追試してみました。 https://t.co/xWWGKCXfLe pic.twitter.com/MBSlg9BC2Q— Kai Fall (@kai_fall) 2025年7月18日…
termuxのproot環境でvcpkgのOpenSSLのビルドをしようとすると、以下のようなエラーが発生することがあります。 /.l2s/.l2s.perl: No such file or directory むっちゃ途方にくれたのですが、回避策をみつけて無事にOpenSSLのビルドに成功したので、おそらく…
去年発売された本ですが、今さら読みました。 gihyo.jp 読んだ動機 私はフロントエンド、特にデザイン周りはからっきしです。 フロントエンドやるときはJavascriptのチューニングばっかりなので、HTML+CSSは最低限知っている程度のレベルです。 Webスクレイ…
TL;DR 文字列から浮動小数点数に変換するならfastfloat使いましょう。 私が試せる環境で比較する限り、とても速いです。 細かいことが気になります C++でちょっとしたプログラムを書くときにいつも気になるのが 「文字列データから指定データ型への変換処理…
FetchContentを使う動機 cmakeでHeader Onlyライブラリをちょっと使いたい場合ありますよね。 git submoduleでいいのですが、ちょっと管理が煩雑だなぁと思っています。 普段はなるべくConanパッケージを作る→使うのですが、お試しでマイナーなライブラリ使…
昨年末の話になりますが、ぼーっとredditのC++カテゴリを見ていたらlwlogというライブラリの話題が出てました。 「spdlogより速い」っていうのが売りのようです。確かに速そう。 www.reddit.com ちょうど良いのでロギングライブラリの個人的なメモをしておこ…
直近困ったのでメモ。 TL;DR Conanでパッケージ衝突がおきたら、パッケージ依存グラフ機能を使おう 自分でレシピを書くことがあったら、依存パッケージのバージョンはできるだけ範囲指定してほしい(願望) OpenCVとTesseract OCRを使ってみたかった 相変わら…
xcodeを12.3にすることができて一安心していたのですが、 apple clangが11.0のままだったことに気がつきました。 どうやらxcodeがアップデートしても、apple clangがアップデートされるわけではないみたいですね。 こちらの内容を元に以下のコマンドでアップ…
TL;DR conanパッケージに関して環境依存で細かい条件分岐をしたい場合はconanfile.txtではなくconanfile.pyを使いましょう。 Pythonコードでやりたい放題です。 導入というかtermuxの話 termux面白いですね。 普段持ち歩くAndroidでほぼ完璧なLinux環境が作…
termuxでコンパイルする場合、 「とにかくホスト上で最適化して動けばいいんだよ」 といつも思っています。 というかC++でコンパイルする時は大抵そう思ってる、貧乏性です。 「必要になったらそのCPU用にコンパイルすればいいでしょ?」という適当な考え方…
もう4年以上放置されているブログなのに、はてなさんまだ保管してくれてたんですね。 ありがたや。また少し書こうかなぁと。まずは機能が大分変わってる気がするからそこらへん追いつかないとなぁ。
ふとしたことでそこらへんに転がっているPDFを加工したいことがあります。 PDFを生成するライブラリではなくて、PDFのパーザが必要になるのですがC++でやるには何がいいんですかね〜。今回は、ざっと探して最初に見つかったPoDoFoを使おうと思ってます。 PoD…
C++で書きなぐるがの楽しかったのですが、そろそろ限界を感じてきたので、C++14とかをちゃんと勉強しようと思ってます。 私はC++98の知識しかないので、ここ2、3年のドラスティックな変化に全然対応できないと痛感してます。ひとまず以下をサクっと読んで文…
「libcurl使えば一発じゃん」と言われればそれまでなのですが、 C++界隈の一部ではheader only libraryが大人気なわけです。Boostやfollyみたいなガチなものから、もっとホビーなものまで沢山あるのに、 案外無いのがHTTPクライアント。 C++バリバリな方々は…
忘れた頃に必要になるrarファイル。 ちょっと変なフォーマットだと、Gnomeの機能では解凍できないのよね。昔は重宝したunrarなんてコマンドは最近のLinux(Fedora 23)にはなかったので、 野良ビルドすることに。UnRar-5.3.9ここらへんにあるとおり実行して、 …