Browser-Tab an TV streamen

Ich besitze seit einigen Wochen einen Google Chromecast der über HDMI an meinen Fernseher angeschlossen ist.
Seit heute habe ich eine neue Funktion entdeckt über die man den Inhalt eines geöffnetes Tabs des Google Chrome Browsers an
den Fernseher übertragen kann.

Dazu benötigt man die Chrome Cast App die im Chrome Web Store gezogen werden kann.

https://chrome.google.com/webstore/detail/google-cast/boadgeojelhgndaghljhdicfkmllpafd?hl=de

Wer Ubuntu benutzt und seinen Chromecast nicht bei den verfügbaren Geräten angezeigt bekommt, der sollte
die Firewall-Einstellungen anpsssen.

sudo ufw allow proto udp from 192.168.178.0/24 to any port 32768:61000

Anstelle von “192.168.178.0″ setzt ihr eure Netzwerkadresse ein.

Rückblick: 30. Treffen der PHPUG Rheinhessen

Kaum zu glauben. Am letzten Dienstag hatten wir das 30. Treffen! unserer PHPUG.
Es ist schön zu sehen, dass sich eine kleine Kerngruppe von echt sehr kompetenten Entwicklern aus dem Umland herauskristalisiert hat und der ganze Abend in entspannter und lustiger Atmosphäre abläuft. Das tolle bei den Abenden ist, dass sich schon langsam Freundschaften bilden und es auch etwas zum Lachen gibt.
Auch an diesem Abend gab es einiges erheiterndes. Jeder der lustig drauf ist und sich für PHP und/oder verwandte Themen aus dem Web-Umfeld interessiert (wir hatten sogar schon Ruby-Entwickler…) ist herzlich zu unseren Treffen eingeladen.

Wie bei den letzten Treffen üblich hatten wir den Abend unter ein Motto oder Gesamtthema gestellt. Das Theme lautete diesmal “NoSQL”.

Mein Kollege Achim Liese eröffnete den Abend mit den theoretischen Grundlagen zu “NoSQL”. Buzzwords wie NoSQL, BigData, MapReduce, … wurden fachlich fundiert erläutert und entmystifiziert.
Anhand von Praxisbeispielen konnte man gut erkennen, warum klassische Datenbanken für manche Einsatzbereiche nicht mehr geeignet sind bzw. versagen.
Aber auch die Schwachpunkte von NoSQL und die Entstehungsgeschichte einiger System wurden genauer beleuchtet und warum der Trend dann doch wieder zu SQL geht.

Nach den Grundlagen folgte dann mein Beitrag des Abend in dem es auch PHP Code zu sehen gab. Anhand von MongoDB konnte ich zeigen, dass auch PHP in der NoSQL-Welt zuhause ist. Insgesamt ist mein Eindruck, dass Programmiersprache immer wenige interessant ist. Komplexe Gesamtlösungen bestehen heute sowieso aus vielen Technologien und einem Sprachenmix.

Meine Slides habe ich in meinem Blog bereitgestellt.

MongoDB und PHP

Spanndend war dann aus meiner Sicht eine Live eingerichtete Replikation mit vier mongod Inststanzen zu beobachten, die von einem PHP Script mit Daten befüllt wurde.
Über die Mongo-Shell haben wir dann nach und nach andere Server des Mini-Clusters zum Master bestimmen lassen. Das PHP Script lief die gesamte Zeit weiter und warte bis ein neuer Master ausgehandelt war.
Auch das “abschießen” eines Masters via Kill Signal konnte unsere Script nicht stoppen.

Meine Code-Beispiele können auf github unter folgender URL abgerufen werden:

https://github.com/cmuench/mongophp-presentation/tree/master/Examples

Beim nächsten Treffen wollen wir uns, seit langem mal wieder, mit Hardware (Raspberry Pi, Arduino) beschäftigen.

Magento Sicherheitspatch und defekter Wysiwyg Dateibrowser

