Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

2020-01-01から1年間の記事一覧

macOS Catalina Libraryファイルの属性をnohiddenにする

$ xattr -d com.apple.FinderInfo ~/Library/ $ chflags nohidden ~/Library/

clang-format をいい感じにvimで使う

.vimrc設定 Bundle `cjuniet/clang-format.vim' let g:clang_format_style="{BasedOnStyle: Google, IndentWidth: 4, Standard: C++11}" 以上です。依存するvimプラグインもなくいい感じです。 使い方は整形したい範囲を行選択してCTRL-Kを押すだけ。 シンプ…

C++ 例外クラス

クラスのコンストラクタで異常を上位に返したい場合、例外を用いる以外に術はない。 こんな時は、C++例外クラスをthrowするのが良い。 もちろん例外送出時にはリソースを全て開放しておこう。 C++例外クラスで使えそうなものを上げておく。 いずれも任意の文…

C++11 シングルトン

class Hoge { public: static Hoge& shared() { static Hoge instance; return instance; } private: Hoge(); } C++でシングルトンを作りたい場合は上記のようにすればよい。 C++11より前の仕様では、複数のスレッドからHoge::shared()を呼び出したときにsta…

std::thread 練習帳その1

以下のコードはコンパイルに失敗し、Attempt to use a deleted function となる。 #include <thread> void update(int& data) { data += 2; } int main(int argc, const char * argv[]) { int data = 11; std::thread t(update, data); t.join(); printf("%d\n", dat</thread>…

macOSにて同一のシンボル名のダイナミックライブラリをロードしたらどうなるか

macOSにて同一のシンボル名を持つダイナミックライブラリをロードしたらどうなるかを検証します。 前提条件として、ダイナミックライブラリはインストールパスに@rpathが指定されていることとします。 絶対パスが指定されている場合は、全く異なる動作をしま…

macOS Application バイナリが持つentitlementを知りたい

$ codesign -d --entitlements :- /Applications/Hoge.appアプリ例その1) Executable=/Applications/Hoge.app/Contents/MacOS/Hoge <plist version="1.0"> <dict> <key>com.app…</key></dict></plist>

macOS コードサインを確認するコマンド

$ codesign -dvvv libblock.dylib Executable=/Users/pebble8888/Library/Developer/Xcode/DerivedData/block-dfwlkkoafjhqccbfqxydkmopdyll/Build/Products/Debug/libblock.dylib Identifier=libblock Format=Mach-O thin (x86_64) CodeDirectory v=20500 s…

C++のシンボルテーブル

macにはnmというシンボルを見るコマンドがあります。 namespace MyNameSpace {class MyObject { public: MyObject(); };MyObject::MyObject() { printf("aa\n"); }} 上記のコードをダイナミックリンクでコンパイルしたモジュールの出力をみてみます。 $ nm a…

ABC予想と宇宙際タイヒミューラー理論

ABC予想が何かという説明はここでは省きます。 整数論の未解決の難しい問題です。 tsujimotterさんのブログなどを参考にしてください。 これを解決したと言われているのが望月新一さんで使った新たな数学の理論が宇宙際タイヒミューラー理論だそうです。 以…

美しい電子顕微鏡写真と構造図で見るウィルス図鑑101

本屋で見かけてなかなか面白そうな本だった。 ウィルスは細菌に比べても小さくて、正二十面体だったり、アポロ宇宙船のように幾何学構造だったりするのが、面白いね。 今回をきっかけにウィルス研究者が増えたりするかもね。 美しい電子顕微鏡写真と構造図で…

米国株式投資する上で参考になる本

米国株式投資をする上で人に勧めるならこれという書籍を紹介します。 億万長者をめざすバフェットの銘柄選択術 超有名人ウォーレンバフェット氏がどのように銘柄を選んでいるかが解説されています。 基本的な事柄を学べます。 バフェット氏は逆張り投資家で…

FIRE 最強の早期リタイア術を流し読みした

FIRE 最強の早期リタイア術を流し読みしてみました。FIRE 最強の早期リタイア術 最速でお金から自由になれる究極メソッド作者:クリスティー・シェン,ブライス・リャン発売日: 2020/03/19メディア: 単行本(ソフトカバー)いわゆる投資で一髪当ててリタイアし…

macOS環境にてバイナリをdisassembleする

~$ cat main.c #include <stdio.h> int main(int argc, char** argv) { int a = 2; int b = 3; int c = a + b; return 0; } ~$ cc main.c ~$ otool -tvV a.out a.out: (__TEXT,__text) section _main: 0000000100000f80 pushq %rbp 0000000100000f81 movq %rsp, %rbp </stdio.h>…

C++11 ムーブセマンティクス

C++11 のムーブセマンティクスがよく分からないので実験してみる。 class Bean { public: Bean() :color(0) ,shape(0) { std::cout << "constructor\n"; } Bean(const Bean& other) : color(other.color) , shape(other.shape) { std::cout << "Bean copy co…

macOS10.15 Catalinaでdockerでpandas環境で米国のファイナンス情報を取得する

Docker Desktop on Macをインストールする。Install Docker Desktop on Mac | Docker Documentationpython3.7が入ったDocker イメージをpullする。 $ docker pull python:3.7 起動する。 $ docker run -it --name pytest python:3.7 /bin/bash yfinanceをイ…

C++アプリケーションの高速化

ボトルネックの計測 まずはどこが遅いか計測しよう。全体の時間の1%の処理を50%高速化しても、0.5%高速化したことにしかならない。 std::chronoを使うのがよいだろう。 シビアなケースでは計測結果をメモリ上に配置しておき、あとでまとめて標準出力やログフ…

swift Intのオーバーフロー演算について

swiftは整数のオーバーフローに関して厳しめの仕様になっている。 Double, Floatには最大値はほぼない。 Double, Floatは不動小数点表現なので、最大値はほぼないと考えて良い。オーバーフロー制御構文は用意されていない。 DoubleをIntに変換するときにオー…

UIColor色のRGB値

(red, green, blue, alpha)UIColor.gray (0.5, 0.5, 0.5, 1) UIColor.lightGray (0.666, 0.666, 0.666, 1) UIColor.darkGray (0.333, 0.333, 0.333, 1) UIColor.magenta (1, 0, 1, 1)

仮想通貨取引の納税

会社の給与以外の所得があり、それが20万円を超えた場合は確定申告を行う必要があります。 この時、国税を国へ、市民県民税を市へ支払う必要があります。 No.1900 給与所得者で確定申告が必要な人|国税庁 例えば、2019年1月1日から2019年12月31日に行った仮…

let's encrypt のACMEv1終了に関するお知らせに対応した

let's encrypt から次のようなメールがきた。 According to our records, the software client you're using to get Let's Encrypt TLS/SSL certificates issued or renewed at least one HTTPS certificate in the past two weeks using the ACMEv1 protoco…

C++でstd::mutexの使い方の誤りを検出するThread Safety Analysis

C++でstd::mutexの使い方の誤りを検出するThread Safety Analysisというのがclangにあるそうです。 Thread Safety Analysis — Clang 10 documentationbitcoin coreのソースで使われていて知ったのですが、xcode でも使えました。 導入手順 1. 192行の mutex.…

secp256k1のベースポイントをn倍した点をsagemathで求める

ベースポイントを2倍した点,3倍した点は以下で求めます。 sage: E = EllipticCurve(GF(2 ** 256 - 2 ** 32 - 977), [0, 7]) sage: G = E([55066263022277343669578718895168534326250603453777594175500187360389116729240,32670510020758816978083085130507…

rust でignoreアトリビュートを指定したテストを実行する

rustでignoreアトリビュートを指定したテストを実行するには以下のコマンドを実行します。 $ cargo test -- --ignored