mardi 28 septembre 2010

Tumblr Itair

Depuis quelques jour je post sur tumblr. Je trouve ce site très facile d'accès. Je ne postais pas assez souvent sur ce blog car j'ai bien que mes articles soient correctement travaillé. J'ai moins de scrupule sur tumblr..

Je garde ce blog pour tes projets plus important.

A bientôt
Itair

mardi 23 mars 2010

Telecharger 300Go par ssh

La problématique du jour: Comment télécharger un fichier de 300Go sur un VPN en utilisant SSH. Le vrai problème vient du VPN qui finit par coupé, et donc de bloquer le téléchargement.

Si on utilise ftp pas de problème, on peut utiliser l'option continue. Mais dans le cas ou on n'a pas accès à ftp (donc on n'est pas root sur la machine, sinon c'est trop facile).

La solution consiste à découper le fichier, calculer une somme de contrôle, s'envoyer les fichiers et faire un controle des fichiers.

# Etape 1 : Découpage
ssh toto@server
mkdir splitted
split -b 100m data.tar.gz splitted/data.tar.gz.
cd splitted
md5sum -b data.tar.gz.* > cheksum.md5
exit

Le problème de cette solution c'est qu'on double l'espace disque nécessaire, à 300Go ça peut etre significatif ! Ici j'utilise un tar. Il est possible de tarrer et splitter à la volé.
tar czf dossier/* | split -b 100m - splitted/data.tar.gz.


# Etape 2 : Transfert
sftp toto@server
cd splitted
get cheksum.md5
get data.tar.gz.*
exit

En cas d'erreur de téléchargement, faire un checksum en local pour identifier les fichiers corrompus
cd splitted
md5sum -c cheksum.md5 | grep -v OK


On peut relancer le téléchargement partiellement grâce à sftp et les wildcards. Par exemple
get data.tar.gz.[g-z]?
récupère les fichiers à partir de data.tar.gz.ga jusqu'à data.tar.gz.zz

Ce qui est très pratique avec cette méthode c'est qu'elle peut vous sauver la vie. Après un scp audacieux sur un fichier de 10Go qui foire à 90% de la fin. On peut faire le split coté client et serveur, générer un checksum coté client et le tester sur les fichiers splittés coté serveur : c'est magique les checksum colle. Enfin on Effectue le téléchargement des fichiers manquants..

# Etape 3 : Reconstruction
cat splitted/data.tar.gz.* > data.tar.gz

TADA !

jeudi 28 janvier 2010

Le meilleur du pire 4

En direct de "je n'y comprend rien à l'injection, mais c'est pas grave je suis pas le seul", voici un exemple de ce qu'il ne faut pas faire :

public void setCategoryService(CategoryService categoryService) {
CypresUtils.setCategoryService(categoryService);
}

public void setContentService(ContentService contentService) {
CypresUtils.setContentService(contentService);
}

public void setMimetypeService(MimetypeService mimetypeService) {
CypresUtils.setMimetypeService(mimetypeService);
}

public void setServiceRegistry(ServiceRegistry serviceRegistry) {
CypresUtils.setServiceRegistry(serviceRegistry);
}

public void setPermissionService(PermissionService permissionService) {
CypresUtils.setPermissionService(permissionService);
}


Pour faire simple, si j'utilise Spring pour gérer les dépendances entre mes services ce n'est pas pour mettre les-dit services en static dans une classe four-tous....

Note : Préstation réalisé par Monsier : "Bonjour, je suis expert en J2EE et j'ai 3 ans d'expériences" (sic)