Jul 06

Notiz an mich:

Wenn dieser Fehler auftritt, habe ich mal wieder versucht, ein SimpleXML-Objekt in die Session zu packen. Das hätte ich besser nicht getan, denn die Dinger kann PHP nun mal nicht gescheit serialisieren. Scroob, merk’s Dir endlich!

Jul 01

Such das Logo!!

[12:41:32] demScroob: haste dir die seiten ma angeschaut?
[12:41:39] demScroob: grauenhaft, oder?
[12:43:49] Fenja: das stimmt wohl
[12:44:00] Fenja: da brauchen die bestimmt auch nen etwas schickeres logo oder?
[12:44:49] demScroob: logo?
[12:44:52] demScroob: die ham n logo?
[12:44:56] demScroob: *such*

Jun 23

Heute melde ich mich mal mit einem ausführlichen Essay zum Thema PHP-Entwicklung.

Vor kurzem stand ich vor der Aufgabe, für einen Kunden Facebook in dessen CMS zu integrieren. Mittels der Facebook-API ist das auch relativ komfortabel. Mal abgesehen davon, daß selbst auf developers.facebook.com verschiedene PHP-APIKits herumschwirren und dort widersprüchliche Anweisungen gegeben werden, ist es dennoch recht schnell schaffbar, eine komplexere Facebook-App zu schreiben.

Bei mir war jedoch die Anforderung gegeben, daß die Applikation zeitgesteuert Daten auf Facebook veröffentlichen können sollte. Asynchron, ohne jegliche Benutzerinteraktion. Das entwickelte sich schleunigst zu einem Problem. Denn bevor die Facebook-API die Arbeit aufnimmt, verlangt sie ein Facebook-Login-Cookie, das nur begrenzt haltbar ist.

Alle meine Versuche, dieses Cookie zu faken scheiterten an einer UID, die Facebook erst nach einer Browser-Anmeldung herausrückt. Im Netz fand ich diverse HowTo’s, wie man das Login curlt und danach ebenfalls via curl seinen Status updaten kann. Aber damit wars das auch schon. Kein Löschen möglich, keine Links posten, Notizen, etc. bla. Und ich wollte ja die volle API-Funktionalität nutzen können.

Also habe ich die cURL-Idee ein wenig modifiziert:

Facebook checkt den Login mit der API-Methode $fb->require_login($permission); – Ist der User nicht bereits in der aktuellen Browser-Session angemeldet, gibts einen Redirect zur “Ja, diese App darf auf meine Daten zugreifen”-Seite und im Anschluß erst einen Redirect zurück zur App, zusammen mit dem begehrten Auth Token. Was an sich schonmal schlecht ist, denn das CMS des Kunden liegt in dessen Intranet, nix mit externer Erreichbarkeit. Mal abgesehen davon, daß das Script ja zeitgesteuert per Cron laufen soll.

Anstelle des Facebook-eigenen Redirects lasse ich mir das API-Kit die entsprechende URL erstellen und curle diese Login-Seite. Dort parse ich alle relevanten Parameter und übergebe sie dem Login-Formular wieder, zusammen mit meinem Benutzernamen und Passwort. Den Redirect fange ich ab und werte statt dessen die zurückgegebenen Header aus. Dort steht nämlich praktischerweise der Auth Token direkt in der zweiten Redirect-URL.

Weiterlesen »

Jun 22

Ähem. Gerade beim SVN-Commit den folgenden Kommentar geschrieben:

* facebook support added
* flickr category support added (MISSING: upload whole cats)

Beim Klick auf “ok” kams mir dann… Scheiß-Abkürzerei. :D

So, Fire Evening nu!

Feb 20

True… true…

Das Ding hängt seit Jahren ausgedruckt an meiner Pinnwand, bin neulich durch Zufall mal wieder im Netz drüber gestolpert… :D

Jan 18

Himmelarsch, meine Fresse! Die oben genannte Festplatte steckt derzeit gleich fünf mal in meinem Server. Zwei teilen sich das RAID1 mit System und wichtigen beruflichen sowie privaten Daten, die anderen drei balgen sich im RAID5-Verbund um andere Userdaten.

