Arquivo

Archive for the ‘Infraestrutura da Internet’ Category

Algumas estatísticas do blogue Infraestrutura da Internet (II)

 

Introdução

 

Dicionários em Python é um recurso poderoso. É bom exercitar. Aqui segue um exemplo, na oportunidade que estava verificando a evolução do acesso a este blogue.

Somente exibo as células do Anaconda, outra facilidade incrível.

 

As células do Anaconda com gráficos a partir de dicionários, em Python 3.

 


Figura 1

 


Figura 2

 


Figura 3

 


Figura 4

 


Figura 5

Anúncios

Instalação do Apache UIMA (Apache UIMA Installation)

Introdução

Introduction


Este texto relata o processo de instalação do Eclipse, juntamente com o Apache UIMA1. O objetivo é usar o Apache UIMA, em uma primeira etapa, para testar a hipótese ilustrada pela Figura 1.


This paper reports the Eclipse installation process along with Apache UIMA1. The goal is to use the Apache UIMA, in a first step, to test the hypothesis illustrated in Figure 1.

aeasd
Figura 1. Modelo a ser testado no Apache UIMA.
Figure 1. Model to be tested in Apache UIMA.


Na figura, (1), representa o modelo AEASD (Autonomous Elements Architecture for Specific Domains) (BRAGA; OMAR; GRANVILLE, 2015), o qual organiza um ambiente de agentes inteligentes com características voltadas para o domínio específico dos Sistemas Autônomos, que povoam a Internet. Presume-se que os elementos inteligentes terão mais autonomia, se conseguirem aprender, ensinar e cooperar através de uma base de conhecimento ou ontologia, (2), local ou remota (como a Wikidata2 e/ou outras). Esta ontologia pode ser construída a partir de bases de dados não estruturadas, (3), desde que se possua as ferramentas adequadas (FAN et al., 2012). Um conjunto de tais ferramentas foi desenvolvido pela IBM (FERRUCCI, 2012) (FERRUCCI et al., 2010), através de uma competente equipe quando da construção do IBM Watson, (5), diante do incrível desafio de vencer humanos no Jeopardy! – existem diversos vídeos no YouTube sobre este evento, que aconteceu em 2011. Há fortes indícios de que com adaptações adequadas, tais técnicas possam ser transportadas para domínios específicos (FERRUCCI; BROWN, 2011), como o domínio de interesse da hipótese a ser testada, (4). Através das técnicas adaptadas, bases intermediárias, (6), poderão ser construídas, sobre as quais novas ferramentas, (7), podem direcionar o conhecimento adquirido no formato adequado, (2). Os elementos inteligentes do modelo AEASD irão interagir com as novas ferramentas adaptadas, (5), e desenvolvidas, (7).


In the figure, (1) represents the AEASD
model (Autonomous Elements Architecture for Specific Domains) (BRAGA; OMAR; GRANVILLE, 2015), which organizes an intelligent agents environment with features focused on the specific area of ​​Autonomous Systems, populating the Internet. It is assumed these smart elements will have more autonomy, if they can learn, teach and cooperate through a knowledge base or ontology, (2), local or remote (such as Wikidata2 and / or others). This ontology can be constructed from unstructured databases, (3), provided that it has the appropriate tools (FAN et al., 2012).
A set of such tools was developed by IBM (FERRUCCI, 2012) (FERRUCCI et al., 2010), through a competent team when the construction of the IBM Watson, (5), facing the incredible challenge to beat humans in Jeopardy! – there are several videos on YouTube about this event, which took place
in 2011. There is strong evidence that with appropriate adjustments, such techniques
can be transported to specific areas (FERRUCCI; BROWN, 2011), as the domain of interest hypothesis to be tested, (4). Through the adapted techniques, intermediate bases, (6), may be built, for which new tools, (7), can direct the acquired knowledge in the proper format, (2). Intelligent elements in AEASD model will interact with new adapted tools, (5), and developed, (7).
.

Neste texto, a preocupação é mostrar, informalmente, a experiência da implementação do Apache UIMA sob o ambiente do Eclipse (MARS.1) em Windows 10, sob Notebook Dual Core (inicialmente) e servir como guia de apoio aos interessados. Posteriormente, outros textos poderão ser produzidos com abordagens focadas no Apache UIMA, como ferramenta de análise dos dados não estruturados dentro do domínio da Infraestrutura da Internet e seus resultados em relação às experiências sobre a hipótese mostrada na Figura 1. A Figura 2, abstratamente, ilustra a tarefa do Apache UIMA em submeter informações (multi modal) do mundo não estruturado, sob um processo de transformação ao mundo dos dados estruturados. Sem mágica, naturalmente.

In this text, the concern is to show informally the experience of implementation of Apache UIMA under the Eclipse environment (MARS.1) in Windows 10, under Notebook Dual Core (initially) and serve as a guide to support interested. Later, other texts can be
produced with approaches focused on the Apache UIMA as unstructured data analysis tool within the Internet infrastructure domain and its results against experience on the hypothesis shown in Figure 1. Figure 2, abstractly, illustrates the Apache UIMA task
to submit information from (multi modal) unstructured world, in a process of transformation to the world of structured data. No magic, of course.

uima-estrutura
Figura 2. O que faz o Apache UIMA8.
Figure 2. What does the Apache UIMA8.

 

… from now on, only in Portuguese…

 

Instalação do Apache UIMA

 

São em sete, o número de etapas3 para se preparar o Apache UIMA para o trabalho a ser executado. Todas elas envolvem diretamente a implementação do Eclipse.

  1. Instalar o Eclipse
  2. Instalar os plugins UIMA no Eclipse
  3. Instalar algumas extensões complementares no Eclipse
  4. Instalar o UIMA SDK
  5. Instalar o código fonte UIMA nos arquivos jar
  6. Instalar o Javadocs do UIMA
  7. Preparar o Eclipse para ver o Código Exemplo

 

