Update de HDD

30 mars 2014 in Microclub

Le disque dur du PC commence à se faire un peu petit? Plus des 3/4 de sa capacité remplie de musique, de photos, de films? Voici une technique ultra simple et… qui a fonctionné du 1er coup. Assez rare pour être mentionnée!

En fait, c’est simple pour autant qu’on aie pris quelques précautions en amont. Il faut que les données de ce type (soit des DATA, différents des programmes) aient bien été séparément enregistrées. Pour ma part, sur le disque C: qui est un SSD figurent le système, les programmes (C:\Program Files), les données de faible taille. Le profil (C:\user\Yves\Documents) est bien sûr l’objet de backup réguliers, et avec Windows 7, ça marche plutôt bien. Le backup copie les fichiers pointés par les liens – donc inutile de lancer un second backup de D: qui contient réellement les fichiers. Pour plus de détails sur l’organisation des données, voir un précédent article ici, qui précise tout ça: http://microclub.ch/2012/08/06/installer-un-disque-ssd-et-re-installer-w7-et-les-programmes/ .

Avec en tête l’idée de toujours déposer les données volumineuses sur une autre unité. On précise par des liens symboliques (commande MKLINK, en administrateur) que les images et les sons sont déposés sur la seconde unité physique. Justement, celle que l’on va remplacer, par les étapes suivantes:

  • connecter le nouveau HDD au PC
  • copier les données
  • échanger les disques
  • vérifier que les liens symboliques fonctionnent toujours…

Station d’accueil pour HDD

La connexion est faite par un dispositif que j’ai trouvé chez Conrad: http://www.conrad.ch/ce/fr/product/971937/

Ce bidule permet de connecter un disque dur 3’1/2 ou 2’1/2 via USB sur le PC. Une alimentation et un bouton permettent son enclenchement; le PC le voit comme un périphérique de stockage de masse. Ce qu’il nous faut, quoi.

Copier les données

Après l’inévitable formatage (NTFS, please), pour lequel le nouveau HDD via la station d’accueil a pris la lettre F:, il faut faire attention à tout copier du disque D: à F:, si l’on veut que les liens symboliques fonctionnent. Tout, c’est les droits, les fichiers cachés, les ACL, les liens symboliques (et non les fichiers sous-jacents).

La commande via CMD.EXE lancé en admin, est: xcopy d:*.* /S /H /O /B  f:

ça prend effectivement un peu de temps…

Échange des disques

Ensuite, démonter le PC, enlever l’ancien D: et y placer le nouveau F:. Remontage, démarrage… Windows réfléchi plus longuement que d’habitude… Mais démarre normalement. Mais voilà: le nouveau disque a conservé la lettre ‘F’! Un clic sur Ordinateur – Gérer – Stockage – Modifier la lettre de lecteur et les chemins d’accès; on corrige en D: et un petit CHKDSK. Puis on vérifie…

Tout fonctionne! C’est pas nickel, tout ça?

Yves Masur (3/2014)

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email
Avatar of Goulu

by Goulu

Les jours noirs de la crypto-monnaie – Agence Science-Presse

5 mars 2014 in Non classé

See on Scoop.itDr. Goulu

Agence Science-Presse Les jours noirs de la crypto-monnaie Agence Science-Presse (Agence Science-Presse) Crise financière dans le monde de la monnaie virtuelle: un demi-milliard$ US en monnaie virtuelle aurait été dérobée poussant l’une des plus…

See on www.sciencepresse.qc.ca

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email
Avatar of Goulu

by Goulu

IBM dévoile sa nouvelle puce en graphène

5 mars 2014 in Non classé

See on Scoop.itDr. Goulu

Le graphène pourrait un jour remplacer le silicium dans les semi-conducteurs. Mais ce composant constitué d’atomes de carbone reste difficile à produire.

See on www.rtflash.fr

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email

A vendre logiciel serveur

28 février 2014 in Microclub

Suite à une erreur de commande de ma part, je vend une licence neuve pour le logiciel :

Microsoft Windows Server 2012 Essentials OEM français

à moitié prix, soit CHF 189.-

Pour rappel ce logiciel est la version home et petites entreprises de serveurs Microsoft Windows. Elle est conçue pour être installée et gérée au moyen d’une interface intuitive et simple.

Vous trouverez la description des possibilités de ce serveur sur ce lien : http://technet.microsoft.com/fr-fr/library/jj200119.aspx

Je suis aussi prêt à donner un coup de main pour l’installation du logiciel sur un PC serveur et sur des PC clients.

Jacques Burnand

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email

Python et les objets statiques

26 janvier 2014 in Microclub

Les variables statiques

En C/C++, il est l’usage d’avoir des variables statiques, c’est-à-dire non-dynamiques, pour le comptage d’objets ou pour des flags en code embarqué, ou l’on évite comme la peste les new et delete. C’est intégré au langage, avec le mot clef ‘static’, au cas où la définition globale – hors des accolades – n’y suffit pas. Une variable statique est aussi privée au module, afin de réduire sa visibilité.

Déclarer une variable static revient à lui donner une adresse mémoire définitive. Au niveau du module, on le comprend aisément. C’est plus surprenant dans une fonction : on la retrouve inchangée depuis le dernier appel – a moins bien sûr que la fonction en question ne la modifie ! Cette persistance est valable même si elle est déclarée à l’intérieur d’un objet alloué dynamiquement. Mais en Python, comment reproduire ce comportement ?

Petite digression : dans ce texte, j’utilise souvent le mot fonction par habitude, alors que la terminologie Python est : method.

A priori, « static » va l’encontre de la programmation orientée objet… Mais parfois, on aimerait un objet unique, a dispo de manière globale, déclaré et initialisé au niveau du module. Il serait ‘objet’ pour la beauté de la pensée, donc de la programmation, plutôt qu’un fatras de variables globales ; même si elles sont utilisées au niveau du module. Cet objet serai statique parce que l’instancier ne fait que de compliquer le code, voire de prendre le risque de dédoubler l’objet par mégarde alors qu’il doit être unique.

C’est un peu tordu : si un objet n’est pas instancié… il doit être un peu instancié quand même, puisque par définition, une variable statique doit exister au moment où le programme tourne. Les exemples de codes sont entrés au niveau de la console Python ; ici en version 2.7.2, dans l’environnement (gratuit) PyCharm Community : http://www.jetbrains.com/pycharm/

Variable de classe statique

Bien. Mais comment, en Python,  reproduire ce qu’on sait si bien faire en C/C++ ?

Python permet la définition de variables statiques tout court si, hors d’une classe, définie au niveau du module; et dans un objet, si défini  hors des fonctions de la classe. On s’intéresse à cette possibilité. Dans un tel cas, elle est accédée par le nom de la classe.

1-con-Static

A priori, ça fonctionne fort bien ! En utilisant la classe de base, soit Toto – avec la majuscule qui symbolise la déclaration de classe – l’attribut ‘a’ de classe est accessible et modifiable. C’est pratique, et on peut toujours instancier la classe normalement, p. exemple dans la variable x :

1-con-Static-instance

Ha. Hem… Ça donne 4, on attendait un 6. L’attribut ‘a’ de la classe reste donc inchangé ; de plus c’est cette valeur (donc : 4) qui serait utilisée à la prochaine instanciation (par exemple : y = Toto() ). On peut donc compter des objets, par exemple. Par contre, dès qu’on touche à la variable (de même nom) d’une instance, celle-ci devient indépendante et suit la dynamique de l’instance.

En prime, (c’est Python tout craché, ça!) on peut toujours ajouter une variable au vol à la classe de base :

1-con-Static-add_var

On la retrouve dans les objets précédemment instanciés, qui se rabattent sur la classe de base pour l’afficher. Bien entendu, on peut modifier l’instance x ou y, sans que cela touche la classe de base, pour à nouveau, avoir une variable d’instance propre et indépendante.

Les fonctions et le statique (@staticmethod)

Mais pour les fonctions ? Ça ne marche pas si bien :

20-fonction

Python pas content… On beau essayer de passer la classe de base par Toto.prn(Toto), seule une version instanciée de Toto() fonctionne, comme le montre l’essai avec x. Sinon, on obtient l’erreur « unbound method prn() … »