Nun hat mein RAID-Controller in letzter Zeit verstärkt fehlerhafte Sektoren gemeldet, und zwar an gleich drei der Platten. So war ichs leid und habe mit Samsung telefoniert. Ein sehr freundlicher Hotline-Agent hat mir in Windeseile ein paar RMAs und Anweisungen zum reibungsfreien Garantietausch gemailt.

Nun bin ich, gerade was meine Daten angeht, ein vorsichtiger Mensch, außerdem brauchte ich ja ein bißchen Kapazität, um meine Daten zwischenzuspeichern. Also bin ich gleich am nächsten Tag, nämlich dem vergangenen Freitag, in den Münchner K&M-Shop gerannt und habe nochmal zwei Exemplare der Baureihe HE103UJ erstanden.

Beide auch gleich am Freitag eingebaut, dem RAID5 als Hot Spare gemeldet und eine der fehlerhaften Platten entfernt. Nach kurzem aber lauten Gepiepe des Controllers (“harddisk an port sowieso failed, hot spare took over”) legte selbiger auch schon los und kaum 6 Stunden später war das Array wieder “rebuilt”.

Heute Nachmittag wollte ich dann das selbe Spielchen mit der zweiten Platte durchziehen: Platte raus, Hot Spare springt ein, rebuilding, supi. Ein paar Stunden später, gerade auf dem Weg ins Bett, noch schnell den Rechner ausschalten… Hoppla, watt is das? RAID-Status CRITICAL? Rebuilding abgebrochen? Gut, nochmal anstoßen. Klick, ratterdiklack, “rebuilding failed. an error occurred on disk bla tüt”. WTF..?! Die Platte hab ich doch erst VORGESTERN gekauft?!?!

Dieser verfickte Drecksplatte ist doch tatsächlich gerade mal 48h am Stück gelaufen, bevor sie sich mit irreparablen Fehlern gemeldet hat! Und das allerschlimmste: Das ist exakt in dem Zeitfenster passiert, in dem sich das RAID im Rebuilding befunden hat, sprich: Null Toleranz bei Fehlern! 3 Stunden vorher – kein Problem, hätte ich halt das Rebuilden sein lassen und nur ein bißchen gekotzt! 3h später – kein Problem, dann wären alle Daten schon vollständig auf die neue Platte synchronisiert gewesen und der RAID-Verbund hätte – seinem Zweck entsprechend – gehalten.

Wie groß ist die verdammte Wahrscheinlichkeit, daß eine NAGELNEUE Platte nach so kurzer Zeit das zeitliche segnet und dann auch noch zu dem denkbar ungünstigsten Zeitpunkt, an dem NULL Datenredundanz herrscht, für die so ein blödes RAID nunmal entwickelt und in meinem Server eingerichtet wurde?!?!

Ich kann in diesem Leben niemals so viel fressen, wie ich KOTZEN möchte!

Ich habe nun ein RAID5-Array, das aus folgenden Platten besteht:

  • alte, funktionstüchtige Platte mit Daten
  • neue, funktionstüchtige Platte ohne Daten (da die Synchronisierung nicht komplett war)
  • neue Platte mit Fehlern und Daten

Ich sitze nun seit gut 6 Stunden vor der Kiste, habe eine der alten 1TB-Platten mit reparierten Sektorfehlern reaktiviert und schaufele Daten drauf. Da die Daten nun teilweise von einer defekten Platte gelesen werden, kann ich hier schön fast jedes Verzeichnis einzeln kopieren. Und wenn wir über einen defekten Sektor stolpern, ist in der Regel Reboot angesagt, da der Controller das RAID dann deaktiviert.

