SMWrapper

März 8th, 2010 von admin

Nachdem ich mir heute mit frisch entfernten Weisheitszähnen ein wenig die Zeit vertreiben musste, kam mir die Idee eines Wrapper-Programmes für sendmail.

Sendmail wird von vielen Mail Transfer Agents bereitgestellt und wurde standardisiert, damit viele Programme wie z.B. auch PHP, dieses zum Mailversand nutzen können. So auch die von mir betreuten Server bei myPowerhost.

Seit PHP 5.3 gibt es nun einen speziellen Header, welcher der E-Mail angehängt wird und angibt von welcher Webseite die E-Mail versendet wurde und auch von welcher IP aus.

Mein nun in C programmierter sendmail wrapper ersetzt das sendmail Programm und sieht für PHP, etc auch genauso aus. Nach Auswertung des Headers und, sollte kein vom Administrator per Config definiertes Limit erreicht worden sein, wird die E-Mail an das tatsächliche sendmail weitergereicht.

Limitiert werden kann die Anzahl der von einem Script zu versendenden E-Mails pro Stunde und der von der gleichen IP versendeten E-Mails ebenfalls pro Stunde. Die erhobenen Daten werden in /var/cache/smwrapper/stats zwischengespeichert und selbstverständlich werden wichtige Infos an den Syslog übergeben (Mail authority).

Darüber hinaus lässt sich die maximale Mailgröße einstellen und pro Limitierung kann eine E-Mail-Adresse angegeben werden, die bei einer Limitüberschreitung automatisch informiert wird.

Das Projekt befindet sich noch in der Entwicklung, verfügt aber schon über die soeben genannten Funktionen.

Auch hier soll die Welt etwas davon haben und somit wird das Projekt wieder bei sourceforge.net gehostet und steht unter der GPL.

Sourceforge.net SMWrapper

Geschrieben in Linux, Technik, myPowerhost | Keine Kommentare »

Datenrettung

Februar 28th, 2010 von admin

In der letzten Woche galt es eine für mich nicht alltägliche Aufgabe zu lösen:
Eine Kundin beklagte sich über das Fehlen Ihrer Netzlaufwerke und selbst der Reset des NAS zeigte keine Verbesserung.

Per Fernwartung war schnell klar, dass vom NAS zwei fehlerhafte Platten gemeldet wurden, was bei einem Raid 5 mit 5 Festplatten einen nicht wiederherstellbaren Zustand bedeutet.

Sofort wurde der Hersteller des NAS-Systems nach softwareseitiger Lösung des Problems befragt und mit einem Fernwartungszugang zum NAS ausgestattet. Als Antwort kam eine E-Mail, welche die Lage hoffnungslos erscheinen ließ:

… Das Raid ist auf jeden Fall N/A, was bedeutet, dass die Raid Informationen auf den Festplatten nicht mehr vollständig sind (da mehr als eine Festplatte ausgefallen ist). Die Daten sind nicht wiederherstellbar…

Da die verlorenen Daten allerdings wichtige Geschäftsdokumente beinhalteten und auf eine Datensicherung seitens der Kundin bis dato verzichtet wurde, brachte diese nach einer Spiegelung aller 5 Festplatten, das gesamte NAS-System mit Originalplatten zu maintec data recovery.

Mit den gespiegelten Platten versuchte ich selbst mein Glück.
Eine genauere Analyse der Plattenstruktur zeigte, dass vom NAS eine LVM-Partition erstellt wurde, welche wiederum 2 logische Partitionen beinhaltet, von denen eine, zumindest der Größe nach, die zu rettenden Daten beinhalten musste. Da es sich um ein Linux Software Raid 5 handelte, galt es nun den Verbund wieder zu aktivieren (mdadm –assemble). Doch schnell zeigte sich, dass die Raid-Informationen inklusive der UIDs auf einer Platte fehlten.
Nach einigen Kniffen und Versuchen gelang es mir dann, die Platten tatsächlich mit mdadm zusammenzuführen. Allerdings nur mit der Konsistenz 4/5, was bei einem Raid 5 aber schonmal bedeutet, dass die Daten prinzipiell wieder zu erreichen sind.

Die LVM-Devices fehlten allerdings noch im System. Schnell war klar, dass hier noch manuell die volume groups aktiviert werden mussten:

vgchange -a y

Und siehe da: Die Daten sind wieder da! 100% der Daten konnten somit auf einen externen Datenträger gesichert werden und waren wieder nutzbar.

Ein Erfolg, den man nun auch von maintec erwarten sollte. Schließlich wird dort tagtäglich Datenrettung betrieben. Allerdings kam einige Tage darauf eine E-Mail, die das Gegenteil zeigte:

Nach erfolgter Diagnose der Festplatten ergibt sich folgende Situation:
Wir haben alle technischen Möglichkeiten ausgeschöpft, leider konnten wir in Ihrem
speziellen Fall ausnahmsweise keine Daten wiederherstellen.
Wir haben ein Abbild aller fünf Medien erstellt. Dabei wurden bei zwei der fünf Medien
Defekte festgestellt.
Im Anschluss daran haben wir die ursprünglichen Raid-5 Strukturen neu aufgebaut.
Leider stellten sich die aufgefundenen Strukturen als durchweg korrupt und damit
unbrauchbar dar.
Grund: Vermutlich hat das Raid-5 nach Ausfall der ersten Harddisk ein Rebuild des
Systems gestartet. Durch Ausfall einer zweiten und eventuell einer dritten Festplatte
wurden die Daten als korrupt geschrieben und das Rebuild nicht fertiggestellt.
Leider entsprechen nur noch zwei der fünf eingelieferten Festplatten der
ursprünglichen Raid Struktur. Zu einer erfolgreichen Datenrettung hätten wir aber
mindestens vier Medien im ursprünglichen Zustand zu unserer Verfügung benötigt.
Für Rückfragen stehen wir gerne zur Verfügung.

Bezahlt werden durfte natürlich trotzdem.

Für mich persönlich unverständlich, denn mit Amateurkenntnissen und ohne die Nutzung professioneller Rettungstools konnte ich an einem Tag mehr erreichen, als diese Firma in knapp einer Woche.

Für mich persönlich war es eine erfolgreiche Aufgabe und eine schöne Flasche Sekt brachte mir das ganze auch noch!

Geschrieben in Allgemein, Technik, myPowerhost | Keine Kommentare »

Multiconvert

Februar 25th, 2010 von admin

Mir fehlte einfach ein komfortables und schlankes GUI unter Linux um Videos vernünftig konvertieren zu können, ohne die ffmpeg-Optionen auswendig kennen zu müssen.

Also habe ich ein neues OpenSource-Projekt unter GPL-Lizenz gestartet, welches in Java programmiert ist und somit auch für Mac- und Windowsuser eine brauchbare Alternative darstellt.

Wer Interesse hat erfährt hier mehr:

Multiconvert Webseite

Geschrieben in Java, Linux, Technik, myPowerhost | Keine Kommentare »

Lagrange Polynom-Generator

Januar 31st, 2010 von admin

Als zweite Hausübung in Wahrscheinlichkeitsrechnung und Numerik, habe ich mich erneut für ein Java-Programm entschieden, welches ein Thema, aus der Vorlesung aufgreift und visualisiert. Bei dem Polynom-Generator handelt es sich um einen Funktionszeichner, der sofort das Polynom bestimmt, welches durch die von mir mit der Maus angeklickten Punkte läuft. Dieses wird danach rot eingezeichnet und erscheint formell in einem weiteren Fenster:

Lagrange

Geschrieben in FH Giessen-Friedberg, Java | Keine Kommentare »

KVM Virtualisierung

Januar 31st, 2010 von admin

Bei der Virtualisierung mit KVM, findet man zwar ausführliche Tutorials zur Installation der VM, der Hardware und des Netzwerks, aber einige für die tägliche Administration nötige Punkte werden nicht angesprochen oder nicht ausführlich genug behandelt.

Ein wichtiger Punkt ist das saubere Herunterfahren der Gastmaschinen, denn beendet man einfach den qemu-Prozess, so gleicht das dem Trennen der Stromzufuhr. Besser ist das Senden eines Interrupts, zum automatischen Shutdown der Guests. Was könnte da besser geeignet sein, als das sowieso schon vorhandene ACPI?

Um einen solchen Interrupt allerdings auslösen zu können, müssen wir zur Laufzeit auf die VM zugreifen können. Deshalb fügen wir folgende Zeile dem qemu-kvm-Aufruf hinzu:

