thegoodfellas/blogset-br huggingface dataset:
sera direcionado para o host definido pelo endereco IP na ultima coluna da tabela acima. Criei uma solucao em C++, que usa um metodo de busca em profundidade para buscar por um caminho valido saindo de um dado no para outro no modelo de rede do problema. Minha ideia foi fazer a funcao de busca em profundidade (em ingles, depth-first search) andar de no em no (nos sao rotulados como: A, B, C, etc.), iterando sobre cada uma das regras da tabela de roteamento, e procurando por cada uma dessas regras que possa rotear adequadamente o pacote atraves da rede. A funcao abaixo e auto-explicavel: bool RoutingTable::routeTo( string node, string* resp ) { bool do_it_again = true; RoutingEntry rentry = findRouteEntry( node ); if ( rentry.doneThis() ) return false; resp->append( rentry.getId() ); if ( rentry.getAddress().compare(getFinalDestination()) == 0 ) { return false; } vector routing_rules = rentry.getRules(); vector::iterator i; rentry.markThis(true); // go through each of the routing rules for ( i = routing_rules.begin(); ( i != routing_rules.end() ) && do_it_again; i++ ) { if ( (*i).canRoute(getFinalDestination()) ) { do_it_again = routeTo( (*i).getRedirection(), resp ); } // if } // for rentry.markThis(false); // no rules; asks the default gateway... if ( do_it_again ) { do_it_again = routeTo( rentry.getDefaultRoute().getRedirection(), resp ); } return do_it_again; } Nessa solucao usei apenas a STL do C++, ou C++ Standard Template Library (STL). Todos os nos sao armazenados em estruturas como elementos de um vector, e sao localizadas por simbolos de ID (A, B, C, etc.), ou por numeros IP (metodo findRouteEntry()). Cada no tem a sua propria estrutura Rules (que voce pode obter chamando getRules()). Uma vez processadas, cada uma dessas regras pode apontar para um outro no da tabela, e a funcao routeTo pode atuar de forma recursiva sobre uma dada regra. Se nenhuma regra suficiente para combiner com o pacote for encontrada, a funcao routeTo e chamada sobre o no retornado pela chamada a getDefaultRoute: // no rules; asks the default gateway... if ( do_it_again ) { do_it_again = routeTo( rentry.getDefaultRoute().getRedirection(), resp ); } As chamadas para a funcao markThis() sao para evitar recursoes infinitas (iterar sobre os mesmos nos, de uma forma circular e muitas vezes irreversivel, levando ao esgotamento de recursos computacionais). A semantica e simples: markThis(true), quando o codigo precisar entrar numa regao critca, e markThis(false) quando tiver saido da regiao critica. Voce conseguiria encontrar a diferenca entre o metodo de roteamento que eu formulei para o que e implementado por roteadores de rede de verdade (de fabricantes como Cisco)? Talvez meus posts anteriores com questoes da certificacao CCNA da Cisco possam ajudar...
analizador semantico diferente do Ingles. No caso, existe um BrazilianAnalyzer, e isso e muito importante, pois o tratamento sobre caracteres acentuados, por exemplo, e viabilizado atraves dos analizadores. Caso um analizador adequado nao seja usado, internamente o Lucene pode ignorar caracteres acentuados, por exemplo, como se fossem simbolos invalidos. Ademais, o analizador especifico para a linguagem que voce utiliza para armazenar dados permite que uma busca por "Abraao" ou "Abraao" retorne o mesmo resultado. O recurso de internacionalizacao dos Analyzers permite ignorar detalhes de acentuacao, melhorando a qualidade da busca.Agora, ja e possivel fazer uma busca, usando o trecho a seguir: try { QueryParser parser = new MultiFieldQueryParser( new String[] { "strNomeRelator" }, new BrazilianAnalyzer() ); Query luceneQuery = parser.parse(nome_relator); FullTextQuery ftq = entityManager.createFullTextQuery(luceneQuery ,Relator.class); } catch (ParseException exc) { }Na chamado a classe MultiFieldQueryParser, nos passaremos como parametro: o campo que foi indexado, e que sera buscado agora; e o analizador utilizado (BrazilianAnalyzer). Normalmente, pode-se passar null para o analyzer, pois ele ja foi configurado na entidade Relator. Dessa forma, nos ainda nao criamos a Query Lucene, apenas criamos um "criador de Queries Lucene". A seguir, nos chamamos o metodo parse, herdado da classe ancestral QueryParser, passando como parametro o valor que se quer buscar (por exemplo, a variavel String nome_relator poderia conter "Jose", pois queriamos buscar por Jose na base). Com a query em mao, criaremos a FullTextQuery, essa sim que fara a busca propriamente dita na base de indices.Para retornar a lista de registros encontrados, devemos chamar:List<relator> resultPrimary = ftq.getResultList();No proximo post, veremos como executar outras funcoes, como: marcar os hits encontrados, procurar em multiplas tabelas, etc.
em vista do fato de que o RIP tem metrica maxima de 15, para rotas possiveis e roteaveis. Metrica 16 e rota inacessivel, desligada pelo administrador ou envenenada pelo proprio algoritmo do RIP, para evitar anuncios de circulares de rotas impossiveis (estrategia conhecida como poisonous routing, envenena a rota e anuncia ela desse jeito, para que as outras redes a enxerguem como proibida e assim evitar que outros roteadores na area administrativa anunciem essa rota invalida a outros roteadores). Como esse host 192.168.50.1 faz parte da rede 192.168.50.0, e como essa rede e metrica 16, um ping para esse host retornaria uma mensagem de inalcancavel. Letra B esta errada. A letra D quer saber se um ping para o host 192.168.40.2 pode ser alcancavel, e a resposta e sim, e temos 2 evidencias para garantir isso: primeiro, que na linha 6 vemos que quando o roteador vai construir as entradas da tabela de roteamento, momento no qual algumas rotas dinamicas externas sao reconhecidas e acrescentadas, a rota para a rede 192.168.40.0 apresenta-se com metrica 1 isso quer dizer que a rota para essa rede passara primeiro pelo next hop router, ou seja, o roteador vizinho, conectado pela interface Serial0/1. Uma metrica otima, que perde apenas para as metricas de rotas estaticas e para as diretamente conectadas (as com flag S e as com metrica 0, respectivamente). Isso serviria para garantir que a rede 192.168.40.0 e acessivel, mas nao que um ping para o host 192.168.40.2 pode ser realizado com sucesso. Contudo, a primeira linha de log nos garante isso, porque o anuncio da tabela de rotas para essa rede veio exatamente do roteador de endereco IP 192.168.40.2. Uma coisa legal com roteamento dinamico e que as rotas sao configuradas nas 2 direcoes, e se recebemos uma mensagem de 192.168.40.2, certamente que poderemos enviar mensagens para la tambem (a menos que uma ACL tenha sido colocada de barreira, impedindo trafego ICMP de saida no roteador conectado a S0/1). A letra D esta correta tambem. Respostas: C e D
Topicos que tem ocorrido com mais frequencia sao aqueles relacionados com seguranca, apesar de ser um assunto mais frequente em exames mais avancados como o CCNP e o CCIE. Na questao abaixo, um exemplo basico com Access Control Lists (ACLs), retirado do livro CCNA Study Guide, Sixth Edition, do Todd Lammle: You configure the following access list: access-list 110 deny tcp 10.1.1.128 0.0.0.63 any eq smtp access-list 110 deny tcp any eq 23 int ethernet 0 ip access-group 110 out What will the result of this access list be? A. Email and Telnet will be allowed out E0. B. Email and Telnet will be allowed in E0. C. Everything but email and Telnet will be allowed out E0. D. No IP traffic will be allowed out E0. Na questao, uma lista de comandos do roteador e apresentada, e pede-se o resultado da execucao de tal lista num roteador hipotetico. Aqui deve-se ter sempre em mente uma interpretacao recorrente nas provas da Cisco: que o que nao constar da relacao de comandos, presume-se que foi omisso. Ou melhor, a lista de comandos comeca exatamente com a primeira sentenca de access-list ..., e termina com ip access-group 110 out. O trecho entao nao e parte de uma entrada do administrador de rede, mas sim uma sequencia completa e indivisivel de comandos. Os comandos de access-lists na questao acima sao no formato extended, ou seja, sao no formato que comeca com a definicao da acao (deny ou permit), o intervalo de hosts de origem, o intervalo de hosts destino e, possivelmente, condicoes que especificam em que porta a restricao vai se impor. As listas extended sao numeradas com identificadores de 100 a 199, e com elas e possivel filtrar pacotes por campos IP de camada 3 e ate alguns servicos de camada 4 ou maior (WWW, Telnet, SMTP, etc.), o que amplia o espectro de usos possiveis para as ACLs, como por exemplo mitigar ataques Denial-of-Service (DoS), DoS Smurfs, IP Spoofing, etc. E possivel estabelecer regras que serao aplicadas especificamente a pacotes TCP com a flag SYN setada, por exemplo, o que serve de ajuda contra ataques de SYN flood. Certo, apenas mitigar, nao necessariamente impedir tais ataques, dada a dificuldade em definir regras sobre grupos de pacotes suspeitos num universo tao grande de possibilidades de ataques. Mas a utilidade das ACLs ainda assim e muito bem vinda e quebra alguns galhos. Quando e preciso definir regras que se apliquem a apenas um par de hosts, como a sentenca access-list 110 deny ip host 172.16.10.3 host 172.16.20.5, por exemplo, que bloqueia pacotes IP com campo de origem 172.16.10.3 e destino para 172.16.20.5, a tarefa e imediata. Contudo, e mais comum, na definicao das regras de ACLs, quando e necessario que sejam aplicadas regras a um intervalo de hosts numa sub-rede, pode-se recorrer aos wildcards. Vamos dizer que queiramos aplicar determinada regra ao conjunto de hosts nas sub-redes de 192.168.113.0 ate 192.168.140.0. Primeiro, calcule quantas sub-redes existem entre os enderecos anteriores; diminuindo 113 de 140 (140 113), obtemos 27. Agora e preciso achar uma potencia de
2 que seja maior ou igual a esse intervalo; temos que 32 e maior que 27 (16 e outra potencia de 2, mas e menor que 27), e portanto nos serve para esse proposito. Esse valor e 32 e o tamanho do bloco, e quando diminuido de 1, nos traz o endereco de wildcard. Nesse caso, temos que o endereco de wildcard para esse intervalo e 0.0.31.255. O terceiro octeto, que guarda informacoes das sub-redes onde serao aplicadas a regra de ACL, tem valor 31, representado um bloco de 32 (192.168.113.0 ate 192.168.145.0). Esse intervalo e maior do que o que o intervalo que queremos, mas serve ao proposito. O quarto octeto contem um valor de 255, que permite a presenca de qualquer valor, e nos garante que todos os hosts nessas sub-redes sejam tambem contemplados com a regra ACL. De volta a questao, a primeira sentenca aplica a regra de que sera descartado qualquer pacote SMTP (porta 25) com origem em quaisquer dos hosts em 10.1.1.128 ate 10.1.1.192 (wildcard = 0.0.0.63, bloco igual a 64). A segunda regra descarta todos os pacotes com destino ao servico de Telnet (porta 23). Logo a seguir, essas 2 regras sao aplicadas a interface E0 (ethernet0) para saida (out), ou seja, em post-routing, apos o pacote ter sido roteado localmente no roteador e estar prestes a ser encaminhado para a interface de saida, as regras sao aplicadas. A principio, ate ai tudo bem, temos 2 regras, uma que nega totalmente servicos para a porta 23, e outra que nega servico SMTP (porta 25) para um conjunto de hosts. A alternativa C parece convidativa, mas algo vai errado na lista de acesso: se era esse o fim almejado pelo administrador (negar pacotes para servicos portas 23 e 25), ele deveria ter incluido a regra permit ip any no final da lista de acesso, porque a ultima regra e deny ip any, o que faria com que qualquer pacote tivesse o repasse concedido pela interface ethernet0. Devido a omissao dele, a interface E0 vai perder comunicacao com o mundo. Alternativa D e a correta.
Uma questao do exame CCNA muito interessante, que resume muitos dos conceitos sobre as funcoes basicas dos dispositivos de roteamento e segmentacao em sub-redes: A router receives a packet on interface 172.16.45.66/26. The source IP of the packet is 172.16.45.127/26 and the destination is 172.16.46.191/26. How will the router handle the packet? A. The destination is a host on another subnet, so the router will not forward the packet. B. The destination is a host on the same subnet, so the router will forward the packet. C. The destination is a broadcast address, so the router will not forward the packet. D. The destination is a network address, so the router will forward the packet. A principio, percebemos que todos os enderecos IP sao /26, ou seja, os 2 bits iniciais do quarto octeto sao usados para identificacao de sub-redes (24 < 26 < 32, ou seja, quarto octeto), e os 6 restantes sao usados para host, o que nos da um total de 4 sub-redes (2 bits de rede, elevado a 2) e 62 hosts (contando os enderecos reservados para a base da rede, e para o broadcast da respectiva sub-rede, teriamos um total de 64). Como o numero de sub-redes e bastante restrito, convem que listemos cada um desses intervalos, para averiguarmos as condicoes de chegada desse pacote: 172.16.46.0 a 172.16.46.63 (0-63) 172.16.46.64 a 172.16.46.127 (64-127) 172.16.46.128 a 172.16.46.191 (128-191) 172.16.46.192 a 172.16.46.255 (192-255) A matematica basica para a enumeracao desses intervalos de sub-redes e simples: basta obter o comprimento de cada intervalo, calculando o espaco reservado para os hosts no endereco base acima: ou seja, 6 bits denotam um espaco de representacao de 64, entao a primeira sub-rede iniciara no IP terminado em 0, e terminara no IP terminado em 63 (63 0 + 1 = total de 64). O endereco inicial da proxima sub-rede sera o ultimo endereco valido para a sub-rede antecedente mais 1, ou melhor, 172.16.46.64 (63 + 1), e o endereco final sera 64 (endereco inicial) mais o numero de hosts nesse intervalo (64, igual para todas as sub-redes), menos 1, porque comecamos a numeracao com 0, desde o primeiro subintervalo. E assim, prossegue-se ate que todos os intervalos tenham sido listados. A partir da lista de sub-redes que fizemos, percebemos que o endereco de destino 172.16.46.191 e um endereco de broadcast. O endereco de broadcast sera sempre o ultimo numa dada sub-rede (por isso mesmo, nao contabilizamos esse endereco na atribuicao de um host valido dentro de uma determinada sub-rede ele sera sempre reservado para broadcast). Ora, temos que os roteadores segmentam as redes em dominios de broadcast, e por isso, nao perpetuam pacotes incidentes em suas portas que tenham um endereco de broadcast como destino (popularmente falando, enderecos de broadcast nao sao roteaveis). A letra C e a resposta. Uma observacao: veja que o endereco fonte do pacote direcionado pelo roteador, pertence a mesma sub-rede da interface do roteador, ou seja, a sub-rede de 172.16.46.64 ate 172.19.46.127 ( 64 < 66 < 127 ). O que aconteceria se isso nao fosse verdadeiro, se
elementos, ele sera acordado e entao recomecara a cobrir o buffer com arquivos isso e feito com uma chamada a prod->bufferNotFull.wakeAll(), encontrado no fim do loop principal do Reducer. A chamada a wakeAll faz com que todos os threads que estejam dormindo sobre essa variavel de condicao acordem imediatamente (ou quase). Com isso, o Mapper pode estar dormindo na linha bufferNotFull.wait(&producerMutex), no inicio do loop de busca, e essa chamada a funcao wakeAll a partir do Reducer pode liberar o bufferNotFull (uma instancia do QWaitCondition), permitindo ao Mapper reiniciar o processo de completar o seu buffer de 5 elementos de novo. Tudo o que o Mapper tem que fazer e cobrir o buffer com nomes de arquivos. Nos estamos lidando aqui com recursos compartilhados, e os mutexes sao de uso obrigatorio (veja as referencias as instancias de QMutex no codigo fonte) uma vez que essa aplicacao e multithreaded, e nao queremos que ocorram condicoes de corrida. Colocando tudo junto: FileSearchMap* mapper = new FileSearchMap; KeySearchReduce* reducer = new KeySearchReduce; mapper->setDirectory( dir ); reducer->setMapper( mapper ); mapper->start(); reducer->start(); mapper->wait(); reducer->wait(); long long a1, a2; cout << argv[1] << " contains " <<>getFoundCount() << " files that contains " <<>getLineCount() << " lines for the pattern 1 ( " << (a1 = reducer->getLineP1Count()) << " ) and pattern 2 ( " << (a2 = reducer->getLineP2Count()) << " )." << endl; long long response = a1*a2; cout << "Response: (" <<>")" << endl; Aqui, a chamada getLineP1Count() retorna a soma de todos os numeros na linha 4, nos arquivos com o primeiro padrao; e getLineP2Count() faz o mesmo para o padrao de busca 2. Claro, da pra resolver o problema todo sem usar capacidade de multithread, mas ai nao tem graca! :)
A Policia Militar de Meio Ambiente desencadeou operacao de combate ao crime de trafico de animais silvestres, nos municipio de Mutum e Lajinha nesta quarta-feira, 06/04, e conseguiu excelentes resultados.O balanco final da operacao mostra que foram apreendidos um total de nove passaros que eram mantidos irregularmente em cativeiro e realizou a prisao de um homem por adulteracao de anilha.Os passaros foram novamente devolvidos a natureza e as gaiolas e materiais encaminhados para a Delegacia de Policia Civil.Fonte: Portal Caparao Um homem foi preso nesta terca-feira (26), em Vila Velha, no Espirito Santo, pelo roubo de inumeros passaros. Sandro Zacarias se passava por policial ambiental, entrava na casa das pessoas e levava as aves.De acordo com o sargento Reis, da policia ambiental, o homem aplicou o golpe em inumeras vitimas em Vila Velha e Cariacica. Sabemos que sao inumeras as vitimas, elas inclusive se organizaram, formaram um grupo em um aplicativo, para localizarem os animais, disse.O homem foi preso dentro de casa, no bairro Cobilandia. Junto com Sandro foram encontrados seis passaros que so podem ser criados com autorizacao do Ibama. Ele confessou os crimes a policia. Eu passava com a camisa do Ibama e levava os passarinhos, disse Sandro.Quatro vitimas reconheceram o homem na delegacia e contaram que ele andava armado, uniformizado e dizia ser do Ibama ou da policia ambiental.Ele chegou por volta das 7h da manha, se passando por um agenda do Ibama, com uniforme, e ai eu deixei ele entrar, ele tava com uma pistola na mao, disse uma das vitimas, que nao quis se identificar.Ele levou cinco passaros e quando a vitima procurou o Ibama, descobriu que havia sido enganada. Cheguei no Ibama e me falaram que eu fui vitima de um golpe, que eles ja estava procurando ele, disse.A vendedora Suelen Nunes tambem teve passaros roubados pelo homem. Ele falou que ia levar, que era do Ibama, que tinha recebido uma denuncia, e ele tava armado, entao ele levou, contou.A policia ambiental investigava o caso desde outubro de 2015, mas teve dificuldade de encontrar o homem porque ele mudava de residencia muitas vezes e tinha pelo menos seis perfis falsos nas redes socais.Nestes perfis ele se apresentava ora como tenente, ora como coronel, o que induzia muita gente a achar que ele realmente era policial militar, disse o sargento Reis.Sandro prestou depoimento na delegacia de Vila Velha. A Policia Civil disse que vai investigar como o homem conseguiu os uniformes da policia, onde esta a arma que ele usava e o que fez com os passaros que nao encontrados.Fonte: G1/ES Uma mulher foi detida e levada para a Delegacia na noite desta quarta-feira (27), apos ser suspeita de arrancar com as proprias maos, a cabeca da calopsita de um vizinho. O fato aconteceu por volta das 18h30, na rua Agliberto Rodrigues Moreira, no bairro Amarelo, em Cachoeiro de Itapemirim.Segundo informacoes policiais, a ave pertencia a uma crianca de 10 anos, que presenciou a cena. A calopsita fugiu de casa e depois de muita procura, o dono descobriu que estava na casa da vizinha. Ele foi ate
o local, mas a mulher se negou a devolver.Para pegar a ave de volta, o homem comprou outra calopsita com a intencao de trocar os passaros. Ele iria oferecer mais R$ 50 para resgatar a ave de estimacao do filho. No momento em que se dirigia para o local, uma viatura da Policia Militar passou e ele pediu apoio.A mulher recusou o acordo e arrancou, com as maos, a cabeca da calopsita na frente do proprio filho e dos donos do animal. Ela ainda chutou a gaiola onde estava a outra ave na intencao de mata-la tambem. Ela foi detida e encaminhada ate a Delegacia Regional de Cachoeiro de Itapemirim por maus tratos a animais. O crime cabe fianca.
que acreditavamos ser de patativa-verdadeira, em um ambiente diferente do mencionado na literatura. Como a especie nao era registrada ha muito tempo, resolvemos estuda-la mais detalhadamente, contextualiza a coordenadora da pesquisa, a biologa Carla Fontana, da PUCRS. Mas percebemos que poderia se tratar de uma especie diferente quando comecamos a notar que, alem de viverem em outro habitat, os individuos apresentavam comportamentos peculiares.As diferencas de plumagem podem passar despercebidas ao observador nao especializado. Mas o bico da patativa-tropeira e facilmente distinguivel, por ser amarelo-ouro. Alem disso, o canto tambem e outro.A patativa-tropeira ocorre em regioes de campo que vao desde o nordeste do Rio Grande do Sul ate Minas Gerais. E no Sul que ela se reproduz. E, no inverno, ela voa para o cerrado mineiro para fugir do frio. E durante a migracao que ela esta mais exposta aos cacadores ilegais de animais silvestres. Outro problema que a especie enfrenta e a degradacao do seu local de reproducao: os campos de altitude, onde ficam tambem as florestas de araucaria (Araucaria angustifolia), no Parana, em Santa Catarina e no Rio Grande do Sul; alem da degradacao do cerrado, onde ela passa o inverno.Campos sulinos
CenterValeEm Taubate : Plantao da Delegacia na Av. Prof. Prof Juscelino K de Oliveira. PM - Av. Prof. Prof Independencia, 247 - Independencia. Ainda em Taubate: Rua Marques do Rabico, 33 - Gurilandia Rua Jose Dantas, 266 - Pq Aerorporto - Rua da Igreja Rua Monsenhor Miguel Martins, 361 - Vila MarliRua Padre Faria Fialho, 315 - Jd Maria AugustaEm Sao Paulo:Roberto: 11-9593-4205Rua Bernardino de Campos, 1624 - Campo Belo - SP Todos os Batalhoes da Policia Militar que estao aceitando doacoes, procure o mais proximo de voce! Pontos de Recepcao em Sao Luiz do Paraitinga:Pousada das Cotias Sertao: Recebendo Roupas e Alimentos.Rodovia Osvaldo Cruz, km 42,5 Espaco Caipira:Fica no caminho de Lagoinha para SLP Creche Bairro Sao Benedito Entrada da cidade pelo trevo de LagoinhaAntes da Igreja No Ponto de onibus vira a direita. Alimentos Recebendo Igreja Sao Benedito Bairro Sao Benedito Entrada da Cidade pelo Trevo de Lagoinha.Recebendo roupas.Doacoes em Dinheiro poderao ser depositadas na conta:Banco do Brasil Agencia: 0076-0Conta Corrente: 202020-3Prefeitura de Sao Luiz do ParaitingaA LBV tambem esta solidaria com as vitimas da Enchente de Sao Luiz do Paraitinga e conta com a populacao joseense para mais uma mobilizacao, ha um posto de arrecadacao de roupas e alimentos nao perecives no Centro Comunitario e Educaciona da LBVl que fica na Avenida Sao Jose,352, Sao Jose dos Campos, nosso Tel. (12) 39217225. Colabore! Em breve outras informacoes.