André Melancia

Microsoft Certified Trainer (MCT), incidindo maioritariamente em SQL Server, assim como Programador/DBA há 17 anos, desenvolvendo sistemas de informação e multimédia. Participa activamente em comunidades e eventos: IoT Portugal, NetPonto, SQLPort/SQLSaturdays, PTXug (Xamarin), PHPLx, ISOC.PT, etc. É fundador das comunidades IT Pro Portugal, IPv6 Portugal and DNSSEC Portugal.
LinkedIn Twitter Facebook

Cursores: O Bom, o Mau e o SQL…

O Bom

Uma simples query SQL permite visualizar informação (retornada em formato tabular), sendo essa informação lida por um qualquer programa (app, site, etc.). Mas o que acontece se quisermos que o próprio motor SQL trate a informação?

Consideremos uma tabela de colaboradores duma empresa. Todos os meses temos que processar o ordenado. Para isso executamos algo (e.g. um stored procedure), que tem toda a “magia” e complexidade lá dentro. Mas precisamos de executar tantas vezes quantos registos tivermos. Isso não é possível com um simples SELECT.

Aqui entram os cursores. São uma figura demoníaca muito mal tratada, mas que se virmos bem são até bastantes simples.

Continuar a ler

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”.

Continuar a ler

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).

Continuar a ler

“30 30 37 – For Your Eyes Only”

52 61 72 21 1A 07 00 CF 90 73 00 00 0D 00 00 00 00
00 00 00 E2 31 7A 00 80 23 00 4C 00 00 00 58 00 00
00 02 C5 15 EF F0 FD 09 96 49 1D 33 03 00 01 00 00
00 43 4D 54 09 15 14 CF DD 00 CF D4 A2 A0 18 E9 97
41 27 C0 6D 83 06 2E 37 02 91 51 68 12 85 45 F5 FA
3F 60 DD 37 7D B5 56 45 91 E1 94 6E C7 43 0E 0F 11
FB 1A 40 8A D2 DB A9 6B 89 1E 9A 24 F9 4C 60 87 F3
71 EA 3E 27 76 3B 2D CF E1 EA AA A8 0C 89 74 20 90
40 00 4D 01 00 00 DE 05 00 00 02 D3 19 66 BE D5 09
96 49 1D 35 0D 00 20 00 00 00 54 6F 70 53 65 63 72
65 74 2E 54 58 54 F0 BF 98 1C 64 9C 09 96 49 8F B8
89 9C 09 96 49 8F B8 89 0D 41 0C 8D 53 D5 01 13 8D
5E F9 08 0D DC D9 F9 09 3B FF 24 B5 66 0B D1 7A 46
58 D8 E2 25 AF FD 2F F0 01 30 1E 0A 75 4C 38 E5 3C
34 C0 78 04 AB CC 54 C7 C1 F8 E7 E1 99 6D B5 34 A3
2E CA 10 33 FB 16 42 84 1B E9 09 E3 5A 6E E2 9D B1
32 2F C6 90 64 07 4E 93 24 EA 2D 38 AC CE 09 D1 AA
CE E7 08 C3 E3 D5 52 01 40 F9 9B CE 97 41 3A 80 D8
22 BB 82 7B 2C 3A 30 95 6E 24 13 8E 4A AC 81 D8 A0
C8 75 05 B5 17 44 E5 E7 AE C9 D2 55 07 97 76 CF 1C
AB 85 47 C0 8D A8 0B D6 58 6E 0B 52 90 72 A3 CF E8
E3 1B CC FA 26 96 6D 10 FC 9C 83 ED 4E 5D 7E 9A 2E
5A 27 6A 2D A8 A8 A8 B5 2E 87 AF A1 A7 2F E0 2F F8
4B 02 8B 77 C5 B4 97 F8 31 30 AB 77 4F 40 D9 FF AA
AC 5E 6B DC 6B 0F 69 2A C5 82 8D 97 74 AD F4 CA 94
79 37 B2 47 5A 27 BB 38 1F 66 4B 8C BC 93 72 A1 AB
0C 60 CB AF 23 CC 2B C7 96 08 4E 99 F3 48 3A 72 B0
21 AB 09 74 5C 46 73 EC 4D 68 F9 D1 04 5A DB E4 2E
69 93 7E 89 8E D3 3C 93 D9 71 94 BC E7 5A 2A B0 4B
E4 32 D2 67 D3 4B 38 55 18 9E D3 E9 AE 89 37 79 8F
E6 78 0F 7E 4B 3D 5E DE 17 1E 94 FF 25 91 7F 29 5F
48 C4 3D 7B 00 40 07 00 00 00 00 00 00 00 00 00 00 00

NSA Secrets – Hacking SQL Server – Dynamic Data (UN)Masking

Qualquer sistema informático pode ser atacado. É inevitável, nada é 100% seguro. Por vezes não depende dos programadores. O sistema pode ser totalmente robusto e um ser humano, para “facilitar”, cria acidentalmente buracos de segurança.

Este artigo sobre Hacking, em particular a SQL Server, vem na sequência duma sessão com o mesmo nome que fiz mais de uma dezena de vezes (maioritariamente no estrangeiro), e cujos exemplos aqui partilho (e eventualmente também em futuras edições).

Continuar a ler

Introdução ao Arduino

Está na moda o conceito Internet of Things, que se refere à capacidade de interagir com dispositivos físicos, obtendo informação/métricas (e.g., temperatura, humidade, etc.) e enviando comandos/acções (e.g., abrir porta, ligar ar condicionado, etc.).

O conceito, que não é novo, implica colaboração entre profissionais de electrónica, programadores e até DBAs. Este workshop é adequado para programadores e DBAs que têm poucos conhecimentos de electrónica, dando-lhes uma introdução à utilização de Arduino (actualmente referido como Genuino na Europa), uma das mais conhecidas plataformas de electrónica utilizada nesta área.

Continuar a ler

SQL Server 2014: Curso Completo

Tempo é dinheiro, portanto fica já aqui a minha opinião: Gostei do livro e recomendo.

Queres saber porquê? Continua a ler!

Quando me pediram para fazer a review/análise/crítica deste livro, decidi considerar os dois cenários típicos:

  1. Alguém que nunca usou SQL Server (iniciante) e gostava de aprender; e
  2. Alguém que já é profissionalmente experiente (médio/avançado) com SQL Server numa versão anterior e pretende aprender mais sobre a versão 2014.

Este livro responde às necessidades de ambos, focando a administração e manutenção.

Continuar a ler

IPv6 para Programadores

O crescimento da Internet

A Internet como a conhecemos hoje teve as suas origens na ARPANET [1], a primeira rede a implementar o conjunto de protocolos IP (Internet Protocol) [2], do qual o mais conhecido é o TCP (Transmission Control Protocol) [3].

Pretendia-se um protocolo que transmitisse informação, dividida em pacotes de tamanho reduzido, e cuja gestão de rede fosse descentralizada, já que em tempo de Guerra Fria havia a possibilidade de destruição de partes da rede.

Continuar a ler