Recently a group of PHP developers descended on the city of Chicago, IL – US for a few days of sharing, laughing, and coding. Rumor has it there may have been some dancing but there is no photographic evidence to support that. Click on in, I’ve got PIX cuz it did happen!
31
2011
What’s a good buffer pool read/write ratio?
At Percona Live last week, someone showed me a graph from their Cacti monitoring system, using the templates that I wrote. It was the buffer pool pages read, written, and created. He asked me if the graph was okay. Shouldn’t there be a lot more pages read than written, he asked? It’s a great question.
I’ve blogged before about the danger of trying to interpret ratios. Ratios are not good ways to discover whether systems are healthy. So, why graph them, then?
First, let me say that the graph actually doesn’t show a ratio — it just shows the absolute values of the reads, writes, and creates per second, stacked on top of each other. The person was mentally comparing them and creating a ratio from them. But there’s no ratio on the graph itself:
Regardless of that, some systems ought to have more reads than writes, and vice versa. So if you’re looking at your graph wondering what it should look like, the answer is probably “it should look exactly as it looks!”
I’ve gotten a lot of questions over time about how to interpret the Cacti graphs, and this person helped me to understand what the questions were really about. People were asking me “when I look at these graphs, how can I tell if anything is wrong with my system?” But that’s not really the most useful way to approach the graphs.
It really comes down to the difference between discovery and diagnosis. In general, it’s best to use the graphs for diagnosing problems that you already know about, not for trying to discover problems. Your monitoring and alerting system (Nagios?) should be trying to discover whether there is a problem. The graphs are there for quickly showing you what has changed. If the website suddenly starts responding very slowly, for example, then you can look at the graphs and see if any of them have sharp increases or decreases. You can use that information to help you diagnose.
But in general, I wouldn’t spend very much time looking at the graphs from day to day. I’d just check them once in a while — maybe once a week I’d look at the monthly view — to see if there were any sharp changes during the past week; I’d ensure that I know why those changes happened if I see any (maybe I deployed a new release); and I’d want to make sure that the graphs are still working, and haven’t gotten broken due to some problem like privileges or firewall rules.
In the ideal world, I’d like to simply collect everything, and not even define any graphs for the metrics. Then I’d like an easy way to make graphs on an ad-hoc basis. But Cacti is designed to have defined graphs, and that makes it tempting for people to spend a lot of time looking at them
29
2011
A week of symfony #230 (23->29 May 2011)
It took more time than expected, but this week Symfony2 released two new beta versions. Beta2 was a huge leap from beta1 and beta3 fixed lots of bugs. This frantic development activity was possible thanks to the ever-growing list of Symfony2 contributors. The documentation team also worked hard this week to keep up synced with Symfony2 development.
Development mailing list
- Doctrine Common 3.0 Annotation Reader AnnotationException
- [Symfony2] Custom domain in form label translations
- RFC: Annotations improvements
- Import routing in php doesn’t work
Symfony2 development highlights
-
2cecc95:
[BrowserKit] dealing with raw value for cookies -
7ab3fde:
[Finder] added a way to ignore all ‘hidden’ files -
e9548dc:
[Assetic] added call to setOptimize in config for assetic filter jpegtran -
de61474:
moved vendors.sh to PHP -
15bede5:
[Console] refactored style management (the current code was broken when a style was defined inline) -
b6ce137:
[DependencyInjection] create inlined private service from it’s definition -
3cdf371:
[TwigBundle] moved the {% render … %} node to a dedicated extension and removed service container -
73bd9c7:
[TwigBundle] changed the dependency of ActionsExtension to the actions helper -
f83c137:
[TwigBundle] moved the code filters to a dedicated extensions -
f13798f:(reverted)
[TwigBundle] renamed TemplatingExtension to AssetsExtension -
dfdd26d:
[TwigBundle] moved all class names to parameters of DIC -
1744c86:
added calling methods for options to assetic filter configs -
afe6005:
[SecurityBundle] using a DelegatingLoader so that security factories can be in any config format -
aa356e7:
[BrowserKit] fixed cookie management (see RFC 2109) -
6c409ca:
[DependencyInjection] refactored parameter bag parameter replacements (removed duplicated code) -
456eb53:
[DependencyInjection] renamed CircularReferenceException to ServiceCircularReferenceException -
6504797, 512eb53, 946f68e:
[DoctrineBundle] added ‘force’ and ‘annotate’ options to generate:entities and mapping:import Doctrine commands -
2438a73:
[DependencyInjection] added a check for circular references in parameter definitions -
3ea2a32:
[Validator] refactored validators constraints: removed the need for defining getTargets(), replaced abstract Constraint::getTargets() with one that use 95% of validators, removed unused ‘use’ statement in Constraint\Valid and added additional tests -
dcd490e:
[Twig] added a way to use % in a trans string -
08e7629:
[DomCrawler] uppercase http methods -
f019541:
fixed broken logic in Request::getHttpHost(). It was ignoring HTTP_HOST completely -
3c372d3:
[BrowserKit] fixed explicit cookie params being overriden by url -
3bdb7c2:
[DependencyInjection] fixed regression when a parameter contains an escaped % -
a046259:
[DoctrineBundle] extracted code from Doctrine commands -
5ed136b:
[SwiftMailer] optimized configuration: removed the requirement of the init.php file when getting the Swift_Mailer object and changed the data collector to avoid loading Swiftmailer when no email has been send -
1ca4dca:
[SecurityBundle] bootstrapped functional test suite -
fb9d951:
fixed EntityChoiceList to support grouped entities -
a0397f9:
[DependencyInjection] fixed bug where anonymous services from two different xml-files (with the same basename) could collide -
4f0214e:
[Routing] fixed a bug where the current directory was set too late in the PhpFileLoader -
15c5d61:
use an alias of translator.real instead of copying the definition
New plugins
- sfFileManager: provides a simple way to upload/manage files using a widget called sfWidgetFileGaleryHandler to open the file gallery in a facebox popup.
- sfDoctrineActAsActivable: allows use of the doctrine behavior actAsActivable. This behavior provides methods on your model for setting “is active”/”is not active” state to doctrine records. This plugin allow cascade activate/desactivate between doctrine relation.
- phantomQunit: allows user to write javascript tests for that can be run from the shell using phantomjs (http://www.phantomjs.org/) via symfony tasks.
Updated plugins
-
cpDatePicker:
- fixed widget assets
-
cpJwysiwyg:
- fixed widget assets
-
cpDataTables:
- added language files
-
sfDoctrineActAsSignable:
- initial Signable values saved
-
sfPropelSqlDiff:
- fixed sql error 121
-
apostrophe:
- added a-asset-path to helpers css to allow for sites with different structures
- some light linting for a.js
- updated the form formatter to extra the ID from the field and slugify it
- slight adjustment to the naming of the form-rows
- aMysql can be created with an existing PDO handle
- moved clearfix to a-helpers as a variable and re-declare it in a-utility as a class for the variable
- added an app.yml toggle for LESS to force it to recompile every refresh
- cleaned up the method used to apply the form input id onto the form row
- handle database exceptions in aRouteTools::removePageFromUrl as a nonfatal error to allow apostrophe:migrate to progress
They talked about us
- Symfony Live 2011, et après?
- Abierta la inscripción para las Jornadas Symfony 2011
- ???????????????????????
- symfony ??????????????
- Symfony 1.4 and subdirectories for models, forms and filters
- Image resizing in sfAssetLibraryPlugin
- Se publica la segunda beta de Symfony2
- sfPropel15Plugin error, “class ‘FooPeer’ does not have a method ‘getUniqueColumnNames’”
- Noël Guilbert, développeur Web : « Je veux continuer à évoluer sur la partie conseil »
- Ajaxify sfAssetLibraryPlugin’s mass upload files using jQuery File Upload Plugin
- Symfony gives me headache
- Symfony2 är nära
- Pros And Cons Of Using Frameworks
- Créer une application avec Symfony2 et Doctrine2 (étape 4)
- [Symfony]???????ai????
- 10 Advanced PHP Tips To Improve Your Programming
- The most famous php frameworks Supported By Biztech
- Open Graph en Symfony 1.4
- Symfony Propel
- Symfony 2 : Interview de Fabien Potencier
- Symfony2 – Interview vidéo de Fabien Potencier
- [php][symfony] symfony 1.4 ????????????
- Sobre escribiendo los métodos getter en doctrine
- Symfony 2.0 ?????? ??????
- symfony (??????????????)
- PhpStorm: ????????? Symfony Command Line
- Symfony 2 FAQ
- Another 5 cents to estimate how big is symfony community
- Symfony ? validate????action????????
- Symfony2 BETA2 !!!
- symfony event na przyk?adzie sfDoctrineGuardLoginHistoryPlugin
- Symfony – Add ReCaptcha to JQuery Dialog (Lightbox)
- symfony: Zamiana adresu URL front-controllera backend.php na /admin.
- Symfony2: Beta2 released
- Zend, Yii, Symfony at validation example
- Symfony2: Make your own Assetic Filter
- Simplify your external dependency management – DPC11
- symfony php frameork ?????
- Cross-Application Login
- [Symfony] SoftDelete??????????
- Symfony2 mit zweiter Beta
- Utiliser CKeditor dans le frontend Symfony
- The new era of PHP frameworks
- Automaticly Copy Zend/Symfony Library to Project
- Starting with symfony framework in windows platform especialy with httpd
- [php][symfony][doctrine] symfony1.4+Doctrine?build-forms????????????Widget?Validator??????
- symfony??
- ???? ????????? ??????? diem ?????? ??????????
- Silex??????????
26
2011
Symfony2: Beta3 available
It took less time than expected… but Symfony2 beta3 has just been released.
Even if beta2 has been released less than 4 days ago, we managed to get an amazing
amount of contributions from 25 developers who helped us fix bugs and tweak
the framework.
We have also been quite busy with documentation and the cookbook homepage has
been re-organized to ease navigation.
Download it now!
25
2011
Joining with ORM
Today’s installment is the first part in the chapter about joining. The installment consists of two parts. First, explaining some general characteristics of joins. Second, explaining the nested loops join algorithm by example, covering the N+1 problem and other aspects of Object-Relational mapping (ORM).
25
2011
Just hours left until Percona Live sells out!
We’re seeing a spike of last-minute ticket sales for Percona Live New York. Meanwhile, we’re assembling bags and unpacking t-shirts at the venue. If you want to come, buy your ticket now — we’re rapidly selling out the remaining tickets!
Remember, if all the tickets are sold, you can still come to the evening event — free drinks and food! Free prizes, including a Gold Unlimited support contract from Percona!
25
2011
Announcing the May 2011 Zend Framework Bug-Hunt
For those who haven’t put the reoccurring event in their calendar, this announcement is for you: Zend Framework Monthly Bug-hunt is here again! Tomorrow , Friday and Saturday of May (the 26th , 27th and 28th 2011 ), we’ll be hosting our monthly bug hunt. For those of you unfamiliar with the event, each month, we organize the community to help reduce the number of open issues reported against the framework.
23
2011
Free Percona Live tickets and Percona Support contract!
Just a couple of announcements for Percona Live: we’re giving away free tickets through Engine Yard, and we’ve arranged our evening open-bar event.
For a chance to win a free ticket, check out the guest blog post I wrote for Engine Yard on how to make Rails migrations faster and safer.
In other news, Percona Live now has an open-bar evening event, sponsored by Clustrix. It is open to all, not just registered attendees of Percona Live. You can come to Mickey Mantle’s legendary Sports Bar and Restaurant for free drinks and food, networking, prizes, and a chance to win an Unlimited Gold MySQL Support contract from Percona, worth over $15,000!
In case you don’t know, Percona Live is a one-day intensive MySQL conference, with four tracks of 100% technical content from world-famous MySQL experts. Tickets are still available at http://www.percona.com/live/. Registration is not required to attend the evening event, so if you can’t attend Percona Live, come meet us afterwards anyway! We’ve arranged for a substantial amount of free food, so you won’t have to leave to find dinner.
The evening event begins at 6pm this Thursday the 26th, and is open-bar (free drinks) until 8pm. Mickey Mantle’s is at 42 Central Park South. From the conference center, just walk west on 59th street. For more information and directions, visit the Percona Live page for venue details.
23
2011
Symfony2: Beta2 released
It tooks more time than
expected, but the second
beta version of Symfony2 is now available.
60 developers have made more than 600 commits since beta1, and I’m just
talking about Symfony “core”. And what about the docs? It’s also really
impressive: 35 people helped enhancing the documentation with about 250
commits.
That is huge! Thanks to everyone who contributed to this release in one way or
another.
I won’t list all the changes in this post, but I will highlight the work that
has been done on the documentation recently.
The biggest change in the docs has been the rewrite of the
Security chapter (the
ACLs
documentation
has been moved to the cookbook).
The cookbook has also been updated with quite a few new recipes:
- How to create Console/Command-Line Commands
- How to use PdoSessionStorage to store Sessions in the Database
- How to customize Form Rendering in a Twig Template
- How to minify JavaScripts and Stylesheets with YUI Compressor
- How to set External Parameters in the Service Container
- How to implement your own Voter to blacklist IP Addresses
As always, don’t forget to read the
UPDATE file to know
how to upgrade to beta2.
