JS Fest 2019. Thomas Watson. Post-Mortem Debugging in Node.js

J
@wa7son
Thomas Watson
@wa7son
github.com/watson
@wa7son
@wa7son
Post-Mortem Debugging
in Node.js
@wa7son
Who am I?
• Thomas Watson

• Open Source developer at github.com/watson

• Principal Software Engineer at Elastic

• Node.js Core Member

• Tweets as @wa7son
@wa7son
Agenda
• Introduction to Post-Mortem Debugging

• What are core dumps

• Introduction to llnode

• Debugging crashes

• Debugging unresponsive processes

• Debugging memory leaks
@wa7son
Node.js Diagnostics
Working Group
github.com / nodejs / diagnostics
@wa7son@wa7son
Post-Mortem Debugging
@wa7son
–Wikipedia
“Post-mortem debugging is debugging of the program
after it has already crashed.”
@wa7son
@wa7son
Tools
• lldb + llnode

• mdb + mdb_v8

• autopsy

• node-report => --experimental-report

• node-heapdump => v8.getHeapSnapshot() + v8.writeHeapSnapshot()

• Chrome DevTools
@wa7son
Core Dumps
@wa7son
@wa7son@wa7son
Source: Konstantin Lanzet
License: CC BY-SA 3.0
@wa7son@wa7son
Source: Konstantin Lanzet
License: CC BY-SA 3.0
@wa7son@wa7son
@wa7son@wa7son
@wa7son
@wa7son
Processor registers
Program counter
System flags
@wa7son
Core Dump Formats
a.out Older versions of Unix
ELF Modern Linux, System V, Solaris, and BSD systems
Mach-O macOS, etc
@wa7son
Generating a Core Dump
ulimit -c unlimited
Maximum allowed
size of core dump
@wa7son
Generating a Core Dump
node --abort-on-uncaught-exception app.js
@wa7son
Generating a Core Dump
gcore <pid>
Generate a core dump
form a running process
on Linux
~/core.<pid>
@wa7son
Generating a Core Dump
lldb --attach-pid <PID> -b -o 'process save-core "core.<PID>"'
Core dump
filename
Generate a core dump
form a running process
on macOS
@wa7son
Next Step: The Debugger
gdb, lldb, etc
@wa7son
LLDB
MacOS, iOS, Linux, FreeBSD, and Windows
as in DeBugger, not DataBase
@wa7son
@wa7son
brew install --with-lldb --with-toolchain llvm
@wa7son
github.com / nodejs / llnode
@wa7son
lldb /path/to/program -c /path/to/core-file
@wa7son
llnode /path/to/node -c /path/to/core-file
@wa7son
Crashes
@wa7son
@wa7son
Error: boom!
at /app/server.js:4:13
at /app/server.js:5:7
at /app/server.js:6:5
at processTicksAndRejections (internal/process/task_queues.js:79:9)
at process.runNextTicks [as _tickCallback] (internal/process/task_queues.js:56:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:871:11)
at internal/main/run_main_module.js:21:11
@wa7son
Reproducibility
fn3()
fn2()
fn1()
@wa7son
Demo Time!
@wa7son
npm install node-report
@wa7son
node —experimental-report app.js
Since Node.js v11.8.0
@wa7son
node 
--experimental-report 
--diagnostic-report-uncaught-exception 
--diagnostic-report-on-signal 
--diagnostic-report-on-fatalerror 
app.js
@wa7son@wa7son
Unresponsive Process
@wa7son
What is your program
doing right now?
🤔
@wa7son
Demo Time!
@wa7son
Alternative:
CPU Profiling
@wa7son
Recap 1/2
Production Server
• gcore <pid>
• lldb --attach-pid <PID> -b -o 'process save-core "core.<PID>"'
@wa7son
Recap 2/2
Dev machine
• llnode node -c core
llnode
• v8 help Get help
• v8 bt Get stack trace at crash
• frame select 3 Select stack frame #3
• v8 source list Show source code at selected stack frame
• v8 inspect <addr> Inspect object at address
@wa7son@wa7son
Memory Leaks
@wa7son
FATAL ERROR: CALL_AND_RETRY_2 Allocation failed
- process out of memory Abort trap: 6
@wa7son
What are Memory Leaks in JS?
@wa7son
What are Memory Leaks in JS?
No memory leak
(will be garbage collected)
@wa7son
What are Memory Leaks in JS?
@wa7son
What are Memory Leaks in JS?
@wa7son
(llnode) v8 findjsobjects
@wa7son
(llnode) v8 findjsobjects
Instances Total Size Name
---------- ---------- ----
1 24 AssertionError
1 24 AsyncResource
1 24 Control
1 24 FastBuffer
1 24 Loader
1 24 ModuleJob
1 24 ModuleMap
1 24 Performance
1 24 PerformanceObserver
1 24 SafeMap
1 24 SafePromise
1 24 SafeSet
1 24 SocketListReceive
@wa7son12 384 TCP
12 2688 WritableState
15 1360 (ArrayBufferView)
74 4736 NativeModule
5715 1234440 IncomingMessage
5744 781184 ServerResponse
5747 1103424 ReadableState
5748 275880 BufferList
45980 2942680 TickObject
69344 2219008 (Array)
235515 9420584 Visit
293720 15437744 Object
615411 3750984 (String)
---------- ----------
1283140 37182200
@wa7son
(llnode) v8 findjsinstances -d Visit
@wa7son
(llnode) v8 findjsinstances -d Visit
0x0000176d04402201:<Object: Visit properties {
.visit_id=<Smi: 82704>,
.headers=0x0000176d7d99f1c9:<Object: Object>}>
0x0000176d04402229:<Object: Visit properties {
.visit_id=<Smi: 82705>,
.headers=0x0000176d7d99f191:<Object: Object>}>
0x0000176d04402251:<Object: Visit properties {
.visit_id=<Smi: 82706>,
.headers=0x0000176d7d99f159:<Object: Object>}>
0x0000176d04402279:<Object: Visit properties {
.visit_id=<Smi: 82707>,
.headers=0x0000176d7d99f121:<Object: Object>}>
0x0000176d044022a1:<Object: Visit properties {
.visit_id=<Smi: 82708>,
.headers=0x0000176d7d99f0e9:<Object: Object>}>
@wa7son
0x0000176d044022c9:<Object: Visit properties {
.visit_id=<Smi: 82709>,
.headers=0x0000176d7d99f0b1:<Object: Object>}>
// A thousand miles later...
0x0000176dffba62d9:<Object: Visit properties {
.visit_id=<Smi: 156026>,
.headers=0x0000176dffbef559:<Object: Object>}>
0x0000176dffba6301:<Object: Visit properties {
.visit_id=<Smi: 156027>,
.headers=0x0000176dffbef8a9:<Object: Object>}>
0x0000176dffba6329:<Object: Visit properties {
.visit_id=<Smi: 156028>,
.headers=0x0000176dffb82481:<Object: Object>}>
@wa7son
(llnode) v8 inspect -m 0x0000176dffba6329
@wa7son
(llnode) v8 inspect -m 0x0000176dffba6329
0x0000176dffba6329(map=0x0000176d689cec29):<Object:
Visit properties {
.visit_id=<Smi: 156028>,
.headers=0x0000176dffb82481:<Object: Object>}>
@wa7son
(llnode) v8 inspect 0x0000176d689cec29
@wa7son
(llnode) v8 inspect 0x0000176d689cec29
0x0000176d689cec29:<Map own_descriptors=2
in_object_size=2
instance_size=40
descriptors=0x0000176d7f284569:<FixedArray, len=8
contents={
[0]=<Smi: 2>,
[1]=<Smi: 0>,
[2]=0x0000176dd8566a11:<String: "visit_id">,
[3]=<Smi: 320>,
[4]=<Smi: 1>,
[5]=0x0000176dd8566a31:<String: "headers">,
[6]=<Smi: 1050112>,
[7]=0x0000176d117509f9:<unknown>}>>
@wa7son
(llnode) v8 findrefs 0x0000176dffba6329
@wa7son
(llnode) v8 findrefs 0x0000176dffba6329
0x176d1f4fac41: (Array)[156027]=0x176dffba6329
@wa7son
Can this be improved?
• Convert a core dump to a heap snapshot

