2369 shaares
244 results
tagged
informatique
Ah ben merde alors. J'imaginais pas que ça irait si rapidement... Découverte d'une collision ya pas longtemps, et boum. Un algo pour les trouver...
Ah ben voilà, maintenant, je comprends ce qui se passe avec mon programme: la réponse de sds est limpide.
J'ai écrit un programme qui lit des raster, les affiche avec un plotRGB, met un point avec un buffer dessus, sauve l'image, et vire les raster. À la fin, un coup de rm(), un coup de gc(), et on répète ça sur un bon millier de cartes.
Pourtant, toutes les 10 cartes, on a:
Error: cannot allocate vector of size 9.6 Mb
Et après, on a beau tourner le truc dans tous les sens, plus moyen de faire quoi que ce soit. Et quand je regarde l'environnement, il est vide, ou quasi.
Trois fonctions par ci par là, un data.frame de 30 lignes, une vingtaine de tout petits objets, mais ne constituant pas un 1Mo de mémoire bouffée. Quasi-vide quoi. Et non seulement l'environnement est vide, mais la mémoire sous linux n'est qu'à moitié remplie (i.e. pas des masses de programmes tournant en même temps). Et pourtant, je peux pas allouer un vecteur, même de taille modeste: plus de place. C'était surréaliste. Là, l'explication de sds est limpide:
"The R garbage collector is imperfect in the following (not so) subtle way: it does not move objects (i.e., it does not compact memory) because of the way it interacts with C libraries (...). This means that if you take turns allocating small chunks of memory which are then discarded and larger chunks for more permanent objects (this is a common situation when doing string/regexp processing), then your memory becomes fragmented and the garbage collector can do nothing about it: the memory is released, but cannot be re-used because the free chunks are too short.
The only way to fix the problem is to save the objects you want, restart R, and reload the objects. "
Eh ben, moi j'ai pas le cul sorti des ronces comme dirait l'autre...
J'ai écrit un programme qui lit des raster, les affiche avec un plotRGB, met un point avec un buffer dessus, sauve l'image, et vire les raster. À la fin, un coup de rm(), un coup de gc(), et on répète ça sur un bon millier de cartes.
Pourtant, toutes les 10 cartes, on a:
Error: cannot allocate vector of size 9.6 Mb
Et après, on a beau tourner le truc dans tous les sens, plus moyen de faire quoi que ce soit. Et quand je regarde l'environnement, il est vide, ou quasi.
Trois fonctions par ci par là, un data.frame de 30 lignes, une vingtaine de tout petits objets, mais ne constituant pas un 1Mo de mémoire bouffée. Quasi-vide quoi. Et non seulement l'environnement est vide, mais la mémoire sous linux n'est qu'à moitié remplie (i.e. pas des masses de programmes tournant en même temps). Et pourtant, je peux pas allouer un vecteur, même de taille modeste: plus de place. C'était surréaliste. Là, l'explication de sds est limpide:
"The R garbage collector is imperfect in the following (not so) subtle way: it does not move objects (i.e., it does not compact memory) because of the way it interacts with C libraries (...). This means that if you take turns allocating small chunks of memory which are then discarded and larger chunks for more permanent objects (this is a common situation when doing string/regexp processing), then your memory becomes fragmented and the garbage collector can do nothing about it: the memory is released, but cannot be re-used because the free chunks are too short.
The only way to fix the problem is to save the objects you want, restart R, and reload the objects. "
Eh ben, moi j'ai pas le cul sorti des ronces comme dirait l'autre...
YEEEES. J'ai réussi cette étape-ci... En suivant à la lettre ces instructions, ça marche.
Edit: non, ça marche pas en fait. J'arrive bien à avoir ECW parmi les drivers dispo, mais impossible d'importer ce foutu ecw de merde avec. Erreur mémoire, mauvaise allocation.
Bon, je continue à chercher...
Edit 2: j'ai recompilé en remplaçant le so 64 bits par le 32, même souci... Je vais essayer avec une autre version du SDK...
Edit 3: Hexagon geospatial ne laisse pas le choix de la version du sdk. Tu prends celle qu'on te donne et tu la fermes (au passage, tu nous laisses ton nom, ton prénom, ton numéro de téléphone, ton adresse, etc.).
Le monde du propriétaire, j'adore.
Edit 4: Essai de recompiler complètement une version récente de gdal (2.1.3) en suivant les instructions ici: https://trac.osgeo.org/gdal/wiki/ECW
Après suppression de ma version précédente (1.11). La compilation plante à cause de l'ECW après une demi-heure de compilation. Recherche sur internet, je tombe sur ça: http://osgeo-org.1560.x6.nabble.com/gdal-dev-gdal-2-1-ecw-5-2-1-td5299048.html
J'essaie la compilation avec les flags indiqués, rien à faire, la compilation plante encore à cause de cette saloperie de merde de chiotte d'ECW de mes couilles.
Et pour info, même problème avec une version plus ancienne de gdal quand on la recompile (1.11)
Edit 5: j'essaie une approche différente: je vais compiler une version ancienne du SDK, et recompiler gdal avec cette version. Je récupère la version ici:
https://github.com/cga-harvard/cga-worldmap/wiki/How-to-enable-ECW-support-in-GeoServer
Je compile ça, je l'installe, et je recompile gdal avec --with-ecw=/usr/lib
Edit 6: PUTAIN ÇA MARCHE TOUJOURS PAS!!!! J'ai essayé les deux versions de gdal, rien à faire. Ça compile, ça me liste ecw dans les drivers, mais putain ça veut pas me sortir un gdalinfo qui marche! On a toujours ce putain d'erreur d'allocation mémoire.
Dernier essai, j'essaie d'appliquer les patchs aux sources listés ici, et je recommence:
https://github.com/cga-harvard/cga-worldmap/wiki/How-to-enable-ECW-support-in-GeoServer
Edit 7: PUTAIN ÇA MARCHE!!!!! La vache, j'y ai passé la journée, mais j'ai RÉUSSI!!!!
Je synthétise: on récupère une ancienne version du SDK (version 3), on récupère et on applique les patchs des bugs (pour éviter les erreurs d'allocation mémoire), on la compile et on l'installe. Ensuite, on récupère les sources de gdal -- version 1.11, je garantis pas que ça marchera avec une version plus récente -- on compile ces sources (en indiquant l'adresse de la lib ECW lors du ./configure, puis après classique make), et on installe, et ça marche. Attention, il ne faut pas passer par l'étape "sudo gdal-ecw-build /usr/local" décrite ici: https://github.com/cga-harvard/cga-worldmap/wiki/How-to-enable-ECW-support-in-GeoServer (à part ça, ce lien est le plus proche de ce qui peut marcher).
Et on termine en recompilant le package raster et rgdal sous R pour pouvoir utiliser ça.
YEEEEEEEEEEEEEEEEEEEEEEESSSSSSS!!!!
Putain je commençais à plus y croire.
Edit 8: Euh, par contre, quand on recompile rgdal, on ne peut plus utiliser les versions de qgis et grass présentes dans les dépots: il faut complètement recompiler ces logiciels depuis les sources. C'est pas compliqué, mais c'est chiant. Donc si je synthétise, pour pouvoir importer l'ECW avec gdal, il faut récupérer la lib ECW version 3 (ancienne version sinon ça marche pas), compiler cette lib et l'installer, récupérer les sources de gdal en les compiler en indiquant la localisation de cette lib, et récupérer les sources et compiler tous les SIG qui s'appuient sur gdal.
Donc tous les SIG (qgis et grass), puisque gdal est central. Et, bien sûr, les packages R associés. Moralité, pour pouvoir utiliser ce format de merde, il faut réinstaller TOUT le système.
Je l'ai fait, mais ce que je pense du monde du logiciel propriétaire est assez clair je pense...
Edit: non, ça marche pas en fait. J'arrive bien à avoir ECW parmi les drivers dispo, mais impossible d'importer ce foutu ecw de merde avec. Erreur mémoire, mauvaise allocation.
Bon, je continue à chercher...
Edit 2: j'ai recompilé en remplaçant le so 64 bits par le 32, même souci... Je vais essayer avec une autre version du SDK...
Edit 3: Hexagon geospatial ne laisse pas le choix de la version du sdk. Tu prends celle qu'on te donne et tu la fermes (au passage, tu nous laisses ton nom, ton prénom, ton numéro de téléphone, ton adresse, etc.).
Le monde du propriétaire, j'adore.
Edit 4: Essai de recompiler complètement une version récente de gdal (2.1.3) en suivant les instructions ici: https://trac.osgeo.org/gdal/wiki/ECW
Après suppression de ma version précédente (1.11). La compilation plante à cause de l'ECW après une demi-heure de compilation. Recherche sur internet, je tombe sur ça: http://osgeo-org.1560.x6.nabble.com/gdal-dev-gdal-2-1-ecw-5-2-1-td5299048.html
J'essaie la compilation avec les flags indiqués, rien à faire, la compilation plante encore à cause de cette saloperie de merde de chiotte d'ECW de mes couilles.
Et pour info, même problème avec une version plus ancienne de gdal quand on la recompile (1.11)
Edit 5: j'essaie une approche différente: je vais compiler une version ancienne du SDK, et recompiler gdal avec cette version. Je récupère la version ici:
https://github.com/cga-harvard/cga-worldmap/wiki/How-to-enable-ECW-support-in-GeoServer
Je compile ça, je l'installe, et je recompile gdal avec --with-ecw=/usr/lib
Edit 6: PUTAIN ÇA MARCHE TOUJOURS PAS!!!! J'ai essayé les deux versions de gdal, rien à faire. Ça compile, ça me liste ecw dans les drivers, mais putain ça veut pas me sortir un gdalinfo qui marche! On a toujours ce putain d'erreur d'allocation mémoire.
Dernier essai, j'essaie d'appliquer les patchs aux sources listés ici, et je recommence:
https://github.com/cga-harvard/cga-worldmap/wiki/How-to-enable-ECW-support-in-GeoServer
Edit 7: PUTAIN ÇA MARCHE!!!!! La vache, j'y ai passé la journée, mais j'ai RÉUSSI!!!!
Je synthétise: on récupère une ancienne version du SDK (version 3), on récupère et on applique les patchs des bugs (pour éviter les erreurs d'allocation mémoire), on la compile et on l'installe. Ensuite, on récupère les sources de gdal -- version 1.11, je garantis pas que ça marchera avec une version plus récente -- on compile ces sources (en indiquant l'adresse de la lib ECW lors du ./configure, puis après classique make), et on installe, et ça marche. Attention, il ne faut pas passer par l'étape "sudo gdal-ecw-build /usr/local" décrite ici: https://github.com/cga-harvard/cga-worldmap/wiki/How-to-enable-ECW-support-in-GeoServer (à part ça, ce lien est le plus proche de ce qui peut marcher).
Et on termine en recompilant le package raster et rgdal sous R pour pouvoir utiliser ça.
YEEEEEEEEEEEEEEEEEEEEEEESSSSSSS!!!!
Putain je commençais à plus y croire.
Edit 8: Euh, par contre, quand on recompile rgdal, on ne peut plus utiliser les versions de qgis et grass présentes dans les dépots: il faut complètement recompiler ces logiciels depuis les sources. C'est pas compliqué, mais c'est chiant. Donc si je synthétise, pour pouvoir importer l'ECW avec gdal, il faut récupérer la lib ECW version 3 (ancienne version sinon ça marche pas), compiler cette lib et l'installer, récupérer les sources de gdal en les compiler en indiquant la localisation de cette lib, et récupérer les sources et compiler tous les SIG qui s'appuient sur gdal.
Donc tous les SIG (qgis et grass), puisque gdal est central. Et, bien sûr, les packages R associés. Moralité, pour pouvoir utiliser ce format de merde, il faut réinstaller TOUT le système.
Je l'ai fait, mais ce que je pense du monde du logiciel propriétaire est assez clair je pense...
En conclusion: l'ECW est un format de merde. Peut-être que ça permet une compression impressionnante, mais des données publiques dans des formats fermés, c'est vraiment la merde.
Je HAIS l'ECW. Je vais quand même pas devoir réinstaller tout mon système juste pour pouvoir lire ces putains d'ECW de merde?
Je hais ce format.
Je HAIS l'ECW. Je vais quand même pas devoir réinstaller tout mon système juste pour pouvoir lire ces putains d'ECW de merde?
Je hais ce format.
Construction du support ECW pour GDAL. Je garde sous le coude
Edit: marche pas.
Edit: marche pas.
De l'usage des index spatiaux pour accélérer les opérations spatiales avec spatialite. Spatialite, je découvre je découvre...
Et j'adopte!
Et j'adopte!
Tout est là. À garder sous le coude donc.
A lire
Intéressant.
Marrant.
Quelques ressources sympa autour du LaTeX
Un algorithme qui va essayer d'identifier la bonne réponse à une question factuelle posée à une foule: la bonne réponse n'est pas nécessairement la réponse majoritaire.
À creuser.
À creuser.
Je suis assez d'accord avec l'analyse. Après, au niveau professionnel, il y a certains utilisateurs intéressants à suivre. Des qui sont super doués pour dénicher ZE papier passé inaperçu et super utile pour la résolution de telle ou telle problématique. Je passe pas ma vie sur twitter, je m'en sers comme d'un lecteur de flux. Je regarde, dans des listes, ce qu'ont twitté ces personnes. Et je m'en tiens éloigné dès qu'un évènement majeur se produit (récemment, élection de Trump, brexit, résultat de la primaire de la droite en France). Le bruit sur twitter à ce moment là noie toute l'info, et ya plus rien à en tirer.
...ou alors on compile le fichier .tex avec lualatex et tous les problèmes d'encodage sont gérés par le package fontspec.
J'avais oublié que j'étais passé à lualatex, et j'arrivais pas à retrouver les accents...
J'avais oublié que j'étais passé à lualatex, et j'arrivais pas à retrouver les accents...
Une explication claire aux différences entre fontenc et inputenc. Le premier définit les fontes utilisées en sortie, le second définit l'encodage utilisé en entrée, au moment de l'utilisateur du texte.
Du coup, à mettre dans l'en-tête d'un document latex:
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
Du coup, à mettre dans l'en-tête d'un document latex:
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
Mettre à jour shaarli
Un site qui permet d'évaluer l'impact d'un programmeur dans le domaine scientifique en fonction de trois critères:
* Nombre de citations dans des papiers open access (l'algo n'a pas accès aux papiers derrière un paywall)
* Réutilisation du code par d'autres (basé sur l'algo pagerank de google)
* Nombre de téléchargements
Le site est décrit dans un article de nature: http://www.nature.com/news/the-unsung-heroes-of-scientific-software-1.19100
Apparemment, l'auteur va chercher à ajouter une nouvelle métrique basée sur le nombre de discussions sur internet qui citent un package. Le site indique également que l'on pourra bientôt faire le lien avec l'orcid.
À suivre, donc!
* Nombre de citations dans des papiers open access (l'algo n'a pas accès aux papiers derrière un paywall)
* Réutilisation du code par d'autres (basé sur l'algo pagerank de google)
* Nombre de téléchargements
Le site est décrit dans un article de nature: http://www.nature.com/news/the-unsung-heroes-of-scientific-software-1.19100
Apparemment, l'auteur va chercher à ajouter une nouvelle métrique basée sur le nombre de discussions sur internet qui citent un package. Le site indique également que l'on pourra bientôt faire le lien avec l'orcid.
À suivre, donc!
Intéressant: une communauté de gens qui partagent plein de trucs autour des couleurs, notamment des palettes.
Encore plus intéressant, le package colourlovers sous R permet d'importer facilement ces palettes sous R.
Encore plus intéressant, le package colourlovers sous R permet d'importer facilement ces palettes sous R.
...avec une explication bien claire sur le fonctionnement de nice
Récupéré du Shaarli de sebsauvage. Je reproduis:
"Pour lancer une tâche en fond sans qu'elle me ralentisse, avec la priorité CPU et accès disque minimale, j'ai cet alias dans mon ~/.bashrc:
alias ni='nice -n 19 ionice -c3'
Pour lancer une commande, j'ajoute juste le 'ni' devant et ça roule...
Pratique pour compresser de gros dossiers en tâche de fond, par exemple."
"Pour lancer une tâche en fond sans qu'elle me ralentisse, avec la priorité CPU et accès disque minimale, j'ai cet alias dans mon ~/.bashrc:
alias ni='nice -n 19 ionice -c3'
Pour lancer une commande, j'ajoute juste le 'ni' devant et ça roule...
Pratique pour compresser de gros dossiers en tâche de fond, par exemple."