Facebook, Datenschutz und Foto-Tagging

by 26. July 2010 13:49

Oftmals sind gut gut gemeinte Features in einer Software einfach nicht unbedenklich. Und die Kritiken am Datenschutz von Facebook sind in aller Munde und wohl bekannt.

Ich möchte hierzu ein kleines Feature aufgreifen und zum Nachdenken anregen: Das Tagging von Freunden und Personen in Facebook.

image

Es ist ganz einfach. Ich habe ein Foto und lade dieses hoch. Darauf bin ich oder, wie oben ein Freund und damit auch jeder weiß wer das ist, kann ich ihn nun im Foto “taggen” (= das Gesicht mit einem Namen versehen). Dadurch ist es auch leichter Fotos einer Person in Facebook zu finden.

Jedoch, je nach Einstellungen  zum Beispiel auch in Google, Bing oder anderen Suchmaschinen. Viele Fotos in Facebook sind von Parties und nicht unbedingt für ein unbekanntes Publikum bestimmt, und meist auch nicht für den Arbeitgeber oder einen potentiellen Arbeitgeber. Ein falsches Hackerl und ein Tag im Foto und schon kann es passieren, dass man den Traumjob vielleicht doch nicht bekommt, weil man zuvor “gegoogelt” wurde und das Ergebnis ein Foto war, in welchem man vollgetrunken halb-bewustlos herumliegt.

Keine schöne Vorstellung? – Realität!

Spinnen wir die Gedanken weiter. Intelligente Algorithmen die selbstlernend sind, wie Gestichtserkennungsalgorithmen benötigen immer Beispiele um zu lernen. Die steigende Leistung der Computer macht die Algorithmen schön langsam richtig nützlich. Dadurch ergeben sich weitere Möglichkeiten:

Diese Algorithmen können nun Gesichter erkennen und gehen wir davon aus, dieses Gesicht in anderen Fotos wiederfinden, vor allem wenn genügend Beispielbilder vorhanden sind.

Dadraus ergibt sich noch mehr bedenkliches! Denn ist man nur oft genug in Facebook, oder auch anderen Plattformen, in einem Foto getaggt, desto genauer ist das “Phantombild”, dass ein Computerprogramm von einer Person erzeugen kann und desto einfacher ist es für ein Programm eine Person auf einem Foto (oder Bild von einer Überwachungskamera) zu identifizieren, auch wenn es nicht zuvor getaggt wurde.

Das Gesichter-Tagging bereitet also den Weg für das Auffinden beliebiger Personen auf Fotos, Filmen etc. und dabei reicht es oftmals den Namen zu wissen, oder ein Beispielfoto zu haben. Außerdem kann es den Job kosten!

Was kann ich dagegen tun?

image

Realistisch betrachtet kaum etwas, der Anteil des einzelnen ist zu gering – aber wie heißt es so schön “Kleinvieh macht auch Dreck”. Drum hier ein paar Tipps:

  1. Das Wichtigste: Gleich mal keine Gesichter taggen.
  2. Wenn ich getaggt wurde, werde ich normalerweise darüber informiert – tagging entfernen.
  3. Immer gut überlegen welches Foto man wirklich im Netz veröffentlichen will und im Zweifelsfall nicht veröffentlichen
  4. Oder wie in meinen 2 Screenshots: Man kann ja auch andere spannende sachen Taggen. z.B.: einen Bagger, ein Schild, etc. :-) Die Zuordnung für einen Gesichtserkennungsalgorithmus wird hierdurch nicht nur erschwert, sondern es stört auch bereits vorhandene Auswertungsergebnisse, da es eine Falschinformation ist.

In diesem Sinn: Auf ein klein wenig Privatsphäre!

Categories:

Silverlight Controls dynamisch im Sourcecode erstellen

by 18. July 2010 09:34

All zu oft ist das Layout nicht statisch, sondern es werden Controls dynamisch im Code-Behind-File geladen oder erstellt und der Benutzeroberfläche hinzugefügt.

In Windows Forms oder ASP.NET sind wir alle mit der Controls-Eigenschaft vertraut, welche den Control-Tree enthält. Doch in WPF bzw. Silverlight sucht man diese Eigenschaft vergebens, da diese “Children” heißt.

Doch wie wird das erstellte Contorl nun positioniert? Immerhin fehlt die Left- bzw. Top-Eigenschaft.

Hierzu stehen statische Methoden der Container-Klassen zur Verfügung. Also z.B.: Canvas.SetLeft bzw. Grid.SetColumn etc.

Das Hinzufügen und die Positionierung der Controls ist in Silverlight und WPF ein klein wenig anders als bei WinForms und ASP.NET:

image

Categories: Silverlight

Basic HTTP Authentication und JQuery (Javascript/AJAX)

by 11. July 2010 13:47

