From 7fd2e0bccfa11bc2a95c1e2edc0e03e45c23a06d Mon Sep 17 00:00:00 2001 From: Stefan Johansson Date: Sat, 27 Apr 2024 13:13:40 +1000 Subject: [PATCH 1/2] md review minor clean, tangential to the work on the other docs sites --- docs/build.bat | 13 ++++++++++ docs/faq/index.md | 14 +++++------ docs/handlebars/extension_exists.md | 6 ++--- docs/handlebars/extension_lookupextension.md | 6 ++--- docs/handlebars/extension_now.md | 4 ++-- docs/handlebars/extension_randomdate.md | 6 ++--- docs/handlebars/extension_randomnumber.md | 6 ++--- docs/handlebars/extension_randomstring.md | 6 ++--- docs/handlebars/extension_replicate.md | 6 ++--- docs/handlebars/extension_space.md | 6 ++--- docs/handlebars/extension_stringcompare.md | 6 ++--- docs/handlebars/extension_stringdiff.md | 6 ++--- docs/handlebars/extension_stringreplace.md | 6 ++--- docs/handlebars/extension_stringwrap.md | 6 ++--- .../extension_targetdataitemexists.md | 6 ++--- docs/index.md | 2 +- docs/overview/Index.md | 10 ++++---- docs/overview/getting-started.md | 24 +++++++++---------- docs/serve.bat | 2 ++ 19 files changed, 78 insertions(+), 63 deletions(-) create mode 100644 docs/build.bat create mode 100644 docs/serve.bat diff --git a/docs/build.bat b/docs/build.bat new file mode 100644 index 0000000..d1e8ed6 --- /dev/null +++ b/docs/build.bat @@ -0,0 +1,13 @@ +@echo off + +REM Make sure we're running this from the context of the script file location +pushd %~dp0 + +REM Build through docfx, using the docfx.json configuration file +REM This will generate the static site in the _site folder +REM note that docfx needs to be installed and available in the PATH + +REM Install docfx: dotnet tool install -g docfx +REM Docos: https://dotnet.github.io/docfx/tutorial/docfx_getting_started.html + +docfx docfx.json diff --git a/docs/faq/index.md b/docs/faq/index.md index a16f80b..2ff5468 100644 --- a/docs/faq/index.md +++ b/docs/faq/index.md @@ -2,7 +2,7 @@ ## Why have a schema definition for Data Warehouse Automation? -The reason work on the schema definition started is based on a desire to collaborate with various likeminded professionals in the industry, but who all had different (proprietary) ways to record metadata. The challenge was how to collaborate on at least the patterns, without necessarily agreeing on ‘the best’ back-end solution to store metadata. +The reason work on the schema definition started is based on a desire to collaborate with various like-minded professionals in the industry, but who all had different (proprietary) ways to record metadata. The challenge was how to collaborate on at least the patterns, without necessarily agreeing on ‘the best’ back-end solution to store metadata. The interface for Data Warehouse Automation was started as an initiative that would support each to use the back-end of their choosing, while still be able to cooperate on the design and improvement of Data Warehouse implementation patterns and ETL generation concepts. @@ -16,11 +16,11 @@ The decision to start the format with an array / list that contains potentially For example, consider the loading of a Core Business Concept (‘Hub’) type entity from various different data sources. If you would use these different mappings to generate ETL processes you would create one physical ETL object for each mapping. However, if you are seeking to generate a view that represents the target table you would use the collection (list) of mappings to generate separate statements that are 'unioned' in a single view object. -Example: [https://github.com/RoelantVos/Data-Warehouse-Automation-Metadata-Schema/blob/master/ClassLibrary/DataWarehouseAutomation/Sample_Metadata/sampleBasic.json]. +Example: [https://github.com/RoelantVos/Data-Warehouse-Automation-Metadata-Schema/blob/master/ClassLibrary/DataWarehouseAutomation/Sample_Metadata/sampleBasic.json](https://github.com/RoelantVos/Data-Warehouse-Automation-Metadata-Schema/blob/master/ClassLibrary/DataWarehouseAutomation/Sample_Metadata/sampleBasic.json). Or below, an even more simplified example of a single Data Object Mapping (with only one source, one target and a single Data Item Mapping) being part of the list dataObjectMappings. -````json +```json { "dataObjectMappings": [ { @@ -48,7 +48,7 @@ Or below, an even more simplified example of a single Data Object Mapping (with } ] } -````` +``` ## Why are Data Objects and Data Items defined as arrays when they are used as sources? @@ -58,7 +58,7 @@ The downside is that either a loop or array index needs to be used to pinpoint t Example: using Handlebars will give you the name of the first source object: -```JSON +```handlebars {{sourceDataObjects.0.name}} ``` @@ -76,7 +76,7 @@ The easiest way to get started is to either copy and modify the example project, A simple C# example to generate some quick ETL (taken from the example project): -```json +```cs // Load a template (pattern) from file stringTemplate = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + @"..\\..\\TemplateSampleBasic.handlebars"); @@ -94,4 +94,4 @@ result = template(deserialisedMapping); // Display the results to the user Console.WriteLine(result); -`````` +``` diff --git a/docs/handlebars/extension_exists.md b/docs/handlebars/extension_exists.md index 2733a89..1dbdf05 100644 --- a/docs/handlebars/extension_exists.md +++ b/docs/handlebars/extension_exists.md @@ -8,13 +8,13 @@ Only the *multiActiveKey* and *targetDataItem* properties are currently supporte ## Usage -``` handlebars +```handlebars {{#exists "" ""}} ``` ## Example -``` handlebars +```handlebars {{#exists multiActiveKey}}There is a multi-active key!{{else}}No multi-active key is found in this data object mapping.{{/exists}} {{#exists multiActiveKey "DATE_OF_BIRTH"}}There is a multi-active key which is not DATE_OF_BIRTH{{else}}No multi-active key with DATE_OF_BIRTH is found in this data object mapping.{{/exists}} {{#exists targetDataItem}}There is a target data item in this mapping!{{else}}No target data items are defined in this mapping.{{/exists}} @@ -22,7 +22,7 @@ Only the *multiActiveKey* and *targetDataItem* properties are currently supporte Depending on the metadata, this may result in: -```dotnetcli +```text There is a multi-active key! No multi-active key with DATE_OF_BIRTH is found in this data object mapping. There is a target data item in this mapping! diff --git a/docs/handlebars/extension_lookupextension.md b/docs/handlebars/extension_lookupextension.md index a20ca62..b2ddfee 100644 --- a/docs/handlebars/extension_lookupextension.md +++ b/docs/handlebars/extension_lookupextension.md @@ -8,18 +8,18 @@ Pass in the extensions list and the string key value. ## Usage -``` handlebars +```handlebars {{lookupExtension ""}} ``` ## Example -``` handlebars +```handlebars The lookup value for the 'type' extension is '{{lookupExtension sourceDataObjects.0.extensions "type"}}'. ``` Depending on the metadata, this may result in: -```dotnetcli +```text The lookup value for the 'type' extension is 'procedure'. ``` diff --git a/docs/handlebars/extension_now.md b/docs/handlebars/extension_now.md index b3f8d1a..422b7d7 100644 --- a/docs/handlebars/extension_now.md +++ b/docs/handlebars/extension_now.md @@ -4,13 +4,13 @@ Get the date and time at the moment of execution. ## Usage -``` handlebars +```handlebars {{now}} ``` ## Example -``` handlebars +```handlebars The time is {{now}}. ``` diff --git a/docs/handlebars/extension_randomdate.md b/docs/handlebars/extension_randomdate.md index 12c416c..bcaf248 100644 --- a/docs/handlebars/extension_randomdate.md +++ b/docs/handlebars/extension_randomdate.md @@ -6,18 +6,18 @@ This was originally added to generate test data, and is used for referential-int ## Usage -``` handlebars +```handlebars {{randomdate 2020}} ``` ## Example -``` handlebars +```handlebars Here is a random date: {{randomdate 2020}}. ``` This may return: -```dotnetcli +```text 2022-08-03T00:00:00.000000 ``` diff --git a/docs/handlebars/extension_randomnumber.md b/docs/handlebars/extension_randomnumber.md index 819abfc..4cd6bbe 100644 --- a/docs/handlebars/extension_randomnumber.md +++ b/docs/handlebars/extension_randomnumber.md @@ -6,18 +6,18 @@ This was originally added to generate test data, and is used for referential-int ## Usage -``` handlebars +```handlebars {{randomnumber 5}} ``` ## Example -``` handlebars +```handlebars And here is a random string: {{randomnumber 5}}. ``` This may return: -```dotnetcli +```text 1346 ``` diff --git a/docs/handlebars/extension_randomstring.md b/docs/handlebars/extension_randomstring.md index 2eea975..6df7606 100644 --- a/docs/handlebars/extension_randomstring.md +++ b/docs/handlebars/extension_randomstring.md @@ -4,18 +4,18 @@ Generate a random string no longer than the provided characters as integer input ## Usage -``` handlebars +```handlebars {{randomstring 10}} ``` ## Example -``` handlebars +```handlebars And here is a random string: {{randomstring 10}}. ``` This returns: -```dotnetcli +```text Cg8uKuBFS5 ``` diff --git a/docs/handlebars/extension_replicate.md b/docs/handlebars/extension_replicate.md index 25e279c..d475311 100644 --- a/docs/handlebars/extension_replicate.md +++ b/docs/handlebars/extension_replicate.md @@ -6,13 +6,13 @@ This is often used to generate test data. ## Usage -``` handlebars +```handlebars {{#replicate 10}} ``` ## Example -``` handlebars +```handlebars {{#replicate 3}} This value is replicated 3 times! {{/replicate}} @@ -20,7 +20,7 @@ This value is replicated 3 times! This returns: -```dotnetcli +```text This value is replicated 3 times! This value is replicated 3 times! This value is replicated 3 times! diff --git a/docs/handlebars/extension_space.md b/docs/handlebars/extension_space.md index 5cfaa67..abcd7a6 100644 --- a/docs/handlebars/extension_space.md +++ b/docs/handlebars/extension_space.md @@ -4,18 +4,18 @@ Space will space out (!?) the name of the input value to 30 characters using tab ## Usage -``` handlebars +```handlebars {{space ""}} ``` ## Example -``` handlebars +```handlebars This is {{space "Hello World"}} ...spaced out. ``` This results in: -```dotnetcli +```text This is Hello World ...spaced out. ``` diff --git a/docs/handlebars/extension_stringcompare.md b/docs/handlebars/extension_stringcompare.md index eecb5e4..141f3e4 100644 --- a/docs/handlebars/extension_stringcompare.md +++ b/docs/handlebars/extension_stringcompare.md @@ -4,18 +4,18 @@ Block helper to evaluate if the input matches a specified string. Also optionall ## Usage -``` handlebars +```handlebars {{#stringcompare string1 string2}} do something {{else}} do something else {{/stringcompare}} ``` ## Example -``` handlebars +```handlebars A and B {{#stringcompare "A" "B"}}are the same. {{else}}are not the same. {{/stringcompare}} ``` This results in: -```dotnetcli +```text A and B are not the same. ``` diff --git a/docs/handlebars/extension_stringdiff.md b/docs/handlebars/extension_stringdiff.md index f078874..d3f3617 100644 --- a/docs/handlebars/extension_stringdiff.md +++ b/docs/handlebars/extension_stringdiff.md @@ -4,18 +4,18 @@ Block helper to evaluate if the input does *not* match a specified string. Also ## Usage -``` handlebars +```handlebars {{#stringdiff string1 string2}} do something {{else}} do something else {{/stringdiff}} ``` ## Example -``` handlebars +```handlebars A and B {{#stringdiff "A" "B"}}are not the same. {{else}}are the same. {{/stringdiff}} ``` This results in: -```dotnetcli +```text A and B are not the same. ``` diff --git a/docs/handlebars/extension_stringreplace.md b/docs/handlebars/extension_stringreplace.md index 51d6a6b..e26bf6f 100644 --- a/docs/handlebars/extension_stringreplace.md +++ b/docs/handlebars/extension_stringreplace.md @@ -4,18 +4,18 @@ Parses an input string value, and replaces a specified part of the contents with ## Usage -``` handlebars +```handlebars {{stringreplace "" "" ""}} ``` ## Example -``` handlebars +```handlebars This replaces the o's in Hello Word with an !: {{StringReplace "Hello World" "o" "!"}} ``` This results in: -```dotnetcli +```text This replaces the o's in Hello Word with an !: Hell! W!rld ``` diff --git a/docs/handlebars/extension_stringwrap.md b/docs/handlebars/extension_stringwrap.md index ff37a9b..f7ff5b2 100644 --- a/docs/handlebars/extension_stringwrap.md +++ b/docs/handlebars/extension_stringwrap.md @@ -4,18 +4,18 @@ Wraps an input character string with two specified characters. ## Usage -``` handlebars +```handlebars {{stringwrap "" ""}} ``` ## Example -``` handlebars +```handlebars This adds brackets around the string value: {{stringwrap "Example" "[" "]"}} ``` This results in: -```dotnetcli +```text [Example] ``` diff --git a/docs/handlebars/extension_targetdataitemexists.md b/docs/handlebars/extension_targetdataitemexists.md index dc88647..820f7ab 100644 --- a/docs/handlebars/extension_targetdataitemexists.md +++ b/docs/handlebars/extension_targetdataitemexists.md @@ -8,18 +8,18 @@ This is used in some cases to handle special column names. ## Usage -``` handlebars +```handlebars {{stringwrap ""}} ``` ## Example -``` handlebars +```handlebars {{#targetDataItemExists "FIRST_NAME"}}FIRST_NAME exists{{else}}FIRST_NAME does not exist{{/targetDataItemExists}} ``` This results in: -```dotnetcli +```text FIRST_NAME exists ``` diff --git a/docs/index.md b/docs/index.md index 7d2b194..1720c4e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -38,4 +38,4 @@ Across most, if not all, metadata models there is a core set of information that ### Working guidelines -For any change, create a new branch (no direct commits to master branch). +For any change, create a new branch (no direct commits to main branch). diff --git a/docs/overview/Index.md b/docs/overview/Index.md index 5234857..0fdbb64 100644 --- a/docs/overview/Index.md +++ b/docs/overview/Index.md @@ -13,7 +13,7 @@ The schema definition can be directly viewed [here](https://github.com/RoelantVo * A sample implementation that generates code using [Handlebars.Net](http://roelantvos.com/blog/using-handlebars-to-generate-data-vault-hub-load-processes/). The example that uses the Handlebars generates code using a sample JSON file that conforms to the interface schema. * A simple regression test application that demonstrates different usages of the schema. -The schema is and examples are validated / extended using . Standards are followed from [json-schema.org](http://json-schema.org/). Also see [some miscellaneous examples](http://json-schema.org/learn/miscellaneous-examples.html). +The schema is and examples are validated / extended using [https://www.jsonschemavalidator.net/](https://www.jsonschemavalidator.net/). Standards are followed from [json-schema.org](http://json-schema.org/). Also see [some miscellaneous examples](http://json-schema.org/learn/miscellaneous-examples.html). In principle, the schema can be used to generate an entire Data Warehouse, Data Lake and equivalent and/or similar. @@ -21,7 +21,7 @@ In principle, the schema can be used to generate an entire Data Warehouse, Data The JSON schema for data solution automation has standard components for table (DataObjects) and column (DataItem) structures that are reused for sources and targets. At the mapping level only the classification, filter and load direction are added, the rest is generic reuse of definitions. -The schema is available in the GitHub under: https://github.com/RoelantVos/Data_Warehouse_Automation_Metadata_Interface. +The schema is available in the GitHub under: [https://github.com/RoelantVos/Data_Warehouse_Automation_Metadata_Interface](https://github.com/RoelantVos/Data_Warehouse_Automation_Metadata_Interface). The schema definition itself is located here: [https://github.com/data-solution-automation-engine/data-warehouse-automation-metadata-schema/blob/main/GenericInterface/interfaceDataWarehouseAutomationMetadataV2_0.json](https://github.com/data-solution-automation-engine/data-warehouse-automation-metadata-schema/blob/main/GenericInterface/interfaceDataWarehouseAutomationMetadataV2_0.json). @@ -35,8 +35,8 @@ The Data Object Mapping is literally a mapping between Data Objects. It is a uni At a high level there are two elements that form the core of a Data Object Mapping, these are the: -- Data Object, which defines the source and target of the Data Object Mapping. A Data Object can optionally have a connection defined as a string or token, and can be a query, file or table. -- Data Item, which belong to a Data Object and represents an individual column or calculation (query) in a Data Object Mapping. +* Data Object, which defines the source and target of the Data Object Mapping. A Data Object can optionally have a connection defined as a string or token, and can be a query, file or table. +* Data Item, which belong to a Data Object and represents an individual column or calculation (query) in a Data Object Mapping. ![img](http://roelantvos.com/blog/wp-content/uploads/2020/01/DataObject-3-1024x466.png) @@ -62,7 +62,7 @@ By combining this, the Data Object Mapping looks as follows at a high level: At the top level, one or more Data Object Mappings are grouped into a single Data Object Mapping List. The convention is that, even though only a single Data Object Mapping may be needed in a message or file, a Data Object Mapping is *always* part of a Data Object Mapping List. -In other words, the Data Object Mapping List is an array of individual Data Object Mappings. In code, this means a Data Object Mapping List is defined as a List. +In other words, the Data Object Mapping List is an array of individual Data Object Mappings. In code, this means a Data Object Mapping List is defined as a `List`. The decision to start the format with an array / list that contains potentially multiple Data Object Mappings relates to the Data Warehouse virtualisation use-case. In this style of implementation, multiple individual mappings together create a single view object. Testing revealed it is much harder to piece the relationships between mappings together at a later stage to create a single (view) object, and having the option to define a collection makes this really easy. diff --git a/docs/overview/getting-started.md b/docs/overview/getting-started.md index 80cb06d..dc9a3ab 100644 --- a/docs/overview/getting-started.md +++ b/docs/overview/getting-started.md @@ -28,7 +28,7 @@ With these three components in place, code can be generated quickly using a simp Consider the snippet below, as taken from the example project: -```csharp +```cs // Load a template (pattern) from file stringTemplate = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + @"..\..\TemplateSampleBasic.handlebars"); @@ -56,7 +56,7 @@ This project is used for regression testing, making sure that the inputs and out Validating Json files against the generic schema is easy, a method is provided as part of the JsonHandling class included in the DataWarehouseAutomation.dll. Consider the example below, where a filename (including path) for the schema definition as well as a Json file are provided. -``` csharp +```cs var result = JsonHandling.ValidateJsonFileAgainstSchema(jsonSchema, jsonFile); var testOutput = result.Valid ? "OK" : "Failed"; @@ -66,13 +66,13 @@ Console.Write($"The result for {jsonFile} was {testOutput}."); ## Further reading -* http://roelantvos.com/blog/fun-with-code-generation-patterns-extensions/] -* http://roelantvos.com/blog/major-improvements-to-the-data-warehouse-automation-schema-definition/ -* http://roelantvos.com/blog/interface-for-data-warehouse-automation/ -* http://roelantvos.com/blog/a-collaboration-for-a-common-metadata-model/ -* http://roelantvos.com/blog/updates-on-the-generic-interface-for-data-warehouse-automation-metadata/ -* http://roelantvos.com/blog/improvements-on-dwh-automation-interface-v1-1/ -* http://roelantvos.com/blog/interface-for-data-warehouse-automation-metadata-released/ -* http://roelantvos.com/blog/fun-with-code-generation-patterns-multiple-sources/ -* http://roelantvos.com/blog/fun-with-code-generation-patterns-transformations/ -* http://roelantvos.com/blog/fun-with-code-generation-patterns-extensions/ \ No newline at end of file +* [http://roelantvos.com/blog/fun-with-code-generation-patterns-extensions/](http://roelantvos.com/blog/fun-with-code-generation-patterns-extensions/) +* [http://roelantvos.com/blog/major-improvements-to-the-data-warehouse-automation-schema-definition/](http://roelantvos.com/blog/major-improvements-to-the-data-warehouse-automation-schema-definition/) +* [http://roelantvos.com/blog/interface-for-data-warehouse-automation/](http://roelantvos.com/blog/interface-for-data-warehouse-automation/) +* [http://roelantvos.com/blog/a-collaboration-for-a-common-metadata-model/](http://roelantvos.com/blog/a-collaboration-for-a-common-metadata-model/) +* [http://roelantvos.com/blog/updates-on-the-generic-interface-for-data-warehouse-automation-metadata/](http://roelantvos.com/blog/updates-on-the-generic-interface-for-data-warehouse-automation-metadata/) +* [http://roelantvos.com/blog/improvements-on-dwh-automation-interface-v1-1/](http://roelantvos.com/blog/improvements-on-dwh-automation-interface-v1-1/) +* [http://roelantvos.com/blog/interface-for-data-warehouse-automation-metadata-released/](http://roelantvos.com/blog/interface-for-data-warehouse-automation-metadata-released/) +* [http://roelantvos.com/blog/fun-with-code-generation-patterns-multiple-sources/](http://roelantvos.com/blog/fun-with-code-generation-patterns-multiple-sources/) +* [http://roelantvos.com/blog/fun-with-code-generation-patterns-transformations/](http://roelantvos.com/blog/fun-with-code-generation-patterns-transformations/) +* [http://roelantvos.com/blog/fun-with-code-generation-patterns-extensions/](http://roelantvos.com/blog/fun-with-code-generation-patterns-extensions/) diff --git a/docs/serve.bat b/docs/serve.bat new file mode 100644 index 0000000..687ec20 --- /dev/null +++ b/docs/serve.bat @@ -0,0 +1,2 @@ +rem # Host on http://localhost:8081/ +docfx docfx.json --serve -p 8081 From 5bdbc70bf364015db8c5c79a72b1a124d9f9f822 Mon Sep 17 00:00:00 2001 From: Stefan Johansson Date: Sat, 27 Apr 2024 13:24:50 +1000 Subject: [PATCH 2/2] spin all links/refs as https --- docs/overview/Index.md | 8 ++++---- docs/overview/getting-started.md | 20 ++++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/overview/Index.md b/docs/overview/Index.md index 0fdbb64..4c11081 100644 --- a/docs/overview/Index.md +++ b/docs/overview/Index.md @@ -10,10 +10,10 @@ The schema definition can be directly viewed [here](https://github.com/RoelantVo * A simple Class Library (DLL) that has implemented the schema structure, as well as a validation function to test JSON files / messages against the schema * Starter documentation. -* A sample implementation that generates code using [Handlebars.Net](http://roelantvos.com/blog/using-handlebars-to-generate-data-vault-hub-load-processes/). The example that uses the Handlebars generates code using a sample JSON file that conforms to the interface schema. +* A sample implementation that generates code using [Handlebars.Net](https://roelantvos.com/blog/using-handlebars-to-generate-data-vault-hub-load-processes/). The example that uses the Handlebars generates code using a sample JSON file that conforms to the interface schema. * A simple regression test application that demonstrates different usages of the schema. -The schema is and examples are validated / extended using [https://www.jsonschemavalidator.net/](https://www.jsonschemavalidator.net/). Standards are followed from [json-schema.org](http://json-schema.org/). Also see [some miscellaneous examples](http://json-schema.org/learn/miscellaneous-examples.html). +The schema is and examples are validated / extended using [https://www.jsonschemavalidator.net/](https://www.jsonschemavalidator.net/). Standards are followed from [json-schema.org](https://json-schema.org/). Also see [some miscellaneous examples](https://json-schema.org/learn/miscellaneous-examples.html). In principle, the schema can be used to generate an entire Data Warehouse, Data Lake and equivalent and/or similar. @@ -38,7 +38,7 @@ At a high level there are two elements that form the core of a Data Object Mappi * Data Object, which defines the source and target of the Data Object Mapping. A Data Object can optionally have a connection defined as a string or token, and can be a query, file or table. * Data Item, which belong to a Data Object and represents an individual column or calculation (query) in a Data Object Mapping. -![img](http://roelantvos.com/blog/wp-content/uploads/2020/01/DataObject-3-1024x466.png) +![img](https://roelantvos.com/blog/wp-content/uploads/2020/01/DataObject-3-1024x466.png) ## Mapping metadata @@ -56,7 +56,7 @@ It is possible to add a specific class to a Data Object Mapping: the Business Ke By combining this, the Data Object Mapping looks as follows at a high level: -![img](http://roelantvos.com/blog/wp-content/uploads/2020/01/DataObjectMapping-1024x453.png) +![img](https://roelantvos.com/blog/wp-content/uploads/2020/01/DataObjectMapping-1024x453.png) ## Mapping collections diff --git a/docs/overview/getting-started.md b/docs/overview/getting-started.md index dc9a3ab..6ae8ab9 100644 --- a/docs/overview/getting-started.md +++ b/docs/overview/getting-started.md @@ -66,13 +66,13 @@ Console.Write($"The result for {jsonFile} was {testOutput}."); ## Further reading -* [http://roelantvos.com/blog/fun-with-code-generation-patterns-extensions/](http://roelantvos.com/blog/fun-with-code-generation-patterns-extensions/) -* [http://roelantvos.com/blog/major-improvements-to-the-data-warehouse-automation-schema-definition/](http://roelantvos.com/blog/major-improvements-to-the-data-warehouse-automation-schema-definition/) -* [http://roelantvos.com/blog/interface-for-data-warehouse-automation/](http://roelantvos.com/blog/interface-for-data-warehouse-automation/) -* [http://roelantvos.com/blog/a-collaboration-for-a-common-metadata-model/](http://roelantvos.com/blog/a-collaboration-for-a-common-metadata-model/) -* [http://roelantvos.com/blog/updates-on-the-generic-interface-for-data-warehouse-automation-metadata/](http://roelantvos.com/blog/updates-on-the-generic-interface-for-data-warehouse-automation-metadata/) -* [http://roelantvos.com/blog/improvements-on-dwh-automation-interface-v1-1/](http://roelantvos.com/blog/improvements-on-dwh-automation-interface-v1-1/) -* [http://roelantvos.com/blog/interface-for-data-warehouse-automation-metadata-released/](http://roelantvos.com/blog/interface-for-data-warehouse-automation-metadata-released/) -* [http://roelantvos.com/blog/fun-with-code-generation-patterns-multiple-sources/](http://roelantvos.com/blog/fun-with-code-generation-patterns-multiple-sources/) -* [http://roelantvos.com/blog/fun-with-code-generation-patterns-transformations/](http://roelantvos.com/blog/fun-with-code-generation-patterns-transformations/) -* [http://roelantvos.com/blog/fun-with-code-generation-patterns-extensions/](http://roelantvos.com/blog/fun-with-code-generation-patterns-extensions/) +* [https://roelantvos.com/blog/fun-with-code-generation-patterns-extensions/](https://roelantvos.com/blog/fun-with-code-generation-patterns-extensions/) +* [https://roelantvos.com/blog/major-improvements-to-the-data-warehouse-automation-schema-definition/](https://roelantvos.com/blog/major-improvements-to-the-data-warehouse-automation-schema-definition/) +* [https://roelantvos.com/blog/interface-for-data-warehouse-automation/](https://roelantvos.com/blog/interface-for-data-warehouse-automation/) +* [https://roelantvos.com/blog/a-collaboration-for-a-common-metadata-model/](https://roelantvos.com/blog/a-collaboration-for-a-common-metadata-model/) +* [https://roelantvos.com/blog/updates-on-the-generic-interface-for-data-warehouse-automation-metadata/](https://roelantvos.com/blog/updates-on-the-generic-interface-for-data-warehouse-automation-metadata/) +* [https://roelantvos.com/blog/improvements-on-dwh-automation-interface-v1-1/](https://roelantvos.com/blog/improvements-on-dwh-automation-interface-v1-1/) +* [https://roelantvos.com/blog/interface-for-data-warehouse-automation-metadata-released/](https://roelantvos.com/blog/interface-for-data-warehouse-automation-metadata-released/) +* [https://roelantvos.com/blog/fun-with-code-generation-patterns-multiple-sources/](https://roelantvos.com/blog/fun-with-code-generation-patterns-multiple-sources/) +* [https://roelantvos.com/blog/fun-with-code-generation-patterns-transformations/](https://roelantvos.com/blog/fun-with-code-generation-patterns-transformations/) +* [https://roelantvos.com/blog/fun-with-code-generation-patterns-extensions/](https://roelantvos.com/blog/fun-with-code-generation-patterns-extensions/)