So, kann losgehen…
http://twitter.com/Gerksy
Halbzeit
17. April 2009So Freunde, der April ist auch schon halb rum und daher die Top Neuigkeiten für Euch kurz zusammenfasst.
Kino
Schauburg in Karlsruhe. Noch nie was gehört? Nein? Ich auch nicht. Waren neulich dort. Ist Kino wie früher irgendwie. Die haben dort wohl aber alles einfach digital und zeigen zum Beispiel My Bloody Valentine in 3D. Yepp tatsächlich mit so 3D Brillen, sehr coole Sache. Ist zwar etwas anstrengend macht aber irgendwie Laune wenn einem Stücke aller Art entgegenfliegen. Der Film fordert jetzt auch nicht gerade den “Intellekt” aber Spaß macht es trotzdem.
Smarty
Im Juni kommt der Diesel weg. Günstig war er und verhältnismäßig sparsam - also im Vergleich zum SLK. Im Vergleich zu den anderen 772 Smarts die bei Spritmonitor eingetragen sind habe ich den sensationellen letzten Platz gemacht. Der Neue wird ein Benziner und komplett schwarz. Irgendwie versuche ich daran zu glauben das der bei meinem Fahrprofil sogar etwas weniger verbrauchen wird - aber lassen wir uns überraschen.

Allvatar
Kaum sind die WoW Server mal einen Tag down und schon rappelts bei “uns” im Karton. Da können sich die Besucherzahlen auch mal kurz verdreifachen. Die gute Nachricht ist das der Server das inzwischen wegsteckt wenn 700 User ihr Unwesen auf der Seite treiben. Wohlgemerkt läuft die Hauptgeschichte auf normalo 2 Servern wie man sie an “jeder Ecke” findet. So genug gelobt, die schlechte Nachricht ist nämlich das die vielen Serverausfälle die mich seit Monaten geplagt haben zwar Geschichte sind aber auch irgendwie mein Versagen (natürlich nur indirekt *hust*) daher werd ich mich am Wochenende auch schön betrinken. Vielleicht mach ich auch eine Metger- oder Bäckerlehre. Mal sehen.
Gedankenguuuut
Das ein oder andere Kreuz im Kalender steht demnächst an und zum Teil schon lange aus. Aber kaum ist das eine Kundenprojekt fast durch kündigen sich die nächsten an. Ist ja auch alles nicht schlecht solange der Buffer nicht überläuft. Macht einen ganz fertig - kommt das Wochenende doch grad’ wie gerufen
Twitter
Ziemlich großer Hype hier um den Laden ohne Geschäftsmodell. Der erste “Freund” hat Neuerdings die erste erste Million Anhänger. Keine Ahnung was das bedeutet aber hört sich nach viel an. Gut die sammeln ja auch eine Million nach der anderen Kohle ein. Mir macht es etwas Angst das ich auf dem Twitter Gebiet schon irgendwie ein Noob bin. Kacknoob um genau zu sein. Andererseits beruhigt es mich auch das ich noch nicht alles mitmachen muss. Fehlt nicht mehr viel, dann twitter ich demnächst auch … technisch ja schon sehr easy was für Mengen an Daten die Jungs da bewältigen müssen.
“Hier so Formularfeld, kann man 140 Zeichen eintragen, abschicken und das erscheint dann da auf der Seite. Hat man früher auch mal Gästebuch genannt und war damals der Trend. Wir machen das jetzt neu und cheezy easy fresh zwo.null my friend. “Ohne” Spam und für jeden individuellst individuell”
Bin fasziniert. Macht mich ganz fertig. So Freunde, Feierabend.
Besucherentwicklung durch Google Sitemaps
24. March 2009Auf anraten habe ich für den A3 Freunde Forenbereich eine Google Sitemap erstellt und diese über die Webmastertools übermittelt.
Ich hatte mehr Angst als Hoffnung. Schließlich sind knapp 95.000 Seiten eine Menge Holz und wer weiss schon wie der Suchriese auf diesen Wink reagiert. Die erst Woche passierte auch ziemlich genau gar nichts. 6 Seiten wurde indexiert und ich dachte schon an Misserfolg auf der ganzen Linie.
Nach und nach fielen mir aber die leicht steigenden Besucherzahlen auf und tatsächlich, immer mehr finden die Seite über Google und anderen, neuen Suchbegriffen. Laut Webmastertools wurden zwischenzeitlich auch schon fast 20.000 Seiten indexiert.

