Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

Revista PROGRAMAR

  • artigos
    172
  • comentários
    30
  • visualizações
    125074

Autores deste blog

  • staff 124
  • jpaulino 17
  • anolsi 16
  • apocsantos 6
  • Rui Carlos 4
  • Hipnoted 2
  • HecKel 1
  • pedrotuga 1
  • _JR_ 1

Sobre este blog

Artigos neste blog

 

Introdução ao Sass

Introdução O desenvolvimento para a web está a mudar! Hoje em dia é incontornável que um programador web frontend não domine apenas a tríade HTML+CSS+JavaScript, mas que tenha um conhecimento (nem que seja básico) do que são pré-processadores, gestor de dependências, ferramentas de automatização de tarefas de building e de geração de estrutura de código, transpiladores, compiladores, minificadores, etc. Na verdade, estas ferramentas começam, cada vez mais, a fazer parte do workflow de desenvolvimento das nossas aplicações web. Mesmo não sendo uma exigência para o desenvolvimento, estas ferramentas podem economizar muito o tempo de um programador. Quando uma página Web começa a ficar mais complexa, é frequente vermos vários ficheiros CSS com inúmeras regras e com um nível razoável de redundância. Uma forma de economizar tempo, e de manter todas essas regras de uma forma mais flexível, é através do uso de pré-processadores de CSS. Estas ferramentas usam recursos até aqui indisponíveis no contexto da criação de folhas de estilo. Desta forma, o código torna-se mais organizado, permitindo que os programadores trabalhem mais rapidamente e cometam menos erros. Ler mais…

staff

staff

 

C# – Excel

Ainda é muito usual depararmos-mos com ficheiros de processamento Excel, ou não fosse o Excel a mais famosa folha de cálculo até aos dias de hoje. Neste artigo, procuramos de uma forma simples mostrar ao caro leitor como podemos tirar partido do processamento do Excel, fazendo um pequeno programa que nos permite facilmente processar e criar novos ficheiros resultado partindo do Excel. Para este artigo proponho algo simples, imaginemos uma empresa que produz vários tipos de brindes e merchandising. Os comerciais ao longo do mês vão criando encomendas dos vários clientes. A nossa empresa trabalha com dois armazéns distintos, mas o responsável pelo setor do armazém ao longo do mês recebe esses mesmos pedidos e regista os pedidos numa folha de Excel para lhes dar despacho. No final do período de processamento, o departamento financeiro precisa de saber ao certo qual o numero de encomendas efetuadas para poder emitir a fatura ao cliente final. Para este exemplo vamos considerar que vendemos três tipos de canetas. Azuis, pretas e vermelhas. Consideramos também que temos três clientes (somos uma pequena empresa) e que como é normal para cada cliente acordamos um valor específico de cada cor de caneta, sendo esse valor diferente para cada cliente. Ler mais…

staff

staff

 

Como Configurar o Wi-Fi no ESP8266

O nosso famoso ESP8266 veio para ficar, cada vez mais este microcontrolador é utilizado para desenvolver dispositivos fantásticos, é verdade que o ESP pode ser utilizado como um simples MCU, mas é a sua capacidade de se ligar a uma rede Wi-Fi, faz dele a escolha perfeita no que toca dispositivos IoT. Este artigo tem foco em três diferentes soluções que permitem programar o ESP de forma a que este se consiga ligar a uma rede Wi-Fi. É sabido que da primeira vez que o ESP é energizado este tem de conhecer ou vir a conhecer o SSID e a password configurada no access point ao qual o queremos conectar de forma a fazer para da rede e ter acesso à internet se assim for necessário. Ler mais…

staff

staff

 

Cifras e mais Cifras

Neste artigo decidi “revisitar” um tema que sempre me despertou interesse e que tive de abordar num projecto que fiz em 2015. O objectivo era encriptar, de forma a que fosse possível desencriptar, dados, bastando para tal saber um conjunto de informações (identificador, chave e chave-mestra), uma vez que a cada dado, apenas corresponde um identificador (fechadura) e para se chegar à chave que acabará por abrir, são precisas duas chaves (chave e a chave-mestra). Quase como a caixa forte do tio patinhas e os irmãos metralha a tentar abrir, mas um pouco mais complexo! Para fazer executar esta tarefa, o utilizador deve inserir um identificador, neste caso “porta”, um código a ser cifrado, uma chave para o cifrar e a respectiva chave par (chave-mestra). Quando pressionar o botão para cifrar, os dados introduzidos, serão utilizados para cifrar o “código” usando a chave e a chave-mestra, devolvendo o valor do código, cifrado. Ler mais…

staff

