Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
nombre réponses : 25

#0 -1 »  mise en ligne de www.open-source-projects.net. » Le 03/08/2015, à 04:36

ubuntuforce
Réponses : 1

Bonjours tout le monde Open-Source,

je poste pour vos annoncer la mise en ligne de mon dernier site qui présentes la plupart de mes créations écrit en python ou en C, programmes, module python et libraries C.

le site s'appelle www.open-source-projects.net et j'en suis fier car côté technique je l'ai écrit a la main en HTML5 pur avec vérification de la validité du code.

J'ai du coup améliorer mes créations, bien sur totalement Open-Source:

de la simple amélioration de script bash d'installation: install.sh et de désinstallation: uninstall.sh en passant par la rectification de bugs dans les programme(s) et l'installation des dépendances dans les fichiers systèmes pour la création de fichier *.deb (Avant je créais un dossier dans le $HOME de l'utilisateur) et la nouvelle utilisation des autotools pour les programmes en C et libraries.

Mes créations sont souvent disponible en *.tarball (pour Linux et éventuellement POSIX compilant)  et en paquetage *.deb pour les OS de la famille debian.

Windows n'est pas en reste car certains programmes dispose d'une version Windows distribuer sous forme d'exécutable (*.exe) auto-extractible.

Alors rendez vous sur le site de créations Open-Source d'un programmeur amateur.

Je suis ouvert a toute forme de critique.
Alors si vous avez envie de réagir par une critique, un avis, un conseil, un jugement ou autres il sont la bienvenue. 

Merci pour vos réponses.

PS: il faudra un peu attendre avant d'avoir une version corrigée du site vue que écrit par mes soins et en anglais, alors un peu de clémence s'il vous plaît, c'est en cours par une professionnelle .

#1 -1 »  besoin d'aide pour utilisation de git. » Le 27/07/2015, à 05:16

ubuntuforce
Réponses : 7

Salut les Ubuntues,

Mon problème est énoncer dans le titre du poste: j'ai vraiment une utilisation basique de git
+ le programme, qui est vaste et comporte de multiples options.
+ et donc la forge a programme github.

Par exemple si je veut mettre a jours un dépôt la solution que j'utilise est d'effacer le dépôt et de le recréer immédiatement après en uploadant de nouveau toutes les données (incluant ceux qui ont changé).
Cela fonctionne mais je trouve la solution assez barbare !!!

Par exemple si je désire rajouter une image a la page de présentation du dépôt comme celle de l'éditeur de texte avec terminaux intégrés IT-Edit a un dépôt dont la page de présentation ne contient pas d'image et bien je serai forcer d'utiliser la méthode expliquer au-dessus.

En faîte la seule chose que je sais faire d'autre est d'éditer un fichier (texte) grâce a l'interface du site...

Et je désirerai savoir faire un peu plus comme:

+ Ajouter un fichier a un endroit précis du dépôt.
+ Ajouter un dossier récursivement a mon dépôt.
+ Effacer un dossier récursivement de mon dépôt.
Vous voyez tout concerne la gestion de fichier et de dossier du dépôt.

Ne m'envoyer pas vers la manpage de git car celle-ci me renvoie vers les manpages suivantes:
J'aimerai plutôt que vous m'aidiez concernant les opérations que je vous ai enoncer.

Merci pour vos réponses éclairées et pour votre précieuse aide.

Extrait de man git:

Main porcelain commands
       git-add(1)
           Add file contents to the index.

       git-am(1)
           Apply a series of patches from a mailbox.

       git-archive(1)
           Create an archive of files from a named tree.

       git-bisect(1)
           Find by binary search the change that introduced a bug.

       git-branch(1)
           List, create, or delete branches.

       git-bundle(1)
           Move objects and refs by archive.

       git-checkout(1)
           Checkout a branch or paths to the working tree.

       git-cherry-pick(1)
           Apply the changes introduced by some existing commits.

       git-citool(1)
           Graphical alternative to git-commit.

       git-clean(1)
           Remove untracked files from the working tree.

       git-clone(1)
           Clone a repository into a new directory.

       git-commit(1)
           Record changes to the repository.

       git-describe(1)
           Show the most recent tag that is reachable from a commit.

       git-diff(1)
           Show changes between commits, commit and working tree, etc.

       git-fetch(1)
           Download objects and refs from another repository.

       git-format-patch(1)
           Prepare patches for e-mail submission.

       git-gc(1)
           Cleanup unnecessary files and optimize the local repository.

       git-grep(1)
           Print lines matching a pattern.

       git-gui(1)
           A portable graphical interface to Git.

       git-init(1)
           Create an empty Git repository or reinitialize an existing one.

       git-log(1)
           Show commit logs.

       git-merge(1)
           Join two or more development histories together.

       git-mv(1)
           Move or rename a file, a directory, or a symlink.

       git-notes(1)
           Add or inspect object notes.

       git-pull(1)
           Fetch from and integrate with another repository or a local branch.

       git-push(1)
           Update remote refs along with associated objects.

       git-rebase(1)
           Forward-port local commits to the updated upstream head.

       git-reset(1)
           Reset current HEAD to the specified state.

       git-revert(1)
           Revert some existing commits.

       git-rm(1)
           Remove files from the working tree and from the index.

       git-shortlog(1)
           Summarize git log output.

       git-show(1)
           Show various types of objects.

       git-stash(1)
           Stash the changes in a dirty working directory away.

       git-status(1)
           Show the working tree status.

       git-submodule(1)
           Initialize, update or inspect submodules.

       git-tag(1)
           Create, list, delete or verify a tag object signed with GPG.

       gitk(1)
           The Git repository browser.

   Ancillary Commands
       Manipulators:

       git-config(1)
           Get and set repository or global options.

       git-fast-export(1)
           Git data exporter.

       git-fast-import(1)
           Backend for fast Git data importers.

       git-filter-branch(1)
           Rewrite branches.

       git-mergetool(1)
           Run merge conflict resolution tools to resolve merge conflicts.

       git-pack-refs(1)
           Pack heads and tags for efficient repository access.

       git-prune(1)
           Prune all unreachable objects from the object database.

       git-reflog(1)
           Manage reflog information.

       git-relink(1)
           Hardlink common objects in local repositories.

       git-remote(1)
           manage set of tracked repositories.

       git-repack(1)
           Pack unpacked objects in a repository.

       git-replace(1)
           Create, list, delete refs to replace objects.

       Interrogators:

       git-annotate(1)
           Annotate file lines with commit information.

       git-blame(1)
           Show what revision and author last modified each line of a file.

       git-cherry(1)
           Find commits yet to be applied to upstream.

       git-count-objects(1)
           Count unpacked number of objects and their disk consumption.

       git-difftool(1)
           Show changes using common diff tools.

       git-fsck(1)
           Verifies the connectivity and validity of the objects in the
           database.

       git-get-tar-commit-id(1)
           Extract commit ID from an archive created using git-archive.

       git-help(1)
           Display help information about Git.

       git-instaweb(1)
           Instantly browse your working repository in gitweb.

       git-merge-tree(1)
           Show three-way merge without touching index.

       git-rerere(1)
           Reuse recorded resolution of conflicted merges.

       git-rev-parse(1)
           Pick out and massage parameters.

       git-show-branch(1)
           Show branches and their commits.

       git-verify-tag(1)
           Check the GPG signature of tags.

       git-whatchanged(1)
           Show logs with difference each commit introduces.

       gitweb(1)
           Git web interface (web frontend to Git repositories).

   Interacting with Others
       These commands are to interact with foreign SCM and with other people
       via patch over e-mail.

       git-archimport(1)
           Import an Arch repository into Git.

       git-cvsexportcommit(1)
           Export a single commit to a CVS checkout.

       git-cvsimport(1)
           Salvage your data out of another SCM people love to hate.

       git-cvsserver(1)
           A CVS server emulator for Git.

       git-imap-send(1)
           Send a collection of patches from stdin to an IMAP folder.

       git-p4(1)
           Import from and submit to Perforce repositories.

       git-quiltimport(1)
           Applies a quilt patchset onto the current branch.

       git-request-pull(1)
           Generates a summary of pending changes.

       git-send-email(1)
           Send a collection of patches as emails.

       git-svn(1)
           Bidirectional operation between a Subversion repository and Git.

LOW-LEVEL COMMANDS (PLUMBING)
       Although Git includes its own porcelain layer, its low-level commands
       are sufficient to support development of alternative porcelains.
       Developers of such porcelains might start by reading about git-update-
       index(1) and git-read-tree(1).

       The interface (input, output, set of options and the semantics) to
       these low-level commands are meant to be a lot more stable than
       Porcelain level commands, because these commands are primarily for
       scripted use. The interface to Porcelain commands on the other hand are
       subject to change in order to improve the end user experience.

       The following description divides the low-level commands into commands
       that manipulate objects (in the repository, index, and working tree),
       commands that interrogate and compare objects, and commands that move
       objects and references between repositories.

   Manipulation commands
       git-apply(1)
           Apply a patch to files and/or to the index.

       git-checkout-index(1)
           Copy files from the index to the working tree.

       git-commit-tree(1)
           Create a new commit object.

       git-hash-object(1)
           Compute object ID and optionally creates a blob from a file.

       git-index-pack(1)
           Build pack index file for an existing packed archive.

       git-merge-file(1)
           Run a three-way file merge.

       git-merge-index(1)
           Run a merge for files needing merging.

       git-mktag(1)
           Creates a tag object.

       git-mktree(1)
           Build a tree-object from ls-tree formatted text.

       git-pack-objects(1)
           Create a packed archive of objects.

       git-prune-packed(1)
           Remove extra objects that are already in pack files.

       git-read-tree(1)
           Reads tree information into the index.

       git-symbolic-ref(1)
           Read, modify and delete symbolic refs.

       git-unpack-objects(1)
           Unpack objects from a packed archive.

       git-update-index(1)
           Register file contents in the working tree to the index.

       git-update-ref(1)
           Update the object name stored in a ref safely.

       git-write-tree(1)
           Create a tree object from the current index.

   Interrogation commands
       git-cat-file(1)
           Provide content or type and size information for repository
           objects.

       git-diff-files(1)
           Compares files in the working tree and the index.

       git-diff-index(1)
           Compare a tree to the working tree or index.

       git-diff-tree(1)
           Compares the content and mode of blobs found via two tree objects.

       git-for-each-ref(1)
           Output information on each ref.

       git-ls-files(1)
           Show information about files in the index and the working tree.

       git-ls-remote(1)
           List references in a remote repository.

       git-ls-tree(1)
           List the contents of a tree object.

       git-merge-base(1)
           Find as good common ancestors as possible for a merge.

       git-name-rev(1)
           Find symbolic names for given revs.

       git-pack-redundant(1)
           Find redundant pack files.

       git-rev-list(1)
           Lists commit objects in reverse chronological order.

       git-show-index(1)
           Show packed archive index.

       git-show-ref(1)
           List references in a local repository.

       git-unpack-file(1)
           Creates a temporary file with a blob’s contents.

       git-var(1)
           Show a Git logical variable.

       git-verify-pack(1)
           Validate packed Git archive files.

       In general, the interrogate commands do not touch the files in the
       working tree.

   Synching repositories
       git-daemon(1)
           A really simple server for Git repositories.

       git-fetch-pack(1)
           Receive missing objects from another repository.

       git-http-backend(1)
           Server side implementation of Git over HTTP.

       git-send-pack(1)
           Push objects over Git protocol to another repository.

       git-update-server-info(1)
           Update auxiliary info file to help dumb servers.

       The following are helper commands used by the above; end users
       typically do not use them directly.

       git-http-fetch(1)
           Download from a remote Git repository via HTTP.

       git-http-push(1)
           Push objects over HTTP/DAV to another repository.

       git-parse-remote(1)
           Routines to help parsing remote repository access parameters.

       git-receive-pack(1)
           Receive what is pushed into the repository.

       git-shell(1)
           Restricted login shell for Git-only SSH access.

       git-upload-archive(1)
           Send archive back to git-archive.

       git-upload-pack(1)
           Send objects packed back to git-fetch-pack.

   Internal helper commands
       These are internal helper commands used by other commands; end users
       typically do not use them directly.

       git-check-attr(1)
           Display gitattributes information.

       git-check-ignore(1)
           Debug gitignore / exclude files.

       git-check-mailmap(1)
           Show canonical names and email addresses of contacts.

       git-check-ref-format(1)
           Ensures that a reference name is well formed.

       git-column(1)
           Display data in columns.

       git-credential(1)
           Retrieve and store user credentials.

       git-credential-cache(1)
           Helper to temporarily store passwords in memory.

       git-credential-store(1)
           Helper to store credentials on disk.

       git-fmt-merge-msg(1)
           Produce a merge commit message.

       git-mailinfo(1)
           Extracts patch and authorship from a single e-mail message.

       git-mailsplit(1)
           Simple UNIX mbox splitter program.

       git-merge-one-file(1)
           The standard helper program to use with git-merge-index.

       git-patch-id(1)
           Compute unique ID for a patch.

       git-sh-i18n(1)
           Git’s i18n setup code for shell scripts.

       git-sh-setup(1)
           Common Git shell script setup code.

       git-stripspace(1)
           Remove unnecessary whitespace.

#2 Re : -1 »  besoin d'aide pour utilisation de git. » Le 29/07/2015, à 21:07

ubuntuforce
Réponses : 7

Merci pour vos réponses éclairées,

Au sujet de mon intérêt pour les truc de barbue je n'ai jamais dit que je n'avait pas chercher en commençant par la manpage de git mais il est vrai que j'ai vite abandonner face a la masse de commandes...

Les première instructions qu'a présenter cervo:
c.a.d créer le dépôt en locale (git init) puis de pusher après avoir additionner et commit les fichiers je sais le faire puisque j'ai dit que je réinitialiser les dépôts pour les update.
Mais j'ai tendance a effacer le dossier locale grâce auquel j'ai créer le dépôt après que j'en ai finit (pour cette fois-ci).

Donc si je veux ajouter un fichier|dossier je ne devrai pas.

Puis sinon quand j'essaie de me connecter a un dépôt qui existe déjà il me dit justement que le dépôt existe déjà et donc retourne une erreur...

PS: est-il possible en ayant créer un dépôt puis effacer le dossier git correspondant après en avoir finit (pour l'instant) de se connecter après a ce dépôt afin de faire diverses opérations ?

#3 Re : -1 »  Programmation C et lib externes. » Le 27/10/2014, à 19:58

ubuntuforce
Réponses : 6

Merci quand même les gars.
Une remarque pour telliam il n'y en a pas qui sortent du lot ?
Une remarque pour benoitfra: je crois que je vais revoir ce bouquin (Concernant GNOME 3) la que j'ai lu il a quelque temps mais qui n'a pas été très constructifs.

#4 Re : -1 »  activer une partition swap [résolus]. » Le 14/04/2015, à 13:07

ubuntuforce
Réponses : 7

Merci les gars votre précieuse aide m'a permis de mettre une partition de swap au démarrage de chaque OS.

Que Ubuntu fasse la force.

#5 -1 »  activer une partition swap [résolus]. » Le 06/04/2015, à 05:48

ubuntuforce
Réponses : 7

Salut les Ubuntus,

Après avoir tout essayer de réinstaller Windows, je me suis décider a ne plus avoir Windows et j'ai donc installer un second système Ubuntu car étant auparavant en dual-boot, Windows m'a souler avec ses disques d'installation qui ne marche pas.

Brefs en même temps j'ai beaucoup user de GParted pour supprimer, agrandir, déplacer et créer des partitions.
Et lors de ses opérations je me suis vue obliger de supprimer les partitions swap de mes 2 OS.
J'ai alors recréer 2 partitions swap derrière les OS.
seulement le problème est qu'elles ne sont pas active quand je boot sur un OS ou l'autre ???
Alors ont peut effectivement les activer grâce a GParted mais je ne voit pas le faire a chaque boot.

Sauriez vous comment activer ces partitions au démarrage de l'OS.
Je suppose qu'il faut passer par fstab mais je ne sais comment et qu'il ne faut pas faire n'importe quoi dans ce fichier.

Alors si vous avez réponse a ma question il serai gentil de votre part de bien vouloir éclairé ma lanterne.

Merci pour vos réponses éclairées.

#6 Re : -1 »  Vérifier les niveau d'encre de mon imprimante [résolu]. » Le 04/05/2015, à 08:33

ubuntuforce
Réponses : 2

Merci beaucoup pour le lien,

escputil a l'air d'être un petit utilitaire sympa, comme Linux en compte des milliers, pas besoin de GUI.

Surtout que dans la documentation du site ils disent d'installer le pilote Linux pour son imprimante.
Et dans le lien vers Epson pas de résultat pour mon modèle.

Encore merci et que Ubuntu fasse la force.

#7 -1 »  Vérifier les niveau d'encre de mon imprimante [résolu]. » Le 28/04/2015, à 17:34

ubuntuforce
Réponses : 2

Salut les Ubuntues,

Je dispose d'un imprimante Epson Stylus SX 105, et j'utilise un système Ubuntu Gnome LTS 14.04.

Voulant formater ma partition Windows il s'est avérer que une réinstallation est impossible avec 2 CD d'installation différents: Windows 7 et 8.

Brefs pas le choix je suis plus en dual-boot et il me manque une fonctionnalité par rapport a mon imprimante:

Pouvoir voire le taux d'encre restant par cartouche, car si l'imprimante clignote (signe qu'un cartouche est vide) je suis dans l'impossibilité de savoir quelle cartouche est vide.
Les pilotes installer par défaut ne sont pas terrible il faut bien l'admettre et pour certaines chose Windows est plus pratique.

Mais je doute qu'il n'existe pas de solution alternative a mon problème, que j'ignore donc simplement.

Alors si vous pouvez m'aider toute aide est la bienvenue.

Merci pour vos réponses éclairées.

#8 -1 »  IT-Edit (Integrated Terminal Editor). » Le 28/04/2015, à 17:23

ubuntuforce
Réponses : 0

Salut les Ubuntues,
je vient vous présenter ma dernière création, IT-Edit un éditeur de texte avec de multiples fonctionnalités. Créer avec GTK+3, gtksourceview3.0 et libvte.

Motivation pour l'écriture de IT-Edit (the Integrated Terminal Editor).

Ont peut diviser les programmeurs selon leur façon de travailler en 2 catégories:

  * Ceux qui utilisent un IDE: un environnement de développement complet.
 
  * Ceux qui travaillent avec des outils séparés: un éditeur de texte, usage du terminal et  autres outils.
 
Comme je suis un programmeur de la deuxième catégorie et comme j'ai remarquer que j’utilisais souvent client internet pour la doc HTML offline.

J'ai décidé d'écrire mon propre éditeur de texte qui me donne un accès directe a tous les outils dont j'ai besoin.

De cette idée est née IT-Edit.

Fonctionnalités de IT-Edit

  IT-Edit implémente un éditeur de texte avec colorations syntaxique, affichage des numéros de lignes et la complétion automatique avec les fonctionnalités de base d'un éditeur de texte:
 
    * Couper / Copier / Coller.
   
    * Dupliquer la sélection ou de la ligne du curseur.
   
    * Undo/Redo[/bIT-Edit (Integrated Terminal Editor)..
   
    * Aller a une ligne donnée.
   
    * Recherche et remplacement.
 
  Pour la gestion de fichiers IT-Edit implémente:
   
    * Ouvrir un fichier vierge.
   
    * Ouvrir un fichier donnée.
   
    * Ouvrir un fichier récent.
   
    * Sauvegarder le contenus de l'éditeur.
   
    * Sauvegarder le contenus de l'éditeur dans un fichier choisis.
   
    * Sauvegarder tous les fichiers ouverts.
  IT-Edit
 
  Il existe évidemment des raccourcis clavier pour ces fonctionnalités.
 
IT-Edit implémente 2 terminaux dans la fenêtre principale qui sont aisément déployables, repliables et peuvent être redimensionnées.
 
IT-Edit implémente une fonctionnalité pour exécuter une commande quelqu'onque dans un terminal dans une fenêtre toplevel qui est facilement maximisable, minimisable et redimensionnable.

  NOTE: cette fonctionnalité était prévus pour la visualisation de manpages qui a été étendue a toutes sortes de commandes, sans restriction.
 
IT-Edit implémente un mécanisme d'enregistrement de fichiers quelquonque (doc html, pdf, ps ou musique, vidéo...)
 
Qui seront après enregistrement seront lançable par le programme par défaut associé au type de fichier.

NOTE: cette fonctionnalités était prévus pour la visualisation de documentation offline HTML qui a été étendus.

Avec ses terminaux intégré IT-Edit vous fournis une environnement de développement, répondant a tout vos besoin.

Prenez la peine d'essayer de s'habituer a IT-Edit, vous allez sûrement l'adopter. 

Le programme est distribuer sous forme de paquetage *.deb, si cela ne vous convient pas allez dans:
Programmes->Accéder a l'index->C->IT-Edit, vous y trouverez un tarball compatible Linux et BSD (non-testé).
Pour installer IT-Edit tapez:
    IT-Edit
    $ ./configure
    $ make
    $ sudo make install       

Je suis ouvert a toute formes de critiques, si vous avez des commentaires a faire sur le code, les fonctionnalités auquelles je n'ai pas penser etc...   

PS: J'ai vraiment écrit ce pseudo IDE pour mes propres besoins, mais je tiens a vous en faire profiter, quand même, afin qu'il évolue selon les fondements du free-software.

PS2: IT-Edit connaît actuellemment un succès relatif pour un programme amateur et les bugfix, nouvelle idées, affluent plus ou moins.

Merci pour votre participation a l'évolution de IT-Edit de quelque nature que ce soit.

#9 -1 »  Ajouter un programme dans la liste "ouvrir avec" [résolu]. » Le 21/04/2015, à 06:00

ubuntuforce
Réponses : 1

Salut les Ubuntues,

Mon problème est le suivant:
je use d'un système Ubuntu Gnome et j'ai implémenter un éditeur de texte qui s'appelle IT-Edit.

Et quand on sélectionne un document et que l'on fait un clique droit le menu contextuel apparaît, et si je choisie ouvrir avec il y a bien une petite liste d'applications qui est proposé: ce sont les applications avec lesquelles j'ouvre ce type de document habituellement.
Puis il y a un autre option qui s'appelle: "autres applications".
Et si je clique dessus une liste d'applications m'est présenté, c'est le sélecteur d'applications de GTK+, seulement toutes les applications ne sont pas présentent, seule celle enregistrer quelque part dans le système sont disponibles.

Et donc j'aimerai que mon éditeur de texte que j'ai implémenter apparaisse dans cette liste...

Mais je ne sais pas comment faire afin que mon éditeur soit présent dans cette liste.
Malgré que cette liste est relativement complète toutes les applications (Installer depuis les dépôts officiel ou pas) présente sur le système ne sont pas présentes.

Alors si vous savez a quel détail tiens afin qu'une applications soit présente dans cette liste, vous seriez sympa de m'éclairer.
Je soupçonne une subtilité dans les fichiers  *.desktop.

Merci pour vos réponses éclairées.

Que Ubuntu fasse la force.

#10 Re : -1 »  Ajouter un programme dans la liste "ouvrir avec" [résolu]. » Le 28/04/2015, à 11:14

ubuntuforce
Réponses : 1

Ayé arriver a mettre IT-Edit comme application sélectionnable pour ouvrir un fichier depuis le navigateur de fichiers.

Vous voulez savoir comment et si vous tomber sur ce poste en googlant le sujet.
J'ai simplement ajouter un caractère formateur dans la ligne Exec du fichier *.desktop:

Exec=IT-Edit %F

Et comme IT-Edit prend en charge un fichier comme argument en ligne de commande, cela fonctionne très bien.

Pensez donc a implémenter cette fonctionnalité pour n'importe quel programme qui peut ouvrir un fichier au démarrage.

Que Ubuntu fasse la force.

#11 -1 »  IT-Edit (Integrated Terminal Editor). » Le 09/04/2015, à 22:10

ubuntuforce
Réponses : 0

Salut les Ubuntues,
je vient vous présenter ma dernière création, IT-Edit un éditeur de texte avec de multiples fonctionnalités. Créer avec GTK+3, gtksourceview3.0 et libvte.

Motivation pour l'écriture de IT-Edit (the Integrated Terminal Editor).

Ont peut diviser les programmeurs selon leur façon de travailler en 2 catégories:

  * Ceux qui utilisent un IDE: un environnement de développement complet.
 
  * Ceux qui travaillent avec des outils séparés: un éditeur de texte, usage du terminal et  autres outils.
 
Comme je suis un programmeur de la deuxième catégorie et comme j'ai remarquer que j’utilisais souvent client internet pour la doc HTML offline.

J'ai décidé d'écrire mon propre éditeur de texte qui me donne un accès directe a tous les outils dont j'ai besoin.

De cette idée est née IT-Edit.

Fonctionnalités de IT-Edit

  IT-Edit implémente un éditeur de texte avec colorations syntaxique, affichage des numéros de lignes et la complétion automatique avec les fonctionnalités de base d'un éditeur de texte:
 
    * Couper / Copier / Coller.
   
    * Dupliquer la sélection ou de la ligne du curseur.
   
    * Undo/Redo.
   
    * Aller a une ligne donnée.
   
    * Recherche et remplacement.
 
  Pour la gestion de fichiers IT-Edit implémente:
   
    * Ouvrir un fichier vierge.
   
    * Ouvrir un fichier donnée.
   
    * Ouvrir un fichier récent.
   
    * Sauvegarder le contenus de l'éditeur.
   
    * Sauvegarder le contenus de l'éditeur dans un fichier choisis.
   
    * Sauvegarder tous les fichiers ouverts.
 
 
  Il existe évidemment des raccourcis clavier pour ces fonctionnalités.
 
IT-Edit implémente 2 terminaux dans la fenêtre principale qui sont aisément déployables, repliables et peuvent être redimensionnées.
 
IT-Edit implémente une fonctionnalité pour exécuter une commande quelqu'onque dans un terminal dans une fenêtre toplevel qui est facilement maximisable, minimisable et redimensionnable.

  NOTE: cette fonctionnalité était prévus pour la visualisation de manpages qui a été étendue a toutes sortes de commandes, sans restriction.
 
IT-Edit implémente un mécanisme d'enregistrement de fichiers quelquonque (doc html, pdf, ps ou musique, vidéo...)
 
Qui seront après enregistrement seront lançable par le programme par défaut associé au type de fichier.

NOTE: cette fonctionnalités était prévus pour la visualisation de documentation offline HTML qui a été étendus.

Avec ses terminaux intégré IT-Edit vous fournis une environnement de développement, répondant a tout vos besoin.

Prenez la peine d'essayer de s'habituer a IT-Edit, vous allez sûrement l'adopter. 

Le programme est distribuer sous forme de paquetage *.deb, si cela ne vous convient pas allez dans:
Programmes->Accéder a l'index->C->IT-Edit, vous y trouverez un tarball compatible Linux et BSD (non-testé).
Pour installer IT-Edit tapez:
   
    $ ./configure
    $ make
    $ sudo make install       

Je suis ouvert a toute formes de critiques, si vous avez des commentaires a faire sur le code, les fonctionnalités auquelles je n'ai pas penser etc...   

PS: J'ai vraiment écrit ce pseudo IDE pour mes propres besoins, mais je tiens a vous en faire profiter, quand même, afin qu'il évolue selon les fondements du free-software.

#12 Re : -1 »  jeu de poker écrit en C avec la SDL2. » Le 19/02/2015, à 13:51

ubuntuforce
Réponses : 10

Merci florianges pour ces commentaires,
Il est sûre que il va falloir que je retouche légèrement l'application afin de corriger le bug de fin de jeu et ajouter les choses proposées.
Si tu aime les jeux vidéos : rendez-vous a la section jeux de mon site (multiples jeux pour Linux et Windows).

#13 -1 »  jeu de poker écrit en C avec la SDL2. » Le 20/01/2015, à 10:03

ubuntuforce
Réponses : 10

Salut les ubuntues,

je viens de publier sur mon site, mon premier jeu créer avec la library SDL2 (simple directmedia layer) , écrit en C, pour OS Linux de famille debian.

Il s'agit d'un jeu de Poker pour Linux:

CPocker est un jeu de poker contre l'ordinateur, pour Linux.

Vous pouvez sélectionner le nombre de tours a jouer dans l'écran d’accueil avec les flèches haut et bas, en augmentant ou diminuant le nombre de tours a jouer par défaut: 20 tours par défaut.

Le joueur, soit vous, soit l'ordinateur qui remporte le plus de tours gagne le jeu.

Un tour se fait en 6 étapes:

1) Distribution des cartes.
2) Jetez les cartes que ne désirez pas garder.
3) L’ordinateur jettes les cartes qu'il ne souhaite pas garder.
4) Distribution de nouvelles cartes remplaçant les cartes jetées.
5) Détermination du vainqueur du tour.
6) Ramassage des cartes afin de pouvoir jouer un nouveau tour.

