Added PHPNW talks

This commit is contained in:
Derick Rethans
2017-09-26 17:24:50 +01:00
parent 62549591a4
commit 519e75823a
3 changed files with 273 additions and 1 deletions

130
debug-setup-phpnw17.xml Normal file
View File

@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="utf-8"?>
<presentation css="10gen-strict.css">
<topic>PHP</topic>
<title>Debugging Your Set-Up</title>
<event>PHP NorthWest 2017</event>
<location>Manchester, UK</location>
<lat>51.15056</lat><lon>4.43284</lon>
<date>January 27th, 2017</date>
<speaker>Derick Rethans</speaker>
<email>derick@mongodb.com</email>
<twitter>derickr</twitter>
<joindin>https://joind.in/22137</joindin>
<slide>slides/mongodb/title.xml</slide>
<slide>slides/mongodb/me.xml</slide>
In this session we will look at low-level (Linux) system debugging tools to
find out what is going on (or wrong!) with your PHP environment, although the
techniques are also valid for other programs besides PHP. We will cover
debugging crashes with gdb, checking out memory leaks with valgrind, and many
other tools to find out what is going wrong, and hopefully, figure out why.
This session teaches tools to help out with tracking down bugs, and provides
information on how to get better at debugging connection issues, crashes, files
not being written, etc. The session is also valuable for people who want to
help out with providing good bug reports for Open Source projects.
<slide>slides/debugging/storytime.xml</slide>
- don't jump to conclusions
- unless you know what you're doing ;-) https://jira.mongodb.org/browse/PHPC-894 / https://github.com/mongodb/mongo-php-driver/issues/514
<slide>slides/debugging/jump-conclusions.xml</slide>
<slide>slides/debugging/jump-memory-leak.xml</slide>
<slide>slides/debugging/toolbox.xml</slide>
<slide>slides/debugging/toolbox-items.xml</slide>
<slide>slides/debugging/section-strace.xml</slide>
<slide>slides/debugging/strace-systemcalls.xml</slide>
<slide>slides/debugging/strace-invocation.xml</slide>
<slide>slides/debugging/strace-invocation-phpini.xml</slide>
<slide>slides/debugging/strace-invocation-socket.xml</slide>
<slide>slides/debugging/demo.xml</slide>
- strace
- what is it?
- how does it work?
- php.ini loading
<slide>slides/debugging/jump-conclusions.xml</slide>
<slide>slides/debugging/section-lsof.xml</slide>
<slide>slides/debugging/lsof-files-unix.xml</slide>
<slide>slides/debugging/lsof-invocation.xml</slide>
<slide>slides/debugging/demo.xml</slide>
<slide>slides/debugging/lsof-invocation-cant-listen.xml</slide>
- lsof -i
- what is it?
- how does it work?
- socket with xdebug and fork
- set size: https://youtrack.jetbrains.com/issue/WI-31522, "PHP Scripts with Background Child Process" email
- setsize
- small test case
- https://github.com/sebastianbergmann/php-code-coverage/issues/488
<slide>slides/debugging/section-gdb.xml</slide>
<slide>slides/debugging/gdb-what-is-it.xml</slide>
<slide>slides/debugging/gdb-backtrace.xml</slide>
<slide>slides/debugging/gdb-symbols.xml</slide>
<slide>slides/debugging/demo.xml</slide>
<slide>slides/debugging/gdb-optimisation.xml</slide>
<slide>slides/debugging/gdb-optimisation-asm.xml</slide>
<slide>slides/debugging/gdb-optimisation-wrong.xml</slide>
<slide>slides/debugging/gdb-short-case.xml</slide>
<slide>slides/debugging/gdb-usage.xml</slide>
<slide>slides/debugging/gdb-debug-core.xml</slide>
<slide>slides/debugging/gdb-attach.xml</slide>
<slide>slides/debugging/demo.xml</slide>
<slide>slides/debugging/gdb-zbacktrace.xml</slide>
- gdb
- what is it?
- how does it work?
- talk about memory management in PHP
- crashes
- core files
-
- attach to running PID
- run from within
- httpd -X
- symbols included
- optimisation
- zbacktrace
<slide>slides/debugging/section-valgrind.xml</slide>
<slide>slides/debugging/valgrind-how.xml</slide>
<slide>slides/debugging/jump-memory-leak.xml</slide>
<slide>slides/debugging/valgrind-show-leak1.xml</slide>
<slide>slides/debugging/demo.xml</slide>
<slide>slides/debugging/valgrind-show-leak2.xml</slide>
<slide>slides/debugging/valgrind-show-leak3.xml</slide>
<slide>slides/debugging/valgrind-show-leak4.xml</slide>
<slide>slides/debugging/valgrind-show-leak5.xml</slide>
<slide>slides/debugging/valgrind-show-leak6.xml</slide>
<slide>slides/debugging/valgrind-wrap-up.xml</slide>
- valgrind
- what is it?
- how does it work?
- memory leaks
- get_properties/get_gc
- run from with in
- use with gdb
- USE_ZEND_ALLOC=0
- ZEND_DONT_UNLOAD_MODULES
** OPTIMISATION GONE WRONG **
- gcc -S
- what is it?
- how does it work?
- compiler bug with alloca: https://bugs.xdebug.org/view.php?id=1337 https://bugs.php.net/bug.php?id=73545,
- don't use xdebug (sigh)
- https://github.com/xdebug/xdebug/commit/c36ea38141cb9403ff4bf72602fcf4ae62e5ba1e
- https://bugs.php.net/bug.php?id=73545
<slide>slides/debugging/toolbox-items.xml</slide>
<slide>slides/mongodb/questions.xml</slide>
<slide>slides/mongodb/resources.xml</slide>
</presentation>

142
nonscalar-phpnw17.xml Normal file
View File

@@ -0,0 +1,142 @@
<?xml version="1.0" encoding="utf-8"?>
<presentation css="10gen-strict.css">
<topic>MongoDB</topic>
<title>Storing Non-Scalar Data</title>
<event>PHP NorthWest 2017</event>
<location>Manchester, UK</location>
<date>September 30th, 2017</date>
<speaker>Derick Rethans</speaker>
<email>derick@mongodb.com</email>
<twitter>derickr</twitter>
<url>http://derickrethans.nl/talks.html</url>
<joindin>https://joind.in/22136</joindin>
<slide>slides/mongodb/title.xml</slide>
<slide>slides/mongodb/me.xml</slide>
<slide>slides/mongodb/scalar-non-scalar-examples.xml</slide>
<!-- <slide>slides/mongodb/scalar-non-scalar-example-vector.xml</slide> -->
<slide>slides/mongodb/scalar-non-scalar-example-tag-cloud.xml</slide>
<slide>slides/mongodb/scalar-non-scalar-example-product-properties.xml</slide>
<!-- <slide>slides/mongodb/scalar-non-scalar-example-addresses.xml</slide> -->
<slide>slides/mongodb/scalar-what-is-it-not.xml</slide>
<slide>slides/mongodb/scalar-agenda.xml</slide>
Intro into DB types and their data types
<slide>slides/mongodb/scalar-section-dbs-and-types.xml</slide>
Key/Value:
Redis
LISTS
SETS
HASHES
Sorted SET
<slide>slides/mongodb/scalar-key-value.xml</slide>
<slide>slides/mongodb/scalar-redis.xml</slide>
<!-- <slide>slides/mongodb/scalar-redis-lists.xml</slide> -->
<slide>slides/mongodb/scalar-redis-sets.xml</slide>
<slide>slides/mongodb/scalar-redis-hashses.xml</slide>
<!-- <slide>slides/mongodb/scalar-redis-sorted-set.xml</slide> -->
Document:
MongoDB
CouchDB
Elastic Search
<slide>slides/mongodb/scalar-document.xml</slide>
<slide>slides/mongodb/scalar-mongodb.xml</slide>
<slide>slides/mongodb/document-complex.xml</slide>
<slide>slides/mongodb/phplib-crud-insert.xml</slide>
<slide>slides/mongodb/scalar-couchdb.xml</slide>
<slide>slides/mongodb/scalar-couchdb-example.xml</slide>
<slide>slides/mongodb/scalar-couchdb-insert.xml</slide>
<slide>slides/mongodb/scalar-elasticsearch.xml</slide>
<slide>slides/mongodb/scalar-elasticsearch-example.xml</slide>
<slide>slides/mongodb/scalar-elasticsearch-insert.xml</slide>
Relational:
MySQL
JSON
PostgreSQL
HSTORE
JSON
JSONB
<slide>slides/mongodb/scalar-relational.xml</slide>
<slide>slides/mongodb/scalar-mysql.xml</slide>
<slide>slides/mongodb/scalar-mysql-json.xml</slide>
<slide>slides/mongodb/scalar-mysql-json-example.xml</slide>
<slide>slides/mongodb/scalar-postgresql.xml</slide>
<slide>slides/mongodb/scalar-postgresql-hstore.xml</slide>
<slide>slides/mongodb/scalar-postgresql-jsonb.xml</slide>
<slide>slides/mongodb/scalar-postgresql-jsonb-example.xml</slide>
<!-- <slide>slides/mongodb/scalar-storage-overview.xml</slide> -->
<slide>slides/mongodb/scalar-section-query.xml</slide>
Manipulation
Query
Query operators for $in, $elemMatch, etc
Query operations on nested fields
<slide>slides/mongodb/scalar-query-redis.xml</slide>
<slide>slides/mongodb/scalar-query-couchdb.xml</slide>
<slide>slides/mongodb/scalar-query-mongodb.xml</slide>
<slide>slides/mongodb/scalar-query-mongodb-aggregation.xml</slide>
<slide>slides/mongodb/scalar-query-elasticsearch.xml</slide>
<slide>slides/mongodb/scalar-query-mysql.xml</slide>
<slide>slides/mongodb/scalar-query-postgresql-hstore.xml</slide>
<!-- <slide>slides/mongodb/scalar-query-postgresql-jsonb.xml</slide> -->
Indexes
Redis
MongoDB
CouchDB
ElasticSearch
MySQL
only through virtual columns
Not on arrays
PostgreSQL
GIN/GIST
Geospatial from GeoJSON sources (not PostGIS)
<slide>slides/mongodb/indexes-title.xml</slide>
<slide>slides/mongodb/scalar-index-redis.xml</slide>
<slide>slides/mongodb/scalar-index-couchdb.xml</slide>
<slide>slides/mongodb/index.xml</slide>
<slide>slides/mongodb/scalar-index-elasticsearch.xml</slide>
<slide>slides/mongodb/scalar-index-postgresql.xml</slide>
<slide>slides/mongodb/scalar-index-mysql.xml</slide>
<slide>slides/mongodb/scalar-section-manipulation.xml</slide>
Storing/Update
Atomicity
ACID
Single document with update specifiers
Partitioning on JSON data
Manipulation of JSON data
<slide>slides/mongodb/scalar-atomicity.xml</slide>
<!-- <slide>slides/mongodb/acid.xml</slide> -->
<slide>slides/mongodb/scalar-nosql-acid.xml</slide>
<slide>slides/mongodb/scalar-atomic-redis.xml</slide>
<slide>slides/mongodb/scalar-atomic-couchdb.xml</slide>
<slide>slides/mongodb/update-atomicity.xml</slide>
Schema validation
None can do that, besides MongoDB
<slide>slides/mongodb/scalar-validate.xml</slide>
<slide>slides/mongodb/document-validation.xml</slide>
<slide>slides/mongodb/scalar-conclusion.xml</slide>
Conclusion
<slide>slides/mongodb/questions.xml</slide>
<slide>slides/mongodb/resources.xml</slide>
</presentation>

View File

@@ -3,7 +3,7 @@
<list>
<bullet>a debugger</bullet>
<bullet>Like Xdebug/PhpStorm, but then for C programs</bullet>
<bullet>Like Xdebug/PhpStorm, but for C programs</bullet>
<bullet>Works through hardware interrupts</bullet>
<bullet>Fairly low level</bullet>
<bullet>Can be used to make a backtrace</bullet>