Catégorie : traductions

John Osher : les startup qui coulent : 17 erreurs classiques

John Osher a développé des centaines de produits consommateurs.

Parmi ceux-ci on y trouve une brosse à dent électrique qui est devenue la plus grosse vente de brosse à dents de toute l’Amérique en quinze mois. Il a aussi crée quelques compagnies qui ont bien réussi, par exemple les jouets Cap. Le total des ventes annuelles s’élevait à 125 millions de dollars par an. C’est à ce moment qu’il a vendu la compagnie à Hasbro Inc. en 1997. Mais sa contribution la plus durable a sûrement été les quelques mots qu’il a jeté sur un bout de papier.

Je voulais faire une compagnie qui ne ferait aucune de ces erreurs

« Après avoir vendu l’entreprise à Hasbro, j’ai décidé de faire une liste de tout ce que j’avais mal fait – et d’autres entrepreneurs étaient eux aussi en train de faire ce genre d’erreurs », explique l’homme de 57 ans. « Je voulais faire une compagnie qui ne ferait aucune de ces erreurs. Je voulais voir si j’arrivais à monter la compagnie parfaite ».

475 millions de dollars

Il en ressortit une liste informelle des 16 erreurs que les Start-Up font, qui a été étendue à 17. Cette liste est actuellement utilisée dans les écoles de commerce de Harvard Business School pour les études de cas, et a été citée dans beaucoup de publications. Elle est devenue une partie de ce qu’explique notre homme lors de ses nombreuses conférences destinées aux nouveaux entrepreneurs. Il a utilisé cette liste lorsqu’il a sorti la brosse à dent électrique en 1999, pour 5 dollars la brosse, qui est rapidement devenue la brosse la plus vendue. En 2001, Procter & Gamble ont racheté sa compagnie pour la modique somme de 475 millions de dollars.

Nous avons fait le business parfait

« Je ne pensais pas que ça allait se passer comme ça », confie Osher. « Cela ne se reproduira certainement jamais. Mais nous avons fait le business parfait, du début jusqu’à la revente à une autre compagnie. ». Depuis, Osher a tout de même crée un autre produit, un nettoyeur électrique de brosse à dent qu’il a aussi revendu à Procter & Gamble. Et aujourd’hui il développe un produit cosmétique dont il parle peu, mais toujours en suivant ces fameuses directives. Voici les 17 erreurs à éviter.

  1. Échouer parce qu’on ne passe pas assez de temps pour voir si l’idée de business qu’on a est vraiment viable. « C’est vraiment l’erreur la plus importante de toutes. Il disent tous que 9 entrepreneurs sur 10 échouent parce qu’ils ont manqué de capitaux ou embauché les mauvaises personnes. Je dirai que 9 personnes sur 10 échouent parce que leur concept d’origine n’est pas bon. Ils veulent tellement faire du business qu’ils ne font jamais le travail qu’il faut pour prendre de l’avance, et tout est voué à l’échec dès le début. Ils ont beau être très talentueux, et faire tout ce qu’il faudrait comme il faut, ils échouent quand même pour la simple raison que les idées qu’ils ont ne sont pas viables ».
  2. Mauvais calcul de la taille du marché visé, du temps nécessaire, de la facilité d’entrée dans ce marché et de son partage potentiel. « Beaucoup d’entrepreneurs sont très excités par leurs idées, et ne cherchent pas la réalité du marché ni combien de clients leurs idées vont générer. Ils intègrent des projections financières dans leur présentation pour convaincre des investisseurs. Ils disent, par exemple, que « la taille du marché est de 50 millions de gens qui pourraient utiliser ce produit, et si ils en vendent seulement 2% à ces gens, ils en vendront un million ». Seulement 2% c’est gigantesque. La plupart des produits se vendent à bien moins que 1%.
  3. Sous estimer les besoins financiers et le timing. « Ils basent leurs besoins financiers en fonction de l’erreur (1), et ils font l’engagement de tant de place pour le bureau, de tant d’ordinateurs ici, d’embaucher un directeur marketing là, un vice président ici, etc. Avant même qu’ils ne le sachent, en étant basé sur des suppositions de ventes mal estimées, ils ont crée des coûts qui vont nécessiter d’atteindre les objectifs même de ces estimations. Au final, ils n’ont plus d’argent. »
  4. Sur-projeter le volume de ventes et le timing. « Au départ ils ont déjà mal calculé la taille du marché. Maintenant ils surdimensionnent la part de marché qu’ils vont occuper. Ils disent souvent, par exemple : « Il y a 200 millions de maisons, et je dois vendre [nombre] x nombre d’entre elles. ». Si vous regardez de plus près et que vous faites une découpe correcte, il y a en réalité un nombre bien moins important de prospects potentiels. Cela rend leur projections de ventes complètement irréalisables. »
  5. Faire des projections de coût trop basses. « Leurs projections des coûts sont toujours trop basses. En partie parce qu’ils supposent qu’ils vont vendre beaucoup plus que ce qu’il arrivera en réalité. Il y a aussi énormément d’impondérables qui surgissent et rendent les coûts plus élevés que ceux prévus. Par là même, chose encore plus ennuyeuse, leur marge s’en retrouvera réduite d’autant. »
  6. Embaucher trop de gens et passer trop de temps dans les bureaux, et trop de laisser-aller. « Maintenant vous vendez moins, ça vous coûte plus cher que prévu, et il y a bien trop de gens qui n’ont plus rien à faire. Ce sont les choses que vous voyez tous les jours dans les compagnies qui coulent. Et elles sont toutes nées de la même façon : l’erreur (1) : ne pas avoir correctement cherché la viabilité et la faisabilité de la chose. »
  7. Ne pas avoir de plan d’urgence si vous n’atteignez pas vos objectifs. « Même si vous ne vous êtes pas trompé dans vos estimations de départ, il y a toujours des choses inattendues qui arrivent lorsque vous commencez un nouveau business. Vos idées de vente ne seront peut-être pas bonnes ; il peut y avoir des grèves soudaines, etc. Ce ne sont pas les résultats d’une mauvaise planification, mais cela arrive. La plupart du temps, les entrepreneurs pensent que parce qu’ils ont vraiment besoin d’une chose, eh bien elle va arriver. Ils n’ont jamais de plan d’urgence au cas où ces choses n’arriveraient pas dans les délais ou les quantités prévus. »
  8. Amener des partenaires inutiles, ou, tout du moins, pas nécessaires. « Vous avez besoin de certains partenaires, c’est évident. Par exemple, vous avez souvent besoin d’argent, vous aurez donc besoin de partenaires financiers. Mais beaucoup trop souvent, le type qui a la bonne idée se ramène avec tous ses amis, et collègues, et essaie d’en faire des partenaires. Ces gens là n’amènent aucun avantage stratégique et ne garantissent pas, de plus, la pleine possession du produit. A l’inverse, ils vont tous coûter 0,25 € par produit à la compagnie. C’est le genre de chose qu’il faut absolument éviter : c’est une erreur. Le titre de partenaire, c’est toujours quelque chose qui se gagne, et qui se prouve. »
  9. Embaucher plus pour le côté pratique que pour les compétences. « Dans mes deux premières tentatives de business, j’ai embauché de la famille proche. C’était facile, mais c’était une erreur. Ne faites pas ça. Dans la plupart des cas vous verrez que ce ne sont pas les personnes réellement adaptées [pour le boulot donné]. Et c’est très difficile de licencier des gens, d’autant plus s’ils vous sont proches. Il ne faut pas hésiter à passer du temps à chercher les personnes qui ont réellement les compétences requises. Vous avez bien plus besoin d’une personne ultra-compétente, qui peut même réussir à porter différentes casquettes dans son travail. Il n’y a rien de plus déplaisant et déprimant que de licencier des personnes qui n’arrivent pas à s’en sortir avec le travail que vous donnez. »
  10. Négliger de gérer la compagnie comme étant un « tout ». « Cela arrive tout le temps. Ils passent la moitié de leur temps sur ce qui représente 5% de leur business. Vous devez avoir une vue globale de l’intégralité de votre compagnie. Mais bien trop souvent, ils perdent cette vue. Ils s’impliquent dans une partie de l’entreprise, et ne gèrent plus cette dernière dans son intégralité. Si je fais ce produit ou si j’en fais un autre, si j’embauche quelqu’un, ou encore autre chose, j’essaie de m’imaginer ce que tout ça va donner sur du court et du long terme dans mon entreprise. Il faut tout le temps essayer d’avoir cette image. »
  11. Accepter l’idée que « ce n’est pas possible » trop facilement, au lieu de chercher une solution. « J’avais un ingénieur qui était très bon, mais pour chaque jouet que nous développions, il aurait dit « :on ne peut pas le faire ainsi ». Il fallait vraiment que je fasse attention à ne pas accepter ce genre de réponse immédiatement. Il fallait que je voie plus loin. Si vous êtes un entrepreneur, vous allez arriver sur un terrain inconnu. Plein de personnes vont vous dire que « ce n’est pas possible ». Vous ne devez pas accepter une telle réponse aussi facilement. Un bon entrepreneur cherchera une solution. »
  12. Se fixer uniquement sur le volume des ventes et la taille de la compagnie au lieu du profit lui-même. « Une part trop grande de votre gestion est basée sur le volume et la taille. Donc plein d’entrepreneurs veulent pouvoir dire « J’ai une compagnie qui a telle taille, avec tant de personnes, avec une superficie de tant et je fais tant de ventes ». C’est toujours plus facile de mettre en valeur à quelle vitesse vous avez grandi, et le reste, plutôt que de mettre en valeur le profit de la compagnie. Les banquiers et le investisseurs n’aiment pas du tout ça. Les entrepreneurs sont tellement dans leurs idées de création et de construction qu’ils oublient d’apprendre à être un bon gestionnaire (businesspeople). »
  13. Rechercher la confirmation de vos actions plutôt que de chercher la vérité. « Cela arrive souvent : vous voulez faire quelque chose, alors vous en parlez aux gens qui travaillent pour vous. A votre famille et à vos amis. En fait vous recherchez uniquement une confirmation ; vous ne cherchez pas la réalité. Vous recherchez quelqu’un qui va vous dire que vous avez raison. Mais la réalité arrive tôt ou tard. Donc on teste nos produits, et on écoute ce que les testeurs ont à dire. Il faut donner plus de valeur à la vérité qu’aux gens qui disent que ce qu’on fait est bien. »
  14. Manque de clarté/simplicité dans la vision. « Plein d’entrepreneurs vont dans beaucoup trop de directions à la fois et finissent par ne jamais rien faire de bien. Plutôt que de se concentrer à faire quelque chose de correct pour vendre un maximum sur la portion de marché qui rapporte le plus, ils divisent l’attention des employés et leur temps en essayant de faire trop de choses à la fois. Leur produit principal s’en retrouve affecté : il n’est plus correctement produit, parce qu’ils ont trop de choses différentes à faire. Ils ont une idée et ils disent qu’ils vont la vendre à Wal-Mart. Puis une autre idée. Qu’ils vont vendre à Home Shopping Network. Etc. etc. »
  15. Manquer de clairvoyance sur les objectifs à long terme et commerciaux. « Vous devriez avoir une idée de ce qu’est votre objectif à long terme. Cela ne signifie pas que cela ne changera pas, mais lorsque vous encochez une flèche, il vous faut avoir une cible précise. Ce principe ressort souvent lorsque les gens demandent : ‘Comment puis-je choisir un produit ?’ La réponse dépend de ce que vous essayez de faire. Si vous essayez de créer une société d’un milliard de dollars avec ce produit, il risque de ne pas avoir la moindre chance. Mais si vous essayez de faire une entreprise à 5 millions, cela peut fonctionner. Ou si vous essayez de créer une société [où] les membres de la famille peuvent être utilisés, cela peut fonctionner. La clarté de votre objectif de business est très important mais ne fait souvent pas vraiment partie du processus de pensée. »
  16. Manque de mise au point et d’identité. « Cela a été écrit du point de vue de la construction de l’entreprise comme étant une entité précieuse. La société elle-même est aussi un produit. Trop d’entreprises essaient d’aller après trop d’objectifs à la fois et se retrouvent avec un pot-pourri plutôt que d’une entité commerciale ciblée, avec une identité. Lorsque vous essayez de faire des affaires, il est très important de maintenir une orientation et une identité. Ne la laissez pas devenir un pot-pourri, ou elle perd son pouvoir.

    Par exemple, vous pourriez penser ‘Nous vendons déjà à Kmart, nous pourrions tout aussi bien faire un jouet parce Kmart achète des jouets.’. Si vous faites cela, vous affaiblissez votre entreprise. Une entreprise a besoin de se concentrer sur ce qu’elle est. Sa puissance est construite à partir de cela. »

  17. Oubli d’une stratégie de sortie. « Ayez un plan de sortie, et créez votre business pour réussir ce plan. Par exemple, je pense que je pourrais développer ma nouvelle entreprise pendant deux ans, puis en sortir. Je pense qu’il y a une opportunité pour faire une énorme somme d’argent sur deux ans, mais je ne suis pas sûr que ce soit suffisamment protégé pour empêcher la compétition de s’installer. Je suis ainsi dans une stratégie de sortie dans les deux ans, puis on tire le rideau. Je ne vais pas signer des baux à long terme, et après la première année, nous allons commencer à regarder de très près le marché et les stocks. En parallèle, je vais garder l’option de revente au cas où je ne peux pas obtenir quelque chose de plus exclusif. Cela signifie que je ne vais pas signer des accords internationaux qui tueraient toute possibilité de le vendre à une multinationale. Je ferai en sorte que le travail de brevet soit fait correctement. Et je vais essayer de faire en sorte que la fabrication soit aux normes de la multinationale à laquelle que je pourrais essayer de revendre.
    Une autre stratégie de sortie est de donner votre compagnie à vos enfants. La chose la plus importante à faire est de construire une compagnie qui a prend de la valeur et génère du profit de manière à avoir toutes les options qui s’offrent à vous : la garder, la vendre, lever des fonds publiques, lever des fonds privés, etc. Un business peut n’être qu’un seul produit. »

PacktLib jQuery for Designers Beginner’s Guide est sorti !

Le livre que j’ai revu – et critiqué est sorti :

PacktLib jQuery for designers

Avec mon petit CV de technical reviewer :

PacktLib jQuery for designers Olivier Pons

Olivier Pons is a developer who’s been building websites since 1997. He’s a teacher at IngeSup (École Supérieure d’Ingénierie Informatique; for more information visit https://www.ingesup.com/ and https://www.y-nov.com), at the University of Sciences (IUT) in Aix-en-Provence/France, and École d’Ingénieurs des Mines de Gardanne, where he teaches MVC fundamentals, Symfony, Php, HTML, CSS, jQuery/jQuery Mobile, Linux basics, and advanced VIM techniques. He has already done some technical reviews, including the books Ext JS 4 First Look, Packt Publishing and jQuery Mobile Web Delopment Essentials, Packt Publishing, among others. In 2013, he left a full-time job as a Delphi and PHP developer to concentrate on his own company, HQF Development (https://hqf.fr). He currently runs a number of websites, including https://www.livrepizzas.fr, https://www.papdevis.fr, and https://olivierpons.fr, his own web development blog. He works as a consultant, teacher, project manager, and sometimes a developer.

Pourquoi les formats de fichiers de Microsoft Office sont si compliqués ? (Et quelques moyens de contourner les problèmes)

Cet article est apparu sur la page principale de Joel on Software le mardi 19 février 2008.

La semaine dernière Microsoft a publié le format des fichiers binaires d’Office. Ces formats apparaissent à première vue à la limite de l’insulte. Rien que le format de fichier pour Excel 97-2003 est un fichier PDF de 349 pages ! Attendez, ce n’est pas tout ! Il y a, dans ce document, quelques commentaires intéréssants :

Chaque collection de tableaux Excel (workbook) est stocké dans un fichier qui est une « compilation d’objets ».

Oui, vous voyez, les fichiers Excel 97-2003 sont des « compositions » de documents OLE, qui sont principalement plusieurs fichiers réunis en un seul. C’est tellement compliqué qu’il vous faut lire au minimum 9 pages de spécifications pour réussir à comprendre ça. Et ces « specs » ressemblent plus à des structures en C (« struct« ) que ce à quoi on s’attend normalement quand on lit des spécifications. C’est en réalité un système complet hiérarchique de fichiers.

Si vous avez commencé à lire ces documents avec l’espoir de passer le week-end à écrire rapidos un code qui importe des documents Word dans votre système de blog, ou qui crée des tableaux Internet qui contiennent vos données de comptes bancaires, formattés comme les feuilles Excel de votre suivi personnel, la complexité et la longueur des spécifications vous ont très certainement guéri de ce violent désir. Et vraisemblablement très rapidement. D’ailleurs un développeur normal concluerait que les formats binaires des applications Office :

  • sont volontairement obscurcis ;
  • sont le produit d’un cerveau démentiel ;
  • ont été crée par des développeurs anormalement incompétents ;
  • et sont impossibles à lire ou écrire correctement.

Vous auriez tort sur tous les points. En creusant un peu, je vais vous montrer comment ces formats de fichier sont devenus incroyablement compliqués, pourquoi cela ne reflète pas l’idée qu’on imagine de la « mauvaise programmation made in Microsoft », et ce que vous pouvez faire pour contourner ces problèmes.

La première chose à intégrer est que les formats binaires ont été conçus avec des objectifs complètements différents de ce qu’on imagine aujourd’hui (HTML). Voici ces objectifs, vous allez ainsi mieux comprendre pourquoi les spécifications sont aussi longues :

  • Ils ont été spécifiquement conçus pour être rapides sur les vieux ordinateurs. Dans les premières versions d’Excel pour Windows, 1 méga-octets de RAM était une taille normale de mémoire vive, et un PC 80386 à 20 MHz devait faire fonctionner Excel de manière confortable. Il y a donc plein d’optimisations dans les formats de ces fichiers qui ont pour objectif de les ouvrir et de les fermer beaucoup plus rapidement.
  • Ce sont des formats binaires, donc charger un enregistrement n’est qu’une question de copier directement (« blit ») une séquence d’octets, du disque dur vers la mémoire vive, où vous finissez immédiatement avec un structure de données de type C (« struct« ) qui est utilisable. Il n’y a pas besoin d’analyser ou de parcourir quoi que ce soit lors du chargement. L’analyse syntaxique et le parcours d’un enregistrement sont incomparablement, énormément, atrocement plus longs qu’un simple « blit ».
  • Le format de fichier est un peu tordu là où c’était nécessaire, là où on fait toutes les opérations habituelles, et cela à des fins de rapidité. Par exemple, Excel 95 et 97 ont quelque chose appelé « Sauvegarde Simple » qu’ils utilisent parfois parce que c’est une variante plus rapide sur une partie spécifique du format OLE, parce que dans les cas de sauvegarde normales, ce n’était pas assez rapide. Word a un menu appelé « Sauvegarde Rapide ». Pour sauver rapidement un long document, 14 fois sur 15, seuls les changement sont ajoutés en fin de fichier, au lieu de réécrire entièrement le document en partant de zéro. Sur les disques durs de l’époque, cela se traduisait par le fait qu’un gros document était sauvé en une seconde au lieu de trente. (Cela signifiait aussi que les données effacées dans un document ne l’étaient pas vraiment et étaient toujours présentes dans le fichier. Ce que beaucoup de gens par la suite n’ont pas apprécié).
  • Ils étaient crées dans le but de pouvoir utiliser des librairies. Si vous voulez écrire un « importateur » binaire, vous devez prendre en compte des choses telles que le format de métafichiers Windows (« Windows Metafile Format ») (pour dessiner des formes) et la gestion d’objets OLE embarqués (« OLE Compound Storage »). Si vous êtes sous Windows, il y a une librairie qui gère déjà tout ça et rend les choses triviales…. d’ailleurs, s’en servir a procuré un bon gain de temps à l’équipe de Microsoft. Mais si vous faites tout du début à la fin, vous devrez tout faire vous-même.Office s’accomode parfaitement avec tout ce qui est documents embarqués, par exemple, vous pouvez embarquer une feuille Excel dans un document Word. Un déchiffreur parfait de format Word devrait donc aussi être capable de faire quelque chose avec cette feuille embarquée.
  • Ils n’ont pas été crées avec le mot « interopérabilité » en tête. La supposition à l’époque, et c’était relativement raisonnable de penser ainsi, était que le format Word ne devait être lu et écrit que par Word lui-même. Cela impliquait que lorsqu’un développeur de l’équipe de Word devait prendre une décision sur des changements dans le format du fichier, la seule chose à laquelle il devait faire attention était que ces changements soient (a) rapides à lire et écrire et (b) prennent le moins de code possible dans le programme exécutable Word. Les choses telles que des formats standardisés SGML et HTML, n’ont jamais été pris en compte jusqu’à ce qu’Internet rende indispensable le fait de pouvoir échanger des documents qui soient compatibles entre eux. Et cela, c’est une dizaine d’années après que le format binaire de Microsoft Office n’ait été inventé. De toute façon, il était possible d’utiliser des « importeurs/exporteurs » pour s’échanger des documents. En réalité, Word a vraiment un format crée spécifiquement pour des exports destinés à d’autres programmes, appelé RTF, qui existe d’ailleurs depuis presque le début, et qui est toujours supporté à 100%.
  • Ils devaient pouvoir intégrer toute la complexité du logiciel. Chaque boîte à chocher (« checkbox »), chaque option de formattage, bref, toutes les possibilités offertes par Microsoft Office doivent être représentées quelque part dans les formats de fichier. Cette boîte à chocher (« checkbox »), dans le menu de Word appelée (« Paragraphe solidaire ») qui force un paragraphe à être automatiquement déplacé sur la page suivante si nécessaire afin de rester associé avec le paragraphe qui le suit ? Cela doit être présent dans le format du fichier.Et cela veut dire que si vous voulez développer un clone parfait de Word, qui peut lire correctement les documents Word, vous devez implémenter cette possibilité. Si vous voulez créer un programme destiné à écrire, qui soit compétitif, et qui a la possibilité de charger des documents Word, cela peut vous prendre une minute pour écrire le code qui va charger ce bit dans le fichier proprement dit, mais cela va certainement vous prendre des semaines à réussir à transformer tout l’algorithme de votre affichage pour que ce dernier s’adapte à ce fameux bit. Si vous ne le faites pas, les clients qui voudront ouvrir leurs documents Word dans votre clone vont voir toutes les pages sens dessus-dessous.
  • Ils ne peuvent que refléter l’histoire des applications. La plupart des choses compliquées dans ces formats de fichiers concernent des possibilités ou des options qui sont vieilles, compliquées, pas appréciées et rarement utilisées. Elles sont toujours là par souci de compatibilité, et parce que cela ne coûte rien à Microsoft de laisser du code. Mais si vous voulez vraiment faire un boulot complet et dans le moindre détail, et que vous voulez lire et écrire dans ces formats, vous allez devoir aussi faire le travail qu’un interne de chez Microsoft a fait il y a 15 ans en arrière. Le pire de tout c’est qu’il y a des centaines d’années-homme de développement qui se trouvent à l’intérieur de Word de d’Excel, et si vous voulez clôner ces applications complètement, vous allez devoir faire ces centaines d’années de travail. Un format de fichier et juste un résumé très concis de toutes les possibilités qu’offre une application.Juste pour le fun, voyons un exemple minuscule en détail. Un onglet Excel est un paquet d’enregistrements BIFF de types différents. Je ne vais parler que du premier enregistrement BIFF des spécifications. C’est un enregistrement appelé 1904.

    Les spécifications du format de fichier Excel sont remarquablement obscures sur cet enregistrement. Elles précisent juste que l’enregistrement 1904 indique « si le système de date 1904 est utilisé ». Ah. Super. Un exemple classique de spécification complètement inutilisable. si vous être un développeur qui travaille sur le format Excel, et que vous lisez ça dans les spécifications, vous pourriez tout à fait en conclure que Microsoft essaie de cacher quelque chose. En effet, vous n’avez pas assez d’information. Il vous faut plus de connaissances pour comprendre tout cela, mais je suis gentil et je vais vous l’expliquer. Il y a deux types de feuillets Excel : ceux qui se basent sur la date de base qui est le 1/1/1900 (avec un bogue d’années bissextiles volontairement crée afin d’être compatible avec Lotus  1-2-3, mais c’est trop ennuyeux pour en parler ici), et ceux dont la date de base est le 1/1/1904. Excel supporte ces deux types de dates parce que la première version d’Excel pour Mac se servait de la date de base du système d’exploitation (c’était le plus facile), mais Excel pour Windows devait impérativement pouvoir importer les fichiers Lotus 1-2-3, qui se servaient de la date de base au 1/1/1900. Déjà rien que ça devrait vous faire pleurer de consternation. Tout au long de cet histoire affligeante, pas un seul développeur n’a pensé à faire quelque chose de correct, mais bon voilà : vous avez la chose ici, et il vous faut faire avec.Vous trouverez vraiment ces deux types de fichiers, 1900 et 1904, un peu partout, selon que le fichier soit originaire de Windows ou de Mac. Les convertir de manière silencieuse peut éventuellement générer des problème d’intégrité des données, donc Excel ne changera jamais le type pour vous. Si vous voulez parcourir des fichiers Excel il faut faudra savoir gérer les deux. Ce n’est pas juste une simple question de charger ce petit bit à partir du fichier. Cela veut dire aussi que vous allez devoir réécrire entièrement tout l’affichage des dates avec un paramètre supplémentaire pour pouvoir prendre en compte ces deux types de date de base (epochs). Comptez au minimum plusieurs jours.

    Bien évidemment, lorsque vous travaillerez sur votre clone Excel, vous découvrirez plein de petits détails subtils sur la gestion des dates. A votre avis, quand est-ce qu’Excel fait la conversion de nombres en dates ? Comment fonctionne le formatage ? Pourquoi est-ce que « 31/1 » est interprété comme le 31 janvier de l’année en cours, alors que « 1/50 » est considéré comme le premier janvier de l’année 1950 ? Toute ces petites choses très subtiles qui concernent les comportements ne peuvent pas être complètement documentées à moins d’écrire un document pratiquement aussi long qui le code source d’Excel lui-même.Et c’est juste le premier enregistrement BIFF, alors qu’il y en a plusieurs centaines que vous devrez gérer. Et pour ne rien vous cacher : celui-ci est l’un des plus simples. La plupart des BIFF feront pleurer de rage un développeur expérimenté.

Une seule conclusion s’impose : c’est très gentil à Microsoft de fournir officiellement un document décrivant le format de leurs fichiers Office, mais ça ne va pas pour autant vous rendre la vie super facile si vous décidez d’écrire quelque chose qui importera ou sauvera sous le format Office. Ces applications sont affreusement complexes et subtiles, pleines de possibilités et vous ne pouvez pas simplement implémenter 20 % des fonctions les plus populaire et espérer que 80 % de votre clientèle sera satisfaire. La spécification du format binaire vous aidera à gagner quelques minutes, tout au plus quelques jours, et vous évitera de faire du reverse engineering. Rien de plus.

OK, je vous ai promis quelques solutions de contournement. La bonne nouvelle c’est que pour la plupart des applications qui veulent lire ou écrire au format Office ne font pas un bon choix. Il y a deux alternatives qu’il vous faut immédiatement étudier : soit laisser Office faire ce travail, soit écrire dans un format plus facile (ce qui ne veut pas dire moins puissant).

Laissez Office faire le boulot pour vous. Word et Excel ont des modèles objet extrêmement complets, disponibles via l’automation COM, qui vous donne la possibilité de faire tout par programmation. Dans plein de cas il est beaucoup plus pertinent de réutiliser le code dans Office plutôt que d’essayer de le ré-implémenter. Voici quelques exemples.

  1. Vous avez une application Web qui doit transformer des documents Word en PDF. Voici comment je le ferais : quelque lignes de VBA Word pour charger le fichier et le sauver au format PDF en utilisant le convertisseur PDF intégré de Word 2007. Vous pouvez appeler ce code directement, même en ASP ou ASP.NET sous IIS. Cela fonctionnera. La première fois, il y aura un chargement de Word et ça prendra quelques secondes. Les fois suivantes, Word sera gardé en mémoire par le sous-système COM pendant quelques minutes au cas où vous en auriez besoin. C’est suffisamment rapide pour n’importe quelle application Web de taille moyenne.
  2. Même chose que précédemment, mais vous êtes hébergé sur du Linux. Achetez un serveur Windows 2003, installez une copie de Word avec une licence pro, et mettez en place un petit Webservice qui fait ce travail. Une demi journée de travail avec C# et ASP.NET.
  3. Même chose que précédemment, mais il vous faut être plus réactif : votre application a grossi. Mettez un « load balancer » en face de plusieurs PC que vous aurez mis en place de la même manière qu’à l’étape précédente. Aucun code supplémentaire.

Ce type d’approche pourrait fonctionner si vous avez pour objectif de faire dans vos applications des appels simples et communs à des objets Office. Par exemple :

  • Ouvrir une fiche  Excel, mettre des informations dans les cellules, recalculer, et extraire des résultat des cellules ;
  • Utiliser Excel pour générer des diagrammes au format GIF ;
  • Extraire presque n’importe quel type d’information de n’importa quelle feuille Excel sans perdre une seconde à réfléchir au format de fichier qu’il y a derrière ;
  • Convertir un fichier Excel au format CSV tabulaire (une autre méthode pratique serait d’utiliser le drive ODBC d’Excel pour aspirer suck data out using SQL queries).
  • Editer des deocuments Word ;
  • Remplir des fiches Word ;
  • Convertir des fichiers entre tous les formats supportés par Office (il y a plein d' »importateurs » qui savent lire les formats de programmes de traitement de texte et de feuilles de calcul).

Dans tous les cas, il y a des façons de dire aux objets Office qu’il ne sont pas en dans une applications interactive, et qu’ils ne doivent pas s’occuper de rafraîchir l’écran et qu’ils ne doivent en aucun cas essayer d’ouvrir une boite de dialogue. Au fait, si vous choisissez cette solution, il y a quelques petites astuces et particularités qu’il faut bien avoir en tête, qui ne sont pas officiellement supportées par Microsoft. Parcourez la base de connaissance de Microsoft sur le sujet avant d’aller plus loin.

Utilisez un format de fichier plus simple pour écrire des fichiers. Si vous devez générer des documents Office par la programmation, il y a presque toujours une façon plus facile et plus pratique que le format binaire Office, que vous pouvez utilisez, et que Word et Excel ouvriront tout de même sans problème, le tout sans rien perdre de vos objectifs.

  • Si vous devez tout simplement générer des données tabulaires pour les ressortir dans Excel, utilisez CSV ;
  • Si vous avez absolument besoin de formules de calcul que CSV ne supporte pas, le format WK1 (Lotus 1-2-3) est incroyablement plus simple que celui d’Excel, et Excel saura le lire ;
  • Si vous devez vraiment, absolument, générer des fichiers natifs Excel, commencez par une très vieille version d’Excel… Excel 3.0 est un bon compromis (c’est le format juste avant que tout ces trucs imbriqués dans des trucs imbriqués n’apparaissent), et sauvez un fichier minimal qui contient uniquement les choses dont vous voulez vous servir. Utilisez ce fichier pour voir le nombre minimal d’enregistrements BIFF que vous devrez ressortir et concentrez vous, dans les spécifications, uniquement sur ces parties ;
  • Pour des documents Word, pensez au format HTML. Word les ouvrira de manière parfaitement transparente.
  • Si vous voulez vraiment générer des documents Word avec des choses particulière et originales dedans, le meilleur moyen sera presque toujours de générer un fichier RTF. Tout ce que Word peut faire peut être écrit dans un fichier RTF, et ce format est un format text simple, pas binaire, et vous pouvez même changer à la main des choses dans le fichier, et Word l’ouvrira toujours certainement sans problème. Vous pouvez créer un document sympa formatté comme vous le désirez, avec des mots-clé que vous voulez remplacer, vous demandez ensuite à Word de sauver le document au format RTF et vous remplacez à la main (ou par programmation) directement dans le fichier RTF ces champs avec les mots-clé à la volée. Et ce document, vous pourrez l’ouvrir sous Word sans aucun problème.

Pour conclure, à moins que vous ne vouliez créer un concurrent d’Office qui peut lire et écrire tous les fichiers Office parfaitement, auquel cas vous aurez des centaines d’années de travail devant vous, il y a de fortes chances que, quel que soit le problème que vous vouliez résoudre, le plus gros de votre travail soit de lire et d’écrire des fichiers Office.

De la nourriture pour le cerveau !

Pris ici, et traduit en français par moi même.

C’est mon site favori.

Je le visite presque tous les jours.

Il n’est pas « responsive ». Il n’est pas optimisé pour iPhone.
Il a l’air flou sur un affichage de type Retina.
Il n’utilise pas le tout dernier framework HTML5/CSS3.
Il n’a pas un « rythme vertical réfléchi pour être agréable ».
Les fontes n’ont rien d’original. Ni Le skeuomorphique ni plat.
Il n’a pas son propre favicon.
Il n’a aucune application native Twitter ou Instagram.
Il n’utilise ni d’AJAX ni de SCRUM ou de node.js ou de Sinatra.
Il n’a pas sa propre API ou son suivi RSS, et pas de VC funding.
Il n’a jamais été numéro un sur un blog technique connu et n’a jamais gagné un seul concours.

Il me dit comment faire la soupe du jour.

Une information donnée gratuitement, qui est pratique pour la personne qui le lit.

C’est ça, le web design.

Hacks : crack mots de passe Windows, Wifi et autres

Si vous parlez un petit peu Anglais, alors cette vidéo est faite pour vous :
Elle vous explique comment cracker les mots de passe Windows, comment utiliser le Wifi, collecter les paquets et les analyser afin de les cracker et de se faire une clé vous donnant l’accès au réseau, etc.
Tout est là, amusez vous bien :

HTML : tags <pre> / <code> : comment forcer retour à la ligne

Voici une astuce : vous avec une page qui s’affiche parfaitement, avec plein de choses, à part un petit détail plutôt gênant : vous avez des lignes de code qui « débordent » et lorsque vous voulez imprimer, comme, justement, ça déborde, vous n’avez pas le code en entier.

Il vous suffit de mettre ce code en dernier dans le css (afin qu’il « écrase » toutes les configurations précedentes des retour-chariot) :


pre, code {
 white-space: pre-wrap;       /* css-3 */
 white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 white-space: -pre-wrap;      /* Opera 4-6 */
 white-space: -o-pre-wrap;    /* Opera 7 */
 word-wrap: break-word;       /* Internet Explorer 5.5+ */
}

Et voilà, vous pourrez imprimer votre document tranquillement, tout le code sera affiché.
Cet article fait suite à une question que j’ai posée sur stackoverflow.com. Cette dernière avait déjà été posée, et la réponse était valide : le lien est ici. Et la solution, carrément à la source, est ici.

AdBlock : petit guide sur le don

Avec le temps, je commence à acquérir une mentalité un peu moins latine, c’est à dire que, par définition, dans les pays latins, si on peut avoir quelque chose gratuitement, ça ne sert à rien de payer. Le volontariat n’existe pas dans les pays latin. Vous connaissez peut-être le proverbe « je ne fais pas ça pour la gloire », un proverbe typiquement de nos contrées. Bien évidemment, c’est une généralité, et j’espère vivement que vous ne vous sentez pas concerné.

Pourquoi ce billet ? Tout simplement parce que j’ai donné 10 dollars, soit 10 euros à un type qui a fait le plugin le plus géniallissime de tous les temps, j’ai nommé : AdBlock. Oui, il bloque toutes les pubs qui nous pourrissent la vie. Il les cache. Il a développé le plugin sur Chrome, puis sur Safari, après s’être inspiré d’Adblock Plus sur Firefox. Ce type a changé ma vie d’internaute acharné. 10 euros c’est rien comparé à ce qu’il a fait pour moi. J’arrive enfin à lire ZDnet sans avoir envie de casser mon écran ! Bon ok j’éxagère un peu (à peine).

Je traduis pour les impatients (et après suit le mail original) :

Salut Olivier !

J’ai écrit AdBlock dans l’espoir que je pourrais rendre la vie des gens un peu plus agréable. Ton don m’incite à penser que j’ai réussi 🙂
Merci, merci merci beaucoup tu es si sympa !

Ces derniers mois je suis particulièrement inquiet parce que j’ai quitté mon travail en espérant que tous les utilisateurs donneraient assez pour m’aider moi et ma famille à vivre, et m’aider à continuer le développement. Peu de gens ont donné, actuellement, ce qui rend ton don encore plus appréciable — ton don est largement au dessus ce que la plupart des utilisateurs donnent (zéro).

Dans mon cas, Katie et moi avons décidé que le travail fait est tellement important qu’il faut que je continue, que je puisse vivre uniquement des dons ou pas, jusqu’à ce que je n’aie plus aucune réserve. Ton don m’éloigne un petit peu plus d’une situation de fauché… au fait je t’ai dit merci ? Merci ! 😀

Bon blocage de pub,
– Michael

PS : Si c’est possible, pourrais tu aller à http://chromeadblock.com/donate/thanks/ et en parler ? J’ai essayé de mettre quelque chose en place pour que PayPal le montre automatiquement après que tu aies donné, mais ça n’a pas l’air de fonctionner correctement.
En tous les cas, cela m’aiderait ENORMEMENT 🙂

Ci suit son mail de réponse :

Hi Olivier!

I wrote AdBlock in the hope that I could make people’s lives better. Your
donation tells me that I did it 🙂 Thank you very, very much! You are so
great!

It’s been a little scary in the few months since I quit my job, hoping that my
users would donate enough that I could support my family and fund more AdBlock
development. Not many users donate yet, which makes your donation even more
appreciated — your donation is way above what most users give: zero.

In any case, Katie and I have decided that it’s important enough work that I
should keep doing it whether we can live off of donations or not, until we
start running out of savings. Your donation just tipped the scales a little
further away from going broke… did I say thank you yet? Thank you! 😀

Happy ad blocking,
– Michael

PS: If you don’t mind, would you go to http://chromeadblock.com/donate/thanks/ and help me spread the word? I tried setting it up so PayPal would show you
that automatically after you donated, but it doesn’t seem to work reliably.
Anyway, it would help me IMMENSELY 🙂

Php et Smarty : comment simuler print_r(), var_dump() ou var_export()

Si jamais vous utilisez le moteur de templates Smarty, il pourra vous arriver, à un moment ou à un autre, de vouloir afficher le contenu d’une variable Smarty. Rien de plus simple : prenons un exemple concret :

{foreach name=tab_g key=id_g item=item_g from=$tab_garanties}
{/foreach}

Imaginons que vous vouliez afficher ce qu’il y a dans $tab_garanties. Il suffit de faire :

{$tab_garanties|@print_r}

Et c’est tout !

Si vous avez une autre solution, je suis preneur !

Cette idée vient d’ici, mais, comme souvent, comme c’est en anglais, j’aide un peu par mes traductions, la communauté Française.

Anglais : la forme posssessive des noms se terminant en « s » : Pons’ Dog

Ci-suit une traduction de l’arcticle posté ici.

Comme à mon habitude, c’est un mémo personnel que je partage… avec tout le monde.

Il y a deux cas différents à traiter en Anglais :

– Pour les noms qui sont au pluriel, (par exemple « boys »), la forme possessive s’écrit en ajoutant une apostrophe après le pluriel « s ». On prononce le nom de la même façon que le pluriel, et le possessif de la même façon que le possessif singulier :

The boys’ books [prononcer « boys' » comme « boys » (en oral français : « boyz »)]

Pour les noms qui sont au singulier et se terminent par un « s », la forme possessive se fait en ajoutant une apostrophe et un « s », comme on le fait avec les noms qui ne se terminent pas par « s ». On le prononce comme s’il y avait « es » ajouté à la fin :

The boss’s car. [prononcer boss’s comme « bosses » (en oral français : « bossize »)]

Pour les noms propres qui se terminent en « s », on ajoute simplement une apostrophe, et on ne change pas leur prononciation. C’est pourquoi on voit souvent :

Confucius’ sayings
Jesus’ teachings

Néanmoins, cette dernière règle ne s’applique pas lorsque les noms se terminent avec une autre lettre que « s », même si oralement on doit prononcer un « s ». Ces noms ont une forme possessive classique :

Marx’s theories

Dans le cas opposé, lorsqu’un nom se termine avec un « s » qui n’est pas prononcé, on ajoute habituellement une apostrophe, mais celle-ci fait qu’on doit prononcer le « s » :

Camus’ novels [le « s » final de « Camus » n’est pas silencieux, il faut le dire]