Der von Magento veröffentlichte Sicherheitspatch letzte Woche hat leider eine kleine Nebenwirkung.
Wird das Media-Verzeichnis über einen Symlink eingebunden, was bei größeren Shop-Installationen durchaus üblich ist, dann funktioniert der Dateibrowser im Wysiwyg-Editor nicht mehr.

Das Problem kann einfach über folgenden Befehl nachgestellt werden:

mv media media_shared && ln -s media_shared media

Da wir bei meinem Arbeitgeber netz98 alle Kundeninstallationen entsprechend zeitnah mit dem Patch aufgrund der Sicherheitslücke aktualisiert haben ist dies natürlich schnell aufgefallen.

Das Problem liegt im Verzeichnisvergleich mit und einmal ohne die PHP Funktion realpath.
Wir haben dafür einen kleinen Quickfix erstellt, den ich hier der Öffentlichkeit nicht vorenthalten will:

class Mage_Cms_Helper_Wysiwyg_Images extends Mage_Core_Helper_Abstract
{
   //....

   /**
    * Decode HTML element id
    *
    * @param string $id
    * @return string
    */
    public function convertIdToPath($id)
    {
        /*$path = $this->idDecode($id);
        if (!strstr($path, $this->getStorageRoot())) {
            $path = $this->getStorageRoot() . $path;
        }
        return $path;*/
        /**
        * CORE PATCH BY netz98 new media GmbH
        *
        * Problems with Symlinks after security patch by Magento
        */
        // BEGIN OF PATCH
        $path = $this->idDecode($id);
        if (!strstr($path, realpath($this->getStorageRoot()))) {
            $path = realpath($this->getStorageRoot()) . $path;
        }
        // END OF PATCH
        return $path;
    }

    //....
}

Vorgehen:

  • Original Datei aus core Codepool nach local kopieren.
  • Methode convertIdToPath mit der oben genannten austauschen.

Magento Cache Benchmark mit n98-magerun

Wer tiefer in die Magento Entwicklung einsteigt wird unweigerlich irgendwann an den Punkt kommen bei dem das Caching ins Spiel kommt.

Wer dann eine Ganze Serverlandschaft für einen Magento-Shop aufsetzt muss sich zwangsläufig Gedanken über die Performance und Skalierbarkeit von Cache Backends machen.
In der Magento Community gibt es einige Leute die hierbei bereits Pionierarbeit geleistet haben.
Da fällt mir z.B. Fabrizio ein, der sich schon sehr Lange mit dem Thema Performance auseinander setzt und hierzu bereits einige Vorträge (z.B. auf der Meet Magento) gehalten hat.

Ein andere Pionier in Sachen Caching is Colin Mollenhour. Colin hat einige intressante Magento Module auf github veröffentlicht.
Hierzu gehören (nur ein kleiner Auszug) z.B. Cm_Cache_Backend_Redis und sein neustes Modul Cm_Cache_Backend_Mongo.
Interessant ist auch sein legendärer Vortrag The Fast, the Slow and the Ugly:
A Magento Cache Showdown
, der auf der MagentoImagine 2012 gehalten wurde.
Weiterlesen

Ubuntu 13.10 Update – Magento läuft nicht mehr

Nach der Veröffentlichung der neuen Ubuntu Version (ich nutze Kubuntu) habe ich meinen Arbeitsrechner zuhause auf die neue Version aktualisiert.

Leider liefen meine Magento Shops in der lokalen Umgebung nicht mehr durch.
Dies liegt vorallem ein zwei Dingen…
Weiterlesen

Magento 2 – Release 2.0.0.0-dev46

86_1318685087

