Alles rund um Magento!

Archiv zur KategorieEntwicklung

Magento Hackathon San Francisco

Der erste offizielle Programmpunkt auf unserer USA-Tour war der von Fabrizio Branca und Marc Infield organisierte Magento Hackathon in San Francisco. Gleich zu Beginn vielen Dank an die beiden sowie den weiteren Sponsoren für eine wirklich tolle Organisation. W-Lan war ausreichend für alle vorhanden, die kulinarische Versorgung war hervorragend und es fand sich auch immer genug Red Bull für alle im Kühlschrank. Am Hungertuch musste da wirklich niemand leiden und beide waren bestens vorbereitet und bei allen Fragen zur Stelle. Großes Lob hierfür!

magento_hackathon

Los ging es am Freitag Abend mit dem üblichen “Socializing“. Dies startete im Büro von Infield Design. Damit die Konversationen auch gleich locker von der Zunge gingen, servierte uns Marc frischgezapftes Bier von der Brauerei gegenüber, das für amerikanische Verhältnisse sogar sehr gut war. ;-) Nachdem sich die Gruppe schon gut kennen lernen konnte, ging es in das mexikanische Restaurant “Dos Pinas”, wo neben Burritos vor allem eine Menge Corona auf uns wartete.

Der eigentliche Hauptteil startete am Samstag dann wieder im Büro von Infield Design. Auch hier stand zunächst einmal die Hungerbeseitigung im Mittelpunkt, welche durch ein umfangreiches “American Breakfast” bewerkstelligt wurde. Danach ging es in die Brainstorming-Phase, die man per Hangout und Youtube verfolgen konnte, was hinsichtlich der Facebook und Twitter Kommentare auch in Deutschland fleißig angenommen wurde. Gerade die amerikanischen Kollegen hatten mehr Business- denn Coding-Ideen, was dann auch bei der Präsentation der Ergebnisse noch einmal deutlich sichtbar war.

Danach starteten die Entwickler das Coding der diversesten Projekte. Angegangen wurde von unserer Seite bspw. in Person von Michael die Extension DynamicCategories, die das Anlegen von Kategorien durch Attribute ermöglicht. Dabei entdeckte er unter anderem ein paar Fehler in der Magento Demo, die per Skript ausgeglichen wurden. Marco und Nicolai widmeten sich der Weiterentwicklung des bereits bestehenden Hackathon Viewers. So können zum einen nun Logs zusätzlich live im Backend mitverfolgt und zum anderen Fehler Reports detailliert durch Eingabe der Fehler-Nr eingesehen werden.
Damian versuchte sich daran, das Test Automation Framework von Magento in der Amazon Cloud mittels Chef zu verteilen. Der Abschluss dieser Idee muss jedoch warten, bis Amazon die Chef Version updatet, da dies derzeit leider noch nicht kompatibel ist.

Andere Projekte beschäftigten sich bspw. mit HTML zu PDF Rendering oder einer Erweiterung von PHPStorm. Nebenbei entstand auch ein neues Startup “Go Free Shipping”, das sich nicht weniger auf die Fahnen geschrieben hat, das “Amazon Prime für Magento Shops” zu werden. Auch wenn wir noch etwas skeptisch sind, wünschen wir denn Kollegen viel Erfolg!

Impressionen des Hackathons finden sich auf facebook.de/flagbit sowie http://www.fabrizio-branca.de/events/magehacksf.html.

Responsive Design – Testen leicht gemacht!

Jeder, der schon einmal ein Responsive Design umgesetzt hat, kennt das sicherlich. Ständig vergrößert/verkleinert man am Browserfenster, um zu schauen, ob das Layout in den unterschiedlichen Auflösungen passt.

Wird die Webdeveloper Toolbar benutzt, können über die Resize-Funktion unterschiedliche Formate angelegt und dann per Klick oder Shortcut benutzt werden, um das Browserfenster auf die entsprechende Größe zu skalieren. Das ist ja schon ganz nett. Im Vorfeld müssen natürlich die Formate der gewünschten Geräte ermittelt und angelegt werden.