~10% Plus, gemessen jeweils am Montag.
Bleibt nur zu hoffen das die restlichen Seiten auch indexiert werden und dann bin ich sehr gespannt wie sich das weiter entwickelt. Seit Jahresanfang steigen die Besucherzahlen von diversen Webprojekten aber sowieso sehr stark an. Gibt es eine Welle neuer DSL Anschlüsse in Deutschland oder was ist da los?
Free Image Hosting von Gedankengut
27. February 2009Schnell, unkompliziert und endet in superkurzen Links.
Ideal für Twitter, Foren und den Hausgebrauch.
http://pf24.de
Please, spread the news!
Lieber Mercedes …
14. February 2009… geh mir nur weiter auf den Sack. Andere Väter haben nämlich auch schöne Töchter und ruck zuck biste raus.
Nicht nur das die Karre mucken macht auch Mercedes selbst sagt “nun ja Sie haben eben nur 2 Jahre Garantie” und beteiligt sich mit 75% an den Kosten von 2.900€. Bleiben außerplanmäßige 750€ zu den 800€ vor einem halben Jahr - damals für den Kat.
Diesmal jault das “Hinterachsmittelstück” auf Deutsch Differential aber bei einer nach was klingenden Bezeichnung kann man für ein werksüberholtes Teil im Austausch ja auch mal 1.900 Tacken netto verlangen.
Alles Dinge die bei 46.000km nicht sein dürfen. Premium eben, Premiummäßig scheisse. Ja ja jammern auf hohem Niveau aber you don’t get what you pay for and thats whats kotzt mich so dermaßen an.
Der Boxster gefällt mir nicht, der Boxster gefällt mir nicht, der Boxster gefällt mir nicht, der Boxster gefällt mir nicht … ich glaube es hilft
[Update]
So Wagen abgeholt und der ist jetzt still. Rechnung kam dann auch per Post. Waren nur 597€. Na dann, aufs nächste halbe Jahr
Die Penner *g* …
Intel X25-M SSD im HP 8510w
26. January 2009
Vorsätze sind grundsätzlich recht umsonst. Bewusster konsumieren und etwas auf die Kohle achten hatte ich mir für 2009 aber schon vorgenommen.
Daher musste ich mir Intels Speicherwunder auch drei Tage schönrechnen. Am Ende stand auf meiner Rechnung immerhin ein plus von Vierzehnhundert Euro (Muss stimmen, hatte im Mathe Grundkurs immerhin stets 3 Punkte) Ich wäre ja blöd mir das durch die Lappen gehen zu lassen.
Die Platte wurde also mit einem tränenden Auge bestellt … 500 Tacken - ich erlebte ein dejá vù. Als “Kind” habe ich mir schon immer viel zu teuren unnötigen schnick schnack gekauft. Eben immer haben muss. Hat sich so viel wohl nicht geändert … egal. Belohnung muss sein. Schönreder Nr. 1 eben. Wenn ihr mal was wollt aber euch nicht durchringen könnt gebt bescheid.
Heute vormittag kam dann der DHL Mensch. Kurz eingebaut, mein Image zurückgespielt was relativ lange gedauert hat und dann Yeah. Das Ding liest Daten als würde es um Leben und Tod gehen.

Meine mobile “static safe work station” *g* - Kann losgehen…

Alt gegen neu. Seagate ist ja derzeit eh auf dem absteigenden Ast…
Die Platte überzeugt nach kürzester Zeit. Mit Abstand das effektivste Upgrade das man seinem System gönnen kann. Am besten noch viel RAM in den Rechner, Swap Datei abstellen und ab dafür.
Ein kleines Demo Video habe ich auch gedreht. 1080p Video abspielen und nebenher Windows XP in einer VMWare starten. Seht selbst http://screencast.com/t/gEGFqv6m26q

Benchmark mit HD Tune ohne etwas nebenher.

