Skip to content

PHP

9 posts with the tag “PHP”

CampusOffice Kalender synchronisieren

Campus Office & Google Kalender

Campus Office ist unser Studienplaner an der RWTH. Über ihn stellen wir uns unseren Stundenplan zusammen und melden uns zu Prüfungen an. Campus Office besitzt auch einen einfachen Kalender, der alle Termine des aktuellen Semesters individuell für jeden Studenten zusammenfasst. Glücklicherweise kann dieser Kalender auch im iCalendar-Format exportiert werden.

Leider ist jedoch keine automatische Synchronisation mit Google, Outlook & co möglich, da sich jeder Student zuvor mit seinen Daten angemeldet haben muss. Um dieses Problem zu umgehen habe ich ein kleines Skript geschrieben, welches als Proxy fungiert und diese Anmeldung übernimmt.

Folgende URL kann beispielsweise im Google-Kalender abonniert werden:

http://t0.0l.de/snippets/php/campus/cocal.php?u=[matrikelnr]&p=[passwort]

Alternativ kann man sich über das Frontend das Passwort in der URL auch noch etwas verschleiern lassen:

http://t0.0l.de/snippets/php/campus/cocal.php?hash=<base64_encode(matrikelnr + ':' + passwort)> => http://t0.0l.de/snippets/php/campus/cocal.php?hash=MzA0OTU3OmFzZGZzZGY=

So habe ich nun alle meine Uni-Vorlesungen, Übungen und Klausuren in meinem Android-Smartphone ohne mich jemals wieder um die Synchronisierung kümmern zu müssen.

transcode

Digital Logic Diagram
Assembler code

Ich sitze im Zug nach Hause. Gerade komme ich von der letzten Vorlesung des zweiten Semesters: Informatik. Eigentlich bin ich auf dem Weg in die Semester-”Ferien”, ständen da nicht für den nächsten Monat noch 4 Klausuren in meinem Kalender 😉.

Informatik, Grundlagen des Digitalrechners. Klingt eigentlich recht trocken. Trotzdem ist es klar mein Favorit unter den Fächern dieses Semesters. Als Ergänzung zur Vorlesung richtete unser Professor einen kleinen Wettbewerb aus. Mein Beitrag zum Students Englightment Award ist ein Compiler Frontend für den GNU Compiler der Atmel AVRs.

Teil der Vorlesung war die Einführung des Mikrocontrollers ATMega8 von Atmel und dessen Programmierung mit Assembler. Dabei lernten wir zuerst die Schaltungstechnischen Grundlagen und die Minimierung von Schaltnetzen. Anschließend sind wir auf den Aufbau der Zentralen Recheneinheit eingegangen (Steuerwerk, ALU).

transcode kompiliert & assembliert ANSI C und Assembler in Maschinencode und umgekehrt. Dabei wird mit Hilfe von Debugging Informationen ein Bezug zwischen Zeilen im C-Code und den Mnemonics hergestellt. Durch Auswählen von Zeilen werden Bezüge direkt durch Hervorhebungen dargestellt. Für die Darstellung des Maschinencodes lässt sich zwischen binär, dezimal & hexadezimaler Form wählen.

volkszaehler.org Zählerbox

Die volkszaehler.org Zählerbox
Die volkszaehler.org Zählerbox.

Das volkszaehler.org Projekt nähert sich mit großen Schritten seiner ersten stabilen Version und damit dem ersten Release.

Ich möchte hier nur einen kurzen Überblick über den aktuellen Stand geben. Du kennst das Projekt noch gar nicht? Weiß nicht was Smart-Meter sind? Da steigst du besser auf unsere Projekt Website ein!

Für die Entwicklung am Projekt habe ich mir eine kleine Hutschienenbox gebaut. Sie eignet sich perfekt für den mobilen Einsatz und zum Testen neuer Firmware und Funktionen. Mal schnell den Verbrauch des eigenen Kühlschranks zu erfassen ist kein Problem. Derzeit ist mein Schreibtisch an die Box angeschlossen und liefert so aktuelle Daten für die Demo Installation des Projektes.

Die Box enthält folgende Komponenten:

  • ~230V Eingang über Kaltgerätestecker (geerdet, max. 10 Ampere)
  • ~230V Ausgang über Schukostecker (geerdet, max. 16 Ampere)
  • Sicherungsautomat (Ein-/Ausschalter)
  • B&G E-Tech DRS-154D S0-Zähler (einphasig, 2000 Impulse/kWh)
  • Udo’s S0-Server (basierend auf Atmel AVR’s & ethersex, 10 Mbit/s Ethernet, TFTP Bootloader)
  • Knopf zum manuellen Triggern von Impulsen
  • externer Anschluss von Zählern

volkszaehler.org

volkszaehler.org Logo
volkszaehler.org Logo.

volkszaehler.org ist ein freier Smart Meter (hier: intelligenter Stromzähler) im Selbstbau. Die anfallenden Stromprofile bleiben dabei unter der Kontrolle des Nutzers.

Seit dem 1. Januar 2010 müssen Stromversorger ihren Kunden für Neubauten so genannte “intelligente Stromzähler” (Smart Meter) anbieten. Der Kunde soll dadurch seinen Stromverbrauch analysieren und optimieren können.

Die dabei anfallenden Daten (“Stromverbrauchsprofil”) erlauben einen sehr detaillierten Einblick in den Tagesablauf des Nutzers (wann steht er auf? wann geht er in’s Bett? wann kocht er? wie oft verwendet er seine Spülmaschine? verändert sich sein Verhalten? …). Darum sollten die Daten ausschließlich für den Nutzer selbst zur Verfügung stehen - und das geht nur, wenn man sich den Smart Meter selbst baut. Mit einem Materialeinsatz von etwa 100 €, etwas Geschick und Zeit lässt sich das mit Hilfe eines Standard-µC-Moduls aufbauen.

Auf der SIGINT 2010 konnte ich mir den Vortrag von Justin Otherguy über das noch recht junge Projekt anhören und fand anschließen die Gelegenheit mit ihm über das Projekt zu sprechen. Schnell war für mich klar, dass ich hier helfen möchte.

Bisher gibt es nur einen funktionsfähigen Prototypen. In den letzten Wochen habe ich mit ein paar weiteren Entwicklern begonnen den Code des Prototypen neu aufzubauen.

Die Architektur von volkszaehler.org ist dreigeteilt:

  1. Die Controller und Sensor Ebene erfasst mithilfe eines Mikrocontrollers die Daten leitet sie an den Backendserver weiter.
  2. Der Backendserver besteht aus einem PHP-Skript und einer Datenbank. Hier werden die Daten weiter verarbeitet und ausgewertet. Er kommuniziert ausschließlich über eine standardisierte JSON API.
  3. Das Frontend stellt die Daten für den Benutzer übersichtlich dar und ist für die Ausgabe der Analysen verantwortlich.
Systemübersicht volkszaehler.org
Systemübersicht volkszaehler.org.

Diese Darstellung verrät uns auch, dass nur der Stromverbrauch erfasst werden kann. Geplant sind sämtliche Messgrößen (Temperatur, Luftdruck, Luftfeuchtigkeit, Strahlung, Niederschlag, …).

Bisher gibt es noch keine stabile, lauffähige Version des Quellcodes. Im Wiki, der Mailing-Liste und im GitHub Repository ( /volkszaehler/volkszaehler.org ) findet ihr weitere Informationen zu meinem neuen Projekt.

Wir freuen uns über jede Unterstützung 😊. Besonders Entwickler mit PHP und Javascript Kenntnissen wären hilfreich 😉.

Tiny DNS & URL aka SDDNS

SDDNS Favicon

Zusammen mit Micha besuchte ich Ende letzten Jahres das U23 des C4 in Köln. Dort habe ich viel über die Techniken des Internets gelernt. Unter anderem ging es hier auch um das Domain Name System, das für die Namensauflösung im Internet verantwortlich ist.

Mittlerweile betreibe ich einen eigenen DNS Server für meine Domains (0l.de, steffenvogel.de, griesm.de & vogel.cc).

Zudem biete ich euch kostenloses DNS Hosting. Gerne übernehme ich auch die DNS Administration eurer Domains. Jedoch könnt ihr sicherlich verstehen, dass ich euch dafür dann nichts garantieren kann.

Mit der Zeit habe ich ein Webinterface für den DNS Server Bind entwickelt auf das nun jeder Zugriff hat. Ihr könnt eigene Subdomains registrieren, Records setzen und URL Weiterleitungen einrichten. Dynamisches DNS wird ebenso unterstützt.

