Skip to content

Arduino mit PHP und Javascript programmieren

Seit geraumer Zeit besitze ich ein Arduino UNO, habe damit aber noch nicht viel mehr gemacht als ein paar LEDs zum Blinken zu bringen oder einen Servomotor anzusteuern. Vielleicht sollte ich mir endlich ein Ethernet-Shield dazukaufen, denn so völlig offline kann ich gar nicht mehr denken, weswegen mir da teilweise die Ideen fehlen O_o Außerdem werden die Arduino-Boards üblicherweise in einem vereinfachten C-Dialekt programmiert, der zwar einfach zu erlernen ist, aber auch nur bedingt Spaß macht (vor allem mit der offiziellen IDE) ;-) Zum Glück gibt es aber, wie bei Open Source-Projekten nicht ungewöhnlich, schöne Alternativen.

Firmata

Firmata ist ein Programm, welches - einmal auf das Arduino-Board übertragen - die Kommunikation mit Software auf einem anderen Computer ermöglicht. Firmata definiert gleichzeitig also auch das Protokoll, über welches mit dem Arduino (in beide Richtungen) kommuniziert werden kann. Wenn ich das richtig sehe, wurde Firmata zunächst für den Einsatz mit Processing entwickelt. Mittlerweile gibt es aber eine ganze Reihe von Client-Bibliotheken für verschiedene Sprachen.

Das Arduino-Board kann also von einem Host, auf dem die Software läuft, angesteuert werden; es können aber auch Sensoren oder z.B. ein Potentiometer ausgelesen werden. Für mich persönlich ergibt diese Kommunikation mehr Sinn als das pure Aufspielen eines Sketches, der dann auf dem Arduino-Board autonom vor sich hinläuft.

"Arduino mit PHP und Javascript programmieren" vollständig lesen

VulnerabilitiesBundle for Symfony2

Only two days after I pushed the first version of my VersionEyeBundle for Symfony2 to GitHub, Fabien Potencier announced SensioLab's new Security Advisories Checker. This service work quite similar to VersionEye, but instead of uploading your composer.json file your composer.lock file is required to figure out which dependencies are really installed - and if there are any known security issues.

VulnerabilitiesBundle for Symfony2 in Web Debug Toolbar
This is what it looks like in the toolbar

SensioLabs have an upload form in the browser, but conveniently offer an API, too. And, of course, the code of their security-checker is on GitHub. So what could be more natural than to add the results of the security check to the Web Profiler Toolbar right next to all the other useful information? Right. I wrote a second bundle, called VulnerabilitiesBundle, that displays security advisories in the toolbar and the profiler view.

VulnerabilitiesBundle for Symfony2 in Profiler
And this is the Profiler page.

Please keep in mind that this is an early development version that is only intended for use in DEV environments (even if it will be stable someday). It just doesn't make sense on production servers. Feel free to fork, test, and report any issues you encounter. Of course, contributions in the form of pull requests, are more than welcome :-)

NyanCat-Reporter für PHPUnit

Test Driven Development soll auch Spaß machen, dachte sich Jeff Welch und forderte vor ein paar Tagen auf Twitter: „Make your tests fabulous“. Da ich mich tags zuvor mit Unit Tests für JavaScript mittels Mocha und Jasmine beschäftigt hatte, musste ich einfach antworten:

"NyanCat-Reporter für PHPUnit" vollständig lesen

VersionEyeBundle for Symfony2

At last week's Webmontag Frankfurt (?), Robert Reiz talked about continuous updating of dependencies with VersionEye. VersionEye, in its own words, is a

cross-platform search engine and crowdsourcing app for open source software libraries.

Essentially, the service tracks more than 170.000 libraries in languages like Java, Ruby, PHP, Python, and many more, and monitors any updates to those libs. Registered users can keep track of their projects and the libraries used in these projects. If any updates occur upstream, VersionEye sends out a mail. As a developer, you don't have to manually check on all the GitHub repositories anymore, VersionEye does that for you.

VersionEye also allows you to create beautiful graphs like this one here on the right. It also lists all the licenses of all the libraries used in your project, an let's you see which libraries you use most often.

Using it with PHP

Adding a PHP project to the service couldn't be simpler (if you use Composer, which you should!): Just upload your composer.json to VersionEye, and you're all set up. The same goes for project files like package.json (node.js), requirement.txt (Python Package Index), pom.xml (Maven) or Ruby Gemfiles. You can also connect VersionEye to your GitHub account, and it will notify you of outdated dependencies in your repositories.

Robert also said that there already is a VersionEye module for ZF2 and the ZendDeveloperTools that calls the VersionEye JSON API to track dependencies. However, I could not find a Symfony2 bundle with this functionality. So I wrote one.

"VersionEyeBundle for Symfony2" vollständig lesen

API-Dokumentationen mit ApiGen erstellen

Warum eigentlich API-Dokumentationen?

Eine gute Dokumentation ist wichtig für jedes Projekt, egal ob es sich dabei um ein von der Community entwickeltes Open Source-Tool handelt oder um eine für einen Kunden geschriebene Software. Eine API-Dokumentation erleichtert es Entwicklern, neu ins Projekt einzusteigen oder sich einen Überblick über alle relevanten Teile des Projekts zu verschaffen.

Ein weiterer Vorteil von API-Dokumentationen ist, dass sie sich schnell und automatisch generieren lassen. Dieser Schritt kann in den Build-Prozess integriert werden, so dass immer eine aktuelle, ggf. auch versionierte Dokumentation vorliegt. Sie sind sozusagen der leicht erfüllbare Mindeststandard für eine Dokumentation.

Denn, seien wir ehrlich, eine API-Dokumentation erklärt und veranschaulicht nicht (das machen Codebeispiele und handgeschriebene Dokumentationen), sondern ist eher eine Art Nachschlagewerk. Durch die immer besseren Funktionalitäten von IDEs verliert es sogar mittlerweile an Bedeutung. Ich persönlich schaue nur selten in einer API-Dokumentation nach, wenn ich das Projekt schon in meiner Entwicklungsumgebung vorliegen habe. Your mileage may vary ;-)

"API-Dokumentationen mit ApiGen erstellen" vollständig lesen