• Allow user to trigger a gc + heap snapshot from
outside the process
@wa7son
Heap Dump Diffing
@wa7son
Heap Dump Diffing
Find common
ancestor
@wa7son
Writing heap snapshots
process.on('SIGUSR2', () => {
const { writeHeapSnapshot } = require('v8')
if (global.gc) {
global.gc()
}
console.log('Heap snapshot written:’, writeHeapSnapshot())
})
node --expose-gc app.js
Returns name of file written
kill -SIGUSR2 <pid>
(For now, works only on Node.js 11.13.0+)
@wa7son
Demo Time!
@wa7son
Recap
Dev machine
• llnode node -c core
llnode
• v8 help Get help
• v8 findjsobjects -d List all objects sorted by count
• v8 inspect <addr> Inspect object at address
• v8 findrefs <addr> Find all references to object at address
@wa7son
llnode API
@wa7son
const llnode = require(‘llnode').fromCoredump(
process.argv[3],
process.argv[2]
)
const process = llnode.getProcessObject()
console.log(`Process ${process.pid}: ${process.state}`)
process.threads.forEach(thread => {
console.log(`Thread ${thread.threadId}`)
thread.frames.forEach((frame, index) => {
console.log(`#${index}: ${frame.function}`)
})
})
@wa7son
llnode.getHeapTypes().forEach(type => {
console.log(`${type.typeName}: ${type.typeSize}`)
console.log(`${type.instanceCount} instances`)
for (const instance of type.instances) {
console.log(`0x${instance.address}:`, instance.value)
}
})
@wa7son
github.com/nodejs/llnode/blob/master/JSAPI.md
@wa7son
Node.js Diagnostics
Working Group
github.com / nodejs / diagnostics
@wa7son
@wa7son
Working Areas
• Tracing

• Profiling

• Heap and Memory Analysis

• Step Debugging

• Post-Mortem Debugging
@wa7son
Just landed
• Diagnostic Report

• v8.getHeapSnapshot() + v8.writeHeapSnapshot()

• perf_hooks.monitorEventLoopDelay()
@wa7son
Current Initiatives
• Diagnostic Channel

• Async Hooks

• Async Context

• Support tiers

• CPU Profiling
• Trace Events

• Performance Profiles

• Time-travel debugging

• Continuation Local Storage
(CLS)
@wa7son
Free idea:
Extract heap snapshot from a core dump
@wa7son
Спасибо
Have a great conference :)
1 of 76