staff

 

A elegância da simplicidade

Começar um artigo por uma citação não será propriamente ortodoxo, não obstante, sendo uma coluna de opinião, de alguém que “não se importa”, não creio que seja “grave”! Ler mais…

staff

staff

 

SQL Curtas #3: Mais um conjunto de dúvidas

Aqui ficam mais algumas dúvidas que nos surgiram nas últimas semanas em encontros presenciais e nas redes sociais. O que é a “collation”? Uma “collation” é a forma que cada SGBD (Sistema de Gestão de Bases de Dados) tem de “ordenar” e de “comparar” um conjunto de dados. Ler mais…

staff

staff

 

Business Intelligence no SQL Server

Nesta edição trazemos até vós, caros leitores, a review acerca do novo livro da FCA do autor Alberto Magalhães – Business Intelligence no SQL Server. Na sua essência as bases de dados são simplesmente contentores de informação. Quando um determinado sistema permanece durante anos sem grandes alterações, todos nós sabemos que acrescentar mais uma feature ou outra facilmente implica quase sempre a adição de mais uma tabelinha para facilmente termos dados “à mão”, tornando-se mais uns “pontos” para o “contentor” guardar. E hoje em dia é cada vez mais importante usarmos os dados que armazenamos na BD para tomar decisões acerca dos caminhos a seguir e a implementar. Seja a nível de negócio, seja a nível de vida útil do próprio sistema. Este é um livro indicado principalmente para os leitores que queiram dar os primeiros passos em BI mas também pode ser um apoio útil para quem já tem mais experiência neste campo e pretende alargar conhecimentos. A obra está dividida em cinco grandes capítulos, que fluem entre si não tornando a leitura deste livro tecnicamente pesada. No primeiro capítulo – Data Warehouse – encontramos uma explicação teórica sobre o tema. DW consiste em integrar, de forma consolidada, os dados de uma organização num só ponto, e, assim, fornecer dados atualizados aos decisores das empresas. E é este o mote principal a que o autor se propõe neste livro. É abordada a arquitectura de um DW, com maior incidência na arquitectura de Kimball e na arquitectura de Inmon. Neste primeiro capítulo gostaria de chamar à atenção para o ponto em que o autor compara concretamente estas duas arquitecturas DW, para que este tema seja facilmente absorvido pelos leitores menos experientes de forma a poderem tirar um maior partido do livro. Neste capítulo são ainda referenciados modelos de dados nomeadamente o esquema em estrela e o esquema em floco de neve, assim como as diferenças entre eles. O segundo capítulo – Analysis Services – apresenta-nos a explicação teórica do tema mas passa já a ser um capítulo mais técnico onde o autor nos guia pelas ferramentas disponíveis para o desenvolvimento e suporte das aplicações business intelligence: o SQL Service Reporting Services, o SQL Server Integration Services e o SQL Server Analysis Services. É apresentada uma pequena introdução às bases de dados OLAP, isto é, Online Analytical Processing. Nesta capítulo o autor demonstra ainda como criar a fonte de dados e quais os passos para a visualização da mesma. É ainda abordado como criar as dimensões e o “cubo”. Sendo este último constituído pelas dimensões e pelas métricas, julgo que este é um capítulo bastante importante para os menos experientes, pois este passo-a-passo ajuda na compreensão e consolidação da temática, uma vez que é através destes conhecimentos que conseguiremos dar “corpo” aos nossos dados. No terceiro capítulo – Análises de Dados – Alberto Magalhães leva-nos por alguns exemplos de pesquisa pelos modelos anteriormente implementados. Uma das ferramentas externas abordadas é o famoso Excel, onde facilmente obtemos gráficos dos dados que consideramos sensíveis. Neste capítulo gostaria de destacar os sub-temas Importar dados para uma tabela dinâmica do Excel, Importar dados para um relatório Power View e Explorar dados com o SQL Server Management Studio. É importante referir também que é neste capítulo que o autor aborda a Análise de Dados em Power BI Desktop – uma ferramenta de negócios da Microsoft que permitem facilmente a criação de relatórios e dashboards sem que sejam necessários conhecimentos técnicos extensos. No quarto capítulo – Integration Services – é-nos apresentada esta plataforma de extração, transformação e carregamento de dados. Como não podia deixar de ser, este é dos capítulos mais técnicos deste livro, contudo a leitura não é pesada e flui facilmente, permitindo ao leitor criar o seu próprio projeto seguindo as indicações passo-a-passo. São também abordados os componentes de Control Flow e Data Flow, assim como os event handlers. Recomenda- se uma leitura atenta a este capítulo de forma a compreender as práticas da gestão de pacotes do SQL Server Integration Services. Por fim entramos no quinto capítulo – Reporting Services. Aqui é-nos apresentada com mais pormenor esta ferramenta empresarial do SQL Server. É explicado como criar e gerar relatórios que possam ser uma mais valia para o nosso modelo de negócios de forma a facilitar a tomada de decisões. Neste capítulo gostaria de destacar a criação de um relatório simples, assim como a abordagem ao Tablix (conjugação de tabela, matrix e lista), assim como a abordagem à região de dados Gauge onde podemos facilmente obter os KPI – Key Performance Indicators (que medem o desempenho de um processo). Em suma, este é um livro que creio que seja uma mais valia na biblioteca pessoal de cada um, quer sejamos estreantes nestas andanças ou não, uma vez que apesar de iniciar com uma abordagem mais leve e teórica nos capítulos iniciais, o quarto e quinto capítulo, entram já num “mundo mais técnico” que vale a pena ler e reler. Boa leitura!

