Alles rund um Magento!

SSL-Zertifikatsauthentifizierung für Composer

Composer Logo Dieser Artikel erklärt wie man SSL-Zertifikate verwenden kann, um Composer per SSL-Zertifikat zu authentifizieren. Das ist wahrscheinlich die beste Möglichkeit, wenn man einen Server mit privaten Repositories hat und die Berechtigung kontrollieren möchte. Dafür muss man einfach die nächsten Schritte befolgen:

  • Um Zertifikatsanfragen signieren zu können muss ein Root-Zertifikat bei der Zertifizierungsstelle (CA Zertifikat) erstellt werden.
  • Um SSL benutzen zu können muss ein Zertifikat für den Server erstellt werden.
  • Ein Zertifikat für jeden Client erstellen, um jeden Client authentifizieren zu können.
  • Konfigurieren des Apache-Servers, um Zertifikatauthentifizierung verwenden zu können
  • Konfigurieren der Clients, in unserem Fall Composer, um Zertifikatauthentifizierung verwenden zu können.

weiterlesen »

Und noch ein Experte: Christian Hagemeyer als Referent beim E-Commerce-Stammtisch

Es wird langsam spannend, denn unser 15. E-Commerce-Stammtisch ist bereits zum Greifen nahe. Um Euch die Wartezeit zu verkürzen, möchten wir Euch heute Christian Hagemeyer, einen unserer Referenten gern näher vorstellen.

Kurz vorweg: Christian Hagemeyer springt heute kurzfristig für seinen erkrankten Kollegen Markus Bückle ein (vielen Dank dafür), mit welchem wir vorab ein Interview zum Thema Analytics geführt haben. Dieses möchten wir Euch trotz allem natürlich nicht vorenthalten, Ihr findet es am Ende des Beitrags.

Nun zu unserem Speaker:

Ceconda_Christian-Hagemeyer_onlinehristian Hagemeyer ist Head of Client Relations and Sales bei der econda GmbH, dem Spezialisten für Data-driven E-Commerce. Mit seiner langjährigen Branchenerfahrung vereint er Web Analytics- und E-Commerce Know-how. Als versierter Ansprechpartner berät er Interessenten und Bestandskunden aus dem Enterprise Segment und ist für den weiteren Ausbau des Neukundengeschäfts verantwortlich. Seine Expertise bringt er zudem als gefragter Speaker auf Branchenveranstaltungen sowie in Produktschulungen und in der Zusammenarbeit mit econda Kunden ein.

weiterlesen »

Der nächste Experte beim 15. E-Commerce-Stammtisch: Alexander Krull

Kurz vor unserem 15. E-Commerce-Stammtisch möchten wir Euch auch unser Interview mit Alexander Krull, einem weiteren unserer genialen Referenten zum Stammtisch, nicht vorenthalten.

Flagbit: Hallo Herr Krull. Bitte stellen Sie sich unseren Lesern doch kurz vor. Was ist Ihr Tätigkeitsbereich bei Webtrekk und wie sehen Ihre Aufgaben im Bereich Web Analytics aus?

Alexander Krull: Ich bin bei Webtrekk Leiter des deutschsprachigen Vertriebs und seit 2007 im Unternehmen. Als studierter Wirtschaftsingenieur wollte ich ursprünglich stärker im Business-Development und in der Prozessoptimierung tätig sein und nicht im Vertrieb, habe aber schnell erkannt, dass sich das im Onlinemarketing und speziell im Web Analytics nicht wirklich ausschließt.

weiterlesen »

Dürfen wir vorstellen: Nils Veltrup, erster Referent beim 15. E-Commerce Stammtisch

Der nächste Stammtisch am 27. Mai rückt so langsam, aber sicher in greifbare Nähe und daher wollen wir Euch auch unsere Referenten nicht vorenthalten. Den Anfang macht Nils Veltrup von AT Internet.

