タグ

プログラミングに関するdhrnameのブックマーク (1,119)

  • Boost Test Library

  • 入門ガイド — Google Test ドキュメント日本語訳

    はじめに:なぜ Google C++ Testing Frameworkを使うのか¶ Google C++ Testing Framework を上手に活用すれば,より良い C++ のテストを書くことができます. LinuxWindows,そして Mac,あなたが C++ のコードを書いているこれらの環境に関係なく Google Test を利用できます. では,優れたテストを書くにはどうすればよいのでしょうか?Google C++ Testing Framework は,どのように役立つのでしょうか?我々は次のように考えています: テストには, 独立性 と 再現性 が必要です.別のテストの結果に依存して成功したり失敗したりするテスト,をデバッグするのは非常に面倒な作業です.Google C++ Testing Framework は,各テストを異なるオブジェクト上で実行することによって

  • Boost minimal test - Faith and Brave - C++で遊ぼう

    は、Boost.Testライブラリのビルド不要で使用できる小さなテストライブラリとなっています。 #include <vector> #include <boost/test/minimal.hpp> int test_main(int argc, char* argv[]) { std::vector<int> v; BOOST_CHECK(v.empty()); BOOST_REQUIRE(v.size() == 0); return 0; } **** no errors detectedminimal testで用意されているのは以下の4つ: BOOST_CHECK(predicate) : 条件式を引数にとり、失敗時でもテストを続行します。 BOOST_REQUIRE(predicate) : こちらは、失敗時に例外を投げてテストを終了するので、失敗したら続行不可能なケースで使用

    Boost minimal test - Faith and Brave - C++で遊ぼう
  • CMakeの使い方(その1) - Qiita

    はじめに 2月のはじめ頃、CMakeを使ってビルドを自動化しようと思い、色々ググってCMakeLists.txtを作り試行錯誤したのですが、その時は結局断念しました。というのも、abcというステップがあるとすると、ググッて得られる解説はabcのaやbが抜けていきなりcから解説されたものが多く、初心者にはきつかったからです。特にcmake.orgのチュートリアルはまさにその典型で、チュートリアルのStep 1からして長過ぎて、当に何が必要なのかわかりにくい・・・orz ところが、今学期受けているHigh Performance Computingという講義で行われたCMakeの使い方の解説がわかり易すぎて、あっという間に自作ライブラリをCMakeでコンパイルすることができるようになり、CMakeの便利さに感動してしまいました。私と同じくCMake初心者という方にこの感動を共有すべく、ここに

    CMakeの使い方(その1) - Qiita
  • iutest

     <body> <p>このページを表示するには、フレームをサポートしているブラウザが必要です。</p> </body>

  • C++ 単体テストツール CppUnitの使い方 - のんびりしているエンジニアの日記

    皆さんこんにちは お元気ですか?私は元気です。 今日はCppUnitについて解説していきたいと思います。 CppUnitとは? C++の単体テストを自動化するライブラリです。 インストール Homebrewを使いましょう。 brew install cppunit CppUnitの使い方 サンプルコード 今回、Functionの内部が正確かどうかチェックします。 #include <cppunit/BriefTestProgressListener.h> #include <cppunit/CompilerOutputter.h> #include <cppunit/extensions/TestFactoryRegistry.h> #include <cppunit/TestResult.h> #include <cppunit/TestResultCollector.h> #inclu

    C++ 単体テストツール CppUnitの使い方 - のんびりしているエンジニアの日記
  • Web 技術の調査方法 | blog.jxck.io

    Intro 「新しい API などを、どうやって調べているのか」「仕様などを調べる際に、どこから手をつければ良いのか」などといった質問をもらうことがある。 確かにどこかに明文化されていると言うよりは、普段からやっていて、ある程度慣れてきているだけなものであり、自分としても明文化していなかったため、これを機に解説してみる。 やり方は一つではない上に日々変わっていくだろうが、頻繁にこの記事を更新するつもりはない。また、筆者は実務で必要になるというよりは、ほとんどを趣味でやっているため、このやり方が合わない場面は多々有るだろう。 スコープとしては、ライブラリ、ツール、フレームワークなどではなく、 Web プラットフォーム関連の標準やブラウザの実装状況などに限定している。 Scope 従来からあり、広く認知された API については、情報も多く調査の敷居はそこまで高くないため、今回は議論が始まって

    Web 技術の調査方法 | blog.jxck.io
  • 継承 - C++ 入門

    クラスの継承 既存のクラスを基にして新しいクラスを作ることを,クラスの継承 (inheritance) といいます。 次のプログラムは,Clock クラスを継承した ChimeClock クラスを定義したものです。 #include <cstdio> // 時計を表すクラス class Clock { protected: int hour; int minute; public: Clock(int h, int m) : hour(h), minute(m) { } virtual void print(); }; // チャイム付きの時計を表すクラス class ChimeClock : public Clock // Clock クラスを継承 { public: ChimeClock(int h, int m) : Clock(h, m) { } void print(); //

  • 「ぷよぷよ」のソースコードを使ってプログラミング学習する『ぷよぷよプログラミング』が日本電子出版協会会長賞を受賞 - ロボスタ ロボスタ - ロボット情報WEBマガジン

    株式会社セガはアクションパズルゲーム『ぷよぷよ』のソースコードを使ってプログラミング学習ができる『SEGA CHALLENGE! ぷよぷよプログラミング』が「第17回 日e-Learning 大賞」において、日電子出版協会会長賞を受賞したことを発表した。日電子出版協会会長賞受賞はプログラミング学習にアクションパズルゲーム『ぷよぷよ』を取り入れることにより親しみやすい操作による学習を可能としたことが評価された。 日e-Learning 大賞とは 「日e-Learning 大賞は」一般社団法人e-Learning Initiative Japanが主催する企業・学校・自治体などにおける、eラーニングを活用したコンテンツ・サービス・ソリューションの中からとくに優れたものが選出されるアワード。経済産業省、文部科学省、総務省、厚生労働省の4つの大臣賞が付与されるアワードは教育をテーマとした

    「ぷよぷよ」のソースコードを使ってプログラミング学習する『ぷよぷよプログラミング』が日本電子出版協会会長賞を受賞 - ロボスタ ロボスタ - ロボット情報WEBマガジン
  • GitHub - nemtrif/utfcpp: UTF-8 with C++ in a Portable Way

    #include <fstream> #include <iostream> #include <string> #include <vector> #include "utf8.h" using namespace std; int main(int argc, char** argv) { if (argc != 2) { cout << "\nUsage: docsample filename\n"; return 0; } const char* test_file_path = argv[1]; // Open the test file (must be UTF-8 encoded) ifstream fs8(test_file_path); if (!fs8.is_open()) { cout << "Could not open " << test_file_path <<

    GitHub - nemtrif/utfcpp: UTF-8 with C++ in a Portable Way
  • C/C++で日本語を扱いたい - Qiita

    #include <stdio.h> #include <string.h> int main() { char str[] = "日語サンプル"; int length = strlen(str); printf("1文字目: %c\n", str[0]); printf("長さ: %d\n", length); return 0; } このように、単なるchar型として扱うと日語を上手く処理できない。まあ、日語が2バイト以上で表現されているので当たり前といえば当たり前なんだけど。 そこで、C/C++で上手に日語を処理するための方法を2通り紹介したい。 ワイド文字を使う ワイド文字は、16ビット固定長で表現される多言語文字体型のことである。 C言語では、wchar_t型を用いてワイド文字を扱うことができる。 しかし、ワイド文字を扱うには、ロケールの設定が必要である。日語だけ扱い

    C/C++で日本語を扱いたい - Qiita
  • パーサジェネレータ"caper"の紹介 - Qiita

    パーサジェネレータ caper "caper"  (github)は拙作のパーサジェネレータです。yaccやbisonなどと同じ場所で使うツールです。 基的にはC++コードを生成するために作ったのですが、そのほかにもJavascript, D, Java, C#などのコードを出力することができます。 特長 大きなところでは、こんな特長があります。 出力コードが全部テンプレートクラスでヘッダファイル一つなので、ライブラリなどをリンクする必要がない 出力コードが大変ヒューマンリーダブル(手書きで書いたと強弁できるLALRパーサ、というコンセプト) PUSH型(パーサは常に受身で、トークンをポストするまで動かない) そのほかの特長については、http://jonigata.github.io/caper/caper_more.html を御覧ください。 歴史など このソフトは結構古いソフトで、

    パーサジェネレータ"caper"の紹介 - Qiita
  • Elixirコンパイラ②をElixirで作る:LLVM IRをElixirで生成(ASTはElixirマクロ互換)→再帰下降構文解析→ネイティブコード生成 - Qiita

    Elixirコンパイラ②をElixirで作る:LLVM IRをElixirで生成(ASTはElixirマクロ互換)→再帰下降構文解析→ネイティブコード生成C++ElixirLLVMfukuoka.ex fukuoka.exのpiacereです ご覧いただいて、ありがとうございます 今回も、前回に引き続き、Elixirにて、Elixirコードからネイティブコード生成する「Elixirコンパイラ」を作っていきます 内容が、面白かったり、役に立ったら、「いいね」よろしくお願いします C++と同等のコードをElixirで書く 前回、LLVM IR解析向けに作った、下記C++コードと同等のコードをElixirで書くと、こうなります

    Elixirコンパイラ②をElixirで作る:LLVM IRをElixirで生成(ASTはElixirマクロ互換)→再帰下降構文解析→ネイティブコード生成 - Qiita
  • Elixirコンパイラ①をElixirで作る:無謀にもWindowsでLLVM→LLVMを自前ビルド - Qiita

    fukuoka.exのpiacereです ご覧いただいて、ありがとうございます これまでのコラムは、割とアプリ/SI/Web/データサイエンス寄りのElixirコラムが多かったですが、今回は、毛色を変えて、Elixirコードからネイティブコードをコンパイルできるような、いわゆる「Elixirコンパイラ」をLLVMで作れるか、何回かに分けて、トライしてみようと思います ちなみに、私はWindows使い…それも「36年の歴史を誇る重度なMS信者※」なので、LLVMもWindowsで動かしていきます ※TwitterやQiitaをご覧のフォロワーの方は、どうも私のことをLinuxmac使いと思い込んでいる方が多いみたいです(無論、仕事趣味でガンガン使ってますけど)が、私が四六時中も手放さず、どこに行くにも携帯している愛機は、以下Let's note CF-RZ6+Windows 10です h

    Elixirコンパイラ①をElixirで作る:無謀にもWindowsでLLVM→LLVMを自前ビルド - Qiita
  • Pythonのオブジェクト指向プログラミングを完全理解 - Qiita

    1. オブジェクト指向の起源 2003年チューリング賞の受賞者アラン・ケイさんはよくオブジェクト指向プログラミングの父と称されます。ご人も憚ることなく、幾度、公の場で発明権を宣言しています。しかし、ケイさんは「C++」や「Java」などの現代のオブジェクト指向言語を蔑ろにしています。これらの言語は「Simula 67」という言語を受け継いだもので、私が作った「Smalltalk」と関係ないのだとケイさんは考えています。 オブジェクト指向という名称は確かにアラン・ケイさんに由来するものです。しかし、C++Javaで使われている現代のオブジェクト指向は当初のと結構違います。ケイさん自身もこれらの言語を後継者として認めないです。では、ケイさん曰くC++Javaの親であるSimula 67という言語はどんな言語でしょうか。ここで、簡単なサンプルコードを見てみましょう。 Class Recta

    Pythonのオブジェクト指向プログラミングを完全理解 - Qiita
    dhrname
    dhrname 2020/11/02
    クラスやオブジェクト、メソッドやthisを紹介した『構造化プログラミング』(ホーアとダールとダイクストラ共著)が1972年なので矛盾があるよ>1980年代、Smalltalkのおかげで、オブジェクト指向プログラミング言語が輩出
  • 継承は禁止するべき

    キチガイに刃物、ゴミプログラマに継承。危険なものは取り上げるべきだ。 オブジェクト指向プログラミングにおける継承は強力な手法であるが、これを正しく使えるプログラマは残念なことに極めて少ない。たいていの場合、継承を使うことで却ってプログラムの保守を困難にしてしまう。継承のアンチパターンの最たるものは、単なるメソッドやメンバ変数の共有のために継承を使うパターンだ。これを行うとデータが密結合になってバグの原因になり、プログラムを把握することも極めて困難になる。 そもそも、熟達したプログラマの感覚では、業務で書くアプリケーションの実装に継承を使うべき局面などほとんど無い。ライブラリ等のより低レベルな処理で仕様が確定しているものについては、継承が効果的となる場合もあるが、複雑なアプリケーションのロジックに継承を使うのはほとんどの場合、時期尚早な抽象化となる。 また、凡庸なプログラマが継承で実現したい

    継承は禁止するべき
    dhrname
    dhrname 2020/10/22
    リスコフが参照した構造化プログラミング(72年)の訳引用>連接(concatenation)といわれる。連接は、2つのクラスAとB、あるいはクラスAとブロックCに対して定義される操作であり、新しいクラス、あるいはブロックを作る。
  • NARCIS | DANS

    Per 3 juli 2023 is de NARCIS website offline gehaald en de NARCIS-dienstverlening geëindigd. De content, zoals metadata van publicaties en datasets, is uiteraard nog steeds beschikbaar in de repositories van de verschillende instellingen en is daar te allen tijde te raadplegen of te harvesten. Onderzoeksinformatie van Nederlandse instellingen vind je via de ‘Portal of Research Output from the Neth

    dhrname
    dhrname 2020/10/14
    「COMMUNICATION WITH AN AUTOMATIC COMPUTER」(ダイクストラ、1959年)
  • 誰も話題にしないノーコードの制約 解決編 「調整さん」もどきをノーコードで開発できた - GMOインターネットグループ グループ研究開発本部

    日々技術検証に勤しんでいる D.M. です。 先日はノーコードは制約がキツイ!みたいな記事を書きましたが、今回はその解決編です。 TL;DR ・ノーコードでは複雑な画面UIにこだわりすぎず、単純化した画面で作る。(1画面1レコード登録の原則) ・どうしても凝ったロジックが必要なケースでは、 Javascript で実装する。(ローコード) 目次 1.ノーコードで「調整さん」を作る 2.ノーコードで「チームランチシャッフルアプリ」を作る ノーコードで「調整さん」を作る 前回記事では、ノーコードプラットフォーム Bubble を使って、かの有名な Web サイト「調整さん」を作るぞと意気込んでみました。 ただ、いくつかの壁にぶつかってしまい挫折してしまいました。 まず改めて何を作るか、何が問題だったかを整理したいと思います。 ※「調整さん」は予定調整ができる出欠表のツールです。ご存じない方はこ

    誰も話題にしないノーコードの制約 解決編 「調整さん」もどきをノーコードで開発できた - GMOインターネットグループ グループ研究開発本部
  • プロセス間通信

    5. プロセス間通信 基的に、各プロセスは独立に動作する。(互いに影響を与えない。) しかし、複数のプロセスを協力して動作させたい場合には、 プロセス同士が情報をやりとりする必要がある。 情報のやりとりには 共有メモリ、同期(セマフォ、イベント-シグナル)、メッセージ交換、ソケット、パイプ,RPC, 等がある。 5.1 共有メモリ 共有データのconsistency(一貫性、無矛盾性)の維持が大切。 プロセスが共有データへアクセスする際には注意が必要。 共有データ(変数・表・ファイル)や共有リソース(メモリ, ファイル, I/O機器(プリンタなど), 等) にアクセスする部分のプログラムを、危険区間 (critical-section, きわどい区間, 臨界区間)という。 あるプロセスが危険区間を実行中は、他のプロセスは危険区間を実行しないようにする。 (同時に2つのプロセスが危険区間を

    dhrname
    dhrname 2020/10/01
    「構造化プログラミング」の日本語版にクラスプログラミングとコルーチンを使ったセマフォ(ダイクストラが提唱)の実装方法が紹介されているんだが
  • C/C++に組み込める軽量JavaScriptエンジン “QuickJS” を試す - Qiita

    はじめに QuickJS は C/C++ に組み込める軽量な JavaScript エンジンである。ライセンスは MIT license。JavaScript を組み込みたいけれど V8 はオーバースペックすぎる、という時に有用と思われる。 デザインがシンプルすぎてかえって信頼感のある公式ページはこちら。 QuickJS Javascript Engine QuickJS is a small and embeddable Javascript engine. It supports the ES2020 specification including modules, asynchronous generators, proxies and BigInt. (訳:QuickJS は小さい・組み込み可能な JavaScript エンジンである。モジュール・非同期ジェネレータ・プロキシ・Bi

    C/C++に組み込める軽量JavaScriptエンジン “QuickJS” を試す - Qiita