Bei der Entwicklung eines aktuellen Responsive Magento-Projekts, bin ich über ein sehr schickes, schnelles und effizientes Tool gestoßen. Nämlich den Viewport Resizer von Malte Wassermann  (http://lab.maltewassermann.com/viewport-resizer/).

website

Es handelt sich hierbei um ein JavaScript Bookmarklet, welches am oberen Fensterrand eine Menüleiste mit den unterschiedlichsten Geräten einblendet. Einfach einmal auf der Webseite den Button „Click or Bookmark“ anklicken und schauen was passiert.

Damit ich die Leiste für meine Projektseiten einsetzen kann, speichere ich zunächst die Webseite ganz normal in meinen Lesezeichen. Im zweiten Schritt kopiere ich mir die Adresse des Links (Rechtsklick auf den Button) und ersetze die URL in meinem Lesezeichen mit dem kopierten Code. Wird nun das Lesezeichen aufgerufen, blendet sich die Leiste ein.

leiste

Mittels eines Klicks auf die Geräte-Icons, ändert sich der Viewport des Browsers und ich kann meine Webseite bequem testen. Durch einen erneuten Klick auf dasselbe Gerät, ändert sich die Perspektive von Portrait zu Landscape. Sehr nett!!!

Und damit nicht genug, kann ich mir diese Leiste nach Belieben selber mit Gerätetypen bestücken. Dazu scrollen wir auf der Webseite ein Stück nach unten zur Sektion „Configuration – Build your own Bookmarklet here“. Hier gibt es die Rubriken Mobile, Tablet und Other. Für meine individuelle Leiste habe ich mich für iPhone/iPhone 5, iPad und Widescreen entschieden.

buildyourown

Nachdem ihr euch eure Leiste zusammengeklickt habt, einfach wieder die Adresse des Links kopieren und speichern (siehe oben). Ich benutze folgenden Code:

javascript:void((function(d){if(self!=top||d.getElementById('toolbar')&&d.getElementById('toolbar').getAttribute('data-resizer'))return false;d.write('<!DOCTYPE HTML><html style="opacity:0;"><head><meta charset="utf-8"/></head><body><a data-viewport="320x480" data-icon="mobile">Apple iPhone, iPod Touch</a><a data-viewport="320x568" data-icon="mobile" data-version="5">Apple iPhone 5</a><a data-viewport="768x1024" data-icon="tablet">Apple iPad (2-3rd, mini)</a><a data-viewport="1280x800" data-icon="notebook">Widescreen</a><script src="http://lab.maltewassermann.com/viewport-resizer/resizer.min.js"></script></body></html>')})(document));

Hier noch ein Beispiel von aktuellen Projekt in den Auflösungen iPhone5, iPad und Widescreen:

estars

 

Vielen Dank an Malte Wassermann für dieses tolle Tool und euch viel Spaß beim Testen.

PS: Eine kleine Anmerkung noch. Da es sich hier um JavaScript-Code handelt, kann es je nach Art des Projekt und dessen Struktur u. U. vorkommen, dass die Leiste nicht erscheint.

Übersetzungen im DeveloperMode

Ich habe mich heute gewundert, warum die Übersetzungen auf unseren Entwicklerinstanzen eine andere Übersetzung verwenden als die Stage-Umgebungen. Die Lösung liegt im Magento Developer Modus. Dieser schaltet ein Feature in den Übersetzungen aus. Im Normalfall werden alle Übersetzungen ohne Modulnamen geladen.


//Mage_Core_Model_Translate Zeile 241 - 246 Methode _addData(...)
/**
* Not allow use translation not related to module
*/
if (Mage::getIsDeveloperMode()) {
unset($this->_data[$key]);
}

Da unsere Entwicklermaschinen alle im DeveloperMode laufen, werden also nur die Übersetzungen aus den Modulen direkt verwendet. Auch hier gibt es wieder eine Ausnahme. Die Übersetzungen im Theme werden ohne die Modulnamen geladen. Dadurch gelingt eine Übersetzungen garantiert.

Flagbit Bielefeld beim GermanSetup Treffen

Das GermanSetup treffen in Köln

GermanSetup treffen in Köln

Am gestrigen Donnerstag fand in Köln im Beisein unserer beiden Kollegen Damian und Karl aus dem Flagbit Büro in Bielefeld ein Treffen zum Thema GermanSetup statt. Die von den beiden mitentwickelte Magento Extension deckt die rechtlichen Aspekte für deutsche Onlineshops ab und ist gleichzeitig eine Alternative zur Extension Market Ready Germany. Dabei konzentriert sich GermanSetup ausschließlich auf diesen Punkt und hat zusätzlich keinerlei Abhängigkeit zu anderen Modulen. Weiter wird die Extension nur von der Community entwickelt, was auch der Grund für das Zusammentreffen war.

Um das Modul voranzubringen, trafen sich verschiedene Agenturen und freie Entwickler. Zudem holte man sich Unterstützung für das Thema Rechtssicherheit von Trusted Shops. Ziel ist es das Modul German Setup in naher Zukunft vorzertifizieren zu lassen. Um den Shopbetreibern noch mehr Sicherheit bei der Nutzung der Extension zu geben.

Unter anderem wurde sich der Fehlerbehebung, E-Mail-Templates und der PDF-Engine angenommen. Produkt dieser Session war dann die Version 1.1.4, die auch ab sofort auf Magento-Connect zur Verfügung steht. Weiterhin sind der PDF-Engine zusätzliche Features hinzugefügt worden, um möglichst einfach die Engines auszutauschen. Auf Github würde man sich über Anregungen und Wünsche freuen.

Zusätzlich geht ein herzlicher Dank an Andreas von Studnitz und an das wein-konzept.de für die Organisation und die tollen Räumlichkeiten.

Magento Stammtisch Karlsruhe gestartet

Gestern fand der erste Magento Stammtisch Karlsruhe in den Räumlichkeiten von Flagbit statt. Als Gäste konnten wir sowohl (künftige?) Magento-Shopbetreiber, interessierte Freiberufler als auch Entwickler aus anderen Themengebieten begrüßen, die sich über die Thematik Shop-Systeme und natürlich Magento im Speziellen informieren wollten. Dabei kamen auch sehr konkrete Fragestellungen wie bspw. die Kombination von Magento und SAP-Software auf. In diesem Zusammenhang möchten wir noch einmal darauf verweisen, solche Interessen uns am besten bereits im Vorfeld mitzuteilen, gerne informieren wir uns dann explizit über diese Themen und können Fragen konkreter beantworten oder gar einen kleinen Vortrag darüber halten. Gerne können auch Gastvorträge angemeldet werden.

Beim ersten Event stand jedenfalls der Bericht von Michael und Patrick von der imagine eCommerce aus Las Vegas im Mittelpunkt. Die beiden präsentierten uns ihre persönlichen Eindrücke zur Stadt der Lichter sowie dem üblichen Magento-Event-Spektakel, ließen aber vor allem sowohl die Keynotes als auch die weiteren Vorträge der Konferenz Revue passieren. Themen waren dabei unter anderem die Entwicklung von Magento 2, der Integration der Open Source-Software in die eBay-Familie, X.Commerce allgemein oder auch Dauerbrenner wie Hosting, Performance und Sicherheit. Nebenbei wurde auf der Konferenz wie immer mal gut und manchmal weniger gut die Werbetrommel für die Enterprise Edition fleißig gerührt. Vor allem aber bei den eher E-Commerce orientierten Themen konnten große Unterschiede zwischen dem Vorgehen in dem amerikanischen Markt im Vergleich zu dem in Deutschland festgestellt werden. Hauptgrund ist dabei die laschere Datenschutzsituation, die in den USA hierzulande undenkbare Vorgehensweisen bspw. im Bereich Social Media oder Re-Targeting ermöglichen. Diese Methoden wurden anschließend im Stammtisch durchaus kritisch betrachtet.

In der darauf folgenden Diskussion drehte sich aber zunächst viel um die Möglichkeiten und Grenzen von Magento 2, was vor allem die Entwickler interessierte, später kamem bei Pizza, Bier und Kicker jedoch noch viele weitere Themen rund um den Bereich E-Commerce auf.

Prinzipiell können wir auf einen gelungenen ersten Magento Stammtisch Karlsruhe zurückblicken, wobei wir jedoch durchaus noch kleinere Anlaufschwierigkeiten einräumen müssen. Auch würde es uns freuen, beim nächsten Stammtisch noch mehr Interessierte an Magento oder auch E-Commerce im Allgemeinen begrüßen zu dürfen. Hierzu noch einmal die Erinnerung, dass Themenwünsche gerne an Flagbit herangetragen werden können und von uns auch sehre gerne aufgenommen werden. ;-)