Flagbit: Hallo Herr Veltrup. Bitte stellen Sie sich doch kurz unseren Lesern vor. Was ist Ihr Tätigkeitsbereich bei AT Internet und wie sehen Ihre Aufgaben zum Thema Web Analytics aus?

Nils Veltrup - AT Internet

Nils Veltrup – AT Internet

Nils Veltrup: Ich bin Kommunikationswirt und E-Marketing Fachwirt BAW und seit drei Jahren Business Development Manager bei AT Internet. Meine Aufgabe ist das Neu- und Bestandskunden Management. Ich unterstütze Kunden wie Media Markt, Redcoon, Deutsche Telekom, Euronics, Netto, SWR oder die UEFA dabei, Lösungen bei allen Herausforderungen im Webanalyse Alltag zu finden.

Flagbit: AT Internet hat eine breite Palette an Tools zum Web Monitoring entwickelt. Was ist der konkrete Nutzen für einen Seitenbetreiber? Wie unterscheiden sich Ihre Lösungen von anderen Lösungen am Markt?

weiterlesen »

Annotations in PHP

So ziemlich jeder ist schon einmal auf die sogenannten Annotations in PHP-Klassen gestoßen: Metadaten zu Methoden oder Properties, welche zur Laufzeit wie von Zauberhand plötzlich Bestandteil von PHP-Code werden können. Besonders bekannt sind die Annotations von phpDocumentor, welche zu einer kleinen Dokumentation des Codes ausgewertet werden können. Die Annotations zu einer Methode sehen bei phpDocumentor zum Beispiel so aus:

class Foo
{
    /**
     * @param mixed $baz
     *
     * @return string
     */
    public function bar($baz)
    {
        return (string) $baz;
    }
}

Nicht nur bei einer Dokumentation ist phpDocumentor hilfreich. Viele IDEs nutzen die in den Annotations hinterlegten Werte der Typen auch um bei der Autovervollständigung die richtigen Methoden oder Properties vorzuschlagen.

weiterlesen »

Locale-Falle mit IntlCalendar::fromDateTime()

Mit PHP 5.5 wurde auch die Extension für die Internationalisierung um neue Klassen erweitert. Eine besonders interessante Erweiterung ist die Klasse IntlCalendar, in der verschiedene neue Funktionen bereitgestellt werden um mit Lokalisierungen von Jahren, Wochen oder Tagen umzugehen zu können. Dabei handelt es sich jedoch nicht um Besonderheiten in der Darstellung von Zeit, sondern mehr um deren Betrachtung. In Deutschland sehen wir den Montag als Anfang der Woche an während es in den USA der Sonntag ist. Ebenso wird dank der Lokalisierung bei der Erstellung eines IntlCalendar-Objekts die Auswahl zwischen gregorianischem und julianischem Kalender abgenommen. Das Ganze funktioniert aber auch nur, wenn die Lokalisierung stimmt.

Zur Erstellung eines Calendar-Objekts bietet die Klasse 2 Factory-Methoden:

Während IntlCalendar::createInstance() den aktuellen Zeitpunkt für Berechnungen zur Verfügung stellt, lässt sich mit IntlCalendar::fromDateTime() aus einem PHP DateTime (alternativ auch ein String) ein IntlCalendar-Objekt erstellen.

// createInstance
$calendar = IntlCalendar::createInstance('Europe/Berlin', 'de_DE');
 
// fromDateTime
$dateTime = new DateTime('25.01.2014', new DateTimeZone('Europe/Berlin'));
$calendar = IntlCalendar::fromDateTime($dateTime);

Da in vielen Projekten DateTime verwendet wird, bietet es sich geradezu an, daraus ein IntlCalendar-Objekt zu erstellen. Wer sich die Factory-Methoden jedoch genau angesehen hat, wird sofort etwas festgestellen: fromDateTime() bietet keine Möglichkeit, eine Locale wie de_DE zu übergeben. Stattdessen wird der Standardwert aus der php.ini verwendet. Sichtbar wird der Fehler dann, wenn zwar die Formatierung über IntlDateFormatter wie die aus dem entsprechenden Land aussieht, jedoch z.B. die Woche mit einem ganz anderen Tag beginnt.

weiterlesen »

Doppelte Rewrites für Models, Blocks und Helper

Magento bietet einen standardisierten Mechanismus an, um Core-Funktionalitäten innerhalb von Kunden-Modulen zu überschreiben, sogenannte Rewrites. Die Definition dessen passiert innerhalb der config.xml innerhalb eines Moduls. Wir haben das hier beispielhaft am Produkt-Modul von Magento durchgeführt.

< ?xml version="1.0"?>
<!-- Pfad ~ app/code/local/Flagbit/MyModule/etc/config.xml -->
<config>
    <modules>
        <flagbit_mymodule>
            <version>1.0.0</version>
        </flagbit_mymodule>
    </modules>
    <global>
        <models>
            <flagbit_mymodule>
                <class>Flagbit_MyModule_Model</class>
            </flagbit_mymodule>
            <catalog>
                <rewrite>
                    <product>Flagbit_MyModule_Model_Product</product>
                </rewrite>
            </catalog>
        </models>
    </global>
</config>

weiterlesen »

Mit uns zur „Zukunft des E-Commerce“: Flagbit bei der Internet World in München

logoAls Goldpartner von Magento und einer der führenden Agenturen und Tongeber der Entwicklerszene sind wir am 25. Und 26. Februar bei der Internet World München, einem der wichtigsten Branchenevents des E-Commerce in Deutschland, ganz vorn mit dabei.

Wir informieren Euch über die neuesten Trends des Onlinehandels, beraten Euch zum Thema Shops und stehen Euch Frage und Antwort für alles, was mit E-Commerce und/oder Magento zu tun hat.

Natürlich könnt uns auch gern besuchen und einfach eine Runde plaudern. Vielleicht seid Ihr auch gerade auf der Suche nach einem neuen spannenden Job?

Dann solltet Ihr erst recht vorbei schauen! Wir suchen immer außergewöhnliche Leute, die Lust darauf haben, bei den Großen mitzuspielen und volle Power zu geben.

Und wo das alles? Auf dem Münchner Messegelände am Stand E230.

Also kommt vorbei, wir freuen uns auf Euch! :)

Track Memory Usage and Runtime of Symfony Commands

If you write lots of Console Commands in your Symfony application you sure want to know more about their memory and time consumption. To collect the necessary data you can make use of the Stopwatch Component:

use Symfony\Component\Stopwatch\Stopwatch;
 
$stopwatch = Stopwatch();
$stopwatch->start('my event');
// do something important
$stopwatchEvent = $stopwatch->stop('my event');
 
echo $stopwatchEvent->getDuration();
echo $stopwatchEvent->getMemory();

First we need to define a service for our Stopwatch in our services.yml to have it available where we want it:

services:
    flagbit_core.stopwatch:
        class: Symfony\Component\Stopwatch\Stopwatch

You could implement the Stopwatch in each and every command by hand but this is tiresome and error-prone. So we make use of the Console Events and attach to them:

    flagbit_core.console_stopwatch.command:
        class: Flagbit\CoreBundle\EventListener\ConsoleStopwatchListener
        arguments: [ "@flagbit_core.stopwatch" ]
        tags:
            - { name: kernel.event_listener, event: console.command }
    flagbit_core.console_stopwatch.terminate:
        class: Flagbit\CoreBundle\EventListener\ConsoleStopwatchListener
        arguments: [ "@flagbit_core.stopwatch" ]
        tags:
            - { name: kernel.event_listener, event: console.terminate }

Ok, let’s walk through the ConsoleStopwatchListener. First we start with the Constructor to inject the Stopwatch into our Service:

<?php
 
namespace Quantum\CoreBundle\EventListener;
 
use Symfony\Component\Console\Event\ConsoleCommandEvent;
use Symfony\Component\Console\Event\ConsoleTerminateEvent;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Stopwatch\Stopwatch;
 
class ConsoleStopwatchListener
{
    /**
     * @var Stopwatch
     */
    private $stopwatch;
 
    /**
     * @param Stopwatch $stopwatch
     */
    public function __construct(Stopwatch $stopwatch)
    {
        $this->stopwatch = $stopwatch;
    }

The console.command Event is dispatched just before command execution. So it is the perfect place to start our Stopwatch:

    /**
     * @param ConsoleCommandEvent $event
     */
    public function onConsoleCommand(ConsoleCommandEvent $event)
    {
        $this->stopwatch->start($event->getCommand()->getName());
    }

The second Event we attached to is console.terminate which is triggered after the command has been executed. So we attach our stats to the Output there:

    /**
     * @param ConsoleTerminateEvent $event
     */
    public function onConsoleTerminate(ConsoleTerminateEvent $event)
    {
        $stopwatchEvent = $this->stopwatch->stop($event->getCommand()->getName());
 
        $output = $event->getOutput();
        if (OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) {
            $output->writeln(
                '<comment>' . $this->formatDuration($stopwatchEvent->getDuration()) . ' / '
                . $this->formatMemory($stopwatchEvent->getMemory()) . '</comment>'
            );
        }
    }
 
    /**
     * @param int $bytes Memory in bytes
     * @return string
     */
    private function formatMemory($bytes)
    {
        return round($bytes / 1000 / 1000, 2) . ' MB';
    }
 
    /**
     * @param int $microseconds Time in microseconds
     * @return string
     */
    private function formatDuration($microseconds)
    {
        return $microseconds / 1000 . ' s';
    }
}

You might also have noticed the Verbosity check which causes our stats only to be printed if the command is run with -v. Symfony >= 2.4 allows to do this a little bit cleaner with $output->isVerbose().

Erste eCommerce-Konferenz an der HS Furtwangen – So war‘s

Wie bereits in den vergangenen Wochen angekündigt, war Flagbit am vergangenen Donnerstag zu Gast bei der ersten eCommerce-Konferenz der Hochschule Furtwangen.

Intention der Veranstaltung war es nicht nur, Studenten näher an das Thema heranzuführen, sondern auch den Austausch zwischen den geladenen Unternehmen aus dem Bereich Online-Handel zu fördern.

eCommerce Konferenz FurtwangenVerschiedene Vorträge führten ab 9 Uhr durch den Tag. Gleich zu Beginn wurde das Magento-Labor vorgestellt, welches derzeit für die Studierenden, die sich in der Vorlesung eShop Design mit dieser Software beschäftigen, realisiert wird. Einige von ihnen präsentierten beispielsweise die Funktionsweise der Konfiguration des Produktkatalogs oder der Verkaufseinstellungen.

Im Anschluss gab es einige interessante Vorträge zum Thema Multi-Channel-Vertrieb und dem Email-Marketing Tool inxmail. Etwas später war dann der Vortrag von Flagbit an der Reihe. Frisch gestärkt und voller Tatendrang nach dem Mittagessen hat Michael Türk den interessierten Anwesenden das Thema Responsive Design näher gebracht.

Auch der Shop und die Erfolgsgeschichte des Unternehmens Mevaco und der Einblick eines Rechtsexperten zum Thema Handhabe bei negativen Kundenbewertungen und den Grenzen beim Einsatz von Google AdWords sowie deren mögliche rechtliche Folgen begeisterten das Publikum.

Fest steht: Die Konferenz war ein großer Erfolg und soll zukünftig in regelmäßigen Abständen stattfinden. Die Nachfrage der Veranstalter an einer erneuten Zusammenarbeit mit Flagbit deutet darauf hin, dass auch wir beim nächsten Mal wieder dabei sind.

 

Page optimized by WP Minify WordPress Plugin