• Search:



Planet eZ publish




netgen

› We attended the second edition of SymfonyCon in Madrid

Three weeks ago SensioLabs, the company behind Symfony framework, organized the second edition of SymfonyCon, the official Symfony conference. This year the event was set in Madrid, Spain and was attended by close to 700 people from all around the world.

18/12/2014 5:07 pm (UTC)   http://www.netgenlabs.com/Blog   View entry   Digg!  digg it!   del.icio.us  del.icio.us

derick rethans

› Whisky Advent: part 2

Whisky Advent: part 2

December 5th: Blue Hanger, 8th Release

day5-glass.jpg day5-label.jpg

This Blue Hanger is the only blend on the calendar, but this is an unusual blend so I am making an exception. This 8th release is a 21 year old blend, bottled by Berry Bros. & Rudd. It is named after William Hanger, the 3rd Lord Coleraine, a loyal customer of Berry Bros. & Rudd during the late 18th century. He was renowned for the striking blue clothes he wore and gained the soubriquet, "Blue Hanger".

It is bottled at 45.6% ABV, with natural colouring and it is not chill filtered. It is exclusive to The Whisky Shop.

Tasting notes: Orange peel, vanilla, caramel. With a little bit of salt and smoke.

December 6th: Springbank 12 Green

day6-glass.jpg day6-label.jpg

As this month's whisky of the month, I went to my favourite whisky shop in London, Cadenhead's. They are best known for their single cask whiskies, and indeed many of the whiskies on this advent calendar come from them.

This Springbank 12 Green whisky is not a single cask whisky. But it is a very new whisky. So new, that I couldn't find it through Google yet. The label on the bottle says it's one out of 9000 bottles. It is called "Green" because it is distilled from organic barley.

It is matured entirely in bourbon casks and bottled at 46% ABV. The result is creamy and sweet with classic Springbank peatiness giving depth and a hint of coastal air.

Tasting notes: Very pale. Sweet fruits and a little bit peaty. The whisky lingers quite long with peat and a hint of sherry.

December 7th: Single Cask Ardmore 16

day7-glass.jpg day7-label.jpg

Tonight's dram is 16 years old, distilled in 1996 by Ardmore and bottled in

2012. It is one of 315 bottles from a refill Hogshead, selected by Douglas Laing. It forms part of Douglas Laing's Old Malt Cask range, and is now sold out.

Tasting notes: As an Ardmore it is quite peaty, with barley and all spice flavours. Spices, smoke and peppers are its overtones. There are hints of wood in the aftertaste.

December 8th: anCnoc 22

day8-glass.jpg day8-label.jpg

A typical winter warmer from anCnoc. It is 22 years old, and as usual in a natural colour and non-chill filtered. It is a standard whisky, made from many different casks - but aged in both ex-bourbon casks and ex-sherry butts.

Tasting notes: Honey, sweet and a few hints of all spice. A bit like Christmas cake. There is also a hint of smoke, and the whisky is general full of flavours. The finish is spicy.

December 9th: Glenburgie 1994

day9-glass.jpg day9-label.jpg

This 17 year old whisky is distilled by Glenburgie, and bottled by Gordon & MacPhail in 2012. It is specifically bottled for La Maison du Whisky in Paris, not far from Métro station Maidelaine. It is in Paris that I bought this whisky when I was there for Forum PHP last year. La Maison du Whisky is in my opinion the best whisky shop outside of Scotland, and Cadenhead's in London.

As is common to many of my whiskies, this is again a non-chill filtered natural colour single cask whisky—cask 10055 in case you care. It is 45% ABV and matured in 1st fill sherry butts.

Tasting notes: The colour is slight red, and it is slightly oily on the tongue. Hints of caramel and honey, but more stronger spices such as cardamom and cloves. The after taste is a little bit zesty, and has hints of oak.

December 10th: Tomintoul 16

day10-bottle.jpg

I spoke at Glasgow PHP this evening, which meant that I couldn't do my regular bottle and a glass approach. I had to do with a miniature of a Tomintoul 16 that I had brought along. The organisers were so kind to gift me a bottle of Auchentoshan American Oak though, but I am saving that for an upcoming night.

Tasting notes: Overall quite bland, and I didn't pick out too many flavours. It's a bit fruity sweet, but the flavour doesn't linger and in a few seconds I had forgotten about it at all.

December 11th: Mannochmore 12

day11-glass.jpg day11-label.jpg

This latest whisky comes from the Mannochmore distillery, which produces for twelve months and then has a break of twelve months alternating with the nearby Glenlossie distillery, with which it shares the employees. A rather unusual arrangement if you ask me.

In one of the years, they did manage to distill the spirits that now end up as the Mannochmore 12, which I am enjoying tonight. It is part of Diageo's Flora and Fauna range.

Tasting notes: Honey and a hint of pepper? There is quite a lot of flavours coming into play after a while. And even a hint of ginger in the long lingering finish.

12/12/2014 10:05 am (UTC)   Derick Rethans   View entry   Digg!  digg it!   del.icio.us  del.icio.us

ez projects

› binary file datatype collector information Clusturing

Allow you to use the binary File datatype as information collector with support Clusturing

12/12/2014 8:49 am (UTC)   eZ Projects   View entry   Digg!  digg it!   del.icio.us  del.icio.us

derick rethans

› Parallelizing document retrieval

Parallelizing document retrieval

This is an article I wrote a while ago, but apparently hadn't posted.

MongoDB 2.6 has a new feature that allows you to read all the documents from one collection with multiple cursors in parallel. This is done through a database command called parallelCollectionScan. The idea behind it is that it is faster then reading all the documents in a collection sequentially.

Just like the Aggregation Cursor, calling this command returns cursor information. However, it returns an array of these structures. Let run this example to see what it returns:

demo;

$r = $d->command( [
    'parallelCollectionScan' => 'cities',
    'numCursors' => 3
] );

var_dump( $r );
?>

And this outputs (after some formatting):

array(2) {
  ["cursors"]=>
  array(3) {
    [0]=>
    array(2) {
      ["cursor"]=>
      array(3) {
        ["firstBatch"]=> array(0) { }
        ["ns"]=> string(14) "demo.cities"
        ["id"]=>
        object(MongoInt64)#5 (1) {
          ["value"]=> string(12) "339843550291"
        }
      }
      ["ok"]=> bool(true)
    }
    [1]=>
    array(2) {
      ["cursor"]=>
      array(3) {
        ["firstBatch"]=> array(0) { }
        ["ns"]=> string(14) "demo.cities"
        ["id"]=>
        object(MongoInt64)#6 (1) {
          ["value"]=> string(12) "340949759620"
        }
      }
      ["ok"]=> bool(true)
    }
    [2]=>
    array(2) {
      ...
    }
  }
  ["ok"]=> float(1)
}

With the MongoCommandCursor::createFromDocument from an earlier article you can create a MongoCommandCursor for each of the array elements:

demo;

$r = $d->command( [
        'parallelCollectionScan' => 'cities',
        'numCursors' => 3
], null, $hash );

$cursors = [];
foreach( $r['cursors'] as $cursorInfo )
{
        $cursors[] = MongoCommandCursor::createFromDocument( $m, $hash, $cursorInfo );
}
?>

Instead of creating an array of cursors yourself, the driver implements the MongoCollection::parallelCollectionScan method. Making the above a little bit easier:

demo->cities;

$cursors = $c->parallelCollectionScan( 3 );
?>

The idea is that with multiple cursors you can iterate over each of the segments in parallel, for example indifferent threads. Of course, PHP does not have threads so that you can't really run things in parallel. However, PHP does have a MultipleIterator class that allows you to iterate over multiple cursors at the same time:

demo->cities;

$cursors = $c->parallelCollectionScan( 3 );


$multiple_it = new MultipleIterator( MultipleIterator::MIT_NEED_ANY );
foreach ( $cursors as $cursor )
{
        $multiple_it->attachIterator( $cursor );
}


foreach ( $multiple_it as $items )
{
        foreach ( $items as $item )
        {
                if ( $item !== NULL )
                {
                        echo $item['name'], "\n";
                }
        }
}
?>

There are three sections here. First we create the cursors with MongoCollection::parallelCollectionScan, then we collect the created cursors into a MultipleIterator and lastly we iterate over the $multiple_it iterator to get our results. Each iteration gives us an array of elements back. One element for each of the containing cursors (3 in our example). We need a second loop (foreach) to pick out the real document.

Not every contained cursor will provide the same amount of items, it is up to the MongoDB server to divide this. When a contained iterator is exhausted, the MultipleIterator sets the value to NULL. It is probably better to then remove that specific contained iterator from the MultipleIterator, but that is left as an excercise for the reader.

When running some benchmarks, I didn't actually see any performance benefit with multiple cursors over just one cursor, but that is likely because the cursors are still iterated over sequentially, and not in parallel. Perhaps using the pthreads PECL extension allows for a better benchmark, but right now, the PHP driver for MongoDB doesn't support threaded execution yet.

09/12/2014 10:31 am (UTC)   Derick Rethans   View entry   Digg!  digg it!   del.icio.us  del.icio.us

