ymc

› YMC publishes the best of 7 years of eZ Publish development

The Open Source CMS market is complex, with hundreds of projects readily available. Some are written in clean code, others turn out as horrible collections of dirty hacks. Some have sprung out of the anonymous dark, others are maintained by professional teams with release roadmaps, contribution reviews and certifications, and get supported by development guidelines, professional integration and maintenance services. Some of them have huge feature lists. Others keep their kernels small and establish an ecosystem for plugin manufacturers. The third group only accepts generic functionality in the core, so that the majority of practical needs can be met by editing data classes, templates and permissions, which renders plugins meaningless.

In 2003, YMC has chosen eZ Publish as our primary CMS. Over the years, we managed nearly a hundred projects of all sizes, and on the way, trained dozens of developers. With all the experience, we still deem eZ Publish as the most versatile Open Source Content Management Framework in existence. It has allowed for a smooth upgrade path, as it is strictly generalistic in design and both upwards and backwards compatible. Its thourough object orientation might be hard for the beginner, however, the advantages cannot be turned down when it comes to more complex multi-client installations that will be migrated to new versions of the CMS and even PHP. The professional vendor behind eZ Publish (eZ Systems), and the industry-grade services available directly from them (namely eZ Premium and developer certifications), are indespensable for a professional software investment.

In our work as consultants and programmers, we have specialized in two ways. First, we serve large media companies to meet their high-end demands, such as complex migration scenarios, flexible editorial workflows, quick release cycles, seamless scalability and uninterrupted business during migrations. Secondly, YMC has developed an appetite for the new and the fancy, especially in the media sector. We are strong advocats for user generated content, and we can help to create value from it, the more so as we have invested our expertise in several Web 2.0 startups.

Today, YMC initiates a third line of action. We intend to give back to the Open Source community. Therefore, we will publish selected modules under the GPL. All of them have been in stable use for years and undergone several evolutionary iterations. We hope that they will prove useful for other Open Source enthusiasts and help to further promote Open Source at the Enterprise level. Of course, we appreciate any feedback and any suggestions you might have.

We will use Google Code. Here is a list of recent and planned publications. Descriptions for the other numbers will be added shortly.

1) ymcExtensionLoader

Adds enterprise-grade multi-client capability to eZ Publish. Enables a more flexible handling of extensions and settings, sharing settings between clients, and nesting extensions.

2) ymcBootstrap

Introduces an alternative way to control patches to eZ Publish. Changes to the eZ kernel and the database are logged and can be automatically deployed onto a multi-server environment in a reliable manner. This will aid upwards compatibility to further versions of eZ Publish.

3) ymcLibrary

4) ymcClusterManagement

5) ymcDistributedCache

6) ymcMetaNavigation

7) ymcDistributedStorage

8) ymcCommunity

03/05/2010 6:00 pm (UTC)   YMC   View entry   Digg!  digg it!   del.icio.us  del.icio.us

derick rethans

› Find my Xdebug download wizard

Find my Xdebug download wizard

Installing Xdebug seems to be a problem for some users. The main trouble is for Windows users that don't know which file to download. Over the past few days I've worked on a wizard that analyses phpinfo()'s output and for Windows users suggests:

  • which file to download

  • where to put the file

  • which php.ini file to modify, and how

For Unix users, it explains:

  • which source tarball to download

  • how to compile

  • which php.ini file to modify, and how

I hope this makes it a bit easier to get going with Xdebug. Next up (hopefully this week) is release candidate 2 for Xdebug 2.1.0.

03/05/2010 11:00 am (UTC)   Derick Rethans   View entry   Digg!  digg it!   del.icio.us  del.icio.us

ez projects

› NovenINIUpdate 3.0 released !

NovenINIUpdate 3.0 has just been released.

Many new and useful features such as :

  • Backup config files before switching
  • Diff feature in CLI
  • Policy limitations support (you can limit environment switching depending on allowed environments)
  • config.php support
  • eZDFSFileHandler support