Recommended

DOAG Security Day 2016 Enterprise Security Reloaded by
DOAG Security Day 2016 Enterprise Security ReloadedDOAG Security Day 2016 Enterprise Security Reloaded
DOAG Security Day 2016 Enterprise Security ReloadedLoopback.ORG
371 views37 slides
LinkRest at JeeConf 2017 by
LinkRest at JeeConf 2017LinkRest at JeeConf 2017
LinkRest at JeeConf 2017Andrus Adamchik
395 views26 slides
Mongodb debugging-performance-problems by
Mongodb debugging-performance-problemsMongodb debugging-performance-problems
Mongodb debugging-performance-problemsMongoDB
1.7K views64 slides
MongoDB Performance Debugging by
MongoDB Performance DebuggingMongoDB Performance Debugging
MongoDB Performance DebuggingMongoDB
3.8K views63 slides
Cassandra Summit EU 2014 - Testing Cassandra Applications by
Cassandra Summit EU 2014 - Testing Cassandra ApplicationsCassandra Summit EU 2014 - Testing Cassandra Applications
Cassandra Summit EU 2014 - Testing Cassandra ApplicationsChristopher Batey
2.6K views46 slides
DOAG 2016 Oracle Logon Security by
DOAG 2016 Oracle Logon SecurityDOAG 2016 Oracle Logon Security
DOAG 2016 Oracle Logon SecurityLoopback.ORG
564 views29 slides

More Related Content

What's hot

Riak at The NYC Cloud Computing Meetup Group by
Riak at The NYC Cloud Computing Meetup GroupRiak at The NYC Cloud Computing Meetup Group
Riak at The NYC Cloud Computing Meetup Groupsiculars
1.4K views41 slides
Django cryptography by
Django cryptographyDjango cryptography
Django cryptographyErik LaBianca
9.5K views29 slides
Fia fabila by
Fia fabilaFia fabila
Fia fabilafiafabila
44 views24 slides
201913001 khairunnisa progres_harian by
201913001 khairunnisa progres_harian201913001 khairunnisa progres_harian
201913001 khairunnisa progres_harianKhairunnisaPekanbaru
55 views24 slides
Varnish in action pbc10 by
Varnish in action pbc10Varnish in action pbc10
Varnish in action pbc10Combell NV
2.2K views97 slides
Azure SQL Database - Connectivity Best Practices by
Azure SQL Database - Connectivity Best PracticesAzure SQL Database - Connectivity Best Practices
Azure SQL Database - Connectivity Best PracticesJose Manuel Jurado Diaz
1.3K views23 slides

What's hot(20)

