webconsul

the best webconsul(ting)

Hacking ZEIT Online

Sie sind hier: Startseite » webCONSUL

Die freudige Nachricht Launch der ZEIT ONLINE Content-API beim Hackday kam am 23.11. online und seitdem wurden bereits mehrere Tools und Anwendungen auf Basis dieser API erstellt. Open Data einer der größten deutschen Zeitungen!

Die API hat mich von Anfang an überzeugt. Ein sehr gutes Beispiel das ich persönlich sehr empfehlenswert finde ist, dass bei der Registrierung für einen API-Key nur Name und Mailadresse verlangt wird und sofort der Key kommt. Kein nerviges Double-Opt-In und Mailbestätigungen und mehr, nein, schlicht und einfach der Key. Gut gemacht!

Um die API auszuprobieren habe ich ZEITinstant erstelt.

Für beide Abfragen wird das gleiche Eingabefeld verwendet, der Präfix “k ” wird verwendet um eine Keyword- anstatt der Content-Suche zu verwenden.
Im Standard-Fall ist die API bei der Content-Abfrage beschränkt und der volle Umfang (inkl. Keywords, relevante Artikel, Kategorien und der Volltext) wird nicht ausgeliefert. Ist verständlich schließlich könnten das böse SEOs sofort für Scraping und Spinning wiederverwenden (und wer hat nicht schon daran gedacht ;-) ?).

Mein Code basiert auf dem ZEIT online jQuery Plugin (hier auf github) und wird folgendermaßen initialisiert:

var api = $('body').zon_api({
  query:'Josef Ackermann*',
  api_key:'123456.......',
  endpoint:'content',
  params:{fields:'subtitle,uri,title,href,snippet,teaser_title,teaser_text'},
  limit: 10
});

Wobei api_key mit dem jeweils eigenen ersetzt, endpoint auf das gewünschte Ziel (bspw. content, keyword, product, …) und params auf die abzufragenden Attribute gesetzt werden muss.

Danach können mit einem api.retrieve() schon alle Daten geholt werden:

api.retrieve(0, function(data){
  var result = data.get_result();
  $('div#content h2').append(' (Ergebnisse: '+result.found+')');

  $.each(result.matches, function(index, value){
    var text = '<li><span>'+value.title+'</span>';
    if(value.subtitle) text += ' - '+value.subtitle;
    if(value.snippet) text += '<br>'+value.snippet+'... ';
    if(value.href) text += '(<a href='+value.href+' target=_blank>Source</a>)';
    text += '</li>';
     $('div#content ul').append(text);
  });
});

Die Verwendung ist echt einfach und es lassen sich einige schicke Sachen damit anstellen. Ich bin gespannt ob unser Freund Googlebot den Content via AJAX crawlt und indiziert. Aber genau das finden wir mit diesem Post heraus ;-)

Weitere gute Beispiele sind hier aufgelistet, besonders erwähnenswert sind:

Eigenes VDSL vs. externes Serverhosting

Sie sind hier: Startseite » webCONSUL

Oft steht man zu Beginn eines Projekts vor der Frage: Wo sollen die Webseiten nach der Veröffentlichung liegen?
Sie müssen sicher, schnell, zuverlässig erreichbar, erweiter- und ändernbar sowie im besten Fall noch günstig sein.

Damit hat man schnelle eine Liste mit Anforderungen die sich meist gegeneinander ausschließen. Aus Erfahrung bieten sich zwei Varianten an:

  1. VDSL-Hosting: VDSL-Leitung zuhause und einen Server den man selbst betreibt
  2. Serverhosting: Anmietung/Unterbringung eines Server in einem externen Rechenzentrum

Während die zweite Möglichkeit die gängige Lösung ist, ist die erste den meisten Betreibern relativ unbekannt bzw. eher unvertraut, daher gehe ich in weiterem genau darauf ein.
Die kritischen Faktoren beim externen Serverhosting sind kurz:

  • Wieviel Bandbreite steht zur Verfügung?
  • Wieviel Traffic ist enthalten?
  • Kann man den Server vor Ort erreichen?
  • Wer ist für die Hardware verantwortlich? (Austausch und wenn ja, wann?)
  • Wie ist das Rechenzentrum angebunden?
  • Wie viele Server sind in der näheren Umgebung über die gleiche Leitung angebunden?
  • Wie gut ist der Support erreichbar und welche Leistungen sind inklusive (z. B. Serverreboot, Hochfahren, Festplattentausch, …)

Mit der Liste an Fragen kann man eine gute Einschätzung der Webhoster treffen und kann sie gegen den eigenen Serverbetrieb vor Ort abwägen.

Die zweite, in meinen Augen flexiblere Lösung, ist eigenes Hosting mit einer Very High Speed Digital Subscriber Line (vgl. Wikipedia).
Eine VDSL-Leitung unterscheidet sich zu den üblichen ADSL-Leitungen, dass sie einen höhren Upstream bietet und somit die Daten nach außen schneller verteilen kann.

Verwendet man eine solche Leitung, dann muss man sich “zuhause” nur noch um eine unterbrechungsfreie Stromversorgung kümmern, einen Server konfigurieren und die Daten einspielen.
Die Verantwortlichkeit der Hardware, die Fragen zur Brandbreite und viele der obigen sind damit automatisch gelöst. Denn in dieser Variante kann ich den Server vor Ort so konfigurieren und nutzen, wie ich es möchte. Ich kann auch günstigen Plattenplatz einbauen, weitere Server je nach Bedarf dazu schalten, Loadbalancing konfigurieren, einen Servercluster im Hintergrund aufbauen und vieles mehr.
Das Upgrade kostet mich dann jeweils nur die neue Hardware.

Für unser neues Projekt Gratishelfen haben wir genau dies so aufgezogen um die riesige Menge an Partnerschaften und URL-Handling bewältigen zu können. Nach vielen Vergleichen sind wir auf den Branchenprimus mit seinem VDSL-Angebot gekommen. Die Services der sind hier einfach ungeschlagen.

Jeder der sich selbst eine gute Konfiguration überlegen möchte, das Betriebssystem selbst wählen will (gerade bei Open/NetBSD) und flexibler Erweiterung bzw. Inbetriebnahme lokaler Testsysteme und Co, wird sich früher oder später genau die Frage stellen.
Aus persönlicher Sicht kann ich die VDSL-Lösung nur empfehlen. Eine Liste von DSL Anbietern gibt es beim DSL-Anbietertest. Dort kannst Du entscheiden welcher einer der Bester DSL Anbieter in deiner Region ist.

Bei Fragen dazu kontaktiert mich gern.
Soviel aus dem Entwicklungslab ;-)

P≠NP.

Sie sind hier: Startseite » webCONSUL

Aktuell geht es durch alle Blogs und Nachrichten:
Die Frage ob P≠NP soll bewiesen sein. Von Vinay Deolalikar, HP-Chefentwickler.

Der Beweis wird in diesem PDF geführt.

Die Nachrichtenquellen sind soweit:

Weitere Blogs berichten:

Bleiben wir gespannt, ob eine der wichtigsten Fragen beantwortet werden konnte oder ob das nur ein richtig genialer Linkbait von HP war.

Update: Scheinbar gibt es Mankos im Beweis. Aber mal abwarten.

… und wieder durch Spammer zerstört

Sie sind hier: Startseite » webCONSUL

All zu oft werden leider gute Projekte durch Spammer missbraucht, sodass sie entweder nicht mehr nutzbar (wie z. B. Gästebuchservices oder ähnliches) werden oder, dass sich der Service einfach nicht mehr rentiert.

So wird mein Lieblings-URL-Shortener leider seine Pforten schließen.

R.I.P. kl.am you did a f***ing good job!

Daher muss man leider mittlerweile unbedingt drauf achten, dass seine eigenen Services 100% sicher sind und gut funktionieren, also seid vorsichtig und checkt eure Seiten lieber vorher!

JavaScript Funktion aus String erzeugen

Sie sind hier: Startseite » webCONSUL

In JavaScript will man oftmals eine Funktion erzeugen, deren Eingabe- und Ausgabeparameter vorher noch unklar sind.
Daher muss die Funktion dynamisch erzeugt werden und darin ist JavaScript ja bekanntlich ein Meister.

Mit diesem kurzen Codebeispiel kann man diese Aufgabe lösen:

var add = new Function("a", "b", "return a+b;");
alert( add(3, 5) ); // ergibt 8

Damit ist es möglich die gewünschte Funktion zu erstellen, da der letzte Wert immer als die gewünschte Funktion interpretiert wird.

Probiert es aus! In welchen Anwedungsfällen verwendet ihr das?

JSXGraph WordPress Plugin Update

Sie sind hier: Startseite » webCONSUL

Wie im vorherigen Post erläutert gab es letzte Woche ein neues JSXGraph Release und somit musste das WordPress Plugin dazu auch aktualisiert werden.

Die Gelegenheit habe ich genutzt um folgende Änderungen einzubauen:
1.) Jetzt werden die vorhandenen Bibliotheksdateien im Pluginverzeichnis überprüft. Vorher wurde von dem Skript aus der Pfad überprüft, was zwangsläufig zu einem Fehler führt.
Dazu als Tipp an alle: bei einem WordPress Plugin immer die Pfade aus dem “root-Verzeichnis” aus überprüfen, zum Beispiel: if(file_exists(‘wp-content/plugins/jsxgraph/jsxgraph.css’))

2.) In Abhängigkeit bereits geladener Javascript-Bibliotheken wie prototype oder jquery wird jetzt keine Bibliothek geladen oder prototype.
Der Code dazu sieht folgendermaßen aus:

if(
!(typeof Prototype != 'undefined' && Prototype.Version)
&&
!(typeof jQuery != 'undefined' && jQuery.fn.jquery)
) {
var scr = document.createElement('script');
scr.src = '". get_bloginfo("wpurl") ."/wp-includes/js/prototype.js';
document.getElementsByTagName('head')[0].appendChild(scr);
}

D.h. falls weder prototype noch jquery bekannt sind, wird das mit dem Blog ausgelieferte prototype dynamisch nachgeladen.

Gibt es dazu evtl. eine elegantere Möglichkeit?

JSXGraph Release 0.73

Sie sind hier: Startseite » webCONSUL

Hallo Welt!

Sie sind hier: Startseite » webCONSUL

Der erste und obligatorische “Hello World!”-Post bringt damit den neuen Blog ans Tageslicht!