[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