Und das alles mache ich bei dem penetranten Gepiepe meiner USV, deren Akku vor ein paar Tagen ebenfalls den Geist aufgegeben hat. Und ich trau mich auch nicht, mich sinnlos zu besaufen, weil ich Angst habe, Flüchtigkeitsfehler zu machen. :(

Jan 07

LOL… grad bei nem Kunden gesehen. Das Ticketsystem antwortet erstmal auf jede erhaltene Mail mit einer provisorischen Antwort, in der u.a. Folgendes drin steht:

In NOTFÄLLEN (auf der Statusseite nicht vermerkte Ausfälle, Probleme von denen Leib und Leben abhängen) öffnen Sie bitte ein _NEUES_ Ticket mit der Priorität “sehr hoch” / “Notfall”. Dadurch wird eine Alarmkette in Gang gesetzt.

Nov 28

Jaaaa! ENDLICH!

Vor wenigen Minuten ist der Relaunch mit über 3h Verspätung live gegangen! Erster Eindruck vom Kunden: Huch, das ist ja geflutscht!

[demscroob@lnxp-salmakis:~/b2/php/rating]$ w
18:54:28 up 555 days,  8:52, 13 users,  load average: 0.22, 0.23, 0.33

Mmmh… ich würd ma sagen: Caching funzt. :D

Jetzt erstma Schampus. Und dann gehts ans Testing…

Ach ja… der TPM, im Begriff, das Script für den Livegang zu starten. :D

Nov 27

[20:14:29] <hella -1263> servus. und vernünftige kohlenhydrate erhalten?
[20:15:08] <demScroob> yeah :)
[20:15:13] *hella -1263 muss sich sowas glaube ich auch mal antun …. mv hella $home (gemein, ich glaub es regnet)
[20:15:33] <demScroob> rofl
[20:15:48] <demScroob> ja blöd… uffm bike… :(
[20:15:54] <hella -1263> wenn ich glück habe, hat mein herzallerliebster letztens sogar mal cola gekauft … sonst dope ich mich mit tee
[20:17:05] *hella -1263 hat für den zweck sehr überkandideltes “coastal” segel-ölzeug dabei …. drum ists nciht allzuschlimm
(fürs segeln inzwischen zu undicht, aber die ~20 min. nach hause sind kein problem damit)
[20:17:15] <hella -1263> aber ungemütlich ists schon …
[20:18:53] <demScroob> omfg
[20:18:56] <demScroob> du… freak :D
[20:21:12] <hella -1263> erkennst du das jetzt erst?
[20:21:22] <hella -1263> scroob, wie lange kennen wir uns?
[20:21:41] <hella -1263> und ausserdem, kennst du irgendwelcher programmierer oder sysadmins, die keine freaks sind?
[20:22:24] <demScroob> öhm…
[20:22:28] <demScroob> ja, mich!
[20:22:33] <hella -1263> *hust*
[20:22:33] <demScroob> ich bin… vollkommen normal!
[20:22:35] <demScroob> und toll!
[20:22:37] <demScroob> :D
[20:22:41] <demScroob> heeeh :D
[20:23:02] <hella -1263> also wenn du als programmierer kein freak bist – dann bist du ein freak!

Nov 24

Die Lage spitzt sich ja immer weiter zu, morgen wollen wir live gehen. Ein gutes Hochlast-CMS hat natürlich allerlei Mechanismen, um die Last des Servers zu reduzieren. Das geschieht in diversen Formen von Caching oder dem Speichern fertiger Seiten / Partials / Widgets etc. – auch genannt “brennen”.

Für den Livegang morgen sollten natürlich die am Häufigsten aufgerufenen Seiten / Applikationen gebrannt sein.

[12:14:22] <hella> weisst du, ob der dirk inzwischen irgendwen gefunden hat, der die brennjobs baut? 
[12:18:16] <demScroob> öhm mom
[12:18:33] <demScroob> ”das machen wir irgendwann heute abend oder morgen”
[12:18:41] <demScroob> ”wir starten ungebrannt”
[12:18:54] <hella> *morddrohung gelöscht*

Nov 21

*gäääääähn*

Hätt ich mal nit gestern noch mit PeterLustig “Strange Days” auf BluRay geguckt… -.-

So, um die Fragen vom bessrWissr zu beantworten:

  • Die Seite ist achthundertebbes breit, damit noch Skyscraper-Ads danebenpassen.
  • Das Projekt ist eine Mischung aus Rebrush und Funktionserweiterung, aber noch kein kompletter Relaunch. Daher trägt das Projekt intern den Namen xxx_reloaded.

    Ich bin dabei für diverse CronJobs und Datenakquisen zuständig sowie für die Anbindung von Partner-Content. Außerdem habe ich einen Partner-Shop entwickelt und integriert.

    Die anderen kümmern sich logischerweise um den Rest: Layout/Design, HTML-Producing, Anpassung und Erweiterung von CMS und Datenbank, Server-Einrichtung und -Konfiguration.

Nov 20

…man konnte mich in den Sommermonaten dieses Jahres ja einiges nennen, aber bestimmt keinen Workaholic: Ich war gerade mal zu 60% ausgelastet. Hatte demnach einen sehr entspannten Sommer. :D

Seit knapp zwei Monaten hats wieder arg angezogen: Ich arbeite mit ca. 8 anderen Entwicklern und einem nervösen Projektmanager, der nur noch wenige Schritte vor einem Herzkasper steht, an dem Relaunch einer recht großen Website. Nächste Woche ists soweit und das bedeutet nicht nur eine leicht erhöhte Tagesarbeitszeit, sondern auch: nonstop working bis zum Relaunch.

Wer bringt mir Samstag und Sonntag Essen vorbei? :D

Nov 12

Ja, gerade ist viel ServerConfig dran:

[14:15:02] <hella> sach mal, wird blafasel über unsere webseite auch verkauft? wo ich da grad blafasel.log sehe? 
[14:15:08] <demScroob> nein
[14:15:17] <demScroob> wir öffnen blafasel ein popup, shopping läuft über die
[14:15:21] <demScroob> keine angst ;)
[14:15:21] <hella> ah, ok 
[14:15:27] <demScroob> port 443 bleibt frei :D
[14:15:44] <hella> ach, man kann auch sehr schön über port 80 verkaufen ….. 
[14:15:50] <hella> *grusel*

