[Retour d'expérience] Nantes en Direct pour Android

Logo Nantes en Direct Contrairement à la version pour Windows Phone qui est en XAML (langage natif), Nantes en Direct pour Android est une application HTML.
Avec Android Studio, j’ai créé une application quasi-vide, avec une seule activité qui implémente une WebView.
L’application HTML est quant à elle hébergée sur Azure.
Exigences de développement
« Nantes en Direct » est une application simple : aggréger l’actualité nantaise.
Quand des personnes installent un produit offrant un service simple, elles s’attendent à que ce prédicat s’applique à tout : simplicité de compréhension, d’utilisation (ergonomie) et simplicité d’éxecution (performances).
Au final, mon exigence principale est que l’application doit aussi bien tourner sur un appareil Android bas de gamme qu’un Android performant de dernière génération.
En plus de cela, il faut aussi économiser sur la consommation de données.
Ergonomie
Infographiste, c’est un métier, et ce n’est pas le mien :/ Mais je voulais que Nantes en Direct propose une ergonomie simple et directement compréhensible.
Chaque article est composé de 7 éléments ou informations :

  • Le titre
  • L’origine
  • Le type (fait divers, politique, circulation…)
  • Date de publication
  • Lieu
  • Lien
  • Photo

Pas facile de loger toutes ces informations dans un espace restreint !
Depuis la première version, l’agencement n’a pas trop changé :
Article dans Nantes en Direct
De plus, il y a 3 grandes catégories d’article : Actualité, Sorties et Sport.
Hérité de Windows Phone, j’ai conservé la présentation en pages qui coulissent horizontalement.
Peut-être des expert en ergonomie auraient des remarques à faire, je suis ouvert !
Performances
Déjà pour débugger tout en s’assurer que l’appli fonctionnera sur des appareils pas chers, il faut… acheter un téléphone pourri ! J’ai choisi un Logicom à 50€ à la FNAC, avec une résolution de 480 * 800 et des spécificité au ras des pâquerettes.
Données
Soyons léger ! La liste des articles est générée dans le cloud sur un serveur Azure qui s’occupe de parcourir les sites d’information.
L’application mobile se contente simplement de lire le fichier XML qui en résulte.
What ? XML et pas JSON ?
Et oui, le XML hérite de la version WIndows Phone. Le framework .NET était à l’époque beaucoup à l’aise avec ce format que le jeune et arrogant JSON.
Prochainement je migrerai en JSON, notamment pour économiser encore plus sur la consommation de données.
Design plat et adaptif
Autre légereté : Le peu d’utilisation d’image…. Merci le flat design !
La aussi on gagne sur la conso data.
ned_capture
Combo HTML 5/CSS/jQuery
Enfin le développement web, tout ce qu’il y a de plus classique : HTML/CSS pour mettre en forme tout cela.
jQuery charge les données et adapte la taille des éléments pour être responsive design.
Je n’exclus pas d’utiliser bootstrap dans une version prochaine, histoire d’apporter un peu d’élégance à peu de frais.
Utilisation
Disponible au public depuis 3 mois, l’application a été téléchargée 269 fois, avec un taux de conservation de 77% (personne qui gardent l’application sans la désinstaller.)
On est loin des 2100 de Windows Phone ! Mais j’espère arriver rapidement à 5000 utilisateurs en tout sur Nantes.
Nantes en Direct pour Android
Nantes en Direct pour Windows Phone

SharePoint 2013 : Load balancer could not find the endpoint for… (SPEndpointAddressNotFoundException)

Stupeur et tremblement dans les ULS…
sharepoint2013
This kind of warning can occur with any service application. It means that the application (under IIS) is not running or does not exist !
How can I check ?
When you create a new service application, you should always check that it is actually running under IIS :

  • Get the Service Application ID (SharePoint 2013 Management Shell) :
  • (Get-SPServiceApplication -name "WorkManagementServiceApp").Id
    SPEndpointAddressNotFoundException_Capture_1

  • Launch IIS Manager (inetmgr.exe) , and check if the web application exists under « SharePoint Web Services » :
  • SPEndpointAddressNotFoundException_Capture_2

  • Also check if the associated application pool is running

What Happened ?
If you created your service application with Powershell, there is a chance that it has not been provisioned.
The command « Get-SPServiceApplication » might return something, but there’s no app in IIS ! This article explains it with more details.
See that example that creates a Work Management Service :

# Get the App Pool Account :
$appPoolAccount = Get-SPManagedAccount "DOMAINSPServices"
New-SPServiceApplicationPool -Name "WorkManagementProxyApplicationPool" -Account $appPoolAccount
$appPool = Get-SPServiceApplicationPool "WorkManagementProxyApplicationPool"
# Create the Service Application :
New-SPWorkManagementServiceApplication -Name "WorkManagementService" -ApplicationPool $appPool
$serviceApp = Get-SPServiceApplication -name "WorkManagementService"
# Create Proxy
New-SPWorkManagementServiceApplicationProxy -name "WorkManagementServiceProxy" -ServiceApplication $serviceApp -DefaultProxyGroup

Solution
Is that enough ? No, it isn’t. You should provision it :

$serviceApp.Provision()

A few minutes later, you should see the web application and the application pool runnning in IIS.

Which DLL are used by a process ?

MS-DOS_iconSometimes, you need to move or update a DLL file, but you receive an error message saying : « Access denied ».
It’s not always a file access right problem.
Mayby this library is currently used by a process. To found out which one, just type use the tasklist command in a DOS / Powershell prompt :

tasklist /m your_dll_file.dll

Simple !
Furthermore, if you want to know which regular file (not DLL) is being used by a program, you can download and run process explorer from Windows Sysinternals website. Then « Find > Find Handle or DLL ».