Die Herausforderung ist folgende: Man nehme eine Seite, welche per http-Authentication geschützt ist und diese Seite hat ein JQuery oder Javascript, welches mittels eines AJAX-Requests Daten aus einem weiteren Service holt, welcher Ebefalls der gleichen Authentifizierung unterliegt.

Beim Aufruf der Seite wird der Benutzer davon überzeugt, dass seine Zugangsdaten erforderlich sind:

image

Das ist auch  gut so, ABER sobald das weitere Daten mittels AJAX abgefragt werden, werden die Zugangsdaten erneut abgefragt – und zwar für den Service-Aufruf. Der Grund: der aktuell gültige Authentifizierungstoken im HTTP-Header wird nicht mitgegeben!

image
Hierzu ist es notwendig, dass beim Aufruf zusätzlich Username und Passwort mitgegeben werden:
image

Dann funktionierts auch mittels AJAX.

Doch….

  • Doch woher Username und Passwort nehmen, wenn diese lediglich der Benutzer besitzt?
  • Eine Alternative wäre das direkte Setzen des aktuellen Authentication Tokens:

image

doch auch hier beißt sich die Katze in den Schwanz, denn woher diesen nehmen?

Aus Security-Sicht ergibt es Sinn, dass dies nicht möglich ist, aus Usersicht jedoch ist diese Situation die sich daraus ergibt jedoch untragbar. Lösung: Keine :( – Das heißt: wir benötigen Cookie Based Authentication

Categories: jQuery

Webseiten Autozoom bei iPod & iPhone

by 6. July 2010 11:40

Der iPod und das iPhone, verfügen über die Eigenheit, dass Webseiten automatisch verkleinert werden, sodass diese sicher auf den ganzen Display platz finden.

Das Problem: Manchmal will man das nicht :-)

Mit diesem Meta Tag lässt sich dies unterbinden:

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>

Categories: Mobile

JQuery/AJAX und IE Cache

by 4. July 2010 06:57

Caching ist eigentlich etwas gutes, da dadurch die Ladezeit verringert werden kann. Doch wenn man per AJAX-Call Befehle absetzt und der Internet Explorer entscheidet dies nicht zu  tun, da er aufgrund seines aktuellen Caches glaubt, er wüsste das Ergebnis ohnehin schon ist dies nicht förderlich.

Warum ist das so?

  • Im HTTP-Header sind keine Caching-Attribute gesetzt. Dadurch cached der IE

Was kann ich dagegen tun?

Im IE das Caching deaktivieren: Unter Extras –> Internet Optionen –> Browsing History –> Einstellungen sollte anstatt auf Automatisch lieber “Bei jedem Zugriff auf die Seite” eingestellt werden. Dadurch wird das Problem behoben.
 image image

Doch dies ist nur eine Lösung für die lokale Maschine! Etwas anderes muss her.

Angenommen wir können auf dem Server die Caching-Header nicht ändern (was durch Konfiguration im IIS, oder durch ASP, ASP.NET, PHP, etc. Befehle möglich, so existiert noch eine Konfiguration im JQuery, die das Caching für den AJAX-Aufruf deaktiviert:

image

Die Frage die ich mir dabei stelle: warum cached nur der IE und Firefox etc. nicht? Eigentlich wäre caching hier, vor allem da der Default-parameter beim Aufruf true ist, für jeden Browser legitim!

Naja. Cache:false ist auf jeden Fall die Lösung :-)

Categories: jQuery

Nützliches im Visual Studio – Conditional Breakpoints

by 1. July 2010 15:28

Mein Kollege Georg hat mich heute auf ein tolles Feature im Visual Studio aufmerksam gemacht: Bedingungen bei Breakpoints!

Was bringt das?

Nehmen wir an wir debuggen durch eine Schleife mit vielen Durchläufen. Es ist außerst mühsam sich bis zur 187 Iteration zu debuggen, oder jedes Mal zu prüfen, ob eine  bestimmte Bedingung erfüllt ist, um einen Fehler zu finden. Abhilfe schaffen hier Conditions bei Breakpoints:

image

Dort können beliebige bool’sche Ausdrücke eingefügt werden z.B.: i == 50. Es gibt sogar Intellisence und Abfragemöglichkeiten auf komplexe Objekte!

Das Contextmenü bietet aber noch mehr: Hit Count für die Anzahl von Schleifendurchläufe etc.

Heute erst gelernt und schon frage ich mich: Wie konnte ich früher ohne dieses Feature leben? Und warum habe ich noch nie auf die Einträge im Kontextmenü geachtet? – Wie auch immer: danke Georg!

Tags:
Categories: Visual Studio

Das perfekte Betriebssystem – ein lachendes und ein weinendes Auge

by 12. June 2010 10:35

