CakePHP – Ein Review

Heute fragte mich jemand, ob ich eigentlich etwas kennen würde, um mit PHP „schöner“ zu programmieren. Ich dachte zugegebener Maßen erst an einen Editor (da würde ich PhpStorm (gibt’s für Studenten umsonst!) empfehlen), es wurde dann aber relativ schnell klar, das es eher um sowas wie ein PHP-Framework geht. Um es gleich mal klar zu sagen: Ohne irgendein Framework würde ich nichts in PHP schreiben, was länger als 100 Zeilen ist. Man muss das Rad ja nicht immer neu erfinden, und dabei die gleichen Sicherheitslücken wieder einbauen 🙂

Nun entwickele ich für meinen Hiwi-Job schon rund 4 Jahre in PHP. Dabei habe ich die erste Zeit eine Anwendung weiter gepflegt, die ohne ein Framework geschrieben war. Nach einiger Zeit war klar, das es so nicht weitergehen konnte, die Anwendung war, auch durch ihr Alter und die Weiterentwicklung von PHP, unwartbar geworden und lief mit schnellen Schritten auf das End-Of-Life „ihrer“ PHP-Version zu. (Mehr sage ich jetzt nicht, der Autor ließt hier mit 🙂 ). Es musste also eine Neuentwicklung her, natürlich auf Basis eines Frameworks. Damals wurde mir CakePHP empfohlen (damals noch Version 2), was ich dann relativ unreflektiert übernommen habe. Jetzt nähert sich die Anwendung langsam der Fertigstellung, inzwischen basierend auf CakePHP 3. Im Laufe der Entwicklung hat sich eine gewisse Hassliebe zu Cake entwickelt…

Weiterlesen

ftRoboExt: Fortschritt

Ja, die kleinen Fehler sind immer die gemeinsten. Das war ungefähr das Motto der letzten Runde Entwicklung an meinem ftRoboExt.

Wie üblich bei solchen gemeinen Problemen war der Fehler schwer einzugrenzen, ab und zu funktionierte die SPI-Verbindung zum Robo Interface ohne Probleme, in den meisten Fällen tat mein Controller aber gar nichts. Es lag natürlich an eigener Blödheit, ich hatte das Datenblatt nicht richtig gelesen, dort steht es im Abschnitt 19.3.1

When the SPI is configured as a Slave, the Slave Select (SS) pin is always input. When SS is held low, the SPI is activated, and MISO becomes an output if configured so by the user. All other pins are inputs. When SS is driven high, all pins are inputs, and the SPI is passive, which means that it will not receive incoming data. Note that the SPI logic will be reset once the SS pin is driven high.

Weiterlesen

Bachelorarbeit: Done

baWieder ein Punkt auf meiner ewigen Todo-Liste abgehakt: Meine Bachelorarbeit ist geschrieben und abgegeben! Yay! Noch habe ich keine Bewertung, und auch den Vortrag muss ich noch halten, trotzdem schön, das erledigt zu haben.

Meine Arbeit hat den schönen Titel „Entwicklung und Optimierung von Software für eine mikrocontrollerbasierte Steuerung einer Messeinheit mit High-Speed USB-Schnittstelle“ ich durfte also Software für ein System schreiben, dass Daten aufgezeichnet hat, und die dann später per USB an den Rechner geschickt hat. Insgesamt sind dabei immerhin 31 Dateien mit 5117 Zeilen Code entstanden (davon 608 Leerzeilen, 1038 Kommentare, 3471 Code). Macht also ungefähr 20% Kommentare, das kann man schon ordentlich dokumentiert nennen 😉 (Gut, es ist C-Code, da ist das auch nötig…)

Dazu kommen noch 671 Zeilen C#-Code für die Host-Seite (96 leer, 133 Kommentare, auch 20% Kommentare), sowie ein wenig LabView-„Code“.

Weiterlesen

Warum E-Mail-Verschlüsselung nach PGP gar nicht so einfach ist

Eigentlich sollte dieser Beitrag anders heißen: „Mein Vorschlag für E-Mail-Verschlüsselung nach PGP„. Nur dann habe ich weiter gelesen, und festgestellt, dass das alles gar nicht so einfach ist. 🙁

Aber der Reihe nach: In der aktuellen c’t steht ein sehr interessantes Editorial über PGP. Der Autor fordert: „lasst PGP sterben!“. Interessant ist auch dieser Kommentar des Autors:

Es geht mir um massenhafte E-Mail-Verschlüsselung — also solche, die jeder, ständig und ohne drüber nachzudenken benutzt. Wann immer eine Diskussion anfängt, wie man das realisieren könnte, kommt jemand: „Wir haben doch PGP“ — und damit ist die Diskussion auch schon wieder zu Ende. Das muss aufhören. PGP hat das in den letzten 20 Jahren nicht hinbekommen — und es wird das in den nächsten 20 Jahren auch nicht mehr erreichen.

Ich denke, er hat Recht damit. PGP ist kompliziert zu bedienen, und leidet unter dem Problem, dass jeder Schlüssel für jeden ausstellen kann. Mir ist klar, dass das vielleicht sogar gewollt ist, um dafür zu sorgen, das die Leute ihre Schlüssel verifizieren, aber massentauglich ist das leider nicht. Ich habe trotzdem Vertrauen zu PGP und würde es auch benutzen, wenn ich mal wirklich geheime Informationen austauschen möchte, es hilft aber nicht gegen ständiges passives Abhören, weil es einfach nicht einfach genug ist, um ständig benutzt zu werden. (Wie eben z.B. die Verschlüsselung in Apples iMessage).

Weiterlesen

Semester-Planungschaos

Vor jedem Semester steht die gleiche Aufgabe an: Die Planung der zahlreichen Vorlesungen. Ich prokrastriniere das immer: „Das reicht ja kurz vor Beginn des Semesters“…“Du musst da noch mal drüber nachdenken“..

Nachdem ich jetzt aber schon die ersten fertigen Stundenpläne meiner Kommilitonen gesehen habe, war es wohl wirklich mal wieder Zeit dafür. Doch es ist jedes Jahr eine nervige Aufgabe, es gibt einfach zu viele Möglichkeiten. Natürlich ist da der Regelstudienplan. Doch da geht es schon los: Wahlpflicht heißt das Zauberwort, sie müssen nur 4 aus 5 wählen. Oder am besten doch alle 5, sonst fehlen ihnen später Leistungspunkte (LP). Das ist nämlich das tückische: Für jedes Modul, jeden Kompetenzbereich gibt es einen mindest-LP Angabe – aber mit der kommt man nicht auf die 180 LP, die man für seinen Bachelor braucht. Also muss irgendwo noch mehr gemacht werden. Nur dafür gibt es dann meistens gleich an Fülle an Wahlmöglichkeiten, aus denen im schlechtesten Fall sich alle(!) mit Pflichtveranstaltungen überschneiden. Toll.

Um an die Überhaupt ran zu kommen, muss man aber natürlich im Lehrveranstaltungskatalog nachsehen, Termine stehen aber nur in Stud.IP – oder vielleicht auch auf der Institutsseite. Vielleicht auch nirgendwo. Oder Sie stimmen nicht ganz (4 Semesterwochstunden, immer Montags 13-14 Uhr. Hä?).

Weiterlesen

Spaß mit Gamecube Spielen an der Wii

Mal wieder ein kleiner Erfahrungsbericht: Gamecube-Spiele auf der Wii spielen. Sollte eigentlich kein Problem sein. Zu Weihnachten habe ich dann auch The Legend of Zelda: Wind Waker bekommt, sogar die Limited Edition mit einer zweiten Disk, auf der Ocarina of Time und OoT: Master Quest drauf ist. Gamecube Controller war auch vorhanden, alles gar kein Problem.

Nur: Wo will das Spiel eigentlich seine Daten speichern? Von der Wii bin ich es gewohnt, das einfach alles auf dem eingebauten NAND/Flash landet. Doch der GC braucht leider Speicherkarten… Siehe da, die Wii hat ja sogar, hinter einer weiten Klappe, Anschlüsse dafür. Blöd nur, dass ich keine Speicherkarte habe…

Also ein wenig im Netz umgeschaut, aha, im GC Modus wird nichts emuliert, sondern einfach die CPU runter getaktet und die Wii ist dann eine Gamecube. Daher kann leider nicht einfach eine Speicherkarte emuliert werden. Oder zumindest Nintendo bekommt das nicht hin, die Homebrew-Hacker natürlich schon. Auch wenn keine so recht weiß, wie das eigentlich funktionieren soll, gibt es tatsächlich einen Hack namens „No More Memory„, der die Speicherkartenzugriffe auf die SD-Karte umbiegt. Doch der ist wohl nicht so recht perfekt, denn er produziert üble Sound-Fehler, wenn er nicht im virtuellen NAND installiert wird.

Weiterlesen

NiboPi: Teil 1

Mein neues Bastel-Projekt: Der NiboPi. Richtig, dass ist ein selten dämlicher Name. Aber bei sowas war ich noch nie sehr kreativ… Wie man am Namen wohl schon fast erraten kann, ist es eine Verbindung aus Raspberry Pi und NIBObee. Und damit dieser Blog auch mal wieder ein paar Beiträge bekommt, habe ich mir vorgenommen, ein wenig über dieses Projekt zu bloggen.

Momentan sieht es so aus:

IMGP1904Unten ist mein NIBObee eingebaut, und oben drauf sitzt in einer LEGO-Halterung mein Raspberry Pi, ein WLAN-Adapter und hinten ein Breadboard mit USB-UART Wandler.

Doch zunächst ein bisschen zum Hintergrund: Vor ein paar Jahren habe ich von meiner Schule aus mit ein paar Freunden am RoboCup teilgenommen, und zwar in der Disziplin RoboRescue. (Das andere Team unserer Schule hat es bei RoboDance übrigens bis zum Weltmeistertitel geschafft) Wir waren leider nicht ganz so erfolgreich, aber es hat immerhin für eine Platzierung im Mittelfeld gereicht 🙂

Weiterlesen

Firefox 15 Bug im Websocket Code

Das schlimme ist ja: Jetzt wo ich den ganzen Tag arbeiten muss habe ich jede Menge Sachen gelernt, über die ich gerne bloggen würde – nur ich habe leider keine Zeit dafür 🙁

Zumindest eine Sache kann ich jetzt aber wirklich mal bloggen: Firefox 15 (und auch 15.0.1) hat einen Bug im Websocket Code, der mir viel Ärger gebracht hat:

Eine neues Feature in FF 15 ist es, Verbindungen schon zu öffnen, bevor komplett klar ist, ob man sie braucht. Das sollte das Laden von Websites beschleunigen. Das ganze nennt sich dann „speculative connect“, auch wenn ich nirgendwo Infos darüber gefunden habe.

Nun habe ich für meine Firma etwas gebastelt, bei dem eine Verbindung über WebSockets zu einem „richtigen“ Server hergestellt wurde. Normalerweise kann man über WebSockets keine „richtigen“ TCP-Sockets ansprechen, doch es gibt ja Websockify, ein kleines Programm das auf dem Zielrechner läuft, dort eine Websocket-Verbindung annimmt und dort auf eine TCP-Verbindung weiterleitet. Ein nettes Programm, und meine Idee klappt auch wunderbar damit mit alle Browsern (außer dem IE 9…).

Weiterlesen

Zurück aus dem Urlaub

So, der Urlaub ist beendet, hier sollte also bald auch mal wieder neue Artikel aufschlagen.

Bevor jetzt alle fragen, ja der Urlaub war schön 😉 (Es ging 3 Wochen nach Lloret de Mar, Spanien)

Und weil wir ja alle Zahlen lieben gibt es jetzt ein paar:

  • Wir waren rund 1300 km von zu Hause entfernt und haben diese mit 900 km/h überwunden (im Flugzeug natürlich…)
  • Wir haben 6 Geocaches gesucht und 4 gefunden
  • Ich habe 117 Fotos gemacht
  • Ich habe 48 min und 35 sec Video gefilmt (jaja auf alte DV-Bänder mit zurückspulen und so…)
  • Dieses Video belegt 10 GB auf meiner Festplatte
  • Dieser Blog hat in der Zeit 21 Spam Kommentare angezeigt (böse Biene!)
  • Ich habe 35 Mails bekommen (ohne Spam)
  • …und 184 Maillinglisten Beiträge
  • Mein Google Reader hat 223 neue Blogposts für mich, davon stammen 194 von cachy
  • Mein Server brauchte 16 Updates (aber er lief auch nach 3 Wochen ohne mich noch!)
  • Mein Blog wollte 3 Updates
  • …und unser 1-ziger (;)) Kühlschrank ist ein der Zeit leider von kühlen auf heizen umgestiegen 🙁

Intel Leibniz Challenge

Mal wieder etwas privates: Mit zwei Freunden habe ich in den letzten Monaten an der Intel Leibniz Challenge (ILC) teilgenommen, einen Informatik/Technik Wettbewerb der Uni Hannover und Intel. Heute war dann die Abschlussveranstaltung inklusive Preisverleihung.

In dem Wettbewerb mussten vier Aufgaben gelöst werden, wobei wir jeweils einen Monat Zeit hatten. Das Niveau der Aufgabe war recht normal, sie waren nicht völlig einfach aber mit etwas Googlen und nachdenken konnte man sie schon lösen, was wir auch recht erfolgreich getan haben. Naja, abgesehen von einer Teilaufgabe die aber überhaupt kein Team (von 1024 Teams) richtig hinbekommen bzw. verstanden hat…

Weiterlesen