並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 27 件 / 27件

新着順 人気順

wandboxの検索結果1 - 27 件 / 27件

  • 「この位置にprintfが無いとなぜか動かないんだ。」 - Qiita

    はじめに 先日ツイッターで見かけた呟き pic.twitter.com/33Yk02hu1U — TOMO (@tomozh) October 14, 2020 そういうこともあるのか的な反応もあるようなので具体例を挙げてみることにする。 例1 所謂FizzBuzz問題。 #include <stdio.h> void fizzbuzz(int n) { int next; int i = 1; do { printf(i % 15 ? i % 5 ? i % 3 ? "%d\n" : "Fizz\n" : "Buzz\n" : "FizzBuzz\n", i); if (i++ >= n) next = 0; } while (next); } int main(void) { printf((char[]){""}); // この位置にprintfが無いとなぜか動かない fizzbuz

      「この位置にprintfが無いとなぜか動かないんだ。」 - Qiita
    • Big Sky :: sudo の特権昇格バグはなぜ起こったのか

      « Microsoft Word を Markdown に変換するコマンド「docx2md」を作った。 | Main | VimConf 2019 を終えて » Linux の sudo に root 権限を奪取できるバグが見つかった。 Linuxの「sudo」コマンドにroot権限奪取の脆弱性。ユーザーID処理のバグで制限無効化 - Engadget 日本版 この脆弱性は、sudoコマンドのユーザーIDに-1もしくは4294967295を指定すると、誤って0(ゼロ)と認識して処理してしまうというもの。0(ゼロ)はrootのユーザーIDであるため、攻撃者は完全なrootとしてコマンドを実行できることになります。 https://japanese.engadget.com/2019/10/14/linux-sudo-root-id/ 既に Ubuntu 等にはパッチが配布され始めているらしい

        Big Sky :: sudo の特権昇格バグはなぜ起こったのか
      • 浮動小数点型の算術とお近づきになりたい人向けの記事 - えびちゃんの日記

        お近づきになりたい人向けシリーズです。 いろいろなトピックを詰め込みましたが、「これら全部を知らないといけない」のようなつもりではなく、いろいろなことを知るきっかけになったらいいなという気持ちなので、あまり身構えずにちょっとずつ読んでもらえたらうれしい気がします。 まえがき 予備知識 規格 用語 精度という語について 記法 表現について 有限値の表現について エンコードについて 丸めについて よくある誤差や勘違いの例 0.1 = 1 / 10? 0.1 + 0.2 = 0.3? 整数の誤差 Rump’s Example 基本的な誤差評価 用語に関して 実数の丸め 有理数の丸め 基本演算の丸め 差について 複数回の演算 補題たち 桁落ちについて Re: Rump’s example 融合積和 数学関数に関する式の計算 誤差の削減に関して 総和計算 数学関数の精度について 比較演算について 雑

          浮動小数点型の算術とお近づきになりたい人向けの記事 - えびちゃんの日記
        • エンジニア組織の成長に必要なのは、一人の情熱を大切にすることである - Akatsuki Hackers Lab | 株式会社アカツキ(Akatsuki Inc.)

          こんにちは、ゆのん(id:yunon_phys)です。この記事は Akatsuki Advent Calendar 2019 10日目の記事です。 エンジニア組織の成長のために大切にしている2つの事柄 アカツキのエンジニア組織は2~3年かけて成長していく状態を目指しています。 そしてその成長のためには、情熱と技術の積み上げが大事である、と考えています。 1. 情熱という感情を大切に扱う アカツキでは、情熱を持って仕事をしている状態を称賛します。 というのも、その人の想いが込められたプロダクトは明らかに完成物のクオリティが高くなりますし、よりクオリティを上げるためのいかなる努力も惜しまなくなり、結果として人も組織も成長すると考えているからです。 情熱というのは大きな野望である必要はありません。 その人が心からやりたいと思っているものであれば、その情熱の炎に大きさは関係ありません。 個人として

            エンジニア組織の成長に必要なのは、一人の情熱を大切にすることである - Akatsuki Hackers Lab | 株式会社アカツキ(Akatsuki Inc.)
          • 2024年の今、いかにしてVS2005を捨ててVS2015にする戦いは終わったか、そしてなぜCOMとの苦しい戦いが繰り広げられたか ~再入の悪魔~ - OPTiM TECH BLOG

            概要 Optimal BizのWindows AgentはながらくVisual Studio 2005とVisual Studio 2015を併用してビルドする必要がありました。Visual Studio 2015化対応は2012年のVisual Studio 2012化対応からスタートしていましたが、対応範囲の大きさからモジュールごとにVisual Studio 2015化対応を行ってきました。そして2024年リリースのBiz 9.19.0にてVisual Studio 2015化対応は完了を迎えました。 しかし、埋め込まれたバグの修正にはCOMの理解が不可欠であったため、2020年代に突入した今になって私達はこれまで正面戦争を避けてきたCOMを0から学び直す必要がありました。そしてATLの不思議な挙動やSTAにおける再入との戦いを乗り越え、無事にリリースされました。 はじめに Opti

              2024年の今、いかにしてVS2005を捨ててVS2015にする戦いは終わったか、そしてなぜCOMとの苦しい戦いが繰り広げられたか ~再入の悪魔~ - OPTiM TECH BLOG
            • C で関数に * や & を付けられる件の説明 - Qiita

              規格として C11 (n1570) を参照する。 注意: 途中に入れた図が崩れるようなら、半角・全角比が 1:2 になるようなフォントを使って閲覧してください。 現象 wandbox で実行 ソース: ( &printf)(" &printf = %p\n", &printf); printf (" printf = %p\n", printf); ( *printf)(" *printf = %p\n", *printf); ( **printf)(" **printf = %p\n", **printf); (***printf)("***printf = %p\n", ***printf); この現象を解説する。 関数呼び出し まず、関数呼び出しについての規定を見る。 The expression that denotes the called function shall have

                C で関数に * や & を付けられる件の説明 - Qiita
              • 大学の C++ 講義で使っているオンラインコンパイラ

                C++ Advent Calendar 2023, 9 日目の記事です。 学校で C++ を教える場合、受講者に最初から Visual Studio Code や、Visual Studio, Xcode などの統合開発環境をインストールしてもらうのは難しいことがあります。 とくにプログラミングが初めての学生、パソコンに不慣れな学生が多い場合は、なるべく環境構築に時間をかけず、スムーズに C++ プログラミングの学習に入れるよう、講義の序盤ではオンラインコンパイラの使用が選択肢として有効です。 本記事では、筆者が実際に大学の C++ 講義で使った 3 つのオンラインコンパイラを、講義での活用の観点から紹介します。 Simple C++ Editor Simple C++ Editor は、Wandbox をバックエンドとしたオンライン C++ コンパイラです。初心者がよく起こすエラーや警告

                  大学の C++ 講義で使っているオンラインコンパイラ
                • [C++] std::arrayを初期化せずに初期化する - 地面を見下ろす少年の足蹴にされる私

                  初期化せずに初期化する。一見矛盾しているようにしか思えない行いはしかし、生配列の場合は次のように初期化しながら初期化しないことによって行うことができます int main() { int array_uninit[5]; // 各要素は未初期化 int array_zeroinit[5]{}; // 各要素は0で初期化 } この時std::arrayで同様に初期化しながら初期化しないことを行うにはどうすればいいのでしょうか?クラス型の場合、初期化をしない初期化(デフォルト初期化)の場合でもデフォルトコンストラクタが呼ばれてしまうため、なんとなくできないような気がしてしまいます。 先に結論を書いておくと、生配列と全く同様の書き方によって全く同様の初期化を行うことができます。 int main() { std::array<int, 5> array_uninit; // 各要素は未初期化 s

                    [C++] std::arrayを初期化せずに初期化する - 地面を見下ろす少年の足蹴にされる私
                  • Pathname#join の振る舞いが気になってbugs.ruby-lang.orgにissueを立てた話 - ESM アジャイル事業部 開発者ブログ

                    ESM Advent Calendar 2022 - Adventar 8日目の記事です。 こんにちは color_box です。 Rubyのバグ報告や機能の提案などを議論するbugs.ruby-lang.orgに初めてissueを立てる機会がありました。立てたのは下記のissueなのですが、これを作成するまでにいくつか知見が得られたため、それについて書きます。 bugs.ruby-lang.org まずPathname#joinの利用時に下記のような挙動に遭遇しました。 irb(main):003:0> Pathname('/foo').join('bar', 'baz') => #<Pathname:/foo/bar/baz> irb(main):004:0> Pathname('/foo').join('bar', '/baz') => #<Pathname:/baz> irb(ma

                      Pathname#join の振る舞いが気になってbugs.ruby-lang.orgにissueを立てた話 - ESM アジャイル事業部 開発者ブログ
                    • C++入門者向けコード実行エディタをつくった話 - Qiita

                      こんにちは、TumoiYorozuです。 現在は東京大学の博士 1 年生をしています。私は中学 1 年の頃からプログラミングをやっていて、特にアルゴリズムが大好きです。AtCoder をはじめとする 競技プログラミング にも取り組んでいて、高校生のときは情報オリンピックにも参加し、大学生のときは ICPC 国際大学対抗プログラミングコンテストに参加していました。現在はこれらの裏方をしています。 今回の記事では、 全くプログラミングを触れたことが無いような中高生を対象に 主にAtCoderや情報オリンピック、ICPCへの参加を考えている方を想定した C++を入門する際に最適な、ブラウザで使用できるコード実行エディタ を制作した話と紹介です! 良ければこの記事の LGTM、また GitHubリポジトリ の Star よろしくお願いします! 制作物 こちらのページになります! Simple C+

                        C++入門者向けコード実行エディタをつくった話 - Qiita
                      • Modern C++でのループ展開の書き方 - Fixstars Tech Blog /proc/cpuinfo

                        このブログは、株式会社フィックスターズのエンジニアが、あらゆるテーマについて自由に書いているブログです。 この記事はC++ Advent Calendar 2022の9日目の記事です。 皆さまこんにちは。今日もソフトウェア高速化してますか? 私も相変わらず色々と高速化している日々ですが、最近、私が書いたループ展開のコードを見て「どういう仕組みで展開されるんですか?」と社内で聞かれたことがあったので、せっかくなので共有しておきたいと思います。 TL;DR: N段ループ展開コードは、最近のC++機能を使えば以下のように簡潔に書けます。 template<std::size_t... unrollIndices> void vectoradd(double z[], const double x[], const double y[], const std::size_t n, std::ind

                          Modern C++でのループ展開の書き方 - Fixstars Tech Blog /proc/cpuinfo
                        • [C++]カスタマイゼーションポイントオブジェクト(CPO)概論 - 地面を見下ろす少年の足蹴にされる私

                          C++20以降の必須教養となるであろうカスタマイゼーションポイントオブジェクトですが、その利便性の高さとは裏腹に理解が難しいものでもあります。これはその理解の一助となるべく私の頭の中の理解を書き出したメモ帳です。 C++17までのカスタマイゼーションポイントの問題点 Customization Point Object(CPO) 関数オブジェクトとADL Template Method inline名前空間 その他の性質 実装してみよう! ケース1 右辺値 ケース3 配列型、ケース2 不完全型の配列 ケース4 ユーザー定義型のメンバbegin ケース5 ユーザー定義型の非メンバbegin() 完成! これまでのカスタマイゼーションポイント C++20のカスタマイゼーションポイントオブジェクト C++23以降の標準ライブラリ カスタマイゼーションポイントオブジェクトという言葉 参考文献 C+

                            [C++]カスタマイゼーションポイントオブジェクト(CPO)概論 - 地面を見下ろす少年の足蹴にされる私
                          • ゲーム開発者のための C++11〜C++20 技術書典 10 Ver.

                            ◆ 内容 本書は、2020 年 9 月に開催された CEDEC 2020 講演「ゲーム開発者のための C++11~C++20, 将来の C++ の展望」で取り上げた C++11~C++20 機能を解説し、説明や項目、サンプルを加筆した本です。 CEDEC ではスライドの面積の都合で include や詳細な実装が省略されていたコードも完全な形で掲載しています。 さらに付録として、2020 年 12 月時点での C++ 標準化委員会の議論の状況を反映し、C++23 に入ることが決まった / 入る見込みが高い 13 個の提案を先取りで解説しています。 ◆ 注意 本書は 2020 年 12 月の「技術書典 10」で販売された PDF 書籍・紙書籍(https://techbookfest.org/product/5738569643589632)と同一の内容です。 必要に応じて改訂やマイナーアッ

                              ゲーム開発者のための C++11〜C++20 技術書典 10 Ver.
                            • C++でオブジェクトを返す関数を書いてもいいのか問題 - Gobble up pudding

                              C++でオブジェクトを返す関数を書いてもいいのか問題→OKです。 遅かったらプロファイル取りましょうで終わりです。 かなり過去にC++でstd::stringをどう返すべきかという記事を書いたこともあり結局いま、例えば、関数内でvectorを加工してその結果を呼び出し側で使いたいニーズがある場合のコードはどう書くのが正解なの? ということを思い至り備忘録として残しておきます。 ※話が複雑になるので、例えばsortするときのようにあらかじめあるvectorを加工する場合ではないことを明記しておきます 主にC++11が出る前のように void foo(std::vector<int>& v) { ...(vector書き換え) } std::vector<int> vec = { 1, 2, 3 }; foo(vec); とやるのがいいのか、 std::vector<int> foo() {

                                C++でオブジェクトを返す関数を書いてもいいのか問題 - Gobble up pudding
                              • C++20コンセプト時代のエラーメッセージとの付き合い方 - Qiita

                                はじめに C++プログラミングにコンパイルエラーは付き物です。コンパイラからのメッセージに頼らずに、正しいC++プログラムを書き上げることなど不可能です。(ここでは脳内C++コンパイラ搭載型超人の存在は無視します:D) C++標準ライブラリは便利なアルゴリズムを数多く提供しており(通称 "STL")、大部分のC++プログラマはその恩恵を受けています。しかしSTLを駆使したコードのコンパイルエラーは、時として長大で難解なメッセージを出力することがあります。 この記事ではソートアルゴリズムsortを題材にして、現状(C++17)エラーメッセージの問題点を確認し、きたるC++20時代のエラーメッセージを読み解いていきます。 C++17時代のエラーメッセージ 下記ソースコード片をコンパイルすると、どんなエラーメッセージが出力されるでしょう? 注:このコードはコンパイルに失敗します。 #includ

                                  C++20コンセプト時代のエラーメッセージとの付き合い方 - Qiita
                                • glibcのexp(x)をいじめる - よーる

                                  glibcのexp関数は、倍精度浮動小数点数の指数関数をソフトウェアで計算するものです。 glibcの実装(IBM Accurate Mathematical Libraryの実装を用いたもの)は、おそらく完全精度を達成しています。 完全精度とは、入力がどんな値であっても真の値に最も近い浮動小数点数に丸めた結果を返すことを言います。 しかし、これを実現するのは非常に困難であることが知られています(テーブルメーカーのジレンマ)。 glibcの実装では、以下の三ステップを踏むことで、完全精度を達成しています。 まず倍精度浮動小数点数演算とテーブル引きを駆使して近似値を求め、誤差を加味しても丸めた結果に影響がないと判断されれば、その値を返す 144bitの多倍長演算を使って近似値を求め、誤差を加味しても丸めた結果に影響がないと判断されれば、その値を返す 768bitの多倍長演算を使って近似値を求

                                    glibcのexp(x)をいじめる - よーる
                                  • Sora Unity SDK を iOS 対応した話

                                    github.com/shiguredo/sora… iOS に対応した Sora Unity SDK 2020.7 をリリースしました。これで Windows / macOS / Android / iOS 環境で WebRTC を利用することが可能になります。ぜひ使ってみてください。 この記事では、この対応のために具体的にどんなことをしたのかについて書きます。 iOS 対応の PR はこのあたりです。全体を見たい時に確認してください。 iOS 用 WebRTC を作る PR iOS ビルドに対応 by melpon · Pull Request #6 · shiguredo-webrtc-build/webrtc-build iOS 用パッチを適用する by melpon · Pull Request #7 · shiguredo-webrtc-build/webrtc-build そ

                                      Sora Unity SDK を iOS 対応した話
                                    • [C++]inline名前空間の使途 - 地面を見下ろす少年の足蹴にされる私

                                      inline名前空間はC++11から追加された機能で、その中にあるものは透過的に(名前空間がないかのように)アクセスすることができます。一見使いどころがなく見られがちですが、うまく使えばとても便利に活用することができます。 1. using namespaceの範囲を限定する 2. APIのバージョニング 3. ABIのバージョニング リンクエラーにする ABI互換性を確保する 4. 名前の衝突を回避する 参考文献 1. using namespaceの範囲を限定する これは標準ライブラリではユーザー定義リテラルの定義と利用でよく利用されます。 例えば、std::string_viewを簡易利用するためのsvリテラルは次のように宣言されています。 namespace std { // string_view本体 template <class CharT, class Traits = c

                                        [C++]inline名前空間の使途 - 地面を見下ろす少年の足蹴にされる私
                                      • C言語でクロージャーを実現したい、あるいは実行時のコード生成によるクロージャー | 雑記帳

                                        導入:クロージャーについて 昨今ではクロージャーを使えるプログラミング言語は珍しくなくなった。クロージャーとは、関数の引数だけではなく、外のスコープにある変数を参照できる関数のことである。 例えば、次のJavaScriptコードでは、関数を返す関数 f を定義している。 f の中で定義された無名関数は、外側の変数 x を参照できている。 function f(x) { return function(y) { return x + y; }; } JavaScriptではネストした関数を使わなくても、bindメソッドによって同等の処理を記述することができる: function g(x, y) { return x + y; } function f(x) { return g.bind(null, x); // gの第1引数を束縛する } 残念ながらC言語にはクロージャーはない。関数の中に

                                        • IEEE浮動小数点数における平方根演算の精度に関する覚書 - よーる

                                          IEEE浮動小数点数における演算では、丸め誤差が不可避です。特に、複数回の演算を繰り返すと丸め誤差が積もっていき、正確な値と大きく離れた答えを得てしまうことがあります。しかし、次の演算については、(数学的に)正確な値を求めた後、一回だけの丸めが発生することが、IEEE標準で規定されています。 四則演算 積和演算 Fused multiply add (FMA) 平方根演算(正の平方根を求める*1) 浮動小数点数演算のできるCPUであれば、普通、四則演算や積和演算を行う命令を持っています。 しかし、平方根を正確に計算する命令を持たない命令セットも存在します。 そのような場合、平方根関数はライブラリ実装となるわけですが、どのように実装すれば要求を満たせるのでしょうか? C++のstd::sqrtは正確に計算しているのか? 結論 しています。 標準の丸めモード、つまり最近接丸め(ぴったり半分なら

                                            IEEE浮動小数点数における平方根演算の精度に関する覚書 - よーる
                                          • 地面を見下ろす少年の足蹴にされる私

                                            文書の一覧 JTC1/SC22/WG21 - Papers 2024 mailing2024-01 全部で22本あります。 もくじ P1255R11 A view of 0 or 1 elements: views::maybe P1255R12 A view of 0 or 1 elements: views::maybe P1709R5 Graph Library P2019R5 Thread attributes P2527R3 std::variant_alternative_index and std::tuple_element_index P2664R6 Proposal to extend std::simd with permutation API P2748R3 Disallow Binding a Returned Glvalue to a Temporary P27

                                              地面を見下ろす少年の足蹴にされる私
                                            • std::variantと不動点演算子 - in neuro

                                              実は、std::vectorはC++17から不完全型をサポートしたので、std::variantと組み合わせると以下のようなコードが書ける。 struct config_t { std::variant<bool, int, double, std::string, std::vector<config_t>> data; }; これを上手く使えばJSONなどの木構造をかなり簡単に(ポインタを陽に触らずに)扱える。std::mapが不完全型をサポートしてくれていないのがつらいが、std::vector<std::pair<std::string, config_t>>とすることで強引に回避できる。 これをしたかったらしき人の質問を見つけた。 stackoverflow.com これが通らないとのことだ。 class ScriptParameter; using ScriptParamete

                                                std::variantと不動点演算子 - in neuro
                                              • [C++]沼底のvoidify() - 地面を見下ろす少年の足蹴にされる私

                                                この記事はC++ Advent Calendar 2022の14日目の記事です。 規格書中の特定領域に突如出現する謎の説明専用関数voidify()、その謎を解明するため、我々調査隊はアマゾンの奥地へと向かった――。 謎の関数voidify voidfy()の入力 voidify()の役割 voidify()の実装 反voidify()運動 参考文献 謎の関数voidify voidify()とは規格書中に登場する謎の関数で、次のように定義されています。 template<class T> constexpr void* voidify(T& ptr) noexcept { return const_cast<void*>(static_cast<const volatile void*>(addressof(ptr))); } つまりは、オブジェクトの配置されているストレージのポインタを

                                                  [C++]沼底のvoidify() - 地面を見下ろす少年の足蹴にされる私
                                                • [C++]コンソール出力にchar8_t文字列を出力したい! - 地面を見下ろす少年の足蹴にされる私

                                                  非Windows Windowsのコンソール出力と標準出力 標準IOストリームのモード コンソールのコードページ スクリーンバッファ 1. 素直に変換してstd::coutする 1.2 UTF-16に変換してstd::wcoutする 2. UTF-16に変換してWriteConsoleW()する 3. 標準出力をユニコードモードにする 4. コンソールのコードページを変更してUTF-8バイト列を直接流し込む 5. Boost.Nowideを使用する UTF-8の直接出力 in Windows 絵文字の表示 in Windows 検証環境 参考文献 謝辞 非Windows おそらくほとんどの場合、非Windows環境ではcharのエンコードがUTF-8なのでそのまま出力できるはずです。しかし、C++20では標準出力ストリームに対するchar8_t char16_t char32_tのoper

                                                  • Sora Unity SDK を Android 対応した話

                                                    この記事では、この対応のために具体的にどんなことをしたのかについて書きます。 Android 対応の PR はこれです。全体を見たい時に確認してください。 Android 対応 by melpon · Pull Request #4 · shiguredo/sora-unity-sdk WebRTC の Android ビルド Sora Unity SDK を Android で動かせるようにするには、まず Android 用の WebRTC ライブラリが必要です。 WebRTC は既に Android で動作するようになっているので、これをビルドするだけで良いです。 ただし、Android のライブラリは AAR になっているのに対して、ネイティブの実行に必要なのは libwebrtc.a と jar ファイルなので、そのあたりをうまくやる必要があります。 WebRTC のビルドは So

                                                      Sora Unity SDK を Android 対応した話
                                                    • CommonLisp入門 兼 備忘録(ASDFもあるよ) - Qiita

                                                      前書き & Lispエイリアンが怖いので予防線を張る とあるLispエイリアンから教わったことを書き綴ります。 私はもうCommonLispと関わらないかもしれませんが、この知識が消えてしまうのは非常にもったいないことなので。 なお私はCommonLispエンジョイ勢であり、Lisp戦闘力はたったの5しかない貧弱一般人です。 頻繁にLispを使っているLispガチ勢のエイリアンと比べるとマジで取るに足らない存在なので、厳密な言葉の意味が違ったり、誤ったことを言っているかもしれませんが、ご了承ください。 環境構築 Roswellをインストールしましょう。 これはJavaScriptでいうNode.jsみたいなものです。 ブラウザ上で動作確認したい人はWandboxというサイトがオススメです。 以下、Roswellをインストールしたとして話を進めます。 (なお、私は基本的にUbuntuで動作確

                                                        CommonLisp入門 兼 備忘録(ASDFもあるよ) - Qiita
                                                      • [C++]to_chars()とfrom_chars()ってはやいの?? - 地面を見下ろす少年の足蹴にされる私

                                                        <charconv>ヘッダはC++17から導入されたヘッダで、ロケール非依存、動的確保なし、例外なげない、などを謳ういいことづくめで高速な文字列⇄数値変換を謳う関数が提供されています。現在フルで実装しているのはMSVCだけですが、実際速いってどのくらいなの?既存の手段と比べてどうなの??という辺りが気になったので調べてみた次第です。 計測環境 std::to_chars() 測定方法 整数(std::int64_t) 浮動小数点数(double) std::from_chars() 測定方法 整数(std::int64_t) 浮動小数点数(double) グラフで見てみる std::to_chars() std::from_chars() 相対比較 std::to_chars() std::from_chars() 結論 注意点 参考文献 計測環境 Core i7 7700T HT有効OC

                                                          [C++]to_chars()とfrom_chars()ってはやいの?? - 地面を見下ろす少年の足蹴にされる私
                                                        1