Instalação do Eclipse

 

1). Foi instalado o Java SE Develpment Kit (8u66)4

2). Foi instalado o Eclipse “for Java Developers”5, que inclui: Java IDE, cliente GIT, Editor XML, Myliyn, integrador Maven e WindowBulder. Em seguida foi incluído o m2e e o Py IDE. Para as instalações posteriores, veja a documentação6 do Eclipse.

3). Instalados os plugins do UIMA, conforme pode ser visto na Figura 3.

eclipse-uima

Figura 3. Versões dos plugins UIMA instalados no Eclipse.

4). Adicionar a variável de ambiente para o Maven7, recomentado em “One time setup ofr Maven” e “One time setup for Eclipse”. Detalhes nas Figuras 4 e 5.

eclipse-maven

Figura 4. Inclusão da variável de ambiente MAVEN_OPTS (Resultado final)

eclipse-maven2

Figura 5. Visão geral da operação de inclusão da variável de ambiente MAVEN_OPTS.

5). Instalar o UIMA SDK (Apache UIMA Version 2.8.1) disponível em http://mirror.nbtelecom.com.br/apache//uima//uimaj-2.8.1/uimaj-2.8.1-bin.zip . Descompacte-o em qualquer diretório. No meu caso foi em E:apache-uima. Em seguida crie a variável de ambiente %UIMA_HOME% para este diretório. Faça o mesmo para %ECLIPSE_HOME%, para o caminho C:Usersjbeclipsejava-marseclipse.

6). Em seguida executar adjustExamplePaths.bat, no diretório %UIMA_HOME%bin cujo resultado segue abaixo. É preciso ficar atento às quebras de linhas forçadas, para que o texto caiba integralmente.

E:apache-uimabin>adjustExamplePaths.bat
E:apache-uimabin>setlocal
E:apache-uimabin>if "" == "" (set UIMA_JAVA_CALL=java )  
else (set "UIMA_JAVA_CALL=binjava" )
E:apache-uimabin>"java" -cp "E:apache-uima/lib/uima-core.jar" 
org.apache.uima.internal.util.ReplaceStringInFiles 
"E:apache-uima/examples" .xml "C:/Program Files/apache-uima" 
"E:apache-uima" -ignorecase
Ignoring case
Working on file: E:apache-uimaexamplesdataxml
IBM_LifeSciences.xml
Working on file: E:apache-uimaexamplesdataxml
New_IBM_Fellows.xml
Working on file: E:apache-uimaexamplesdataxml
SeminarChallengesInSpeechRecognition.xml
Working on file: E:apache-uimaexamplesdataxml
TrainableInformationExtractionSystems.xml
Working on file: E:apache-uimaexamplesdataxml
UIMASummerSchool2003.xml
Working on file: E:apache-uimaexamplesdataxml
UIMA_Seminars.xml
Working on file: E:apache-uimaexamplesdataxml
WatsonConferenceRooms.xml
Working on file: E:apache-uimaexamplesdeployvinci
Deploy_MeetingDetectorTAE.xml
File modified, number of instances replaced: 1
Working on file: E:apache-uimaexamplesdeployvinci
Deploy_PersonTitleAnnotator.xml
File modified, number of instances replaced: 1
Working on file: E:apache-uimaexamplesdeployvinci
Deploy_XmiWriterWithTutorialTypeSystem.xml
File modified, number of instances replaced: 1
Working on file: E:apache-uimaexamplesdescriptors
MixedAggregate.xml
Working on file: E:apache-uimaexamplesdescriptors
analysis_engineGovernmentOfficialRecognizer_RegEx_TAE.xml
Working on file: E:apache-uimaexamplesdescriptors
analysis_engineNamesAndGovernmentOfficials_TAE.xml
Working on file: E:apache-uimaexamplesdescriptors
analysis_engineNamesAndPersonTitles_TAE.xml
Working on file: E:apache-uimaexamplesdescriptors
analysis_enginePersonTitleAnnotator.xml
Working on file: E:apache-uimaexamplesdescriptors
analysis_enginePersonTitleAnnotator_WithinNamesOnly.xml
Working on file: E:apache-uimaexamplesdescriptors
analysis_engineRegExAnnotator.xml
Working on file: E:apache-uimaexamplesdescriptors
analysis_engineSimpleEmailRecognizer_RegEx_TAE.xml
Working on file: E:apache-uimaexamplesdescriptors
analysis_engineSimpleNameRecognizer_RegEx_TAE.xml
Working on file: E:apache-uimaexamplesdescriptors
analysis_engineSimpleTokenAndSentenceAnnotator.xml
Working on file: E:apache-uimaexamplesdescriptors
analysis_engineSofaExampleAnnotator.xml
Working on file: E:apache-uimaexamplesdescriptors
analysis_engineUIMA_Analysis_Example.xml
Working on file: E:apache-uimaexamplesdescriptors
analysis_engineXmlDetagger.xml
Working on file: E:apache-uimaexamplesdescriptors
cas_consumerAnnotationPrinter.xml
Working on file: E:apache-uimaexamplesdescriptors
cas_consumerInlineXmlCasConsumer.xml
Working on file: E:apache-uimaexamplesdescriptors
cas_consumerXCasWriterCasConsumer.xml
Working on file: E:apache-uimaexamplesdescriptors
cas_consumerXmiEcoreCasConsumer.xml
Working on file: E:apache-uimaexamplesdescriptors
cas_consumerXmiWriterCasConsumer.xml
Working on file: E:apache-uimaexamplesdescriptors
cas_consumerXmiWriterWithTutorialTypeSystem.xml
Working on file: E:apache-uimaexamplesdescriptors
cas_multiplierSegmenterAndTokenizerAE.xml
Working on file: E:apache-uimaexamplesdescriptors
cas_multiplierSegment_Annotate_Merge_AE.xml
Working on file: E:apache-uimaexamplesdescriptors
cas_multiplierSimpleTextMerger.xml
Working on file: E:apache-uimaexamplesdescriptors
cas_multiplierSimpleTextSegmenter.xml
Working on file: E:apache-uimaexamplesdescriptors
collection_processing_engineMeetingFinderCPE_Integrated.xml
Working on file: E:apache-uimaexamplesdescriptors
collection_processing_engineMeetingFinderCPE_Managed_Unix.xml
File modified, number of instances replaced: 5
Working on file: E:apache-uimaexamplesdescriptors
collection_processing_engineMeetingFinderCPE_Managed_Windows.xml
File modified, number of instances replaced: 5
Working on file: E:apache-uimaexamplesdescriptors
collection_processing_engineMeetingFinderCPE_NonManaged.xml
Working on file: E:apache-uimaexamplesdescriptors
collection_processing_engineMeetingFinderCPE_
NonManagedCasConsumer.xml
Working on file: E:apache-uimaexamplesdescriptors
collection_processing_engineMeetingFinderCPE_WithXmlDetagging.xml
File modified, number of instances replaced: 1
Working on file: E:apache-uimaexamplesdescriptors
collection_readerFileSystemCollectionReader.xml
File modified, number of instances replaced: 1
Working on file: E:apache-uimaexamplesdescriptors
collection_readerXmiCollectionReader.xml
File modified, number of instances replaced: 1
Working on file: E:apache-uimaexamplesdescriptors
flow_controllerAdvancedFixedFlowController.xml
Working on file: E:apache-uimaexamplesdescriptors
flow_controllerMeetingDetectorTAE_AdvancedFixedFlow.xml
Working on file: E:apache-uimaexamplesdescriptors
flow_controllerMeetingDetectorTAE_Whiteboard.xml
Working on file: E:apache-uimaexamplesdescriptors
flow_controllerWhiteboardFlowController.xml
Working on file: E:apache-uimaexamplesdescriptors
soapServiceGovernmentTitleRecognizerService.xml
Working on file: E:apache-uimaexamplesdescriptors
soapServiceNamesAndPersonTitlesService.xml
Working on file: E:apache-uimaexamplesdescriptors
soapServicePersonTitleAnnotatorService.xml
Working on file: E:apache-uimaexamplesdescriptors
soapServiceSimpleNameRecognizerService.xml
Working on file: E:apache-uimaexamplesdescriptors
tutorialex1RoomNumberAnnotator.xml
Working on file: E:apache-uimaexamplesdescriptors
tutorialex1TutorialTypeSystem.xml
Working on file: E:apache-uimaexamplesdescriptors
tutorialex2RoomNumberAnnotator.xml
Working on file: E:apache-uimaexamplesdescriptors
tutorialex3RoomNumberAndDateTime.xml
Working on file: E:apache-uimaexamplesdescriptors
tutorialex3TutorialDateTime.xml
Working on file: E:apache-uimaexamplesdescriptors
tutorialex3TutorialTypeSystem.xml
Working on file: E:apache-uimaexamplesdescriptors
tutorialex4MeetingAnnotator.xml
Working on file: E:apache-uimaexamplesdescriptors
tutorialex4MeetingDetectorTAE.xml
Working on file: E:apache-uimaexamplesdescriptors
tutorialex4TutorialTypeSystem.xml
Working on file: E:apache-uimaexamplesdescriptors
tutorialex5RoomNumberAnnotator.xml
Working on file: E:apache-uimaexamplesdescriptors
tutorialex6TutorialTypeSystem.xml
Working on file: E:apache-uimaexamplesdescriptors
tutorialex6UimaAcronymAnnotator.xml
Working on file: E:apache-uimaexamplesdescriptors
tutorialex6UimaMeetingAnnotator.xml
Working on file: E:apache-uimaexamplesdescriptors
tutorialex6UimaMeetingDetectorTAE.xml
Working on file: E:apache-uimaexamplesdescriptors
tutorialsearchMeetingIndexBuildSpec.xml
Working on file: E:apache-uimaexamplesdescriptors
vinciServiceMeetingDetectorVinciService.xml
Working on file: E:apache-uimaexamplesdescriptors
vinciServicePersonTitleVinciService.xml
Working on file: E:apache-uimaexamplesdescriptors
vinciServiceXmiWriterVinciServiceWithTutorialTypeSystem.xml
Working on file: E:apache-uimaexamplesresourcesorg
apacheuimaexamplesSourceDocumentInformation.xml

E:apache-uimabin>"java" -cp "E:apache-uima/lib/uima-core.jar" 
org.apache.uima.internal.util.ReplaceStringInFiles 
"E:apache-uima/examples" .classpath "C:/Program Files/
apache-uima" "E:apache-uima" -ignorecase
Ignoring case
Working on file: E:apache-uimaexamples.classpath
File modified, number of instances replaced: 5

E:apache-uimabin>"java" -cp "E:apache-uima/lib/uima-core.jar" 
org.apache.uima.internal.util.ReplaceStringInFiles 
"E:apache-uima/examples" .launch "C:/Program Files/
apache-uima" "E:apache-uima" -ignorecase
Ignoring case
Working on file: E:apache-uimaexamplesrun_configuration
UIMA Annotation Viewer.launch
Working on file: E:apache-uimaexamplesrun_configuration
UIMA CAS Visual Debugger.launch
Working on file: E:apache-uimaexamplesrun_configuration
UIMA CPE GUI.launch
Working on file: E:apache-uimaexamplesrun_configuration
UIMA Document Analyzer.launch
Working on file: E:apache-uimaexamplesrun_configuration
UIMA JCasGen Merge.launch
Working on file: E:apache-uimaexamplesrun_configuration
UIMA JCasGen.launch
Working on file: E:apache-uimaexamplesrun_configuration
UIMA PEAR Installer.launch
Working on file: E:apache-uimaexamplesrun_configuration
UIMA Run AE.launch
Working on file: E:apache-uimaexamplesrun_configuration
UIMA Run CPE.launch
Working on file: E:apache-uimaexamplesrun_configuration
UIMA Start Vinci Service.launch
Working on file: E:apache-uimaexamplesrun_configuration
UIMA Start VNS.launch

E:apache-uimabin>"java" -cp "E:apache-uima/lib/uima-core.jar" 
org.apache.uima.internal.util.ReplaceStringInFiles 
"E:apache-uima/examples" .wsdd "C:/Program Files/
apache-uima" "E:apache-uima" -ignorecase
Ignoring case
Working on file: E:apache-uimaexamplesdeploysoap
Deploy_GovernmentTitleRecognizer.wsdd
File modified, number of instances replaced: 1
Working on file: E:apache-uimaexamplesdeploysoap
Deploy_NamesAndPersonTitles.wsdd
File modified, number of instances replaced: 1
Working on file: E:apache-uimaexamplesdeploysoap
Deploy_PersonTitleAnnotator.wsdd
File modified, number of instances replaced: 1
Working on file: E:apache-uimaexamplesdeploysoap
Deploy_SimpleNameRecognizer.wsdd
File modified, number of instances replaced: 1
Working on file: E:apache-uimaexamplesdeploysoap
Undeploy_GovernmentTitleRecognizer.wsdd
Working on file: E:apache-uimaexamplesdeploysoap
Undeploy_NamesAndPersonTitles.wsdd
Working on file: E:apache-uimaexamplesdeploysoap
Undeploy_PersonTitleAnnotator.wsdd
Working on file: E:apache-uimaexamplesdeploysoap
Undeploy_SimpleNameRecognizer.wsdd
E:apache-uimabin>

7). Execute no prompt, eclipse -clean, para carregar o Eclipse.

8). Inclua o caminho %UIMA_HOME% no Eclipse, como mostra a Figura 5.

eclipse-path

Figura 5. Incluindo o %UIMA_HOME% no Eclipse.

9). Crie o novo projeto exemplo do UIMA executando os passos, no Eclipse:

  • Selecione o menu “File” e “Import”
  • Selecione “General/Existing Project into Workspace” e clique no botão “Next”.
  • Clique em “Browse” e indique o diretório %UIMA_HOME%.
  • Clique em “Finish”. Isto irá criar um novo projeto no Eclipse, chamado “uimaj-examples”. Realmente, não houve erro de compilação, como mostra a Figura 6.
eclipse-noproblem

Figura 6. Nenhum erro de compilação do projeto exemplo do UIMA

Após estes passos, o código fonte do UIMA já foi inserido no ambiente do Eclipse, incluindo o Javadocs, não sendo necessário cumprir outras atividades. Portanto, o Eclipse está pronto para o UIMA! Cumpriu-se assim, todas as sete etapas da constantes da seção “Instalação do UIMA”, como mostra a Figura 7.

eclipse-pronto

Figura 7. Visão parcial do Eclipse pronto para o UIMA.

 

Comentários Finais

 

Esta iniciativa de preparar o Apache UIMA para ser testado foi motivado pela disciplina Cognição e Aplicações Computacionais [turma 01A] – 2015/2, ministrada pelos Profs. Dr. Nizam Omar e Dr. Ismar Frango Silveira, no Programa de Pós Graduação em Engenharia Elétrica e Computação, da Universidade Presbiteriana Mackenzie, São Pauo, aos quais expresso meus agradecimentos pela oportunidade.

 

Referências

 

BRAGA, J.; OMAR, N.; GRANVILLE, L. Z. Uma proposta para o uso de elementos inteligentes em domínios restritos da infraestrutura da internet. In: Anais CSBC 2015 – WPIETFIRTF. Recife, Pernambuco, Brasil: [s.n.], 2015.

FAN, J. et al. Automatic knowledge extraction from documents. IBM Journal of Research and Development, IBM, v. 56, n. 3.4, p. 5–1, 2012.

FERRUCCI, D.; BROWN, E. AdaptWatson: A methodology for developing and adapting Watson technology. Armonk, NY, 2011. 8 p. Disponível em: <http://domino.research.ibm.com/library/cyberdig.ns/papers/29303F8DC7A92FC9852579F30049ABCD&gt;.

FERRUCCI, D. A. Introduction to “This is Watson”. IBM Journal of Research and Development, IBM, v. 56, n. 3.4, p. 1–1, 2012.

FERRUCCI, D. et al. Building Watson: An overview of the DeepQA project. AI Magazine, v. 31, n. 3, p. 59–79, 2010.


  1. Apache UIMA. http://uima.apache.org/index.html
  2. Wikidata. https://www.wikidata.org/wiki/Wikidata:Main_Page
  3. UIMA Overview & SDK Setup. http://uima.apache.org/d/uimaj-current/overview_and_setup.pdf
  4. http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  5. http://www.eclipse.org/users/
  6. http://help.eclipse.org/mars/index.jsp
  7. http://uima.apache.org/one-time-setup.html#maven-setup
  8. Adaptation of Figure 2.1 available in http://uima.apache.org/d/uimaj-current/overview_and_setup.pdf

O App da Anatel e o futuro


 

Introdução

 

O app da Anatel, lançado neste mês de junho de 2015 foi um avanço enorme! A experiência deve agradar aos usuários brasileiros (gregos e troianos) e, sem nenhuma dúvida, um sucesso aplaudido.

Esta demonstração explícita por parte de Anatel, de que o usuário é o componente mais importante da governança da Internet brasileira traz um enorme alento e deve ser ampliado, em futuro próximo. Em outras palavras, deve se tornar mais sofisticado no sentido de facilitar mais ainda a vida do usuário. Por exemplo, o processo de autenticação não é uma boa alternativa, pois além de incômodo, pode trazer quebras indesejáveis de segurança e tende a produzir ações com resultados imprecisos.

Mas, o app foi um enorme avanço e deve ser usado intensivamente. Os efeitos colaterais indesejáveis não são tão graves, neste momento.

 

O futuro do app da Anatel

 

Existem inúmeras possibilidades de evolução do app da Anatel. É pouco provável que qualquer alternativa, que não o uso de agentes inteligentes ou Elementos Inteligentes (IEs), cause impacto com resultados efetivos para o usuário final. Uma proposta é a aplicação do modelo ANARD (Autonomous Network Architecture over Restricted Domains) representado na Figura 1 e com detalhes neste PDF.

 

Modleo ANARD (Versão abstrata)

Figura 1. Modelo ANARD (abstrato). O x é o ASN. Fonte: aqui.

 

A tarefa de desenvolvimento sairia da ANATEL e passaria para as operadoras de trânsito. Cada app, hospedado no cliente da operadora faria parte da colônia de IEs.

Embora, há mais de dois meses atrás eu tenha feito referência, em minha qualificação no Mackenzie, a algo semelhante ao app (inteligente) lançado pela ANATEL, o exemplo de aplicação do modelo foi sobre o IRR (Internet Routing Register), com sucesso suficiente e animador para escrever este texto e exibir a proposta.

O caso de uso da aplicação sobre o IRR é mostrado na Figura 2.

 

irr-caso-de-uso-do-anard

Figura 2. Componentes do ANARD em aplicação sobre o IRR.

 

A aplicação foi feita na linguagem shakespeariana Python!

Um efeito colateral interessante surgiu da aplicação. O IE Controlador, que possui o controle total sobre o domínio restrito, induz e facilita a criação de um mecanismo de segurança que se resolveu chamar DMS (Dark Matter Security). Sabe-se que inúmeros elementos inteligentes existem no domínio restrito, mas não se sabe onde eles se encontram. A Figura 3 ilustra este mecanismo.

 

dms

Figura 3. O mecanismo DMS. X:0 é o IE Controlador.

 

Os números de 2012 do blogue Infraestrutura da Internet

Este blogue teve 26.000 acessos em 2012. Clique na figura abaixo caso se interesse em ver as estatísticas elaboradas pelo WordPress.com, .

Objetos de Projeto Estendidos (OPE)

When knowledge is involved,
it is best to bring the Internet to the user,
instead of taking the user to Internet.

 

Uma dificuldade na Infraestrutura da Internet

 

Em tudo o que tem sido escrito sobre BGP neste blogue há sempre uma observação persistente: BGP é complexo. Na realidade, a complexidade do BGP está na sua abrangência e sua perspectiva de mudar constantemente. Mas, há outro componente importante quando se deseja implementar o BGP em roteadores de borda: a topologia.

Vamos a um exemplo. Recentemente, um Provedor consultou-me sobre uma topologia com três (3) trânsitos: dois com uma operadora A e um terceiro com a operadora B. A topologia parecia ser a mostrada na Figura 1, abaixo.

 

Figura 1. Três trânsitos sendo dois com a mesma operadora.

 

Este texto não propõe a implementação da topologia acima, com o BGP. Ele trata de outro assunto, correlato. Entretanto, vou dar algumas dicas sobre a implementação. Até aquele momento, nunca tinha passado por experiência semelhante. Ao entrar no roteador do Provedor foi curioso observar o fato de que a operadora A recomendou que se estabelecesse dois empareamentos com cada um de seus enlaces de trânsito: um com a tabela de roteamento completa e outro com tabela de roteamento parcial. Incluindo o empareamento da Operadora B haviam cinco sessões BGP ativas. O roteador estava em produção e alguns comportamentos ruins eram incompreensíveis. A primeira visão da implementação, sempre segue o instinto (da suposta experiência): (a) a Operadora A entende mais do que qualquer um e, (b) um ajuste nos filtros poderia resolver o comportamento ruim (abstraindo-se do fato do BGP ser complexo). Duas premissas completamente equivocadas. Revendo a presunção inicial, observou-se que, na realidade havia uma novidade na topologia: dois trânsitos com a mesma operadora. Google, eis a saída! Nesta hora é que você vê como o Google cansa!!! Depois de algum tempo, a luz no final do túnel veio com a RFC22701. Esta RFC, de 1998 é um pouco confusa, pois trata de topologias bem mais simples sem as variações possíveis do futuro atual. Por exemplo, a topologia poderia não ser a da Figura 1, exatamente. Em outras palavras, o trânsito poderia estar vindo através de um único roteador da Operadora A, ou chegando em uma única porta do roteador do Provedor. Ou ainda, alguma outra variação do tema. No Google, eficaz sintáticamente, infelizmente não consegue interpretar a semântica, ainda. Quem propõe a solução para implementar BGP em uma topologia destas é o primeiro autor da RFC2270, J. Stewart. No romance do BGP, escrito por ele2, Capítulo 3 há uma completa descrição de todos os comportamentos do BGP em casos como estes, incluindo balanceamento. Em particular, a Fig. 3.2, na página 78, Stewart explica em detalhes um multi-homed com uma mesma operadora, de forma didática!