Ein, für den Einsatz optimiertes Betriebssystem ist natürlich wünschenswert. Doch Frage ich mich, ob man da nicht langsam die Übersicht verliert. Die PC-Welt online Redaktion hat den Artikel “Linux für jeden Zweck und Anwender” veröffentlicht und Sage und Schreibe 49 verschiedene Linux Distributionen oder entsprechende Erweiterungen kurz vorgestellt.

Jedes für sich soll einen spezialisten für einen bestimmten Anwendungsfall sein. Das eine für Audio/Video/Movie das nächste zum Aufdecken von Sicherheitslücken usw.

Wer länger in der Software-Entwicklungs-Branche tätig ist weiß jedoch, dass es, gerade für die Anwender, zu oft äußerst schwierig ist die eigentlichen Anwendungsfälle abzugrenzen. Von der Vollständigkeit von Anforderungen möchte ich dabei überhaupt noch nicht sprechen. Was ist wenn ich mit meinem “Damn Small Linux” (DSLinux) nicht mehr auskomme, weil ich plötzlich “Medium Anforderungen” habe. Ist die Lösung die Einarbeitung in ein neues System? Soll ich doch lieber auf die großen Allrounder wie Debian Mandriva, Suse, etc. setzen? Wie entscheide ich als Benutzer welches System für mich nun tatsächlich optimal ist?

Zum Vergrößern bitte klicken
Screenshot aus dem Artikel von PC-Welt entnommen.

Ich muss gestehen ich bin mit Windows 7 sehr zufrieden. Ein guter Allrounder der alles mit macht. Und die Unterschiede zwischen den einzelnen Editionen von Windows sind überschaubar und ermöglichen eine leichte Entscheidungsfindung.

Tags:
Categories:

Mobile Webanwendungen – Herausforderung: Display drehen

by 6. June 2010 08:57

Smartphones verfügen über ein relativ großes Display mit z.B.: 800x480px Auflösung (Samsung Omnia II). Die Browser auf den Smartphones eifern ihren großen Vorbildern nach und so existieren auch im mobilen Bereich die klassischen Browser wie Opera, Internet Explorer oder Firefox.

Doch bei Smartphones und Handies existiert so manches Features, welche bei normalen Browsern nicht vorhanden sind: Automatischer Zoom oder auch das Drehen des Gerätes. Dies führt dazu, dass der Browser selbstständig das Bild dreht, wenn das Handy gedreht wird. Die Herausforderung ist nun, die Webseite erneut richtig zu skalieren, denn der zu erwartende Weg, dass das JavaScript-Event window.resize aufgerufen wird, ist ein Irrtum.

Die Lösung dieser Herausforderung – per Timer prüfen, ob sich die Richtung des Displays geändert hat und mittels einer Funktion “UpdateView” die Elemente am Display neu positionieren:

var lastWidth = screen.width;
var lastHeight = screen.height;
$(document).ready(function () {
    UpdateView();
    ChkOriChange();
});

//Orientation change method
function ChkOriChange() {
    if (screen.width != lastWidth || screen.height != lastHeight) {
        lastWidth = screen.width;
        lastHeight = screen.height;
        UpdateView();
    }
    window.setTimeout('ChkOriChange()', 100);
}
$(window).resize(function () {
    UpdateView();
});

Ich hoffe dieses Snippet spart so manche Recherchen.

Categories: Mobile

XSLT 2.0

by 21. May 2010 18:57

Visual Studio hat eigentlich einen tollen XSLT Support, wie die folgenden zwei Punkte belegen:

  1. Intellisence
    Jeder Programmierer kennt es und jeder liebt es. Auch für XSLT gibt es Intellisence, auch wenn es lediglich das normale Intellisence ist, welches für XML-Dateien verfügbar ist, sobald ein Schema angegeben wird, aber was will man mehr?
    Das zugehörige Schema liegt übrigends unter C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\xslt.xsd
  2. Debugging
    Jeder Fehler wird sofort angezeigt und das XSLT kann im Debug-Modus schrittweise ausgeführt werden, wodurch die Fehlersuche erleichtert wird. Bei so manchen Fehlern ist auch dies ein echt super Feature!