L'ordre étant implémenté sous forme de boutons a cliquer en fonction de l'avancement du jeu.

Vous trouverez la hiérarchie des différentes combinaisons du poker dans le README accompagnant le jeu dans le dossier /usr/share/CPoker/README/ ainsi que la notice et les règles du jeu (car il existe diverses variantes du poker.) et quelques informations supplémentaires.

Dans CPocker l'algorithme de sélection des cartes a jetées de l'ordinateur et donc sa stratégie de jeu est implémenter de manière comme son créateur joue au poker.:

    C'est comme si vous jouiez au poker contre moi !!!                                
                                                     
J'ai implémenter ce jeu en faisant attention au respect du joueur dans le sens ou  l'ordinateur ne sait jamais ce que avez en mains malgré que les cartes peuvent vous être présentées de manière découvertes avant la comparaison das mains.   

Et l'ordinateur ne sait pas les cartes qui vont venir du tas pour en tirer partie afin de gagner.                                                                             

J'ai également fait attention a:

- Implémenter un bon algorithme de mixage des cartes avant chaque tour, qui est en faites l'exécution séquentiel de 3 algorithmes de mixages différents répéter un nombre aléatoire de fois.
 
  -) Un algorithme qui prend une carte au hasard et le remet dans le jeu a un emplacement aléatoire, répéter 32 fois (le nombre de cartes du jeu: de 7 a AS).
  -) Un algorithme qui génère 5 tas de cartes aléatoirement et les superposent après afin de reconstituer le jeu.
  -) Un algorithme qui divise le jeu en 2 tas puis reforme le jeu en ajoutant alternativement une carte de chaque tas
                                                                             
