arnaudus a écrit 4653 commentaires

  • [^] # Re: moi aussi

    Posté par  . En réponse au journal De l'inéluctable progrès de l'informatique, ou pas.. Évalué à 7.

    Je pense qu'on ne parle pas de la même chose… Une console de jeux des années 1990 démarre également super vite et fait tourner des trucs parfois à peu près équivalents à ce qu'on trouve en «jeux flash» aujourd'hui, qui nécessitent 100 fois plus de puissance. Je parlais d'une machine sous Linux, avec c'est clair une distrib un peu lourde (une des premières Ubuntu, de mémoire), et la tripotée de trucs modernes qui vont avec : bureau Gnome, navigateur avec plugin flash, outils de bureautique, Gimp, etc. Il faut évidemment comparer des choses qui ont un niveau de fonctionnalité équivalent. La tonalité du journal était qu'on régressait, et je voulais simplement illustrer le fait qu'on s'habituait aussi énormément à la rapidité des machines, et qu'on ne se rappelait pas à quel point les anciennes étaient lentes à fonctions équivalentes.

    Il suffit d'ailleurs de prendre un logiciel qui a peu évolué (malheureusement) : Gimp. Aujourd'hui, il se lance super-rapidement ; il y a 10 ans, c'était une application majeure qui bouffait une grosse partie de la RAM et qui mettait une minute à se lancer (je me souviens du splash screen avec la liste des greffons et scripts qui se chargeaient). Là, je viens d'essayer, ça met 3 secondes à se lancer sur ma machine, on voit à peine le splash screen.

  • [^] # Re: moi aussi

    Posté par  . En réponse au journal De l'inéluctable progrès de l'informatique, ou pas.. Évalué à 10.

    Expérience exactement identique. J'ai rebooté il y a quelques mois un portable qui fonctionne très bien mais qui a 15 ans, et je suis resté scotché par la lenteur du boot, le temps de chargement du bureau, etc. Krrr krrr krrr ça swappe à mort, krrr krr krrr malgré un superbe 640 x 480 (bon, peut-être un peu plus, je ne me rappelle plus). On lance firefox des années 2000, Krrr krrrr krrr krrr krrrr krrr… OUvrir un document avec OpenOffice, krrr krrr krrr krrr krrr krr krrr krrr… mince, je me rappelle, il vaut mieux fermer Firefox, krrr krrr krrr krr… En tout cas, les logiciels libres évoluent aussi parfois dans la bonne direction, parce qu'on a bien oublié le boulot d'optimisation qui a été réalisé à partir de bloatwares proprios (netscape, StarOffice…). Ça prouve la diversité et l'efficacité du développement libre, qui va dans plusieurs directions à la fois.

  • [^] # Re: Méthodes de développement

    Posté par  . En réponse au journal De l'inéluctable progrès de l'informatique, ou pas.. Évalué à 10.

    Il faut donner l'autre côté de la pièce : du coup, on dispose de milliers d'applications (certes, pour la plupart inutiles), puisque le temps de développement est considérablement réduit du fait de l'utilisation de langages de haut niveau.

  • [^] # Re: Brevets à la source ?

    Posté par  . En réponse au journal L'avantage farfelu du brevet des coins arrondis. Évalué à 4.

    Bah évidemment, le ver était dans le fruit dès le début. C'est inimaginable de mettre un organisme tel qu'il soit devant un tel conflit d'intéret. Ceci dit, la plupart s'en sortent un peu plus honorablement. Par exemple, les revues scientifiques sur le modèle "open access" sont dans le même dilemme (seuls les articles acceptés sont publiés), mais aucune ou presque n'est tombée aussi bas. Il y a certes un problème de conception initial, mais au-dessus de ça, il y a quand même une dose de cynisme et d'incompétence totalement incompatible avec le fonctionnement d'une démocratie moderne. Les gens de l'office des brevets sont partis totalement en live, ont cessé de faire leur boulot (vérification du prior art, de la non-trivialité du brevet, de son utilisation effective, de son potentiel industriel…) pour devenir une chambre d'enregistrement de tout ce qui leur arrive en échange de pognon.

    La première solution serait de mettre dans ces institutions des vrais professionnels qui seraient encouragés à rejeter les brevets, pas à les accepter. Il pourrait également être possible de prélever une taxe au moment du dépot du brevet, qu'il soit acceptable ou non. Le dépot pourrait également être accompagné d'une étude de marché sérieuse, listant les brevets existant les plus proches, et détaillant les raisons pour lesquelles la nouvelle invention diffère significativement. Les brevets pourraient également tomber dans le domaine public tous les 5 ans, sauf si le détenteur du brevet fait la preuve d'une application industrielle réelle. Bref, il y aurait des dizaines de moyens de réduire drastiquement le nombre de brevets déposés de manière à s'assurer que les brevets existants sont réels, originaux, exploitables et exploités. Mais il faut garder à l'esprit que ce n'est pas parce qu'on est dans une situation de conflit d'intérêt potentiel qu'il est naturel de céder : rien ne peut justifier le comportement suicidaire des offices de brevets.

  • [^] # Re: Code supprimé

    Posté par  . En réponse au journal VLC passe à la LGPL. Évalué à 4.

    Tiens, quelle drôle d'idée? Absolument pas. Le droit d'auteur s'applique aux œuvres de l'esprit, et une œuvre de l'esprit est définie par sa capacité à refléter la personnalité de l'auteur de manière originale. Autrement dit, si un bug super complexe prend un mois à débusquer, et que la solution est finalement de transformer un i++ en un ++i, il n'y a rien d'original, et ça n'ouvre pas de droits d'auteur. Par contre, reprendre un algorithme trivial en renommant les variables de manière originale et pertinente peut très bien ouvrir des droits d'auteur.

    Il faut bien distinguer ce qui relève de la technique (appliquer un design pattern, choisir le bon algo pour optimiser un truc, etc) et ce qui relève du droit d'auteur (écrire un truc non-trivial d'une manière unique).

    Dans les faits, pour le code, ça doit être parfois compliqué de trancher. La plupart des algos ne sont pas uniques, et j'imagine que souvent, un algo original n'est pas forcément signé d'un programmeur talentueux (original peut simplement vouloir dire que le programmeur ne connaissait pas la solution canonique à son problème). En tout cas, c'est une bonne raison de bien commenter son code, car les commentaires sont beaucoup plus aptes à définir un travail original!

  • [^] # Re: Brevets à la source ?

    Posté par  . En réponse au journal L'avantage farfelu du brevet des coins arrondis. Évalué à 3.

    Complètement d'accord : c'est profondément débile. On construit une base de données avec des milliards d'entrées, on accepte tout et n'importe quoi, et en cas de problème, un procès permettra de trancher. Dans le genre "mauvais design", on ne peut pas faire pire, le coût de l'entretien de la base, de sa consultation, et du traitement manuel des requêtes est gigantesque, elle va être bourrée de duplicats, de trucs caducs, de blagues… Comment peut-on être aussi con?

  • [^] # Re: syntaxe simplifiée ?

    Posté par  . En réponse à la dépêche Linotte 2.0. Évalué à 5.

    Ça ne répond pas vraiment à la question. C'est bien beau de permettre deux syntaxes très différentes, mais la lecture d'un code devient alors très compliquée, car il faut absolument connaitre les deux syntaxes. Ça impose de réserver tout plein de mot-clés qui ne sont jamais utilisés, et ça autorise d'écrire en créole, ce qui peut rendre le code franchement illisible. Ce qui semble une solution raisonnable à court terme peut s'avérer difficilement gérable à long terme…

  • [^] # Re: syntaxe simplifiée ?

    Posté par  . En réponse à la dépêche Linotte 2.0. Évalué à 0.

    Je suis d'accord pour le <- , très lisible et intuitif. Moins pour le truc qui ne passe pas en ascii :-)

    Le == est un problème majeur, je doute qu'une construction syntaxique n'ait jamais créé autant de bugs difficiles à trouver. J'imagine que le seul intérêt de distinguer = de == est de pouvoir retourner la valeur assignée pour =, de manière à construire des trucs comme a = b = 3, vs a = b == 3. À mon avis, le gain est mineur comparé à la catastrophe sémantique qu'est "==".

  • [^] # Re: syntaxe simplifiée ?

    Posté par  . En réponse à la dépêche Linotte 2.0. Évalué à 10. Dernière modification le 14 novembre 2012 à 16:56.

    Je ne veux pas répondre à sa place, mais j'imagine qu'il faut prendre en compte la possibilité pour les utilisateurs d'évoluer dans leur compréhension de la programmation.

    Après, on peut toujours se demander si la difficulté principale pour un débutant est réellement la syntaxe. Est-ce que

    si x est égal ou supérieur à 0, fais
         x vaut x + 1
    
    

    est réellement différent de

    if (x >= 0)
        x = x + 1
    
    

    en terme de compréhension pour un débutant? J'ai appris les bases de la programmation à l'adolescence, et je ne me rappelle plus vraiment ce qui me posait problème. J'avais par exemple tendance à dupliquer le code, car je me sentais très mal à l'aise avec les boucles while, repeat, et for, dont j'avais du mal à saisir les nuances (à raison d'ailleurs, elles sont totalement redondantes). Plus tard, je me rappelle avoir bien galéré avec les pointeurs et les tableaux, y compris avec l'horrible char** dans les paramètres du main() en C. Mais franchement, je ne crois pas avoir jamais lutté avec des syntaxes comme "x = y + z", ou des trucs comme "if (x < 3)". Je me demande donc si tout ça n'est pas un peu un faux problème.

  • # Qualité de l'offre libre

    Posté par  . En réponse au journal Le store d'Ubuntu et les logiciels proprios. Évalué à 7. Dernière modification le 13 novembre 2012 à 17:32.

    Je pense qu'il y a deux manières de voir les choses.

    1) les jeux commerciaux bénéficient de budgets colossaux, bien plus importants que la plupart des logiciels propriétaires, et sont donc des vitrines de ce que le proprio peut faire de mieux. Les jeux libres n'ont pas le budget suffisant pour rivaliser.

    2) les jeux libres sont parmi ce qui se fait de moins bien en libre. Le noyau, les distributions, les outils de base (formattage, boot, etc), les environnements de bureau, les suites office, les logiciels scientifiques, les navigateurs, bref, tous les logiciels utilitaires libres sont pris en charge par des équipes motivées, compétentes, avec éventuellement un financement d'entreprises intéressées. Au contraire, les jeux libres sont souvent des projets d'adolescents, des équipes d'amateurs (qui ne développent pas dans leur vie professionnelle), des gens qui ne savent pas gérer de projet, qui ont souvent les pires difficultés à arriver à des versions stables et à faire progresser le soft, qui trainent de mauvais choix techniques, etc.

    Franchement, je pencherais plutôt pour le 2e point. Souvent, l'ambiance dans les forums et les rapports de bugs est assez désagréable sur les jeux libres ; les utilisateurs sont souvent assez puérils, ignorants du fonctionnement d'un projet libre, et les devs sont aussi souvent désagréables et pas beaucoup plus matures. Un truc évident, par exemple, reste la très mauvaise réutilisation du code et de l'artwork entre projets libres. Je ne comprends pas comment on peut sortir un jeu avec des musiques en midi qui font saigner des oreilles alors qu'il existe des milliers de morceaux libres dans tous les styles dont le choix judicieux pourrait donner une ambiance unique. Pareil pour les textures, les personnages, les interfaces utilisateur… À part quelques projets phare, tout ça ressemble à une belle cour de récré désorganisée et incapable de porter un projet de taille raisonnable à maturité. Les mini-projets (solitaire, etc) sont très concurrencés par les jeux flash et les applis mobiles, il ne reste pas beaucoup de place aux jeux libres pour essayer de produire quelque chose de potable.

  • [^] # Re: Personne n'est contre ?

    Posté par  . En réponse au journal Assurance auto : égalité hommes/femmes. Évalué à 6.

    Je pense qu'il y a des surprimes acceptables, et des surprimes qui ne le sont pas. Je trouve qu'il est normal de payer plus quand on augmente ses risques de manière volontaire : on achète une voiture de sport, on fait du ski hors-pistes, ou du saut en parachute. Par contre, être un homme ou une femme, être blanc ou noir, être handicapé, on ne l'a pas choisi. Il est donc immoral de payer plus pour compenser un risque statistique pour lequel on n'est pas responsable.

  • [^] # Re: Et ailleurs ?

    Posté par  . En réponse au journal Assurance auto : égalité hommes/femmes. Évalué à 10. Dernière modification le 13 novembre 2012 à 14:43.

    Ton nombre de points n'est aucunement un indice de ta dangerosité.

    Je pense que tu n'as absolument aucune idée de ce que peut bien être une indication statistique. Tu parles de toi, toi, toi, mais les statistiques ne sont pas faites sur toi. Si je fais des statistiques sur ma gueule, je peux t'affirmer avec autant de prétention que tu le fais que tout le monde est hétéro (d'ailleurs, tout le monde est un homme), tout le monde est brun, et tout le monde a des lunettes. Par contre, personne ne gagne jamais au loto, et tous les fonctionnaires glandent sur Linuxfr. Et qu'il n'y a aucune corrélation entre la taille de la teub et la stature. C'est passionnant, comme statistiques, hein?

    Une personne un peu distraite peut se retrouver à repasser son permis à coup de un point enlevé (flash à 56 km/h corrigés à 52 dans une zone limitée à 50).

    Ta personne un peu distraite roule simplement à 60 au lieu de 50, soit 20% trop vite. Calcule combien ça ferait de gagner 20% de plus ou de moins, tu verras que ça n'est pas une marge acceptable.

    D'ailleurs, je ne vois pas la différence entre rouler 12 fois à 60 devant un radar et rouler 12 fois à 60 devant une école.

    Et puis, merde, quand on parle du code de la route, on parle de consignes de sécurité à appliquer parce que c'est la loi. C'est comme attacher sa ceinture en avion, passer la visite médicale du travail tous les ans, ou remplir sa déclaration d'impots. Ça fait partie des règles de vie en société, on peut très bien penser qu'une limitation est trop basse (j'en connais), que d'autres sont trop hautes (j'en connais également, mais celles-là, on n'en parle jamais), et alors? Tu vas commencer à remettre tout en cause? Si à la cantine les entrées valent 1,20€, tu ne vas pas demander à payer les carottes râpeés 1€ seulement, parce que les asperges sont aussi à 1,20€ et qu'elles ont plus de valeur. Le code de la route est un truc à prendre dans son entier, il n'y a pas des milliards de petits cas particuliers, il y a un jeu de règles simples qui sont raisonnables la plupart du temps, et il est beaucoup plus reposant de les appliquer tout le temps plutot que de passer ton temps à te demander s'il ne serait pas possible de rouler à 55 entre le rond-point et le virage qui suit.

  • [^] # Re: En douce

    Posté par  . En réponse au sondage Le libre et mon activité. Évalué à 8.

    "en douce" n'est probablement pas le bon mot. Disons qu'il existe un schéma acceptable et éthique, qui consiste à placer systématiquement les logiciels scientifiques sous une licence permissive (accès aux sources, pour des questions de vérifiabilité, et autorisation au moins pour l'utilisation non-commerciale, pour des raisons de reproductibilité). La plupart des scientifiques sont passés d'une pratique un peu archaïque (envoi des sources sans aucune information de licence) à une pratique un peu plus formelle (mise sous licence libre). Cependant, à ma connaissance, l'employeur est officiellement contacté seulement dans le cas de très gros logiciels, dont le financement est spécifique (l'argent a été obtenu dans le but de développer le logiciel). Pour les petits outils, la procédure est totalement inadaptée, et personne ne veut prendre le risque de voir une requête rejetée au bout de 12 mois parce que les gens qui siègent dans ces services sont incompétents. En général, l'outil est mis à disposition au moment de la publication des résultats.

    Ceci dit, il existe également un autre cas de transfert de propriété intellectuelle qui n'est pas effectué dans les règles, c'est lors de la publication dans une revue qui demande à remplir un formulaire de transfert de copyright. Les auteurs signent le papier et transfèrent leurs droits à la revue, alors que techniquement cette transmission n'a aucune valeur juridique, puisque les droits appartiennent à l'employeur.

    Mon sentiment, c'est que les instituts de recherche se couvrent par des clauses que personne ne respectent, et qui sont éthiquement inacceptables—ne pas publier le code et ne pas permettre la vérification des résultats n'est éthiquement pas concevable. Par conséquent, les chercheurs ont donc tendance à privilégier la simplicité et la pratique éthique de leur boulot, au nez et à la barbe de leur administration, en partant du principe que ces règles absurdes ne les concernent pas vraiment et sont destinées à gérer les cas un peu limite quand des partenariats industriels ou des histoires de gros sous entrent en jeu.

  • # En douce

    Posté par  . En réponse au sondage Le libre et mon activité. Évalué à 6. Dernière modification le 12 novembre 2012 à 11:01.

    Perso, je développe des applications libres "en douce". Le développement est une activité secondaire pour moi, les softs, scripts et paquets restent des outils de support à mon activité scientifique (par exemple, des outils d'analyse de données, des logiciels de simulation implémentant des modèles très spécifiques, etc). La politique de mon employeur (le plus gros EPST de France, pour ne pas le nommer) est hyper prudente (genre, "All your bases are belong to us, mais faites ce que vous voulez, on s'en branle, sauf que le jour où on s'y intéressera on pourra vous emmerder). Du coup, je mets mes softs sous GPL, ce qui de toutes manières est très sain pour l'activité scientifique—le passage par le service "valorisation" officiel serait de toutes manières beaucoup trop long et nuirait à la publication des résultats.

  • [^] # Re: Réussites historiques

    Posté par  . En réponse au journal A Generation Lost in the Bazaar. Évalué à 3.

    Tu considère l'ensemble de la vie comme un développement unique ?

    Bah c'est un soft unique, avec des millions de forks et de projets qui disparaissent. Mais c'est le même logiciel depuis le début.

  • # Réussites historiques

    Posté par  . En réponse au journal A Generation Lost in the Bazaar. Évalué à 10.

    Cependant, le modèle du bazar a, à mon avis, permis quelques réussites

    Je pense qu'on peut aller beaucoup plus loin que ça. Le modèle bazar est le seul modèle de développement qui a jamais démontré qu'il était possible de mettre en place, d'améliorer, et de complexifier un système sans aucune régression bloquante pendant 3 milliards d'années. À côté de ça, quelles sont les réussites d'un système cathédrale? Oui, bon, OK, les cathédrales. Les constitutions démocratiques les plus anciennes ont à peine plus de 2 siècles, et de toutes manières on voit bien que les systèmes juridiques se développent selon le modèle du bazar. Il semble que le fonctionnement de type cathédral soit limité à des projets de taille réduite, et surtout au développement limité dans le temps (une cathédrale est finie, on n'y touche plus). Dès qu'il faut maintenir l'objet, le faire évoluer, le complexifier, le rendre robuste à un environnement imprévisible, le développement cathédrale ne peut tout simplement plus tenir la route—et plus on s'approche du point de rupture, plus il faut d'énergie pour continuer à faire progresser le bouzin.

  • [^] # Re: le brevet c'est pour la vente !

    Posté par  . En réponse à la dépêche Un projet d’éolienne sous licences libres. Évalué à 2.

    Même si quelque chose est breveté rien ne t'empêche de le réaliser pour toi-même !

    Je crois que non. À ma connaissance, la seule exception au brevet est le cas où tu as inventé le procédé indépendamment du brevet.

  • [^] # Re: Pas bien intéressant...

    Posté par  . En réponse au message exercices donnés au codinggame n°2. Évalué à 2. Dernière modification le 30 octobre 2012 à 22:17.

    Eh mon code de 2 lignes fonctionne, lui :-) Par contre, je ne vois pas l'intérêt de fournir 5 tests qui ne font pas le tour des possibilités. Ça veut dire qu'un algo faux peut avoir tous les points?

    En tout cas, ça confirme bien mon idée de départ, le problème est bien de trouver la solution mathématique à l'exercice, pas de l'implémenter.

  • [^] # Re: Illisible

    Posté par  . En réponse au journal Minitel 2.0 et auto-hébergement, quelles différences ?. Évalué à 5.

    Bah, je vois bien l'idée générale, parler de la possibilité de s'autohéberger, mais ça part juste dans tous les sens : dailymotion, github, les «recommandations pour les tags», etc : de ton point de vue, il y a peut-être une logique, mais il me manque des informations pour la capter. Si c'est le bordel dans ta tête, ça serait utile de l'organiser un peu pour communiquer avec les autres, parce que personnellement, ça a été relativement pénible pour moi d'essayer de comprendre par quel chemin logique tu passais entre les points. Est-ce que par exemple tu peux imaginer la souffrance intellectuelle que peut provoquer une phrase comme «même un WAMP permet de le faire fonctionner hein, qui paie pour le W plutôt qu'un L ? qui paie pour le L et le reste installé ?». Visiblement non, ou alors tu es sadique.

  • [^] # Re: Illisible

    Posté par  . En réponse au journal Minitel 2.0 et auto-hébergement, quelles différences ?. Évalué à 10.

    J'aime bien la réaction du gars à qui on explique que son truc n'est pas clair. « Mais si c'est clair! ». Bah non, si les leceurs disent que ça n'est pas clair, c'est que ça n'est pas clair. Perso, je n'ai pas compris non plus de quoi tu voulais parler, et le rapport entre la choucroute du début et le cassoulet de la fin.

  • [^] # Re: Android

    Posté par  . En réponse au journal Il remonte dans mon nez Steam. Évalué à 10.

    Tu veux dire, Ubuntu/Debian/GNU/Linux?

  • [^] # Re: Pas bien intéressant...

    Posté par  . En réponse au message exercices donnés au codinggame n°2. Évalué à 2.

    c'est pas très élégant exécuter pleins de fonctions à la suite sur la séquence quand la parcourir une fois suffit

    Ah, je pense que c'est un problème de culture et de définition de l'«élégance» :-) Classiquement, quand on utilise un langage de haut niveau, on est moins exigeant sur la performance brute. Je n'ai pas de culture algorithmique, et à mes yeux, quelque chose comme "amplitude <- max(x) - min(x)" est beaucoup plus élégant qu'une boucle qui ne fait qu'une passe : quelque part, on touche presque au langage naturel.

    L'autre truc, c'est que quand on a un langage non compilé, on ne peut que deviner la manière dont les opérations sont optimisées, mais en faisant les tests, on peut avoir des surprises :

    x <- rnorm(10000000)
    > system.time(max(x)-min(x))
       user  system elapsed 
      0.128   0.000   0.132
    > system.time(diff(range(x)))
       user  system elapsed 
      0.160   0.044   0.212
    
    

    Visiblement, dans ce cas, il vaut mieux faire deux passes qu'une seule (je ne sais pas pourquoi, ça vient peut-être de l'implémentation en C des fonctions correspondantes).

  • [^] # Re: Pas bien intéressant...

    Posté par  . En réponse au message exercices donnés au codinggame n°2. Évalué à 2.

    c'est joli d'écrire ça en 4 lignes mais il y a plus efficace

    Certes, on peut écrire ça en assembleur aussi… Je ne suis pas certain que les consignes étaient spécialement claires. Apparemment, la lisibilité était évaluée sur des critères peu convainquants, et je n'ai pas lu de remarques sur le contexte. Typiquement, le code le plus efficace devra tenir compte des contraintes (exécuter rarement sur des gros jeux de données, exécuter des milliers de fois sur des vecteurs de taille 10, etc) qui peuvent rendre toute tentative d'optimisation a priori totalement contre-productive.

    si R est assez bon pour ne pas exécuter les 2 min(s)

    Ça me parait très peu probable. R est un langage de script, il exécute les instructions les unes après les autres. Par contre, je ne suis pas convaincu que le stockage du contenu des min et des max soit plus rapide que le double appel à la fonction : c'est complètement empirique.

  • [^] # Re: Pas bien intéressant...

    Posté par  . En réponse au message exercices donnés au codinggame n°2. Évalué à 2. Dernière modification le 29 octobre 2012 à 22:42.

    Je m'auto-réponds encore une fois (rien que pour le plaisir de voir les geekscottes), il y a beaucoup plus simple (mais en O(n2))! . Je ne sais pas si la lisibilité et la concision étaient privilégiées sur l'efficacité.

    s <- scan("stdin")[-1]
    cat(min(sapply(1:length(s), FUN=function(x) { min(s[x:length(s)]-s[x])})))
    
    
  • [^] # Re: Pas bien intéressant...

    Posté par  . En réponse au message exercices donnés au codinggame n°2. Évalué à 2.

    Tu as raison, mais mon code a passé les 5 tests proposés sur le site, je n'ai pas cherché plus loin. Du coup, mon argument "c'est trop simple" tombe à l'eau, non? :-) Bon, ce n'est pas si compliqué que ça, il faut appliquer la recherche entre le début et le dernier minimum, et entre le premier maximum et la fin, et prendre la plus grande différence.

    s <- scan("stdin")[-1]
    lastmin <- min(s)-max(s[1:rev(which(s==min(s)))[1]])
    firstmax <- min(s[which(s==max(s))[1]:length(s)])-max(s)
    cat(min(lastmin, firstmax),"\n")