New! Checkout our new GitHub homepage! Follow the latest activity of eZ Publish Developers on GitHub.com


Downstream — Trip 5

On the previous trip I walked from Reading to Bourne End on the Thames Path, and on this trip I will progress to Staines. Getting to Bourne End wasn't as easy as getting to Reading, and a fair bit slower with a train to Maidenhead and then the branch line towards Marlow.

Day 7 — Bourne End to Staines

I set off from Bourne End (without going to the lovely craft beer place) fairly early in the morning, on a bright and sunny day. It was clearly regatta season as became apparent when I made my way to Cookham, where their yearly races were on. Not only were they preparing for the watery fun, there was also a good display of vintage cars being set-up. I think I was too early to see it in full flow. Unfortunately, it did mean diverting from the river for a while, first because of the regatta, and then because there are private things in the way.

When I got back to the river after about a mile, I could just about make out the outlines and hill of Cliveden House across the river. I had visited this National Trust property with family.

Just before reaching Maidenhead I came upon Boulter's Lock. An industrial looking lock that replaced earlier 16th and 18th century locks on the same place. It was quite busy around the lock, with apparently one or two tour buses having stopped to let their passengers having a look at it. I spend some time wandering around and relaxing, before continuing my walk.

Not far from Maidenhead lays Bray, famous for their large number of Michelin starred restaurants. There is the one star Hind's Head where I had eaten before, the three star Fat Duck, and the three start Waterside Inn, where I attended a wedding once. You can't see much of it from the other side of the Thames though, so just had to do with my memories of the tasty food.

Not far from Bray is the Dorney Lake, which was used in the 2012 Olympics as a rowing venue under the name "Eton Dorney". You can't see much of it from the North side, but once you've walked along it to the bottom end you can actually go up and have a look.

Immediately after rounding a bend in the river Thames, you see Windsor Castle, the Queen's "country home", towering over Windsor and the river. My plan was to have lunch in Windsor, but just after getting into Eton I noticed a nice looking pub, the Waterman's Arms. Their menu looked good, and they have a few nice draughts on so I decided to have lunch there instead. As a bonus, I also noticed the pub's ceiling had a painting of the whole length of the Thames on it!

After lunch, and perhaps half a pint too much, I continued my walk. On the bridge that connects Eton to Windsor, a guitar player was playing joyful tunes, to which I listened when taking some photos and video.

After walking for a while in between a railway and the river, there were plenty of signs saying that "no drones" could be flown in and near The Home Park. I bet the Queen doesn't like people snoop on her activities much. Beyond lovely Datchet, I was directed through a field with nettles to be "closer to the river", but I don't think that was specifically worth it. The 200 meter stretch along the road would probably be easier walking. The only real scenery were planes leaving Heathrow Airport anyway. The noise of planes overhead continued for the rest of the walk into Staines, or as it now is called "Staines-upon-Thames". Please note that Staines does not rhyme with Thames.

Just before Staines is Runnymede. Runnymede is an important site in British history, as this is the location where the Magna Carta was signed, all the way back in 1215. The Magna Carta is a charter of rights that is the first one to prevent from the King being above the law. Modifications were made in the following decades, and not many of its provisions are currently left, but it was very important on a journey to a constitutional monarchy.

The site itself is an open expanse of grassland, with a piece of art — "The Jurors", by Hew Locke. There is also a memorial created by the American Bar Association. Unfortunately I only found out about this after I had come home, and hence did not visit it.

Just beyond Runnymede the Thames Path passes under the M25, which means I have walked all the way from the source into Greater London. From there it was not much further to the end of my walk at St. Peter's Church in Staines.


Photos from my Adventure on the Thames Path are available on Flickr, and all videos on Vimeo. You can also see all the photos on a map.

10/02/2018 03:08 am   derickrethans.nl   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/ezstudio Oct 1, 2018
2 commits to master
10/01/2018 12:15 pm   eZPublishLegacy @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/ezplatform Oct 1, 2018
2 commits to master
10/01/2018 12:11 pm   eZPublishLegacy @ GitHub   Mirror   Link  
@ezecosystem
ezecosystem pushed to master in ezecosystem/Sylius Oct 1, 2018
2 commits to master
10/01/2018 12:06 pm   eZecosystem @ GitHub   Mirror   Link  
@ezecosystem
ezecosystem pushed to master in ezecosystem/NetgenAdminUIBundle Oct 1, 2018
1 commit to master
  • @peterkeung c9a4445
    Fix EZP-24800: Support "allowed classes" limitation for object relati…
10/01/2018 12:03 pm   eZecosystem @ GitHub   Mirror   Link  
@ezecosystem
ezecosystem pushed to master in ezecosystem/ezstudio Oct 1, 2018
2 commits to master
10/01/2018 12:00 pm   eZecosystem @ GitHub   Mirror   Link  
@ezecosystem
ezecosystem pushed to master in ezecosystem/ezplatform Oct 1, 2018
2 commits to master
10/01/2018 11:59 am   eZecosystem @ GitHub   Mirror   Link  

This week Symfony 2.8.46, 3.4.16 and 4.1.5 maintenance versions were released. Meanwhile, the upcoming Symfony 4.2 version added an Instantiator::instantiate() method to create and populate objects without calling their constructors and made cookies auto-secure. Lastly, a new Symfony Mailer component was introduced during the SymfonyLive London 2018 conference and will be published in the coming weeks.

Symfony development highlights

2.8 changelog:

  • c9bbc66: [HttpFoundation, Security] forward locale and format to subrequests
  • 2e85ef5: [TwigBundle] fixed caching of templates in src/Resources//views on cache warmup

3.4 changelog:

  • 2a605c2: [Cache] prevent getting older entries when the version key is evicted

4.1 changelog:

  • 0997ff5: [HttpFoundation] X-Accel-Mapping does not use HTTP key=value syntax

Master changelog:

  • 792ec82: [Form] deprecated the unused scale option
  • 31f8cb9: [Form] deprecated precision in IntegerToLocalizedStringTransformer
  • 9db435e: [Serializer] deprecated normalizers and encoders which don't implement the base interfaces
  • b36172c: [VarExporter] added Instantiator::instantiate() to create and populate objects without calling their constructor nor any other methods
  • 10df10c: [SecurityBundle] made remember-me cookies auto-secure and inherit their default config from framework session cookies
  • 60fac5c: [HttpFoundation] made cookies auto-secure when passing them $secure=null
  • e6deb09: [Cache] support configuring multiple Memcached servers in one DSN
  • 3cd411a: [Cache] added setCallbackWrapper() on adapters implementing CacheInterface for more flexibility
  • 3afe4e7: [BrowserKit] throw exception when request() wasn't called
  • 91add60: [Validator] added BC layer covering BicValidator without Intl

Newest issues and pull requests

They talked about us

Upcoming Symfony Events

Call to Action


Be trained by Symfony experts - 2018-10-10 Clichy - 2018-10-15 Paris - 2018-10-15 Paris
09/30/2018 03:35 am   Symfony Blog   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/phpunit Sep 29, 2018
1 commit to master
  • @sebastianbergmann be6564e
    Fix issues identified by Phan
09/29/2018 12:26 am   eZPublishLegacy @ GitHub   Mirror   Link  

How many times have you found yourself editing and tuning up CSS or JavaScript code right in the browser, then refreshing the page only to lose all of your changes? Improving development workflows can help web developers to be more efficient and deliver a higher quality final product.

 

09/28/2018 01:35 pm   Mugo Web Blog   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/phpunit Sep 28, 2018
2 commits to master
  • @sebastianbergmann 1ff9e1b
    Merge branch '7.3'
  • @sebastianbergmann d854f61
    Remove PHPStan (I will be using Phan (and maybe Psalm) in the future)
09/28/2018 12:29 pm   eZPublishLegacy @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/ezpublish-spi Sep 28, 2018
2 commits to master
  • @brookinsconsulting 0f07184
    Merge remote-tracking branch 'upstream/master'
  • @adamwojs 822f5ac
    EZP-29408: Impl. asset relation type (#2409)
09/28/2018 12:13 pm   eZPublishLegacy @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/ezpublish-kernel Sep 28, 2018
1 commit to master
09/28/2018 12:12 pm   eZPublishLegacy @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/ezpublish-api Sep 28, 2018
1 commit to master
  • @adamwojs 2d2662b
    EZP-29408: Impl. asset relation type (#2409)
09/28/2018 12:10 pm   eZPublishLegacy @ GitHub   Mirror   Link  
@ezecosystem
ezecosystem pushed to master in ezecosystem/ezpublish-spi Sep 28, 2018
1 commit to master
  • @adamwojs 822f5ac
    EZP-29408: Impl. asset relation type (#2409)
09/28/2018 12:00 pm   eZecosystem @ GitHub   Mirror   Link  
@ezecosystem
ezecosystem pushed to master in ezecosystem/ezpublish-kernel Sep 28, 2018
1 commit to master
09/28/2018 12:00 pm   eZecosystem @ GitHub   Mirror   Link  
@ezecosystem
ezecosystem pushed to master in ezecosystem/ezpublish-api Sep 28, 2018
1 commit to master
  • @adamwojs 2d2662b
    EZP-29408: Impl. asset relation type (#2409)
09/28/2018 11:59 am   eZecosystem @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/phpunit Sep 27, 2018
2 commits to master
09/27/2018 12:31 pm   eZPublishLegacy @ GitHub   Mirror   Link  

Et un peu hors-sujet :

  • How to Build a Low-tech Website? (en) : j'adore la démarche, j'ai déjà le site statique (très) optimisé et plutôt low-tech et il me manque "juste" le serveur, le panneau solaire et la batterie pour faire pareil :-)

(En plus du flux RSS global, les billets veille et uniquement ceux là sont listés dans le flux RSS correspondant)

09/27/2018 08:15 am   pwet.fr/blog   Mirror   Link  

Contributed by
Nicolas Grekas
in #28231.

In Symfony applications, the VarDumper component provides a dump() function as a better alternative to PHP's var_dump() function. In Symfony 4.2, we're introducing a new VarExporter component to provide a better alternative to PHP's var_export() function.

The var_export() function outputs or returns a parsable string representation of a variable. It is similar to var_dump() with one exception: the returned representation is valid PHP code. Symfony's export() function is similar, but adds lots of useful features to it.

Consider the following example, where a simple array is exported:

1
2
$data = array(123, array('abc'));
$result = VarExporter::export($data);

The output is similar to what you'd expect when using var_export(), although export() generates valid and PSR-2 compliant PHP code:

1
2
3
4
5
6
7
8
<?php

return [
    123,
    [
        'abc',
    ],
];

The main difference is that export(), unlike var_export() preserves all the semantics associated with the serialization mechanism of PHP (__wakeup, __sleep, Serializable). Consider this example of a class implementing Serializable:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
class MySerializable implements \Serializable
{
    public function serialize()
    {
        return '123';
    }

    public function unserialize($data)
    {
        // do nothing
    }
}

$data = array(new MySerializable(), new MySerializable());
$result = VarExporter::export($data);

The result looks like this:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<?php

return \Symfony\Component\VarExporter\Internal\Configurator::pop(
    \Symfony\Component\VarExporter\Internal\Registry::push([], [], [
        'C:50:"Symfony\\Component\\VarExporter\\Tests\\MySerializable":3:{123}',
    ]),
    null,
    [],
    [
        \Symfony\Component\VarExporter\Internal\Registry::$objects[0],
        \Symfony\Component\VarExporter\Internal\Registry::$objects[0],
    ],
    []
);

In addition to producing better results, if your application uses OPcache, Symfony's export() function is faster and more memory efficient than serialize() and even igbinary.

Finally, Symfony's export() function includes other improvements over var_export() and serialize():

  • The generated output can be re-indented without messing up with \r or \n in the data;

  • Missing classes throw a ReflectionException instead of being unserialized to PHP_Incomplete_Class objects;

  • References involving SplObjectStorage, ArrayObject or ArrayIterator

    instances are preserved;

  • Reflection*, IteratorIterator and RecursiveIteratorIterator classes

    throw an exception when being serialized.


Be trained by Symfony experts - 2018-10-1 Paris - 2018-10-1 Paris - 2018-10-3 Paris
09/27/2018 06:56 am   Symfony Blog   Mirror   Link  

Paid content and circulation have always been a mainstay of the magazine publishing business (with the exception of controlled circulation magazines). And prior to the advent of the Internet, it was, for the most part, the norm for readers to pay for magazine content, either by purchasing a newsstand copy, or by buying a subscription. The same has not been true for magazines online.

09/26/2018 01:42 pm   Mugo Web Blog   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/ezplatform-demo Sep 26, 2018
1 commit to master
  • @damianz5 89c0e7c
    DEMO-195: Premium content feature does not work (#100)
09/26/2018 12:10 pm   eZPublishLegacy @ GitHub   Mirror   Link  
@ezecosystem
ezecosystem pushed to master in ezecosystem/Sylius Sep 26, 2018
2 commits to master
09/26/2018 12:06 pm   eZecosystem @ GitHub   Mirror   Link  
@ezecosystem
ezecosystem pushed to master in ezecosystem/ezplatform-demo Sep 26, 2018
1 commit to master
  • @damianz5 89c0e7c
    DEMO-195: Premium content feature does not work (#100)
09/26/2018 11:59 am   eZecosystem @ GitHub   Mirror   Link  
@ezecosystem
ezecosystem pushed to master in ezecosystem/docker-php Sep 26, 2018
1 commit to master
  • @andrerom 8dd9da1
    Fix typo + build new images
09/26/2018 11:57 am   eZecosystem @ GitHub   Mirror   Link  

We live in a time where knowledge is at our fingertips and educational programs from all disciplines are available online. Yet, people are people and most of us like to communicate in person. We still prefer going to conferences, meetups, and similar events where we can learn from our peers. The question arises: how to estimate the value you get from a conference?

09/26/2018 10:50 am   www.netgen.hr/eng/Blog   Mirror   Link  

Symfony added support for SameSite cookie attributes in Symfony 3.2 (November 2016). The SameSite attribute prevents the browser from sending cookies along with cross-site requests. In practice, this mitigates the risk of cross-origin information leakage and provides some protection against CSRF attacks.

In Symfony 4.2 we've made it easier to set this attribute in several parts of the framework.

SameSite attribute in "Remember Me"

Contributed by
Kévin Dunglas
in #27976.

The Remember Me feature now defines a new config option called samesite to set the value of this attribute in the cookie used by this feature:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# config/packages/security.yaml
security:
    # ...

    firewalls:
        main:
            # ...
            remember_me:
                # ...

                # possible values: 'strict', 'lax' and null
                samesite: 'strict'

SameSite attribute in sessions

Contributed by
Remon van de Kamp
in #28168.

Similarly, the cookies used to manage user sessions now define a new config option called cookie_samesite with the same possible values (strict, lax and null):

1
2
3
4
5
6
# config/packages/framework.yaml
framework:
    # ...
    session:
        # ...
        cookie_samesite: 'strict'

Be trained by Symfony experts - 2018-10-1 Paris - 2018-10-1 Paris - 2018-10-3 Paris
09/26/2018 06:28 am   Symfony Blog   Mirror   Link  

Why this feature?

Until now, image fields within content types were managed using the Image field type. Honestly, this field type wasn’t the most intuitive. It would store images in the content item and the image would not be reusable by the editor for any other mean than the original content item. This feature was something we needed to update, to allow users to reuse content. That is what the Image Asset field type aims at doing.

Now, let’s dive in and discover more about the capabilities of the Image Asset field type and how it could be used in different user case scenarios.

Here is a simplified diagram of a use case of an editor creating an article with an Image Asset Field, to understand how this field type works.

[Diagram] - Creating an article with an Image Asset Field

Creating a new Image Asset

As you can see in this use case, editors will be able to add an Image Asset Field definition to any content type to manage images instead of using the old Image field type. In this example, the editor used the Article content type. The image uploaded in the field will be stored as an Image content type in the media library (or elsewhere, but the media library is the default), instead of in the article itself, and immediately available to others. Editors will then be able to easily reuse the image in other places. This will save editors time and will not require them to upload the same image twice. Note that the image is stored as an Image content type as a default configuration, but the system can be configured to store into different content types (as long as they use the Image field type), providing developers with more flexibility.

Selecting images from the content repository for image fields.

An additional benefit of the Image Asset field type that comes as a way of consequence is that, when users create new content, they won’t always need to upload an image from their computer but will be able to browse and select an image directly from the media library, hence reusing content more easily. Let’s have a look at how the interaction looks like:

Selecting an image asset from the content repository 

What to expect in the future

In the future, we plan to create similar field types, such as Media Asset and File Asset. This will become a standard for managing field types based on binary files in eZ’s content repository. The updates will be beneficial for both developers and marketers as this will become a consistent manner to upload, reuse and search assets.

We are also planning to create additional capabilities to this feature in further releases. One of them is a service that will identify potential duplicates and prevent the user from creating several copies of the same image. As mentioned previously, once an image is uploaded, it will be stored in the content repository under the media library. If an editor attempts at creating another image from the same image file, the system will be able to identify it and suggest the editor reuse an existing image instead of creating a duplicate in the media library. The benefit will be the repository that is better organized and content simpler to manage and reuse. Is that something that would be useful for you?

This Friday we will ship eZ Platform v2.3. We are very excited for this release and believe it will provide value both to our community and enterprise users. If you have any need, opinion or idea, of what would be helpful for you in the future, please drop us a note. Until then, if you’re interested or have any questions, please feel free to leave a comment here or on discuss.ezplatform.com. Feel free to reach out to us, too, at productmanagement@ez.no.

09/25/2018 01:32 pm   ez.no/About-eZ/Blog   Mirror   Link