staff

staff

 

Segurança Prática em Sistemas e Redes Com Linux

Um livro destinado a professores, estudantes, profissionais e interessados nesta temática, mais actual que nunca, aborda de forma concisa e prática os conceitos teóricos subjacentes ao tema, de forma bastante sintética, mas sem perder a essência do que é mais relevante, para quem se “aventura” nesta temática, bem como para quem pretende consultar informação. Ao longo de onze capítulos, são abordados temas como encriptação, recorrendo a PGP (Pretty Good Privacy), certificados digitais (x.509), acessos remotos utilizado SSH, evoluindo para temáticas mais abrangentes como segurança em servidores HTTP, protecção de servidores, recorrendo a mecanismos e firewall, protecção de redes, segurança em redes sem fios, redes privadas virtuais (VPN), detecção e prevenção de intrusões, terminando na temática da auditoria, que apesar de abordada e forma breve (em cerca de 30 páginas), é abordada, tendo em conta a delicadeza do tema. No primeiro capítulo, é feita uma apresentação mais teórica dos conceitos básicos, dos quais se destacam a confidencialidade, integridade, autenticação, não-repúdio, sem descorar a disponibilidade e resiliência, factores que cada vez mais são críticos, como o recente exemplo do e-factura, que dado o volume de utilizadores num curto espaço de tempo, acabou ficando involuntariamente indisponível, por, segundo a comunicação social, ter excedido a capacidade de resposta ao volume de pedidos. Ainda neste mesmo capítulo, são focados aspectos como os diversos tipos de atacantes “externos e internos”, algo que é realmente uma ameaça, dada a quantidade de meios e recursos, mais ou menos tecnológicos disponíveis, que em tese, podem ser utilizados para “atacar” um sistema. De salientar que o autor é cuidadoso na forma como apresenta o tema, deixando espaço para o leitor o aprofundar, indicando referências que podem ser consultadas no final de cada capítulo. As configurações e instalação de software dos exemplos são feitas para o sistema operativo GNU/Linux, distribuição CentOS, o que apesar de poder não ser o “preferido” de todos os leitores, é simples de instalar e bastante comum em ambientes de produção. A título de nota pessoal, prefiro distribuições “Debian based”, no entanto os exemplos são simples de executar nessas distribuições. Na temática das redes privadas virtuais (VPNs), cada vez mais actuais, uma vez que a quantidade de vectores de ataque aumenta, e cada vez se torna mais importante estar protegido, o autor aborda todos os conceitos teóricos de forma clara, simples e eficaz, de maneira a que o leitor, possa entender o funcionamento e aplicabilidade, de forma compreensível e prática, passando para os exemplos com OpenVPN, tanto servidor de VPN, como cliente de VPN, para os principais sistemas operativos, de forma igualmente prática e eficiente. Existem outros sistemas gratuitos que podem ser de maior agrado do leitor, no entanto, convém ressalvar que o OpenVPN se tornou num “standard de facto”, no que toca a redes privadas virtuais, pelo que a opção por este sistema, apresenta-se como a melhor de todas, tanto para quem lê, como para quem escreve, e para quem irá montar uma VPN. Quase no final do livro, ao abordar a temática da auditoria de segurança, o autor começa por explicar novamente os conceitos subjacentes, passando para exemplos práticos de auditoria de segurança, recorrendo a ferramentas que integram os próprios sistemas operativos, evitando inicialmente o uso de “ferramentas chave-na-mão”, que apesar de simples de utilizar para os mais iniciantes, não se traduzem uma aquisição de conhecimento nem na aplicabilidade do mesmo. Citando o velho ditado “aprende a andar, antes de correr”, convém que o leitor entenda primeiro os conceitos, antes de começar a fazer auditorias, sem entender o que lhes está subjacente. Ao longo do artigo, são abordadas ferramentas, mais elaboradas, e já com interface gráfica de utilizador, complementares às mencionadas inicialmente, que permitem realizar auditorias mais detalhadas e rápidas, bem como analisar outros vectores, para os quais são convenientes ferramentas específicas. Gostaria de deixar os meus parabéns ao autor, por uma obra de muito aprazível leitura, actual e rica em conteúdo, extremamente útil, quer para quem se inicia, como para quem já trabalha com esta temática. Um livro recomendável, a todos quantos por segurança se interessam.

