[Cascavel-pm] Mais_uma_dúvida_de_REGEX_!!!

Marco A P D´Andrade mda em embratel.net.br
Sexta Maio 7 19:23:43 CDT 2004


Marco A P D´Andrade wrote:

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

Complementando... rapidas na execução, e não de se fazer... simplificar 
algo complexo É o trabalho...

>
> 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
>>
>
> _______________________________________________
> 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