Tag #Coding

33 Artikel

Google findet Gesichter,

Google Image Search
Wer gerne in fremde Augen schaut, kann sich nun noch leichter eine Auswahl erstellen.
Im August des letzten Jahres hat Google die Firma neven vision übernommen die sich auf die Erkennung von Inhalten in Bildern spezialisiert hat. Eines der Projekte war die Gesichtserkennung – und genau diese wurde jetzt still und heimlich in die Google Bildersuche integriert.

Eine Beispielsuche nach Nette ergibt zwar jede Menge Fotos von netten Leuten, zeigt aber natürlich auch andere nette Sachen. Hängt man nun den Suchparameter &imgtype=face an die Suche an, so finden sich in den Suchergebnissen nur noch Fotos von Nettes auf denen Gesicht deutlich zu erkennen sind.

Der Suchparameter ist noch nicht offiziell in die Bildersuche integriert, funktioniert aber wunderbar und äußerst zuverlässig.

Nun warten wir mal ab, was Google uns als nächstes Bild-spezifisches Feature bringen wird, offen sind ja noch: Geschlechter, Autos, Schiffe, Teile……
Noch eine Parameter: &imgtype=news sucht im Übrigen nur Bilder aus NewsMitteilungen. Dort also dann wieder auch Nettigkeiten.

Google klaut 404 Fehlerseiten

Das ist nun wirklich dreist. Nutzern der Google Toolbar wird nun, wenn sie eine Seite aufrufen die nicht existiert, nicht die Fehlerseite des Webservers, sondern eine Seite von Google mit Suchfeld angeboten. Das erinnert mich ein bisschen an den Internet Explorer 5.5 (glaube ich) da gab es eine MSN Suchmaske zu sehen wenn die Domain nicht gefunden werden konnte.

Aber zum Glück kann man was dagegen unternehmen. Denn selbst erstellte Fehlerseiten lässt die Google Toolbar durch, allerdings nur, wenn die Seite größer als 512 Bytes ist.

via Agenturblog

Vom Overhead der Kommunikation …

Grundidee
Auf der Suche nach Flaschenhälsen und Ineffizienz in einem meiner Codes fiel mir Folgendes auf:

1. es gibt eine einfach Berechnung, die immer wieder verwendet und häufig aufgerufen wird
2. Auslagerung dieser Berechnung in eine statische Methode einer Bibliothek macht also Sinn

Dies führt also zu einem Aufruf der Art Bibliothek.Mathe.degToRad (x) statt die Lösung des Problems jedes Mal aufs Neue an Ort und Stelle zu formulieren. Kurz: der Gedanke der Wiederverwertung. Aufbauend darauf der Gedanke der objektorientierten Programmierung, welche einen jede Komplexität beherrschen läßt.

Problem 1 – Instanztiefe
Mit jeder Instanztiefe wird der Aufruf brutal langsamer. Sprich wenn wir die Methode endlos von Instanz zu Kind-Instanz verlinken, dann wird diese Methode niemals fertig. (!) Das klingt jetzt trivial, aber das ist es nicht: die Instanz-Struktur beeinflußt im hohen Maße die Geschwindigkeit einer Methode. Sicher kann man an dieser Stelle dafür sorgen, daß man flach in der Instanzstuktur bleibt (egoistische Diktator-Instanz) …, aber wer will denn das? Widerspricht das nicht dem objektorientierten Streben eines jeden, der Komplexität durch Greifbarkeit und Analogien zu meistern versucht? Oder wiederverwendbare Bibliotheken anzulegen, die in Grenzfällen dafür sorgen, daß sie gar nicht nutzbar sind aufgrund ihrer Kapselung und dem damit verbundenen „Kommunikations-Overhead“ …

Problem 2 – statische Fremdmethoden (Bibliotheken)
Der Geschwindigkeitseinbruch bei statischen Aufrufen schon bei Methoden 1. Ordnung ist fast unglaublich. Es macht einen Riesenunterschied, ob ich 10.000.000 Mal eine eigene Methode aufrufe oder eine statische Fremdmethode.

Ein Beispiel:
10.000.000 Mal 1 * 1 berechnen = 49 ms
10.000.000 Mal eine statische Methode aus einer Bibliothek aufrufen, die 1 * 1 berechnet = 2534 ms (um den Faktor 50 langsamer!)

Jetzt stellen wir uns die Berechnung mal komplizierter vor: in der Berechnung wird zum Beispiel die Konstante PI aus der AS3-Standardklasse Math benutzt und schon sind wir wieder eine Schritt weiter im Sumpf des Zeitverbratens …

