Vivemos cada vez mais a web 2.0, fenómeno social que tem trazido a inúmeros seres humanos a possibilidade de, acima de tudo, participar, colaborar, ter voz activa à escala global defronte de uma assistência inalcançável no mais lotado auditório da suposta vida real. Tendo em conta este facto algo de curioso se constata, não é a revista programar um projecto que tem por alicerces a partilha e a cooperação, tudo em prol do utilizador anónimo que se interessa pela programação, feito por aqueles que da sua experiência gostam de oferecer uma parte? Será a revista programar um projecto 2.0? O que lhe falta para o ser, o que impede mais utilizadores de colaborarem?
Continuar a ler
Arquivo anual: 2007
Programação Concorrente em Ambientes UNIX
Introdução
Nos últimos tempos os processadores chegaram a um ponto onde se tornou praticamente impossível aumentar a sua frequência, de modo a que a solução foi passar para as arquitecturas multi-core. No entanto, nesta abordagem os ganhos não são tão lineares como podem parecer, i.e., duplicar o número de núcleos não significa duplicar a velocidade das aplicações. Isto porque se a aplicação não for projectada para este tipo de arquitectura, só irá fazer uso de um dos núcleos.
Neste artigo será abordada uma forma de responder a esta situação (não necessariamente a melhor). Assim, serão abordadas algumas system calls disponíveis em ambientes UNIX, para criação e manutenção de processos, bem como para a comunicação entre eles. Será usada a linguagem C.
Object Factories
Introdução
Os processos de abstracção e modularidade em programação orientada a objectos, em particular em C++, são facilmente conseguidos através dos conceitos de herança, polimorfismo e métodos virtuais. Na verdade o sistema em runtime é capaz de “despachar” métodos virtuais para os correctos objectos derivados, conseguindo assim executar o código que pretendemos em cada um dos instantes. A literatura referente à programação orientada a objectos é basta em exemplos.
Geralmente quando utilizamos este tipo de técnicas encontramos-nos num estado em que os objectos já estão criados, e dessa forma mantemos referências ou ponteiros que nos servirão para invocar o(s) método(s) desejados.
Introdução ao Haskell
Nota histórica
Durante uma conferência em 87 foi decidido que era necessário um standard de linguagem funcional. O Haskell nasceu aí e foi evoluindo aos poucos até em 97 ter sido elaborada a definições base da linguagem, este marco ficou conhecido como Haskell 98. Sendo uma linguagem funcional, destaca-se imediatamente pela inexistência de ciclos e em vez disso é dada preferência ao uso da recursividade. Entre outras características, que podem ser facilmente pesquisadas, Haskell, pode-se considerar strongly typed, pure, lazy evaluation. Para a utilização dos programas de código fonte Haskell, existem duas opções. O uso de interpretadores como por exemplo GHCi, Hugs, ou através da compilação do código, sendo que neste caso utiliza-se o compilador GHC.
Introdução ao XSLT
Em Novembro de 1999, o W3C oficializou a especificação de transformações XSL, ou XSLT, passando-a ao estado de Recomendação – um tipo de standard W3C. O objectivo desta linguagem, escrita em XML, é permitir aos programadores transformarem os dados e estrutura de um documento XML noutro formato qualquer à medida das necessidades dos utilizadores, como PDF, HTML ou XML.
O processamento de documentos XML através de um processador XSLT significa basicamente que o processador usa o XML original para gerar uma árvore a partir do documento, e converte-a para uma árvore representante do documento final, através da execução de instruções especificadas num stylesheet.
Um stylesheet XSLT contém blocos, cada um contendo uma expressão indicando qual o elemento ou elementos do XML original que lhe interessa processar (ou, alternativamente, um nome identificativo do bloco). A linguagem que permite definir, sob a forma de expressões, quais os elementos e atributos a seleccionar para processamento, é o XML Path Language, ou XPath.
Interfaces Web com Java HttpServer
Cada vez surgem mais aplicações de desktop com interfaces web, que permitem o controlo da aplicação por um simples browser usando o protocolo HTTP. Bom exemplo disso são as aplicações P2P, como o conhecido cliente de bit torrent Azureus, todas as quais actualmente com esse suporte.
Com o Java 6 esta tarefa foi bastante simplificada, pois esta versão vem com a API HttpServer, que fornece os mecanismos básicos de um servidor HTTP. Iremos ver neste artigo como usar algumas dessas funcionalidades. Vamos para isso construir um leitor de áudio simples, apenas com os comandos reprodução e parar, e criaremos para isso um interface web, usando a API fornecida pelo Java para esse efeito.
Vulnerabilidades em aplicações Web
Introdução à Bioinformática
Introdução
Com o desenvolvimento da biotecnologia nas últimas décadas, houve uma quantidade massiva de informação que encontrou casa nas bases de dados espalhadas pela Internet. Para lidar com esse influxo gigantesco de informação, (só na Pubmed há mais de 3.2 biliões de artigos (mais de 5.96 PetaBytes) e o BLAST tem mais de um bilião de fragmentos de genes) foi necessário recorrer à tecnologia informática, não só para a armazenar e tornar disponível em formatos organizados, como também para fornecer ao investigador em biociências ferramentas que lhe permitissem lidar com essa informação de forma eficaz. Desta forma, nasceu um ramo comum à informática e às ciências biomédicas designado Bioinformática.
Entrevista a Graham Glass
Com pouco mais de um ano, edu20 é mais uma ferramenta para o ensino e aprendizagem online. Desenvolve-se em 4 linhas fundamentais: ensinar, aprender, partilhar recursos, e colaborar em comunidade. As funcionalidades existentes são já bastante promissoras, tendo a equipa apostado recentemente na internacionalização de edu20 para promover o seu uso em todo o mundo. A tradução para língua portuguesa é neste momento uma realidade, embora ainda necessite de melhorias. A Revista PROGRAMAR entrevistou Graham Glass, que idealizou e construiu este recurso acessível em http://www.edu20.org.
Revista PROGRAMAR (RP): Como define o edu 2.0? Qual a ideia que levou à construção deste recurso educativo?
Graham Glass (GG): edu 2.0 significa “educação da próxima geração”. A ideia por trás de edu 2.0 foi a de conseguir tornar as tarefas de ensinar e de aprender mais agradáveis e eficientes.
Revista PROGRAMAR nº 11 — Novembro 2007
Dois meses depois, e apesar do pequeno atraso, aqui está a décima-primeira edição da Revista PROGRAMAR. Mais uma edição, mais um produto do trabalho da grande equipa que continua a sacrificar algum tempo pessoal em prol da divulgação da programação, da equipa que a cada dois meses se esforça por trazer à comunidade lusófona um leque de artigos de qualidade.
Lamentamos desde já a impossibilidade de continuação dos artigos de grafos e programação em Assembly. Em contrapartida, nesta edição poderão ler sobre o desenvolvimento de aplicações concorrentes através de system calls em UNIX, utilização e potencialidades do XSLT, vulnerabilidades comuns em aplicações web, entre muitos outros.
Até à próxima edição.