netgen

› A new site launched, http://tv.kuwait.tt/

For AlWatan, a Kuwait broadcasting network, we have developed a bilingual site, in Arabic and in English. This was somewhat tricky to implement, considering the fact that Arabic script is right-to-left orientated, while Latin script is left-to-right orientated.

08/12/2014 2:30 pm (UTC)   http://www.netgenlabs.com/Blog   View entry   Digg!  digg it!   del.icio.us  del.icio.us

ez publish community gateway

› The eZ Publish Show #22: Introducing Composer

A had the privilege to host Jordi Boggiano, one of the more important people in PHP and Symfony community. Why is he important showed the community few days ago. One line of code that made the "composer update" script faster by 50-90% made people gone crazy on the commit page, but watch out, it might kill your browser :)

06/12/2014 1:06 pm (UTC)   http://share.ez.no   View entry   Digg!  digg it!   del.icio.us  del.icio.us

netgen

› The eZ Publish Show #22: Introducing Composer

A had the privilege to host Jordi Boggiano, one of the more important people in PHP and Symfony community. Why is he important showed the community few days ago. Read on.

06/12/2014 10:33 am (UTC)   http://www.netgenlabs.com/Blog   View entry   Digg!  digg it!   del.icio.us  del.icio.us

derick rethans

› Whisky Advent: part 1

Whisky Advent: part 1

December 1st: Glenrothes 9, by Douglas (Sherry Butt)

day1-glass.jpg day1-label.jpg

The first whisky on the calendar is a 9 year old Glenrothes, bottled by Douglas. It is one out of 210 bottles of a single cask (#9928) distilled in 2004 and bottled in 2013, aged in a Sherry Butt.

Tasting notes: Oily on the tongue. Sherry flavours with a hint of fruits. Smokey after taste.

About Glenrothes: "Established by the burn of Rothes in Speyside in 1879, The Glenrothes distillery has been producing its characteristic Speyside single Malt for over 130 years. The maturity of The Glenrothes is determined not by age, but by Vintage, resulting in some memorable moments, captured forever in specific expressions of this remarkable spirit."

December 2nd: GlenGrant 170th anniversary

day2-glass.jpg day2-label.jpg

Tonight's dram is a GlenGrant 170th anniversary, bottled to commemorate the 170th anniversary of the Glen Grant distillery. Now owned by the Italian Gruppo Campari, the distillery was founded in 1840. It is a non-chill filtered whisky at 46% ABV.

Tasting notes: Sweet, raisins and rich fruits. Long finish with hints of peat smoke. Actually, very long finish, perhaps like a sherry.

December 3rd: Benromach 2001 Cask Strength

day3-glass.jpg day3-label.jpg

Tonight we have a dram from Benromach, a distillery that I actually visted last year as part of our big whisky trip last year. Its 2001 cask strength whisky is matured in first fill Bourbon barrels, and no longer available. At 59.9% ABV it is stronger and benefits from a drop of water.

Tasting notes: Honey, sweet, and vanilla. I also taste some nuts, and a little bit of peat. Quite a nice dram, but does definitely need a drop or two of water.

December 4th: Arran Single Cask Sherry

day4-glass.jpg day4-label.jpg

A single cask whisky from Arran distillery ages in Sherry Casks. It's 16 years old and one of only 269 bottles, and it's going to be difficult to find another bottle. Amazon has 8 left, and it's well worth its price. The whisky 55.3% ABV and of course no-chill filtered. It does need a drop of water for its flavours to fully develop.

Tasting notes: It's very much sweet sherry like, with hints of ginger and other spices.


This concludes the first four whiskies on the calendar. I am looking forwards to the following 20!

05/12/2014 10:05 am (UTC)   Derick Rethans   View entry   Digg!  digg it!   del.icio.us  del.icio.us

netgen

› Creating and updating eZ Publish Content via Symfony's Form component

Recently we were asked by one of our customers to implement user registration that will not rely on Legacy Stack. As the sizeable part of this request is related to the user interface, we took this chance to implement something that will benefit us for other use cases as well.

04/12/2014 10:14 am (UTC)   http://www.netgenlabs.com/Blog   View entry   Digg!  digg it!   del.icio.us  del.icio.us

mugo web

› Saved searches and e-mail alerts in eZ Publish

A powerful addition a normal site search is for registered users to be able to save their searches, share the searches with others, and create customized e-mail alerts. This adds a deeper level of interactivity with the site and encourages users to regularly return to the site.

03/12/2014 7:05 pm (UTC)   Mugo Web   View entry   Digg!  digg it!   del.icio.us  del.icio.us