staff

staff

 

Vulnerabilidades Web em 2017

Foi registado um número recorde de vulnerabilidades em 2017 nas aplicações web, incluindo categorias bem conhecidas, como XSS, mas também novas categorias, como desserialização insegura. O número de vulnerabilidades na IoT também cresceu descontroladamente e com um impacto extremamente severo. Também o PHP e o WordPress continuam de mãos dadas no que toca a vulnerabilidades em CMS e server-side. Por fim, uma vulnerabilidade de dia zero (zero day vulnerability) afetou o Apache Struts e que contou com uma das maiores violações de segurança do ano. Vulnerabilidades Web 2016-2017 A seguinte imagem mostra o crescimento das vulnerabilidades web na forma mensal, entre o ano de 2016 e 2017. É possível observar um crescimento em 2017 (14 082), nomeadamente 212%, relativamente ao ano de 2016 (6 615). Estima- se ainda que, mais de 50% das vulnerabilidades possuem um exploit público para a sua exploração por parte de indivíduos mal intencionados. Além disso, mais de um terço (30%) não possuem uma resolução imediata, como por exemplo, uma actualização ou um remendo de software. Como é previsível, a injecção de código mantém-se no top de vulnerabilidades.

staff

staff

 

RGPD – O Antes e o Depois

O Regulamento Geral de Protecção de Dados (RGPD) entra em vigor a 25 de Maio de 2018, com o intuito de tornar as leis da União Europeia (UE) mais homogéneas, em termos do tratamento e processamento de dados dos cidadãos. Mas as novas normas repercutem-se em todo o mundo, já que mesmo as empresas de fora da UE terão que respeitar o RGPD, desde que lidem com dados de cidadãos europeus. O Antes A internet começou a alcançar a maioria da população já nos anos 90. O seu crescimento a larga escala levou a uma partilha de informação massiva e inicialmente descontrolada, os utilizadores não tinham regras, nem sabiam qual seria a dimensão daquela rede e o impacto que isso poderia vir a ter mais tarde. Ao longo dos anos foi partilhada para a rede informação sensível, surgiram também os primeiros websites, sistemas online, p.ex., de e-commerce, e-banking, entre outros, em geral, a internet começava por se tornar o maior canal de partilha de informação sem fronteiras. Com o evoluir e amadurecimento da tecnologia começaram também os problemas de segurança em vários planos. Dois desses planos, e que podem aqui ser enumerados, são o da segurança e design de aplicações e websites e também da não consciencialização dos utilizadores no que à partilha de informação diz respeito. Tal como no início, ainda hoje não existe uma regulamentação que proteja os dados dos cidadãos. Tornou-se viral hoje em dia falar em comprometimento de informação, p.ex., fugas de informação do LinkedIn, Uber, Equifax, são muitos os casos ao longo dos últimos anos. Este tipo de fuga de dados normalmente é disseminada por diversos canais na internet, e essa informação fica disponível durante anos. Já tentou escrever o seu nome por extenso no Google? É normal encontrar pautas da faculdade, editais de concursos públicos, informação extremamente sensível que provavelmente foi leaked de alguma plataforma onde se tenha registado ou com ela interagido. Foi-lhe comunicado que essa informação foi comprometida e disseminada na Internet? Ou até disseminada porque o sistema não protege a privacidade da informação dos utilizadores? Provavelmente, não. Podiam descrever-se milhentos exemplos de como a informação está mal estruturada na maioria dos sistemas e que levam a estas pequenas catástrofes digitais, fruto de uma regulamentação fraca, e quase inexistente nestes últimos anos. Mas o RGPD irá resolver isso? O Depois O RGPD não irá, de facto, resolver a curto prazo o problema da falta de políticas de protecção de dados, nem impedir que informação associada aos indivíduos “desapareça” por si só das pesquisas na internet. O RGPD tem como um dos objectivos “iniciar um novo ciclo”. Um ciclo onde a protecção das informações dos cidadãos passará a ser uma preocupação obrigatória pelos provedores de serviço. Este regulamento trará várias implicações, nomeadamente: Os sistemas terão que ser pensados desde o seu início e desenhados conforme aquilo que são as normas do regulamento – privacy by design; Os cidadãos terão que ser informados sobre qualquer comprometimento de dados pessoais até no máximo 72h depois do incidente; O cidadão tem o direito ao “esquecimento”, isto é, exigir ao provedor de serviço que todas a informação a ele associada seja totalmente eliminada do sistema. Mais ainda, os provedores de serviço, grandes, médias e até pequenas empresas, devem eleger um Data Protection Officer (DPO), isto é, um encarregado de protecção dos dados. O DPO terá como principais tarefas a monitorização da conformidade com o RGPD, a metodologia e quando realizar DPIA, a cooperação com o regulador, o acompanhamento do risco associado às operações de processamento de dados e o garantir do registo das evidências necessárias para demonstrar a conformidade junto do regulador. O RGPD pode não resolver os problemas com a informação dos cidadãos dos anos passados, mas marcará um novo ciclo, um caminho que vai ser seguido rigorosamente e que visa salvaguardar de uma forma mais rígida, tudo aquilo o que são dados pessoais dos utilizadores. Os nossos dados pessoais são a nossa identidade. Devemos ser nós a escolher que informação deve ser partilhada, e com quem a vamos partilhar.