Riak at The NYC Cloud Computing Meetup Group by siculars
Riak at The NYC Cloud Computing Meetup GroupRiak at The NYC Cloud Computing Meetup Group
Riak at The NYC Cloud Computing Meetup Group
siculars1.4K views
Varnish in action pbc10 by Combell NV
Varnish in action pbc10Varnish in action pbc10
Varnish in action pbc10
Combell NV2.2K views
Varnish in action phpuk11 by Combell NV
Varnish in action phpuk11Varnish in action phpuk11
Varnish in action phpuk11
Combell NV3K views
Varnish in action phpday2011 by Combell NV
Varnish in action phpday2011Varnish in action phpday2011
Varnish in action phpday2011
Combell NV2K views
Fault tolerant microservices - LJC Skills Matter 4thNov2014 by Christopher Batey
Fault tolerant microservices - LJC Skills Matter 4thNov2014Fault tolerant microservices - LJC Skills Matter 4thNov2014
Fault tolerant microservices - LJC Skills Matter 4thNov2014
Christopher Batey4.2K views
Distributed systems at ok.ru #rigadevday by odnoklassniki.ru
Distributed systems at ok.ru #rigadevdayDistributed systems at ok.ru #rigadevday
Distributed systems at ok.ru #rigadevday
odnoklassniki.ru2.9K views
Tomcat连接池配置方法V2.1 by Zianed Hou
Tomcat连接池配置方法V2.1Tomcat连接池配置方法V2.1
Tomcat连接池配置方法V2.1
Zianed Hou660 views
GC Tuning & Troubleshooting Crash Course by Tier1 app
GC Tuning & Troubleshooting Crash CourseGC Tuning & Troubleshooting Crash Course
GC Tuning & Troubleshooting Crash Course
Tier1 app1.7K views
Gc crash course (1) by Tier1 app
Gc crash course (1)Gc crash course (1)
Gc crash course (1)
Tier1 app359 views
20101017 program analysis_for_security_livshits_lecture04_nozzle by Computer Science Club
20101017 program analysis_for_security_livshits_lecture04_nozzle20101017 program analysis_for_security_livshits_lecture04_nozzle
20101017 program analysis_for_security_livshits_lecture04_nozzle
Building Your First Data Science Applicatino in MongoDB by MongoDB
Building Your First Data Science Applicatino in MongoDBBuilding Your First Data Science Applicatino in MongoDB
Building Your First Data Science Applicatino in MongoDB
MongoDB666 views
Add a bit of ACID to Cassandra. Cassandra Summit EU 2014 by odnoklassniki.ru
Add a bit of ACID to Cassandra. Cassandra Summit EU 2014Add a bit of ACID to Cassandra. Cassandra Summit EU 2014
Add a bit of ACID to Cassandra. Cassandra Summit EU 2014
odnoklassniki.ru8.9K views
MongoDB Days Silicon Valley: MongoDB and the Hadoop Connector by MongoDB
MongoDB Days Silicon Valley: MongoDB and the Hadoop ConnectorMongoDB Days Silicon Valley: MongoDB and the Hadoop Connector
MongoDB Days Silicon Valley: MongoDB and the Hadoop Connector
MongoDB1.2K views
It's 10pm: Do You Know Where Your Writes Are? by MongoDB
It's 10pm: Do You Know Where Your Writes Are?It's 10pm: Do You Know Where Your Writes Are?
It's 10pm: Do You Know Where Your Writes Are?
MongoDB2.6K views
Varnish in action confoo11 by Combell NV
Varnish in action confoo11Varnish in action confoo11
Varnish in action confoo11
Combell NV2K views

Similar to JS Fest 2019. Thomas Watson. Post-Mortem Debugging in Node.js

MongoDB: Optimising for Performance, Scale & Analytics by
MongoDB: Optimising for Performance, Scale & AnalyticsMongoDB: Optimising for Performance, Scale & Analytics
MongoDB: Optimising for Performance, Scale & AnalyticsServer Density
555 views96 slides
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv... by
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...MongoDB
602 views84 slides
MongoDB Chunks - Distribution, Splitting, and Merging by
MongoDB Chunks - Distribution, Splitting, and MergingMongoDB Chunks - Distribution, Splitting, and Merging
MongoDB Chunks - Distribution, Splitting, and MergingJason Terpko
1.1K views23 slides
Understanding DSE Search by Matt Stump by
Understanding DSE Search by Matt StumpUnderstanding DSE Search by Matt Stump
Understanding DSE Search by Matt StumpDataStax
4.1K views51 slides
Back to Basics, webinar 2: La tua prima applicazione MongoDB by
Back to Basics, webinar 2: La tua prima applicazione MongoDBBack to Basics, webinar 2: La tua prima applicazione MongoDB
Back to Basics, webinar 2: La tua prima applicazione MongoDBMongoDB
1.2K views40 slides
Beyond PHP - it's not (just) about the code by
Beyond PHP - it's not (just) about the codeBeyond PHP - it's not (just) about the code
Beyond PHP - it's not (just) about the codeWim Godden
8.5K views57 slides

Similar to JS Fest 2019. Thomas Watson. Post-Mortem Debugging in Node.js(20)