Es ist auch möglich URLs zu verkürzen und so beispielsweise die URL: https://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&msid=100237997621038330776.000468b0a95f89721a96e&ll=18.646245,15.820313&spn=120.933723,198.632813&z=3 auf http://a.0l.de abzukürzen Das ist vergleichbar mit dem Service von TinyURL. Jedoch sind meine URLs dann um 7 Zeichen kürzer 😊. Im Gegensatz TinyURL sind meine URLs auch nur über die Subdomains erreichbar. Eine direkte Unterscheidung zwischen eigenem DNS Record und einer simplen URL Weiterleitung ist also nicht möglich.

Service Wiki/Doku

gesundheitsmanagement-schule.de

Heute freue ich mich euch einen weiteren Auftrag präsentieren zu dürfen, mit der ich mein etwas knappes FÖJ Taschengeld aufbessern konnte 😋 Basierend auf der Website rueckgrat-beweisen.de, die ich für meinen ehemaligen Sportlehrer entworfen habe, ist nun eine weitere Website zum Thema Gesundheitsmanagement in Schulen entstanden.

Screenshot von gesundheitsmanagement-schule.de
Screenshot von gesundheitsmanagement-schule.de.

Das Design der Page wurde aufgrund einiger Fotos weitestgehend von mir selbstständig entworfen und umgesetzt. Funktionell wurde die Seite recht einfach gehalten. Es gibt die üblichen Funktionen zum Bearbeiten des Inhalts und ein Kontakt/Mail Formular. Hierbei habe ich mich hauptsächlich auf den Quelltext von rueckgrat-beweisen.de gestützt und diesen weiterentwickelt. Wie immer ist die Seite 100% selbst entwickelt und 100% W3C XHTML und CSS konform.

Zusätzlich zum Design und der Programmierung der Website habe ich auch die komplette Verwaltung des Web Spaces inklusive Domainumzug übernommen.

Die Website ist erreichbar unter:

www.gesundheitsmanagement-schule.de

rückgrat-beweisen.de

In diesem Blog Beitrag möchte ich euch eine weitere von mir erstellte Website und abgeschlossenen Auftrag vorstellen. Diesmal ist es eine bewusst einfach gehaltene Seite für eine Rückenschule aus Darmstadt. Den Auftrag habe ich von meinem ehemaligen Sport Lehrer aus dem Justus-Liebig-Gymnasium erhalten.

Die Website ist bis auf das Logo komplett von mir entwickelt und entworfen worden. Natürlich wie gewohnt ohne Coldfusion oder andere ähnliche WYSIWYG Editoren.

Die Website ist erreichbar unter:

www.rueckgrat-beweisen.de

Die Seite ist XHTML 1.0 valid valid und nach anfänglichen Problemen nun auch auf allen Browsern betrachtbar.

Hier noch ein Screenshot der Website:

Screenshot von rueckgrat-beweisen.de
Screenshot von rueckgrat-beweisen.de.

InteractivePHP

InteractivePHP ist ein kleines Experiment mit PHP, GD & Javascript.

Dabei habe ich versucht mit PHP & GD animierte Bilder zu erstellen. Das Generieren von animierten GIFs mit GD ist kompliziert und langsam. Das Generieren eines einzelnen Frames ist dagegen denkbar einfach. InteractivePHP besteht aus zwei Komponenten:

  1. Dem Bild, das mit PHP & GD immer dynamisch generiert wird. Per GET wird dem Bild-Script die aktuelle Position der Animation mitgeteilt.
  2. Der Oberfläche, die mit HTML und Javascript das animierte Bild anzeigt und mit einem Timer das Bild alle par Millisekunden neu lädt.

In der Oberfläche habe ich einige Slider implementiert. Mit diesen kann man den Text drehen und verschieben.

Den Code gibt es hier auf Codeberg: /stv0g/snippets/interactive_php

Screenshot of InteractivePHP
Screenshot of InteractivePHP.

Search highlighting via Referrer

Für die Website der Handball Abteilung des TuS Griesheims habe ich eine Suchfunktion inklusive Hervorhebung (engl. highlighting) der Suchergebnisse in PHP implementiert.

Die Funktionen dieser Highlighting Funktion umfassen:

  • Die Suchoperatoren der booleschen Volltextsuche von MySQL werden entfernt
  • Durch Leerzeichen getrennte Suchbegriffe werden einzeln hervorgehoben
  • Die Suchbegriffe werden mit verschieden Farben hervorgehoben
  • Sonderzeichen werden escaped
  • Aus dem Referrer verschiedener Suchmaschinen werden die Suchbegriffe extrahiert und hervorgehoben