[Pesquisar este blog]

quarta-feira, 5 de outubro de 2016

5 de Outubro::Dia Internacional do Professor

“Os professores são a força mais influente e poderosa para a equidade, acesso e qualidade na educação.”
Irina Bokova, Diretora-geral da UNESCO.
Em 1994 a UNESCO criou esta data para homenagear todos aqueles que contribuem para a educação, sejam professores ou não, atuando direta ou indiretamente em toda e qualquer atividade de ensino voltada para crianças, jovens e adultos.  O objetivo da criação desta data foi destacar e valorizar o papel fundamental que os professores têm e exercem na sociedade, principalmente quando se consideram os inúmeros problemas enfrentados por aqueles que abraçam esta carreira ao redor do mundo.

No Brasil existe um dia diferente dedicado ao professor, o 15 de outubro, criado por D. Pedro I, Imperador do Brasil, em 1827 por meio do Decreto Imperial que criou o Ensino Elementar no Brasil.  Apesar dos quase 189 anos da comemoração local, a docência tem sido cada vez menos valorizada no país, pois de fato, pouco se faz para garantir sua boa formação, condições de trabalho dignas e, inclusive, o necessário reconhecimento.

Além da celebração anual, a UNESCO, juntamente com os seus parceiros da OIT, PNUD, UNICEF e a Educação Internacional.com divulgam mensagem comemorativa que pode ser vista aqui.

Para Saber Mais


sexta-feira, 9 de setembro de 2016

Revisitando o Robocode

O Robocode é um jogo, uma batalha de tanques, programável. Cada jogador (ou equipe) desenvolve a programação de seu robô que, autonomamente, compete numa série de rounds contra outros robôs, numa espécie de vale-tudo programático.
É uma plataforma interessantíssima para o ensino-aprendizagem de programação, que pode envolver muitos aspectos: desenvolvimento de algoritmos, programação orientada a objetos e até mesmo inteligência artificial.
O material que segue foi utilizado na Aula Aberta sobre o Robocode, ministrada na FATEC Jundiaí em 09 de setembro de 2016, como uma atividade preparatória para a II Copa Robocode a ser realizada na instituição.

sábado, 7 de maio de 2016

Java 9::a nova versão demora um pouco mais

A plataforma Java continua como a mais utilizada no mundo, basta conferir no TIOBE Index de Maio/16, que mede a popularidade das várias linguagens de programação existentes, conforme o gráfico abaixo (metodologia do TIOBE index). Nestes últimos 15 anos, o Java ocupou a liderança deste ranking na maior parte do tempo, revezando o posto com a veterana C!

TIOBE Programming Community Index for May 2016
Fonte: http://www.tiobe.com/tiobe_index
Portanto nada mais natural que existir uma grande expectativa pela próxima versão, de número 9, que trará vários novos elementos. Uma lista com as principais características do Java 9 foi assunto de um post anterior (Java 9::o que esperar) que comentou sobre o shell Java integrado para experimentação de construções da linguagem no estilo read-eval-print loop; a API dedicada a microtestes (microbenchmark); o novo cliente para HTTP 2; o suporte para Unicode 7.0 e 8.0; a atualização das APIs de processo, concorrência e outras; o coletor de lixo G1 como default; além da modularização do código fonte e da biblioteca run-time.

Mas existem muitas outras novidades no Java 9 como imagens multi-resolução; tratamento para formato TIFF; melhorias diversas nos sistemas gráficos para Windows e Linux; suporte ao GTK3; aperfeiçoamentos no controle da compilação e depreciação de elementos; melhorias no JavaDoc; e outras tantas. No momento são 21 JEPs (Java Enhance Proposals) para a versão 9, como pode ser visto na página do OpenJDK sobre o projeto.

Na verdade, a versão 9 está atrasada! A previsão de sua liberação em setembro/16 foi adiada devido a atrasos no projeto Jigsaw, de modularização da API, como comentado no blog Takipi. Hoje o Java Runtime Enviroment tem estrutura quase monolítica, pois seu arquivo rt.jar contém quase 20000 classes, boa parte sem uso em muitos programas, tornando-se um peso. O objetivo do projeto Jigsaw é possibilitar a divisão do runtime em componentes que possibilitem a criação de versões otimizadas para atender necessidade específicas. Embora fácil de explicar, conseguir a flexibilidade e o desempenho almejados, dentro das premissas da linguagem e garantindo a necessária retrocompatibilidade é bem mais complicado, o que justifica o atraso.