Nebenher VMWare, Photoshop und iTunes starten, .rar Datei entpacken und Video abspielen. Laut Benchmark ist die Platte unter Last sogar schneller? Naja von mir aus…
Flaschenhals Festplatte, auf nimmerwiedersehen ![]()
snom370 IP Telefon
22. January 2009Wir haben es geschafft. Nachdem wir bei sipgate zwei snom370 bestellt haben gibt es im Büro endlich neue Telefone. Der Support war sehr locker drauf und hat uns nach der Kreditkartenzahlung eine Art Expresslieferung arrangiert. Das Paket war schon am nächsten Tag da.
Der Hörer ist schön schwer und liegt sehr gut in der Hand. Allgemein ist das Telefon wirklich sehr gut verarbeitet und funktioniert nach dem Firmwareupdate exakt so wie man es erwartet. Ich bin wirklich total begeistert und hey es ist es nur ein blödes, schwarzes Telefon das mich den ganzen Tag nervt

Die registrierten SIP Accounts mit ausgehender Leitung immer im Blick
Ein erst kaum beachtetes aber sehr sehr geiles Feature ist der integrierte Mini-XML Browser. Und zwar kann man im Webfrontend des Telefons URLs hinterlegen die bei bestimmten Aktionen (z.B. einem Anruf) dann mit entsprechenden Parametern aufgerufen werden. So wäre es einfach möglich zu überprüfen mit wem man wie lange Telefoniert; oder wer wie oft und wann anruft. Man könnte sich aber auch Nachrichten, Aktienkurse, das Wetter oder sonstige Infos aus dem Internet aufs Display holen. Der Durchbruch kommt aber natürlich erst wenn man Pornos mit gucken kann.

1A Rückwärtssuche - Oooh der Peter Zwegat am anderen Ende … lass ma’
Bin so super Alles ist so seamless und leicht verständlich, dass noch am selben Tag mittels einer online Rückwärtssuche der anrufenden Nummer der Teilnehmer auf dem Display angezeigt wird und wir außerdem endlich ein internes, zentrales Telefonbuch haben, welches sich die Daten direkt aus unserer immeraktuellen g*Sales Kundendatenbank (MySQL) holt.

Eigenes Telefonbuch mit Suchfunktion. Sehr wichtig bei ca vierundzwölfzig Millionen Kunden.
Fazit: sehr geil, kaufen!
PHP Quellcode für die Rückwärtssuche
Python Telefonbuchprojekt von Bevuta
Produktinfoseite des Herstellers
Jede Menge Infos im offiziellen Wiki
DDos Angriff gegen Apache Webserver
6. January 2009Aus aktuellen Anlasse mein heutiger Blogeintrag. Natürlich total unnötig wie die Nacht aber gut auch hier muss man das ein oder andere Ass aus dem Ärmel schütteln.
Prinzipiell bietet es sich erstmal an zu erfahren wer die Gegner sind und ob es sich dabei um einen einzelnen verwirrten Handelt oder um ein Botnetz. Mit folgendem Befehl lassen sich die Hostnames und die Anzahl der aktiven Verbindungen ermitteln. Sollten hier mehr als 10 Verbindungen am Start sein, ist das schonmal verdächtig.
lsof | grep "www->" | cut -d ":" -f 2 | sort | uniq -c
Auf manchen Distributionen muss man aus dem www-> ein http-> machen damit eine Liste erscheint.
Alternativ können wir die sämtliche Verbindungen, auch inaktive, über netstat ermittetln. Hat den Vorteil das man direkt eine IP erhält die man mittels iptables dann sperren kann. Gut bei Angriffen von einem Rechner aus.
netstat -plan | grep :80 | awk {'print $5'} | cut -d: -f 1 | sort | uniq -c | sort -nk 1
Alles was den Wert weit über sagen wir 15 übersteigt ist hier verdächtig. Wenn es sich um eine einzelne IP Handelt kann man diese folgendermaßen aussperren.
iptables -I INPUT -i eth0 -s ipadresse -j DROP
Mehrere Gegner? Dies macht die Sache etwas komplizierter. Je nach Anzahl der angreifenden Hosts kann man sie nach und nach sperren was bei einigen Tausend aber schnell zu einem Problem werden kann. Wenn kein Ende der Angriffe bzw der unterschiedlichen Hosts in Aussicht ist kann eine Limitierung der neuen TCP Verbindungen pro X Sekunden wunder wirken.
Wenn wir beispielsweise pro IP nur 7 neue Verbindungen in einem Zeitraum von 5 Sekunden zulassen möchten dann kann man das mit folgendem Befehl machen. Achtung das leert die gesamten iptables Regeln erstmal. Um das zu verhindern die ersten beiden Zeile weglassen.
iptables -F
iptables -X
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 5 --hitcount 7 -j DROP
Folgendermaßen überprüft ihr wie und ob eure Regeln wirken.
iptables -L -v
Ihr erhaltet eine Liste mit allen Regeln und am Anfang stehen jeweils die Pakete und das Volumen in Bytes die davon betroffen sind. Bei mir wurden in den letzten 5 Minuten über 700.000 Pakete verworfen was schon der Rede wert ist. Durch die zeitliche Limitierung der neuen Verbindungen kann ich den Apache aber am Leben halten.
Ich benutzte pingdom um meine wichtigsten Serverdienste zu überwachen. Sehr zuverlässig und im Fehlerfall wird man wahlweise per E-Mail oder (viel besser noch) per SMS benachrichtigt. Kostet zwar ein paar Euro aber das sollte es einem Wert sein.
Weitere Taktiken, Anregungen und Kommentare sind supergerne erwünscht. Man lernt auf dem Gebiet ja bekanntermaßen nie aus.
A1 Freunde
23. December 2008Ich habe heute den ersten Schritt gemacht und ein schnelles Screendesign für die A1 Freunde umgesetzt. Freue mich auf die Markteinführung des kleinen der ja unter Umständen sogar eine Alternative zum Smart werden könnte und natürlich auf die “Nebencommunity” meiner bewährten A3 Freunde.
So und jetzt gehts in den Weihnachts/Neujahrsurlaub. Frohes Fest und guten Rutsch euch allen und bis nächstes Jahr in alter Frische.
[Update]
Finde es auch recht nett von Google mich nach 4 Tagen freundlicherweise relativ weit oben in der Suchergebnisliste zu platzieren. Das ging ja flott.

Wien 2008
17. December 2008Liebe, diesjährige Universeler. Es war eine sehr sehr coole Woche. Danke für die lustige Zeit und bis hoffentlich bald mal wieder. Durch den plötzlichen AlkoholArbeitsabriss muss wohl mein gesamter Organismus durcheinander gekommen sein so das ich mich erstmal von einer Erkältung auskurieren muss.

Ein kleiner Teil der lustigen Truppe (Von kreuz nach quer: Joachim, Manu, Chris, Martin, Tom, ich, Artur und Khai)
Weitere Impressionen folgen…
7 Gründe Bilder nicht in der Datenbank zu speichern (PHP/MySQL)
29. November 2008
Ein Diskussionspunkt bei vielen geplanten Webprojekten (und natürlich auch eine Glaubensfrage der involvierten Programmierer), welcher die spätere Entwicklung und gesamte Handhabung maßgeblich entscheidet.
Für meinen Artikel verwende ich reale Werte meiner kleinen a3-freunde.de Community, die derzeit bei ca. 15.000 Mitgliedern insgesamt 90.000 Bilder bereitstellt und wo Überwiegend das “Forum” benutzt wird und auch im Vordergrund steht. Wirklich keine große Sache wenn man sich die gesteckten Ziele der vielen Social ZwoNull Netzwerke mal betrachtet.
Die Durchschnittliche Dateigröße dieser 90.000 Bilder beträgt 183,18KB. In Zeiten des Megapixelwahns durchaus ein repräsentativer Schnitt. Ein Großteil der Bilder welche über den Java basierten Massenuploader kommen werden auf 1280px Bildbereite verkleinert was es etwas erträglicher macht.
1. Im Falle eines Falles
Fast 16GB an Mehrdaten die man in der Datenbank ablegt. Für MySQL und Konsorten sicherlich kein großes Problem diese Mengen zu verwalten. Aber schon einmal eine so große Datenbank wiederhergestellt oder im Fehlerfall analysiert? Auch kleinste Operationen dauern Ewigkeiten in denen man praktisch wegen des Locks auf den Tabelle plötzlich für seine Besucher nicht mehr ordentlich erreichbar ist.
2. Verteil ich den Shit eben
Um Problem 1 zu umgehen kommt man auf die Idee die Bilder unmittelbar bei den dazugehörigen Datensätzen zu speichern. Hat auch den praktischen Aspekt wenn man beispielsweise einen Benutzer löscht das dann auch direkt sein Profilbild welches sich ja ebenfalls in der Zeile befindet gleich mit entfernt. Als Faulsack ‘ne super Angelegenheit.
Das Problem verlagert sich allerdings nur und hat Auswirkungen auf die Gesamtperformance. Die 16GB liegen dann zu Teilen in den unterschiedlichen Tabellen und die Joined man dann natürlich alle Nase lang um die gewünschten Infos aus der Datenbank zu ziehen. Und einen kleinen Teil aus einer 4GB Tabelle mit einem anderen kleinen Teil einer 3GB Tabelle zu Joinen das dauert ein “kurzes” Weilchen komischerweise auch wenn alles sehr gut indiziert worden ist.
Um Problem 2 zu umgehen welches aus Problem 1 resultiert, müsste man also für jeden Bereich eine eigene Tabelle erstellen und die Bilder je nach Bereich in der entsprechenden Tabelle speichern - was aber in wiederum ein paar Jahren zu vielen großen Tabellen und somit wieder zu Problem 1 führt. Nur eben in noch unkontrollierbarer.
3. Backups
Datensicherung ist Pflicht und nicht das Problem eines anderen, Eine 16GB Datenbank im Livebetrieb zu sichern wird an den Benutzern der Seiten nicht spurlos vorbeigehen. Da kann man nur auf den “Nachts ist nichts los” Effekt hoffen - das kann aber keine optimale Lösung sein. Selbst ein schneller Dump benötigt viel Zeit da die 16GB auf die Platte geschrieben werden müssen. Eine Frage die zu klären wäre ist jedoch wie sich beispielsweise das Tool rsync verhält wenn man das Backup von Gestern mit dem von Heute inkrementell abgleicht. Werden tatsächlich nur die Änderungen des Tages an der Datenbank übertragen oder verändert sich der komplette Dump wenn sich am Anfang der Datenbank etwas kleines geändert hat und sich dadurch die von rsync verwendete checksum dreht. Und wenn ja und die Differenz beträgt entsprechend 15,9GB wo speichert man die ganzen vielen Daten dann nur?
4. Replikation
Unsere Anwendung ist wegen Problem 2 also sehr langsam und wegen Problem 3 können wir die Daten auch nicht mehr richtig sichern. Easy, eine Replikation / Datenbankslave muss also her. Kann ich. Hier gibt es ganz massive Unterschiede zwischen a) ich habe ein eigenes Rechenzentrum mit einem internen Netzwerk oder b) ich habe keins da a3-freunde ein kleines Projekt ist; oder ich ein Startup bin; oder ich erstmal sehen muss ob das Projekt funktioniert.
Also b)
Wir setzen die Replikation auf. Bei den Datenmengen und einer 100MBit Verbindung zwischen den beiden Servern nicht ganz ohne Spuren bei den Benutzern und den eigenen Nerven hinterlassen zu haben. Erwartungsgemäß läuft natürlich alles und in der Datenbankschicht unserer Anwendung sagen wir “hör zu, hier haste nen neuen Freund, mach einen Teil der Abfragen auf den”. Okay tatsächlich benötigt man dann oftmals noch eine solche Datenbankschicht und eine weitere Lösung, dass die eigene Anwendung auch unterscheiden kann ob der Slave aktuell ist oder hinterherhinkt und somit unbrauchbar ist, aber schließlich, so nach 1-2 Wochen läuft dann alles.
Kann es ja weitergehen. Man hat sich jedoch einen klassischen Flaschenhals eingebaut. Nicht nur seine Bandbreite faktisch halbiert, je nach Aufbau der Anwendung überträgt man nun bei den einfachsten Abfragen unbewusst Unmengen an unbenötigten Bildern über das Netzwerk. SELECT * verwendet man nun mal aus Bequemlichkeit öfter als benötigt und da werden nun Bilder gleich mit ausgelesen, natürlich je nach Datenbankstruktur aber wir hatten ja Problem 1 und dadurch alles sauber verteilt. Bei einer Benutzerliste mit 30 Einträgen pro Seite hat man dann im Extremfall schnell 4-5MB pro Aufruf vom Slave zum Master übertragen. Natürlich worst case vorausgesetzt. Die Replikation zum Slave hin kostet uns ebenfalls Traffic. Gut das der interne oftmals nichts kostet.
5. Arbeitsspeicher
Alles ist schön Objektorientiert. Alle Objekte liegen im Speicher und in den Objekten und dazugehörigen Eigenschaften tauchen nun plötzlich auch immer öfter mal komplette Bilder auf. Mit diesen Arbeitet man in den seltensten Fällen bewusst, gibt sie im besten Fall mal aus und fertig. Problem ist nur das eben diese Bilder alles ganz schön fett machen und man das natürlich mit einer langsameren Durchführung des Codes bezahlt. Alles dauert etwas länger. Bei vielen Besuchern gleichzeitig ist der Overhead den man mitführt sehr groß und Zack ist man raus.
6. Caching
Egal in welcher Form man seine Anwendung beschleunigt, ganz klassisch mit Squid als Proxy Server oder mittels APC/Memcache die Bilder und daraus generierten Thumbnails wird man aus der Überlegung seine Datenbankabfragen ja vermeiden zu wollen auf der Festplatte speichern. Es geht Geschwindigkeitstechnisch nichts über eine statische Datei die einfach rausgeblasen wird ohne Overhead, großartigen Speicherverbrauch oder Rechenzeit.
7. User Experience
Qualität ist für mich wenn etwas funktioniert. Wenn ich in einer Community mein Bild lösche und mich dieses nach einem Reload aber weiterhin anlacht dann wars nix. Oder ich lade ein neues Bild hoch und es erscheint das Alte. Caching ist in dem Fall für den Besucher und Seitenbetreiber etwas sehr unangenehmes - ohne geht es aber nur in den seltensten Fällen.
Durch simple Strukturen kann man den Effekt aber eindämmen. Zunächst kann man ein Bild nur ausliefern wenn es vorhanden ist, das erkennt man am besten daran ob das Bild im Dateisystem existiert oder nicht (zu simpel) - das macht klassischerweise der Webserver. Wenn die Bilder in der Datenbank gespeichert werden dann muss ich diese irgendwo cachen und dann den Status der Datenbank immer wieder mit meinem Cache abgleichen was ein viel komplexerer Fehleranfälliger Prozess ist als das Bild einfach aus dem Dateisystem zu entfernen.
Das Problem das einem Benutzer sein altes Bild angezeigt wird obwohl er schon ein neues hochgeladen hat liegt daran das sich die Dateinamen im Request oftmals an der immer selben ID eines Datensatzes/Benutzers orientieren. Der Browser denkt sich 5.jpg hatten wir schon, läuft, nehm ich meine Version. Und schon wars wieder nix.
Dies passiert natürlich auch wenn man die Bilder nach Benutzer-ID auf der Festplatte speichert. In der Regel sollte man aber Buch über die hochgeladenen Dateien führen wofür sich eine Datenbank wiederum sehr gut eignet und man erhält über den Primärschlüssel einen Dateinamen der sich beim nächsten Upload 100% verändert und somit auch den Browsercache durch einen Request auf einen anderen Dateinamen umgeht.
Vorteile die Bilder in der Datenbank zu speichern gibt es natürlich auch und der Vollständigkeit wegen möchte ich diese auch aufführen.
1. Mit einer Datenquelle die idealerweise alles beinhaltet was man für den Betrieb benötigt kann man „sehr schnell“ und einfach umziehen.
2. Einfaches und schnelles Skalieren der Webserver ist möglich ohne das Problem zu haben die Uploads der Benutzer irgendwie auf ein zentrales Dateisystem zu bekommen.
Sonntag, 14:11 Uhr
23. November 2008Ich frage mich gerade ob man die Weltherrschaft auch vom Bett aus mit seinem Notebook auf dem Ranzen erlangen kann. Prinzipiell sollte ja ein DSL Anschluss dicke fürs solche Zwecke ausreichen.
Zunächst muss ich aber doch mal aufstehen und etwas frühstücken.
[14:17 Uhr]
Ich alter Faulsack. Gleich geht’s los…