qemu-kvm ... -monitor unix:/DIR/monitor,server,nowait

Beim Starten dieses Gastes wird nun automatisch ein dazugehöriger Socket erstellt, dem wir nun Nachrichten mitteilen können, z.B. den ACPI Power-Button-Push durch “system_powerdown”:

echo "system_powerdown" | socat - UNIX-CONNECT:/DIR/monitor

Der Gast bleibt trotzdem eingeschaltet?
- Prüfen Sie ob ACPI aktiviert ist und erzwingen Sie es notfalls per Kernelparamter.
- Fangen Sie das ACPI-Event richtig ab. z.B. mit dem Programm acpid

Geschrieben in Linux | Keine Kommentare »

Firewall: Wie man sich selbst nicht mehr aussperrt

Januar 31st, 2010 von admin

Jeder, der schon einmal eine Firewall aufgesetzt hat (und ich spreche jetzt nicht von einem Klicki-Bunti-Tool wie Kaspersky, Zonealarm, oder wie Sie alle heißen), wird sich schon mindestens einmal dabei selbst ausgesperrt haben!

Arbeitet man dabei remote an einem Computer, so kann das ziemlich nervig werden und endet oft mit einem Reset der Maschine, was natürlich für gemountete Festplatten keine schöne Sache ist.

Während des Testens empfielt sich die Firewall mit einem Timer wieder zu stoppen:

./firewall start && sleep 30 && ./firewall stop

Hört man allerdings mit dem Testen auf und rechnet man nicht mehr mit einer Aussperrung, so muss man dem Rechner einen anderen Interrupt zukommen lassen.

Jetzt kommt das Server-Interface des Rechenzentrums zum Einsatz, denn dort ist oftmals die Möglichkeit gegeben, den bekannten “Affengriff”, also “STRG + ALT + ENTF” automatisch ausführen zu lassen.
Bei den meisten Distributionen erfolgt standardmäßig das herunterfahren der Maschine. Jedoch modifizieren wir dies, stoppen zuerst unsere Firewall, warten dann 60 Sekunden und fahren dann den Server schonend herunter.

Dafür eignet sich das folgende Script:

#!/bin/sh
/etc/init.d/fwall stop
sleep 60
/sbin/shutdown -r now

Eingetragen wird das Script nun in die Init-Konfigurationsdatei (/etc/inittab):

ca:12345:ctrlaltdel:/sbin/ctraltentf

Sollte es sich nun wieder um ein Firewallproblem handeln, können wir diese dennoch abschalten und haben 60 Sekunden Zeit, um den weiteren Shutdown zu beenden.

Und schon haben wir uns lästige Resets erspart ;)

Geschrieben in Linux, Technik | Keine Kommentare »

Neuronale Netze

Januar 31st, 2010 von admin

In den Weihnachtsferien habe ich erneut mit künstlicher Intelligenz experimentiert und mich diesmal auf die Methode spezialisiert, die dem Gehirn nachempfunden ist: Neuronale Netze.

Schon nach wenigen Trainingsdurchläufen zeigt diese Technik Ihr enormes Potential: Ohne einer Maschine beizubringen, wie ein Sachverhalt exakt aufgebaut ist, kann Sie dennoch (wie der Mensch) durch ausprobieren bzw. Lernen durch positive Verstärkung, zu einem sehr guten Ergebnissen kommen.

In meinen Tests habe ich mit einer virtuellen Heizungssteuerung, einem Tempomaten und einem assoziativen Bildspeicher gearbeitet.
Das Ergebnis zeigt: Nach sehr wenigen Iterationen kann man erkennen, ob ein Netz lernfähig ist und wenn ja, dass es den Erwartungswert schon sehr früh anstrebt.

Der Tempomat beispielweise hat mit simulierter Windgeschwindigkeit und Steigung schon nach 1000 Backpropagation-Prozessen eine durchschnittliche Abweichung zur Wunschgeschwindigkeit von nur 2 km/h.

Nun die ersten Iterationen des Assoziativspeichers bei dem Lernen eines Photos:

Iteration 1
Iteration 2
Iteration 3

Für meine Tests habe ich mir eine kleine Bibliothek für Java programmiert:

Neuro.jar

