ISUCON 7 予選に参加した

言語はチーム3人全員が触れたことのある PHP にした。 時刻 できごと 補足 13:09 Score 3473 初期状態のスコアを計測 13:38 DB server に slowlog 設定 14:26 message.channel_id と image.name に INDEX をはる 14:26 php-fpm を tcp から domain socket に…

mutex と atomic の違いは何か、どちらが良いか

C++

どちらも排他制御にかかわる仕組みである。 どのような場合に、どちらを選ぶべきか https://teratail.com/questions/54740 「mutexそれ自体が重い」というのは単なる盲信の事が多いと思います。mutexロック獲得・解放にかかる処理負荷は実処理に比べれば無視…

std::regex_search の第1引数に 一時的な string を入れるとよくない

match_results オブジェクトを引数に取る形式の場合、そのオブジェクトは引数で指定した検索対象文字列へのイテレータを保持する。 このため、検索対象文字列は本関数を呼び出した後も match_results オブジェクトを使用し終わるまで破棄されないようにする…

gdb ハッシュテーブル系 STL の要素を取り出す方法

std::unordered_map などの中身を取り出したい場合、gdb だと .at() や operator[] では print できなかった。 では、特定 key の要素を取り出すにはどうすれば良いか gdb には STL をいい感じに print してくれる拡張があり、ソースコードは python なので…

gdb においてスマートポインタは直接生ポインタに cast できる

shared_ptr 等のスマートポインタは フィールド _M_ptr に生ポインタを保管しているが、これはメモリ上では先頭にあたるので、 _M_ptr を取らなくても、先頭のアドレスから直接生ポインタに cast できる。 gdb でスマートポインタの値を表示したいときに便利…

Rust でどのようなライブラリが開発されているか(人気か)

Rust で trending がリポジトリを見てみると、unixの既存コマンドの高速実装的な物が多かった。なるほど。 いままではこの枠は Go だった気がするけど、こういうOSに近いものは Rust になっていくのかもしれない。 GitHub - sharkdp/fd: A simple, fast and …

swf ファイルの中身を書き換えて実行する方法

FFDec というすごいツール JPEXS Free Flash Decompiler - Opensource SWF decompiler and editor このソフトを使うと、swfファイルの読み込み、中身の書き換えまで全部できちゃう。それでいて完全無料(オープンソース)。良い時代になったものですね!! …