non-g33k-explanation:
Online-Shopping SOLLTE natürlich verschlüsselt erfolgen, damit die Nutzerdaten nicht so leicht ausgespäht werden können. Dazu sind spezielle Anforderungen an einen Webserver nötig. Port 80 bezeichnet die normale, unverschlüsselte Datenübertragung, darüber laufen seit mindestens 10 Jahren keine ernstzunehmenden Webshops)

Nov 11

Jaja, ich weiß. Ich blogge zu wenig. Aber schapp auch irgendwie keine Zeit. :(

Gestern gegen 22:30 ne Mail vom Operating bekommen. Heute morgen darauf dieser Chat:

[10:56:48] <demScroob> warste gestern echt so lange hier???
[10:56:54] <demScroob> oder von daheim aus?
[10:57:09] <hella> ne, dummerweise war ich solange hier 
[10:58:11] <demScroob> iiiih
[10:58:24] <demScroob> ”die hella ist n streeeeber” *sing*
[10:58:45] <hella> die hella schaft es nie und nirgends, rechtzeitig wegzukommen 
[10:59:28] *hella hat einen deutlichen bug in der systemuhr 

Okt 15

omg!

grade einen satzfetzen von nem kollegen mitbekommen:

“[...] du kannst einen reminder suggesten und einen term submitten [...]“

WTF..?! der kann net normal reden der kerl! armer geek! :D

Okt 13

Wir suchen dringend einen JQuery-Entwickler:

  • Projektdauer: ca. 6 Wochen
  • Beginn: asap
  • Standort: München
  • Bezahlung: Supi!
  • Unterkunft in cooler WG für Projektdauer kann gestellt werden

Weitere Infos auf Nachfrage. Bei Interesse bitte Mail an demscroob[bei]sexmitkleinengelbenhaftetiketten.de

Sep 16

Ich soll für einen Kunden die Wartung und ggfs. ein komplettes Code-Refactoring für ein paar Tools übernehmen. Meine erste Analyse für den Kunden beginnt wie folgt:

  • die Tools sind uralt, historisch gewachsen und für jede gibt es einen anderen Ansprechpartner, aber keiner kennt sich mit allen aus.
  • alle Apps sind in mindestens einem der folgenden Punkte angreifbar:
    - SQL-Injection
    - XSS
    - Session Spoofing
    - Variablen-Manipulation

WTF?!

Sep 02

Aaach, ich mag die Kommunikation mit meinen Kunden zumeist! Gerade eben ne Mail geschickt, daß ein Kd. bitte mal ein paar Domain-Updates durchführen soll. Kommt zurück:

[x] erledigt :)

Aug 12

Wollte gerade eine an sich simple Berechnung durchführen. Mit dem Windows XP – Rechner (aka calc.exe). Den habe ich per Default in der wissenschaftlichen Ansicht, wegen des erweiterten Funktionsumfnags.

