Nov
20.

Dein Rechner als Radiosender

Hallo liebe LimeSpace(r),

nur ein kleines Gimmick, aber wir konnten es uns nicht erlauben es nicht vorzustellen.

Wer immer mal seine Geek Freunde beeindrucken möchte sollte sich folgende kleine Linux Distro angucken, diese ermöglicht es deinen Rechner in einen Radiosender zu verwandeln. Beziehungsweise wird dein Monitor ein Radiosender. Getestet haben wir es nur mit einem Röhrenmonitor, vermutlich dürfte das auf einem TFT nicht funktionieren.

Zum Download [Tempest Showroom]

Linux als Radiosender

Nach der Installation und dem booten, sollte dein Radio auf der Frequenz 1500kHz (AM) “Für Elise” von Beethoven empfangen :-)

Wir freuen uns über Bookmarks ! Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • Y!GG
  • Alltagz
  • Webnews
  • Hype
Nov
18.

Zend Framework mit CouchDB Teil 2

Zend Framework @ Limespace.de

Hallo und guten Abend,

wie im ersten Teil bereits angekündigt, gibt es Heute die Fortsetzung von unseren Versuchen mit dem Zend Framework und CouchDB unter Ubuntu.

Beschäftigen werden wir uns mit den typischen CRUD Operationen, sprich das Löschen/Anlegen/Ändern von Dokumenten in einer CouchDB.

Wir machen dann direkt dort weiter wo wir aufgehört haben, und legen uns in unserem indexController eine neue Action an, passend zu der Aktion bezeichnen wir diese als insertdocAction().

Das Dokument soll eine von uns vergebene ID erhalten.

 public function insertdocAction()
 {
 // IP und Port der Datenbank
 $couchDb = 'http://192.168.2.102:5984/limespacededb';

 $client = new Zend_Http_Client();

 // Unsere Daten packen wir in ein Array
 $dokument = array(
 'title' => 'LimeSpace.de CouchDB',
 'text' => 'Dieses ist ein ganz toller Test von den LimeSpacern',
 'inserted' => time(),
 );

 // Encoden nach JSON
 $prepared = json_encode($dokument);

 // Daten an die DB senden mit der ID "TEST_ID"
 $response = $client->setUri($couchDb . '/TEST_ID')
 ->setRawData($prepared, 'text/json')
 ->request('PUT');

 echo $response->getBody(); // sollte 201 sein
 }

Wenn wir / ihr jetzt die Action aufruft, sollte in eurem Browser eine positive Meldung erscheinen:

{“ok”:true,”id”:”TEST_ID”,”rev”:”1-e9363d789d4abba0e6621ec7f8d9461c”}

Übrigens: Es ist uns bewusst das die Code – Beispiele absolut nicht perfekt sind, wenn man ernsthaft mit CouchDB arbeiten möchte, sollte man sich ein kleines Framework basteln, um gut und schnell die wiederkehrenden Aufgaben erledigen zu können, eine fertige library haben wir bisher leider nicht gefunden.

Ok weiter mit dem Anzeigen von Dokumenten aus unserer Datenbank.

Wir legen uns wieder eine neue Aktion an “readdocAction” , im echten Leben würde man dort jetzt sicherlich auf Parameter prüfen etc, aber wir lesen nur das Dokument mit der eben vergebenen “TEST_ID” und lassen uns direkt das eigentlich im JSON Format vorliegende Ergebnis in ein Array umwandeln.

 public function readdocAction()
 {
 // IP und Port der Datenbank
 $couchDb = 'http://192.168.2.102:5984/limespacededb/';
 $id = urlencode('TEST_ID'); // sicher ist sicher

 $client = new Zend_Http_Client();
 $response = $client->setUri($couchDb . $id)
 ->request('GET');

 $responseArray = json_decode($response->getBody(), true);

 var_export($responseArray);
}

Und tatsächlich, da haben wir wieder unser Dokument:

array (
 '_id' => 'TEST_ID',
 '_rev' => '1-e9363d789d4abba0e6621ec7f8d9461c',
 'title' => 'LimeSpace.de CouchDB',
 'text' => 'Dieses ist ein ganz toller Test von den LimeSpacern',
 'inserted' => 1258395810,
)

Jetzt geht es an der Ändern von Dokumenten, hier merkt man nun den Unterschied zu einer normalen SQL Datenbank, man kann nicht nur ein einzelnes Feld in einem Dokument ändern sondern nur das komplette Dokument. Dafür wird dann die entsprechende _rev ID gebraucht (aus readdocAction).

public function changedocAction()
 {
 // IP und Port der Datenbank
 $couchDb = 'http://192.168.2.102:5984/limespacededb';

 $client = new Zend_Http_Client();

 $revId = ''; // _rev ID des Dokuments

 // Unsere Daten packen wir in ein Array
 $dokument = array(
 '_rev' => $revId, // <-- REF ID 'title' => 'LimeSpace.de CouchDB und mehr',
 'text' => 'Dieses ist ein ganz toller Test von den LimeSpacern',
 'inserted' => time(),
 );

 // Encoden nach JSON
 $prepared = json_encode($dokument);

 // Daten an die DB senden mit der ID "TEST_ID"
 $response = $client->setUri($couchDb . '/TEST_ID')
 ->setRawData($prepared, 'text/json')
 ->request('PUT');

 echo $response->getBody(); // sollte 201 + neue _revid seib
 }

