DSGVO und Fotografie: OLG Köln schafft etwas Klarheit

heise online Newsticker - 27. Juni 2018 - 8:00
Das Kunsturhebergesetz findet laut OLG Köln auch nach Wirksamwerden der DSGVO Anwendung. Für die Bildberichterstattung bedeutet dies etwas Rechtssicherheit.

"Offensichtliches Plagiat": Bethesda verklagt Warner wegen Westworld-Mobilspiel

heise online Newsticker - 27. Juni 2018 - 8:00
Ein neues Westworld-Mobilspiel von Warner soll Fallout Shelter nicht nur nachahmen, es soll sogar auf demselben Code basieren, klagt Bethesda.

Offene Firebase-Datenbanken: Tausende Apps leaken Passwörter, Nutzerdaten etc.

heise online Newsticker - 27. Juni 2018 - 7:00
Dritte könnten mit vergleichsweise wenig Aufwand private Daten von Millionen App-Nutzern einsehen, warnen Sicherheitsforscher.

iX-Cloud-Konferenz 2018: Programm steht, Anmeldung gestartet

heise online Newsticker - 27. Juni 2018 - 7:00
Die Konferenz widmet sich der effizienten Cloud-Nutzung. Das Programm bietet ein breites Themenspektrum von DSGVO über Kubernetes bis zu Zertifizierungen.

iOS: Verwirrung um Brute-Force-Hack der Gerätesperre

heise online Newsticker - 27. Juni 2018 - 7:00
Ein Sicherheitsforscher behauptet, einen Trick gefunden zu haben, mit dem sich iPhone und iPad knacken lassen. Apple widerspricht dem.

Google Knowledge Graph: Personen und Firmen können Änderungen vorschlagen

heise online Newsticker - 27. Juni 2018 - 6:30
Der Knowledge Graph liefert Informationen bereits in den Google-Suchergebnissen. Personen und Firmen können die Einträge ändern – allerdings nicht beliebig.

Dries Buytaert: Working together to promote Drupal

Planet Drupal - 27. Juni 2018 - 0:28

The Drupal community has done an amazing job organizing thousands of developers around the world. We've built collaboration tools and engineering processes to streamline how our community of developers work together to collectively build Drupal.

This collaboration has led to amazing results. Today, more than 1 in 40 of the top one million websites use Drupal. It's inspiring to see how many organizations depend on Drupal to deliver their missions. What is equally incredible is that historically, we haven't collaborated around the marketing of Drupal. Different organizations have marketed Drupal in their own way.

In my DrupalCon Nashville keynote, I shared that it's time to make a serious and focused effort to amplify Drupal success stories in the marketplace. Imagine what could happen if we enabled hundreds of marketers to collaborate on the promotion of Drupal, much like we have enabled thousands of developers to collaborate on the development of Drupal.

Accelerating Drupal adoption with business decision makers

To focus Drupal's marketing efforts, we launched the Promote Drupal Initiative. The goal of the Promote Drupal Initiative is to do what we do best: to work together to collectively grow Drupal. In this case, we want to collaborate to raise awareness with business and non-technical decision makers. We need to hone Drupal's strategic messaging, amplify success stories and public relation resources in the marketplace, provide agencies and community groups with sales and marketing tools, and improve the Drupal.org evaluator experience.

To make Promote Drupal sustainable, Rebecca Pilcher, Director of MarComm at the Drupal Association, will be leading the initiative. Rebecca will oversee volunteers with marketing and business skills that can help move these efforts forward.

Promote Drupal Fund: 75% to goal

At DrupalCon Nashville, we set a goal of fundraising $100,000 to support the Promote Drupal Initiative. These funds will help to secure staffing to backfill Rebecca's previous work (someone has to market DrupalCon!), produce critical marketing resources, and sponsor marketing sprints. The faster we reach this goal, the faster we can get to work.

I'm excited to announce that we have already reached 75% of our goal, thanks to many generous organizations and individuals around the world. I wanted to extend a big thank you to the following companies for contributing $1,000 or more to the Promote Drupal Initiative:

If you can, please help us reach our total goal of $100,000! By raising a final $25,000, we can build a program that will introduce Drupal to an emerging audience of business decision makers. Together, we can make a big impact on Drupal.

Joachim's blog: Making builder code look like output code

Planet Drupal - 26. Juni 2018 - 23:30

One of the big challenges with updating Drupal Code Builder for Drupal 8 has been the sheer variety of code to be output. On earlier versions of Drupal, it was just about hooks, and all that needed to be done was to take the API documentation code and replace 'hook_' with the module name. There were info files too, and Drupal 7 added the placing of hooks into different .inc files, but compared to this, Drupal 8 has things like plugin annotations, fluent method calls for content entity baseFieldDefinitions(), FormAPI arrays, not to mention PHP class methods, and more.

But one of the things I enjoy about working on DCB is that I am free to experiment with different ideas, much more so than with work on core or even contrib. It is its own system, without any need to work with what a framework supplies, and it has no need to be extensible. So I can try a new way of doing things as often as I want, and clean up when I've had time to figure out which way works best.

For example, up until recently, the code for a field definition in baseFieldDefinitions() was getting generated in three different ways.

First, the old-fashioned way of doing it line by line, then concatenating the array with a "\n" to make the final code. This is the way most of the old code in DCB was done, but with things that need handling of terminal commas or semicolons, and nesting indents and so on, it was starting to get really clunky.

So then I tried writing something loosely inspired by Drupal's RenderAPI. Because that's a nice big hammer that seems to fit a lot of nails: make a big array of data, chuck your stuff into it, then hand it over to something that makes the output. Except, not so good. Writing the code to make the right sort of array was fiddly. The array of data needed to combine actual data and metadata (such as the class of an annotation), which added levels to the nesting.

Then I hit on an idea: baseFieldDefinitions() fields are a fluent interface, like this:

$fields['changed'] = BaseFieldDefinition::create('changed') ->setLabel(t('Changed')) ->setDescription(t('The time that the node was last edited.')) ->setRevisionable(TRUE) ->setTranslatable(TRUE);

What if the code that builds this could be the same, to the point where you could just copy-paste code from, say, the node entity class, and make a few tweaks? Creating the code in DCB would be much simpler, and having the DCB code look like the output code would make debugging easier too.

Using a class with the magic __call() method lets us have just that: a renderer object that treats a method call as some information about code to render. Here's what the builder code for the base field definition code looks like now:

$changed_field_calls = new FluentMethodCall; $changed_field_calls ->setLabel(FluentMethodCall::t('Changed')) ->setDescription(FluentMethodCall::t('The time that the entity was last edited.')); if ($use_revisionable) { $changed_field_calls->setRevisionable(TRUE); } if ($use_translatable) { $changed_field_calls->setTranslatable(TRUE); } $method_body = array_merge($method_body, $changed_field_calls->getCodeLines());

It's not yet perfect, as the first line isn't done by this, and the handling of the t() calls could do with some polish; probably by creating a separate class called something like FunctionCall, such that FunctionCall::somefunction() returns the code for a call to somefunction().

But the efficiency and elegance of this approach has led me to devise a new principle for DCB: builder code should look as much as possible like that code that it outputs.

So applying this approach to outputting annotations, the code now looks like this:

$annotation = ClassAnnotation::ContentEntityType([ 'id' => 'cat', 'label' => ClassAnnotation::Translation("Cat"), 'label_count' => ClassAnnotation::PluralTranslation([ 'singular' => "@count content item", 'plural' => "@count content items", ]), ]); $annotation_lines = $annotation->render();

Magic methods used there as well, this time for static calls. The similarity to the output code isn't as good, as annotations aren't PHP code, but it's still close enough that you can copy the code you want to output, make a few simple changes, and you have the builder code.

