Samsung zeigt 8K-TV und Videoscreen mit Mikro-LEDs

heise online Newsticker - 9. Januar 2018 - 14:30
Samsung präsentiert auf der CES QLED-Fernseher mit 8K-Auflösung und einen modularen Videoscreen aus Mikro-LED-Kacheln. Mit künstlicher Intelligenz will das Unternehmen zudem Sprachsteuerung und Vorschlagssysteme im TV verbessern.

GoPro entlässt Hunderte Mitarbeiter der Drohnenabteilung

heise online Newsticker - 9. Januar 2018 - 14:30
Die erste eigene Drohne konnte GoPro vergangenes Jahr erst nach einem Rückruf wieder auf den Markt bringen. Zur Konkurrenz holte sie nicht auf. Nun wird wohl ein Schlussstrich gezogen – Hunderte Mitarbeiter verlieren einem Bericht zufolge ihren Job.

Smarter Trinken: Wenn das Regal den Wein empfiehlt

heise online Newsticker - 9. Januar 2018 - 14:00
Als Weinliebhaber muss man auf Smartphone-Anbindung nicht verzichten. Das smarte Weinregal Caveasy meldet sich, wenn der gelagerte Wein am besten getrunken werden sollte und der Bluetooth-Einschenker von Coravin schenkt ein, ohne die Flasche zu öffnen.

Elgato: Neuer HomeKit-Knopf und Mini-Dock mit Thunderbolt 3

heise online Newsticker - 9. Januar 2018 - 13:30
Der deutsch-amerikanische Apple-Zubehörspezialist hat mehrere interessante Neuheiten vorgestellt. Auch am Sensor Eve Room wurde geschraubt.

Intel NUC: VR-fähige Mini-PCs mit Intel-AMD-Kombiprozessoren ab März

heise online Newsticker - 9. Januar 2018 - 13:00
Dank der Intel-Prozessoren mit integrierter Vega-Grafikeinheit sollen die beiden kommenden NUC-Mini-PCs auch anspruchsvolle Spiele ruckelfrei darstellen.

Sony Mobile auf der CES: Handys für die Generation Selfie

heise online Newsticker - 9. Januar 2018 - 13:00
Sony enthüllt auf der CES drei neue Handys der Einsteiger- und Mittelklasse. Beim Xperia XA2 Ultra verbaut der japanische Hersteller Dual-Kameras – allerdings nur auf der Vorderseite.

Nvidia für autonome und vernetzte Autos: weitere Drive-Bausteine und neue Partnerschaften

heise online Newsticker - 9. Januar 2018 - 13:00
Nvidia erweitert sein Angebot an Entwickler-Tools im Automotive-Bereich; zudem ist die nächste Hardware-Plattform Xavier fast fertig. Das lockt weitere Autohersteller und Zulieferer an.

Agiledrop.com Blog: AGILEDROP: 2017 in review

Planet Drupal - 9. Januar 2018 - 12:50
Happy new year! Here at AGILEDROP, we will remember 2017 as the year when we became more focused and systemised. We worked hard, learned new things and had fun, lots of fun. Along with the growth in personnel and revenue, I can say it was a good year.     New business model, new processes At the end of 2016, we changed our business model and moved away from being a full-service agency to become trusted partners with digital agencies in building Drupal websites. With great foundations from 2016, we started tweaking processes and documenting them. To become more productive we also… READ MORE

Droptica: Droptica: Summary of the year 2017 in Droptica

Planet Drupal - 9. Januar 2018 - 12:42
Another year is over, and we are glad to acknowledge that we are very proud of what happened during this period! In short, 2017 was the best year in the company’s five-year history. That is why we decided to share a brief summary of the year with you. See what we achieved over the last 12 months and what we have in store for 2018.    Reasons to be proud

Sexroboter – Hype oder Trend?

heise online Newsticker - 9. Januar 2018 - 12:30
Schmieröl statt Gleitgel, Knattern statt Stöhnen, leerer Akku statt Migräne: Sexroboter könnten unser Liebesleben gewaltig revolutionieren. Doch steckt dahinter wirklich ein technikbegeisterter Trend oder bloß ein hysterischer Hype?

Elektroauto Byton Concept: Das autonome Spielmobil kommt

heise online Newsticker - 9. Januar 2018 - 12:30
Ein Auto wie ein Smartphone: Der Elektro-SUV Byton Concept fährt mit riesigen Touchscreen als Armaturenbrett, Gestensteuerung und Gesichtserkennung vor. Dazu gibt es lernfähige Sprachassistenten und jede Menge Ablenkung vom langweilen Fahren.

Amazee Labs: Extending GraphQL: Part 3 - Mutations

Planet Drupal - 9. Januar 2018 - 12:20
Extending GraphQL: Part 3 - Mutations

The graphql_core module bundled with the graphql module automatically exposes types and fields to traverse Drupal’s entity system. However, since beta 1 it does not do the same for mutations anymore. The fact that it is not possible to write or update data using GraphQL caused much confusion. I want to shed light on this topic and explain the way mutations are intended to work.

Philipp Melab Tue, 01/09/2018 - 11:20

Before releasing the first beta version of the GraphQL module for Drupal, we removed a feature that automatically added input types and mutation fields for all content entities in the GraphQL schema. This may seem to be counter-intuitive, but there were ample reasons.

Why automatic mutations were removed

While GraphQL allows the client to freely shape query and response, mutations (create, update or delete operations) are by design atomic. A mutation is a root level field that is supposed to accept all necessary information as arguments and return a queryable data object, representing the state after the operation. Since GraphQL is strictly typed, this means that there is one mutation field and one distinct input type for every entity bundle. Also, because Drupal entities tend to have a lot of fields and properties, this resulted in very intricate and hard to use mutations, increasing the schema size, even though  90% of them were never used. 

On top of that, some entity structures added additional complexities: For example, just trying to create an article with a title and a body value while the comment module is enabled results in a constraint violation, as the comment field requires an empty list of comments at the least. 

These circumstances led to a technically correct solution that unfortunately burdened the client with too much knowledge about Drupal internals and was therefore not usable in practice. It became apparent that this had to break and change in the future. Now, because we removed it, the rest of the GraphQL API can become stable. The code is still available on Github for reference and backwards compatibility, but there are no plans to maintain this further.

How to use mutations

So there is no way to use mutations out of the box. You have to write code to add a mutation, but that doesn’t mean it’s complicated. Let’s walk through a simple example. All code is available in the examples repository.

First, you have to add an input type that defines the shape of the data you want your entity mutation to accept:

<?php namespace Drupal\graphql_examples\Plugin\GraphQL\InputTypes; use Drupal\graphql\Plugin\GraphQL\InputTypes\InputTypePluginBase; /** * The input type for article mutations. * * @GraphQLInputType( * id = "article_input", * name = "ArticleInput", * fields = { * "title" = "String", * "body" = { * "type" = "String", * "nullable" = "TRUE" * } * } * ) */ class ArticleInput extends InputTypePluginBase { }

 

This plugin defines a new input type that consists of a “title” and a “body” field.

The first mutation plugin is the “create” operation. It extends the CreateEntityBase class and implements only one method, which will map the properties of our input type (above) to the target entity type and bundle, as defined in the annotation.

<?php namespace Drupal\graphql_examples\Plugin\GraphQL\Mutations; use Drupal\graphql\GraphQL\Type\InputObjectType; use Drupal\graphql_core\Plugin\GraphQL\Mutations\Entity\CreateEntityBase; use Youshido\GraphQL\Execution\ResolveInfo; /** * Simple mutation for creating a new article node. * * @GraphQLMutation( * id = "create_article", * entity_type = "node", * entity_bundle = "article", * secure = true, * name = "createArticle", * type = "EntityCrudOutput", * arguments = { * "input" = "ArticleInput" * } * ) */ class CreateArticle extends CreateEntityBase { /** * {@inheritdoc} */ protected function extractEntityInput(array $inputArgs, InputObjectType $inputType, ResolveInfo $info) { return [ 'title' => $inputArgs['title'], 'body' => $inputArgs['body'], ]; } }

 

The base class handles the rest. Now you already can issue a mutation using the GraphQL Explorer:

The mutation will return an object of type EntityCrudOutput that already contains any errors or constraint violations, as well as - in case the operation was successful - the newly created entity.

If you try to create an article with an empty title, typed data constraints will kick in, and the mutation will fail accordingly:

The update mutation looks almost the same. It just requires an additional argument id that contains the id of the entity to update and extends a different base class.

<?php namespace Drupal\graphql_examples\Plugin\GraphQL\Mutations; use Drupal\graphql\GraphQL\Type\InputObjectType; use Drupal\graphql_core\Plugin\GraphQL\Mutations\Entity\UpdateEntityBase; use Youshido\GraphQL\Execution\ResolveInfo; /** * Simple mutation for updating an existing article node. * * @GraphQLMutation( * id = "update_article", * entity_type = "node", * entity_bundle = "article", * secure = true, * name = "updateArticle", * type = "EntityCrudOutput", * arguments = { * "id" = "String", * "input" = "ArticleInput" * } * ) */ class UpdateArticle extends UpdateEntityBase { /** * {@inheritdoc} */ protected function extractEntityInput(array $inputArgs, InputObjectType $inputType, ResolveInfo $info) { return array_filter([ 'title' => $inputArgs['title'], 'body' => $inputArgs['body'], ]); } }

 

Now you should be able to alter any articles:

And the delete mutation is even simpler.

<?php namespace Drupal\graphql_examples\Plugin\GraphQL\Mutations; use Drupal\graphql_core\Plugin\GraphQL\Mutations\Entity\DeleteEntityBase; /** * Simple mutation for deleting an article node. * * @GraphQLMutation( * id = "delete_article", * entity_type = "node", * entity_bundle = "article", * secure = true, * name = "deleteArticle", * type = "EntityCrudOutput", * arguments = { * "id" = "String" * } * ) */ class DeleteArticle extends DeleteEntityBase { }

 

This will delete the entity, but it’s still available in the response object, for rendering notifications or for subsequent queries.

That’s a wrap. With some trivial code, we can implement a full CRUD interface for an entity type. If you need multiple entity types, you could use derivers and services to make it more DRY.

Plans

This way we can create entity mutations that precisely fit the needs of our current project. It requires a little boilerplate code and might not be the most convenient thing to do, but it’s not terrible and works for now.

That doesn’t mean we are not planning to improve. Currently, the rules module is our best hope for providing zero-code, site-building driven mutations. The combination would be tremendously powerful.

If you want out-of-the-box mutations in GraphQL, go and help with #d8rules!

HP Envy x2: Windows-Tablet mit Core-i-Prozessor

heise online Newsticker - 9. Januar 2018 - 12:00
HP spendiert dem Windows-Tablet Envy x2 einen Core-i-Prozessor der Y-Familie, ein LTE-Modem und einen 12-Zoll-Bildschirm im 3:2-Format.

HP Spectre x360 15: 15-Zoll-Convertible mit Intel-AMD-Kombiprozessor

heise online Newsticker - 9. Januar 2018 - 12:00
Kurz nach Intels Präsentation der Core-i-8000G-Prozessoren mit Radeon-GPU stellt HP das erste damit bestückte Notebook vor.

MyLiFi: Schicke Datenübertragungs-Schreibtischlampe für Aluhüte (und gegen überlastete WLANs)

heise online Newsticker - 9. Januar 2018 - 11:30
Die MyLiFi-Schreibtischlampe sieht nicht nur schick aus, sondern überträgt auch Daten über moduliertes Licht. Die große Frage ist allerdings: Warum?

LooxidVR ausprobiert: Das Headset, das Hirnströme misst und Pupillen trackt

heise online Newsticker - 9. Januar 2018 - 11:30
Ein Gefühlserkennungssystem will das LooxitVR-Headset sein: Es misst Gehirnströme der Nutzer und erkennt in Echtzeit, wo diese gerade hinschauen. Wir haben einen Prototypen auf der CES ausprobiert.

Aus dem Fahrrad ein E-Bike: Elektromotor zum Nachrüsten

heise online Newsticker - 9. Januar 2018 - 11:30
Mit dem Electron-Wheel soll sich das eigene Fahrrad in wenigen Minuten zum E-Bike umrüsten lassen.

Statt Duftkerzen: Moodo sorgt per App oder Sprachkommando für Wohlgeruch

heise online Newsticker - 9. Januar 2018 - 11:00
Eine per App oder Sprachkommandos gesteuerte und mit Duftkapseln gefüllte Box soll künftig im smarten Heim für individualisierte Wohlgerüche sorgen.

13-Zoll-Notebooks: Intels Mini-Quadcore schnell, aber thermisch anspruchsvoll

heise online Newsticker - 9. Januar 2018 - 11:00
Intels neue Mobil-Quad-Cores eignen sich wie die bisherigen Doppelkerne für flache und leichte Notebooks, bieten aber eine ungleich höhere Leistung. Wir haben die aktuellen Topmodelle der großen Hersteller ins Labor geholt.

Smarte Roboter: Invasion der Niedlichkeit

heise online Newsticker - 9. Januar 2018 - 11:00
Niedliche kleine Roboter sollen als digitale Assistenten die Wohnungen bevölkern. In Zukunft werden gleich eine ganze Reihe Modelle in den Regalen warten. Viel mehr als hübsch aussehen, können sie aber noch nicht.