Mas o erro mais grave da dúvida produzida pela topologia da Figura 1 é que, ao lidarmos com o BGP associado a uma topologia qualquer, não é por hábito fazer um projeto, minimamente cuidadoso, que permita o entendimento do comportamento esperado. Em outras palavras, não se pensa sobre o problema. Isto tem acontecido sistematicamente com os pequenos e médios provedores. Por outro lado, observa-se que a falta de pensar e/ou a falta de projeto são recorrentes, mesmo tendo do seu lado as grandes operadoras brasileiras. A Operadora A da Figura 1 é uma enorme de uma operadora. Por outro lado, o Google demorou demais em ajudar a encontrar uma saída.

 

Uma dificuldade em outras áreas de projetos

 

Há alguns meses atrás fiquei dependendo de uma informação relacionada com seguradoras que estariam dispostas a segurar riscos fortuitos. Suponha que você tenha um projeto cujo objetivo é a realização de um evento em uma determinada localidade. Um evento de grande porte, com um orçamento considerável. Imagine que na véspera do evento aconteça (digamos, uns 3 dias antes), uma tempestade de enormes proporções, que arrase a cidade e cause danos materiais irreversíveis (neste exemplo, não há perdas de vida, felizmente), causando uma perda total do evento. Qual seguradora seria capaz de segurar a perspectiva de uma perda destas? Procurei, procurei, googlei, telefonei, mandei e-mails e não consegui uma resposta. Finalmente entrei no Linkedin e coloquei uma pergunta relacionada, em um grupo de projetos. Houve um debate muito interessante, até que alguém passou o nome de uma seguradora que bancou um risco semelhante, na cidade de New Orleans e acabou pagando o prejuízo causado a um projeto semelhante que iria acontecer por lá. Desta forma, a dúvida e a ausência do seguro foram resolvidas.

Para uma equipe de projetos, a indisponibilidade de competências para descrever, detalhar ou desenvolver partes do projeto (ou mesmo o projeto completo) é a principal motivação para recorrer a opiniões especializadas.

 

Perdas de tempo em projetos

 

No primeiro exemplo, do BGP e topologias, o problema maior é a falta de pensar, com certa antecedência sobre a implementação de um trânsito com a Internet. Mas, esta questão, com a maturidade será resolvida e em breve teremos projetos sendo desenvolvidos para preparar devidamente os roteadores de borda ou até mesmo as redes internas que estão se tornando, também, complexas. Mesmo que sejam pequenos Sistemas Autônomos. Neste momento, o administrador (ou preposto) de um Sistema Autônomo passa a ser um gerente de projetos.

No segundo exemplo, a questão de segurar perdas fortuitas foi resolvida por um membro de um projeto completamente dissociado do meu projeto. Por acaso expor a dúvida em um grupo de alto nível do Linkedin foi um sucesso, embora a iniciativa tenha demorado um pouco para ser tomada.

Geralmente, dentro de uma mesma empresa, obter informações úteis ou fundamentais para projetos não levam muito tempo, porque há sempre disponível o chamado “golden book”, que vai acumulando informações úteis a cada término de um projeto. Entretanto, intergrupos desconexos de projetos, isto não acontece. Um provedor, dificilmente troca informações com outros Provedores. Não por considerarem as informações preciosas ou de valor competitivo, mas por falta de oportunidades ou de local adequado para fazê-los. Geralmente, as informações são trocadas quando alguém, em uma lista de e-mail ou fórum apropriados provoca a questão. Não é, portanto, usual alguém colocar em algum fórum ou lista, por livre e espontânea vontade: “o problema do multi-homed para um mesmo operador de trânsito resolve-se assim e assado…”. Da mesma forma, porque um membro ou gerente de projeto iria divulgar o nome de uma seguradora de riscos fortuitos, se não há um ambiente apropriado para fazê-lo?

 

Objetos de Projeto Estendidos

 

Se houvesse um ambiente apropriado, seguro, confiável e com um mecanismo de pesquisa mais “inteligente”, do que os disponíveis atualmente, a cooperação fluiria espontâneamente. Por várias razões, algumas relacionadas abaixo:

  • Pelo natural espírito de cooperação do ser humano, interessado e consciente.
  • Pela garantia de autoria da informação.
  • Pela perspectiva de auxiliar no crescimento de um repositório de sabedoria útil para projetos, em geral, do qual todos se beneficiarão.
  • Pela rapidez de acesso à informação.
  • Pela possibilidade de manter informações pessoais e privativas.
  • Pela garantia de intervir no ambiente garantindo a qualidade da informação.
  • Pela existência de mecanismos de pesquisa semântica, mais próximos do pensamento humano.

 

A disponibilidade de informações (textos, gráficos, imagens, videos, etc.), tratadas neste documento são armazenadas no que se convencionou chamar Objetos de Projeto Estendido (OPE). Existem dois tipos de OPEs: público e privado. Um OPE é público se ele pode ser compartilhado com terceiros. Um OPE é privado se ele não puder ser compartilhado com terceiros. Os OPEs são agrupados (ou armazenados) em um ambiente chamado de ROPE (Repositório de Objetos de Projeto Estendidos). Existem inúmeros ROPEs, cada um deles hospedados no computador do usuário interessado (o “dono” do ROPE). Um ROPE, possui uma interface humano-computador que, de forma independente classifica, pesquisa e visualiza os OPEs armazenados, além de permitir operações de criação/inclusão e demais atividades necessárias ao tratamento de um OPE isoladamente ou em conjunto. OPEs podem ser enviados ou recebidos de um Sistema de Gerenciamento de Projetos (SGP), através de uma interface apropriada que funcionaria da forma representada na Figura 2.

 

Figura 2. OPE e o Sistema de Gerenciamento de Projetos

 

Se o SGP possuir as facilidades adequadas, os recursos de WEB Semântica serão utilizados, mais apropriadamente, ontologias7 e as propostas da W3C relacionadas com a OWL (Web Ontologoy Language)6. Em futuro próximo, outro artigo abordará este tema, em detalhes, oportunidade em que será mostrado que ontologias podem ser transformadas em XML e vice-versa, aperfeiçoando a proposta da Figura 2. Uma ótima e rápida leitura pode ser encontrada no artigo da Scientific American8 e com maior profundidade, um texto clássico e completo em [9].

Cada OPE possui uma medida de aceitação, denominada assimetria e pode sofrer alterações por terceiros, no sentido de aprovar, reprovar ou identificar a relevância. Assimetria é uma medida de qualidade de um OPE. Por outro lado, o conteúdo de um OPE pode, também, sofrer alterações. Neste caso, o repositório manterá um histórico de tais alterações, desde o OPE original até o atual, incluindo cada uma das contribuições efetivamente aceitas, aprovadas ou reprovadas, e relacionadas com o OPE. A técnica usada para que este procedimento ocorra adequadamente é a procedência de dados, a qual garante que um OPE conterá a descrição de “como”, “quando”, “onde”, “porque” os dados foram obtidos e “quem” os obteve. Cada um dos componentes históricos de uma OPE, caracterizado pela procedência de dados, também tem o sua respectiva assimetria associada, que representa uma medida de aprovação/reprovação e relevância da nova alteração OPE. Por outro lado, a informação oferecida em um OPE pode ou não ter um valor financeiro para que ela se torne visível.

A contribuição da procedência de dados foi obtida da interessante experiência sobre imagens, proposta por Braga4. A noção de assimetria tem sido experimentada e abordada neste blogue em diversas oportunidades, como medida representativa de distorções sociais, de pessoas, entre outras.

 

Caracterizando o tratamento do ROPE

 

A Figura 3 é um esboço preliminar de um diagrama (que parece, mas não é uma diagrama de caso de uso!), caracterizando os pontos mais importantes. Na sequência uma abordagem, também preliminar, sobre o escopo do sistema. A formalização definitiva dependerá de alguns componentes ainda pendentes no âmbito acadêmico em que o autor está atualmente engajado.

 

Figura 3. Diagrama preliminar do sistema de tratamento do ROPE (Fonte: autor).

 

Os desafios de pesquisa avaliados a partir da abstração exposta na Figura 3, são:

  1. A medida de assimetria e as intervenções históricas (procedência) sobre um OPE exigem autenticação do usuário, a qual irá configurar sua validação. Também, a assimetria poderá indicar a permanência ou não de um OPE no repositório distribuído ou no repositório local, sem que haja intervenção humana direta, com base em critérios pré-definidos.
  2. O ROPE deverá estar disponível na Internet, da forma descrita em (c). A disponibilidade de um ROPE é ativa ou passiva. Uma disponibilidade é ativa, se o ROPE está hospedado em um IP público (IPv4 e/ou IPv6), e a disponibilidade é passiva se o IPv4 e/ou IPv6, no qual ele se hospeda é privado (não está visível na Internet). IPv6 é a alternativa preferencial.
  3. Não pode haver um sistema central, característica do paradigma cliente/servidor. Apesar de este paradigma criar uma imensa facilidade para o usuário, uma vez que o acesso poderia ser feito por qualquer navegador (cliente da WEB), ele traria um componente de custo que poderia inviabilizar sua implementação ou mesmo exigir um patrocínio, para garantir servidores e seus respectivos sistemas de segurança associados. Além do mais, tal alternativa afrontaria o princípio do domínio local.
  4. Os mecanismos de pesquisa e acesso ao ROPE que é, na verdade, uma base de conhecimento deve seguir as recomendações propostas nos padrões W3C e em técnicas derivadas.
  5. A quebra do paradigma cliente/servidor exige um mecanismo que permita que os ROPEs sejam distribuídos, isto é, sejam hospedados nas máquinas de cada usuário interessado. Tal predisposição leva às seguintes preocupações:
    1. Fácil implementação e uso de linguagem universal independente do sistema operacional utilizado pelo usuário. Preferencialmente em código objeto com versão bem definida onde, o sistema operacional é uma completa abstração.
    2. Cada ROPE deve ter uma identificação única sempre associada a seu usuário. Está identificação será um número de 32 bits permitindo até 4.294.967.296 repositórios diferentes. Tal identificação pode ser obtida através de qualquer repositório ativo (sempre o mais próximo do usuário, preferencialmente).
    3. Disponibilidade de mecanismo que permita atualização do(s) procedimento(s) associado(s) à operação local do ROPE. Por exemplo, o código objeto dito em (i).
    4. Atualização do repositório de OPE, em tempo real, que não poderá usar qualquer SGBD (Sistema de Gerenciamento de Base de Dados). O uso de um SGDB implicaria em complexidade adicional à implementação. Tal imposição leva à criação de representações de arquivos (incorporando XML, RDF, …) sob uma estrutura de diretórios locais, em texto ou outro formato, bem como qualquer outro tipo de informação (como por exemplo, aquelas necessárias ao mecanismo de autenticação).
    5. O projeto deve prever a ubiquidade, e usar recursos pervasivos.
    6. As propriedades ubíquas e pervasivas implicam na necessidade de mecanismo de cooperação entre os ROPEs disponíveis. A propriedade pervasiva somente poderá ocorrer em ROPEs ativos. Neste caso, o proprietário do ROPE pode autorizar ou não, terceiros usarem seu repositório para atender tal demanda.
    7. Por fim, um ROPE deve ser autônomo, com todas as facilidades e demandas disponíveis localmente.
  6. Mecanismos de criptografia adequados e transparentes aos usuários para garantir a segurança a todos os requisitos exigidos.
  7. O OPE deve ser caracterizado, também, pela sua aplicação às recomendações do PMBOK5, suas seções e capítulos. Consequentemente, deverá atualizar as características recomendadas pelas novas versões de padronizações propostas pelo PMI. Na hipótese de ocorrerem mudanças fundamentais na estrutura do PMBOK de referência, o OPE deverá manter histórico referencial.
  8. Os ROPEs devem ser identificados com garantia de autonomia. O mecanismo de cooperação (item d, subitem v), deve propagar tais informações para outros repositórios. A princípio, o mecanismo de propagação seguirá um esquema conhecido por empareamento (peering). Em outras palavras, um repositório OPE tem um ou mais empareados (peers).
  9. Cada empareado age ativamente (e de forma autônoma), no sentido de atualizar seus ROPEs, das seguintes maneiras:
    1. Cada ROPE está disposto a receber e enviar atualizações de um ou mais empareados, quando seu hospedeiro for ativo (item b);
    2. Um ROPE busca e envia atualizações em um ou mais empareados, previamente conhecidos, quando seu hospedeiro for passivo (item b).
  10. ROPEs empareados possuem um protocolo de relacionamento que permita a troca segura de informações. Tal protocolo é caracterizado por um autômato finito e seguirá os exemplos mais eficazes e simples, disponíveis na literatura.
  11. Um ROPE empareado que tenha sofrido uma alteração comunica-se com todos os seus empareados conhecidos com o objetivo de atualizá-los.
  12. Um OPE pode ter um custo associado à informação que ele está disponibilizando. Baseado na descrição objetiva do conteúdo do OPE pode-se decidir pelo pagamento com regras bem estabelecidas, inclusive uso de cartões de crédito. Neste caso, um mecanismo de pagamento deverá estar disponível para acesso imediato via o próprio OPE. A previsão de mecanismos de segurança descritas no item (e) torna factível esta proposição.

Vale lembrar, que o BGP é uma implementação que quebra o paradigma cliente/servidor (o que não é uma novidade), e usa a Internet para criar os ambientes de redes autônomas. Aliás, melhor seria afirmar que as implementações de BGP constroem a Internet.

Ademais, não é uma proposta de um sistema de relacionamento. Os ROPEs não possuem a identificação de seus proprietários, muito embora os OPEs e seus históricos, sim. Neste último caso, se o autor do OPE ou histórico, assim o desejar. Isto não configura o anonimato pois só se pode criar ou alterar um OPE se existir um proprietário de ROPE bem identificado.

Com referência à metodologia há fortes indícios que levam às recomendações propostas por Eeles e Crips3.

 

Observações finais

 

O trabalho deve ser desenvolvido em três etapas, a saber:

  1. Definição do problema: é a etapa em que o refinamento do texto acima irá acontecer, com a especificação do mecanismo de bases de dados distribuídas, as relações ubíqua e pervasiva. Formalização do esquema de mensagens e o autômato finito das conexões dos repositórios entre si. Adicionalmente, a especificação do modelo da base da dados do ROPE, através de uma metalinguagem.
  2. A descrição geral do sistema e suas relações com o PMBOK: etapa que irá descrever todo o sistema, com os detalhes das especificações e os componentes teóricos envolvidos. Os mecanismos de arbitragem das medidas de aceitação (assimetrias). Os tipos de OPEs possíveis e seus formatos relacionados com a estrutura do PMBOK. A proposta da linguagem de programação com base em comparações específicas.
  3. A evolução: propostas de estudos e pesquisas que possam viabilizar a implementação, testes de protótipos e fortalecimento de fragilidades a serem identificadas. Esta etapa está fora do escopo da proposta de trabalho inicial, que representam os itens (1) e (2), acima.

Referências

 

  1. RFC2270, Using a Dedicated AS for Sites Homed to a Single Provider J. Stewart, T. Bates, R. Chandra, E. Chen [ January 1998 ] (TXT = 12063) (Status: INFORMATIONAL) (Stream: IETF, Area: rtg, WG: idr)
  2. John W. Stewart III. (1999). BGP4: Inter-Domain Routing in the Internet. Addison-Wesley.
  3. Peter Eeles e Peter Cripps. (2012, Second Printing). The process of software architecting. Addison-Wesley.
  4. Juliana Cristina Braga. Procedência de Dados: Teoria e Aplicações ao Processamento de Imagens. 2004. 110 f. Tese de Doutorado do Curso de Pós-Graduação em Computação Aplicada. INPE, São José dos Campos, 2007.
  5. PMI. Um guia do conhecimento em gerenciamento de projetos (Guia PMBOK), 4a. edição, 2008
  6. W3C. OWL Web Ontology Language Guide. W3C Recommendation 10 February 2004. Disponível em: http://www.w3.org/TR/owl-guide/. Acessado em 16/12/2012.
  7. NOY, N.; MCGUINNESS, D. Ontology development 101: A guide to creating your first ontology, 2001. Disponivel em: http://liris.cnrs.fr/alain.mille/enseignements/Ecole_Centrale/What is an ontology and why we need it.htm. Acessado em 20/12/2012.
  8. BERNERS-LEE, T. I. M.; HENDLER, J.; LASSILA, O. R. A. The Semantic Web will enable machines to. Scientific American, n. May, p. 1-4, 2001. Disponível em http://www-sop.inria.fr/acacia/cours/essi2006/Scientific%20American_%20Feature%20Article_%20The%20Semantic%20Web_%20May%202001.pdf
  9. TRUSZKOWSKI, W.; BREITMANN, K. K.; CASANOVA, M. A. Semantic Web: Concepts, Technologies and Applications. [S.l.] Springer-Verlag, 2007.

 

Na sequência: Máquinas de estado finito: Parte Prática: MEF do BGP

%d blogueiros gostam disto: