SlideShare ist ein Scribd-Unternehmen logo
1 von 52
Downloaden Sie, um offline zu lesen
#DocAsCode #voxxed_lu
Voxxed Days Luxembourg
Jérémie Bresson – 22.06.2017
Documentation as code:
contrôler la qualité !
#DocAsCode #voxxed_lu
#DocAsCode #voxxed_lu
#DocAsCode #voxxed_lu
«Documentation as code»
#DocAsCode #voxxed_lu
Qui suis je?
Jérémie Bresson
/@j2r2b
/+JeremieBresson
/jmini
#DocAsCode #voxxed_lu
 BSI CRM  Eclipse Scout
http://eclipse.org/scout/
Mon travail chez BSI
#DocAsCode #voxxed_lu
«Documentation as code»
#DocAsCode #voxxed_lu
«Documentation as code» en une image…
java
pom.xml
docs
#DocAsCode #voxxed_lu
#DocAsCode #voxxed_lu
La syntaxe «AsciiDoc»
= Getting Started with Java
Author Name <author@example.org>
== Hello World example
Copy the *HelloWorld.java* file.
TIP: The application prints _Hello World!_ to the console.
* Compile this source to a class file using `javac`.
* Run the compiled class file using `java`.
If you need help with the Java syntax check the
link:http://docs.oracle.com/javase/8/docs/[Java 8 Javadoc].
#DocAsCode #voxxed_lu
La syntaxe «AsciiDoc»
= Getting Started with Java
Author Name <author@example.org>
== Hello World example
Copy the *HelloWorld.java* file.
TIP: The application prints _Hello World!_ to the console.
* Compile this source to a class file using `javac`.
* Run the compiled class file using `java`.
If you need help with the Java syntax check the
link:http://docs.oracle.com/javase/8/docs/[Java 8 Javadoc].
Document Title
Section Level 1
#DocAsCode #voxxed_lu
La syntaxe «AsciiDoc»
= Getting Started with Java
Author Name <author@example.org>
== Hello World example
Copy the *HelloWorld.java* file.
TIP: The application prints _Hello World!_ to the console.
* Compile this source to a class file using `javac`.
* Run the compiled class file using `java`.
If you need help with the Java syntax check the
link:http://docs.oracle.com/javase/8/docs/[Java 8 Javadoc].
Unordered list items
#DocAsCode #voxxed_lu
La syntaxe «AsciiDoc»
= Getting Started with Java
Author Name <author@example.org>
== Hello World example
Copy the *HelloWorld.java* file.
TIP: The application prints _Hello World!_ to the console.
* Compile this source to a class file using `javac`.
* Run the compiled class file using `java`.
If you need help with the Java syntax check the
link:http://docs.oracle.com/javase/8/docs/[Java 8 Javadoc].
bold italic
code
#DocAsCode #voxxed_lu
La syntaxe «AsciiDoc»
= Getting Started with Java
Author Name <author@example.org>
== Hello World example
Copy the *HelloWorld.java* file.
TIP: The application prints _Hello World!_ to the console.
* Compile this source to a class file using `javac`.
* Run the compiled class file using `java`.
If you need help with the Java syntax check the
link:http://docs.oracle.com/javase/8/docs/[Java 8 Javadoc].
External link with title
#DocAsCode #voxxed_lu
La syntaxe «AsciiDoc»
= Getting Started with Java
Author Name <author@example.org>
== Hello World example
Copy the *HelloWorld.java* file.
TIP: The application prints _Hello World!_ to the console.
* Compile this source to a class file using `javac`.
* Run the compiled class file using `java`.
If you need help with the Java syntax check the
link:http://docs.oracle.com/javase/8/docs/[Java 8 Javadoc].
#DocAsCode #voxxed_lu
La syntaxe «AsciiDoc»
= Getting Started with Java
Author Name <author@example.org>
== Hello World example
Copy the *HelloWorld.java* file.
TIP: The application prints _Hello World!_ to the console.
* Compile this source to a class file using `javac`.
* Run the compiled class file using `java`.
If you need help with the Java syntax check the
link:http://docs.oracle.com/javase/8/docs/[Java 8 Javadoc].
#DocAsCode #voxxed_lu#DocAsCode #voxxed_lu
#DocAsCode #voxxed_lu
Et la qualité?
#DocAsCode #voxxed_lu
Dans «documentation as code»
il y a «as code» !
#DocAsCode #voxxed_lu
Faciliter les contributions
#DocAsCode #voxxed_lu
Edit on GitHub
#DocAsCode #voxxed_lu#DocAsCode #voxxed_lu
#DocAsCode #voxxed_lu
Contrôle continu des exemples de code
#DocAsCode #voxxed_lu
[[lst-wikitext1, Listing 1]]
[source,java]
----
public static String toHtml(String mediawikiText) {
StringWriter writer = new StringWriter();
MarkupParser parser = new MarkupParser(new MediaWikiLanguage(), n
parser.parse(mediawikiText); // <1>
return writer.toString();
}
----
<1> Main call of the Mylyn Wikitext framework
== Usage of Mylyn wikitext
With the method `toHtml(String)` in <<lst-wikitext1>> you
can convert a text from Mediawiki Language to HTML.
#DocAsCode #voxxed_lu
[[lst-wikitext1, Listing 1]]
[source,java]
----
public static String toHtml(String mediawikiText) {
StringWriter writer = new StringWriter();
MarkupParser parser = new MarkupParser(new MediaWikiLanguage(), n
parser.parse(mediawikiText); // <1>
return writer.toString();
}
----
<1> Main call of the Mylyn Wikitext framework
== Usage of Mylyn wikitext
With the method `toHtml(String)` in <<lst-wikitext1>> you
can convert a text from Mediawiki Language to HTML.
#DocAsCode #voxxed_lu
[[lst-wikitext1, Listing 1]]
[source,java]
----
public static String toHtml(String mediawikiText) {
StringWriter writer = new StringWriter();
MarkupParser parser = new MarkupParser(new MediaWikiLanguage(), n
parser.parse(mediawikiText); // <1>
return writer.toString();
}
----
<1> Main call of the Mylyn Wikitext framework
== Usage of Mylyn wikitext
With the method `toHtml(String)` in <<lst-wikitext1>> you
can convert a text from Mediawiki Language to HTML.
#DocAsCode #voxxed_lu
#DocAsCode #voxxed_lu
#DocAsCode #voxxed_lu
[[lst-wikitext1, Listing 1]]
[source,java]
----
public static String toHtml(String mediawikiText) {
StringWriter writer = new StringWriter();
MarkupParser parser = new MarkupParser(new MediaWikiLanguage(), n
parser.parse(mediawikiText); // <1>
return writer.toString();
}
----
<1> Main call of the Mylyn Wikitext framework
== Usage of Mylyn wikitext
With the method `toHtml(String)` in <<lst-wikitext1>> you
can convert a text from Mediawiki Language to HTML.
#DocAsCode #voxxed_lu
[[lst-wikitext1, Listing 1]]
[source,java]
----
include::src/main/java/MediawikiTest.java[tags=method]
----
<1> Main call of the Mylyn Wikitext framework
== Usage of Mylyn wikitext
With the method `toHtml(String)` in <<lst-wikitext1>> you
can convert a text from Mediawiki Language to HTML.
code snippet taken from
real source code
#DocAsCode #voxxed_lu
public class MediawikiTest {
//tag::method[]
public static String toHtml(String mediawikiText) {
StringWriter writer = new StringWriter();
MarkupParser parser = new MarkupParser(new MediaWikiLanguage(), new H
parser.parse(mediawikiText); // <1>
return writer.toString();
}
//end::method[]
@Test
public void test() {
StringBuilder sb = new StringBuilder();
sb.append("= Heading 1 =n");
sb.append("n");
sb.append("Hello World!n");
sb.append("n"); #DocAsCode #voxxed_lu
#DocAsCode #voxxed_lu
Surveiller l’évolution des sources
#DocAsCode #voxxed_lu
* Add page `OrganizationTablePage` with title
"Organizations" using the Scout new page wizard
[[lst-contacts_OrganizationTablePage, Listing
OrganizationTablePage]]
[source,java]
.Initial implementation of class OrganizationTablePage.
----
include::{codedir}/contacts/org.eclipse.scout.contacts.clie
----
<1> Make sure to add a translated text entry for
"Organizations" using the Scout NLS tooling
The implementation of class `OrganizationTablePage` using
the Scout new page wizard then looks as shown in <<lst-
contacts_OrganizationTablePage>>.
#DocAsCode #voxxed_lu
#DocAsCode #voxxed_lu
// tag::PageInit[]
// tag::childPage[]
@PageData(OrganizationTablePageData.class)
public class OrganizationTablePage extends
AbstractPageWithTable<OrganizationTablePage.Table> {
// end::childPage[]
@Override
protected String getConfiguredTitle() {
return TEXTS.get("Organizations"); // <1>
}
// end::PageInit[]
// tag::childPage[]
@Override
protected IPage<?> execCreateChildPage(ITableRow row) {
OrganizationNodePage childPage;
#DocAsCode #voxxed_lu
Build Logs
2017-06-12 15:51:21.337 [INFO]
2017-06-12 15:51:21.338 [INFO] --- asciidoctor-maven-plugin:1.5.5:process-asciidoc (boo
2017-06-12 15:51:24.852 [INFO] Using 'UTF-8' encoding to copy filtered resources.
2017-06-12 15:51:24.852 [INFO] ignoreDelta true
2017-06-12 15:51:24.856 [INFO] Copying 0 resource
2017-06-12 15:51:39.970 asciidoctor: WARNING: _TutorialStep2.adoc: line 247: no callout
2017-06-12 15:52:16.775 [INFO]
2017-06-12 15:52:16.775 [INFO] --- asciidoctor-maven-plugin:1.5.5:process-asciidoc (boo
2017-06-12 15:52:17.190 [INFO] Using 'UTF-8' encoding to copy filtered resources.
2017-06-12 15:52:17.191 [INFO] ignoreDelta true
2017-06-12 15:52:17.191 [INFO] Copying 0 resource
#DocAsCode #voxxed_lu
Warning
 Dans les logs
=> Monitorer
https://github.com/asciidoctor/asciidoctor/issues/44
#DocAsCode #voxxed_lu
Surveiller les documents produits
#DocAsCode #voxxed_lu
 Organization: jmini
 Repository:
jxlint-experiments
https://github.com/jmini/jxlint-experiments/
 Organization: eclipsescout
 Repository:
eclipsescout.github.io
https://github.com/eclipsescout/eclipsescout.github.io
GitHub pages
https://eclipsescout.github.io
https://jmini.github.io/jxlint-experiments
master
gh-pages
#DocAsCode #voxxed_lu
#DocAsCode #voxxed_lu
HTML output
#DocAsCode #voxxed_lu
git commit -a -m "Update doc ${DOC_JOB_VERSION}" || true
Execute shell
git add -A && git commit -m "Update doc ${DOC_JOB_VERSION}" ||
true
Jenkins config
#DocAsCode #voxxed_lu
Le pipeline complet
docs
#DocAsCode #voxxed_lu
#DocAsCode #voxxed_lu
<h2 id="scout-platform"><a class="anchor" href="#scout-platform"
<div class="sectionbody">
<div class="paragraph">
<p>Scout contains a platform which provides basic functionali
</div>
<div class="ulist">
<ul>
<li> <p><a href="#sec-app.lifecycle">Application Lifecycle M
<li> <p><a href="#sec-bean.manager">Object Instance Manageme
<li> <p><a href="#sec-config.management">Configuration Manag
<li> <p><a href="#sec-class.inventory">Application Inventory
<div class="sect1">
#DocAsCode #voxxed_lu
Contrôle manuel
#DocAsCode #voxxed_lu
#DocAsCode #voxxed_lu
#DocAsCode #voxxed_lu
#DocAsCode #voxxed_lu
#DocAsCode #voxxed_lu
 Screenshots würde ich jeweils ohne den
Browserrahmen machen
 Die Bildbeschriftungen sind noch auf Englisch
(Figure statt Abbildung)
#DocAsCode #voxxed_lu
#DocAsCode #voxxed_lu
«documentation as code»
«automatisation»
#DocAsCode #voxxed_lu
Merci
/@j2r2b
/+JeremieBresson
/jmini
jeremie.bresson@bsi-software.com

Weitere ähnliche Inhalte

Was ist angesagt?

MongoDB: Easy Java Persistence with Morphia
MongoDB: Easy Java Persistence with MorphiaMongoDB: Easy Java Persistence with Morphia
MongoDB: Easy Java Persistence with MorphiaScott Hernandez
 
Working with Cookies in NodeJS
Working with Cookies in NodeJSWorking with Cookies in NodeJS
Working with Cookies in NodeJSJay Dihenkar
 
Dojo: Beautiful Web Apps, Fast
Dojo: Beautiful Web Apps, FastDojo: Beautiful Web Apps, Fast
Dojo: Beautiful Web Apps, FastGabriel Hamilton
 
MySQL Without the SQL - Oh My! August 2nd presentation at Mid Atlantic Develo...
MySQL Without the SQL - Oh My! August 2nd presentation at Mid Atlantic Develo...MySQL Without the SQL - Oh My! August 2nd presentation at Mid Atlantic Develo...
MySQL Without the SQL - Oh My! August 2nd presentation at Mid Atlantic Develo...Dave Stokes
 
Mastering the MongoDB Shell
Mastering the MongoDB ShellMastering the MongoDB Shell
Mastering the MongoDB ShellMongoDB
 
Mongophilly shell-2011-04-26
Mongophilly shell-2011-04-26Mongophilly shell-2011-04-26
Mongophilly shell-2011-04-26kreuter
 
Redis data modeling examples
Redis data modeling examplesRedis data modeling examples
Redis data modeling examplesTerry Cho
 
Back to Basics Webinar 2: Your First MongoDB Application
Back to Basics Webinar 2: Your First MongoDB ApplicationBack to Basics Webinar 2: Your First MongoDB Application
Back to Basics Webinar 2: Your First MongoDB ApplicationMongoDB
 
Building Your First Application with MongoDB
Building Your First Application with MongoDBBuilding Your First Application with MongoDB
Building Your First Application with MongoDBMongoDB
 
Back to Basics Webinar 3 - Thinking in Documents
Back to Basics Webinar 3 - Thinking in DocumentsBack to Basics Webinar 3 - Thinking in Documents
Back to Basics Webinar 3 - Thinking in DocumentsJoe Drumgoole
 
Webinar: Simplifying Persistence for Java and MongoDB
Webinar: Simplifying Persistence for Java and MongoDBWebinar: Simplifying Persistence for Java and MongoDB
Webinar: Simplifying Persistence for Java and MongoDBMongoDB
 
Back to Basics Webinar 1 - Introduction to NoSQL
Back to Basics Webinar 1 - Introduction to NoSQLBack to Basics Webinar 1 - Introduction to NoSQL
Back to Basics Webinar 1 - Introduction to NoSQLJoe Drumgoole
 
Fun Teaching MongoDB New Tricks
Fun Teaching MongoDB New TricksFun Teaching MongoDB New Tricks
Fun Teaching MongoDB New TricksMongoDB
 
Intro to HTML5 Web Storage
Intro to HTML5 Web StorageIntro to HTML5 Web Storage
Intro to HTML5 Web Storagedylanks
 
Getting started with DataStax .NET Driver for Cassandra
Getting started with DataStax .NET Driver for CassandraGetting started with DataStax .NET Driver for Cassandra
Getting started with DataStax .NET Driver for CassandraLuke Tillman
 
Dev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBDev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBMongoDB
 
Testable, Object-Oriented JavaScript
Testable, Object-Oriented JavaScriptTestable, Object-Oriented JavaScript
Testable, Object-Oriented JavaScriptJon Kruger
 
Node.js in action
Node.js in actionNode.js in action
Node.js in actionSimon Su
 

Was ist angesagt? (20)

MongoDB: Easy Java Persistence with Morphia
MongoDB: Easy Java Persistence with MorphiaMongoDB: Easy Java Persistence with Morphia
MongoDB: Easy Java Persistence with Morphia
 
Working with Cookies in NodeJS
Working with Cookies in NodeJSWorking with Cookies in NodeJS
Working with Cookies in NodeJS
 
Dojo: Beautiful Web Apps, Fast
Dojo: Beautiful Web Apps, FastDojo: Beautiful Web Apps, Fast
Dojo: Beautiful Web Apps, Fast
 
MySQL Without the SQL - Oh My! August 2nd presentation at Mid Atlantic Develo...
MySQL Without the SQL - Oh My! August 2nd presentation at Mid Atlantic Develo...MySQL Without the SQL - Oh My! August 2nd presentation at Mid Atlantic Develo...
MySQL Without the SQL - Oh My! August 2nd presentation at Mid Atlantic Develo...
 
Mastering the MongoDB Shell
Mastering the MongoDB ShellMastering the MongoDB Shell
Mastering the MongoDB Shell
 
jQuery
jQueryjQuery
jQuery
 
Mongophilly shell-2011-04-26
Mongophilly shell-2011-04-26Mongophilly shell-2011-04-26
Mongophilly shell-2011-04-26
 
Redis data modeling examples
Redis data modeling examplesRedis data modeling examples
Redis data modeling examples
 
Back to Basics Webinar 2: Your First MongoDB Application
Back to Basics Webinar 2: Your First MongoDB ApplicationBack to Basics Webinar 2: Your First MongoDB Application
Back to Basics Webinar 2: Your First MongoDB Application
 
Python IO
Python IOPython IO
Python IO
 
Building Your First Application with MongoDB
Building Your First Application with MongoDBBuilding Your First Application with MongoDB
Building Your First Application with MongoDB
 
Back to Basics Webinar 3 - Thinking in Documents
Back to Basics Webinar 3 - Thinking in DocumentsBack to Basics Webinar 3 - Thinking in Documents
Back to Basics Webinar 3 - Thinking in Documents
 
Webinar: Simplifying Persistence for Java and MongoDB
Webinar: Simplifying Persistence for Java and MongoDBWebinar: Simplifying Persistence for Java and MongoDB
Webinar: Simplifying Persistence for Java and MongoDB
 
Back to Basics Webinar 1 - Introduction to NoSQL
Back to Basics Webinar 1 - Introduction to NoSQLBack to Basics Webinar 1 - Introduction to NoSQL
Back to Basics Webinar 1 - Introduction to NoSQL
 
Fun Teaching MongoDB New Tricks
Fun Teaching MongoDB New TricksFun Teaching MongoDB New Tricks
Fun Teaching MongoDB New Tricks
 
Intro to HTML5 Web Storage
Intro to HTML5 Web StorageIntro to HTML5 Web Storage
Intro to HTML5 Web Storage
 
Getting started with DataStax .NET Driver for Cassandra
Getting started with DataStax .NET Driver for CassandraGetting started with DataStax .NET Driver for Cassandra
Getting started with DataStax .NET Driver for Cassandra
 
Dev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBDev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDB
 
Testable, Object-Oriented JavaScript
Testable, Object-Oriented JavaScriptTestable, Object-Oriented JavaScript
Testable, Object-Oriented JavaScript
 
Node.js in action
Node.js in actionNode.js in action
Node.js in action
 

Ähnlich wie 2017-06-22 Documentation as code

Writing documentation with Asciidoctor
Writing documentation  with  AsciidoctorWriting documentation  with  Asciidoctor
Writing documentation with AsciidoctorJérémie Bresson
 
Comment Asciidoctor peut vous aider pour votre doc
Comment Asciidoctor peut vous aider pour votre docComment Asciidoctor peut vous aider pour votre doc
Comment Asciidoctor peut vous aider pour votre docJérémie Bresson
 
Ejb3 Struts Tutorial En
Ejb3 Struts Tutorial EnEjb3 Struts Tutorial En
Ejb3 Struts Tutorial EnAnkur Dongre
 
Ejb3 Struts Tutorial En
Ejb3 Struts Tutorial EnEjb3 Struts Tutorial En
Ejb3 Struts Tutorial EnAnkur Dongre
 
XWiki Rendering @ FOSDEM 2014
XWiki Rendering @ FOSDEM 2014XWiki Rendering @ FOSDEM 2014
XWiki Rendering @ FOSDEM 2014Vincent Massol
 
Scripting as a Second Language
Scripting as a Second LanguageScripting as a Second Language
Scripting as a Second LanguageRob Dunn
 
Ts archiving
Ts   archivingTs   archiving
Ts archivingConfiz
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingSchalk Cronjé
 
Webpack Encore Symfony Live 2017 San Francisco
Webpack Encore Symfony Live 2017 San FranciscoWebpack Encore Symfony Live 2017 San Francisco
Webpack Encore Symfony Live 2017 San FranciscoRyan Weaver
 
How to create interactive infographics
How to create interactive infographicsHow to create interactive infographics
How to create interactive infographicsMayuree Srikulwong
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingSchalk Cronjé
 
Global objects in Node.pdf
Global objects in Node.pdfGlobal objects in Node.pdf
Global objects in Node.pdfSudhanshiBakre1
 
jQuery Learning
jQuery LearningjQuery Learning
jQuery LearningUzair Ali
 
Asciidoctor, because documentation does not have to suck
Asciidoctor, because documentation does not have to suckAsciidoctor, because documentation does not have to suck
Asciidoctor, because documentation does not have to suckAndres Almiray
 
Future-proof Development for Classic SharePoint
Future-proof Development for Classic SharePointFuture-proof Development for Classic SharePoint
Future-proof Development for Classic SharePointBob German
 
Develop High Performance Windows 8 Application with HTML5 and JavaScriptHigh ...
Develop High Performance Windows 8 Application with HTML5 and JavaScriptHigh ...Develop High Performance Windows 8 Application with HTML5 and JavaScriptHigh ...
Develop High Performance Windows 8 Application with HTML5 and JavaScriptHigh ...Doris Chen
 

Ähnlich wie 2017-06-22 Documentation as code (20)

Writing documentation with Asciidoctor
Writing documentation  with  AsciidoctorWriting documentation  with  Asciidoctor
Writing documentation with Asciidoctor
 
Comment Asciidoctor peut vous aider pour votre doc
Comment Asciidoctor peut vous aider pour votre docComment Asciidoctor peut vous aider pour votre doc
Comment Asciidoctor peut vous aider pour votre doc
 
Ejb3 Struts Tutorial En
Ejb3 Struts Tutorial EnEjb3 Struts Tutorial En
Ejb3 Struts Tutorial En
 
Ejb3 Struts Tutorial En
Ejb3 Struts Tutorial EnEjb3 Struts Tutorial En
Ejb3 Struts Tutorial En
 
XWiki Rendering @ FOSDEM 2014
XWiki Rendering @ FOSDEM 2014XWiki Rendering @ FOSDEM 2014
XWiki Rendering @ FOSDEM 2014
 
Scripting as a Second Language
Scripting as a Second LanguageScripting as a Second Language
Scripting as a Second Language
 
Ts archiving
Ts   archivingTs   archiving
Ts archiving
 
Tml for Objective C
Tml for Objective CTml for Objective C
Tml for Objective C
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin Writing
 
Webpack Encore Symfony Live 2017 San Francisco
Webpack Encore Symfony Live 2017 San FranciscoWebpack Encore Symfony Live 2017 San Francisco
Webpack Encore Symfony Live 2017 San Francisco
 
How to create interactive infographics
How to create interactive infographicsHow to create interactive infographics
How to create interactive infographics
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin Writing
 
Global objects in Node.pdf
Global objects in Node.pdfGlobal objects in Node.pdf
Global objects in Node.pdf
 
jQuery Learning
jQuery LearningjQuery Learning
jQuery Learning
 
Asciidoctor, because documentation does not have to suck
Asciidoctor, because documentation does not have to suckAsciidoctor, because documentation does not have to suck
Asciidoctor, because documentation does not have to suck
 
React native
React nativeReact native
React native
 
Future-proof Development for Classic SharePoint
Future-proof Development for Classic SharePointFuture-proof Development for Classic SharePoint
Future-proof Development for Classic SharePoint
 
Develop High Performance Windows 8 Application with HTML5 and JavaScriptHigh ...
Develop High Performance Windows 8 Application with HTML5 and JavaScriptHigh ...Develop High Performance Windows 8 Application with HTML5 and JavaScriptHigh ...
Develop High Performance Windows 8 Application with HTML5 and JavaScriptHigh ...
 
Tomcat + other things
Tomcat + other thingsTomcat + other things
Tomcat + other things
 
Docker Starter Pack
Docker Starter PackDocker Starter Pack
Docker Starter Pack
 

Kürzlich hochgeladen

Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 

Kürzlich hochgeladen (20)

Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 

2017-06-22 Documentation as code

  • 1. #DocAsCode #voxxed_lu Voxxed Days Luxembourg Jérémie Bresson – 22.06.2017 Documentation as code: contrôler la qualité !
  • 5. #DocAsCode #voxxed_lu Qui suis je? Jérémie Bresson /@j2r2b /+JeremieBresson /jmini
  • 6. #DocAsCode #voxxed_lu  BSI CRM  Eclipse Scout http://eclipse.org/scout/ Mon travail chez BSI
  • 8. #DocAsCode #voxxed_lu «Documentation as code» en une image… java pom.xml docs #DocAsCode #voxxed_lu
  • 9. #DocAsCode #voxxed_lu La syntaxe «AsciiDoc» = Getting Started with Java Author Name <author@example.org> == Hello World example Copy the *HelloWorld.java* file. TIP: The application prints _Hello World!_ to the console. * Compile this source to a class file using `javac`. * Run the compiled class file using `java`. If you need help with the Java syntax check the link:http://docs.oracle.com/javase/8/docs/[Java 8 Javadoc].
  • 10. #DocAsCode #voxxed_lu La syntaxe «AsciiDoc» = Getting Started with Java Author Name <author@example.org> == Hello World example Copy the *HelloWorld.java* file. TIP: The application prints _Hello World!_ to the console. * Compile this source to a class file using `javac`. * Run the compiled class file using `java`. If you need help with the Java syntax check the link:http://docs.oracle.com/javase/8/docs/[Java 8 Javadoc]. Document Title Section Level 1
  • 11. #DocAsCode #voxxed_lu La syntaxe «AsciiDoc» = Getting Started with Java Author Name <author@example.org> == Hello World example Copy the *HelloWorld.java* file. TIP: The application prints _Hello World!_ to the console. * Compile this source to a class file using `javac`. * Run the compiled class file using `java`. If you need help with the Java syntax check the link:http://docs.oracle.com/javase/8/docs/[Java 8 Javadoc]. Unordered list items
  • 12. #DocAsCode #voxxed_lu La syntaxe «AsciiDoc» = Getting Started with Java Author Name <author@example.org> == Hello World example Copy the *HelloWorld.java* file. TIP: The application prints _Hello World!_ to the console. * Compile this source to a class file using `javac`. * Run the compiled class file using `java`. If you need help with the Java syntax check the link:http://docs.oracle.com/javase/8/docs/[Java 8 Javadoc]. bold italic code
  • 13. #DocAsCode #voxxed_lu La syntaxe «AsciiDoc» = Getting Started with Java Author Name <author@example.org> == Hello World example Copy the *HelloWorld.java* file. TIP: The application prints _Hello World!_ to the console. * Compile this source to a class file using `javac`. * Run the compiled class file using `java`. If you need help with the Java syntax check the link:http://docs.oracle.com/javase/8/docs/[Java 8 Javadoc]. External link with title
  • 14. #DocAsCode #voxxed_lu La syntaxe «AsciiDoc» = Getting Started with Java Author Name <author@example.org> == Hello World example Copy the *HelloWorld.java* file. TIP: The application prints _Hello World!_ to the console. * Compile this source to a class file using `javac`. * Run the compiled class file using `java`. If you need help with the Java syntax check the link:http://docs.oracle.com/javase/8/docs/[Java 8 Javadoc].
  • 15. #DocAsCode #voxxed_lu La syntaxe «AsciiDoc» = Getting Started with Java Author Name <author@example.org> == Hello World example Copy the *HelloWorld.java* file. TIP: The application prints _Hello World!_ to the console. * Compile this source to a class file using `javac`. * Run the compiled class file using `java`. If you need help with the Java syntax check the link:http://docs.oracle.com/javase/8/docs/[Java 8 Javadoc].
  • 18. #DocAsCode #voxxed_lu Dans «documentation as code» il y a «as code» !
  • 23. #DocAsCode #voxxed_lu [[lst-wikitext1, Listing 1]] [source,java] ---- public static String toHtml(String mediawikiText) { StringWriter writer = new StringWriter(); MarkupParser parser = new MarkupParser(new MediaWikiLanguage(), n parser.parse(mediawikiText); // <1> return writer.toString(); } ---- <1> Main call of the Mylyn Wikitext framework == Usage of Mylyn wikitext With the method `toHtml(String)` in <<lst-wikitext1>> you can convert a text from Mediawiki Language to HTML.
  • 24. #DocAsCode #voxxed_lu [[lst-wikitext1, Listing 1]] [source,java] ---- public static String toHtml(String mediawikiText) { StringWriter writer = new StringWriter(); MarkupParser parser = new MarkupParser(new MediaWikiLanguage(), n parser.parse(mediawikiText); // <1> return writer.toString(); } ---- <1> Main call of the Mylyn Wikitext framework == Usage of Mylyn wikitext With the method `toHtml(String)` in <<lst-wikitext1>> you can convert a text from Mediawiki Language to HTML.
  • 25. #DocAsCode #voxxed_lu [[lst-wikitext1, Listing 1]] [source,java] ---- public static String toHtml(String mediawikiText) { StringWriter writer = new StringWriter(); MarkupParser parser = new MarkupParser(new MediaWikiLanguage(), n parser.parse(mediawikiText); // <1> return writer.toString(); } ---- <1> Main call of the Mylyn Wikitext framework == Usage of Mylyn wikitext With the method `toHtml(String)` in <<lst-wikitext1>> you can convert a text from Mediawiki Language to HTML.
  • 28. #DocAsCode #voxxed_lu [[lst-wikitext1, Listing 1]] [source,java] ---- public static String toHtml(String mediawikiText) { StringWriter writer = new StringWriter(); MarkupParser parser = new MarkupParser(new MediaWikiLanguage(), n parser.parse(mediawikiText); // <1> return writer.toString(); } ---- <1> Main call of the Mylyn Wikitext framework == Usage of Mylyn wikitext With the method `toHtml(String)` in <<lst-wikitext1>> you can convert a text from Mediawiki Language to HTML.
  • 29. #DocAsCode #voxxed_lu [[lst-wikitext1, Listing 1]] [source,java] ---- include::src/main/java/MediawikiTest.java[tags=method] ---- <1> Main call of the Mylyn Wikitext framework == Usage of Mylyn wikitext With the method `toHtml(String)` in <<lst-wikitext1>> you can convert a text from Mediawiki Language to HTML. code snippet taken from real source code
  • 30. #DocAsCode #voxxed_lu public class MediawikiTest { //tag::method[] public static String toHtml(String mediawikiText) { StringWriter writer = new StringWriter(); MarkupParser parser = new MarkupParser(new MediaWikiLanguage(), new H parser.parse(mediawikiText); // <1> return writer.toString(); } //end::method[] @Test public void test() { StringBuilder sb = new StringBuilder(); sb.append("= Heading 1 =n"); sb.append("n"); sb.append("Hello World!n"); sb.append("n"); #DocAsCode #voxxed_lu
  • 32. #DocAsCode #voxxed_lu * Add page `OrganizationTablePage` with title "Organizations" using the Scout new page wizard [[lst-contacts_OrganizationTablePage, Listing OrganizationTablePage]] [source,java] .Initial implementation of class OrganizationTablePage. ---- include::{codedir}/contacts/org.eclipse.scout.contacts.clie ---- <1> Make sure to add a translated text entry for "Organizations" using the Scout NLS tooling The implementation of class `OrganizationTablePage` using the Scout new page wizard then looks as shown in <<lst- contacts_OrganizationTablePage>>.
  • 34. #DocAsCode #voxxed_lu // tag::PageInit[] // tag::childPage[] @PageData(OrganizationTablePageData.class) public class OrganizationTablePage extends AbstractPageWithTable<OrganizationTablePage.Table> { // end::childPage[] @Override protected String getConfiguredTitle() { return TEXTS.get("Organizations"); // <1> } // end::PageInit[] // tag::childPage[] @Override protected IPage<?> execCreateChildPage(ITableRow row) { OrganizationNodePage childPage;
  • 35. #DocAsCode #voxxed_lu Build Logs 2017-06-12 15:51:21.337 [INFO] 2017-06-12 15:51:21.338 [INFO] --- asciidoctor-maven-plugin:1.5.5:process-asciidoc (boo 2017-06-12 15:51:24.852 [INFO] Using 'UTF-8' encoding to copy filtered resources. 2017-06-12 15:51:24.852 [INFO] ignoreDelta true 2017-06-12 15:51:24.856 [INFO] Copying 0 resource 2017-06-12 15:51:39.970 asciidoctor: WARNING: _TutorialStep2.adoc: line 247: no callout 2017-06-12 15:52:16.775 [INFO] 2017-06-12 15:52:16.775 [INFO] --- asciidoctor-maven-plugin:1.5.5:process-asciidoc (boo 2017-06-12 15:52:17.190 [INFO] Using 'UTF-8' encoding to copy filtered resources. 2017-06-12 15:52:17.191 [INFO] ignoreDelta true 2017-06-12 15:52:17.191 [INFO] Copying 0 resource
  • 36. #DocAsCode #voxxed_lu Warning  Dans les logs => Monitorer https://github.com/asciidoctor/asciidoctor/issues/44
  • 38. #DocAsCode #voxxed_lu  Organization: jmini  Repository: jxlint-experiments https://github.com/jmini/jxlint-experiments/  Organization: eclipsescout  Repository: eclipsescout.github.io https://github.com/eclipsescout/eclipsescout.github.io GitHub pages https://eclipsescout.github.io https://jmini.github.io/jxlint-experiments master gh-pages
  • 41. #DocAsCode #voxxed_lu git commit -a -m "Update doc ${DOC_JOB_VERSION}" || true Execute shell git add -A && git commit -m "Update doc ${DOC_JOB_VERSION}" || true Jenkins config
  • 42. #DocAsCode #voxxed_lu Le pipeline complet docs #DocAsCode #voxxed_lu
  • 43. #DocAsCode #voxxed_lu <h2 id="scout-platform"><a class="anchor" href="#scout-platform" <div class="sectionbody"> <div class="paragraph"> <p>Scout contains a platform which provides basic functionali </div> <div class="ulist"> <ul> <li> <p><a href="#sec-app.lifecycle">Application Lifecycle M <li> <p><a href="#sec-bean.manager">Object Instance Manageme <li> <p><a href="#sec-config.management">Configuration Manag <li> <p><a href="#sec-class.inventory">Application Inventory <div class="sect1">
  • 49. #DocAsCode #voxxed_lu  Screenshots würde ich jeweils ohne den Browserrahmen machen  Die Bildbeschriftungen sind noch auf Englisch (Figure statt Abbildung)
  • 51. #DocAsCode #voxxed_lu «documentation as code» «automatisation»