Zum Abschluss möchten wir uns bei unserem Kooperationspartner CyberForum bedanken und noch ein paar Impressionen des gestrigen Abends zur Verfügung stellen.

Warum Vagrant eine neue VM erstellt anstatt die vorhandene aus dem Ruhezustand zu holen

Wer mit Vagrant arbeitet kann sich an den Vorteilen einer Virtual Machine erfreuen. Einmal gestartet baut sich je nach Konfiguration das System auf, installiert über die Provisioners die notwendige Software die man zusätzlich braucht und nach einer vom Umfang der Software abhängigen Wartezeit hat man ein fertiges Entwicklungssystem. Hiermit ist es für jeden sehr einfach sich ein System aufzubauen welches dem auf der Productionseite ähnlich oder sogar gleich aufgebaut ist. Und wenn die Virtual Machine nicht mehr verwendet wird, kann sie in den Ruhezustand versetzt werden um sie am nächsten Tag ohne lange zu warten wieder zu starten.

Die Überraschung war jedoch groß als ich heute morgen mein System aus dem Ruhezustand zurückholen wollte aber Vagrant eher der Meinung war das System komplett neu aufsetzen zu müssen. Ein kurzer Blick in meine VirtualBox verriet mir allerdings das mein eigentliches System sich noch immer im Suspended Mode befand diese jedoch beim Starten nicht mehr verwendete. Wieso wurde nicht mehr die vorhandene Virtual Machine verwendet?

