IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Espionner un logiciel


Sujet :

Java

  1. #41
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Mars 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Mars 2015
    Messages : 59
    Points : 22
    Points
    22
    Par défaut
    Le problème de JAMon c'est que ça correspond pas forcément aux besoins
    Déjà c'est super complexe car c'est censé monitoré plusieurs choses vraiment différentes
    Mais surtout est-ce qu'on peux vraiment en tirer les données de l'usage d'utilisateur ? car j'ai l'impression qu'on le lance indépendament pour monitorer
    Aussi j'aimerais préciser que le but n'est pas de savoir quelle portion de code est utilisée ( même si au final ça va revenir au même ) mais plutot de savoir ce que l'utilisateur fais avec nos logiciels

  2. #42
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par chiappero Voir le message
    Aussi j'aimerais préciser que le but n'est pas de savoir quelle portion de code est utilisée ( même si au final ça va revenir au même ) mais plutot de savoir ce que l'utilisateur fais avec nos logiciels
    Sans modification du code à dessein (ou si les actions fonctionnelles et techniques de l'utilisateur ne sont pas déjà loguées), la seule et unique possiblité est de collecter les appels de méthodes et instanciations de classes, et les interpréter à postériori pour déterminer les actions fonctionnelles et techniques, c'est-à-dire ce que l'utilisateur a fait.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #43
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Mars 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Mars 2015
    Messages : 59
    Points : 22
    Points
    22
    Par défaut
    si les actions fonctionnelles et techniques de l'utilisateur ne sont pas déjà loguées

    Qu'entends-tu par là ? Si tu pense qu'il faudrait ecrire en dur a quoi correspond chaque boutton par exemple, ce serait possible


    est de collecter les appels de méthodes et instanciations de classes

    > ça m'interesse beaucoup et c'est ce que j'aimerais mettre en place, comment est-ce réalisable ?

  4. #44
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par chiappero Voir le message
    si les actions fonctionnelles et techniques de l'utilisateur ne sont pas déjà loguées

    Qu'entends-tu par là ? Si tu pense qu'il faudrait ecrire en dur a quoi correspond chaque boutton par exemple, ce serait possible
    Je veux dire qu'on peut prévoir de vouloir suivre les actions de l'utilisateur et donc écrire dans le code des ordres de journalisation de ces actions. Si on ne te l'a pas dit dans les spécifications de ton projet, je suppose que ce n'est pas le cas (ou alors ceux qui t'ont donné ce projet sont une sacré bande de fourbes ).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #45
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Mars 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Mars 2015
    Messages : 59
    Points : 22
    Points
    22
    Par défaut
    Non ils ne sont pas fourbes !
    Ils utilisent des logs mais seulement pour garder certaines erreurs précisement.

  6. #46
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Mars 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Mars 2015
    Messages : 59
    Points : 22
    Points
    22
    Par défaut
    Comment on pourrais collecter les appels de méthodes et instanciations de classes ?

  7. #47
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Avec des aspects...
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  8. #48
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Mars 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Mars 2015
    Messages : 59
    Points : 22
    Points
    22
    Par défaut
    Comment mettre ça en place, utilisant Spring AOP ou AspectJ ?
    Je sais qu'il utilisent SWING
    On doit construire des pointcut au moment du chargement de la classe, même ça semble possible de manière dynamique et non intrusive

  9. #49
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Les 2 se valent... AspectJ est plus puissant mais bcp plus compliqué... il nécessite une compilation particulière des classes, avec le compilateur aspectj qui va injecter les aspects au compile time...

    Si les applis sont déjà springifiées, alors Spring AOP est le choix par défaut le plus logique... et spring aop permet de tout faire sans rien recompiler
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  10. #50
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Mars 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Mars 2015
    Messages : 59
    Points : 22
    Points
    22
    Par défaut
    D'après ce que j'ai compris des aspects c'est très utile pour par exemple ajouter des choses sans avoir a se répeter, avec After etc...
    dans quelles conditions on pourrais l'utiliser pour gerer l'utilisation d'un autre logiciel ? il faudrait placer des pointcut au préalable ?
    Comment le faire de manière "dynamique"

  11. #51
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Sans avoir à se répéter oui, mais surtout, sans même avoir à le mentionner dans le code. Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class Clazz {
      public void toto() {
        System.out.println("into toto");
      }
    }
    Tu pourrais imaginer ajouter un aspect comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class MyAspect {
        @Around("Clazz.toto()")
        public Object addLog(ProceedingJoinPoint pjp) throws Throwable {
            System.out.println("before toto");
            Object retVal = pjp.proceed();
            System.out.println("after toto");
            return retVal;
        }
    }
    Ensuite, chaque fois que quelqu'un invoquerait toto, la trace suivante s'afficherait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    before toto
    into toto
    after toto
    On constate donc qu'on a ajouté un comportement à toto mais sans toucher au code...

    Les aspects sont particulièrement indiqué pour tout ce qui est transverse à une application, ie, les choses qu'on aimerait avoir partout sans avoir à l'écrire (ajouter du log automatique, monitorer les performances, gérer les exceptions, les transactions, etc...)
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  12. #52
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Mars 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Mars 2015
    Messages : 59
    Points : 22
    Points
    22
    Par défaut
    Ok c'est pas mal même si ça necessite de connaïtre le nom de la classe et ses methodes ça peut être bien, est-ce que ça marche pour toucher a un autre programme ? ( different framework etc )

  13. #53
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Mars 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Mars 2015
    Messages : 59
    Points : 22
    Points
    22
    Par défaut
    A un moment donné ou un autre, je vais devoir me brancher sur les applis que je veux monitorer le but est de Fournir un outil d'aide aux développeurs de l'applications


    ne vas t'il pas faloir ? manipuler le compilateur pour injecter des points de surveillance

  14. #54
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Mars 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Mars 2015
    Messages : 59
    Points : 22
    Points
    22
    Par défaut
    https://github.com/stevensouza/jamon...a/com/jamonapi


    Voici le code de JAMon et il utilise Spring AOP

  15. #55
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Tout dépend: Spring AOP ne peut faire de tissage d'aspect que sur les beans qu'il gère. AspectJ peut s'insérer absolument partout, mais ça demande de passer les classes dans le compilo d'aspects spécial.

    Et tu n'as pas besoin de connaître le nom de chaque classes ou méthodes, tu peux utiliser des wildcards (*, ? etc...)

    Si tu veux monitorer toutes les méthodes publiques de toutes les classes d'un package, tu écris une pointcuts expression de la forme suivante: "execution(public * com.myfirm.mydep.myteam.services..*(..))"etc... tu as une syntaxe complète et extrêmement puissante pour exprimer l'emplacement où tu veux te brancher... mais attention, la syntaxe est clairement imbuvable, et souvent mal documentée (voir faussement documentée)
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  16. #56
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Mars 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Mars 2015
    Messages : 59
    Points : 22
    Points
    22
    Par défaut
    Ok merci encore, je vais tenter de faire du mieux que je peux, je reste sur ce thread pour vous tenir informé, je vais surement rencontrer quelques petits problèmes innatendus !

  17. #57
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par Pill_S Voir le message
    Les 2 se valent... AspectJ est plus puissant mais bcp plus compliqué..
    Aspectj permet de faire des aspect, spring AOP, comme beaucoup d'interfaces spring, est une abstraction qui permet de travailler indépendement de la librairie utilisée pour les aspets. Donc spring AOP peut utiliser aspectj ou cglib, par exemple.

    Et aspectj ne nécessite pas de compiler avec le compilateur aspectJ. Au contraire, pour son cas (outil relativement autonome), il faut préférer l'agent aspectj injecté dans la jvm au démarrage (runtime weaving)

  18. #58
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Mars 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Mars 2015
    Messages : 59
    Points : 22
    Points
    22
    Par défaut
    . Donc spring AOP peut utiliser aspectj ou cglib, par exemple.

    > oui c'est ce que j'ai cru comprendre en regardant le source de JaMon

    Par xemple ici https://github.com/stevensouza/jamon...finitions.java Pour déclarer les pointcut
    C'est aop spring mais il importe quand même aspectJ

  19. #59
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Mars 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Mars 2015
    Messages : 59
    Points : 22
    Points
    22
    Par défaut
    JaMon a besoin d'être implémenté dans le code de base du programme

    MonitorFactory.add("myLabel", "myUnits", myValue);

Discussions similaires

  1. Quel logiciel (EDI) pour débuter en programmation ?
    Par mimosa69 dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 17/01/2016, 17h45
  2. Réponses: 1
    Dernier message: 30/12/2014, 12h02
  3. Réponses: 15
    Dernier message: 08/08/2013, 12h42
  4. Logiciel et Progiciel
    Par Toine dans le forum Autres Logiciels
    Réponses: 10
    Dernier message: 10/04/2012, 14h28
  5. Cours, tutoriels, logiciels, F.A.Q,... pour le langage SQL
    Par Marc Lussac dans le forum Langage SQL
    Réponses: 0
    Dernier message: 04/04/2002, 11h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo