Video-Chats im Browser: Fortschritt beim WebRTC-Standard

heise online Newsticker - 7. November 2017 - 10:00
Das W3C hat für den Standard WebRTC 1.0 einen Empfehlungskandidaten veröffentlicht – und hinkt damit der Praxis weit hinterher. Denn die großen Browser unterstützen längst WebRTC.

Vernee Thor Plus: 150-Euro-Handy dank 6200-mAh-Akku mit langer Laufzeit

heise online Newsticker - 7. November 2017 - 10:00
Die Specs des 150-Euro-Smartphones Thor Plus lesen sich gut. Neben einem AMOLED-Display, einem 6200-mAh-Akku und einem Fingerabdruckscanner gehören noch ein Octa-Core-Prozessor und 3 GByte Arbeitsspeicher zur Ausstattung. Doch wie gut ist es wirklich?

TorMoil: Lücke im Tor-Browser kann Nutzer enttarnen

heise online Newsticker - 7. November 2017 - 9:30
Mac- und Linux-Versionen des Tor-Browsers enthalten eine Schwachstelle, die unter bestimmten Umständen die echte IP-Adresse des Nutzers verrät. Ein vorläufiger Hotfix steht zum Download bereit, löst das Problem aber nicht komplett.

Mobilfunk-Chips: Broadcom will Qualcomm kaufen

heise online Newsticker - 7. November 2017 - 8:30
Es wäre die größte Übernahme in der Geschichte der Computerchip-Branche: Broadcom plant, ein Angebot für Qualcomm abzugeben. Außerdem will Broadcom in die USA umziehen.

Wochenrückblick Replay: Straßen und iPhones der Zukunft

heise online Newsticker - 7. November 2017 - 8:30
Selbst heilende Straßen, das Tauziehen um .amazon, die ersten Eckpunkt der künftigen Digitalpolitik: Die wichtigsten Meldungen der Woche.

c't uplink 19.5: Mesh-WLAN, Lightroom CC, Ubuntu 17.10

heise online Newsticker - 7. November 2017 - 7:30
Heute in c't uplink spannen wir schnelle Mesh-WLANs ohne Funklöcher auf. Außerdem: Adobes neue Software-Strategie bei Lightroom und Ubuntu 17.10 inklusive neuer Desktop-Oberfläche.

Webentwicklung: ZK 8.5 vereinfacht die Client-Server-Kommunikation

heise online Newsticker - 7. November 2017 - 7:30
Mit Version 8.5.0 führen die Macher WebSocket zur Kommunikation ohne HTTP-Requests ein. Außerdem gibt es eine Komponente für die clientseitige Datenverwaltung und das Rendering von als JSON-Objekten übermittelter Inhalte.

PreviousNext: Composing Docker Local Development: Networking

Planet Drupal - 6. November 2017 - 23:47
Share:

Its extremely important to have default values that you can rely on for local Drupal development, one of those is "localhost". In this blog post we will explore what is required to make our local development environment appear as "localhost".

by Nick Schuch / 7 November 2017

In our journey migrating to Docker for local dev we found ourselves running into issues with "discovery" of services eg. Solr/Mysql/Memcache.

In our first iteration we used linking, allowing our services to talk to each other, some downsides to this were:

  • Tricky to compose an advanced relationship, lets use PHP and PanthomJS as an example:
    • PHP needs to know where PhantomJS is running
    • PhantomJS needs to know the domain of the site that you are running locally
    • Wouldn't it be great if we could just use "localhost" for both of these configurations?
  • DNS entries only available within the containers themselves, cannot run utilities outside of the containers eg. Mysql admin tool

With this in mind, we hatched an idea.....

What if we could just use "localhost" for all interactions between all the containers.

  • If we wanted to access our local projects Apache, http://localhost (inside and outside of container)
  • If we wanted to access our local projects Mailhog, http://localhost:8025 (inside and outside of container)
  • If we wanted to access our local projects Solr, http://localhost:8983 (inside and outside of container)

All this can be achieved with Linux Network Namespaces in Docker Compose.

Network Namespaces

Linux Network Namespaces allow for us to isolate processes into their own "network stacks".

By default, the following happens when a container gets created in Docker:

  • Its own Network Namespace is created
  • A new network interface is added
  • Provided an IP on the default bridge network

However, if a container is created and told to share the same Network Namespace with an existing container, they will both be able to interface with each other on "localhost" or "127.0.0.1".

Here are working examples for both OSX and Linux.

OSX

  • Mysql and Mail share the PHP containers Network Namespace, giving us "localhost" for "container to container" communication.
  • Port mapping for host to container "localhost"
