Privates Blog von Christian Münch

Defekte Pakete unter Ubuntu/Debian auflisten und löschen

Auflisten dpkg --list | grep ^rc Löschen sudo dpkg --purge `dpkg --get-selections | awk '/deinstall/ {print $1}'` Danke an Frank Dietrich der diesen Befehl netterweise in der Debian Mailingliste veröffentlicht hatten. http://www.mail-archive.com/debian-user-german@lists.debian.org/msg178082.html Anmerkung: Wenn nichts defekt ist erscheint das folgende:: Optionen mit [*] geben viel aus - schicken Sie es durch »less« oder »more«!

n98-magerun - Magento über die Konsole managen

Wer viel mit Magento arbeitet wird sicherlich die mit Magento im shell Verzeichnis ausgelieferten praktischen Scripte kennen. Damit lässt sich schnell und stabil (im Vergleich zum Web-Frontend) ein Index neu erstellen. Also Entwickler kann man auch selbst Scripte auf Basis der Klasse Mage_Shell_Abstract mit seinem Modul ausliefern. n98-magerun soll diese Scripte die mit Magento deployed werden nicht ersetzen. Es soll vielmehr Tools bereitstellen die eher der Administration und vor allem für Entwickler interessant sind.

Flat Index für einen einzelnen Store-View neu erstellen

Wer viele Magento Store-Views angelegt hat und “mal eben” einen Index neu erstellen muss, muss unter Umständen (bei vielen Produkten im Katalog) recht lange warten. Hier wäre es toll, wenn man nur einen einzelnen Store-View-Index gezielt neu erstellen könnte. Einen Anfang haben ich für den Flat-Catalog-Index gemacht: <?php require_once 'app/Mage.php'; Mage::app('admin'); $indexer = Mage::getSingleton('catalog/product_flat_indexer'); $indexer->rebuild(22); Die “22” einfach durch die ID des eigenen Store-Views ersetzen.

Magento DB resourcen / connections auflisten

<?php require_once 'app/Mage.php'; Mage::app(); $xml = Mage::app()->getConfig()->getNode('global/resources'); foreach ($xml->children() as $node) { echo $node->getName() . PHP_EOL; } Es wird dann eine Liste der definierten DB-Ressourcen aufgelistet: default_setup default_write default_read core_setup core_write core_read db eav_setup admin_setup adminnotification_setup cron_setup directory_setup dataflow_setup cms_setup index_setup customer_setup catalog_setup catalogrule_setup ….

Speichern von mehreren Objekten über eine Transaktion

<?php // $foo = Mage::getModel('..... // $bar = Mage::getModel('..... $transaction = Mage::getModel('core/resource_transaction'); $transaction->addObject($foo); $transaction->addObject($bar); $transaction->save(); // runs save on all objects. On error -> rollback Magento nutzt das core/resource_transaction Model selbst bei Speichern einer Order während des Checkouts. Es kann aber auch im eigenen Modul nützlich sein.

Magento automatisch installieren

Via Vagrant / Puppet Bei der vorletzten PHPUG Rheinhessen hatte ich bereits eine automatische Magento Installation über Vagrant und Puppet vorgestellt. Damit ist es möglich eine komplette Virtuelle Maschine mit Magento innerhalb von Minuten hochzuziehen. Das ist super, wenn man mal eben ein wirklich leeres System benötigt. Das ganze ist keine Hexerei, denn Magento bietet über die install.php schon die Möglichkeit ohne den Aufruf der Oberfläche eine Installation von der Kommandozeile aus durchzuführen.

Magento Adminbereich besser absichern / 3 einfach Möglichkeiten

Admin-URL anpassen Die erste Maßnahme die bei jedem Shop in einer Liveumgebung durchgeführt werden sollte ist das Ändern der Admin-URL. Diese kann bequem in der Systemkonfiguration unter “Admin -> Admin Base URL” angepasst werden. Dort einfach “Use Custom Admin Base URL” auf “Yes” einstellen. Im daraufhin erscheinenden Textfeld kann dann die URL eingetragen werden. Die Base-URL sollte mit “https://” beginnen. Das SSL Zertifikat setze ich bei einem Live-Shop einfach einmal vorraus.

Eine bessere Übersicht bei Magento Katalog-Preisregeln

Inspiriert von Fabrizios Verbesserungen bei der Webseite/Store/Store-View Darstellung (http://www.fabrizio-branca.de/magento-website-store-groups-store-views.html) kam mir die unübersichtliche Auflistung von Katalog-Preisregeln in den Sinn. Von Fabrizios Entusiasmus angesteckt habe ich mich nun hingesetzt und ein Magento Modul entwickelt. Das Modul tauscht das Grid unter “Promotions -> Catalog Price Rules” aus und entfernt den Pager. Es werden nun alle Regeln auf einer Seite angezeigt. Ebenso habe ich die einfache Auflistung durch eine Gruppierung nach Webseiten geändert. Wird eine Regel auf mehr als einer Webseite verwendet, wird die Regel bei jeder zugeordneten Webseite aufgelistet.

DevOp: Puppet zum installieren von jsmin

Hier mein puppet jsmin.pp, welches jsmin für die Kommandozeile unter Ubuntu installiert: class dev-tools::jsmin { exec { "download-js-min": unless => "/usr/bin/test -d /usr/local/src/JSMin", cwd => "/usr/local/src", command => "/usr/bin/git clone https://github.com/douglascrockford/JSMin.git" } exec { "compile-js-min": cwd => "/usr/local/src/JSMin", command => "/usr/bin/gcc -o jsmin jsmin.c", creates => "/usr/bin/src/JSMin/jsmin", require => Exec["download-js-min"] } file { "/usr/local/bin/jsmin": ensure => "/usr/local/src/JSMin/jsmin", require => Exec["compile-js-min"] } }

DevOp: Puppet zum installieren von PHPStorm

Puppet zum installieren von PHPStorm: class dev-tools::phpstorm ($version = "3.0", $revision = "111.19", $eap = false) { exec { "download-phpstorm": unless => "/usr/bin/test -d /opt/PhpStorm-${revision}", cwd => "/tmp", command => $eap ? { true => "/usr/bin/wget http://download.jetbrains.com/webide/PhpStorm-EAP-${revision}.tar.gz", false => "/usr/bin/wget http://download.jetbrains.com/webide/PhpStorm-${revision}.tar.gz", }, creates => "/tmp/PhpStorm-${version}.tar.gz" } exec { "untar-phpstorm": cwd => "/opt", command => $eap ? { true => "/bin/tar xvfz /tmp/PhpStorm-EAP-${revision}.tar.gz", false => "/bin/tar xvfz /tmp/PhpStorm-${revision}.tar.gz", }, creates => "/opt/PhpStorm-${revision}", require => [Exec["download-phpstorm"]] } file { "/opt/PhpStorm-${revision}/bin/phpstorm.