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

Blogs

 

ISELTech'17

O ISELTech'17, que decorrerá entre os dias 25 e 27 de Maio no campus do Instituto Superior de Engenharia de Lisboa (ISEL), é um evento aberto a estudantes, trabalhadores e entusiastas de tecnologia que queiram adquirir novos conhecimentos e demonstrar as suas capacidades, num espaço aberto à discussão entre participantes e speakers, abordando temas da atualidade tecnológica, como: Mobile Development, Cloud, Web, Gaming, Internet of Things, Network Engineering, Smart Cities, Smart Mobility, Industry 4.0, Power & Energy, Control & Automation. Durante os três dias do evento serão realizados Workshops para hard e soft skills, concursos e sorteios, e diversas talks. O habitual espaço de recrutamento e exposições também estará presente, e contará com a presença de entidades nacionais e internacionais. O último dia fica guardado para o painel de debate sobre Cibersegurança com convidados especiais. Se te interessas por tecnologia, terás certamente várias sessões que te irão interessar. Mais Info Site/Tickets: iseltech.isel.pt Facebook: /iseltech Twitter: @ISELTech17 Email: iseltech@isel.pt Organizadores GDG Portugal A GDG Portugal é uma comunidade de developers e entusiastas de tecnologias Google que tem vindo a realizar diversas conferências, eventos, workshops tech abertos a toda a comunidade, sejam developers ou apenas curiosos, recebendo entre dezenas a centenas de pessoas. IEEE ISEL Student Branch O IEEE ISEL Student Branch é um grupo associado ao Institute of Electrical and Electronics Engineers (IEEE), que permite aos seus Student Members realizarem atividades extracurriculares, com vista ao seu desenvolvimento pessoal e profissional, nas suas áreas de interesse e que de alguma forma possam estar mais ligados com a sua futura profissão.

staff

staff

 

O problema da falta de GPIO pins

Introdução Numa esmagadora maioria dos circuitos usados em IoT e em automação de uma forma geral, como o caso do Arduino/Genuino, existem algumas limitações em termos de pinos analógicos, que nos podem complicar a tarefa de ligar sensores. Por exemplo, no Arduino/Genuino Uno, apenas são disponibilizados 6 pinos analógicos que vão de A0 a A5, respetivamente. Ler mais…    

staff

staff

 

Padrão de arquitetura SOLID

Introdução Existem diversas orientações para programação orientada por objectos, no entanto, neste artigo apenas iremos focar SOLID com exemplos em C#. SOLID é um acrónimo dos cinco primeiros princípios da programação orientada a objetos e design de código identificados por Robert C. Martin Este mesmo acrónimo foi introduzido por Michael Feathers, após observar que os cinco princípios poderiam se encaixar nesta palavra. O que significa S.O.L.I.D. ? S – Princípio de Responsabilidade Única O – Princípio Open Close L – Princípio de Substituição Liskov I – Princípio de Segregação de Interface D – Princípio de Inversão de Dependência Ler mais… The post Padrão de arquitetura SOLID appeared first on Revista PROGRAMAR.

staff

staff

 

SQL Curtas #2: Dúvidas Comuns

Como mostrar registos por ordem aleatória? Não existe uma forma “standard” de resolver este problema. Cada SGBD (Sistema de Gestão de Bases de Dados) tem uma forma diferente: Ler mais…    

staff

staff

 

A arte, o engenho e muita diversão!

A Arte Programar pode ser uma arte, apesar de ser uma acção e não necessariamente uma “expressão” no sentido mais conservador. Nesse caso um programa seria “uma forma de arte” e consequentemente os developers seriam artistas. Ainda assim, isto nem sempre é observado desta forma! Numa atitude quase que “patológica” ou “desenquadrada” pro- gramar é muitas vezes visto como um ofício, uma tarefa, um trabalho e não propriamente uma forma de arte! Por exemplo e sem divagar muito, ensinam-se artes plásticas, expressão dramática, música, etc… nas escolas, no entanto ainda não existe de forma “massificada” a programação como matéria de ensino e estudo! Ainda que pareça precoce ver os mais novos a aprender a programar, certo será admitir que hoje em dia qua- se todos sabem usar um tablet, ou mesmo um computador! Ler mais…