This release also comes with a few bugfixes.

You may check the full changelog.

Go download and upgrade ;-) !

02/05/2010 12:30 pm (UTC)   eZ Projects   View entry   Digg!  digg it!   del.icio.us  del.icio.us

ez projects

› Version 0.9.2 has been released

Version 0.9.2 of the PDF catalogue has just been released. This release comes with a new feature that allows one to add any content node to a common PDF catalogue from which users can create a personal PDF catalogue.

A demonstration of the PDF catalogue is available here: http://www.alexander-block.net/eng/Business/eZ-Systems/Personal-PDF-Catalogue (it does currently not support the common PDF catalogue feature)

01/05/2010 5:48 pm (UTC)   eZ Projects   View entry   Digg!  digg it!   del.icio.us  del.icio.us

david linnard

› Useful Debugging in eZ Publish

There are lots of settings and helper functions which can really assist with debugging your eZ Publish site. Here are the key tips I use when I need to work through any issues. I would also recommend a read of an article by Łukasz Serwatka on the eZ Publish website. Updating your Debug Settings Here are the [...]
01/05/2010 5:46 pm (UTC)   David Linnard   View entry   Digg!  digg it!   del.icio.us  del.icio.us

ez projects

› Microsoft SQL Server Database Extension ready for eZ Publish 4.x

Due poplular demand we have upgraded the SQL Server Database Driver for eZ Publish 4.x.

The new driver makes use of "SQL Server Driver for PHP" and works for either SQL Server 2005 or 2008.

Download

30/04/2010 7:40 am (UTC)   eZ Projects   View entry   Digg!  digg it!   del.icio.us  del.icio.us

ez projects

› New release comming soon

Actually working on a new release.

29/04/2010 11:14 am (UTC)   eZ Projects   View entry   Digg!  digg it!   del.icio.us  del.icio.us

ez projects

› 1.0 Release

With this release you can :
- Manage XML Tasks in BO
- Create Set of XML Tasks and see state of XML Task (Not created, persistent settings created, Done, ...)
- Create and modify content in specified locale (that you can choose via select parameters in BO)

29/04/2010 10:39 am (UTC)   eZ Projects   View entry   Digg!  digg it!   del.icio.us  del.icio.us

derick rethans

› PHP and Ordnance Survey Mapping

PHP and Ordnance Survey Mapping

About a month ago, Ordnance Survey opened up some of their data for public consumption under a brand called OpenData. The data is licenced under a "Creative Commons Attribute"-like license. One of the data sets they provide is Code-Point Open and provides a dataset "that contains postcode units, each of which have a precise geographical location". I've always been a bit of a map-geek, and have always geotagged my pictures and some of my tweets. So I was wondering what cool thing I could do with this newly released data. I decided to map all the postcodes onto the UK map where more postcodes for a specific place would create a "lighter" colour. Each postcode has on average about 15 addresses, so in more densely populated areas you have more "postcodes-per-area". Doing this wasn't very difficult and it resulted in the following map:

postcode-uk-scaled.jpg

You can very clearly see the more densely populated areas such as London.

This generated postcode-density map I wanted to overlay on a real map, such as OpenStreetMap provides. When I tried to align the image that I generated with the OSM map, I ended up with this:

uk-osm-postcode-overlay.jpg

Obviously, the maps don't align. In order to fix this, I ended up learning a lot more about map projections.

The Code-Point Open data uses the UK's National Grid to store location data in. The National Grid consists of 100*100 km squares that are then further subdivided into smaller squares creating grid references such as TQ3012780512, or the numerical version 530128 180512. TQ translates into the "hundred thousands" of the Eastings and Northings according to the grid that you can see here. In this case, it specifies a point 530 128 meters East and 180 512 meters North of the origin. (If you work it out, you'll end up in London).

