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.
Kategorie: Tipps
-
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 = 500Die 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 Eingabedateiersetzte 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 EingabedateiDer 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 EingabedateiQuelle: 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
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>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 endeRegulä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
text3Danach 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 endeDer Regulärer Ausdruck: start(.*)ende liefert folgendes Ergebnis:
text1
text2
text3 ende
start text4
text5
text6Gewünscht waren aber 2 Ergebnismengen:
Ergebnis 1:
text1
text2
text3Ergebnis 2:
text4
text5
text6Bei 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 endeDer reguläre Ausdruck: start(.*?)ende liefert das gewünschte Ergebnis:
Ergebnis 1:
text1
text2
text3Ergebnis 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.56Unter 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

