ブログでもいろいろ解説しています。
http://little-hands.hatenablog.com/entry/top
ドメイン駆動設計屈指の難解な概念「境界付けられたコンテキスト」について解説します。
---
公式DDD Referenceの定義は以下の通りです。(和訳はだいぶ意訳しています)
bounded context
A description of a boundary (typically a subsystem, or the work of a particular team) within which a particular model is defined and applicable.
境界付けられたコンテキスト
特定のモデルを定義?適用する境界を明示的に示したもの。
代表的な境界の例は、サブシステムやチームなど。
まぁなかなかよくわからないですよね。DDD用語の中でもかなり難解なワードです。 境界付けられたコンテキストは、2つの観点から解説が必要でしょう。
?概念としての境界付けられたコンテキスト
?境界付けられたコンテキストをどう実装に落としこむか
今回のスライドでは、概念の方の説明をしたいと思います。
The document summarizes various techniques for automated software testing using fuzzing, including coverage-based fuzzing (AFL), directed greybox fuzzing (AflGO), and neural network-based approaches (FuzzGuard). It discusses how genetic algorithms and simulated annealing are used in AFL and AflGO respectively to guide test case mutation towards new code areas. It also provides examples of vulnerabilities found using these fuzzing tools.
ブログでもいろいろ解説しています。
http://little-hands.hatenablog.com/entry/top
ドメイン駆動設計屈指の難解な概念「境界付けられたコンテキスト」について解説します。
---
公式DDD Referenceの定義は以下の通りです。(和訳はだいぶ意訳しています)
bounded context
A description of a boundary (typically a subsystem, or the work of a particular team) within which a particular model is defined and applicable.
境界付けられたコンテキスト
特定のモデルを定義?適用する境界を明示的に示したもの。
代表的な境界の例は、サブシステムやチームなど。
まぁなかなかよくわからないですよね。DDD用語の中でもかなり難解なワードです。 境界付けられたコンテキストは、2つの観点から解説が必要でしょう。
?概念としての境界付けられたコンテキスト
?境界付けられたコンテキストをどう実装に落としこむか
今回のスライドでは、概念の方の説明をしたいと思います。
The document summarizes various techniques for automated software testing using fuzzing, including coverage-based fuzzing (AFL), directed greybox fuzzing (AflGO), and neural network-based approaches (FuzzGuard). It discusses how genetic algorithms and simulated annealing are used in AFL and AflGO respectively to guide test case mutation towards new code areas. It also provides examples of vulnerabilities found using these fuzzing tools.
「C言語のポインタ(型の変数)は、可変長配列を扱うために使う」という点に絞って、50分間程度の解説をしています。
最終的に下記の12行のプログラムを47分間使って解説します。
(7行目、11行目の”<”は除いています)
1: int size = N;
2: int x[size];
3: int *p;
4:
5: p = x;
6:
7: for ( int = 0; i size; i++)
8: p[i] = i;
9:
10: int y = 0
11: for ( int i = 0; i size; i++)
12: y = y + p[i];
https://www.youtube.com/watch?v=KLFlk1dohKQ&t=1496s
1. The model is a polynomial regression model that fits a polynomial function to the training data.
2. The loss function used is the sum of squares of the differences between the predicted and actual target values.
3. The optimizer used is GradientDescentOptimizer which minimizes the loss function to fit the model parameters.
38. 連結リストの操作:初期化後
struct CELL {
struct CELL *next;
int value;
} header;
insert(int a)
{
struct CELL *p, *q, *new;
p = header.next;
q = &header:
while(p != NULL && a > p->value) {
q = p;
p = p->next;
}
}
- 2 5 7 12
q p
header
始めのセルは連結リスト自身を表すための
ダミーで、次のセルへのポインタはあるが、
値は入らない。
39. 連結リストの操作:a=4(途中)
- 2 5 7 12
q p
4
new
if((new = malloc(sizeof(struct CELL))) = NULL)
fatal_error(メモリがたりない)
① new->next = p;
② new->value = a;
③ q->next = new;
①
③ ②
struct CELL {
struct CELL *next;
int value;
} header;
境界条件ではない
40. 連結リストの操作:a = 1(先頭)
- 2 5 7 12
q p
1
new
if((new = malloc(sizeof(struct CELL))) = NULL)
fatal_error(メモリがたりない)
① new->next = p;
② new->value = a;
③ q->next = new;
①
③
②
struct CELL {
struct CELL *next;
int value;
} header; 境界条件1
41. 連結リストの操作:a=15(末尾)
- 2 5 7 12
q
p = NULL
15
new
if((new = malloc(sizeof(struct CELL))) = NULL)
fatal_error(メモリがたりない)
① new->next = p;
② new->value = a;
③ q->next = new;
③
②
①
struct CELL {
struct CELL *next;
int value;
} header;
境界条件2
42. 連結リストの操作:空リストに2を挿入
-
q p=NULL
- 2
q p=NULL
new
if((new = malloc(sizeof(struct CELL))) = NULL)
fatal_error(メモリがたりない)
① new->next = p;
② new->value = a;
③ q->next = new;
②
③
①
struct CELL {
struct CELL *next;
int value;
} header; 境界条件3