SQL für den Gottimperator

Ab und an steht man in SQL vor Problemen. Ich schätze mich weder als Laien, noch als Könner ein. Eher als Hasser und erklärten Feind von Datenbankkrams. Irgendwann wirds auch Objektorientierte Datenbanken für die Breite Masse und OpenSource geben, oder ich mache nur noch Sachen mit Ruby on Rails. Leider liegt das noch in einer weiten oder weniger weit entfernten Zukunft und ich muß den Müll immer noch  selbst machen. Eben stand ich vor dem Problem, dass ich entweder ein Update, oder ein Insert machen muß. Statt die Chose mit 5 Zeilen PHP zu lösen (was noch gruseliger wär) hab ich mir folgenden Befehl ergooglet (das prepared Statement kann mich an dieser Stelle mal)

$stmt=“

INSERT INTO cron_result (r_id, b_id,time, result, resultcode) VALUES ($r_id,$b_id,NOW(),“$retval“,$retcode)

ON DUPLICATE KEY

UPDATE time=NOW(), result=“$retval“, resultcode=-$retcode

„;

Toller Trick. Die Now Funktion aus einem älteren Beitrag wurde auch Weise genutzt 🙂

apt-get mit Log- und Reversefunktion

Es gibt schlimme Dinge auf dieser Erde. Dazu gehört – zumindest für mich – das Aufspielen von PC’s. Das OS Setup muß durchgeklickt werden, etliche Programme wollen neu installiert werden. Isos von meinem Betriebssystem möchte ich nicht anlegen, weil dann der alte Murks wieder auf der HD ist. Unter Linux hab ich dieses Leid nun ein wenig gemindert. Ich protokolliere einfach meine Installtionen mit einem Perlskript. Falls ich neu aufspielen muß, lass ich Aptitude den geloggten Kram einfach installieren.Vorteile gegenüber einem Image wären der Zeitaufwand (Image erstellen zieht sich hin) und daß man  sofort die aktuellen Versionen installiert hat; da ist normalerweise ein wenig Nacharbeit (update) erforderlich.

Klingt gut, klappt prima, bis auf den Fakt, dass die Completion mit TAB nicht klappt. (für mich ist das gut, da es mich davon abhält irgendeinen Sinnloskram in das Log zu schreiben, der mir dann später wieder an der Backe hängt:-).)

Was nun noch fehlt ist ein kleines Perl Skript, welches interessante Configfiles für mich sichert (in Arbeit). Danach wird mich eine Neuinstalltion wohl nicht mehr schocken. Der nächste Idiotengriff zu einem Developerrepository kann also kommen…

Hier noch die Skripte

#!/usr/bin/perl
###################
#authr:schmie
#log-get
#Ruft apt-get install auf und loggt die installationen in eine datei
###################

my $file=“$ENV{HOME}/.apt-getlog“;

my $exec = „apt-get -y  install “ .$ARGV[0];
my $log= „echo $ARGV[0] >> $file“;

if (system ($exec)  == 0)
{
system („touch $file“);
system ($log);
system („sudo chmod 777 $file“);
}

und das „Reversescript“

#!/usr/bin/perl
###################
#authr:schmie
#log-get-reverse
#Installiert alle App’s die in apt-getlog geschrieben sind:)
###################

my $file=“$ENV{HOME}/.apt-getlog“;
my @appnames;

open (FILE, „<$file“) || die „.apt-getlog nicht gefunden!n“;
while (<FILE>)
{
push (@appname,$_);
}#while
close (FILE);

my $y;
while (@appname)
{
$x=pop(@appname);
$x=~s/n/ /;
$y.=$x;
}
my $exec = „apt-get -y  install $y“;
system ($exec);

Für Anregungen und Kommentare wäre ich sehr empfänglich 🙂