OpenStreetMap uses a Mercator projection to visualize maps. The Mercator projection is a cylindrical map projection, and it distorts the size and shape of large objects, as the scale increases from the Equator to the poles. Therefore it only works from about 85°N to 85°S (why it is 85° only be came clear after doing all the maths for it). Google Maps uses the same projection.

There were a few challenges plotting the Code-Point Open data on an OpenStreetMap map:

  • The National Grid coordinates need to be converted to Latitude/Longitude pairs

  • Latitude/Longitude pairs need to be mapped to pixels to align with the Mercator projection of OpenStreetMap maps.

For converting National Grid references to Latitude/Longitude pairs I found some JavaScript code. I converted this code to PHP and to verify whether my code was working properly, I used this site.

Converting Latitude/Longitude pairs to the pixel coordinates of OSM required a bit of maths. OSM provides maps in different zoom levels, from 2 to 17. Each zoom level having twice the amount of pixels horizontally and vertically. Zoom level 2 has 4 times 4 tiles, where each tile is 256*256 pixels. At zoom level two, the whole world fits into 1024*1024 pixels. The number of pixels for each axis for a specific zoom-level can be calculated by:

pow(2^zoom) * 256

For a zoom level of 7 that makes 16384 pixels in each direction. To convert a longitude (in the range -180° to 180°) we can simply apply:

x = ((lon + 180) / 360) * (pow(2^zoom) * 256)

For a Longitude of 0.003117° E at zoom-level 13 that turns out to be pixel 1048594.

Longitude conversions are more difficult due to the Mercator projection itself. To convert we apply:

y = ((atanh(sin(deg2rad(-lat))) / π) + 1) * (pow(2^(zoom-1)))

For a Latitude of 51.502817° N at zoom-level 13 that turns out to be pixel 697399.

Creating an image for the whole world at zoom level 13 is impractical as it is 2097152*2097152 pixels and downloading all the 67 million tiles for this zoom level is probably not liked by the OSM people either. So instead we take a cut out for a specific area only. For the UK (61.37°N -9.49° W, 49.76°N +3.63°E) at zoom level 7 we end up with a 1536x2048 map with the North-Western pixel being 15360,9216. On this map, we can draw the latitudes and longitudes as well as the National Grid lines (full image is on flickr):

uk-osm-lines-crop.jpg

The only thing left to do now, is to map the postcode density information to the map. I picked zoom level 6 for this, and the result is (after cropping it to 640 pixels width):

uk-osm-postcode.jpg

As you can see, this is perfect fit to the outlines of the country. But unfortunately, when we look very closely at the plotted map data, for example for the NW10 3 postcodes, we notice that the mapping is slightly off. The blue dots are what we plotted, and the red dots are what the locations should have been:

uk-osm-nw103-1.png

The reason for this is that when we converted the National Grid locations to Latitude/Longitude pairs to plot on the OSM maps, I forgot to take into account the different Datums that are used in the projections. The Earth is not a perfect sphere, and an approximation of the ellipsoid of the whole Earth is not necessarily the best fitting for a specific area such as the UK. Therefore, the National Grid uses the OSGB36 Datum which fits more closely to the UK, where as OpenStreetMap uses the WGS84 Datum that is also used by GPS. The Ordnance Survey Ireland has a more thorough explanation on their site. As you can see above, using the wrong Datum can mean locations can be off. In our example about 100 meters. Converting between different Datums is possible, albeit processor intensive.

After I figured out all the maths for this, the only problem that remains that implementing those algorithms in PHP is show—calculating all the positions from the 1.6 million postcode locations takes up to 10 minutes. This is why I am not presenting any code yet. I am planning to implement all the necessary calculations in a PHP extension to speed up the calculations

27/04/2010 3:27 pm (UTC)   Derick Rethans   View entry   Digg!  digg it!   del.icio.us  del.icio.us

eZ publish™ copyright © 1999-2005 eZ systems as