BlogKontaktTagcloud

Bye Bye 2006

Bye Bye 2006! Mit dem Jahr 2006 geht ein tolles und ebenso strenges Jahr vorbei. 2006 war eine tolle Zeit!

Ich habe meine Schule (fast) abgeschlossen, wunderbare Sommerferien gehabt und einen unglaublichen Job (ohne suchen) gefunden (dazu aber im 2007 mehr). Meine Vorsätze habe ich alle erfüllt, nur vom Eidg. Dipl. Ing. trennt mich noch eine Präsentation. Eigentlich waren diese Vorsätze so gut das ich sie gleich nochmals übernehmen könnte. Damits aber nicht ganz so langweilig wird hier noch die neuen Vorsätze
  • Englisch lernen!
  • Den Einstieg ins richtige Leben (Arbeitsleben) mit bravour meistern.
  • Meinen faulen Hintern im Winter 07/08 endlich auf eine Skitour bewegen
So fertig gebloggt! Verabschieden wir uns vom 2006 mit der Ehre die ihm gebührt! Än gute Rutsch!
Ähnliche Beiträge:
Bye, bye 2007
Tweakfest - Samstag
Tweakfest - Donnerstag und Freitag
Pfingsten zu Hause
Muttertag
Comments (0)  Permalink

Quo vadis Webstandards

Im aktuellen c't (1/07) findet sich ein sehr interessanter Artikel zu Webstandards ("Webstandards im Wandel", p. 162ff). Es wird in diesem Artikel weniger auf technische Details eingegangen, vielmehr geht es um die Standards und die Standardorganisationen. Leider ist der Artikel nicht online verfügbar. Auf der Seite des Authors finden sich jedoch die ausführlichen Interviews und weiterführende Links.

Im Artikel wird erläutert das die Standardisierung im W3C stockt. Der seit 1997 nicht mehr erweiterte HTML-Standard ist nachwievor der meist eingesetzte in der Webentwicklung. XHMTL kommt, obwohl schon 6 Jahre alt, irgendwie einfach nicht in die Gänge und XHTML 2.0 hängt seit Ewigkeiten in der Spezifizierungs-Schleife fest. Das W3C scheint mit ihren Standards fest zuhängen und nicht vom Fleck zu kommen.

Nicht so die WHAT WG (Web Hypertext Application Technology Working Group) bei der momentan, unterstützt von den "kleinen" Browsern, an HTML 5 gearbeitet wird. HTML 5 ist weniger strikt als XHTML und ist ein Versuch das HTML weiter zu entwickeln.

Ich persönlich begrüsse die Bemühungen von WHAT WG sehr, ich glaube das HTML 5 ein sehr praktikabler Standard wird. Ich finde jedoch auch das für eine konsequente Weiterentwicklung des Internets (und die wird wohl nötig sein wenn das Internet noch mehr Wissen enthalten soll und darüber noch mehr Geschäfte abgewickelt werden sollen) grössere Würfe nötig sind als der des pragmatischen HTML 5. Die Kritik am W3C mag berechtigt sein, meiner Meinung nach ist das W3C aber dennoch weiterhin der Ort an dem das Internet "entwickelt" wird. XHTML 2 könnte aber ein zu grosser Schritt in die Zukunft sein. Dies weniger wegen XHTML 2 selber, vielmehr der dürfte das Auslagern von Framesets, Ereignissen und Formularen bei Webentwickler und Browserhersteller gleichermassen Kopfzerbrechen auslösen.

Welcher Standard denn nun? Meiner Meinung nach ist XHTML heute das Mass aller Dinge, mit der aktuellen CSS-Version (hoffentlich irgendwann CSS 3) lassen sich damit gute, standardisierte Webseiten bauen. Der Wechsel zum nächsten Webstandard wird wohl noch gut 10 Jahre dauern. Vermutlich wird sich dann die Internetwelt aufspalten. Grosse Firmen und fertige Produkte werden dann vermutlich XHTML 2 einsetzen. Kleinere Firmen und Private werden auf das einfacher zu benutzende HTML 5 ausweichen. Eventuell kommt bis in 10 Jahren aber auch nochmals ein neuer Standard und XHTML 2 wird wegen seiner Komplexität eventuell gar nie implementiert.
Ähnliche Beiträge:
Web-Continuations - Technolgie 2007
Ajax vs. Flash
Zeitplanung bei Webprojekten (nichts als die Wahrheit)
Lernen (oder eben doch nicht)
Comments (0)  Permalink

