Retour sur le Green Challenge
Il avait pour objectif de faire émerger des patterns de développement permettant d’améliorer la sobriété des logiciels, ou “Green Patterns”.
L’édition USI Paris 2010, qui a eu lieu au Pavillon d’Armenonville les 1er et 2 juillet derniers, est certes terminée….
Mais les premiers Webcasts sont enfin disponibles !
Participants USI et lecteurs du blog OCTO vous pouvez maintenant revivre les sessions et les keynotes USI en allant sur le site de l’événement : www.universite-du-si.com
Afin de tester nos développements iPhone nous utilisons largement les frameworks Google-Toolbox-for-Mac et OCMock (cf Tests unitaires et tests d’interface sur iPhone : État des lieux)
Après la mise à jour du SDK4 et le passage à Xcode 3.2.3 nous avons eu une désagréable surprise : nos frameworks de tests ne compilaient plus et jusqu’à aujourd’hui on trouve très peu d’information sur la façon de régler ce problème.
Voici comment nous nous y sommes pris :
(Lire la suite…)
Les grands acteurs de l’Internet font souvent le “pari de la confiance” en proposant des API ouvertes, accessibles depuis le Web. Ces APIs permettent à d’autres acteurs, entreprises ou développeurs indépendants, d’innover en les exploitant, et d’inventer de nouveaux modèles économiques.
On peut citer en exemple les plateformes suivantes : Google Maps API, Facebook Graph API, SalesForce AppExchange, Twitter API, etc. Et plus près de nous, il existe des écosystèmes issus d’acteurs français : Mappy API, Netvibes UWA, Nabaztag API, etc.
Depuis les 5 dernières années, on assiste à une intensification de l’usage des Nouvelles Technologies de l’Information et de la Communication (NTIC) dans le monde professionnel : téléphonie mobile, courrier électronique, plateformes collaboratives, partage documentaire en ligne, solutions de messageries instantanées, Accès internet mobile, voix sur IP, etc. Tout cela a été possible grâce à la généralisation et la banalisation de la connexion internet et à la standardisation et la modernisation des réseaux filaires et sans fil (wifi, Bluetooth, connexion internet 3G, etc.).
Conscientes de l’importance de ces technologies et outils, la plupart des entreprises se sont pressées à les adopter, chacune à son rythme, et ses besoins, offrant aux collaborateurs de nouveaux canaux de communication et d’échanges. L’arrivée de solutions mobiles et de systèmes d’exploitation à interfaces ergonomiques (iPhone, Ipad, Android, Windows Mobile, etc.) dote les technologies de l’information et de la communication d’un bel avenir.
Par ailleurs, les NTIC constituent un facteur d’évolution des rapports sociaux, des emplois et des métiers. Elles accompagnent une série de transformations concernant la stratégie de l’entreprise, l’organisation du travail, les formes de management, la concertation et la négociation.
Cet article porte sur le positionnement des NTIC, ses apports et ses impacts sur l’entreprise et sur la vie quotidienne des collaborateurs et l’environnement de travail. Il donne à nos décideurs (DSI, R&D, stratégie, marketing, etc) une première grille de lecture leur permettant de viser la bonne politique NTIC à adopter en adéquation avec l’histoire et la culture de l’entreprise et un aperçu des challenges à relever aujourd’hui et demain. (Lire la suite…)
Récemment, j’ai été amené à participer à plusieurs études d’évolution de SI. Ce qui m’a personnellement frappé dans ces différentes missions c’est l’image commune qu’utilisaient nos interlocuteurs pour décrire leur SI idéal. Cette image est celle de la boîte de « LEGO » ! En effet, pour rationaliser les coûts et diminuer les délais des projets, ils souhaitaient avoir des briques applicatives génériques qu’ils pourraient combiner à souhait comme les briques de « LEGO ». Je me suis alors interrogé sur les raisons qui font que ces personnes, d’horizons différents, partagent cet idéal commun. (Lire la suite…)
Nous avons déterminé dans la première partie que les nombres à virgule flottante sont à proscrire.
Nos armes seront donc le BigDecimal en Java, le type decimal en .Net. Malheureusement, d’autres pièges pavent notre chemin.
Notes:
xs:decimal sera sous forme texte (ie. « 123.456″) et sera donc précis et mappé sans problème vers un BigDecimal (Java) ou decimal (.Net).Avec la croissance de la plateforme Android et l’annonce de Google sur le nombre de terminaux activés chaque jour, le nombre de projets Android a de bonnes chances de progresser également. Avec cette augmentation, la question de l’industrialisation des développements se pose donc. Pourquoi industrialiser ? Comment ? Des questions auxquelles nous allons répondre dans ce billet…
(Lire la suite…)
Après la démocratisation d’Ajax (ie. requêtes HTTP asynchrones en Javascript), plusieurs techniques ont été élaborées afin de permettre le push de données depuis le serveur toujours en utilisant HTTP. C’est grâce à ces techniques que l’on reçoit nos mails dans une application web sans avoir à cliquer sur le bouton « Refresh », que les applications de chat sont possibles sans plugin tierce (Flash, Java, …), etc. Le W3C et l’IETF ont spécifié une API Javascript et un protocole nommé Websocket. Ce protocole connecté est adapté à l’envoi de données dans les deux sens et évite de détourner HTTP de son usage initial (ie. un protocole déconnecté sans état).
(Lire la suite…)
J’inaugure aujourd’hui une nouvelle chronique que j’ai appelée problèmes courants. J’y traiterai l’une après l’autre les erreurs classiques rencontrées à travers mes années d’informatique.
Ce premier article de la série visera à démystifier les calculs mathématiques et à établir de bonnes pratiques au sein d’une application d’entreprise. Par application d’entreprise, nous entendons une application gérant des montants d’argent, des prix, des quantités. Il a été coupé en deux, la première partie expliquant le problème, la deuxième montrant comment le gérer en Java et .Net.
Bill travaille sur un logiciel de paiement de commissions. Il doit ajouter une commission de 1,2$. Il se fait donc une petite méthode faisant cette opération et le petit test unitaire qui va avec.
@Test
public void testAddCommission() {
double actual = addCommission(1000000.1);
assertEquals(1000001.3, actual, 0);
}
public static double addCommission(double nominal) {
return nominal + 1.2f;
}
java.lang.AssertionError: expected:<1000001.3> but was:<1000001.3000000477>
« Ah ben zut alors! C’est pas le bon résultat ».
Qu’est-ce qui se passe?
(Lire la suite…)