Bedeutung
Es ist logisch, daß 1 * 1 schneller ist als pow (1, 2), weil beim Methodenaufruf noch diverse Checks durchgeführt werden, die wir in unserem trivialen Fall gar nicht benötigen. Bedeutend ist aber, das jeder Versuch der Kapselung Geschwindigkeit kostet … – und zwar in einem Maße, daß man gleich wieder geneigt ist, stupide Kilometer-Codes zu erzeugen, wo alles flach hintereinander abgearbeitet wird. Ohne Methodenaufrufe und Kapselung …

Vielleicht nichts, was einen Programmierer überraschen sollte. Mich überraschte nur, daß dies gleich 50% der kompletten Rechenzeit beansprucht. Vielleicht betrifft dies auch nur AS3 & Flash so extrem? Abhängig vom Grad der Kompilierung? Oder bin ich einfach zu objektorientiert? Vielleicht übertreibe ich auch maßlos? Entweder man programmiert also wie eine Maschine (alles hintereinander weg) oder man hat einen Kompiler, der die Nachteile der Objektorientierung ausbügeln kann. Aber ist der Kompiler zur Laufzeit wirklich noch relevant? Wenn das Programm im Speicher ist, dann gibt es doch eigentlich nichts mehr zu optimieren … – und trotzdem kleckert die Zeit weg, als würde man eine Wand dressieren wollen.

Code
Hier ein kurzer Prüfcode, der das Problem konkret macht für die, die es interessiert …
Das Ergebnis ist einfach, daß mit steigender Tiefe die Abarbeitungszeit für die gleiche Arbeit immer weiter ansteigt. Man könnte meinen, daß dies durch die Prüfung (oChild ?) passiert: sicher verbraucht dies Rechenzeit, aber nicht 25% (variiert natürlich mit dem Rechenaufwand, den eine Methode selber verursacht) mit jeder weiteren Instanztiefe. Wenn ich darüber nachdenke wohl ein eher schlechtes Beispiel, aber wer das selbst mal ausprobiert, wird sehen, wo es brennt …

Analyse-Beispiel

Management von Webprojekten – eine Buchempfehlung

Natürlich ist Theorie nötig , für den AN genau wie für den AG :)

Robert Stoyan: Management von Webprojekten. Führung, Projektplan, Vertrag. Springer Verlag 2004. 391 Seiten, 49,95 Euro. Das Buch ist für Auftraggeber wie für Auftragnehmer geschrieben und ist ein ausführlicher, praxisnaher Leitfaden für die Umsetzung eines Web-Projekts. Sehr empfehlenswert.
ISBN-10: 354071195
ISBN-13: 978-3540711940
URL: http://www.amazon.de/Management-von-Webprojekten-Robert-Stoyan/dp/3540711945/ref=sr_1_1?ie=UTF8&s=books&qid=1198153371&sr=1-1

• Claudia Lettau, Christian Müller: Das Webpflichtenheft. MITP-Verlag 2004. 494 Seiten, mit CD-ROM, 49 Euro. Hier finden alle, die ein Pflichtenheft erstellen müssen eine umfangreiche Anleitung dazu. Das Buch ist keine spannende Lektüre und hat einige Schwächen (wie etwa die wenig praxisnahen Beispiele), aber es gibt keine Alternative.
ISBN-10: 3826606302
ISBN-13: 978-3826606304
URL: http://www.amazon.de/Das-Webpflichtenheft-Claudia-Lettau/dp/3826606302/ref=sr_1_1?ie=UTF8&s=books&qid=1198155616&sr=1-1

• iBusiness Honorarleitfaden. Hightext Verlag 2003. 27 Seiten, 19,95 Euro. Diese regelmäßig aktualisierte Übersicht zeigt, was interaktive Projekte derzeit kosten.
ISBN-10: 3939004014
ISBN-13: 978-3939004011
URL: http://www.amazon.de/iBusiness-Honorarleitfaden/dp/3939004014/ref=sr_1_1?ie=UTF8&s=books&qid=1198155475&sr=1-1

• Christoph von Dellingshausen u.A.: dmmv-Kalkulationssystematik. Leitfaden zur Kalkulation von Multimedia-Projekten. Hightext Verlag 2003. 113 Seiten, 89 Euro. Diese umfangreiche Tabelle erleichtert die Kalkulation interaktiver Projekte. Alle Punkte sind gut kommentiert und es gibt vermutlich kaum einen Posten, der bei einer solchen Produktion auftauchen kann, der hier nicht berücksichtigt ist.
ISBN-10: 3933269768
ISBN-13: 978-3933269768
URL: http://www.amazon.de/dmmv-Kalkulationssystematik-Leitfaden-zur-Kalkulation-Multimedia-Projekten/dp/3933269768/ref=sr_1_1?ie=UTF8&s=books&qid=1198155533&sr=1-1

• Jens Jacobsen: Website-Konzeption. Erfolgreiche Web- und Multimedia-Anwendungen entwickeln. Addison-Wesley-Verlag 2005. 432 Seiten, mit CD-ROM, 39,95 uro. Das Buch beschreibt die Umsetzung interaktiver Projekte von der Planung über Konzeption und Umsetzung bis Wartung und Pflege. Mit vielen Beispielen aus der Praxis und Check-Listen auf der D-ROM.
ISBN-10: 3827321476
ISBN-13: 978-3827321473
URL: http://www.amazon.de/Website-Konzeption-Erfolgreiche-Websites-umsetzen-publishing/dp/3827324734/ref=sr_1_1?ie=UTF8&s=books&qid=1198155565&sr=1-1

Wie Projekte wirklich funktionieren

cell_11Ist am Beispiel einer einfachen Schaukel beeindruckend visualisiert.Mit Drag und Drop + Beschreibungen kann die eigene Sicht auf Projektverläufe erzeugt werden.Es gibt auch eine deutsche Übersetzung und PDF’s zum Download und Ausdruck.-> zum Cartoon auf www.projectcartoon.com

Actionscript 2 & 3: Die Evolution von „for..in“?

Folgender Code soll das Problem veranschaulichen:

var oTest:Object = new Object ();
for (var sY:String = '', uX:Number = 0; uX < 10; uX ++) {
sY = String.fromCharCode (uX + 65);
oTest[sY] = uX;
trace (sY + " = " + uX);
}
trace ("-------- for in ----------->");
for (var sI:String in oTest) {
trace (sI + " = " + oTest[sI]);
}

Dieser Code in AS2 kompiliert führt zu folgendem Ergebnis:

A = 0
B = 1
C = 2
D = 3
E = 4
F = 5
G = 6
H = 7
I = 8
J = 9
——– for in ———–>
J = 9
I = 8
H = 7
G = 6
F = 5
E = 4
D = 3
C = 2
B = 1
A = 0

Das Erstellen von Eigenschaften fuer ein Objekt wird intern also in einem Stack geführt, wodurch die Reihenfolge erhalten bleibt (natürlich gedreht wie es bei einem Stack erwartbar ist).
Kompiliert man den selben Code in AS3, dann ist das Ergebnis:

A = 0
B = 1
C = 2
D = 3
E = 4
F = 5
G = 6
H = 7
I = 8
J = 9
——– for in ———–>
H = 7
C = 2
I = 8
D = 3
J = 9
E = 4
F = 5
A = 0
G = 6
B = 1

Welchem Schema folgt die Ausgabe der Methoden nun? Wohl keinem. Sicherlich ist dies kein großes Problem, wenn man denn weiß, daß es so ist. Und siehe da, es wird sogar in der Doku erwähnt:

Object properties are not kept in any particular order, so properties may appear in a seemingly random order.

Jemand eine Idee, warum das so sein muß? Denn nur durch das Stack-Verhalten bei der Zuweisung von Objekteigenschaften kann man die Reihenfolge bewahren. Nun muß man Arrays benutzen, die Objekte enthalten, welche wiederrum Eigenschaften haben, die abgefragt werden müssen. Um ein bestimmtes Objekt mit einer bestimmten Eigenschaft zu erhalten, ist also eine Suche über alles nötig, was bisher durch einen Direktverweis anhand des Eigenschaftsnamen möglich war. Warum muß das so sein? Wo PHP & Co das Durchlaufen von Objekteigenschaften auch in definierter Ordnung realisieren können …

Bug || Feature?

Deterministische Zombies

Da kommt man Montag morgen rein mit allen Aufgaben für den Tag im Kopf und klaren Zielen …

„Thomas, Kyle ist nicht erreichbar ….“

Einer unserer Server, „Kyle“ genannt, ist nicht mehr erreichbar. Was war geschehen? Von überall pingt man zum gleichen Ziel, doch keine Antwort. Im Postfach dann die Benachrichtigung vom Provider des Servers:

„Ihr Server mit der im Betreff genannten IP-Adresse hat Scans auf andere Server im Internet ausgeführt.
Dabei wurden erhebliche Netzwerkressourcen beansprucht und folglich ein Segment unseres Netzwerkes stark negativ beeinträchtigt.
Ihr Server wurde deshalb vorsorglich deaktiviert.“

Argh! Vorsorglich? Argh! Schnellstmöglich mußte der Server wieder ans Netz. An all die Kunden denkend, die uns zurecht gleich die Tür einrennen würden. Artig das Standardprozedere des Providers für diesen Fall befolgend: eine Remote-Console beantragt, um auf dem Server offline kontrollieren zu können, was geschehen war.

Die Logs durchforstend nach Auffälligkeiten – auf der Suche nach einem Zeichen einer möglichen Kompromittierung. Auf den ersten Blick schien alles normal zu sein. Auch keine Traffic-Explosion war zu verzeichnen, ganz im Gegenteil: der Server war auf den ersten Blick so was von artig und unterfordert. Einen Kollegen benachrichtigend, Andre, um mit mir zusammen nach Spuren dieses Supergaus (Derartiges sollte doch Spuren hinterlassen?) zu suchen. Und siehe da, wir fanden seltsame Skript, die nicht zuzuordnen waren. Mehr als nur eins …

Mehr

Search your vessel from your sessel …

… jetzt geht es: bequem und komfortabel die Schiffe der diesjährigen Hanse Sail Rostock von Zuhause aus dem Sessel beobachten ;)
Hanse Sail 2007 hautnah: Tall-Ships beobachten
Unter www.digital-seas.com/hansesail lassen sich die großen und kleinen Segelschiffe im und um den Hafen von Rostock aufspüren und beobachten. Dabei gibt es Informationen zum Standort des Schiffes, zu Geschwindigkeit, Fahrtrichtung und vielem mehr. Außerdem lassen sich dank „Tracking“-Funktion die Routen der Schiffe in den vergangenen 24 Stunden nachvollziehen. Aktivitäten im Rostocker Stadthafen sind per Webcams zu beobachten. Die Schiffe und ihre Liegeplätze sind verzeichnet, es besteht die Möglichkeit, Mitfahr- bzw. Mitsegelgelegenheiten zu buchen. Grundlage dieses Angebotes ist die durch JAKOTA entwickelte Software „Fleetmon“, die bereits im Rostocker Hafen verwendet wird.

Mal den Browser maximal öffnen bitte!

Das ist wirklich wunderschön gedacht und auch gemacht.

UND HIER DER LINK FÜR MARTIN

Bild:

Otto Nassar

flic.kr/p/2KCePD

 

Warum Sie keinen SEO brauchen

Es geschieht gelegentlich, dass unseren Kunden von „Experten“ eine Anmeldung ihrer Website bei hunderten Suchmaschinen angetragen wird, da das Angebot dann natürlich viel besser gefunden wird. Es gäbe da sehr viel Optimierungspotenzial… etc, naja !
Einige Erklärungen unsererseits: weiterlesen oder enfach ignorieren und doch auf die Google-Werbung klicken …
Mehr

Neues von Micro$chrott

Die Thematik „Websuchmaschine“ scheint die Damen und Herren aus Redmond momentan gewaltig zu inspirieren. Seit heute (?) rammelt der MSRBOT durchs World Wide Web. Zumindest ist er auf meiner bescheidenen Seite aufgetaucht. Und da mir die Freundlichkeiten und Aktivitäten aus dem Hause Gates & Co. sowieso suspekt sind, gibt es von mir die passender Antwort in der .htaccess-Datei:

# bye bye MSR
BrowserMatchNoCase msrbot evil
<Limit GET POST HEAD>
Order Allow,Deny
Allow from all
Deny from env=evil
</Limit>

16 Pixel

Merkwürdiges passiert, wenn man ein Quicktime-Movie in eine Html-Seite einbinden möchte. Das kann man ähnlich wie bei Flash mit einem Object-Tag und einem darin eingeschlossenem Embed-Tag für verschiedene Browser elegant lösen. Möchte man nun noch dem Webseiten-Besucher die „Controller“-Leiste spendieren, damit er den Film steuern kann, geschieht noch merkwürdigeres.

Die Steuerleiste erscheint eingequetscht im unteren Teil des „Movie“-Fensters. Spendiert man bei der Höhen-Angabe zusätzliche 16 Pixel zur Höhe der .mov-Datei, sieht die Controller-Leiste gut aus. Wieso sagt mir das keiner?

Tipp: Nur Auswahl als Source zeigen, mit Firebird & Mozilla

Als Web-Developer sind wir oft mit der Suche nach kleinen Code-Schnipseln im Output-Fenster des View Source… Kommandos bemüht, die Nadel im Heuhaufen zu finden. Manchmal geht der Überblick verloren.
Mozilla und Firebird Browser haben ein kleines und wenig bekanntes Feature, dass den Job wesentlich erleichtert.

select Source in Mozilla

Mache einfach eine mousige Selection in einem Bereich der Webseite in einem der Mozilla Browser und klicke rechts in diesem Bereich. Wähle “View Selection Source…”.
Diese Option wird Dir den Code um diese Selection herum zeigen und wir sind fast am Ziel. Und wer diese Beschreibung wirklich im ersten Anlauf verstanden hat, soll mir doch mal antworten     :-)

Seite 2 von 212