[Cascavel-pm] Mais_uma_dúvida_de_REGEX_!!!

Marco A P D´Andrade mda em embratel.net.br
Sexta Maio 7 18:56:28 CDT 2004


Como diz o meu chefe... as soluções simples e rápidas costumam ser as 
mais caras...

Rede neural... dizem que os resultados são maravilhosos, depois do 
treinamento feito... e isto demora... é verdade ? Tenho vontade, mas 
nunca tive tempo de estudar isto...

Creio que eu entendi melhor o exemplo de seu código do que sua 
explicação até agora, mas para tendar deixar mais claro...

 
<code>
@EventIDRules = qw (528 529 530 667);
@StringRule      = qw ('foi pro saco' '!amarelo');
 
foreach $IDRule ( @EventIDRules )
{
    if $EventID =~ m/$IDRule/ { faça qualquer coisa }
}
 
foreach $StrRule ( @StringRule )
{
   # Não tenho a menor idéia neste caso !!!!
}
 
<\code>
 
Supondo que seu $EventID seja uma das informações estraidas, não é 
interessante usar expressão regular, pois isto demanda de tempo, e um 
EventID 528 será igual a 5281 e 1528 ...

Eu faria diferente:

Premissas:
    - vc terá um arquivo com os EventID's que deversão ser listado, e 
outro que deverão ser ignorados, ou mesmo marcação inicial da linha 
(recomendável).
    - O mesmo vale para strings ;)
    - os EventID's são exatos
    - as strings estão na caixa desejada (pode colocar um /i no no regex 
do contrário )




#!/usr/local/bin/perl -w

use strict;

 my @EventIDRules = qw (528 529 530 667);

 my %EventID;
  #-> Acesso rápido
  map { $EventID{$_} = 0 } @EventIDRules;

 my @StringRule      = (
        'foi pro saco',
        '!amarelo'
        );

 my @Events = (
                [   1, 'A mensagem foi pro saco' ],
                [ 528, 'O carro amarelo' ],
                [   2, 'Algo diferente' ],
                [ 529, 'Reuniao Perl Mongers chegando! Rio de Janeiro!' ],
        );

  foreach my $Event ( @Events ) {
        if ( exists($EventID{$Event->[0]}) ) {
                print "Evento $Event->[0]: $Event->[1]\n";
                # Caso deseje ignorar a expressão regular...
                next;
        }
        # } else {
        {

                foreach my $StrRule ( @StringRule ) {
# print "DEBUG: '$StrRule' => '$Event->[1]'\n";
                        if ( $Event->[1] =~ m/($StrRule)/ ) {
                                print "STR $1: @$Event\n";
                        }

# Este é mais rápido que RE, porém vc deverá ter strings exatas
                        if ( rindex($Event->[1], $StrRule) >= 0 ) {
                                print "RI @$Event\n";
                        }

                }

        }

  }


Viajei! Mas no meu entender é algo nesta linha que vc estava precisando ;)

Sds,
Marco Antonio


Solli Moreira Honorio wrote:

> > Os "WHERE" podem trazer condições complexas. Que operadores lógicos
> > você pretende usar para concatenar suas condições? Apenas "E"? "E" e 
> "OU"?
> Cara, eu estava pensando em algo 'simples' utilizando apenas o 'E' e 'OU'.
>  
> >
> > > Bom, a minha dúvida é saber qual seria a melhor maneira de 
> implementar
> > > este where, a príncio eu estava imaginando em colocar cada condição
> > > deste 'where' em um elemento de um array e depois aplicar a regra de
> > > condição para cada elemento !!! Você vislumbram algo mais inteligente
> > > para isto ?
> >
> > Bom, o fato de você não estar procurando nada específico não ajuda
> > muito. Mas acho que poderíamos treinar uma rede neural para identificar
> > entradas potencialmente perigosas no EventLog... que você acha disso?
> > AI::Neural::BackProp (acho que é este o nome do módulo) pode ser útil.
> Meu !!!!! Neural ? eu não consigo nem fazer uma expressão regular 
> descente !!! Mesmo assim vou dar uma olhada para saber se o negócio é 
> muita viajada  !!!
>  
> >
> > Outra possibilidade: que tal se você simplesmente classificar o
> > EventLog e mandar as informações para um DB? Depois, poderia usar
> > técnicas de Data Mining para extrair informações interessantes sobre a
> > sua rede...
> >
> Também pensei nesta possibilidade - é até ela existe, pois o log vai 
> para uma base de dados para o administrador criar relatório - o 
> problema é que eu gostaria de evitar a transferência de dados 
> considerado indesejados pelo administrador para o servidor... e pode 
> ser muito.
>  
> Para isto eu gostaria de permitir ao mané dizer ao sistema, através de 
> uma interface bonitinha - coisa de administrador de windows -, 'eu 
> quero o eventid = 171 ou eventid = 666'.  As palavras chaves na 
> interfaces seriam 'é igual a', 'é diferente de', ´é maior do que', 'é 
> maior ou igual a', 'é menor do que', 'é menor ou igual a', 'começa 
> com', 'não começa com', 'termina com', 'não termina com', 'contém' e 
> 'não contém'.
>  
> Então eu iria criar, ou compilar, esta regra para o sistema. É nesta 
> hora que eu não estou conseguindo pensar em algo mais inteligente do 
> que colocar cada regra desta num array e fazer a verificação.
>  
> Pessoal, leram... é pra lá de simples :-) !!! É como eu sempre digo 
> para o meu pessoal, é complicado fazer as coisas ficarem simples !!!!
>  
> *De:* 	cascavel-pm-bounces em mail.pm.org
>
> *Para:* 	"Cascavel Perl Mongers" cascavel-pm em mail.pm.org
>
> *Cópia:* 	
>
> *Data:* 	Fri, 07 May 2004 16:58:44 -0300
>
> *Assunto:* 	Re: [Cascavel-pm] Mais_um_dúvida_de_REGEX_!!!
>
>   	 
>
> > Solli Moreira Honorio wrote:
> > > O pessoal,
> > >
> > > Calma aí... vocês se esqueceram que eu trabalho com Windows e tem um
> > > virus novo no mercado, o tal de Sasser.... não que minha rede 
> tenha tido
> > > problema, mas apesar do Antivirus estar Ok eu precisava aplicar o 
> mais
> > > novo security path, e sem teste, em mais de 1.000, incluindo usuário
> > > remotos !! Ainda bem que escolhi Windows, assim eu garanto o 
> Wiskies das
> > > criancinhas !!!
> >
> > Caraca, Solli! Se seus filhos já bebem whisky, eu fico imaginando o
> > que eles vão beber quando entrarem na "aborrecência", e quiserem provar
> > que são machos de verdade... :-) vai ser um tal de chegar no hospital
> > carregado e dizer ao médico "hoje foi etanol!" ou "terebentina... só 
> uma
> > garrafa, doutor!" :-)
> >
> > > Vamos lá...
> > >
> > > O que vou implentar é uma interface para o administrador escolher 
> o que
> > > ele quer pegar dos eventlog do Windows, desda maneira o cara poderá
> > > colocar condições para armazenar na base um evento, e eu não tenho
> > > limite para estas condições. Simplificando mais um pouco, imagine o
> > > eventlog do Windows como uma tabela e aí o cara vai fazer um 'select'
> > > com os 'where', certo ?
> >
> > Os "WHERE" podem trazer condições complexas. Que operadores lógicos
> > você pretende usar para concatenar suas condições? Apenas "E"? "E" e 
> "OU"?
> >
> > > Bom, a minha dúvida é saber qual seria a melhor maneira de 
> implementar
> > > este where, a príncio eu estava imaginando em colocar cada condição
> > > deste 'where' em um elemento de um array e depois aplicar a regra de
> > > condição para cada elemento !!! Você vislumbram algo mais inteligente
> > > para isto ?
> >
> > Bom, o fato de você não estar procurando nada específico não ajuda
> > muito. Mas acho que poderíamos treinar uma rede neural para identificar
> > entradas potencialmente perigosas no EventLog... que você acha disso?
> > AI::Neural::BackProp (acho que é este o nome do módulo) pode ser útil.
> >
> > Outra possibilidade: que tal se você simplesmente classificar o
> > EventLog e mandar as informações para um DB? Depois, poderia usar
> > técnicas de Data Mining para extrair informações interessantes sobre a
> > sua rede...
> >
> > Ainda abstrato, mas mais palpável do que no início...
> > Putamplexos!
> > --
> > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> > Luis Campos de Carvalho is BSc in Comp Science,
> > PerlMonk [SiteDocClan], Cascavel-pm Moderator,
> > Unix Sys Admin && Certified Oracle DBA
> > http://br.geocities.com/monsieur_champs/
> > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> >
> > _______________________________________________
> > Cascavel-pm mailing list
> > Cascavel-pm em mail.pm.org
> > http://cascavel.pm.org/mailman/listinfo/cascavel-pm
>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Cascavel-pm mailing list
>Cascavel-pm em mail.pm.org
>http://cascavel.pm.org/mailman/listinfo/cascavel-pm
>




Mais detalhes sobre a lista de discussão Cascavel-pm