staff

staff

 

A arte, o engenho e muita diversão!

A Arte Programar pode ser uma arte, apesar de ser uma acção e não necessariamente uma “expressão” no sentido mais conservador. Nesse caso um programa seria “uma forma de arte” e consequentemente os developers seriam artistas. Ainda assim, isto nem sempre é observado desta forma! Numa atitude quase que “patológica” ou “desenquadrada” pro- gramar é muitas vezes visto como um ofício, uma tarefa, um trabalho e não propriamente uma forma de arte! Por exemplo e sem divagar muito, ensinam-se artes plásticas, expressão dramática, música, etc… nas escolas, no entanto ainda não existe de forma “massificada” a programação como matéria de ensino e estudo! Ainda que pareça precoce ver os mais novos a aprender a programar, certo será admitir que hoje em dia qua- se todos sabem usar um tablet, ou mesmo um computador! Ler mais…

staff

staff

 

C# 6: Programação com produtividade

Introdução Com o passar dos anos, cada vez mais os programadores consideram o C# como sendo a linguagem da plataforma .Net. A sua evolução tem sido constante e tem contribuído para a simplificação e redução do trabalho com a escrita de código em .Net. As novidades desta nova versão não são tão impressionantes como a do aparecimento do Linq, por exemplo, mas não deixam de ser úteis para aumentar a eficiência do programador. Este livro que revemos nesta edição é constituído por cinco capítulos e explica as principais novidades introduzidas no C# 6. Ler mais…

staff

staff

 

Introdução à programação com Python, Algoritmos e lógica de programação para iniciantes

Para a review desta edição, foi-me oferecido pelo autor, o livro Introdução à Programação com Python: Algoritmos e lógica de programação para iniciantes, 2ª edição. Dividido em 12 capítulos, o livro apresenta uma estrutura bem organizada e de leitura suave, até para os maus adversos leitores de livros técnicos. Começa por apresentar a motivação para a aprendizagem, capaz de cativar tanto iniciantes como estudantes que recorram ao livro para consolidar conhecimentos. Ler mais…

staff

staff

 

Segredos de Numeração

Neste mundo moderno, tudo é um número (ou vários). Neste artigo veremos alguns exemplos de numerações utilizadas em aplicações de negócio, o seu significado, como construí-los e como validá-los. Uma explicação mais detalhada da matemática dos dígitos de controlo deixa-se para o leitor. Um dígito de controlo (check digit), que pode ser numérico ou alfanumérico, é um valor que pode integrar ou ser separado do número original e que valida possíveis erros de introdução. O erro mais habitual é a troca acidental da ordem de dois dígitos. E.g. “xxxx12xx” ou “xxxx21xx”. Ler mais…

staff

staff

 

SHIFT APPens 2017

A meio do passado mês de Fevereiro, nos dias 17, 18 e 19, deu lugar no pavilhão Mário Mesquita mais uma edição do SHIFT APPens, mais propriamente a 4ª edição do Evento. Como atividade principal era pedido aos participantes que durante os três dias do evento pudessem desenvolver uma aplicação à sua escolha, formando também equipas dinâmicas onde várias personalidades de programação e design se poderiam misturar. No fim dos três dias, e sendo prometido muito código e café por parte da organização do Shift, os participantes poderiam apresentar os seus projetos ao júri do evento (Carlos Mota – Representante do Google Developers Coimbra; Alcides Marques – Representante do Laboratório de Informática do Instituto Pedro Nunes; Joana Brites – Representante da Faculdade de Letras da Universidade de Coimbra; Tiago Henriques – Representante da Wit Software), e serem então premiados pelo seu trabalho (existindo claro, o 1º, 2º e 3º prémios). Em conversa com o relações públicas do evento, Filipe Mendes, podemos perceber que este ano o Hackathon teve bastantes mais participações que nos anos anteriores. Ler mais…

staff

staff

 

Raspberry Pi Zero W

