Ultracopier

News générale d’ultracopier

Tar and gzip

Le format TAR

Le format TAR

Pourquoi je l’utilise? Car c’est un format libre, ce qui garantit l’interopérabilité. Cela est important car cela me permet d’avoir toujours un logiciel pour faire et lire l’archive, sans license ou redevance. Cela permet d’encoder un tar sous Windows, Linux, Mac. Le faire ma propre lib pour le lire (donc réduire la taille du code car je limite les fonctionnalités à ce que j’ai besoin).

Tar and gzip

Tar and gzip

Cela me permet de découplé le format de stockage et la compression en elle même. Utiliser le format Tar avec gzip, zlib ou autre.

Comment est fait un Tar?

Vous avez les données, le contenu des fichiers. Et les métadonnées, nom, chemin, chmod, utilisateur, groupe, date de creation… Le format Tar tar fonctionne par bloque, les trous entre les bloques sont remplit par des 0 binaires. Le format est orienté stockage sur bande, il date de 1979 (normalisation 1988) mais eu des revisions entre temps.

Le fait de ne pas faire une bête sérialisation peu être gênant pour les systèmes de compression car il y as un trou de X 0 binaire. Cela rajoute du bruit, ce qui est problématique pour optimiser la compression. Si en plus l’on rajoute le faite que les entier sont stocké en chaine, ce qui réduit encore le ratio de compression comparé au binaire (voir: Compression et Binary dans le wiki de CatchChallenger). Cela réduit aussi les performances de l’encodeur et décodeur Tar de travailler en chaine et non pas en binaire (sans parler des limitations de la longueur des nombres représentés).

Un format mieux étudié pourrai avoir une taille bien inférieur sans compression et un meilleur ratio de compression.

Supprimer des meta données serai une bonne idée. Par exemple dans mon décompresseur je ne prends en compte QUE le fichier et son nom et j’ignore une grande partie et méta données: chmod, utilisateur, groupe, date de creation…

Conclusion

Je vais continuer à utiliser Tar dans le cadre de mes logiciels pour faciliter la création de plugin pour Ultracopier/Supercopier et pour l’intégration facile coté serveur dédié (99% de unix) pour CatchChallenger via un mirroir http (car pour le self hosting il y as déjà un rsync simplifié qui rends toute utilisation de Tar inutile).

Faire mon propre format n’est pas un probléme, le probléme serai de faire/maintenir et distribuer l’encodeur et le décodeur pour ce format.

This game is a independent MMORPG

Logiciel payant, gratuit, demo

Bonjour,

Vous êtes déjà vous demandé comment gagner de l’argent avec un logiciel? Il y a le modéle google/facebook qui gange sur votre vie privée et les données que vous leur confiez.

Mais je parle d’application. Il y as une partie de l’application qui est gratuite, pour montrer/promotionner votre logiciel, et une partie pour le rentabiliser. Tout est dans le ratio de ces 2 parties. Une demo c’est en général 20% du logiciel complet. Le probléme c’est quand c’est pas clairement affiché, il arrive souvent que le contenu téléchargé (DLC) représente 80% du logiciel, donc logiciel fourni est une demo qu’on vous donne sans vous le dise.

Avec Ultracopier/Supercopier c’est 99% du logiciel qui est gratuit, et quand vous payer c’est 1% de plus (le titre), sans compter le support prioritaire, l’optimisation cpu. Pour CatchChallenger, je vais plutôt faire 80% gratuit. Et la version payante, c’est 20% de plus. Avec aussi support prioritaire, correction de bug plus rapide, plus de poids pour le choix dans les fonctionnalités. Et le tout étant en GPL3, même les versions payantes.

Mais comme tout logiciel communautaire et libre, je être à l’écoute de ma commuté pour que je gagne ma vie mais que la communauté à le logiciel qu’elle veut et qui lui plait.

La version CatchChallenger vas bien sortir en fin d’année, et la prochaine version incluant pas mal d’avancé prendra 2ans pour  être faite. Je posterai la roadmap quand elle sera fini et les temps sur chaque fonctions que j’ai estimé. La version 1 aura pris au total un peu plus de 3ans, 5Mo de code, 1500 commits, 5Mo de contenu. Et ceux sans aucun revenu. Les technologies sont très avancé malgré l’apparence assez veille du jeu.

