Suche senden
Hochladen
The NERD stuff - opening for Domino to the modern web developer
•
3 gefällt mir
•
654 views
Oliver Busse
Folgen
Presentation from Engage 2019 at AutoWorld in Brussels by Jan Krejcarek & Oliver Busse
Weniger lesen
Mehr lesen
Software
Melden
Teilen
Melden
Teilen
1 von 49
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Nagios Conference 2011 - Nathan Vonnahme - Integrating Nagios With Test Drive...
Nagios Conference 2011 - Nathan Vonnahme - Integrating Nagios With Test Drive...
Nagios
Nagios Conference 2012 - Mike Weber - NRPE
Nagios Conference 2012 - Mike Weber - NRPE
Nagios
Introduction to node.js By Ahmed Assaf
Introduction to node.js By Ahmed Assaf
Ahmed Assaf
Node js
Node js
Chirag Parmar
Артем Маркушев - JavaScript
Артем Маркушев - JavaScript
DataArt
Abhishek_Kumar
Abhishek_Kumar
Abhishek Kumar
DevSecCon London 2017 - MacOS security, hardening and forensics 101 by Ben Hu...
DevSecCon London 2017 - MacOS security, hardening and forensics 101 by Ben Hu...
DevSecCon
Day in a life of a node.js developer
Day in a life of a node.js developer
Edureka!
Empfohlen
Nagios Conference 2011 - Nathan Vonnahme - Integrating Nagios With Test Drive...
Nagios Conference 2011 - Nathan Vonnahme - Integrating Nagios With Test Drive...
Nagios
Nagios Conference 2012 - Mike Weber - NRPE
Nagios Conference 2012 - Mike Weber - NRPE
Nagios
Introduction to node.js By Ahmed Assaf
Introduction to node.js By Ahmed Assaf
Ahmed Assaf
Node js
Node js
Chirag Parmar
Артем Маркушев - JavaScript
Артем Маркушев - JavaScript
DataArt
Abhishek_Kumar
Abhishek_Kumar
Abhishek Kumar
DevSecCon London 2017 - MacOS security, hardening and forensics 101 by Ben Hu...
DevSecCon London 2017 - MacOS security, hardening and forensics 101 by Ben Hu...
DevSecCon
Day in a life of a node.js developer
Day in a life of a node.js developer
Edureka!
Day In A Life Of A Node.js Developer
Day In A Life Of A Node.js Developer
Edureka!
PHP QA Tools
PHP QA Tools
rjsmelo
OSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshop
leffen
Zend Framework Foundations
Zend Framework Foundations
Chuck Reeves
MeaNstack on Docker
MeaNstack on Docker
Daniel Ku
Kubernetes Navigation Stories – DevOpsStage 2019, Kyiv
Kubernetes Navigation Stories – DevOpsStage 2019, Kyiv
Aleksey Asiutin
SWT Tech Sharing: Node.js + Redis
SWT Tech Sharing: Node.js + Redis
Infinity Levels Studio
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 Way
Edureka!
"JavaME + Android in action" CCT-CEJUG Dezembro 2008
"JavaME + Android in action" CCT-CEJUG Dezembro 2008
Vando Batista
Zend Framework 2 quick start
Zend Framework 2 quick start
Enrico Zimuel
Node.js with Express
Node.js with Express
Gergely Németh
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.1
Bastian Feder
Node.js Build, Deploy and Scale Webinar
Node.js Build, Deploy and Scale Webinar
jguerrero999
Inside neutron 2
Inside neutron 2
Robin Gong
Develop microservices in php
Develop microservices in php
Zend by Rogue Wave Software
Front matter: Next Level Front End Deployments on OpenShift
Front matter: Next Level Front End Deployments on OpenShift
Lance Ball
NetWeaver Developer Studio for New-Beas
NetWeaver Developer Studio for New-Beas
Chander445
How to Manage Cloud Infrastructures using Zend Framework
How to Manage Cloud Infrastructures using Zend Framework
Zend by Rogue Wave Software
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-in
Oliver Busse
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 Developer
Edureka!
PHP QA Tools
PHP QA Tools
rjsmelo
OSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshop
leffen
Zend Framework Foundations
Zend Framework Foundations
Chuck Reeves
MeaNstack on Docker
MeaNstack on Docker
Daniel Ku
Kubernetes Navigation Stories – DevOpsStage 2019, Kyiv
Kubernetes Navigation Stories – DevOpsStage 2019, Kyiv
Aleksey Asiutin
SWT Tech Sharing: Node.js + Redis
SWT Tech Sharing: Node.js + Redis
Infinity Levels Studio
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 Way
Edureka!
"JavaME + Android in action" CCT-CEJUG Dezembro 2008
"JavaME + Android in action" CCT-CEJUG Dezembro 2008
Vando Batista
Zend Framework 2 quick start
Zend Framework 2 quick start
Enrico Zimuel
Node.js with Express
Node.js with Express
Gergely Németh
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.1
Bastian Feder
Node.js Build, Deploy and Scale Webinar
Node.js Build, Deploy and Scale Webinar
jguerrero999
Inside neutron 2
Inside neutron 2
Robin Gong
Develop microservices in php
Develop microservices in php
Zend by Rogue Wave Software
Front matter: Next Level Front End Deployments on OpenShift
Front matter: Next Level Front End Deployments on OpenShift
Lance Ball
NetWeaver Developer Studio for New-Beas
NetWeaver Developer Studio for New-Beas
Chander445
How to Manage Cloud Infrastructures using Zend Framework
How to Manage Cloud Infrastructures using Zend Framework
Zend 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 Developer
PHP QA Tools
PHP QA Tools
OSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshop
Zend Framework Foundations
Zend Framework Foundations
MeaNstack on Docker
MeaNstack on Docker
Kubernetes Navigation Stories – DevOpsStage 2019, Kyiv
Kubernetes Navigation Stories – DevOpsStage 2019, Kyiv
SWT 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)
NodeJS : 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
Zend Framework 2 quick start
Zend Framework 2 quick start
Node.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...
Debugging 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 Webinar
Inside neutron 2
Inside neutron 2
Develop microservices in php
Develop microservices in php
Front 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-Beas
How 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?
Oliver Busse
Outlook becomes a Team Player - with a clever add-in
Outlook becomes a Team Player - with a clever add-in
Oliver Busse
DNUG Development Day 2019
DNUG Development Day 2019
Oliver Busse
DNUG44 Watson Workspace
DNUG44 Watson Workspace
Oliver Busse
Paradiesisch - OpenNTF
Paradiesisch - OpenNTF
Oliver Busse
Find your data
Find your data
Oliver Busse
ISBG 2016 - XPages on IBM Bluemix
ISBG 2016 - XPages on IBM Bluemix
Oliver Busse
GraphDb in XPages
GraphDb in XPages
Oliver Busse
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino API
Oliver Busse
Utilizing the open ntf domino api
Utilizing the open ntf domino api
Oliver Busse
XPages on Bluemix - the Do's and Dont's
XPages on Bluemix - the Do's and Dont's
Oliver Busse
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino API
Oliver Busse
SUTOL 2015 - Utilizing the OpenNTF Domino API
SUTOL 2015 - Utilizing the OpenNTF Domino API
Oliver Busse
Out of the Blue - the Workflow in Bluemix Development
Out of the Blue - the Workflow in Bluemix Development
Oliver Busse
Transformations - a TLCC & Teamstudio Webinar
Transformations - a TLCC & Teamstudio Webinar
Oliver Busse
Transformations
Transformations
Oliver Busse
Out of the Blue: Getting started with IBM Bluemix development
Out of the Blue: Getting started with IBM Bluemix development
Oliver Busse
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_ersatzsession
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...
Oliver Busse
Mehr von Oliver Busse
(20)
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-in
DNUG Development Day 2019
DNUG Development Day 2019
DNUG44 Watson Workspace
DNUG44 Watson Workspace
Paradiesisch - OpenNTF
Paradiesisch - OpenNTF
Find your data
Find your data
ISBG 2016 - XPages on IBM Bluemix
ISBG 2016 - XPages on IBM Bluemix
GraphDb in XPages
GraphDb in XPages
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino API
Utilizing 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's
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino API
SUTOL 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 Development
Transformations - a TLCC & Teamstudio Webinar
Transformations - a TLCC & Teamstudio Webinar
Transformations
Transformations
Out 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"
Dnug 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...
Kürzlich hochgeladen
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
HimanshiGarg82
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 Applications
Alberto González Trastoy
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
Delhi Call girls
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
Willy Marroquin (WillyDevNET)
Define the academic and professional writing..pdf
Define the academic and professional writing..pdf
PearlKirahMaeRagusta1
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
ThousandEyes
+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.pdf
kalichargn70th171
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 Models
aagamshah0812
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
Jhone 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-...
Steffen Staab
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
ComplianceQuest1
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
Fatema Valibhai
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
kalichargn70th171
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
shikhaohhpro
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...
ICS
Kürzlich hochgeladen
(20)
introduction-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 students
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 Applications
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.pdf
Define 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 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...
The 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...
Unlocking 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 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-...
A 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.com
Learn 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 CCTV
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 NERD stuff - opening for Domino to the modern web developer
1.
De07 TheNERDstuff:openingDominotothe modernwebdeveloper JanKrejcarek PPFbanka(CZ) @jan_krejcarek OliverBusse We4IT(D) @zeromancer1972
2.
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)
3.
Node.jsintroduction Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
4.
Node.jsisNOTaserver Butyoucancodeone Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
5.
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)
6.
FrameworksforNode.jswebapps Express Koa Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
7.
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)
8.
DominoAppDevPack Standalonedistribution(partnumberCC0NGEN) NotpartoftheNotes/Dominoinstallationpackage NotsupportedinDominoDesigner(whichisgood) AvailableforDominoonLinuxandWindows(sincev1.0.1,March26,2019) Quarterlyreleases Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
9.
ContentoftheAppDevPack Protonservertask DominoDBmoduleforNode.js(notavailableonnpmjs.org,yet) Demoapplicationwithdata Documentation Installationprocedure APIdocumentation DominoQueryLanguagesyntax IAMexamples Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
10.
Protonschema Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
11.
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)
12.
Recommendedsettingforproduction Encryptthecommunication Authenticateapplicationsusingacertificate Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
13.
Three‑tierarchitecture BymovingapplicationlogictoNode.jsandthepresentationlogictothe browserweareactuallymovingtoathree‑tierarchitecturewhereDomino functionsasastorage Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
14.
Proton Three‑tierarchitecture Inthatcaseuserswillbeauthenticatedbytheapplicationlayer(Node.js) andtheNode.jsapplicationwilluseanotheraccounttoaccessthedata Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
15.
Proton Howitworks ProtonseesNode.jsapplicationconnectingusingDominoDBmoduleasa userwithcertainrights Alloperationsondataareexecutedundertheauthorityofthisuser ThisusersneedssufficientrightsintheACLofthedatabaseituses ItistheNode.jsapplication'stasktoensurecorrectaccesstodatatoits users Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
16.
Proton Authenticatingusingacertificate Node.jsapplicationusingDominoDBneedstohaveaPersondocumentin theDominoDirectory ItalsoneedsanX.509certificateandholdtheprivatekeytothatcertificate ThecertificateneedstobeloadedtothePersondocument ImportInternetCertificateactiononthePersondocument ThenameinthePersondocumentmustcorrespondtothesubject's commonnamefromthecertificate TheuserneedstohaveaccesstothedatabaseviaACL Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
17.
Persondocumentfortheapplication Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
18.
ACLrecordinthedatabase Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
19.
RunningProton commandontheDominoserverconsole:loadproton Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
20.
DesignCatalog,DQL domino‑dbmoduleloadsacollectionofdocumentsbyrunningaDQL query. DesignCatalogisneededforDQLtoworkproperly. Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
21.
DesignCatalog,DQL Addadatabasetothecatalog: load updall <database
path> -e Updateadatabaseinthecatalogwhenthedesignchanges: load updall <database path> -d Whentheupdatefails: runtheupdallagainwiththe‑eflag: Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
22.
DQLFacts1/3 DQLscansalimitednumberofdocumentsandviewentries(200000) increaseitwithanotes.inisetting(systemwide) QUERY_MAX_DOCS_SCANNED QUERY_MAX_VIEW_ENTRIES_SCANNED DQLqueryrunsforalimitedtime(2minutes) rethinkyourdesign Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
23.
DQLFacts2/3 ProtonreturnstheresultssortedbyNoteIDandreturnsonlyasubsetofthe results(max200). Youhavetoloadallresultsandsortthemyourself SortingshouldbeavailableinDomino11 Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
24.
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)
25.
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)
26.
Settingupyourdevelopmentenvironment (2) Checkthepackage.jsonfile itwillalreadycontainthedepencyfordomino/domino‑db addotherdependencies Createthestartjavascriptfile Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
27.
Testing?Sure! Severalunittestpackagesavailable Mocha Tape Chai Sinon Testsaredefinedinseparatefiles Testsareconfiguredinthepackage.jsonfile { "test-unit": "NODE_ENV=test mocha
'/**/*.spec.js'", } Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
28.
Deployment(1) Scenariostoconsider deploytoacloudservicelikeAWS,Azure,IBMCloud,Heroku deploytoon‑premisesenvironment On‑premises Doesyourserverhaveinternetaccesstoinstallpackages? Doesyourserverutilizealoadbalancer? Hotdeploymentornot? UsingaDockercontainer? Usingaproxylikenginx Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
29.
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)
30.
Deployment‑ProcessManager(1) Useaprocessmanagertohandleallyourapps Donotstartyourappsmanuallyorwithasystemdscript/service pm2ishighlyrecommended Verysimpletosetup Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
31.
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)
32.
Deployment‑ProcessManager(3) savetheappstothelistofbootableapps pm2 save enablepm2tostartallsavedappsatboot pm2 startup AllcommandsarethesameonWin,Mac&Linux Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
33.
domino‑dbmodule Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
34.
domino‑dbclasses Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
35.
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)
36.
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)
37.
DEMO‑WebApplication Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
38.
CRUDDetails CalluseServer()andServer::useDatabase()onlyonceandcachethe instancesinacustomDataAccessObject Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
39.
CRUDDetails‑Create Whencreatingadocument,youneedtoprovidethe"Form"property WhenwritingaDateitem,youneedtospecifyitlikethis: DueDate: { type:
'datetime', data: '2019-06-30'} Timeneedstobespecifiedtoahundredthofasecond,youcan'tdirectly useaJavaScriptDateobject YoucanspecifycomputeOptionstocomputeitemsinthedocument Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
40.
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)
41.
CRUDDetails‑Update Selectionofoptionsforupdatingdocuments changeselecteditemsinoneormoredocumentsatonce replaceallitemswithasetofotheritems Documentsareimmediatelysaved,thereisnosave()method Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
42.
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)
43.
SecurityOptions(2) SetupDominoasanOAuthprovideristimeconsuming(expect1workday) Youwillneedtotouchthefollowingareasof(Domino)administration Certificatehandling Keyringgeneration DominowithSSL DominoLDAPconfiguration OAuthDSAPIsetup SetuptheIAMserviceapp(serverpart) CustomizetheIAMserviceapp(optional) Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
44.
SecurityOptions(3) IAMcomeswithexamplesofdifferentauthorizationflows AuthorizationCodeFlow ClientCredentialFlow Theseexamplescanbeusedtointegratethosemechanismtoyourown app(i.e.IAMclientapp) AppsmustberegisteredwiththeIAMserviceapp(generatestheappID andtheappsecret) YouareresponsibleforthetokenhandlingwhenaccessingtheDomino server! Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
45.
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)
46.
Q&A Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
47.
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)
48.
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
49.
Engage2019‑TheNERDstuff:openingDominotothemodernwebdeveloper(De07)
Jetzt herunterladen