- Respecter l'ordre de distribution des cartes qui s'inverse a chaque tour.                                
                                                                             
- Bien mettre les cartes jetées sur le tas des cartes jeter après ramassage des cartes. Puis remis dans le jeu afin de le mixer.     
                                                                             
 
   Soyez assuré que le jeu est honnête avec vous. Comme je suis dans la vie comme tout le monde devrai.

Le jeu est assez intuitif a prendre en mains et vous pouvez jouer a votre guise.

En espérant que vous prendrez autant de plaisir a jouer a CPoker que j'en ai eu a le programmer, 
et qu'il vous procurera de grandes montés d'adrénaline.

Note: si vous avez besoin d'images d'un jeu de carte, j'ai retoucher un peu un set trouver sur internet, juste pour que les bordures soit égales. Je vous l'ai mis a disposition sous forme d'archive *.zip dans l'index de mon site.                                         

Si vous avez un problème avec le format de fichier du programme: paquetage deb.
Il existe un tarball de CPoker disponible dans l'index de mon site.

Je vous invite donc, si le cœurs vous en dit, de voir un peu mon programme.

Si vous voulez simplement le tester: essayer de le crasher pour voir si une erreur de segmentation se produit.
Ou pour tester si un dysfonctionnement se produit.

Si vous voulez aller plus loin et jeter un coup d'œil au code source, vous pourrez me dire ce que vous en pensez, car en tant qu'autodidacte l'on est livré a soit-même et l'on ne connaît pas forcément les bonnes manières appris dans une école ou centre de formation.

