Software Engineering

Software Engineering

1635 bookmarks
Newest
PHPUnit avancé : patterns de tests - Club des décideurs et professionnels en Informatique
PHPUnit avancé : patterns de tests - Club des décideurs et professionnels en Informatique

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...

PHPUnit avancé : patterns de tests - Club des décideurs et professionnels en Informatique
mysql-snmp - monitoring MySQL with SNMP
mysql-snmp - monitoring MySQL with SNMP

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.

mysql-snmp - monitoring MySQL with SNMP
Hudson and Simpletest | computerminds
Hudson and Simpletest | computerminds

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.

Hudson and Simpletest | computerminds
InfoQ: Kanban and Scrum - making the most of both
InfoQ: Kanban and Scrum - making the most of both

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

InfoQ: Kanban and Scrum - making the most of both
Mapnik C++/Python GIS Toolkit | Welcome
Mapnik C++/Python GIS Toolkit | Welcome

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

Mapnik C++/Python GIS Toolkit | Welcome
The Pomodoro technique - Henrik Kniberg's blog
The Pomodoro technique - Henrik Kniberg's blog
1-2 days every week I schedule "slack" days, where I try to catch up on emails, do some admin, prepare for future engagements, and such. During the past year I've been using the Pomodoro technique more and more consistently and, the more I use it, the more I find that it really works well! It has changed the way I think of time.
The Pomodoro technique - Henrik Kniberg's blog
focus booster - the pomodoro technique
focus booster - the pomodoro technique

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.

focus booster - the pomodoro technique
Sanity-check features in MySQL at Xaprb
Sanity-check features in MySQL at Xaprb

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.

Sanity-check features in MySQL at Xaprb
mycheckpoint | openark forge
mycheckpoint | openark forge

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.

mycheckpoint | openark forge
The Apache Cassandra Project
The Apache Cassandra Project

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.

The Apache Cassandra Project
rest-client - Project Hosting on Google Code
rest-client - Project Hosting on Google Code

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)

rest-client - Project Hosting on Google Code
AutoSuggest jQuery Plugin | Drewwilson.com
AutoSuggest jQuery Plugin | Drewwilson.com

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.

AutoSuggest jQuery Plugin | Drewwilson.com
Utilisation d'un SSO dans eZ Publish - Lolart.net
Utilisation d'un SSO dans eZ Publish - Lolart.net

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.

Utilisation d'un SSO dans eZ Publish - Lolart.net
Semantic Versioning
Semantic Versioning

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.

Semantic Versioning
Painless Spec and Schedule Development | BrandonSavage.net
Painless Spec and Schedule Development | BrandonSavage.net

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.

Painless Spec and Schedule Development | BrandonSavage.net
Eloquent JavaScript -- interactive tutorial
Eloquent JavaScript -- interactive tutorial

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.

Eloquent JavaScript -- interactive tutorial
InfoQ: Resource-Oriented Architecture: The Rest of REST
InfoQ: Resource-Oriented Architecture: The Rest of REST

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.

InfoQ: Resource-Oriented Architecture: The Rest of REST
Profiling with XHProf – techPortal
Profiling with XHProf – techPortal
In this article, we’re going to try another profiler, XHProf, developed at Facebook and open sourced in March 2009 (under the Apache 2.0 license). XHProf is a function-level hierarchical profiler, with a PHP extension (written in C) to collect the raw data, and a few PHP scripts for the reporting/UI layer.
Profiling with XHProf – techPortal
Shocking News in PHP Exploitation
Shocking News in PHP Exploitation

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
Shocking News in PHP Exploitation
crafterm's sprinkle at master - GitHub
crafterm's sprinkle at master - GitHub

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).

crafterm's sprinkle at master - GitHub
Schema Sync › a MySQL Schema Versioning and Migration Utility
Schema Sync › a MySQL Schema Versioning and Migration Utility
Schema Sync will generate the SQL necessary to migrate the schema of a source database to a target database (patch script), as well as a the SQL necessary to undo the changes after you apply them (revert script).Schema Sync does not alter your database. It only generates the .sql files containing the differences. You must apply the changes.All ADD|MODIFY COLUMN statements have the AFTER (or FIRST) SQL syntax even if no move is required.COMMENTS and AUTO_INCREMENT values are not by synced by default. See help (-h) for details.Schema Sync does not yet recognize Tables or Columns that have been renamed. A rename will result in the old table or column being dropped and the new one added.Partitions (MySQL 5.1+) are not yet supported
Schema Sync › a MySQL Schema Versioning and Migration Utility
InfoQ: A Reference Architecture Foundation for SOA Draft Was Submitted to Public Review
InfoQ: A Reference Architecture Foundation for SOA Draft Was Submitted to Public Review

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.

InfoQ: A Reference Architecture Foundation for SOA Draft Was Submitted to Public Review
realstorage - Project Hosting on Google Code
realstorage - Project Hosting on Google Code
realStorage is meant to create a consistent API for the W3C Web Storage key/value store specification (i.e. work around browser bugs). It also adds some convenience functions to help flesh out the localStorage key/value API. And when Web Storage is not available, a Gears fallback is provided.
realstorage - Project Hosting on Google Code