SlideShare uma empresa Scribd logo
1 de 49
Baixar para ler offline
De07
TheNERDstuff:openingDominotothe
modernwebdeveloper
JanKrejcarek
PPFbanka(CZ)
@jan_krejcarek
OliverBusse
We4IT(D)
@zeromancer1972
Agenda
Spoiler:NERD=Node.js,Express,React,Domino
Node.jsintroduction
AppDevPack
Proton,DesignCatalog&DQL
Development,Testing,Deployment
CRUDdemo
Securityoptions
GettingHelp
Resume:why?
Q&A
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Node.jsintroduction
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Node.jsisNOTaserver
Butyoucancodeone
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Simplestserverexample
const http = require('http');
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.write(new Date().toISOString());
res.end();
});
server.listen({port:8080}, () => {
console.log("listening")
});
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
FrameworksforNode.jswebapps
Express
Koa
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Expressbasicprinciple
Codefortheendpoint:
router.get('/certificates/expiring/:someDate?', async (req, res, next) => {
let d = null;
if (typeof req.params.someDate != 'undefined') {
d = parse(req.params.someDate);
} else {
d = addMonths(endOfDay(new Date()), 3);
}
try {
var docs = await dao.getCertificatesExpiringBefore(d);
res.json(docs);
} catch (error) {
res.status(500).json({error:error.message})
}
})
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
DominoAppDevPack
Standalonedistribution(partnumberCC0NGEN)
NotpartoftheNotes/Dominoinstallationpackage
NotsupportedinDominoDesigner(whichisgood)
AvailableforDominoonLinuxandWindows(sincev1.0.1,March26,2019)
Quarterlyreleases
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
ContentoftheAppDevPack
Protonservertask
DominoDBmoduleforNode.js(notavailableonnpmjs.org,yet)
Demoapplicationwithdata
Documentation
Installationprocedure
APIdocumentation
DominoQueryLanguagesyntax
IAMexamples
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Protonschema
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Protontaskinstallation
Copythe"proton"filetotheDominoprogramdirectory
Add"Proton"totheServerTasksvariableinnotes.initostarttheProton
taskwhenDominostarts
ConfiguretheProtonusingnotes.inivariables:
PROTON_LISTEN_ADDRESS=0.0.0.0
Listensonallavailablenetworkinterfaces
PROTON_LISTEN_PORT=30000
TCP/IPporttouse
PROTON_SSL=1
UseTLSforcommunication
PROTON_KEYFILE=server.kyr
CanbethesameDominoalreadyusesforTLS
PROTON_AUTHENTICATION=client_cert
AuthenticateNode.jsappsusingacertificate
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Recommendedsettingforproduction
Encryptthecommunication
Authenticateapplicationsusingacertificate
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Three‑tierarchitecture
BymovingapplicationlogictoNode.jsandthepresentationlogictothe
browserweareactuallymovingtoathree‑tierarchitecturewhereDomino
functionsasastorage
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Proton
Three‑tierarchitecture
Inthatcaseuserswillbeauthenticatedbytheapplicationlayer(Node.js)
andtheNode.jsapplicationwilluseanotheraccounttoaccessthedata
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Proton
Howitworks
ProtonseesNode.jsapplicationconnectingusingDominoDBmoduleasa
userwithcertainrights
Alloperationsondataareexecutedundertheauthorityofthisuser
ThisusersneedssufficientrightsintheACLofthedatabaseituses
ItistheNode.jsapplication'stasktoensurecorrectaccesstodatatoits
users
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Proton
Authenticatingusingacertificate
Node.jsapplicationusingDominoDBneedstohaveaPersondocumentin
theDominoDirectory
ItalsoneedsanX.509certificateandholdtheprivatekeytothatcertificate
ThecertificateneedstobeloadedtothePersondocument
ImportInternetCertificateactiononthePersondocument
ThenameinthePersondocumentmustcorrespondtothesubject's
commonnamefromthecertificate
TheuserneedstohaveaccesstothedatabaseviaACL
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Persondocumentfortheapplication
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
ACLrecordinthedatabase
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
RunningProton
commandontheDominoserverconsole:loadproton
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
DesignCatalog,DQL
domino‑dbmoduleloadsacollectionofdocumentsbyrunningaDQL
query.
DesignCatalogisneededforDQLtoworkproperly.
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
DesignCatalog,DQL
Addadatabasetothecatalog:
load updall <database path> -e
Updateadatabaseinthecatalogwhenthedesignchanges:
load updall <database path> -d
Whentheupdatefails:
runtheupdallagainwiththe‑eflag:
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
DQLFacts1/3
DQLscansalimitednumberofdocumentsandviewentries(200000)
increaseitwithanotes.inisetting(systemwide)
QUERY_MAX_DOCS_SCANNED
QUERY_MAX_VIEW_ENTRIES_SCANNED
DQLqueryrunsforalimitedtime(2minutes)
rethinkyourdesign
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
DQLFacts2/3
ProtonreturnstheresultssortedbyNoteIDandreturnsonlyasubsetofthe
results(max200).
Youhavetoloadallresultsandsortthemyourself
SortingshouldbeavailableinDomino11
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
DQLFacts3/3
"Mindthegap"
DQLqueryneedsspacesaroundoperators,valuesanditemnames
'Cards'.Subtypes ='Beast'
ERR_BAD_REQUEST:Queryisnotunderstandable‑syntaxerror‑MUSThaveat
leastoneoperator
UsetheexplainQuery()methodtoanalyzeyourqueriesandoptimizethem
['Cards'.Subtypes = 'Beast' AND 'Cards'.ConvertedManaCost > 4]
0. AND (childct 2) (totals when complete:) Prep 0.0 msecs, Exec 71.428 msecs, Sc
1.'Cards'.Subtypes = 'Beast' View Column Search estimated cost = 5
Prep 0.326 msecs, Exec 3.506 msecs, ScannedDocs 0, Entries 248, FoundDocs
1.'Cards'.ConvertedManaCost > 4 View Column Search estimated cost = 10
Prep 0.112 msecs, Exec 67.915 msecs, ScannedDocs 0, Entries 4482, FoundDoc
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Settingupyourdevelopmentenvironment
(1)
InstallNode.jsruntime(Win,Mac,Linux)
Grabyourfavoriteeditor(VSCoderecommended)
Inittheproject
mkdir myProject
cd myProject
npm init
Addthedomino‑dbNodepackagetoyourproject
npm install <pathToAppDevPack>/domino-domino-db-1.2.0.tgz -save
Startcoding
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Settingupyourdevelopmentenvironment
(2)
Checkthepackage.jsonfile
itwillalreadycontainthedepencyfordomino/domino‑db
addotherdependencies
Createthestartjavascriptfile
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Testing?Sure!
Severalunittestpackagesavailable
Mocha
Tape
Chai
Sinon
Testsaredefinedinseparatefiles
Testsareconfiguredinthepackage.jsonfile
{
"test-unit": "NODE_ENV=test mocha '/**/*.spec.js'",
}
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Deployment(1)
Scenariostoconsider
deploytoacloudservicelikeAWS,Azure,IBMCloud,Heroku
deploytoon‑premisesenvironment
On‑premises
Doesyourserverhaveinternetaccesstoinstallpackages?
Doesyourserverutilizealoadbalancer?
Hotdeploymentornot?
UsingaDockercontainer?
Usingaproxylikenginx
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Deployment‑usingaproxy
AsNode.jsappscanusedifferentportsyoushouldutilizethemwitha
proxytokeeptheURLendpointssimple
nginxisalightweightproxyserverwhichiseasytosetup
# excerpt from nginx.conf
location /app1 {
proxy_pass http://localhost:3001/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /app2 {
proxy_pass http://localhost:3002/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Deployment‑ProcessManager(1)
Useaprocessmanagertohandleallyourapps
Donotstartyourappsmanuallyorwithasystemdscript/service
pm2ishighlyrecommended
Verysimpletosetup
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Deployment‑ProcessManager(2)
starttheappwiththeprocessmanager
pm2 start myApp.js
showallappsmanagedbypm2
pm2 ls
┌───────────────────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬──────┬
│ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │
├───────────────────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼──────┼
│ node alexa-node-red │ 11 │ N/A │ fork │ 24488 │ online │ 0 │ 2M │
│ node domino-node-list │ 9 │ N/A │ fork │ 24152 │ online │ 0 │ 2M │
│ node rootweb │ 10 │ N/A │ fork │ 24229 │ online │ 0 │ 2M │
│ node-red │ 0 │ N/A │ fork │ 5463 │ online │ 6 │ 49D │
└───────────────────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴──────┴
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Deployment‑ProcessManager(3)
savetheappstothelistofbootableapps
pm2 save
enablepm2tostartallsavedappsatboot
pm2 startup
AllcommandsarethesameonWin,Mac&Linux
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
domino‑dbmodule
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
domino‑dbclasses
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
domino‑dbmodule
providesfourbasicoperationswithdata‑Create,Read,Update,Delete
hasasingleentrypoint:userServer()function
const { useServer } = require('@domino/domino-db');
const server = await useServer({hostName: 'localhost', connection:{ port: '30000' }});
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
domino‑dbcommandlineexample
const { useServer } = require('@domino/domino-db');
const serverConfig = {hostName: 'localhost',connection:{ port: '30000'
const databaseConfig = { filePath: 'database/node-demo.nsf' };
(async function() {
try {
const server = await useServer(serverConfig);
const db = await server.useDatabase(databaseConfig);
const response = await db.bulkReadDocuments({
query: "'AllContacts'.State = 'FL'",
itemNames: ['LastFirstName', 'Email'],
computeOptions: { computeWithForm: true }
});
console.log(JSON.stringify(response));
} catch (error) {
console.log(`${error.code}: ${error.message}`)
}
})()
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
DEMO‑WebApplication
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
CRUDDetails
CalluseServer()andServer::useDatabase()onlyonceandcachethe
instancesinacustomDataAccessObject
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
CRUDDetails‑Create
Whencreatingadocument,youneedtoprovidethe"Form"property
WhenwritingaDateitem,youneedtospecifyitlikethis:
DueDate: { type: 'datetime', data: '2019-06-30'}
Timeneedstobespecifiedtoahundredthofasecond,youcan'tdirectly
useaJavaScriptDateobject
YoucanspecifycomputeOptionstocomputeitemsinthedocument
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
CRUDDetails‑Read
Youalwaysspecifywhichitemsyouwanttoreceive(keepstheamountof
transfereddatalow)
usecomputeOptionsparametertocomputethecontentofcomputedfor
displayitems
const response = await db.bulkReadDocuments({
query: "'AllContacts'.State = 'FL'",
itemNames: ['LastFirstName', 'Email'],
computeOptions: { computeWithForm: true }
});
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
CRUDDetails‑Update
Selectionofoptionsforupdatingdocuments
changeselecteditemsinoneormoredocumentsatonce
replaceallitemswithasetofotheritems
Documentsareimmediatelysaved,thereisnosave()method
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
SecurityOptions(1)
IAM(IdentityAccessManagement)enablesaccessfromaNode.jsappto
DominoasarealDNNuser
UsesOAuthmechanismtoauthorizeagainstDomino
Domino10providesOAuth(kindof)
Accessisrestrictedtocertainscopes
open_id
offline_access
das.freebusy
das.calendar.read.with.shared
das.calendar.write.with.shared
CurrentlyIAMdoesnotsupporttheNode.jsAPIforDomino,onlyDAS:‑(
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
SecurityOptions(2)
SetupDominoasanOAuthprovideristimeconsuming(expect1workday)
Youwillneedtotouchthefollowingareasof(Domino)administration
Certificatehandling
Keyringgeneration
DominowithSSL
DominoLDAPconfiguration
OAuthDSAPIsetup
SetuptheIAMserviceapp(serverpart)
CustomizetheIAMserviceapp(optional)
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
SecurityOptions(3)
IAMcomeswithexamplesofdifferentauthorizationflows
AuthorizationCodeFlow
ClientCredentialFlow
Theseexamplescanbeusedtointegratethosemechanismtoyourown
app(i.e.IAMclientapp)
AppsmustberegisteredwiththeIAMserviceapp(generatestheappID
andtheappsecret)
YouareresponsibleforthetokenhandlingwhenaccessingtheDomino
server!
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
GettingHelp/Resume:why?
NERDiscompletelydifferentfromtraditionalNotesdevelopment
Gettinghelp
DominowithNodeisdiscussedintheOpenNTFSlackchanneldominonodejs
ReachoutfortheexpertslikeDanDumont,PeiSunorHeikoVoigt(allactiveon
Slack)
Whyyoushoulduseit?
ItopensDominoforthemodernwebdeveloper(newbloodforthebestapp
serverintheworld)
OfferstonsofnewpossibilitiescomingwithvariousNodemodulesandplugins
Usinge.g.Node‑REDdirectstothereallow‑codearea‑butthisiscontentfor
separatesessions;‑)
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Q&A
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Resources
WebinarDQL&FAQ:https://www.ibm.com/blogs/collaboration‑solutions/2019/02/04/domino‑query‑language‑faq
DominoAppDevPackDocumentation:https://doc.cwpcollaboration.com/appdevpack/docs/en/homepage.html
VisualStudioCodeEditor:https://code.visualstudio.com/
UnittestingandTDDinNode.js:https://www.codementor.io/davidtang/unit‑testing‑and‑tdd‑in‑node‑js‑part‑1‑8t714s877
Node.jsUnitTesting:https://blog.risingstack.com/node‑hero‑node‑js‑unit‑testing‑tutorial/
Nginxwebserver:https://nginx.org/en/docs/
pm2processmanager:https://pm2.io/runtime/
StackOverflowNode.js:https://stackoverflow.com/questions/tagged/node.js
OpenNTFSlack:https://slackin.openntf.org/
Node‑RED:https://nodered.org/
SessionRepo:https://gitlab.com/obusse/engage‑2019
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)

Mais conteúdo relacionado

Semelhante a The NERD stuff - opening for Domino to the modern web developer

Day In A Life Of A Node.js Developer
Day In A Life Of A Node.js DeveloperDay In A Life Of A Node.js Developer
Day In A Life Of A Node.js DeveloperEdureka!
 
PHP QA Tools
PHP QA ToolsPHP QA Tools
PHP QA Toolsrjsmelo
 
OSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshopOSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshopleffen
 
Zend Framework Foundations
Zend Framework FoundationsZend Framework Foundations
Zend Framework FoundationsChuck Reeves
 
MeaNstack on Docker
MeaNstack on DockerMeaNstack on Docker
MeaNstack on DockerDaniel Ku
 
Kubernetes Navigation Stories – DevOpsStage 2019, Kyiv
Kubernetes Navigation Stories – DevOpsStage 2019, KyivKubernetes Navigation Stories – DevOpsStage 2019, Kyiv
Kubernetes Navigation Stories – DevOpsStage 2019, KyivAleksey Asiutin
 
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)ZFConf Conference
 
NodeJS : Communication and Round Robin Way
NodeJS : Communication and Round Robin WayNodeJS : Communication and Round Robin Way
NodeJS : Communication and Round Robin WayEdureka!
 
"JavaME + Android in action" CCT-CEJUG Dezembro 2008
"JavaME + Android in action" CCT-CEJUG Dezembro 2008"JavaME + Android in action" CCT-CEJUG Dezembro 2008
"JavaME + Android in action" CCT-CEJUG Dezembro 2008Vando Batista
 
Zend Framework 2 quick start
Zend Framework 2 quick startZend Framework 2 quick start
Zend Framework 2 quick startEnrico Zimuel
 
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...Olivier Destrebecq
 
Debugging PHP with xDebug inside of Eclipse PDT 2.1
Debugging PHP with xDebug inside of Eclipse PDT 2.1Debugging PHP with xDebug inside of Eclipse PDT 2.1
Debugging PHP with xDebug inside of Eclipse PDT 2.1Bastian Feder
 
Node.js Build, Deploy and Scale Webinar
Node.js Build, Deploy and Scale WebinarNode.js Build, Deploy and Scale Webinar
Node.js Build, Deploy and Scale Webinarjguerrero999
 
Inside neutron 2
Inside neutron 2Inside neutron 2
Inside neutron 2Robin Gong
 
Front matter: Next Level Front End Deployments on OpenShift
Front matter: Next Level Front End Deployments on OpenShiftFront matter: Next Level Front End Deployments on OpenShift
Front matter: Next Level Front End Deployments on OpenShiftLance Ball
 
NetWeaver Developer Studio for New-Beas
NetWeaver Developer Studio for New-BeasNetWeaver Developer Studio for New-Beas
NetWeaver Developer Studio for New-BeasChander445
 
How to Manage Cloud Infrastructures using Zend Framework
How to Manage Cloud Infrastructures using Zend FrameworkHow to Manage Cloud Infrastructures using Zend Framework
How to Manage Cloud Infrastructures using Zend FrameworkZend by Rogue Wave Software
 

Semelhante a The NERD stuff - opening for Domino to the modern web developer (20)

Day In A Life Of A Node.js Developer
Day In A Life Of A Node.js DeveloperDay In A Life Of A Node.js Developer
Day In A Life Of A Node.js Developer
 
PHP QA Tools
PHP QA ToolsPHP QA Tools
PHP QA Tools
 
OSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshopOSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshop
 
Zend Framework Foundations
Zend Framework FoundationsZend Framework Foundations
Zend Framework Foundations
 
MeaNstack on Docker
MeaNstack on DockerMeaNstack on Docker
MeaNstack on Docker
 
Kubernetes Navigation Stories – DevOpsStage 2019, Kyiv
Kubernetes Navigation Stories – DevOpsStage 2019, KyivKubernetes Navigation Stories – DevOpsStage 2019, Kyiv
Kubernetes Navigation Stories – DevOpsStage 2019, Kyiv
 
SWT Tech Sharing: Node.js + Redis
SWT Tech Sharing: Node.js + RedisSWT Tech Sharing: Node.js + Redis
SWT Tech Sharing: Node.js + Redis
 
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
 
NodeJS : Communication and Round Robin Way
NodeJS : Communication and Round Robin WayNodeJS : Communication and Round Robin Way
NodeJS : Communication and Round Robin Way
 
"JavaME + Android in action" CCT-CEJUG Dezembro 2008
"JavaME + Android in action" CCT-CEJUG Dezembro 2008"JavaME + Android in action" CCT-CEJUG Dezembro 2008
"JavaME + Android in action" CCT-CEJUG Dezembro 2008
 
Zend Framework 2 quick start
Zend Framework 2 quick startZend Framework 2 quick start
Zend Framework 2 quick start
 
Node.js with Express
Node.js with ExpressNode.js with Express
Node.js with Express
 
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...
 
Debugging PHP with xDebug inside of Eclipse PDT 2.1
Debugging PHP with xDebug inside of Eclipse PDT 2.1Debugging PHP with xDebug inside of Eclipse PDT 2.1
Debugging PHP with xDebug inside of Eclipse PDT 2.1
 
Node.js Build, Deploy and Scale Webinar
Node.js Build, Deploy and Scale WebinarNode.js Build, Deploy and Scale Webinar
Node.js Build, Deploy and Scale Webinar
 
Inside neutron 2
Inside neutron 2Inside neutron 2
Inside neutron 2
 
Develop microservices in php
Develop microservices in phpDevelop microservices in php
Develop microservices in php
 
Front matter: Next Level Front End Deployments on OpenShift
Front matter: Next Level Front End Deployments on OpenShiftFront matter: Next Level Front End Deployments on OpenShift
Front matter: Next Level Front End Deployments on OpenShift
 
NetWeaver Developer Studio for New-Beas
NetWeaver Developer Studio for New-BeasNetWeaver Developer Studio for New-Beas
NetWeaver Developer Studio for New-Beas
 
How to Manage Cloud Infrastructures using Zend Framework
How to Manage Cloud Infrastructures using Zend FrameworkHow to Manage Cloud Infrastructures using Zend Framework
How to Manage Cloud Infrastructures using Zend Framework
 

Mais de Oliver Busse

HCL Domino Volt - der NSF Killer?
HCL Domino Volt - der NSF Killer?HCL Domino Volt - der NSF Killer?
HCL Domino Volt - der NSF Killer?Oliver Busse
 
Outlook becomes a Team Player - with a clever add-in
Outlook becomes a Team Player - with a clever add-inOutlook becomes a Team Player - with a clever add-in
Outlook becomes a Team Player - with a clever add-inOliver Busse
 
DNUG Development Day 2019
DNUG Development Day 2019DNUG Development Day 2019
DNUG Development Day 2019Oliver Busse
 
DNUG44 Watson Workspace
DNUG44 Watson WorkspaceDNUG44 Watson Workspace
DNUG44 Watson WorkspaceOliver Busse
 
Paradiesisch - OpenNTF
Paradiesisch - OpenNTFParadiesisch - OpenNTF
Paradiesisch - OpenNTFOliver Busse
 
ISBG 2016 - XPages on IBM Bluemix
ISBG 2016 - XPages on IBM BluemixISBG 2016 - XPages on IBM Bluemix
ISBG 2016 - XPages on IBM BluemixOliver Busse
 
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIOliver Busse
 
Utilizing the open ntf domino api
Utilizing the open ntf domino apiUtilizing the open ntf domino api
Utilizing the open ntf domino apiOliver Busse
 
XPages on Bluemix - the Do's and Dont's
XPages on Bluemix - the Do's and Dont'sXPages on Bluemix - the Do's and Dont's
XPages on Bluemix - the Do's and Dont'sOliver Busse
 
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIOliver Busse
 
SUTOL 2015 - Utilizing the OpenNTF Domino API
SUTOL 2015 - Utilizing the OpenNTF Domino APISUTOL 2015 - Utilizing the OpenNTF Domino API
SUTOL 2015 - Utilizing the OpenNTF Domino APIOliver Busse
 
Out of the Blue - the Workflow in Bluemix Development
Out of the Blue - the Workflow in Bluemix DevelopmentOut of the Blue - the Workflow in Bluemix Development
Out of the Blue - the Workflow in Bluemix DevelopmentOliver Busse
 
Transformations - a TLCC & Teamstudio Webinar
Transformations - a TLCC & Teamstudio WebinarTransformations - a TLCC & Teamstudio Webinar
Transformations - a TLCC & Teamstudio WebinarOliver Busse
 
Out of the Blue: Getting started with IBM Bluemix development
Out of the Blue: Getting started with IBM Bluemix developmentOut of the Blue: Getting started with IBM Bluemix development
Out of the Blue: Getting started with IBM Bluemix developmentOliver Busse
 
Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Oliver Busse
 
Dnug 112014 modernization_openn_ntf_ersatzsession
Dnug 112014 modernization_openn_ntf_ersatzsessionDnug 112014 modernization_openn_ntf_ersatzsession
Dnug 112014 modernization_openn_ntf_ersatzsessionOliver Busse
 
DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...
DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...
DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...Oliver Busse
 

Mais de Oliver Busse (20)

HCL Domino Volt - der NSF Killer?
HCL Domino Volt - der NSF Killer?HCL Domino Volt - der NSF Killer?
HCL Domino Volt - der NSF Killer?
 
Outlook becomes a Team Player - with a clever add-in
Outlook becomes a Team Player - with a clever add-inOutlook becomes a Team Player - with a clever add-in
Outlook becomes a Team Player - with a clever add-in
 
DNUG Development Day 2019
DNUG Development Day 2019DNUG Development Day 2019
DNUG Development Day 2019
 
DNUG44 Watson Workspace
DNUG44 Watson WorkspaceDNUG44 Watson Workspace
DNUG44 Watson Workspace
 
Paradiesisch - OpenNTF
Paradiesisch - OpenNTFParadiesisch - OpenNTF
Paradiesisch - OpenNTF
 
Find your data
Find your dataFind your data
Find your data
 
ISBG 2016 - XPages on IBM Bluemix
ISBG 2016 - XPages on IBM BluemixISBG 2016 - XPages on IBM Bluemix
ISBG 2016 - XPages on IBM Bluemix
 
GraphDb in XPages
GraphDb in XPagesGraphDb in XPages
GraphDb in XPages
 
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino API
 
Utilizing the open ntf domino api
Utilizing the open ntf domino apiUtilizing the open ntf domino api
Utilizing the open ntf domino api
 
XPages on Bluemix - the Do's and Dont's
XPages on Bluemix - the Do's and Dont'sXPages on Bluemix - the Do's and Dont's
XPages on Bluemix - the Do's and Dont's
 
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino API
 
SUTOL 2015 - Utilizing the OpenNTF Domino API
SUTOL 2015 - Utilizing the OpenNTF Domino APISUTOL 2015 - Utilizing the OpenNTF Domino API
SUTOL 2015 - Utilizing the OpenNTF Domino API
 
Out of the Blue - the Workflow in Bluemix Development
Out of the Blue - the Workflow in Bluemix DevelopmentOut of the Blue - the Workflow in Bluemix Development
Out of the Blue - the Workflow in Bluemix Development
 
Transformations - a TLCC & Teamstudio Webinar
Transformations - a TLCC & Teamstudio WebinarTransformations - a TLCC & Teamstudio Webinar
Transformations - a TLCC & Teamstudio Webinar
 
Transformations
TransformationsTransformations
Transformations
 
Out of the Blue: Getting started with IBM Bluemix development
Out of the Blue: Getting started with IBM Bluemix developmentOut of the Blue: Getting started with IBM Bluemix development
Out of the Blue: Getting started with IBM Bluemix development
 
Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"
 
Dnug 112014 modernization_openn_ntf_ersatzsession
Dnug 112014 modernization_openn_ntf_ersatzsessionDnug 112014 modernization_openn_ntf_ersatzsession
Dnug 112014 modernization_openn_ntf_ersatzsession
 
DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...
DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...
DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...
 

Último

WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxAnnaArtyushina1
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...masabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburgmasabamasaba
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 

Último (20)

WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 

The NERD stuff - opening for Domino to the modern web developer