MongoDB: Optimising for Performance, Scale & Analytics by Server Density
MongoDB: Optimising for Performance, Scale & AnalyticsMongoDB: Optimising for Performance, Scale & Analytics
MongoDB: Optimising for Performance, Scale & Analytics
Server Density555 views
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv... by MongoDB
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...
MongoDB602 views
MongoDB Chunks - Distribution, Splitting, and Merging by Jason Terpko
MongoDB Chunks - Distribution, Splitting, and MergingMongoDB Chunks - Distribution, Splitting, and Merging
MongoDB Chunks - Distribution, Splitting, and Merging
Jason Terpko1.1K views
Understanding DSE Search by Matt Stump by DataStax
Understanding DSE Search by Matt StumpUnderstanding DSE Search by Matt Stump
Understanding DSE Search by Matt Stump
DataStax4.1K views
Back to Basics, webinar 2: La tua prima applicazione MongoDB by MongoDB
Back to Basics, webinar 2: La tua prima applicazione MongoDBBack to Basics, webinar 2: La tua prima applicazione MongoDB
Back to Basics, webinar 2: La tua prima applicazione MongoDB
MongoDB1.2K views
Beyond PHP - it's not (just) about the code by Wim Godden
Beyond PHP - it's not (just) about the codeBeyond PHP - it's not (just) about the code
Beyond PHP - it's not (just) about the code
Wim Godden8.5K views
자바 성능 강의 by Terry Cho
자바 성능 강의자바 성능 강의
자바 성능 강의
Terry Cho4K views
JS Conf 2018 AU Node.js applications diagnostics under the hood by Nikolay Matvienko
JS Conf 2018 AU Node.js applications diagnostics under the hoodJS Conf 2018 AU Node.js applications diagnostics under the hood
JS Conf 2018 AU Node.js applications diagnostics under the hood
Nikolay Matvienko205 views
What's new in Redis v3.2 by Itamar Haber
What's new in Redis v3.2What's new in Redis v3.2
What's new in Redis v3.2
Itamar Haber2.2K views
Fosdem10 by wremes
Fosdem10Fosdem10
Fosdem10
wremes1.2K views
Kenneth Truyers - Using Git as a NoSql database - Codemotion Milan 2018 by Codemotion
Kenneth Truyers - Using Git as a NoSql database - Codemotion Milan 2018Kenneth Truyers - Using Git as a NoSql database - Codemotion Milan 2018
Kenneth Truyers - Using Git as a NoSql database - Codemotion Milan 2018
Codemotion1.3K views
(Even more) Rapid App Development with RubyMotion by Stefan Haflidason
(Even more) Rapid App Development with RubyMotion(Even more) Rapid App Development with RubyMotion
(Even more) Rapid App Development with RubyMotion
Stefan Haflidason1.2K views
AWS IoT 핸즈온 워크샵 - 실습 5. DynamoDB에 센서 데이터 저장하기 (김무현 솔루션즈 아키텍트) by Amazon Web Services Korea
AWS IoT 핸즈온 워크샵 - 실습 5. DynamoDB에 센서 데이터 저장하기 (김무현 솔루션즈 아키텍트)AWS IoT 핸즈온 워크샵 - 실습 5. DynamoDB에 센서 데이터 저장하기 (김무현 솔루션즈 아키텍트)
AWS IoT 핸즈온 워크샵 - 실습 5. DynamoDB에 센서 데이터 저장하기 (김무현 솔루션즈 아키텍트)
Life Cycle of Metrics, Alerting, and Performance Monitoring in Microservices by Sean Chittenden
Life Cycle of Metrics, Alerting, and Performance Monitoring in MicroservicesLife Cycle of Metrics, Alerting, and Performance Monitoring in Microservices
Life Cycle of Metrics, Alerting, and Performance Monitoring in Microservices
Sean Chittenden737 views
A Peek At The Future: Going Beyond JavaServer Faces 2.0 With RichFaces 4 by balunasj
A Peek At The Future: Going Beyond JavaServer Faces 2.0 With RichFaces 4A Peek At The Future: Going Beyond JavaServer Faces 2.0 With RichFaces 4
A Peek At The Future: Going Beyond JavaServer Faces 2.0 With RichFaces 4
balunasj1.7K views
10 Key MongoDB Performance Indicators by iammutex
10 Key MongoDB Performance Indicators  10 Key MongoDB Performance Indicators
10 Key MongoDB Performance Indicators
iammutex10.8K views
OSCON 2011 - Node.js Tutorial by Tom Croucher
OSCON 2011 - Node.js TutorialOSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js Tutorial
Tom Croucher5.3K views
Become a Java GC Hero - All Day Devops by Tier1app
Become a Java GC Hero - All Day DevopsBecome a Java GC Hero - All Day Devops
Become a Java GC Hero - All Day Devops
Tier1app250 views

More from JSFestUA

JS Fest 2019/Autumn. Роман Савіцький. Webcomponents & lit-element in production by
JS Fest 2019/Autumn. Роман Савіцький. Webcomponents & lit-element in productionJS Fest 2019/Autumn. Роман Савіцький. Webcomponents & lit-element in production
JS Fest 2019/Autumn. Роман Савіцький. Webcomponents & lit-element in productionJSFestUA
580 views99 slides
JS Fest 2019/Autumn. Erick Wendel. 10 secrets to improve Javascript Performance by
JS Fest 2019/Autumn. Erick Wendel. 10 secrets to improve Javascript PerformanceJS Fest 2019/Autumn. Erick Wendel. 10 secrets to improve Javascript Performance
JS Fest 2019/Autumn. Erick Wendel. 10 secrets to improve Javascript PerformanceJSFestUA
446 views89 slides
JS Fest 2019/Autumn. Alexandre Gomes. Embrace the "react fatigue" by
JS Fest 2019/Autumn. Alexandre Gomes. Embrace the "react fatigue"JS Fest 2019/Autumn. Alexandre Gomes. Embrace the "react fatigue"
JS Fest 2019/Autumn. Alexandre Gomes. Embrace the "react fatigue"JSFestUA
293 views57 slides
JS Fest 2019/Autumn. Anton Cherednikov. Choreographic or orchestral architect... by
JS Fest 2019/Autumn. Anton Cherednikov. Choreographic or orchestral architect...JS Fest 2019/Autumn. Anton Cherednikov. Choreographic or orchestral architect...
JS Fest 2019/Autumn. Anton Cherednikov. Choreographic or orchestral architect...JSFestUA
217 views45 slides
JS Fest 2019/Autumn. Adam Leos. So why do you need to know Algorithms and Dat... by
JS Fest 2019/Autumn. Adam Leos. So why do you need to know Algorithms and Dat...JS Fest 2019/Autumn. Adam Leos. So why do you need to know Algorithms and Dat...
JS Fest 2019/Autumn. Adam Leos. So why do you need to know Algorithms and Dat...JSFestUA
534 views288 slides
JS Fest 2019/Autumn. Marko Letic. Saving the world with JavaScript: A Data Vi... by
JS Fest 2019/Autumn. Marko Letic. Saving the world with JavaScript: A Data Vi...JS Fest 2019/Autumn. Marko Letic. Saving the world with JavaScript: A Data Vi...
JS Fest 2019/Autumn. Marko Letic. Saving the world with JavaScript: A Data Vi...JSFestUA
334 views42 slides

