Are you over 18 and want to see adult content?
More Annotations
A complete backup of vakantiefietser.nl
Are you over 18 and want to see adult content?
A complete backup of ceramicaglobo.com
Are you over 18 and want to see adult content?
A complete backup of pegasusbahrain.com
Are you over 18 and want to see adult content?
A complete backup of viagraherefasts.com
Are you over 18 and want to see adult content?
Favourite Annotations
A complete backup of graphicxtras.com
Are you over 18 and want to see adult content?
A complete backup of urinedrugtesthq.com
Are you over 18 and want to see adult content?
A complete backup of essaydiscountcodes.com
Are you over 18 and want to see adult content?
A complete backup of best-mobile-contracts.co.uk
Are you over 18 and want to see adult content?
A complete backup of krkonosskahospudka.cz
Are you over 18 and want to see adult content?
A complete backup of rajcapsindustries.com
Are you over 18 and want to see adult content?
Text
accents, or
MANAGING SCHEMA CHANGES WITH MONGODB In an earlier article I explained that although MongoDB stores documents in a "schema-less" collection you still have to think about how you store your data if you want to get the best out of the database.. However, sometimes you have to change your mind on how a document should look like. For example when you realize that your firstname and surname fields really should have been just one XFCE AND MOVING WINDOWS AROUND WITH THE KEYBOARD It uses a bunch of standard X tools ( xprop and xwininfo) to find some information about the active window and its properties. Then depending on some parameters it would use wmctrl to move and/or resize the window. For example: ./bin/window-geometry-control.sh -m left would move the window 1 pixel to the left. That's all good, but way tooslow.
NEW DATE/TIME SUPPORT IN MONGODB Updated on Friday, October 13th 2017: Reflects changes made since MongoDB 3.5.12 — this now documents the state as of version MongoDB3.6.0-rc0.
PRETTY PRINTING BSON The bson_t structure wraps all of the different data types from the BSON Specification. It is analogous to PHP's zval structure, although its implementation is a little more complicated. A bson_t structure can be allocated on the stack or heap, just like a zval structure. A zval structure represents a single data type and single value. OBTAINING THE NEXT MONTH IN PHP @Ken: well, well, looks like you know it all best huh. First some facts: PHP's next month stanza has always behaved like this.. When I tell my family that I will be there next month I really have to tell them which day of that month.. The relative string support was never meant to conform to exactly what people think what they mean.. The goal of the relative string support is to provide a rich IMPORTING OPENSTREETMAP DATA INTO MONGODB Importing OpenStreetMap data into MongoDB. London, UK. Tuesday, June 11th 2013, 09:49 BST. In many recent MongoDB related presentations I have used OpenStreetMap data as basis for most of my examples. I wrote a script that imports OpenStreetMap (OSM) nodes, ways and to a lesser extend relations into MongoDB with a specific and optimal schema. UNDERSTANDING VALGRIND ERRORS (1) Understanding Valgrind errors (1) While debugging segmentation faults (crashes) in PHP and its extensions, I often use Valgrind to assist me finding the root cause. Valgrind is an instrumentation framework for building dynamic analysis tools. It contains several tools, and its Memcheck tool is the one that detects memory-management problems. HOME — DERICK RETHANS Derick Rethans 0:14. Hi I'm Derick, welcome to PHP internals news, a podcast dedicated to explaining the latest developments in the PHP language. This is episode 87. Today I'm talking with Nikita Popov about a much smaller RFC this time: Deprecating 64-BIT INTEGERS IN MONGODB The current project that I'm working on relies heavily on MongoDB, a bridge between key-value stores and traditional RDBMS systems.Users in this project are identified by their Facebook UserID, which is a "64-bit int datatype".Unfortunately, the MongoDB PHP Driver only had support for 32-bit integers causing problems for newer users of Facebook. For those users, their nice long UserID was NATURAL LANGUAGE SORTING WITH MONGODB London, UK. Wednesday, August 27th 2014, 09:33 BST. Note: I have updated this article for the MongoDB 3.4 release in Natural Language Sorting with MongoDB 3.4. Arranging English words in order is simple—most of the time. You simply arrange them in alphabetical order. Sorting a set of German words, or French words with all theiraccents, or
MANAGING SCHEMA CHANGES WITH MONGODB In an earlier article I explained that although MongoDB stores documents in a "schema-less" collection you still have to think about how you store your data if you want to get the best out of the database.. However, sometimes you have to change your mind on how a document should look like. For example when you realize that your firstname and surname fields really should have been just one XFCE AND MOVING WINDOWS AROUND WITH THE KEYBOARD It uses a bunch of standard X tools ( xprop and xwininfo) to find some information about the active window and its properties. Then depending on some parameters it would use wmctrl to move and/or resize the window. For example: ./bin/window-geometry-control.sh -m left would move the window 1 pixel to the left. That's all good, but way tooslow.
NEW DATE/TIME SUPPORT IN MONGODB Updated on Friday, October 13th 2017: Reflects changes made since MongoDB 3.5.12 — this now documents the state as of version MongoDB3.6.0-rc0.
PRETTY PRINTING BSON The bson_t structure wraps all of the different data types from the BSON Specification. It is analogous to PHP's zval structure, although its implementation is a little more complicated. A bson_t structure can be allocated on the stack or heap, just like a zval structure. A zval structure represents a single data type and single value. OBTAINING THE NEXT MONTH IN PHP @Ken: well, well, looks like you know it all best huh. First some facts: PHP's next month stanza has always behaved like this.. When I tell my family that I will be there next month I really have to tell them which day of that month.. The relative string support was never meant to conform to exactly what people think what they mean.. The goal of the relative string support is to provide a rich IMPORTING OPENSTREETMAP DATA INTO MONGODB Importing OpenStreetMap data into MongoDB. London, UK. Tuesday, June 11th 2013, 09:49 BST. In many recent MongoDB related presentations I have used OpenStreetMap data as basis for most of my examples. I wrote a script that imports OpenStreetMap (OSM) nodes, ways and to a lesser extend relations into MongoDB with a specific and optimal schema. UNDERSTANDING VALGRIND ERRORS (1) Understanding Valgrind errors (1) While debugging segmentation faults (crashes) in PHP and its extensions, I often use Valgrind to assist me finding the root cause. Valgrind is an instrumentation framework for building dynamic analysis tools. It contains several tools, and its Memcheck tool is the one that detects memory-management problems. NATURAL LANGUAGE SORTING WITH MONGODB London, UK. Wednesday, August 27th 2014, 09:33 BST. Note: I have updated this article for the MongoDB 3.4 release in Natural Language Sorting with MongoDB 3.4. Arranging English words in order is simple—most of the time. You simply arrange them in alphabetical order. Sorting a set of German words, or French words with all theiraccents, or
XDEBUG UPDATE: APRIL 2021 Xdebug Update: April 2021. London, UK. Tuesday, May 11th 2021, 09:44 BST. Another monthly update where I explain what happened with Xdebug development in this past month. These will be published on the first Tuesday after the 5th of each month. Patreon and GitHub supporters will get it earlier, around the first of each month. PHP INTERNALS NEWS: EPISODE 88: PURE INTERSECTION TYPES Transcript Derick Rethans 0:14. Welcome to PHP internals news, a podcast dedicated to explaining the latest developments in the PHP language. This is Episode 88. LEAP SECONDS AND WHAT TO DO WITH THEM Terrestial Time (TT) as the modern astronomical standard for the passage of time. TT is defined as TAI + 32.184 seconds. GPS Time, as used by GPS satellites and receivers, was set to match UTC in 1980, but now deviates with 15 seconds due to the addition of leap seconds in UTC. GPS Time is defined as TAI - 19 seconds.DATETIMEIMMUTABLE
The new DateTimeImmutable class which does not display this "mutable" behaviour, and only returns the modified object: Both the old DateTime and the new DateTimeImmutable classes implement the DateTimeInterface interface. This interface defines all the methods that both classes implement. Of course, they can not be methods that change the object. REMOTE DEBUGGING PHP WITH A FIREWALL IN THE WAY The PHP debugging extension Xdebug has "remote" debugging capabilities for single-step debugging PHP applications. This works by setting your favourite IDE into listening mode and instructing Xdebug (with one of the handy browser extensions for example) to initiate debugging. When Xdebug is instructed it tries to make a connection to the IP address and port number that are configured in php.ini. WIRESHARK AND MONGODB 3.6 In MongoDB 3.6, two extra types of packages are are supported. These are the Extensible Message Format and Compressed packets. The former is replacing all earlier ways of sending queries and commands (and receiving their replies), with a new single packet that can be used in both directions. The latter can be used to compress the data, and this CALCULATING START AND END DATES OF A WEEK. Instead of having to come up with your own algorithm you can simply do the following in PHP 5.1 and higher: The format is " year 'W' weeknr ( daynr )?" where the default daynr is 1 being the Monday of that week. The daynr can be in the range 0 to 7. The weeknr is the ISO week number . Please note that the " year '-W' weeknr ( '-' daynr )?" STORING DATE/TIMES IN DATABASES After my talk during ConFoo on Advanced Date/Time Handling I received a question about whether the UTC-offset, together with the date/time in years, months, days, hours, minutes and seconds, was enough for storing a date/time in a database and still being able to do calculations with this. The answer to this question was no, but it lead to an even more interesting discussion about what would OPENSTREETMAP IN MONGODB EXAMPLE Leaflet | Map data © 2013 OpenStreetMap contributors. Set: HOME — DERICK RETHANS Transcript Derick Rethans 0:14. Hi, I'm Derick, welcome to PHP internals news, a podcast, dedicated to explaining the latest developments in the PHP language. 64-BIT INTEGERS IN MONGODB The current project that I'm working on relies heavily on MongoDB, a bridge between key-value stores and traditional RDBMS systems.Users in this project are identified by their Facebook UserID, which is a "64-bit int datatype".Unfortunately, the MongoDB PHP Driver only had support for 32-bit integers causing problems for newer users of Facebook. For those users, their nice long UserID was XDEBUG UPDATE: MARCH 2021 Xdebug Update: March 2021. London, UK. Tuesday, April 6th 2021, 09:01 BST. Another monthly update where I explain what happened with Xdebug development in this past month. These will be published on the first Tuesday after the 5th of each month. Patreon and GitHub supporters will get it earlier, around the first of each month. NATURAL LANGUAGE SORTING WITH MONGODB London, UK. Wednesday, August 27th 2014, 09:33 BST. Note: I have updated this article for the MongoDB 3.4 release in Natural Language Sorting with MongoDB 3.4. Arranging English words in order is simple—most of the time. You simply arrange them in alphabetical order. Sorting a set of German words, or French words with all theiraccents, or
IMPORTING OPENSTREETMAP DATA INTO MONGODB Importing OpenStreetMap data into MongoDB. In many recent MongoDB related presentations I have used OpenStreetMap data as basis for most of my examples. I wrote a script that imports OpenStreetMap (OSM) nodes, ways and to a lesser extend relations into MongoDB with a specific and optimal schema. I have written about this briefly beforein
MANAGING SCHEMA CHANGES WITH MONGODB In an earlier article I explained that although MongoDB stores documents in a "schema-less" collection you still have to think about how you store your data if you want to get the best out of the database.. However, sometimes you have to change your mind on how a document should look like. For example when you realize that your firstname and surname fields really should have been just one XFCE AND MOVING WINDOWS AROUND WITH THE KEYBOARD It uses a bunch of standard X tools ( xprop and xwininfo) to find some information about the active window and its properties. Then depending on some parameters it would use wmctrl to move and/or resize the window. For example: ./bin/window-geometry-control.sh -m left would move the window 1 pixel to the left. That's all good, but way tooslow.
NEW DATE/TIME SUPPORT IN MONGODB After the hostile takeover of #freenode comes the hostile takeover of the channels. New freenode "staff" has stolen https://t.co/Nivp7li7V4 MONGODB 3.0 FEATURES: BIG POLYGON MongoDB 3.0 features: Big Polygon. London, UK. Tuesday, March 17th 2015, 09:07 GMT. MongoDB has had geospatial query support since MongoDB 1.4. In subsequent versions we have added a range of new features, such as GeoJSON in MongoDB 2.4. In this post I will cover a new feature in MongoDB 3.0 for searching polygons that are larger thana hemisphere.
OBTAINING THE NEXT MONTH IN PHP @Ken: well, well, looks like you know it all best huh. First some facts: PHP's next month stanza has always behaved like this.. When I tell my family that I will be there next month I really have to tell them which day of that month.. The relative string support was never meant to conform to exactly what people think what they mean.. The goal of the relative string support is to provide a rich HOME — DERICK RETHANS Transcript Derick Rethans 0:14. Hi, I'm Derick, welcome to PHP internals news, a podcast, dedicated to explaining the latest developments in the PHP language. 64-BIT INTEGERS IN MONGODB The current project that I'm working on relies heavily on MongoDB, a bridge between key-value stores and traditional RDBMS systems.Users in this project are identified by their Facebook UserID, which is a "64-bit int datatype".Unfortunately, the MongoDB PHP Driver only had support for 32-bit integers causing problems for newer users of Facebook. For those users, their nice long UserID was XDEBUG UPDATE: MARCH 2021 Xdebug Update: March 2021. London, UK. Tuesday, April 6th 2021, 09:01 BST. Another monthly update where I explain what happened with Xdebug development in this past month. These will be published on the first Tuesday after the 5th of each month. Patreon and GitHub supporters will get it earlier, around the first of each month. NATURAL LANGUAGE SORTING WITH MONGODB London, UK. Wednesday, August 27th 2014, 09:33 BST. Note: I have updated this article for the MongoDB 3.4 release in Natural Language Sorting with MongoDB 3.4. Arranging English words in order is simple—most of the time. You simply arrange them in alphabetical order. Sorting a set of German words, or French words with all theiraccents, or
IMPORTING OPENSTREETMAP DATA INTO MONGODB Importing OpenStreetMap data into MongoDB. In many recent MongoDB related presentations I have used OpenStreetMap data as basis for most of my examples. I wrote a script that imports OpenStreetMap (OSM) nodes, ways and to a lesser extend relations into MongoDB with a specific and optimal schema. I have written about this briefly beforein
MANAGING SCHEMA CHANGES WITH MONGODB In an earlier article I explained that although MongoDB stores documents in a "schema-less" collection you still have to think about how you store your data if you want to get the best out of the database.. However, sometimes you have to change your mind on how a document should look like. For example when you realize that your firstname and surname fields really should have been just one XFCE AND MOVING WINDOWS AROUND WITH THE KEYBOARD It uses a bunch of standard X tools ( xprop and xwininfo) to find some information about the active window and its properties. Then depending on some parameters it would use wmctrl to move and/or resize the window. For example: ./bin/window-geometry-control.sh -m left would move the window 1 pixel to the left. That's all good, but way tooslow.
NEW DATE/TIME SUPPORT IN MONGODB After the hostile takeover of #freenode comes the hostile takeover of the channels. New freenode "staff" has stolen https://t.co/Nivp7li7V4 MONGODB 3.0 FEATURES: BIG POLYGON MongoDB 3.0 features: Big Polygon. London, UK. Tuesday, March 17th 2015, 09:07 GMT. MongoDB has had geospatial query support since MongoDB 1.4. In subsequent versions we have added a range of new features, such as GeoJSON in MongoDB 2.4. In this post I will cover a new feature in MongoDB 3.0 for searching polygons that are larger thana hemisphere.
OBTAINING THE NEXT MONTH IN PHP @Ken: well, well, looks like you know it all best huh. First some facts: PHP's next month stanza has always behaved like this.. When I tell my family that I will be there next month I really have to tell them which day of that month.. The relative string support was never meant to conform to exactly what people think what they mean.. The goal of the relative string support is to provide a rich ARCHIVE — DERICK RETHANS Thu 29 — PHP Internals News: Episode 83: Deprecate implicit non-integer-compatible float to int conversions. Thu 22 — PHP Internals News: Episode 82: Auto-Capturing Multi-Statement Closures. Thu 15 — PHP Internals News: Episode 81: noreturn type. Tue 06 — Xdebug Update: March 2021. Thu 01 — PHP Internals News: Episode 80:Static
PROJECTS — DERICK RETHANS Here are the instructions to get it to work: cd into the newly checked-out directory. Create the configure script: phpize. Now run "./configure" followed by "make install". That's it, if you now run PHP from the command line and add the -dvld.active=1 parameter VLD will spit out the opcodes: XDEBUG UPDATE: MARCH 2021 Xdebug Update: March 2021. London, UK. Tuesday, April 6th 2021, 09:01 BST. Another monthly update where I explain what happened with Xdebug development in this past month. These will be published on the first Tuesday after the 5th of each month. Patreon and GitHub supporters will get it earlier, around the first of each month. 64-BIT INTEGERS IN MONGODB The current project that I'm working on relies heavily on MongoDB, a bridge between key-value stores and traditional RDBMS systems.Users in this project are identified by their Facebook UserID, which is a "64-bit int datatype".Unfortunately, the MongoDB PHP Driver only had support for 32-bit integers causing problems for newer users of Facebook. For those users, their nice long UserID wasDATETIMEIMMUTABLE
The new DateTimeImmutable class which does not display this "mutable" behaviour, and only returns the modified object: Both the old DateTime and the new DateTimeImmutable classes implement the DateTimeInterface interface. This interface defines all the methods that both classes implement. Of course, they can not be methods that change the object. PHP INTERNALS NEWS: EPISODE 84: INTRODUCING THE PHP 8.1 PHP Internals News: Episode 84: Introducing the PHP 8.1 Release Managers. London, UK. Thursday, May 13th 2021, 09:12 BST. In this episode of "PHP Internals News" I converse with Ben Ramsey ( Website, Twitter, GitHub) and Patrick Allaert ( GitHub, Twitter, StackOverflow, LinkedIn) about their new role as PHP 8.1 Release Managers, togetherwith
LEAP SECONDS AND WHAT TO DO WITH THEM Terrestial Time (TT) as the modern astronomical standard for the passage of time. TT is defined as TAI + 32.184 seconds. GPS Time, as used by GPS satellites and receivers, was set to match UTC in 1980, but now deviates with 15 seconds due to the addition of leap seconds in UTC. GPS Time is defined as TAI - 19 seconds. THE MYSTERY OF THE MISSING BREAKPOINTS The Mystery of the Missing Breakpoints. London, UK. Wednesday, December 19th 2018, 09:43 GMT. Occasionally I see people mentioned that Xdebug does not stop at certain breakpoints. This tends to relate to multi-line if conditions, or if/else conditions without braces ( { and } ). Take for example the following artificial code sample: WIRESHARK AND MONGODB 3.6 In MongoDB 3.6, two extra types of packages are are supported. These are the Extensible Message Format and Compressed packets. The former is replacing all earlier ways of sending queries and commands (and receiving their replies), with a new single packet that can be used in both directions. The latter can be used to compress the data, and this OPENSTREETMAP IN MONGODB EXAMPLE Leaflet | Map data © 2013 OpenStreetMap contributors. Set:* Home
* Archive
* Talks
* Projects
* Contact
*
*
*
*
*
*
*
My Amazon wishlist can be found here.
LIFE LINE
Leaflet — Map data © 2020 OpenStreetMap contributors*
Today's "interesting puzzle" award goes to Xdebug bug #1735, as instigated by
https://t.co/lj2C90Arvj / https://t.co/CmCKSrXKVb twitter — Jan 17th, 18:24 UTC*
Merge branch 'xdebug_2_9' github:xdebug/xdebug — Jan 17th, 17:52 UTC*
Merged pull request #543 github:xdebug/xdebug — Jan 17th, 17:52 UTC*
Fixed issue #1735: DBGp eval warning promoted to Exception can cause…
github:xdebug/xdebug — Jan 17th, 17:31 UTC*
Merge branch 'xdebug_2_9' github:xdebug/xdebug — Jan 17th, 16:30 UTC*
Merged pull request #542 github:xdebug/xdebug — Jan 17th, 16:30 UTC*
Only use the first 8 characters of the commit hash github:xdebug/xdebug — Jan 17th, 13:47 UTC*
Fix the 'cannot move because open' warning on AppVeyor github:xdebug/xdebug — Jan 17th, 13:47 UTC*
I walked 14.3km in 2h8m27s runkeeper — Jan 17th, 12:12 UTC*
Merge branch 'xdebug_2_9' github:xdebug/xdebug — Jan 17th, 10:55 UTC*
Merged pull request #541 github:xdebug/xdebug — Jan 17th, 10:54 UTC*
Don't build PHP for AppVeyor github:xdebug/xdebug — Jan 17th, 01:03 UTC*
Seems fitting to have with a rocket being launched - Drinking a Dead Wax by @OrbitBeers @ Kilburn Park — https://t.co/sJmtpA2LfD51.53° N, 0.20° W
—
twitter — Jan 16th, 21:08 UTC*
Xdebug 2.9.1 released, which should address the step debugger slowdown introduced in 2.8, but still keeping the sam… https://t.co/o0sZ5GP2Jj twitter — Jan 16th, 17:36 UTC*
Merge branch 'xdebug_2_9' github:xdebug/xdebug — Jan 16th, 14:41 UTC*
Back to -dev
github:xdebug/xdebug — Jan 16th, 14:41 UTC*
Go with 2.9.1
github:xdebug/xdebug — Jan 16th, 14:20 UTC*
Merge branch 'xdebug_2_9' github:xdebug/xdebug — Jan 16th, 14:11 UTC*
Merged pull request #540 github:xdebug/xdebug — Jan 16th, 14:11 UTC*
Fixed issue #1727: Segfault with DBGp "source" with a out-of-rangest…
github:xdebug/xdebug — Jan 16th, 14:10 UTC XDEBUG UPDATE: DECEMBER 2019London, UK
Tuesday, January 7th 2020, 09:52 GMT Another month, another monthly update where I explain what happened with Xdebug development in this past month. It will be published on the first Tuesday after the 5th of each month. Patreon supporters will get it earlier, on the first of each month. You can become a patron here to support my work on Xdebug. If you are leading a team or company, then it is also possible to support Xdebug through a subscription . In December, I worked on Xdebug for near 50 hours, on the followingthings:
XDEBUG 2.9.0
After releasing Xdebug 2.8.1, which I mentioned in last month'supdate, at
the start of the month, more users noticed that although I had improved code coverage speed compared to Xdebug 2.8.0, it was still annoyingly slow. Nikita Popov , one of the PHP developers, provided me with a new idea on how to approach trying to find out which classes and functions still had to be analysed. He mentioned that classes and functions are always added to the end of the class/function tables, and that they are never removed either. This resulted in a patch, where the algorithm to find out whether a class/function still needs to be analysed changed from from O(n²) to approximately O(n). You can read more about this in the article that I wrote about it. A few other issues were addressed in Xdebug 2.9.0as well.
BREAKPOINT RESOLVING In the May update I wrote about resolving breakpoints.
This feature will try to make sure that whenever you set a breakpoint, Xdebug makes sure that it also breaks. However, there are currently two issues with this: 1. breaks happen more often than expected, and 2. the algorithm to find lines is really slow. I am addressing both these problems by using a similar trick to the one Nikita suggested for speeding up code coverage analysis. This work requires quite a bit of rewrites of the breakpoint resolving function, and hence this is ongoing. I expect this to cumulate in an Xdebug 2.9.1 release duringJanuary.
DEBUGCLIENT AND DBGP PROXY I have wanted to learn Go for a while, and in order to get my feet wet I started implementing Xdebug's bundleddebugclient
in Go, and at the same time create a library to handle the DBGpprotocol.
The main reason why a rewrite is useful, is that the debugclient as bundled with Xdebug no longer seems to work with libedit any more. This makes using debugclient really annoying, as I can't simply use the _up_ and _down_ arrows to scroll through my command history. I primarily use the debugclient to test the DBGp protocol, without anIDE "in the way".
The reason to write a DGBp _library_ is that there are several implementations of a DBGp proxy.
It is unclear as to whether they actually implement the protocol, or just do something that "works". I will try to make the DBGp proxy that I will be working on stick to the protocol exactly, which might require changes to IDEs who implement it against an non compliant one (Komodo's pydbgpproxy seems to be one of these). This code is currently not yet open source, mostly because I am still finding my feet with Go. I expect to release parts of this on the wayto Xdebug 3.0.
BUSINESS SUPPORTER SCHEME AND FUNDING Support through the Business Supporter Scheme continues to trickle in. > This month's new supporter is Strategery .> Thanks!
If you, or your company, would also like to support Xdebug, head over to the support page! Besides business support, I also maintain a Patreon page and a profile on GitHubsponsors .
PODCAST
The PHP Internals News has been on hiatus since the PHP 7.4 release, but it will return in January.SHORTLINK
This article has a short URL available: https://drck.me/xdebug-19nov-fg6COMMENTS
NO COMMENTS YET
Add Comment
XDEBUG UPDATE: NOVEMBER 2019London, UK
Tuesday, December 10th 2019, 09:17 GMT Another month, another monthly update where I explain what happened with Xdebug development in this past month. It will be published on the first Tuesday after the 5th of each month. Patreon supporters will get it earlier, on the first of each month. You can become a patron here to support my work on Xdebug. If you are leading a team or company, then it is also possible to support Xdebug through a subscription . In November, I worked on Xdebug for about 30 hours, on the followingthings:
WEBSITE REDESIGN
Matt Brown contacted me a few months ago, suggesting that I should consider cleaning up the design and content of Xdebug's website . He spend countless hours both redoing my atrocious (and old!) code that powers the website, and creating a new design for it. During November we put this new design online, and I upgraded the server to run PHP 7.4too. There are
still a few rough edges, and there are a few thins I still want to improve, but I believe that the new design (and code!) are much cleaner. Thanks Matt! XDEBUG 3 DEVELOPMENT I only spent a little time on Xdebug 3 this month, mostly due to travel to speak at conferences . I did finished the modularizing of the Xdebug code base, and now have moved on to cleaning code up and refactoring it even more to continue to make itmore maintainable.
Beyond that, I have started to remove a few things from Xdebug as well. I removed the aggregated profiler feature, which was never documented, and prepared an uncommitted patch to remove the xdebug.remote_handler setting. This setting could only ever have one value (dbgp), and it seems very unlikely that in the future Xdebug will support other debugging protocols. The underlying code for being able to HAVE more protocols continues to exist. This is mainly because it enforces better design and less coupling between the differentparts of Xdebug.
XDEBUG 2.8.1 RELEASE I was right to think last month that it would be likely to have to make a bug fix release. A user commented on Twitter that the code coverage functionality was drastically slower. In Xdebug 2.8 I changedhow the coverage
functionality remembers which classes and their methods it had already analysed. In 2.7 and earlier, it sets a specific flag on the class entry, but that was always a hack, which stopped working (again) with PHP 7.4. Instead of using that flag, I now use a hash table to do so. However, I had inadvertently negated the check, so instead of only analysing classes and their methods on the first visit, Xdebug ended up analysing it every single time. The fixfor this was
therefore small (and embarrassing). During the testing of this new "fix", I noticed that code coverage was still a lot slower than in Xdebug 2.7.2, so I did some more research to improve this. Instead of allocating memory to create the hash key, I use stack memory instead.
For Xdebug 3 I have a few further ideas to speed up code coverage. The bug fix for the performance degradation is the only ticket that made it into Xdebug 2.8.1 . _Update:_ Xdebug 2.8.1 was released on December 2nd (so not actuallyin November).
BUSINESS SUPPORTER SCHEME AND FUNDING I have had further, but minimal, interest for the Business SupporterScheme
that I launched in September. > This month's new supporter is e3N GmbH . Thanks! If you, or your company, would also like to support Xdebug, head over to the support page! Besides business support, I also maintain a Patreon page and a profile on GitHubsponsors .
PODCAST
I have continued with the PHP Internals News podcast. In this weekly podcast, I discuss in 15-30 minutes, proposed new features to the PHP language with fellow PHP internals developers. It is available on Spotifyand iTunes
,
and through an RSS Feed . Let me know if you are a listener! The podcast will be on hiatus until earlynext year.
SHORTLINK
This article has a short URL available: https://drck.me/xdebug-19nov-f1qCOMMENTS
NO COMMENTS YET
Add Comment
CRAFTY CODE COVERAGELondon, UK
Monday, December 9th 2019, 13:30 GMT Xdebug's code coverage functionality has had dead code analysis for years. It is used to be able to mark lines of as having executable code on it, as well as lines which can not be reached. In order to provide this functionality it runs an algorithm code after each file has been compiled. For each class and function it checks whether the algorithm to analyse executable lines and dead code has already been run, as it makes no sense to check it for the same class, method, orfunction twice.
Until PHP 7.4, Xdebug stored this information on whether it has seen a class with a special flag on the class entry of a class, PHP's internal structure that contains all the information the engine needs to be able to instantiate objectsand run methods.
PHP 7.4 changes the values of these flags,
which prompted me to ask Nikita whether it was actually safe to use a flag like this as a marker of whether Xdebug has already analysed that class (and its methods). He said NO and suggested that instead I should use a hash table to store this information instead. I implemented that for Xdebug 2.8, that was released just before PHP 7.4 came out. Soon after PHP 7.4 came out, I received a bug report that code coverage was now now significantly slower. A specific run went from 8 minutes to more than 3.5 HOURS. I tried this out for myself with the test suite of theDocument package
of Zeta
Components, and indeed, with PHP 7.3 and Xdebug 2.7.2 it took about 2.83 minutes, and with PHP 7.3 and Xdebug 2.8.0 46 minutes — a slow down of about 16 times. I quickly discovered that I had forgotten a ! in the code, which meant that the analyses would run for every class after a new file was loaded/compiled. I fixed that in Xdebug 2.8.1 . This did improve the code coverage timings, but it still took 22.26 minutes, instead of the original 8 minutes. I started talking to twitter user Anthony to try out a few more speed improvements, and although we were making improvements, I was not getting anywhere near the original timings of Xdebug 2.7. At this point I referred back to Nikita to ask whether he had a good idea to improve on this. He mentioned that classes and functions are always added to the end of the class/function tables, and that they are never removed either. He also hinted at a method to only loop over the newly added classes and functions after each PHP file was compiled: loop over the table backwards up to the point where the size of the list was the previous time that we looped. This resulted in a patch that did exactly that. Xdebug now longer needs the hash table mechanism to check whether we have analysed classes with their methods, and functions already, and also no longer loops over the whole list of classes after each file. As most people use one class per file, the algorithm went from O(n²) to O(n) approximately. This cut down the time to run the test suite with code coverage for the Document packageto 1.21
minutes. About 2½ times faster as Xdebug 2.7 and earlier. Anthony was also pleased and surprised: Although I tend to make an Xdebug release only once a month, in this case I thought it warranted to expedite this. So here is your end-of-year present: Xdebug 2.9.
🔔 📣 ⛄ ❄️ 📣 🎄 🎇 🎆 🎃 🎄 ✨ 🎉 🎊SHORTLINK
This article has a short URL available: https://drck.me/ccc-f1pCOMMENTS
Satyr
Thursday, December 19th 2019, 08:25 UTC Thank you for all your hard work! Community appreciates!a
Monday, December 23rd 2019, 14:41 UTC Good job. Even though only a few say "thank you", you should knowyou're doing great!
Add Comment
This site and all of its contents are Copyright © 2002-2020 by Derick Rethans — All rights reserved — Syndication PolicyDetails
Copyright © 2024 ArchiveBay.com. All rights reserved. Terms of Use | Privacy Policy | DMCA | 2021 | Feedback | Advertising | RSS 2.0