O documento discute os Business Connectivity Services (BCS) do SharePoint 2010. Em três frases:
1) Os BCS permitem ler e escrever dados de sistemas externos no SharePoint 2010 e Office 2010 de forma integrada.
2) A arquitetura dos BCS inclui o serviço BDC, um repositório de metadados e conectores para ligar a diferentes fontes de dados.
3) Os principais conceitos são os modelos de metadados, sistemas externos, tipos de conteúdo externo e as entidades de negócio que
O documento descreve como o Local Storage permite armazenar dados no navegador de forma persistente, fornecendo uma solução para aplicações web mais responsivas. Explica como acessar e armazenar dados no Local Storage usando JavaScript e como serializar objetos para armazenamento. Também discute como a tecnologia melhorou a experiência do usuário em aplicativos web.
Nesta edição continuaremos também a premiar os autores dos três melhores artigos, dado o sucesso nas edições anteriores. E os leitores devem dar a sua opinião para que possamos premiar correctamente. Para isso vote em http://tiny.cc/ProgramarED42_V
Assim nesta edição trazemos até si, como artigo de capa, um artigo sobre Web Persistente: Local Storage.
Nesta 42ª edição pode ainda encontrar os seguintes artigos:
Debug de Aplicações em C (António Pedro Cunha)
Arduino: Accionamento e Controlo de Servos Via Teclado (Nuno Santos)
Introdução ao Web2py (António Santos)
Listas Simplesmente Ligadas e Exemplo de Implementação em C (Cristiano Ramos)
Pascal - Tipos de Dados Variant e Tipos Genéricos (Igor Nunes)
Visual(not)Basic - Eventos e handlers (Sérgio Ribeiro)
Windows Server 2012 - Curso Completo (Nelson Belo Lima)
Redes de Computadores - Curso Completo (António Santos)
Implementando publicidade usando Nokia NAX em aplicações Windows Phone (Sara Silva)
Navicat Premium 11 (Nelson Belo Lima)
Dispositivo Android: Ser ou Ser reconhecido pela Google (Rita Peres)
Este documento fornece um resumo da 41a edição da revista PROGRAMAR. Apresenta o editorial e a equipe responsável pela revista, além de fornecer um índice com os principais tópicos abordados nesta edição, como introdução ao Java EE e Java Web, programação em C, Jogo da Vida e JBoss Application Server 7.
Este artigo apresenta uma introdução à programação em CUDA, uma plataforma que permite utilizar as GPUs da NVIDIA para computação paralela e científica. Explica como o CUDA aproveita os milhares de núcleos das GPUs para executar aplicações de forma massivamente paralela através da utilização de threads. Descreve um exemplo simples de soma de vetores para ilustrar como o CUDA consegue calcular operações em paralelo de forma muito mais rápida do que nas CPUs.
Este documento apresenta a edição de Abril da revista PROGRAMAR, que inclui artigos sobre tópicos de programação como Lua, Windows Workflow Foundation e o problema P vs NP. A edição é coordenada por António Santos e conta com a colaboração de vários membros da comunidade Portugal-a-Programar.
1) O documento resume a morte de três grandes figuras da tecnologia - Steve Jobs, Dennis Ritchie e John McCarthy - e reflete sobre o seu impacto e legado.
2) O autor argumenta que, apesar de Steve Jobs ter recebido maior atenção da mídia, os três merecem reconhecimento pelas suas contribuições significativas que influenciaram muitas pessoas.
3) O autor anuncia que esta será a sua última edição como coordenador da revista PROGRAMAR depois de mais de 3 anos de trabalho no projeto.
O documento descreve a evolução da computação, desde os primeiros computadores centralizados até aos computadores pessoais descentralizados e a arquitetura cliente-servidor. A nuvem computing representa uma mudança para uma arquitetura centralizada novamente, onde a computação e dados são movidos para centros de dados e acessados via internet. Esta mudança é motivada por razões económicas e tendências como mobilidade, software como serviço e hardware como serviço.
Este documento trata sobre el reglamento estudiantil de la Universidad Popular del Cesar. Explica que el reglamento estudiantil es el conjunto de normas que rigen el comportamiento y convivencia de los estudiantes. Incluye definiciones de reglamento estudiantil, las ventajas de conocer el reglamento, y responde preguntas comunes sobre cambios de programa y sanciones por fraude o agresión. Concluye que el reglamento estudiantil es importante para que los estudiantes puedan reclamar sus derechos y resolver conflictos de manera pací
O documento descreve como o Local Storage permite armazenar dados no navegador de forma persistente, fornecendo uma solução para aplicações web mais responsivas. Explica como acessar e armazenar dados no Local Storage usando JavaScript e como serializar objetos para armazenamento. Também discute como a tecnologia melhorou a experiência do usuário em aplicativos web.
Nesta edição continuaremos também a premiar os autores dos três melhores artigos, dado o sucesso nas edições anteriores. E os leitores devem dar a sua opinião para que possamos premiar correctamente. Para isso vote em http://tiny.cc/ProgramarED42_V
Assim nesta edição trazemos até si, como artigo de capa, um artigo sobre Web Persistente: Local Storage.
Nesta 42ª edição pode ainda encontrar os seguintes artigos:
Debug de Aplicações em C (António Pedro Cunha)
Arduino: Accionamento e Controlo de Servos Via Teclado (Nuno Santos)
Introdução ao Web2py (António Santos)
Listas Simplesmente Ligadas e Exemplo de Implementação em C (Cristiano Ramos)
Pascal - Tipos de Dados Variant e Tipos Genéricos (Igor Nunes)
Visual(not)Basic - Eventos e handlers (Sérgio Ribeiro)
Windows Server 2012 - Curso Completo (Nelson Belo Lima)
Redes de Computadores - Curso Completo (António Santos)
Implementando publicidade usando Nokia NAX em aplicações Windows Phone (Sara Silva)
Navicat Premium 11 (Nelson Belo Lima)
Dispositivo Android: Ser ou Ser reconhecido pela Google (Rita Peres)
Este documento fornece um resumo da 41a edição da revista PROGRAMAR. Apresenta o editorial e a equipe responsável pela revista, além de fornecer um índice com os principais tópicos abordados nesta edição, como introdução ao Java EE e Java Web, programação em C, Jogo da Vida e JBoss Application Server 7.
Este artigo apresenta uma introdução à programação em CUDA, uma plataforma que permite utilizar as GPUs da NVIDIA para computação paralela e científica. Explica como o CUDA aproveita os milhares de núcleos das GPUs para executar aplicações de forma massivamente paralela através da utilização de threads. Descreve um exemplo simples de soma de vetores para ilustrar como o CUDA consegue calcular operações em paralelo de forma muito mais rápida do que nas CPUs.
Este documento apresenta a edição de Abril da revista PROGRAMAR, que inclui artigos sobre tópicos de programação como Lua, Windows Workflow Foundation e o problema P vs NP. A edição é coordenada por António Santos e conta com a colaboração de vários membros da comunidade Portugal-a-Programar.
1) O documento resume a morte de três grandes figuras da tecnologia - Steve Jobs, Dennis Ritchie e John McCarthy - e reflete sobre o seu impacto e legado.
2) O autor argumenta que, apesar de Steve Jobs ter recebido maior atenção da mídia, os três merecem reconhecimento pelas suas contribuições significativas que influenciaram muitas pessoas.
3) O autor anuncia que esta será a sua última edição como coordenador da revista PROGRAMAR depois de mais de 3 anos de trabalho no projeto.
O documento descreve a evolução da computação, desde os primeiros computadores centralizados até aos computadores pessoais descentralizados e a arquitetura cliente-servidor. A nuvem computing representa uma mudança para uma arquitetura centralizada novamente, onde a computação e dados são movidos para centros de dados e acessados via internet. Esta mudança é motivada por razões económicas e tendências como mobilidade, software como serviço e hardware como serviço.
Este documento trata sobre el reglamento estudiantil de la Universidad Popular del Cesar. Explica que el reglamento estudiantil es el conjunto de normas que rigen el comportamiento y convivencia de los estudiantes. Incluye definiciones de reglamento estudiantil, las ventajas de conocer el reglamento, y responde preguntas comunes sobre cambios de programa y sanciones por fraude o agresión. Concluye que el reglamento estudiantil es importante para que los estudiantes puedan reclamar sus derechos y resolver conflictos de manera pací
El documento describe el crecimiento del uso de Internet para una variedad de servicios como banca en línea, reservas de viajes y compras. También describe cómo la publicación gratuita en la web permite compartir fácilmente contenido individual como blogs, fotos y videos, así como combinaciones de estos. Además, permite crear espacios para comunicarse con amigos y apoyar comunidades.
La Web 2.0 permite el trabajo colaborativo entre usuarios y mejora las herramientas utilizadas en el aula y la empresa. Ofrece ventajas como la mensajería instantánea, software gratuito y actualizado, acceso desde cualquier lugar y dispositivo, menor requerimiento de hardware, y la posibilidad de que varias personas colaboren al mismo tiempo desde diferentes lugares.
Este documento presenta la descripción del programa Tecnólogo en Gestión Administrativa ofrecido por el SENA. El programa busca formar personal calificado en el área administrativa para contribuir al desarrollo económico y social del país. El programa dura 24 meses y se enfoca en el desarrollo de competencias relacionadas con la gestión administrativa, aplicación de tecnologías de información, organización de documentos y eventos, y procesamiento de información.
O documento discute a equipa por detrás da revista Programar e a importância de se ter uma boa equipa para o sucesso de um projeto. Explica que começar um projeto sozinho aumenta o risco de falha e que uma equipa consegue gerar melhores ideias e dar apoio mútuo aos seus membros.
Los modelos económicos empleados en econometría tienen dos características: son modelos causales expresados matemáticamente. El objetivo es representar la relación entre variables mediante tres pasos: identificar variables, formular su relación, y usar perturbaciones aleatorias. La econometría estima la parte determinística de los modelos económicos.
El documento presenta un proyecto realizado por un grupo de estudiantes para colocar un montacargas en el instituto con el fin de facilitar el acceso a las personas con discapacidad. El proyecto fue supervisado por el profesor Gustavo Alvares e incluyó una encuesta entre profesores y alumnos donde la mayoría consideró que era una buena idea instalar el montacargas.
El documento es una carta de amor de una persona a su pareja en su decimotercer aniversario. La persona expresa gratitud por el amor incondicional que se tienen desde que se conocieron hace trece meses y espera tener muchos más años juntos a pesar de la distancia actual.
Los puntos suspensivos (...) señalan una conclusión incompleta del texto anterior y le dan un sentido de suspenso. Pueden usarse para dejar una oración o texto inconcluso, indicar que se omite parte de una cita, o expresar duda o vacilación. Las reglas establecen que deben haber entre tres y cinco puntos, y se usan para varios propósitos literarios como sorprender al lector o dejar algo en suspenso.
Este documento fornece uma introdução à linguagem de programação Scheme, descrevendo suas principais características como o suporte a múltiplos paradigmas de programação, especialmente a programação imperativa e funcional, e conceitos como cálculo lambda e expressões condicionais.
El documento describe una práctica para mejorar la calidad de la educación. Propone que una educación de calidad forma ciudadanos con valores éticos y que respetan los derechos humanos. Mejorar la calidad de la educación es una tarea prioritaria que requiere el trabajo conjunto de la sociedad. La educación de calidad es clave para la igualdad, el desarrollo y el progreso de las naciones.
El reglamento estudiantil establece normas que deben seguir los estudiantes. Explica los requisitos para cambiar de carrera, como requiere 30 créditos aprobados. También cubre situaciones especiales como reserva de cupo por hasta 2 semestres por razones médicas. Finalmente, establece que los estudiantes serán calificados con 0 y reportados si cometen fraude, y pueden ser expulsados si reinciden.
La computadora está compuesta por una CPU, monitor, teclado y parlantes. Otros componentes incluyen diapositivas y capturas de pantalla que pueden ser clasificadas y animadas.
El documento discute la importancia de incluir las Tecnologías de la Información y la Comunicación (TIC) en la educación inicial. Explica que las TIC permiten transmitir y procesar información de manera instantánea y son fundamentales para reducir la brecha digital. También destaca que las TIC captan el interés natural de los niños y mejoran su interpretación de imágenes y sonidos, habilidades esenciales en las primeras edades. Finalmente, propone utilizar libros y otras actividades con TIC para desarrollar destrezas valios
Este editorial apresenta as principais alterações feitas na revista PROGRAMAR, incluindo:
1) Uma mudança no design para melhorar a experiência do leitor;
2) A alteração do software de paginação para o Scribus, que é gratuito;
3) Novas parcerias com outras comunidades para obter mais artigos;
4) Colunas de opinião e temáticas periódicas.
O editorial também informa que a revista passará a ser publicada de dois em dois meses.
México tiene altas tasas de obesidad en varios estados. El documento analiza los estados de México con mayores problemas de obesidad y las posibles causas, como falta de actividad física y malos hábitos alimenticios. El objetivo es crear conciencia sobre los riesgos de salud asociados con la obesidad y promover estilos de vida más saludables.
El documento presenta el reglamento institucional de una universidad, el cual establece normas sobre los derechos y deberes de los estudiantes, así como sobre procesos académicos y disciplinarios. El reglamento busca guiar el desarrollo académico de los estudiantes y fomentar una formación profesional de calidad mediante la fijación de estas reglas.
El documento describe tres trucos de Google: Atari Breakout, en el que buscar esa frase en Google Images convierte el contenido en un videojuego de Breakout; Zerg Rush, un juego en el que las letras "O" de "Google" destruyen cosas y el usuario debe evitarlo haciendo clic; y Google Gravity, que busca información con un efecto de falta de gravedad que desordena los resultados.
El uso constante de herramientas digitales en la vida diaria de los estudiantes los puede aislar de otras formas de comunicación y hacer que se sientan saturados por la gran cantidad de información disponible online, llevándolos en muchos casos a copiar contenido sin procesarlo. Las herramientas digitales se usan ampliamente en el hogar, trabajo y escuela, siendo útiles para tareas escolares, generar informes de trabajo y crear contenido promocional, aunque también pueden saturar a los estudiantes.
O documento descreve um plano de aula para alunos do 4o ano sobre tecnologia e comunicação. O objetivo geral é mostrar como a tecnologia está disponível para todos e transmite significados de forma visual. As atividades incluem assistir vídeos sobre a era digital, analisar formas de comunicação online e criar painéis demonstrativos sobre o tema. A avaliação será contínua e analisará o desempenho e criatividade dos alunos.
O documento descreve novas funcionalidades do kernel Linux 2.6.23, incluindo um novo scheduler e suporte para virtualização. Também discute a escassez iminente de endereços IP da versão 4 e a necessidade de adoção da versão 6. Por fim, anuncia o lançamento do Mac OS X Leopard.
1) O artigo discute os desafios de erros em programação e a necessidade de mais rigor e teste científico.
2) Programadores muitas vezes escrevem código sem compreender totalmente o que está sendo feito, levando a erros.
3) Embora erros nunca possam ser totalmente eliminados, o número pode ser reduzido com mais foco em algoritmos e verificação.
El documento describe el crecimiento del uso de Internet para una variedad de servicios como banca en línea, reservas de viajes y compras. También describe cómo la publicación gratuita en la web permite compartir fácilmente contenido individual como blogs, fotos y videos, así como combinaciones de estos. Además, permite crear espacios para comunicarse con amigos y apoyar comunidades.
La Web 2.0 permite el trabajo colaborativo entre usuarios y mejora las herramientas utilizadas en el aula y la empresa. Ofrece ventajas como la mensajería instantánea, software gratuito y actualizado, acceso desde cualquier lugar y dispositivo, menor requerimiento de hardware, y la posibilidad de que varias personas colaboren al mismo tiempo desde diferentes lugares.
Este documento presenta la descripción del programa Tecnólogo en Gestión Administrativa ofrecido por el SENA. El programa busca formar personal calificado en el área administrativa para contribuir al desarrollo económico y social del país. El programa dura 24 meses y se enfoca en el desarrollo de competencias relacionadas con la gestión administrativa, aplicación de tecnologías de información, organización de documentos y eventos, y procesamiento de información.
O documento discute a equipa por detrás da revista Programar e a importância de se ter uma boa equipa para o sucesso de um projeto. Explica que começar um projeto sozinho aumenta o risco de falha e que uma equipa consegue gerar melhores ideias e dar apoio mútuo aos seus membros.
Los modelos económicos empleados en econometría tienen dos características: son modelos causales expresados matemáticamente. El objetivo es representar la relación entre variables mediante tres pasos: identificar variables, formular su relación, y usar perturbaciones aleatorias. La econometría estima la parte determinística de los modelos económicos.
El documento presenta un proyecto realizado por un grupo de estudiantes para colocar un montacargas en el instituto con el fin de facilitar el acceso a las personas con discapacidad. El proyecto fue supervisado por el profesor Gustavo Alvares e incluyó una encuesta entre profesores y alumnos donde la mayoría consideró que era una buena idea instalar el montacargas.
El documento es una carta de amor de una persona a su pareja en su decimotercer aniversario. La persona expresa gratitud por el amor incondicional que se tienen desde que se conocieron hace trece meses y espera tener muchos más años juntos a pesar de la distancia actual.
Los puntos suspensivos (...) señalan una conclusión incompleta del texto anterior y le dan un sentido de suspenso. Pueden usarse para dejar una oración o texto inconcluso, indicar que se omite parte de una cita, o expresar duda o vacilación. Las reglas establecen que deben haber entre tres y cinco puntos, y se usan para varios propósitos literarios como sorprender al lector o dejar algo en suspenso.
Este documento fornece uma introdução à linguagem de programação Scheme, descrevendo suas principais características como o suporte a múltiplos paradigmas de programação, especialmente a programação imperativa e funcional, e conceitos como cálculo lambda e expressões condicionais.
El documento describe una práctica para mejorar la calidad de la educación. Propone que una educación de calidad forma ciudadanos con valores éticos y que respetan los derechos humanos. Mejorar la calidad de la educación es una tarea prioritaria que requiere el trabajo conjunto de la sociedad. La educación de calidad es clave para la igualdad, el desarrollo y el progreso de las naciones.
El reglamento estudiantil establece normas que deben seguir los estudiantes. Explica los requisitos para cambiar de carrera, como requiere 30 créditos aprobados. También cubre situaciones especiales como reserva de cupo por hasta 2 semestres por razones médicas. Finalmente, establece que los estudiantes serán calificados con 0 y reportados si cometen fraude, y pueden ser expulsados si reinciden.
La computadora está compuesta por una CPU, monitor, teclado y parlantes. Otros componentes incluyen diapositivas y capturas de pantalla que pueden ser clasificadas y animadas.
El documento discute la importancia de incluir las Tecnologías de la Información y la Comunicación (TIC) en la educación inicial. Explica que las TIC permiten transmitir y procesar información de manera instantánea y son fundamentales para reducir la brecha digital. También destaca que las TIC captan el interés natural de los niños y mejoran su interpretación de imágenes y sonidos, habilidades esenciales en las primeras edades. Finalmente, propone utilizar libros y otras actividades con TIC para desarrollar destrezas valios
Este editorial apresenta as principais alterações feitas na revista PROGRAMAR, incluindo:
1) Uma mudança no design para melhorar a experiência do leitor;
2) A alteração do software de paginação para o Scribus, que é gratuito;
3) Novas parcerias com outras comunidades para obter mais artigos;
4) Colunas de opinião e temáticas periódicas.
O editorial também informa que a revista passará a ser publicada de dois em dois meses.
México tiene altas tasas de obesidad en varios estados. El documento analiza los estados de México con mayores problemas de obesidad y las posibles causas, como falta de actividad física y malos hábitos alimenticios. El objetivo es crear conciencia sobre los riesgos de salud asociados con la obesidad y promover estilos de vida más saludables.
El documento presenta el reglamento institucional de una universidad, el cual establece normas sobre los derechos y deberes de los estudiantes, así como sobre procesos académicos y disciplinarios. El reglamento busca guiar el desarrollo académico de los estudiantes y fomentar una formación profesional de calidad mediante la fijación de estas reglas.
El documento describe tres trucos de Google: Atari Breakout, en el que buscar esa frase en Google Images convierte el contenido en un videojuego de Breakout; Zerg Rush, un juego en el que las letras "O" de "Google" destruyen cosas y el usuario debe evitarlo haciendo clic; y Google Gravity, que busca información con un efecto de falta de gravedad que desordena los resultados.
El uso constante de herramientas digitales en la vida diaria de los estudiantes los puede aislar de otras formas de comunicación y hacer que se sientan saturados por la gran cantidad de información disponible online, llevándolos en muchos casos a copiar contenido sin procesarlo. Las herramientas digitales se usan ampliamente en el hogar, trabajo y escuela, siendo útiles para tareas escolares, generar informes de trabajo y crear contenido promocional, aunque también pueden saturar a los estudiantes.
O documento descreve um plano de aula para alunos do 4o ano sobre tecnologia e comunicação. O objetivo geral é mostrar como a tecnologia está disponível para todos e transmite significados de forma visual. As atividades incluem assistir vídeos sobre a era digital, analisar formas de comunicação online e criar painéis demonstrativos sobre o tema. A avaliação será contínua e analisará o desempenho e criatividade dos alunos.
O documento descreve novas funcionalidades do kernel Linux 2.6.23, incluindo um novo scheduler e suporte para virtualização. Também discute a escassez iminente de endereços IP da versão 4 e a necessidade de adoção da versão 6. Por fim, anuncia o lançamento do Mac OS X Leopard.
1) O artigo discute os desafios de erros em programação e a necessidade de mais rigor e teste científico.
2) Programadores muitas vezes escrevem código sem compreender totalmente o que está sendo feito, levando a erros.
3) Embora erros nunca possam ser totalmente eliminados, o número pode ser reduzido com mais foco em algoritmos e verificação.
IPV6: A nova versão do protocolo de internet utilizado no mundo inteiroGuilherme Passero
O IP é um protocolo da camada de rede utilizado mundialmente para o encaminhamento de dados. O IPV6 é a versão desse protocolo que começará a ser utilizada de forma unificada nos próximos meses, substituindo a versão 4 que está em uso atualmente.
<1> O artigo descreve como criar um instalador ("setup") para uma aplicação desenvolvida no Visual Studio .NET 2003, permitindo distribuí-la de forma simples. <2> São explicados os passos para adicionar o projeto de saída ao projeto de instalação e definir propriedades básicas como autor e empresa. <3> Criar um instalador permite configurar e instalar uma aplicação de forma fácil para o utilizador, sem necessitar de conhecimentos técnicos.
Este artigo apresenta como desenvolver um jogo simples de Pong usando a biblioteca Slick2D em Java. Em 3 frases ou menos:
O artigo explica como criar a estrutura básica de um jogo em Java usando a biblioteca Slick2D, modelar os elementos do jogo Pong (bolas e raquetes) e implementar os métodos necessários para iniciar, atualizar e renderizar o jogo.
O documento discute: (1) o lançamento dos serviços 4G em Portugal pelas operadoras TMN, Vodafone e Optimus; (2) um projeto de inteligência artificial que gera jogos de vídeo a partir do zero; e (3) a descoberta de um vírus de computador semelhante ao Stuxnet que afetou centrais nucleares iranianas.
Este artigo descreve o Subversion, um sistema de controle de versões de software livre e de código aberto. O Subversion permite controlar e rastrear todas as alterações feitas no código de um software, permitindo reverter para versões anteriores, comparar alterações, e fundir contribuições de múltiplos programadores. O artigo explica porque o controle de versões é importante para o desenvolvimento de software, permitindo recuperar erros e integrar trabalho de equipa.
[1] O documento é uma revista sobre programação em português que inclui artigos sobre introdução à programação, notícias da indústria, projetos de código aberto e análises. [2] A edição inclui um editorial sobre os objetivos da comunidade para o ano, incluindo lançar novos projetos para aumentar a vitalidade no panorama nacional de programação. [3] Há também um guia inicial sobre programação, notícias sobre concurso da Microsoft, suporte do Firefox em sites, monitoramento de pirataria digital e correções de segurança no Apache.
Desenvolvimento multiplataforma em ambientes de programação nativos e abstr...Ráfagan Abreu
O documento descreve um estudo de caso sobre desenvolvimento multiplataforma, comparando abordagens nativas e abstratas. O autor implementou protótipos para iOS usando Objective-C e um jogo completo para Android usando Java, além de um simulador visual multiplataforma do algoritmo A*.
Este documento discute programação orientada a objetos em C# e fornece exemplos de código. Também aborda a diferença entre programação estruturada e orientada a objetos, características-chave da POO como encapsulamento, herança e polimorfismo.
Este artigo fornece uma introdução à programação para Android, abordando:
1) O que é o Android e suas principais funcionalidades;
2) As ferramentas necessárias para desenvolvimento de aplicações, nomeadamente o SDK e Eclipse;
3) Os passos iniciais para criação de uma aplicação, incluindo a estrutura de directorias e ficheiros.
O objetivo dessa palestra é mostrar a experiência da cooperação entre dois projetos de software livre (Expresso e Tine 2.0), baseados em países diferentes, e como ambos aprenderam a usar a comunicação e a arquitetura de software para se manterem conectados, e como isso pode ajudar empresas a encararem a contribuição a comunidades de software livre como um investimento e fazer isso parte de seu negócio.
1. O documento discute a adoção do software livre pelo Exército Brasileiro, com três planos de migração publicados entre 2004-2007. 2. Inclui discussões sobre antecedentes do software livre e casos de sucesso no Exército. 3. Tem como objetivo finalizar a migração para software livre e estabelecer padrões abertos.
O documento explica o que é IPv6, a nova geração do protocolo Internet. IPv6 é necessário devido ao esgotamento iminente de endereços IPv4 e permite endereçamento quase ilimitado para a Internet das Coisas. IPv6 também melhora a segurança, mobilidade e qualidade de serviço na Internet. A implantação de IPv6 é fundamental para o futuro crescimento e evolução da rede.
O documento discute a importância da adoção do IPv6 para permitir o contínuo crescimento da internet. O IPv4 está se aproximando do esgotamento de endereços disponíveis, enquanto o IPv6 fornece um espaço de endereçamento muito maior que pode suportar o crescimento indefinido da internet. Embora a transição para o IPv6 esteja ocorrendo gradualmente, é essencial que governos incentivem sua adoção para garantir que a internet continue permitindo a inovação e a inclusão digital.
Este documento discute o sistema de controle de versão Subversion (SVN). Ele explica como SVN permite controlar todas as alterações feitas no código de software ao longo do tempo, permitindo reverter para versões anteriores e integrar contribuições de vários programadores. Também descreve como instalar e usar o SVN no dia-a-dia do desenvolvimento de software.
Este documento fornece uma visão geral das novidades do Visual Studio 2012 RC, incluindo melhorias na interface do usuário e no desempenho. Além disso, discute como o Windows 8 está focado no processamento gráfico para melhorar a experiência do usuário.
1) O documento descreve o desenvolvimento de um aplicativo para Pocket PC para controle de pedidos em restaurantes, permitindo que os pedidos sejam feitos no PDA do garçom e enviados para a cozinha e caixa de forma sincronizada.
2) O aplicativo foi desenvolvido usando a plataforma Windows Mobile e a linguagem C#, e consiste em três partes - uma para o garçom no PDA, outra para a cozinha e outra para o caixa, comunicando-se por uma rede sem fio.
3) O documento discute os requisitos de
1° BootCamp - Workshop Internet Das Coisas Para Sustentabilidade AmbientalGustavo Aquino
Workshop apresentado na ETEC de Registro/SP com a proposta de um projeto inteligente para gerenciamento de água, utilizando o conceito de IoT (Internet of Things) e tecnologias como, Linux, PHP, Raspberry Pi e Arduino.
O documento resume a adoção do novo padrão IPv6 pela Tecla, tornando-se o primeiro provedor de hospedagem nacional a adotá-lo. Além disso, destaca a implementação de um novo sistema de gestão empresarial (ERP), o Microsoft Dynamics AX, e informa sobre eventos patrocinados pela Tecla em 2010.
O editorial discute como os programadores frequentemente se deparam com "montanhas" de trabalho ou problemas complexos, mas que ao superá-los descobrem prazer e alegria. A revista também supera "montanhas" a cada edição com a ajuda dos leitores.
Este artigo descreve o processo de desenvolvimento de aplicações para a Windows 8 Store, abordando questões como a interface do utilizador, login/logout e definições. Explica também que os programadores agora têm acesso à Windows Store Dashboard através de uma subscrição anual, permitindo desenvolver e publicar aplicações para a plataforma.
1) O documento fornece sete lições sobre como definir metas de forma efetiva. As lições incluem: definir metas de forma positiva, específica e ecológica; escrever as metas; entender a relevância e motivações por trás da meta; e identificar recursos disponíveis para alcançar a meta.
2) É importante definir metas de forma positiva, focando no que se quer em vez do que não se quer, para direcionar corretamente os pensamentos e ações. As metas também precisam ser específicas
O documento descreve várias teclas de atalho úteis no Eclipse, incluindo Ctrl + Espaço para autocompletar nomes, Ctrl + 1 para corrigir erros e gerar código, e Ctrl + 3 para acessar comandos. Além disso, fornece exemplos de configurações preferenciais como desativar verificação ortográfica e habilitar formatação e importação automática ao salvar.
O documento descreve o I Fórum da Revista Espírito Livre, realizado em Vitória-ES em novembro de 2011. O evento contou com a participação de diversos palestrantes e público e teve como objetivo promover a discussão de temas relacionados a tecnologia e software livre, além de arrecadar recursos para a revista. O documento apresenta depoimentos positivos sobre o evento de alguns dos palestrantes e participantes.
O artigo descreve o dispositivo Kinect da Microsoft, originalmente criado para a consola Xbox 360. Explica que o Kinect permite aos utilizadores interagir com jogos através de movimentos e voz, em vez de controlos tradicionais. Também resume as opções disponíveis para programar aplicações para o Kinect, incluindo o framework OpenNI e o SDK da Microsoft.
Este editorial discute a especulação versus informação na era digital. Muito se especula sobre lançamentos de produtos e eventos tecnológicos futuros, mas pouca informação concreta é fornecida. Isto gera desinformação e incerteza nos mercados. A sociedade precisa filtrar melhor as especulações e confiar mais em fatos comprovados.
O Git é um sistema de controlo de versões distribuído e gratuito que permite trabalhar de forma não linear e em paralelo em diferentes funcionalidades de um projeto. Diferentemente dos sistemas centralizados, o Git não depende de um servidor central para armazenar o histórico do projeto, permitindo trabalhar offline e de forma mais rápida. Embora cada desenvolvedor tenha uma cópia completa do repositório, é comum a utilização de um servidor de integração para compartilhamento de commits entre a equipe.
1) O artigo introduz o ASP.NET MVC 3.0, uma alternativa ao modelo WebForms no framework ASP.NET. 2) O ASP.NET MVC 3.0 é baseado no padrão MVC que separa a aplicação em três partes: Model, View e Controller. 3) O artigo explica brevemente como funciona o processamento de requisições no ASP.NET MVC 3.0 e como mapeia URLs para Controllers e Actions.
Esta edição da revista Espírito Livre apresenta entrevistas com desenvolvedores de CMS populares como glFusion, Jahia e EnanoCMS, além de artigos sobre o uso de CMS, produção colaborativa de conteúdo e casos de sucesso com Joomla. A edição também inclui colunas sobre portabilidade de software, contribuir com o Kernel Linux e como ter um media center com Linux.
Edição de aniversário da Revista Espírito Livre traz entrevista com Richard Stallman e Brian Gough do Projeto GNU, entrevista com desenvolvedor em Python Luciano Ramalho e artigos sobre tecnologias como PLC, GIMP e redes.
O documento apresenta as seguintes informações principais:
1) A revista traz uma entrevista exclusiva com Mark Surman, diretor executivo da Fundação Mozilla, sobre liberdade na internet.
2) Vários colunistas discutem temas relacionados à internet, como privacidade, redes P2P, expressão online e software livre.
3) A edição apresenta também novidades sobre distribuições GNU/Linux, como o Ekaaty, e ferramentas de código aberto para computação gráfica.
1) A edição traz matérias sobre computação gráfica e software livre, incluindo entrevistas com desenvolvedores do GIMP e do Projeto Ruínas.
2) Há também artigos sobre produção de quadrinhos, música e vídeo com software livre, além de eventos como o FLISOL e o Document Freedom Day.
3) Também são abordados temas como perícia forense, Joomla, Moodle e reciclagem digital.
O documento apresenta as seguintes notícias: 1) A Oracle afirmou que continuará investindo no MySQL, OpenOffice.org, Solaris e Java; 2) A Nova Zelândia testará a substituição de softwares proprietários por Linux em agências governamentais; 3) Foi lançada uma nova versão do Noosfero, plataforma de software social brasileiro.
Este documento apresenta uma edição de uma revista sobre software livre. O editorial discute os principais tópicos abordados na edição, incluindo entrevistas com membros de projetos de código aberto e artigos sobre redes sociais, gráficos vetoriais, educação e tecnologia da informação. A edição também lista eventos e lançamentos de software para os próximos meses.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Revista programar 28
1.
2. Editorial
EDITORIAL
EQUIPA PROGRAMAR FMI - Fim da Maravilhosa Internet?
Coordenadores Aconteceu. O ICANN (Internet Corporation for Assigned Names and
António Silva Numbers) distribuiu o último bloco de endereços IPV4 pelos 5 RIRs
Fernando Martins (Regional Internet Registries). Ou seja após esses endereços serem
atribuídos aos ISP, poderá estar em causa a aceitação de novos clientes por
Editor parte dos ISP e não haverá no IPV4 mais lugar a expansão. Ou haverá? O
António Silva facto é que a norma IPV6 já está preparada (foi descrito como um standard
da Internet num documento publicado em Dezembro de 2008), e já em
Design Agosto de 2008, na edição #1 5 da Revista PROGRAMAR, foi publicado um
Sérgio Alves (@scorpion_blood) artigo que falava um pouco sobre esta nova norma. Contudo a verdade é
que parece não existir uma vontade comercial muito grande para adoptar
Redacção esta nova norma, porque é financeiramente desagradável, uma vez que é
André Vala, Augusto Manzano, Fernando necessário aos ISP fazerem a actualização do seu hardware de rede, aos
Martins, Jorge Paulino, Pedro Silva, Pedro programadores actualizarem as suas aplicações…
Veloso, Ricardo Rodrigues, Ricardo Trindade,
Sara Silva, Virgílio Esteves No dia 8 de Junho, algumas empresas do sector da Internet e não só
disponibilizarão durante 24 horas os seus serviços em IPV6, para o
Staff utilizador testar os seus serviços com esta nova norma e para pressionar
António Santos, Fábio Domingos, Jorge um pouco os ISP a fazerem a migração. Pode testar a sua ligação neste
Paulino, Marco Marques site: http://test-ipv6.com/
Contacto Nos EUA existem já soluções que tentam contornar este problema, sem no
revistaprogramar@portugal-a-programar.info entanto ser necessário passar a usar o IPV6. Tecnicamente dois ou mais
clientes de um ISP estarão numa rede mais pequena (possivelmente
Website ligados pela central mais próxima), e existirá um router, e esse sim terá o
http://www.revista-programar.info verdadeiro endereço IP da internet, enquanto os PCs dos clientes têm
apenas endereços de redes internas. Na prática dois ou mais clientes
ISSN podem ter o mesmo IP ao mesmo tempo (algo idêntico ao que acontece nos
1 647-071 0 hotspots). Mas não será isto simplesmente um remedeio? O ser humano
tem tendências para rejeitar mudanças, prolongando até ao limite em que já
não pode adiar mais essa mudança.
Um estudo mundial recente mostra que uma grande parte dos jovens dos
denominados países desenvolvidos está dependente de dispositivos com
acesso à Internet, sofrendo sintomas de abstinência comuns quando estão
afastados muito tempo desses dispositivos. Traduzindo não podem viver
sem a Internet. Mas e se os ISP não derem “o salto” para que a Internet
continue a existir como a conhecemos? E se os programadores não
adaptarem as suas aplicações a este salto? Poderá isto matar a Internet,
pelo facto de o utilizador deixar de confiar nela?
António Silva <antonio.silva@revista-programar.info>
A revista PROGRAMAR é um projecto voluntário, sem fins lucrativos. Todos os artigos são da responsabilidade dos autores, não podendo a revista ou a
comunidade ser responsabilizada por alguma imprecisão ou erro. Para qualquer dúvida ou esclarecimento poderá sempre contactar-nos.
2
3. Índice
INDICE
TEMA DE CAPA
6 Business Connectivity Services
A PROGRAMAR
17 Lua – Linguagem de Programação (Parte 8)
21 jQuery 1 .5 e AJAX
27 Datagrid em Windows Presentation Foundation
37 Planos de Execução em ORACLE
47 Smarty PHP Template Engine
COLUNAS
48 CORE DUMP - O X No Quadrado Certo
50 VISUAL (NOT) BASIC - Entity Framework 4.0: Model-First e Code-First
COMUNIDADES
58 AndroidIPC - Inter Process-Communication
62 Automatização de deployments em Windows Azure
EVENTOS
1 5 Abr. SQL Saturday - Portugal 2011
1 5 Abr. 6º Encontro Nacional de Estudantes de Informática ENEI’2011
1 6 Abr. SharePointPT - 1 0ª Reunião da SPUGPT
1 6 Abr. 1 9ª Reunião Presencial da Comunidade NetPonto - Lisboa
03 Mai. Fim das Inscrições ONI'2011
06 Mai. Microsoft WebCamp Portugal - Lisboa
06 Mai. Prova de Qualificação na Internet ONI'2011
09 Mai. CLOUD para DEVELOPERS
1 3 Mai. StopNplay Lan Party 2011
27 Mai. Final Nacional ONI'2011
Para mais informações/eventos: http://bit.ly/PAP_Eventos
3
4. NOTICIAS Noticias
R e s u l ta d o s s o b re o Pa n o ra m a La n ç a m e n to d o G N O M E 3 . 0
N a c i o n a l Te c n o l ó gi c o
O Sapo Developers Blog fez recentemente um inquérito O GNOME 3.0 é o principal marco na história do projeto
sobre um conjunto de questões sobre o Panorama Nacional GNOME. O lançamento introduz um excitante novo
Tecnológico. Responderam 421 pessoas sendo a maioria ambiente de trabalho que foi desenhado para utilizadores
dos inquiridos jovens com idades entre os 21 e os 35 anos. comuns e adequado para uma grande quantidade de
Os resultado apresentados, revelam que os recursos online modernos dispositivos computacionais. As tecnologias de
mais influentes são: desenvolvimento do GNOME foram substancialmente
melhoradas para o GNOME 3.0. Modernizadas e
Portugal a Programar padronizadas, elas irão permitir aos desenvolvedores
Aberto até de Madrugada promover melhorias na experiência do utilizador com
SAPO Tek menos tempo e esforço. E o GNOME 3.0 vem com as
Zwame mesmas aplicações GNOME que os utilizadores conhecem
Planet Geek e confiam, muitos dos quais receberam melhorias
Pplware significantes.
Exame Informática
SAPO Developers Blog Mais info
Globais: Engadget, Gizmodo, Mashable, ReadWriteWeb,
outras.
Mais info
Le i d a s N o rm a s a b e rta s Wi n d o ws 8 p o d e rá te r Ap p
a p ro va d a n a AR Sto re
Foi votada no Plenário da Assembleia da República a Lei om a disponibilização da primeira versão do Windows 8
das Normas Abertas, uma proposta que já tinha passado na para os RTM’s, começaram a surgir as primeiras imagens
especialidade e prevê a garantia de interoperabilidade e do que será o novo sistema operativo da Microsoft. Estas
adopção de normas abertas nos sistemas informáticos do imagens, não oficiais mostram um sistema operativo que
Estado. seguirá a continuidade do que o Windows 7 nos trouxe,
mas também novidades que farão as delicias de todos os
Depois de já ter conseguido gerar consenso, e muitas que o forem usar.
vezes unanimidade, na discussão na especialidade, a Lei As últimas imagens que surgiram mostram que o Windows
foi aprovada com votos a favor do PEV, PCP, BE, CDS e 8 poderá ter uma store incorporada e onde os utilizadores
PS, abstendo-se o PSD. poderão aceder às aplicações que pretenderem. Ainda não
existem muitas informações sobre que software esta store
Bruno Dias, deputado do PCP, já tinha adiantado que "este conterá e se apenas existirá software gratuito ou se existirá
foi um processo legislativo de enorme abertura e espírito a possibilidade de os utilizadores adquirem aplicações.
construtivo de todas as partes. Não houve "ideias fixas" O conceito de store dentro do sistema operativo não é
porque as opiniões que foram surgindo contribuíam para novo, mas nos últimos tempos tem ganho uma importancia
aperfeiçoar o texto, e dessa maneira foram tidas em conta". grande, com a disponibilização da Apple Store dentro do
Mac OS e até com o Ubuntu Software Center.
4
6. TEMA DE CAPA
B u s i n e s s C o n n e c ti vi ty S e rvi c e s
O SharePoint 201 0 é uma plataforma complexa e com um
impressionante conjunto de funcionalidades nativas que lhe Arquitectura
permitem adaptar-se a uma enorme variedade de
situações. Uma das novas funcionalidades com mais A tecnologia BCS não se limita a apenas um serviço ou API
potencial designa-se Business Connectivity Services e este dentro do SharePoint 201 0. É, na realidade, um conjunto de
artigo é uma introdução a esta tecnologia e às suas componentes, serviços e ferramentas tal como apresentado
potencialidades. no esquema abaixo.
O que são os Business Connectivity
Services e para que servem?
Business Connectivity Services (BCS) é o nome da
tecnologia integrada no SharePoint 201 0 que permite ler e
escrever informação em sistemas externos a partir do
SharePoint 201 0 e do Office 201 0. Trata-se de uma
evolução da tecnologia Business Data Catalog (BDC) Figura 1 - Arquitectura dos Business Connectivity Services
introduzida no SharePoint 2007, e sobre a qual foram feitas
várias melhorias, nomeadamente:
Business Data Connectivity (BDC) Service
• Possibilidade de leitura e escrita sobre a fonte de dados
externa; O Business Data Connectivity Service é uma das peças
• Suporte para cenários de autenticação mais complexos; mais importantes dos BCS. Trata-se do componente que
• Suporte para múltiplas fontes de dados; permite, através do seu repositório central de
• Integração com aplicações Office; metainformação, guardar as descrições da informação à
• Novas e melhores formas de apresentar a informação; qual se pretende aceder bem como do próprio sistema
• Ferramentas destinadas à criação e manipulação dos externo onde esta está armazenada.
modelos;
• Extensibilidade através de assemblies .Net.
Metadata Store
O objectivo desta tecnologia é permitir a integração de
informação proveniente de sistemas externos e apresentá- O repositório de metainformação é a base de dados
la em SharePoint e aplicações Office com o mínimo de utilizada pelo Business Data Connectivity Service para
esforço possível e, idealmente, sem ser necessário armazenar as descrições da informação e dos sistemas
escrever qualquer linha de código. Há, de facto, um externos onde esta está armazenada. Este repositório não
conjunto de cenários em que é possível a utilização da contém qualquer informação proveniente dos sistemas
tecnologia BCS apenas por configuração mas é a sua externos, apenas a metainformação necessária para a
extensibilidade que lhe permite adequar-se a praticamente obter.
qualquer necessidade de integração.
6
7. TEMA DE CAPA
B u s i n e s s C o n n e c ti vi ty S e rvi c e s
Connectors modo offline sejam replicadas assim que o sistema externo
fica disponível.
Os connectors são as peças que permitem ao Business
Data Connectivity Service ligar-se às fontes de dados
externas descritas nos modelos armazenados no seu Principais Conceitos
Metadata Store. São fornecidos três conectores com o
produto: Uma vez conhecida a arquitectura dos Business
• Database Connector – permite a ligação a bases de Connectivity Services, é importante que se perceba em
dados SQL Server. que consiste a metainformação que é armazenada na
• WCF/Web Services Connector – permite a ligação a Metadata Store pelo Business Data Connectivity Service.
serviços WCF ou web services.
• .Net Assembly Connector – permite a ligação utilizando
um assembly .Net desenvolvido à medida. Uma vez que se Modelo
trata de um assembly desenvolvido à medida, este conector
permite a ligação a virtualmente qualquer fonte de dados A metainformação utilizada pelo BDC Service e
externa, incluindo até a ligação a múltiplas fontes em armazenada na Metadata Store materializa-se em ficheiros
simultâneo. XML que descrevem Modelos, normalmente designados
Este mecanismo de connectors é extensível, sendo ainda por BDC Metadata Models. No SharePoint 2007, estes
possível desenvolver conectores à medida, para casos em ficheiros de metainformação eram designados por
que os conectores existentes não são suficientes. application definition files.
Um modelo contém, de forma declarativa, toda a
informação necessária para que os BCS consigam ligar-se
BDC Client Runtime a um sistema externo e obter a informação que se encontra
armazenado no mesmo.
As aplicações cliente que fazem parte do Office 201 0
conseguem também expor informação proveniente de
sistemas externos através dos BCS. Isso é possível porque Lob System
o Office 201 0 inclui o BDC Client Runtime, um componente
que faz no contexto da aplicação cliente o que o BDC No contexto dos BCS, o Lob System (ou Line-of-Business
Service faz no contexto do System) refere-se ao sistema externo no qual está
servidor SharePoint, ou seja, acede ao repositório de armazenada a informação a que se pretende aceder. Este
metainformação e, através das definições que este contém, sistema pode ser uma base de dados relacional, ou
acede à informação propriamente dita. qualquer outro sistema que exponha essa informação
através de web services ou serviços WCF.
Client Data Cache
External Content Type
No sentido de acelerar o acesso à informação, bem como
para suportar cenários de acesso offline à informação, os O External Content Type (ECT) é o conceito central e mais
BCS utilizam uma cache para guardar a informação externa importante dos BCS, uma vez que descreve uma entidade
obtida através dos mesmos. Esta cache é baseada numa de negócio, ou seja, descreve a estrutura e comportamento
base de dados SQL Server 2005 Compact Edition e possui da informação a que se pretende aceder. Exemplos de
um mecanismo de sincronização automático que permite ECTs podem ser Cliente, Factura ou Colaborador.
que todas as alterações efectuadas sobre a informação em Na definição de um ECT é especificada a estrutura e o
7
8. TEMA DE CAPA
B u s i n e s s C o n n e c ti vi ty S e rvi c e s
comportamento da entidade, ou seja: a uma relação entre duas entidades (External Content
• Os campos que constituem uma instância da entidade, e Types). No entanto, uma vez que não há garantia que a
respectivo tipo de dados. Por exemplo: Nome, Morada ou fonte de dados seja uma base de dados relacional, a
País. associação requer a existência de métodos que permitam
• O mapeamento destes campos para objectos utilizados obter, a partir de uma entidade, elementos da entidade
pelas aplicações Office cliente. Por exemplo: o campo relacionada.
Nome da entidade corresponde ao campo FullName no
Outlook.
• Os métodos que devem ser invocados pelos BCS para Exemplo de Modelo
ler, criar, actualizar e apagar instâncias da entidade. Estes
métodos pode corresponder, por exemplo, a stored Felizmente, na grande maioria dos casos, não precisamos
procedures, queries SQL ou web services. de editar o modelo manualmente já que as ferramentas
No contexto de um Modelo, podem ser definidas várias fornecidas pela Microsoft permitem fazer grande parte da
entidades, ou seja, vários External Content Types. configuração de forma visual. No entanto, apenas a título
de exemplo, um ficheiro de modelo tem o aspecto
apresentado abaixo.
Métodos
Os métodos são abstracções da API do sistema externo e
permitem ao BDC Service saber que stored procedures ou
web services devem ser chamados para manipular a
informação. A definição de um método é feita no contexto
de uma entidade e baseia-se sempre num dos estereótipos
disponibilizados pelos BCS. Existem cerca de 20
estereótipos possíveis, como sejam, Updater (para
actualizar um item), Finder (para listar itens), SpecificFinder
(para obter um item específico), Deleter (para apagar um
item) entre outros.
Figura 2 - Exemplo parcial de modelo BDC
Filtros
Os filtros descrevem os parâmetros que podem ser Apresentar Informação Externa
passados para os métodos na definição de cada entidade. Mas toda esta complexidade tem um objectivo – o de
Existem 1 8 tipos de filtros que podem ser utilizados nos permitir apresentar e manipular a informação armazenada
métodos e que indicam ao BDC Service que informação em sistemas externos – por isso não faltam várias
deve ser passada para os mesmos. Exemplos de filtros são alternativas para o fazer.
o UserName que permite passar o username do utilizador
em contexto, ou o Limit que define o número máximo de
itens a retornar numa chamada. External List
A External List é um novo tipo de lista no SharePoint 201 0
que, através da associação a um External Content Type,
Associação permite visualizar e manipular a informação desse ECT
como se esta estivesse armazenada numa lista de
Uma associação, designada por association, corresponde SharePoint normal. Na realidade, a informação continua a
8
9. TEMA DE CAPA
B u s i n e s s C o n n e c ti vi ty S e rvi c e s
residir no sistema externo e é lida e manipulada em tempo funcionamento é semelhante ao de uma coluna lookup,
real. permitindo ao utilizador seleccionar um dos itens
retornados pelo ECT.
Figura 4 - External Data Column
Uma das vantagens das External Data Columns é a
possibilidade de serem utilizadas também pelo Word 201 0,
permitindo ao utilizador seleccionar um item exposto
através de BCS e utilizando essa informação nos
Figura 3 - External List documentos.
Tal como para as External Lists, para utilizar um ECT numa
A grande vantagem das External Lists é que se parecem e External Data Column este tem que definir, pelo menos, os
comportam exactamente como listas normais e, métodos Finder e SpecificFinder.
adicionalmente, o object model do SharePoint trata-as
como se assim fossem, permitindo aos developers ler e
escrever itens como se estes estivessem armazenados no Business Data Web Parts
próprio SharePoint.
Por outro lado, nem tudo funciona exactamente como nas As Business Data Web Parts são, como o nome indica, um
listas tradicionais. Em particular: conjunto de web parts que conseguem ligar-se a fontes de
• Workflows dados externas através de um ECT e apresentar essa
• Alertas informação no SharePoint. Estas web parts também já
• Pastas (folders) existiam no SharePoint 2007 mas foram melhoradas no
• Anexos (attachments) SharePoint 201 0, nomeadamente permitindo fazer cache
• Feeds RSS da informação externa para melhorar o desempenho.
• Exportação para Excel
Para que um ECT possa ser utilizado numa External List
este tem que definir, pelo menos, os métodos Finder (listar
itens) e SpecificFinder (obter um item específico). Isto
permitirá à External List apresentar a lista de itens e ver o
detalhe de cada um. Adicionalmente, se o ECT possuir
métodos Updater (actualizar um item), Deleter (eliminar um
item) e Creator (criar um novo item), a External List Figura 5 - Business Data Web Parts
disponibilizará as acções correspondentes.
As Business Data Web Parts utilizam XSLT para apresentar
a informação, o que lhes dá uma enorme flexibilidade no
External Data Column que respeita ao seu aspecto gráfico bem como a
possibilidade de edição através do SharePoint Designer
A External Data Column já existia no SharePoint 2007 e, 201 0.
embora tenha sido ligeiramente melhorada no SharePoint As web parts incluídas neste pacote são:
201 0, o seu objectivo é o mesmo – permitir utilizar • Business Data List – permite listar instâncias (itens) de
informação externa numa coluna de uma lista. O uma entidade (ECT).
9
10. TEMA DE CAPA
B u s i n e s s C o n n e c ti vi ty S e rvi c e s
• Business Data Item – permite apresentar o detalhe de Administration, acedendo à gestão do Business Data
uma instância (item) de uma entidade (ECT). Connectivity Service. A única informação que precisamos
• Business Data Item Builder – permite utilizar parâmetros de fornecer é o endereço URL do site onde estas páginas
da query string para criar uma instância (item) de uma serão automaticamente criadas e o SharePoint fará o resto
entidade (ECT) que pode depois ser utilizada para por nós.
alimentar outras web parts, nomeadamente a Business Neste ponto, basta-nos apenas dizer ao Search Service
Data Item web part. que deve indexar uma nova Content Source do tipo Line of
• Business Data Related List – permite listar instâncias Business Data e efectuar um Full Crawl. Após a conclusão
(itens) de uma entidade (ECT) relacionada. É do crawl a informação externa passa a estar disponível
especialmente útil para apresentar informação em cenários para ser pesquisada e a informação de cada item será
de Master/Detail. apresentada na respectiva Profile Page.
• Business Data Connectivity Filter – permite filtrar a
informação proveniente de um ECT antes que seja
consumida por outra web part, como a Business Data List User Profiles
web part.
• Business Data Actions – apresenta as acções Utilizando os BCS, o SharePoint 201 0 consegue utilizar
disponíveis para uma instância (item) de uma entidade fontes de dados externas para complementar a informação
(ECT). dos User Profiles. Para isso basta que seja possível
mapear User Profiles com itens de um ECT, utilizando um
campo de cada lado.
Pesquisa Não é possível configurar um ECT como fonte principal
para a sincronização de perfis, mas é possível que uma
Um dos maiores benefícios oferecidos pelos BCS é a sincronização com Active Directory seja complementada
possibilidade de indexar e realizar pesquisas sobre a com informação proveniente de um ECT.
informação externa exposta através dos ECTs como se se
tratasse de informação armazenada em listas no Integração com Office Client
SharePoint.
Para que um ECT seja indexável é necessário que defina, A integração da informação externa nas aplicações do
pelo menos, os métodos IDEnumerator e SpecificFinder. O Office 201 0 é outra das novidades do SharePoint 201 0
primeiro permitirá ao SharePoint obter os IDs de todos os relacionada com os Business Connectivity Services. Até
itens e o segundo obter o detalhe de cada um. agora, este tipo de funcionalidade só era possível com
Adicionalmente, o modelo tem que ter a propriedade desenvolvimentos à medida de razoável complexidade.
ShowInSearchUI para que o SharePoint o consiga indexar. Com os BCS é possível apresentar a informação externa
Mas isto é para que a informação seja indexada. Para que, nas aplicações Office, utilizá-la em cenários offline e, em
ao realizar uma pesquisa, o utilizador consiga clicar sobre determinados casos, actualizar a informação directamente
um dos resultados e visualizar informação detalhada sobre na fonte de dados externa. Contudo, nem todas as
o resultado que seleccionou, precisamos também de aplicações incluídas no Office 201 0 suportam esta
configurar a Profile Page de cada ECT indexado. integração nativamente. De momento apenas o Outlook
Uma Profile Page não é mais que uma página em 201 0, o Word 201 0, o Access 201 0, o InfoPath 201 0 e o
SharePoint com algumas web parts que recebe o SharePoint Workspace 201 0 conseguem fazê-lo, sendo que
identificador de um item na query string e apresenta cada uma das aplicações utiliza esta tecnologia de forma
informação detalhada sobre esse item, incluíndo itens de diferente.
ECT relacionados (através de Associations).
As Profile Pages são configuradas na Central
10
11. TEMA DE CAPA
B u s i n e s s C o n n e c ti vi ty S e rvi c e s
Outlook 201 0 Figura 6 - Informação adicional (não mapeada) do ECT
O Outlook 201 0 é uma das aplicações que tira melhor Tal com as restantes aplicações Office, o Outlook tira
partido das funcionalidades cliente dos BCS. Para que seja partido de um mecanismo de cache e sincronização da
possível visualizar a informação exposta através de um informação permitindo ao utilizador trabalhar sobre esta em
ECT no Outlook 201 0 são necessários dois passos na offline e sincronizando-a automaticamente assim que o
configuração desse ECT: acesso ao sistema externo fica disponível.
1 . Definir qual o tipo de informação exposto pelo ECT, de
entre os tipos de informação manipulados pelo Outlook:
Contactos (Contacts), Tarefas (Tasks), Eventos Word 201 0
(Appointments) ou Artigos (Posts). Esta configuração pode
ser feita através do SharePoint Designer ou directamente O Word 201 0 é outras das aplicações Office que tem
no XML do Modelo. suporte nativo para os BCS. No entanto, os cenários para
2. Mapear os campos do ECT com os campos do Outlook aplicação desta tecnologia são diferentes dos disponíveis
para esse tipo de informação. Por exemplo, indicar quais os para Outlook. A utilização dos BCS em Word 201 0 limita-se
campos do ECT que correspondem aos campos Last à inserção de informação proveniente de fontes de dados
Name, First Name, E-mail Address e outros, no Outlook. externas em documentos através de Quick Parts.
Existindo uma External List que exponha a informação do Para quem não conhece, as Quick Parts são uma
ECT, passa a ser possível utilizar o botão funcionalidade do Word que permite criar campos para
Connect to Outlook disponibilizado pela preenchimento dinâmico da informação no meio do texto de
ribbon da lista. Ao pressionar o botão, o um documento. Estes campos podem depois ser
SharePoint vai analisar a especificação do preenchidos automaticamente com informação proveniente
ECT e vai incluí-lo num pacote de instalação Click Once do content type do documento, no SharePoint. Isto inclui
que é imediatamente instalado no Outlook 201 0 do informação proveniente de uma External Data Column
utilizador como um Add-In. existente na Biblioteca de Documentos em que o
Uma vez instalado o pacote, a lista aparece na interface do documento está armazenado.
Outlook permitindo ao utilizador interagir com a informação O funcionamento é simples:
externa como se fossem contactos, tarefas, eventos ou 1 . Numa Biblioteca de Documentos, cria-se uma External
artigos normais. Caso o ECT defina os métodos Data Column configurando-a para expor a informação de
necessários, é ainda possível utilizar o Outlook para um determinado ECT e definindo os campos do ECT que
actualizar a informação da fonte de dados externa. Todos são expostos.
os campos expostos pelo ECT que não estejam mapeados 2. Cria-se um novo documento nessa biblioteca,
em campos do objecto Outlook, são mostrados numa utilizando o botão New da ribbon.
secção própria do detalhe desse objecto e podem também 3. Já no Word, através da ribbon Insert, inserimos uma
ser actualizados. (ou mais) Quick Part, seleccionando a(s) Document
Property(s) que corresponde(m) à informação externa que
queremos incluir no documento.
11
12. TEMA DE CAPA
B u s i n e s s C o n n e c ti vi ty S e rvi c e s
Figura 7 - Quick Parts com informação externa
SharePoint Workspace 201 0
4. O Word passa então a permitir que o utilizador
seleccione um item do ECT, utilizando o Entity Data Picker, O SharePoint Workspace 201 0 é a evolução do Groove
e popula automaticamente todos os campos relacionados. 2007 e posiciona-se como a
ferramenta de acesso offline à
informação guardada em SharePoint
201 0, incluindo External Lists. Tal
como para os restantes tipos de
listas, basta clicar no botão Sync to SharePoint Workspace
para que o conteúdo das mesmas seja descarregado para
a máquina do utilizador ficando disponível quando este está
desligado do servidor.
No que respeita aos BCS, o que o SharePoint Workspace
faz é descarregar a definição do ECT associado à External
List e armazená-la localmente, bem como os forms de
inserção, edição e consulta da informação que foram
Figura 8 - External Data Picker gerados para essa External List. Tal como as restantes
aplicações Office descritas, o SharePoint Workspace utiliza
a cache local para garantir a disponibilização da informação
Access 201 0 externa quando o sistema externo não está disponível.
O Access 201 0 consegue importar um modelo Business
Data Connectivity (BDC) e apresentar a informação externa Soluções e Ferramentas
sob a forma de tabelas. No entanto, as tabelas criadas são
read-only, ou seja, não é possível escrever de volta para a Uma das grandes queixas de quem utilizou o Business
fonte de dados externa. Data Catalog no SharePoint 2007, foi a falta de ferramentas
que permitissem uma boa experiência na criação e
manipulação da metainformação (modelos). A Microsoft
InfoPath 201 0 ouviu essas queixas e brindou-nos com duas ferramentas
fantásticas para utilizar com os Business Connectivity
Quando é criada uma External List, são também gerados Services:
forms para inserção, edição e consulta da informação • SharePoint Designer 201 0
externa. Por omissão, estes forms são gerados como • Visual Studio 201 0
páginas ASP.NET normais mas, utilizando o SharePoint
Designer ou a ribbon da External List, é possível criar forms
mais inteligentes utilizando InfoPath. Os forms são gerados SharePoint Designer 201 0
automaticamente, mas podem depois ser modificados
utilizando o InfoPath. O SharePoint Designer 201 0 é uma ferramenta gratuita e
É ainda possível arrastar um External Data Picker para um obrigatória para qualquer utilizador avançado ou developer
formulário InfoPath e definir uma External List como fonte de SharePoint. Possui um enorme número de
de informação, permitindo a leitura e escrita de informação funcionalidades focando-se principalmente na criação de
proveniente de fontes de dados externas. soluções sem código, ou seja, soluções de customização
12
13. TEMA DE CAPA
B u s i n e s s C o n n e c ti vi ty S e rvi c e s
do SharePoint sem necessidade de desenvolvimentos à
medida.
Figura 1 0 - Editor visual de Modelos BDC no Visual Studio
201 0
Figura 9 - Utilização do SharePoint Designer para gerir
ECTs
Alguns dos casos de uso possibilitados pelo Visual Studio
201 0 são:
No que respeita aos Business Connectivity Services, o
• Criar e manipular External Content Types, utilizando o
SharePoint Designer 201 0 permite:
novo template de projecto Business Data Connectivity
• Criar e manipular External Content Types, incluindo
Model. Este template inclui um conjunto de designers que
alterar configurações, criar novos métodos e mapear ECTs
permite a edição visual do Modelo e respectivos ECTs, e
com objectos Office. Na criação de ECTs apenas é possível
possibilita ainda o desenvolvimento de soluções utilizando
efectuar ligações a bases de dados SQL Server, Web
código .Net para acesso a virtualmente qualquer fonte de
Services cujos schemas sejam suportados pelos BCS ou
dados externa.
assemblies .Net existentes.
• Criar componentes reutilizáveis para os BCS utilizando
• Criar e configurar External Lists com base em ECTs já
os vários pontos de extensibilidade da API dos BCS, como
criados.
sejam Code Actions que podem ser utilizadas dentro do
• Gerar e editar formulários InfoPath de suporte às
Outlook, External Data Parts para utilização em task panes
External Lists.
declarativas no Outlook, actividades para workflows e
• Utilizar informação externa em workflows.
outros.
• Criar web part pages e profile pages
• Criar Add-Ins para aplicações Office com suporte para
Estas funcionalidades permitem a utilização dos BCS sem
BCS, utilizando o object model dos BCS.
qualquer desenvolvimento à medida e adaptam-se às
• Criar workflows à medida que tiram partido de
necessidades mais simples e comuns.
informação em External Lists ou utilizam o object model dos
BCS.
Visual Studio 201 0
Tipos de Solução por Ferramenta
Com o Visual Studio 201 0 podemos criar soluções mais
complexas para casos em que as funcionalidades do
A tabela na página seguinte ajuda a seleccionar a
SharePoint Designer 201 0 não são suficientes.
ferramenta ideal para cada necessidade.
Adicionalmente, com o Visual Studio 201 0 podemos criar
componentes reutilizáveis que depois poderão ser
incorporados em soluções através do SharePoint Designer.
13
14. TEMA DE CAPA
B u s i n e s s C o n n e c ti vi ty S e rvi c e s
dados adicional para a sincronização de perfis do
SharePoint.
• Necessidade de sincronizar contactos que estão
armazenados num sistema de negócio ou ERP. Utilizando
os BCS é possível definir um ECT que expõe esses
contactos através de uma External List e ligá-la ao Outlook
onde serão geridos como contactos normais. Este cenário
permite ainda que os utilizadores tenham acesso aos
contactos mesmo quando estão fora do escritório, em modo
offline.
Casos de Uso • Necessidade de apresentar informação proveniente de
fontes de dados distintas. Utilizando o conector para
Uma das perguntas mais frequentes relacionadas com a assemblies .Net e desenvolvendo um ECT com o Visual
utilização de Business Connectivity Services é quais os Studio 201 0, podemos construir cenários de acesso a
casos de uso desta tecnologia ou, de outra maneira, múltiplas fontes de dados com agregação dos mesmos
quando devo utilizar os BCS. numa única entidade.
Alguns dos casos de uso mais comuns para a utilização de
BCS são: • Necessidade de indexar e pesquisar informação
residente num sistema de negócio ou ERP. Os BCS
• Necessidade de apresentar informação de uma base de permitem ao serviço de pesquisa do SharePoint indexar
dados SQL Server. Utilizando BCS é possível apresentar e, conteúdos expostos através de ECTs e pesquisá-los como
caso seja necessário, modificar a informação utilizando se a informação estive armazenada no SharePoint.
External Lists sem ser preciso desenvolver uma única linha Há muitos outros cenários onde os BCS podem ser úteis,
de código à medida. É um back-office instantâneo. por vezes apenas como um dos componentes da solução.
• Necessidade de complementar os User Profiles dos
utilizadores do domínio com informação proveniente do Funcionalidades por Versão do SharePoint
sistema de gestão de Recursos Humanos ou ERP. Tal
como já foi falado, os BCS permitem responder a este A infraestrutura utilizada pelos Business Connectivity
requisito permitindo configurar um ECT como fonte de Services está disponível em todas as versões do
14
15. TEMA DE CAPA
B u s i n e s s C o n n e c ti vi ty S e rvi c e s
SharePoint, incluíndo o SharePoint Foundation 201 0. No
entanto, nem tudo vem incluído na versão gratuita. A tabela Connecting to a .NET Framework Source Using Business
abaixo ajuda a clarificar quais as funcionalidades que estão Connectivity Services in Office 201 0
incluídas em cada uma das versões do SharePoint 201 0. Visual How To sobre como desenvolver um ECT usando
Visual Studio 201 0 para obter dados de uma fonte externa.
O suporte para Business Connectivity Services em http://msdn.microsoft.com/en-
aplicações Office requer o Microsoft Office 201 0 us/library/ff394331 (office.1 4).aspx
Professional Plus, ou superior.
Microsoft Business Connectivity Services
Secção do SDK do SharePoint 201 0 dedicada aos
Links Úteis Business Connectivity Services.
Aqui ficam alguns links úteis para quem está agora a http://msdn.microsoft.com/en-us/library/ee556826.aspx
começar e quer saber mais sobre Business Connectivity
Services. Business Connectivity Services Resource Center
Resource Center dedicado aos Business Connectivity
Microsoft Business Connectivity Services Team Blog Services, no TechNet.
O blog official da equipa que desenvolveu os BCS, com http://technet.microsoft.com/en-
imensos artigos com vários níveis de complexidade. us/sharepoint/ee51 8675.aspx
Obrigatório para todos os interessados nesta tecnologia.
http://blogs.msdn.com/b/bcs/ Business Connectivity Services: Technical Articles
Artigos técnicos da MSDN relacionados com Business
BCS Team Channel Connectivity Services.
O canal no YouTube onde alguns vídeos foram publicados http://msdn.microsoft.com/en-us/library/gg481 768.aspx
pela equipa de produto.
http://www.youtube.com/user/MOSSBCSTeam
Link para o artigo: http://tinyurl.com/RPED28-04
AUTOR
Escrito por André Vala
Licenciado e Mestre em Engenharia Informática e de Computadores pelo Instituto Superior Técnico, é
actualmente consultor sénior na |create|it| e co-fundador da Comunidade Portuguesa de SharePoint .
Autor do blog http://blogit.create.pt/blogs/andrevala, trabalha com SharePoint desde 2006, altura em que
surgiu a primeira versão beta do SharePoint 2007.
Tem participado em vários projectos nacionais e internacionais sobre SharePoint, e participa
frequentemente como orador em eventos da Microsoft relacionados com o mesmo tema.
15
16. A PROGRAMAR
Lua – Linguagem de Programação (Parte 8)
jQuery 1.5 e Ajax
Datagrid em Windows Presentation Foundation
Planos de Execução em ORACLE
Smarty PHP Template Engine
17. A PROGRAMAR
Lu a – Li n gu a ge m d e Pro gra m a ç ã o ( Pa rte 8 )
Este artigo trata o uso de operações de aleatoriedade e a valor estabelecido junto a parâmetro “n” e pode ainda ser
manipulação de cadeias (operações de detecção de usada com os parâmetros “n” e “m” para gerar valores
tamanho de cadeias – revisão, repetição de caracteres, inteiros entre “n” e “m”.
separação de cadeias, busca e substituição de caracteres, O programa seguinte efectua a acção de geração de
conversão em modo ASCII). valores aleatórios da forma mais simples possível.
-- inicio do programa ALEAT01
ERRATA
math.randomseed(0)
Por falha pessoal no artigo anterior (Parte 7) ficou indicado
após a conclusão que esta parte trataria do tema: arquivo. local function SORTEIO()
No entanto, este assunto fora apresentado na sexta parte N = math.random()
desta série de artigos. return N
end
ALEATORIEDADE for I = 1, 5 do
X = SORTEIO()
É sabido que aleatoriedade é a característica do que é print(X)
indeterminado ou incerto. Uma das possibilidades end
operativas de uma linguagem de programação é a
capacidade de “gerar” valores numéricos aleatórios. O -- fim do programa ALEAT01
termo: gerar é grafado entre aspas devido a característica
que os computadores possuem de fazer este trabalho de Em seguida escreva o código de programa em um editor de
uma forma considerada não real, ou seja, por meio de uma texto, gravando-o com o nome aleat01 .lua e execute-o com
acção considerada pseudo-aleatória. a linha de comando lua 5.1 aleat01 .lua.
Para esta acção em linguagem Lua há as funções de A função math.randomseed() necessita ser usada a frente
geração de números aleatórios: math.randomseed() e da função math.random() para que math.random() consiga
math.rendom(). gerar os valores aleatórios.
Os valores gerados por estas funções são valores pseudo- Ao executar o programa várias vezes os valores
aleatórios, e necessitam ser usados com alguma cautela, apresentados como saída sempre serão:
tanto que há no manual de referência da linguagem Lua a
advertência: Nenhuma garantia pode ser dada para suas 0.0011 597033600879
propriedades estatísticas. 0.23557237464522
A função math.randomseed(n) faz uso do valor “n” como 0.6481 521 04251 23
parâmetro de semente para a geração de valores 0.074373607593005
aleatórios. 0.270241 401 40996
A função math.random([n[,m]]) pode ser usada de três
formas diferentes: usada sem parâmetros o que fará a Os valores se repetem pelo fato de estar sendo utilizado o
geração de valores entre 0 e 1 , pode ser usada apenas valor de semente “0” (zero). Se o valor de semente for
com o parâmetro “n” para gerar valores inteiros entre 1 e o mudado para 1 , 2, 3 ou outro valor qualquer serão
17
18. A PROGRAMAR
Lu a – Li n gu a ge m d e Pro gra m a ç ã o ( Pa rte 8 )
conseguidos valores diferentes. No entanto para um Observe que uso da função os.time() como valor semente
mesmo valor de semente para mais de uma execução ter- permite um comportamento de aleatoriedade mais
se-á a apresentação dos mesmos valores. Uma forma de convincente.
mudar um pouco este comportamento é fazer uso da Agora imagine que se queira sortear valores numéricos
função os.time() como valor de semente. A função os.time() entre 1 e 5. Assim sendo, observe o código seguinte:
retorna o valor do tempo corrente. Assim sendo, observe o
código de programa seguinte: -- inicio do programa ALEAT03
-- inicio do programa ALEAT02 math.randomseed(os.time())
math.randomseed(os.time()) local function SORTEIO()
N = math.random(1,5)
local function SORTEIO() return N
N = math.random() end
return N
end for I = 1, 5 do
X = SORTEIO()
for I = 1, 5 do print(X)
X = SORTEIO() end
print(X)
end -- fim do programa ALEAT03
-- fim do programa ALEAT02
Em seguida escreva o código de programa em um editor de
Em seguida escreva o código de programa em um editor de texto, gravando-o com o nome aleat03.lua e execute-o com
texto, gravando-o com o nome aleat02.lua e execute-o com a linha de comando lua 5.1 aleat03.lua.
a linha de comando lua 5.1 aleat02.lua. Execute o programa algumas vezes. Note que o primeiro
Ao se executar o programa várias vezes notar-se-á que os valor é sempre o mesmo em toda a execução, somente os
resultados apresentados são levemente diferentes. Por demais valores são apresentados diferentemente. Este é
exemplo, a seguir apresenta-se os valores de saída de um comportamento operativo da linguagem Lua que gera
duas execuções sequenciais do programa: dúvidas nos iniciantes no uso desta linguagem. Não se
preocupe em seguida será mostrado como contornar este
0.85509811 700797 tipo de ocorrência.
0.76201 66631 061 7 Observe que para gerar valores entre 1 e 5 fora usado: N =
0.21 799371 31 8705 math.random(1 ,5).
0.1 767021 6986602 O próximo programa mostra como contornar o problema de
0.249671 9260231 3 repetição do primeiro valor da sequência sorteada.
-- inicio do programa ALEAT04
0.85558641 31 5958
0.402081 36234626
math.randomseed(os.time())
0.943876461 07364
math.random()
0.84850611 89611 5
0.82357249671 926
local function SORTEIO()
18
19. A PROGRAMAR
Lu a – Li n gu a ge m d e Pro gra m a ç ã o ( Pa rte 8 )
Nas operações de manipulação de cadeias há ainda a
N = math.random(1,5) possibilidade de separar partes de uma cadeia. Para este
return N efeito faz-se uso da função string.sub(texto, início, [fim]),
end onde texto é a indicação da cadeia que será separada,
início é a indicação da posição de separação inicial que
for I = 1, 5 do pode ser positiva ou negativa e fim - indicação opcional da
X = SORTEIO() posição final de separação.
print(X) Em seguida escreva o código de programa em um editor de
end texto, gravando-o com o nome cadeia02.lua e execute-o
com a linha de comando lua 5.1 cadeia02.lua.
-- fim do programa ALEAT04
-- inicio do programa CADEIA02
Em seguida escreva o código de programa em um editor de
texto, gravando-o com o nome aleat04.lua e execute-o com X = "COMPUTADOR"
a linha de comando lua 5.1 aleat04.lua.
Execute o programa algumas vezes e note a diferença print(string.sub(X))
nesta versão. Observe o uso da função math.random() logo print(string.sub(X, 1))
após o uso da função math.randomseed(os.time()). Este print(string.sub(X, 1, 3))
pequeno ajuste faz o acerto desejado. print(string.sub(X, 4, 5))
print(string.sub(X, 6, 7))
print(string.sub(X, 8))
MAIS MANIPULAÇÃO DE CADEIAS print(string.sub(X, -5))
No sexto artigo desta série fora apresentada uma forma de -- fim do programa CADEIA02
detecção da quantidade de caracteres de uma cadeia com
o uso do operador # por meio da instrução de código Após a execução serão apresentados os textos
print(#"Linguagem Lua") que mostra como resultado o valor COMPUTADOR, COM, PU, TA, DOR e TADOR.
1 3. Outro factor de manipulação de cadeias de caracteres é a
Esta mesma acção pode ser efectuada por meio da função realização de operações de substituição de caracteres de
string.len(texto) como apresentado no quinto artigo desta uma cadeia. Para tanto, use a função de substituição
série, onde texto é a indicação da cadeia que terá contada string.gsub(texto, busca, troca, vezes), onde texto é a
a quantidade de caracteres. cadeia de texto definida, busca é o carácter a ser
Em seguida escreva o código de programa em um editor de localizado, troca é o carácter que será substituído e vezes
texto, gravando-o com o nome cadeia01 .lua e execute-o indica o número máximo de substituições a serem
com a linha de comando lua 5.1 cadeia01 .lua. efectuadas, sendo este último argumento opcional.
Em seguida escreva o código de programa em um editor de
-- inicio do programa CADEIA01 texto, gravando-o com o nome cadeia03.lua e execute-o
com a linha de comando lua 5.1 cadeia03.lua.
X = "Linguagem Lua"
-- inicio do programa CADEIA03
print(string.len(X))
X = "A BOLA AZUL APARECEU"
print(string.gsub(X,"A","4"))
-- fim do programa CADEIA01
print(string.gsub(X,"A","X",2))
-- fim do programa CADEIA03
19
20. A PROGRAMAR
Lu a – Li n gu a ge m d e Pro gra m a ç ã o ( Pa rte 8 )
Observe que após a execução, o programa mostra além da
troca realizada o número de trocas realizadas. print(string.byte(X, -5))
Outra acção para manipulação de cadeias é a função
string.rep(texto, vezes), onde texto é a cadeia a ser -- fim do programa CADEIA05
repetida e vezes é a definição do número de repetições.
Em seguida escreva o código de programa em um editor de O programa apresenta os valores:
texto, gravando-o com o nome cadeia04.lua e execute-o - 65
com a linha de comando lua 5.1 cadeia04.lua. - 65 66 67
- 68 69
-- inicio do programa CADEIA04 - 65 66 67 68 69 70
- 66
X = "OBA " A acção inversa é conseguida com o uso da função
print(string.rep(X,2)) string.char(código1 , código2, …, códigoN), onde cada
argumento usado é um valor ASCII.
-- fim do programa CADEIA04 Em seguida escreva o código de programa em um editor de
texto, gravando-o com o nome cadeia06.lua e execute-o
Outro efeito com cadeias é a obtenção do código ASCII dos com a linha de comando lua 5.1 cadeia06.lua.
caracteres que formam a cadeia com a função
string.byte(texto, início, [fim]), onde texto é a indicação da -- inicio do programa CADEIA06
cadeia que terá seus caracteres convertidos em formato
ASCII, início é a indicação da posição de separação inicial print(string.char(65))
que pode ser positiva ou negativa e fim - indicação opcional print(string.char(65, 66, 67))
da posição final de separação.
Em seguida escreva o código de programa em um editor de -- fim do programa CADEIA06
texto, gravando-o com o nome cadeia05.lua e execute-o
com a linha de comando lua 5.1 cadeia05.lua.
CONCLUSÃO
-- inicio do programa CADEIA05
Neste artigo o enfoque foi o uso dos recursos de geração
X = "ABCDEF" de valores aleatórios e alguns detalhes sobre a
print(string.byte(X, 1)) manipulação de cadeias.
print(string.byte(X, 1, 3)) No próximo artigo a ênfase será dada a criação e uso de
print(string.byte(X, 4, 5)) módulos em linguagem Lua.
print(string.byte(X, 1, 6))
Link para o artigo: http://tinyurl.com/RPED28-06
AUTOR
Escrito por Augusto Manzano
Natural da Cidade de São Paulo, tem experiência em ensino e desenvolvimento de programação de
software desde 1 986. É professor da rede federal de ensino no Brasil, no Instituto Federal de Educação,
Ciência e Tecnologia. É também autor, possuindo na sua carreira várias obras publicadas na área da
computação.
20
21. A PROGRAMAR
j Qu e ry 1 . 5 e AJ AX
O objectivo deste artigo é expor a funcionalidade de AJAX também iremos rever mais à frente) que aceitam uma
que o jQuery inclui, ao detalhe, e é também falar sobre as função como parâmetro que é chamada quando o pedido
novas funcionalidades introduzidas pela versão 1 .5 da terminar a sua execução, ou mesmo que estes callbacks
framework, neste caso, os Deferreds. sejam assignados após o pedido AJAX ter sido executado,
Nesta nova versão toda a funcionalidade de AJAX foi estas são chamadas de qualquer modo, esta é uma das
redesenhada, pelo que iremos entrar no tema das novas novidades deste interface de Promises, permite assignar
funcionalidades através da sua utilização no próprio AJAX e callbacks à posteriori, o que não era possível nas versões
depois expandindo a outras alterações também com anteriores às 1 .5.
relevância. Podemos ver aqui o exemplo de como assignar estes
callbacks, e verificar que mesmo após o pedido ser
Começando pelo princípio, o método mais simples de completamente executado, assignando novos callbacks,
efectuar um pedido AJAX em jQuery é utilizando a função estes executam de qualquer modo:
jQuery.get:
/*Assignar handlers imediatamente após
var ajaxObj = $.get('ajax/mypage.aspx', executar o pedido e
function(data) { guardar numa var o objecto jqXHR*/
$('#ajaxDiv').html(data); var xhrObj = $.get("ajax.aspx", function()
alert('callback called!'); {
}); alert("sucesso!");
})
Este é o método mais simplificado, especificamos .success(function() { alert("novamente
unicamente que url irá retornar os dados, e a função de sucesso"); })
callback retorna-nos os dados e aí poderemos adicionar .error(function() { alert("erro"); })
qualquer lógica necessária. .complete(function() { alert("pedido
Os dados que retornam do nosso pedido podem ser texto, completo"); });
JSON, XML ou JavaScript, e a função infere o tipo, pois
neste caso não o estamos a especificar. Além da variável //alguma lógica adicional (...)
data, poderíamos especificar outras duas variáveis na
função de callback, a segunda seria o textStatus do XHR /*adicionar outro callback de complexão aqui,
(XMLHttpRequest) e a terceira seria o mesmo que o e verificar que é executado mesmo que o
ajaxObj irá conter, um jqXHR (que passou a ser um jqXHR pedido já tenha sido completamente efectuado
a partir da versão 1 .5, anteriormente era um XHR nativo). anteriormente, devido às funcionalidades das
Neste exemplo caso retornássemos HTML seria adicionado Promises*/
ao DOM como innerHTML do objecto com o id ajaxDiv e xhrObj.complete(function(){ alert("completo
mostraria um alert, depois do pedido retornar com sucesso. novamente"); });
O objecto jqXHR implementa o interface de Promises (que
iremos descortinar mais à frente na funcionalidade
Deferreds do jQuery 1 .5) e inclui toda a sua funcionalidade, Em versões anteriores do jQuery, no caso de utilizarmos
pelo que inclui os métodos error() success() e complete() esta função get(), se existisse um erro não conseguiríamos
para acordar com os callbacks da função $.ajax (que assignar um callback a não ser através da função global
21
22. A PROGRAMAR
j Qu e ry 1 . 5 e AJ AX
ajaxError(), ou seja, não conseguiríamos ter um error Também existe a possibilidade de enviar parâmetros, como
handling local e objectivo, a não utilizando uma função mais o segundo parâmetro,à semelhança do get().
genérica com a ajax(). Existe também a função post() que funciona do mesmo
Uma ressalva, os pedido efectuados com a função get() exacto modo que a get() mas ao invés de enviar os dados
que não sejam pedidos JSONP ou Script, não permitem por HTTP GET, envia precisamente por HTTP POST.
cross-domain, como é usual.
Se quisermos efectuar outro tipo de pedidos com a função Caso o nosso objectivo seja exclusivamente obter JSON,
get() : existe uma função específica para tal, a getJSON(), que
tem algumas especificidades, tais como no caso de
especificarmos adicionar ao url o texto callback=? O pedido
//fazer apenas o request e ignorar resultado
passa a ser tratado com um pedido JSONP, e não JSON, o
$.get("ajax.aspx");
que permite pedidos cross domain sem qualquer problema.
//passar parâmetros simples e ignorar
O segundo parâmetro pode ser utilizado para enviar
resultados
parâmetros, como nas outras funções.
$.get("ajax.aspx", { tipo: "noticias",
quantas: "10" } ); $.getJSON('outputjson.json', function(data) {
//passar arrays e ignorar resultados $('.result').html('<p>' + data.foo + '</p>'
$.get("ajax.aspx", { 'valores[]': ["10", + '<p>' + data.baz[1] + '</p>');
"20"]} ); });
//combinar parâmetros com callback //estrutura de JSON esperada:
$.get("ajax.aspx", { param1: "teste" }, {
function(data) { "foo": "The quick brown fox jumps over the
alert("callback executado!"); lazy dog.",
}); "bar": "ABCDEFG",
//receber um JSON já parsed "baz": [52, 97]
$.get("ajax.aspx", { param1: "teste" }, }
function(data) {
alert(data.prop1); // valor da variável
Passando à função mais completa e talvez a mais utilizada,
data: { "prop1": "valor1" }
a função ajax(), podemos definir o url, e imensos settings,
});
vou passar aqui pelos mais importantes:
Outra das funcões para efectuar pedidos AJAX é a load(): async: permite definir se o pedido é ou não executado
assíncronamente;
//carrega o resultado no/s objecto do DOM beforeSend(jqXHR, settings): este callback é executado
especificado/s pelo selector imediatamente antes do pedido ser executado, e caso
$('#ajaxDiv').load('ajax.aspx', function() { retornemos false, o pedido não é executado;
alert('HTML carregado'); complete(jqXHR, textStatus): este callback é executado
}); quando o pedido foi completamente executado, a partir da
//carrega o resultado no/s objecto do DOM versão 1 .5 podemos passar aqui um array de funções que
especificado/s pelo selector, mas apenas o serão todas executadas;
que faz match com o selector passado ao lado data: permite passar parâmetros no formato querystring
do url (valor1 =X&valor2=y...);
$('#ajaxDiv').load('ajax.aspx #mainContent'); dataType: permite definir exactamente que tipo de dados
iremos receber, json, script, text, html, jsonp, xml (podemos
22
23. A PROGRAMAR
j Qu e ry 1 . 5 e AJ AX
passar múltiplos valores, por exemplo “jsonp xml”, para
persista qualquer cache*/
efectuar um pedido jsonp e converter para XML);
$.ajax({
error(jqXHR, textStatus, error): callback em caso de erro;
url: "teste.html",
statusCode: definir um callback conforme o HTTP error
cache: false,
code:
success: function(html){
$.ajax({ $("#resultado").append(html);
statusCode: {404: function() { }
alert('page not found'); });
}
}); /*efectuar um pedido que ao estando o seu
resultado a ser utilizado de imediato para
assignar à variável html, devemos especifica
success(data, textStatus, jqXHR): callback executado
que não pode ser assíncrono, pois caso
quando o pedido é retornado com sucesso;
contrário poderíamos tentar usar a variável
type: tipo de pedido “GET” ou “POST”;
html e esta não iria ter o valor esperado.*/
url: URL do pedido.
var html = $.ajax({
url: "page.aspx",
Podemos utilizar a função ajaxSetup() para definir estes
async: false
settings globalmente na nossa aplicação, sendo que depois
}).responseText;
podemos fazer override em cada caso aos settings que se
alteram, centralizando tudo o que são settings transversais.
/*o mesmo caso que o anterior, mas aqui
Exemplos:
enviamos parâmetros e temos um callback de
sucesso, e o o dataType é especificado.
//obter um script via AJAX (GET)
Ao utilizar o global a false, estamos a dizer
$.ajax({
explicitamente que os eventos globais de ajax
type: "GET",
não vão ser disparados, logo os seus
url: "my.js",
callbacks não vão executar, isto caso estejam
dataType: "script"
definidos via ajaxStart() e ajaxStop()*/
});
var bodyContent = $.ajax({
url: "script.aspx",
//fazer o pedido por POST, enviando
global: false,
parámetros e com callback
type: "POST",
$.ajax({
data: ({id : this.getAttribute('id')}),
type: "POST",
dataType: "html",
url: "ajax.aspx",
async:false,
data: "nome=Ricardo&location=Lisboa",
success: function(msg){
success: function(msg){
alert(msg);
alert("Dados enviados: " + msg);
}
}
}
});
).responseText;
/*pedir a última versão de uma página,
especificando que não queremos que o browser
23
24. A PROGRAMAR
j Qu e ry 1 . 5 e AJ AX
Com esta especificação extensa do AJAX, vamos passar às Como podemos ver, deste modo podemos organizar o
novas funcionalidades do jQuery 1 .5, começando pelos já código de maneira diferente, até podemos criar uma
mencionados Deferreds (Promises interface). abstracção à função de ajax no contexto da nossa
Esta funcionalidade tem como objectivo fazer com que uma aplicação e ter funções para atribuição de callbacks, que
tarefa e a lógica executada após esta estar completa sejam são executados numa metodologia FIFO (First in first out).
desacoplados, quer isto dizer que podemos assignar Não temos de definir callbacks de complexidade extrema
múltiplos callbacks para o resultado de uma tarefa e pelo facto de apenas podermos definir um e até podemos
mesmo após esta estar completa podemos continuar a começar a usar esta funcionalidade de um modo
adicioná-los e estes são executados do mesmo modo. Esta inteligente, para por exemplo, executar determinado código
tarefa pode ser assíncrona ou não, nada obriga que o seja. caso algumas funções ajax tenham sido executadas com
Visto que o AJAX do jQuery 1 .5 foi redesenhado para incluir sucesso, isto de uma forma extremamente simples,
os Deferreds, podemos usufruir deles directamente: utilizando a função $.then():
// este pedido é assíncrono por omissão function doAjax() {
var req = $.get('foo.htm') return $.get('ajax.aspx');
.success(function(response) { }
//em caso de sucesso
}) function doMoreAjax() {
.error(function() { return $.get('ajax2.aspx');
//em caso de erro }
});
$.when( doAjax(), doMoreAjax() )
//isto até pode ser executado antes do get .then(function(){
acima console.log('Executado quando ambos
algumaFuncao(); os pedidos estão completos!');
})
/*definir algo mais a ser executado em caso .fail(function(){
de sucesso, que pode ou não já ter ocorrido, console.log('Executado quando um ou
mas com os deferreds realmente não interessa, mais pedidos falharam!');
é executado de qualquer forma*/ });
req.success(function(response) {
/*tomar alguma acção com a resposta isto
vai ser executado quando o sucesso ocorrer, Este código funciona porque o AJAX agora retorna uma
ou caso este já tenha ocorrido, é disparado promise() que é utilizada para monitorizar o pedido
de imediato, caso os outros callbacks de assíncrono, esta promise() é um objecto apenas de leitura
sucesso já tenham sido executados que existe no resultado da tarefa. Os deferreds verificam a
*/ existência da função promise() para determinar se um
}) objecto é observable ou não, que é o que lhe permite
funcionar como deferred. A função when() aguarda pela
execução das funções AJAX passadas por parâmetro e
Deste modo podemos ver que já não estamos limitados a quando estas são executadas os métodos then() e fail() são
definir apenas um callback para error, sucesso e executados, conforme o estado da tarefa. Importante referir
complexão, podemos definir quantos quisermos, e mais novamente que os callbacks são executados pela ordem
importante, quando quisermos! cujo são assignados a cada método.
24
25. A PROGRAMAR
j Qu e ry 1 . 5 e AJ AX
Uma nota importante: os deferreds aceitam ou funções ou código “típico”:
arrays de funções, que nos permite definir conjuntos de Podemos ver aqui a utilização dos deferreds num bloco
comportamentos na nossa aplicação e passá-los simples, e a sua explicação é muito simples:
genericamente, ao invés de passarmos apenas uma função
isolada.
function getData(){
Podemos verificar o estado de um deferred através das
return $.get('/echo/html/');
suas funções isRejected() e isResolved().
}
No caso do AJAX o que obtemos é um acesso a uma parte
do deferred, visto que se tivessemos acesso completo
function showDiv() {
poderíamos controlar quando os callbacks são executados
var dfd = $.Deferred();
através da função resolve() e poderíamos invocá-los antes
dos pedidos realmente serem executados, o que iria
$('#foo').fadeIn( 1000, dfd.resolve );
quebrar a lógica, logo temos apenas acesso a uma parte do
deferred, à promise(), que é apenas de leitura, como já foi
return dfd.promise();
referido.
}
Em termos de métodos, os que utilizámos até agora foram
$.when( getData(), showDiv() )
o then(), success() e fail(), também falámos do complete()
.then(function(result) {
no caso de AJAX, mas existem mais métodos que podemos
console.log('A animação e o pedido
utilizar, especialmente no caso de estarmos a lidar com
AJAX foram executados');
AJAX. O método escolhido depende exclusivamente do
});
estado ao qual queremos fazer bind.
Para todos os deferreds existem os seguintes métodos:
- then(doneCallbacks, failedCallbacks); Na função showDiv estamos a criar um objecto deferred
- done(doneCallbacks); novo, e retornamos a promise(). Este deferred como o
- fail(failCallbacks); código o mostro é resolvido assim que o fadeIn terminar,
pois o dfd.resolve foi definido como callback deste fadeIn.
Os deferreds de AJAX têm 3 métodos adicionais que se O getData, retorna um objecto compatível com deferred
podem especificar, 2 dos quais invocam um dos acima (não exactamente igual, visto que é um AJAX e como já foi
especificados. Estes métodos específicos existem referido o AJAX não é um deferred “simples”), e como o
exclusivamente para não quebrar a compatibilidade com os objecto retornado pelo getData, tem o método promise, é
nomes dos callbacks para AJAX que existiam nas versões tratado com deferred e o when() aguarda que ambos
anteriores de jQuery: estejam no estado resolved, após estarem, executa o
- success(doneCallbacks); -> maps to done() callback passado no método then() e escreve na consola.
- error(failCallbacks); -> maps to fail()
Neste artigo podemos observar todo o potencial do AJAX, a
Existe também o método complete() que é invocado após a sua evolução nesta nova versão 1 .5 e também a grande
função AJAX ser executada, retorne ou não erro. Ao nova funcionalidade que são os deferreds.
contrário do success e do error o complete é um alias para O jQuery está em constante evolução, esta é uma das
o done, que é resolvido assim que o pedido AJAX termina, novas features da versão 1 .5, como foi demonstrado, tem
independentemente do seu resultado. um potencial enorme e uma abrangência e influência
- complete(completeCallbacks); grandes, visto que até afectou áreas core da framework.
Stay tuned!
Um exemplo de utilização de deferreds num bloco de
25
26. A PROGRAMAR
j Qu e ry 1 . 5 e AJ AX
Link para o artigo: http://tinyurl.com/RPED28-08
AUTOR
Escrito por Ricardo Rodrigues
É técnico Nível III em Informática/Gestão pela Fundação Escola Profissional de Setúbal, tendo ingressado
após na FCT da Universidade Nova de Lisboa.
Posteriormente frequentou vários cursos da Microsoft em diversas áreas como Windows Forms,ASP.NET,
Securing .NET Applications, WCF, WWF, Web Services e COM+ tendo obtido as certificações MCP .NET
2.0, MCAD .NET 1 .1 , MCSD .NET 1 .1 , MCPD Windows, Web e Distributed Applications e MCPD -
Enterprise Applications Developer. (MCP Profile)
Contribui activamente em comunidades como StackOverflow e também possui um blog/twitter como
temática relacionada: Blog / @ricmrodrigues
26
27. A PROGRAMAR
Datagrid em Windows Presentation Foundation
Neste artigo pretendo apresentar a Datagrid em Windows MinColumnWidth; ColumnHeaderHeight; permitem definir a
Presentation Foundation (WPF) na .Net Framework 4.0. largura, largura máxima, largura mínima e a altura do
Vou começar por uma breve apresentação teórica e em cabeçalho da coluna.
seguida irei apresentar vários exemplos. De salientar que • RowHeight; MinRowHeight: permitem definir a
não terei em conta Design Patterns. altura e altura mínima da linha.
• GridLinesVisibility: permite definir a visibilidade
A DataGrid é um controlo que permite apresentar dados, das linhas que delimitam as linhas e colunas. Caso sejam
representando cada linha um item de uma lista de objectos visíveis as propriedades HorizontalGridLinesBrush e
do mesmo tipo e as colunas representam as várias VerticalGridLinesBrush permitem definir aparência das
características do objecto. Ou seja, se na instância da linhas.
datagrid apresento uma lista de empregados, cada linha • SelectionMode; SelectionUnit permitem definir o
representa um empregado e cada coluna representa uma modo de selecção dos itens, ou seja, se é possível
propriedade do empregado. seleccionar mais de que um item e se é permitido
seleccionar linha(s) completa(s) ou célula(s).
A classe DataGrid está incluída no namespace • AutoGenerateColumns: permite gerar
System.Windows.Controls e é um selector que permite automáticas as colunas da datagrid. Para a geração
seleccionar mais do que um item ao mesmo tempo e tem automática é considerada todas as propriedades do tipo de
por base a classe ItemsControl, que é um Controlo e que objecto em causa, ou no caso de se estar a usar um
implementa a interface IAddChild. A seguinte imagem dataTable a geração é baseada nas colunas da dataTable.
mostra-nos esta hierarquia de classes. • Columns: permite obter a colecção de colunas.
• CellStyle: permite definir o estilo da célula.
• ColumnHeaderStyle: permite definir o estilo do
cabeçalho da coluna.
• CanUserAddRows: permite que o utilizado
Vejamos agora algumas propriedades, métodos e eventos adicione novos itens.
relevantes da DataGrid. • CanUserDeleteRows: permite que o utilizado
apague itens.
• CanUserReorderColumns permite que o
As propriedades mais relevantes são: utilizador organize as colunas.
• Name: permite definir o nome. • CanUserResizeColumns: permite que o utilizador
• Foreground: permite definir a cor da letra. redimensione as colunas.
• Background: permite definir a cor de fundo. • CanUserResizeRows: permite que o utilizador
• AlternatingRowBackground; AlternationIndex: redimensione as linhas.
permitem definir a cor de fundo de cada linha, de forma • CanUserSortColumns: permite que o utilizador
alternada. ordene os itens ao fazer duplo clique no cabeçalho da
• Width; Height; MaxHeight; MinWidth; MaxWidth; coluna.
MinHeight: permitem definir a largura, altura e seus valores • CurrentColumn: permite obter a coluna actual.
mínimos e máximo. ActualHeight; ActualWidth permitem • CurrentCell: permite obter a célula actual.
obter qual é o valor actual da altura e da largura. • CurrentItem: permite saber o item actual.
• ColumnWidth; MaxColumnWidth; • SelectedCells: permite saber quais as células
27