More from JSFestUA(20)

JS Fest 2019/Autumn. Роман Савіцький. Webcomponents & lit-element in production by JSFestUA
JS Fest 2019/Autumn. Роман Савіцький. Webcomponents & lit-element in productionJS Fest 2019/Autumn. Роман Савіцький. Webcomponents & lit-element in production
JS Fest 2019/Autumn. Роман Савіцький. Webcomponents & lit-element in production
JSFestUA580 views
JS Fest 2019/Autumn. Erick Wendel. 10 secrets to improve Javascript Performance by JSFestUA
JS Fest 2019/Autumn. Erick Wendel. 10 secrets to improve Javascript PerformanceJS Fest 2019/Autumn. Erick Wendel. 10 secrets to improve Javascript Performance
JS Fest 2019/Autumn. Erick Wendel. 10 secrets to improve Javascript Performance
JSFestUA446 views
JS Fest 2019/Autumn. Alexandre Gomes. Embrace the "react fatigue" by JSFestUA
JS Fest 2019/Autumn. Alexandre Gomes. Embrace the "react fatigue"JS Fest 2019/Autumn. Alexandre Gomes. Embrace the "react fatigue"
JS Fest 2019/Autumn. Alexandre Gomes. Embrace the "react fatigue"
JSFestUA293 views
JS Fest 2019/Autumn. Anton Cherednikov. Choreographic or orchestral architect... by JSFestUA
JS Fest 2019/Autumn. Anton Cherednikov. Choreographic or orchestral architect...JS Fest 2019/Autumn. Anton Cherednikov. Choreographic or orchestral architect...
JS Fest 2019/Autumn. Anton Cherednikov. Choreographic or orchestral architect...
JSFestUA217 views
JS Fest 2019/Autumn. Adam Leos. So why do you need to know Algorithms and Dat... by JSFestUA
JS Fest 2019/Autumn. Adam Leos. So why do you need to know Algorithms and Dat...JS Fest 2019/Autumn. Adam Leos. So why do you need to know Algorithms and Dat...
JS Fest 2019/Autumn. Adam Leos. So why do you need to know Algorithms and Dat...
JSFestUA534 views
JS Fest 2019/Autumn. Marko Letic. Saving the world with JavaScript: A Data Vi... by JSFestUA
JS Fest 2019/Autumn. Marko Letic. Saving the world with JavaScript: A Data Vi...JS Fest 2019/Autumn. Marko Letic. Saving the world with JavaScript: A Data Vi...
JS Fest 2019/Autumn. Marko Letic. Saving the world with JavaScript: A Data Vi...
JSFestUA334 views
JS Fest 2019/Autumn. Александр Товмач. JAMstack by JSFestUA
JS Fest 2019/Autumn. Александр Товмач. JAMstackJS Fest 2019/Autumn. Александр Товмач. JAMstack
JS Fest 2019/Autumn. Александр Товмач. JAMstack
JSFestUA394 views
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f... by JSFestUA
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JSFestUA238 views
JS Fest 2019/Autumn. Дмитрий Жарков. Blockchainize your SPA or Integrate Java... by JSFestUA
JS Fest 2019/Autumn. Дмитрий Жарков. Blockchainize your SPA or Integrate Java...JS Fest 2019/Autumn. Дмитрий Жарков. Blockchainize your SPA or Integrate Java...
JS Fest 2019/Autumn. Дмитрий Жарков. Blockchainize your SPA or Integrate Java...
JSFestUA344 views
JS Fest 2019/Autumn. Maciej Treder. Angular Schematics - Develop for developers by JSFestUA
JS Fest 2019/Autumn. Maciej Treder. Angular Schematics - Develop for developersJS Fest 2019/Autumn. Maciej Treder. Angular Schematics - Develop for developers
JS Fest 2019/Autumn. Maciej Treder. Angular Schematics - Develop for developers
JSFestUA218 views
JS Fest 2019/Autumn. Kyle Boss. A Tinder Love Story: Create a Wordpress Blog ... by JSFestUA
JS Fest 2019/Autumn. Kyle Boss. A Tinder Love Story: Create a Wordpress Blog ...JS Fest 2019/Autumn. Kyle Boss. A Tinder Love Story: Create a Wordpress Blog ...
JS Fest 2019/Autumn. Kyle Boss. A Tinder Love Story: Create a Wordpress Blog ...
JSFestUA266 views
JS Fest 2019/Autumn. Андрей Старовойт. Зачем нужен тип "true" в TypeScript? by JSFestUA
JS Fest 2019/Autumn. Андрей Старовойт. Зачем нужен тип "true" в TypeScript?JS Fest 2019/Autumn. Андрей Старовойт. Зачем нужен тип "true" в TypeScript?
JS Fest 2019/Autumn. Андрей Старовойт. Зачем нужен тип "true" в TypeScript?
JSFestUA322 views
JS Fest 2019/Autumn. Eyal Eizenberg. Tipping the Scale by JSFestUA
JS Fest 2019/Autumn. Eyal Eizenberg. Tipping the ScaleJS Fest 2019/Autumn. Eyal Eizenberg. Tipping the Scale
JS Fest 2019/Autumn. Eyal Eizenberg. Tipping the Scale
JSFestUA167 views
JS Fest 2019/Autumn. Sota Ohara. Сreate own server less CMS from scratch by JSFestUA
JS Fest 2019/Autumn. Sota Ohara. Сreate own server less CMS from scratchJS Fest 2019/Autumn. Sota Ohara. Сreate own server less CMS from scratch
JS Fest 2019/Autumn. Sota Ohara. Сreate own server less CMS from scratch
JSFestUA274 views
JS Fest 2019/Autumn. Джордж Евтушенко. Как стать программистом, которого хотят by JSFestUA
JS Fest 2019/Autumn. Джордж Евтушенко. Как стать программистом, которого хотятJS Fest 2019/Autumn. Джордж Евтушенко. Как стать программистом, которого хотят
JS Fest 2019/Autumn. Джордж Евтушенко. Как стать программистом, которого хотят
JSFestUA140 views
JS Fest 2019/Autumn. Алексей Орленко. Node.js N-API for Rust by JSFestUA
JS Fest 2019/Autumn. Алексей Орленко. Node.js N-API for RustJS Fest 2019/Autumn. Алексей Орленко. Node.js N-API for Rust
JS Fest 2019/Autumn. Алексей Орленко. Node.js N-API for Rust
JSFestUA585 views
JS Fest 2019/Autumn. Daniel Ostrovsky. Falling in love with decorators ES6/Ty... by JSFestUA
JS Fest 2019/Autumn. Daniel Ostrovsky. Falling in love with decorators ES6/Ty...JS Fest 2019/Autumn. Daniel Ostrovsky. Falling in love with decorators ES6/Ty...
JS Fest 2019/Autumn. Daniel Ostrovsky. Falling in love with decorators ES6/Ty...
JSFestUA167 views
JS Fest 2019/Autumn. Андрей Андрийко. Гексагональна архітектура в Nodejs проекті by JSFestUA
JS Fest 2019/Autumn. Андрей Андрийко. Гексагональна архітектура в Nodejs проектіJS Fest 2019/Autumn. Андрей Андрийко. Гексагональна архітектура в Nodejs проекті
JS Fest 2019/Autumn. Андрей Андрийко. Гексагональна архітектура в Nodejs проекті
JSFestUA227 views
JS Fest 2019/Autumn. Борис Могила. Svelte. Почему нам не нужно run-time ядро by JSFestUA
JS Fest 2019/Autumn. Борис Могила. Svelte. Почему нам не нужно run-time ядроJS Fest 2019/Autumn. Борис Могила. Svelte. Почему нам не нужно run-time ядро
JS Fest 2019/Autumn. Борис Могила. Svelte. Почему нам не нужно run-time ядро
JSFestUA250 views
JS Fest 2019/Autumn. Виталий Кухар. Сравнение кластеризации HTTP, TCP и UDP н... by JSFestUA
JS Fest 2019/Autumn. Виталий Кухар. Сравнение кластеризации HTTP, TCP и UDP н...JS Fest 2019/Autumn. Виталий Кухар. Сравнение кластеризации HTTP, TCP и UDP н...
JS Fest 2019/Autumn. Виталий Кухар. Сравнение кластеризации HTTP, TCP и UDP н...
JSFestUA287 views

Recently uploaded

Education and Diversity.pptx by
Education and Diversity.pptxEducation and Diversity.pptx
Education and Diversity.pptxDrHafizKosar
173 views16 slides
ANATOMY AND PHYSIOLOGY UNIT 1 { PART-1} by
ANATOMY AND PHYSIOLOGY UNIT 1 { PART-1}ANATOMY AND PHYSIOLOGY UNIT 1 { PART-1}
ANATOMY AND PHYSIOLOGY UNIT 1 { PART-1}DR .PALLAVI PATHANIA
249 views195 slides
The Open Access Community Framework (OACF) 2023 (1).pptx by
The Open Access Community Framework (OACF) 2023 (1).pptxThe Open Access Community Framework (OACF) 2023 (1).pptx
The Open Access Community Framework (OACF) 2023 (1).pptxJisc
110 views7 slides
Structure and Functions of Cell.pdf by
Structure and Functions of Cell.pdfStructure and Functions of Cell.pdf
Structure and Functions of Cell.pdfNithya Murugan
545 views10 slides
Scope of Biochemistry.pptx by
Scope of Biochemistry.pptxScope of Biochemistry.pptx
Scope of Biochemistry.pptxshoba shoba
133 views55 slides
Create a Structure in VBNet.pptx by
Create a Structure in VBNet.pptxCreate a Structure in VBNet.pptx
Create a Structure in VBNet.pptxBreach_P
75 views8 slides