version: "3" services: php: image: previousnext/php:7.1-dev # You will notice that we are forwarding port which do not belong to PHP. # We have to declare them here because these "sidecar" services are sharing # THIS containers network stack. ports: - "80:80" - "3306:3306" - "8025:8025" volumes: - .:/data:cached db: image: mariadb network_mode: service:php mail: image: mailhog/mailhog network_mode: service:php

Linux

All containers share the Network Namespace of the users' host, nothing else is required.

version: "3" services: php: image: previousnext/php:7.1-dev # This makes the container run on the same network stack as your # workstation. Meaning that you can interact on "localhost". network_mode: host volumes: - .:/data db: image: mariadb network_mode: host mail: image: mailhog/mailhog network_mode: host Trade offs

To facilitate this approach we had to make some trade offs:

  • We only run 1 project at a time. Only a single process can bind to port 80, 8983 etc.
  • Split out the Docker Compose files into 2 separate files, making it simple for each OS can have its own approach.
Bash aliases

Since we split out our Docker Compose file to be "per OS" we wanted to make it simple for developers to use these files.

After a couple of internal developers meetings, we came up with some bash aliases that developers only have to setup once.

# If you are on a Mac. alias dc='docker-compose -f docker-compose.osx.yml' # If you are running Linux. alias dc='docker-compose -f docker-compose.linux.yml'

A developer can then run all the usual Docker Compose commands with the shorthand dc command eg.

dc up -d

This also keeps the command docker-compose available if a developer is using an external project.

Simple configuration

The following solution has also provided us with a consistent configuration fallback for local development.

We leverage this in multiple places in our settings.php, here is 1 example:

$databases['default']['default']['host'] = getenv("DB_HOST") ?: '127.0.0.1';
  • Dev / Stg / Prod environments set the DB_HOST environment variable
  • Local is always the fallback (127.0.0.1)
Conclusion

While the solution may have required a deeper knowledge of the Linux Kernel, it has yielded us a much simpler solution for developers.

How have you managed Docker local dev networking? Let me know in the comments below.

Tagged Docker, Drupal Development

Posted by Nick Schuch
Sys Ops Lead

Dated 7 November 2017

Add new comment

Hook 42: Hook 42 at New England Drupal Camp

Planet Drupal - 6. November 2017 - 22:21

We're super excited to attend New England Drupal Camp this year!

Aimee is honored to have been invited to be the keynote speaker this year. She'll be discussing inclusion and diversity in the community. In addition to Aimee's keynote, we are partnering up with our longtime friends at Lingotek to put together a hands-on multilingual workshop that covers Drupal 8 and an integration to Lingotek's Translation Management System.

Just in case that wasn't enough, we're also presenting a couple of sessions. One comparing the madness of the multilingual modules on Drupal 7 to the new and improved Drupal 8 multilingual approach. We will be presenting another session covering how ANYONE and EVERYONE can help contribute back to the Drupal project even if they aren't the most advance technical person

Wim Leers: Rendering & caching: a journey through the layers

Planet Drupal - 6. November 2017 - 20:11

The Drupal render pipeline and its caching capabilities have been the subject of quite a few talks of mine and of multiple writings. But all of those were very technical, very precise.

Over the past year and a half I’d heard multiple times there was a need for a more pragmatic talk, where only high-level principles are explained, and it is demonstrated how to step through the various layers with a debugger. So I set out to do just that.

I figured it made sense to spend 10–15 minutes explaining (using a hand-drawn diagram that I spent a lot of time tweaking) and spend the rest of the time stepping through things live. Yes, this was frightening. Yes, there were last-minute problems (my IDE suddenly didn’t allow font size scaling …), but it seems overall people were very satisfied :)

Have you seen and heard of Render API (with its render caching, lazy builders and render pipeline), Cache API (and its cache tags & contexts), Dynamic Page Cache, Page Cache and BigPipe? Have you cursed them, wondered about them, been confused by them?

I will show you three typical use cases:

  1. An uncacheable block
  2. A personalized block
  3. A cacheable block that you can see if you have a certain permission and that should update whenever some entity is updated

… and for each, will take you on the journey through the various layers: from rendering to render caching, on to Dynamic Page Cache and eventually Page Cache … or BigPipe.

Coming out of this session, you should have a concrete understanding of how these various layers cooperate, how you as a Drupal developer can use them to your advantage, and how you can test that it’s behaving correctly.

I’m a maintainer of Dynamic Page Cache and BigPipe, and an effective co-maintainer of Render API, Cache API and Page Cache.

Preview:

Slides: Slides with transcriptVideo: YouTubeConference: Drupalcon ViennaLocation: Vienna, AustriaDate: Sep 28 2017 - 14:15Duration: 60 minutesExtra information: 

See https://events.drupal.org/vienna2017/sessions/rendering-caching-journey-through-layers.

Attendees: 200

Evalutations: 4.6/5

Thanks for the explanation. Your sketches about the rendering process and how dynamic cache, page cache and big pipe work together ; are awesome. It is very clear no for me.


Best session for me on DC. Good examples, loved the live demo, these live demo’s are much more helpful to me as a developer then static slides. General comments, not related to the speaker. The venue was to small for this talk and should have been on a larger stage. Also the location next to the exhibition stands made it a bit noisy when sitting in the back.


Great presentation! I really liked the hand-drawn figure and live demo, they made it really easy to understand and follow. The speaking was calm but engaging. It was great that you were so flexible on the audience feedback.

Stellenabbau bei Siemens: "Massive Veränderungen" werden Mitte November konkret

heise online Newsticker - 6. November 2017 - 20:00
Spekulationen über den Abbau tausender Stellen und die Schließung mehrerer Standorte verunsichern die Siemens-Beschäftigten in Deutschland. Mitte November will der Konzern seine Pläne offenlegen. Die Personalchefin skizziert schon Linien.

Nintendo: Mario auf dem Smartphone lohnt sich noch nicht

heise online Newsticker - 6. November 2017 - 19:30
Zwar konnte der Spielekonzern Millionen Downloads im App Store generieren, doch der Gewinn daraus ist den Japanern noch nicht hoch genug.

Arduino Create unterstützt neue Intel-basierte IoT-Plattformen

heise online Newsticker - 6. November 2017 - 19:30
Arduino sucht den Anschluss an Rapid-Prototyping für Massenproduktion: die Online-Entwicklungsumgebung Create kann künftig mit Intel-basierten Einplatinenrechnern genutzt werden. Zum Start gibt es ein Kit mit UP Squared Board.

FBI verhaftet Student, der Noten mittels Keylogger manipulierte

heise online Newsticker - 6. November 2017 - 19:00
Dem Täter droht wegen zwei Strafbeständen jeweils eine Höchststrafe von zehn Jahren Gefängnis. Er hatte in 21 Monaten mehr als 90 Mal seine eigenen Noten geändert, bevor er aufgeflogen war.

True-Wireless-Kopfhörer Verve Ones+ ME im Test: guter Klang, hoher Preis

heise online Newsticker - 6. November 2017 - 19:00
Die Verve Ones ME von Motorola konnten uns im Test akustisch nicht überzeugen. Untenherum klingen die Ohrhörer flach, es fehlt an Bass. Ob es die Plusausführung, Verve Ones+ ME, diesbezüglich besser macht, erfahren Sie im Testbericht von TechStage.

IBM will die Cloud-Integration vereinfachen

heise online Newsticker - 6. November 2017 - 19:00
Mit seiner Plattform "IBM Cloud Private" möchte der IT-Konzern Softwareentwicklern die Arbeit und Anwendern den Übergang ins Cloud-Zeitalter erleichtern.

iPhone X im Innern: Mehr Akkuplatz durch gestapelte Hauptplatine

heise online Newsticker - 6. November 2017 - 18:30
Apple hat das Mainboard des iPhone X praktisch halbiert und zusammengefaltet, um Platz für einen erstmals aus zwei Einheiten bestehenden Akku zu schaffen, wie ein Reparaturdienstleister berichtet.

Vor Apple Store: iPhone-X-Geräte im Wert von 370.000 US-Dollar geklaut

heise online Newsticker - 6. November 2017 - 18:30
In San Francisco wurde ein UPS-Lastwagen ausgeraubt, der vor einem Ladengeschäft des Konzerns parkte.

Studie: Digitalisierung der Schulen kostet 2,8 Milliarden Euro jährlich

heise online Newsticker - 6. November 2017 - 18:00
Forscher kommen im Auftrag der Bertelsmann-Stiftung zu dem Ergebnis, dass der von Bund und Ländern geplante Digitalpakt finanziell nicht ausreichend unterfüttert ist. Nötig sei ein gemeinsamer "Kraftakt", in den Eltern einbezogen werden sollten.

Erster Blick auf Xbox One X: Leiser als PS4 Pro, aber mit Speicherplatzproblem

heise online Newsticker - 6. November 2017 - 17:30
Microsoft protzt mit leistungsstarker Grafik, hat sein Kühlsystem aber gut im Griff. Mit Dolby Atmos klingen die Spiele wirklich beeindruckend. Ein Flaschenhals droht jedoch an anderer Stelle.