Welche der vorhandenen VMs von Vagrant verwendet wird legt die Datei .vagrant fest welche sich im selben Verzeichnis wie die Vagrantfile-Datei befindet. In einem Texteditor geöffnet offenbart sich dem Betrachter ein recht schlichtes Json Format:

{"active":{"default":"bbaefe94-1c67-414d-80e7-5bc68d38882f"}}

Der Wert des default-Keys gibt an welche der vorhandenen VMs verwendet werden soll, jedoch kann man aus dem Wert nicht erkennen welche der hinterlegten VMs beim Start angesprochen werden. Sollte aus irgendeinem Grund die Datei korrumpiert oder vielleicht gelöscht werden, so wird beim nächsten vagrant up eine neue VM aufgesetzt auch wenn sich auf eurer Festplatte immer noch die ursprüngliche VM befindet. Um an den Bezeichner eurer gewünschten VM zu kommen bietet VirtualBox hierfür den Konsolenbefehl VBoxManage an. Mit dem folgenden Aufruf listet ihr nicht nur alle vorhandenen Virtual Machines auf sondern auch ihre dazugehörenden Bezeichner:

C:\Program Files\Oracle\VirtualBox\VBoxManage.exe list vms

Legt nun eine .vagrant Datei in eurem Projektverzeichnis an in dem sich auch das dazugehörende Vagrantfile befindet und fügt den Json-Code mit dem ermittelten Bezeichner eurer VM dazu. Beim nächsten Start über Vagrant wird nun die VM verwendet deren Bezeichner in die .vagrant eingetragen wurde.