Tony vs. Paul

youtube ist ein wunderbares Zeit-Tötungs-Instrument. Die meisten Filme muss man jedoch nicht gesehen haben, ihre Qualität ist meist lausig. Nicht so "Tony vs. Paul"! Dieser Film ist das beste was ich auf youtube gesehen habe. Tony verhaut Paul in einer wunderbaren Stopmotion-Aufnahme wärend ganzen 5 Minuten. Ich glaube die zwei hatten nach den Flugszenen wohl ordentlich Muskelkater.

[via InVisible Blog]
Ähnliche Beiträge:
The Grid
Comments (2)  Permalink

Wikipedia-Suchmaschine

Jimmy Wales, Gründer von Wikipedia, will zusammen mit Amazon eine Suchmaschine aufbauen. Wales sagt, in einem Artikel der Zeitung "Die Welt", das vier Mangel das Suchen im Internet zum Graus machen, nach ihm währen das: "Mangel an Freiheit, Mangel an Gemeinschaft, Mangel an Verantwortung, Mangel an Transparenz." Für micht trifft vorallem der letzte Punkt zu, irgendwie habe ich das Gefühl das Google meine Suchresultate meiner Herkunft anpasst ohne das ich gross Einfluss darauf hätte.

So wie es aussieht möchte Wales mit Wiki-Technologien eine Art Index oder Verzeichniss des Internets erstellen. Ich bin mir nicht so sicher ob dass funktionieren wird (obwohl ich manchmal ein wenig zu pesimistisch bin). Das sind meine Gründe warum das nichts wird:
  1. Das hat schon mal nicht funktioniert! (siehe DMOZ)
  2. Dieses Zeugs (Wiki, Verzeichnisse, ...) zieht Spamer magisch an
  3. Das Internet ist zu gross (und wächst zu schnell) um es "von Hand" zu indexieren
  4. Wiki-Technologie ist evtl. nicht die richtige Technologie für so ein Projekt (weil es zu viele Seiten, mit zu wenig Inhalt geben wird)
Ich glaube desshalb eher nicht an diese Idee. Meiner Meinung nach würde es mehr nützen bestehende Dinge (Blogs, bookmark-sites, Microformate, Bewertungssysteme, etc.)  in "klasische" Suchmaschinen einzuweben. Ein breites Verteilen der Datenquellen würde es für Spamer auch schwiriger machen die Suchmaschine zu manipulieren.
[via joblog]
Ähnliche Beiträge:
Ein Projekt mit Stolpersteinen
The future knocks
Geheimer Code?
Google zieht um
WikiWay2.0
Comments (0)  Permalink

"Defekte" for-in-Schleife in JavaScript

"Hunderttausend Höllenhunde" würde Kapitän Haddock wohl zu JavaScript sagen. Ganz werde ich diese Programmiersprache wohl nie verstehen. Man kann mit ihr wunderbare Dinge basteln und ebenso wunderbare Fehler. So geschehen mit meiner neuen Suchmaschine "Loogel".

Ein for-in-Loop über ein assoziatives Array verweigerte im IE seinen Dienst, während das gleiche Konstrukt in einem anständigen Browser ohne Probleme lief. Im Internet gibt es allerlei Erklärungen zu nicht funktionierenden for-in-Schleifen, die hatten aber alle genau gar nichts mit meinem Problem zu tun. Und um es gleich vorweg zu nehmen, der Internet Explorer kann in diesem Fall nicht allzu viel dafür.

Im nachfolgenden das stark vereinfachte Beispiel. Im Firefox läuft das ganze ohne Probleme während im Internet Explorer die vielsagende Meldung "Das Objekt unterstützt diese Eigenschaft oder Methode nicht." erscheint.

<html><head><title>Test</title>
<script type="text/javascript">
function OnLoad(){
var Ausgabe = "";
var obj = new Object();
obj[324] = "adff";
for (Eigenschaft in obj)
Ausgabe = Ausgabe + Eigenschaft+ ": " + obj[Eigenschaft] + "<br>";
document.write("<h1>Eigenschaften des Objekts <i>document<\/i><\/h1>");
document.write(Ausgabe);
}
</script>

</head>
<body onload="OnLoad()">
<div id="Eigenschaft"></div>
</body>
</html>
Das Problem beginnt damit, dass der DIV-Block mit der id "Eigenschaft" automatisch als Variable im Skope zur Verfügung steht. Mit alert(Eigenschaft); vor dem for-Loop erkennt man das hier das Objekt des Div-Blocks (HTMLDivElement) zugewiesen ist. Der Firefox überschreibt nun dieses Objekt einfach, der Internet Explorer hingegen gibt einen Fehler aus. Richtig wäre das ganze mit einem var vor der Eigenschaft.
   for (var Eigenschaft in obj)
Ausgabe = Ausgabe + Eigenschaft+ ": " + obj[Eigenschaft] + "<br>";
Der Div-Block wird danach nicht mehr automatisch der Variablen zugeordnet. alert(Eigenschaft); vor dem for-Loop gibt nun "undefined" zurück. (Was wiederum aus meiner Sicht ein wenig magisch ist.)

Der Sünder ist in diesem Fall jedoch nicht der Internet Explorer. Seine Fehlermeldung ist zwar wenig aussagekräftig, aber durchaus korrekt. Nach ECMA-Standard gibt es zwei for-in-Loops, einen mit var und einen ohne. Bei denjenigen ohne var muss vor dem in eine LeftHandSideExpression stehen, was zum Beispiel ein Feldaufruf, ein Arrayzugriff oder ein Funktionsaufruf sein kann, jedoch kein Objekt wie in meinem Beispiel.
Ähnliche Beiträge:
Parallel Request mit AJAX und PHP
Assoziative Array nach Value sortieren
Synchroner Aufruf mit XMLHttpRequest in Firefox
Webtuesday: PHP wins!
Webtuesday: PHP vs. Javascript: which sucks more?
Comments (3)  Permalink

Tag Searchengine LOOGEL based on Google and del.icio.us

Nun habe ich mir meine eigene Suchmaschine gebastelt. Weil das Durchsuchen des gesamten Internets ein wenig Zeitaufwändig ist, greife ich auf den Index von Google zurück. Dazu verwende ich das Google AJAX Search API, weil das SOAP API von Google leider nicht mehr öffentlich verfügbar ist. Das AJAX API ist für die kreative Verwendung ein wenig eingeschränkt, deshalb habe ich es "aufgebohrt", sprich die Anzeige ein wenig erweitert.

Einfach Google nachbauen bringt aber wenig, ich habe desshalb die Suchresultate von Google mit Informationen von del.icio.us kombiniert. Zu jedem Suchresultat werden die Tags aus del.icio.us angezeigt, aus Performance- und Darstellungsgründen allerdings . Ganz nach dem Motto "Ein Tag ist kein Tag" werden nur Tags angezeigt die mehr als einmal vorkommen. Den Tags die nur von einem Benutzer verwendet werden sind öfters nicht nützlich. Unter der Suchmaske werden die 20 meist genanten Tags für die Suchresultate angezeigt, sie können direkt zur Suche hinzugefügt werden. Die Informationen werden mit RSS von del.icio.us mit MagpieRSS bezogen.

Das ganze ist alles Web 2.0 und AJAX, für die Usability ist das aber in diesem Fall nicht unbedingt ein Vorteil. Da die Seite erst im Browser zusamengebaut wird, verschiebt sich während des Aufbaus noch so einiges.

Und hier gehts zu meiner tagbased Searchengine LOOGEL.

Die Term of Service des Google API wird hier wohl ein wenig stark "gedehnt", wenn das Ding nicht mehr läuft hat mir Google wohl den Hahn zugedreht (und ich werde vieleicht auf das Leistungsfähigere API von Yahoo umsteigen).
Ähnliche Beiträge:
Loogel findet mehr
del.icio.us-tagometer
Faster google maps with JSON
All new webtuesday
Is Dalvik the better J2ME?
Comments (5)  Permalink

Assoziative Array nach Value sortieren

Javascript ist in Sachen Datentypen nicht gerade gut ausgestatte. Assoziative Arrays lassen sich nur mit ein wenig würgen hinzaubern. Sortieren nach Value erfordert einen noch grösseren Würg. Sortieren nach Value ist immer dann nötig wenn man ein Assoziative Array zum Zählen von Items verwendet. Das Item wird dann als Key verwendet und im Value wird das Vorkommen gezählt.

Im nachfolgenden Beispiel werden in einem assoziativen Array (allTags) die Tags als Key verwendet und im Value wird das vorkommen des Tags gezählt. Und so gehts:

//Sortier-Funktion, grösster Wert am Anfang
function Numsort (a, b) {
return b - a;
}

//Hilfsvariablen
var valueArray = new Array();
var sortedArray = new Object();

//Alle Values in ein Array speichern
for (var tag in allTags){
valueArray.push( allTags[tag] );
}

//Array mit Sortier-Funktion sortieren
valueArray.sort(Numsort);

//Neues Bucket-Array anlege
for(var i = 0; i<valueArray.length;++i){
sortedArray[ valueArray[i] ] = new Array();
}

//Buckets mit den Tags fühlen
for (var tag in allTags){
sortedArray[ allTags[tag] ].push(tag);
}

//Tags der Reihenfolge nach ausgeben
for (var tags in sortedArray) {
for(var i = 0; i<sortedArray[tags].length;++i) {
tag = sortedArray[tags][i];
alert("Tag \""+tag+"\" kommt "+tags+"mal vor." );
}
}

Ähnliche Beiträge:
Parallel Request mit AJAX und PHP
"Defekte" for-in-Schleife in JavaScript
Synchroner Aufruf mit XMLHttpRequest in Firefox
Webtuesday: PHP wins!
Webtuesday: PHP vs. Javascript: which sucks more?
Comments (0)  Permalink

Else-If-Konstrukt

Else-If ist syntaktisch gesehen ein sehr interessantes Programmierkonstrukt. Zumal es in den meisten Sprachen gar nicht existiert, aber erst einmal von vorne.

Else-If dient dazu mehrere If's aneinander zu hängen. Das bringt gegenüber einzelnen If's einen Performance-Vorteil, ausserdem kann so wenn keine Bedienung zutrifft in einen else-Block gesprungen werden. Häufig kann anstelle von langen if-Konstrukten auch ein Switch verwendet werden, dies hat jedoch teilweise gewisse Limitierungen. Zum Beispiel kann in Java ein Switch nur für einfache Typen verwendet werden. Ohne Elseif sieht das dann etwa so aus:
if ($a > $b) {
echo "a is bigger than b";
}
if ($a == $b) {
echo "a is equal to b";
}
if ($a < $b) {
echo "a is smaller than b";
}
In PHP wird elseif zusammengeschrieben und ist ein eigenes Sprachkonstrukt. Das obige Beispiel sieht dann etwa so aus und reduziert die Überprüfungen im Idealfall auf eine und im schlechtesten Fall auf zwei (anstelle von drei):
if ($a > $b) {
echo "a is bigger than b";
} elseif ($a == $b) {
echo "a is equal to b";
} else {
echo "a is smaller than b";
}

Die geschweiften Klammern können, sofern sie nur ein einzelnes Statement beinhalten weggelassen werden. Dies gilt für die meisten, wenn nicht alle, C-basierenden Sprachen. In PHP kann das ganze zudem noch mit der nachfolgenden, eher merkwürdigen Syntax (nicht zu empfehlen) verwendet werden:

if ($a == 5):
echo "a equals 5";
echo "...";
elseif ($a == 6):
echo "a equals 6";
echo "!!!";
else:
echo "a is neither 5 nor 6";
endif;

Nun aber der eigentliche Clue, nämlich warum else-if in den meisten Sprach-Syntaxen gar nicht existiert und auch nicht zu existieren braucht am Beispiel von C++. Zuerst ein einfaches If:

if(a < b){
doASmallerB();
}
Nach C++-Standard ist der gesamte Block, ebenso wie der Aufruf der Methode doASmallerB, ein Statement. Nun ein if-Block mit einem Else:
if(a < b)
doASmallerB();
else
doBSmallerEqualsA();

Anstelle vom Aufruf von doBSmallerEqualsA kann nun jedes beliebige Statement stehen. Und mit jedem Beliebigen ist natürlich auf ein If-Statement gemeint. Toll! Das sieht dann so aus:

if(a < b)
doASmallerB();
else
if(a > b) {
doABiggerB();
}

Womit wir dann, mit ein bisschen Umformatieren, bereits ein else-if konstruiert hätte. Natürlich lässt sich das beliebig so fortsetzen.

Ähnliche Beiträge:
Zend Framwork 1.5 is out
Coding Contest addicted
Coding Contest
Array instead of switch-case in php
First time PHP5 troubles
Comments (0)  Permalink

del.icio.us-tagometer



Der neue del.icio.us-tagometer ist eine ganz nette Erweiterung. Weniger weil man damit eine Seite direkt zu del.icio.us hinzufügen kann* oder weil man sieht wieviele Personen die Seite bereits hinzugefügt haben, sondern vielmehr weil gleich die Tags die die Benutzer verwendet haben angezeigt werden. Populäre Seiten könnten ihre Webseiten taxonomie evtl. direkt von Social-Bookmarking-Servicen übernehmen und sich so Arbeit ersparen.

Weiteres Interessantes über del.icio.us habe ich heute noch herausgefunden. Die "History" (Korrekter wohl "Alle Infos") einer URL lassen sich über die nichtssagende URL http://del.icio.us/url/d9eaab26fe78cc62ae7138db04784b21 herausfinden. Der kryptische hinterste Teil ist die MD5-Verschlüsselte Teil der URL. MD5-Algorithmen sind in den API der meisten Programmiersprachen zu finden, für JavaScript findet man hier eine Implementierung.

Das ganze geht aber auch einfacher. Mit http://del.icio.us/url/check?url=http://whatwg.org/specs/web-apps/current-work/ gelangt man ebenfalls zu der kryptischen-md5-URL. Interessant ist hierbei auch das del.icio.us die URL's nicht normalisert. So findet man wenn man den hintersten Slash weglässt, also die URL http://whatwg.org/specs/web-apps/current-work verwendet, nur einen vereinzelten Nutzer der auf diese Seite verweist.


*All diese del.icio.us-it, wong-it, etc. Buttons und Links nerven nur. Keine Angst wenn eine Webseite genug wichtig ist finden die Benutzer auch heraus wie sie die Seite Bookmarken können, so klever sind zumindest meine LeserInnen.
Ähnliche Beiträge:
Loogel findet mehr
Tag Searchengine LOOGEL based on Google and del.icio.us
Tagsoupe
Comments (0)  Permalink

Google kauft...

...Endoxon! Endoxon ist somit die erste schweizer Firma der die Ehre zu Teil wird von der grossen Suchmaschine geschluckt zu werden. Die Übernahme verwundert nicht wirklich, denn in der Schweiz wurden schon Online-Karten angezeigt, als Google diese noch mit Neocolor zeichnete.

Was das für die bisherigen Kunden (u.a. local.ch) heist, mag wohl noch niemand so genau wissen. In der FAQ zur Übernahme heist es dazu lapidar "Endoxon will continue to support its existing customers" und im local-blog ist bis auf ein kurzen Statement auch nichts zu vernehmen.

Es bleibt zu hoffen, dass die innovativen schweizer Karten-Webunternehmen trotz dieser Übernahme weiter gedeihen können. Und vieleicht gibts dann ja auf Google-Maps bald mal Bahnhöfe und Fahrpläne eingeblendet, was auch ganz nett wäre. Noch netter wäre natürlich wenn uns Google nun ein Public-API zu den Endoxon-Karten zur Verfügung stellen würde.

[via chregu und urs]
Ähnliche Beiträge:
Google kann sich nur noch selber stoppen
Google Calendar
Is Dalvik the better J2ME?
Google Open Source Jam Zürich
Abteilung: Fehler passieren überall
Comments (0)  Permalink
Next1-10/19