mit shell script und diff dateien prüfen

25. August 2010 von sägefisch

Um durch etwaige Cronjobs eine Prüfung von 2 Dateien und darauf folgende Aktionen zu erzeugen, kann ein shell script Verwendung finden.

#!/bin/bash

SOURCE=/mount/data/new_file.txt
TARGET=/srv/www/vhosts/www/app/config/old_file.txt

diff -i -b -B -q ${SOURCE} ${TARGET}

if [ ! $? -eq 0 ]
then
    echo "new file is different from old one - copy new one to old"
    cp ${SOURCE} ${TARGET}
else
    echo "no difference between files - nothing to do"
fi

Die Machete im Android Dschungel

20. Juni 2010 von sägefisch

Um in der Vielzahl von Android Applikationen die Guten herauszufinden, macht androidpit.de die entscheidenden Tests und gibt gute Entscheidungshilfen.

kohana twitter api modul

14. Juni 2010 von sägefisch

Das Kohana Twitter API Modul macht es einem sehr einfach Twitter in seine Applikationen einzubeziehen.

Hier gehts zum Kohana Projekt

GIT für SVN Umsteiger

14. Mai 2010 von sägefisch

Unter folgendem Link findet Ihr die GIT Quickreferenz für SVN Umsteiger.

http://git-scm.com/course/svn.html

Agavi Custom Logger implementieren

07. Mai 2010 von sägefisch

Um in Agavi custom logfiles zu erstellen, benötigt man einen eigens erstellten logger + appender in der app/config/logger.xml.

<!-- logs only custom messages in a custom log -->
<logger name="custom" class="AgaviLogger" level="'custom'">
    <appenders>
        <appender>CustomLogAppender</appender>
    </appenders>
</logger>

<appender name="CustomLogAppender" class="AgaviFileLoggerAppender" layout="DateTimeLayout">
    <ae:parameters>
        <ae:parameter name="file">%core.app_dir%/log/custom.log</ae:parameter>
    </ae:parameters>
</appender>

Dann kann man den Logger quasi überall wo der LoggerManager verfügbar ist benutzen.

$message = 'Custom logging message';
$this->getContext()->getLoggerManager()->log(new AgaviLoggerMessage($message, 'custom'), 'custom');

Und in der bash das logfile einsehen.

tail -f app/log/custom.log

Agavi routing specials

03. Mai 2010 von sägefisch

Um bestimmte Agavi output_types bei speziellen routings zu bedienen kann man die routing.xml wie folgt anpassen.

<!-- cut out leading slash -->
<route name="slasher" pattern="^/" stop="false" imply="true" cut="true" />

<!-- match ajax calls with special http header -->
<route pattern="XMLHttpRequest" source="_SERVER[HTTP_X_REQUESTED_WITH]" stop="false" output_type="ajax" />

<!-- match json calls with special http header -->
<route pattern="application/json" source="_SERVER[HTTP_ACCEPT]" stop="false" output_type="json" />

<!-- cut out special pointer -->
<route name="portal" pattern="^({portal:[a-zA-Z]{3}}/)?" stop="false" imply="true" cut="true">
    <callbacks>
        <callback class="RoutingCallback" />
    </callbacks>
</route>

SVN WorkingCopy Version Format ändern

03. Mai 2010 von sägefisch

In verteilten Systemen kommt es des öfteren vor, das unterschiedliche SVN Versionen zum Einsatz kommen.

Wenn euer SVN diese Meldung ausgibt:

svn: This client is too old to work with working copy 'xyz'.  You need to get a newer Subversion client, or to downgrade this working copy. See http://subversion.tigris.org/faq.html#working-copy-format-change for details.

kann das Python Script change-svn-wc-format eine SVN WorkingCopy in ein bestimmtes anderes SVN Versionsformat wechseln.

Ordner mit gzip packen und entpacken.

16. März 2010 von sägefisch

Da GZIP selbst keine ganzen Ordner packen kann, kann man TAR das gepackte Archiv erzeugen lassen.

user@server: tar cvzf ordner.tar.gz ordnername
user@server: tar zxvf ordner.tar.gz

:nth-of-type Pseudo-Klasse macht Tabellen-Zeilen Highlighting einfach

03. März 2010 von sägefisch

Das abwechselnd farbliche Absetzen von Tabellenzeilen in HTML kann auch mittels einer CSS 3 Pseudo Klasse umgesetzt werden.

/* heighlight jeder 2ten zeile beginnend mit der ersten */
tr:nth-of-type(2n+1) { background-color:#f7f7f7; }

/* heighlight jeder 2ten zeile beginnend mit der zweiten */
tr:nth-of-type(2n) { background-color:#f7f7f7; }

Der InternetExplorer weigert sich leider bis dato diese CSS 3 Angaben zu interpretieren.

Mehr Informationen zu CSS 3 Selektoren liefert der W3C

Shell Scripting Guide

02. Dezember 2009 von sägefisch

Hier findet Ihr den Shell Scripting Guide:

freeos.com/guides/lsst/

Dann kann man beispielsweise so kleine Helferlein zum Löschen von Logs und Caches wie diesen hier basteln:

#!/bin/bash
cd `dirname $0` # go to scripts dir
cd .. # step ahead
arr[0]='Application1/app/cache/*'
arr[1]='Application1/var/cache/*'
arr[2]='Application2/application/cache/*'
arr[3]='Application2/application/logs/*'
arr[4]='Application2/pub/tmp/*'
arr[5]='Application3/application/cache/*'
arr[6]='Application3/application/logs/*'
arr[7]='Application3/pub/tmp/*'

i=0
while [ $i -lt ${#arr[@]} ]
do

rm -rf ${arr[$i]}
echo "${arr[$i]} deleted"

(( i=$i+1 ))
done