Diese Vorgehensweise habe ich mit der Vagrant-Version 1.0.2 durchgeführt. Ob dieser Lösungsweg auch noch bei zukünftigen Versionen funktioniert bleibt abzuwarten.

IPC 2011 – Tag 3

Heute morgen gab es keine Keynote zu verpassen, daher starteten wir direkt mit der Aufforderung von Kore Nordmann und Tobias Schlitt (Qafoo) “Make your project SOLID!”. Die beiden stellten die von Martin C. Fowler (Uncle Bob) geprägten SOLID-Prinzipien vor. Wer Clean Code gelesen hat und sich bereits mit Clean Code Development beschäftigt hat, dürfte wenig Neues erfahren haben. Für alle anderen eine gute Zusammenfassung und Einführung in das Thema.

weiterlesen »

IPC 2011 – Tag 2

Da wir gestern noch bis spät geschäftliche Besprechungen hatten, haben wir die Keynote heute morgen leider verpasst. Wir sind daher pünktlich für den zweiten Kaffee des Tages vor dem zweiten Slot in der Rheingoldhalle angekommen :)

Den ersten Vortrag des Tages bildete somit “Zend Framework 2: State of the Art”. Enrico Zimuel (Zend) gab einen groben Überblick zu den Veränderungen und Neuerungen in ZF2 und zur aktuellen Zeitplanung: eine erste Beta soll noch im Oktober veröffentlicht werden. Das Autoloading in ZF2 wurde grundlegend erweitert. Zwar unterstützt der Autoloader nach wie vor die alte include-path-basierte Methode, zusätzlich kann man Namespaces mit Verzeichnissen verknüpfen woraufhin der Loader Klassen dieser Namespaces direkt aus dem spezifizierten Verzeichnis lädt. Das bringt laut den Zend-Benchmarks mit Opcode-Cache bis zu 40% Performancegewinn. Bis zu 60% schneller ist der Loader mit einer statischen Classmap. Dabei wird das gleiche Prinzip wie bei Arne Blankerts Autoload verwendet. Dependency Injection wird über Container, Interfaces und Setter ermöglicht, die auch über Annotationen konfigurierbar sind. Beispiele dazu finden sich auf Ralph Schindlers Git-Repository. Ebenfalls neu sein wird der EventManager sowie das eventgetriebene MVC-Framework, dass sich auch modular erweitern lassen soll.

weiterlesen »

IPC 2011 – Tag 1

Juhu, es ist wieder so weit: Konferenz! :) Nach viel zu frühem Aufstehen (7 Uhr) ging es heute morgen auf nach Mainz zur IPC 2011. Dort konnte ich beweisen, dass die Android-Navigation den nächsten McDonalds besser findet als angebissenes Obst. Zur Rheingoldhalle konten beide Navigationssysteme gleich gut navigieren.

Auf der Konferenz angekommen gab Johannes Schlüter (Oracle) zunächst ein Update bezüglich PHP 5.4. Dabei wurde unter anderem auf Traits, die neue Array-Syntax und den internen PHP-Dev-Webserver eingegangen. Verbunden war das Ganze mit der eindringlichen Aufforderung die Nightly-Builds zu testen um solche Bugs wie in PHP 5.3.7 und andere zu vermeiden. PHP würde zwar von einer Test-Suite getestet, doch “unbeabsichtigte” (sprich: nicht im Sinne der PHP-Entwickler) Verwendungen von Funktionen würden von dieser Test-Suite eben nicht erfasst, was auch zum aktuellen Problem mit der is_a()-Funktion führe.

weiterlesen »

Hackevening Javascript

