node program 2
DESCRIPTION
NodeJs Program 2TRANSCRIPT
![Page 1: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/1.jpg)
NODEPROGRAM2014
![Page 2: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/2.jpg)
PRESENTERAzatMardan:
USFederalgovernmentStartups(Storify)Corporations(DocuSign)9booksonNode
@azat_cowebapplog.com
![Page 3: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/3.jpg)
AGENDADAY11. Introductions2. JavaScriptFundamentals3. Break4. Node.jsFundamentals5. Debuggingandothertools6. NPM:utils,fs,buffer,url,path7. LearnYouNodeWorkshop8. Lunch9. HelloWorldServer10. Heroku11. StreamAdventureWorkshop12. FunctionalJavaScriptWorkshop
![Page 4: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/4.jpg)
AGENDADAY21. NoSQLandMongoDB2. RESTAPI3. Break4. Express.jsFundamentals5. JadeandStylus6. ExpressRESTAPI7. ExpressWorksWorkshop8. Lunch9. Production10. Electivepersonalprojects
![Page 5: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/5.jpg)
JAVASCRIPTFUNDAMENTALS
![Page 6: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/6.jpg)
EXPRESSIVNESS
![Page 7: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/7.jpg)
LOOSETYPINGstringbooleannumberregexpobject
![Page 8: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/8.jpg)
OBJECTLITERALNOTATIONvarobj={a:4,b:9,x:"node.js"}
![Page 9: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/9.jpg)
FUNCTIONS
varf=function(){...}
functionf2(){...}
functionf3(){...return"ok"}
![Page 10: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/10.jpg)
ARRAYSvararr=[1,2,3]arr[0]//==1
![Page 11: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/11.jpg)
PROTOTYPALNATUREPseudo-classical(new,Object,prototype)Functionalinheritancepattern
![Page 12: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/12.jpg)
FUNCTIONALINHERITANCEvarvehicle=function(name){return{name:name,speed:0,accelerate:function(speedIncrease){this.speed+=speedIncreaseconsole.log(this)}}}
varcar1=vehicle('toyota')car1.accelerate(10)console.log(car1.name+'isgoingat'+car1.speed)
![Page 13: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/13.jpg)
CONVENTIONSNamesIndentationSemi-colonsComma-firststyle
![Page 14: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/14.jpg)
NOMODULES
![Page 15: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/15.jpg)
CLOSURES
![Page 16: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/16.jpg)
GLOBALANDPRIVATEVARS
![Page 17: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/17.jpg)
IMMEDIATELY-INVOKEDFUNCTIONEXPRESSIONS
;(function(){...}())
![Page 18: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/18.jpg)
KEYWORD"THIS"
![Page 19: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/19.jpg)
PITFALLSLeakingvarsintoglobalspaceUsingwrong"this"contextUsingwrong==or===MissingbreakinaswitchcaseNotusing"return"whenneededDealingwithpseudo-classicalinheritance
![Page 20: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/20.jpg)
EXERCISEWritea"class"bookwithfunctionalinheritancepattern:
TakesthenameoptionHasamethodreadthattakesnumberofpagesRemembersthenumberofthelastpageread
![Page 21: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/21.jpg)
ANSWERvarbook=function(name){return{name:name,lastPageRead:1,read:function(pages){this.lastPageRead+=pages}}}
varpracticalNode=book('PracticalNode.js')practicalNode.read(101)console.log('lastpagereadfor'+practicalNode.name+'is'+practicalNode.lastPageRead)
![Page 22: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/22.jpg)
NODE.JSFUNDAMENTALS
![Page 23: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/23.jpg)
EVENTLOOPconsole.log('a')setTimeout(function(){console.log('b')},200)console.log('c')
![Page 24: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/24.jpg)
NONBLOCKINGI/OGoogleChromeV8withC++andJS/ECMASuperefficient!CanbeblockedbysynccodeCanbeblockedbylotsofcomputations
![Page 25: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/25.jpg)
READ-EVAL-PRINTLOOP(a.k.a.Console)inNode.js
$node-v$node>
![Page 26: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/26.jpg)
LAUNCHINGNODE.JSSCRIPTS$nodeprogram.js$nodescript.js$node-e"console.log('helloworld')"
![Page 27: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/27.jpg)
NODE.JSPROCESSINFORMATION$node-e"console.log(process)"
process.argvprocess.envprocess.pid
![Page 28: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/28.jpg)
ACCESSINGGLOBALSCOPEINNODE.JSglobal
![Page 29: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/29.jpg)
Never:
IMPORTINGANDEXPORTINGMODULESImport:
varfs=require('fs')varexpress=require('express')
Export:module.exports={...}module.exports=function(){...}exports.a=function(){}
exports=...
![Page 30: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/30.jpg)
BUFFERBufferisaNode.jsbinarydatatype
![Page 31: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/31.jpg)
__DIRNAMEVS.PROCESS.CWDvarpath=__dirname+fileNameconsole.log(process.cwd)
![Page 32: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/32.jpg)
EXERCISE
Writetwofiles:
1. amodule2. aprogramthatexecutesamethodfromthatmodule
![Page 33: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/33.jpg)
Program:
ANSWERModule(module.js):
exports.f=function(arr,num){returnarr.slice(num)}
varmodule=require('./module')vararr=[1,2,3]console.log(module.f(arr,2))//[3]
![Page 34: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/34.jpg)
COREMODULESnoneedtoinstallwithNPM
![Page 35: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/35.jpg)
NET
![Page 36: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/36.jpg)
HTTP
![Page 37: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/37.jpg)
PATH
![Page 38: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/38.jpg)
FS
![Page 39: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/39.jpg)
URL
![Page 40: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/40.jpg)
STRINGDECODER
![Page 41: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/41.jpg)
CRYPTO
![Page 42: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/42.jpg)
DEBUGGINGANDOTHERTOOLSNodeInspectorWebStormnodemon/supervisor/forever/node-devForemanhttp-server/node-static(static)SublimeText2anditsplugins
![Page 43: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/43.jpg)
NPM
![Page 44: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/44.jpg)
[email protected]$npminstallexpress--save$npminstallexpress--save-dev
![Page 45: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/45.jpg)
PACKAGE.JSON{"name":"stream-adventure","version":"2.5.0","description":"aneducationalstreamadventure","bin":{"stream-adventure":"bin/cmd.js"},"dependencies":{"hyperquest":"~0.1.6","ws":"~0.4.25"},"devDependencies":{"tape":"~2.3.0"}}
![Page 46: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/46.jpg)
NODE_MODULES
![Page 47: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/47.jpg)
NPMINSTALL-G
![Page 48: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/48.jpg)
YOULEARNNODE$sudonpminstall-glearnyounode
![Page 49: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/49.jpg)
WORKSHOPTIME
![Page 50: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/50.jpg)
HELLOWORLDSERVER(localsetup)
![Page 51: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/51.jpg)
TUTORIAL&CODE
6.1Node.jsinRapidPrototypingwithJSonpage139inprintand153inPDF.
![Page 52: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/52.jpg)
HELLOWORLDSERVER(Herokudeployment)
![Page 53: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/53.jpg)
NECESSARYCOMPONENTShttps://toolbelt.heroku.comSSHkeysSSHtoHerokuProcfile(web:nodeserver.js)package.json(npminit)
![Page 54: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/54.jpg)
STEPSBRIEFLY1. Makeitworklocally2. AddProcfile,package.json3. $gitinit/add/gitcommit4. $herokucreate5. $gitpush...
![Page 55: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/55.jpg)
TUTORIAL&CODE
6.1.4Deploying"HelloWorld"toPaaSinRapidPrototypingwithJSonpage139in
printand158inPDF.
![Page 56: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/56.jpg)
STREAM
![Page 57: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/57.jpg)
STREAMADVENTURE$sudonpminstall-gstream-adventure$stream-adventure
![Page 58: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/58.jpg)
WORKSHOPTIME
![Page 59: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/59.jpg)
FUNCTIONALJAVASCRIPT$sudonpminstall-gfunctional-javascript-workshop$functional-javascript-workshop
![Page 60: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/60.jpg)
WORKSHOPTIME!
![Page 61: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/61.jpg)
CHAT(run-timememorystore)
![Page 62: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/62.jpg)
TUTORIALS&CODE
6.2Chat:Run-TimeMemoryVersioninRapidPrototypingwithJSonpages146inprint,and159inPDF.
Sourcecode:http://bit.ly/1usviBi
![Page 63: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/63.jpg)
ENDPOINTSPOST/messages.jsonGET/messages.json
![Page 64: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/64.jpg)
FILEStest.js:unittestsmb-server.js:server
![Page 65: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/65.jpg)
MB-SERVER.JSPOST/messages/create.jsonGET/messages/list.json
util.inspectquerystring.parse
exports.getMessagesexports.addMessage
![Page 66: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/66.jpg)
CURL$curlhttp://127.0.0.1:1337$curl-XPOST-d'name=azat&message=hi'http://127.0.0.1:1337
![Page 67: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/67.jpg)
NODESCHOOLhttp://nodeschool.io
![Page 68: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/68.jpg)
DAY2
![Page 69: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/69.jpg)
AGENDADAY2Front-endandback-endoverviewNoSQLandMongoDBRESTAPIBreakExpress.jsFundamentalsJadeandStylusExpressRESTAPIExpressWorksWorkshopLunchProductionElectivepersonalprojects
![Page 70: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/70.jpg)
FRONT-ENDANDBACK-ENDTraditionalwebThickclient/XHRweb
![Page 71: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/71.jpg)
MONGODBBASICSNorelationaldataFast,scalable,andeasilydistributedUsesJavaScriptandBSON(~JSON)!!!
Commands:
Tools:webapplog.com/mongoui
$mongod$mongo
![Page 72: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/72.jpg)
MONGOSHELL>usedbname>showcollections>db.local.find()>db.local.insert({a:1})
Mainmethods:>db.local.find({...})>db.local.insert({...})>db.local.save({...})>db.local.remove({_id:...})>db.local.update({_id:...})
![Page 73: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/73.jpg)
EXERCISE1. StartMongoDBserver2. Createanobjectinacollectionusingshell3. Downloadmongouiandfindyourobject4. Updateyourobject,checkthechanges
![Page 74: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/74.jpg)
NOSQLANDMONGODBPage168inRapidPrototypingwithJS(PDF)
Page154inprint6.4MongoDB
![Page 75: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/75.jpg)
CHATRESTAPI(dbstore)
![Page 76: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/76.jpg)
MONGOHQvaruri=process.env.MONGOHQ_URL||'mongodb://@127.0.0.1:27017'
$herokuaddons:addmongohq:sandbox
![Page 77: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/77.jpg)
MONGODBLIBRARYhttps://github.com/mongodb/node-mongodb-native
Alternatives:MongoskinMongooseMonkMagnolia
![Page 78: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/78.jpg)
TUTORIALS&CODE6.5Chat:MongoDBVersionpage176inPDFand158inprint
http://bit.ly/1AkobeN
![Page 79: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/79.jpg)
EXPRESS.JSFUNDAMENTALS
![Page 80: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/80.jpg)
APPSTRUCTURE
1. Includes2. Instantiations3. Configurations4. Middleware5. Routes6. Boot-up
![Page 81: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/81.jpg)
MIDDLEWAREAlmostalwaysuse:staticbody-parserexpress-sessioncompressionallfromcheatsheet*
*http://bit.ly/Us2qbP
![Page 82: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/82.jpg)
EXPRESS.JSSTACKJadeStylusMongooseorMongoskin
![Page 83: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/83.jpg)
GENERATOR
$npminstall-gexpress-generator
![Page 84: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/84.jpg)
OTHERFRAMEWORKSHapiSailsDerby
manyothersathttp://nodeframeworks.com
![Page 85: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/85.jpg)
EXPRESS.JSHELLOWORLD
![Page 86: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/86.jpg)
CHATRESTAPISERVER(Express.js)
![Page 87: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/87.jpg)
INSPIRATIONCode:https://github.com/azat-co/rest-api-express
Description:http://bit.ly/1jy30tn
![Page 88: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/88.jpg)
JADEANDSTYLUS
![Page 89: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/89.jpg)
EXPRESSWORKSWORKSHOP
![Page 90: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/90.jpg)
PRODUCTION
![Page 91: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/91.jpg)
NODE.JSSTACKHerokuAWSwithNginx+VarnishCache+UpstartscriptsMongoDBorMongoHQ/MongoLab:Mongoskin,MongooseLoggingwithWinston,ElasticKibanaorPapartrailapp
![Page 92: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/92.jpg)
TIPSDeploymentscriptswithSalt(saltstack.com)IncreaseMaxSocketsLockversionsDon'ttrustuserinputHavegooderrorhandlinginplaceUseupstartorforever
![Page 93: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/93.jpg)
ELECTIVEPERSONALPROJECTSFull-stack*IntegrationDeployment
*Comeupwithanidea,e.g.,todoapp
![Page 94: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/94.jpg)
FULL-STACKWriteanfront-endapplicationforChat(ordownloadBackbone.jsversionfromhttps://github.com/azat-co/rpjs/tree/master/board).
MakeitworkwithyourRESTAPIChatserver.
![Page 95: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/95.jpg)
INTEGRATIONWriteanOAuth1.0serverthatcansigninwithTwitter(or
anotherprovider).
YoucanuseOAuth1.0SigninwithEveryauthfromIntroductiontoOAuthwithNode.js
![Page 96: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/96.jpg)
DEPLOYMENT
DeployNode.jsapplication(HelloWorld)toAWS
![Page 97: Node Program 2](https://reader034.vdocuments.mx/reader034/viewer/2022051215/563dbcb8550346aa9ab0ace5/html5/thumbnails/97.jpg)
ENDIfit'snotfun,it'snotJavaScript!
@azat_co