Archiv des Monats Juli, 2011

Cyberforum After Work Summer Party

Gestern besuchte das Flagbit-Team die After Work Summer Party des Cyberforums. Schauplatz der Veranstaltung war mit wunderschöner Atmosphäre die Cantina Majolika in Karlsruhe. Für alle Mitarbeiter gab es ein leckeres und reichhaltiges Buffett (auch wenn die Gambas-Spieße immer viel zu schnell wieder weg waren) sowie die gute Getränkeauswahl der ansässigen Cantina. Das Wetter spielte auch mit und so konnte das Flagbit-Team inkl. der Begleitungen einen gemütlichen Sommerabend verbringen, der für alle Beteiligten reichlich Entspannung vom Arbeitsalltag bot.

Studienplatz an der Dualen Hochschule Karlsruhe zu vergeben

Da uns bisheriger Favorit aus persönlichen Gründen leider verhindert ist, haben wir kurzfristig noch einen Platz für ein Studium an der Dualen Hochschule Baden-Württemberg in Karlsruhe im Studiengang Wirtschaftsinformatik zu vergeben. Das Studium ist aufgeteilt in Praxis- oder Theoriephasen, die im Wechsel im Betrieb oder an der Dualen Hochschule stattfinden.

Das Studium der Wirtschaftsinformatik vermittelt Kenntnisse aus dem Bereich der Angewandten Informatik, wie bspw. Objektorientierte Programmierung oder Web-Programmierung, enthält aber auch einige Veranstaltungen, die speziell die Methoden der Wirtschaftsinformatik vermitteln (Projektmanagement, Architektur von E-Business-Systemen, etc.). Zudem werden Inhalte aus den Bereichen Allgemeine Betriebswirtschaftslehre, Volkswirtschaftslehre und Recht im Rahmen des Studiums gelehrt. Im Weiteren ergänzen Schlüsselqualifikationen wie Fremdsprachen oder Rhetorik den Unterricht. Detailliertere Informationen finden sich auf den Seiten der Dualen Hochschule.

Das Einsatzgebiet bei Flagbit liegt in den Bereichen E-Commerce und Online-Marketing und kann je nach Interessensgebiet eher auf die Schwerpunkte Informatik oder Marketing ausgerichtet werden. Mitgebracht werden sollte auf jeden Fall eine Affinität zum Web, insbesondere im Bereich Social Media und E-Commerce sowie das Interesse, sich in diesen Bereichen stets auf dem Laufenden zu halten. Des Weiteren wären grundlegende Programmiererfahrung und sichere Deutschkenntnisse in Wort und Schrift von Vorteil.
Bei Flagbit erwartet dich ein junges, dynamisches und freundliches Team. Ein professionelles und gut ausgestattetes Arbeitsumfeld bekommst du gestellt, ebenso wie du von der Getränke- und Kaffee-Flatrate profitierst.
Wir legen Wert auf eine gute und fundierte Ausbildung und unterstützen unsere Auszubildenden auch bei ihren schulischen Aufgaben. Die Kooperation mit der Dualen Hochschule im Studiengang Wirtschaftsinformatik soll dieses Engagement nun weiter verstärken.

Das Studium der Dualen Hochschule Baden-Württemberg ist dank seines hohen Praxisanteils, der guten Qualität der Lehre und nicht zuletzt der Möglichkeit, bereits während seines Studiums über ein geregeltes Gehalt zu verfügen, sowohl bei Studierenden als auch in der Wirtschaft sehr gut angesehen und bietet alle Möglichkeiten für den Start in ein erfolgreiches Berufsleben.

Hier noch mal die wichtigsten Daten und Fakten im Überblick:

  • Studium an der Dualen Hochschule Karlsruhe
  • Studienbeginn 1.10.2011
  • Dauer: 3 Jahre
  • Studiengang Wirtschaftsinformatik mit dem angestrebten Abschluss Bachelor of Science (B.Sc.)
  • Schwerpunkt: Web-Entwicklung
  • Zulassungsvoraussetzung Hochschule: Hochschulzugangsberechtigung (Besitz der allgemeinen Hochschulreife; Besitz einer den Studienbereich entsprechenden fachgebundenen Hochschulreife )
  • Grundlegende Kenntnisse in folgenden Bereichen von Vorteil:
    • Web-Affinität
    • Online-Marketing
    • Grundlegende Programmiererfahrung
    • sichere Deutschkenntnisse in Wort und Schrift
    • HTML/PHP
    • hohe Einsatzbereitschaft

Wenn du Interesse an dieser Möglichkeit hast, dann kontaktiere uns einfach unter jobs@flagbit.de. Wir freuen uns auf deine aussagekräftige Bewerbung.

 

Mehrere Datensätze gleichzeitig bearbeiten – mit der Zwischenablage

TYPO3 Zwischenablage aktivieren

Die Zwischenablage kann unterhalb der Seiteninhalte aktiviert werden

TYPO3 bietet für Redakteure eine einfache und komfortable Lösung, mehrere Datensätze gleichzeitig zu kopieren, verschieben oder zu löschen, sprich in irgendeiner Form zu editieren. Hierzu bietet das CMS als Möglichkeit, die Zwischenablage zu nutzen. Diese muss dafür zunächst natürlich erst einmal aktiviert werden. Dazu muss einfach in der Listenansicht der Haken bei „Zwischenablage anzeigen“ unterhalb der Seitenelemente gesetzt werden.

Danach steht ein Feld mit insgesamt vier Ablagen zur Verfügung. Standardmäßig ist die normale Zwischenablage ausgewählt. In dieser sind alle Objekte aufgelistet, die zuvor kopiert oder ausgeschnitten wurden.

weiterlesen »

QTTabBar: Mehr Funktionen für den Windows Explorer

Wenn man sieht wie sich die Dateimanager anderer Systeme gegenüber dem Windows Explorer entwickelt haben, so frage ich mich doch immer wieder warum es von Microsoft versäumt wurde seinen eigenen Dateimanager um so etwas einfaches wie Reiter zu erweitern. Um so besser ist das es immer noch genug Do-It-Yourself Programmierer gibt, die sich den fehlenden Funktionalitäten annehmen wie bei dem Projekt QTTabBar. Von den vielen Möglichkeiten, die diese Erweiterung bietet, möchte ich aber nicht die Reiter hervorheben sondern eine Funktion, die vielleicht der eine oder andere Entwickler nützlich findet: Das Ausführen eigener Programme bzw. Scripte.

Was an und für sich nicht spektakulär klingt ist in der Bedienung eine schöne Vereinfachung für die tägliche Arbeit mit dem Windows Explorer. Direkt über den Application-Button von QTTabBar lassen sich so die eigenen Scripte im aktuellen Verzeichnis ausführen und per Markierung die notwendigen Dateien und Verzeichnisse als Parameter übergeben. Ich habe diese Funktionalität bei der Ausführung von selbst erstellten Codesniffer-Regeln eingesetzt um die doch immer noch sehr unbequeme Windows-Eingabeaufforderung zu umgehen.

QTTabBar aktivieren

QTTabBar aktivieren

Die zur Zeit aktuellste Version, 1.5.0.0 Beta, ist die einzige Version die unter Windows 7 funktioniert. Die Beta-Version läuft auf meinem Rechner stabil und zeigte keinerlei Probleme in der Performance. Nachdem ich die Installation durchgeführt hatte, musste ich mich unter Windows neu anmelden, damit die neuen Funktionen in den Windows Explorer geladen werden. Sollten danach noch immer nicht die Reiter oder Buttons von QTTabBar sichtbar sein, muss man noch unter Ansicht -> Symbolleisten beides aktivieren.

Einrichtung von eigenen Scripts oder Programmen

Einrichtung eines Programmaufrufs in QTTabBar

Einrichtung eines Programmaufrufs in QTTabBar

Um einen eigenen Programmaufruf in den Applicationbereich zu speichern ruft man per Rechtsklick auf die QTTabBar-Leiste unter Options die Einstellungen auf und wählt dort den Reiter Applications. Mit einem Klick auf den Plus-Button erstellt man einen neuen Eintrag und gibt diesem einen Namen. Im unteren Teil befinden sich die Felder für die Pfadangaben zum aufzurufenden Programm, dessen zu verwendeten Parametern und das Arbeitsverzeichnis. In meinem Beispiel kann man in der Abbildung meinen Codesniffer-Aufruf erkennen. Bei den Parametern bietet QTTabBar Platzhalter an, die man aus einer vorgegeben Auswahl selektieren und in die Parameter einfügen kann. Mit %f% wird z.B. eine markierte Datei zusammen mit dem dazugehörigen Pfad eingefügt. Bei Bedarf gibt es noch die Möglichkeit dem Programmaufruf eine Tastenkombination zuzuordnen. In meinem Beispiel brauche ich im Windows Explorer nur eine PHP Datei markieren und mit der Tastenkombination Ctrl+ALT+E prüfe ich diese mit Codesniffer auf ihren Inhalt. Alternativ reicht auch ein Klick auf das Windowssymbol in der QTTabBar-Leiste und wählt dort den gewünschten Programmaufruf aus.

Die Möglichkeiten wie man dieses Feature einsetzt sind zahlreich und reichen von einem schnelleren Weg die Windows-Eingabeaufforderung für das aktuelle Verzeichnis zu öffnen bis hin zur Nutzung eines Compilers. Einen Wermutstropfen hat QTTabBar allerdings: Die Entwicklung wurde vor kurzem eingestellt. Laut den Angaben auf der Homepage ist jedoch ein Fork geplant, der unter einem neuen Namen laufen soll.

Wie findet ihr die Möglichkeiten von QTTabBar? Mich würden eure Meinungen zu der Erweiterung des Windows Explorers interessieren.

Einfache Contentpflege – Das interne CMS von Magento Enterprise

Magento wirbt damit, eine Open Source Software zu sein. Das heißt jedoch nicht zwangsläufig, dass das Programm nichts kostet. Seit 2009 bietet Magento Inc. (damals noch Varien) auch eine Enterprise Edition an, die knapp 13000$ im Jahr kostet. Doch was bekommt man dabei für sein Geld? Wir wollen in diesem und in weiteren Beiträgen erläutern, wo die Unterschiede zwischen Community und Enterprise Edition liegen, ob und wo der Mehrwert der Enterprise Edition deutlich wird. Im folgenden Artikel widmen wir uns dem internen Content Management System von Magento, erklären die vielfältigen Möglichkeiten der Kombination eines CMS mit einer E-Commerce-Software und zeigen, welche Zusatz-Features die Enterprise Version bereit hält.

CMS in Magento

Die Integration eines Content Management Systems in eine Online Shop-Software bietet vielfältige Vorteile. So können umfangreiche Inhaltselemente zur Produktvorstellung und zu Marketingzwecken direkt mit dem Katalogsystem interagieren und mit diesem verknüpft werden. Programmiererfahrung ist dabei nicht nötig, Hilfeleistungen wie ein WYSIWYG-Editor unterstützen den Anwender bei seinem Vorgehen. Flagbit hat auch deshalb mit TypoGento eine Extension entwickelt, mit der TYPO3 und Magento miteinander verknüpft werden können. Doch auch Magento verfügt bereits über ein integriertes CMS, mit dem sich vor allem in der Enterprise Edition einige nützliche Features nutzen lassen.

weiterlesen »

MySQL-Tabellen mit mk-archiver archivieren

MaatkitWenn man temporäre Logdaten in eine Datenbank schreibt, muss man sich früher oder später damit beschäftigen, wie man die auch wieder effizient herausbekommt. Im Normalfall will man die Daten auch nicht einfach löschen, sondern verschieben um später wieder darauf zugreifen zu können.

Mit mk-archiver bietet Maatkit dafür genau das richtige Werkzeug. Damit kann man Daten aus einer MySQL-Tabelle in eine Datei oder eine andere Tabelle exportieren. Die Zieltabelle muss dabei weder in der gleichen Datenbank noch auf dem gleichen Server sein. Die Exportdatei wird in LOAD-DATA-INFILE-kompatiblen Format erstellt, kann also auch problemlos später wieder in die Datenbank eingelesen werden.

Nachdem ich meine Daten zuerst mal ohne die Angabe eines Charsets exportiert hatte, waren meine Umlaute beim Testimport natürlich kaputt. Nochmal so als Hinweis am Rande: immer prüfen, ob sich ein Backup auch wiederherstellen lässt und nicht zufrieden sein, wenn es erstellt wurde ;). ALs ich danach den Charset angegeben habe, stellte ich fest, dass es in Maatkit 7202 (ich weiß nicht wie lange davor und danach) leider einen Bug gab, der den Export von UTF-8-Daten in eine Datei verhinderte:

flagbit@testing ~ $ mk-archiver --source h=localhost,D=db_testing,t=log_email --file 'log_email-201102' --where "MONTH(creation_date) = 2 AND YEAR(creation_date) = 2011" --limit 100 --commit-each --ask-pass --charset utf8 -u db_testing_user
Enter password:
Wide character in print at /usr/bin/mk-archiver line 4081,  line 1.

Der Export in eine andere Tabelle funktionierte. Nachdem ich den oben bereits verlinkten Thread von Ende Januar gefunden hatte (und 7202 von Mitte Januar ist), habe ich mir mal lokal die neuste Version (7540) heruntergeladen und siehe da: es funktioniert. Für solche Tests ist das --no-delete Flag immer ganz nützlich, weil dann die Daten bei einem fehlgeschlagenen Test nicht weg sind 😉

Wenn man das ganze jetzt noch mit gzip verbindet und in einen monatlichen Cronjob packt, hat man eine schöne, feine, automatische Datenbankbereinigung.

Produktkategorien in Magento sinnvoll sortieren

Ein interessante Aufgabe für Verantwortliche eines Online Shops ist es, die vorhandene Produktvielfalt für den Kunden besonders passend und relevant darzustellen.Während der eine Kunde nach besonders günstigen Angeboten sucht, möchte der nächste lieber neuere Artikel angezeigt bekommen. Eine bekannte Möglichkeit dafür ist eine sinnvolle Einteilung der Artikel in unterschiedliche Produktlisten. Diese können dann von den Kunden nach bestimmten Kriterien sortiert werden.

Sortierfunktion im Hein Gericke Shop mit den bekannten Möglichkeiten

In Magento können verschiedene Sortierfunktionen nach Preis, Name oder Artikelnummer konfiguriert werden, die Kunden bestimmte Anhaltspunkte geben. Doch oftmals ist auch gewünscht, dass bereits bei der Standard-Ansicht einer Kategorie eine sinnvolle Reihenfolge vorherrscht und Shopinhaber auch das ein oder andere Produkt pushen können. Dies ist bisher nur durch eine manuelle Konfiguration im Backend möglich, wo bestimmten Artikeln eine Nummer zugewiesen kann, nach der dann sortiert wird.

weiterlesen »

Zend-TwoLevels-Cache speichert Einträge unbegrenzt

Der Zend-TwoLevels-Cache ist an sich eine feine Sache, da er, wie bereits beschrieben, das Schönste aus beiden Cache-Welten vereint. Diese Freude wird jedoch leider immer wieder durch manche Macken des TwoLevels-Caches getrübt.

Die Cache-Priorität wird im TwoLevels-Cache durch eine verkürzte Lebenszeit für niedrig priorisierte Cache-Einträge realisiert:

Der Standardwert für die Priorität ist 8, was dazu führt, das alle Einträge standardmäßig im schnellen Cache nur mit einem Drittel der ursprünglichen Lebenszeit gespeichert werden. Damit würde der schnelle Cache nur ein Drittel der Zeit zur Verfügung stehen, danach würden alle Anfragen aus dem langsamen Cache beantwortet, bis auch dieser abgelaufen wäre und dann würde der ganze Cache neu geschrieben und das Spiel ginge von vorne los. Um diesem Problem zu begegnen und um häufig verwendete Cache-Einträge auch weiter im schnellen Cache zu halten, gibt es die Option auto_refresh_fast_cache. Ist diese aktiviert, was in der Standard-Konfiguration der Fall ist, wird der Eintrag im schnellen Cache bei jedem load() neu geschrieben, was fast immer zu masssiven Performance-Einbußen führt. Daher ist in diesem Fall Setzen der Priorität auf 10 für alle Einträge, wie von Fabrizio beschrieben die beste Lösung. Dadurch wird bei diesen Einträgen weder die Lebenszeit verkürzt noch werden die Einträge neu geschrieben.

Ein weiteres Problem tritt auf, wenn bei der Berechnung der $fastLifetime durch abrunden als Ergebnis eine 0 herauskommt. Denn dann wird der Eintrag (zumindest bei APC, Memcached und XCache) für immer im Cache gespeichert. Ich habe dazu bei ZendFramework ein Issue eröffnet. Der Patch dazu verhindert zumindest das Anlegen von unbegrenzt gültigen Einträgen.

Meiner Meinung nach sollte es für die automatische Aktualisierung - genau wie für den automatic_cleaning_factor - eine Option geben, mit der man die Häufigkeit steuern kann. Ich kann mir, außer zu Testzwecken, kein Szenario vorstellen, wo man bei jeder Leseoperation auch eine Schreiboperation erzwingen möchte. Sinnvoller wäre hier diesen Parameter analog zum automatic_cleaning_factor mit der Trefferfrequenz auf den Cache zu justieren. Oder den Cache erst beim Unterschreiten eines Schwellenwerts der Lebenszeit neu zu schreiben. Oder die Einträge einfach ablaufen lassen und erst neu schreiben, wenn sie zum ersten Mal aus dem langsamen Cache gelesen wurden. Mit der letzten Lösung hätte man auf jeden Fall am wenigsten unnötige Schreibzugriffe, aber dafür immer mindestens einen Lesezugriff auf den langsamen Cache.

Nachtrag:
Hier noch die ZendFramework-Issues zu auto_refresh_fast_cache und dem Prioritäten- / Lifetimeproblem.

Update 18.07.2011:
Der Patch wurde mit kleinen Anpassungen angenommen und sollte in der nächsten 1.11-Version enthalten sein.