Einfaches Anwendungsbeispiel:

class Test
{
public static void main(String args[])
{
Netz n = new Netz(0, 100, 0.9);
n.enableLearning();

InputNeuron i1 = n.addInputNeuron();
….

Neuron n1 = n.addNeuron();
….

OutputNeuron o1 = n.addOutputNeuron(new OutputWant(n, 14));
….

n.addSynapse(i1, n1);
/* oder gleich */
n.connectAllToAll();

i1.input(5);

}
}

Geschrieben in Java | Keine Kommentare »

Media-Markt: Wie man einen Fernseher geschenkt bekommt

Januar 5th, 2010 von admin

Als ich gestern die TV-Werbung zur neuen Media-Markt Agenda 2010 gesehen hatte, dachte ich mir zunächst nichts dabei. Eine 0%-Finanzierung gab es schon öfter und wenn man sowieso keinen größeren Einkauf plant, ist es uninteressant.

Doch bis zum 8. Januar ist es während dieser Aktion zusätzlich möglich, mit der entsprechenden Endziffer auf dem Kassenbon, den gesamten Einkauf erstattet zu bekommen:
Die besagte Zahl erscheint jeweils am gleichen Tag um ca. 22:00 Uhr auf der Webseite des Media-Markts. Meldet man sich dann telefonisch, bekommt man den Kaufpreis erstattet.
Das übliche Kleingedruckte bezieht sich auf Verträge mit Drittanbietern, die von dieser Aktion ausgeschlossen sind.

Zunächst ist dies natürlich nichts Besonderes. Da 10 Endziffern möglich sind und da die Zahl fortlaufend ist, gewinnt im Schnitt jeder 10. Käufer, was für den Media-Markt im schlimmsten Fall 10% Verlust bedeutet. Da aber mit Sicherheit nicht jeder von seinem Gewinn erfährt, liegt der wirkliche Wert wohl stark darunter. Durch den großen Ansturm, den diese Aktion mit sich bringt, kann der Media-Markt also erstmal nur profitieren.

Nun kann man sich natürlich Strategien überlegen, um von dieser Aktion als Käufer besser zu profitieren:

Mögliche Strategie:
Man kauft so viele Fernseher (oder ein beliebiges anderes Gerät), bis man jede Endziffer mindestens einmal auf einem Kassenbon hat. Am Abend des Tages informiert man sich, welche Zahl gewonnen hat und beginnt am nächsten Tag die Geräte, die verloren haben, im Media-Markt umzutauschen. Bei den Gewinnern lässt man sich den Kaufpreis erstatten und somit hat man mindestens 1 Gerät geschenkt bekommen und keinen Verlust gemacht.

Doch so leicht ist es natürlich nicht!

Problem 1: Wie viele Geräte muss ich kaufen?
Nun, wir möchten jede Endziffer mindestens einmal haben und dürfen nicht davon ausgehen, dass dies nach 10 Einkäufen passiert ist!
Die Wahrscheinlichkeit nach 10 Einkäufen 10 Endziffern zu bekommen liegt bei 0,0366 %. Also so gut wie unmöglich. Man muss schon wesentlich mehr einkaufen:

Einkäufe Wahrscheinlichkeit
10 0,0366 %
15 4,633 %
20 21,5864 %
40 85,8066 %

Wer also wirklich wartet, bis alle 10 Endziffern da sind, wird einen sehr großen Einkaufswagen brauchen. Hier sehen wir somit schon, dass der Versuch mit Fernsehern (z.B. 40 * 750 € = 30.000 €), fast unmöglich ist. Kleine und günstigere Geräte sind da praktischer.

Problem 2: Die Geräte auf einzelne Bons verteilen
Man kennt es von der Kasse im Supermarkt: “Könnten Sie den Einkauf bitte auf zwei Kassenzettel trennen?”.
Was dort kein Problem ist, könnte beim Media-Markt Probleme bereiten. Denn mit mindesten 10 Fernseher hinter sich, wird das Kassenpersonal sicherlich stutzig.
Wird dies tatsächlich abgelehnt, so sollte man mehrmals am Tag den Markt besuchen und je an einer anderen Kasse bezahlen. Das stört niemanden und legal ist unsere Strategie ohnehin.