Es ist wieder soweit. Magento (Ebay) hat einen neuen Release der Community Edition 2 Version veröffentlicht.
Ein ausgewählter Kreis von Partnern hatte bereits das Vergnügen ein paar Tage vorher in Chicago exklusiv einen Einblick in die
neuen Funktionen zu erlangen und seine Meinung dazu zu äußern.
Ich persönlich finde das sehr unschön. Gerade in Deutschland gibt es viele Entwickler die sicherlich gerne etwas mehr in die Entwicklung
involviert wären. Nicht, dass in der Vergangenheit Varien (Magento) mehr Wert auf den aktiven Austausch mit der Community wert gelegt hätte… Schade, hier hat Ebay mal wieder eine Change vertan.

Aber jetzt zu den Neuerungen…
Weiterlesen

Magento 2 Update – dev45

86_1318685087

Lange ist es her, dass ich mir Magento 2 im Adminbereich angeschaut habe. Das letzte Update liegt schon einige Monate zurück. Die Changelogs habe ich mir zwar schon angeschaut, allerdings hatten ich und andere, einige Problem sich in den Adminbereich einzuloggen. Das Problem war, dass man wohl immer noch mit der uralten PHP 5.3 Version unterwegs sein musste und die Magento 2 Version noch nicht kompatibel mit PHP 5.3 war (obwohl PHP 5.5 schon als Beta-Version vorhanden war).
Da ich auf meinem Entwicklungsrechner schon einige Zeit keine PHP 5.3 mehr laufne habe da diese mit den aktuellen Betriebssystemupdates auch nicht mehr ohne weiteres ausgeliefert wurden habe ich auf den zeitweisen Genuss verzichtet.
Weiterlesen

Magento / Nginx / Vagrant

Vor einiger Zeit hatte ich das Vergnügen auf dem Barcamp in Mainz von Stefan Husch, der selbst seit einigen Jahren in Ruby entwickelt und meinem ehemaligen Kollegen Mattias Gutjahr eine tolle Einführung in das Thema Puppet und Vagrant bekommen zu haben. Seit dem befasse ich mich immer mal wieder mit dem gesamten Thema “DevOps” und versuch Dinge die ich immer wieder machen muss zu automatisieren. Stefan ist mir hier ein gutes Stück vorraus. Er provisioniert seine Server schon seit Jahren mit Puppet und stellt damit z.B. Instanzen seines CMS oder z.B. Redmine per Knopfdruck bereit. Da mich das Thema damals direkt in Verbindung mit Magento interessiert hatte, stellte ich meine ersten Erfahrungen über ein Github Projekt der Öffentlichkeit zur Vergfügung. Das ganze habe ich damals auch im Rahmen einer kleinen Vorstellung bei unserer PHPUG gezeigt. Wie bereits geschrieben, enthielt das Projekt meine ersten Erfahrungen mit Puppet und Vagrant. Es wunder mich aber immer mal wieder jemand das Projekt forked obwohl die Scripte alles andere als optimal sind. Einige Forks (z.B. https://github.com/matthewsplant/magento-vagrant-puppet) haben das Projekt um einiges vorangetrieben. Das freut mich natürlich.

Weiterlesen

n98-magerun Modulsystem

n98-magerun Logo

Seit Version 1.72.0 gibt es die Möglichkeit Kommandos oder Konfigurationen als Modul zu veröffentlichen. Module bieten eine einfache Möglichkeit Konfiguration und Kommandos direkt in einem Projekt oder einem Entwickler-Team zu teilen ohne, dass zuerst eine Konfiguration angepasst werden muss.

Module Struktur

Ein Modul besteht in seiner einfachsten Form aus einem Verzeichnis und einer Konfigurationsdatei mit dem Namen n98-magerun.yaml. Die Konfigurationsdatei muss direkt im Modulverzeichnis liegen. Innerhalb der Konfigurationsdatei könnt ihr bestehende Konfigurationen ändern, oder neue hinzufügen. Also eigentlich nichts neues. Der Vorteil der Module ist aber, dass n98-magerun innerhalb von definierten Modul-Basisverzeichnissen nach den entsprechenden Modulen sucht.

Weiterlesen