Recently uploaded(20)

Education and Diversity.pptx by DrHafizKosar
Education and Diversity.pptxEducation and Diversity.pptx
Education and Diversity.pptx
DrHafizKosar173 views
The Open Access Community Framework (OACF) 2023 (1).pptx by Jisc
The Open Access Community Framework (OACF) 2023 (1).pptxThe Open Access Community Framework (OACF) 2023 (1).pptx
The Open Access Community Framework (OACF) 2023 (1).pptx
Jisc110 views
Structure and Functions of Cell.pdf by Nithya Murugan
Structure and Functions of Cell.pdfStructure and Functions of Cell.pdf
Structure and Functions of Cell.pdf
Nithya Murugan545 views
Scope of Biochemistry.pptx by shoba shoba
Scope of Biochemistry.pptxScope of Biochemistry.pptx
Scope of Biochemistry.pptx
shoba shoba133 views
Create a Structure in VBNet.pptx by Breach_P
Create a Structure in VBNet.pptxCreate a Structure in VBNet.pptx
Create a Structure in VBNet.pptx
Breach_P75 views
REPRESENTATION - GAUNTLET.pptx by iammrhaywood
REPRESENTATION - GAUNTLET.pptxREPRESENTATION - GAUNTLET.pptx
REPRESENTATION - GAUNTLET.pptx
iammrhaywood100 views
When Sex Gets Complicated: Porn, Affairs, & Cybersex by Marlene Maheu
When Sex Gets Complicated: Porn, Affairs, & CybersexWhen Sex Gets Complicated: Porn, Affairs, & Cybersex
When Sex Gets Complicated: Porn, Affairs, & Cybersex
Marlene Maheu67 views
Class 10 English lesson plans by TARIQ KHAN
Class 10 English  lesson plansClass 10 English  lesson plans
Class 10 English lesson plans
TARIQ KHAN288 views
Drama KS5 Breakdown by WestHatch
Drama KS5 BreakdownDrama KS5 Breakdown
Drama KS5 Breakdown
WestHatch79 views
PLASMA PROTEIN (2).pptx by MEGHANA C
PLASMA PROTEIN (2).pptxPLASMA PROTEIN (2).pptx
PLASMA PROTEIN (2).pptx
MEGHANA C68 views
Pharmaceutical Inorganic Chemistry Unit IVMiscellaneous compounds Expectorant... by Ms. Pooja Bhandare
Pharmaceutical Inorganic Chemistry Unit IVMiscellaneous compounds Expectorant...Pharmaceutical Inorganic Chemistry Unit IVMiscellaneous compounds Expectorant...
Pharmaceutical Inorganic Chemistry Unit IVMiscellaneous compounds Expectorant...
Classification of crude drugs.pptx by GayatriPatra14
Classification of crude drugs.pptxClassification of crude drugs.pptx
Classification of crude drugs.pptx
GayatriPatra1486 views
11.30.23 Poverty and Inequality in America.pptx by mary850239
11.30.23 Poverty and Inequality in America.pptx11.30.23 Poverty and Inequality in America.pptx
11.30.23 Poverty and Inequality in America.pptx
mary850239160 views
Are we onboard yet University of Sussex.pptx by Jisc
Are we onboard yet University of Sussex.pptxAre we onboard yet University of Sussex.pptx
Are we onboard yet University of Sussex.pptx
Jisc96 views
Use of Probiotics in Aquaculture.pptx by AKSHAY MANDAL
Use of Probiotics in Aquaculture.pptxUse of Probiotics in Aquaculture.pptx
Use of Probiotics in Aquaculture.pptx
AKSHAY MANDAL100 views
The Accursed House by Émile Gaboriau by DivyaSheta
The Accursed House  by Émile GaboriauThe Accursed House  by Émile Gaboriau
The Accursed House by Émile Gaboriau
DivyaSheta201 views

JS Fest 2019. Thomas Watson. Post-Mortem Debugging in Node.js