Enviar pesquisa
Carregar
A toolbelt of seasoned bug hunter - Damir Zekic
•
0 gostou
•
230 visualizações
Ruby Meditation
Seguir
Video: https://youtu.be/So9ft63WVLY Ruby Meditation #19 November 25, 2017 Kyiv
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 52
Baixar agora
Baixar para ler offline
Recomendados
An Introduction to PHP Dependency Management With Composer
An Introduction to PHP Dependency Management With Composer
Oomph, Inc.
Introduction to ansible
Introduction to ansible
Javier Arturo Rodríguez
How about Gradle?
How about Gradle?
Yasuharu Nakano
Python Workshop by Tom Frantz
Python Workshop by Tom Frantz
Prottay Karim
DOD 2016 - Tomasz Torcz - The Song of JBoss and Chef
DOD 2016 - Tomasz Torcz - The Song of JBoss and Chef
PROIDEA
10 reasons to love CoffeeScript
10 reasons to love CoffeeScript
Lukas Alexandre
Go Replicator
Go Replicator
Joshua Drake
The Puppet Debugging Kit: Building Blocks for Exploration and Problem Solving...
The Puppet Debugging Kit: Building Blocks for Exploration and Problem Solving...
Puppet
Recomendados
An Introduction to PHP Dependency Management With Composer
An Introduction to PHP Dependency Management With Composer
Oomph, Inc.
Introduction to ansible
Introduction to ansible
Javier Arturo Rodríguez
How about Gradle?
How about Gradle?
Yasuharu Nakano
Python Workshop by Tom Frantz
Python Workshop by Tom Frantz
Prottay Karim
DOD 2016 - Tomasz Torcz - The Song of JBoss and Chef
DOD 2016 - Tomasz Torcz - The Song of JBoss and Chef
PROIDEA
10 reasons to love CoffeeScript
10 reasons to love CoffeeScript
Lukas Alexandre
Go Replicator
Go Replicator
Joshua Drake
The Puppet Debugging Kit: Building Blocks for Exploration and Problem Solving...
The Puppet Debugging Kit: Building Blocks for Exploration and Problem Solving...
Puppet
Fizz and buzz of computer programs in python.
Fizz and buzz of computer programs in python.
Esehara Shigeo
Clojure入門
Clojure入門
Naoyuki Kakuda
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
Ozh
Asynchronous PHP and Real-time Messaging
Asynchronous PHP and Real-time Messaging
Steve Rhoades
Introduction to Nim
Introduction to Nim
Fred Heath
t3chfest 2015 - Zoe in 30 minutes
t3chfest 2015 - Zoe in 30 minutes
David Muñoz Díaz
Troubleshooting Puppet
Troubleshooting Puppet
Thomas Howard Uphill
He 74 a-thltht-lãxuântâm-11tlt
He 74 a-thltht-lãxuântâm-11tlt
laonap166
Vidoop CouchDB Talk
Vidoop CouchDB Talk
Chris Anderson
Hotspot tools
Hotspot tools
SEA Tecnologia
#safaDojo - Coding Dojo Go lang
#safaDojo - Coding Dojo Go lang
Marcelo Andrade
Rabia
Rabia
university of Gujrat, pakistan
Top 28 programming language with hello world for artificial intelligence
Top 28 programming language with hello world for artificial intelligence
AL- AMIN
Sayoo odoo open_erp
Sayoo odoo open_erp
AmineArrahmane Achargui
Boxen: How to Manage an Army of Laptops and Live to Talk About It
Boxen: How to Manage an Army of Laptops and Live to Talk About It
Puppet
Naughty And Nice Bash Features
Naughty And Nice Bash Features
Nati Cohen
Your Library Sucks, and why you should use it.
Your Library Sucks, and why you should use it.
Peter Higgins
Boxen: How to Manage an Army of Laptops
Boxen: How to Manage an Army of Laptops
Puppet
x86 & PE
x86 & PE
Ange Albertini
Bugs from Outer Space | while42 SF #6
Bugs from Outer Space | while42 SF #6
While42
Such a weird Processor: messing with opcodes (...and a little bit of PE) (Has...
Such a weird Processor: messing with opcodes (...and a little bit of PE) (Has...
Ange Albertini
Hacking OOo 2.0
Hacking OOo 2.0
Alexandro Colorado
Mais conteúdo relacionado
Mais procurados
Fizz and buzz of computer programs in python.
Fizz and buzz of computer programs in python.
Esehara Shigeo
Clojure入門
Clojure入門
Naoyuki Kakuda
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
Ozh
Asynchronous PHP and Real-time Messaging
Asynchronous PHP and Real-time Messaging
Steve Rhoades
Introduction to Nim
Introduction to Nim
Fred Heath
t3chfest 2015 - Zoe in 30 minutes
t3chfest 2015 - Zoe in 30 minutes
David Muñoz Díaz
Troubleshooting Puppet
Troubleshooting Puppet
Thomas Howard Uphill
He 74 a-thltht-lãxuântâm-11tlt
He 74 a-thltht-lãxuântâm-11tlt
laonap166
Vidoop CouchDB Talk
Vidoop CouchDB Talk
Chris Anderson
Hotspot tools
Hotspot tools
SEA Tecnologia
#safaDojo - Coding Dojo Go lang
#safaDojo - Coding Dojo Go lang
Marcelo Andrade
Rabia
Rabia
university of Gujrat, pakistan
Top 28 programming language with hello world for artificial intelligence
Top 28 programming language with hello world for artificial intelligence
AL- AMIN
Sayoo odoo open_erp
Sayoo odoo open_erp
AmineArrahmane Achargui
Mais procurados
(14)
Fizz and buzz of computer programs in python.
Fizz and buzz of computer programs in python.
Clojure入門
Clojure入門
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
Asynchronous PHP and Real-time Messaging
Asynchronous PHP and Real-time Messaging
Introduction to Nim
Introduction to Nim
t3chfest 2015 - Zoe in 30 minutes
t3chfest 2015 - Zoe in 30 minutes
Troubleshooting Puppet
Troubleshooting Puppet
He 74 a-thltht-lãxuântâm-11tlt
He 74 a-thltht-lãxuântâm-11tlt
Vidoop CouchDB Talk
Vidoop CouchDB Talk
Hotspot tools
Hotspot tools
#safaDojo - Coding Dojo Go lang
#safaDojo - Coding Dojo Go lang
Rabia
Rabia
Top 28 programming language with hello world for artificial intelligence
Top 28 programming language with hello world for artificial intelligence
Sayoo odoo open_erp
Sayoo odoo open_erp
Semelhante a A toolbelt of seasoned bug hunter - Damir Zekic
Boxen: How to Manage an Army of Laptops and Live to Talk About It
Boxen: How to Manage an Army of Laptops and Live to Talk About It
Puppet
Naughty And Nice Bash Features
Naughty And Nice Bash Features
Nati Cohen
Your Library Sucks, and why you should use it.
Your Library Sucks, and why you should use it.
Peter Higgins
Boxen: How to Manage an Army of Laptops
Boxen: How to Manage an Army of Laptops
Puppet
x86 & PE
x86 & PE
Ange Albertini
Bugs from Outer Space | while42 SF #6
Bugs from Outer Space | while42 SF #6
While42
Such a weird Processor: messing with opcodes (...and a little bit of PE) (Has...
Such a weird Processor: messing with opcodes (...and a little bit of PE) (Has...
Ange Albertini
Hacking OOo 2.0
Hacking OOo 2.0
Alexandro Colorado
Open shift
Open shift
marcolof
ooc - A hybrid language experiment
ooc - A hybrid language experiment
Amos Wenger
ooc - A hybrid language experiment
ooc - A hybrid language experiment
Amos Wenger
Shifting gears with Composer
Shifting gears with Composer
Javier López
The Fuzzing Project - 32C3
The Fuzzing Project - 32C3
hannob
Raspberry Pi for IPRUG
Raspberry Pi for IPRUG
Frank Carver
Monitoring MongoDB (MongoSV)
Monitoring MongoDB (MongoSV)
Boxed Ice
A Partial Multiverse Model of Time Travel for Debugging
A Partial Multiverse Model of Time Travel for Debugging
awwaiid
Killer Bugs From Outer Space
Killer Bugs From Outer Space
Jérôme Petazzoni
Exploring the Internet of Things Using Ruby
Exploring the Internet of Things Using Ruby
Mike Hagedorn
Assembler
Assembler
Mario Granja Alvear
Biicode OpenExpoDay
Biicode OpenExpoDay
fcofdezc
Semelhante a A toolbelt of seasoned bug hunter - Damir Zekic
(20)
Boxen: How to Manage an Army of Laptops and Live to Talk About It
Boxen: How to Manage an Army of Laptops and Live to Talk About It
Naughty And Nice Bash Features
Naughty And Nice Bash Features
Your Library Sucks, and why you should use it.
Your Library Sucks, and why you should use it.
Boxen: How to Manage an Army of Laptops
Boxen: How to Manage an Army of Laptops
x86 & PE
x86 & PE
Bugs from Outer Space | while42 SF #6
Bugs from Outer Space | while42 SF #6
Such a weird Processor: messing with opcodes (...and a little bit of PE) (Has...
Such a weird Processor: messing with opcodes (...and a little bit of PE) (Has...
Hacking OOo 2.0
Hacking OOo 2.0
Open shift
Open shift
ooc - A hybrid language experiment
ooc - A hybrid language experiment
ooc - A hybrid language experiment
ooc - A hybrid language experiment
Shifting gears with Composer
Shifting gears with Composer
The Fuzzing Project - 32C3
The Fuzzing Project - 32C3
Raspberry Pi for IPRUG
Raspberry Pi for IPRUG
Monitoring MongoDB (MongoSV)
Monitoring MongoDB (MongoSV)
A Partial Multiverse Model of Time Travel for Debugging
A Partial Multiverse Model of Time Travel for Debugging
Killer Bugs From Outer Space
Killer Bugs From Outer Space
Exploring the Internet of Things Using Ruby
Exploring the Internet of Things Using Ruby
Assembler
Assembler
Biicode OpenExpoDay
Biicode OpenExpoDay
Mais de Ruby Meditation
Is this Legacy or Revenant Code? - Sergey Sergyenko | Ruby Meditation 30
Is this Legacy or Revenant Code? - Sergey Sergyenko | Ruby Meditation 30
Ruby Meditation
Life with GraphQL API: good practices and unresolved issues - Roman Dubrovsky...
Life with GraphQL API: good practices and unresolved issues - Roman Dubrovsky...
Ruby Meditation
Where is your license, dude? - Viacheslav Miroshnychenko | Ruby Meditation 29
Where is your license, dude? - Viacheslav Miroshnychenko | Ruby Meditation 29
Ruby Meditation
Dry-validation update. Dry-validation vs Dry-schema 1.0 - Aleksandra Stolyar ...
Dry-validation update. Dry-validation vs Dry-schema 1.0 - Aleksandra Stolyar ...
Ruby Meditation
How to cook Rabbit on Production - Bohdan Parshentsev | Ruby Meditation 28
How to cook Rabbit on Production - Bohdan Parshentsev | Ruby Meditation 28
Ruby Meditation
How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28
How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28
Ruby Meditation
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Ruby Meditation
Performance Optimization 101 for Ruby developers - Nihad Abbasov (ENG) | Ruby...
Performance Optimization 101 for Ruby developers - Nihad Abbasov (ENG) | Ruby...
Ruby Meditation
Use cases for Serverless Technologies - Ruslan Tolstov (RUS) | Ruby Meditatio...
Use cases for Serverless Technologies - Ruslan Tolstov (RUS) | Ruby Meditatio...
Ruby Meditation
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...
Ruby Meditation
What/How to do with GraphQL? - Valentyn Ostakh (ENG) | Ruby Meditation 27
What/How to do with GraphQL? - Valentyn Ostakh (ENG) | Ruby Meditation 27
Ruby Meditation
New features in Rails 6 - Nihad Abbasov (RUS) | Ruby Meditation 26
New features in Rails 6 - Nihad Abbasov (RUS) | Ruby Meditation 26
Ruby Meditation
Security Scanning Overview - Tetiana Chupryna (RUS) | Ruby Meditation 26
Security Scanning Overview - Tetiana Chupryna (RUS) | Ruby Meditation 26
Ruby Meditation
Teach your application eloquence. Logs, metrics, traces - Dmytro Shapovalov (...
Teach your application eloquence. Logs, metrics, traces - Dmytro Shapovalov (...
Ruby Meditation
Best practices. Exploring - Ike Kurghinyan (RUS) | Ruby Meditation 26
Best practices. Exploring - Ike Kurghinyan (RUS) | Ruby Meditation 26
Ruby Meditation
Road to A/B testing - Alexey Vasiliev (ENG) | Ruby Meditation 25
Road to A/B testing - Alexey Vasiliev (ENG) | Ruby Meditation 25
Ruby Meditation
Concurrency in production. Real life example - Dmytro Herasymuk | Ruby Medita...
Concurrency in production. Real life example - Dmytro Herasymuk | Ruby Medita...
Ruby Meditation
Data encryption for Ruby web applications - Dmytro Shapovalov (RUS) | Ruby Me...
Data encryption for Ruby web applications - Dmytro Shapovalov (RUS) | Ruby Me...
Ruby Meditation
Rails App performance at the limit - Bogdan Gusiev
Rails App performance at the limit - Bogdan Gusiev
Ruby Meditation
GDPR. Next Y2K in 2018? - Anton Tkachov | Ruby Meditation #23
GDPR. Next Y2K in 2018? - Anton Tkachov | Ruby Meditation #23
Ruby Meditation
Mais de Ruby Meditation
(20)
Is this Legacy or Revenant Code? - Sergey Sergyenko | Ruby Meditation 30
Is this Legacy or Revenant Code? - Sergey Sergyenko | Ruby Meditation 30
Life with GraphQL API: good practices and unresolved issues - Roman Dubrovsky...
Life with GraphQL API: good practices and unresolved issues - Roman Dubrovsky...
Where is your license, dude? - Viacheslav Miroshnychenko | Ruby Meditation 29
Where is your license, dude? - Viacheslav Miroshnychenko | Ruby Meditation 29
Dry-validation update. Dry-validation vs Dry-schema 1.0 - Aleksandra Stolyar ...
Dry-validation update. Dry-validation vs Dry-schema 1.0 - Aleksandra Stolyar ...
How to cook Rabbit on Production - Bohdan Parshentsev | Ruby Meditation 28
How to cook Rabbit on Production - Bohdan Parshentsev | Ruby Meditation 28
How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28
How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Performance Optimization 101 for Ruby developers - Nihad Abbasov (ENG) | Ruby...
Performance Optimization 101 for Ruby developers - Nihad Abbasov (ENG) | Ruby...
Use cases for Serverless Technologies - Ruslan Tolstov (RUS) | Ruby Meditatio...
Use cases for Serverless Technologies - Ruslan Tolstov (RUS) | Ruby Meditatio...
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...
What/How to do with GraphQL? - Valentyn Ostakh (ENG) | Ruby Meditation 27
What/How to do with GraphQL? - Valentyn Ostakh (ENG) | Ruby Meditation 27
New features in Rails 6 - Nihad Abbasov (RUS) | Ruby Meditation 26
New features in Rails 6 - Nihad Abbasov (RUS) | Ruby Meditation 26
Security Scanning Overview - Tetiana Chupryna (RUS) | Ruby Meditation 26
Security Scanning Overview - Tetiana Chupryna (RUS) | Ruby Meditation 26
Teach your application eloquence. Logs, metrics, traces - Dmytro Shapovalov (...
Teach your application eloquence. Logs, metrics, traces - Dmytro Shapovalov (...
Best practices. Exploring - Ike Kurghinyan (RUS) | Ruby Meditation 26
Best practices. Exploring - Ike Kurghinyan (RUS) | Ruby Meditation 26
Road to A/B testing - Alexey Vasiliev (ENG) | Ruby Meditation 25
Road to A/B testing - Alexey Vasiliev (ENG) | Ruby Meditation 25
Concurrency in production. Real life example - Dmytro Herasymuk | Ruby Medita...
Concurrency in production. Real life example - Dmytro Herasymuk | Ruby Medita...
Data encryption for Ruby web applications - Dmytro Shapovalov (RUS) | Ruby Me...
Data encryption for Ruby web applications - Dmytro Shapovalov (RUS) | Ruby Me...
Rails App performance at the limit - Bogdan Gusiev
Rails App performance at the limit - Bogdan Gusiev
GDPR. Next Y2K in 2018? - Anton Tkachov | Ruby Meditation #23
GDPR. Next Y2K in 2018? - Anton Tkachov | Ruby Meditation #23
Último
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Puma Security, LLC
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Anna Loughnan Colquhoun
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
hans926745
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Delhi Call girls
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
Khem
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
debabhi2
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
wesley chun
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
HampshireHUG
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Radu Cotescu
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
The Digital Insurer
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
Delhi Call girls
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
naman860154
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Neo4j
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Martijn de Jong
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
Malak Abu Hammad
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Rafal Los
Último
(20)
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
A toolbelt of seasoned bug hunter - Damir Zekic
1.
A Toolbelt of a
Seasoned Bug Hunter Damir Zekić
2.
3.
(["foo")
4.
Baaaad bugs Not
so bad bugs
5.
Silent bugs Loud
bugs
6.
2016: a debugging odyssey
7.
8.
Step 1: Reproduce
9.
Step 1: Reproduce SUCCESS
10.
Step 2: What
introduced it?
11.
git bisect
12.
13 37 c0
ff ee c0 de a0
13.
13 37 c0
ff ee c0 de a0 bug is present here "bad"
14.
13 37 c0
ff ee c0 de a0 bug is present here "bad" no bug 7 commits ago "good"
15.
13 37 c0
ff ee c0 de a0 bug is present here "bad" no bug 7 commits ago "good"
16.
13 37 c0
ff ee c0 de a0 bug is present here "bad" no bug 7 commits ago "good"
17.
13 37 c0
ff ee c0 de a0 bug is present here "bad" no bug 7 commits ago "good"
18.
13 37 c0
ff ee c0 de a0 bug is present here "bad" no bug 7 commits ago "good"
19.
13 37 c0
ff ee c0 de a0 bug is present here "bad" no bug 7 commits ago "good"
20.
13 37 c0
ff ee c0 de a0 bug is present here "bad" no bug 7 commits ago "good"
21.
13 37 c0
ff ee c0 de a0 bug is present here "bad" no bug 7 commits ago "good"
22.
13 37 c0
ff ee c0 de a0 cli-ff-hanger
23.
24.
Every commit must
be stable
25.
But, which commit was
"good"?!
26.
13 37 c0
ff ee c0 de a0 no bug 7 commits ago "good"
27.
$ ./find_slow.rb
28.
29.
Step 2: What
introduced it? UNSURE
30.
Brainstorming: Is it a
memory leak?
31.
A Problem: Ruby doesn't
release memory back to OS
32.
Brainstorming: Is it a
memory leak?UNSURE
33.
Assume it is and
check heap dumps
34.
35.
require 'objspace' ObjectSpace.trace_object_allocations_start class Foo def
bar puts "Hello, world!" end end foo = Foo.new foo.bar file = File.open("/tmp/heap.dump", 'w') ObjectSpace.dump_all(output: file) file.close
36.
$ wc -l
/tmp/heap.dump 33297 /tmp/heap.dump
37.
{"address":"0x7f9fa7076ea0", "type":"STRING", "class":"0x7f9fa70cfe10",
"embedded":true, "bytesize":13, "value":"Hello, world!", "encoding":"UTF-8", "file":"(irb)", "line":5, "method":"bar", "generation":13, "memsize":40, "flags": {"wb_protected":true}} {"address":"0x7f9fa7076ec8", "type":"IMEMO", "class":"0x7f9fa70dc2f0", "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7076ef0", "type":"IMEMO", "references":["0x7f9fa70dd4e8"], "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7076f18", "type":"STRING", "class":"0x7f9fa70cfe10", "frozen":true, "embedded":true, "fstring":true, "bytesize":5, "value":"abort", "encoding":"US-ASCII", "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7076f40", "type":"STRING", "class":"0x7f9fa70cfe10", "frozen":true, "bytesize":59, "capacity":127, "value":"/Users/damir/.rbenv/versions/2.4.1/lib/ruby/x86_64-darwin16", "memsize":168, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7076f68", "type":"IMEMO", "class":"0x7f9fa70dc2f0", "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7076f90", "type":"IMEMO", "references":["0x7f9fa70dd4e8"], "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7076fb8", "type":"IMEMO", "class":"0x7f9fa70dc2f0", "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7076fe0", "type":"IMEMO", "references":["0x7f9fa70dd4e8"], "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7077008", "type":"IMEMO", "class":"0x7f9fa70dc2f0", "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7077030", "type":"IMEMO", "references":["0x7f9fa70dd4e8"], "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7077058", "type":"STRING", "class":"0x7f9fa70cfe10", "frozen":true, "embedded":true, "fstring":true, "bytesize":5, "value":"spawn", "encoding":"US-ASCII", "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}}
38.
{"address":"0x7f9fa7076ea0", "type":"STRING", "class":"0x7f9fa70cfe10", "embedded":true, "bytesize":13, "value":"Hello, world!", "encoding":"UTF-8", "file":"(irb)", "line":5, "method":"bar", "generation":13, "memsize":40, "flags":{"wb_protected":true}}
39.
$ gem install
heapy
40.
$ ./analyze_heapy_diffs.rb
41.
Class DSL objects survive
longest
42.
!
43.
Brainstorming: Let's trace a
call stack
44.
Flamegraphs
45.
46.
47.
48.
49.
Brainstorming: Let's trace a
call stackSUCCESS
50.
Internal framework creates
controllers Classes created by routing don't get destroyed Router removes methods from all controllers
51.
Now let's fix
it!
Baixar agora