staff

staff

 

SoftEther VPN Project, implementação em Windows, GNU/Linux, MacOS, Android, iOS

É comum falar-se em VPNs, de forma a que pareçam complexas, caras e difíceis de configurar, mas como veremos ao longo deste artigo, são até fáceis de configurar e de instalar, até mesmo em dispositivos móveis. O que é? Uma VPN é uma virtual private network, ou seja, uma rede virtual privada em que a comunicação dentro da mesma é encriptada ponto-a-ponto. Ler mais…

staff

staff

 

Microsoft 365: Ferramentas de Deploy, Segurança e Compliance

Introdução Os constantes ataques informáticos às organizações com o objetivo de subtrair dados ou provocar uma disrupção do negócio, levam as empresas e administradores de sistemas a ter um foco permanente na segurança e a procurar ferramentas que os ajudem a prevenir, proteger e responder a estas ameaças. A pensar nestes cenários, a Microsoft lançou recentemente um conjunto de serviços denominado Microsoft 365 (Office 365, Windows 10 e Enterprise Mobility + Security) para oferecer às pequenas e médias empresas com poucos recursos de TI e que não possuem um controlador de domínios do Active Directory, uma solução que disponibiliza aos seus funcionários as melhores funcionalidades de produtividade e colaboração, bem como soluções de segurança e gestão de dispositivos para proteger os dados e ativos empresariais em diversos equipamentos.Vejamos então nos parágrafos seguintes algumas das principais melhorias para IT no Microsoft 365. Ler mais…

staff

staff

 

CRM – Plataforma ou Customizado

Neste artigo quero levantar a problemática que passa muitas vezes pela nossa cabeça: devemos utilizar uma plataforma para um determinado objetivo onde já temos muita coisa implementada, ou devemos avançar para um desenvolvimento customizado para podermos ter as coisas como queremos e não termos que pagar licenciamento? Vou explorar esta temática tendo como exemplo prático, a implementação de um CRM. Ler mais…

staff

staff

 

SQL vs NoSQL