Zum Ausprobieren empfehlen wir einfach die readdocAction auszuführen, revID in die Action kopieren und los geht es :-)

Das einfachste ist wie immer das Löschen von Dokumenten, auch hier müsst ihr die revID des Dokuments kennen:

public function deletedocAction()
 {
 $id = 'TEST_ID';
 $revId = '';
 $couchDb = 'http://192.168.2.102:5984/limespacededb/';

 $client = new Zend_Http_Client();
 $response = $client->setUri($couchDb . $id .'?rev=' . $revId)
 ->request('DELETE');

 echo $response->getStatus(); // bei richtiger rev id sollte es 200 sein.
 }

Wir haben fertig. Fazit: Eine nette Sache, wenn man sich mal eine passende kleine library geschrieben hat, und ein passendes vielleicht sehr JavaScript lastiges Projekt hat dürfte das viel Spaß machen.

Wir sind auf eure Versuche und Erfahrungen gespannt.

P.s. (07.12.2009) : Da wir einige Anfragen zu Büchern erhalten haben, wir können euch wärmstens folgendes Buch zum Einstieg in CouchDB empfehlen:

CouchDB Buch

CouchDB – The Definitive Guide (Amazon)

Wir freuen uns über Bookmarks ! Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • Y!GG
  • Alltagz
  • Webnews
  • Hype
Nov
16.

Experimente mit Zend Framework und CouchDB #1

Abgelegt in Tutorials | 2 Kommentare

Zend Framework @ Limespace.de

Hallo ihr lieben,

zu unserem erstaunen hatten wir mal wieder etwas Zeit zu “spielen”.

Alle reden über Dokumenten Datenbanken wie CouchDB, auch wenn wir noch kein Projekt haben wo man dieses mal einsetzen kann, wollten wir doch mindestens mal grundlegend wissen wie man damit arbeitet.

Ein paar Dinge vorweg: CouchDB arbeitet über HTTP Requests, antwortet mit JSON und wurde vom Apache Team entwickelt.

Also Schritt 1, CouchDB installieren, das ist unter Ubuntu schnell erledigt:

sudo apt-get install couchdb

Aber auch unter Windows sollte die Installation kein ganz so großes Problem sein, eine ausführliche Anleitung findet ihr im CouchDB Wiki.

Danach sollte das Webinterface bereits aus dem Browser erreichbar sein:

http://localhost:5984/_utils/config.html

Da wir von einem anderen Rechner auf die CouchDB zugreifen, haben wir in der Konfiguration die DB an die richtige IP der “Ubuntu-Möhre” gebunden, in unserem Falle: 192.168.2.102 (dieses geht im Webinterface unter configuration).

Die erste Verbindung zur Datenbank stellen wir mit der Hilfe vom Zend Framework und der Zend_Http_Client Klasse her, wir möchten hier nicht erklären wie man Zend Framework installiert/nutzt, wer Informationen braucht ist auf der Homepage von Zend gut aufgehoben.

Um es einfach zu machen nutzen wir ein mit Zend Tool erstelltes Projekt, und arbeiten ganz simpel in der indexAction des indexControllers, wir wollen ja nur spielen. Damit wir nicht für alles ein View Script benötigen haben wir den View-Renderer in der init Action des indexControllers deaktiviert.

public function init()
{
 $this->_helper->viewRenderer->setNoRender();
}

Mit folgendenm Code Snippet kann man bereits sehen ob die Datenbank erreichbar ist:

 public function indexAction()
 {
 // IP und Port der Datenbank
 $couchDb = 'http://192.168.2.102:5984';

 $client = new Zend_Http_Client();

 echo $client->setUri($couchDb)
 ->request('GET')
 ->getBody();
 }

Nach dem Aufruf der indexAction im Controller sollte euch folgendes erscheinen:
{“couchdb”:”Welcome”,”version”:”0.10.0″}
Warum so ein komisches Format? Es ist JSON. Was die CouchDB für den Einsatz in Ajax Anwendungen natürlich recht interessant macht.

Um nun eine neue Datenbank anzulegen, erstellen wir die nächste Action im indexController “makedbAction”, diese bekommt folgenden Inhalt:

public function makedbAction()
{
 // IP und Port der Datenbank
 $couchDb = 'http://192.168.2.102:5984';

 $client = new Zend_Http_Client();

 // Anzeigen version
 $result = $client->setUri($couchDb . '/limespacededb')
 ->request('PUT');

 echo $result;
}

nach dem Aufruf im Browser wird hoffentlich eine gute Nachricht ausgegeben:

HTTP/1.1 201 Created Server: CouchDB/0.10.0 (Erlang OTP/R13B) Location: http://192.168.2.102:5984/limespacededb Date: Wed, 11 Nov 2009 19:22:17 GMT Content-type: text/plain;charset=utf-8 Content-length: 12 Cache-control: must-revalidate {“ok”:true}

Weiter geht es dann in 2 – 3 Tagen mit dem Einfügen / Löschen und Ändern von Dokumenten.

nach dem Aufruf im Browser wird hoffentlich eine gute Nachricht ausgegeben:
Wir freuen uns über Bookmarks ! Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • Y!GG
  • Alltagz
  • Webnews
  • Hype
Nov
14.

Das optimale Geschenk für den Webgeek (Extrafilm)

[Trigami-Anzeige]

Hallo ihr lieben,

ihr fragt euch noch was schenkt man dem Webgeek vom Schreibtisch gegenüber zu Weihnachten? Wir haben eine optimale Idee für euch:

Einen Programmierer-Kalender. Was das sein soll? Ganz einfach ihr schnappt euch die PHP Dokumentation und such euch 12 übliche Funktionen raus. Screenshot und ab in eine beliebige Applikation zum Bearbeiten von Fotos.

Mit ein paar Handgriffen lässt sich dann der Screenshot aufhübschen und als Motiv für einen Fotokalender verwenden.

Das könnte zum Beispiel dann so aussehen:

PHP Kalender zu Weihnachten

Dort kann man dann seiner Kreativität freien lauf lassen, wir haben nur ein paar Webseiten Elemente übermalt und den Funktionsnamen eingefügt.

Damit das ganze nicht zu teuer wird: Bei Extrafilm gibt es momentan eine Weihnachtsaktion wo ihr 20 % Rabatt bei einer Bestellung von 2 identischen Produkten bekommt (sprich zum Beispiel 2x ein Fotokalender), der Dienst bietet sich insbesondere für so etwas an , das sie eine doch recht ausgereifte Desktop Applikation zum Bearbeiten der Fotogeschenke anbieten (schimpft sich einfach DESIGNER).

Der Link mit Gutschein [Rabatt Fotogeschenk] gültig bis 30.11.2009

Mousepad_Red_Waves

Neben Kalendern bieten sich auch Tassen oder Mousepads mit einer PHP Funktion an, die Möglichkeiten sind fast unbegrenzt. Wir wünschen viel Spaß beim Basteln :)

Wir freuen uns über Bookmarks ! Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • Y!GG
  • Alltagz
  • Webnews
  • Hype
Nov
14.

Der Wochenrückblick: PHP Exceptions, Photoshop Templates, ORM

Der Wochenrückblick

Servus,

es ist Samstag und somit Zeit für unseren kurzen Wochenrückblick. Vielleicht schaffen wir es ja sogar dieses mal alles etwas strukturierter aussehen zu lassen.

Beiträge aus der PHP Scene die wir klasse fanden:

Als erstes war da Brendan Savage welcher einen ausgezeichneten Artikel über Exceptions in PHP geschrieben hat, er geht hier nach und nach doch ziemlich ins Detail, auch wie Exceptions in einem ordentlichen Layer-Konstrukt behandelt werden sollten bleibt nicht unerwähnt. [Link zum Beitrag PHP Exceptions - englisch].

Weitere Infos stellt er übrigens auch gleich bereit und erklärt wie die Exception Klassen ordnungsgemäß erweitert werden für den Hausgebrauch [Link zum Beitrag PHP Exceptions erweitern - englisch].

In der “electronixtoolbox” gab es einen knappen, aber doch guten Artikel über das Clonen von Objekten, wer erinnert sich nicht an die Zeit von PHP 4 wo Objekte noch Kopien waren..[Link zum Beitrag PHP Objekte clonen - englisch].

Der letzte Artikel aus der Rubrik PHP stammt von Blog “Invisible to the eye” , es geht um mein liebstes Thema ORM’s für PHP. Wer nicht den ganzen Artikel lesen möchte: Mit Doctrine 2 wird es den/das erste richtige ORM System für PHP geben, wir sind gespannt. [Link zum Beitrag ORM in PHP - englisch].

Beiträge aus anderen Bereichen:

Da ihr sicherlich mit den PHP Beiträgen genug zu tun habt für das Wochenende, fassen wir uns kurz. Wer auf der Suche nach kostenlosen Photoshop Templates für Webseiten ist, wurde diese Woche von WebAppers beglückt, gleich 25 an der Zahl [Link zu den 25 kostenlosen Photoshop Templates].

Wer wie wir gerade mal seine Workstation umgebaut hat (Windows 7) freut sich sicherlich über das Tutorial  zum Einrichten einer lokalen Entwicklungsumgebung von NetTuts+ [Link zum Tutorial - englisch].

So sieht doch schon etwas ordentlicher aus, wir wünschen ein schönes Wochenende.

Wir freuen uns über Bookmarks ! Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • Y!GG
  • Alltagz
  • Webnews
  • Hype