Quelle langue dois-je utiliser pour écrire un analyseur de texte et afficher les résultats de manière conviviale?
De ma société propriétaire le logiciel génère un fichier journal qui est beaucoup plus facile à utiliser si elle est analysée. L'analyseur de journal que nous utilisons a été écrit par un autre employé comme un projet à part, et c'est horrible de performance.
Ces fichiers journaux peuvent croître à 10s de mégaoctets très rapidement, et l'analyseur que nous utilisons actuellement des problèmes si un fichier journal est plus grand que 1 méga-octet.
Donc, je veux écrire un programme qui peut convertir cette grande quantité de texte dans le plus court laps de temps possible. Nous utilisons Windows exclusivement, en cours d'exécution sur Windows est un must. Notre implémentation actuelle s'exécute sur un serveur web local, et je suis convaincu que l'exécutant en tant qu'application devra être plus rapide.
Toutes les suggestions qui vous seront utiles. Merci.
EDIT: Mon but ultime est d'analyser le texte et l'afficher dans un beaucoup de manière plus conviviale avec des couleurs et des. Pouvez-vous faire cela avec Perl et Python? Je sais que vous pouvez le faire avec Java et C++. Donc, il fonctionnera comme le bloc-notes où vous ouvrez un fichier journal, mais sur l'écran, vous pouvez afficher le format convivial, au lieu du fichier raw.
EDIT: Donc, je ne peux pas choisir la meilleure réponse, et qui a été de choisir un langage qui permet un affichage optimal, ce que je vais faire, et puis écrire l'analyseur. Aussi, à l'aide de ANTLR va probablement rendre ce processus beaucoup plus facile. J'ai changé la question d'origine, puisque je suppose que je n'ai pas demandé à ce que je recherchais vraiment. Merci à tous!
source d'informationauteur HenryAdamsJr | 2010-03-25
Vous devez vous connecter pour publier un commentaire.
Hmmm, "aller avec ce que vous savez" était une bonne réponse. Perl a été conçu pour ce genre de chose (mais l'omi est bien adapté pour l'analyse simple, mais je serais personnellement l'éviter pour des projets complexes).
Si c'est encore un peu complexe, pourquoi ne pas utiliser une bonne syntaxe et de la grammaire?
Lex &Yacc (ou Flex & Bison) du printemps à l'esprit, mais personnellement, je serais toujours atteindre pour Antlr
De définir plusieurs "mots" en termes de modèles (syntaxe), et les règles de combiner ces mots (la grammaire) et Antlr va cracher un programme pour analyser vos commentaires (vous pouvez avoir le programme en Java, C, C++ et plus (vous êtes inquiet au sujet de l'analyse, afin de choisir un langage compilé, bien sûr)).
Personnellement, je trouve cela fastidieux à la main-artisanat d'analyseurs, et encore plus fastidieux de les déboguer, mais AntlrWorks est une belle IDE qui fait vraiment un morceau de gâteau ...
Que peu en bas, c'est la définition d'une règle de grammaire.
Si vous vous trompez vos règles de grammaire, vous en serez informé. Ce n'est pas le cas de la main d'analyseurs, où il vous suffit de gratter votre
body part
et de s'interroger sur les "résultats étranges"...Check it out. Même si vous pensez que votre projet est trivial, il se pourrait bien croître. Et si vous avez tout intérêt dans l'analyse des vous ne devez vous-même pour au moins être familier avec lex/yacc, mais surtout Antlr(Travaux)
Vous devez utiliser la langue que VOUS savez... à Moins d'avoir beaucoup de temps disponible pour compléter le projet, vous pouvez également passer du temps à l'apprentissage d'une nouvelle langue.
Je voudrais suggérer à l'aide de Python ou Perl. L'analyse de gros fichiers texte avec des expressions régulières est vraiment très rapide.
Quelle que soit la langue de votre collègue utilisé.
(Je pourrais vous dire que tous les macro assembler vous permettra d'écrire du code qui serait déchirer par le biais de vos données, mais sérieusement, est-ce que vous allez passer des mois à la rédaction de l'assemblée juste pour économiser quelques secondes de temps CPU? La réécriture d'un programme est amusant, mais ce n'est pas pratique.)
Sortir votre profiler, point à votre horriblement exécution de l'analyseur de journal, et corriger les problèmes de performance. Si c'est un langage commun, il y aura des gens ici qui peuvent vous aider.
J'ai utilisé Python et Perl. Perl est un ajustement plus naturel pour cela, mais peut être difficile à maintenir. Python va le faire tout aussi bien et est plus facile à lire. Aller pour Python.
Je crois que perl est considéré comme un bon choix pour analyser le texte.
Peut-être un produit fini comme le MS LogParser (l'utilisation de podcast ici) peut faire ce que vous voulez et c'est gratuit.
Envisager la PLAQUETTES de Projet de AT&T. C'est une langue, compatible avec le C, c'est conçue exactement à haute vitesse pour l'analyse de fichiers journaux et d'autres ad hoc formats de données. Il y a même une fonctionnalité où il peut essayer d'apprendre à votre format de journal à partir d'exemples, mais je ne sais pas si cela a atteint un niveau de production encore. Les gens derrière le projet sont vraiment intelligents, et il a eu un grand impact au sein de la compagnie de téléphone. PLAQUETTES donne de très hautes performances sur des flux de données qui produisent de gigaoctets. Joe Bob dit le vérifier.
Si "massive du texte dans le le temps le plus court possible", Perl et Python ne sont pas la réponse. Mais si vous avez besoin d'inventer quelque chose de pas trop lent, et il est OK pour prendre plus de temps, Perl et Python pourrait être OK. Jeux de méga-octets n'est en fait pas si grand que ça.
Perl est bon pour un traitement de texte.
Un certain nombre de très bons programmes de traitement de texte ont été écrits en Perl. Ack (un grep de remplacement) est l'un.
Sonne comme un travail pour Perl, bien que je n'ai pas particulièrement soin de lui comme une langue moi-même. ActivePerl est une distribution raisonnable de Perl pour Windows.
Je vous suggère de Perl. Il était pratiquement construit pour l'analyse des fichiers journaux. Comme pour la sortie je suis d'accord avec ghostdog74, le HTML est le chemin à parcourir. Perl a des dizaines de modules qui vous permettent de construire et/ou d'un modèle HTML.
J'avais analyser les données à l'aide d'expressions régulières, puis utiliser un Modèle::Toolkit (sur CPAN) pour créer des pages sympas à l'aide de HTML et CSS templates.