Com o intuito de comemorar o quinto aniversário da família Raspberry Pi, o fim de Fevereiro de 2017 trouxe mais uma novidade a esta conhecida família. Como não podia deixar de ser, aqui na Programar continuamos a ser fãs desta temática, motivo pelo qual não hesitamos em dedicar-lhe algumas linhas nesta edição. Ler mais…

staff

staff

 

Interface Humano – Computador, Nanotecnologia e a dependência tecnológica

Introdução O presente release tem por finalidade abordar como a criação de interfaces avançadas propiciam novos avanços em diferentes áreas do conhecimento. Neste contexto, o foco discutido permeia questões sobre a criação e o desenvolvimento da nanotecnologia que pode estar direta ou indiretamente alterando a interação do homem com o computador. Um ponto evidente é que o imaginário proposto nas produções cinematográficas, principalmente no que tange a ficção científica apresenta grandes possibilidades de aplicação no uso de Interfaces Humano-Computador (doravante IHC), tanto no aspecto positivo e benevolente como pode ser percebido na produção “Viagem Fantástica” (Fantastic Voyage) de 1966, como no aspecto sombrio e devastador na produção “Exterminador do Futuro” (The Terminator) de 1984. Cabe como ilustração um breve comentário sobre o filme “Minority Report” de 2002 que apresenta um estilo de interface, introduzida tempo depois no console de videogame XBOX da empresa Microsoft com o periférico Kinect o qual proporciona uma mecânica de jogabilidade semelhante à mostrada no filme. Ler mais…

staff

staff

 

Revista PROGRAMAR nº 55 — Março de 2017

A Revista PROGRAMAR está de volta com mais uma edição. Desta vez temos como tema de capa o artigo Docker: Overview, da autoria de Nuno Cancelo. Adicionalmente, nesta edição poderá encontrar mais 15 artigos, que listamos de seguida: API Rest com Spring Boot (parte 2) (José Martins) JavaFX: Passos Seguintes (Nuno Cancelo) Um bot para Telegram com o Jogo da velha (Jogo do Galo) (Nilo Menezes) Automação do Azure com Windows PowerShell Desired State Configuration (Ricardo Cabral) O Problema do casamento Estável utilizando o Algoritmo Gale-Shapley (António Santos) O Problema da falta de GPIO Pins (António C. Santos) C# – Padrão de Arquitetura SOLID (António C. Santos) SQL Curtas – SQL Curtas #2: Dúvidas Comuns (André Melancia) Kernel Panic – A arte, engenho, e muita diversão (António Santos) Análise ao livro C# 6 – PROGRAMAÇÃO COM PRODUTIVIDADE (Mónica Rodrigues) Introdução à Programação com Python, Algoritmos e lógica de programação para iniciantes (António Santos) Segredos de Numeração (André Melancia) ShiftAppens 2017 (Filipa Peres) Raspberry Pi Zero W (Rita Peres) Interface Humano-Computador, Nanotecnologia e a dependência tecnológica (Augusto Manzano) Clique aqui para fazer o download desta Edição!

staff

staff

 

long long ago; /* in a galaxy far far away */

O título até parece brincadeira, mas é sério! E compila em C99! E foi assim, há muito, muito tempo, que a primeira edição da revista, foi publicada, fazia o ano de 2006, não numa “galáxia muito, muito distante”, mas num URL perto de todos nós! E assim o tempo passa! Tal qual história de ficção engraçada ou de mitologia clássica, a revista volta até aos seus leitores, como uma “fénix renascida” do famoso Albus Dumbledore, retirada de um livro conhecido de todos, ou de quase! Não vale a pena fazer “resumos do ano passado”, porque o passado é “história que contamos”, não é mais do que isso, nem menos do que isso aqui não se tentam contar histórias, pelo contrário, tentamos “fazer história”. Fazer história é dar uso àquela que é uma das mais elementares capacidades do ser humano e que nos distingue dos restantes mamíferos, a capacidade de criar! Para alguns pode parecer estranho, mas programar é criar “novos mundos” escrevendo código, é como pintar um quadro, como esculpir uma peça, como escrever um livro, onde a sintaxe e a semântica devem fazer um sentido inequívoco. Ouso dizer, sem querer ser demasiado ousado, que programar, sendo um verbo transitivo, pode significar mais do que apenas a divisão de um problema entregue a um equipamento eletrónico, em instruções que este aceite. Significará imaginar algo, construir esse algo “abstrato” mentalmente, e por fim descrever esse algo em instruções capazes de serem executadas por um equipamento. Assim, de certa forma poder-se-ia dizer que programar é tão importante como escrever, ler, sonhar, pensar, definir, controlar, fazer uma complexa miríade de tarefas, dentro e fora do âmbito criativo. Isso faria de todos os programadores, entusiastas, aspirantes a programadores, verdadeiros artistas! Parafraseando algo que li num chat, faz algum tempo, “o nosso dever para com a vida, é aprendermos o que pudermos, ensinarmos o que soubermos, melhorarmos tudo em que tocamos, ajudar tudo o que conseguirmos, criar o que nos for possível e deixar tudo melhor do que encontrarmos, para os que vierem depois de nós”, não porque seja “socialmente correto” dizer tudo isto, mas antes porque um programador, é uma “mente inquieta”, uma “mente inquisidora”, “criadora”, artista e cientista, de bits e bytes descritos! E nesses bits e bytes, aquilo que outrora lemos como ficção, poderá ser algo imprescindível no dia a dia, do amanhã! Algo que faça a diferença, para alguém, ainda que pouca seja, será sempre alguma! Será o “sabre de luz, de um personagem de cinema, ou o comunicador da ficção de 1966. Quem sabe até a “Nimbus 2000” de atleta dos livros, numa competição desencantada, numa escola onde se chega de comboio a vapor, ou um simples rodapé, de um qualquer livro escrito. Até à próxima edição, boas leituras!
António Santos

staff

staff

 

Programação Genética