Je suis ouvert a toutes formes de critiques: bonne ou mauvaise. Commentaires, impression, goût de mes graphismes, etc...     

Merci pour vos réponses.

#14 Re : -1 »  jeu de poker écrit en C avec la SDL2. » Le 25/01/2015, à 15:51

ubuntuforce
Réponses : 10

Je tiens vraiment a remercier la communauté d'Ubuntu.org pour son intérêt porter a mes créations:
-SnakeByte unpacman a la sauce python: aucune réponses.
-ScreenLocker un économiseur d'écran sécurisable: aucune réponses.
-PyImaging et EraseDropBox (traitement d'images et un effaceur de fichiers et de dossier sécuriser base sur wipe): aucune réponses.
-Ghobdcalc une calculatrice multibases : aucune réponses.
-CPoker un jeu de poker : aucune réponses.

Je sais qu'il n'est pas conseiller d'installer des logiciels tiers et que vous savez pas tous programmer.
Mais tout les programmes sont distribuer sous forme de code sources et que donc ont peut s'intéresser au code, non ?

Je comprends que ce ne vous intéresse pas, mais a passer des semaines sur un logiciel pour que personne de daigne le regarder (sur ce site contrairement a d'autres et heureusement d'ailleurs.).

J'ai un doute: il y aurai une conspiration contre moi, un appel au  boycotte ou j'ai vraiment pas de chance.

Je répète: je ne vous en veut pas et comprends que ce ne puisse pas intéresser un utilisateur lambda Linux.

Ubuntu serai-t-il tomber si bas que ce ne soit pas un OS de programmeurs, je ne demande pas qu'on utilise mes programmes au quotidiens, mais jeter un œil au code ça ne fait pas de mal puis de donner son avis, une critique (bonne ou mauvaise), une remarque... Je ne comprends votre indifférence totale et je crois que je vais faire soigner pour dépression nerveuse.

Sachez seulement que ailleurs ça intéresse et que je suis actifs dans diverses direction (upload sur PyPI (3), Bibliothèques dynamique en C et divers tutoriels...

PS: Sinon le forum est bien pour les questions qui appellent une réponse.

#15 Re : -1 »  jeu de poker écrit en C avec la SDL2. » Le 28/01/2015, à 09:14

ubuntuforce
Réponses : 10

Je pense que vous avez exécuter le script install.sh plusieurs fois.
A moins qu'il n'existe une autre application portant le même nom que mon jeu sur votre système, ce qui est très improbable.
Je vous propose:
de regarder ce que contient le dossier: /usr/share/CPoker/ puisque il existe.
et de le supprimer si il est vide ou si le contenus correspond au contenus de l'archive *.tar de CPoker, ce qui semble vraiment être le cas car les autres plaintes de correspondent a ce scénario.

sudo rm -R /usr/share/CPoker/

Puis de relancer install.sh en mode root.
Par contre il va falloir installer les dépendances:

sudo apt-get libsdl2-dev
sudo apt-get libsdl2-image-dev
sudo apt-get libsdl2-ttf-dev 

Normalement le script pose la question si il ne détecte pas les dépendances.
Afin que le script puisse compiler le programme.

Merci pour l'intérêt porter a CPoker.

#16 Re : -1 »  jeu de poker écrit en C avec la SDL2. » Le 29/01/2015, à 09:11

ubuntuforce
Réponses : 10

Bon comme je n'ai pas contrôler le code de retour de chaque commande, notamment mkdir, si l'on exécute le script install.sh plusieurs fois il est normale que ça plante.
D'abords effacer le dossier /usr/share/CPoker.

sudo rm -R /usr/share/CPoker

Et comme tu n'a pas de dossier /usr/local/bin je me demande si tu a un OS Ubuntu et je trouve ça intrigant ?
Car /usr/local/bin fait partie des dossier standard des paquetage *.deb...???

C'est d'ailleurs a cause de ça que ça ne marche pas.

Il faut modifier le script d'installation de quelques simple lignes.

Regarde tout d'abord dans la variable d'environnement PATH:

echo $PATH

pour trouver un dossier ou installer CPoker.
Cette variable contient en gros la liste des dossier ou le système a droit d'exécuter un programme ou un script.

admettons que /usr/games s'y trouve, les chemins sont séparés par des ';'.

puis changer les lignes:

sudo cp CPoker /usr/local/bin/       # A modifier
 
 
sudo chown -R $USER:$USER "${dst_main_path}"
sudo chmod -R a+rx  "${dst_main_path}Images"
sudo chown $USER:$USER "/usr/local/bin/CPoker"  # A modifier.
sudo chmod a+x "/usr/local/bin/CPoker"                   # A modifier

par

sudo cp CPoker /usr/games/   # Copier CPoker dans /usr/games/                         
 
sudo chown -R $USER:$USER "${dst_main_path}"
sudo chmod -R a+rx  "${dst_main_path}Images"
sudo chown $USER:$USER "/usr/games/CPoker"  # Ca fait de toi le propriétaire du fichier CPoker.
sudo chmod a+x "/usr/games/CPoker"                    # Changement de permission.

Et il faut également changer l'entré dans le fichier *.desktop, afin que tu puisse lancer CPoker par son icône.
Donc remplacer dans le fichier install.sh la ligne:

sudo echo "Exec=/usr/local/bin/CPoker"     >> /usr/share/applications/CPoker.desktop

par:

sudo echo "Exec=/usr/games/CPoker"        >> /usr/share/applications/CPoker.desktop

Merci de ton intervention ça me permet de me rendre compte des négligences de mon script d'installation:
-) Installer mes programmes ailleurs que dans /usr/local/bin (Pourtant je pensais que c'était le dossier ou installer les applications externes).
-) Contrôler le code retours des commandes dans le script d'installation.
Encore merci, comme quoi l'on apprend de ses erreurs.

#17 Re : -1 »  jeu de poker écrit en C avec la SDL2. » Le 03/02/2015, à 09:36

ubuntuforce
Réponses : 10

Merci florianges pour ta critique:

Il manque effectivement une marque sous formes de flèches pour indiquer comment changer le nombre de round.

Je ne connais pas les différentes variantes du poker: j'ai donc implémenter le poker comme ont joues en famille, sans les mises.
J'ai donc implémenter un "Five-card Draw".   

florianges a écrit :

En toute fin de partie je trouve qu'il manque un bouton pour faire une autre partie car ici on est obliger de redémarrer le logiciel...

Et non il suffit d'appuyer sur ESCAPE afin retrouver l'écran d'accueil: tu n'a pas lus le README qui fait office de notice et qui contient aussi la hiérarchisation des combinaisons de cartes.
Il est vrai que sous la version Windows de CPoker il est proposer de lire la notice quand ont installe le programme.
Beaucoup de gens ne lisent pas les README et tu ne pouvait pas le deviner.
Et il faut dire que j'ai été limité en termes de place pour mettre un bouton "nouvelle partie".

florianges a écrit :

Il y a aussi un bug quand on est en fin de partie quand on clique sur l'emplacement où nos carte devrais être posé sur le plateau, il y a un paquet de carte qui apparaît en haut a gauche et qui rétrécit XD

Oups je n'ai pas vue de tel comportement car en fin de partie ont est pas censé cliquer mais appuyer sur ESCAPE, ce qui fait que je n'ai pas vue ce bug,
merci pour le bug report.   smile.

florianges a écrit :

Pour les graphismes, je trouve ça bien pour un jeux de poker, simple et épurer.

Merci c'est gentil surtout disons de la part d'un utilisateur lambda, car tu n'a pas critiqué le code, ça fait plaisir car il n'est pas facile de rivalisé avec les programmeurs professionnels et les boîtes de jeux encore moins.
Et il n'est pas facile de faire un jeu qui soit jouable et qui plaisent, surtout la première fois.

A noter que le set d'images du jeu de cartes est a votre disposition dans mon index.

#18 -1 »  SDL2_gfxutils une bibliothèque complémentaire a SDL2_gfx. » Le 18/02/2015, à 07:45

ubuntuforce
Réponses : 0

Bonjour,

Je vous propose un nouvel élément à utiliser : SDL2_gfxutils une bibilothèque complémentaire a SDL2_gfx.

SDL2_gfxutils est une bibliothèque complémentaire a la la bibliothèque SDL2_gfx et donc a SDL2.

SDL2_gfxutils est issue d'une collection de fonctions que j'ai implémenter sur plusieurs années,
a chaque fois que j'avais une idée j'ai aussitôt essayer de l'implémenter, a la base dans le langage python avec le module pygame qui est basé sur la SDL.
J'ai commencer avec une simple fonction calculant les coordonnées d'un point selon un rayon et un angle.

SDL2_gfxutils est donc une translation de fonctions python dans le langage C et le standard SDL2_gfx.

SDL2_gfxutils c'est d'abord une panoplie de fonctions génératrice de formes les plus diverses,
en partant du simple polygone convexe régulier, en passant par le pentacle et les étoiles jusqu'au roues crantés les plus complexes.

SDL2_gfxutils vous mets également a disposition des fonctions d'affichages des différentes formes générées.

SDL2_gfxutils c'est aussi des fonctions de transformation de formes:
  +) Rotation.
  +) Mise a l'échelle.
  +) Translation, par deux valeurs (x et y) ou par rapport au centre de la forme.

