Joomla: Schöne URLs ohne mod_rewrite
Seit einiger Zeit bastele ich mit dem Open Source CMS “Joomla!“, und bin mit den Resultaten relativ zufrieden. Problematisch ist allerdings, dass die Funktion, welche in Joomla aus Spaghetti-URLs wie
/index.php?option=com_content&task=category§ionid=1&id=27&Itemid=56
elegantere und angeblich suchmaschinenfreundlichere Adressen á la “/content/view/13/77/” macht, das Apache-Modul “mod_rewrite” voraussetzt, welches in manchen Umgebungen (Hoster wie Strato, Speicherhosting, …) nicht gegeben ist.
Die Lösung des Problems findet sich in der Datei $JOOMLA/includes/sef.php. Sobald man Zeile 516 zu
return $mosConfig_live_site .'/index/'. $string . $fragment;
abändert, und unter “Global Configuration” -> “SEO” die suchmaschinenfreundlichen URLs aktiviert, funktioniert alles wie gewünscht, auch ohne .htaccess und mod_rewrite.
In anderen Umgebungen als einem Apache könnte es übrigens erforderlich sein, statt “/index/” “/index.php/” einzusetzen…
Einfache Probleme erfordern einfache Lösungen
Gegen die Werbeflut, die mir auf jeder zweiten Webseite entgegenflickert und mich auf Dauer zum sicheren Augenkrebs führen wird, gibt es ein ebenso einfach wie effektives Mittel; für mich hat es genügt, folgendes zur /etc/hosts hinzuzufügen:
0.0.0.0 adfarm1.adition.com 0.0.0.0 zbox.zanox.com 0.0.0.0 pagead2.googlesyndication.com 0.0.0.0 layer-ads.de 0.0.0.0 ad.doubleclick.net 0.0.0.0 stats.reinvigorate.net 0.0.0.0 img.metalflirt.de 0.0.0.0 cdn.fastclick.net 0.0.0.0 rc.de.adlink.net 0.0.0.0 ad.de.doubleclick.net 0.0.0.0 adserv.quality-channel.de
Eine kleine Erklärung zu diesem Hack: Die /etc/hosts ist eine Textdatei, die unter Unix-Systemen verwendet wird, um Hostnamen zu statischen IP-Adressen aufzulösen; streng genommen ist dies obsolet und ein Relikt aus den Zeiten, in denen es noch keine DNS-Server gab. Bei der von mir geschilderten Lösung werden die Server, von denen Werbungen nachgeladen werden, einfach geblockt, indem der Hostname mit der Adresse 0.0.0.0 verbunden wird.
Eine andere Lösung kam für mich nicht in Frage; für SAFT habe ich die 12$ nicht übrig, Privoxy ist mir zu kompliziert, und Firefox in Kombination mit AdBlock erst recht nicht, da Firefox auf dem Mac ziemlich suckt. Weiterhin kann ich sicher sein, dass auf diese Weise keine erwünschten Inhalte von übereifrigen Werbeblockern verschluckt werden.
Wer übrigens nicht weiss, wie man so eine Textdatei editiert, soll mich ruhig anschreiben.
reflections.js
Die eher effektgeilen unter euch Webseitengestaltern werden sich hierüber freuen: Ein kleines Stückchen Javascript, das Bilder mit einer Reflektion versieht.
Bei einer gelungenen Integration in die Webseite könnte das sicherlich gut aussehen, ich überprüfe gerade, inwiefern sich das in mein Template integrieren ließe.
Empfehlung: Der Make Magazine-Podcast

Das “makezine” ist eine Plattform über Basteleien allgemein (im Englischen anscheinend gerne als “hacks” bezeichnet), die ein Blog, ein Verzeichnis von Projekten, einen Podcast und einen Versandhandel bietet.
Als Freund der gepflegten Frickelei habe ich den RSS-Feed des Make-Blogs schon lange abonniert, der Podcast war mir allerdings bis vor kurzem noch gänzlich unbekannt - schade eigentlich, denn der nett gestaltete und von dem geradezu sagenhaft nerdigen Bre Pettis (siehe Photo) moderierte Podcast bietet viel Unterhaltung und Inspiration für eigene Projekte.
Der Podcast befindet sich selbstverständlich im iTunes-Podcast-Verzeichnis, und allgemein möchte ich noch loswerden, dass Projekte wie “make” IMHO zu den wenigen echten Perlen des Netzes gehören.
Ich liebe Perl…
sub runde
{
(my $p = ((grep /\./, @_) != 0) ? sprintf("%.2f", @_) : @_) =~ s(\.) (,);
return $p;
}
…denn welcher andere Compiler/Interpreter würde diese fünf Zeilen Code bedingungslos akzeptieren, und in welcher anderen Sprache kann man mit derartig wenig Code derartig viel bewegen?
dublettenfinder.sh
Irgendwie muss ich gerade in einer produktiven Phase stecken. Soeben habe ich den “dublettenfinder” fertiggestellt, ein kleines Shellscript (präzise: Bash-Script), das die md5-Prüfsummen aller Dateien eines gegebenen Verzeichnisses berechnet, diese vergleicht, und so doppelt vorhandene Dateien findet.
Sicher ist das Script grade bei großen Dateien ziemlich langsam, es verrichtet aber zuverlässig seinen Dienst. Dinge, die ich noch ändern möchte, sind:
- Die Performance (ließe sich evtl. mit einer Art Vorauswahl lösen, bei der nur die md5-Hashes von Dateien gebildet werden, die auch die gleiche Größe haben)
- Anpassen für Linux und andere Unixe
Hier steht es übrigens zum Download bereit.
“Ordner im Terminal öffnen” beta
Meiner bescheidenen Meinung nach ist es höchst erstrebenswert, die Grundlagen so vieler Programmier- und Scriptsprachen wie möglich zu kennen. Genau dies hat mich auch motiviert, mich mal einen Nachmittag mit Applescript zu beschäftigen. Applescript wurde von Apple geschaffen, damit häufig benutzte Arbeitsabläufe automatisiert werden können. Leider unterstützen nicht viele wenige Programme Applescript, es ist mir jedoch gelungen, ein Script zu schreiben, welches das vorderste Fenter des Finders im Terminal öffnet, hier der Code:
--
-- mein Dank für die Funktion "austauschen()"
-- geht an http://betabug.ch/austauschen.html
--
on austauschen(suchen, ersetzen, theString)
set olddelis to my text item delimiters
set my text item delimiters to (suchen)
tell me to set theList to (every text item of theString)
set my text item delimiters to (ersetzen)
set theString to theList as string
set my text item delimiters to olddelis
return theString
end austauschen
tell application "Finder"
if the (count of windows) is not 0 then
set pfad_mit_doppelpunkt to the target of the front window as string
tell me to set pfad to "/Volumes/" & austauschen(":", "/", pfad_mit_doppelpunkt)
tell application "Terminal"
activate
do script with command "cd \"" & pfad & "\""
end tell
end if
end tell
Auch wenn dieses Script sicherlich kein Meisterwerk der Programmierkunst darstellt, macht es mir das tägliche Arbeiten am Mac etwas bequemer, vor allem, wenn man mit Rails entwickelt, und nun nicht mehr manuell im Terminal zu den entsprechenden Ordnern wechseln muss.
PS. Um aus diesem Script ein Programm für Mac OS X zu machen, muss man lediglich den ScriptEditor (/Programme/Applescript/Skripteditor) öffnen, den Text in das Fenster kopieren, und das ganze als Programmbundle speichern.