Donc, on doit avoir une instance pour que la fonction… fonctionne. On peut toutefois forcer Python à intégrer la fonction dans la classe de base. L’astuce est de la précéder de la ligne : @classmethod. La fonction reçoit en paramètre classiquement sa propre self-référence. Et là :

2-fonction_staticmethod

On y arrive ! OK pour le statique. Avec une instance, ça se gâte :

22-fonction_staticmethod_x

On doit donner comme paramètre d’appel de fontion le nom de l’instance, alors qu’avec une classe « classique », si j’ose dire, c’est implicite. Pas terrible comme écriture de code, un peu verbeux à mon goût. Autre solution, c’est de virer l’argument, et de coder :

     def prn() :
           print Toto.a

On en revient à une méthode de module, écrite hors de la définition de classe…

Fonction de classe de base (@classmethod)

Un autre décorateur, @classmethod, permet de lier la fonction à la classe:

2-fonction_classmethod_x

Elle reçoit comme 1er paramètre non pas l’instance, mais la classe de base. Elle convient parfaitement pour compter les objets. L’écriture du code est plus claire.

Cependant, une variable instanciée ne sera pas à sa portée, et peut pousser à la faute… On ne peut pas tout avoir.

En résumé

Pour obtenir un objet statique en Python, il faut :

  • mettre les variables après la déclaration de la classe, avant les méthodes.
  • les méthodes doivent être précédées du décorateur @classmethod

Précaution : ne pas instancier cet objet dynamiquement. On peut carrément afficher un message d’erreur avec la fonction __init__(), pour en informer l’utilisateur.

Yves Masur (1/2014)

Références

http://fr.wikibooks.org/wiki/Programmation_C/Classe_de_stockage

http://stackoverflow.com/questions/68645/static-class-variables-in-python

http://stackoverflow.com/questions/735975/static-methods-in-python

http://docs.python.org/2/library/functions.html?highlight=decorator

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email
Avatar of franic

by franic

Edison, un ordinateur au format d’une carte SD

15 janvier 2014 in Non classé

C’est un ordinateur complet avec sa connectique. Son processeur, en gravure 22 nanomètres, est dans la ligne des processeurs Intel Quark conçus  pour les machines de très petites tailles, à très faible consommation. Des processeurs dont on ne sait que peu de choses, mais qu’Intel désigne comme étant de la classe Pentium.

Edison tourne sous Linux et prend en charge le Wi-Fi et le Bluetooth.

Selon Intel, Edison pourra s’inviter partout, jusque dans le berceau de bébé, pour contrôler sa respiration, son sommeil, etc.

intel-edison

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email

Récupération d’un ancien programme BASIC

27 décembre 2013 in Microclub

Quelle est la durée de vie d’un programme ?

Dans notre univers de plus en plus informatisé, la question de la mise à jour et de la pérennité d’un programme est légitime. Faire tenir des anciens programmes DOS est le lot de techniciens qui travaillent sur des machines d’un prix très élevé (pas le PC, mais bien la machine cible…) et dont il faut assurer la maintenance une vingtaine d’années, voire plus. Parfois, on peut avoir de bonnes surprises !

Le programme dont je vais discuter ici est un « codeur LPC ». Il s’agit de présenter à l’écran une main, avec 8 configurations des doigts ; un visage autour duquel 5 positions où la main devra être placée. C’est la technique que ma femme et moi avions adoptée lorsque nous avions appris la surdité de notre fils Robin. Vous trouverez plus d’explication sur ce code, sa genèse et son utilisation sur le site www.alpc.ch; ou bien sûr en lisant le livre qui traite de ce sujet à http://www.yvesmasur.ch/livre/ .

Après avoir fini des études en 1986, donc avec du temps libre à disposition je me suis mis en tête de créer un programme d’aide à l’apprentissage du LPC, et de le mettre à disposition de personnes intéressées. D’abord sur Commodore 64, qui possédait quelques atouts graphiques comme 8 sprites, ce qui convenait parfaitement pour exprimer les 8 configurations des doigts d’une main. Puis le PC est venu ; je l’ai transposé en pseudo-graphique, donc sur un écran de console en mode texte. Ce programme m’avait pris – pour la version C-64 – environ 3 mois les soirs, un investissement conséquent. Je l’ai traitée comme un projet, avec tout ce qu’il faut pour le suivi.

Récupération de l’ancien code

Afin de piloter un nouveau projet sur le même sujet – soit coder en LPC –, je me suis penché sur mes archives. J’ai retrouvé le classeur. Il comporte de la documentation, un article publié dans le journal interne du CHUV ou je travaillais à l’époque, un listing de 550 lignes en papier cranté et la disquette… au format 5’ ¼. Le listing suffirait, mais il est daté du 10/08/1987, alors que l’étiquette de disquette mentionne 1/1988.

En lançant une demande aux membres du MICROCLUB afin de relire ce média, Laurent m’annonce qu’il a toujours une machine PC 386, comportant un lecteur 5’1/4. Je vais donc à son bureau, avec la disquette dans ma serviette… Je me maudis en constatant qu’elle se ferme magnétiquement ! Quel imbécile je suis! Que va-t-il se passer ? Fort heureusement, les bits sont solidement inscrits ; ou l’effet du champ magnétique pas suffisant pour les effacer. Ouf… Le contenu est copié sur une disquette 1.44 MB (l’autre faisait 360 KB), puis je m’empresse de le poser sur le HDD de mon laptop.

Quels étaient ces fameux fichiers ? C’est écrit dans « READ-IT », en caractères DOS, bien sûr :

 Volume dans unité B est CUED-SPEECH
 Répertoire de  B:\
CUED-SCR COM    22400   5.01.88   9.46  <-- programme avec accès écran
CUED     BAS    13883  28.01.88  11.16  <-- source du programme
CUED     COM    22784  28.01.88  11.51  <-- programme avec accès BIOS
CUED     DAT      866  28.01.88  11.31  <-- datas (modifiable) chargés au départ
CUED     TRF     1528  16.07.87  10.42  <-- transformeurs, également modifiable
READ-IT             0  20.06.88  18.31  <-- CE fichier
ZB       COM    32384  10.03.87  15.30  <-- compilateur nécessaire pour modifier le programme
ZBASIC   HLP    33536  26.08.87         <-- HELP du compilateur
LPC              9344  20.06.88  18.27  <-- Mon article paru dans l'antenne du CHUV 1/88
        9 Fichier(s)
   221184 octets disponibles

Époque spartiate (à l’aune de 2014)

On peut en déduire que le PC travaillait sur deux unités de floppy ; le DOS en A : et celui de travail en B :. On remarquera la sobriété des programmes : le compilateur ZBASIC (nommé par ses auteurs « interpiler ») ne prend que 32 Kb ; le « help » à peine plus. Un souci d’économie que l’on ne retrouve certes plus dans le développement des programmes modernes, où plus de 100 Mb devient facilement la norme. Le programme compilé n’est pas bien gros non plus, avec 22 Ko. Remarquez également que c’est le format « image mémoire », soit un « COM », et non pas un « EXE ».

ZBASIC implémentait un BASIC plus élaboré que le standard BASICA (ou MS-BASIC, ce qui revient au même), avec des possibilités graphiques, non utilisées par mon programme prévu pour une console. Les références remplacent les numéros des lignes.

Qu’est devenu le producteur de ZBASIC, un compilateur (interpiler…) de 1988 ? La société proposait son compilateur pour MS-DOS, Apple II, MacIntosh, CP/M, TRS-80. Elle s’est orientée sur des solutions embarquées, en se posant comme concurrent du BASIC Stamp. Sa force mathématique reposait sur les calculs en BCD, dont la résolution – variable – peut aller jusqu’à 54 digits.

Un programme prévu pour système monotâche, 256 Kb de mémoire, 2 floppy et console va-t-il tourner sur PC Windows 7 ? C’est la bonne surprise, mais oui, ça fonctionne encore. Pour être précis, il me faut mentionner le fait que le clavier de l’interpréteur COMMAND.COM est le QWERTY. Afin d’y remédier, il faut lancer un KB16 SF, histoire de le mettre au Suisse français.

Utilisation du programme

Le programme comporte 2 versions : CUED et CUED-SCR, qui accède à la page texte via le BIOS, et non par adressage direct. Il avait donc une option de compilation permettant de faire le distinguo. L’ensemble des fichiers sont disponibles sous :  http://yvesmasur.ch/articles puis en développant l’arborescence « Cued speech ». Ou directement par :

http://www.yvesmasur.ch/articles/Cued%20speech/LPC.ZIP

L’archive contient le tout. Une fois déballé, le programme CUED.COM devrait fonctionner, pour autant que les données contenues dans CUED.DAT et CUED.TRF soient présentes dans le même répertoire.

Et je constate que le codage est correct pour la phrase entrée « Hello Microclub » ; que voici en action.

Hello_microclub

Une commande est précédée de ‘*’ pour qu’elle ne soit pas interprétée comme du texte à coder. La commande *Help nous montre ce qui est à disposition :

— Fonctions : *SHOW, *NONE, *TIME<1..9>, *TONE, *BYE —

Là ça se gâte un peu. Dès que *TIME est utilisé, au lieu de rythmer les codes, le programme fonce à la fin du texte ! Les tempos du programme, pour rythmer la présentation du codage ne sont visiblement pas basées sur un timer, mais par une boucle dépendant de la vitesse du CPU… Beurk ! Sans parler du son, qui bloque sur un ton. J’ai cependant remarqué un tel défaut avec d’autres programmes DOS tournant sous Windows. Quitter par *BYE fonctionne… Il ne faut pas oublier qu’au temps du DOS, si un programme n’avait pas de sortie correcte, le redémarrage par Ctrl – Alt – Del était la règle. Voir un bon OFF – ON, dans les cas récalcitrants.

Avec le recul, je me dis que le but du programme est atteint ; son fonctionnement est tout à fait satisfaisant pour coder une phrase entrée au clavier en LPC. Quelle en a été la diffusion ? Confidentielle… Seules quelques disquettes m’ont été demandées. Il faut dire qu’en 1987 l’ordinateur personnel (le Personnal Computer !) était peu répandu ; l’époque beaucoup moins technophile et connectée qu’aujourd’hui.

Il me reste maintenant à décortiquer les astuces de ce code pour le transposer dans un langage moderne et normalisé : le Python (enfin, on verra ce qu’il en reste dans 25 ans…) Mais ceci est une autre histoire, que je ne manquerai pas de vous rapporter.

Yves Masur (12/2013)

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email

Linux (2)

16 novembre 2013 in Microclub

En complément à sa présentation Jacques Menu nous envoie ces infos :

J’ai mélangé les deux familles de shells dans le feu de l’action, il a une différence de syntaxe pour les alias… :

Avec bash :
root@jupiter:~# alias LLL=’ls -sal’
root@jupiter:~# LLL
total 1995028
4 drwx—— 41 root root       4096 Nov  5 11:38 .
4 drwxr-xr-x 28 root root       4096 Sep  9 15:42 ..
4 -rw——-  1 root root       1388 Oct 28 11:14 .ICEauthority
4 -rw——-  1 root root        742 Nov  5 11:38 .Xauthority
4 -rw-r–r–  1 root root        170 Oct 31  2012 .Xdefaults

Pour le relister :

root@jupiter:~# alias LLL
alias LLL=’ls -sal’

Avec tcsh :
root@jupiter:~ > alias LLL ‘ls -sal’
root@jupiter:~ > LLL
total 1995028
4 drwx—— 41 root root       4096 Nov  5 11:38 .
4 drwxr-xr-x 28 root root       4096 Sep  9 15:42 ..
4 -rw——-  1 root root       1388 Oct 28 11:14 .ICEauthority
4 -rw——-  1 root root        742 Nov  5 11:38 .Xauthority

Pour ce qui est de bash, je joins une doc très détaillée de ses possibilités. Il y a un de vos membres que ça peut intéresser s’il ne la connaît pas déjà!

abs-guide

Pour le parallélisme avec MPI (), voici un exemple (Echange.c) dans lequel les « n » processus gèrent un anneau, chacun échangeant une variable avec des deux voisins immédiats pour faire tourner toutes les valeurs d’un cran dans l’anneau.

Dans MPI, tous les processus exécutent le même code, mais chacun vit sa vie à sa vitesse propre.

- MPI_Barrier () force un rendez-vous global de tous les processus : les premiers arrivés attendent les autres, puis tout le monde redémarre;

- MPI_Sendrecv_replace () force un rendez-vous entre deux processus : le premier arrivé attend l’autre, l’échange de données se fait, puis les deux redémarrent.

Le nombre de processus est défini au lancement de l’application.

J’ai joint une trace d’exécution avec 32 processus (id allant de 0 à 31).

b343 et b344 sont les deux nœuds de calcul alloué au job, à raison de 16 cœurs, et donc processus, chacun.

L’ordre dans lequel les processus affichent leurs lignes de trace est variable à chaque exécution, puisque l’avancement des processus parallèles peut dépendre de la charge des nœuds de calcul ou de l’accès aux entrées/sorties.

Bonne continuation!

jmenu@bellatrix:/scratch/jmenu > cat Echange.c

#include « mpi.h »
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char **argv)
{
int processes, id;
MPI_Status    status;
char hostname [256];
int namelength;
int to, from, a;
//          On doit commencer par…
MPI_Init (&argc, &argv);
//          Récupération d’informations sur l’environnement MPI
MPI_Comm_size (MPI_COMM_WORLD, & processes);
MPI_Comm_rank (MPI_COMM_WORLD, & id);
MPI_Get_processor_name (hostname, & namelength);
//          Initialisation
a = id;
printf (« %s: I am id %d of %d procs with INITIAL a = %d\n »,hostname, id, processes, a );
fflush (stdout);
//      On attend que tout les processeurs arrivent jusqu’ici
MPI_Barrier (MPI_COMM_WORLD);
if ( id == 0 )
{
printf (« — BARRIER! —\n »);
fflush (stdout);
}
//          Détermination du numéro du processeur voisin
to = (id + 1) % processes;
from = (id – 1 >= 0)
?         id – 1
:          processes – 1; /* id of the sender */
//          Echange
MPI_Sendrecv_replace (& a, 1, MPI_INT, to, 0, from, 0, MPI_COMM_WORLD, & status );
printf ( « %s: id %d sends to %d and receives from %d a = %d\n », hostname, id, to, from, a );
//      On attend que tout les processeurs arrivent jusqu’ici
MPI_Barrier (MPI_COMM_WORLD);
if ( id == 0 )
{
printf (« — BARRIER! —\n »);
fflush (stdout);
}
//          Resultat
printf ( « %s: I am id %d of %d procs with initialFINAL a = %d\n », hostname, id, processes, a );
fflush (stdout);
//          …et on doit finir  par…
MPI_Finalize ();
return 0;
}

—-

b343: I am id 2 of 32 procs with INITIAL a = 2
b343: I am id 3 of 32 procs with INITIAL a = 3
b343: I am id 4 of 32 procs with INITIAL a = 4
b344: I am id 18 of 32 procs with INITIAL a = 18
b343: I am id 5 of 32 procs with INITIAL a = 5
b344: I am id 19 of 32 procs with INITIAL a = 19
b343: I am id 6 of 32 procs with INITIAL a = 6
b344: I am id 20 of 32 procs with INITIAL a = 20
b343: I am id 10 of 32 procs with INITIAL a = 10
b344: I am id 21 of 32 procs with INITIAL a = 21
b343: I am id 11 of 32 procs with INITIAL a = 11
b344: I am id 22 of 32 procs with INITIAL a = 22
b343: I am id 12 of 32 procs with INITIAL a = 12
b343: I am id 13 of 32 procs with INITIAL a = 13
b344: I am id 23 of 32 procs with INITIAL a = 23
b343: I am id 14 of 32 procs with INITIAL a = 14
b344: I am id 16 of 32 procs with INITIAL a = 16
b343: I am id 1 of 32 procs with INITIAL a = 1
b344: I am id 17 of 32 procs with INITIAL a = 17
b343: I am id 7 of 32 procs with INITIAL a = 7
b344: I am id 24 of 32 procs with INITIAL a = 24
b343: I am id 8 of 32 procs with INITIAL a = 8
b344: I am id 25 of 32 procs with INITIAL a = 25
b343: I am id 9 of 32 procs with INITIAL a = 9
b344: I am id 26 of 32 procs with INITIAL a = 26
b343: I am id 15 of 32 procs with INITIAL a = 15
b344: I am id 27 of 32 procs with INITIAL a = 27
b344: I am id 28 of 32 procs with INITIAL a = 28
b344: I am id 29 of 32 procs with INITIAL a = 29
b344: I am id 30 of 32 procs with INITIAL a = 30
b344: I am id 31 of 32 procs with INITIAL a = 31
b343: I am id 0 of 32 procs with INITIAL a = 0
— BARRIER! —
b343: id 7 sends to 8 and receives from 6 a = 6
b344: id 17 sends to 18 and receives from 16 a = 16
b343: id 8 sends to 9 and receives from 7 a = 7
b343: id 2 sends to 3 and receives from 1 a = 1
b343: id 3 sends to 4 and receives from 2 a = 2
b343: id 4 sends to 5 and receives from 3 a = 3
b343: id 5 sends to 6 and receives from 4 a = 4
b343: id 6 sends to 7 and receives from 5 a = 5
b343: id 9 sends to 10 and receives from 8 a = 8
b343: id 10 sends to 11 and receives from 9 a = 9
b343: id 11 sends to 12 and receives from 10 a = 10
b343: id 12 sends to 13 and receives from 11 a = 11
b343: id 13 sends to 14 and receives from 12 a = 12
b343: id 14 sends to 15 and receives from 13 a = 13
b343: id 15 sends to 16 and receives from 14 a = 14
b343: id 0 sends to 1 and receives from 31 a = 31
b343: id 1 sends to 2 and receives from 0 a = 0
— BARRIER! —
b343: I am id 0 of 32 procs with initialFINAL a = 31
b343: I am id 1 of 32 procs with initialFINAL a = 0
b343: I am id 2 of 32 procs with initialFINAL a = 1
b343: I am id 3 of 32 procs with initialFINAL a = 2
b343: I am id 4 of 32 procs with initialFINAL a = 3
b343: I am id 5 of 32 procs with initialFINAL a = 4
b343: I am id 6 of 32 procs with initialFINAL a = 5
b343: I am id 7 of 32 procs with initialFINAL a = 6
b343: I am id 8 of 32 procs with initialFINAL a = 7
b343: I am id 9 of 32 procs with initialFINAL a = 8
b343: I am id 10 of 32 procs with initialFINAL a = 9
b343: I am id 11 of 32 procs with initialFINAL a = 10
b343: I am id 12 of 32 procs with initialFINAL a = 11
b343: I am id 13 of 32 procs with initialFINAL a = 12
b343: I am id 14 of 32 procs with initialFINAL a = 13
b343: I am id 15 of 32 procs with initialFINAL a = 14
b344: id 18 sends to 19 and receives from 17 a = 17
b344: id 16 sends to 17 and receives from 15 a = 15
b344: id 19 sends to 20 and receives from 18 a = 18
b344: id 20 sends to 21 and receives from 19 a = 19
b344: id 21 sends to 22 and receives from 20 a = 20
b344: id 22 sends to 23 and receives from 21 a = 21
b344: id 23 sends to 24 and receives from 22 a = 22
b344: id 24 sends to 25 and receives from 23 a = 23
b344: id 25 sends to 26 and receives from 24 a = 24
b344: id 26 sends to 27 and receives from 25 a = 25
b344: id 27 sends to 28 and receives from 26 a = 26
b344: id 28 sends to 29 and receives from 27 a = 27
b344: id 29 sends to 30 and receives from 28 a = 28
b344: id 30 sends to 31 and receives from 29 a = 29
b344: id 31 sends to 0 and receives from 30 a = 30
b344: I am id 16 of 32 procs with initialFINAL a = 15
b344: I am id 17 of 32 procs with initialFINAL a = 16
b344: I am id 18 of 32 procs with initialFINAL a = 17
b344: I am id 19 of 32 procs with initialFINAL a = 18
b344: I am id 20 of 32 procs with initialFINAL a = 19
b344: I am id 21 of 32 procs with initialFINAL a = 20
b344: I am id 22 of 32 procs with initialFINAL a = 21
b344: I am id 23 of 32 procs with initialFINAL a = 22
b344: I am id 24 of 32 procs with initialFINAL a = 23
b344: I am id 25 of 32 procs with initialFINAL a = 24
b344: I am id 26 of 32 procs with initialFINAL a = 25
b344: I am id 27 of 32 procs with initialFINAL a = 26
b344: I am id 28 of 32 procs with initialFINAL a = 27
b344: I am id 29 of 32 procs with initialFINAL a = 28
344: I am id 30 of 32 procs with initialFINAL a = 29
b344: I am id 31 of 32 procs with initialFINAL a = 30

