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

Oliver Busse
Oliver BusseSenior ICS Consultant & Software Architect bei We4IT Group um We4IT Group
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)
1 von 49

Recomendados

Nagios Conference 2011 - Nathan Vonnahme - Integrating Nagios With Test Drive... von
Nagios Conference 2011 - Nathan Vonnahme - Integrating Nagios With Test Drive...Nagios Conference 2011 - Nathan Vonnahme - Integrating Nagios With Test Drive...
Nagios Conference 2011 - Nathan Vonnahme - Integrating Nagios With Test Drive...Nagios
1.1K views69 Folien
Nagios Conference 2012 - Mike Weber - NRPE von
Nagios Conference 2012 - Mike Weber - NRPENagios Conference 2012 - Mike Weber - NRPE
Nagios Conference 2012 - Mike Weber - NRPENagios
1.9K views44 Folien
Introduction to node.js By Ahmed Assaf von
Introduction to node.js  By Ahmed AssafIntroduction to node.js  By Ahmed Assaf
Introduction to node.js By Ahmed AssafAhmed Assaf
198 views41 Folien
Node js von
Node jsNode js
Node jsChirag Parmar
2.9K views28 Folien
Артем Маркушев - JavaScript von
Артем Маркушев - JavaScriptАртем Маркушев - JavaScript
Артем Маркушев - JavaScriptDataArt
681 views35 Folien
Abhishek_Kumar von
Abhishek_KumarAbhishek_Kumar
Abhishek_KumarAbhishek Kumar
112 views8 Folien

Más contenido relacionado

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

Day In A Life Of A Node.js Developer von
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!
1.2K views23 Folien
PHP QA Tools von
PHP QA ToolsPHP QA Tools
PHP QA Toolsrjsmelo
2.1K views21 Folien
OSDC.no 2015 introduction to node.js workshop von
OSDC.no 2015 introduction to node.js workshopOSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshopleffen
341 views28 Folien
Zend Framework Foundations von
Zend Framework FoundationsZend Framework Foundations
Zend Framework FoundationsChuck Reeves
668 views78 Folien
MeaNstack on Docker von
MeaNstack on DockerMeaNstack on Docker
MeaNstack on DockerDaniel Ku
1.9K views54 Folien
Kubernetes Navigation Stories – DevOpsStage 2019, Kyiv von
Kubernetes Navigation Stories – DevOpsStage 2019, KyivKubernetes Navigation Stories – DevOpsStage 2019, Kyiv
Kubernetes Navigation Stories – DevOpsStage 2019, KyivAleksey Asiutin
213 views41 Folien

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

Day In A Life Of A Node.js Developer von Edureka!
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
Edureka!1.2K views
PHP QA Tools von rjsmelo
PHP QA ToolsPHP QA Tools
PHP QA Tools
rjsmelo2.1K views
OSDC.no 2015 introduction to node.js workshop von leffen
OSDC.no 2015 introduction to node.js workshopOSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshop
leffen341 views
Zend Framework Foundations von Chuck Reeves
Zend Framework FoundationsZend Framework Foundations
Zend Framework Foundations
Chuck Reeves668 views
MeaNstack on Docker von Daniel Ku
MeaNstack on DockerMeaNstack on Docker
MeaNstack on Docker
Daniel Ku1.9K views
Kubernetes Navigation Stories – DevOpsStage 2019, Kyiv von Aleksey Asiutin
Kubernetes Navigation Stories – DevOpsStage 2019, KyivKubernetes Navigation Stories – DevOpsStage 2019, Kyiv
Kubernetes Navigation Stories – DevOpsStage 2019, Kyiv
Aleksey Asiutin213 views
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel) von ZFConf Conference
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 Conference3.9K views
NodeJS : Communication and Round Robin Way von Edureka!
NodeJS : Communication and Round Robin WayNodeJS : Communication and Round Robin Way
NodeJS : Communication and Round Robin Way
Edureka!2.9K views
"JavaME + Android in action" CCT-CEJUG Dezembro 2008 von Vando Batista
"JavaME + Android in action" CCT-CEJUG Dezembro 2008"JavaME + Android in action" CCT-CEJUG Dezembro 2008
"JavaME + Android in action" CCT-CEJUG Dezembro 2008
Vando Batista1.3K views
Zend Framework 2 quick start von Enrico Zimuel
Zend Framework 2 quick startZend Framework 2 quick start
Zend Framework 2 quick start
Enrico Zimuel9.6K views
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio... von Olivier Destrebecq
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 Destrebecq620 views
Debugging PHP with xDebug inside of Eclipse PDT 2.1 von Bastian Feder
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
Bastian Feder6K views
Node.js Build, Deploy and Scale Webinar von jguerrero999
Node.js Build, Deploy and Scale WebinarNode.js Build, Deploy and Scale Webinar
Node.js Build, Deploy and Scale Webinar
jguerrero999622 views
Inside neutron 2 von Robin Gong
Inside neutron 2Inside neutron 2
Inside neutron 2
Robin Gong15.4K views
Front matter: Next Level Front End Deployments on OpenShift von Lance Ball
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
Lance Ball95 views
NetWeaver Developer Studio for New-Beas von Chander445
NetWeaver Developer Studio for New-BeasNetWeaver Developer Studio for New-Beas
NetWeaver Developer Studio for New-Beas
Chander4451.8K views

Más de Oliver Busse

HCL Domino Volt - der NSF Killer? von
HCL Domino Volt - der NSF Killer?HCL Domino Volt - der NSF Killer?
HCL Domino Volt - der NSF Killer?Oliver Busse
142 views43 Folien
Outlook becomes a Team Player - with a clever add-in von
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
116 views26 Folien
DNUG Development Day 2019 von
DNUG Development Day 2019DNUG Development Day 2019
DNUG Development Day 2019Oliver Busse
376 views23 Folien
DNUG44 Watson Workspace von
DNUG44 Watson WorkspaceDNUG44 Watson Workspace
DNUG44 Watson WorkspaceOliver Busse
255 views24 Folien
Paradiesisch - OpenNTF von
Paradiesisch - OpenNTFParadiesisch - OpenNTF
Paradiesisch - OpenNTFOliver Busse
269 views38 Folien
Find your data von
Find your dataFind your data
Find your dataOliver Busse
962 views20 Folien

Más de Oliver Busse(20)

HCL Domino Volt - der NSF Killer? von Oliver Busse
HCL Domino Volt - der NSF Killer?HCL Domino Volt - der NSF Killer?
HCL Domino Volt - der NSF Killer?
Oliver Busse142 views
Outlook becomes a Team Player - with a clever add-in von Oliver Busse
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
Oliver Busse116 views
DNUG Development Day 2019 von Oliver Busse
DNUG Development Day 2019DNUG Development Day 2019
DNUG Development Day 2019
Oliver Busse376 views
DNUG44 Watson Workspace von Oliver Busse
DNUG44 Watson WorkspaceDNUG44 Watson Workspace
DNUG44 Watson Workspace
Oliver Busse255 views
Paradiesisch - OpenNTF von Oliver Busse
Paradiesisch - OpenNTFParadiesisch - OpenNTF
Paradiesisch - OpenNTF
Oliver Busse269 views
ISBG 2016 - XPages on IBM Bluemix von Oliver Busse
ISBG 2016 - XPages on IBM BluemixISBG 2016 - XPages on IBM Bluemix
ISBG 2016 - XPages on IBM Bluemix
Oliver Busse616 views
Utilizing the OpenNTF Domino API von Oliver Busse
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino API
Oliver Busse912 views
Utilizing the open ntf domino api von Oliver Busse
Utilizing the open ntf domino apiUtilizing the open ntf domino api
Utilizing the open ntf domino api
Oliver Busse782 views
XPages on Bluemix - the Do's and Dont's von Oliver Busse
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
Oliver Busse1.4K views
Utilizing the OpenNTF Domino API von Oliver Busse
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino API
Oliver Busse3.2K views
SUTOL 2015 - Utilizing the OpenNTF Domino API von Oliver Busse
SUTOL 2015 - Utilizing the OpenNTF Domino APISUTOL 2015 - Utilizing the OpenNTF Domino API
SUTOL 2015 - Utilizing the OpenNTF Domino API
Oliver Busse1.1K views
Out of the Blue - the Workflow in Bluemix Development von Oliver Busse
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
Oliver Busse3.2K views
Transformations - a TLCC & Teamstudio Webinar von Oliver Busse
Transformations - a TLCC & Teamstudio WebinarTransformations - a TLCC & Teamstudio Webinar
Transformations - a TLCC & Teamstudio Webinar
Oliver Busse1.3K views
Out of the Blue: Getting started with IBM Bluemix development von Oliver Busse
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
Oliver Busse1.7K views
Fix & fertig: Best Practises für "XPages-Migranten" von Oliver 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"
Oliver Busse1.7K views
Dnug 112014 modernization_openn_ntf_ersatzsession von Oliver Busse
Dnug 112014 modernization_openn_ntf_ersatzsessionDnug 112014 modernization_openn_ntf_ersatzsession
Dnug 112014 modernization_openn_ntf_ersatzsession
Oliver Busse931 views
DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe... von Oliver 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...
Oliver Busse643 views

Último

Playwright Retries von
Playwright RetriesPlaywright Retries
Playwright Retriesartembondar5
7 views1 Folie
Agile 101 von
Agile 101Agile 101
Agile 101John Valentino
13 views20 Folien
Mobile App Development Company von
Mobile App Development CompanyMobile App Development Company
Mobile App Development CompanyRichestsoft
5 views6 Folien
Chat GPTs von
Chat GPTsChat GPTs
Chat GPTsGene Leybzon
13 views36 Folien
predicting-m3-devopsconMunich-2023.pptx von
predicting-m3-devopsconMunich-2023.pptxpredicting-m3-devopsconMunich-2023.pptx
predicting-m3-devopsconMunich-2023.pptxTier1 app
10 views24 Folien
Introduction to Git Source Control von
Introduction to Git Source ControlIntroduction to Git Source Control
Introduction to Git Source ControlJohn Valentino
8 views18 Folien

Último(20)

Mobile App Development Company von Richestsoft
Mobile App Development CompanyMobile App Development Company
Mobile App Development Company
Richestsoft 5 views
predicting-m3-devopsconMunich-2023.pptx von Tier1 app
predicting-m3-devopsconMunich-2023.pptxpredicting-m3-devopsconMunich-2023.pptx
predicting-m3-devopsconMunich-2023.pptx
Tier1 app10 views
Electronic AWB - Electronic Air Waybill von Freightoscope
Electronic AWB - Electronic Air Waybill Electronic AWB - Electronic Air Waybill
Electronic AWB - Electronic Air Waybill
Freightoscope 6 views
Automated Testing of Microsoft Power BI Reports von RTTS
Automated Testing of Microsoft Power BI ReportsAutomated Testing of Microsoft Power BI Reports
Automated Testing of Microsoft Power BI Reports
RTTS11 views
predicting-m3-devopsconMunich-2023-v2.pptx von Tier1 app
predicting-m3-devopsconMunich-2023-v2.pptxpredicting-m3-devopsconMunich-2023-v2.pptx
predicting-m3-devopsconMunich-2023-v2.pptx
Tier1 app14 views
ADDO_2022_CICID_Tom_Halpin.pdf von TomHalpin9
ADDO_2022_CICID_Tom_Halpin.pdfADDO_2022_CICID_Tom_Halpin.pdf
ADDO_2022_CICID_Tom_Halpin.pdf
TomHalpin96 views
Understanding HTML terminology von artembondar5
Understanding HTML terminologyUnderstanding HTML terminology
Understanding HTML terminology
artembondar58 views

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