[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