Hoje em dia cada vez mais as bases de dados estão a ocupar um lugar de destaque no nosso mundo tecnológico. Queremos guardar os nossos dados, ter acesso aos mesmos o mais rápido possível e processá-los para termos respostas rápidas. Antigamente os dados guardados eram específicos, em “tabelas contentores”. Hoje, principalmente com Big Data, o nosso próprio telefone guarda tudo o que fazemos e praticamente tudo o que pensamos fazer. E perder “sessenta segundos” por uma resposta que queremos já se torna cada vez mais impensável. Por este motivo nesta edição decidimos recordar uma discussão antiga… SQL vs NoSQL… Para os leitores que ainda não estão familiarizados com este tema, vamos por partes… A sigla SQL significa Structured Query Language, ou seja, linguagem de consulta estruturada. Criada no início dos anos 70 na IBM, esta linguagem tem uma forte inspiração na famosa álgebra relacional e devido à sua facilidade de aprendizagem e simplicidade, é sem qualquer dúvida ainda a linguagem padrão mais utilizada quando falamos em bases de dados. As bases de dados SQL respeitam o modelo relacional, pois baseiam-se no facto de todos os dados serem guardados em tabelas. Temos como principais exemplos de bases de dados SQL, o SQL Server, o MySQL, Sybase, Oracle ou IBM DB2. Sem querer particularizar muito, podemos afirmar que no SQL temos “três grandes comandos” base… INSERT, UPDATE e DELETE. Com estes três facilmente temos acesso a qualquer registo de uma determinada tabela da base de dados uma vez que a base de dados é relacional e verticalmente escalonável. Tendo em conta que temos ao dispor chaves primárias e/ou estrangeiras, uma vantagem particular do SQL é sua cláusula JOIN simples, que nos permite facilmente recuperar dados relacionados armazenados em várias tabelas . Ainda nesta temática, com o SQL, sendo a base de dados relacional temos sempre as propriedades ACID (Atomicidade, Consistência, Isolamento e Durabilidade). E são estas quatro propriedades que descrevem as principais características de uma transação em SQL ou seja: Atomicidade Uma transação deve ter todas as suas operações executadas com sucesso, isto é, em caso de falha de alguma operação, é necessário proceder ao rollback. Consistência Uma transação deve respeitar a integridade dos dados. Isolamento Deve garantir-se o isolamento de uma operação para que não seja possível que dois utilizadores gravem alterações no mesmo registo ao mesmo tempo. Durabilidade As transações com sucesso devem persistir na base de dados mesmo que haja alguma anomalia externa à mesma, ou seja, devemos sempre registar as mesmas em memória não-volátil. Agora passemos ao NoSQL… NoSQL significa Not Only SQL. Estas base de dados têm características bem diferentes. São bases de dados não relacionais, e as propriedades que acabamos de referir (ACID) deixam de estar obrigatoriamente presentes. A designação NoSQL foi inicialmente utilizada no final dos anos 90 e voltou a ser reintroduzida no início do ano de 2009. Este tipo de bases de dados foi criado pois o modelo relacional apresenta algumas limitações quando o volume de dados é elevado e as cargas de trabalho são grandes. Assim ao contrário das anteriores, são escalonáveis horizontalmente e geralmente não suportam instruções e operações de junção. Como vantagens no uso do NoSQL podemos apontar: Como a base de dados não é relacional significa que as mesmas têm maior flexibilidade, sendo mais simples de gerir. Escalabilidade mais simples através do suporte para MapReduce – por norma as bases de dados são projectadas para funcionar eficazmente mesmo com hardware de baixo custo. A maior parte deste tipo de base de dados é open-source – temos como principais bases de dados NoSQL – MongoDB, MarkLogic, Couchbase, CloudDB e Dynamo DB da Amazon. Não é necessário desenvolver um modelo de dados tão detalhado como no paradigma relacional – o que nos permite poupar mais tempo no seu desenvolvimento. Contudo, temos que apontar também algumas das desvantagens do seu uso: Não tem uma comunidade ainda bem definida apesar de estar a crescer. Faltam ferramentas de relatório para análises e testes de desempenho. Falta de padronização – ainda não existe uma linguagem padrão como o SQL sendo que caso seja necessário migrar ou unificar um sistema podem existir problemas que ainda não estão documentados. Posto isto e sem querer entrar em grandes repetições… O NoSQL foi criado para ter uma performance melhor e uma escalabilidade mais horizontal para dar resposta às necessidades onde as bases de dados relacionais não são tão eficazes. Regra geral, podemos afirmar que temos 4 tipos de bancos de dados NoSQL: Documento Os dados são armazenados como documentos. Os documentos podem ser descritos como dados no formato de chave-valor, como por exemplo, o padrão JSON. (um exemplo deste tipo é o MongoDB). Colunas Os dados são armazenados em linhas particulares de uma tabela no disco, podendo suportar várias linhas e colunas. (Um exemplo deste tipo é a base de dados Cassandra.) Grafos Os dados são armazenados na forma de grafos (sim… grafos… com vértices e arestas) (Como por exemplo, a base de dados Neo4j.) Chave-valor Este é o tipo NoSQL que aguenta maior volume de dados, pois o conceito é que um determinado valor seja acessível através de uma chave identificadora única. (Um exemplo é a base de dados Riak.) Desta forma, os dados não estruturados (como artigos, fotos, dados de redes sociais, vídeos ou conteúdo dentro de um post de um blog) podem ser armazenados num único documento que pode ser facilmente encontrado, mas não é necessariamente categorizado em campos como numa base de dados relacional. Em suma, no conceito de modelo relacional (SQL) baseamo-nos em que todos os dados são guardados em tabelas. No modelo não-relacional (NoSQL) não se aplica o conceito de schema: uma chave de valor é utilizada para recuperar valores, conjunto de colunas ou documentos. Na minha opinião, a principal diferença nos bancos de dados NoSQL é que toda a informação é agrupada e guardada no mesmo registro. Já no SQL precisávamos de ter uma relação entre as várias tabelas para ter acesso toda a informação. Lá está… a diferença prática entre verticalmente escalável ou horizontalmente escalável. É importante referir que o NoSQL não veio para substituir o SQL, mas sim para oferecer uma alternativa mais flexível ao suporte de dados. Podemos sempre usar ambas as soluções para diferentes casos de uso. Por isso, o mais comum em soluções escalares de sucesso é a utilização de uma arquitetura híbrida, aproveitando o melhor dos dois modelos.

staff

staff

 

Entrevista a Bruno Horta

Revista PROGRAMAR (RP): Fala-me um pouco de ti e do teu percurso na tecnologia. Bruno Horta (BH): Bem aos 14 anos os meus pais deram-me o meu primeiro computador, até a data apenas tinha mexido um Spectrum 128k de uns amigos, no entanto depois daquele dia que recebi o meu computador e podia explorar o mesmo 24 horas por dia, foi isso mesmo que fiz, a maioria das noites nem dormia, depois disso nunca fiz nada que não estivesse relacionado com tecnologia, aos 16 anos era programador de HTML, Javascript e Perl, depois passei para o hardware onde tive cerca de 10 anos, fazia reparações ao nível da eletrónica, depois de terminar a licenciatura voltei de novo com toda a força para o mundo da programação, mas agora com conhecimento em ambas as partes que constituem um computador podia fazer maravilhas e criar o meu próprio hardware com o meu próprio software… agora sim o mundo é maravilhoso.

staff

staff

 

Python: História e Ascendência

Este artigo aborda a história e ascendência da linguagem de programação Python, destacando a sua ascendência diante da comunidade de desenvolvedores, uma vez que a mesma encontra-se em constante adesão sendo implantada e implementada em diversos sistemas, hardwares e aplicações com uma proposta simplificada e que colabora significativamente com os recursos tecnológicos disponíveis na atualidade. Ler mais…

staff

staff

 

Revista PROGRAMAR nº 59 — Fevereiro de 2018

A Revista PROGRAMAR está de volta com mais uma edição. Desta vez temos como tema de capa o artigo Computação em Grelha, cross-platform usando BOINC, da autoria de António C. Santos. Adicionalmente, nesta edição poderá encontrar mais 23 artigos, que listamos de seguida: Introdução ao Sonatype Nexus – Nuno Cancelo Adobe PhoneGap Build para construção de aplicações móveis híbridas – Jorge C. S. Cardoso SOAPUI Uma ferramenta muito útil para quem desenvolve Webservices – Sérgio Ildefonso Xamarin Forms – usando Xamarin Effects – Sara Silva Deep Learning Passo a Passo – Sérgio Saraiva Introdução ao SAAS – Ricardo Queirós C# – Excel – Rita Peres Como Configurar o Wi-Fi no ESP8266 – Bruno Horta C# – Cifras e mais Cifras – António Santos Kernel Panic – A elegância da simplicidade – António Santos SQL Curtas #3: Mais um conjunto de dúvidas – André Melancia Review do livro: Business Intelligence no SQL Server – Rita Peres Review do livro: Segurança Prática em Sistemas e Redes Com Linux – António Santos Vulnerabilidades Web em 2017 – Pedro Tavares RGPD – O Antes e o Depois – Pedro Tavares SoftEther VPN Project, implementação em Windows,GNU/Linux, MacOS, Android, iOS – António Santos Testes em Sistemas Orientados a objectos: modelo tradicional vs modelo OO – Augusto Manzano Microsoft 365: Ferramentas de Deploy, Segurança e Compliance – Nuno Silva Movimento Maker – Hands ON – Rita Peres CRM – Plataforma ou Customizado – Pedro Azevedo SQL vs NoSQL – Rita Peres Entrevista a: Bruno Horta Python: História e Ascendência – Danilo Morais da Silva Clique aqui para fazer o download desta Edição!

staff

staff

 

Kernel Panic: Fatal Exception

Existem imensas piadas, umas mais elaboradas outras menos elaboradas, em volta de “exceptions” (excepções)! Uma excepção, indica mais do que ser uma “excepção”, indica algo que não correu como esperado, ou como previsto, ou como suposto, em suma “como”! ;) No meio de tantas excepções (exceptions), e sem “entrar em pânico”, afinal não somos um “kernel” qualquer, aparece a “exception” à regra, que somos todos que lê-mos a PROGRAMAR, escrevemos, participamos, dedicamos o nosso tempo à comunidade! Somos a “exception”, que alguns acham “fatal exception”, sem retornar e sem “catch”, numa espécie de loop interminável! Ler mais…

