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.
Continuar a ler →
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 →
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:
Continuar a ler →
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 →
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 →
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
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 →
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 →
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:
- Alguém que nunca usou SQL Server (iniciante) e gostava de aprender; e
- 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 →
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 →
A revista portuguesa de programação