MAC499 - Trabalho de Formatura Supervisionado

 
Aluno:  Cleber da Costa Oliveira
No USP:  2871681
E-mail:  cleber@linux.ime.usp.br
Orientador:  José Coelho de Pina


 
1. Introdução
2. Centro de Computação Eletrônica (CCE)
3. Projetos e Prazos
4. Responsabilidades
5. Trabalho em equipe
6. Relacionamento com os superiores e colegas
7. Desafios, alegrias e frustrações
8. Relevância do BCC para o estágio
9. Conclusões
10. Bibliografia

 

1. Introdução

Meu trabalho de formatura é baseado na experiência que tive durante 10 meses (de 19 de junho de 2000 até 20 de abril de 2001) como estagiário na área de Suporte técnico no CCE/USP (Centro de Computação Eletrônica da USP). No decorrer desta monografia falarei um pouco sobre os tipos de trabalho que fiz, a relação do que aprendi com o BCC, o relacionamento com meus colegas de trabalho, minhas experiências e o que penso sobre tudo isso.   Voltar

2. Centro de Computação Eletrônica (CCE)

O CCE foi criado em 1962 e chamava-se na época Centro de Cálculo Numérico pertencente à Escola Politécnica. O primeiro computador instalado foi um IBM1620, o primeiro em universidades paulistas. Os alunos desta Escola o utilizavam para a disciplina Cálculo Numérico.
Em 1963 o Centro de Cálculo Numérico desligou-se da Escola Politécnica e passou a pertencer ao Instituto de Pesquisas Matemáticas (IPM). A partir deste ponto, o CCE passou a chamar-se Centro de Computação Eletrônica.
Em 1971, o CCE tornou-se um órgão autônomo dentro da USP ligado à Reitoria.
Hoje em dia possui mais de 60 computadores e conta com o apoio de aproximadamente 200 funcionários.
 
Estas são algumas de suas funções:
 
-> papel de empresa coordenadora executiva de informática;
-> cuida da parte de comunicação de dados da USP;
-> gerencia a USPnet, a rede computacional da universidade;
-> apóia pesquisadores que necessitam de recursos de computação de alto desempenho para desenvolvimento de trabalhos;
-> presta serviços de informática a docentes, alunos ou pesquisadores englobando correio eletrônico, acesso a USPnet por linha discada e apoio ao uso de ferramentas e ambientes. Voltar

3. Projetos e Prazos

Eu fiz muitas coisas no CCE mas há três projetos nos quais eu trabalhei e que considero mais importantes. Eles são :

A) Queda dos links

O projeto consistia em criar um formulário que receberia dados sobre a queda de alguma rede da USP e geraria uma página na Web com estes dados em uma tabela.

Minha chefe chegou um dia na sala dos estagiários e me pediu para que fizesse o trabalho, já que eu não tinha participado de nenhum outro projeto (tinha mal chegado lá!). Como ela percebeu que o trabalho que teria era grande, ela escolheu então a Tessie Ikemori para trabalhar comigo.

No início não sabíamos direito o que era para fazer pois nossa chefe chegou apenas dizendo que precisávamos fazer um relatório sobre a queda dos links. Para mim, dizer queda dos links não significava nada. Começamos a fazer perguntas a ela e, depois de algum tempo, percebemos que "relatório sobre a queda dos links" significava gerar uma página na Web com dados sobre a situação atual da queda de alguma rede da USP. Quem iria digitar os dados era uma programadora do CCE chamada Kimiko.

Começamos, então, a pensar em uma possível solução. Uma que veio e era natural seria utilizar algum banco de dados que guardasse os dados e que quando alguém quisesse fazer uma consulta através da página, ela seria feita através de uma query em SQL. Chegamos com esta idéia à nossa chefe mas ela descartou dizendo que queria apenas que guardássemos em arquivos texto. A nossa consulta a estes arquivos seria feita através de busca usando Perl. Veja no item 7. Desafios, alegrias e frustrações minha frustração com relação a isso.

A primeira coisa que fizemos foi criar o formulário. O fato aqui é que, para fazê-lo e conseguir guardar os dados em arquivos, não é possível usar apenas código em HTML. O que devemos fazer é imprimir (usando Perl) o código HTML que cria o formulário . Assim, poderemos receber os dados e salvá-los abrindo e fechando arquivos.

Então, o programa em Perl que imprimia o formulário (o código em HTML) e guardava os dados nós fizemos. Mas lembrando para quem estiver lendo e queira aprender, todo arquivo em Perl (.pl) que serve para mostrar página HTML deve ser colocado em um diretório especial (o cgi-bin).
Bom, depois desta fase faltava ainda fazer a parte de consulta a estes dados.
Para isto, fizemos um outro programa em Perl que imprimia a página em HTML e, de acordo com o que era escolhido, fazia a busca no diretório onde estavam os arquivos com os dados.
Aqui abaixo está a página que fizemos para fazer a busca.
 


 

É possível ver que a busca era feita tanto por período escolhido como por instituto (cada rede). Os dados que eram registrados sobre cada rede nós dividíamos em duas partes: Concluídos ou Pendentes. Concluídos queria dizer que o problema já tinha sido resolvido e Pendentes queria dizer que não.

Então é isto. Este programa, hoje em dia, ainda está sendo utilizado no CCE. E para quem deseja ver mais, visite a página do CCE clicando aqui.

B) Sistema de matrícula

Este projeto consistia em configurar três computadores com Linux e Webserver's Apache para acesso via browser e que funcionassem no esquema 1-2 : um é a porta de entrada e os outros dois são os que rodam propriamente o sistema de matrícula.

Estávamos no fim do ano retrasado quando a chefe chegou com este projeto nos pedindo urgência. Ela o queria pronto até o dia 5 de Janeiro. Começamos então. Havia três máquinas disponíveis no CPD. Instalamos Slackware. Esta parte foi até rápida, já que fazemos isto sempre no CCE. O problema foi instalar o Apache.
Depois de muito trabalho conseguimos instalá-lo seguindo o manual de instalação. E junto com ele instalamos o mod-perl para habilitar suporte ao Perl e mod-ssl para habilitar criptografia com chaves públicas, utilizando a porta TCP 443 (ou https ). Mas para que realmente funcionasse era necessário instalar o daemon dele (httpd) . Melhor explicando, o daemon nada mais é que o gerenciador do aplicativo. Ele quem faz o software funcionar e fica rodando em background o tempo todo.
Outra coisa que eu poderia explicar é o fato de que abrir a porta TCP 443 não implica que temos que fechar a porta default dele que é a 80 . As duas podem estar abertas e tanto você poderá acessar as páginas www por http ou por https .

Bom, passado estes problemas o próximo passo era fazer a configuração do esquema 1-2 (para nós não tinha sido especificado fazer nenhum software de matrícula mas apenas deixar as máquinas prontas para a sua instalação).
Para esta parte, começamos a ler textos que falavam sobre virtual host. Virtual host é como o próprio nome diz que seria um computador (um host) com endereço virtual. Como funciona isto?
No computador que funcionaria como porta de entrada, nós configuraríamos o redirecionamento para os outros dois com nomes quaisquer (ex: jupiter.usp.br). Bom, quando o usuário entrasse com o endereço (ex: sistemas.usp.br/jupiterweb), nós verificaríamos que "sistemas.usp.br/jupiterweb" tem como endereço virtual "jupiter.usp.br". Para redirecionar, era atribuído ao endereço virtual o IP correto do computador.
Aqui está o esquema de como as máquinas estariam dispostas:

Uma pena foi que a Reitoria estava com pressa demais. Assim, neste ponto, tivemos que entregar o que já tínhamos feito. Faltou exatamente esta parte de implementar o esquema 1-2 .

C) Estatística do fluxo de e-mails da spider

O projeto consistia em monitorar de hora em hora a quantidade de e-mails que chegavam e eram mandados para depois ,ao fim do dia, montar o gráfico do fluxo de e-mails e saber qual é o horário de maior fluxo.

Um programa pronto chamado mailstat "olhava" nos arquivos de log o fluxo de e-mails e gerava uma saída com os dados apresentados. Nosso trabalho foi criar um script que "olhava" essa saída filtrando apenas os dados que nos interessava e que guardava sempre em arquivos texto. Mas para isso, era necessário que o Sistema Operacional (rodando Linux) executasse essa tarefa a toda hora e não nós. Então, tivemos que mexer no cron do Linux para agendar essa tarefa.
Para a parte de gerar o gráfico, surgiu a questão : que ferramenta utilizar?
Nossa solução, em um primeiro momento, foi querer usar um módulo que existe para Perl chamado Tk já que estávamos programando em Perl.

Só uma observação que eu tenho a fazer é que exatamente neste dia eu estava deixando o CCE. Então, eu fiz, junto com eles, o esqueleto do programa que era o script que guardava os dados filtrados em um arquivo texto e colocá-lo no cron. A parte gráfica eu não cheguei a implementar porque saí antes mas esta parte foi até simples (como o analista do CCE mesmo falou). Ele usou um programa chamado RRDTool (Round Robin Database) que gera os gráficos com os dados que quiser.

Aqui está o gráfico do dia 3 de dezembro de 2002. Você pode observar que há picos de mensagens sendo mandadas e recebidas com sucesso (às 9:10hs próximas de 1700 mensagens!), outras que não foram entregues ainda (verde) e outras que não conseguiram ser entregues (vermelho).

Se quiser ver e acompanhar melhor, visite a página : Estatística do Sistema de e-mail .
  Voltar

4. Responsabilidades

No início, eu não tinha muito o que fazer. Passaram-me, como forma de aprendizado, instalar Solaris em uma máquina e perguntar caso não soubesse algo. Então, não tinha praticamente nenhuma responsabilidade. Com o passar do tempo, até porque fui ganhando experiência, começaram a me passar coisas para fazer. Assim, a minha responsabilidade era de mostrar serviço e entregar o que havia sido pedido.
Mas eu fui além disso. Eu me dedicava totalmente ao que tinha que fazer e quando terminava, procurava algo mais para fazer, às vezes sem a chefe saber.

Uma certa vez a chefe me pediu para verificar nas máquinas do CPD se um programa estava mesmo rodando e arrumar possíveis erros. Quando ela me pediu isso, eu disse a ela que já havia feito e ela elogiou bastante. Por ela ter percebido isso outras tantas vezes anteriores, no mesmo dia, mais tarde, ela me chamou e disse por eu ser assim responsável ela estaria me promovendo ao cargo de Chefe dos estagiários. Eu fiquei muito contente por ela perceber isso mas ela me disse que o salário continuaria o mesmo (assim não era justo!).

O estágio no CCE é realmente um aprendizado. Mesmo sendo apenas um estágio, nós somos considerados como profissionais e assim exigidos. Isto nos ensina a ter responsabilidade e sermos profissionais no que fazemos.   Voltar

5. Trabalho em equipe

Nos projetos que citei no item 3. Projetos e Prazos eu sempre trabalhei em conjunto com outros colegas de trabalho como os outros estagiários e analistas do CCE.

Projeto Queda dos links : eu trabalhei com a Tessie Ikemori (aluna do BCC). O trabalho sempre rendia porque quando alguém tinha uma idéia, consultava o outro primeiro antes de implementar. Gosto muito de trabalhar com pessoas assim.

Projeto Sistema de matrícula : trabalhei com a Tessie, com o Daniel Sakai (aluno do BCC) e o Rogério Iope (analista do CCE e aluno especial no IME). Eu tomei frente neste trabalho junto com a Tessie pois nesta época trabalhávamos 40 horas por semana e os estagiários (Rogério, também estagiário na época, e Daniel) trabalhavam 20 horas. Pena que o prazo era curtíssimo pois acredito que teria aprendido ainda mais.

Projeto Estatística do fluxo de e-mails da spider : trabalhei com o Rogério e a Tatiana (analista do CCE). Ambos não conheciam Perl ainda mas sentávamos juntos em um mesmo micro para pensar o que fazer e como implementar.

Acho importante trabalhar em equipe pois acredito que o trabalho rende muito mais além também de ser um aprendizado. É uma forma de aprender a lidar com os diferentes pensamentos das pessoas e saber concordar ou discordar quando uma idéia é exposta. A chave para que o trabalho em equipe seja bem sucedido é escutar os outros e participar também mostrando as suas idéias. Foi isto o que sempre tentei fazer lá no CCE.   Voltar

6. Relacionamento com os superiores e colegas

Antes mesmo de começar a trabalhar no CCE, eu já imaginava que iria ser bom trabalhar lá porque eu já conhecia os estagiários. A sala onde trabalhava era a sala dos estagiários. Quase todos eles eram do BCC menos um que era da Física.

Meu relacionamento com meus colegas era ótimo. Desde o dia que cheguei, sempre que tinha algum problema alguém me ajudava e era assim que eu fazia também. Um único problema que sentia era quando se não sabia algo ficava com receio de perguntar porque para quem trabalha lá há algum tempo, tudo pode parecer básico e tipos de expressão como "eu pensava que você sabia isso!" podem vir junto com a resposta à sua pergunta.
E sinto também que fiz boas amizades lá até porque continuo mantendo contato com alguns. Outra coisa é que o ambiente de trabalho ajudava muito pois existia um espírito de cooperação entre todos!   Voltar

7. Desafios, alegrias e frustrações

Um desafio que posso contar aqui foi quando nos deram o trabalho de configurar as máquinas onde iria rodar o sistema de matrícula. Como o prazo era curto, resolvemos trabalhar mais horas. E o que senti como desafio foi cumprir o prometido no prazo esperado. A parte mais difícil foi colocar no ar o Apache (o "web server") pois seguíamos as instruções que estavam em um roteiro de instalação mas não dava certo. Na primeira vez que consegui rodar o Apache eu, literalmente, pulei de alegria.

Uma alegria foi ver meu trabalho ser reconhecido por minha chefe. Ao nomear-me como Chefe dos estagiários e dizer que eu era bastante responsável, isto me deixou bastante feliz. Outra vez também foi quando estava deixando o CCE e fui dizer a ela isto. Ela me ofereceu para trabalhar menos horas e ganhar o mesmo. Eu imagino que ela fez isto porque gostava do meu trabalho mas, infelizmente, tive que deixar porque o BCC era mais importante e eu não estava indo bem. Ela ainda chegou a pedir para eu voltar quando as coisas estivessem mais calmas no curso. Senti realmente uma satisfação com este jeito dela!

Uma frustração que tive foi no projeto Queda dos links. Com a solução que eu e a Tessie apresentamos a nossa chefe, nós iríamos aprender muito a mexer com banco de dados. Tínhamos tempo suficiente para isto até porque nossa chefe não parecia ter pressa para isso. Mas não, ela queria porque queria usar arquivos texto para guardar os dados. Minha frustração foi não poder aprender a mexer com BD e ter apenas que mexer com arquivos texto e consultá-los usando Perl. Isto nós já sabíamos e não acho que em um futuro emprego, nós iremos fazer algo neste estilo.   Voltar

8. Relevância do BCC para o estágio

Citarei aqui algumas disciplinas que pertencem ao currículo do BCC e que considero importantes para aplicar no trabalho :
 

  • MAC211 - Laboratório de Programação I e MAC323 - Estruturas de Dados : as duas disciplinas considero relevantes porque nos dão uma bagagem de programação e como mexer nas mais diversas estruturas possíveis para que um programa funcione eficientemente. No CCE não cheguei a ter que usar muito dos recursos que aprendi nas duas disciplinas mas sinto que pelo menos a experiência que tive com elas me ajudou em muitas situações. Teve estagiários que precisaram modificar alguns programas em C e que tiveram que usar, por exemplo, ponteiros. Para um iniciante, a coisa mais fácil é dar um segmentation fault ;
     
  • MAC242 - Laboratório de Programação II : scripts em Perl que tive que fazer e busca por expressões regulares em arquivos. O que aprendi na disciplina foi mais que o suficiente para o que precisava no trabalho ;
     
  • MAC422 - Sistemas Operacionais : conhecimentos sobre que é kernel, shell, pipe, daemon, spool, entre muitos outros entram normalmente em conversas entre os analistas e estagiários ;
     
  • MAC433 - Administração de Sistemas UNIX : no CCE a administração dos sistemas é feita na maioria em computadores rodando UNIX (ex: Tru64, Solaris) e Linux.
    A disciplina certamente me daria uma boa base para meu trabalho se eu a tivesse cursado na época. Mas acabei também aprendendo na prática ;
     
  • MAC439 - Laboratório de Banco de Dados : o projeto Queda dos links tinha como requisito guardar dados para que depois alguém, via Web, fizesse uma consulta nos dados ou atualização mas só para pessoas autorizadas. Como não sabíamos praticamente nada sobre bancos de dados e a nossa chefe não pretendia dar tempo para aprendermos, eu e a Tessie tivemos que guardar os dados em arquivos e fazer a "consulta" usando scripts feitos em Perl.
    Se eu soubesse na época algo mais sobre o assunto, poderia ter usado algum BD existente hoje (ex: MySQL) e resolver o problema (acredito que conseguiria ter convencido a minha chefe no projeto que citei acima!). Não somente para este estágio consideraria importante esta disciplina mas para qualquer outro lugar que as pessoas venham a trabalhar. Logicamente, para poder cursá-la é necessário antes cursar Introdução ao Banco de Dados mas que foi dada mais teoria quando fiz. Laboratório de Banco de Dados diz por si mesma para que serve (pelo menos em tese) ;
     
  • PCS210 - Redes de Computadores : para configurar um computador incluindo ele na rede é necessário conhecer um pouco sobre rede, máscara de rede, protocolos TCP/IP, gateway, roteador, etc.
    Meu estágio foi nos anos 2000 e 2001 mas somente pude cursar esta disciplina neste ano de 2002. Importantíssima para quem quer trabalhar no CCE ;
     
  • MAC448 - Redes de Computadores: uma perspectiva de sistemas de software : da mesma forma que comentei sobre PCS210, outra disciplina importante para quem quer trabalhar lá .
      Voltar

    9. Conclusões  

    Primeiramente, eu gostaria de falar um pouco sobre o que foi o curso de BCC para mim. Gostei muito do que aprendi no curso porque percebo que a base que adquirimos aqui é muito forte e é isto o que o mercado está querendo (logicamente direciono esta frase àqueles que queiram ir para o mercado de trabalho; eu sei também que há os que querem seguir carreira acadêmica).
    Outra coisa, gostaria de dar um conselho para quem é aluno e estiver lendo isto agora. Se possível, deixe para trabalhar quando estiver no último ano porque o estágio pode te atrapalhar. Não é que realmente tenha me atrapalhado mas é que realmente eu sentia que quando chegava em casa eu estava muito cansado e estava ficando difícil levar os dois. Como o mercado mais tarde vai querer que você tenha diploma, não tem jeito. É melhor priorizar a faculdade para terminar o quanto antes.

    Bom, eu elogiei um pouco o curso mas também gostaria de criticar. Algo que tenho que criticar é como algumas disciplinas que tive não me ajudaram muito. As físicas, por exemplo. Não vejo, até agora, quando irei usar o que aprendi com elas. Outra coisa é sobre as matérias de Banco de Dados. A "Introdução a Bancos de Dados" foi muita teoria e não podia dizer que sabia mexer em BD depois que fiz o curso. A "Laboratório de Banco de Dados" estava boa no começo pois até mexemos umas 3 aulas com Sybase no CEC e fazíamos consultas em SQL mas depois acabou. Voltamos à sala de aula e assim comecei a me desestimular com a matéria. No fim, acabei desistindo dela. Mas acho que aos poucos o curso vai se adaptando. Pode ser que, ano que vem, ela seja mais bem dada e as pessoas aproveitem mais. Espero que sim!

    Falando agora um pouco sobre o estágio, eu posso dizer que aprendi muito durante o tempo que trabalhei no CCE. A minha chefe e os outros analistas sabem que somos estagiários e estamos ali para aprender. Isto não quer dizer também que não devamos ter responsabilidades. Devemos sim, e tanto que um estagiário faz o mesmo trabalho que um analista faz, só que tem o suporte de um chefe para ajudá-lo.

    Eu tive muito bom relacionamento com todos os estagiários e analistas. Foi difícil decidir que devia sair de lá por causa do ambiente que me encontrava e o tanto que aprendia.
    Eu tive que decidir isso por causa que não estava conseguindo mais levar o curso e o trabalho juntos (como falei antes no começo!) e também porque sentia que já bastava o que tinha aprendido lá. Eu tenho certeza que tenho muito mais a aprender mas não acho que seja realmente a minha área.

    Por fim, eu diria que para quem gosta desta área e pensa em ter um emprego seguro, trabalhe no CCE. Além disto, a pessoa trabalhará com gente muito competente (a maioria dos analistas e chefes formaram-se na USP) e sempre estará aprendendo algo novo. Um amigo meu que era estagiário na época sempre me dizia: "Meu sonho é trabalhar aqui no CCE". E dito e feito. Hoje ele é analista e está muito feliz lá .   Voltar

    10. Bibliografia

    - Nemeth, Evi and Garth Snyder, Scott Seebass, Trent R. Hein. UNIX System Administration Handbook, Third Edition. Upper Saddle River, NJ: Prentice Hall. 2001. ISBN 0-13-020601-6.
     
    - Larry Wall, Tom Christiansen, and Randal L. Schwartz with Stephen Potter. Programming Perl, Second Edition. Sebastopol, CA: O´Reilly & Associates, Inc. 1996. ISBN 1-56592-149-6.
     
    - G. F. Cintra, Programação CGI usando a Linguagem Perl, livro texto de curso do XXIX Programa de Verão do IME-USP, 2000.
     
    - G. F. Cintra, HTML: Como Criar Páginas na WWW, livro texto de curso do XXVI Programa de Verão do IME-USP, 1996.

      Voltar