Problem 3: Die Geräte umtauschen
Einen Umtausch ohne Begründung kennt man vom Internetkauf, denn was im Fernabsatzgesetz geregelt war, findet man heute in § 312b des BGB.

Da wir hier die Geräte aber vor Ort kaufen, fällt dieses Recht weg.
Dennoch sollte man nicht verzweifeln. Ich habe persönlich eine Servicemitarbeiterin des Media-Markts auf mein Vorhaben angesprochen und wurde damit vertröstet, dass ein Umtausch nur auf Kulanz erfolgt und mir niemand meine 40 Fernseher abnehmen würde. Eine genaue Regelung dazu, konnte Sie mir allerdings nicht mitgeben und auch in den AGB des Marburger Media-Marktes ist nichts zu finden.
Das Vorhaben schien gescheitert, bis ich auf der offiziellen Webseite folgenden Text vorgefunden hatte:

… Denn Media Markt ist fair: Innerhalb von 14 Tagen können Geräte bei Nicht-Gefallen original verpackt zurückgegeben werden. …

Aktualisierung: 01.02.2010
Umtausch: Da machen Sie garantiert nichts falsch. Sollte Ihnen ein bei uns gekaufter Artikel nicht
gefallen, können Sie ihn innerhalb von 14 Tagen zurückgeben. Wir tauschen um. Ohne Wenn und Aber.

Die einzige Gefahr hierbei: Wie ich gehört habe, erfolgt der Umtausch nicht immer im Sinne von “Geld zurück”, sondern oftmals nur als Gutschrift um wieder andere Artikel bei Media-Markt einkaufen zu können. 29750 € Gutschrift sind aber sicherlich keine brauchbare Alternative!

Insgesamt komme ich für mich persönlich zum Entschluss, dass es zu viele Probleme bei dieser Strategie gibt und dies den Aufwand nicht rechtfertigt. Man denke nur daran, wie man die ganzen Geräte über Nacht lagern soll.

Dennoch sollte man so etwas nicht an sich vorbeigehen lassen, denn ich finde, wer solche waghalsige Angebote macht und die Konkurrenz damit extrem unter Druck setzt, der muss auch mit den Konsequenzen einer solchen Aktion rechnen.

Geschrieben in Sonstiges | Keine Kommentare »

Lebens-Liste.de

Juni 24th, 2009 von admin

In den letzten Wochen habe ich viel Zeit für ein neues Projekt investiert: Lebens-Liste.de

Diese Webseite soll ein neuartiges Social Network darstellen mit Familien und Menschen mit ausgeprägten Lebensvorstellungen als Zielgruppe.

Wie der Name schon sagt, gibt es dort neben den gewohnten Social-Network-Möglichkeiten, die im Fokus stehende Funktion: “Eine Lebensliste erstellen”. Diese Lebensliste kann man bearbeiten und die darauf eingetragenen Punkte abhaken, sowie einen Reisebericht oder ein Fotoalbum dazu erstellen.

Dabei kann der Benutzer selbst entscheiden, wie “privat” er vorgehen möchte und was nur für ihn, seine Freunde oder die ganze Welt, sichtbar sein soll.

Als Technik wird PHP in Verbindung mit XHTML und AJAX eingesetzt. Eine komplette frameworklose eigene Entwicklung.

Geschrieben in Allgemein | Keine Kommentare »

Algorithmentester

Mai 28th, 2009 von admin

Auf dem folgenden Bild sieht man meinen neuesten Algorithmentester, der in Java programmiert ist und mir meine Hausübung für die Vorlesung Algorithmen und Datenstrukturen erspart hat:

Java Algorithmentester

Das Programm visualisert Sortieralgorithmen und wertet diese graphisch und tabellarisch aus. (Laufzeit, Zuweisungen)

Die Vorsortierung kann nach Muster oder selbst gewählt werden; ebenso die Abspielgeschwindigkeit, die das Laufzeitergebnis nicht beeinträchtigt.

Wer es ausprobieren möchte, hat hier die Möglichkeit des Downloads:

algorithmentester.zip

Im gezippten Verzeichnis befindet sich eine kurze Dokumentation im PDF-Format, die erläutert, wie eigene Sortierverfahren implementiert werden können.

Geschrieben in FH Giessen-Friedberg, Java | Keine Kommentare »

« Frühere Einträge