déc

25

Publié par : oalessandri | Sur : 25 décembre 2011

Le responsive web design est né de la multitude d’écrans disponibles et surtout depuis l’avènement des tablettes et l’utilisation fréquente des Smartphones. Pour répondre à tous ces formats on est obligé de créer des sites différents réellement adaptés à chaque contenu :

  • Un écran d’ordinateur de bureau (mac ou pc) permet d’afficher
    • des contenus plus longs et plus complexes,
    • plusieurs colonnes sur une page,
    • des images plus grandes avec des agrandissements plein écran.
    • Plus d’éléments dans un site donc plus lourd.
  • Un écran de tablette affiche
    • déjà beaucoup moins d’informations,
    • des images plus petites
  • Pour les Smartphones c’est encore plus complexe puisque les écrans varient d’un fabriquant à l’autre mais on retrouve
    • des images plus petites pour les Smartphones,
    • et un contenu de quelques lignes,
    • des écrans plus nombreux avec des transitions entre eux,… La navigation n’est plus la même, plus humaine avec le doigt et non une souris ce qui change également le comportement des utilisateurs
    • Des pages plus légères à charger
    • Moins d’effet ou plutôt des effets différents (librairie javascript, jquery)

Toutes ces contraintes rendent difficiles la création d’un seul site qui puissent gérer et s’adapter automatiquement à tous les périphériques disponibles mais le Responsive web design est né !

Responsible web design répond donc à l’adaptation du contenu et de ses images en fonction de la résolution et de la taille d ‘un écran. J’ai vu beaucoup de techniques de mise en page depuis plus de 15 ans, celle là m’a particulièrement interloquée. Cette technique est vraiment efficace, le plus fou est que l’on utilise des langages que les web développeurs connaissent bien : les feuilles de styles mais avec sa dernière version les CSS 3 (avec les media queries). Cela explique pourquoi on ne l’a pas vu apparaitre plus tôt.

Pour être plus concret aller sur ce site : http://www.macdonaldhotels.co.uk/ avec IE9 ou Chrome réduirez la taille de la fenêtre du navigateur pour prendre une taille équivalente à celle d’un smartphone.

Vous obtenez ceci

pour un écran d’ordinateur de bureau

Vous remarquez l’utilisation de diaporama en jquery, d’un design poussé et de l’utilisation de 4 colonnes incluses dans un diaporama

image

image

Pour l’utilisation d’une tablette

cela passe à 3 colonnes

image

image

Et enfin pour un Smartphone

on retrouve le diaporama du haut fonctionnant parfaitement avec des photos adaptées, les points pour naviguer dans le diaporama ont disparus, le moteur de recherche s’est adapté et réduit ainsi que le menu.

Le 2ème diaporama a disparut pour afficher toutes les images les unes en dessous des autres tout en conservant une efficacité ergonomique.

 

imageimageimageimageimageimage

Alors qu’en pensez vous?

La conception

Je souhaite faire une remarque importante sur la conception d’un tel site qui demande une réflexion en amont plus poussée (avec des wireframe), pour le construire et que tout s’enchaine parfaitement en fonction des différents périphériques. Vous devez définir l’objectif pour vos différents site et savoir si cette technique est utile à mettre en place pour votre projet.

Les coûts

Si vous deviez réaliser 3 sites pour 3 supports différents avec cette technique vous n’en faite plus qu’un. Le temps de travail se ressent sur la conception fonctionnelle et sur la mise en page mais pas forcément sur le développement des fonctionnalités. Vous aboutissez finalement à la maintenance d’un seul site pour plusieurs périphériques et donc à une réduction des coûts.

Attention le devis final est certainement moins important que de concevoir 3 sites classiques (pc, différentes versions de navigateurs sur pc (ou mac), mobile, tablette,)  mais pas moins important que de faire 1 seul site.

Des compétences hyper spécialisées

Donc la difficulté est de trouver une société qui connaisse parfaitement les contraintes des différents supports mais également les spécificités de certains périphériques car un Iphone est différents d’un Android et d’un Windows Phone 7 pourtant tous des Smartphones.

Le fait de rechercher des compétences particulières pour cette conception va alourdir également le devis., enfin théoriquement.

 

Je vous invite à aller voir cette article qui détaille la conception de ce site : http://www.uxbooth.com/blog/how-to-design-a-mobile-responsive-website/

 

La compatibilité avec les navigateurs IE7, IE8 et IE6

Pour ce qui est de IE 6, il n’est de toute façon plus soutenu par les concepteurs. Pour les 2 autres il n’y pas de soucis car le site prendra la forme normale donc une utilisation plutôt en mode PC comme on le voit sur 90% des sites actuels. Mais comme j’en ai déjà parlé pour l’HTML5 il existe des bibliothèques pour simuler les avantages de la CSS 3 (j’en parlerais dans un prochain billet)

Plus d’informations

Je ne vous détaillerais pas l’aspect technique qui mérite d’autres billets mais je vous conseille de visiter les articles suivants qui vous éclaireront dans ce nouveau concept :

http://www.slideshare.net/livefront/responsive-design-7877412

http://www.designspartan.com/tutoriels/responsive-design-definition-fonctionnement-ressources-et-tutoriels/

http://blog.johanbleuzen.fr/responsive-design-pour-tous

Des informations sur le responsive Images

http://filamentgroup.com/lab/responsive_images_experimenting_with_context_aware_image_sizing/

nov

05

Publié par : oalessandri | Sur : 5 novembre 2011

Depuis quelques années la conception web est devenue, pour certaines sociétés, très professionnelle. Elles ont mis en place des méthodes de travail permettant de proposer aux clients des aspects d’interfaces fonctionnelles avant de concevoir le produit et ainsi optimiser ou même maximiser la satisfaction du client par rapport à sa demande.

C’est là qu’intervient le Wireframe qui permet de concevoir des interfaces virtuelles comme des maquettes (sans graphisme) et ainsi de construire avec le minimum d’effort des interfaces.

Cette étape semble être une perte de temps mais ce n’est pas le cas car cette action, intervenant avant la conception graphique,  va accélérer la création de la maquette. En se basant sur l’interface issu du Wireframe, validée par le client, le travail du graphiste va en être facilité. Cela évite ainsi de nombreux aller-retour entre la société conceptrice et le client.

Un logiciel très performant comme Visio de Microsoft a des fonctionnalités bien plus poussées que la simple conception de Wireframe puisque qu’il sait également générer du code mais ceci est un autre sujet

Certaines méthodes facilitent donc la conception de pages web, l’organisation de contenu, l’optimisation de l’ergonomie et la disposition des éléments sur une page, l’interaction entre plusieurs pages ou écrans, …

Voici quelques exemples

imageimage

imageimageimage

oct

04

Publié par : oalessandri | Sur : 4 octobre 2011

 

L’utilisation de WriteFile pour l’enregistrement d’un fichier sur le serveur ou le téléchargement d’un fichier via une page web pose apparemment des problèmes lorsque le fichier est trop volumineux et que la connexion du client n’a pas un débit important.

WriteFile mets les données du fichier transmit au client dans un buffer (en mémoire) géré par le processus w3wp.exe, utilisé pour le site web. Dans ce cas un seul processus gère le site web et une limite de mémoire avant recyclage a été configurée pour éviter les saturations de mémoire et ainsi recycler régulièrement le processus. Mais cette configuration couplée à WriteFile coupe la connexion lors du téléchargement car la mémoire dépasse  la quantité de mémoire maximale autorisée. Et il est impossible au navigateur client de se recnnecter au serveur sur le même thread qui était occupé à transmettre le fichier

Pour éviter cela 2 solutions :

  1. augmenter la mémoire pour le processus w3wp.exe
  2. utiliser TransmitFile qui envoi directement les données du fichier et ne mets rien en mémoire.

Si d’autres personnes ont des informations complémentaire à ce sujet ils seront les bienvenues.

sept

10

Publié par : oalessandri | Sur : 10 septembre 2011

Mon livre vient de paraitre ASP.NET 4.0 et C# sous Visual Studio 2010Conception et développement d’un service en ligne aux Editions ENI

 

Présentation

Ce livre s’adresse aux développeurs débutants en Asp.Net 4.0 et C# dans le but d’apprendre à utiliser les fonctionnalités et composants fournis avec Visual Studio 2010 tels que treeview, les formview, les listview et les Ajaxtoolkit,…

L’objectif est de développer complètement un service en ligne en s’appuyant sur un exemple concret : une gestion documentaire. La construction de cette GED pose les briques solides d’un service en détaillant sa conception, sa réalisation, son hébergement et toutes les évolutions imaginables pour finaliser ce service. J’ explique pourquoi j’ai choisi comme exemple une Gestion documentaire et les implications d‘un tel service dans une entreprise.  Les évolutions sont expliquées de façon précise dans le dernier chapitre tels que l’intégration du moteur de recherche Index Server, des idées sur le développement bibliothèque Jquery.

Les codes sources par palier sont en téléchargement sur le site www.editions-eni.fr.

Les chapitres du livre :
Introduction – Outils et environnement – Définition du projet – Mise en place de l’infrastructure – Gestion des rubriques – Gestion des droits et des accès – Gestion des documents – Connexion au service – Construction de la page de gestion documentaire – Construction de la partie éditeur – Pages statiques – Évolutions futures

Accès en version numérique

août

11

Publié par : oalessandri | Sur : 11 août 2011

Enfin une mise à jour majeure pour Windows Phone 7 qui doit être diffusé en octobre.

Windows Phone 7 : Microsoft livre de nouveaux détails sur la mise à jour Mango

Olivier Ribet, Microsoft France : « Windows Phone 7 Mango apporte des nouveautés encore jamais vues »

Voici une partie des 500 fonctionnalités de cette version 7.5 alias Mango :

Objectif centraliser les informations des différents sites et accélérer l’accès aux informations

  • multi-tâches – multi-applications – application en fond tâche – économise la batterie
  • interface commune pour le chat à travers des SMS, Facebook chat et Windows Live Messenger
  • Réseaux sociaux sont unifiés et intégrés au carnet d’adresse : on avait déjà windows live, google, facebook,s ‘ajoute linkedin, twitter, Messenger
  • boites mail liées et accessibles depuis la même interface ou pas
  • système de calendrier et de demande rendez vous
  • intégration de IE9 ouf! : html 5, accélération matérielle
  • stockage en ligne avec skydrive et Office 365
  • navigation avec guidage vocale
  • SMS dictés
  • système d’identification de musique intégré à Bing
  • mode conversation pour les emails affichés dans la boite de réception
  • recherche sur le serveur de la messagerie électronique
  • Lecture intégrée des QRCode, Micrsoft Tags, et code barres
  • Lync sera disponible gratuitement sur le Marketplace Windows Phone pour accéder au service de communications unifiées (lui est payant Clignement d'œil)
  • Pour les développeurs : accès aux multi-tâche, réalité augmentée, API  de capteurs, APN, capacité de notification évoluées, accès aux calendriers,n aux contacts

Lire la suite

juil

18

Publié par : oalessandri | Sur : 18 juillet 2011

Commençons par la requête et le remplissage du WebGrid

var data = db.Query(selectQueryString, id);
var grid = new WebGrid(source: data, rowsPerPage: 50);

  • selectQueryString : c’est la requête dont le résultat chargera les données dans le WebGrid
  • id : est un identifiant utilisé comme paramètre dans la requête
  • data : est la variable contenant une liste d’objet résultant @item dans le Webgrid permet d’accès au propriété de chaque ligne (colonne)
  • rowsPerPage : autorise le multi page c’est donc automatique. cela créé des liens de page en page. Ici 50 lignes par page.
  • Voii le helper pour construire la grille :

    1:     @grid.GetHtml(
    2:      tableStyle: "webgrid",
    3:      headerStyle: "webgrid-header",
    4:      footerStyle: "webgrid-footer",
    5:      rowStyle: "webgrid-rows",
    6:      alternatingRowStyle: "webgrid-alternating-rows",
    7:      columns: grid.Columns(
    8:    grid.Column(format: @<a href="@Href("~/Private/Edit", item.ID)"
                            title="Editer la fiche">
    9:                     <img src="@Href("~/images/icons/user_edit.png")"
                                      alt="Editer la fiche" />
    10:                              </a>),
    11:     grid.Column("", "", @<text>@if (item.C_LOGO_VIG != "")
    12:     {
    13:          <a href="@Href("~/Private/Edit", item.ID)"
    14:          title="@item.C_SOCIETE">
    15:          <img
                 src="../d/@item.C_ABRE/@item.VIG.Replace("zoom", "vig")"
    16:                  alt="@item.C_SOCIETE" />
    17:          </a>
    18:     }</text>),
    19:    grid.Column("Société", "Société", format:  @<i>@item.SOCIETE</i>),
    20:    grid.Column("Nom", "Nom", format: @<i>@item.NOM</i>),
    21:    grid.Column("Prénom", "Prénom", format: @<i>@item.PRENOM</i>),
    22:    grid.Column("Code postal", "Code postal",
                                     format: @<i>@item.CODEPOSTAL</i>),
    23:    grid.Column("Ville", format: @<i>@item.VILLE</i>),
    24:    grid.Column("Revendeur", format: @<i>@item.SOCIETE</i>),
    25:    grid.Column("Rubrique", format: @<i>@item.RLIBELLE</i>),
    26:    grid.Column("Département", format: @<i>@item.DLIBELLE</i>),
    27:    grid.Column(
             format:
             @<a href="@Href("~/Private/Del", item.ID)"
                title="Supprimer">
                <img src="@Href("~/images//user_delete.png")"
                alt="Supprimer" />
             </a>)
    28:   )
    29:  )

    Le résultat de ce WebGrid

    image

    Cela parait un peu rebutant de prime à bord mais vous allez voir que tout s’explique :

  • columns: défini la liste des colonnes de la grille
  • grid.Column : ceci défini la colonne –> Société, Nom, Prénom, …
  • on peut ajouter tout type de code html, des liens, des images mais aussi des variables en provenance de liste d’objets pour afficher des données dynamiques (c’est le but Clignement d'œil), des conditions avec le if. La balise <text> s’avère en fait très utile et indispensable pour personnaliser au plus précis ce type de helper.

    1:   @<text>

    2:  @if (item.C_LOGO_VIG != "")

    3:   {

    4:    <a href="@Href("~/Private/Edit", item.ID)"

    5:      title="@item.SOCIETE">

    6:      <img   src="../d/@item.C_ABRE/

                            @item.VIG.Replace("zoom", "vig")"

    7:      alt="@item.SOCIETE" />

    8:    </a>

    9:   }

    10:  </text>

    Pour faire des liens sans se soucier du chemin on utilise @Href. Le tilde “~” permet de partir de la racine du site et de construire le chemin. item.Id ajoute l’identifiant pour agir sur la base de données. on obtient ceci http://monnomdedomaine.com/Private/Edit/10

    La condition test l’existence d’une vignette, si c’est le cas on affiche les balises nécessaire

       1:  @item.VIG.Replace("zoom", "vig")
    

    ceci permet de remplacer le texte “zoom” par “vig” dans le nom de l’image

     

    Les styles sont définis de façon précises

     tableStyle: "webgrid"
     headerStyle: "webgrid-header"
     footerStyle: "webgrid-footer"
     rowStyle: "webgrid-rows"
     alternatingRowStyle: "webgrid-alternating-rows"

     

    le complément pour les styles se paramètre dans grid.Column Il manque quelques petits ajustements sur les styles comme l’alignement des titres des colonnes par exemple.
     

    1:   grid.Column("DatePublication", "Publication",

                format: @<i>

                     @item.DatePublication.ToString("d")

                         </i>,

                style: "datepub"),

    donc à la fin on trouve style : qui permet d’agir sur la colonne

     

    A suivre pour d’autres explications sur Les Asp.Net Web Pages.

    juin

    17

    Publié par : oalessandri | Sur : 17 juin 2011

    Voici quelques articles qui donnent suite à mon article sur Node.js avec des explications plus techniques :

    Node.js partie 1 – Tout ce que vous devez savoir sur Node.js

    Présentation très précise du Node.js

    Les applications web gagnées par le temps-réel : un plan sur la Comet ?

    Explication très claire sur les différents protocoles pour arriver à faire une communication asynchrone viable!

    Streaming Twitter: NodeJS & Socket.IO

     

    Le dernier lien est très intéressant car il donne des explications précises (code à l’appui) sur le couple Node.js et socket.io. Seul les prochaines versions des navigateurs  possèderont la fonction WebSocket en natif. pour le moment un trou de sécurité empêche cette implémentation.

    Mais en attendant pour être sûr que  le code fonctionne dans chaque édition et version de navigateur on utilise Socket.io qui gomme et gère les différences entre les navigateurs (voir les navigateurs supportés) en utilisant différentes techniques.

    mai

    05

    Publié par : oalessandri | Sur : 5 mai 2011

    Nous attaquons notre premier projet en razor comprenant un espace privatif et un espace administration pour le client. pour ce faire nous utilisons le nouveau système de gestion des membres qui est parfaitement optimisé : pas de session anonyme stockée qui engorge la base de données, pas d’utilisation de Guid mais bien de clef primaire en type int. Plus souple pour faire évoluer le système d’ d’accès et  rôles.

    Ayant fait également beaucoup de Php, la prise en main de la syntaxe Razor est relativement rapide. Le helper WebGrid est facile à utiliser mais attention si on souhaite le pousser dans ses retranchements. Le helper pour envoyer le mail est également trivial à utiliser pour envoyer de simple email. A voir pour utilisation plus poussée.

     

    voici l’exemple de code d’une page index.cshtml

    1:  @{   
    2:      Layout = "~/Views/_SiteLayout.cshtml";   
    3:      Page.Title = "accueil";   
    4:  }   
    5:     
    6:  <div id="bloc-filet">Bonjour   
    7:     
    8:  …   
    9:    
    10:  </div>

     
     

    La syntaxe présente plusieurs types de sections pour afficher des morceaux de pages. Ainsi on peut déporter tout morceaux de code html redondant, dans le but de l’écrire qu’une seule fois.

    1:<!DOCTYPE html

    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

    http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

    2:  <html

        xmlns=http://www.w3.org/1999/xhtml

        xml:lang="fr" lang="fr">   
    3:  <head>   
    4:  <meta http-equiv="Content-Type"

                content="text/html; charset=utf-8" />   
    5:          <title>@Page.Title</title>   
    6:    @RenderPage("/Partage/_headerbasecss.cshtml")  
    7:   <link href="@Href("~/favicon.ico")"

              rel="shortcut icon" type="image/x-icon" />   
    8:     
    9:  </head>  
    10:    
    11:  <body class="mbody">  
    12:  <div id="global">  
    13:  <div id="entete">  
    14:    
    15:  ….  
    16:  </div>  
    17:  <div id="contenu">  
    18:      @RenderBody()  
    19:  </div> 
    20:  <div id="pied">  
    21:      @RenderPage("/Partage/_footer.cshtml") 
    22:  </div>  
    23:  </div>  
    24: @RenderPage("/Partage/_headerbasescripts.cshtml")  
    25: @RenderSection("ClientScriptsEditor",

                                           required: false)  
    26:  </body> 
    27:  </html>  
    28: 

    c’est la mission du tag RenderPage. Les pages sont ainsi harmonisées.

    Le tag RenderSection permet de faire apparaitre du code que sur certaines pages tout en utilisant le même master. Ce sont des sorte de section conditionnelle.

    et enfin le RenderBody affiche le contenu placé dans la page index.cshtml

    La fonction Page.Title est définie dans la page index.cshtml mais utilisé pour le titre dans le Layer (master)

    Tous les autres fichiers comportent des morceaux de code html qui peuvent être combiné à des conditions gérées par la syntaxe Razor.

    Je ne vais pas vous en dire plus pour le moment, je continuerais à vous donner des exemples au fils du temps.

    avr

    17

    Publié par : oalessandri | Sur : 17 avril 2011

    L’asp.net Web pages qui utilise le moteur Razor est la dernière technologie web sortie par Microsoft et je dois avouer que j’adhère parfaitement à sa syntaxe et à ses fonctionnalités. Etant habitué à développer avec l’Asp.net et C# depuis maintenant 10 ans, c’est un langage qui a été fait pour le web et intègre les dernières nouveautés comme des composants sociaux (Twitter, J’aime de Facebook, …), des composants pour ajouter des vidéos, télécharger et traiter des images, récupérer des morceaux d’url , utiliser des sortes de master page et des includes, webgrid, …

    C’est un compromis entre le langage php et l’Asp.net. Code intégré dans la page. Plus d’AjaxToolkit et place au Jquery  et à la maitrise totale du code source ce qui entrevoit une préparation à la venue de l’html 5

    La puissance vient aussi avec la possibilité d’utiliser pleinement le les classes du framework 4.0 et l’Entity framework pour accélérer la création de la couche données

    mar

    28

    Publié par : oalessandri | Sur : 28 mars 2011

    Enfin presque un an de labeur et enfin presque au bout, la construction d’un service en ligne par l’exemple : gestion documentaire et des différents espaces : administrateur, utilisateur et éditeur.

    Il est bien de préciser que la construction de cette gestion documentaire est utilisée pour illustrer la conception d’un service en ligne dans un cadre pédagogique. Il est entendu qu’une gestion documentaire peut être très complète dans sa gestion des flux, des versions et des cycles de vies des documents et qu’il est difficile de tout intégrer dans un ouvrage. ces éléments sont donc évoqués et ainsi que toutes les évolutions possibles pour compléter le service et en faire un vrai service en ligne.

    Sortie prévue en septembre 2011.

    Mise à jour le  08/09/2011 voilà l’ouvrage est sortie aux éditions ENI