Resumo Neste artigo descrevemos uma forma de resolver problemas com algoritmos que se baseiam na teoria da seleção natural. Iremos resolver o problema do caixeiro viajante, ilustrando-o com um programa em Haskell (https:// www.haskell.org/). Ler mais…

staff

staff

 

API Rest com Spring Boot (parte 1)

No mundo Java, o framework open source Spring, não sendo o único, é quase um standard para quem pretende adotar um padrão de injeção de dependências / MVC, que nos facilita bastante a vida pois permite que nos concentremos essencialmente nas business rules evitando ter de desenvolver as partes mais trabalhosas as quais são geridas pelo framework. De uma forma simplificada, podemos então dizer que o Spring é um framework de injeção de dependências, capaz de gerir o ciclo de vida dos diversos componentes e que inclui módulos (ou projetos), bastante robustos e com provas dadas, que nos permitem interligar um enorme número de tecnologias bastante comuns em Java. Ler mais…

staff

staff

 

Programação de aplicações cliente/servidor assentes no protocolo de transporte UDP

A pilha protocolar TCP/IP A pilha protocolar TCP/IP é considerada o standard de facto na área das comunicações informáticas, sendo praticamente obrigatório o seu uso em aplicações distribuídas. A referida pilha tem mecanismos próprios que possibilitam o envio, encaminhamento e receção de dados entre duas ou mais entidades comunicantes. Um dos elementos chaves da pilha TCP/ IP é o endereço IP que identifica um sistema computacional. Atualmente, existem dois tipos de endereços IP: IPv4 e IPv6. O IPv4 assenta em endereços de 32 bits (4 octetos), sendo comum a sua representação através de 4 números inteiros separados por ponto. Por exemplo, 192.168.120.12 é um endereço IPv4. O crescimento exponencial da internet tornou necessária a criação de um espaço de endereçamento alternativo, com capacidade para um maior número de endereços IP: o IPv6. Neste protocolo, cada endereço IP é composto por 128 bits (16 octetos). Exemplos de endereço IPv6 são 2001:0db8:85a3:0000:0000:8a2e:0370:7334 e ::1, este último representando o endereço local. Ler mais…

staff

staff

 

PHP 7

Neste artigo, traremos informações a respeito do PHP 7, alguns dos novos recursos e exemplos de código que podem executar de maneiras diferentes em versões anteriores à 7. O PHP 7 foi liberado em dezembro de 2015, atualmente encontra-se na versão 7.0.11 (este artigo está sendo escrito em outubro de 2016). A linguagem PHP surgiu na década de 1990 como uma linguagem de scripting interpretada no servidor, mas seu histórico não é o foco deste artigo e pode-se encontrar mais informações no link http://php.net/manual/history.php. A especificação do PHP pode ser encontrada em https://github.com/php/php-langspec. Possui uma sintaxe parecida com C e Perl. Ler mais…

staff

staff

 

Let’s Brainfuck in Pascal!

Com os devidos créditos à originalidade do criador desta linguagem, e ainda mais pela originalidade e não menor acertividade pelo nome dado, Brainfuck é um clássico do mundo exotérico da programação. É inegável que, numa não muito usual conversa de café acerca de linguagens exotéricas, Brainfuck é comummente a primeira referida. Com o seu princípio extremamente simples e sintaxe altamente minimalista, esta linguagem consegue fazer jus ao seu nome num piscar de olhos. Não obstante a sua alta aplicabilidade no mundo… exotérico, talvez?, Brainfuck representa um exercício bastante apetecível para a implementação de um parser. Estando disponível na Internet o código-fonte Assembly do interpretador de Brainfuck, a sua implementação noutras linguagens recorrendo a diferentes paradigmas representa um carácter didáctico inegável. Neste artigo – ao qual referências ao calão não irão faltar por força da circunstância – será feita a implementação de um interpretador de Brainfuck em Pascal, recorrendo unicamente ao paradigma procedural. Iniciemos então esta curiosa jornada! Ler mais…

staff

staff

 

JavaFX : Uma Breve Introdução

Recentemente tive a necessidade de alterar a interface gráfica de uma aplicação, que tinha sido feita em Java Swing, para incluir mais uns campos. Mas a alteração, apesar de simples, revelou-se uma dor de cabeça devidos aos compromissos de código assumidos. Aconselhei-me com outros colegas, investiguei e optei por experimentar o JavaFX e pouco tempo depois tinha uma nova interface gráfica a funcionar. Ler mais…

staff

staff

 

Criptografia e segurança por hardware com Arduino/Genuino ou outros sistemas por I2C

Introdução ao problema Cada vez mais se lêem notícias sobre os perigos da internet das coisas, desde um ataque massivo de negação de serviço distribuída (Distributed Denial of Service) que excedeu larguras de banda de 799Gbps, até botnets de dispositivos IoT, etc… Uma das preocupações de quem desenvolve produtos IoT, sejam software, hardware ou ambos, acaba por ser a segurança desses dispositivos, e até que ponto a segurança por software é suficiente num dispositivo que pode controlar por exemplo, um sistema de alarme, ou o controlo de aquecimento, etc… Ler mais…

staff

staff

 

Interagindo com páginas web com C#

Introdução Algumas vezes necessitamos que o nosso programa interaja com uma página web, seja para obter alguma informação ou para testar o seu funcionamento. Normalmente, isto pode ser feito interagindo com o conteúdo da página, usando a API DOM (Document Object Model – representação dos objetos da página em forma de árvore) e obter informações ou interagir com a página (preenchendo caixas de texto ou clicando em botões pelo programa). Isto, além de ser difícil e sujeito a erros, pode ter de funcionar de maneira diferente nos vários browsers. Uma maneira mais simples de fazer isto, além de ser compatível com a maioria dos browsers é usar uma ferramenta open source, chamada Selenium (http://www.seleniumhq.org/). Neste artigo, iremos mostrar como usar o Selenium para interagir com o Google, fazer uma pesquisa e mostrar os resultados numa Listbox WPF. Ler mais…

staff

staff

 

SQL Curtas — Intervalos de datas

Um dos problemas mais habituais em programação SQL é pedir dados que aconteçam no intervalo de duas datas. O tipo de dados dos campos de data/hora variam conforme o SGBD (DATE, TIME, DATETIME, DATETIME2, SMALLDATETIME, etc.), mas o problema descrito em baixo é semelhante em todos. Problema: Necessito dos registos cujo campo CampoData está no intervalo 2016-01-01 (inclusive) a 2016-12-31 (inclusive). 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.