SlideShare ist ein Scribd-Unternehmen logo
1 von 49
Downloaden Sie, um offline zu lesen
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)

Weitere ähnliche Inhalte

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von 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
 

Mehr von 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...
 

Kürzlich hochgeladen

introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...kalichargn70th171
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 

Kürzlich hochgeladen (20)

introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 

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