staff

staff

 

Raspberry Pi Hadoop

Continuando as “aventuras” com o Raspberry Pi e a temática do processamento paralelo e distribuído, sobre o qual escrevi na edição 48 em Março de 2015, decidi desta vez trazer uma outra temática interessante, para quem gosta destas “aventuras”. Desta vez em vez de ser MPICH será Apache Hadoop! Ao longo deste artigo, em que se prevê que o leitor não disponha de conhecimento prévio sobre Hadoop, irá ser montado um cluster Apache Hadoop, recorrendo a unidades Raspberry Pi, e executados alguns exemplos demonstrativos. Ler mais…

staff

staff

 

Correndo uma Aplicação Web Java em Azure, passo a passo

Como alguns vós sabem, eu pertenço à organização da Comunidade NetPonto e há uns tempos organizamos o Visual Studio Launch Party nas instalações da Microsoft Portugal. Nesse evento, tivemos o Miguel Caldas a realizar o Keynote onde ele, entre muitas mensagens, destacou: “Nós queremos correr o vosso software” É uma mensagem simples, mas poderosa, que mostra a mudança da postura perante outras tecnologias que não sejam .NET, como seja o PHP ou o Java. Já há algum tempo que estou tentado em realizar algumas experiências envolvendo o desenvolvimento de uma aplicação utilizando Java como linguagem de programação. Ler mais…

staff

staff

 

JUnit

JUnit é um framework open-source para escrever e executar testes em Java. Com ele também é possível executar os asserts que verificam se uma condição é verdadeira. Recentemente (18/07/2017) foi lançada uma versão milestone (provavelmente não é uma versão final e completa) do JUnit 5, que necessita do Java 8. A primeira aparência é que existem várias funcionalidades legais, tais como testes parametrizados (poder passar vários parâmetros para um mesmo teste executar várias vezes), assert de Exception melhorado, agrupar testes por Tags, etc.

staff

staff

 

Criar uma aplicação móvel com jQuery Mobile

Introdução Já muito foi escrito sobre a biblioteca jQuery para JavaScript, incluindo alguns artigos na Revista Programar (por exemplo, Mitos do jQuery e jQuery: Usar ou Não Usar?). No entanto, existem outros projectos “irmãos” do projecto jQuery que são igualmente interessantes para programado- res e designers Web, como as frameworks jQuery Mobile e jQuery UI. Neste artigo, foco-me na jQuery Mobile explicando a sua filosofia de programação, e mostrando alguns dos componentes principais para a criação de uma aplicação móvel. Ler mais…

staff

staff

 

Lua – Linguagem de Programação – Parte 13

Neste artigo são apresentadas algumas operações complementares ao conjunto de informações indicadas em outros artigos, tais como: passagem de parâmetro por matriz, funções anónimas (lambda), funções aninhadas (clousure), simulação do uso e tratamento de exceções, matrizes internas e compilação de programas. Passagem de parâmetro por matriz A linguagem Lua diferencia-se em diversos detalhes de linguagens de programação estruturadas e orientadas a objeto, principalmente o que tange a definição e uso de sub-rotinas (métodos). Ler mais…

staff

staff

 

Tipos de dados int e variantes na linguagem C

Introdução Este artigo foca os tipos de dados int e variantes disponíveis na linguagem de programação C. Na parte inicial, o artigo apresenta os tipos de dados inteiros ditos tradicionais. Seguidamente, o artigo introduz os tipos inteiros orientados para a portabilidade, tais como o int8_t, uint_fast64_t e similares. Os principais conceitos são ilustrados com exemplos, executados, sempre que conveniente, em duas plataformas Linux: uma plataforma de 32 bits Lubuntu 16.04 com a versão 5.3.1 do compilador gcc 5.3.1, e uma plataforma de 64 bits Lubuntu 17.04 com o gcc 6.3.0. A primeira é designada por L32, a segunda por L64. Note-se que ambos as versões do compilador usam nativamente a norma C11 (2011) da linguagem C. Tipos de dados int Como em muitas outras linguagens de programação, a linguagem C define um conjunto de tipos de dados inteiros. São exemplos os tipos de dados signed char, signed short, signed int e signed long e as variantes sem sinal, unsigned char, unsigned short, unsigned int e unsigned long. Na revisão à linguagem designada por norma C99 foi acrescentado o tipo inteiro long long, nas variantes com (signed) e sem (unsigned) sinal. Ler mais…

staff

staff

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.