Axioplase ıɥs∀ a écrit 3050 commentaires

  • [^] # Re: Patch

    Posté par  (site web personnel) . En réponse à l’entrée du suivi Garder une trace des bornes du karma. Évalué à 3 (+0/-0).

    Cool !
    Je suis très fier :)

  • [^] # Re: Trop facile

    Posté par  (site web personnel) . En réponse au journal Typage statique versus typage dynamique. Évalué à 8.

    Je pense surtout que le présupposé est faux : python n'a rien essayé de résoudre du point de vue typage. Ils ont pris ce qu'ils pouvaient, et basta. Les communautés Haskell, OCaml ou Scheme sont des communautés où il y a de la recherche en typage, depuis longtemps, et encore activement. En python, j'en doute.

  • [^] # Re: Mettre la complexité dans le typage

    Posté par  (site web personnel) . En réponse au journal Typage statique versus typage dynamique. Évalué à 4.

    C'est plus du pattern matching que du type checking.
    En typant, il va voir que t'as un objet de type A. Il a accès statiquement à la structure des objets de type A, et sait donc toutes les formes qu'ils peuvent avoir. Il vérifie ensuite que ton code couvre bien tous les cas possibles pour ton type.

  • [^] # Re: Boutique

    Posté par  (site web personnel) . En réponse à la dépêche Version finale d'ultracopier 0.3. Évalué à 5.

    La loi de Godwin généralisée est présentée ainsi sur Wikipedia :
    > Pour tout groupe, il existe un unique thème tel que, pour toute discussion au sein de ce groupe, la probabilité que ce thème soit abordé tende vers 1.
    Sur linuxfr le thème c'est les utilisateurs finaux et le temps pour aborder ce thème est généralement très court.

    Vilain nazi de la généralisation !

  • [^] # Troll detected.

    Posté par  (site web personnel) . En réponse au journal Typage statique versus typage dynamique. Évalué à 8.

    De par sa nature même, un langage à typage dynamique interdit toute complétion automatique ou assistance à la refactorisation digne de ce nom. Cela ralenti énormément le développement.

    ROFLCOPTER ! T'as jamais utilisé slime pour faire du Common Lisp toi.

    Tiens, et aussi, de par sa nature même, un langage à typage statique interdit tout débuggage dynamique digne de ce nom. Cela ralenti énormément le développement.

    Ne te méprend pas sur mon opinion, ma précédente job, c'était du Common Lisp, et ma job actuelle, c'est du Haskell. J'aime les deux approches, je connais leurs points forts et faibles, et je ne verse pas dans le trolls statique/dynamique. Mais là, tes premières phrases, c'est des FOUTAISES !

  • [^] # Re: Lenteur

    Posté par  (site web personnel) . En réponse à la dépêche GRUB 2.00 est enfin sorti. Évalué à 0.

    Je pense qu'il faut prendre en compte l'ordre de grandeur.

    Démarrer n0% plus vite pour n entre 1 et 9, c'est intéressant ; démarrer 0.0n% plus lentement, c'est négligeable. Alors, justement, se plaindre de perdre des pouillèmes quand on gagne tant, ça me fait lever les yeux au ciel.

  • [^] # Re: Lenteur

    Posté par  (site web personnel) . En réponse à la dépêche GRUB 2.00 est enfin sorti. Évalué à -1.

    En pratique, la lenteur insupportable de grub 2, c'est quoi ? 2 minutes ? 5 minutes ?

    Je reste persuadé que les moules qui ont commenté « c'est trop lent » ne sont pas des gens pour qui 5 secondes de plus ou de moins à des conséquences qu'on saurait noter. Je veux bien faire des concessions s'il s'agit du système de secours d'un avion de ligne, mais même si grub met 10 secondes (ce que je ne crois pas), l'impact réel sur la vie d'une moule qui reboote plusieurs fois par jour ou bien est au téléphone est certainement négligeable.
    Je suis même sûr que grub 2 met moins de temps à faire son travail que l'emacs à la configuration bien chargée d'un certain nombre de gens que je connais met à démarrer…

  • [^] # Re: Lenteur

    Posté par  (site web personnel) . En réponse à la dépêche GRUB 2.00 est enfin sorti. Évalué à -1.

    Je le démarre zéro (il tourne déjà) à deux fois (j'ai installé un plugin qui demande redémarrage, ou il a planté). Donc, ouais, sur une journée de 8 à 10 heures, c'est toujours négligeable. Le navigateur et le bootloader d'une machine de bureau ne sont pas du tout des logiciel critiques en terme de temps de démarrage. D'autant que j'imagine que la lenteur de grub 2 est loin d'être de l'ordre de la dizaine de secondes.

    Pouvoir booter rapidement, c'est du confort, et c'est surtout une frivolité négligeable comparé au reste de "l'user experience". Mon téléphone met plus d'une minute à démarrer, ça ne m'a jamais posé de problème. Il redémarre une fois par mois, suffit de le faire quand t'as pas besoin de téléphoner. Le démarrage du PC, c'est pareil: je peux le faire en même temps que je prépare mon café, enlève mes vêtements, range mon bureau, etc… i.e., avant d'avoir une quelconque activité sur l'ordi.

  • # Lenteur

    Posté par  (site web personnel) . En réponse à la dépêche GRUB 2.00 est enfin sorti. Évalué à 5.

    Je vois des commentaires qui parlent de la lenteur du bootloader. Vous démarrez votre ordinateur combien de fois par minutes pour que la lenteur soit gênante ? Le bootloader mettrait quinze secondes que je m'en ficherais toujours pas mal…

  • [^] # Re: Parsing compilation

    Posté par  (site web personnel) . En réponse au journal Détection de la syntaxe d'un langage informatique via un analyseur statistique naïf de type Bayésien. Évalué à 3.

    Tu sais, c'est à mon avis pas long de vérifier qu'un lexeur/parseur n'est pas le bon…

  • [^] # Re: xpdf

    Posté par  (site web personnel) . En réponse au sondage Quel lecteur PDF (Portable Document Format) utilisez vous et dans quelle circonstance ?. Évalué à 9.

    C'est un gros hack¹ qui m'a énormément rendu service.

    xpdf a un mode client-serveur qui permet d'envoyer des commandes.
    Quand j'édite toto.latex, je crée un serveur xpdf avec le nom "toto".
    Puis, dans vim, j'ai associé à xpdf --remote toto -exec nextPage et ainsi de suite.

    Par ailleurs, j'ai aussi une commande qui s'exécute dès que je sauve mon fichier texte. Ça lance une compilation du fichier, et parse l'affichage de latex. En cas d'erreur,ça met le curseur de vim à la ligne fautive, et en cas de succès, ça rafraichit xpdf.
    Pour déplacer le curseur dans vim, mon vim est en fait lancé en mode serveur lui aussi, avec le nom "toto". Quand le parseur de la sortie de latex lit une erreur, ça un setpos dans vim grâce à vim --remove-expr.

    Le code n'a jamais été libéré car il a des limitations, mais je pense le faire dès que je me serai décidé à créer un compte sur un site comme github ou bitbuckets…

    ¹: Autre gros hack que j'avais utilisé autrefois, je liais les entrées et sorties standard d'un interprète à des buffers dans vim, en passant par des pipes. Puis j'avais des commandes qui copiaient/collaient entre ces buffers. Ça me permettait ainsi l'intégration d'un interprète dans vim (pour faire du Scheme ou du Common Lisp par exemple). Je n'ai plus le code en revanche…

  • # Similaire :

    Posté par  (site web personnel) . En réponse à l’entrée du suivi Problème d'affichage lors du changement du seuil. Évalué à 3 (+0/-0).

    Ptêt même identique, je ne sais plus…
    http://linuxfr.org/suivi/dynamique-du-seuil-de-la-toolbar

  • # xpdf

    Posté par  (site web personnel) . En réponse au sondage Quel lecteur PDF (Portable Document Format) utilisez vous et dans quelle circonstance ?. Évalué à 2.

    Que je contrôle avec vim pour aller page suivante/précédente, pour et pour rafraichir mes PDFs en quasi-temps-réél quand j'édite du (La)TeX.

    Mais xpdf rame beaucoup quand il doit lire certains fichiers avec des grosses images (genre, de mémoire, un plan de la RATP). Dans ce cas la, Acroread.

  • [^] # Re: −42 ?

    Posté par  (site web personnel) . En réponse au journal L'histoire du mot « Linux » ou étude scientifique du dit mot. Évalué à 10.

    J'avais mal lu ton journal, je croyais que tu demandais qu'on te moinsse, alors j'ai moinssé.
    Et après avoir relu avec attention, l'intérêt du journal m'a conforté dans mon action.

  • # On veut plus !

    Posté par  (site web personnel) . En réponse à la dépêche Les pirates contre-ACTA. Évalué à 8.

    On veut des photos !

    Et surtout, on veut savoir : est-ce que l'empire contre acta ?

  • # Versions incompatibles ?

    Posté par  (site web personnel) . En réponse au journal Abandonner son blog pour les réseaux sociaux, pourquoi pas ?. Évalué à 3.

    Je corrige en live (sur G+ on peut corriger. Pas sur Facebook

    La dernière fois que j'ai essayé, j'ai pu éditer mon article sur facebook.
    Je crois bien que c'est justement à ça que sert le "module" articles…

  • # Trop loin

    Posté par  (site web personnel) . En réponse au sondage Le salon Solution Linux 2012 au CNIT à la Défense. Évalué à 5.

    Sinon, j'y serais bien allé. J'y ai déjà tenu le stand FreeBSD trois fois, et j'aurais volontiers continué !

  • [^] # Re: Lui, il va avoir des problèmes...

    Posté par  (site web personnel) . En réponse au journal Vote par Internet (oui, encore) : une première faille…. Évalué à 1.

    C'est pas une chaîne.
    En votant aujourd'hui, je ne suis pas passé par le PC d'un autre électeur.

  • # Bof

    Posté par  (site web personnel) . En réponse au journal Vote par Internet (oui, encore) : une première faille…. Évalué à -2.

    Du moment que Poutine n'est pas élu pour les Français de l'étranger, ça me va…

  • [^] # Re: commande `s' inachevée

    Posté par  (site web personnel) . En réponse au message erreur sed. Évalué à 2.

    Ton pseudo est très adapté à la réponse :)

  • # Un peu de tout

    Posté par  (site web personnel) . En réponse au sondage Quel logiciel libre pour vos sauvegardes ?. Évalué à 2.

    tar, dar, duplicity, rsync, mercurial, email, cpold, scp.

  • # Patch

    Posté par  (site web personnel) . En réponse à l’entrée du suivi Garder une trace des bornes du karma. Évalué à 2 (+0/-0).

    Un truc comme ça, ça devrait être correct, non?

    Ça rajoute deux entrées: min_karma et max_karma
    À chaque modif du karma, on regarde si on dépasse l'une des deux bornes, et on met à jour (ou non) en conséquence.
    Dans les infos utilisateur, on affiche le karma actuel, et aussi les deux bornes jamais atteintes depuis la mise en place du système.

    Cela dit,
    1. il faut rajouter deux entrées dans la table, et je ne sais pas si c'est transparent (et automatiquement mis à 20), n'il s'il faut mettre à jour tous les karmas,
    2. les bornes sont potentiellement fausses pour les comptes anciens, puisqu'on n'a jamais sauvegardé cette information.
    3. J'ai pas testé, mais j'ai cherché "karma" dans les sources.
    4. S'il est possible dans account.rb de choisir le type integer(3*4), alors on peut tout mettre dans le même entier, et accéder à chaque champ via des masques et des décalages de bits/octets (ce qui n'est pas forcément mieux d'un point de vue génie logiciel)

    diff --git a/app/models/account.rb b/app/models/account.rb
    index c02b11a..1d7b9b4 100644
    --- a/app/models/account.rb
    +++ b/app/models/account.rb
    @@ -9,6 +9,8 @@
     #  login                :string(40)      not null
     #  role                 :string(10)      default("visitor"), not null
     #  karma                :integer(4)      default(20), not null
    +#  min_karma            :integer(4)      default(20), not null
    +#  max_karma            :integer(4)      default(20), not null
     #  nb_votes             :integer(4)      default(0), not null
     #  stylesheet           :string(255)
     #  email                :string(255)     default(""), not null
    @@ -190,8 +192,17 @@ class Account < ActiveRecord::Base
    
     ### Karma ###
    
    +  def update_karma_bounds
    +    if self.karma > self.max_karma then
    +      self.max_karma = self.karma
    +    else if self.karma < self.min_karma then
    +      self.min_karma = self.karma
    +    end
    +  end
    +
       def daily_karma
         self.karma += $redis.get("users/#{self.user_id}/diff_karma").to_i
    +    update_karma_bounds
         $redis.del("users/#{self.user_id}/diff_karma")
         self.nb_votes = [3 + karma / 10, 100].min
         save
    @@ -199,6 +210,7 @@ class Account < ActiveRecord::Base
    
       def give_karma(points)
         self.karma += points
    +    update_karma_bounds
         save
       end
    
    diff --git a/app/views/users/_recent.html.haml b/app/views/users/_recent.html.haml
    index 67d3435..5c79743 100644
    --- a/app/views/users/_recent.html.haml
    +++ b/app/views/users/_recent.html.haml
    @@ -8,7 +8,7 @@
         %ul
           %li Courriel&nbsp;: #{a.email}
           %li Rôle&nbsp;: #{a.role}
    -      %li Karma&nbsp;: #{a.karma}
    +      %li Karma&nbsp;: #{a.karma} (minimum&nbsp;: #{a.min_karma}, maximum&nbsp;: #{a.max_karma})
           %li Dernière connexion&nbsp;: #{a.current_sign_in_at ? l(@user.account.current_sign_in_at) : "-"}
         - if current_account.can_plonk?
           %h2 Interdire de tribune
    diff --git a/db/migrate/20090505233940_create_accounts.rb b/db/migrate/20090505233940_create_accounts.rb
    index 4984a8f..68383f2 100644
    --- a/db/migrate/20090505233940_create_accounts.rb
    +++ b/db/migrate/20090505233940_create_accounts.rb
    @@ -6,6 +6,8 @@ class CreateAccounts < ActiveRecord::Migration
           t.string   :login, :limit => 40,  :null => false
           t.string   :role,  :limit => 10,  :null => false, :default => 'moule'
           t.integer  :karma,                :null => false, :default => 20
    +      t.integer  :min_karma,            :null => false, :default => 20
    +      t.integer  :max_karma,            :null => false, :default => 20
           t.integer  :nb_votes,             :null => false, :default => 0
           t.string   :stylesheet
           t.string   :old_password, :limit => 20
    diff --git a/db/schema.rb b/db/schema.rb
    index 525a360..f379062 100644
    --- a/db/schema.rb
    +++ b/db/schema.rb
    @@ -32,6 +32,8 @@ ActiveRecord::Schema.define(:version => 20120428174758) do
         t.string   "login",                  :limit => 40,                         :null => false
         t.string   "role",                   :limit => 10,  :default => "visitor", :null => false
         t.integer  "karma",                                 :default => 20,        :null => false
    +    t.integer  "min_karma",                             :default => 20,        :null => false
    +    t.integer  "max_karma",                             :default => 20,        :null => false
         t.integer  "nb_votes",                              :default => 0,         :null => false
         t.string   "stylesheet"
         t.string   "email",                                 :default => "",        :null => false
    diff --git a/spec/factories/accounts.rb b/spec/factories/accounts.rb
    index ada429e..60465e8 100644
    --- a/spec/factories/accounts.rb
    +++ b/spec/factories/accounts.rb
    @@ -8,6 +8,8 @@
     #  login                :string(40)      not null
     #  role                 :string(10)      default("visitor"), not null
     #  karma                :integer(4)      default(20), not null
    +#  min_karma            :integer(4)      default(20), not null
    +#  max_karma            :integer(4)      default(20), not null
     #  nb_votes             :integer(4)      default(0), not null
     #  stylesheet           :string(255)
     #  email                :string(255)     default(""), not null
    diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
    index bf9275f..84cc9a9 100644
    --- a/spec/models/account_spec.rb
    +++ b/spec/models/account_spec.rb
    @@ -8,6 +8,8 @@
     #  login                :string(40)      not null
     #  role                 :string(10)      default("visitor"), not null
     #  karma                :integer(4)      default(20), not null
    +#  min_karma            :integer(4)      default(20), not null
    +#  max_karma            :integer(4)      default(20), not null
     #  nb_votes             :integer(4)      default(0), not null
     #  stylesheet           :string(255)
     #  email                :string(255)     default(""), not null
    
    
  • # patch

    Posté par  (site web personnel) . En réponse à l’entrée du suivi Contenus lu ? Manque le 's'. Évalué à 2 (+0/-0).

    --- app/views/readings/index.html.haml.new  2012-05-24 18:53:04.000000000 +0900
    +++ app/views/readings/index.html.haml  2012-05-24 18:53:06.000000000 +0900
    @@ -3,7 +3,7 @@
         %h1 Mes lectures
         = button_to "Tout oublier", readings_path, :method => :delete, :class => "delete_button"
    
    -=h1 "Les derniers contenus que j'ai lu"
    +=h1 "Les derniers contenus que j'ai lus"
     = paginated_section @nodes do
       #contents
         = render @nodes.map(&:content)
    
    
  • [^] # Re: Précision

    Posté par  (site web personnel) . En réponse au journal L'énergie électrique est moins cher en Allemagne qu'en France. Évalué à 4.

    Exact.

    Déjà que pendant l'hiver, au boulot, on recevait des emails nous disant qu'on allait atteindre la limite de chauffage autorisé et qu'il fallait qu'on se calme un peu là dessus, et l'été dernier, on n'avait pas le droit d'utiliser les climatiseurs…

    De toute façon, les Japonais sont des gâcheurs d'énergie par excellence (en partie à cause des constructeurs dans l'immobilier, qui ne créent jamais de bâtiments avec isolation thermique. Tu coupes ton radiateur au fioul¹ ou ta clim, et en 10 minutes tu te retrouves de nouveau avec la température extérieure.)

    ¹: Oui, au Japon, on se chauffe souvent avec un radiateur portatif au fioul. Dans des maisons en bois. Malgré la présence de tremblements de terre pouvant renverser le chauffage.

  • [^] # Re: Twitter et Facebook.

    Posté par  (site web personnel) . En réponse au journal petite analyse des réseaux sociaux. Évalué à 3.

    Alors, voici quelques utilisations que j'ai, où facebook me parait vraiment plus pratique que l'email (ou ftp, aussi) :

    Contact

    • Adresse « atemporelle » (contrairement à un email qui change bien plus souvent)
    • Possibilité de trouver quelqu'un soi-même¹, avec un minimum d'informations via
      • nom/prénom
      • connaissance commune
      • Participation commune à un événement

    Très pratique quand on se rencontre lors d'un événement public, où même dans la rue, et qu'on ne peut échanger ses coordonnées par écrit/carte de visite. Il n'est même pas nécessaire de demander "dis, tu pourrais demander à ton colocataire de demander à son cousin les coordonnées du frère de sa copine ? Je voudrais savoir quelle marque de pot il utilise sur son solex !". Suffit de regarder les photos de la soirée, et voila : il a été taggé, et je peux lui envoyer un message.

    Organisation d'événements

    • Ajout/suppression dynamique d'invités
    • Modification des lieux/dates
    • Possibilité de savoir immédiatement qui vient ou non
    • Choix dynamique de la publicité de l'événement (public/privé, possibilité d'inviter ou non)
    • Possibilité de découvrir des activités créées par des gens qu'on ne connaît pas (comme un forum)

    Diffusion d'informations

    • En publiant (exemple purement hypothétique, hein) un message sur comment quitter un pays (ou, déjà, une ville/région) après un tremblement de terre et un incident nucléaire à 80 km de chez soi, je suis sûr que tous les expats de la région, amis ou pas, qui consultent facebook se retrouvent avec l'information très vite grâce aux groupes communs et du forward ciblé.

    Vente/achat

    • Gestion dynamique d'une liste de produits, avec photos et commentaires
    • Possibilité de sélectionner qui a accès ou non à la liste

    Conclusion

    La plupart de ces usages, dynamiques par excellence, ne sont pas faisable sans faire des échanges ou renvois d'emails, sans utiliser un service supplémentaire (comme meetup, flickr, un forum, craigslist), ou sans recouper des informations provenant de plusieurs sources (tout en sachant que certaines personnes ont des identités différentes sur différents sites).

    Aussi, j'ai accès à l'information sans avoir à la chercher.
    Si je cherche du travail à Singapour, pas besoin de demander "Eh, tu travaillais pas à Singapour il y a 4 ans?" il suffit de regarder son profil (et, dans le pire des cas, de vérifier sur linkedin après-coup). Peut-être même le sais-je déjà car j'ai récemment vu ses photos de Singapour.