From 65b00e6da66e615fc5a98b6f0b0bc494356c33ff Mon Sep 17 00:00:00 2001 From: Bonajo Date: Tue, 7 May 2024 13:53:07 +0000 Subject: [PATCH] deploy: 195b165e7ab99ee8fee01c5d674ae36ac5402a37 --- docs/database-access/index.html | 3 ++- docs/design-for-testability/index.html | 3 ++- docs/generics/index.html | 3 ++- docs/index.xml | 3 ++- docs/javafx/index.html | 3 ++- docs/jpms-lambda-streams/index.html | 3 ++- docs/parameterized-tests/index.html | 3 ++- docs/reflection/index.html | 25 +++++++++++++++++++++++++ docs/statemachine/index.html | 3 ++- docs/unit-testing-basics/index.html | 3 ++- index.html | 3 ++- index.xml | 3 ++- pages/setup/index.html | 3 ++- pages/tips/index.html | 3 ++- sitemap.xml | 2 +- 15 files changed, 52 insertions(+), 14 deletions(-) create mode 100644 docs/reflection/index.html diff --git a/docs/database-access/index.html b/docs/database-access/index.html index 337a4a1..4b7eb2f 100644 --- a/docs/database-access/index.html +++ b/docs/database-access/index.html @@ -12,7 +12,8 @@ border-transparent hover:border-slate-400 dark:hover:border-slate-400 text-slate-700 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-200">05 JPMS, Lambda and Streams
  • 06 Database Access JDBC
  • 07 JavaFX
  • 08 The State of Things
  • Java DataBase Connectivity

    DataBase connection credentials and Java Properties

    Some things do NOT belong in source code. In particular do not put credentials of any kind +border-transparent hover:border-slate-400 dark:hover:border-slate-400 text-slate-700 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-200">08 The State of Things

  • 09 Reflection
  • Java DataBase Connectivity

    DataBase connection credentials and Java Properties

    Some things do NOT belong in source code. In particular do not put credentials of any kind inside files that are committed to a version control system, such as source code. Make sure you configure your version control system such that such files are excluded from commits.

    Instead put credentials in separate files, that are easily understood by both a human that uses it to configure access to a resource, and also by the programming language.
    In java the tradition is to use so called properties files, which, also traditionally, have a file extension .properties. diff --git a/docs/design-for-testability/index.html b/docs/design-for-testability/index.html index 8fba7f9..f673ec1 100644 --- a/docs/design-for-testability/index.html +++ b/docs/design-for-testability/index.html @@ -12,7 +12,8 @@ border-transparent hover:border-slate-400 dark:hover:border-slate-400 text-slate-700 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-200">05 JPMS, Lambda and Streams

  • 06 Database Access JDBC
  • 07 JavaFX
  • 08 The State of Things
  • Faking as a testing technique

    "When you can’t or won’t make it, Fake it"

    Let’s revisit the movie making metaphor. We know that almost everything in that industry +border-transparent hover:border-slate-400 dark:hover:border-slate-400 text-slate-700 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-200">08 The State of Things

  • 09 Reflection
  • Faking as a testing technique

    "When you can’t or won’t make it, Fake it"

    Let’s revisit the movie making metaphor. We know that almost everything in that industry is fake, or maybe more politely make-belief. In that it only needs to look convincing without being the real thing. So for instance, when someone needs to be hit hard in the face, it will not really be done and to make sure nothing untoward happens to the expensive actors, they may be replaced by stunt men and women, so the punch will never land on the pretty face.

    In our industry we have other reasons to not use the real thing.

    • It is not available (yet).
    • It is expensive (as in slow) to use and we want our tests to be quick.
    • We want to test behavior under circumstances that are rare, and difficult to achieve with the real thing.
    • It is inconvenient to use.

    What we do is replace the "Dependent On Components" by so called mocks.
    In all cases, the System Under Test (SUT), the class we are testing is always used as is. So we have no stunt doubles for our protagonist. diff --git a/docs/generics/index.html b/docs/generics/index.html index 327150f..20a491b 100644 --- a/docs/generics/index.html +++ b/docs/generics/index.html @@ -12,7 +12,8 @@ border-transparent hover:border-slate-400 dark:hover:border-slate-400 text-slate-700 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-200">05 JPMS, Lambda and Streams

  • 06 Database Access JDBC
  • 07 JavaFX
  • 08 The State of Things
  • Generics

    Generics is mainly a compiler feature. In java (at least the versions up to this moment, March 2022) it +border-transparent hover:border-slate-400 dark:hover:border-slate-400 text-slate-700 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-200">08 The State of Things

  • 09 Reflection
  • Generics

    Generics is mainly a compiler feature. In java (at least the versions up to this moment, March 2022) it is even more so, because after the compiler had it’s go with it, it largely discards the generic information, and the runtime, the JVM, does not really care about generics and does not use it. The role of generics is to keep the programs type-safe. The compiler will check that a use of a method, field, or class complies with its definition, diff --git a/docs/index.xml b/docs/index.xml index 1a6237f..73a1d87 100644 --- a/docs/index.xml +++ b/docs/index.xml @@ -1,3 +1,4 @@ Docs on PRC2https://fontysvenlo.github.io/prc2/docs/Recent content in Docs on PRC2Hugo -- gohugo.ioen-usTue, 19 Mar 2024 14:43:06 +010001 Unit Testing Basicshttps://fontysvenlo.github.io/prc2/docs/unit-testing-basics/Tue, 01 Feb 2022 11:32:04 +0100https://fontysvenlo.github.io/prc2/docs/unit-testing-basics/Table of ContentsWrite your own tests!Testing / Test Driven DevelopmentWhat are tests and why do we need them?Test Driven Development (TDD)Arrange Act AssertClues neededAssertJ examples.Simple TestsString ContainmentCollection ContainmentAssert ExceptionsSoft AssertionsAssumptionsAdditional pointersWrite your own tests!Throughout the exercises of PRC1, you have become acquainted with the value of tests: You have a way of checking if your code is any good without having to test each and every part manually. You clicked on the nice TMC button in NetBeans and then you could see which parts of your code worked, and which didn’t.02 Parameterized testshttps://fontysvenlo.github.io/prc2/docs/parameterized-tests/Tue, 01 Feb 2022 14:17:33 +0100https://fontysvenlo.github.io/prc2/docs/parameterized-tests/Table of ContentsParameterized testsParameterized test, Junit 5 styleLookup in a map.Test data from a fileRepeated use of same data.Test Recipe I, Test Equals and hashCodeLinksParameterized testsYou will often see that test methods look a lot like each other. As an example: In the fraction exercise, in most test methods you have two inputs and one or two results, then an operation is done followed by some assertion, often of the same kind.03 Design for testabilityhttps://fontysvenlo.github.io/prc2/docs/design-for-testability/Wed, 02 Feb 2022 11:28:06 +0100https://fontysvenlo.github.io/prc2/docs/design-for-testability/Table of ContentsFaking as a testing techniqueStay cool, have a Mockito.To Mock or To ConfigureDesign for Test-abilityBusiness class fit for testingFaking as a testing technique"When you can’t or won’t make it, Fake it" Let’s revisit the movie making metaphor. We know that almost everything in that industry is fake, or maybe more politely make-belief. In that it only needs to look convincing without being the real thing. So for instance, when someone needs to be hit hard in the face, it will not really be done and to make sure nothing untoward happens to the expensive actors, they may be replaced by stunt men and women, so the punch will never land on the pretty face.04 Genericshttps://fontysvenlo.github.io/prc2/docs/generics/Wed, 09 Mar 2022 13:53:06 +0100https://fontysvenlo.github.io/prc2/docs/generics/Table of ContentsGenericsGenerics, the fine printCheating the compilerWildcard and boundsLower bound or Contra variantSelf use in Generic definitionsDynamic type informationisAssignableFrom. Will a cast work?Testing genericsReadingGenericsGenerics is mainly a compiler feature. In java (at least the versions up to this moment, March 2022) it is even more so, because after the compiler had it’s go with it, it largely discards the generic information, and the runtime, the JVM, does not really care about generics and does not use it.05 JPMS, Lambda and Streamshttps://fontysvenlo.github.io/prc2/docs/jpms-lambda-streams/Tue, 19 Mar 2024 14:43:06 +0100https://fontysvenlo.github.io/prc2/docs/jpms-lambda-streams/Table of ContentsJava Platform Module SystemChanges in visibilityJava Modules and TestingBlack box vs White BoxStandard Source code organization.Lambda and StreamsFunctional Interface Rationale<S.H.A.P.E.> of java.util.functionsWhere is toString?Method ReferencesStreams, SQL like operations expressed in Java 8SQL like functionsCollection Enhancements and general tipsImproved Map in Java 8Optional demystifiedReadingJPMSLambda and streamsJava Platform Module SystemThe Java Platform Module System has been introduced with Java 9 and had a long development history at the point of introduction.06 Database Access JDBChttps://fontysvenlo.github.io/prc2/docs/database-access/Wed, 23 Mar 2022 13:53:06 +0100https://fontysvenlo.github.io/prc2/docs/database-access/Table of ContentsJava DataBase ConnectivityDataBase connection credentials and Java PropertiesUsing a Data sourceResultSetAnatomy of a prepared statementDatabase Meta InformationCheck constraintsTransactionsUsing Stored ProceduresJava DataBase ConnectivityDataBase connection credentials and Java PropertiesSome things do NOT belong in source code. In particular do not put credentials of any kind inside files that are committed to a version control system, such as source code. Make sure you configure your version control system such that such files are excluded from commits.07 JavaFXhttps://fontysvenlo.github.io/prc2/docs/javafx/Wed, 30 Mar 2022 13:53:06 +0100https://fontysvenlo.github.io/prc2/docs/javafx/Table of ContentsJava FX BindingsBinding APIsUnbinding DoubleBinding dependenciesCaching bindingsUsing SceneBuilderDefining Widgets using FXMLReadingMore LinksJava FX BindingsThe graphic style of JavaFX is already quite nice. The architecture of JavaFX applied the lessons learned from the earlier Java framework AWT and Swing. -Tip: Swing and AWT are the Java GUI frameworks with which NetBeans IDE and Intelij is built. That proves that these framworks are still in use in the industry. There is another Java GUI framework word mentioning, which is SWT, developed by IBM under the Eclipse flag.08 The State of Thingshttps://fontysvenlo.github.io/prc2/docs/statemachine/Thu, 14 Apr 2022 12:02:24 +0200https://fontysvenlo.github.io/prc2/docs/statemachine/Table of ContentsThe state of thingsImplementing behavior using state machines.State machines and regular expressionsRegular expressionsBasic regex syntax and rulesGroupingMatches, Matchers, match Groups, and group names.Named groups and comments to the regexUseful web sitesThe state of things Implementing behavior using state machines.Systems sometimes have to exhibit some kind of behavior that is different observable output over time. This is different from a pure function, which will always produce the same output for the same input. \ No newline at end of file +Tip: Swing and AWT are the Java GUI frameworks with which NetBeans IDE and Intelij is built. That proves that these framworks are still in use in the industry. There is another Java GUI framework word mentioning, which is SWT, developed by IBM under the Eclipse flag.08 The State of Thingshttps://fontysvenlo.github.io/prc2/docs/statemachine/Thu, 14 Apr 2022 12:02:24 +0200https://fontysvenlo.github.io/prc2/docs/statemachine/Table of ContentsThe state of thingsImplementing behavior using state machines.State machines and regular expressionsRegular expressionsBasic regex syntax and rulesGroupingMatches, Matchers, match Groups, and group names.Named groups and comments to the regexUseful web sitesThe state of things Implementing behavior using state machines.Systems sometimes have to exhibit some kind of behavior that is different observable output over time. This is different from a pure function, which will always produce the same output for the same input.09 Reflectionhttps://fontysvenlo.github.io/prc2/docs/reflection/Wed, 11 May 2022 12:02:24 +0200https://fontysvenlo.github.io/prc2/docs/reflection/Table of ContentsReflectionNoteReflectionReflection enables a developer to write programs that manipulate Java code dynamically. It is an API that enables you to inspect types (classes, interfaces), fields, constructors, methods, packages, annotations etc. during runtime. +Reclection or class introspection is used to leverage the infomation that is avialable in classes. Using the information that is available about a class and by implication about the instances of the class can help to avoid copy-and-waste programming. \ No newline at end of file diff --git a/docs/javafx/index.html b/docs/javafx/index.html index c2afa55..f8f1761 100644 --- a/docs/javafx/index.html +++ b/docs/javafx/index.html @@ -12,7 +12,8 @@ border-transparent hover:border-slate-400 dark:hover:border-slate-400 text-slate-700 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-200">05 JPMS, Lambda and Streams

  • 06 Database Access JDBC
  • 07 JavaFX
  • 08 The State of Things
  • Java FX Bindings

    The graphic style of JavaFX is already quite nice. The architecture +border-transparent hover:border-slate-400 dark:hover:border-slate-400 text-slate-700 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-200">08 The State of Things

  • 09 Reflection
  • Java FX Bindings

    The graphic style of JavaFX is already quite nice. The architecture of JavaFX applied the lessons learned from the earlier Java framework AWT and Swing.

    Java Platform Module System

    The Java Platform Module System has been introduced with Java 9 and had a long development history at +border-transparent hover:border-slate-400 dark:hover:border-slate-400 text-slate-700 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-200">08 The State of Things

  • 09 Reflection
  • Java Platform Module System

    The Java Platform Module System has been introduced with Java 9 and had a long development history at the point of introduction. For the Java developers at Oracle and others involved in the OpenJDK project it was considered a necessary step to make Java fit for the future and make it possible to shed some old nasty problems. In the development of Java there have been only a few major release, although each release of diff --git a/docs/parameterized-tests/index.html b/docs/parameterized-tests/index.html index 761ba41..44a9af7 100644 --- a/docs/parameterized-tests/index.html +++ b/docs/parameterized-tests/index.html @@ -12,7 +12,8 @@ border-transparent hover:border-slate-400 dark:hover:border-slate-400 text-slate-700 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-200">05 JPMS, Lambda and Streams

  • 06 Database Access JDBC
  • 07 JavaFX
  • 08 The State of Things
  • Parameterized tests

    You will often see that test methods look a lot like each other. As an example: +border-transparent hover:border-slate-400 dark:hover:border-slate-400 text-slate-700 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-200">08 The State of Things

  • 09 Reflection
  • Parameterized tests

    You will often see that test methods look a lot like each other. As an example: In the fraction exercise, in most test methods you have two inputs and one or two results, then an operation is done followed by some assertion, often of the same kind. This quickly leads to the habit of copy and waste programming. Many errors are introduced this way: You copy the original, diff --git a/docs/reflection/index.html b/docs/reflection/index.html new file mode 100644 index 0000000..2169170 --- /dev/null +++ b/docs/reflection/index.html @@ -0,0 +1,25 @@ +PRC2 - 09 Reflection +

    +PRC2

    Reflection

    Reflection enables a developer to write programs that manipulate Java code dynamically. It is an API that enables you to inspect +types (classes, interfaces), fields, constructors, methods, packages, annotations etc. during runtime.

    Reclection or class introspection is used to leverage the infomation that is avialable in classes. Using the information that is +available about a class and by implication about the instances of the class can help to avoid copy-and-waste programming. +It helps keeping the code DRY

    Please find a nice tutorial here: Baeldung Reflection tutorial

    Reflection is a multi-edged tool.

    • Reflection can be used to access parts of instances that would otherwise not be available.
    • Reflection can be used to list information about fields, methods, and constructors.
    • Access via reflection is slower than regular access, because of the safety/security checks that are made on each access
    • It is also slow for the extra indirection needed to do the work when compared to the optimized instructions for say access a field.
    • It is less type-safe, so you loose much of the comfort you have in the IDE, such as code-completion or intellisense(tm). For +instance you lookup a method by name (a String) and that makes you deal with at least one exception. This still does not produce +the actual method, but instead a Method object which you must give the reference to the object on which you want to apply the method and the parameters +to that method in an Object[] array.

    Some of the problems can be mitigated a little with the proper amount of smartness, in particular caching previous results.

    Reflection is typically used in frameworks, like Unit Testing frameworks or Object Relational Mappers (ORM). We’ll have a look at these +use cases in the lecture.

    Note

    Reflection should NOT be used on a daily basis but be reserved for special cases, such as making a tool set (maybe called a framework), that can then make work a bit more efficient for the programmer. Frameworks typically pay their keep with a little performance degradation, because they need some extra work either at application startup, in preparation of the executable, when used or all of the former.

    If the use of a framework makes the normal programming more complex, you might want to consider not using it. +In all cases, you should be aware of the consequences.

    + \ No newline at end of file diff --git a/docs/statemachine/index.html b/docs/statemachine/index.html index 601d6d2..2e8bfcc 100644 --- a/docs/statemachine/index.html +++ b/docs/statemachine/index.html @@ -12,7 +12,8 @@ border-transparent hover:border-slate-400 dark:hover:border-slate-400 text-slate-700 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-200">05 JPMS, Lambda and Streams
  • 06 Database Access JDBC
  • 07 JavaFX
  • 08 The State of Things
  • The state of things

    Implementing behavior using state machines.

    Systems sometimes have to exhibit some kind of behavior that is different observable +border-slate-500 dark:border-slate-400 text-black dark:text-slate-200">08 The State of Things

  • 09 Reflection
  • The state of things

    Implementing behavior using state machines.

    Systems sometimes have to exhibit some kind of behavior that is different observable output over time. This is different from a pure function, which will always produce the same output for the same input. The behavior differs depending on the 'history' the system experienced, typically in the form of 'events' or method calls that happened over time. diff --git a/docs/unit-testing-basics/index.html b/docs/unit-testing-basics/index.html index 6c8aba8..cc002bc 100644 --- a/docs/unit-testing-basics/index.html +++ b/docs/unit-testing-basics/index.html @@ -12,7 +12,8 @@ border-transparent hover:border-slate-400 dark:hover:border-slate-400 text-slate-700 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-200">05 JPMS, Lambda and Streams

  • 06 Database Access JDBC
  • 07 JavaFX
  • 08 The State of Things
  • Write your own tests!

    Throughout the exercises of PRC1, you have become acquainted with the value of tests: You have a way of checking if your code is any good without having to +border-transparent hover:border-slate-400 dark:hover:border-slate-400 text-slate-700 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-200">08 The State of Things

  • 09 Reflection
  • Write your own tests!

    Throughout the exercises of PRC1, you have become acquainted with the value of tests: You have a way of checking if your code is any good without having to test each and every part manually. You clicked on the nice TMC button in NetBeans and then you could see which parts of your code worked, and which didn’t. There is a catch though: Out there in the real world, there won’t be any NetBeans button doing that magic for you, nor will some teacher or school provide the tests for you, so you will be on your own.

    But fret not! Writing tests is typically much simpler than writing the actual code. At least, it is when you follow a basic set of steps:

    1. Arrange: Prepare or set up the thing you want to test
    2. Act: Interact with the object you are testing
    3. Assert or Ensure that the observable result(s) is/are as expected.
    4. If it says boom, then at least you learned something …​.

    Topics week 1

    • Test Driven Development.
    • Maven configuration as exercise.
    • Arrange Act Assert
    • JUnit (5) as test framework.
    • AssertJ as assertion library.

    Testing / Test Driven Development

    What are tests and why do we need them?

    The way that you have worked with Java so far is that you had to write some code diff --git a/index.html b/index.html index b52086c..fa97210 100644 --- a/index.html +++ b/index.html @@ -12,7 +12,8 @@ border-transparent hover:border-slate-400 dark:hover:border-slate-400 text-slate-700 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-200">05 JPMS, Lambda and Streams

  • 06 Database Access JDBC
  • 07 JavaFX
  • 08 The State of Things
  • Module description

    • Module description can be found on canvas

    This site contains the up-to-date course material, exercises and announcements about PRC2 +border-transparent hover:border-slate-400 dark:hover:border-slate-400 text-slate-700 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-200">08 The State of Things

  • 09 Reflection
  • Module description

    • Module description can be found on canvas

    This site contains the up-to-date course material, exercises and announcements about PRC2 (Programming Concepts 2: the Test Driven Way), starting in February 2024.

    Responsible Teachers for 2024 PRC2:

    • Martijn Bonajo
    • Ibrahim Kouzak
    • Richard van den Ham

    Most contents on this website were originally developed by Pieter van den Hombergh.

    Study materials

    • For the Java basics and advanced features we are using Cay Horstmann’s fine books from the core Java series, 12th edition. They are on the book-list from September.
    • The exercises will be published via a personal github repository.
    • The Junit version is Junit 5.
    • "Using frameworks for testing" will start with using AssertJ, which is a modern and up to date Open Source testing framework. The documentation is of excellent quality and fun to read.
    • JavaFX bonus chapter to Core Java Volume I (for the 11th Edition.)
    • Core Java, Volume I: Fundamentals
    • Core Java, Volume II: Fundamentals

    Getting Started

    To work successfully with the programs needed for PRC2, you need to install them first. +border-transparent hover:border-slate-400 dark:hover:border-slate-400 text-slate-700 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-200">08 The State of Things

  • 09 Reflection
  • Getting Started

    To work successfully with the programs needed for PRC2, you need to install them first. Properly installing Java and other programs is not hard but must be done precisely. What will follow is a description on how to do that under Ubuntu Linux, macOS and Windows. You can adapt this configuration for other operating systems too, possibly with a few tweaks.

    Java Style

    Java is a language and languages come with a culture. +border-transparent hover:border-slate-400 dark:hover:border-slate-400 text-slate-700 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-200">08 The State of Things

  • 09 Reflection
  • Java Style

    Java is a language and languages come with a culture. One such cultural aspect is the way you format your code, like placing your brackets, parenthesis, spaces and curly braces. This coding style is intended to help you read the code, recognize the structure at a glance and find the interesting details easily and spot on.

    The official Java style is derived from the Kernighan and Ritchie (K&R) style for the C programming language. Since syntactically Java inherits quite a lot from C, that would be logical choice.

    The current and preferred way of using this java style is best described in the Google Java Style Guide.

    Where have you put your Curly Braces.

    Most holy wars are fought over the placement of the curlies '{}', and in some cases other brackets [] or parenthesis () and <> too. In particular: Put them at the beginning of the line or at the end. The Java Style Guide is quite clear about that: Braces.

    My personal motivation would be: If your understand that C and Java are block oriented languages, then you immediately will understand that placing a brace at the beginning of a line diff --git a/sitemap.xml b/sitemap.xml index 8c335ee..16d4310 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://fontysvenlo.github.io/prc2/pages/tips/2022-02-02T10:43:27+01:00https://fontysvenlo.github.io/prc2/docs/unit-testing-basics/2022-02-01T11:32:04+01:00https://fontysvenlo.github.io/prc2/pages/setup/2022-02-01T14:30:36+01:00https://fontysvenlo.github.io/prc2/docs/parameterized-tests/2022-02-01T14:17:33+01:00https://fontysvenlo.github.io/prc2/docs/design-for-testability/2022-02-02T11:28:06+01:00https://fontysvenlo.github.io/prc2/docs/generics/2022-03-09T13:53:06+01:00https://fontysvenlo.github.io/prc2/docs/jpms-lambda-streams/2024-03-19T14:43:06+01:00https://fontysvenlo.github.io/prc2/docs/database-access/2022-03-23T13:53:06+01:00https://fontysvenlo.github.io/prc2/docs/javafx/2022-03-30T13:53:06+01:00https://fontysvenlo.github.io/prc2/docs/statemachine/2022-04-14T12:02:24+02:00https://fontysvenlo.github.io/prc2/docs/2024-03-19T14:43:06+01:00https://fontysvenlo.github.io/prc2/2022-02-02T15:04:33+01:00https://fontysvenlo.github.io/prc2/pages/2022-02-02T10:43:27+01:00https://fontysvenlo.github.io/prc2/categories/https://fontysvenlo.github.io/prc2/tags/ \ No newline at end of file +https://fontysvenlo.github.io/prc2/pages/tips/2022-02-02T10:43:27+01:00https://fontysvenlo.github.io/prc2/docs/unit-testing-basics/2022-02-01T11:32:04+01:00https://fontysvenlo.github.io/prc2/pages/setup/2022-02-01T14:30:36+01:00https://fontysvenlo.github.io/prc2/docs/parameterized-tests/2022-02-01T14:17:33+01:00https://fontysvenlo.github.io/prc2/docs/design-for-testability/2022-02-02T11:28:06+01:00https://fontysvenlo.github.io/prc2/docs/generics/2022-03-09T13:53:06+01:00https://fontysvenlo.github.io/prc2/docs/jpms-lambda-streams/2024-03-19T14:43:06+01:00https://fontysvenlo.github.io/prc2/docs/database-access/2022-03-23T13:53:06+01:00https://fontysvenlo.github.io/prc2/docs/javafx/2022-03-30T13:53:06+01:00https://fontysvenlo.github.io/prc2/docs/statemachine/2022-04-14T12:02:24+02:00https://fontysvenlo.github.io/prc2/docs/reflection/2022-05-11T12:02:24+02:00https://fontysvenlo.github.io/prc2/docs/2024-03-19T14:43:06+01:00https://fontysvenlo.github.io/prc2/2022-02-02T15:04:33+01:00https://fontysvenlo.github.io/prc2/pages/2022-02-02T10:43:27+01:00https://fontysvenlo.github.io/prc2/categories/https://fontysvenlo.github.io/prc2/tags/ \ No newline at end of file