タグ

ブックマーク / nekko1119.hatenablog.com (5)

  • DNSサーバーとお喋りしてみた - C++と色々

    そういえばDNSサーバーとお喋りしたこと無いな、やり方知らないな、と思ったので土日でお喋りしてみました。 この記事は技術記事ではありません。感想日記です。 技術目的で来てしまった方のために先に参考にした資料をまとめます。私の書いてる文はただの感想文です。 参考にした資料 zenn.dev park12.wakwak.com spathis.medium.com datatracker.ietf.org datatracker.ietf.org datatracker.ietf.org あとChat-GPTにも色々聞きました 感想 コードです gist.github.com 全体 土日でざっくり実装できるぐらいにはシンプルな印象でした。 面倒くさくてdomain文字列の最後にポインターが来るパターンのドメイン文字列の読み取り実装はサボりました。 お試しだったので思いっきり環境依存なコードに

    DNSサーバーとお喋りしてみた - C++と色々
  • C++20の `std::ssize` が便利 - C++と色々

    C++20には std::ssize という関数が追加されています。 cpprefjp.github.io この関数がどう便利なのか紹介します。 C++ではranged based forが存在しますが、インデックス付きでコンテナをイテレートしたい時は通常のfor文を使う場合もあります。 C++20でranged based forにも初期化式を書くことができるようになりましたが、continueと相性が悪いなど完全にfor文を置き換えられるかと言うとそういうわけではありません。 // C++20初期化式付きのrange based for for (int i = 0; auto&& elem : container) { // elemとiを使った処理 // containerがstd::vectorなどであれば、container[i] == elemになる ++i; } 既存の問題

    C++20の `std::ssize` が便利 - C++と色々
  • gistのコードをブログに貼り付けてみるテスト - C++と色々

    えいっ gistのコードのページの左側にあるEmbed this gistの中身をコピーします。 単に貼り付けても表示されないので、IDを削除します。更に、>と<で囲みます。 <script src="https://gist.github.com/nekko1119/5205577.js"></script> ←だめ <script src="https://gist.github.com/5205577.js"></script>      ←表示されるこのままだと崩れて表示されてしまうので、Gistの埋め込みが崩れる(2013/02) - Enjoy*Studyを参考にはてなのデザインの詳細設定でCSSを設定する項目に .gist-data { word-break: normal; } .gist-data table { margin: 0; border: none; } .g

    gistのコードをブログに貼り付けてみるテスト - C++と色々
  • find関数で見るC++の変化 - C++と色々

    STLアルゴリズムはそのアルゴリズムを適用する範囲の先頭と末尾のイテレータのペアを引数に取ります。実際には範囲全体にアルゴリズムを適用させるケースが多く、イテレータのペアを書くのが冗長に感じることがあります。そこでBoost.Rangeには、範囲を引数に渡すことでその範囲全体にSTLアルゴリズムを適用する関数たちがあります。Boost.Rangeのfind関数の実装例を見てC++03/C++11/C++14の比較をしたいと思います。 C++03 まず、範囲なら何でも、コンテナでも組み込み配列でもアルゴリズムに適用できるように、begin関数、end関数を定義します。 namespace ns { //コンテナ版begin/end関数 //非const、constでオーバーロード template <typename Container> typename Container::iterat

    find関数で見るC++の変化 - C++と色々
  • Visual C++ 2015 PreviewのC++11/14/1zの新機能 - C++と色々

    Visual C++ 12.0 CTPと比べて新しく対応したC++11/14/1zの新規の機能を紹介します。 コア言語 Terse range-based for 訳すなら簡便な範囲for文、って感じでしょうか? C++14の次の規格で提案されている機能で、正式に入ることは決定していませんが、ほぼ入ると思われます。 (2014/12/13追記 C++1zの機能から取り除かれたようです) これは範囲for文の型宣言を省略した時に、auto&&と型を書いたように振る舞う機能です。 #include <iostream> #include <vector> int main() { std::vector<int> v = {1, 2, 3, 4, 5}; for (i : v) { // for (auto&& i : v)と同等になる std::cout << i << std::endl;

    Visual C++ 2015 PreviewのC++11/14/1zの新機能 - C++と色々
  • 1