Am 29. August hat das Trio von Developers Peak ihre 10 Städte Tournee in Karlsruhe fortgesetzt. An besagtem Abend wurden alle Interessierten zu einem Event mit dem Schwerpunkt JavaScript: Animations: Canvas vs DOM vs CSS3 vs WebGL eingeladen. Im Hotel Residenz in der Nähe des Karlsruher Hauptbahnhofs fanden sich ca. 25 begeisterte Teilnehmer in angenehmer Atmosphäre. Die Vorträge wurden ausnahmslos in Englisch gehalten.

David leitete das Event mit generellen Themen rund um Javascript ein und sorgte dafür, dass für das spätere Pair-Programming keine Basis-Fragen offen blieben. Der Vortrag befasste sich hauptsächlich mit der Interpretation von Javascript Code im Browser und hat sicherlich diejenigen am meisten berührt, die JS Frameworks wie Prototype und JQuery ausgiebig nutzen, aber nicht genau wissen wie der Funktionsumfang implementiert wurde.

David ist massiv auf die Referenzierung von Variablen und Funktionen eingegangen und den damit verbundenen Flaschenhälsen. Ebenso wurden die mächtigen Closures näher gebracht und wie man damit performante Werkzeuge erstellen kann. Zudem wurde erklärt, wie die Bind-Funktionalität in Prototype implementiert wurde (Bind ermöglicht es an jede definierte Funktion einen beliebigen Context zu binden).

Marek hat uns dann im Anschluss in sein Ressort der Animationen geleitet. Es gab einige Showcases und einige generelle Themen, die im Vorfeld diskutiert wurden. Step by Step wurden wir durch die einzelnen Ansätze der Animation mit Javascript geführt, angefangen mit CSS3. Wir haben dann in Pair-Programming Sessions eine Animation in CSS3 mit Fallback auf DOM-Manipulation erstellt. Weiter ging es mit dem Lösungsansatz über das HTML 5 Canvas-Objekt, auch hier haben wir aus einer angedachten Vorlage von Marek gemeinsam eine laufende Animation erstellt. Als letzten Lösungsansatz haben wir uns WebGL gewidmet.

Javascript Animation Mortal Combat

Charakter aus dem Javascript Mortalkombat Clone

Marek und David sind auf die Vorzüge und Nachteile aller Möglichkeiten eingegangen und zum Abschluss gab es noch einige Showcases zu ein paar eigenen Projekten. Zum einen stellte Marek einen vollständig in Javascript geschriebenen Mortalkombat Clone vor. Das Spiel war Multiclient fähig und hat sogar Fights im Mutliplayer ermöglicht. Die serverseitige Implementierung wurde mit einem Aufsatz mit Node JS erstellt. David stellte uns ebenfalls ein Spiel vor, welches 2 Panzer gegeneinander hat antreten lassen. Die herausstechendste Besonderheit daran war, dass David seinen Panzer mit seinem Mobiltelefon ebenfalls über Node JS steuern konnte.

Den letzten Vortrag hat Piotr übernommen und uns eingeladen zu den kommenden Workshops von David und Marek. Piotr hat auch erzählt, welchen Themen sie sich in Zukunft bevorzugt widmen möchten. Im Anschluss an den Event gab es einen regen Interessensaustausch aller Anwesenden, einschliesslich der Gastgeber.

Der Event hat bei mir persönlich definitiv Appetit auf mehr gemacht, besonders die kommenden Workshops von David de Rosier haben mich angesprochen. In den Workshops geht es zum Teil um Objekt Orientierte Programmierung (Mastering Javascript Part 2: OOP und Patterns) und um fortgeschrittene Techniken (Mastering Javascript Part 3: Hardcore JS), welche einem einen sehr tiefen Einblick in die Sprache Javascript gewähren sollten.

Wer sich gerne direkt Code anschauen möchte, kann die Github Accounts von David und Marek besuchen.

 

« Vorherige Einträge

Page optimized by WP Minify WordPress Plugin