Nous avons déjà compris le fonctionnement de PHPUnit et le principe des tests en développement PHP, au travers de l'article Développement piloté par les tests avec PHPUnit. Nous allons à présent montrer les fonctionnalités avancées de PHPUnit notamment concernant les patterns de tests, Mock, Stub, Double, Spy ; nous verrons comment les mettre en place au travers d'un exemple simple et concret, et en quoi ces techniques peuvent rapidement devenir addictives. Pour cela, il conviendra de rappeler les grands principes du développement logiciel orienté objet : SOLID. Nous parlerons ensuite d'autres fonctionnalités PHPUnit propres au contexte des tests : sauvegarde des variables globales, sauvegarde du contexte statique, isolation des tests dans des processus distincts...

Software Engineering
mysql-snmp is a Net-SNMP Perl subagent that connects to a MySQL server and reports its statistics through SNMP. Additionally this project contains material to graph MySQL variables/counters in OpenNMS.
The graphs are based on the excellent MySQL Cacti Templates by Baron Schwartz.
To cut a long story short, it's really hard to find a specification of the JUnit output file format, but after lots of trying, I had a script that could run simpletests and report the results in a JUnit friendly (Hudson friendly) format, yey!
Find the script attached, there's an extra argument from the normal set, --xml which allows you to specify the directory in which to output the xml result files. Lovely.
Finally you'll want to make a bash script that passes in all the right arguments to the script and then run that from Hudson, as part of the normal build process.
Scrum and Kanban are two flavours of Agile software development - two deceptively simple but surprisingly powerful approaches to software development. So how do they relate to each other?
The purpose of this book is to clear up the fog, so you can figure out how Kanban and Scrum might be useful in your environment.
Part I illustrates the similarities and differences between Kanban and Scrum, comparing for understanding, not for judgement. There is no such thing as a good or bad tool – just good or bad decisions about when and how to use which tool.
Part II is a case study illustrating how a Scrum-based development organization implemented Kanban in their operations and support teams.
Consistent with the style of “Scrum and XP from the Trenches”, this book strikes a conversational tone and is bursting with practical examples and pictures.
This book includes:
Kanban and Scrum in a nutshell Comparison of Kanban and Scrum and other Agile methods Practical examples and pitfalls Cartoons and diagrams illustrating day-to-day work Detailed case study of a Kanban implementation within a Scrum organization
Mapnik is a Free Toolkit for developing mapping applications. It's written in C++ and there are Python bindings to facilitate fast-paced agile development. It can comfortably be used for both desktop and web development, which was something I wanted from the beginning.
Mapnik is about making beautiful maps. It uses the AGG library and offers world class anti-aliasing rendering with subpixel accuracy for geographic data. It is written from scratch in modern C++ and doesn't suffer from design decisions made a decade ago. When it comes to handling common software tasks such as memory management, filesystem access, regular expressions, parsing and so on, Mapnik doesn't re-invent the wheel, but utilizes best of breed industry standard libraries from boost.org
A free application to help you get what you need done. Pronto!
focus booster is a simple and elegant application designed to help you eliminate the anxiety of time and enhance your focus and concentration.
focus booster has been designed based on the principles of the Pomodoro Technique and features:
a sleek and unobtrusive design changes color as time goes by for quick, peripheral updates alarm/buzzer sounds for completed sessions customizeable time and sound settings session counter It's quick to start up and works efficiently in the background without consuming computer resources, or your focus.
Bytekit is a PHP extension that provides userspace access to the opcodes generated by PHP's compiler.
bytekit-cli is a command-line tool that leverages Bytekit to perform common code analysis tasks.
MySQL has a couple of sanity-check features to help keep you from doing dumb things.
max_join_size is a configuration option for the mysqld server program. It throws an error if you write a query that the optimizer estimates will examine more than this number of rows. –safe-updates is a command-line option to the mysql client program. It throws an error if you write an UPDATE or DELETE without a) a WHERE clause that refers to an indexed column or b) a LIMIT clause. It also sets the max_join_size and select_limit variables.
mycheckpoint is an open source monitoring utility for MySQL, with strong emphasis on user accessibility to monitored data.
It is SQL oriented: charts, reports and advances metrics are generated on the fly with views. There is no need for an external program to diagnose the data. In fact, mycheckpoint’s main duty is to to a one-time creation of a special purpose schema.
The Apache Cassandra Project develops a highly scalable second-generation distributed database, bringing together Dynamo's fully distributed design and Bigtable's ColumnFamily-based data model.
Cassandra was open sourced by Facebook in 2008, where it was designed by Avinash Lakshman (one of the authors of Dynamo) and Prashant Malik. In a lot of ways you can think of Cassandra as Dynamo 2.0. Cassandra is in production use at Rackspace, Digg, and a number of other companies, but is still under heavy development.
RESTClient is a Java application to test RESTful webservices. It can be used to test variety of HTTP communications. From version 2.3 Beta 1, it has two executable Jars:
GUI version (restclient-ui-X.jar download) Cli version for batch execution of .rcq files (restclient-cli-X.jar download)
So I needed to add some auto-completing functionality to my project Build It With Me. I figured it would be easy to find a ready-made jQuery plugin to do the work for me. I was wrong. Naturally I took it upon myself to solve this problem for all of you :) I created this plugin to be as general purpose as possible. As a result it ended up being vastly more customizable than any other jQuery auto-complete plugin. Not only that, I am using actual jQuery. For some reason all the other "jQuery" plugins don't really take advantage of the radness that is jQuery. Consequently, my plugin ended up being dramatically smaller in size (way less code). Just 7kb minified. Have fun with it! AutoSuggest is a very lightweight jQuery plugin that makes auto-completing extremely easy.
Parfois, lors du développement d'une application web, il est nécessaire de s'interfacer avec le ou les logiciels et/ou sites web du client afin de garder une session commune et cohérente au sein de sa bulle applicative. Pour ce faire, il est souvent utile de faire appels à un outil : le SSO (Single Sign On), ou Authentification Unique. Ce genre d'outils est assez répandu sur la toile; on en trouve notamment chez Google (un seul compte pour toutes leurs applications), Canal+, M6, etc... Il existe bien sûr plusieurs façons de s'interfacer avec un SSO en fonction du CMS ou du framework utilisé. eZ Publish, depuis sa version 3.8, permet de développer des SSO Handlers sous forme de plugin au système d'identification afin d'effectuer cet interfaçage. Je vais tenter, au travers de ce billet, de vous en présenter le mode de fonctionnement.
Dependency hell is where you are when version lock and/or version promiscuity prevent you from easily and safely moving your project forward.
As a solution to this problem, I propose a simple set of rules and requirements that dictate how version numbers are assigned and incremented.
In the time that I have developed software, I don’t know that I’ve ever met a developer who got excited about writing specs for anything. In fact, most developers loathe writing specs, or developing schedules of any kind. It’s not that they’re lazy, or that they don’t want to be held accountable; most of the time it’s because developers prefer to express themselves via code, or because developers are afraid that if they set a schedule, and then reality doesn’t match up, they’ll be forced to produce sub-standard code. Neither of these is an ideal situation.
This is directly at odds with the business need of specifications and schedules. Businesses need schedules to know when products will be finished and schedule things like trade shows, product launches, and write contracts with clients who need or want a particular product. It’s not as if businesses want to push their developers to insanity by forcing them to schedule and then stick to it; more often than not thousands of dollars hinges on the schedule, and it simply must be met.
Schedules and specs are a core component of software development, and business development; so much so that Joel Spolsky included developing both as core components of the Joel Test. While developers hate writing specs and developing schedules, there are some painless steps they can take to create them.
Eloquent JavaScript is a digital book providing a comprehensive introduction (tutorial) to the JavaScript programming language. Apart from a bookful of text, it contains plenty of example programs, and an environment to try them out and play with them. The book is aimed at the beginning programmer ― people with prior programming experience might also get something out of it, but they should not read chapters 2 to 5 too closely, because most of the concepts discussed there will probably be nothing new to them. Do make sure you read the end of the first chapter, which has some essential information about the book itself.
We will start by revisiting the REpresentational State Transfer (REST) architectural style. Oft quoted and even more often misunderstood, this manner of building networked software systems allows us to merge our documents, data and information-oriented services into a rich, logical ecosystem of named resources. From there, we will introduce the vision of the Semantic Web and walk through its core technologies represented by a flexible and extensible data model and the ability to query it. We will see how to incorporate relational data, content from documents, spreadsheets, RSS feeds, etc. into a rich web of reusable content. After we present the basics, we will walk through a variety of successful efforts building on these technologies and then return to reclaiming the vision promised to us by proponents of Web Services technologies. We will describe a process where we can achieve something of a Unified Theory of Information Systems; one that not only handles, but embraces the kind of technical and social change that has been painful and intractable to manage in the past.
On 5th of November I gave a talk titled “Shocking News in PHP Exploitation” at the Powerofcommunity hacking/security conference in Seoul, South Korea. Afterwards I uploaded my slides to this server but only distributed the link through twitter. I totally forgot about announcing the slides in my blog.
The topics of my talk were
* easy ways to bypass modsecurity and f5 big ip asm
* exploiting unserialize vulnerabilities in Zend Framework applications
* exploiting PHP interruption vulnerabilities after recent fixes in PHP
The MySQL Workbench Doctrine Plugin is a plugin developed for MySQL Workbench which is a tool for developing MySQL databases with a graphical interface. The plugin helps you to generate database schemes for the Doctrine framework which is e.g. used in the very famous PHP Framework Symfony.
Sprinkle is a software provisioning tool you can use to build remote servers with, after the base operating system has been installed. For example, to install a Rails or Merb stack on a brand new slice directly after its been created. Properties of packages such as their name, type, dependencies, etc, and what packages apply to what machines is described via a domain specific language that Sprinkle executes (in fact one of the aims of Sprinkle is to define as concisely as possible a language for installing software).
The OASIS Service Oriented Architecture Reference Model TC has recently approved the Reference Architecture Foundation for Service Oriented Architecture Version 1.0 (SOA-RAF) specification as a Committee Draft for public review. SOA-RAF builds on Reference Model for SOA (SOA-RM) and defines the abstract architectural elements independent of the technologies, protocols, and products that are used for SOA implementation.