Bernhard SchussekResults of the Puli Coding Night (10.10.2015, 10:30 UTC)

Last night, the first Puli Coding Night took place. Overall, five people joined, two of which chimed in for the first time. The following tickets were completed:

Furthermore, work on the new Puli installer was started. The installer is based on Composer's installer script and will help you with checking your system for compatibility with Puli and downloading the latest puli.phar. The first version of the installer works already and will soon be available on Jump to the installer repository if you want to help working on it.

Puli's Gitter channel was pretty busy. Read the Gitter chat log if you want to catch up on what was being discussed.

For me personally, the night was a full success. I hope to repeat it soon! :)

SitePoint PHPWatch: Prevent Brute Force Attacks on a Login Page (9.10.2015, 17:30 UTC)

Learn how to protect your PHP applications from Brute Force Attacks. I'll show you how in this screencast.

<script src="">

Loading the player...

<script type="text/javascript"> jwplayer("video-5805").setup({ image: "", sources: [ { file: "", label: "SD" }, { file: "", label: "HD" }, ], tracks: [ { file: "", "default": true } ], aspectratio: "16:9", width: "100%", height: "480px", fallback: true, primary: "flash", streaming: false, analytics: { enabled: false, cookies: false }, captions: { back: false, fontsize: 12 }, advertising: { client: "googima", schedule: { "myAds": { "offset": "pre", "tag": "\u0026iu=/7448792/Video\u0026cust_params=[post_id]%3Dstaging%26channel%3D[channel]\u0026impl=s\u0026gdfp_req=1\u0026env=vp\u0026output=xml_vast2\u0026unviewed_position_start=1\u0026url=[url]/\u0026description_url=[description_url]\u0026correlator=[timestamp]" } } } });

Continue reading %Watch: Prevent Brute Force Attacks on a Login Page%

Bernhard SchussekMedia Coverage About Puli (9.10.2015, 13:00 UTC)

In the previous days, a lot of media coverage about Puli was published. One of the more extensive and interesting articles is Can PuliPHP Re-Revolutionize PHP Package Development? on SitePoint. The article was written by Nicola Pietroluongo, who already covered an overview of the Webmozart Console component in a previous SitePoint article.

Today, Cal Evans published an interview he took with me at the phpkonf in Istanbul. You can listen to the interview on Voices of the Elephant. The interview gives a basic overview over what Puli is, how it started and where I hope that it will be going in the future.

Last but not least, DrupalCon Barcelona published a recording of my talk Puli: PHP's Next Package Revolution. I was ill on the day of the conference, so please bear with me if I couldn't give my best performance. However, I still think it the presentation is interesting for those who couldn't see it live:

Don't forget that tonight is Puli Coding Night! Join us if you want to learn about the project and get involved.

Cal EvansInterview with Bernhard Schussek (9.10.2015, 04:00 UTC) Link
Larry GarfieldVisiting other islands this fall (8.10.2015, 19:49 UTC)

In case you hadn't heard yet, Drupal 8 RC 1 is out. And there has been much rejoicing! I'm going to save my own lengthy celebration-and-thank-you post for the 8.0.0 release, so for now I will just point everyone at Campbell Vertesi's post and say "what he said!".

But it's also a good time to consider the impact that Drupal 8 has had on the PHP community. The "off the island" movement has grown large, and people outside of Drupal are echoing the same message. In fact, not one but two conferences this fall are actively trying to build bridges between PHP sub-communities: ZendCon and php[world].

read more

Rob AllenThe beginner's guide to rebasing your PR (8.10.2015, 10:05 UTC)

You've successfully created a PR and it's in the queue to be merged. A maintainer looks at the code and asks you to rebase your PR so that they can merge it.

Say what?

The maintainer means that there have been other code changes on the project since you branched which means that your branch cannot be merged without conflicts and they would like to you to sort this out.

These are the steps you should take.


Read the summary.

1. Update your target branch from upstream

I assume you already have an upstream repository as described in The beginner's guide to contributing to a GitHub project. The target branch you want to update can be found at the top of the PR on the GitHub site.

For example:

Pr title

The target branch in this example is develop, though I see master a lot too.

$ git checkout develop
$ git pull upstream develop && git push origin develop

2. Rebase your branch

The next step is to change to your branch which is the other branch listed in the PR details (feature/validator-result-interface in this example) and then perform a rebase:

$ git checkout feature/validator-result-interface
$ git rebase develop

This will rewind all your commits on this branch and then replay them against the tip of the branch you are rebasing against.

As you have been asked to do this, you'll get conflicts. Don't panic!

$ git status will show you which files are in conflict. For each one, follow this process:

  1. Open in editor and search for "<<<<<<" (that's 6 <) to find the conflict
  2. Inspect and fix so that you end up with the correct text. Remove the lines starting with <<<<<<, ====== and >>>>>>.
  3. Press find-next in your editor to find the next conflict in the file.
  4. Once all conflicts in the file have been fixed, exit your editor
  5. Add this file to the staging index: git add {filename}
  6. Continue until git status shows that all conflicting files have been added to the index

Once all conflicting files are fixed you can continue the rebase:

$ git rebase --continue

3. Push your newly rebased branch to origin

Finally, all you need to do is push your branch back to origin. Note that this will require a force push and you've probably been told to never do such a thing. This is the one exception to that rule because the maintainer asked you to do it.

So go ahead:

$ git push -f origin

It's a good idea to leave a comment on the PR that you've done the rebase and the PR is ready for re-review.

All done

To summarise the steps required:

  1. $ git checkout {target branch}
  2. $ git pull upstream {target branch} && git push origin {target branch}
  3. $ git checkout {victim branch}
  4. $ git rebase {target branch}
  5. Fix conficts and continue rebasing
  6. $ git push -f origin

That's it. Being asked to rebase your PR isn't scary or (usually) difficult as long as you pay attention to what you're doing. However, if you're not fully comfortable with git, then I recommend buying the Git Workbook and working through all the exercises.

SitePoint PHPCan PuliPHP Re-Revolutionize PHP Package Development? (7.10.2015, 16:00 UTC)

Puli is a new toolkit built on top of Composer that helps to manage and exchange resources like configuration files, images, CSS files, translation catalogs, and others. These are, you’ll agree, often difficult to maintain and share across projects.

Puli logo

Puli provides a framework-agnostic solution to this problem, keeping track of every resource location and avoiding the problems of using absolute or relative paths inside different systems.

How it works

  • You map resources via CLI.
  • A puli.json file keeps track of them.
  • You use a ResourceRepository instance to handle resources.

The Puli project also provides libraries for other functionalities like URL generation, or Twig support.

Puli components

Continue reading %Can PuliPHP Re-Revolutionize PHP Package Development?%

labs @ Qandidate.comAsynchronous Event Processing with Broadway using RabbitMQ (7.10.2015, 14:05 UTC)

Broadway allows the processing of events by passing them to an event bus. You can have a Projector subscribe to this event bus in order to update your read models, or you can have a Processor subscribe to the event bus in order to for example send an email. In Broadway this all happens synchronously: dispatching of the command, persisting the new events and processing the events (the projectors and processors) all happen on a single request, on a single thread. In this blog post we will explain to you how you can improve your user experience by running the processors asynchronously using RabbitMQ (or any other message queue).

∞ labs @ Permalink

Official Blog of the PEAR Group/PEAR PresidentPEAR 1.10.0 with PHP7 support is out (7.10.2015, 11:12 UTC)

After a year of development, PEAR version 1.10.0 has been released.

It works on PHP7 and is E_DEPRECATED and E_STRICT compatible.

Apart from those big changes, a number of annoying bugs have been fixed and some features implemented – have a look at the release notes and the roadmap.

Thanks to Ferenc Kovacs, Hannes Magnusson, Remi Collet and Ken Guest for their patches.


Upgrade your existing PEAR installation as follows:

$ pear clear-cache
$ pear upgrade pear-1.10.0

Fresh installation

See the PEAR installation documentation.

PHP ClassesCreate Microsoft Word DOCX files from HTML in PHP Part 2: More Complex Documents (7.10.2015, 03:37 UTC)
By Ashraf Gheith
In the first part of this article it was presented the class VsWord as a means to create Microsoft Word DOCX articles from HTML.

Read this article to learn how to compose more complex documents either using HTML or calls to the class that can insert document elements programmatically.
LinksRSS 0.92   RDF 1.
Atom Feed   100% Popoon
PHP5 powered   PEAR
ButtonsPlanet PHP   Planet PHP
Planet PHP