SlideShare a Scribd company logo
1 of 16
Adaptive Images
Monster on Rails Jan. 2012
Mobile

Christian Peters
Zweitag // Gründungsstory                                                                           02.11.2011
        Fluid Images

       Der naive Ansatz
       In dem bekannten Buch „Responsive Web Design“ werden Fluid Images inkl. IE Hacks angepriesen.


       ❖   max-width: 100%
             img,                     ❖   Browser-Verhalten:
             embed,
             object,                      ❖   Bild wird ggf. auf Größe seines
             video {                          Containers runterskaliert
               max-width: 100%;
             }
                                          ❖   Kein Hochskalieren


       ❖   Krisselig in IE7
                                      ❖   Marcottes Gegenmittel:
                                                                                        http://alistapart.com/
                                          ❖   60 Zeilen JavaScript                      articles/fluid-images/
                                          ❖   proprietärer Filter
                                              progid:DXImageTransform.
                                              Microsoft.AlphaImageLoader
Monster on Rails // Adaptive Images                     2                                           11.01.2012
Zweitag // Gründungsstory                                                                       02.11.2011




       „CSS Media Query for Mobile is
       Fool‘s Gold“

                                      Optimierung
           für kleinere Bildschirme, schwachere
           CPUs und schlechtes Netz kann nicht
                    mehr Code sein.
                                        http://www.cloudfour.com/css-media-query-for-mobile-is-fools-gold/
Monster on Rails // Adaptive Images               3                                             11.01.2012
Zweitag // Gründungsstory                                                                       02.11.2011




       „Fluid Images for Mobile is
       Fool‘s Gold“

                                      Optimierung
           für kleinere Bildschirme, schwachere
           CPUs und schlechtes Netz kann nicht
            Skalierung großer Bilder sein.
                                        http://www.cloudfour.com/css-media-query-for-mobile-is-fools-gold/
Monster on Rails // Adaptive Images               4                                             11.01.2012
Zweitag // Gründungsstory                                                                              02.11.2011
        CSS Media Query for Mobile is Fool‘s Gold

       You cannot hide!
       Bilder einfach per display: none zu verstecken bedeutet nicht, dass sie nicht geladen werden.


       ❖   Hiding Images
           ❖   Either for replacing by smaller
               ones or hiding them completely
             @media screen and (max-width: 480px) {
               img {
                 display: none;
               }
             }




Monster on Rails // Adaptive Images                       5                                            11.01.2012
Zweitag // Gründungsstory                                                                              02.11.2011
        CSS Media Query for Mobile is Fool‘s Gold

       You cannot hide!
       Bilder einfach per display: none zu verstecken bedeutet nicht, dass sie nicht geladen werden.


       ❖   Hiding Images
           ❖   Either for replacing by smaller
               ones or hiding them completely
             @media screen and (max-width: 480px) {
               img {
                 display: none;
               }
             }

           ❖   iPhone still downloads them
           ❖   Same for CSS background-images




Monster on Rails // Adaptive Images                       5                                            11.01.2012
Zweitag // Gründungsstory                                                                              02.11.2011
        CSS Media Query for Mobile is Fool‘s Gold

       You cannot hide!
       Bilder einfach per display: none zu verstecken bedeutet nicht, dass sie nicht geladen werden.


       ❖   Hiding Images
           ❖   Either for replacing by smaller
               ones or hiding them completely
             @media screen and (max-width: 480px) {
               img {
                 display: none;
               }
             }

           ❖   iPhone still downloads them
           ❖   Same for CSS background-images

       ❖   Some hacks currently work on iPhone
           ❖   e.g. hide parent of element with CSS bg-image

Monster on Rails // Adaptive Images                       5                                            11.01.2012
Zweitag // Gründungsstory                                       02.11.2011




       Let the Games begin!
       ❖   Client-seitig
           ❖   Dynamic Base Tag
           ❖   Image src per JavaScript setzen

       ❖   Client-seitig + Server-seitig
           ❖   JavaScript + Cookies + .htaccess Rewrite Rules

       ❖   Server-seitig
           ❖   Device Detection
Monster on Rails // Adaptive Images              6              11.01.2012
Zweitag // Gründungsstory                                                                      02.11.2011
        Client-seitige Erkennung

       Dynamic Base Tag
       Das dynamische Setzen es <base> Tags verhindert nicht das Laden von falschen Bildern.


       ❖   HTML Element
           ❖   Teil des <head>
           ❖   Legt Basis-URL von relativen URLs im
               Dokument fest

       ❖   Nutzung für Adaptive Images:
           ❖   Bilder in gewünschten Größen in
               versch. Ordnern vorhalten
           ❖   nach JS Größenerkennung Base-Pfad
               entsprechend setzen

       ❖   Nachteil
           ➡   Race Conditions
Monster on Rails // Adaptive Images                     7                                      11.01.2012
Zweitag // Gründungsstory                                                                               02.11.2011
        Client-seitige Erkennung

       Image src per JavaScript setzen
       Platzhalter funktionieren nicht ohne JavaScript und Bildsubstitution führt zu Race Conditions.


       ❖   Platzhalter
           ❖   1x1px - Bild nach JS-Erkennung durch echtes Bild ersetzen
           ➡   keine Bilder ohne JS
           ➡   schlechte Wartbarkeit (alle Bilder nur in JS)

       ❖   Kleine Bilder ggf. durch große Ersetzen
           ❖   Im Zweifel wird zumindest ein kleines Bild angezeigt
           ❖   Angabe der großen Bild-URL in data-large
           ❖   Oder durch Namenskonvention
           ➡   Race Conditions


Monster on Rails // Adaptive Images                       8                                             11.01.2012
Zweitag // Gründungsstory                                                                        02.11.2011
        Client-seitige Erkennung

       Wie Race Conditions vermeiden?
       Dies ist die Tagline, die die Kernaussage der Folie in einem Satz auf den Punkt bringt.


       ❖   Noscript Tag
        <noscript data-large='Koala.jpg' data-small='Koala-small.jpg' data-alt='Koala'>
            <img src='Koala.jpg' alt='Koala' />
        </noscript>

        $('noscript[data-large][data-small]').each(function(){
            var src = screen.width >= 500 ? $(this).data('large') : $(this).data('small');
            $('<img src="' + src + '" alt="' + $(this).data('alt') + '" />').insertAfter($(this));
        });


           ❖   Nicht Teil des DOM-Baums, wenn JS an → keine Race Conditions
           ❖   Standardbild als Fallback wenn JS aus
           ➡   Unsemantisch
           ➡   Auswirkung auf Suchmaschinen unklar
           ➡   Beschränkte JS-Engines unterstützen keine DOM-Inserts

Monster on Rails // Adaptive Images                        9                                     11.01.2012
Zweitag // Gründungsstory                                                                         02.11.2011
        Client-seitige + Server-seitige Erkennung

       JavaScript + Cookies + .htaccess Rewrite Rules
       Cookies & URL-Rewrite-Regeln sind eine gute Methode, helfen jedoch nicht beim 1. Request


       ❖   1. Request
           ❖   Auflösung per Javascript erkennen
           ❖   Auflösung in Cookie schreiben

       ❖   Bei Folge-Requests
           ❖   Cookie auslesen & .htaccess Rewrites auf Bild-URL anwenden
                 RewriteEngine On
                 RewriteCond %{HTTP_COOKIE} rwd-device=desktop
                 RewriteCond %{QUERY_STRING} desktop=([^&]+)
                 RewriteRule .* %1 [L]



           ➡   Race Condition im 1. Request
           ➡   Client muss Cookies akzeptieren
Monster on Rails // Adaptive Images                   10                                          11.01.2012
Zweitag // Gründungsstory                                                                   02.11.2011
        Server-seitige Erkennung

       Device Detection
       Über User-Agent-Strings können Geräte erkannt und Eigenschaften abgeleitet werden.


       ❖   Server-seitig keine Introspektion
       ❖   Jedoch: User-Agent String
           ❖   Beispiele:
                ❖   "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/
                    535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7"
                ❖   Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+
                    (KHTML, like Gecko) Version/3.0 Mobile/1A538a Safari/419.3

       ❖   Ansätze:                                  Image Resizing Service
                                                     (per HTTP)


                                                                OpenSource „Datenbank“
                                                                            (XML-Datei)


Monster on Rails // Adaptive Images                   11                                    11.01.2012
Zweitag // Gründungsstory                                                                               02.11.2011
        Server-seitige Erkennung

       Sencha.io Src
       Sencha.io Src ist ein Image-Resizing-Service, der auf Server-seitige Device-Erkennung setzt.


       ❖   Image Resizing Service
           ❖   Features
                ❖   Skalieren auf Device-Auflösung
                ❖   Skalieren auf Fenster-Größe
                    ❖   via JS + Cookie (Race Conditions)
                                                                                    http://www.sencha.com/learn/
                ❖   Orientation Detection                                               how-to-use-src-sencha-io/

                    ❖   via JS + Cookie (Race Conditions)
                ❖   Skalieren relativ zur Device-Auflösung / Fenstergröße
                    ❖   px reduzieren, px addieren, prozentual
                ❖   Untersch. Maximalgrößen für Desktop & Mobile
                ❖   Dateiformat, Kompression, Inline Images, Caching, Sharding

Monster on Rails // Adaptive Images                      12                                             11.01.2012
Zweitag // Gründungsstory                                                                          02.11.2011
        Server-seitige Erkennung

       WURFL
       WURFL ist eine Open Source XML-Datei, in der Device-Eigenschaften gesammelt werden.


       ❖   Wireless Universal Resouce FiLe
       ❖   Sammelt Eigenschaften zu                                 http://wurfl.sourceforge.net/

           User-Agent Strings
       ❖   Hierarchische Abbildung von
           Geräten & Browsern
           ❖   Unterversionen / Folgeversionen

       ❖   Fallback-Mechanismus für
           unbekannte Geräte
       ❖   APIs für Java, .NET & PHP

Monster on Rails // Adaptive Images                 13                                             11.01.2012
Zweitag // Gründungsstory                                                                         02.11.2011
        Server-seitige Erkennung

       Device Detection nutzen & erweitern
       Aufbau und Nutzung von „Device Knowledge“ ist Voraussetzung für gutes Responsive Design.


       ❖   Musterbeispiel: Yiibu
           ❖   Projekt von Mobile-Experten für browser.nokia.com
           ❖   1. Request:
                ❖   Starten mit Basisprofil
                ❖   3rd Party Device Detection Datenbank (WURFL, DeviceAtlas)
                ❖   Anreichern um eigenes Wissen („Tacit Knowledge“)
                ❖   Schreiben in Cookie („Profil“)
           ❖   Weitere Requests:                                             http://www.slideshare.net/yiibu/
                                                                          adaptation-why-responsive-design-
                ❖   Mitlieferung des Profils                                    actually-begins-on-the-server

       ❖   Alle Anpassungen geschehen Server-seitig

Monster on Rails // Adaptive Images                  14                                           11.01.2012

More Related Content

Viewers also liked

Development of a hybrid cost scope error detection and handling concerning
Development of a hybrid cost  scope error detection and handling concerningDevelopment of a hybrid cost  scope error detection and handling concerning
Development of a hybrid cost scope error detection and handling concerningYurley Xiomara Rojas Sanchez
 
Webséminaire MOPA "Le B-A-BA de Google Analytics" - 01 avril 2015
Webséminaire MOPA "Le B-A-BA de Google Analytics" - 01 avril 2015Webséminaire MOPA "Le B-A-BA de Google Analytics" - 01 avril 2015
Webséminaire MOPA "Le B-A-BA de Google Analytics" - 01 avril 2015MONA
 
Takex MS-12TE Instruction Manual
Takex MS-12TE Instruction ManualTakex MS-12TE Instruction Manual
Takex MS-12TE Instruction ManualJMAC Supply
 
IDS ( Intrusion Detection System )
IDS ( Intrusion Detection System )IDS ( Intrusion Detection System )
IDS ( Intrusion Detection System )preverisk Group
 
3 Regles et reglementations sur la detection du plomb
3 Regles et reglementations sur la detection du plomb3 Regles et reglementations sur la detection du plomb
3 Regles et reglementations sur la detection du plombWest Africa Trade Hub
 
EXAMENES BASICOS EN MASTOLOGIA. PARTE III
EXAMENES BASICOS EN MASTOLOGIA. PARTE III EXAMENES BASICOS EN MASTOLOGIA. PARTE III
EXAMENES BASICOS EN MASTOLOGIA. PARTE III curriculo medico web
 
A Novel Methodology for the Separation of Known Suspended Microplastics (&lt;...
A Novel Methodology for the Separation of Known Suspended Microplastics (&lt;...A Novel Methodology for the Separation of Known Suspended Microplastics (&lt;...
A Novel Methodology for the Separation of Known Suspended Microplastics (&lt;...Deborah Robertson-Andersson
 
LOG craziness: Sistemas SIEM para humanos! [GuadalajaraCON 2013]
LOG craziness: Sistemas SIEM para humanos! [GuadalajaraCON 2013]LOG craziness: Sistemas SIEM para humanos! [GuadalajaraCON 2013]
LOG craziness: Sistemas SIEM para humanos! [GuadalajaraCON 2013]Websec México, S.C.
 
LES JTIC Cabinet Saint-Paul & AVISS
LES JTIC Cabinet Saint-Paul & AVISSLES JTIC Cabinet Saint-Paul & AVISS
LES JTIC Cabinet Saint-Paul & AVISSmcperthuis
 
Exploring Phytobiome System: From Microbiomes To Next Generation Precision Ag...
Exploring Phytobiome System: From Microbiomes To Next Generation Precision Ag...Exploring Phytobiome System: From Microbiomes To Next Generation Precision Ag...
Exploring Phytobiome System: From Microbiomes To Next Generation Precision Ag...Fabio Caligaris
 
Presentación Agfa Photo
Presentación Agfa PhotoPresentación Agfa Photo
Presentación Agfa PhotoMarketingPres
 
Riesgo cardiovascular en hombres trabajadores
Riesgo cardiovascular en hombres trabajadoresRiesgo cardiovascular en hombres trabajadores
Riesgo cardiovascular en hombres trabajadoresJorge Pacheco
 

Viewers also liked (19)

Development of a hybrid cost scope error detection and handling concerning
Development of a hybrid cost  scope error detection and handling concerningDevelopment of a hybrid cost  scope error detection and handling concerning
Development of a hybrid cost scope error detection and handling concerning
 
Webséminaire MOPA "Le B-A-BA de Google Analytics" - 01 avril 2015
Webséminaire MOPA "Le B-A-BA de Google Analytics" - 01 avril 2015Webséminaire MOPA "Le B-A-BA de Google Analytics" - 01 avril 2015
Webséminaire MOPA "Le B-A-BA de Google Analytics" - 01 avril 2015
 
Takex MS-12TE Instruction Manual
Takex MS-12TE Instruction ManualTakex MS-12TE Instruction Manual
Takex MS-12TE Instruction Manual
 
IDS ( Intrusion Detection System )
IDS ( Intrusion Detection System )IDS ( Intrusion Detection System )
IDS ( Intrusion Detection System )
 
3 Regles et reglementations sur la detection du plomb
3 Regles et reglementations sur la detection du plomb3 Regles et reglementations sur la detection du plomb
3 Regles et reglementations sur la detection du plomb
 
Seminario 7 Cariología
Seminario 7 CariologíaSeminario 7 Cariología
Seminario 7 Cariología
 
EXAMENES BASICOS EN MASTOLOGIA. PARTE III
EXAMENES BASICOS EN MASTOLOGIA. PARTE III EXAMENES BASICOS EN MASTOLOGIA. PARTE III
EXAMENES BASICOS EN MASTOLOGIA. PARTE III
 
A Novel Methodology for the Separation of Known Suspended Microplastics (&lt;...
A Novel Methodology for the Separation of Known Suspended Microplastics (&lt;...A Novel Methodology for the Separation of Known Suspended Microplastics (&lt;...
A Novel Methodology for the Separation of Known Suspended Microplastics (&lt;...
 
Seminario 6 caries
Seminario 6 cariesSeminario 6 caries
Seminario 6 caries
 
Hipoacusia med.fam
Hipoacusia med.famHipoacusia med.fam
Hipoacusia med.fam
 
LOG craziness: Sistemas SIEM para humanos! [GuadalajaraCON 2013]
LOG craziness: Sistemas SIEM para humanos! [GuadalajaraCON 2013]LOG craziness: Sistemas SIEM para humanos! [GuadalajaraCON 2013]
LOG craziness: Sistemas SIEM para humanos! [GuadalajaraCON 2013]
 
Comparación de la detección de caries en dentición decidua con el índice oms ...
Comparación de la detección de caries en dentición decidua con el índice oms ...Comparación de la detección de caries en dentición decidua con el índice oms ...
Comparación de la detección de caries en dentición decidua con el índice oms ...
 
FDT
FDTFDT
FDT
 
LES JTIC Cabinet Saint-Paul & AVISS
LES JTIC Cabinet Saint-Paul & AVISSLES JTIC Cabinet Saint-Paul & AVISS
LES JTIC Cabinet Saint-Paul & AVISS
 
Exploring Phytobiome System: From Microbiomes To Next Generation Precision Ag...
Exploring Phytobiome System: From Microbiomes To Next Generation Precision Ag...Exploring Phytobiome System: From Microbiomes To Next Generation Precision Ag...
Exploring Phytobiome System: From Microbiomes To Next Generation Precision Ag...
 
Comsi
ComsiComsi
Comsi
 
Presentación Agfa Photo
Presentación Agfa PhotoPresentación Agfa Photo
Presentación Agfa Photo
 
Riesgo cardiovascular en hombres trabajadores
Riesgo cardiovascular en hombres trabajadoresRiesgo cardiovascular en hombres trabajadores
Riesgo cardiovascular en hombres trabajadores
 
Filtros de conbustible
Filtros de conbustibleFiltros de conbustible
Filtros de conbustible
 

Adaptive Images - Monster on Rails Jan. 2012

  • 1. Adaptive Images Monster on Rails Jan. 2012 Mobile Christian Peters
  • 2. Zweitag // Gründungsstory 02.11.2011 Fluid Images Der naive Ansatz In dem bekannten Buch „Responsive Web Design“ werden Fluid Images inkl. IE Hacks angepriesen. ❖ max-width: 100% img, ❖ Browser-Verhalten: embed, object, ❖ Bild wird ggf. auf Größe seines video { Containers runterskaliert max-width: 100%; } ❖ Kein Hochskalieren ❖ Krisselig in IE7 ❖ Marcottes Gegenmittel: http://alistapart.com/ ❖ 60 Zeilen JavaScript articles/fluid-images/ ❖ proprietärer Filter progid:DXImageTransform. Microsoft.AlphaImageLoader Monster on Rails // Adaptive Images 2 11.01.2012
  • 3. Zweitag // Gründungsstory 02.11.2011 „CSS Media Query for Mobile is Fool‘s Gold“ Optimierung für kleinere Bildschirme, schwachere CPUs und schlechtes Netz kann nicht mehr Code sein. http://www.cloudfour.com/css-media-query-for-mobile-is-fools-gold/ Monster on Rails // Adaptive Images 3 11.01.2012
  • 4. Zweitag // Gründungsstory 02.11.2011 „Fluid Images for Mobile is Fool‘s Gold“ Optimierung für kleinere Bildschirme, schwachere CPUs und schlechtes Netz kann nicht Skalierung großer Bilder sein. http://www.cloudfour.com/css-media-query-for-mobile-is-fools-gold/ Monster on Rails // Adaptive Images 4 11.01.2012
  • 5. Zweitag // Gründungsstory 02.11.2011 CSS Media Query for Mobile is Fool‘s Gold You cannot hide! Bilder einfach per display: none zu verstecken bedeutet nicht, dass sie nicht geladen werden. ❖ Hiding Images ❖ Either for replacing by smaller ones or hiding them completely @media screen and (max-width: 480px) { img { display: none; } } Monster on Rails // Adaptive Images 5 11.01.2012
  • 6. Zweitag // Gründungsstory 02.11.2011 CSS Media Query for Mobile is Fool‘s Gold You cannot hide! Bilder einfach per display: none zu verstecken bedeutet nicht, dass sie nicht geladen werden. ❖ Hiding Images ❖ Either for replacing by smaller ones or hiding them completely @media screen and (max-width: 480px) { img { display: none; } } ❖ iPhone still downloads them ❖ Same for CSS background-images Monster on Rails // Adaptive Images 5 11.01.2012
  • 7. Zweitag // Gründungsstory 02.11.2011 CSS Media Query for Mobile is Fool‘s Gold You cannot hide! Bilder einfach per display: none zu verstecken bedeutet nicht, dass sie nicht geladen werden. ❖ Hiding Images ❖ Either for replacing by smaller ones or hiding them completely @media screen and (max-width: 480px) { img { display: none; } } ❖ iPhone still downloads them ❖ Same for CSS background-images ❖ Some hacks currently work on iPhone ❖ e.g. hide parent of element with CSS bg-image Monster on Rails // Adaptive Images 5 11.01.2012
  • 8. Zweitag // Gründungsstory 02.11.2011 Let the Games begin! ❖ Client-seitig ❖ Dynamic Base Tag ❖ Image src per JavaScript setzen ❖ Client-seitig + Server-seitig ❖ JavaScript + Cookies + .htaccess Rewrite Rules ❖ Server-seitig ❖ Device Detection Monster on Rails // Adaptive Images 6 11.01.2012
  • 9. Zweitag // Gründungsstory 02.11.2011 Client-seitige Erkennung Dynamic Base Tag Das dynamische Setzen es <base> Tags verhindert nicht das Laden von falschen Bildern. ❖ HTML Element ❖ Teil des <head> ❖ Legt Basis-URL von relativen URLs im Dokument fest ❖ Nutzung für Adaptive Images: ❖ Bilder in gewünschten Größen in versch. Ordnern vorhalten ❖ nach JS Größenerkennung Base-Pfad entsprechend setzen ❖ Nachteil ➡ Race Conditions Monster on Rails // Adaptive Images 7 11.01.2012
  • 10. Zweitag // Gründungsstory 02.11.2011 Client-seitige Erkennung Image src per JavaScript setzen Platzhalter funktionieren nicht ohne JavaScript und Bildsubstitution führt zu Race Conditions. ❖ Platzhalter ❖ 1x1px - Bild nach JS-Erkennung durch echtes Bild ersetzen ➡ keine Bilder ohne JS ➡ schlechte Wartbarkeit (alle Bilder nur in JS) ❖ Kleine Bilder ggf. durch große Ersetzen ❖ Im Zweifel wird zumindest ein kleines Bild angezeigt ❖ Angabe der großen Bild-URL in data-large ❖ Oder durch Namenskonvention ➡ Race Conditions Monster on Rails // Adaptive Images 8 11.01.2012
  • 11. Zweitag // Gründungsstory 02.11.2011 Client-seitige Erkennung Wie Race Conditions vermeiden? Dies ist die Tagline, die die Kernaussage der Folie in einem Satz auf den Punkt bringt. ❖ Noscript Tag <noscript data-large='Koala.jpg' data-small='Koala-small.jpg' data-alt='Koala'> <img src='Koala.jpg' alt='Koala' /> </noscript> $('noscript[data-large][data-small]').each(function(){     var src = screen.width >= 500 ? $(this).data('large') : $(this).data('small');     $('<img src="' + src + '" alt="' + $(this).data('alt') + '" />').insertAfter($(this)); }); ❖ Nicht Teil des DOM-Baums, wenn JS an → keine Race Conditions ❖ Standardbild als Fallback wenn JS aus ➡ Unsemantisch ➡ Auswirkung auf Suchmaschinen unklar ➡ Beschränkte JS-Engines unterstützen keine DOM-Inserts Monster on Rails // Adaptive Images 9 11.01.2012
  • 12. Zweitag // Gründungsstory 02.11.2011 Client-seitige + Server-seitige Erkennung JavaScript + Cookies + .htaccess Rewrite Rules Cookies & URL-Rewrite-Regeln sind eine gute Methode, helfen jedoch nicht beim 1. Request ❖ 1. Request ❖ Auflösung per Javascript erkennen ❖ Auflösung in Cookie schreiben ❖ Bei Folge-Requests ❖ Cookie auslesen & .htaccess Rewrites auf Bild-URL anwenden RewriteEngine On RewriteCond %{HTTP_COOKIE} rwd-device=desktop RewriteCond %{QUERY_STRING} desktop=([^&]+) RewriteRule .* %1 [L] ➡ Race Condition im 1. Request ➡ Client muss Cookies akzeptieren Monster on Rails // Adaptive Images 10 11.01.2012
  • 13. Zweitag // Gründungsstory 02.11.2011 Server-seitige Erkennung Device Detection Über User-Agent-Strings können Geräte erkannt und Eigenschaften abgeleitet werden. ❖ Server-seitig keine Introspektion ❖ Jedoch: User-Agent String ❖ Beispiele: ❖ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/ 535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7" ❖ Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A538a Safari/419.3 ❖ Ansätze: Image Resizing Service (per HTTP) OpenSource „Datenbank“ (XML-Datei) Monster on Rails // Adaptive Images 11 11.01.2012
  • 14. Zweitag // Gründungsstory 02.11.2011 Server-seitige Erkennung Sencha.io Src Sencha.io Src ist ein Image-Resizing-Service, der auf Server-seitige Device-Erkennung setzt. ❖ Image Resizing Service ❖ Features ❖ Skalieren auf Device-Auflösung ❖ Skalieren auf Fenster-Größe ❖ via JS + Cookie (Race Conditions) http://www.sencha.com/learn/ ❖ Orientation Detection how-to-use-src-sencha-io/ ❖ via JS + Cookie (Race Conditions) ❖ Skalieren relativ zur Device-Auflösung / Fenstergröße ❖ px reduzieren, px addieren, prozentual ❖ Untersch. Maximalgrößen für Desktop & Mobile ❖ Dateiformat, Kompression, Inline Images, Caching, Sharding Monster on Rails // Adaptive Images 12 11.01.2012
  • 15. Zweitag // Gründungsstory 02.11.2011 Server-seitige Erkennung WURFL WURFL ist eine Open Source XML-Datei, in der Device-Eigenschaften gesammelt werden. ❖ Wireless Universal Resouce FiLe ❖ Sammelt Eigenschaften zu http://wurfl.sourceforge.net/ User-Agent Strings ❖ Hierarchische Abbildung von Geräten & Browsern ❖ Unterversionen / Folgeversionen ❖ Fallback-Mechanismus für unbekannte Geräte ❖ APIs für Java, .NET & PHP Monster on Rails // Adaptive Images 13 11.01.2012
  • 16. Zweitag // Gründungsstory 02.11.2011 Server-seitige Erkennung Device Detection nutzen & erweitern Aufbau und Nutzung von „Device Knowledge“ ist Voraussetzung für gutes Responsive Design. ❖ Musterbeispiel: Yiibu ❖ Projekt von Mobile-Experten für browser.nokia.com ❖ 1. Request: ❖ Starten mit Basisprofil ❖ 3rd Party Device Detection Datenbank (WURFL, DeviceAtlas) ❖ Anreichern um eigenes Wissen („Tacit Knowledge“) ❖ Schreiben in Cookie („Profil“) ❖ Weitere Requests: http://www.slideshare.net/yiibu/ adaptation-why-responsive-design- ❖ Mitlieferung des Profils actually-begins-on-the-server ❖ Alle Anpassungen geschehen Server-seitig Monster on Rails // Adaptive Images 14 11.01.2012