com presentations: DPC talks: deepdive-dpc19.xml slides/mongodb/me.xml slides/time/cal-iso8601.xml slides/time/cal-natural.xml slides/time/date-modify-immutable1.xml slides/time/date-modify-immutable2.xml slides/time/improvements-timezones.xml slides/time/in-database4.xml slides/time/intervals.xml slides/time/quiz.xml slides/time/timezone-object-1.xml slides/xdebug/config-settings-3b.xml slides/xdebug/debugger-connection-log.xml slides/xdebug/der
[email protected] (Derick Rethans) Thu, 30 May 2019 10:14:36 +0000
| Newsgroups | php.pres |
|---|---|
| Message-ID | <[email protected]> |
Commit: 6baed2b630cd4a94c1464b31981910ea4fb6ae03 Author: Derick Rethans <[email protected]> Thu, 30 May 2019 11:14:36 +0100 Parents: 37204f3167095824c3581889bb05d3fc9bc39500 Branches: master Link: http://git.php.net/?p=presentations.git;a=commitdiff;h=6baed2b630cd4a94c1464b31981910ea4fb6ae03 Log: DPC talks Changed paths: A deepdive-dpc19.xml M slides/mongodb/me.xml A slides/time/cal-iso8601.xml A slides/time/cal-natural.xml M slides/time/date-modify-immutable1.xml M slides/time/date-modify-immutable2.xml M slides/time/improvements-timezones.xml M slides/time/in-database4.xml M slides/time/intervals.xml M slides/time/quiz.xml M slides/time/timezone-object-1.xml M slides/xdebug/config-settings-3b.xml M slides/xdebug/debugger-connection-log.xml A slides/xdebug/derick-new-512x512.png M slides/xdebug/donate.xml M slides/xdebug/focus-on-xdebug3.xml A time-dpc19.xml A xdebug-dpc19.xml
diff_6baed2b630cd4a94c1464b31981910ea4fb6ae03.txt
(text/plain, 17.1 KB)
diff --git a/deepdive-dpc19.xml b/deepdive-dpc19.xml new file mode 100644 index 0000000..212f6ae --- /dev/null +++ b/deepdive-dpc19.xml @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="utf-8"?> +<presentation css="derick.css"> +<topic>PHP</topic> +<title>PHP Deep Dive</title> +<event>Dutch PHP Conference</event> +<location>Amsterdam, the Netherlands</location> +<date>June 6th, 2019</date> +<speaker>Derick Rethans</speaker> +<email>[email protected]</email> +<twitter>derickr</twitter> +<url>https://derickrethans.nl/talks/deepdive-dpc19</url> +<joindin>https://joind.in/26312</joindin> + +<slide>slides/xdebug/title.xml</slide> +<slide>slides/mongodb/me.xml</slide> + +<slide>slides/internals/title-agenda.xml</slide> + +<slide>slides/internals/title-stages.xml</slide> +<!-- INTRODUCTION +Compile stages: +Parse script +Create AST +Convert to opcodes +Run the code +Opcache for caching +--> +<slide>slides/internals/stages.xml</slide> + +<!-- STAGES +Parse +- Show parser rules +- Show "compiler" rules +--> + +<slide>slides/internals/title-parsing.xml</slide> +<slide>slides/internals/parse-state-machine.xml</slide> +<slide>slides/internals/parse-tokenization.xml</slide> +<slide>slides/internals/scanner.xml</slide> +<slide>slides/internals/scanner-rules.xml</slide> + +<!-- EXERCISE: SHORT OPEN TAG --> +<slide>slides/internals/exercise-short-open-tag.xml</slide> + +<slide>slides/internals/ast.xml</slide> +<slide>slides/internals/ast1.xml</slide> +<slide>slides/internals/scanner-ast.xml</slide> +<slide>slides/internals/scanner-ast2.xml</slide> +<slide>slides/internals/bytecode0.xml</slide> +<slide>slides/internals/bytecode½.xml</slide> +<slide>slides/internals/bytecode1.xml</slide> + +<!-- EXERCISE: ALWAYS STRICT --> +<slide>slides/internals/exercise-strict-by-default.xml</slide> + +<slide>slides/internals/jumps.xml</slide> + +<!-- +AST +- Show AST for various control structures + +Opcodes +- Show AST for the same control structures +--> + +<slide>slides/internals/jumps-if.xml</slide> +<slide>slides/internals/jumps-if-else.xml</slide> + +<slide>slides/internals/rings.xml</slide> +<slide>slides/internals/jumps-for.xml</slide> +<slide>slides/internals/jumps-for-rewritten.xml</slide> +<slide>slides/internals/jumps-while.xml</slide> +<slide>slides/internals/jumps-do-while.xml</slide> +<slide>slides/internals/jumps-foreach.xml</slide> +<slide>slides/internals/jumps-complex.xml</slide> +<slide>slides/internals/loops.xml</slide> +<slide>slides/internals/jumps-complex-dot.xml</slide> + +<!-- +Try/Catch nonsense +- FASTCALL/FASTRET +--> +<slide>slides/internals/catch.xml</slide> +<slide>slides/internals/jumps-try-catch.xml</slide> + +<!-- +Dead code analysis +- Show how Xdebug does it through VLD +--> +<slide>slides/internals/deadcode.xml</slide> +<slide>slides/internals/deadcode-vld.xml</slide> + +<!-- +Path analysis +- Branch and Path +--> +<slide>slides/internals/branches.xml</slide> +<slide>slides/xdebug/vld-path-2-paths.xml</slide> +<slide>slides/xdebug/vld-path-4-code.xml</slide> +<slide>slides/xdebug/vld-path-4-output.xml</slide> + +<slide>slides/xdebug/vld-path-3-code.xml</slide> +<slide>slides/xdebug/vld-path-3-output.xml</slide> +<slide>slides/xdebug/vld-path-3-paths.xml</slide> + +<!-- Conclusion + +Code -> Tokens -> AST -> opode + +Transformation of control structures + +Useful implementations + +--> +<slide>slides/internals/recap.xml</slide> +<slide>slides/internals/recap-content.xml</slide> + + + +<slide>slides/mongodb/questions.xml</slide> +<slide>slides/xdebug/phpinternalsnews.xml</slide> + +<slide>slides/mongodb/resources.xml</slide> + +</presentation> diff --git a/slides/mongodb/me.xml b/slides/mongodb/me.xml index 7968048..61fa13a 100644 --- a/slides/mongodb/me.xml +++ b/slides/mongodb/me.xml @@ -2,7 +2,7 @@ <slide> <title>About Me</title> -<image filename="../tdd/derick_photo.jpg" align="right" pdf-float="1" x-offset="21.3" y-offset="10" pdf-scale="0.25"/> +<image filename="../xdebug/derick-new-512x512.png" align="right" pdf-float="1" x-offset="21.3" y-offset="10" pdf-scale="0.25"/> <blurb>Derick Rethans</blurb> <list> diff --git a/slides/time/cal-iso8601.xml b/slides/time/cal-iso8601.xml new file mode 100644 index 0000000..4876e0f --- /dev/null +++ b/slides/time/cal-iso8601.xml @@ -0,0 +1,37 @@ +<slide> +<title>Calendar</title> + +<table class="big"><tr> +<td><example inline="2" class="big"> + December 2020 + w| Mo Tu We Th Fr Sa Su +49| 1 2 3 4 5 6 +50| 7 8 9 10 11 12 13 +51| 14 15 16 17 18 19 20 +52| 21 22 23 24 25 26 27 +*53| 28 29 30 31 * + + January 2021 + w| Mo Tu We Th Fr Sa Su +*53| 1 2 3* + 1| 4 5 6 7 8 9 10 + 2| 11 12 13 14 15 16 17 + 3| 18 19 20 21 22 23 24 + 4| 25 26 27 28 29 30 31 +</example></td> +<td> +<blurb>ISO 8601 calendar:</blurb> +<list> + <bullet>52-53 weeks</bullet> + <bullet>7 days each week</bullet> +</list> +<break lines="2"/> +<example result="3"><![CDATA[<?php +$date = new DateTimeImmutable("2021-01-02"); +echo $date->format('o-\WW-\DN'); +?>]]></example> + +</td> +</tr></table> + +</slide> diff --git a/slides/time/cal-natural.xml b/slides/time/cal-natural.xml new file mode 100644 index 0000000..7588107 --- /dev/null +++ b/slides/time/cal-natural.xml @@ -0,0 +1,37 @@ +<slide> +<title>Calendar</title> + +<table class="big"><tr> +<td><example inline="2" class="big"> + *December 2020* + w| Mo Tu We Th Fr Sa Su +49| * 1 2 3 4 5 6* +50| * 7 8 9 10 11 12 13* +51| *14 15 16 17 18 19 20* +52| *21 22 23 24 25 26 27* +53| *28 29 30 31 * + + *January 2021* + w| Mo Tu We Th Fr Sa Su +53| * 1 2 3* + 1| * 4 5 6 7 8 9 10* + 2| *11 12 13 14 15 16 17* + 3| *18 19 20 21 22 23 24* + 4| *25 26 27 28 29 30 31* +</example></td> +<td> +<blurb>Normal calendar:</blurb> +<list> + <bullet>12 months</bullet> + <bullet>28 to 31 days each month</bullet> +</list> +<break lines="2"/> +<example result="3"><![CDATA[<?php +$date = new DateTimeImmutable("2021-01-02"); +echo $date->format('Y-m-d'); +?>]]></example> + +</td> +</tr></table> + +</slide> diff --git a/slides/time/date-modify-immutable1.xml b/slides/time/date-modify-immutable1.xml index 5c02e09..1674da1 100644 --- a/slides/time/date-modify-immutable1.xml +++ b/slides/time/date-modify-immutable1.xml @@ -4,7 +4,7 @@ <blurb>Standard:</blurb> <example result="1"><![CDATA[<?php - $ts = new DateTime("2018-04-17 15:53:55"); + $ts = new DateTime("2019-05-30 10:30:59"); $new = $ts->modify("+2 days"); echo $ts->format(DateTime::RFC2822), "\n"; echo $new->format(DateTime::RFC2822), "\n"; diff --git a/slides/time/date-modify-immutable2.xml b/slides/time/date-modify-immutable2.xml index 5339756..5cd7ffa 100644 --- a/slides/time/date-modify-immutable2.xml +++ b/slides/time/date-modify-immutable2.xml @@ -4,7 +4,7 @@ <blurb>Immutable (new in PHP 5.5):</blurb> <example result="1"><![CDATA[<?php - $ts = new DateTimeImmutable("2018-04-17 15:53:55"); + $ts = new DateTimeImmutable("2019-05-30 10:30:59"); $new = $ts->modify("+2 days"); echo $ts->format(DateTime::RFC2822), "\n"; echo $new->format(DateTime::RFC2822), "\n"; diff --git a/slides/time/improvements-timezones.xml b/slides/time/improvements-timezones.xml index 56be555..0cd3273 100644 --- a/slides/time/improvements-timezones.xml +++ b/slides/time/improvements-timezones.xml @@ -7,7 +7,7 @@ <bullet>Do not dependend on timezone abbreviations</bullet> <bullet>Use timezone IDs like %Europe/Amsterdam% or %America/Indiana/Knox%</bullet> </list> - +<break lines="2"/> <image align="center" filename="zone-places.png" y-offset="6"/> </slide> diff --git a/slides/time/in-database4.xml b/slides/time/in-database4.xml index ad30c2e..0d7b750 100644 --- a/slides/time/in-database4.xml +++ b/slides/time/in-database4.xml @@ -1,6 +1,5 @@ <slide> <title>Storing date/time in a database</title> -<subtitle>Summary</subtitle> <blurb>If you want to store a time for an appointment for a group of people all in different timezones—store a *specific point in time*:</blurb> diff --git a/slides/time/intervals.xml b/slides/time/intervals.xml index ccc6c49..af67eba 100644 --- a/slides/time/intervals.xml +++ b/slides/time/intervals.xml @@ -12,7 +12,7 @@ $i = new DateInterval( 'P3DT6H' ); // from a difference $d1 = new DateTimeImmutable(); -$d2 = new DateTimeImmutable( "2019-03-29 23:00 Europe/London" ); +$d2 = new DateTimeImmutable( "2019-10-31 23:00 Europe/London" ); $i = $d1->diff( $d2 ); // displaying the difference diff --git a/slides/time/quiz.xml b/slides/time/quiz.xml index f46882d..52498ea 100644 --- a/slides/time/quiz.xml +++ b/slides/time/quiz.xml @@ -3,6 +3,7 @@ <break lines="4"/> +<div effect="fade-out"><blurb class="centre">A series of statements, raise your arm when you think it's true!</blurb><break lines="2"/><blurb class="big-centre">🙋🙋🏾♂️🙋🏻♀️🙋🏿♀️🙋♂️</blurb></div> <div effect="fade-in-out"><blurb class="big-centre">each day has *24 hours*</blurb></div> <div effect="fade-in-out"><blurb class="big-centre">each day is *23, 24 or 25 hours*</blurb></div> <div effect="fade-in-out"><blurb class="big-centre">every time exists *only once* during a day</blurb></div> diff --git a/slides/time/timezone-object-1.xml b/slides/time/timezone-object-1.xml index 5f996ef..756391b 100644 --- a/slides/time/timezone-object-1.xml +++ b/slides/time/timezone-object-1.xml @@ -14,7 +14,7 @@ ?>]]></example> <blurb>A passed timezone does not override a *parsed* timezone:</blurb> - <example result="1"><![CDATA[<?php + <example><![CDATA[<?php $tz = new DateTimeZone("Pacific/Honolulu"); $ts2 = new DateTimeImmutable("1978-12-22 09:15 Europe/London", $tz); echo $ts2->format( DateTime::RFC2822 ); diff --git a/slides/xdebug/config-settings-3b.xml b/slides/xdebug/config-settings-3b.xml index 6879155..1a45844 100644 --- a/slides/xdebug/config-settings-3b.xml +++ b/slides/xdebug/config-settings-3b.xml @@ -25,7 +25,7 @@ |aaaaaa|xdebug.|debug.dump_globals |aaaaaa|xdebug.|debug.dump_once |aaaaaa|xdebug.|debug.dump_undefined -*|aaaaaa|xdebug.|extended_info* +---*|00cc00|xdebug.extended_info|*--- ~removed in Xdebug 2.8~ |aaaaaa|xdebug.|debug.file_link_format |aaaaaa|xdebug.|debug.filename_format |aaaaaa|xdebug.|debug.force_display_errors diff --git a/slides/xdebug/debugger-connection-log.xml b/slides/xdebug/debugger-connection-log.xml index 091da7a..acb2223 100644 --- a/slides/xdebug/debugger-connection-log.xml +++ b/slides/xdebug/debugger-connection-log.xml @@ -1,22 +1,22 @@ <slide> <title>Step Debugger Logs</title> +<blurb>Logging debugging communication:</blurb> <example>xdebug.remote_log=/tmp/remote.log</example> -<list> - <bullet>Logs all debugger communication</bullet> - <bullet>Also shows connection attempts and failures:</bullet> -</list> +<div effect="fade-in"> +<blurb>Also shows connection attempts and failures:</blurb> <example inline="2"> xdebug.remote_connect_back=0 -xdebug.remote_host=nothere -xdebug.remote_port=9002 +xdebug.remote_port=9991 -I: Connecting to configured address/port: nothere:9002. -E: Could not connect to client. *:-(* +I: Connecting to configured address/port: localhost:9991. +I: Connected to client. *|009900|:-)|* </example> +</div> +<div effect="fade-in"> <example inline="2"> xdebug.remote_connect_back=1 |777777|xdebug.remote_host=SomethingEntirelyDifferent| @@ -26,12 +26,16 @@ I: Checking remote connect back address. W: Remote address not found, connecting to configured address/port: nothere:9003. *:-|* E: Could not connect to client. *:-(* </example> +</div> +<div effect="fade-in"> <example inline="2"> xdebug.remote_connect_back=0 -xdebug.remote_port=9991 +xdebug.remote_host=nothere +xdebug.remote_port=9002 -I: Connecting to configured address/port: localhost:9991. -I: Connected to client. *|009900|:-)|* +I: Connecting to configured address/port: nothere:9002. +E: Could not connect to client. *:-(* </example> +</div> </slide> diff --git a/slides/xdebug/derick-new-512x512.png b/slides/xdebug/derick-new-512x512.png new file mode 100644 index 0000000..dea5a93 Binary files /dev/null and b/slides/xdebug/derick-new-512x512.png differ diff --git a/slides/xdebug/donate.xml b/slides/xdebug/donate.xml index 6517dab..fc5f721 100644 --- a/slides/xdebug/donate.xml +++ b/slides/xdebug/donate.xml @@ -3,7 +3,7 @@ <list> <bullet>It's Open Source and free (as in "free beer")</bullet> <bullet>Using Xdebug saves you a lot of time</bullet> - <bullet>Working on Xdebug takes up a lot of time</bullet> + <bullet>I would like to work more on Xdebug, to help *you*</bullet> </list> <break lines="2"/> diff --git a/slides/xdebug/focus-on-xdebug3.xml b/slides/xdebug/focus-on-xdebug3.xml index 4e13b56..ad7e324 100644 --- a/slides/xdebug/focus-on-xdebug3.xml +++ b/slides/xdebug/focus-on-xdebug3.xml @@ -13,7 +13,7 @@ <bullet>The Big Refactor™ <list> <bullet>Introducing modes</bullet> - <bullet>Simplify configuration and validation</bullet> + <bullet>Simplify configuration and validation <small>(in progress…)</small></bullet> </list> </bullet> <bullet>Performance Improvements</bullet> diff --git a/time-dpc19.xml b/time-dpc19.xml new file mode 100644 index 0000000..b7b7443 --- /dev/null +++ b/time-dpc19.xml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="utf-8"?> +<presentation css="derick.css"> +<topic>Localization and Internationalization</topic> +<title>Time Zones and Calendars are a PITA</title> +<event>Dutch PHP Conference</event> +<location>Amsterdam, the Netherlands</location> +<date>June 8th, 2019</date> +<speaker>Derick Rethans</speaker> +<email>[email protected]</email> +<url>https://derickrethans.nl/talks/time-dpc19</url> +<joindin>https://joind.in/26371</joindin> +<twitter>derickr</twitter> + +<slide>slides/xdebug/title.xml</slide> +<slide>slides/mongodb/me.xml</slide> + +<!-- INTRODUCTION --> +<slide>slides/time/quiz.xml</slide> + +<!-- PHP - IMPROVEMENTS --> +<slide>slides/time/improvements-timezones.xml</slide> +<slide>slides/time/improvements-more-on-timezones.xml</slide> +<slide>slides/time/default-timezone.xml</slide> +<slide>slides/time/timestamps-suck.xml</slide> + +<!-- PHP - CODE EXAMPLES --> +<slide>slides/time/basic-parse-time-new.xml</slide> +<slide>slides/time/date-parse-from-format3.xml</slide> +<slide>slides/time/date-parse-from-format2.xml</slide> + +<!-- DATE EXAMPLES --> +<slide>slides/time/date-modify.xml</slide> +<slide>slides/time/date-modify-immutable1.xml</slide> +<slide>slides/time/date-modify-immutable2.xml</slide> +<slide>slides/time/timezone-object-1.xml</slide> +<slide>slides/time/date-timezone.xml</slide> +<slide>slides/time/timezone-utilities-3.xml</slide> + +<!-- INTERVALS and PERIODS --> +<slide>slides/time/intervals.xml</slide> +<slide>slides/time/intervals-2.xml</slide> +<slide>slides/time/relative-month.xml</slide> +<slide>slides/time/relative-month3.xml</slide> +<slide>slides/time/period-2.xml</slide> + +<slide>slides/time/in-database4.xml</slide> + +<!-- CALENDARS --> +<slide>slides/time/cal-natural.xml</slide> +<slide>slides/time/cal-iso8601.xml</slide> + +<!-- EXIT --> +<slide>slides/time/book.xml</slide> <!-- resources --> +<slide>slides/mongodb/questions.xml</slide> +<slide>slides/mongodb/resources.xml</slide> <!-- resources --> +</presentation> diff --git a/xdebug-dpc19.xml b/xdebug-dpc19.xml new file mode 100644 index 0000000..1513c3d --- /dev/null +++ b/xdebug-dpc19.xml @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="utf-8"?> +<presentation css="derick.css"> +<topic>Debugging</topic> +<title>Xdebug 3.0</title> +<event>Dutch PHP Conference</event> +<location>Amsterdam, the Netherlands</location> +<date>June 7th, 2019</date> +<speaker>Derick Rethans</speaker> +<email>[email protected]</email> +<twitter>derickr</twitter> +<url>https://derickrethans.nl/talks/xdebug-dpc19</url> +<joindin>https://joind.in/26298</joindin> +<slide>slides/xdebug/title.xml</slide> +<slide>slides/mongodb/me.xml</slide> + +<slide>slides/xdebug/focus-on-xdebug.xml</slide> +The Xdebug Experience +17 years + +<slide>slides/xdebug/config-settings-2.xml</slide> +<slide>slides/xdebug/breakpoints-2.xml</slide> +<slide>slides/xdebug/port9000.xml</slide> +<!-- <slide>slides/xdebug/connect1.xml</slide> --> +<!-- <slide>slides/xdebug/connect2.xml</slide> --> +<slide>slides/xdebug/debugger-activation.xml</slide> +<slide>slides/xdebug/debugger-connection-log.xml</slide> +<slide>slides/xdebug/xdebug-slow.xml</slide> +<slide>slides/xdebug/test-with-many-versions.xml</slide> + +<slide>slides/xdebug/focus-on-xdebug2.xml</slide> + +<slide>slides/xdebug/focus-on-xdebug3.xml</slide> +breakpoint behaviour +New versions (7.4) +CI + +<slide>slides/xdebug/xdebug-2.8.xml</slide> +<slide>slides/xdebug/breakpoint-behaviour.xml</slide> +<slide>slides/xdebug/php-7.4-compile-error.xml</slide> +<slide>slides/xdebug/xdebug-ci.xml</slide> + +<slide>slides/xdebug/xdebug-3.xml</slide> +Code reorganisation +Modes +- only do what is needed +Reduce Configuration Options +Code Improvements (algorithms, memory, etc) +<slide>slides/xdebug/code-reorgnisation.xml</slide> +<slide>slides/xdebug/modes.xml</slide> +<slide>slides/xdebug/config-settings-3.xml</slide> +<slide>slides/xdebug/config-settings-3b.xml</slide> +<slide>slides/xdebug/xdebug-slow.xml</slide> + +<slide>slides/xdebug/donate.xml</slide> +<slide>slides/xdebug/phpinternalsnews.xml</slide> +<slide>slides/xdebug/resources.xml</slide> + +</presentation>