J’ai ouvert les comptes nextcoin pour qu’il soit publique et visible pour les dons comme pour les revenus commercial d’argent. Cela je pense, réponds au droit de regards qu’as la communauté sur l’argent. Sachant que je bosse 120h par semaine et que je fait le travail d’une équipe de dev complète et pro.

Bye

Supercopier sous linux et Mac

Bonjour,

Et voila Supercopier 3 pour linux et mac:

Supercopier

Supercopier

En faite c’est une nouvelle interface pour le prochain Ultracopier…

Les autres interface ont été amélioré, dons Teracopy avec la multiple progression.

Cordialement,

Large liste de copie sous Ultracopier

Je viens de tester Ultracopier avec 2 millions de fichiers et 2To.

Ca m’as permit de trouver d’autre petit bug qui n’ont rien à voir. Mais la copie marche bien, attention, il faut Ultracopier 64Bits et 8Go de mémoire mini pour boucler cette copie.

Je vais essayer d’améliorer encore la réactivité pour ce cas de figure, qui est vraiment très bonne.

Large copy list under Ultracopier

Large copy list under Ultracopier, with 2 millions of files and 2TB.

En passant, mon site pro: herman infogerance

Activer un modules dans Qt5

Bonjour,

J’ai besoin du modules QtSystemInfo/qtsystems (system info) de Qt5. N’étant que peu testé, il ce peu qu’il y ai pas mal de bug (mais sous linux il semble marcher). Ce module me permettra d’avoir l’espace disque libre, les points de montages/disque. Bref tout ce qui est important pour ne pas tout faire moi même dans ultracopier.

Je part du principe que comme moi, vous le compiler depuis git. La commande à faire avant le perl init-repository:

cd /path/to/qt/
git submodule add git://gitorious.org/qt/qtsystems.git qtsystems

Dans qt.pro:

module_qtsystems.subdir = qtsystems
module_qtsystems.target = module-qtsystems
module_qtsystems.depends = module_qtbase
exists(qtsystems/qtsystems.pro) {
 SUBDIRS += module_qtsystems
module_qtsystems.depends += module_qtdeclarative
}

Vous l’avez pris par git, le .git/config à été créé, mettez à la fin:

[submodule "qtsystems"]
 url = git://gitorious.org/qt/qtsystems.git

Créé le fichier qtsystems avec dedans (juste le dossier « qtsystems » semble bon):

Subproject commit 47a8dc2b22164f4af09c14d8d6cde4f28318d08c

