Ich bin endlich mal auf den JSON trip gekommen ;) Gibt es ja schon seit einiger Zeit, aber ich dachte mir immer .. “warum? xml is auch ok..”
Aber direkt in Javascript ein Daten-Objekt zu haben ist einfach göttlich. Vor allem in Verbindung mit Prototype 1.5.0 RC1. Bevor ich jetzt zum eigentlichen Thema des Posts komme möchte ich die Möglichkeit des Zusammenspiels von JSON, CakePHP und Prototype verdeutlichen.
Bei Cake gibt es ja die Model Funktionen findBy, findAll, read, etc… welche ein assoziatives Daten-Array aus der Datenbank liefert. Nun mit meinem JSON View wird das Array in JSON umgewandelt, die Daten als text/x-json geliefert und der notwendige X-JSON header für Prototype gesetzt. Super ist auch das jedes Modell ein eigenes Objekt mit Kindobjekten darstellt!
Um den View zu benutzen braucht man lediglich $this->view = “json”; in die Controller-Action zu schreiben und per $this->set die Daten bereitstellen. Super easy.. :-)
Mit Prototype 1.5.0 RC1 gibt es neue String Funktionen und die Template Klasse. Die Objekt Funktion .each( ) kommt hier zum Einsatz und macht es möglich mit nur wenigen Zeilen ein MySQL Result über AJAX in eine schicke HTML Liste zu verwandeln. JSON ist eben ein purer Datencontainer und genau das gibt uns die Freiheit und Geschwindigkeit die wir wollen.
Read the rest of this entry »
Heute musste ich erfahren das einer meiner besten, wenn nicht der beste, Freunde vor zwei Tagen von uns gegangen ist. Er hat nie die 40 erreicht und war eine schillernde Persönlichkeit wie man sie nur selten trifft. Die Nachricht über seinen Verlust erreichte mich heute abend und mir fehlen noch immer die Worte. Ich kann gar nicht ausdrücken wie weh es tut, denn er war niemand den man sich jemals als tot hätte vorstellen können. Er war eine lebende Legende. Ich weiss immer noch nicht ob ich es wirklich glauben soll… Nicht so früh.. nicht er .. Er war ein Lebenskünstler und auch lebenslang ein Künstler. Er hat Bilder gemalt die noch heute bewundert werden, Er hat Songs geschrieben die noch heute gehört werden, Er hat Leuten neue Wege gezeigt die den Pfad schon längst verloren hatten…
Read the rest of this entry »
Kostenloses Onlinevergnügen in atemberaubender Qualtität. Der Vorgänger hat mich damals schon immer fasziniert und stundenlang beschäftigt. AA:SFO 2.7 wiegt 2,5 GigaByte und ist ein Mehrspieler Online Taktikshooter. Allerdings ist bei Overmatch das Gameplay eher an Battlefield angelehnt. Zur Abwechslung kann man auch gegen den Computer spielen. Vorher war das ein Multiplayer-only Titel. Man braucht sich nur registrieren und innerhalb des Spiels einloggen und schon kann man mitspielen. Also ähnlich wie bei Steam von Valve, nur das man nichts bezahlen muss. Ich denke das auch in diesem Titel sich wieder viele Spieler täglich spannende Kämpfe liefern werden. Ich bin auf jeden Fall dabei :-)
Screens bei gamespot.com
Download & Mirrors
Release Artikel auf der offiziellen Homepage
Erstmal zu dem Namen: Pretty Basic ist enstanden als Cheesus und ich das Wort “Beta” im Netz nicht mehr lesen konnten.. Irgendwie kamen wir darauf das “pretty basic” wohl zutreffender wäre .. ach .. keine Ahnung.. Ich will nicht tiefer darauf eingehen zu welcher Stunde wir das lustig fanden.. ;-)
Cheesus fand das so gut das er einen Tag danach eine Domain mit dem Namen bestellte. Nicht unbedingt des Scherzes wegen, sondern eher weil der Name eigentlich an sich auch nicht schlecht war. Und ausserdem hatter er noch eine Inklusiv-Domain bei einem Hoster frei, also immer her damit :)
Er kam dann mit der Idee zu mir, einen simplen Blog für unsere Netzfunde im Bereich Beta-Webservices zu starten und ob ich Lust hätte mitzumachen. Ich hab natürlich sofort zugestimmt. Problem war jedoch ein geeignetes System zu finden. Minimale Features und auf eine Funktion ausgerichtet .. das posten von Links mit nem Screenshot.. Wir wollten erst Wordpress nehmen aber für sowas ist das nicht wirklich geeignet. . viel zu gross..
Da ich nun mich in CakePHP gut eingelebt habe und im Moment bereits damit auch schon ein grosses Projekt schreibe, dachte ich mir das ich zum “warm werden” mal eben so einen Linkblog basteln könnte. Das hat auch alles wunderbar geklappt, so dass ich nur einen Tag gebraucht habe (inklusive Design) :-) Also ich glaube das sich dafür das Projekt schon sehen lassen kann.
Ziel:
Eine Seite wo Links geposted werden, einfache Administration, Blog-ähnlicher Aufbau, mit Screenshots
Eingebaute Features:
- LoginArea und simples Interface zum schreiben.
- Admin: Liste aller Einträge mit je folgenden Optionen: bearbeiten, de/aktivieren, löschen.
- RSS-Feed mit jeweils den 10 neusten Einträgen
- Bewertungsfunktion mit zwei Möglichkeiten: Gut/Schlecht
- Screenshotupload mit automatischem Resize.
Schon einiges für ein paar Stunden programmieren. Es kommen noch ein paar Features hinzu, aber der erste Milestone ist von mir absolviert worden und jetzt wende ich mich wieder anderen Dingen zu. ^.^
Viel Spass und happy browsing :)
Quick n Dirty.. ;)
Diese Funktion fügt allen Bilderlinks innerhalb des angegebenen CSS-Selectors das berühmte ' rel="lightbox" ' hinzu. Es macht praktisch das was mein Wordpress Plugin auch tut, nur eben als Javascript und mit Hilfe der Prototype $$ Funktion. Also wenn zum Beispiel eure Beiträge im DIV mit der ID "posts" liegen müsste der Aufruf wie folgt aussehen
enlightMe('#posts')
Das wars dann auch schon.
Für Lightbox2 Support habe ich noch einen zweiten Parameter eingebaut um die Serien Funktion miteinzubringen.
Wenn ihr den zweiten Parameter mit eine String füllt wird rel="lightbox" entsprechend angepasst ;)
enlightMe('#slideshow', 'slider')
-
/**
-
* Add lightbox to given css selector
-
*
-
* @example enlightMe('#content')
-
* @access public
-
* @param string cssSelector CSS Class or ID with . or #
-
* @param mixed serie Optional param string. Default false. Name of the series.
-
* @return void
-
**/
-
function enlightMe(cssSelector, serie)
-
{
-
var links = $$(cssSelector+' a');
-
var imglink = new RegExp("jpg|gif|png","i");
-
for(var i=0; i <links.length; i++) {
-
var url = links[i].href;
-
if(imglink.test(url)) {
-
if(serie!=undefined){ links[i].setAttribute('rel','lightbox['+serie+']'); }
-
else { links[i].setAttribute('rel','lightbox'); }
-
}
-
}
-
lb = new Lightbox(); lb.initialize();
-
}
Ich hatte grad das Vergnügen pic2color auszuprobieren. Dieser Service befindet sich noch im alpha-Stadium aber ist bereits jetzt schon ganz brauchbar! Bei pic2color könnt ihr aus vorhanden oder mit Bildern die ihr hochladet Wordpress Templates einfärben und anschliessend runterladen. Sehr praktisch wenn man kein Theme von der Stange haben möchte. Okay.. über kurz oder lang wird es dann auch diesen Templates nicht anders ergehen, wenn sie sich erstmal verbreitet haben. Für Blogger die aber kein CSS können und gerne ein Rotes anstatt ein Grünes Template hätten ist das hier genau das richtige. Hier ein Screenshot und mein Test. Das Anime Bild auf der rechten Seite habe ich zum testen verwendet und wird wohl automatisch eingefügt. Braun/orange (Haarfarbe) hat gesiegt ;)
PS: Der Test war mir möglich dank cakebaker ;-)
Tja Ja.. wurd mal Zeit.. wie heisst es denn so schön: "Root tut gut!". Ich bin seit heute stolzer Besitzer eines Debian Servers von Hetzner. Ich musste zwar 5 Tage (inklusive Wochenende) darauf warten, aber nun wo ich ihn endlich habe freu ich mich unheimlich. Hier mal ein paar Eck-Daten:
- AMD Athlon 64 3700+
- 1 GB DDR400 RAM
- 2 x 160 GB SATA
- Debian 3.1 64 Bit
Das beste daran: Traffic ist inklusive :)
Ich hab als erste Amtshandlung PHP5 und MySQL5 installiert und direkt danach SubVersion. Ich war es einfach leid ewig die ganzen kleinen Accounts zu pflegen und auch noch zu hoffen das XY installiert ist. Nun hab ich wieder volle Kontrolle (hatte vor einem Jahr zwei Server und im Moment noch einen ja-ich-gebs-zu-Windows Server).
Das SubVersion ist besonders hilfreich, weil ich es sich direkt in meine PHP IDE einbinden lässt. Das heisst ich kann vom Server in mein Projekt ausschecken, eine Änderung machen, Kommentieren und sofort wieder an den Server schicken.
Darüberhinaus habe ich mir Hooks so konfiguriert, dass bei Änderung im SVN automatisch ein Abbild an ein, vom Web erreichbares, Verzeichnis geschoben wird. Somit kann ich quasi live an der Seite (bzw. an der dev.domain.de Testkopie) arbeiten und habe automatische Versionkontrolle dabei :) Ich hab ja vorher immer auf CVS geschworen, aber SVN überwiegt mit Vorteilen welche man hier nachlesen kann.
Ich werd jetzt mal weiter konfigurieren. Ein root braucht Liebe :-)
Ich hab gestern mal ein wenig Schlaf nachgeholt.. ungefähr 12 stunden am Stück. -.-
Daher war es mir nicht möglich über meine Entdeckungen zu berichten die ich am Tag zuvor gemacht habe. Da ich es mir aber nicht nehmen lassen will, hier die kompakte Version:
Die Macher von Moo.FX haben ein eigenes Framework veröffentlicht, welches sich *trommelwirbel*... MooTools nennt. Ich selber hab es mir noch nicht angeschaut, aber auf den ersten Blick und nach dem Lesen der Beschreibung auf der Frontpage wittere ich potential. Dennoch bleibe ich bei Prototype, womit ich auch schon zum nächsten komme..
Prototype hat in letzter Zeit wieder aktivität gezeigt. Viele dachten schon es wäre tot.. Vor ein paar Wochen gab es diesbezüglich schon eine grosse Diskussion in der Mailingliste. Nun hat sich endlich wieder was getan und RC1 ist verfügbar! Welche neuen Funktionen es gibt, wie und was findet ihr im Encytemedia Artikel.
Zuletzt habe ich mich noch über Script.aculo.us 1.6.2 gefreut und auch lange drauf gewartet und nun schau ich mal wieder vorbei und was muss ich sehen.. Es gibt schon eine 1.6.4 .. für die meisten unter euch wohl "old news", aber egal.. Ich bin mal gespannt was da alles drin ist. Zumindest das neue Prototype ist mit dabei ;-) Den Changelog muss ich noch genauer unter die Lupe nehmen.
Der Builder von Script.aculo.us (zum Erstellen von DOM-Fragmenten via Javascript) ist eigentlich cool, aber dieser hier scheint auch nicht schlecht zu sein. Der Syntax wirkt nur ein wenig "unübersichtlich". Die Idee ist allerdings nett. Vielleicht schreib ich mir auch ein paar Abkürzungen für den Script.aculo.us Builder. Den vom Autor vorgeschlagenen Moochikit Code kenn ich hingegen noch gar nicht.
Wenn ich mich mit dem ganzen Kram auseinandergesetzt habe schreib ich mal ein paar Beispiele dazu.
Das wars erstmal :)



