tak0kadaの何でもノート

発声練習、生存確認用。

医学関連は 医学ノート

C、C++

C言語でmapするやつ

ポインタを取ってポインタを返す関数を使うことなしにmap(fn, arr, n)と書きたいという気持ちでやったところマクロもコンパイラ拡張も避けられない結果となった。

Boost.Beastのサンプルのビルド

Fedora33でBoost.Beastのサンプルを動かした。 Could NOT find Boost (missig: から始まるエラー、インクルードなどのパス周りで解決している人の記事ばかりヒットするのだけれど、こういう事例もあるという記録です。 git clone https://github.com/boostor…

ガウス曲率と平均曲率を計算する

Discrete Differential-Geometry Operators for Triangulated 2-Manifolds | SpringerLinkを実装した。 GitHub - tak0kada/curvature: Implementation of discrete Gaussian and mean curvature defined in Meyer et al., 2003

プログラムのコメントスタイル

javadocスタイルでやっていくことにした(完) その3 ヘッダーファイルにDoxygenコメントを追加する http://www.doxygen.jp/docblocks.html

plyファイルをc++で開く

GitHub - nmwsharp/happly: A C++ header-only parser for the PLY file format. Parse .ply happily!を使えば簡単にデータを取り出せて便利。

gprofメモ

ちょっとプログラムが遅すぎるのでプロファイラを使った。

球面調和関数 in C++

tak0kada/spherical_harmonicsを書いた

三角メッシュ用のライブラリ書いた

GitHub - tak0kada/cnthd: Halfedge data structure for triangular mesh ハーフエッジデータ構造のC++ライブラリ。面の向き付けがバラバラなファイルに対応しようと思っていたがバグを出してしまって(しかもそれほど使わない機能)書き直す時間が惜しいので…

球面調和関数係数で表された物体の回転推定

A Robust Method for Rotation Estimation Using Spherical Harmonics Representation - IEEE Journals & Magazineを実装した。以下はコードを貼り付けたのみ。

doubleしか入っていないCSVをパースするプログラム

要件はメモリ128GBのPCで70GBのCSVをnp.ndarray形式でメモリに乗せること。np.load_txtも一応試したが、エラーでターミナルやブラウザも巻き込んで落ちた。std::ios::seekdirは相対位置指定にしか使えないはずだが、enumのため型変換されて、引数一つだけで…

pybindでC++からpythonを呼び出す実行ファイルを作る

それほど難しくないはずだが、実際バグらせると無限のコンパイルエラーが出て結構つらい。以下はサンプルコード。

strict aliasingメモ

Cを高級アセンブラ扱いしているとstrict aliasingに関する未定義動作を引き起こすから注意するようにというツイートを見た。以下駄文。

R Package development using Rcpp

Minimal procedure to make R package

C++のオブジェクトモデル

「Inside the C++ Object Model」を読んだ - tak0kadaの何でもノートのリンク先の記事がなくなると悲しいのでWebアーカイブを取ってみた。 メモリ配置とキャスト – wizaman's blog C++ vtables - Part 1 - Basics | Shahar Mike's Web Spot C++ vtables - Pa…

cymemというCython用のメモリ管理ライブラリ

現実逃避にyoutubeを見ていたところ情報業界にまでyoutuberが登場していた(C Programming for Machine Learning (LIVE) - YouTube)。真面目に見ていると中身がペラペラな感じは否めないが話すのは上手であり、ライブコーディング中にバグが取れなくなって詰…

Bjarne Stroustrup氏来日

C++分かりたいので、知ってたら有給取ってでも聞きに行きたかった。 togetter.com

「Inside the C++ Object Model」を読んだ

C++ Primerの著者の一人である S. Lippmanの著書。C++コンパイラの前身?であるcfrontはC++→Cのトランスパイラとして実装されており、cfront2くらいの頃の変換規則を解説しており、多重継承を含む多態性をどのように実装したかに重点が置かれている。研究室に…

継承、仮想継承したオブジェクトでのパフォーマンス計測

仮想継承のパフォーマンスへの影響はどうか調べた。以下は駄文

C++コンパイラの名前修飾

コンパイラは最終的にはバイナリの実行ファイルを生成するわけだが、少なくともCやC++の場合は分割コンパイルができるので複数のオブジェクトファイルをリンカで結びつけることになっている。リンカはC言語の形式でしか名前を処理できないので、コンパイラは…

boost::serialization::singleton

メモ: static変数の初期化のテクニック boost::serializationにおけるsingletonの内部の仕組み - redboltzの日記

Cでのプログラミング作法

リンク先も含めて安全なコードを書くための情報が多く参考になる。コード例も多い。ただノンプログラマがどこまでやるべきかという問題が...そもそも安全なプログラムが必要ならルールベースではなくてコンパイルの段階で弾かれるようになっていそうなRustを…

libnssを静的リンクできなかった

ubuntu15.10からantergosに移行したわけだが、先日書いたプログラムがlibboostの特定のバージョンに依存していたため動かなくなってしまった。今後は–staticにしたかったわけだが、最終的にはlibnssへの依存のためできなかった。とはいえ今後のためにメモ。

テンプレートで任意の多次元の配列を出力する

任意の次元の配列をprintする関数が欲しくなったが、単純にベタ書きする方法だと次元が決まっている場合しか対応できないのでテンプレートの再帰を用いたプログラムを書いてみた。

boost::asioメモ

boost::asioを使ったhttps通信 http://pragmaticjoe.blogspot.jp/2015/02/boostasio-https-client.html GitHub - alexandruc/SimpleHttpsClient: A simple HTTPS client based on Boost Asio.

Windows向けにクロスコンパイル

極めてつまらないプログラムを書いた。Windowsユーザの弟も利用すると考えたので少しだけ工夫をした。 参考 https://arrayfire.com/cross-compile-to-windows-from-linux/ C言語 マクロ コンパイル 判定 OS コンパイラ - 山口屋~活動日誌~ mingw-w64があれ…

C++での時間の取り扱い

C++で日時を取り扱うプログラムを書いている。Cスタイル、C++スタイルの両方が存在しているほか、相互に変換するための関数、計測精度ごとに複数の関数が存在するなど非常にややこしい。以下は簡単なまとめとして、具体的にインクルードすべきヘッダ、型に関…

C++での可視化

C++のコードから簡単にmatplotlibを使ってグラフを作成する方法 - MyEnigma CinderでiPadアプリを実装してみた | Preferred Research でらうま倶楽部 : cinder を含む記事 VTK - The Visualization Toolkit VTK/Tutorials - KitwarePublic

RのC実装(資料)

少し理解度が上がったのでggり直したら日本語の分かりやすい資料が出てきた。 http://www.slideshare.net/abicky/r-15350295: SEXPREC構造体とGC http://qiita.com/R_Linux/items/05e1848eee064c25cd1e: gdb http://qiita.com/kohske/items/a7a1f51726ea2cb2…

RのオブジェクトのC実装

以下https://cran.r-project.org/doc/manuals/r-release/R-ints.htmlとコードを眺めながら書いた駄文。ドキュメントは充実しているので良い。その他書き足す気力が失われたがmode、typeof、is.XX関数は重要と思われる。コードを読んでいると結局Rのオブジェ…

CGALのサンプルを実行する(その3)

http://doc.cgal.org/latest/Point_set_processing_3/index.html#Point_set_processing_3NormalOrientation を少し変更して実行した。