Attention avec les dict ça bouffe très vite énormément de mémoire.
Oui… quand on parcourt toutes les combinaisons possibles rien qu’entre caractères lus ça va vite très vite.
Pour la mémoire j’ai abandonné le deque pour stocker mon tampon, le problème étant qu’un deque n’est pas adressable à l’aide de slices ([:4])… contrairement à un string. J’ai bien profité du conseil concernant collections.Counter(), c’est vraiment le type de variable dont j’avais besoin.
J’ai un peu changé d’approche pour conserver les « strings » (sentences), je me base sur des expressions régulières, c’est plus propre. Dès que j’ai un truc correct je le postici.
De plus tu utilise sqlite, je ne connais pas les performance de ce moteur pour les update mais peut être que choisir mysql(ou mariadb)
Alors là attention, que ça puisse fonctionner plus ou ou moins vite sous MariaDB c’est clairement pas un angle d’étude pour le moment… J’utilise sqlite parce que c’est parfaitement adapté à la modélisation (et c’est par ailleurs l’un des meilleurs moteur opensource de base relationnelle). SQLite ça marche partout. sqlite passe le test ACID : https://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID je n’en suis pas si sûr pour MarioleDB…
C’est volontaire de vouloir prendre les signes de ponctuation…
Pour moi 'mice' et 'mice.' ne sont pas deux chaînes identiques. De la deuxième on peut présager que le mot « mice » a des chances de terminer une phrase. À part le remplacement des retour à la ligne par des espaces puis la réduction des espaces consécutives à une seule espace je travaille en mode suite de caractères.
Merci pour tous ces conseils avisés ! Surtout pour le collections.Counter je pense que ça va me servir…
import fileinput
for line in fileinput.input():
Ma ligne peut avoir une longueur variable. J’aurais toujours besoin de la traiter en morceau de N caractères car je ne vais pas itérer sur tous les caractères de la ligne si je n’ai pas besoin de conserver des chaînes de plus de N caractères. J’ai également besoin d’avoir la fréquence de chaînes telles que "titi\ntoto" je devrais donc conserver un certain nombre de caractères de la ligne précédente à chaque fois…
J’ai trouvé plus simple d’avoir une sorte de « fenêtre » (buf) qui va « glisser » sur mon entrée… Par exemple si je prends un MAXLEN de 2 et que mon entrée est "abcd\n" j’aurais tour à tour :
ab
bc
cd
d\n
Avec MAXLEN à 3 j’aurais, en plus :
abc
bcd
cd\n
si tu crois que tu as besoin de gérer la mémoire toi-même en Python
Non, j’ai bien conscience que ce n’est pas à moi de gérer la mémoire.
As-tu au moins essayé de mettre une trace entre l’analyse du texte et la mise à jour de la base de données pour en être sûr ?
Je le vois simplement grâce au sys.stderr.write(…) qui est fait entre chaque étape, la première étape (chargement) et la deuxième (suppression des chaînes qui coupent des mots en deux, sauf les petites…) s’exécutent en un temps acceptable.
Personnellement, je lirais l’entrée par ligne, je splitterais sur les espaces et signes de ponctuation (ou tout ce qui n’est pas une lettre), comme ça, j’aurais directement les mots et ensuite seulement, pour chaque mot, j’itérerais sur la lettre de départ et la longueur pour avoir les groupes de lettres.
En faisant ça si j’ai une première ligne qui contient "voici une première ligne" et une seconde qui contient "et là une deuxième" je n’aurais pas d’entrée créée contenant le dernier mot de la première et le premier de la deuxième ("ligne et"). Je n’aurais pas non plus 'e e', 'e et', etc… (je remplace systématiquement "\n" par "n"…)
J’utilise donc un tampon de MAXLEN caractères qui se décale de MAXLEN-1 caractères à chaque fois afin que le dernier caractère du précédent tampon se retrouve premier du tampon suivant. Pour ça un deque me semblait plus adapté qu’un string
je chargerais tout le texte en mémoire (mon premier ordinateur avait 8 Ko de mémoire
Comme tu peux le voir le programme lit l’entrée standard, pour l’instant il attend EOF pour traiter les données mais à terme je veux qu’il puisse tourner en continue, en faisant un màj de la base tous les N tampons/caractères.
[edit: vas y efface, c'est ce que tu fais deja j'ai mal lu ton code]
Euh… bah non :)
Utiliser time() je sais faire mais je ne l’ai pas fait ici, je lance simplement le script précédé de la commande time. Vu la sortie d’erreur je sais à peu près combien de temps prend chaque étape. Je remarque nettement que ça va à une vitesse correct quand la base est vide (donc que les INSERT aboutissent).
A priori, ta structure de donnee comptant les syllabes/mots ne devraient pas augmenter lineairement avec la taille de tes textes
Oui. Plus les textes passeront plus il aura de mises à jour et moins d’insertions.
Pourquoi ne pas stocker l'information en memoire (et ne la mettre dans la base de donnee qu'a la fin)
Le genre de code qui va (si je n’y suis pas habitué pour une raison ou une autre) me nécessiter une heure pour rechercher sur le web et assimiler (c’est à dire accepter en son âme de codeur, profondément, que cela puisse pertinemment s’écrire ainsi…) avant de passer à la suite du code…
J’ai dit « concis && élégant », j’aurais du ajouter lisible pour le commun des programmeurs :)
Il faut reconnaître que l’« expansion de variable » en shell c’est une des caractéristiques de ce genre de langage et c’est rudement pratique.
$ if (rm test); then echo ok; fi
rm: cannot remove `test': No such file or directory
$ touch test; if (rm test); then echo ok; fi
ok
Bah c’est justement ce que je dis, dans le premier cas la commande a un code retour ≠ 0 la condition est fausse alors que dans la deuxième le code retour est 0 est la condition est vrai :
≠ 0 implique faux
0 implique vrai
Donc c'est plus logique d'attribuer 0 à ok et !0 à toutes les situations non ok.
Oui mais quand on apprend la logique on note 0 = faux et 1 = vrai, c’est le contraire en shell.
Dans les autres langages de programmation on également plutôt l’habitude qu’une valeur différente de zéro soit évaluée vraie et zéro soit évalué faux.
Ça t’évite de finir par devoir retaper deux fois des commandes quand tu te retrouves sur un AIX qui ne connaît que more, parce que tes doigts tapent less plus vite que ton cerveau ne réfléchit ^^
D’après le man de more:
Cette version est particulièrement primitive. Les utilisateurs doivent se convaincre que
less(1) constitue une excellente émulation de more(1) avec en plus de nombreuses améliorations.
Le fait que ce programme soit toujours disponible ne serait-il pas lié à la norme POSIX ?
Entre le programme true, et le programme [ , je trouve que le shell c'est de la bidouille …
C’est horrible ce [… genre if [ -z $v ]; then… ça ressemble à quoi ? :) On peut même ôter le crochet fermant qui n’est autorisé par le langage que pour la seule bonne raison qu’un crochet ouvert qui reste ouvert c’est très grave… presque autant qu’une parenthèse !
Maintenant j’essaie d’écrire : if test -z $v; then… c’est bien ce qu’il y a de plus logique et clair à lire selon moi.
Oui le shell c’est spécial comme « langage de programmation » vu que ce n’en ai pas vraiment un.
En m’y mettant j’ai eu un peu de mal avec la logique binaire… On a l’habitude de considérer que 1 représente vrai et 0 représente faux, or le code retour des programmes c’est 0 pour OK, par convention. Si je fais un if (rm toto) et que la commande « plante » (parce que le fichier toto n’existe pas par exemple) ma condition sera fausse.
L’utilisation des opérateurs && et || entre plusieurs commandes permet souvent d’être concis et élégant, je trouve.
C’est marrant j’ai eu exactement le même bug sous Firefox sous Windows pendant un moment, bien que le dictionnaire FR ait été installé ça repassait systématiquement à l’anglais… J’ai plus le problème depuis une ou deux versions. Un problème avec le plugin peut-être…
Par contre j’ai la même chose dans Outlook, qui par en sucette si j’ai le malheur de devoir écrire un mail dans les deux langues en même temps… et là j’ai même pas trouvé comment re-switcher vite fait :)
Mouaif… il a pas changé la licence de son logiciel hein… Je pense qu’il s’est dit à juste titre qu’il toucherait plus de monde en utilisant ce compte, plus « pro », vu que c’est aussi le sien je vois pas pourquoi il aurait du se gêner…
firefox a toujours souffert de fuites mémoire […] la RAM utilisée ne cessait de s'accroitre sans raison.
C’était vrai pendant un temps mais j’ai l’impression que c’est corrigé. En tous cas j’ai plus de problème de fuite mémoire depuis un petit moment maintenant.
Là j’ai que onze onglets, quelques plugins, Iceweasel est stable à 1GB de mémoire virtuelle. Au boulot sous Windows avec plus d’onglets et plus de plugins c’est en deça (quelques centaines de MB).
Le seul souci que j’ai de temps à autre avec Firefox/Iceweasel c’est une utilisation CPU à 100% (qui fige l’UI) à cause de scripts Javascript foireux…
Récupérer un territoire anéanti par des bombardements où la moitié des civils sont morts ce n’est pas très intéressant et c’est normalement interdit. Pour neutraliser une armée et récupérer un territoire il faut toujours des troupes au sol.
Dans le cas du Japon il ne s’agissait pas de récupérer un territoire et la plupart des victimes des deux bombes atomiques furent des civils.
j'ai déjà effectué une mise à niveau il y a quelques mois pour la dernière version, la 15.10 je pense. Un ami m'a expliqué que parfois il faut attendre un peu avant de faire la mise à niveau pour être sure que la nouvelle version soit traduite en français, est-ce vrai ?
Plus ou moins, de manière générale quand on migre tôt on a toujours un risque d’« essuyer les plâtres » comme on dit.
La 15.10 est la dernière version stable non LTS, son support (mises à jour de sécurité) s’arrêtera en juillet 2016, à ce moment là tu devras forcément encore changer de version, en 16.04 LTS (qui sortira en mars 2016). Puis en octobre 2016 tu auras à nouveau le choix entre : 1- rester sur la 16.04 ou 2- passer en 16.10…
J’ai l’air d’insister mais ce principe de LTS (Long Term Support) me paraît assez important. Ça peut être chiant de devoir mettre à niveau tous les six mois, sauter de version LTS en version LTS te permet de ne faire ce saut que tous les deux ans et de conserver la même version de tes logiciels pendant ce laps de temps…
Pour flash c’est vraiment compliqué… Toute l’histoire ici.
L’article dit que tu peux installer Chrome (le navigateur made by Google) qui dispose d’une version plus récente de ce greffon. C’est à essayer… Tu peux même peut-être utiliser Chromium, c’est la version libre de Google Chrome, qui est disponible dans la logithèque Ubuntu.
À tous hasard, le plugin est bien installé ? Tu peux voir la liste des plugins installés en tapant about:plugins dans la barre d’adresse de Firefox. Si ce n’est pas le cas le package à installer s’appelle libflashplugin-installer
```
Pour les autres applications Adobe vous trouverez des équivalents sous Ubuntu tout aussi efficaces.
Tous aussi efficace ce n’est pas toujours vrai. Concernant le format PDF, le support de certaines des dernières fonctionnalités développées par Adobe est parfois absent chez les équivalents libres.
Une mise à jour empêche une application malveillante d’utiliser une faille connue également, en la bouchant…
[^] # Re: En memoire
Posté par Marotte ⛧ . En réponse au journal Analyse de texte. Évalué à 2.
Oui… quand on parcourt toutes les combinaisons possibles rien qu’entre caractères lus ça va vite très vite.
Pour la mémoire j’ai abandonné le deque pour stocker mon tampon, le problème étant qu’un deque n’est pas adressable à l’aide de slices ([:4])… contrairement à un string. J’ai bien profité du conseil concernant collections.Counter(), c’est vraiment le type de variable dont j’avais besoin.
J’ai un peu changé d’approche pour conserver les « strings » (sentences), je me base sur des expressions régulières, c’est plus propre. Dès que j’ai un truc correct je le postici.
Alors là attention, que ça puisse fonctionner plus ou ou moins vite sous MariaDB c’est clairement pas un angle d’étude pour le moment… J’utilise sqlite parce que c’est parfaitement adapté à la modélisation (et c’est par ailleurs l’un des meilleurs moteur opensource de base relationnelle). SQLite ça marche partout. sqlite passe le test ACID : https://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID je n’en suis pas si sûr pour MarioleDB…
[^] # Re: I like =
Posté par Marotte ⛧ . En réponse au journal Analyse de texte. Évalué à 2.
Je viens de tester avec
=à la place delikeles performances sont bien meilleures effectivement :)Merci à vous deux. Le temps d’exécution est passé de 15 min à 40 s (environ)…
Pour le nombre de chaque requête je ne sais pas encore, je garde en tête ta remarque très judicieuse sur l’ordre d’exécution.
[^] # Re: Je ne ferais pas ça comme ça.
Posté par Marotte ⛧ . En réponse au journal Analyse de texte. Évalué à 2.
En incluant les suites telles que "a ma" je peux toujours par la suite filtrer avec une expression régulière pour n’avoir que les mots.
[^] # Re: occurrence des mots
Posté par Marotte ⛧ . En réponse au journal Analyse de texte. Évalué à 3.
C’est volontaire de vouloir prendre les signes de ponctuation…
Pour moi 'mice' et 'mice.' ne sont pas deux chaînes identiques. De la deuxième on peut présager que le mot « mice » a des chances de terminer une phrase. À part le remplacement des retour à la ligne par des espaces puis la réduction des espaces consécutives à une seule espace je travaille en mode suite de caractères.
[^] # Re: Je ne ferais pas ça comme ça.
Posté par Marotte ⛧ . En réponse au journal Analyse de texte. Évalué à 3.
Oui c’est ça. N’importe quel groupe de caractères en fait.
Y’en a pas vraiment… je fais des essais on va dire…
[^] # Re: On dirait du C
Posté par Marotte ⛧ . En réponse au journal Analyse de texte. Évalué à 2.
Merci pour tous ces conseils avisés ! Surtout pour le collections.Counter je pense que ça va me servir…
Ma ligne peut avoir une longueur variable. J’aurais toujours besoin de la traiter en morceau de N caractères car je ne vais pas itérer sur tous les caractères de la ligne si je n’ai pas besoin de conserver des chaînes de plus de N caractères. J’ai également besoin d’avoir la fréquence de chaînes telles que "titi\ntoto" je devrais donc conserver un certain nombre de caractères de la ligne précédente à chaque fois…
J’ai trouvé plus simple d’avoir une sorte de « fenêtre » (buf) qui va « glisser » sur mon entrée… Par exemple si je prends un MAXLEN de 2 et que mon entrée est "abcd\n" j’aurais tour à tour :
Avec MAXLEN à 3 j’aurais, en plus :
Non, j’ai bien conscience que ce n’est pas à moi de gérer la mémoire.
[^] # Re: Je ne ferais pas ça comme ça.
Posté par Marotte ⛧ . En réponse au journal Analyse de texte. Évalué à 3.
Je le vois simplement grâce au
sys.stderr.write(…)qui est fait entre chaque étape, la première étape (chargement) et la deuxième (suppression des chaînes qui coupent des mots en deux, sauf les petites…) s’exécutent en un temps acceptable.En faisant ça si j’ai une première ligne qui contient "voici une première ligne" et une seconde qui contient "et là une deuxième" je n’aurais pas d’entrée créée contenant le dernier mot de la première et le premier de la deuxième ("ligne et"). Je n’aurais pas non plus 'e e', 'e et', etc… (je remplace systématiquement "\n" par "n"…)
J’utilise donc un tampon de MAXLEN caractères qui se décale de MAXLEN-1 caractères à chaque fois afin que le dernier caractère du précédent tampon se retrouve premier du tampon suivant. Pour ça un deque me semblait plus adapté qu’un string
Comme tu peux le voir le programme lit l’entrée standard, pour l’instant il attend EOF pour traiter les données mais à terme je veux qu’il puisse tourner en continue, en faisant un màj de la base tous les N tampons/caractères.
[^] # Re: nltk
Posté par Marotte ⛧ . En réponse au journal Analyse de texte. Évalué à 3.
Comme un sac de caractères même… :)
Je me pencherai sur NLTK un de ces jours ça a l’air bien mais là je veux une approche plus « bête », basée seulement sur les fréquences d’apparition.
[^] # Re: nltk
Posté par Marotte ⛧ . En réponse au journal Analyse de texte. Évalué à 2.
Très intéressant, merci.
[^] # Re: En memoire
Posté par Marotte ⛧ . En réponse au journal Analyse de texte. Évalué à 2.
Euh… bah non :)
Utiliser time() je sais faire mais je ne l’ai pas fait ici, je lance simplement le script précédé de la commande time. Vu la sortie d’erreur je sais à peu près combien de temps prend chaque étape. Je remarque nettement que ça va à une vitesse correct quand la base est vide (donc que les INSERT aboutissent).
Oui. Plus les textes passeront plus il aura de mises à jour et moins d’insertions.
C’est ce que je vais faire.
[^] # Re: on teste le seuil bas de moinsage ?
Posté par Marotte ⛧ . En réponse au journal La fin de la fin.. Évalué à 2.
En te moinssant je participe à 33% de ta note à moi tout seul, ça me console.
[^] # Re: DMP et SESAM-Vitale: des certifications aussi
Posté par Marotte ⛧ . En réponse au journal la fin des logiciels libres de comptabilité et de gestion de caisses. Évalué à 2. Dernière modification le 15 décembre 2015 à 02:01.
Je viens de tomber sur ton commentaire. Est-ce que par « trivial » tu ne voulais pas tout à fait signifier l’inverse ?
Parce que la définition de « trivial » c’est :
alors que « kits de developement four-tout avec de multiples versions des protocoles »
ça pue un peu la complexité…
http://www.larousse.fr/dictionnaires/francais/trivial
:)
# Erratum
Posté par Marotte ⛧ . En réponse au journal Analyse de texte. Évalué à 2.
Le premier commentaire est erroné :
s/~which don't match~/which match/[^] # Re: false
Posté par Marotte ⛧ . En réponse au journal Le core utile. Évalué à 4.
Le genre de code qui va (si je n’y suis pas habitué pour une raison ou une autre) me nécessiter une heure pour rechercher sur le web et assimiler (c’est à dire accepter en son âme de codeur, profondément, que cela puisse pertinemment s’écrire ainsi…) avant de passer à la suite du code…
J’ai dit « concis && élégant », j’aurais du ajouter lisible pour le commun des programmeurs :)
Il faut reconnaître que l’« expansion de variable » en shell c’est une des caractéristiques de ce genre de langage et c’est rudement pratique.
[^] # Re: false
Posté par Marotte ⛧ . En réponse au journal Le core utile. Évalué à 2.
Bah c’est justement ce que je dis, dans le premier cas la commande a un code retour ≠ 0 la condition est fausse alors que dans la deuxième le code retour est 0 est la condition est vrai :
≠ 0 implique faux
0 implique vrai
Oui mais quand on apprend la logique on note 0 = faux et 1 = vrai, c’est le contraire en shell.
Dans les autres langages de programmation on également plutôt l’habitude qu’une valeur différente de zéro soit évaluée vraie et zéro soit évalué faux.
[^] # Re: Des oublis ?
Posté par Marotte ⛧ . En réponse au journal Le core utile. Évalué à 2.
Ça t’évite de finir par devoir retaper deux fois des commandes quand tu te retrouves sur un AIX qui ne connaît que more, parce que tes doigts tapent less plus vite que ton cerveau ne réfléchit
^^D’après le man de more:
Le fait que ce programme soit toujours disponible ne serait-il pas lié à la norme POSIX ?
[^] # Re: false
Posté par Marotte ⛧ . En réponse au journal Le core utile. Évalué à 5.
C’est horrible ce
[… genreif [ -z $v ]; then…ça ressemble à quoi ? :) On peut même ôter le crochet fermant qui n’est autorisé par le langage que pour la seule bonne raison qu’un crochet ouvert qui reste ouvert c’est très grave… presque autant qu’une parenthèse !Maintenant j’essaie d’écrire :
if test -z $v; then…c’est bien ce qu’il y a de plus logique et clair à lire selon moi.Oui le shell c’est spécial comme « langage de programmation » vu que ce n’en ai pas vraiment un.
En m’y mettant j’ai eu un peu de mal avec la logique binaire… On a l’habitude de considérer que 1 représente vrai et 0 représente faux, or le code retour des programmes c’est 0 pour OK, par convention. Si je fais un if (rm toto) et que la commande « plante » (parce que le fichier toto n’existe pas par exemple) ma condition sera fausse.
L’utilisation des opérateurs
&&et||entre plusieurs commandes permet souvent d’être concis et élégant, je trouve.# Mais que fait la police ?
Posté par Marotte ⛧ . En réponse au journal Tentative d'escroquerie téléphonique. Évalué à 0.
Elle protège et elle sert !
C’était sûrement l’auto-dialer (de Marge)… Ne t’inquiète pas c’est réglé.
https://www.youtube.com/watch?v=nbbIXMDGb_w
# Mes deux centimes
Posté par Marotte ⛧ . En réponse au message Problème de paramétrage de langue ?. Évalué à 1.
C’est marrant j’ai eu exactement le même bug sous Firefox sous Windows pendant un moment, bien que le dictionnaire FR ait été installé ça repassait systématiquement à l’anglais… J’ai plus le problème depuis une ou deux versions. Un problème avec le plugin peut-être…
Par contre j’ai la même chose dans Outlook, qui par en sucette si j’ai le malheur de devoir écrire un mail dans les deux langues en même temps… et là j’ai même pas trouvé comment re-switcher vite fait :)
[^] # Re: bof
Posté par Marotte ⛧ . En réponse au journal Notepad++ et FN ; ou quand un développeur parle d'autre chose que de développement. Évalué à 2.
Mouaif… il a pas changé la licence de son logiciel hein… Je pense qu’il s’est dit à juste titre qu’il toucherait plus de monde en utilisant ce compte, plus « pro », vu que c’est aussi le sien je vois pas pourquoi il aurait du se gêner…
[^] # Re: Budget
Posté par Marotte ⛧ . En réponse au journal La fin de Firefox OS. Évalué à 6.
C’était vrai pendant un temps mais j’ai l’impression que c’est corrigé. En tous cas j’ai plus de problème de fuite mémoire depuis un petit moment maintenant.
Là j’ai que onze onglets, quelques plugins, Iceweasel est stable à 1GB de mémoire virtuelle. Au boulot sous Windows avec plus d’onglets et plus de plugins c’est en deça (quelques centaines de MB).
Le seul souci que j’ai de temps à autre avec Firefox/Iceweasel c’est une utilisation CPU à 100% (qui fige l’UI) à cause de scripts Javascript foireux…
[^] # Re: Juste un point
Posté par Marotte ⛧ . En réponse au journal "Tout le monde peut être une cible". Évalué à 5.
Récupérer un territoire anéanti par des bombardements où la moitié des civils sont morts ce n’est pas très intéressant et c’est normalement interdit. Pour neutraliser une armée et récupérer un territoire il faut toujours des troupes au sol.
Dans le cas du Japon il ne s’agissait pas de récupérer un territoire et la plupart des victimes des deux bombes atomiques furent des civils.
[^] # Re: Mises à jour
Posté par Marotte ⛧ . En réponse au message Mises à jours sous Linux - Ubuntu. Évalué à 2.
Plus ou moins, de manière générale quand on migre tôt on a toujours un risque d’« essuyer les plâtres » comme on dit.
La 15.10 est la dernière version stable non LTS, son support (mises à jour de sécurité) s’arrêtera en juillet 2016, à ce moment là tu devras forcément encore changer de version, en 16.04 LTS (qui sortira en mars 2016). Puis en octobre 2016 tu auras à nouveau le choix entre : 1- rester sur la 16.04 ou 2- passer en 16.10…
J’ai l’air d’insister mais ce principe de LTS (Long Term Support) me paraît assez important. Ça peut être chiant de devoir mettre à niveau tous les six mois, sauter de version LTS en version LTS te permet de ne faire ce saut que tous les deux ans et de conserver la même version de tes logiciels pendant ce laps de temps…
Pour flash c’est vraiment compliqué… Toute l’histoire ici.
L’article dit que tu peux installer Chrome (le navigateur made by Google) qui dispose d’une version plus récente de ce greffon. C’est à essayer… Tu peux même peut-être utiliser Chromium, c’est la version libre de Google Chrome, qui est disponible dans la logithèque Ubuntu.
À tous hasard, le plugin est bien installé ? Tu peux voir la liste des plugins installés en tapant about:plugins dans la barre d’adresse de Firefox. Si ce n’est pas le cas le package à installer s’appelle libflashplugin-installer
```
[^] # Re: Oui
Posté par Marotte ⛧ . En réponse au message Mises à jours sous Linux - Ubuntu. Évalué à 2.
C’est à dire ? Flash ne fonctionne pas ou bien tu as juste un message lors des mises à jour ?
[^] # Re: Oui
Posté par Marotte ⛧ . En réponse au message Mises à jours sous Linux - Ubuntu. Évalué à 3.
Tous aussi efficace ce n’est pas toujours vrai. Concernant le format PDF, le support de certaines des dernières fonctionnalités développées par Adobe est parfois absent chez les équivalents libres.
Une mise à jour empêche une application malveillante d’utiliser une faille connue également, en la bouchant…