This work has embodied another principle that I've come to follow: complexity and ugliness should be pushed down, hidden, and encapsulated. Here, the ClassAnnotation and FluentMethodCall have to do fiddly stuff like quoting string values, recurse into nested arrays. They have to handle special cases, like the last line of a fluent call has a semicolon and the last line of an annotation has no comma. All of that is hidden from the code that uses them. That can get on with doing the interesting bits.

Skriptsprache: Perl 5.28 ist entscheidend sicherer

heise online Newsticker - 26. Juni 2018 - 18:30
In diesem Jahr bringt erst der Juni alles Neue in die Perlwelt, denn drei ernste Sicherheitslücken wollten zuvor zuverlässig geschlossen sein.

Apple-Tastaturaustausch: Welche Geräte betroffen sind und wie es funktioniert

heise online Newsticker - 26. Juni 2018 - 18:30
Apple hat erstmals Probleme mit den Butterfly-Keyboards aktueller Notebooks eingeräumt – und will sie kostenlos beheben. Noch sind Fragen offen.

YouTube-Premium für Apple-Nutzer 33 Prozent teurer

heise online Newsticker - 26. Juni 2018 - 18:00
Wer den neuen Google-Dienst auf iPhone und iPad abonniert, zahlt deutlich drauf. Der Konzern will offenbar Apples Provision kompensieren.

MIT-Forscher wollen konkurrierende Blockchains miteinander kommunizieren lassen

heise online Newsticker - 26. Juni 2018 - 17:30
Immer neue Blockchains entstehen, doch sie bilden noch kein gemeinsames Netz. Erste Anbieter versuchen, diese Lücke bei der Interoperabilität zu schließen.

GitLab 11.0: Auto-DevOps-Feature für alle Nutzer

heise online Newsticker - 26. Juni 2018 - 17:00
Das als Beta in GitLab 10.0 eingeführte Auto DevOps ist jetzt für alle GitLab-Nutzer verfügbar. Es soll Arbeitsabläufe automatisieren und einfacher gestalten.

RTL will Netflix und Amazon Prime Video angreifen

heise online Newsticker - 26. Juni 2018 - 17:00
Bert Habets, Chef der RTL-Group, glaubt, mit eigenem Video-on-Demand gegen die Platzhirschen Netflix und Amazon Prime Video mithalten zu können.

Top500 der Supercomputer: Amerika first, aber wohl nur kurz

heise online Newsticker - 26. Juni 2018 - 16:30
Der US-amerikanische Summit-Rechner liegt nun auf Platz 1 in der neuen 51. Top500-Liste der Supercomputer.

Elektro-Rennwagen: Volkswagen bricht den Rekord am Pikes Peak

heise online Newsticker - 26. Juni 2018 - 16:00
Der Elektro-Rennwagen von VW hat am Pikes Peak nicht nur die konventionelle Konkurrenz hinter sich gelassen, sondern auch eine neue Bestzeit aufgestellt.

20 Jahre Gigabit-Ethernet

heise online Newsticker - 26. Juni 2018 - 16:00
Wer heute LAN kauft, kauft Gigabit-Ethernet, das am 25. Juni 1998 standardisiert wurde – für Glasfasern.

Lecker Strom: Mikroorganismen als Elektronenatmer und Elektronenfresser

heise online Newsticker - 26. Juni 2018 - 15:30
Einige Mikroorganismen ernähren sich von Strom oder verwandeln Rohstoffe in Elektrizität. Das wollen sich Forscher zunutze machen.

NeTV2 und DIY-Mikroskope – neue Crowdfunding-Projekte für Maker

heise online Newsticker - 26. Juni 2018 - 15:30
Ein neues FPGA-Board, Mikroskope für Citizen Science oder Elektronik für Escape Rooms – auf den Crowdfundingseiten gibt es immer Projekte zu entdecken.

Fünf externe Festplatten im Test: Backups per USB 3.0

heise online Newsticker - 26. Juni 2018 - 15:30
TechStage hat fünf externe Festplatten mit USB-3.0-Anschluss getestet. Die 3,5-Zoll-Systeme bringen bis zu 10 TByte Speicher und eigenen sich gut für Backups.