OXID Artikel mit zusätzlichem Textfeld erweitern

OXID eShop

Das OXID eShop Backend kann man nun schon einige Zeit erweitern, aber jedes Mal, wenn ich z.B. den Artikel um ein zusätzliches HTML-fähiges Feld erweitern möchte stolpere ich über die gleichen Probleme. Es war also mal an der Zeit hier eine Lösung zu finden, bei der man nicht jedes Mal alles von vorne baut und vor allem bei der man nicht schon wieder einen der Schritte vergisst. Bei meiner Suche bin ich auf eine smarte Idee gestoßen, die das Einbinden eines zusätzlichen Feldes wirklich einfach macht. Ich bin gespannt was ihr dazu sagt.

Continue reading

Ähnliche Produkte im OXID eShop verbessern

OXID eShop

In einem vergangenen Projekt sollten in einem OXID eShop ähnliche Produkte in der Detail-Ansicht gezeigt werden. Nach kurzer Suche stellte sich heraus, diese Funktionalität ist bereits vorhanden. Allerdings stellte sich genauso schnell heraus, dass die Ergebnisse oft Produkte enthalten, die sich garnicht ähnlich sind. Wirklich ähnliche Produkte im OXID eShop anzuzeigen ist also garnicht so einfach. Der Grund dafür ist, dass OXID in der Implementierung nur einen sehr rudimentären Vergleich auf Ähnlichkeiten macht. Um dies zu verbessern, habe ich die Funktion über ein Modul erweitert.

Continue reading

Fluid templating vs. TemplaVoilá

TemplaVoilá bietet seit einigen Jahren die einfache Möglichkeit Templates anzubinden und dynamische Inhaltselemente zu erstellen. Mit TYPO3 in der Version 4.6 wurde die Möglichkeit eingeführt fluid templates zu verwenden. Fluid ist genau wie extbase aus dem FLOW3 Framework erwachsen und wird schon seit einiger Zeit für die TYPO3 Extension Entwicklung verwendet. Da lag der Schritt nahe fluid auch das alte Markerbasierte Templatesystem “abschaffen” zu lassen.

Nach der Ankündigung TemplaVoilà für TYPO3 ab Version 6.2 nicht mehr weiterzuentwickeln habe ich mich gefragt: Kann man TemplaVoilá wirklich ersetzen?

Continue reading

Flexible Content Element for group exclude in TYPO3

I just had the problem that I want to show different content elements on a TYPO3 page depending on the status of the user. Actually there were three cases:

  1. Show a content element to log in if the visitor is not logged in
  2. Show special content if the user is logged in and is part of the group – let’s call it A
  3. Show a message that the user does not have permission to see the special content as he is not in group A

Let’s see how that worked out…

Continue reading

Add a special group to all frontend users in TYPO3

I recently had the task to clean up a TYPO3 instance with round about 25000 frontend users. The goal was to reduce the 40 TYPO3 frontend groups to a minimum as the security policy changed. So the most of these groups have been deleted. As the user has to be part of at least one group to be able to login to the frontend, I had to assure that each user is member of a basic group. You can imagine I did not want to do that by hand in the TYPO3 backend for 25000 TYPO3 frontend users. So I thought about a possibility to do that with an SQL query.

Get started with the TYPO3 group juggling job

Let’s assume the basic TYPO3 group is number 2. We want to add this group to everybody who is not a member. We have to pay attention to two constraints:

  1. The group should not be added to accounts which are already members
  2. If there exist accounts without any group membership we have to add these first

This results in two queries. Number one adding the group to all accunts with an empty “usergroup” column. Number two adds “2,” upfront all the other groups for all accounts not in group number 2.

  1. UPDATE fe_users SET usergroup=”2″ WHERE usergroup = “”;
  2. UPDATE fe_users SET usergroup=CONCAT(‘2,’ , usergroup) WHERE FIND_IN_SET(‘2’, usergroup) = 0;

As always: Try it on a testsystem upfront and make a backup of your database before you use this in real life. Beside that: Have fun…

If you had problems following this TYPO3 tutorial, please let me know in the comments. If it helped you or you think it can help others feel free to spread the word by sharing and liking the article. It also would help me improving the upcoming posts.

Black Friday – CrashPlan+ spottbillig

Black Friday Schnäppchen voraus

Am Black Friday muss man schnell sein. Das wissen alle, die schonmal an diesem denkwürdigen Tag versucht haben in Amerika irgendetwas einzukaufen. Aus diesem Grund verliere ich an dieser Stelle nicht zu viel Zeit, sondern schick euch gleich weiter auf die CrashPlan Webseite, auf der das Black Friday Angebot schon recht prominent prangert (allerdings nur bis zum 25.11.2012). Rabatt gibt es aktuell noch 95%, aber der reduziert sich bis Montag alle zwei Stunden. Also schnell vorbei schauen: Go to CrashPlan

Für alle denen das zu schnell geht

Ein paar Worte für diejenigen, die nicht wissen worum es sich hier handelt und daher nicht gleich vor lauter Freude auf den Link klicken. CrashPlan ist eine Backup-Lösung, die es zum einen kostenlos ermöglicht Backups auf externe Rechner zu spielen, z.B. bei Freunden oder auf einen eigenen Server. Zum Anderen bietet CrashPlan allerdings auch die Möglichkeit für eine monatliche Gebühr (ab 3$) Backups auf deren Cloud Infrastruktur abzulegen. Dieser Service ist heute massiv reduziert zu haben, aktuell bekommt man ein Jahr für den Preis eines Monats.

Interessant ist das für alle, die zum einen Wissen, was ein Backup der eigenen Daten Wert ist (und aktuell vielleicht sogar schon eines machen, sei es mit Time Machine oder anderen Programmen), sich zum anderen aber auch vorstellen können, dass der eigene Rechner mitsamt der Backup-Platte gestohlen werden könnten oder einem Feuer, einer Naturkatastrophe o.ä. zum Opfer fallen könnten. Einen längeren Artikel spare ich mir an dieser Stelle, nicht dass es nachher heißt: “Ich war nicht schnell genug…”

Ein neuer Blog, warum?

Wer meine Webseite schon länger kennt, der weiss, dass ich stets darauf aus war alle Funktionalität in TYPO3 abzubilden. Zum einen, weil es sich dabei oftmals um eine Herausforderung handelte, die mein TYPO3 Wissen immer wieder auf die Probe stellte und erweiterte. So war es auch mit dem Blog.

Wie alles begann

TYPO3 hat mir stets als herausragendes Content Management System gedient und das tut es heute noch. Aber als die Blogosphäre begann sich aufzublähen wollte ich mit meiner Webseite auch ein Teil davon werden. Zunächst versuchte ich dabei wesentliche Funktionen eines Blogs mit den üblichen Bordmitteln umzusetzen. Das machte reichlich Arbeit, denn man muss ja eine Übersichtsseite produzieren mit Verlinkungen auf die Unterseiten, Blogrolls per Typoscript einbinden. Ein Unterfangen das schnell an Übersichtlichkeitsgrenzen stieß. Kommentare gabs über ein Gästebuchformular, das auf jeder Seite eingebettet war. Trackback und Pingback waren unter

eine kleine Evolution: tt_news

Eines Tages stolperte ich über eine Webseite die Beschrieben hat, wie man einen Blog mit tt_news umsetzen könnte. Man würde sich die ganze Seitenanlegerei sparen und anteasern ginge sozusagen automatisch, und im weitesten Sinne ist ein Blogeintrag ja sowas wie eine Neuigkeit. Gesagt, getan. Alles umgestellt und schon waren wesentliche Blogfunktionalitäten mit von der Partie. Man konnte automatisch zwischen den Einträgen navigieren. Kategorisierung war auch am Start und eine Teaserseite war auch schon mit dabei. Lange war das die Variante meiner Wahl, bis plötzlich eine Meldung durch das Internet kursierte.

Leichte Verbesserung: Timtab

Da machte also eine Extension im TYPO3 Umfeld von sich reden, die die Hoffnung weckte annähernd an die Funktionen einer Blogsoftware wie WordPress heranzureichen. Dabei machte die Extension nicht wesentlich viel anders als ich es vorher schon gemacht habe. tt_news und ve_guestbook wurden kombiniert und mit ein paar zusätzlichen Features verklebt. So richtig rund lief das ganze aber nie. Zumindest nicht bei mir.

Das non-plus ultra: t3blog

Als die schweizer Firma snowflake mit ihrer Extension t3blog aufschlugen ging ein raunen durch die TYPO3 Gemeinde. Eine Extension, die alle Funktionen eines Blogs mitbringen soll? Ohne Hacks und Knauperei? Ohne Kannibalisierung anderer Extensions? Das klang wie ein Traum.
Tatsächlich konnte man mit wenig Aufwand aus einem frisch aufgesetzten TYPO3 einen Blog machen. Posts, Kommentare, Teaserseiten, Blogroll, Navigation. Alles mit nur einer Extension. Trackback und Pingback sollte es auch können, hat aber zumindest bei mir nie funktioniert. Aber das war bis dato das Komfortabelste, was ich gesehen hatte.
Beim Einbau in eine bereits bestehende Seite stellte sich dann allerdings schnell heraus das t3blog nicht in erster Linie als Ergänzung für eine bestehende TYPO3 Seite gebaut wurde, sondern das Ziel eher war eine TYPO3 Instanz komplett als Blog zu nutzen.

Mein Ehrgeiz war geweckt und nach einigen Nächten hatte ich den Beweis erbracht, dass man – mit entsprechendem Aufwand – sehr wohl in der Lage ist t3blog relativ sauber in eine bestehende TYPO3 Webseite einzubauen. Für den Moment war ich zufrieden. Über anfängliche Kinderkrankheiten konnte man dann auch hinwegsehen.

Nach einiger Zeit hat sich dann aber eine gewisse Schreibfaulheit eingeschlichen. Ich hatte zwar alle Freiheiten, konnte meine Blogposts frei mit verschiedenen Contentelementen gestalten und das alles in der gewohnten TYPO3 Umgebung. Allerdings war das dann doch auch irgendwie kompliziert um mal eben schnell einen Post zu schreiben. Zumal ich zu der Zeit öfters mit dem Zug unterwegs war und das TYPO3 Backend für die regelmässigen Netzausfälle dann doch auch irgendwie etwas sperrig war. Auf iPad oder gar iPhone will man das dann auch eigentlich garnicht bedienen. So gammelte der Blog so vor sich hin.

Weg mit dem Herbstlaub

Schon zu Beginn der Blog-Ära und auch immer mal zwischendurch habe ich mit WordPress experimentiert. Ich habe sogar bei Anfragen teilweise je nach Anforderung explizit zu diesem System geraten. Und plötzlich kamen ein paar verschiedene Punkte zusammen, die mich wieder dazu veranlasst haben einen Blick auf WordPress zu werfen.

  • Wir verwenden es in der Firma als Blogging Plattform
  • Es gibt für WordPress einen iPad und iPhone Client um relativ komfortabel auch mal unterwegs was zu schreiben
  • Ich wollte zusätzlich mit responsive Design experimentieren und auch den gesamten Webauftritt deutlich erfrischen
  • Snowflake selbst hat sich WordPress als Blogging Plattform zugewandt

Finally … WordPress

So habe ich mir einige Tage gegönnt und mich mit WordPress bekannt gemacht. Wenn man keine speziellen Anforderungen hat, ist man auch sehr schnell am Start. Ich habe mir zunächst mal das erstbeste responsive Design Template geschnappt und versucht es an meine Vorstellungen anzupassen. Teilweise war ich dabei der Verzweiflung nahe. Zum Glück habe ich dann – nachdem ich zugegebenermaßen einiges gelernt habe – noch ein Template gefunden, dass den grössten Teil meiner Wünsche abdeckt. Dazu noch ein paar Plugins und fertig. Herzlich Willkommen im neuen Blog

Was euch jetzt erwartet

Zunächst habe ich jetzt ein neues Spielzeug, das ich vermutlich in der nächsten Zeit häufiger nutzen werde. Ihr könnt also zuallererst mal mehr Aktivität erwarten. Da ich meine Bloggingtätigkeit nun in ein System verlagere, dass genau für diese Zwecke ausgelegt wurde, sollten auch die typischen Blogrelevanten Funktionen nun einfach funktionieren. Hinzu kommt, dass ich mich auch dazu entschieden habe, meine Fotos nicht mehr in TYPO3 anzeigen zu lassen, sondern ebenfalls hier im Blog.

Wenn ich jetzt wieder ein bisschen Zeit finde, dann werde ich das Design der Webseite ebenfalls anpassen und beide Systeme miteinander verknüpfen. Bis dahin bitte ich euch, den grafischen Bruch zu entschuldigen.

Zu guter letzt könnt ihr meinen Blog dank responsive Design nun auch auf Mobilgeräten in angepasster Form bewundern. Über eure Erfahrungen und Feedback freue ich mich natürlich jederzeit.

tt_news categories not shown to a backend user in TYPO3

Problem

A couple of days ago I had a problem with one of our TYPO3 news editors. She was able to see all tt_news categories she should see. She also could select one category but as soon as she saved the entry in the TYPO3 backend, the chosen category box went empty. The more curious was that the category was obviously saved, as the entry was shown correctly in the TYPO3 frontend. But as soon as she made another change afterwards the category was deleted as the box was not filled with the correct entry.
It gave me kind of a hedache because I could not imagine why she can see all the stuff and can choose it and also can save it but cannot – well – load and show it to the chosen categories box.

Analysis

Thanks to an old nabble entry I found after about 1 hour I figured out the problem. It seems that the box with the available categories is filled with another mechanism than the chosen categories box. If you have parts of the website not shown to the editor and categories in a special folder, this behaviour can happen because of the lack of access rights on this special folder.

Solution

Normally you do not want to let the editors see your – I call it – Storage Folder. If you store tt_news categories in there you might be afraid now that you will have to. But you don’t. The only thing that you have to do is give a group in which your editors reside (or if you want, everybody) read access to the folder. The steps to do that are quite easy:

  • If you don’t have already, create a backend group for the editors who need the rights
  • Add the editors to that group (obvious :) )
  • Klick on “Access” and then on your storage folder
  • In the group column grant read access, disable all other access points by clicking on the circles (green check or red cross)
  • Choose your new group in the group column
  • Save

You are done. The editor should now be able to select, save and also see the chosen category even after saving the entry.

TYPO3 Powermail und jQuery ohne t3jquery

Heute hatte ich ein TYPO3 Problem mit Powermail und dem jQuery Framework, das mich fast in den Wahnsinn getrieben hat. Recherchen bei Google brachten mich immer zum gleichen Ergebnis: t3jquery installieren. Genau das wollte ich aber nicht, da ich bei dem aktuellen Projekt so wenige Extensions wie möglich verwenden möchte. Nach durchexerzieren etlicher Tutorials, durchreiten von mehreren Dokumentationswüsten und durchwandern des üblichen Quellcode-Dschungels bin ich letztlich an der Workaround Oase angekommen. Aber wie immer erstmal zum Problem:

jQuery nicht per t3jquery Extension einbinden

Auf dem TYPO3 Extension Markt findet sich für alles und jeden etwas mehr oder weniger gut passendes um sein gerade aktuelles Problem zu erschlagen. In Projekten mit vielen solcher Problemen endet man dann am Schluß mit einem Wust an Extensions, die sich im schlimmsten Fall gegenseitig negativ beeinflussen. Der Wartungsaufwand für den Administrator steigt natürlich auch mit jeder weiteren Extension. Aus diesem Grund versuche ich mit möglichst wenigen Extensions auszukommen.
Im konkreten Fall geht es nun um Grundfunktionalität, die an vielen Stellen der Webseite verwendet wird und ohne die heute kaum noch eine moderne Webseite herum kommt: jQuery (o.ä.). Das Javascript-Framework ist im Grunde recht einfach eingebaut, eine Skript-Anweisung im HTML genügt bereits um das Paket dynamisch von einem CDN laden zu lassen. Oder aber man installiert die Extension t3jquery die neben der Einbindung noch andere Funktionalität mit sich bringt, die man oft braucht, naja, wenn man viele Extensions verwendet, die auf jQuery angewiesen sind.
Viele dieser Extensions bringen netterweise gleich eine eigene jQuery-Datei mit und bauen die ein. So wie Powermail das auch tut. Bemerkt Powermail, dass t3jquery installiert ist, dann wird aber auf das von dieser Extension angebotene Paket zurück gegriffen.
Was ist aber nun, wenn ich das Framework über den oben erwähnten Einzeiler im HTML einbaue? Richtig, Powermail feuert seine Variante mit in die Ausgabe. Plötzlich hat man gleich mehrere jQuery Varianten, die der User sich beim Seitenaufruf runter lädt und wie zu erwarten irgendwas kaputt machen, weil sie sich gegenseitig ins Gehege kommen.
Eine Lösung muss her und die ist ganz klar formuliert: Von jedem Framework (jQuery, jQuery Tools, anythingslider etc…) darf am Ende nur ein Eintrag im ausgelieferten Quelltext stehen.

Idee 1: Powermail Ausgabe unterdrücken

Mein erster Gedanke war: “Die Frameworks per Hand einbinden und Powermail sagen es soll sich nicht einmischen”.
Gesagt getan. Es gibt recht simple Anweisungen um Powermail unmissverständlich klar zu machen, dass man seine jQuery und jQuery Tools Frameworks bitte nicht verwenden möchte:

page.includeJSlibs {
  powermail_jQuery >
  powermail_jQueryTools >
  powermail_jQueryToolsTabs >
}

Danach macht Powermail allerdings auch unmissverständlich klar, dass es die von Hand eingebundenen Frameworks auch nicht verwenden möchte. Ohne tiefer in den Code geschaut zu haben, vermute ich ein Feature statt eines Bugs. Denn wenn kein JS zur Verfügung steht, wird die Validierung der Felder wie früher auf der nächsten Seite angezeigt. Eine Option mit der man Powermail sagen kann, dass es sich drauf verlassen soll, dass da schon das richtige eingebunden ist, habe ich nicht gefunden.
Lösungsversuch gescheitert.

Idee 2: Powermail liefert jQuery

Zweite Idee: Wir lassen Powermail die Frameworks einbinden, wenn es denn unbedingt will.
Hier stoße ich auf das Problem, dass Powermail sich zwar leicht die entsprechenden Dateien unterschieben läßt, diese dann allerdings nur einbindet, wenn sich auf der Seite auch ein Powermail Formular befindet. Nun wird der geneigte Leser sicher verstehen, dass ich auf der Startseite mit Slidern und Bannern kein Powermail-Formular platzieren möchte.
In den Untiefen der Dokumentation finde ich allerdings noch ein Flag, mit dem man Powermail sagen kann, dass es immer liefern soll, auch wenn es selbst nicht zum Einsatz kommt. Also schnell mal alles zusammengebaut und getestet. Und siehe da, es funktioniert.

Die Lösung

Sollte mal jemand vor einem ähnlichen Problem stehen, so sollte er sich folgenden Code mal anschauen:

[userFunc = user_powermailOnCurrentPage(1)] && [userFunc = user_powermailCheckT3jquery(false)] && [globalVar = LIT:1 > {$plugin.powermail.js.toHeader}]

// remove jQuery and jQueryTools libraries from header
page.includeJSlibs {
  powermail_jQuery >
  powermail_jQueryTools >
  powermail_jQueryToolsTabs >
}

// Include jQuery and jQuery Tools in footer
page.includeJSFooterlibs {
  powermail_jQuery.external = 1
  powermail_jQuery =  http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js  powermail_jQueryTools.external = 1
  powermail_jQueryTools = / fileadmin/js/jquery.tools/jquery.tools.form.min.js  powermail_jQueryToolsTabs.external = 1
  powermail_jQueryToolsTabs = / fileadmin/js/jquery.tools/jquery.tools.tiny.min.js}
[end]

# At this point we only add another bunch of JS frameworks
# fancybox, easing and sliding needed on some pages
page.footerData.10 = TEXT page.footerData.10.value (   
<!-- scripts-->
<script src="/fileadmin/js/jquery.fancybox-1.3.4.pack.js?x67451" type="text/javascript"></script>
<script src="/fileadmin/js/jquery.anythingslider.min.js?x67451" type="text/javascript"></script>
<script src="/fileadmin/js/script.js?x67451" type="text/javascript"></script>
<!-- .scripts-->
)

Der obere Teil ist in leicht abgewandelter Form auch im mitgelieferten Powermail TS-Setup zu finden. Was hier interessant ist, ist die userFunc user_powermailOnCurrentPage(1). Diese prüft nämlich, ob powermail auf der aktuellen Seite aktiv ist. Als Parameter kann man mitgeben ob powermail-Javascript auf allen Seiten angezeigt werden soll. Im zweiten Teil fügen wir dann noch wie üblich alle anderen Frameworkteile hinzu.

Der gezeigte TS-Code funktioniert jetzt so wie er soll. Sicherlich kann man diesen noch ein wenig optimieren, was aber hier im Blog vermutlich eher zu Lasten des Verständnis gehen würde.

Feedback

Sollte ich mal wieder zu kompliziert gedacht haben und jemand anderes hat hier einen Einzeiler oder dergleichen parat. Immer gerne in die Kommentare posten.

Outlook Express zu Thunderbird Umzug

Nachdem ich nun ca. 2 Stunden dran rumgebastelt habe eine Outlook Express Mailbox zu Thunderbird umzuziehen und ich vermutlich nicht der erste bin, der sowas in seinem Leben mal machen muß, habe ich mich entschlossen eine kleine Hilfestellung zu schreiben, aber zuerst mal das Problem.

Das Problem – warum nicht gleich Thunderbird?

Ein enger Familienangehöriger hat seit einigen Jahren seinen eMail-Verkehr über Outlook Express auf einem Windows PC abgewickelt. Obwohl IMAP als primäres Protokoll eingerichtet war, wurden lokale Ordner angelegt, in die eMails einsortiert wurden. Vor kurzem entscheidet sich der Computer dazu keine Lust mehr auf Funktionieren zu haben. Ein neuer Rechner soll demnächst angeschafft werden. Diesmal aber kein Windows PC mehr. Es soll ein Mac sein.
Alles kein Problem, denkt sich der erfahrene Administrator: IMAP für Mails ist ja schließlich eingerichtet und die Daten von der Festplatte können wir ja auch noch retten. Ja, denkt er, bis ihm die lokalen Ordner beim Stöbern auffallen. Die müssen ja jetzt irgendwie wieder rekonstruiert werden, aber auf dem Mac gibts kein Outlook Express. Qué lastima!

Voraussetzung und Werkzeug

Für wen sind die nächsten Schritte gedacht und was braucht man dazu? Wenn Du ungefähr folgende Ausgangssituation hast bist Du schonmal richtig:

  • .dbx Dateien aus einem Outlook Express Profil oder Backup
  • Den Wunsch die Mails in Zukunft in Thunderbird zu haben (z.B. Mac)

Bevor wir loslegen brauchen wir folgende Werkzeuge:

  • Eine Windowsinstallation (z.B. VM oder Rechner von einem Bekannten)
  • Das dbxconv Tool von Ulrich Krebs [1]
  • Das Zielsystem mit einem installierten und mit einem Account eingerichteten Thunderbird

Die Lösung

Von jetzt an geht’s eigentlich ganz schnell. Einfach die folgenden Schritte ausführen und freuen:

  • .dbx Dateien und dbxconv Tool in ein gemeinsames Verzeichnis auf dem Windowsrechner legen
  • Ein Terminal starten und im Verzeichnis “dbxconv *.dbx” ausführen (Bestimmte dbx Dateien lassen sich nicht umwandeln, weil sie von Outlook Express für die interne Verwaltung verwendet werden und keine Mails enthalten, z.B. folders.dbx)
  • Die .mbx Dateien auf dem Zielsystem im Thunderbird-Profil ablegen. Unter MacOS befindet sich dieses unter ~/Library/Thunderbird/Profiles/<PROFIL_NAME>/Mail/Local Folders
  • Beim starten von Thunderbird werden die Mails jetzt in Ordnern angezeigt, die so heißen wie die Datei.

Ab jetzt muß man sich entscheiden, was man möchte. Ich persönlich würde jetzt neue Ordner auf dem Server anlegen und dann die Mails dort hinein kopieren/verschieben. Aber vorsicht, je nachdem um wie viele Mails es sich handelt kann das abhängig von der Internetanbindung einige Zeit in Anspruch nehmen.

Referenzen

[1] http://www.ukrebs-software.de/german/dbxconv/dbxconv.html

Update auf TYPO3 4.6 + Debian Lenny

Nur mal eben für zwischendurch für alle, die Debian auf ihrem Server laufen haben und auf die aktuellste Version von TYPO3 aktualisieren wollen. Diese verlangt PHP in der Version 5.3 oder höher. Debian Lenny (stable) kommt aktuell aber nur mit 5.2.x. Um dieses Problem zu beseitigen kann man sich eines zweiten Repositories bedienen, das für die stable Releases auch aktuellere Versionen gebräuchlicher Pakete bereit stellt.

Zunächst in der /etc/apt/sources.list folgendes eintragen:

deb http://php53.dotdeb.org lenny all
deb-src http://php53.dotdeb.org lenny all

(für alle die “stable” anstelle von “lenny” in ihrer sources.list haben, entsprechend hier anpassen).
Anschließend bringen die bekannten befehle das ersehnte PHP 5.3 auf den Server:

apt-get update
apt-get upgrade

Mutt löscht eMails schnell und sauber

Welcher Systemadministrator kennt das nicht: Ein Service wird als bestimmter Benutzer installiert und läuft dann so vor sich hin ohne signifikante Ausfallerscheinungen, ggfs. noch unter Beteiligung eines Cron-Jobs. Irgendwann bekommt man mit (z.B. durch logwatch), dass das Postfach dieses Benutzers plötzlich ein bisschen umfangreicher geworden ist. Ein Blick in die Mailbox verrät, es handelt sich um Ausgaben des Cron-Jobs, die nach Beendigung jedes Durchlaufs per eMail an den Cron-Job Besitzer zugestellt werden. Man erhält also recht viele, kleine, hutzelige eMails, im aktuellen Fall 64000. Mit einem eMail-Client jede einzeln zu löschen dauert vermutlich ewig. Mit ‘mutt’ läßt sich das aber recht elegant lösen.

Shift+d
~s .*

Mit Shift+d (also einem großen D) wechselt man in einen Modus in dem man eine Löschregel angeben kann. In unserem Fall prüfen wir den Betreff (~s) und löschen alles (.*). Auf diese Weise könnte man z.B. auch alle Mails löschen die “SPAM” in ihrer Betreffzeile enthalten (.*SPAM.*).

Lust auf mutt bekommen?

Für weiterführende Informationen bzgl. mutt und der verwendbaren Patterns seien euch folgende URLs ans Herz gelegt:
mutt patterns
mutt manual