SDL2_gfxutils vous mets a disposition des fonctions de mesure:
  +) D'aire d'un polygone.
  +) De distance entre 2 pixels.
   
Et de calcule:
  +) Du centre d'un polygone.
  +) Le milieux d'un segment.
  +) De trajectoire d'animation.


Mais surtout SDL2_gfxutils vous permet grâce a ses fonctions de bas-niveau de créer vos propre formes, si vous vous familiarisez avec la bibliothèque.

Il existe actuellement une version Linux qui s'installe d'un simple:

$ sudo make

NOTE: Il faut éventuellement corriger une ligne du fichier Makefile si le chemin des bibliothèques et|ou le chemin d'inclusion n'est pas le même sur votre système.

Il existe aussi une version pour mingw:
Pour laquelle la bibliothèque statique d'inclusion et le fichier *.dll nécessaire sont fournis.

A noter que je vous ai fait une documentation la plus complète possible.
Et si cela ne vous suffit pas plongez dans les sources.

Tout est fournis dans un seul fichier zip.

En espérant que vous prendrez autant de plaisir a utiliser SDL2_gfxutils que j'en eu a la programmer.

Qu'en pensez-vous ?

#19 Re : -1 »  [Résolu] sauvegarder mes données de firefox. » Le 04/02/2015, à 17:28

ubuntuforce
Réponses : 3

Super les gars ça a marcher, j'ai retrouver tout mes settings de Firefox.
Merci beaucoup pour le coup de mains.

#20 -1 »  [Résolu] sauvegarder mes données de firefox. » Le 29/01/2015, à 08:39

ubuntuforce
Réponses : 3

Salut les ubuntues,
comme je vais bientôt changer de PC, j'ai besoin de votre aide pour pouvoir réinstaller mon OS favoris et ses composant.
Pour les applications pas de problème j'ai un script qui appelle

dpkg --get-selections > fichier_paquets.bak

Mais j'aimerai aussi retrouver mes données contenus dans Firefox:
-) Les mots de passe enregistrés.
-) Les marques pages: je sais faire.
-) Mes modules complémentaire, j'en ai pas des tonnes.
Brefs j'ai pas trouver de module qui puisse enregistrer ces données afin que je puisse les récupérées.
Je crois que c'est une histoire de profile mais je ne suis pas sur. Et je n'ai pas trouver d'options pour le sauvegardé avec:

firefox --help

Donc votre aide est la bienvenue.

Merci pour vos réponses et votre aide précieuse.

#21 -1 »  Une calculatrice multibases GTK+3. » Le 17/12/2014, à 07:52

ubuntuforce
Réponses : 0

Salut les ubuntues,

je vient de publier sur mon site de programmation mon premier programme C ayant une GUI (GTK+3) pour Linux.

Le programme porte le nom bizarre de Ghobdcalc (Graphical Hexadecimal Octal Binar Decimal Calculator) basé sur une library personnelle dont il existe a l'heure actuel que les fichiers de développement disponible dans l'index de mon site.

Le programme est une calculatrice multibases comme son nom l'indique avec quelques fonctionnalités supplémentaire d'ordre trigonométrique et de génération de feuille de calcule dans divers formats ainsi qu'une fonction de mémorisation de valeurs pour usage ultérieur.

A noter que le programme n'a pas été baclé ce n'est pas le terme mais je voulais implémentés quelques fonctionnalités supplémentaires, ce que je n'ai put faire par manque de motivation.
Quelques précisions a ce sujet sont donnés dans le README disponible dans divers formats.

Je vous invite donc, si le cœurs vous en dit, de voir un peu mon programme.

Si vous voulez simplement le tester: essayer de le crasher pour voir si une erreur de segmentation se produit.

Si vous voulez aller plus loin et jeter un coup d'œil au code source, vous pourrez me dire ce que vous en pensez, car en tant qu'autodidacte l'on est livré a soit-même et l'on ne connaît pas forcément les bonnes manières appris dans une école ou centre de formation.

Si vous doutez de l'exactitude des calcules j'avoue que le plus gros problèmes a été les chiffres a virgules et la précision d'affichage car un:

1.0002 + 2

peut facilement se transformer en:

   3.00019999999999

suivant la précision choisis dans un appel a sprintf().

Si vous doutez de la conversion entre différentes bases visualiser plutôt la library sur laquelle est basé le programme: hobdcalc.

PS: Si quelque chose vous gêne dans le format de fichier: paquetage deb il existe un tarball du programme dans l'index de mon site.

#22 -1 »  couleurs RGB dans terminaux xterm et gnome-terminal... » Le 25/11/2014, à 07:02

ubuntuforce
Réponses : 2

Salut les Ubuntues du terminal,
Bon en faîtes je cherche a programmer en C les deux points suivants dans les pseudo terminaux:
-Pouvoir écrire dans n'importe quelle couleur donnée sous forme RGB (Red, Green, Blue).
-Pouvoir ajuster la taille des caractères a volonté.
Je suis arriver a mes fins dans un terminal xterm grâce au code suivant:

#include <stdio.h>
#include <stdlib.h>  



int main(int argc, char *argv[]) {
  /** This example programm display an text in the color given as argument.
   *  In the xterm terminal.
   *  Usage:
   *  $ xterm 
   *  [xtrem]$ ./a.out red[0-255] green[0-255] blue[0-255]
   * **********************************************************************/
  
  if (argc != 4) {
    fprintf(stderr,"usage: %s red green blue\n",argv[0]) ;
    exit(EXIT_FAILURE) ;
  }
  
  char *red, *green, *blue ;
  
  red   = argv[1] ;
  green = argv[2] ;
  blue  = argv[3] ;
  
  fprintf(stdout,"\033[38;2;%s;%s;%sm",red,green,blue) ; /** Escape RGB fg color setting sequence. */
  /** For further informations sea:
   *  /usr/share/doc/xterm/ctlseqs.txt
   ***********************************/ 
  fprintf(stdout,"This text appears in the color of your choice !!!!\n") ;
  fprintf(stdout,"\033[0m]") ;
  
  exit(EXIT_SUCCESS) ;
}

Une fois compiler lancer l'exécutable dans un pseudo terminal xterm:

[gnome-terminal]$ xterm
[xterm]$ ./a.out 127 127 255

Et vous verrez apparaître le message dans la couleur RGB donner en argument.

Bon j'aimerai faire pareil avec un gnome-terminal seulement les séquences d'échappement ne sont pas les mêmes et je n'ai pas trouver de documentation a hacker pour trouver la séquence a utiliser.
Aider moi a trouver la doc ou si vous connaissez la séquence, vous seriez trop sympa de me la donner.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Second points je n'ai pas réussis a rétrécir|agrandir la police du xterm.
Par contre le gnome-terminal dispose d'une option zoom qui permet cela, reste a trouver comment faire ça en C.

[gnome-terminal]gnome-terminal --zoom=0.3

Toute aide est la bienvenue et si vous ca vous dit vous pouvez vous plonger dans la documentation de xterm disponible à:

/usr/share/doc/xterm/ctlseqs.txt.gz

   

Je cherche surtout un document analogue a celui évoquer ci-dessus concernant le gnome-terminal cette fois.

Merci pour votre aide et vos réponses ses éclairées.

#23 Re : -1 »  couleurs RGB dans terminaux xterm et gnome-terminal... » Le 25/11/2014, à 11:46

ubuntuforce
Réponses : 2

Merci je l'avait déjà trouver dans mes recherches, mais il n'indique rien concernant la taille de la police, dommage.
Merci quand même et:...
Continue de perquisitionner Google pour moi et ceux que ça intéresse, merci.

#24 -1 »  Jouer un CD grâce a ioctl et les pseudo fichier-driver. » Le 25/11/2014, à 00:31

ubuntuforce
Réponses : 0

Salut les C Linux,

Comme le titre l'indique je cherche a jouer un CD avec la fonction ioctl (Input/Output Control) en ouvrant le pseudo fichier-driver du cdrom.

Voici le code:

#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>


#include <sys/ioctl.h>

#include <linux/cdrom.h>

int main(int argc, char *argv[]) {
  
  /** Programme who should play the first track from an CD with ioctl(...) calls */

  int fd ;
  
  
  struct cdrom_tochdr   table_of_content_headers  ; // First && Last Track infos.
  struct cdrom_tocentry table_of_content_entries  ; // Offsets every track on the CD.
  
  struct cdrom_msf      msf_playing_data_structur ; // Used by CDROMPLAYMSF to set the Start and playing End.
  
  struct cdrom_subchnl  playing_data_informations ; // Keep status, current position min,sec,frame infos...
  
  if ((fd=open("/dev/cdrom",O_RDONLY)) == -1) {
    perror("Error open device") ;
    exit(EXIT_FAILURE) ;
  }
  
  fprintf(stdout,"Press any key to initialise the CD...\n") ; 
  getchar() ;
  
  if ( ioctl(fd, CDROMREADTOCHDR, &table_of_content_headers) == -1) {
    perror("ioctl read cdrom T.O.C headers error") ;
    exit(EXIT_FAILURE) ;
  }
  
  uint8_t first   = table_of_content_headers.cdth_trk0 ; // First track from the CD number.
  uint8_t last    = table_of_content_headers.cdth_trk1 ; // Last track  from the CD number.
  
  table_of_content_entries.cdte_track  = first     ;  // We set the first track to get Table of Content offset for playing starting offset.
  table_of_content_entries.cdte_format = CDROM_MSF ;  // Set the format.
  
  if ( ioctl(fd, CDROMREADTOCENTRY, &table_of_content_entries) == -1) {
    perror("ioctl read cdrom T.O.C entries error") ;
    exit(EXIT_FAILURE) ;
  }
  
  msf_playing_data_structur.cdmsf_min0=table_of_content_entries.cdte_addr.msf.minute  ;  // Set playing the start offset.
  msf_playing_data_structur.cdmsf_sec0=table_of_content_entries.cdte_addr.msf.second  ;  // Set playing the start offset.
  msf_playing_data_structur.cdmsf_frame0=table_of_content_entries.cdte_addr.msf.frame ;  // Set playing the start offset.
  
  table_of_content_entries.cdte_track  = first+1   ; // We set the second track to get Table of Content offset for playing end offset.  /** Alternative: CD end definition CDROM_LEADOUT */
  table_of_content_entries.cdte_format = CDROM_MSF ; // Playing management format.
  
  if ( ioctl(fd, CDROMREADTOCENTRY, &table_of_content_entries) == -1) {
    perror("ioctl read cdrom T.O.C entries error") ;
    exit(EXIT_FAILURE) ;
  }
  
  msf_playing_data_structur.cdmsf_min1=table_of_content_entries.cdte_addr.msf.minute  ;  // Set playing the end offset.
  msf_playing_data_structur.cdmsf_sec1=table_of_content_entries.cdte_addr.msf.second  ;  // Set playing the end offset. 
  msf_playing_data_structur.cdmsf_frame1=table_of_content_entries.cdte_addr.msf.frame ;  // Set playing the end offset.
  
  fprintf(stdout,"Press any key to ear the first track...\n") ;
  getchar() ;
  
  if ( ioctl(fd, CDROMPLAYMSF, &msf_playing_data_structur) == -1) {
    perror("ioctl cdrom playing error") ;
    exit(EXIT_FAILURE) ;
  }
  
  
  playing_data_informations.cdsc_format=CDROM_MSF ;
  if ( ioctl(fd, CDROMSUBCHNL, &playing_data_informations) == -1) {
    perror("ioctl cdrom get informations error") ;
    exit(EXIT_FAILURE) ;
  }
  
  
  
  while (playing_data_informations.cdsc_audiostatus != CDROM_AUDIO_COMPLETED ) {
    /* This part is experimental because i cannot play the CD from this programme actually */
    
   /** Get 
   * 
   * playing_data_informations.cdsc_audiostatus 
   * 
   * values with command:
   * 
   * $ grep AUDIO_ /usr/include/linux/cdrom.h
   * ******************************************/
    
    fprintf(stdout,"Press any key to pause the CD...\n") ;
    getchar() ;
    
    if ( ioctl(fd, CDROMPAUSE) == -1) {
      perror("ioctl cdrom pause error") ;
      exit(EXIT_FAILURE) ;
    }
    
    fprintf(stdout,"Press any key to resume the CD...\n") ;
    getchar() ;
    
    if ( ioctl(fd, CDROMRESUME) == -1) {
      perror("ioctl cdrom resume error") ;
      exit(EXIT_FAILURE) ;
    }
    
    /** Update the informations struct to display progressbar per example. */
    if ( ioctl(fd, CDROMSUBCHNL, &playing_data_informations) == -1) {
      perror("ioctl cdrom get informations error") ;
      exit(EXIT_FAILURE) ;
    }
  }
  
  close(fd) ;
}

Mais ce n'est pas le cas, dans le bouquin qui date du 8. Avril 2010, il est dit qu'il faut définir le lecteur de cdrom comme source sonore active, pour que cela fonctionne, ce qui peut être fait grace au programme aumix.

Extrait de aptitude show aumix:

Description : Programme de contrôle de mixeur audio simple en mode texte
aumix est un petit programme simple à utiliser pour contrôler le mélangeur de
votre carte son.

Par la commande:

$ auxmix -c 100

Mais ça ne fonctionne pas car dès que l'on insère le CD il est pris en charge par le démon udev qui vous sape le droit sur votre lecteur CDROM comme l'atteste le petit programme suivant:

#include <stdio.h>
#include <stdlib.h>  

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>


#include <sys/ioctl.h>

#include <linux/cdrom.h>

int main(int argc, char *argv[]) {
  
  int fd ;
  
  if ((fd=open("/dev/cdrom",O_RDONLY | O_NONBLOCK)) == -1) {
    perror("Error open device") ;
    exit(EXIT_FAILURE) ;
  }
  
  
  
  fprintf(stdout,"Press any key to eject CDROM...\n") ; 
  getchar() ;
  
  if ( ioctl(fd, CDROMEJECT) == -1) {
    perror("ioctl cdrom eject error") ;
    exit(EXIT_FAILURE) ;
  }
  
  exit(EXIT_SUCCESS) ;
}

Qui fonctionne parfaitement quand aucun média n'est dans le lecteur de CDROM mais si l'on insère un CD ca ne fonctionne plus:

$./a.out
Press any key to eject CDROM...

ioctl cdrom eject error: Input/output error

Bref le problème est le demon udev qui je crois est un module du kernel, qui nous prives, en général des accès au pseudo fichier-driver contenus dans le répertoire:

/dev/

Le problème se voit quand ont essaie d'accéder aux pseudo fichier-driver pour par exemple enregistrer un son et le jouer car ALSA ou ESound ont remplacer OSS celui ne pouvant ne jouer qu'une seule source sonore a la fois et je crois est devenus propriétaire et donc obsolète.

Bon il a été définis que la sacré rétrocompatibilité devait être assurer en émulant les pseudo fichier-driver de OSS:

-) /dev/audio
-) /dev/sequencer
-) /dev/mixer
-) /dev/dsp

Mais ce n'est guère le cas sur mon système dans /dev, je trouve le répertoire /dev/snd qui comportes des nom barbares par rapport a la logique des fichiers-driver évoquer ci-dessus:

cd /dev/snd ;  ls -l 
total 0
drwxr-xr-x  2 root root       60 nov.  24 23:15 by-path
crw-rw----+ 1 root audio 116,  7 nov.  24 23:15 controlC0
crw-rw----+ 1 root audio 116,  6 nov.  24 23:15 hwC0D0
crw-rw----+ 1 root audio 116,  5 nov.  24 23:17 pcmC0D0c
crw-rw----+ 1 root audio 116,  4 nov.  25 00:01 pcmC0D0p
crw-rw----+ 1 root audio 116,  3 nov.  24 23:17 pcmC0D1p
crw-rw----+ 1 root audio 116,  2 nov.  24 23:15 pcmC0D2c
crw-rw----+ 1 root audio 116,  1 nov.  24 23:15 seq
crw-rw----+ 1 root audio 116, 33 nov.  24 23:15 timer

Bref moi qui comprend pas grand chose au son mais qui trouve la logique de OSS assez explicite et qui aurai sûrement permis a mon petit lecteur de CD de fonctionner en son temps. Je trouve que Linux devient de plus en plus fermée a sa logique (Un kernel module nous barre la route a la philosophie tout est "simplement" fichier) : l'intervention d'un kernel-module sur le cdrom qui vous en barre l'accès n'en n'est qu'une démonstration.

Maintenant faut-t-il que j'écrive un driver de carte audio ou y a-t-il un moyen pour que le kernel-module ne vous ôte pas la pain de la bouche: sûrement, seulement je ne le connais pas...

Merci pour vos réponses, réactions, avis sur la question.