Il me semble que j'avais essayé un peu après ça, mais la doc que j'avais trouvée n'était peut-être pas hyper à jour...
Existerait-il une doc (à peu près à jour...) genre "Python en 30 mn pour ceux qui programment déjà dans un langage de script" ?
(Ce n'est pas que je ne pourrais pas chercher moi-même, c'est juste que si je tombe aussi bien que la dernière fois...)
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
Bah, tu peux utiliser la methode __iadd__ :
variable_avec_un_nom_significatif += 1
Merci de l'info.
C"est récent, cette possibilité (moins de quelques années), ou c'est la doc que j'avais trouvée quand j'avais essayé Python qui était toute pourrie ?
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
Le problème c'est que avec un GC tu n'as pas vraiment de controle sur le moment de destruction de tes objets comme en C++ .
J'en suis conscient. La conclusion logique est de ne pas utiliser un GC.
Sur le coup, j'ai presque failli me lancer à faire un fork de Ruby avec un comptage de références et des destructeurs (mais bon, je me suis assis et j'ai attendu que ça passe ;-) ).
Bon, Perl 6 est sensé avoir un GC et des destructeurs. J'ai jeté un coup d'oeil à la description du principe, ça a l'air complexe, voire lourd, donc j'attends de voir (et dans le doute, je suis peut-être le perliste le moins impatient de la sortie de Perl 6)...
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
Afin d'utiliser l'authentification SASL avec ldaps
Je précise tout d'abord que je n'ai jamais utilisé SASL pour quoi que ce soit. J'ai déjà configuré (au boulot) un annuaire LDAP avec authentification de machines clientes dessus (et TLS pour empêcher tout sniffage de mot de passe sur le réseau), mais je ne sais pas quel impact supplémentaire a l'utilisation de SASL. Donc en particulier, ce que je vais te dire n'en tient pas compte.
As-tu un intérêt à utiliser SASL au delà de la connexion au serveur LDAP ?
Parce que je pense que la plupart des gens se contentent de TLS et que ça marche relativement facilement; en plus, comme ça n' a pas d'impact sur le mécanisme en général, tu peux commencer par mettre au point sans lui et l'ajouter quand le reste fonctionne.
je stocke les mots de passe en CLEARTEXT.
Pas glop !
S'il n'est pas possible d'avoir un mot de passe chiffré avec SASL, c'est une bonne raison de ne pas l'utiliser.
J'arrive à faire mes requêtes ldapsearch avec l'utilisateur admin et avec les utilisateurs autres, en ldap et en ldaps.
ldaps, c'est normalement du SSL. Quel est l'intérêt d'utiliser SASL en plus (en fait, c'est une vrai question, l'intérêt de SASL m"échappe d'un point de vue général, alors qu'il doit bien y en avoir un) ? ou est-ce utilisé à la place ?
En plus, les ACLs sont respectées : typiquement, tous les champs userPassword sont accessible depuis admin, un utilisateur lambda peut voir son mot de passe mais pas les autres, que du classique.
Ce qui signifie que l'authentification sur le serveur LDAP fonctionne correctement.
Note que si un des tes utilisateur en laisse un autre sur son compte 5 mn, celui-ci récupère son mot de passe en clair ! Il est normalement possible dans les ACL d'autoriser uniquement l'authentification et l'écriture pour le mot de passe, sans la lecture.
Au passage, évite les regexps dans les ACL, cela grève les perfs d'OpenLDAP.
Si je fait 'getent passwd', j'ai bien mes utilisateurs ldap.
Donc nss est bien configuré.
Par contre, nss et pam ne peuvent pas accéder au champ userPassword
Ils n'ont pas à accéder au champ userPassword. À supposer qu'ils y accèdent, comme il n'est pas dans un format Unix, ils ne sauront pas quoi en faire.
Le principe est que pamldap avec pam bien configuré teste avec une authentification sur le serveur LDAP si l'utilisateur et le mot de passe sont valides dessus, et considèrent si c'est le cas que l'utilisateur a le droit d'accéder à la machine cliente. Il s'agit d'un bind LDAP avec le dn de l'utilisateur et le mot de passe fourni, précédé d'une recherche avec la conf par défaut de ldap.conf (anonyme pour moi, mais ce n'est peut être pas forcément le cas, je n'ai pas de ldap.conf sous le coude pour vérifier) sur le nom d'utilisateur pour déterminer son dn. Il faut que ces deux opérations soient possibles.
Pour moi, le problème vient donc de ta configuration de PAM (le plus probable, il est très pointilleux : pour situer, ça m'est arrivé souvent qu'un fichier de conf qui fonctionne parfaitement avec une version ne fonctionne plus avec une version ultérieure) ou de ton ldap.conf (ou alors ça fonctionne mal à cause de SASL). Note que si ça n'a pas changé, ldapsearch et autres utilisent /etc/openldap/ldap.conf et toutes les autres applis dont PAM /etc/ldap.conf . Moi, pour éviter des problèmes incompréhensibles, je remplace systématiquement l'un des fichiers par un lien sur l'autre.
Tu devrais tracer les requêtes sur ton serveur pour voir si ton client fait bien les bonnes requêtes et si elles se déroulent correctement.
Je ne peux pas te donner un exemple de configuration (je suis en vacances), mais éventuellement, si tu peux tester avec une installation de Fedora sur une machine cliente, son installateur graphique a l'avantage de générer une configuration de l'authentification sur LDAP directement fonctionnelle (avec TLS, bon, pour SASL...), ça te ferait une base pour ta configuration de PAM (voire ton ldap.conf).
Sinon, pour tous tes problèmes de LDAP, la liste ldap-fr ( http://listes.cru.fr/sympa/info/ldap-fr ) peut être un meilleur endroit que LinuxFr pour obtenir des réponses.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
Maintenant (et c'est absolument pas un argument) j'ai l'impression que beaucoup plus de personnes utilisant perl se tourne vers ruby plutôt que python.
Alors, j'ai failli me mettre à Ruby : j'ai commencé un truc en Ruby pour essayer, je m'y suis mis super-vite, j'ai trouvé ça joli, sympa... et puis j'ai eu besoin d'un destructeur. Donc, j'ai tout jeté et j'ai arrêté définitivement Ruby (à moins qu'il n'existe vraiment un jour des destructeurs).
J'ai envisagé de me mettre à Python (pour écrire du code un peu plus abordable pour le commun des mortels, en particulier pour mes collègues), mais l'idée de devoir écrire du code genre
variable_avec_un_nom_significatif = variable_avec_un_nom_significatif + 1
parce que le concepteur estime que l'opérateur ++ est une complexité superflue, ça me bloque.
Le modèle objet de ruby est, je trouve, l'un des meilleurs que j'ai vu pour le moment (c'est pas parfait, mais bcp mieux que certains autres langages)
Plus joli que celui de Perl 5, OK. Mais l'un des meilleurs, rappelez-moi quand il incluera les destructeurs ! Je préfère largement un modèle objet un peu moche à un modèle objet limité.
Pas la peine de me dire pour la n-ième fois qu'il suffit d'utiliser les fermetures, ça n'a rien à voir, il faut le faire à l'utilisation des objets et non pas à la définition d'une classe : à ce stade-là, il faudrait, au lieu de définir une variable au début d'un bloc, passer systématiquement le bloc en paramètre au constructeur de la variable, au cas où l'on s'aperçoive ultérieurement qu'on a une finalisation à faire sur ce type d'objet. Et là, comme lisibilité de code, il y aura de quoi envier Perl !!!
Ah, j'ai failli passer sur le fait que les end, c'est naze, parce que c'est moins facile pour déterminer à quoi il correspondent (notamment quand on s'aperçoit qu'on en a oublié un quelque part) qu'avec une indentation comme Python ou des accolades comme Perl ou le C/C++ (de nombreux éditeurs, quand on passe sur une accolade, surlignent l'autre accolade correspondante).
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
Intéressant, mais semble y avoir eu un léger problème de mise en page entre le moment où tu as écrit ton astuce et son arrivée dans la rubrique astuce, non ?
Je pense que le résultat aurait dû ressembler à ça :
Dernièrement, j'ai eu besoin de modifier un grand nombre de documents PDF, en ajoutant un en-tête et un numéro de page sur chaque page.
J'ai pu réaliser cette opération rapidement en utilisant Perl et le module PDF::API2.
Voici une version "light" du script Perl que j'ai utilisé :
#!/usr/bin/perl
use PDF::API2;
my $file=shift;
my $out_file=shift||"test.pdf";
my $page_cnt=shift||1;
my $pdf = PDF::API2->open($file);
my $f1=$pdf->corefont('Times-Roman',-encode => "latin1");
my $f2=$pdf->corefont('Times-Italic',-encode => "latin1");
for my $p (1..$pdf->pages()){
my $page=$pdf->openpage($p);
$page->add_font($f1);
$page->add_font($f2);
my $gfx = $page->gfx;
$gfx->save; $gfx->fillcolor('black');
$gfx->textstart;
# Ajout du numéro de page centré en bas
$gfx->font($f1,10);
$gfx->translate(297.5,30);
$gfx->text_center("$page_cnt");
# Ajout de l'entete en haut à droite
$gfx->font($f2,10);
$gfx->translate(570,812);
$gfx->text_right("Texte placé en haut à droite");
$gfx->textend;
$gfx->restore;
$page_cnt++;
}
$pdf->saveas($out_file);
exit;
Vous pouvez aussi placer dans la boucle les instructions suivantes pour afficher en arriere plan de chaques page le mot "TOP-SECRET" en rouge et en diagonal :
(c'est le (1) de l'appel de $page->gfx(1) qui permet la mise en arrière plan de texte)
Pour finir un dernier exemple qui permet d'ajouter un logo (logo.jpg) en haut à gauche sur toutes les pages :
#!/usr/bin/perl
use PDF::API2;
my $file = shift;
my $out_file = shift||"test.pdf";
my $pdf = PDF::API2->open($file);
my $nb_pages = $pdf->pages();
my $img = $pdf->image_jpeg('logo.jpg');
for my $p (1..$nb_pages){
my $page=$pdf->openpage($p);
my $gfx = $page->gfx(1);
$gfx->save;
$gfx->image($img,40,790,0.4); # 0.4 est le facteur d'echelle
$gfx->restore;
}
$pdf->saveas($out_file);
P.S.: Si PDF::API2 n'est pas déja installé sur votre système, vous pouvez utiliser la commande : perl -MCPAN -e "install PDF::API2" pour l'installer.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
Je veux pouvoir encore faire quelque chose avec ma machine ! :-)
j'imagine que c'est un dd bien placé dans le cron
Au début (j'ai fait des tests plus poussés après avoir écrit le script, justement en l'utilisant), je craignais de devoir activer le disque avec une périodicité inférieure à 10 secondes (ç'eût été le cas avec hdparm -B 255), donc cron était écarté d'office. De toute façon, je préfère avoir une granularité inférieure à une minute, et puis cron n'est pas sensé non plus garantir un déclenchement très précis.
Qui plus est, l'utilisation de cron pour une très faible périodicité conduit quelquefois en cas de forte charge système à l'accumulation d'appels.
Un simple sleep dans le script suffit à garantir un délai entre les opérations sans inconvénient.
combiné avec sync ?
Je n'étais pas trop chaud pour sync non plus, ayant l'expérience (avec le traitement massifs de mails par le serveur mail après rapatriement par uucp) de la charge système induite par des syncs fréquents (le serveur mail en fait un pour chaque mail).
Comme une écriture sans sync ne force pas d'activité disque, je me suis donc orienté vers une lecture (aléatoire pour essayer d'éviter de tomber sur des données en cache, doublée pour améliorer les chances).
En cas de forte charge en accès disque, logiquement ma demande de lecture doit attendre son tour comme les autres, ce qui tendrait à augmenter la périodicité dans une situation où l'opération est superflue. Tant mieux.
Par ailleurs, pour réduire le risque de délai supplémentaire inopportun au déclenchement en cas de très forte charge CPU, je voulais éviter tout chargement de contexte, donc tout appel d'une commande externe, donc je me suis dirigé vers une solution en Perl pur.
Bon, je ne prétends pas qu'il n'y aurait pas une meilleure solution (fsync, plus léger qu'un sync complet, serait une bonne piste; une lecture planifiée plutôt qu'aléatoire serait plus propre, mais nécessiterait des informations supplémentaires comme la quantité de données mise en cache à chaque accès disque), mais en tout cas, celle à laquelle j'ai abouti fonctionne de manière satisfaisante : pas d'augmentation du nombre de parquage des têtes après le démarrage, plus discrète que ne l'était le parquage, augmentation de la charge du système insensible.
tu aurais pus poster le script car il ne doit pas etre tres grand :)
Il n'est pas hyper petit non plus, vu qu'il contient en plus tout ce qu'il faut pour fonctionner comme un démon.
Enfin voilà :
--------
#!/usr/bin/perl -w
use strict;
# Lecture periodique sur le disque dur pour empecher le parquage des tetes
# alors que le nombre maximal prevu est deja explose depuis longtemps.
# Fonctionne comme un demon si son nom se termine par "d".
# Delai entre deux lectures, valeur a ajuster suivant le materiel.
# ATTENTION : une valeur incorrecte peut ACCELERER la deterioration du disque.
# Il est donc crucial de l'ajuster finement en controlant l'effet avec smartctl.
# La valeur presente dans /etc/sysconfig/no_park est prioritaire et les
# parametres passes en ligne de commande sont encore plus prioritaires.
my $delai = 60;
# Descripteur de peripherique du disque, valeur par defaut normalement ecrasee
# par celle determinee a partir de /etc/fstab.
my $disque = '/dev/hda';
use POSIX;
# Determination du peripherique
if (open FSTAB, '</etc/fstab') {
while (<FSTAB>) {
m:^(\S+?)\d+\s+/\s: and $disque = $1 and last;
}
close FSTAB;
}
# Determination du delai entre deux activations
if (open CONF, '</etc/sysconfig/no_park') {
while (<CONF>) {
/^\s*DELAI\s*=\s*(\d+)\s*(#|$)/ and $delai = $1;
}
close CONF;
}
# Prise en compte prioritaire des eventuels parametres de la ligne de commande
foreach (@ARGV) {
if (m:/:) {
$disque = $_;
} elsif (/^\d+$/) {
$delai = $_;
}
}
# Ouverture du disque en lecture
open DD, "<$disque" or die "Impossible d'ouvrir $disque\n";
# Fermeture du disque et sortie en cas de signal d'interruption
$SIG{TERM} = $SIG{INT} = sub {
close DD;
exit;
};
# Si le nom de commande se termine par "d", il s'agit du demon,
if ($0 =~ /d$/) {
# donc on detache le processus.
my $tent = 0;
DETACH:
if (my $pid = fork()) {
# Processus parent, on ferme.
close DD;
exit;
} elsif (!defined $pid) {
if ($! =~ /No more process/ && $tent++ < 5) {
# Erreur de fork eventuellement recuperable
sleep 5;
redo DETACH;
} else {
# Erreur de fork bizarre
die "Impossible de detacher le processus : $!\n";
}
}
# Processus fils
close STDIN;
close STDOUT;
close STDERR;
POSIX::setsid();
}
# Determination de la fin du disque
seek DD, 0, 2;
my $fin = tell(DD);
# Lecture periodique de donnees au hasard
my $tamp;
while (1) {
seek DD, rand($fin), 0;
read DD, $tamp, 1;
# Une deuxieme lecture pour limiter les risques de tomber sur un secteur en cache
seek DD, rand($fin), 0;
read DD, $tamp, 1;
# On laisse passer le delai entre deux activations.
sleep $delai;
}
----------
Note : si quelqu'un fait un copier-coller du code ci-dessus avec un navigateur qui conserve les espaces insécables à la copie (ce n'est pas le cas de Firefox), il aura intérêt à les enlever avec une commande du style :
sed -e 's/\xC2\?\xA0/ /' code_recupere.txt > /usr/local/sbin/no_parkd
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
Je suis l'heureux possesseur d'un ultra portable de 2001, un Gateway Solo 3350, mais le même, peut-être dans une qualité un peu meilleure (au moins pour la coque), a aussi été vendu sous la marque Dell (Latitude L400 je crois).
Même si ce n'est pas une fusée, compte tenu de son âge, il reste agréable à utiliser et suffisant pour ce que j'en fais, mais la question est qu'il reste en état de marche.
Je me doutais bien au bruit qu'il passait son temps à faire des parcages de tête, mais je n'avais pas pensé que leur nombre était limité. Il a atteint un highscore :
225 Load_Cycle_Count 0x0032 066 066 070 Old_age Always FAILING_NOW 349225
La question n'est même pas la distribution que j'utilise : il était déjà paramétré en hdparm -B 255, mais il s'en fiche complètement, il parque quand même les têtes au bout de juste quelques secondes !
Avec hdparm -B 254, cette fois, il prend le paramètre en compte et atteint la durée mirobolante d'une minute avant de parquer les têtes.
En conséquence, pour maximiser mes chances de faire durer le disque qui d'après smart est en train de tomber en panne, j'ai fait un script pour empêcher le parcage en forçant une activité disque une fois par minute.
Ça empêche toute mise en veille du disque, mais de toute façon, je ne l'utilise plus sur batterie depuis qu'il a décidé de tuer sa batterie en la chargeant par intermittences sans jamais la décharger...
Bon, si quelqu'un d'autre essaye de faire survivre un matériel conçu pour l'autodestruction, je peux éventuellement poster mon script.
En tout cas, l'info véritablement intéressante quand on achète (entre autres) un portable serait : est-il programmé spécifiquement pour s'autodétruire après un certain temps ?
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
Tu me fais penser à une caractéristique que j'avais oubliée : les buses n'y comprennent rien.
Pour moi, c'est un avantage : je me vois déjà bien trop souvent obligé de travailler avec des buses (j'ai même un collègue dont le boulot consiste en bonne partie à faire du PHP, à qui j'ai dû expliquer comment faire un truc en PHP, alors que je ne connais pas le PHP), donc toute occasion de l'éviter est bonne à prendre.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
Mettons que je t'accorde qu'un langage fait forcément des choix pour ses grandes orientations : principalement impératif ou purement fonctionnel (sans parler d'autres principes comme le moteur d'inférences de Prolog), à typage statique ou dynamique, verbeux ou concis,etc..
Au delà, je ne suis pas d'accord avec toi, parce qu'il y a au moins un contre exemple à tous les langages qui imposent la façon de penser de leur(s) auteur(s). Larry Wall a conçu Perl avec comme devise "There Is More Than One Way To Do It". Et comparé aux langages qui partagent les mêmes orientations principales, comme Ruby ou Python, il n'y a pas photo.
Si je veux utiliser des destructeurs, j'en ai. Si je préférais utiliser des fermetures à tout va comme l'absence de destructeurs l'impose en Ruby, je pourrais, ça marche, je l'ai fait une fois (une seule) où ça me semblait réellement approprié.
Si je veux une vérification rigoureuse que j'ai bien initialisé toutes les variables que j'utilise, c'est possible. Si je préfère qu'il m'initialise tout seul les variables auxquelles je fais référence, c'est possible aussi.
Je peux programmer en orienté objet (au moins, je dispoise du paradigme object complet, avec les destructeurs (pourvu que ça résiste au GC de la version 6)), mais si je préférais me cantonner à un style impératif, je pourrais aussi...
Alors je reprendrai ta phrase en disant que la plupart des langages imposent leur façon de penser. À part certains dont l'intérêt est justement une façon de penser profondément originale et particulièrement appropriée à certains types de problèmes, ce sont en général les langages que je n'aime pas.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
J'avais déjà été impressionné par le modèle objet de PHP 5.
Je ne dirai rien, je ne le connais pas (encore; si je retrouve mon hors série PHP 5 de Linux Mag, j'y jette un coup d'oeil cet été).
Celui de Ruby est incomparable.
J'avais pensé ça aussi, quand j'avais essayé Ruby, et puis j'ai eu besoin d'un destructeur.
Je sais, s'il n'y a pas de destructeur, c'est dû au choix du garbage collector (alors peut-être est-ce un mauvais choix) et il y a moyen de contourner (mais c'est plus lourd et j'aime les langages qui supportent ma façon de penser et non pas qui m'imposent la leur).
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
sur http://en.tldp.org/HOWTO/Font-HOWTO/notgood.html#xorg , il y a carrément deux systèmes de fontes qui cohabitent, avec plus ou moins de bonheur, l'original de X11, et le nouveau, dit "fontconfig", qui supporte les polices vectorielles.
Après, le fait que les applis (entre autres GTK2 ou Qt) qui utilisent le nouveau puissent ou pas utiliser des polices bitmap dépend en bonne partie de la configuration de fontconfig, dans /etc/fonts/fonts.conf notamment.
Je n'ai pas encore trouvé pourquoi sur ma distrib certaines polices bitmap sont reconnues par le sélecteur GTK et d'autres pas...
Créer une vraie police professionnelle est un art complexe, long, éprouvant et faisant appel à des connaissances très poussées, donc le placement "amoureux" de quelques pixels est devenu dérisoire face à l'impressionnante qualité que l'on peut atteindre avec des polices bien faites.
En effet, cela dit, créer une police vectorielle de qualité professionnelle pour l'impression et créer une police bitmap de petite taille aussi lisible que possible pour la programmation sont deux choses tout-à-fait différentes.
De jolies polices bitmap (avec les pixels placés amoureusement à la main)...
En utilisant le hinting et en donnant une forme particulière aux polices, on obtient un effet "bitmap".
En fait, en chargeant la version TTF d'une de ces fontes avec le sélecteur de polices de Gnome, on se rend compte (en sélectionnant une taille très grande juste pour voir) qu'il s'agit d'une vectorisation (avec des carrés pour les pixels) de la fonte bitmap, et il n'y a pas moyen d'arriver à l'avoir correcte (manifestment, l'auteur l'a ajustée pour le renderer de Windows, avec celui de Xft, rien à faire, y compris en désactivant l'anticrénelage).
Enfin, ce n'est pas vraiment du "hinting" dans le sens courant, c'est plutôt un bricolage pour contourner l'inappropriation des polices vectorielles...
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
sur un écran tft, les polices bitmaps font généralement mal aux yeux
Eh bien manifestement, nous ne développons pas le même problème de vue !
J'ai justement réduit ma fatigue oculaire en remettant des polices bitmap (je m'étais retrouvé avec des vectiorielles sans faire gaffe et je fatiguais bien plus vite) et en remplaçant mon vieux Diamondtron par un TFT (je commençais à croire que ma vue avait baissé, mais en fait, c'était surtout l'écran). Et même sur le TFT, je ne supporte pas mieux les polices floues que sur le CRT (impossible des les éviter avec toutes les applications).
En plus avec une police nette, on peut en profiter pour baisser un peu la luminosité de l'écran.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
Tu aurais des références (ou au moins des noms) de telles polices bitmap?"
En fait, je les choisis à vue, notamment avec le sélecteur de nedit (pour les applis à l'ancienne (genre xterm), il donne la chaîne de spécication de la fonte; pour les applis "modernes", il y a un autre problème, je vais y revenir), justement parce qu'il utilise lesstif (et pas la nouvelle version d'OpenMotif avec anticrénelage) sur ma distribution.
Il ne laisse apparaître les polices vectorielles qu'en tailles 0 (!) et 12, et avec de gros pâtés, comme ça, c'est tout de suite réglé.
Pour le reste, c'est un sélecteur à l'ancienne, qui ne fait apparaître que les tailles et variantes qui existent (penser à désélectionner les tailles et variantes pour refaire apparaître toutes les polices).
S'il en existe qui supportent de nombreux jeu de caractères unicode, ça serait encore mieux...
Pour ça, il faut voir s'il existe une variante "iso10146, 1" et idéalement essayer (mais pas dans nedit, faute d'UTF8) pour voir si elle supporte réellement les caractères dont on a besoin.
En espacement fixe (pour éditer, j'utilise de préférence une police à espacement fixe), bitmap et ISO10146-1, ça me fait la courier adobe, la fixed, la lucidatypewriter et la terminus (suite à la suggestion de Nicolas)... en tout cas pour les applications qui ne gèrent pas les polices vectorielles.
Je me suis remis à coder récemment, et les distributions modernes ont apparement viré les polices d'antan...
Le problème, c'est que manifestement des versions vectorielles cohabitent avec au moins une partie des anciennes polices bitmap. Pour courier, c'est clair, il y en a plusieurs variantes distinctes dont au moins une vectorielle, et pour lucidatypewriter, il semble que la vectorielle et la bitmap cohabitent dans la même.
Toute la difficulté après est de faire comprendre à son appli ou à sa bibliothèque que non, on ne veut pas la version vectorielle avec anticrénelage...
Pour les applis GTK (ex : gvim, gedit), malgré diverses tentatives avec le fichier .fonts.conf, je n'ai pas trouvé de solution, donc ça ne me laisse que la fixed et la terminus (tiens, j'hésitais sur le toolkit graphique pour coder un petit truc, j'avance dans mon choix : pas GTK,, c'est flou).
C'est ça, ou choisir un éditeur qui ne supporte pas les fontes vectorielles pour être tranquille (genre nedit... sauf qu'il ne supporte pas l'UTF8).
Comme quoi, gvim, ce n'est pas forcément un tel progrès par rapport à vim dans un xterm (qui supportent l'UTF8) !
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
L'anticrénelage est enfin supporté en se basant sur Xft. Voilà une fonctionnalité qui manquait terriblement à Motif
Pour avoir de jolies pages web, oui. Pour bosser dans un éditeur, non, au contraire !
Entre une police vectorielle avec l'anticrénelage qui la rend belle et éthérée ou autrement dit floue et une bonne vieille police bitmap de qualité avec les pixels amoureusement placés un par un, il n'y a pas photo, surtout après plusieurs heures de boulot : la différence se situe entre accomoder péniblement ou sans difficulté.
L'UTF8 manquait terriblement.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
J'avais bien compris, mais je voulais justement pointer le fait tout le monde ne change pas de machine tous les ans.
Ça a un coût et puis en plus ça pollue...
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
L'utilisation de DarkPlaces permet de supporter des configurations considérées aujourd'hui comme très modestes,
Alors là, je suis sur un portable avec un PIII mobile à 700 MHz et 256 Mo de RAM.
Donc pas trop mal : je connais des gens qui s'entêtent à utiliser des P1 à 100 MHz ou des P1 MMX à 200 MHz avec 32 ou 64 Mo de RAM à tout casser (je dis "s'entêtent", parce que bon, on peut trouver d'occase une UC avec un PIII et au moins 128 Mo dans les 45 ¤).
il est en effet indiqué que la configuration minimum pour avoir des graphismes de haute qualité est un processeur P4 1,5Ghz ou Athlon 1500+, 512 Mo de RAM
Comme quoi nous n'avons pas tout-à-fait la même définition de "modeste"...
et une carte vidéo de type 9600ati ou 5700fx.
Donc avec des pilotes propriétaires (beurk)...
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
en installant un équivalent humainement configurable, comme postfix ou exim, au cas où tu devrais ajuster la configuration.
D'aucun dino objectera peut-être que la configuration de sendmail avec les macros m4 est abordable, mais néanmoins ça reste un peu moins facile que la configuration de postfix ou d'exim, et du coup ça devient moins puissant et moins fiable.
Postfix et exim sont fournis sous forme de paquets par Mandriva, donc l'utilitaire de gestion de paquets suffit à en installer un.
Laisse sendmail aux dinos, il disparaîtra avec eux.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
On en a rien à faire qu'il ait dit racaille.
Qu'il ait provoqué des émeutes non plus ?
Extrait de Wikipedia :
En octobre 2005, après la mort dans un transformateur EDF de deux adolescents qui fuyaient la police[31], leur accusation par Nicolas Sarkozy sur la foi des rapports de police, rapidement avérés faux, et l'agitation menée dans la cité par certains de leurs amis, des émeutes éclatent en banlieue de Paris, qui se répandent en province.
les citoyens restent égaux devant la loi.
Arrachage de plantes OGM => déploiement de CRS, même parfois des hélicoptères, et au final, en général, condamnation. Sauf une fois où le tribunal a reconnu que le geste était raisonnable, compte tenu du principe de précaution que notre président sortant a lui-même fait inscrire dans la constitution.
Détournements et malversations diverses effectuées pour le financement des partis politiques => quelquefois la condamnation de quelques lampistes.
politique de droite et je te rappelle que 53% des français sont pour.
Si seulement ils se rendaient compte qu'on n'est plus en face d'une droite gaulliste, mais d'une droite beaucoup proche de celle du début du 20ème siècle ou de celle de Pétain, seraient-ils encore 53% ?
Si notre nouveau président leur disait clairement, par exemple, que la Sécurité Sociale c'est pas bien parce que ça ne dégage pas de profit, qu'il n'y en a pas dans le pays de ses rêves, les États-Unis, que ce n'est pas rentable de soigner les pauvres alors qu'on a tout un stock de chômeurs et que de toute façon, les exonérations accumulées sur son dos par la droite la condamnent à terme, seraient-il encore 53% ?
S'il leur disait que les heures supplémentaires vont permettre de maintenir le chômage à un haut niveau, malgré les départs en retraite de la génération du baby boom, et ce au détriment principalement de leurs enfants et de leurs petits enfants et que la pression du chômage permettra de maintenir globalement les salaires bas, seraient-il encore 53% ?
Si un parti d'opposition leur avait proposé de réduire le coût qui a le plus explosé pour les ménages, à savoir celui du logement, en reprenant la construction de logements sociaux en quantité au moins suffisante pour permettre de loger tous les travailleurs pauvres et de faire baisser le coût du logement par augmentation de l'offre, ressentiraient-ils tellement le besoin de travailler plus pour gagner de quoi vivre ?
Pour ma part, je rejoins Ray Bradbury (lire Fahrenheit 451, étonnant visionnaire pour l'année de sa publication : 1953) en pensant que le premier effet du flot de micro-informations assenné quotidiennement par la télévision a pour premier effet de tuer toute réflexion globale.
Au pire, si la division semée par M. Sarkozy et l'incitation à l'individualisme de la société actuelle avaient vraiment réussi à transformer 53% de nos concitoyens en gros cons égoïstes, ça ne me donnerait pas pour autant envie de vivre dans le pays de leur choix. Ça ne vaudrait pas tellement la peine non plus que des gens aient risqué ou perdu leur vie pour libérer la France du nazisme.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Dictionnaire
Posté par Arthur Accroc . En réponse au journal Vista c'est vraiment un OS rigolo :). Évalué à 5.
On connaissait déjà :
ready : qui n'est pas réellement ou ne supportera jamais
ex : "HD ready", "V92 ready"
Maintenant, on sait aussi que :
capable : qui peut supporter, mais de préférence sans possibilité d'en retirer une quelconque utilité
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: Animaux féminins
Posté par Arthur Accroc . En réponse au journal Tergiversations psychoquantiques. Évalué à 2.
- oie (il y a un masculin, mais on emploie plutôt le féminin génériquement),
- plie,
- tanche...
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: À propos de Python
Posté par Arthur Accroc . En réponse à la dépêche Ruby 1.9.0 est sorti pour Noël. Évalué à 1.
Il me semble que j'avais essayé un peu après ça, mais la doc que j'avais trouvée n'était peut-être pas hyper à jour...
Existerait-il une doc (à peu près à jour...) genre "Python en 30 mn pour ceux qui programment déjà dans un langage de script" ?
(Ce n'est pas que je ne pourrais pas chercher moi-même, c'est juste que si je tombe aussi bien que la dernière fois...)
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # À propos de Python
Posté par Arthur Accroc . En réponse à la dépêche Ruby 1.9.0 est sorti pour Noël. Évalué à 1.
Merci de l'info.
C"est récent, cette possibilité (moins de quelques années), ou c'est la doc que j'avais trouvée quand j'avais essayé Python qui était toute pourrie ?
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: Alors ? enfin des destructeurs ???
Posté par Arthur Accroc . En réponse à la dépêche Ruby 1.9.0 est sorti pour Noël. Évalué à 1.
J'en suis conscient. La conclusion logique est de ne pas utiliser un GC.
Sur le coup, j'ai presque failli me lancer à faire un fork de Ruby avec un comptage de références et des destructeurs (mais bon, je me suis assis et j'ai attendu que ça passe ;-) ).
Bon, Perl 6 est sensé avoir un GC et des destructeurs. J'ai jeté un coup d'oeil à la description du principe, ça a l'air complexe, voire lourd, donc j'attends de voir (et dans le doute, je suis peut-être le perliste le moins impatient de la sortie de Perl 6)...
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # 60 Hz
Posté par Arthur Accroc . En réponse au journal Les grands écrans c'est bien (mais galère). Évalué à 1.
Et tu l'utilises vraiment ?
Non, parce que 60 Hz, sur un CRT, c'est un truc à se finguer les yeux !
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Poster du code
Posté par Arthur Accroc . En réponse à la dépêche Ruby 1.9.0 est sorti pour Noël. Évalué à 1.
http://linuxfr.org/tips/572.html
Jeu thématique : le recoder en Ruby (ça ne doit pas être très difficile).
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
# Pistes
Posté par Arthur Accroc . En réponse au message Problème LDAP. Évalué à 1.
Je précise tout d'abord que je n'ai jamais utilisé SASL pour quoi que ce soit. J'ai déjà configuré (au boulot) un annuaire LDAP avec authentification de machines clientes dessus (et TLS pour empêcher tout sniffage de mot de passe sur le réseau), mais je ne sais pas quel impact supplémentaire a l'utilisation de SASL. Donc en particulier, ce que je vais te dire n'en tient pas compte.
As-tu un intérêt à utiliser SASL au delà de la connexion au serveur LDAP ?
Parce que je pense que la plupart des gens se contentent de TLS et que ça marche relativement facilement; en plus, comme ça n' a pas d'impact sur le mécanisme en général, tu peux commencer par mettre au point sans lui et l'ajouter quand le reste fonctionne.
Pas glop !
S'il n'est pas possible d'avoir un mot de passe chiffré avec SASL, c'est une bonne raison de ne pas l'utiliser.
ldaps, c'est normalement du SSL. Quel est l'intérêt d'utiliser SASL en plus (en fait, c'est une vrai question, l'intérêt de SASL m"échappe d'un point de vue général, alors qu'il doit bien y en avoir un) ? ou est-ce utilisé à la place ?
Ce qui signifie que l'authentification sur le serveur LDAP fonctionne correctement.
Note que si un des tes utilisateur en laisse un autre sur son compte 5 mn, celui-ci récupère son mot de passe en clair ! Il est normalement possible dans les ACL d'autoriser uniquement l'authentification et l'écriture pour le mot de passe, sans la lecture.
Au passage, évite les regexps dans les ACL, cela grève les perfs d'OpenLDAP.
Donc nss est bien configuré.
Ils n'ont pas à accéder au champ userPassword. À supposer qu'ils y accèdent, comme il n'est pas dans un format Unix, ils ne sauront pas quoi en faire.
Le principe est que pamldap avec pam bien configuré teste avec une authentification sur le serveur LDAP si l'utilisateur et le mot de passe sont valides dessus, et considèrent si c'est le cas que l'utilisateur a le droit d'accéder à la machine cliente. Il s'agit d'un bind LDAP avec le dn de l'utilisateur et le mot de passe fourni, précédé d'une recherche avec la conf par défaut de ldap.conf (anonyme pour moi, mais ce n'est peut être pas forcément le cas, je n'ai pas de ldap.conf sous le coude pour vérifier) sur le nom d'utilisateur pour déterminer son dn. Il faut que ces deux opérations soient possibles.
Pour moi, le problème vient donc de ta configuration de PAM (le plus probable, il est très pointilleux : pour situer, ça m'est arrivé souvent qu'un fichier de conf qui fonctionne parfaitement avec une version ne fonctionne plus avec une version ultérieure) ou de ton ldap.conf (ou alors ça fonctionne mal à cause de SASL). Note que si ça n'a pas changé, ldapsearch et autres utilisent /etc/openldap/ldap.conf et toutes les autres applis dont PAM /etc/ldap.conf . Moi, pour éviter des problèmes incompréhensibles, je remplace systématiquement l'un des fichiers par un lien sur l'autre.
Tu devrais tracer les requêtes sur ton serveur pour voir si ton client fait bien les bonnes requêtes et si elles se déroulent correctement.
Je ne peux pas te donner un exemple de configuration (je suis en vacances), mais éventuellement, si tu peux tester avec une installation de Fedora sur une machine cliente, son installateur graphique a l'avantage de générer une configuration de l'authentification sur LDAP directement fonctionnelle (avec TLS, bon, pour SASL...), ça te ferait une base pour ta configuration de PAM (voire ton ldap.conf).
Sinon, pour tous tes problèmes de LDAP, la liste ldap-fr ( http://listes.cru.fr/sympa/info/ldap-fr ) peut être un meilleur endroit que LinuxFr pour obtenir des réponses.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Aors ? enfin des destructeurs ???
Posté par Arthur Accroc . En réponse à la dépêche Ruby 1.9.0 est sorti pour Noël. Évalué à 1.
Alors, j'ai failli me mettre à Ruby : j'ai commencé un truc en Ruby pour essayer, je m'y suis mis super-vite, j'ai trouvé ça joli, sympa... et puis j'ai eu besoin d'un destructeur. Donc, j'ai tout jeté et j'ai arrêté définitivement Ruby (à moins qu'il n'existe vraiment un jour des destructeurs).
J'ai envisagé de me mettre à Python (pour écrire du code un peu plus abordable pour le commun des mortels, en particulier pour mes collègues), mais l'idée de devoir écrire du code genre
variable_avec_un_nom_significatif = variable_avec_un_nom_significatif + 1
parce que le concepteur estime que l'opérateur ++ est une complexité superflue, ça me bloque.
Plus joli que celui de Perl 5, OK. Mais l'un des meilleurs, rappelez-moi quand il incluera les destructeurs ! Je préfère largement un modèle objet un peu moche à un modèle objet limité.
Pas la peine de me dire pour la n-ième fois qu'il suffit d'utiliser les fermetures, ça n'a rien à voir, il faut le faire à l'utilisation des objets et non pas à la définition d'une classe : à ce stade-là, il faudrait, au lieu de définir une variable au début d'un bloc, passer systématiquement le bloc en paramètre au constructeur de la variable, au cas où l'on s'aperçoive ultérieurement qu'on a une finalisation à faire sur ce type d'objet. Et là, comme lisibilité de code, il y aura de quoi envier Perl !!!
Ah, j'ai failli passer sur le fait que les end, c'est naze, parce que c'est moins facile pour déterminer à quoi il correspondent (notamment quand on s'aperçoit qu'on en a oublié un quelque part) qu'avec une indentation comme Python ou des accolades comme Perl ou le C/C++ (de nombreux éditeurs, quand on passe sur une accolade, surlignent l'autre accolade correspondante).
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
# Plus lisible !
Posté par Arthur Accroc . En réponse au message [Perl] Modifier un PDF avec PERL. Évalué à 1.
Je pense que le résultat aurait dû ressembler à ça :
Dernièrement, j'ai eu besoin de modifier un grand nombre de documents PDF, en ajoutant un en-tête et un numéro de page sur chaque page.
J'ai pu réaliser cette opération rapidement en utilisant Perl et le module PDF::API2.
Voici une version "light" du script Perl que j'ai utilisé :
#!/usr/bin/perl
use PDF::API2;
my $file=shift;
my $out_file=shift||"test.pdf";
my $page_cnt=shift||1;
my $pdf = PDF::API2->open($file);
my $f1=$pdf->corefont('Times-Roman',-encode => "latin1");
my $f2=$pdf->corefont('Times-Italic',-encode => "latin1");
for my $p (1..$pdf->pages()){
my $page=$pdf->openpage($p);
$page->add_font($f1);
$page->add_font($f2);
my $gfx = $page->gfx;
$gfx->save; $gfx->fillcolor('black');
$gfx->textstart;
# Ajout du numéro de page centré en bas
$gfx->font($f1,10);
$gfx->translate(297.5,30);
$gfx->text_center("$page_cnt");
# Ajout de l'entete en haut à droite
$gfx->font($f2,10);
$gfx->translate(570,812);
$gfx->text_right("Texte placé en haut à droite");
$gfx->textend;
$gfx->restore;
$page_cnt++;
}
$pdf->saveas($out_file);
exit;
Vous pouvez aussi placer dans la boucle les instructions suivantes pour afficher en arriere plan de chaques page le mot "TOP-SECRET" en rouge et en diagonal :
my $gfx2 = $page->gfx(1);
$gfx2->save;
$gfx2->fillcolor('red');
$gfx2->translate(297.5,420);
$gfx2->rotate(30);
$gfx2->font($f1,80);
$gfx2->text_center("TOP SECRET");
$gfx2->textend;
$gfx2->restore;
(c'est le (1) de l'appel de $page->gfx(1) qui permet la mise en arrière plan de texte)
Pour finir un dernier exemple qui permet d'ajouter un logo (logo.jpg) en haut à gauche sur toutes les pages :
#!/usr/bin/perl
use PDF::API2;
my $file = shift;
my $out_file = shift||"test.pdf";
my $pdf = PDF::API2->open($file);
my $nb_pages = $pdf->pages();
my $img = $pdf->image_jpeg('logo.jpg');
for my $p (1..$nb_pages){
my $page=$pdf->openpage($p);
my $gfx = $page->gfx(1);
$gfx->save;
$gfx->image($img,40,790,0.4); # 0.4 est le facteur d'echelle
$gfx->restore;
}
$pdf->saveas($out_file);
P.S.: Si PDF::API2 n'est pas déja installé sur votre système, vous pouvez utiliser la commande : perl -MCPAN -e "install PDF::API2" pour l'installer.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Mon script
Posté par Arthur Accroc . En réponse au journal Canonical aurait des actions de fabricants de disques durs!. Évalué à 4.
Je veux pouvoir encore faire quelque chose avec ma machine ! :-)
Au début (j'ai fait des tests plus poussés après avoir écrit le script, justement en l'utilisant), je craignais de devoir activer le disque avec une périodicité inférieure à 10 secondes (ç'eût été le cas avec hdparm -B 255), donc cron était écarté d'office. De toute façon, je préfère avoir une granularité inférieure à une minute, et puis cron n'est pas sensé non plus garantir un déclenchement très précis.
Qui plus est, l'utilisation de cron pour une très faible périodicité conduit quelquefois en cas de forte charge système à l'accumulation d'appels.
Un simple sleep dans le script suffit à garantir un délai entre les opérations sans inconvénient.
Je n'étais pas trop chaud pour sync non plus, ayant l'expérience (avec le traitement massifs de mails par le serveur mail après rapatriement par uucp) de la charge système induite par des syncs fréquents (le serveur mail en fait un pour chaque mail).
Comme une écriture sans sync ne force pas d'activité disque, je me suis donc orienté vers une lecture (aléatoire pour essayer d'éviter de tomber sur des données en cache, doublée pour améliorer les chances).
En cas de forte charge en accès disque, logiquement ma demande de lecture doit attendre son tour comme les autres, ce qui tendrait à augmenter la périodicité dans une situation où l'opération est superflue. Tant mieux.
Par ailleurs, pour réduire le risque de délai supplémentaire inopportun au déclenchement en cas de très forte charge CPU, je voulais éviter tout chargement de contexte, donc tout appel d'une commande externe, donc je me suis dirigé vers une solution en Perl pur.
Bon, je ne prétends pas qu'il n'y aurait pas une meilleure solution (fsync, plus léger qu'un sync complet, serait une bonne piste; une lecture planifiée plutôt qu'aléatoire serait plus propre, mais nécessiterait des informations supplémentaires comme la quantité de données mise en cache à chaque accès disque), mais en tout cas, celle à laquelle j'ai abouti fonctionne de manière satisfaisante : pas d'augmentation du nombre de parquage des têtes après le démarrage, plus discrète que ne l'était le parquage, augmentation de la charge du système insensible.
Il n'est pas hyper petit non plus, vu qu'il contient en plus tout ce qu'il faut pour fonctionner comme un démon.
Enfin voilà :
--------
#!/usr/bin/perl -w
use strict;
# Lecture periodique sur le disque dur pour empecher le parquage des tetes
# alors que le nombre maximal prevu est deja explose depuis longtemps.
# Fonctionne comme un demon si son nom se termine par "d".
# Delai entre deux lectures, valeur a ajuster suivant le materiel.
# ATTENTION : une valeur incorrecte peut ACCELERER la deterioration du disque.
# Il est donc crucial de l'ajuster finement en controlant l'effet avec smartctl.
# La valeur presente dans /etc/sysconfig/no_park est prioritaire et les
# parametres passes en ligne de commande sont encore plus prioritaires.
my $delai = 60;
# Descripteur de peripherique du disque, valeur par defaut normalement ecrasee
# par celle determinee a partir de /etc/fstab.
my $disque = '/dev/hda';
use POSIX;
# Determination du peripherique
if (open FSTAB, '</etc/fstab') {
while (<FSTAB>) {
m:^(\S+?)\d+\s+/\s: and $disque = $1 and last;
}
close FSTAB;
}
# Determination du delai entre deux activations
if (open CONF, '</etc/sysconfig/no_park') {
while (<CONF>) {
/^\s*DELAI\s*=\s*(\d+)\s*(#|$)/ and $delai = $1;
}
close CONF;
}
# Prise en compte prioritaire des eventuels parametres de la ligne de commande
foreach (@ARGV) {
if (m:/:) {
$disque = $_;
} elsif (/^\d+$/) {
$delai = $_;
}
}
# Ouverture du disque en lecture
open DD, "<$disque" or die "Impossible d'ouvrir $disque\n";
# Fermeture du disque et sortie en cas de signal d'interruption
$SIG{TERM} = $SIG{INT} = sub {
close DD;
exit;
};
# Affichage des parametres retenus
warn "no_park : disque $disque, delai : $delai\n";
# Si le nom de commande se termine par "d", il s'agit du demon,
if ($0 =~ /d$/) {
# donc on detache le processus.
my $tent = 0;
DETACH:
if (my $pid = fork()) {
# Processus parent, on ferme.
close DD;
exit;
} elsif (!defined $pid) {
if ($! =~ /No more process/ && $tent++ < 5) {
# Erreur de fork eventuellement recuperable
sleep 5;
redo DETACH;
} else {
# Erreur de fork bizarre
die "Impossible de detacher le processus : $!\n";
}
}
# Processus fils
close STDIN;
close STDOUT;
close STDERR;
POSIX::setsid();
}
# Determination de la fin du disque
seek DD, 0, 2;
my $fin = tell(DD);
# Lecture periodique de donnees au hasard
my $tamp;
while (1) {
seek DD, rand($fin), 0;
read DD, $tamp, 1;
# Une deuxieme lecture pour limiter les risques de tomber sur un secteur en cache
seek DD, rand($fin), 0;
read DD, $tamp, 1;
# On laisse passer le delai entre deux activations.
sleep $delai;
}
----------
Note : si quelqu'un fait un copier-coller du code ci-dessus avec un navigateur qui conserve les espaces insécables à la copie (ce n'est pas le cas de Firefox), il aura intérêt à les enlever avec une commande du style :
sed -e 's/\xC2\?\xA0/ /' code_recupere.txt > /usr/local/sbin/no_parkd
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
# Autodestruction
Posté par Arthur Accroc . En réponse au journal Canonical aurait des actions de fabricants de disques durs!. Évalué à 4.
Même si ce n'est pas une fusée, compte tenu de son âge, il reste agréable à utiliser et suffisant pour ce que j'en fais, mais la question est qu'il reste en état de marche.
Je me doutais bien au bruit qu'il passait son temps à faire des parcages de tête, mais je n'avais pas pensé que leur nombre était limité. Il a atteint un highscore :
225 Load_Cycle_Count 0x0032 066 066 070 Old_age Always FAILING_NOW 349225
La question n'est même pas la distribution que j'utilise : il était déjà paramétré en hdparm -B 255, mais il s'en fiche complètement, il parque quand même les têtes au bout de juste quelques secondes !
Avec hdparm -B 254, cette fois, il prend le paramètre en compte et atteint la durée mirobolante d'une minute avant de parquer les têtes.
En conséquence, pour maximiser mes chances de faire durer le disque qui d'après smart est en train de tomber en panne, j'ai fait un script pour empêcher le parcage en forçant une activité disque une fois par minute.
Ça empêche toute mise en veille du disque, mais de toute façon, je ne l'utilise plus sur batterie depuis qu'il a décidé de tuer sa batterie en la chargeant par intermittences sans jamais la décharger...
Bon, si quelqu'un d'autre essaye de faire survivre un matériel conçu pour l'autodestruction, je peux éventuellement poster mon script.
En tout cas, l'info véritablement intéressante quand on achète (entre autres) un portable serait : est-il programmé spécifiquement pour s'autodétruire après un certain temps ?
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: Non
Posté par Arthur Accroc . En réponse à la dépêche L'arrêt du support de PHP4 annoncé. Évalué à 1.
Pour moi, c'est un avantage : je me vois déjà bien trop souvent obligé de travailler avec des buses (j'ai même un collègue dont le boulot consiste en bonne partie à faire du PHP, à qui j'ai dû expliquer comment faire un truc en PHP, alors que je ne connais pas le PHP), donc toute occasion de l'éviter est bonne à prendre.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Non
Posté par Arthur Accroc . En réponse à la dépêche L'arrêt du support de PHP4 annoncé. Évalué à -1.
Mettons que je t'accorde qu'un langage fait forcément des choix pour ses grandes orientations : principalement impératif ou purement fonctionnel (sans parler d'autres principes comme le moteur d'inférences de Prolog), à typage statique ou dynamique, verbeux ou concis,etc..
Au delà, je ne suis pas d'accord avec toi, parce qu'il y a au moins un contre exemple à tous les langages qui imposent la façon de penser de leur(s) auteur(s). Larry Wall a conçu Perl avec comme devise "There Is More Than One Way To Do It". Et comparé aux langages qui partagent les mêmes orientations principales, comme Ruby ou Python, il n'y a pas photo.
Si je veux utiliser des destructeurs, j'en ai. Si je préférais utiliser des fermetures à tout va comme l'absence de destructeurs l'impose en Ruby, je pourrais, ça marche, je l'ai fait une fois (une seule) où ça me semblait réellement approprié.
Si je veux une vérification rigoureuse que j'ai bien initialisé toutes les variables que j'utilise, c'est possible. Si je préfère qu'il m'initialise tout seul les variables auxquelles je fais référence, c'est possible aussi.
Je peux programmer en orienté objet (au moins, je dispoise du paradigme object complet, avec les destructeurs (pourvu que ça résiste au GC de la version 6)), mais si je préférais me cantonner à un style impératif, je pourrais aussi...
Alors je reprendrai ta phrase en disant que la plupart des langages imposent leur façon de penser. À part certains dont l'intérêt est justement une façon de penser profondément originale et particulièrement appropriée à certains types de problèmes, ce sont en général les langages que je n'aime pas.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Modèle objet de Ruby
Posté par Arthur Accroc . En réponse à la dépêche L'arrêt du support de PHP4 annoncé. Évalué à 0.
Je ne dirai rien, je ne le connais pas (encore; si je retrouve mon hors série PHP 5 de Linux Mag, j'y jette un coup d'oeil cet été).
J'avais pensé ça aussi, quand j'avais essayé Ruby, et puis j'ai eu besoin d'un destructeur.
Je sais, s'il n'y a pas de destructeur, c'est dû au choix du garbage collector (alors peut-être est-ce un mauvais choix) et il y a moyen de contourner (mais c'est plus lourd et j'aime les langages qui supportent ma façon de penser et non pas qui m'imposent la leur).
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Vu de plus près...
Posté par Arthur Accroc . En réponse à la dépêche Open Motif 2.3 : Anticrénelage, unicode et plus…. Évalué à 2.
Après, le fait que les applis (entre autres GTK2 ou Qt) qui utilisent le nouveau puissent ou pas utiliser des polices bitmap dépend en bonne partie de la configuration de fontconfig, dans /etc/fonts/fonts.conf notamment.
Je n'ai pas encore trouvé pourquoi sur ma distrib certaines polices bitmap sont reconnues par le sélecteur GTK et d'autres pas...
SInon, le même document explique pourquoi les polices (vectorielles) ne rendent pas forcément très bien sous Linux ( http://en.tldp.org/HOWTO/Font-HOWTO/notgood.html ) et comment améliorer la situation ( http://en.tldp.org/HOWTO/Font-HOWTO/fix.html ; pas de bol, la bibliothèque Freetype améliorée avec l'algo bréveté, je l'avais déjà avant...).
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Pas de miracle...
Posté par Arthur Accroc . En réponse à la dépêche Open Motif 2.3 : Anticrénelage, unicode et plus…. Évalué à 3.
En effet, cela dit, créer une police vectorielle de qualité professionnelle pour l'impression et créer une police bitmap de petite taille aussi lisible que possible pour la programmation sont deux choses tout-à-fait différentes.
De jolies polices bitmap (avec les pixels placés amoureusement à la main)...
En fait, en chargeant la version TTF d'une de ces fontes avec le sélecteur de polices de Gnome, on se rend compte (en sélectionnant une taille très grande juste pour voir) qu'il s'agit d'une vectorisation (avec des carrés pour les pixels) de la fonte bitmap, et il n'y a pas moyen d'arriver à l'avoir correcte (manifestment, l'auteur l'a ajustée pour le renderer de Windows, avec celui de Xft, rien à faire, y compris en désactivant l'anticrénelage).
Enfin, ce n'est pas vraiment du "hinting" dans le sens courant, c'est plutôt un bricolage pour contourner l'inappropriation des polices vectorielles...
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: Anticrénelage ? Bof !
Posté par Arthur Accroc . En réponse à la dépêche Open Motif 2.3 : Anticrénelage, unicode et plus…. Évalué à 1.
Eh bien manifestement, nous ne développons pas le même problème de vue !
J'ai justement réduit ma fatigue oculaire en remettant des polices bitmap (je m'étais retrouvé avec des vectiorielles sans faire gaffe et je fatiguais bien plus vite) et en remplaçant mon vieux Diamondtron par un TFT (je commençais à croire que ma vue avait baissé, mais en fait, c'était surtout l'écran). Et même sur le TFT, je ne supporte pas mieux les polices floues que sur le CRT (impossible des les éviter avec toutes les applications).
En plus avec une police nette, on peut en profiter pour baisser un peu la luminosité de l'écran.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Où se cachent les polices bitmap ?
Posté par Arthur Accroc . En réponse à la dépêche Open Motif 2.3 : Anticrénelage, unicode et plus…. Évalué à 4.
En fait, je les choisis à vue, notamment avec le sélecteur de nedit (pour les applis à l'ancienne (genre xterm), il donne la chaîne de spécication de la fonte; pour les applis "modernes", il y a un autre problème, je vais y revenir), justement parce qu'il utilise lesstif (et pas la nouvelle version d'OpenMotif avec anticrénelage) sur ma distribution.
Il ne laisse apparaître les polices vectorielles qu'en tailles 0 (!) et 12, et avec de gros pâtés, comme ça, c'est tout de suite réglé.
Pour le reste, c'est un sélecteur à l'ancienne, qui ne fait apparaître que les tailles et variantes qui existent (penser à désélectionner les tailles et variantes pour refaire apparaître toutes les polices).
Pour ça, il faut voir s'il existe une variante "iso10146, 1" et idéalement essayer (mais pas dans nedit, faute d'UTF8) pour voir si elle supporte réellement les caractères dont on a besoin.
En espacement fixe (pour éditer, j'utilise de préférence une police à espacement fixe), bitmap et ISO10146-1, ça me fait la courier adobe, la fixed, la lucidatypewriter et la terminus (suite à la suggestion de Nicolas)... en tout cas pour les applications qui ne gèrent pas les polices vectorielles.
Le problème, c'est que manifestement des versions vectorielles cohabitent avec au moins une partie des anciennes polices bitmap. Pour courier, c'est clair, il y en a plusieurs variantes distinctes dont au moins une vectorielle, et pour lucidatypewriter, il semble que la vectorielle et la bitmap cohabitent dans la même.
Toute la difficulté après est de faire comprendre à son appli ou à sa bibliothèque que non, on ne veut pas la version vectorielle avec anticrénelage...
Pour les applis GTK (ex : gvim, gedit), malgré diverses tentatives avec le fichier .fonts.conf, je n'ai pas trouvé de solution, donc ça ne me laisse que la fixed et la terminus (tiens, j'hésitais sur le toolkit graphique pour coder un petit truc, j'avance dans mon choix : pas GTK,, c'est flou).
C'est ça, ou choisir un éditeur qui ne supporte pas les fontes vectorielles pour être tranquille (genre nedit... sauf qu'il ne supporte pas l'UTF8).
Comme quoi, gvim, ce n'est pas forcément un tel progrès par rapport à vim dans un xterm (qui supportent l'UTF8) !
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
# Anticrénelage ? Bof !
Posté par Arthur Accroc . En réponse à la dépêche Open Motif 2.3 : Anticrénelage, unicode et plus…. Évalué à 8.
Pour avoir de jolies pages web, oui. Pour bosser dans un éditeur, non, au contraire !
Entre une police vectorielle avec l'anticrénelage qui la rend belle et éthérée ou autrement dit floue et une bonne vieille police bitmap de qualité avec les pixels amoureusement placés un par un, il n'y a pas photo, surtout après plusieurs heures de boulot : la différence se situe entre accomoder péniblement ou sans difficulté.
L'UTF8 manquait terriblement.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: "Très modeste"
Posté par Arthur Accroc . En réponse à la dépêche Nexuiz 2.3. Évalué à 0.
J'avais bien compris, mais je voulais justement pointer le fait tout le monde ne change pas de machine tous les ans.
Ça a un coût et puis en plus ça pollue...
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
# "Très modeste"
Posté par Arthur Accroc . En réponse à la dépêche Nexuiz 2.3. Évalué à 4.
Alors là, je suis sur un portable avec un PIII mobile à 700 MHz et 256 Mo de RAM.
Donc pas trop mal : je connais des gens qui s'entêtent à utiliser des P1 à 100 MHz ou des P1 MMX à 200 MHz avec 32 ou 64 Mo de RAM à tout casser (je dis "s'entêtent", parce que bon, on peut trouver d'occase une UC avec un PIII et au moins 128 Mo dans les 45 ¤).
Comme quoi nous n'avons pas tout-à-fait la même définition de "modeste"...
Donc avec des pilotes propriétaires (beurk)...
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
# Sauve tes cheveux...
Posté par Arthur Accroc . En réponse au message aidez moi. Évalué à 3.
D'aucun dino objectera peut-être que la configuration de sendmail avec les macros m4 est abordable, mais néanmoins ça reste un peu moins facile que la configuration de postfix ou d'exim, et du coup ça devient moins puissant et moins fiable.
Postfix et exim sont fournis sous forme de paquets par Mandriva, donc l'utilitaire de gestion de paquets suffit à en installer un.
Laisse sendmail aux dinos, il disparaîtra avec eux.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: C'est un peu trop
Posté par Arthur Accroc . En réponse au journal Résistance pour la France que nous aimons. Évalué à -1.
Qu'il ait provoqué des émeutes non plus ?
Extrait de Wikipedia :
les citoyens restent égaux devant la loi.
Arrachage de plantes OGM => déploiement de CRS, même parfois des hélicoptères, et au final, en général, condamnation. Sauf une fois où le tribunal a reconnu que le geste était raisonnable, compte tenu du principe de précaution que notre président sortant a lui-même fait inscrire dans la constitution.
Détournements et malversations diverses effectuées pour le financement des partis politiques => quelquefois la condamnation de quelques lampistes.
politique de droite et je te rappelle que 53% des français sont pour.
Si seulement ils se rendaient compte qu'on n'est plus en face d'une droite gaulliste, mais d'une droite beaucoup proche de celle du début du 20ème siècle ou de celle de Pétain, seraient-ils encore 53% ?
Si notre nouveau président leur disait clairement, par exemple, que la Sécurité Sociale c'est pas bien parce que ça ne dégage pas de profit, qu'il n'y en a pas dans le pays de ses rêves, les États-Unis, que ce n'est pas rentable de soigner les pauvres alors qu'on a tout un stock de chômeurs et que de toute façon, les exonérations accumulées sur son dos par la droite la condamnent à terme, seraient-il encore 53% ?
S'il leur disait que les heures supplémentaires vont permettre de maintenir le chômage à un haut niveau, malgré les départs en retraite de la génération du baby boom, et ce au détriment principalement de leurs enfants et de leurs petits enfants et que la pression du chômage permettra de maintenir globalement les salaires bas, seraient-il encore 53% ?
Si un parti d'opposition leur avait proposé de réduire le coût qui a le plus explosé pour les ménages, à savoir celui du logement, en reprenant la construction de logements sociaux en quantité au moins suffisante pour permettre de loger tous les travailleurs pauvres et de faire baisser le coût du logement par augmentation de l'offre, ressentiraient-ils tellement le besoin de travailler plus pour gagner de quoi vivre ?
Pour ma part, je rejoins Ray Bradbury (lire Fahrenheit 451, étonnant visionnaire pour l'année de sa publication : 1953) en pensant que le premier effet du flot de micro-informations assenné quotidiennement par la télévision a pour premier effet de tuer toute réflexion globale.
Au pire, si la division semée par M. Sarkozy et l'incitation à l'individualisme de la société actuelle avaient vraiment réussi à transformer 53% de nos concitoyens en gros cons égoïstes, ça ne me donnerait pas pour autant envie de vivre dans le pays de leur choix. Ça ne vaudrait pas tellement la peine non plus que des gens aient risqué ou perdu leur vie pour libérer la France du nazisme.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Et comment c'est,
Posté par Arthur Accroc . En réponse au journal Victoire de la gauche. Évalué à 2.
(On peut toujours se renseigner...)
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone