Archive for the ‘Uncategorized’ Category

Astuce OpenVZ

Mardi, juin 15th, 2010

Pour trouver les processus tournant à l’intérieur d’une machine virtuelle il suffit d’utiliser la combinaison de commande suivante:

ps auxwww | cut -b6-15 | xargs -n 1 vzpid | grep _id_de_la_vm_

naturellement il suffit de remplacer _id_de_la_vm_ par le id pour lequel on cherche des processus. Pour avoir la liste des id utiliser la commande

vzlist

outils de gestion scrum

Mardi, décembre 8th, 2009

J’ai commencé un liste d’outils de gestion de projet “scrum”.

Voici mes premières trouvailles:


Snow Leopard

Vendredi, septembre 4th, 2009

Le nouvel OS d’apple est sorti et je l’ai reçu..

Mais avant de l’installer j’ai commencé à regardé les problèmes survenu chez les utilisateurs (il est déjà disponible depuis 1 semaine aujourd’hui).

J’ai rapidement découvert que plusieurs se plaignent d’incompatibilité de logiciel.  Appel eux même dressent une liste d’application qui seront mises en quarantaine et d’autres qui refuseront simplement de s’exécuter (voir ici).  Des utilisateurs aussi ont créés une liste de compatibilité ICI.

De plus, certains pilotes doivent être mis à jour, notamment pour l’impression et la numérisation.  Encore une fois, apple fournis (voir ici) une liste de compatibilité.

Parmis les autres systèmes ou logiciels à traiter avec précautions: L’un mentionne iStats (qui doit être ré-installé et dont les créateurs semblerait-il ont sorti une nouvelle version ICI),CuteFTP ne fonctionnerait plus,  certains problèmes d’IPV6 seraient survenu avec Opera, certaine problèmes liés a une augmentation de la sécurité dans mail demanderaient de réviser les comptes d’envoie smtp, des problèmes avec le adHoc network, il y aurait des problèmes avec  growl?.

Plusieurs applications fonctionnerai mieux ou tout court en utilisant le mode 32 bits au lieu de 64.  Vous pouvez le changer en ouvrant la boite de dialogue “Lire les informations” en cliquant sur l’icone de votre application et en activant le mode 32 bits (comme on pouvait le faire pour le mode “rosetta” dans l’édition léopard d’OS X).

Il  y a différentes revues/évaluations de disponible un peu partout tel que sur engadget, gizmodo, macworld, …

Et avant toute mise à jour n’oublier pas de sauvegarder vos données incluants celle dissimulées (botin téléphonique, signets de votre navigateur, courriels, photo, musique et autres).

Faites moi parvenir vos commentaires et constatations, je vous donnerai les miennes dès que j’en termine l’installation.

Hidding content in frontrow

Lundi, mars 16th, 2009


Looking around, I found nothing interesting explaining how to hide content in frontrow.  Why do this?  I don’t want all the items to appear here.  For example, I don’t want my TV Show in ITune to be available in Front Row.

The secret is in the /System/Library/CoreServices/Front Row.app/Contents/PlugIns where reside the information about what is displayed in the main menu.  Juste renaming the  TV.frappliance to .TV.frappliance (adding a dot in front of it) hide this item in the menu.May be we can have more granularity (using the checkbox in front of the item in itune for example) but I haven’t time to test everything.

Administration Serveurs

Dimanche, février 26th, 2006


Administration de serveurs

Outils


Gestion d’un poll

Outils pour envoyer des commandes à plusieurs serveurs simultanément:


Gestion d’un serveur

Version de top avec couleur et interraction


Réseautique


Sécurité

Tests de sécurité

Antivirus

  • clamav


Assistant, Editeurs,… 

Outil pour conserver ses mot de passes

Editeur multiplateforme (java) utf8, et plein de pluggin

Changer les routes

Samedi, janvier 28th, 2006

Script pour changer la default route entre deux chemins

if ((`id -u` != 0)); then echo "vous devez etre root pour executer cette commande"; exit; fi case "$1" in         
    digicom)                 
        /sbin/ifconfig eth0:3 down                 
        /sbin/route del default                 
        /sbin/route add default gw 207.134.52.137         
    ;;         
    videotron)                 
        /sbin/ifconfig eth0:3 192.168.6.2 netmask 255.255.0.0                 
        /sbin/route del default                 
        /sbin/route add default gw 192.168.6.3         
    ;;         
    modem)                 
        echo "Pas encore disponible";                 
        exit 0         
    ;;         
    status)         
    ;;         
    *)                 
        echo $"Usage: $0 {digicom|videotron|modem|status}"                 
        exit 1 
    esac 
/sbin/route -n

chroute

Update DNS updatedb php/bash

Jeudi, mai 19th, 2005

Script php pour updater un DNS via une page web <pre> < ?php $ip = $_GET["ip"]; echo “< html >< head >< title >Update jlcyr.dyn.grafsoft.com< /title >< /head >”; echo “< body >New ip is: $ip< br >”; echo “< pre >”; //passthru (”cp /home/jlcyr/jlcyr.orig /tmp/jlcyr”); passthru (”/home/jlcyr/add $ip”); passthru (”/usr/bin/nsupdate /tmp/jlcyr”); passthru (”/usr/bin/nslookup jlcyr.dyn.grafsoft.com”); echo “< /pre >”; echo “< /body >< /html >”; ? > </pre> Script bash pour générer le fichier de commande pour updater un DNS<br> On lui passe en argument la nouvelle adresse ip. <pre> echo “server dns.grafsoft.com” >/tmp/jlcyr echo “local 127.0.0.1″ >>/tmp/jlcyr echo “prereq yxdomain jlcyr.dyn.grafsoft.com” >>/tmp/jlcyr echo “update delete jlcyr.dyn.grafsoft.com” >>/tmp/jlcyr echo “” >>/tmp/jlcyr echo “prereq nxdomain jlcyr.dyn.grafsoft.com” >>/tmp/jlcyr echo “update add jlcyr.dyn.grafsoft.com 1 A $1″ >>/tmp/jlcyr echo “” >>/tmp/jlcyr </pre> <dtml-var standard_html_header> <h2><dtml-var title_or_id></h2> <p> This is the <dtml-var id> Document. </p> <dtml-var standard_html_footer>

Zip Disk backup linux

Lundi, mai 2nd, 2005

<dtml-var standard_html_header> <h2><dtml-var title_or_id></h2> <p> This is the <dtml-var id> Document. </p> Script pour backuper un répertoire de data sur un zip disk <pre> #!/bin/bash echo “Mounting zip disk” mount /mnt/zip echo “Backuping Personnal Data” cd old_home/Personnel rsync -uv * /mnt/zip cd echo “Syncing data” sync #sleep 5 echo “Unmounting zip disk” umount -l /mnt/zip echo “Done” eject -s /dev/sdd </pre> <dtml-var standard_html_footer>  

IMAGEM PACS Image retrieve

Vendredi, avril 1st, 2005

/****************************************************************************************    Class: download    Author: Jean-Luc Cyr    Copyrights: IMAGEM medicals systems    Date: 2004-11-24    Description: Connect to imagem pacs database, fetch a study list to download                 fetch anterior list for those studies and images list for study and                 anterior.  After that, connect by ftp to the server and fetch the                 images.                  FTP Connexion was released between each study.                 Database Connecion was persistant. ****************************************************************************************/  //FTP import cz.dhl.io.*; import cz.dhl.ftp.*; //ORACLE import java.sql.*; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.PreparedStatement; import oracle.jdbc.pool.OracleDataSource; //JAVA import java.io.IOException; import java.io.File; import java.util.Vector;  public class download {     //Internal exception     public class downloadException extends Exception     { 	public downloadException(){} 	public downloadException(String s){super(s);}     }      //Global variables     Connection Database;                ///< Database connection     Vector StudyList = new Vector();    ///< Study list to download     Vector AnteriorList = new Vector(); ///< Current processing study anterior list     Vector ImageList = new Vector();    ///< Current study and antorior image list      //Configuration section     String base_path = "c:/imagem/images"; ///< Local base path to store images     //String DB_Name = "jdbc:oracle:thin:@10.16.163.3:1521:orcl"; ///< Database connexion string     String DB_Name = "jdbc:oracle:thin:@192.168.1.6:1521:rpdev";     String DB_User = "ris_pacs"; ///< Database username     String DB_Pass = "password"; ///< Database password     String FTP_Name = "ftp://10.16.163.3"; ///< FTP connexion string     String FTP_User = "jlcyr"; ///< FTP Username     String FTP_Pass = "Limos1"; ///< FTP Password      ////////////////////////////////////////////////////////////////     ///Main program     public static void main( String[] args ) { 	System.out.println("Demarrage du service de transfert"); 	while (true) { 	    download test = new download(); 	    test.fetchImages(); 	}     }      ////////////////////////////////////////////////////////////////     ///Connexion à la base de donnee     public boolean dbConnect(){ 	try{ 	    DriverManager.registerDriver(new oracle.jdbc.OracleDriver()); 	} catch (SQLException ex){ 	    System.out.println("Erreur durant l'initialisation des connections "+'\n'+ex.toString()); 	} 	try{ 	    Database = DriverManager.getConnection(DB_Name,DB_User,DB_Pass); 	    Database.setAutoCommit(false); 	} catch (SQLException ex){ 	    System.out.println("Erreur durant la connection a la db ("+DB_Name+")\n"+ex.toString()); 	    return false; 	} 	return true;     }      ////////////////////////////////////////////////////////////////     ///Deconnexion de la base de donnee     public void dbDisconnect(){ 	try{ 	    Database.close(); 	} catch (Exception ex){ 	    System.out.println("Erreur a la fermeture de la connection a la db"); 	}     }      ///////////////////////////////////////////////////////////////     ///Sortir la liste des etudes a lire     public void dbSelectStudy(){ 	StudyList.clear(); 	try{ 	    ResultSet study; 	    Statement stmt1 = Database.createStatement(); 	    study = stmt1.executeQuery( 	       "SELECT STU_INSTANCE_UID FROM STUDY WHERE "+ 	       "STU_OTHER_NUMBER IN ('8255','8256','8262','8263','8264','8265','8266','8267','8268','8269') AND "+ 	       "STU_STATUS='VERIFIED' AND STU_DATE>'20041101' "+ 	       "ORDER BY STU_DATE ASC"); 	    int count = 1; 	    while (study.next()) { 		String stu = study.getString("STU_INSTANCE_UID"); 		StudyList.add(stu); 		count++; 	    }  	} catch(SQLException ex){ 	    System.out.println("Erreur a la demande de la liste d'etudes: "+ex.toString()); 	}     }      ///////////////////////////////////////////////////////////////     ///Process study list     ///Fetch anterior study     ///Fetch image list for study and anterior     ///Fetch images     public void fetchImages() { 	boolean connected = false; 	System.out.println("Connection au serveur de db"); 	if (dbConnect()) { 	    connected = true; 	    System.out.println("Connection etablie"); 	    System.out.println("Demande de la liste d'etudes"); 	    dbSelectStudy(); 	} else { 	    connected = false; 	    System.out.println("Pas de connection à la base de donnée, on arrête."); 	    return; 	}  	for (int x=0; x<StudyList.size(); x++) { 	    if (!connected) { 		System.out.println("Connection au serveur de db"); 		if (dbConnect()) { 		    connected = true; 		    System.out.println("Connection etablie"); 		} else { 		    connected = false; 		    System.out.println("Pas de connection à la base de donnée, on arrête."); 		    return; 		} 	    } 	    System.out.println("-----------------------------------------"); 	    System.out.println(StudyList.get(x)); 	    //Fetch Anterior Study List 	    System.out.println("Fetching anterior"); 	    dbSelectAnt((String)StudyList.get(x)); 	    //Fetch Image List 	    dbSelectImages((String)StudyList.get(x),false); 	    //Fetch Anterior Image List 	    int count; 	    for (count=0; count<AnteriorList.size(); count++) { 		dbSelectImages((String)AnteriorList.get(count),true); 	    }  	    System.out.println("Traitement de la liste d'etudes"); 	    //Process image list 	    if (ImageList.size()>0) { 		boolean conn = false; 		//Initialise Ftp Connexion but open it only if needed 		FtpConnect ftpc = FtpConnect.newConnect(FTP_Name); 		ftpc.setUserName(FTP_User); 		ftpc.setPassWord(FTP_Pass); 		Ftp ftp = new Ftp(); 		//Retrieve Images (if not present locally) 		File TestFile; 		String[] COI = new String[4]; 		for (count=0; count<ImageList.size(); count++) { 		    COI = ((String[])ImageList.get(count)); 		    //System.out.println(count+" "+COI[3]); 		    //System.out.println("FILE:"+base_path+"/"+COI[1]+"/"+COI[2]+"/"+COI[3]+".dcm"); 		    TestFile = new File(base_path+"/"+COI[1]+"/"+COI[2]+"/"+COI[3]+".dcm"); 		    if (!TestFile.exists()) { 			//Si on a besoin de downloader on se déconnecte de la db 			//pour eviter de faire un timeout du reseau 			if (connected) { 			    System.out.println("Deconnection de la base de donnee"); 			    dbDisconnect(); 			    connected = false; 			    System.out.println("Connection terminee"); 			} 			if (!conn) { 			    try { 				//Open ftp connexion we need it 				ftp.connect(ftpc); 				conn = true; 			    } catch (IOException e) { 				System.out.println(e); 			    } 			} 			if (ftp.isConnected()) { 			    //Retrieve image 			    retrieveImages(((String[])ImageList.get(count)),ftp); 			} 			else { 			    System.out.println("On ne peut pas transferer l'image, on a pas de connexion"); 			    conn = false; 			} 		    } 		    else { 			System.out.println("o "+TestFile.getName()); 		    } 		} 		//Close Ftp Connexion 		ftp.disconnect(); 		conn = false; 	    } 	} 	if (connected) { 	    System.out.println("Deconnection de la base de donnee"); 	    dbDisconnect(); 	    connected = false; 	    System.out.println("Connection terminee"); 	}     }      //////////////////////////////////////////////////////     ///Find anterior studies for a specific study     public void dbSelectAnt(String stu_uid) { 	AnteriorList.clear(); 	try{ 	    ResultSet study; 	    Statement stmt1 = Database.createStatement(); 	    study = stmt1.executeQuery( 				       "SELECT STU_PAT_ID,STU_OTHER_NUMBER,STU_INSTANCE_UID,STU_DATE,STU_TIME FROM STUDY WHERE "+ 				       "STU_INSTANCE_UID = '"+stu_uid+"'"); 	    study.next();  	    String pat_id = study.getString("STU_PAT_ID"); 	    String stu_on = study.getString("STU_OTHER_NUMBER"); 	    String stu_date = study.getString("STU_DATE"); 	    String stu_time = study.getString("STU_TIME");  	    System.out.println("=================="); 	    System.out.println("PATIENT: "+pat_id); 	    System.out.println("=================="); 	    //Demande les anterieurs 	    //Pour le meme patient 	    //Dans la liste de code HISTORICAL_IMAGE 	    //Le premier (plus recent) pour chaque code 	    // 	    study = stmt1.executeQuery( 				       "SELECT STU_INSTANCE_UID,STU_OTHER_NUMBER FROM STUDY WHERE "+ 				       "STU_PAT_ID = '"+pat_id+"' AND "+ 				       "STU_INSTANCE_UID != '"+stu_uid+"' AND "+ 				       "(STU_DATE<'"+stu_date+"' OR (STU_DATE='"+stu_date+"' AND STU_TIME<'"+stu_time+"')) AND "+ 				       "STU_OTHER_NUMBER IN (SELECT HI_EXAMCODE FROM HISTORICAL_IMAGES WHERE HI_REF_EXAMCODE='"+stu_on+"') "+ 				       "ORDER BY STU_OTHER_NUMBER ASC, STU_DATE DESC, STU_TIME DESC");  	    int count = 1; 	    String code = ""; 	    String stu_code = ""; 	    while (study.next()) { 		stu_code = study.getString("STU_OTHER_NUMBER"); 		if (code.compareTo(stu_code)!=0) { 		    String stu = study.getString("STU_INSTANCE_UID"); 		    System.out.println("Trouve "+stu_code+" - "+stu); 		    AnteriorList.add(stu); 		    code = stu_code; 		} 		count++; 	    }  	} catch(SQLException ex){ 	    System.out.println("Erreur a la demande de la liste d'anterieur: "+ex.toString()); 	}     }      ///////////////////////////////////////////////////////     ///Find images for a study and put them in ImageList     ///is keep is true, doesn't clear the list, simply add to it     public void dbSelectImages(String stu_uid, boolean keep) { 	if (!keep) 	    ImageList.clear(); 	try{ 	    ResultSet study; 	    Statement stmt1 = Database.createStatement();     	    study = stmt1.executeQuery( 				       "SELECT * FROM COMPOSITE_OBJECT_INSTANCE,MEDIA_FILE_SET WHERE "+ 				       "COI_STUDY_INSTANCE_UID = '"+stu_uid+"' AND "+ 				       "COI_STO_MEDIA_FSET_UID = MFS_UID");  	    int count = 0; 	    String COI[]; 	    while (study.next()) { 		COI = new String[4]; 		COI[0] = study.getString("MFS_MOUNT_POINT"); 		COI[1] = study.getString("COI_STUDY_INSTANCE_UID"); 		COI[2] = study.getString("COI_SERIES_INSTANCE_UID"); 		COI[3] = study.getString("COI_SOP_INSTANCE_UID"); 		String remote_filename = COI[0]+"/"+COI[1]+"/"+COI[2]+"/"+COI[3]+".dcm"; 		System.out.println("Must retrieve: "+COI[3]); 		ImageList.add(COI); 		count++; 	    } 	    if (count==0) 		System.out.println("Aucune images");  	} catch(SQLException ex){ 	    System.out.println("Erreur a la demande de la liste d'images: "+ex.toString()); 	}     }      ///////////////////////////////////////////////////////     ///Retrieve images     public void retrieveImages(String COI[], Ftp ftplink) { 	// source FtpFile remote file 	String remote_filename = COI[0]+"/"+COI[1]+"/"+COI[2]+"/"+COI[3]+".dcm"; 	CoFile file = new FtpFile(remote_filename,ftplink); 	// Check if local directory exists and create them if needed 	File testDir = new File(base_path+"/"+COI[1]); 	if (!testDir.exists()) 	    testDir.mkdir(); 	testDir = new File(base_path+"/"+COI[1]+"/"+COI[2]); 	if (!testDir.exists()) 	    testDir.mkdir(); 	// destination LocalFile home-dir/Welcome 	CoFile to = new LocalFile(base_path+"/"+COI[1]+"/"+COI[2],COI[3]+".dcm"); 	// download /Welcome file to home-dir/Welcome 	CoLoad.copy(to,file);     } }