Um so mehr ist es ernüchternd, wenn XSLT2.0 Features benötigt werden. Ab diesem Zeitpunkt versagt jegliche Unterstützung :-(

Folgendes Szenario: Aufgrund einer XML-Datei sollen mehrere XML- oder HTML-Dateien generiert werden. Ab diesem Zeitpunkt ist XSLT 2.0 notwendig: <xsl:result-document>

Die Konsequenz aus dieser Problematik ist, dass keinerlei Support von Visual Studio (auch nicht VS 2010) verfügbar ist, weder im Bereich Intellisence, noch im Bereich der Ausführung.

Wie also mithilfe von XSLT 2.0 Dateien transformieren? Saxon.NET hilft dabei. Mit wenigen Zeilen .NET-Code oder auch per Commandline lassen sich damit die Datei transformieren; auch wenn das Debugging schwer vermisst wird!

Der Code für die Verwendung ist relativ simple, doch damit nicht lange gesucht werden muss, hier eine Abwandlung von Terry’s Worklog-Blog veröffentlichen Code:

Processor processor = new Processor();
using (System.IO.StreamReader reader = new System.IO.StreamReader(XmlFile, System.Text.Encoding.UTF8)) {
    using (System.IO.TextWriter stringWriter = new System.IO.StringWriter()) {
        stringWriter.Write(reader.ReadToEnd());
        stringWriter.Close();

        reader.Close();

        using (System.IO.TextReader stringReader = new System.IO.StringReader(stringWriter.ToString())) {
            using (System.Xml.XmlTextReader reader2 = new System.Xml.XmlTextReader(stringReader)) {
                reader2.XmlResolver = null;

                XdmNode input = processor.NewDocumentBuilder().Build(reader2);

                // Create a transformer for the stylesheet.
                XsltTransformer transformer = processor.NewXsltCompiler().Compile(new System.Uri(Xslt2File)).Load();
                transformer.InputXmlResolver = null;

                // Set the root node of the source document to be the initial context node
                transformer.InitialContextNode = input;

                Serializer serializer = new Serializer();
                serializer.SetOutputFile(“c:\\myfile.xml”);

                // Do the xslt transformation
                transformer.Run(serializer);
            }
        }
    }
}

Tags: , ,
Categories: Visual Studio

Urlaub

by 7. May 2010 08:04

Das Wetter ist mies. Und laut Prognosen von wetter.at wird es auch nicht besser.

image

Macht aber nix! Urlaub!

Also ab in den Süden und eine Woche lang abschalten. Oder mit Entwicklerhumor:

System.Threading.Thread.Sleep(new TimeSpan(7, 0, 0, 0));

Wünsche allen eine schöne Woche!

Tags:
Categories:

VC# Express 2010 in Deutsch ist da!

by 30. April 2010 10:10

Es ist so weit! An alle die auf Visual C# Express Edition 2010 auf DEUTSCH gewartet haben. Seit heute ist es unter http://www.microsoft.com/germany/express/ verfügbar.

csharp_logo

Was heißt das für mich? Nun ja, obwohl das Buch Programmieren Lernen! ohnehin auch 2010 noch Gültigkeit besitzt wirken so manche Screenshots nun wohl etwas verstaubt. Also ran an die Arbeit und das Buch entstauben!

Immerhin soll es doch nicht passieren, das jemand in der Buchhandlung glaubt das Buch sei veraltet.

Wie gesagt das Buch ist nach wie vor aktuell!

Tot geglaubte leben länger

by 29. April 2010 10:43

Ja es gibt ihn anscheinend noch: Den Bluescreen. Bei diesem Anblick fühlt man sich doch gleich wieder zurück gesetzt in die ?gute? alte Zeit von Windows 95 – Windows ME. Aber Hand aufs Herz. Seit Windows 2000 und Windows XP ist die Situation ständig besser geworden. Der Bluescreen gehört scheinbar zu einer aussterbenden Rasse.

Aber heute hab ich es wieder mal geschafft. Notebook – Dockingstation – Windows 7 - WIN+P. Die äußerst nützliche Funktion von Windows 7 hatte anscheined der Hardware-Treiber nicht verkraftet:

Omnia II 004

Bitte das schlechte Foto zu entschuldigen – Handy…
Aber zumindest sind die Meldungen aussagekräftiger und viel pregnanter als früher.

Omnia II 005

Die Message für den Benutzer ist klar: “Hast du Pech. Aber die anderen haben Schuld”.

Wie dem auch sei. Lieber Bluescreen schön dass du mich nach so langer Zeit wieder einmal besucht hast :-)

Tags:
Categories:

Die Zeiten ändern sich… also herzlich Willkommen!

by 22. April 2010 12:01

Nichts, abgesehen von der Zeitung von gestern, ist langweiliger als eine Webseite die sich kaum ändert. Andererseits ist die Wartung einer Webseite sehr aufwendig und es gibt Interessanteres im Leben als die Webseite zu aktualisieren. Dies wiederum steht im Zwiespalt damit, dass es doch so manches gibt, was einem so beschäftigt.

Kurzartikel in Blog Form … vielleicht ist dies die Lösung. Mal sehen.

Es gibt viele Blogs zum Thema IT, Softwareentwicklung etc. nun ja, dann existiert nun einer mehr :-)

Ich wünsche allen Interessenten viel Spaß beim Lesen

Grüße

/> Raupes

Tags:
Categories: