Après une légère mise à jour sur une debian instable, une application ruby on rails ne fonctionnait plus du tout.
En effet, il manquait un fichier VERSION.yml du module memcache.
Ce qui est bien avec le ruby, c'est que c'est un langage interprété, donc lent, mais cela permet de le modifier en temps réel.
J'ai donc regardé à quoi servait ce fichier.
Ce fichier est un fichier yaml, qui contient un numéro de version. C'est tout.
J'ai passé la constantes du numéro de version à 42.42.42, et l'application rails est retombé en marche.
En gros, il est chargé un fichier, qui est ensuite parsé en yaml, et 3 concaténations plus tard, on obtient un numéro de version qui sert à rien…
J'espère que c'est pas partout pareil dans le ruby.
# …
Posté par yellowiscool . Évalué à 2.
En plus, l'application rails qui était en panne était mon blog. D'habitude, j'écris sur mon blog, mais c'était urgent…
Envoyé depuis mon lapin.
[^] # Re: …
Posté par bibitte . Évalué à 4.
L'instable n'est par forcement instable d'un point de vue bug c'est juste que les version de paquet ne sont pas du tout stables, c'est une version de dev (SID veux dire "still in development") donc t'as un truc assez à jour d'un point de vue fraicheur mais avec quelques ratés dans le packaging ...
Dans le temps ou j'utilisai la SID ce qui m'arrivait souvent c'était des dépendances cassées, une mise à jour d'un paquet cassait un dépendance d'une autre ou alors le paquet d'un programme était mis à jour mais pas le paquet data qui va avec du coup il ne voulait plus s'installer, bref les joies de l'instable!!
Bref pour un blog ou un truc qui doit tourner 24h24 vaux mieux pas mettre une sid ou alors c'est jouer a la roulette russe a chaque MAJ
[^] # Re: …
Posté par yellowiscool . Évalué à 2.
Envoyé depuis mon lapin.
# OpenSSL toussa ..
Posté par Jean B . Évalué à 3.
http://www.mail-archive.com/debian-bugs-rc@lists.debian.org/(...)
Si tu utilisait le "gem" officiel tu n'aurait pas ce bug.
Ensuite pour les prochaines versions ce fichier disparait:
http://github.com/mperham/memcache-client/commit/c8ec03928ea(...)
NB: je ne blâme pas particulièrement Debian je constate juste.
# Logique
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 2.
Non, c'est un langage avec des interprètes lents, donc lent.
Le fait qu'il soit interprété ne le rend pas lent pour autant. Tu as des interprètes très rapides pour différents langages…
[^] # Re: Logique
Posté par yellowiscool . Évalué à 2.
Envoyé depuis mon lapin.
[^] # Re: Logique
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 2.
T'as des techniques d'interprétation rapides (utilisées dans pas mal d'interprètes Scheme, par exemple).
[^] # Re: Logique
Posté par JoeltheLion (site web personnel) . Évalué à 3.
Ca dépend ce qu'on entend par lent... J'aimerais beaucoup que tu me cites un langage interprété qui donne des programmes aussi rapides qu'un programme en C raisonnablement optimisé?
[^] # Re: Logique
Posté par Jean B . Évalué à -2.
Sur le premier bench il arrive devant C et sur les autres il est très loin d'être ridicule. Et encore tu parle de "raisonnablement optimisé", là les codes ont été retravaillées des tonnes de fois.
[^] # Re: Logique
Posté par yellowiscool . Évalué à 3.
En plus, certaines machines virtuelles transcodent le bytecode en code natif pour la machine hôte.
On est loin du petit langage interprété qui analyse un fichier texte et qui fait les opérations à la volée.
Envoyé depuis mon lapin.
[^] # Re: Logique
Posté par Jean B . Évalué à 0.
Python fait pareil, il compile les sources en bytecode (.pyc), et personne ne contredirait que c'est un langage interprété, bon certes il ne fait pas de JIT, et les primitives du bytecode sont de plus haut niveau, mais peu importe ce n'est pas du code natif.
[^] # Re: Logique
Posté par barmic . Évalué à 2.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Logique
Posté par JoeltheLion (site web personnel) . Évalué à 5.
D'autre part, comme le souligne yellowiscool, java n'est pas vraiment un langage interprété.
En l'état actuel des technologies disponibles, les langages interprétés sont toujours plus lents que ceux qui ne le sont pas.
[^] # Re: Logique
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à -2.
Il est pas un peu biaisé ton benchmark ?
[^] # Re: Logique
Posté par JoeltheLion (site web personnel) . Évalué à 0.
En fait, sur le fond, je suis un peu d'accord avec toi: en optimisant l'interpréteur, on peut s'approcher du code natif. Cependant même les meilleures implémentations actuelles sont toujours nettement plus lentes que le code produit par un bon compilateur de C, et je pense que c'est un fait qu'il ne faut pas oublier.
[^] # Re: Logique
Posté par Hojo . Évalué à 1.
C'est qu'un vague souvenir, donc pas de référence, mais peut-être ça parlera à quelqu'un.
[^] # Re: Logique
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 4.
Non. Le code compilé est, comme on s'y attend souvent, plus efficace que le code interprété. Je dis que « interprété = lent » n'est pas vrai, ce qui est différent.
Tu as énormément de variation au sein des langages interprétés…
Un interprète qui ressemble à
(define (ev e env)
(cond
((symbol? e) (cdr (assoc e env)))
...))
(define (eval e) (ev e '()))
sera bien plus lent qu'un interprète qui ressemble à
(define (ev e)
(cond
((symbol? e) (lambda (k env) (k (assoc e env))))
...))
(define (eval e) ((ev e) (lambda (v) v) '()))
(Ensuite, je persiste en disant que le bench est injuste : dès que tu optimises ton langage compilé, il est quasiment impossible pour une version (même pas forcément interprétée) non-optimisée de faire mieux !)
[^] # Re: Logique
Posté par barmic . Évalué à 2.
Du coup je comprends pas grand chose à l'exemple mais c'est pas grave.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.