Lorsque l'on développe depuis quelques temps sur une plateforme (ASP.NET pour mon cas) et que fréquemment on fait face à un problème récurrent, on repense alors à la manière dont, lors d'un précédent projet, on a soit :

- trouvé une solution élégante en 3 secondes (jamais)

- trouvé une solution cra-cra en 30 min sur laquelle un gros doute persiste quand à sa compatibilité inter-navigateurs (souvent)

- abandonné :)

Et un jour, par hasard et sans grande ambition, on découvre que le problème est géré complètement en natif dans le framework avec un paramètre (magique)... et là on se sent super bête pour toutes les autres fois. On se dit.. oui mais ça doit être arrivé avec la dernière version 3.5.. non la MSDN Library confirme que c'est OK depuis la 2.0 de Visual Studio 2005.

Snif... c dur :(

Enfin... c cool aussi d'un autre côté ;) 

Je vais quand même vous indiquer MA découverte de la journée :

La problèmatique : comment repositionner une page (un peu haute) après un PostBack au même niveau qu'avant le PostBack ?

La réponse simple : ajouter le paramètre MaintainScrollPositionOnPostBack à true dans la directive <%@ Page %> de la page aspx,

le JS est fait pour vous ! (http://msdn.microsoft.com/fr-fr/library/system.web.ui.page.maintainscrollpositiononpostback.aspx)

 

 

Morale : on en apprend tous les jours... certains jours plus que d'autres

Morale 2 : http://msdn.microsoft.com/fr-fr/library/ :) 

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Microsoft Sphere

Publié le 7/30/2008 à 5:20 PM par cesar dans Loisirs | Technique

Parce qu'une vidéo faut mieux qu'un long discours ;) :

 

 

La même chose en musique :

http://news.zdnet.co.uk/emergingtech/0,1000000183,39453797,00.htm

 

PS : my favorite : le globe terrestre !

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Je ne suis pas parisien. Mais lorsque je vais à Paris (en train) j'arrive toujours par la gare de Lyon (normal, je viens de... Lyon).

Ainsi, une des lignes de métro parisiennes que je suis fréquemment amené à emprunter est la ligne 1 (Château de Vincennes - La Défense). Et voici ce que j'y ai remarqué à chaque fois : lorsque je passe à la station Bastille, station à ciel-ouvert, je reçois sur mon portable un SMS vide provenant du 009 !

image

La première fois on croit à une erreur, un bug, un SMS publicitaire (loupé), ... et puis lorsque l'on reçoit le même au même endroit au retour, on trouve ça bizarre... Ensuite lorsque l'on revient à Paris quelques mois plus tard et que ça recommence et toujours bien entendu exactement au même endroit, on commence à trouver ça TRES bizarre. La dernière fois en date fût encore plus sympa car arrivé à la station Saint Paul (la précédente), je vois Bastille sur le plan dans la rame et y pense. J'attends donc mon joli SMS habituel... pas déçu : il arrive quelques instants plus tard :).

Cette fois c'est décidé, j'ai voulu comprendre.

Alors j'ai cherché et réfléchi un peu.

Et voici la réponse : je suis victime (enfin victime... façon de parler) de cell broadcasting !

Qu'est ce que c'est que ça ? Hé bien... quelque chose de très simple à vrai dire. Il s'agit d'une technologie des télécoms mobiles ayant pour but de diffuser à partir des cellules (des antennes si on veut) de téléphonie mobile des messages à tous les dispositifs mobiles dans la zone de couverture.

Ainsi, à l'inverse du SMS standard, 1 vers 1, où l'on connaît le destinataire ; nous avons affaire ici à une diffusion 1 vers n où l'on ne connait même pas le nombre de destinataires ou le statut de la réception du message.

La page Wikipédia en anglais sur le sujet vous en dira davantage :

Wikipedia : Cell Broadcast

On peut imaginer de multiples scénarios possibles d'utilisation de cette technologie. Par exemple, en cas d'alerte, l'envoi en masse d'une information à une population. L'intérêt étant qu'énormément de personnes possèdent un téléphone mobile (donc on touche du monde) et que l'alerte est faite de manière géographique (la cible potentielle est concernée). Des applications plus basiques (moins urgentes) de type informations sont imaginables.

En réalité, à la vue de mes recherches rapides, ce système est même relativement utilisé chez certains de nos voisins européens, en Allemagne notamment où l'on trouve des listes des canaux de diffusion :

Liste allemande de canaux de diffusion

En France, il ne semble pas que ce soit trop le cas.

Mais revenons-en à mon SMS... pourquoi moi ? pourquoi tous les gens dans le métro ne se tournent pas vers leurs portables au même moment ?

Pour une bonne raison que je viens d'élucider : c'est que le choix de réception ou non de ces messages diffusés par CB est une option à paramétrer dans son téléphone !

Et selon un petit tour de table rapide autour de moi, cette option semble désactivée par défaut sur les appareils.

Ainsi, il n'y a que les bidouilleurs de paramètres de téléphone comme moi qui changent des options (sans savoir pourquoi donc, jusqu'à aujourd'hui) qui peuvent recevoir ce genre de chose.SDC10070

Après pourquoi Bastille ? Ça je n'ai pas la réponse. Simplement qu'un jour des tests ont du être menés par exemple et qu'une cellule autour de ce quartier continue d'émettre sur le canal 9 une information (vide pour le coup). De là à dire si c'est permanent ou non je ne sais pas... Moi, je le reçois à chaque fois en tout cas.

Voilà, donc conclusion :

cell broadcasting sur le canal 9 près de Bastille (sûrement l'une des rares cellules) + paramétrage activé de réception des messages diffusés = mon SMS récalcitrant :)

 

Ceci m'aura permis de découvrir le CB, qui me parait être un système très utile. Dommage que nos appareils semblent configurés pour ne pas l'utiliser par défaut. Peut-être s'agit-il là d'une peur de dérive du système (mon ami le SPAM). En tout cas, si ceci était maîtrisé au niveau des opérateurs par une entité (du Ministère de l'Intérieur par exemple), ceci pourrait être utile pour prévenir d'un incident (accident chimique, épidémie, eau polluée, déclenchement d'un plan alerte enlèvement, ...).

;)

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Voici une petite histoire qui m'a fait beaucoup sourire.

Je souhaitais tout à l'heure nettoyer un peu ma belle souris Microsoft Wireless Laser Mouse 5000.

Afin de ne pas cliquer n'importe où sur mon PC qui est resté allumé pendant cette opération, je décide de retirer une pile de la souris... normal !

Seuleument, je n'en retire qu'une ; ça me semble évident...

Et là que vois-je ?! Ma souris qui marche encore avec une seule pile !! Enorme !

J'ai tenté de changer la pile et ça marche encore peu importe la pile que j'enlève des 2 piles normalement demandées.

Pensez-vous que je doive faire des économies et n'en laisser finalement qu'une ? :)

 

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Comment créer un badge Facebook pour son blog ?

Publié le 7/6/2008 à 1:22 AM par cesar dans Technique | Web

Pour créer un badge personnalisable lié à votre profil Facebook à intégrer à votre blog ou site Web, c'est très simple !

Rendez-vous en bas de votre page de profil sur le lien "Créer un badge" ou directement sur la page http://www.facebook.com/badges.php

A partir de là, vous pourrez personnaliser votre badge (choix des informations à afficher par exemple : image, réseaux, statut, ...) et récupérer une version image ou JavaScript sous forme de code à insérer où bon vous semble Cool

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Horreur, j'ouvre Outlook 2007 aujourd'hui et l'une de mes boîtes de réception est totalement vide !

Il s'agit d'une boîte de réception Hotmail synchronisée via le Outlook Connector.

La question n'est pas de savoir si je suis en ligne ou pas puisque d'habitude l'ensemble de mes messages est toujours bien présent, peu importe mon statut de connexion.

Outlook finit par m'indiquer que l'un de mes fichiers personnels Outlook est endommagé.

Voici la solution à mon problème :

- je me rends dans C:\Program Files (x86)\Microsoft Office\Office12

- je lance SCANPST.EXE

image

- je sélectionne le fichier signalé endommagé dans C:\Users\<moi>\AppData\Local\Microsoft\Outlook

- après le scan, je choisi de Réparer

- je redémarre Outlook, impeccable, tout est là... ouf ;)

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Microsoft Learning propose à l'adresse suivante un "Learning Snack" pour comprendre l'environnement Silverlight :

http://www.microsoft.com/learning/_silverlight/learningsnacks/silverlight/snack01/Default.html (en anglais)

Non technique, c'est très instructif pour faire le point sur votre compréhension de SL 1.0 / 2.0, de l'architecture, des outils, de la runtime, ...

A visionner ;)

A noter que la liste complète des Learning Snacks se trouve à cette adresse : http://www.microsoft.com/learning/snacks/default.mspx

EDIT : finalement après réflexion, autant aller directement sur la page d'accueil juste au-dessus et tous les regarder Wink

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Bonjour,

Ceci est mon premier post (d'une longue série, j'espère) de mon nouveau blog : blackcurl.com !

Ainsi, j'en profite pour faire un petit retour sur mon installation de BlogEngine .NET 1.3.1 sur mon nouvel hébergement (chez Ikoula).

Ça c'est globalement bien passé sauf un petit hic rencontré à cause de notre ami IIS 7.

Lors de ma tentative initiale de récupérer simplement depuis le CodePlex de BlogEngine une archive comportant les fichiers à uploader via FTP dans mon répertoire ~/blog/ (créé en tant qu'application Web dans la console de gestion Plesk rubrique Répertoires Web de mon hébergeur), je ne m'attendais pas forcément à la belle erreur 500 Internal Server Error que j'ai obtenu.

Même après des vérifications dans la console de l'hébergeur de différents éléments comme la version du .NET framework. Rien à faire : 500 et c'est tout, sans détail :(.

J'ai alors contacté, sans grand espoir immédiat, le support technique. Belle surprise lorsque je reçois une réponse à 22h30 (hé oui... service par email 24/7 ! ; coup de chapeau, une réponse instantanée à cette heure tardive ça pardonne presque un truc qui ne marche pas). Et là on m'indique de l'on a basculé ma gestion ASP.NET de IIS 7 en mode classique (en lieu et place du nouveau mode intégré par défaut) pour résoudre le problème. Et là toute mon erreur 500 s'éclaire : c'est bien évident que le web.config de BE.NET tout beau avec ses rubriques <httpModules> et <httpHandlers> dans <system.web> ne pouvait que produire ce genre de comportement.

Les curieux iront lire http://learn.iis.net/page.aspx/243/aspnet-integration-with-iis7 pour tout savoir sur l'ASP.NET sur IIS 7 et les 2 modes possibles.

Petit extrait sur les causes principales de problème de migration de la gestion classique d'ASP.NET vers la gestion intégrée :

The application web.config file defines <httpModules> configuration. 
The application loads new ASP.NET modules, or removes existing ones. 
In Integrated mode, ASP.NET modules are specified together with native modules in the unified <system.webServer>/<modules> configuration section. 
The ASP.NET modules specified in the <system.web>/<httpModules> configuration section must be moved to the new configuration section in order to take effect. Subsequently, new ASP.NET modules must be added directly to the unified <modules> section. 
The application web.config file defines <httpHandlers> configuration. 
The application uses custom handler mappings for some content types. 
In Integrated mode, the ASP.NET handler mappings must be specified in the unified <system.webServer>/<handlers> configuration section in order to take effect. Subsequently, new ASP.NET handler mappings must be added directly to the unified <handlers> section. 
The section replaces both the ASP.NET <httpHandlers> configuration AND the IIS 7.0 scriptmaps configuration, both of which previously had to be configured in order to set up an ASP.NET handler mapping. 
The application web.config file defines <identity impersonate="true" /> configuration. 
The application impersonates client credentials (most common with intranet applications). In Integrated mode, client impersonation is not available in some early request processing stages. In the majority of cases, this is not a problem and you can turn off the error – otherwise, you must configure this application to run using the Classic ASP.NET mode. 

J'ai alors pris la décision de faire marcher le fichier fourni avec le nouveau mode intégré de IIS7 et demandé à rester sur le mode par défaut.

Pour cela, j'ai publié via Visual Studio 2008 le site web sous le Default Web Site sur mon IIS 7 local sous Vista et procédé à la demande de migration grâce à APPCMD et la commande

%windir%\system32\inetsrv\APPCMD.EXE migrate config "Default Web Site/"

Et j'ai obtenu un nouveau fichier web.config compatible.

Ci-dessous le contenu de la nouvelle rubrique <system.webServer> générée (à placer dans <configuration>) :

<system.webServer> 
    <modules> 
      <remove name="Profile" /> 
      <remove name="AnonymousIdentification" /> 
      <add name="WwwSubDomainModule" type="BlogEngine.Core.Web.HttpModules.WwwSubDomainModule, BlogEngine.Core" preCondition="managedHandler" /> 
      <add name="UrlRewrite" type="BlogEngine.Core.Web.HttpModules.UrlRewrite, BlogEngine.Core" preCondition="managedHandler" /> 
      <add name="CompressionModule" type="BlogEngine.Core.Web.HttpModules.CompressionModule, BlogEngine.Core" preCondition="managedHandler" /> 
      <add name="ReferrerModule" type="BlogEngine.Core.Web.HttpModules.ReferrerModule, BlogEngine.Core" preCondition="managedHandler" /> 
    </modules> 
    <handlers> 
      <add name="blogml.axd_*" path="blogml.axd" verb="*" type="BlogEngine.Core.Web.HttpHandlers.BlogMLExportHandler, BlogEngine.Core" preCondition="integratedMode,runtimeVersionv2.0" /> 
      <add name="monster.axd_*" path="monster.axd" verb="*" type="BlogEngine.Core.Web.HttpHandlers.MonsterHandler, BlogEngine.Core" preCondition="integratedMode,runtimeVersionv2.0" /> 
      <add name="opml.axd_*" path="opml.axd" verb="*" type="BlogEngine.Core.Web.HttpHandlers.OpmlHandler, BlogEngine.Core" preCondition="integratedMode,runtimeVersionv2.0" /> 
      <add name="rating.axd_*" path="rating.axd" verb="*" type="BlogEngine.Core.Web.HttpHandlers.RatingHandler, BlogEngine.Core" preCondition="integratedMode,runtimeVersionv2.0" /> 
      <add name="js.axd_*" path="js.axd" verb="*" type="BlogEngine.Core.Web.HttpHandlers.JavaScriptHandler, BlogEngine.Core" preCondition="integratedMode,runtimeVersionv2.0" /> 
      <add name="css.axd_*" path="css.axd" verb="*" type="BlogEngine.Core.Web.HttpHandlers.CssHandler, BlogEngine.Core" preCondition="integratedMode,runtimeVersionv2.0" /> 
      <add name="rsd.axd_*" path="rsd.axd" verb="*" type="BlogEngine.Core.Web.HttpHandlers.RsdHandler, BlogEngine.Core" preCondition="integratedMode,runtimeVersionv2.0" /> 
      <add name="metaweblog.axd_*" path="metaweblog.axd" verb="*" type="BlogEngine.Core.API.MetaWeblog.MetaWeblogHandler, BlogEngine.Core" preCondition="integratedMode,runtimeVersionv2.0" /> 
      <add name="opensearch.axd_*" path="opensearch.axd" verb="*" type="BlogEngine.Core.Web.HttpHandlers.OpenSearchHandler, BlogEngine.Core" preCondition="integratedMode,runtimeVersionv2.0" /> 
      <add name="pingback.axd_*" path="pingback.axd" verb="*" type="BlogEngine.Core.Web.HttpHandlers.PingbackHandler, BlogEngine.Core" preCondition="integratedMode,runtimeVersionv2.0" /> 
      <add name="trackback.axd_*" path="trackback.axd" verb="*" type="BlogEngine.Core.Web.HttpHandlers.TrackbackHandler, BlogEngine.Core" preCondition="integratedMode,runtimeVersionv2.0" /> 
      <add name="sitemap.axd_*" path="sitemap.axd" verb="*" type="BlogEngine.Core.Web.HttpHandlers.SiteMap, BlogEngine.Core" preCondition="integratedMode,runtimeVersionv2.0" /> 
      <add name="syndication.axd_*" path="syndication.axd" verb="*" type="BlogEngine.Core.Web.HttpHandlers.SyndicationHandler, BlogEngine.Core" preCondition="integratedMode,runtimeVersionv2.0" /> 
      <add name="image.axd_*" path="image.axd" verb="*" type="BlogEngine.Core.Web.HttpHandlers.ImageHandler, BlogEngine.Core" preCondition="integratedMode,runtimeVersionv2.0" /> 
      <add name="file.axd_*" path="file.axd" verb="*" type="BlogEngine.Core.Web.HttpHandlers.FileHandler, BlogEngine.Core" preCondition="integratedMode,runtimeVersionv2.0" /> 
    </handlers> 
    <validation validateIntegratedModeConfiguration="false" /> 
  </system.webServer> 

N'hésitez donc pas à récupérer directement ces lignes et à les ajouter à votre web.config pour faire fonctionner BE.NET directement sur votre hébergement IIS 7.

A+

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5