Kategorie: Tipps

  • HTML/XML Code in WordPress Kommentaren

    Ein Leser des Blogs wollte seine Lösung eines Problems in Form von HTML/XML Code als Kommentar veröffentlichen. Dies misslang aber, da WordPress HTML/XML Code aus Sicherheitsgründen aus den Kommentaren herausfiltert. In anderen Blogs fand ich einen Hinweis, dass zur Anzeige von Code in Kommentaren zusätzliche Plugins nötig sind. Die wollte ich aber nicht installieren und maskierte den HTML/XML Code, den mir der Blogleser als Mail zugesendet hat. Damit ich dies nicht manuell machen musste, suchte ich mir eine Website, die HTML/XML Code online maskiert. Auf http://www.opinionatedgeek.com/dotnet/tools/htmlencode/encode.aspx kann man HTML Code per Knopfdruck online maskieren. Mit diesem maskierten HTML/XML Code konnte ich dann den Kommentar vervollständigen. Dies kann man natürlich auch schon selbst machen, wenn man HTML/XML Code in einem Kommentar posten möchte.

  • Wie kann man bei dem Typo3-Feature „Klick-vergrössern“ die Größe der vergrößerten Bilder anpassen?

    Als ich in Typo3 ein Bild mit der Funktion „Klick-vergrössern“ vergrößern wollte, war das vergrößerte Bild kleiner als das Orginalbild. Auf der Weboberfläche fand ich keine Option, wo ich die Größe des vergrößerten Bild einstellen konnte.

    Auf www.typo3-tutorials.org fand sich die Lösung des Problems.

    Um die Maximalgröße der vergrößerten Bilder zu definieren, ist TypoScript notwendig. Im Constants Editor

    kann man mit folgenden Zeilen die Größe des vergrößerten Bildes festlegen:

    styles.content.imgtext.linkWrap.width = 500
    styles.content.imgtext.linkWrap.height = 500

    Die angegebenen Werte sind Maximalwerte. Die Bilder werden proportional skaliert und nicht verzerrt.

  • Variablen bei sed-Ausdrücken

    Problem: Beim Suchen und Ersetzen eines Strings in einer Textdatei mit dem Linux-Programm sed (Stream Editor) trat das Problem auf, dass bei der Verwendung von Shellvariablen als Suchmuster der gewünschte Text, also der Wert der Variablen, nicht durch den Zieltext ersetzt wurde. Ein Test ohne Variablen funktionierte aber ohne Probleme.

    sed ’s/suchmuster/zieltext/g‘ Eingabedatei > Ausgabedatei
    mv Ausgabedatei Eingabedatei

    ersetzte den Text „suchmuster“ in der „Eingabedatei“ mit dem Text „zieltext“ und schrieb das Ergebnis in die „Ausgabedatei“.

    Folgendes funktionierte aber nicht:

    suchmuster=“das ist der quelltext“
    zieltext=“das ist der zieltext“
    sed ’s/$suchmuster/$zieltext/g‘ Eingabedatei > Ausgabedatei
    mv Ausgabedatei Eingabedatei

    Der Text „das ist der quelltext“ wurde nicht durch den Text „das ist der zieltext“ ersetzt.

    Lösung: Durch eine Suchmaschinenrecherche fand ich die Lösung. Sed wertet den Inhalt von Variablen nicht aus, wenn man einfache Anführungszeichen (‚) beim Erstellen des Ausdrucks verwendet. Ersetzt man die einfachen Anführungszeichen durch doppelte Anzührungszeichen („), werden zuerst die Variablen expandiert und dann erst der Sed-Ausdruck ausgeführt.

    Der funktionierende Code sah dann so aus:

    suchmuster=“das ist der quelltext“
    zieltext=“das ist der zieltext“
    sed s/$suchmuster/$zieltext/g Eingabedatei > Ausgabedatei
    mv Ausgabedatei Eingabedatei

    Quelle: http://www.unixboard.de

  • Bash: Löschen von Zeilen aus einer Datei, die ein bestimmtes Suchmuster enthalten

    Das Löschen von bestimmten Zeilen aus einer Datei kann mithilfe einer temporären Datei und dem Kommandozeilentool grep geschehen. Grep gibt alle Zeilen einer Textdatei aus, die einem bestimmten Suchmuster entsprechen. Die Option -v von grep negiert die Ausgabe von grep. Es werden dann nur Zeilen einer Datei ausgegeben, die ein bestimmtes Suchmuster nicht enthalten. Die Ausgabe auf dem Bildschirm kann man nun in eine temporäre Datei umleiten. Im Anschluss daran kann man die Originaldatei mit der temporären Datei überschreiben. Nun hat man eine Datei, aus der diejenigen Zeilen entfernt wurden, die ein bestimmtes Suchmuster enthielten.

    grep -v  suchmuster originaldatei > tempdatei
    mv tempdatei originaldatei

  • Problem mit Pagebrowser bei tt_news in Verbindung mit dem Typo3 Plugin CoolURI

    Nachdem wir uns bei einigen Projekten mit der Konfigurationsdatei der Typo3 – Extension realurl mehr schlecht als recht herumgeschlagen hatten, waren wir froh, mit CoolUri eine alternative Typo3 – Extension für „schönere“ Urls gefunden zu haben. Bei Tests bemerkten wir, dass der Pagebrowser der tt_news Extension nicht mit CoolUri funktionierte.

    Eine Web-Recherche brachte folgende Lösung:

    1. Anpassen des TypoScript Templates:

    Folgende Zeile muss dem Typoscript Template der Seite hinzugefügt werden:

    plugin.tt_news = USER_INT

    Quelle:

    2. Anpassen der CoolURI XML Konfigurationsdatei:

    Folgender Abschnitt muss der XML – Konfigurationsdatei von CoolURI hinzugefügt werden:

    <part key=“page([0-9]+)“>
    <parameter>tx_ttnews[pointer]</parameter>
    </part>

    Quelle:

    Diese Anpassungen von CoolURI bewirken, dass die tt_news Seiten beim „Pagebrowsing“ in der URL einfach durchnummeriert werden. 1.html, 2.html etc.

  • Reguläre Ausdrücke – regex, singleline, non-greedy

    Ich habe mich bisher nur so viel wie nötig mit regulären Ausdrücken beschäftigt. Der komplexe Syntax und das kryptische Aussehen der regulären Ausdrücke haben mich bisher davon abgeschreckt, reguläre Ausdrücke zu benutzen. Kürzlich hatte ich aber das Problem, in vb.net Text zwischen einer Startmarkierung und einer Endmarkierung zu suchen. Natürlich kann man das auch mit den .net Stringfunktionen erreichen, aber ich wollte es dieses Mal mit regulären Ausdrücken versuchen.

    Nach einigen Anfangsproblemen bin ich nun richtig begeistert von der Mächtigkeit der regulären Ausdrücke.

    Mein erstes Problem war, dass sich mein zu analysierender Text über mehrere Zeilen zog, also waren Zeilenumbrüche vorhanden. Ebenso zogen sich die zu extrahierenden Textstellen über mehrere Zeilen. Meine regulären Ausdrücke lieferten nicht das erwartete Ergebnis. Besser gesagt: Sie lieferten gar kein Ergebnis.

    Nach etwas Internetrecherche erfuhr ich, dass bei der Erstellung eines regex Objektes Optionen angegeben werden können. In vb.net findet sich das Ganze unter: System.Text.RegularExpressions.RegexOptions

    Ohne weiter nachzulesen, wählte ich die Option Multiline, da ich ja Text zeilenübergreifend analysieren wollte. Diese Option lieferte aber zu meiner Überraschung ebenfalls kein Ergebnis.

    Also machte ich mich daran, die Optionen näher anzuschauen. Dabei fand ich eine weitere Option: Singleline. Und genau diese muss man angeben, um das gewünschte Ergebnis zu erreichen. Ich finde das Ganze zwar etwas verwirrend: Singleline für zeilenübergreifendes Analysieren – aber Hauptsache, es funktioniert.

    Wenn man also Text in vb.net mit regulären Ausdrücken über mehrere Zeilen hinweg analysieren möchte, muss man folgende Option einstellen:

    System.Text.RegularExpressions.RegexOptions.Singleline

    Beispiel:

    Text, der analysiert werden soll:

    start text1
    text2
    text3 ende

    Regulärer Ausdruck: start(.*)ende

    Dieser Ausdruck soll einen String zwischen start und ende extrahieren.

    Ergebnis ohne die Option Singleline:

    – Es wird nichts gefunden

    Ergebnis mit der Option Singleline:

    text1
    text2
    text3

    Danach tauchte aber ein weiteres Problem auf. Bei sich mehrfach wiederholenden Mustern im Text, wurde immer die größtmögliche Ergebnismenge zurückgeliefert. Ich brauchte aber jede einzelne Ergebnismenge. Das Ganze wird an einem Beispiel deutlicher:

    Text, der analysiert werden soll:

    start text1
    text2
    text3 ende
    start text4
    text5
    text6 ende

    Der Regulärer Ausdruck: start(.*)ende liefert folgendes Ergebnis:

    text1
    text2
    text3 ende
    start text4
    text5
    text6

    Gewünscht waren aber 2 Ergebnismengen:

    Ergebnis 1:

    text1
    text2
    text3

    Ergebnis 2:

    text4
    text5
    text6

    Bei der Lösung dieses Problems stieß ich auf die Begriffe greedy (gierig) und non-greedy (nicht gierig) im Zusammenhang mit der Definition von regulären Ausdrücken. Greedy bedeutet, es wird immer die größtmögliche Ergebnismenge zurückgeliefert und non-greedy bedeutet, es wird die kleinstmögliche Ergebnismenge zurückgeliefert. Standartmäßig zeigen reguläre Ausdrücke ein „gieriges (greedy)“ Verhalten. Um ein „nicht gieriges (non-greedy)“ Verhalten zu erreichen, muss man bei der Definition von regulären Ausdrücken nach dem Quanifizierer noch ein ? anfügen.

    Beispiel:

    Text, der analysiert werden soll:

    start text1
    text2
    text3 ende
    start text4
    text5
    text6 ende

    Der reguläre Ausdruck: start(.*?)ende liefert das gewünschte Ergebnis:

    Ergebnis 1:

    text1
    text2
    text3

    Ergebnis 2:

    text4
    text5
    text6

  • Packen und Entpacken mit tar

    Weil ich als Windowsadmin immer wieder den Syntax von tar nachschlagen muss:

    Packen

    tar cfvz archiv.tar.gz verzeichnis/

    • Sichert das Verzeichnis „verzeichnis“ in die Datei archiv.tar.gz – dabei wird die GZip Komprimierung verwendet.
    • Das Verzeichnis ‚verzeichnis‘ wird mit relativem Pfad im Archiv gespeichert.
    • Symbolischen Links wird nicht gefolgt, sondern der Link wird gesichert.
    • Owner und Group Informationen sowie Rechte werden unverändert mitgesichert.

    tar cfvz archiv.tar.gz /srv/www/vhosts/verzeichnis/

    • Sichert das Verzeichnis mit absolutem Pfad. Dieser Pfad wird beim Entpacken ausgehend vom aktuellen Verzeichnis wiederhergestellt.

    Entpacken

    tar xfvz archiv.tar.gz

    • Entpackt den Inhalt des Archivs „archiv.tar.gz“ in den aktuellen Ordner.
  • CPU Last unter Linux monitoren – sar

    Die CPU-Last lässt sich unter Linux ganz einfach mit dem Befehl top ermitteln. Hier erfährt man die gesamte CPU-Last, aber auch den CPU Verbrauch einzelner Prozesse.

    Wenn man die gesamte CPU-Auslastung in bestimmten Zeitintervallen ermitteln möchte, eignet sich der Befehl sar besser.

    Um den Befehl sar benutzen zu können, muss das Programmpaket sysstat installiert sein.

    Der Syntax, um mit dem sar-Befehl die CPU-Last zu monitoren, lautet:

    sar -u 5 100

    5 gibt das Intervall in Sekunden an, in dem die CPU-Last ermittelt werden soll.

    100 gibt die Gesamtanzahl an, wie oft die CPU-Last ermittelt werden soll.

    Die Ausgabe sieht dann folgendermaßen aus:

    14:30:08 CPU %user %nice %system %iowait %idle
    14:31:08 all 16.87 0.00 3.41 5.02 74.70
    14:31:13 all 31.12 0.00 9.44 9.64 49.80
    14:31:18 all 23.85 0.00 6.81 2.61 66.73
    —— snip —-
    Average: all 5.72 0.00 1.14 0.58 92.56

    Unter Debian befindet sich das Programm sar im Paket sysstat.

     apt-get install sysstat

     

  • Die Windows Eingabeaufforderung per Eintrag im Explorer-Kontextmenü in einem bestimmten Ordner öffnen

    Obwohl dies an diversen Stellen im Netz zu finden ist, hier noch einmal, weil ich jedes Mal Google bemühen muss.

    Windows Registry Editor Version 5.00
    [HKEY_CLASSES_ROOT\Directory\shell\OpenNew]
    @ = "Eingabeaufforderung"
    [HKEY_CLASSES_ROOT\Directory\shell\OpenNew\Command]
    @="cmd.exe /k cd %1"

    Alles in eine Textdatei mit der Endung .reg einfügen, abspeichern und ausführen. Und schon hat man dem Kontextmenü des Explorers einen CMDHere Eintrag hinzugefügt. Ab sofort kann man mit diesem Eintrag die Windows Eingabeaufforderung (Kontextmenüeintrag: Eingabeaufforderung) in einem bestimmten Verzeichnis öffnen.

    Wer es genauer wissen will, kann sich folgenden Artikel in der KnowledgeBase von Microsoft anschauen:
    How to start a command prompt in a folder in Windows Server 2003, Windows XP, and Windows 2000

  • Aktivieren und Deaktivieren von Apache2 Modulen – a2enmod – a2dismod

    Nachdem ich schon etliche Male die Apache Konfigurationsdatei /etc/sysconfig/apache2 bei Suse von Hand bearbeitet hatte, um Apache2 Module zu aktivieren, ist mir letztens ein Befehl oder, besser gesagt, zwei Befehle untergekommen, die das Ganze automatisieren.

    Dies sind a2enmod um Apache Module zu aktivieren

    und

    a2dismod um Apache Module wieder zu deaktivieren.

    Der Syntax ist denkbar einfach:

    a2enmod MODULNAME aktiviert das Apache2 Modul MODULNAME

    a2dismod MODULNAME deaktiviert das Apache2 Modul MODULNAME

    Weiterhin listet der Befehl a2enmod -l alle aktivierten Apache2 Module auf.

    Beispiel:

    a2enmod ssl aktiviert das ssl Modul.

    a2dismod ssl deaktiviert das ssl Modul.

    Nachtrag 06/2011:

    Apache Modulhandling unter Debian 6

    a2enmod -l funktioniert unter Debian nicht. Eine Liste mit den aktivierten Apache modulen erhält man mit:
    ls -l /etc/apache2/mods-enabled/

    Eine Liste mit den zur Verfügung stehenden Modulen erhält man mit:
    ls -l /etc/apache2/mods-available/

    Eine weitere Möglichkeit sich alle geladenen Module anzuzeigen ist der Befehl
    apachectl -M
    (-M  Dump a list of loaded Static and Shared Modules.)

    apachectl -M
    Loaded Modules:
     core_module (static)
     log_config_module (static)
     logio_module (static)
     version_module (static)
     mpm_prefork_module (static)
     http_module (static)
     so_module (static)
     alias_module (shared)
     auth_basic_module (shared)
     authn_file_module (shared)
     ....
    Syntax OK

    Weitere Infos: Apache Modulverwaltung unter Debian