八葉の日記

日々、感じたことをまとめる場として利用する

C++ Core Guidelines C.21

C++ Core Guidelinesの自分用翻訳 C.21: If you define or =delete any copy, move, or destructor function, define or =delete them all Reason The semantics of copy, move, and destruction are closely related, so if one needs to be declared, the …

unique_ptrについて

C++ではポインタ管理用にunique_ptrが追加されており、これの使い方と解決できる問題をちょっとまとめ。 生ポインタの問題 生ポインタ(rawポインタ)をそのまま使うということはC言語からずっと行われており、C、C++に慣れた方なら言語もうみんな違和感がなく…

Futureについてメモ

Future:未来→先物時間がかかる処理を行う際に、とりあえずFutureだけをもらってあとで結果を取得する。 非同期処理の結果を受け取るということを簡単に行うための仕組み 〇例 int foo() { /* 重たい処理 */ } int main() { // 新たなスレッドで関数foo()を…

Ruby gem インストール場所確認

gem environmentを使うとでてくる。 INSTALLATION DIRECTORY:~~VSCodeでRubyデバッグする方法で調べてた VSCodeでRubyコードのデバッグができる環境を構築する(2017年2月現在) - 土屋つかさのテクノロジーは今か無しか

Modern C++ enumにはスコープが設定できる

職場がC++11/14に対応してきたのですが、今までなんちゃってModern C++だったので復習を兼ねてメモ。Effective Modern C++ ―C++11/14プログラムを進化させる42項目作者: Scott Meyers,千住治郎出版社/メーカー: オライリージャパン発売日: 2015/09/18メディ…

The type signature for ‘factorial’ lacks an accompanying binding

参考書とかで以下のコードをghciで入力しようと、タイトルのようなエラーがでると思います。 うまくいかないときはファイルに書いてロードするといい。 factorial :: Int -> Int factorial 0 = 1 factorial n = n * factorial(n-1)ghciで上のコード一行ずつ…

Haskellメモ

■型クラス Prelude> :t (==) (==) :: Eq a => a -> a -> Bool=>の前にあるのが型クラス制約というもので、"型aはEq型でないといけない"ことを意味する。 なので、全体では"==は同じ型aの引数をとって、型aをとってBOOLを返す関数です。そして型aはEq型のイン…

めも

Humble Object at XUnitPatterns.com Example: Humble DialogMany development environments let us build the user interface visually by dragging and dropping various visual objects ("widgets") onto a canvas. 多くの開発環境では、さまざまなビジュ…

Humble Object

Humble Object at XUnitPatterns.com 非同期プログラミング - 非同期コードの単体テスト: テストを容易にする 3 つの解決策 Humble Object はインスタンス化することが難しいオブジェクトを、効率的にテストするための考え方です。(詳細は上記リンクを参照デ…

負の継承への対応(2)

負の継承への対応を具体的にまとめていく まず、共通性を侵すことなく可変性を扱う場合は、とくに問題なくあつかえるという前提です。 また、負の可変性は正の可変性と対応した技術で実現します。例えば、正の可変性をテンプレートで 実現した場合は、負の可…

負の継承への対応

■前置き オブジェクト指向言語では、継承がサポートされているが、継承には2種類存在する。 ・正の継承:Liskovの置換原則を守る継承 ・負の継承:上記を守れないような継承 親クラスで定義されたモノは、継承関係で共通の領域とみなされる。これを侵害する…

DI依存性注入

依存性の注入(Wikipediaから抜粋すると) 依存性の注入(いそんせいのちゅうにゅう、英: Dependency injection)とは、コンポーネント間の依存関係をプログラムのソースコードから排除し、 外部の設定ファイルなどで注入できるようにするソフトウェアパターン…

ソフトウェアテスト(統合テストとユニットテスト) 覚書

■統合テスト 複数の層を1つに繋げるテストを指す。 できること - UIテストで見つけにくい下位の不具合、最下層のユニットテストでは見つからない不具合を検出できる → 複数の部品がちゃんとつながっていることを確認できる■ユニットテスト ※はじめにUIテスト…

ユーザーストーリマッピング覚書 2018/01/02

ユーザーストーリマッピングを読んでいるので覚書■ユーザーストーリーって何? ・ユーザーストーリを作るのは何のためか プロジェクトに関わる人間が作るものに対して共通理解を保つため → 実際のプロジェクトはできの悪い伝言ゲームのように皆が違うことを…

SOLID原則:4つ目 インターフェース分離の原則(ISP:Interface Segregation Principle)

〇インターフェース分離の原則(ISP:Interface Segregation Principle) クライアントにクライアント利用しないメソッドへの依存を強制してはならないあなたがある機能を実現するモジュールを作成しているとして、そのモジュールが外部に公開しているIFを見る…

SOLID原則:5つ目 依存関係逆転の原則(DIP:The Dependency Inversion Principle)

〇依存関係逆転の原則(DIP:The Dependency Inversion Principle) 上位のモジュールは下位のモジュールに依存してはならない。どちらのモジュールも「抽象」に依存すべきである 「抽象」は実装の詳細に依存してはならない。実装の詳細が「抽象」に依存すべき…

GenICam:ノードについて

GenICam規格のノード説明のメモ http://www.emva.org/wp-content/uploads/GenICam_Standard_v2_0.pdf■ノードについて Something vendor specific The amplification of the camera A more elborated description Gain Expert 12fc SomeNode1 SomeNode2 SomeN…

SOLID原則:3つ目 リスコフの置換原則(LSP:Liskov-Substitution Principle)

〇リスコフの置換原則(LSP:Liskov-Substitution Principle) 派生型は基本型と置換可能でなければならない上の意味だけ聞いてもなんのこっちゃとなるとおもうのですが、 リスコフの置換原則に反したケースを皆さん見たことがあると思います。 class MainScre…

SOLID原則:2つ目 オープン・クローズドの原則(OCP:Open-Closed Principle)

〇オープン・クローズドの原則(OCP:Open-Closed Principle) 1.拡張に対して開かれている 2.修正に対して閉じている1つ目はモジュールの振る舞いを変更できること、2つ目はモジュールの振る舞いを拡張しても、 そのモジュールのソースコードやバイナリは影響…

SOLID原則:1つ目 単一責任の原則(SRP:Single Responsibility Principle)

〇まえおきソフトウェアの開発に携わっっている方なら、ひどいコードの保守にあたって、 心身がとても疲れた経験はあると思うし、自分が作ったコードが人を大変な目に 会わせたことはあるんじゃないかと思います。 それらのコードは作ったときはヒドイコード…

placement new(確保済みアドレスを指定する)について

placement newという通常のnewと異なるメモリアロケート方法があり、 通常のnewに比べて、以下の利点がある。 ・メモリアロケートの時間が短縮される ・メモリアロケートの例外が発生しないように制御できる■使い方 通常のnewと違い明示的にデストラクタを呼…

改行文字の有無判定と修正

与えられた文字列に対して、改行文字の有無を判断し、 改行文字がない場合は改行文字を追加するという関数を 作りたい。 ★の部分で詰まる改行文字を追加しないといけないけどどうすればできる? string使うとかはなし、古いコードでデバッグ文字に改行有無が…

データベースについて

仕事で1年目にデータベースを使っていたけど、復習のために再勉強。 ■主キー DB上のデータのタプル(データ構造を示す組のこと→行ともいう)を一意に示すことができるキーをいう。複数の列(属性)で構成されうこともある。 ・一意静制約 ・非NULL制約 ■候補キー…

UMTP L2合格しました

UMTP L2 合格しました。 以下の参考書の意味が分かっていれば合格できます。あとは黒本で過去問を2回位とけばいける感じ。 UML モデリングのエッセンス 第3版 (Object Oriented SELECTION) 作者: マーチン・ファウラー,羽生田栄一 出版社/メーカー: 翔泳社 …

UMLについて モデリング

■モデリングの種類 ・ビジネスモデリング システム化対象の業務(ビジネス)をモデル化する。主に業務の流れをモデル化には、アクテビティ図、業務用語からの関連データ抽出には、クラス図が利用される。 ・要求分析モデリング システムに対する要求をモデル化…

UMLプロファイル

UMLプロファイルは特定ドメイン向けに、UMLの記法を拡張する拡張セットのこと。 以下の3つから提供される。 ・ステレオタイプ 要素に具体的な役割を与える。«boundary»、«control»、«entity»などをつけると、その要素の役割がすぐわかるし、違う役割の要素も…

UMLについて 2017/02/12

勘違いや間違いがあったので、備忘録... ・UMLに独自の図を追加して使うことはできない。 UMLの仕様はOMG(Object Management Group:オブジェクト指向技術の標準化を行なう団体)が決めているので、この仕様にない図を使ったものはUMLとは認められない。 拡張…

パッケージ図 その2

パッケージを描くときは、パッケージ間の依存関係を意識する。具体的には、単一方向に依存が付くような場合が望ましい。 例外はあって、Mapperパターンのデータマッパーなどは、データを管理する層とロジックの層の橋渡しをするため両方から依存が付く。 橋…

パッケージ図

■パッケージ図 クラスをグルーピングする構成要素です。グルーピングの基準では、以下に注意する。 ・閉鎖性共通の原則(Common Closure Principle) 1つのパッケージ内のクラスは、同じような理由で変更されるべきという原則 ・全再利用の原則(Common Reuse P…

クラス図について... その3

■分類と汎化 よく汎化のことを、ia-a関係というが注意しないといけないことがある。 それは以下のいずれもia-a関係であるということ。 ・分類:ポチはボーダーコリーです。(ポチ is ボーダーコリー) ・汎化:ボーダーコリーは血統です。(ボーダーコリー is 血…