En voici deux que je vous ai montrés :

« psg » psg fait un « ps » pour afficher les processus, suivi d’un « grep » pour restreindre l’affichage aux seules lignes contenant l’argument fourni. Un premier « ps »  pour récupérer les entêtes de colonnes qui sont écrémées par le « grep », puis un second pour afficher les lignes utiles;

« dfs »dfs traite les lignes produites par « df » avec « awk » pour présenter les volumes montés et leur taille de manière plus lisible que « df » lui-même.

A+!

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email
Avatar of Remy

by Remy

Lien des logiciels présentés le 18 octobre

18 octobre 2013 in Microclub

Advanced Uninstaller Pro 11.22 http://www.advanceduninstaller.com – Download

(français à indiquer à l’installation)

Foto Sketcher – Image en aquarelles http://www.fotosketcher.com – Download

(auteur français)

  Open Element (créateur site web) http://www.openelement.fr/download.fr.htm

 Anti Twin (recherche de doublons) http://www.anti-twin.com – Download

version actuelle 1.8d (langue à l’installation ou dans le logiciel)

 PhoXo Dessins dans les images http://www.phoxo.com/en/ – Download

indiquer français à l’installation

 Photofiltre (7) (Photoshop gratuit) http://www.photofiltre.com – français – Download

auteur français

 Fast Stone (Gestion de photos) http://www.faststone.org/FSViewerDetail.htm – Download

Evoqués :

 Opera (Explorer) version 17 http://www.opera.com/fr

Xplorer2 (Explorer double pages, 29$) http://zabkat.com

Xn View (Gestionnaire photo) V 2.05 http://www.xnview.com/fr/index.php

Xn View MP = multiplatform (multi OS)

Irfan View (Gestionnaire photos) http://www.irfanview.com + Download + Plugins + Languages

 PDF Split and merge (couper un PDF) http://www.pdfsam.org/download/

 

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email

Présentation Linux

6 octobre 2013 in Microclub

Pour la présentation du 1 novembre nous aurons le plaisir d’accueillir le Dr Jacques Menu.

Jacques est un ancien collègue du CHUV division informatique. Il travaille actuellement à l’EPFL . Il a aussi donné des cours LINUX à l’université de Genève et nous propose de regarder le premier lien ci-dessous qui lui servira de base pour sa présentation.

Voici ce qu’il nous propose :

http://cui.unige.ch/DI/cours/SystInformatiques/PDF_UNIX_shells/Livre%20UNIX_shells.pdf

Pour certains aspects techniques, je renverrai à :

http://cui.unige.ch/DI/cours/SystInformatiques/PDF_Transparents/CoursSystemesInformatiques.pdf

Mais sans entrer dans les détails. Ça pourrait faire l’objet d’une autre présentation.

Pour ce qui est de la matière, est-ce que ça va si je commence par ce qui est typique de Unix/Linux, soit les shells, processus, pipes et autres redirections d’entrées/sorties? L’idée serait de m’adapter ensuite aux demandes des participants.

Les gens ont-ils en général un portable, ce qui leur permettrait de pratiquer eux-mêmes si je leur mets une machine à disposition sur le réseau?

Prenez vos portables !!

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email