Le numéro du commit, je vais le rechercher directement dans le git du module (https://qt.gitorious.org/qt/qtsystems) puis je sélectionne le dernier commit, en haut le numéro de commit est affiché.

Je rajouterai si il manque des choses.

Bye.

Supercopier, site qui ne marche plus

Et voila, après plusieurs années sans activité, maintenant le site de supercopier n’est plus accessible.

Supercopier 2 datant de 2006 (news de 2009 car installation du site en wp à cette date). Maintenant le site supercopier.sfxteam.org est down d’une bonne fois pour toute.

J’ai fait un image içi de Supercopier gratuit qui permet de continuer à avoir les sources, l’application. Mais elle contiens des bouts de code spécifique à un compilateur et à Windows XP, ce qui ne permet pas d’étre compiler avec un compilateur delphi moderne comme lazarus. La structure, les performances, tout est trop vieux. Tout le monde préfère je pense ultracopier, basé sur Qt, 64bits, moderne, modulaire.
Supercopier 2 sera mis à jour pour passer en version 3.

Dommage qu’il n’as pas été maintenu.

Ultracopier application stoppé

Bonjour, l’application ultracopier est stoppé car wine fait crasher gcc, et mes .bat sous windows ne marche pas, donc pas moyen de faire la moindre version automatisé. Coté linux et mac, j’attends toujours un QT 4.8 stable. Je n’est pas non plus beaucoup de temps à consacré à ultracopier ces derniérs temps.

Site d’ultracopier

Bonjour, j’ai commencer à refaire le site d’ultracopier.

J’aurai besoin d’aide sur le remake du site pour mettre un anglais correcte.

Je fait: forum (pour les discutions et repport de bug), wiki (pour les doc et guide), et le site principal (allégé et clarifié).

Teracopy trés lent

Bonjour, je viens de copier d’un partage réseau (samba protocole smb1 sous linux, monté en z:) vers hdd local windows xp. Teracopy plusieurs minutes, le copieur par default: 7s. Ultracopier avec le moteur de copie 0.29sUltracopier avec le moteur de copie 0.39s. En passant je viens de noter un certain nombre de bug sur la gestion de plusieurs moteur de copie avec Ultracopier.

Alors maitenant qu’on vienne pas me dire que teracopy est + rapide, peu étre sur les fichiers local, mais surtout pas sur les fichiers d’un partage réseau. En plus l’annulation de la copie alors que la destination existé m’as détruit tout les fichiers de destination! Pour reproduire, faire une copie depuis le réseau, faire tout écrasé, la copie lag, annulé la copie. (Bug impossible avec le code d’ultracopier, vu que pour l’écrasement il ne supprime la le fichier)

File transfer for file copy/move

Hello, here I will speak about file transfer to do copy/move. You need understand some basic therms.

I have discover which each OS and FS is different.

  • Windows/ntfs have correct fs layer, asynchronous inode and data layer, synchronous is not allowed and then flush return instantly regardless if is really written on the disk (prevent freeze the application, in all case data in memory lost application blocked or not). 
  • Linux/ext4 with partial asynchronous for data layer (in loop read/write the read block the write, and the write block the read), inode creations and manipulations are synchronous but due to low volume the aggressive access can be done without big lost of performance.
In my work I have found lot of problem, the main was:
  • close file descriptor after write lot of content call flush function or like, then is slow down while all file is not write, regardless if the hdd is idle or have few occupation.
  • In loop: read 1 block, write 1 block, the out of cache/buffer block the other operation without reason.
  • Inode access can be parallel to be grouped by the OS. At parallel copy, the mkdir to create the destination folder can concurrence then self.
  • The graphic thread, then the main thread can be slow down in some condition (like linux with slow open source graphic drivers and large file copy list), and the IO access is blocking.

Ultracopier 0.1

While { read (position); write (position) }

  • Advantage: Very simple, and used by the most of developer to have simple copy file.
  • Disadvantage: The missing cache do read blocking, then if buffer is not full, the write can be down without blocking but the loop and thread is blocked at read function and the contrary.
  • Implementation mistake: The slow down in interface slow down the copy.

Ultracopier 0.2

Thread 1: While { read (position); } , Thread pool for write: While { write (position); } close(); , and pipe like communication

  • Advantage: The close function is blocked in thread, and while is blocked another write thread is used. The read not block anymore the write, and the contrary (the different media have advantage, and the buffer and cache level can change separately and be in concurrency).
  • Disadvantage: It’s complicated on some programming aspect, I have need use goto to minimize the code, and have great big read function. The write thread decision is can be complicated too. The list parsing and read is same code for intuitive programming. Not parallel the extra programming like variable initialization, to prevent slow down for not real copy operation. Not parallel inode and data parallel operation possible. Can’t recovery destination file write corruption. 
  • Implementation mistake: Do with thread and lot of blocking function (not event to have cleaner design), based on 0.1 design. The slow down in interface slow down the copy.

Ultracopier 0.3

Thead 1: Copy list send/receive event (start transfer, stop transfer event), Thread list of {Read thread, Write thread, transfer thread} with pipe like communication.

  • Advantage: Can parallel the inode and data access, prevent no copy operation to slow down the copy. Can group inode access via parallel access, but data parallel is bad in general. Have asynchronous behavior like for all OS/FS (included synchronous OS/FS like linux/ext4). Very cleaner design, possible separate control on each transfer. Can recovery destination file write corruption. 
  • Disadvantage: Need master multi-thread, data locality, and lot of advanced algorithm.
The new copy engine is the best I have do, if you which do your copy engine to have better, make it has ultracopier plugin and compare with my copy engine.
Go to Top