January 26th, 2012 — 3:22pm
Mit der adb shell ist es einfach möglich das Handling von Intents zu testen … sehr praktisch, wenn man z.B. in der App normalerweise einen QR-Code-Scanner verwendet, um eine URL zu erhalten.
Das Kommando
adb shell am start -a android.intent.action.VIEW -d 'http://www.google.de'
öffnet z.B. den Browser.
Comment » | Snippets
December 11th, 2011 — 5:10pm
Mit diesem Script erzeuge ich für alle Virtuellen-Hosts eines Apache2-Webservers eine Konfiguration für Logrotate.
Hierzu lese ich die VHost-Konfigurationen in /data/sites ein und parse daraus die Pfade zu den Logfiles.
Anschließend erzeuge ich mit Hilfe eines Templates die eigentliche Konfigurations-Datei im logrotate.d-Ordner.
logrotate-config.sh
#!/bin/bash
CONFDIR=/data/sites/
TEMPLATE=/data/sites/logrotate.conf.template
OUTFILE=/etc/logrotate.d/`hostname`-apache
echo "# DO NOT EDIT!" > $OUTFILE
echo "# automatically generated by $0 on `date`" >> $OUTFILE
echo "" >> $OUTFILE
for i in `cat $CONFDIR/*.conf | grep -i -E "(Transfer|Error|Custom)Log" | awk '{ print $2; }' | sort | uniq`
do
echo -n "$i " >> $OUTFILE
done;
echo $OUTFILE
cat $TEMPLATE >> $OUTFILE
cat $OUTFILE
/data/sites/logrotate.conf.template
{
missingok
notifempty
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null 2>&1 || true
endscript
rotate 9999999
}
Comment » | Snippets
July 11th, 2011 — 5:12pm
Der Dummy-Image-Generator erzeugt auf Wunsch die passenden Bilder. Wenn man aber auch mal lokal ein paar Dateien braucht, um z.B. einen Uploader oder eine Galerie zu testen, kann man sich mit ein paar Zeilen Python schnell ein paar Testbilder erzeugen:
from itertools import cycle
from urllib.request import urlretrieve
words = cycle("Lorem ipsum dolor sit amet consectetur adipiscing elit Etiam
sit amet tortor velit id consectetur ipsum Morbi id nulla diam sit amet".split(" "))
colors = cycle(["1b9e77","d95f02","7570b3","e7298a",
"66a61e","e6ab02","a6761d","666666","a6cee3","1f78b4",
"b2df8a","33a02c","fb9a99","e31a1c","fdbf6f","ff7f0",
"cab2d6","6a3d9a","ffff99","b15928"])
for i in range(10):
word = next(words)
url = "http://dummyimage.com/1280x1024/%s/000000.jpg&text=%s"
% (next(colors), word)
print(urlretrieve(url, "%s.jpg" % word))
Comment » | Snippets
January 20th, 2011 — 6:44pm
Ja, manchmal muss man halt via SSH auf Maschinen rumhacken, auf denen es kein vernünftiges Error-Reporting gibt. Und wenn dann die Seite weiß bleibt, hilft dieses Kommando, um heraus zur finden, welche der Dateien man zerschossen hat:
svn status | grep "\.php$" | grep "^M" | awk '{ print $2; }' | xargs -i php -l {}
Das svn status am Anfang verrät schon, zumindest über eine SVN working copy zu verfügen ist dabei äußerst hilfreich.
Die Alternative dazu, ohne SVN ist
find ./ -type f -name "*.php" | xargs -i php -l {}
was aber natürlich sehr viel langsamer ist.
Comment » | Snippets, Technik
November 16th, 2010 — 11:05am
2 comments » | Snippets
June 18th, 2010 — 1:08pm
Oft ruft man Bash-Scripte ja mit relativen Pfaden auf:
$ ./util.sh
Dieses kleine Snippet liefert einem in diesem Fall den absoluten Pfad zum aktuellen Script.
#!/bin/bash
MYDIR="`cd $0; pwd`"
echo $MYDIR
Möchte man den absoluten Pfad zu einem Verzeichnis weiter oben, nimmt man dieses Snippet:
#!/bin/bash
MYDIR=`dirname $0`
PARENT="`cd $MYDIR/../; pwd`"
1 comment » | Snippets
June 16th, 2010 — 12:41pm
In Java 1.6 gibt es einen Bug im Dom-XML-Parser, der Whitespaces trotz aktiviertem Hinweis nicht entfernt.
DocumentBuilderFactory domBuilderFactory = DocumentBuilderFactory.newInstance();
domBuilderFactory.setIgnoringElementContentWhitespace(true);
Abhilfe schafft da diese Methode:
/**
* Entfernt whitespace aus dem Document
*
* @see http://forums.java.net/jive/thread.jspa?messageID=345459
* @param e
*/
private static void removeWhitespaceNodes(Element e) {
NodeList children = e.getChildNodes();
for (int i = children.getLength() - 1; i >= 0; i--) {
Node child = children.item(i);
if (child instanceof Text && ((Text) child).getData().trim().length() == 0) {
e.removeChild(child);
} else if (child instanceof Element) {
removeWhitespaceNodes((Element) child);
}
}
}
1 comment » | Snippets
May 15th, 2010 — 12:54pm
Um sich die wiederkehrende Passwort-Abfragen für SSH-Keys auf der Konsole zu sparen, führt man folgende Kommandos aus:
eval "$(/usr/bin/ssh-agent -s)"
ssh-add -L
Das startet den SSh-Key-Agent und damit ist das Passwort des Keys für die aktuelle Sitzung gespeichert und wird nicht mehr abgefragt.
Comment » | Snippets
May 13th, 2010 — 12:50pm
Dieses Bash-Script konvertiert alle Nicht-UTF-8-Dateien in einem Verzeichnis und in allen Unterverzeichnissen nach UTF-8.
find ./ -type f -name "*.php" | xargs file | grep ISO-8859 | awk '{print substr( $1, 0, length($1) - 1); }' | xargs -i recode ISO-8859-1..UTF-8 {}
Comment » | Snippets
May 12th, 2010 — 12:00pm
Dieses kleine Bash-Script, versendet als Cronjob eingetragen, E-Mails an den root-User, wenn der Plattenplatz auf allen gemounteten /dev/hd*-Platten weniger als 1 GB beträgt.
for i in `df | grep "/dev/hd" | grep -e "[a-z]$" | awk '{ print $4; }'`; do if [[ $i -gt 999999 ]]; then df -h | mail root -s "Low diskspace warning for `hostname -f`"; break; fi; done
Comment » | Snippets