Nun hat meine Berechnung das Ziehen einer Wurzel erfordert. Nach einiger Sucherei und Ausprobieren einiger Abkürzungen, die EVENTUELL IRGENDETWAS mit “square root” zu tun haben könnten, bin ich schließlich auf meinen alten Kameraden Google in einem Forum gelandet, in dem darauf hingewiesen wurde, daß der verdammte wissenschaftliche Modus keine Wurzeltaste besitzt.

DEN N00b-Wissenschaftler will ich sehen, der nie Wurzeln ziehen will oder muß!

In der “einfachen Ansicht” gibts ne “sqrt”-Taste.

Wieder mal ein Minuspunkt auf meiner endlos langen M$-Liste…

Mai 15

Eine Milliarde Passwörter merken müssen war gestern! Psylock ist morgen!

Die Biometrie-Software analysiert das Tippverhalten jedes Benutzers bei der Eingabe eines vordefinierten Satzes und entscheidet, ob derjenige, der den Satz tippt, auch wirklich der ist, der er zu sein vorgibt. Die Software ist so gut, daß man noch nichtmal einen Benutzer angeben muß!

Also bspw. definiere ich für den Admin- oder Kommentarbereich meines Blogs den Schlüsselsatz “demScroob, gelobet seist Du, unser aller Heiland!”. Dann darf sich jeder erwünschte Benutzer dem System vorstellen, indem er diesen Satz 6-9 Mal eintippt. Und fortan braucht er sich kein Passwort zu merken, sondern nur diesen Satz eintippen. Das System erkennt innerhalb eines Pools bekannter Benutzer den Tipper sogar, wenn er keinen Benutzernamen angibt.

Das hat bei mir bspw. sogar dann geklappt, als ich den Satz mit zwei Vertippern eingegeben hatte. Dann ist allerdings die Erkennungsrate auf 85% heruntergegangen (sonst lag sie bei > 99%). Auch habe ich versucht, das Tippverhalten ander Nutzer zu imitieren – hat nicht geklappt.

Mehr auf http://psylock.com/

Mai 14

Man kennt ja seit Michael Mittermeiers ZAPPED den Ausspruch “Kruzifix!”. Das ist etwa damit vergleichbar, wenn ich aus irgendeinem Grund “Himmelarsch” von mir gebe.

Aber Bayern sind ja von Grund auf träge und faule Zeitgenossen und kürzen dementsprechend diese drei Silben gerne mal ab. Wenn man dann mit einem Entwickler in einem Raum sitzt, der was nicht auf die Reihe kriegt, klingt dann alle paar Minuten nur noch ein “Zifix” oder gar nur “Fix” herüber.

*kopfschüttel*

Mrz 12

Argh! Grade 40 min TelCo übers Handy gehabt. Jetzt hat mein Hirn ne Durchschnittstemperatur von 43,6°C.

Feb 20

Gerade eben auf der Post gewesen, meine neue Matratze abgeholt. @Kunde habe ich das erwähnt. Kommentar: “Was, Du hast Deine freundin abgeholt..?!

Feb 18

Hallo und willkommen zu unserer aktuellen Nerd-Runde.

Für alle Nicht-Nerds eine kurze Erklärung zum Unix-Timestamp: Dieser wird in der Software-Entwicklung sowie in der “Entwicklung-Light” (Scripting) häufig verwendet, um ein bestimmtes Datum samt Uhrzeit darzustellen. Dieser Timestamp besteht aus Ganzzahlen (Integer), die die Sekunden angeben, die seit dem 01.01.1970 00:00:00 Uhr vergangen sind. (Deshalb zeigen übrigens oft auch viele Rechner nach einer vollständigen Stromtrennung dieses Datum an.)

Wie ich soeben erfahren habe, hatten wir vor kurzem einen witzigen Timestamp. Und zwar waren dieses Jahr am Valentinstag, genauer: am 14.02.2009 um 12:31:30 exakt 1234567890 Sekunden seit dem 01.01.1970 vergangen.

Naja, wen’s interessiert. Ich war knapp zu spät, jetzt sinds bereits 1234954450 Sekunden… :(

Feb 04

Gerade eben bei der Teamassistenz des Kunden gewesen, bißchen gequatscht. Ich noch leicht verschlafen.

Sie: “Huch, ich hab Dich ja zweimal im Messenger drin. Kann ich Dich ja einmal rausschmeißen.”

Ich: “Mich kann man gar nicht oft genug drin haben!”

Sie: “…”

3…

2…

1…

Ich: “Ups..”