O Plano Atual

Atualmente o cronograma da versão 9, conforme a página do projeto é este:


Isto significa que no final de maio/16 devem ser confirmadas todas as JEPs (melhorias propostas) que efetivamente comporão a versão 9. Segue uma fase de testes e depuração de maneira que no final de janeiro/17 esteja disponível um build candidato a primeira versão oficial do Java 9. Assim, no final de março/17 deve ocorrer o General Avaliability, ou seja, quando o JDK 9 para produção é liberado!

As versões preliminares do Java 9 podem ser experimentadas. Basta efetuar o download de uma versão early access no link indicado para JDK 9 Early Access Releases na seção Para Saber Mais. É só conferir!

Para saber mais


terça-feira, 23 de fevereiro de 2016

Virtualização Revisitada

No dicionário, o adjetivo virtual é explicado como "o que não existe como realidade, mas sim como potência ou faculdade" e também como "o que equivale a outro, podendo fazer às vezes deste, em virtude ou atividade".

Na área de Tecnologia de Informação o termo é frequentemente utilizado no sentido de indicar dispositivos de hardware, programas de computador ou uma combinação destes que substituem outros dispositivos ou programas, de maneira a obter-se seu funcionamento equivalente. Assim, virtualizar é o ato de criação de uma versão virtual de algo, como uma plataforma de hardware, um servidor, um sistema operacional, um dispositivo de armazenamento ou uma rede de computador.

Os softwares ou frameworks de virtualização podem, entre outras capacidades, atuar de duas maneiras distintas:
  • Dividir um recurso para prover seu uso em múltiplos ambientes de execução;
  • Consolidar múltiplos recursos de maneira que sejam tratados como algo único.
Cada um destes modos tem aplicações bastante convenientes e específicas.

Por exemplo, o simples particionamento de uma unidade de disco rígido pode ser considerado como uma operação de virtualização porque a unidade particionada dá origem a duas ou mais unidades lógicas (isto é, que não são físicas). Mas, em algum sistemas, também é possível fazer o oposto, ou seja, configurar duas ou mais unidades físicas para que operem como uma unidade lógica dotada de maior capacidade. Então divisão e consolidação são estratégias que se aplicam a um grande número de situações.

Muitos ambientes de desenvolvimento voltados para a construção de aplicativos móveis incluem emuladores de modelos genéricos ou específicos para possibilitar o teste destes softwares em um ambiente semelhante onde serão utilizados, mas sem a necessidade do programador dispor de um dispositivo físico.

A configuração de uma Virtual Private Network (VPN) é também uma operação de virtualização, pois com o uso de uma infraestrutura pública de comunicação (a internet, por exemplo) é possível a construção de uma rede privativa, que oferece grande segurança para o tráfego de seus dados, que opera transparentemente na rede pública. O efeito de uma rede privada "dentro" da infraestrutura pública de comunicação é a virtualização de uma rede.

Um framework de virtualização pode também ofertar um ambiente composto de diversos dispositivos, simulando um sistema completo por meio de outro. Assim, dispositivos, aplicações e usuários são capazes de interagir com recursos virtuais, isto é, providos pela plataforma de virtualização, como se fossem recursos reais. Técnicas de virtualização muitas vezes são empregadas na emulação e na simulação (a primeira procura representar exatamente um sistema ou dispositivo - como os emuladores de telefones, enquanto a segunda pode oferecer um subconjunto específicos de funcionalidades associado a um ou mais sistemas e dispositivos).

Hoje são relativamente comuns os frameworks de virtualização que empregam uma ou mais metodologias de divisão dos recursos de um computador em múltiplos ambientes de execução por meio da aplicação de conceitos e tecnologias de particionamento de hardware e software, compartilhamento de tempo (time-sharing), simulação de máquina parcial ou completa, emulação, qualidade de serviços (QoS) e muitas outras.

Origem

As técnicas de virtualização surgiram na década de 1960 para prover a operação mais eficiente de mainframes, pois devido a seu altíssimo custo, todos os recursos sistêmicos deveriam ser intensamente utilizados para tornar seu uso mais competitivo.

Inicialmente possibilitava a divisão lógica dos recursos físicos do mainframe em múltiplos sistemas lógicos, os quais podiam ser usados para aplicações distintas e com operação independente. Além de flexibilizar a utilização do sistema, um mesmo mainframe poderia até ser compartilhado por organizações distintas quando tecnologias de acesso remoto eram empregadas para conectar os terminais de usuário ao computador principal.

Um caso de sucesso foi o IBM CP (Control Program) um dos primeiros software comerciais de virtualização e também o IBM VM (Virtual Machine), uma evolução do CP de enorme sucesso, ambos voltados para operação de mainframes.

Na última década a virtualização tornou-se uma estratégia fundamental para organizar os datacenters (as novas versões dos antigos centros de processamento de dados). Um servidor tradicional trabalha com grande ociosidade na maior parte do tempo, pois é dimensionado para atender os horários de pico. Assim o consumo de energia é maior do que efetivamente necessário. Com a virtualização, um servidor de capacidades maiores pode hospedar vários servidores (máquinas) virtuais, o que é denominado consolidação de servidores, explorando melhor os recursos disponíveis, reduzindo a ociosidade e o consumo total de energia, além de requisitar menos espaço físico e esforço de manutenção. Tudo sem redução do desempenho fornecidos aos aplicativos dos servidores, de maneira imperceptível para os usuários destas aplicações.

Visão conceitual

Sua organização tipicamente envolve três camadas:

  • Camada de hardware
    Composta dos dispositivos do hardware que, de fato, existem no sistema. Pode agregar um sistema operacional (SO).
  • Camada de virtualização
    Sistema/programa de virtualização, que particiona e administra a camada de hardware para prover serviços de virtualização ou suporte para máquinas virtuais. É o hipervisor, hypervisor ou Monitor das Máquinas Virtuais (Virtual Machine Monitor).
  • Camada de aplicaçãoPartições que constituem as máquinas virtuais específicas para operação de diversos SO e aplicações isoladas.
 O próprio hipervisor pode ser de dois tipos:
  • Bare Metal (ou Nativo)
    Situação onde o hipervisor é instalado diretamente sobre o hardware do sistema, controlando-o, sem necessidade de um sistema operacional previamente instalado. O papel dos bare metal hypervisor é particionar o hardware em múltiplas máquinas virtuais onde serão configurados as aplicações hospedeiras (guests). Oferecem o melhor desempenho possível.
  • Hosted (ou Hospedado)
    Caso onde o hipervisor é instalado sobre um sistema operacional, tal como uma aplicação qualquer. Também permite a criação de máquinas virtuais, com diferentes configurações de hardware, mas que competirão por recursos do sistema, incluindo outras aplicações existentes além do próprio hipervisor. Oferece grande flexibilidade, principalmente na constituição de ambientes de teste e simulação.
A ilustração que segue mostra a organização de hipervisores bare metal (Type 1) e hosted (Type 2).
 

Aplicações da Virtualização

A virtualização tem inúmeras aplicações. Algumas das mais comuns são:
  • Virtualização de armazenamento, onde múltiplas unidades de armazenamento, locais e remotas, são operadas de maneira combinada e distribuídas dinamicamente como unidade virtuais reconfiguráveis.
  • Virtualização de servidores, na qual um servidor físico pode ser particionado em vários servidores virtuais de menor capacidade.
  • Virtualização de sistemas operacionais, que é um tipo de virtualização, ocorrida no kernel do SO, para prover múltiplas instâncias de um mesmo ou diferentes sistemas operacionais numa mesma máquina.
  • Virtualização de redes, onde torna-se possível o uso seletivos dos recursos de uma rede física por meio de sua segmentação lógica, por exemplo, numa VPN.
  • Virtualização de aplicativos, na qual a operação de sistemas de software ocorre em sistemas virtualizados e cujo acesso se dá por meio de redes, como na computação em nuvem (cloud computing).

Vantagens e Desvantagens

A virtualização é uma tecnologia que tem potencial para proporcionar um grande conjunto de vantagens.

Exemplos clássicos são a possibilidade de uso de múltiplos SOs simultaneamente num mesmo host; e a consolidação de servidores subutilizados num menor número de máquinas, proporcionando economia no hardware, no espaço físico, na operação, na gerência, nos custos e também permitindo a redução dos impactos ambientais.

O uso da virtualização permite a continuidade de aplicações legadas que requerem hardware antigo; pode prover ambientes seguros e isolados (sandboxes) para operar aplicações não confiáveis ou constituir ambientes de teste e depuração; permite configurar ambientes com limitações específicas de recursos, sendo conveniente para sistemas habilitados para QoS (Quality of Service). A recuperação de desastres é grandemente facilitada pela re-instalação de sistemas virtualizados, ao invés de re-instalação e reconfiguração tradicional de sistemas.

Outros aspectos positivos do emprego da virtualização são: a possibilidade de empacotar e distribuir instalações ou aplicações complexas; facilitam a migração de software; facilitar o balanceamento de carga de trabalho; sem contar que pode constituir um infraestrutura mais adequada para atendimento flexível das demandas de sistemas de computação em nuvem.

Mas como toda e qualquer tecnologia, também existem desvantagens. Uma delas é que o hardware requisitado é, de fato, mais sofisticado, pois deve ser bastante mais robusto para suportar, sem comprometimento de desempenho e disponibilidade, a consolidação de servidores. Também existe mão de obra especializada, por requer novos conhecimentos e experiência na condução das etapas de adoção de tecnologia, migração de sistemas e operação contínua. Os custos adicionais de licenças de produtos específicos é outra consideração que não pode ser esquecida.

Conclusões

A virtualização é, do ponto de vista técnico, uma alternativa muito interessante e flexível para operação de sistemas sofisticados, mas também pode ser empregada com vantagens no âmbito pessoal. Uma análise cuidadosa do cenário de sua adoção pode determinar sua conveniência e viabilidade econômica em qualquer segmento de negócio. Mas a considerar-se sua larga adoção, por companhias de todos os tamanhos e em todos os ramos de atividade, constitui a maior prova que seu uso cuidadoso permite alcançar grandes ganhos.

Para Saber Mais



domingo, 13 de dezembro de 2015

Desenvolvimento Profissional e Carreira

Você sabia que existem tipos diferentes de carreiras profissionais? Carreira linear, em Y e até mesmo em W? O pensar e planejar a carreira são importantes, pois todos almejam a plena realização pessoal e profissional!

Uma carreira é um percurso rumo a um objetivo profissional, mas determinado por razões pessoais, em geral motivados pelos desejos de realização e de sentido para vida. É parte da busca de nossa felicidade. Embora não possamos prever o futuro, o planejamento da carreira e a preparação antecipada contribuem muito, pois passamos boa parte de nossas vidas no trabalho.

Uma carreira linear é uma sucessão de ocupações considerada natural. No início os aprendizes e estagiários, que evoluem para funções de natureza júnior, onde as pessoas trabalham com menor independência e sob supervisão. Com o passar do tempo, o amadurecimento profissional conciliado com mais educação formal, permitem galgar posições ditas plenas e depois seniores, sempre com maior autonomia. Nestas últimas é comum que o profissional passe, progressivamente, a coordenar, supervisionar e, finalmente, gerenciar, ascendendo a posições formais de comando, de cunho executivo e de maiores encargos. A cada uma dessas transições para funções de maiores responsabilidades espera-se a conquista de maiores remunerações e, eventualmente, outros benefícios. Uma carreira assim é vista como uma trajetória de sucesso.

Mas nem todos desejam ou querem tais posições de comando, a despeito dos ganhos ou da ideia de sucesso ali contida. É aqui que surge a carreira em Y, que contém uma bifurcação para a evolução em termos de superespecialização técnica ou de gestão organizacional. Mas isto é assunto para uma próxima conversa!

Este texto marca o lançamento do capítulo O Y da Carreira, no livro Competências Profissionais no dia 12/12/2015 em Jundiaí-SP, publicado também no Em Foco, informativo semanal do Grupo Anchieta.

Para Saber Mais

sexta-feira, 27 de novembro de 2015

TCC::Como apresentar?

Fim de semestre. Época de provas, entrega de trabalhos e o famigerado Trabalho de Conclusão de Curso. Para reduzir o stress, segue uma pequena apresentação com orientações e dicas para tudo dar certo no dia de sua apresentação.
Partindo do princípio que você (e seu grupo) deu um duro danado para concluir seu projeto de TCC, após a entrega da monografia ou do artigo final, é hora de preparar uma boa apresentação para banca que avaliará o trabalho e os resultados obtidos.

Segue uma apresentação que você pode usar como material de apoio. Ela contém:
  • as regras típicas das bancas de apresentação de TCC;
  • como organizar e elaborar os slides da apresentação;
  • como se preparar e ensaiar;
  • como apresentar no grande dia.
Destaco que é um material de orientação geral, ou seja, não contempla especificades do regulamento de sua instituição, pode ser diferente da sugestão de seu orientador e, (infelizmente) não cobre todas as perguntas e dúvidas possíveis que você ter. Mas ainda assim, pode lhe ajudar!

Desejo muita sorte em sua apresentação!