quarta-feira, 13 de novembro de 2019

C++ - Operadores de igualdade

Para termos um valor lógico, podemos simplesmente atribuir esse valor (true ou false).
bool valor = true;

Mas outra forma de gerar um valor lógico é a partir das igualdades.
Uma igualdade entre duas variáveis vai nos dizer se as variáveis (ou valores lógicos) têm o mesmo valor ou não.

Igualdade (==):
Se tiverem o mesmo valor, o resultado vai ser verdadeiro.
Caso contrário, será falso.
Escreve-se com "==" entre duas variáveis (ou valores lógicos).
bool variable = true == true;
bool variable2 = false == false;
bool variable3 = true == false;
variable vai ser verdadeira (verdadeiro é verdadeiro).
variable2 vai ser verdadeira (falso é falso).
variable3 vai ser falsa (verdadeiro é falso).

Desigualdade (!=):
Se tiverem o mesmo valor, o resultado vai ser falso.
Caso contrário, será verdadeiro.
Escreve-se com "!=" entre duas variáveis (ou valores lógicos).
bool variable = true != true;
bool variable2 = false != false;
bool variable3 = true != false;
variable vai ser falsa (verdadeiro não é verdadeiro).
variable2 vai ser falsa (falso não é falso).
variable3 vai ser verdadeira (verdadeiro não é falso).

Não se confundam:

  • O igual (=) serve para atribuir um novo valor à variável;
  • Enquanto a o operador de igualdade (==) serve para verificar igualdade de valor (entre variáveis ou valores lógicos).
Assim como os operadores lógicos, vão ser utilizados nas condições.

Python - Biblioteca 'Math' (Parte 2)

UMA DAS COISAS MAIS IMPORTANTES EM TODA A PROGRAMAÇÃO, SÃO CÁLCULOS ARITMÉTICOS, FUNÇÕES, NÚMEROS ENTRE OUTROS CONCEITOS MATEMÁTICOS, ESTA BIBLIOTECA VAI NOS AJUDAR COM ISSO!

Nota: Como esta biblioteca é bastante vasta, tive de publicar duas partes sobre a mesma, sendo esta a parte 2 de 2.

Comecemos por importar a biblioteca, como demonstrei nas publicações "Python - Bibliotecas" e "Python - Biblioteca 'Random'", para podermos utilizar os seus comandos:

import math

Esta é a segunda biblioteca de que estou a explorar em Python, sendo uma das mais importantes e úteis.

Para mais informações sobre esta biblioteca, consultar: docs.python.org/3/library/math.html

Seleccionei alguns comandos mais interessantes desta biblioteca para demonstrar nesta segunda parte:
  • Constante e - este comando não é uma função, mas sim um valor de uma constante; o Número de Euler ou Constante de Napier, que é uma constante matemática que em Python é igual a 2.718281828459045 e para a utilizarmos basta usar 'e':
import math

print(math.e)

e aparecerá:

2.718281828459045

  • Potenciação de e - na primeira parte falei de um comando para criar potências, este é semelhante mas só pode ser utilizado para o Número de Euler ou Constante de Napier, que falei acimapara adiciona expoentes basta utilizarmos o comando 'Exp':
import math

print(math.exp(2))

print(math.exp(5))

print(math.exp(10))

em que obteríamos:

7.38905609893065
148.4131591025766
22026.465794806718

  • Pi (π) - como a constante e, o valor pi também tem um comando para apresentar esse valor, através de 'pi':
import math

print(math.pi)

que em Python é:

3.141592653589793

  • Calcular seno, cosseno e tangente - para calcularmos o seno, cosseno e tangente de um ângulo qualquer, a biblioteca Math disponibiliza 3 comandos bastante simples, 'sin', 'cos' e 'tan' respectivamente:
import math

print(math.sin(60))

print(math.cos(30))

print(math.tan(87))

que neste exemplo resultará:


-0.3048106211022167
0.15425144988758405
-1.4424174716642324

  • Calcular a raiz quadrada - para calcularmos a raiz quadrada de qualquer valor, basta usarmos o comando 'Sqrt' :
import math

print(math.sqrt(25))

print(math.sqrt(36))

print(math.sqrt(64))

onde obteríamos...


5
6
8


A biblioteca Math ainda tem muitas outras funções que não demonstrei aqui, como cálculo de logaritmos, que poderei falar com algum detalhe se precisarmos das usar em programas futuros.


Referências:


terça-feira, 12 de novembro de 2019

Introdução



O design de jogos engloba muitos processos que eu pretendo discutir neste blogue.

Eu pretendo abordar tudo desde a música dos jogos, à criação das personagens e história, à programação e animação envolvida. Eu irei escrever sobre estes temas principalmente sozinhos mas, também pretendo falar da interligação dos mesmos temas e, se descobrir ou me lembrar de algo para dizer sobre um tema do qual já falei irei criar um novo post para acrescentar a informação. Eu irei começar com um pouco da história dos videojogos e da sua evolução nos últimos anos, depois pretendo falar sobre a influência da música nos jogos, depois a história e a criação da narração de um jogo e, depois disto logo se vê (posso nem por estes três primeiros se por alguma razão no dia em que for pôr um deles me apetecer falar de outra coisa.

O meu objetivo é ensinar vos sobre os processos da criação de um videojogo e aprender coisas novas pelo caminho.

segunda-feira, 11 de novembro de 2019

Carros autónomos serão uma realidade através da IoT!

Carros autónomos e inteligentes eram apenas ficção científica à poucos anos atrás. Porém, cada vez mais este conceito é uma realidade, sendo possível possuir veículos com capacidade de condução autónoma, um pouco limitada, como os Tesla. No futuro espera-se que estes veículos sejam capazes de até reabastecer sozinhos.

Mas vamos ao fundamental deste post, como a IoT torna tudo isto possível? Apesar de a tecnologia envolvida na fabricação destes automóveis depender de cada marca, a maioria usa uma série de radares detectores de laser e câmaras para mapear o ambiente envolvente ao automóvel. A informação é depois processada e analisada, sendo depois enviadas instruções para o carro tendo em conta os dados obtidos. 

No futuro (após a implementação do 5G) espera-se criar uma rede que conecte todos os carros que se encontrem próximos, e consequentemente os seus sensores, pois apenas quando todos os carros estiverem a funcionar em sincronia, partilhando informação com a qual todos acordam, será possível atingir a tão desejada, completa automação. Ora isto nada mais é do que conectar todos os sensores de diversos carros a uma só rede, através da internet, traduzindo, criar um sistema IoT!


blogue pessoal sobre tech:



fonte:



imagem:

  • URL
  • consultada 10/11/2019

C++ - Operadores lógicos

Assim como na matemática (e a vida real, no fundo), na programação existem os valores lógicos: verdadeiro e falso.

Como já devem saber, o tipo de dado boolean (bool) é o que guarda true ou false.
bool valor = false;

Então, também existem os operadores lógicos:

Negação (!):
A negação serve para "inverter" um valor lógico, assim como o til (~) da matemática:
Falso será verdadeiro, Verdadeiro será falso.

Escreve-se com um ponto de exclamação (!) antes da variável (ou valor lógico).
bool variable = true;
bool notvariable = !variable;

bool variable2 = false;
bool notvariable2 = !variable2;
notvariable vai ter o valor oposto a verdadeiro (falso).
notvariable2 vai ter valor oposto a falso (verdadeiro).

Conector E (&&):
O conector E, também chamado de AND, vai nos dar a combinação de dois valores lógicos, assim como o Λ da matemática (os dois têm de ser verdadeiros):

  • Verdadeiro e Verdadeiro - Verdadeiro
  • Verdadeiro e Falso - Falso
  • Falso e Falso - Falso
Escreve-se com "&&" entre duas variáveis (ou valores lógicos).
bool variable = true && true;
bool variable2 = true && false;
bool variable3 = false && false;
variable vai ser verdadeiro (verdadeiro e verdadeiro).
variable2 vai ser falso (verdadeiro e falso).
variable3 vai ser falso (falso e falso).

Conector Ou (||):
O conector OU, também chamado de OR, vai nos dizer se pelo menos um de dois valores lógicos é verdadeiro, assim como o da matemática:

  • Verdadeiro ou Verdadeiro - Verdadeiro
  • Verdadeiro ou Falso - Verdadeiro
  • Falso ou Falso - Falso

Escreve-se com "||" entre duas variáveis (ou valores lógicos).
bool variable = true || true;
bool variable2 = true || false;
bool variable3 = false || false;
variable vai ser verdadeiro (verdadeiro ou verdadeiro).
variable2 vai ser verdadeiro(verdadeiro ou falso).
variable3 vai ser falso (falso ou falso).


Se tentarmos fazer print da variável com valor lógico, vai ser 0 (falso) ou 1 (verdadeiro).
Em vez de false e true podemos usar 0 e 1 da mesma forma.

Estes operadores lógicos vão ser muito úteis nas condições, que falarei brevemente.

Python - Biblioteca "Math" (Parte 1)

UMA DAS COISAS MAIS IMPORTANTES EM TODA A PROGRAMAÇÃO, SÃO CÁLCULOS ARITMÉTICOS, FUNÇÕES, NÚMEROS ENTRE OUTROS CONCEITOS MATEMÁTICOS, ESTA BIBLIOTECA VAI NOS AJUDAR COM ISSO!

Nota: Como esta biblioteca é bastante vasta, terei de publicar duas partes sobre a mesma, sendo esta a parte 1 de 2.

Comecemos por importar a biblioteca, como demonstrei nas publicações "Python - Bibliotecas" e "Python - Biblioteca 'Random'", para podermos utilizar os seus comandos:

import math

Esta é a segunda biblioteca de que estou a explorar em Python, sendo uma das mais importantes e úteis.

Para mais informações sobre esta biblioteca, consultar: docs.python.org/3/library/math.html

Seleccionei alguns comandos mais interessantes desta biblioteca para demonstrar nesta primeira parte:
  • Arredondar para inteiro - para arredondarmos um valor real para o número inteiro mais próximo e acima, utilizamos o comando 'Ceil':
import math

print(math.ceil(6.012))

print(math.ceil(3.7))

print(math.ceil(0.0004))

Nestes exemplos, o que apareceria:

7
4
1

  • Remover o sinal - para removermos um sinal positivo ou negativo, aparecendo apenas o valor, usamos o comando 'Fabs':
import math

print(math.fabs(-6.333))

print(math.fabs(6.333))

em que o resultado seria:

6.333
6.333

  • Factorial - para calcular o factorial de um valor, usamos o comando 'Factorial':
import random

print(math.factorial(3))

print(math.factorial(5))

print(math.factorial(10))

e iria resultar:

6
120
3628800

  • Manter a 'parte inteira' - este comando permitenos remover todos os valores à direita da virgula, apresentando apenas o valor inteiro, através do comando 'Floor':
import math

print(math.floor(6.333))

print(math.floor(0.001))

print(math.floor(7.403))

e vamos obter:

6
0
7

  • Potenciação - para além do método que falei na publicação "Python - Operações Aritméticas", podemos criar potências com o comando 'Pow':
import math

print(int(math.pow(2, 3)))

print(int(math.pow(5, 1)))

print(int(math.pow(8, 0)))

assim sendo, apareceria:


8
5
1


Terminando assim a Parte 1 da biblioteca Math, com 5 comandos que nos irão ser úteis em diversos programas futuros. A Parte 2 será publicada dia 13 de Novembro (quarta-feira)!


Referências:




domingo, 10 de novembro de 2019

iOS 12


IOS 12 logo.svg


IOS 12 Homescreen iPhone X.png
  Este iOS foi lançado no dia 17 de setembro de 2018 e a sua ultima versão lançada foi a 12.4.3 no dia 28 de outubro de 2019, há menos de um mês e esteve disponível para as seguintes plataformas: iPhone 5S, 6, 6 Plus, 6S, 6S Plus, 7, 7 Plus, 8, 8 Plus, X, XS, XS Max e XR, iPod Touch de 6ª e 7ª geração e iPad Air, Air 2, Air 3ª geração, iPad de 5ª e 6ª geração, Mini 2, 3, 4 e de 5ª geração e para todos os modelos do Pro lançados.

  As modificações efetuadas neste sistema operativo foram as seguintes:

 - As aplicações iniciam 40% mais rápido, o teclado do sistema ativa-se 50% mais rápido e a câmera ativa-se 70% mais rápido;

 - O Screen Time que é um novo recurso que regista a quantidade de tempo que o utilizador passou no dispositivo e em cada aplicação. Este novo recurso também fornece opções de bloqueio para limitar o uso de aplicativos com restrições de tempo;

 - o Teclado tem modo trackpad (que permite que o utilizador mova o cursor livremente) é ativado pressionando a barra de espaço em dispositivos sem o 3D Touch;

 - A app medidas serve para que o utilizador faça medições de objetos reais. Também funciona como um nível, um recurso que foi originalmente incorporado como parte da aplicação Compass;

 -A aplicação Mapas começou a ser reconstruída, contando com dados de mapas de terceiros em vez de usar dados de mapas fornecidos por terceiros. Isso permite instruções e previsões mais precisas nas rotas mais rápidas.

sábado, 9 de novembro de 2019

iOS 11


IOS 11 logo.svg

Tela inicial para iOS 11 iPhone 7 Plus.png
  Como já tenho vindo a falar sobre muitos iOS, hoje cá vem mais um deles, apesar de já estar quase no fim do geral de cada um deles. O iPhone OS de hoje é o nª11 que foi lançado no dia 19 de setembro de 2017 e a sua ultima versão foi lançada no dia 9 de julho de 2018 e foi a 11.4.1 . Este sistema operativo esteve disponível para as seguintes plataformas: iPhone 5S, 6, 6 Plus, 6S, 6S Plus, 7, 7 Plus, 8, 8 Plus e X, iPod Touch de 6ª geração, iPad Air, Air 2, iPad(2017) (2018), Mini 2, 3 e 4 e Pro.

  As modificações efetuadas neste sistema operativo foram as seguintes:

 - A tela de bloqueio e o Centro de Notificações passar a ser conjuntos, permitindo que os utilizadores vejam todas as notificações diretamente no ecrã de bloqueio;


 

O Control Center foi redesenhado e agora unifica suas páginas e permite aos usuários pressionar os botões 3D Touch (ou pressionar longamente os dispositivos sem 3D Touch) para obter mais opções. O Centro de Controlo pode ser personalizado;








 - Este iOS apresenta suporte nativo para a digitalização de código QR , por meio do aplicativo Câmera;



 - As apps Notes , Contactos , Lembretes , Maps e App Store foram redesenhadas em termos dos seus ícones;



 - Foi adicionado o recurso "Emergency SOS " que desativa o Touch ID depois de carregar no botão Dormir / Despertar cinco vezes em rápida sucessão. Impede que o Touch ID funcione até que a senha do iPhone seja inserida e liga para um contacto de emergência;



 - A aplicação Mensagens no iPhone X apresenta um emoji de rastreamento de rosto chamado "Animoji"  que usa o Face ID.

sexta-feira, 8 de novembro de 2019

Banda Sonora

Banda Sonora


No meu último artigo falei na construção de um bom ambiente num filme.

Hoje, dentro deste ambiente falo mais aprofundadamente na escolha de uma boa banda sonora que se adequa perfeitamente ao nosso vídeo.
Para ilustrar perfeitamente o que vou falar vou recorrer ao filme Bohemian Rhapsody (2018)

Queremos uma banda sonora variada, maioritariamente instrumental mas em algumas fases será melhor recorrermos a músicas não instrumentais por exemplo num momento do nosso vídeo em que passamos sequências de time lapses.
Temos de ter o cuidado da pertinência de cada música no decorrer do vídeo. Não seria apropriado pormos a musica "Party" dos Queen enquanto uma personagem chora...
No entanto, neste exemplo,


enquanto assistimos a Freddie Mercury (interpretado por Rami Malek) a arrepender-se do seu erro não há som absolutamente nenhum à exceção da chuva e das vozes das personagens mas quando admite mudar a sua vida para melhor a música "Under Pressure" chega-nos aos ouvidos a pouco e pouco. Este é um exemplo em que a mistura sonora foi bem executada (não é por nada que este filme ganhou o prémio da academia para o filme com melhor edição e mistura sonora).


O que é Domótica?

Domótica é uma tecnologia super recente, responsável pela gestão de todos os recursos habitacionais (smart home). Este termo nasceu da fusão de "Domus" que significa casa, com "Robótica". Estamos essencialmente a utilizar a internet para controlar dispositivos (IoT), sejam estores, forno, climatização, iluminação...

Este conceito beneficiou em muito da popularização de microcontroladores como Arduino ou Raspberry Pi, que são responsáveis pelo controlo dos diferentes dispositivos, estando tudo centralizado, normalmente num smart speaker com IA (Amazon Echo, Google Home, Home Pod) ou numa app para smarthpone. Claro que se tivermos equipamentos de melhor qualidade, pode nem ser necessário dár-lhes ordem, pois estes podem ter capacidade de ação autónoma, como, por exemplo: abrir os estores ao amanhecer; acender as luzes progressivamente antes de acordarmos; se está frio, o ar condicionado aumenta a temperatura sozinho; o aspirador apenas realiza a sua função quando não está ninguém em casa;...

Esta tecnologia surge como uma forma de nos facilitar o dia a dia, ajudando na poupança do tempo. Sendo uma grande impulsionadora do nosso conforto e melhoria de vida. Quem não quer? A resposta a esta pergunta é muito evidente. Porém, a domótica ainda não muito conhecida e ainda menos divulgado. Provavelmente devido aos preços que ainda são elevados ou devido ao medo de não "saber como mexer nessas coisas". No entanto, é uma tecnologia que tem muito espaço de crescimento e que no futuro estará certamente na casa de quase toda a gente. O que me faz crer isto? O crescente número de projetos com estas soluções de automatização. Mas só o tempo dirá, claro.


Blogue pessoal sobre tech:

Imagem:
  • URL
  • consultada no dia 03/11/2019
fontes:

Python - Cores no Terminal

TUDO DEVE TER UMA BOA ESTÉTICA, E ATÉ EM PROGRAMAÇÃO EM PYTHON PODEMOS COLOCAR ALGUMAS MODIFICAÇÕES NO QUE APARECE NO TERMINAL!

A publicação de hoje não tem muito a desenvolver a nível aritmético ou outro nível da programação  que pode ser considerado como 'mais importante', consideremos como uma informação bónus que até pode ser utilizada de algumas maneiras interessantes.

Para colocar mos cores no terminal Python, temos um comando base:


\033['style'; 'text'; 'back'm

Começa sempre com '\033' e as modificações podem ser realizadas em 3 secções para cada tipo de variação:


  • Style - que muda o estilo em que o texto está escrito, podendo variar nos seguintes tipos:

Traduzindo, quando colocamos 0, o estilo do texto fica normal, colocando 1, fica a negrito, 4 fica sublinhado e 7 fica negativo, ou seja, a cor do texto passa a ser a cor de fundo do texto.

  • Text - muda a cor do texto, podendo variar em 8 cores:
As cores podem ser:

Branco

Vermelho

Verde

Amarelo

Azul

Roxo

Ciano

Cinza


  • Back - que muda a cor do estilo negativo, também podendo variar entre 8 cores:
As cores podem ser:


Branco

Vermelho

Verde

Amarelo

Azul

Roxo

Ciano

Cinza


Sendo assim as mesmas que em Text.


Esta informação pode ser útil para fazer um código de cores ou até para animar um bocado o seu terminal.


Referências:

C++ - Input do utilizador na consola

Já sabemos como fazer output para a consola, a partir do cout, mas como é que se faz input do utilizador para a consola? Isto é, o utilizador escrever informação na consola que vai ser usada no código?

Para fazermos isto, existe o cin, que assim como o cout e o endl, tem sim um significado para o nome:

  • cin - Console In
  • cout - Console Out
  • endl - End Line
cin (Console In), significa então que a consola vai receber informação (in) em vez de dar informação (out). Quando usarmos o cin, o programa vai parar e esperar input do utilizador. Com input quero dizer algum texto ou número, seguido de um Enter. O valor deste input vai ser guardado numa variável já criada.

Escreve-se assim:
cin >> variable;
onde variable é a variável onde queremos guardar a informação.

O tipo de dado da variável deve corresponder ao tipo de input: se o input é um número inteiro, a variável é um int; se é um carácter, é um char; etc.

Cada input é separado por um espaço.
Ou seja, se escrevermos um texto com espaços, apenas vai ser lida a parte até o primeiro espaço, o resto é ignorado, a menos que haja outros pedidos de input.
Por exemplo, escrever
Sou Nyck
na consola e dar Enter, com variable sendo uma string, apenas vai guardar "Sou" na variável.
"Nyck", vai ser ignorado a menos que eu tenha outra variável string a pedir input com o cin, assim:
cin >> variable;
cin >> variable2;
ou
cin >> variable >> variable2;

Assim, "Sou" fica em variable e "Nyck" em variable2.
Neste caso, escrever "Sou" numa linha, dar Enter e escrever "Nyck" numa linha, e dar Enter, vai ter o mesmo resultado.

cin.get()
Também existe o cin.get(), que é outra forma de receber input, mas apenas para o primeiro carácter.
char c;
cin.get(c);

Se eu escrever
Sou
apenas o 'S' vai ser lido (e atribuído a c).

Só escrever
cin.get();
também vai parar o programa até receber um Enter.

Programa exemplo:
#include <iostream>
using namespace std;

int main(){
    string nome;

    cout << "Hey, camarada! Escreve o teu nome: ";
    cin >> nome;
    cout << nome << endl;
}

Agora já temos uma forma de "interagir" com o nosso programa. Podemos introduzir dados os quais vão ser atribuídos a variáveis do programa.

quinta-feira, 7 de novembro de 2019

iOS 10

IOS 10 logo.svg



A tela inicial padrão do iOS 10 em um iPhone 7  Hoje vou falar sobre o iOS 10 que foi lançado no dia 13 de setembro de 2016 e a sua última versão foi lançada no dia 22 de julho de 2019 que foi a 10.3.4, que esteve disponível nas seguintes plataformas: iPhone 5, 5C, 5S, 6, 6 Plus, 6S, 6S Plus, SE, 7 e 7 Plus, iPod Touch de 6ª geração e iPad de 4ª geração, Air, Air 2, iPad(2017), Mini 2, 3 e 4 e no Pro.
 As modificações feitas neste sistema operativo foram as seguintes:

 Centro de Controlo foi redesenhado e dividido em três partes: uma para configurações a um nível geral, como a mudança rápida para o modo avião e bloqueio de orientação, uma para controles de áudio e outra para controlar os aparelhos HomeKit, se forem utilizados;

 - O sistema "deslize para desbloquear" na tela de bloqueio foi removido, sendo reposicionado pelo sistema de carregar no botão central;

 - São apresentados novos efeitos sonoros para bloquear o dispositivo e cliques no teclado;
 - Se um dispositivo detetar algum líquido na porta Lightning, surge uma notificação que avisa o utilizador para desconectar o cabo Lightning e permitir que a porta seque;
 - Também fica a ser permitido que os utilizadores encontrem o seu Apple Watch usando o Find My iPhone;
 - No calendário, os utilizadores agora podem alterar em que dia da semana o calendário é iniciado, além de configurações de alerta para aniversários e eventos e tipo de calendário;
 - A app do relógio agora tem um tema escuro. Um novo recurso  chamado "Hora de dormir" que lembra o utilizador de quando deve ir para a cama para dormir a quantidade desejada. Também há um novo estilo de cronómetro, que pode ser acedido deslizando para a esquerda;
 - A app Maps foi redesenhada e atualizada com recursos adicionais. Um marcador pode ser colocado automaticamente para indicar onde está o carro estacionado. A aplicação agora ajuda os utilizadores a encontrar postos de gasolina, restaurantes de fast-food ou o café mais próximo;
 - Por fim a app das mensagens, passa a ter a  sua própria App Store, que permite que os utilizadores descarreguem apps do iMessage de terceiros que podem ser acedidos ​​nas conversas do iMessage. A aplicação foi atualizada para incluir muitos efeitos visuais. Os balões de bate-papo, por exemplo, podem ser enviados com uma animação "alta" ou "suave" que o destinatário vê ao receber. O efeito "tinta invisível" obscurece a mensagem até que o destinatário passe sobre ela. Efeitos em tela cheia, como balões, confetes ou fogos de artifício, podem ser enviados.


quarta-feira, 6 de novembro de 2019

Criar um ambiente

Criar um ambiente

Estamos a aproximar-nos do Natal, daqui a pouco começamos a ver a clássica iluminação, as revistas da Toys R Us, do El Corte Inglês e do continente começam a chegar assim como filmes de Natal. E hoje venho falar dos cabazes de Natal do Continente. Mentira, venho falar dos ambientes dos filmes  de Natal.

Se queremos um ambiente Natalício não convém gravar noutra época que não no natal, temos de "apanhar" a época quando ela está a acontecer. Vejamos por exemplo a seguinte printscreen de um filme que passa nesta altura e que nos faz chorar de rir, Home Alone 2.
Toda a imagem grita época de Natal, desde os figurantes, a iluminação, a humidade da estrada, tudo nesta imagem é verdadeiro.
Já falámos de cenário, se queremos uma época, esperamos por essa época, mas não é só isso, falta uma coisa: música. Sugiro uma experiência, vão lá fora, sentem-se num banco e fiquem só a ouvir música, um estilo de música só. Acreditem que sempre que ouvirem esse estilo de música vão associar a esse local onde estiveram sentados. O mesmo acontece se passarem por esse sítio vão se lembrar desse estilo de música. Indo buscar o mesmo exemplo de filme, quando o vêm que artista vem à cabeça? The Chairman of the Board claro (Frank Sinatra para quem não sabia desta alcunha).

Se querem saber mais sobre que música adicionar aos vossos vídeos fiquem atentos porque sexta feira irei falar-lhes sobre esse tema.

Duas combinações improváveis: IoT e agricultura!

Se à algumas semanas falei da Indústria 4.0, hoje vou falar sobre a Agricultura 4.0. O que é? À semelhança daquilo que se passa na indústria este conceito representa a digitalização dos processos de produção e captação de dados (clima, solo, entre outros) a partir de dispositivos de IoT. Esta "nova" agricultura baseia-se em em 4 aspetos principais:
  • Gestão baseada em dados
  • Produção a partir de novas ferramentas e técnicas
  • Sustentabilidade
  • Profissionalização
As vantagens para os agricultores:
  • Monitorização das colheitas - com a utilização de diversos sensores, podemos obter e visualizar dados relativos ao estado do solo e clima, em tempo real e à distância.
  • Aumento de produtividade / Redução de custos - com um número amplo de informação confiável sobre as plantações, é possível antever pragas e evitar replantações ou repassagem de máquinas. Para além disso, é possível realizar uma gestão mais cuidada e organizada dos recursos disponíveis.
Aplicações da IoT na agricultura:
  • Prevenção e manejo de pragas - avisos de possíveis pragas e aplicação autónoma, precisa e detalhada de medidas defensivas (agentes biológicos, por exemplo).
  • Irrigação e gestão da água - acompanhamento da necessidade das plantações, identificação da água disponível no solo e chuvas e posterior atuação.
  • Rastreabilidade animal - monitoramento do rebanho através de coleiras inteligentes; virtual fencing (uso das coleiras inteligentes para emitir pulsos sonoros, quando uma vaca se aproxima de um limite estabelecido, de modo a persuadi-la a não o ultrapassar, sem necessitar de barreiras físicas).
  • Smart farming - permite um agricultura precisa, uma coleta automatizada das muitas varáveis de interesse, e integração de decisões automáticas.
É importante afirmar que todo o processo da Agricultura 4.0 é multidisciplinar dentro da tecnologia, com o uso de IoT para recolha de dados, IA para análise e Robótica para atuação.


Blogue pessoal sobre tech:
Imagem:
consultada no dia 03/11/2019

fontes:
consultadas no dia 03/11/2019

Python - Biblioteca 'Random'

ESTA É A PRIMEIRA BIBLIOTECA QUE IREI EXPLORAR EM PYTHON, SENDO UMA DAS MAIS ÚTEIS E INTERESSANTES.

Antes de mais, iremos importar a biblioteca, como demonstrado na publicação 'Python - Bibliotecas'(se ainda não foi lida, dê uma vista de olhos primeiro a essa publicação):

import random

Agora que importamos a biblioteca, podemos utilizar os seus comandos. A biblioteca random disponibiliza diversos comandos úteis que permitem gerar números aleatórios, baralhar listas e sortear valores de sequências.

Para mais informações sobre esta biblioteca, acessar: docs.python.org/3/library/random.html

Gerar número inteiro
A biblioteca disponibiliza 2 comandos diferentes que podem ser utilizados para esta função:

  • 'Randint': em que programamos com ajuda desse comando para gerar um número inteiro aleatório entre um intervalo de números:
import random

number = random.randint(1, 10)

Neste exemplo acima, o programa gera um número inteiro entre 1 e 10.

  • 'Randrange': semelhante ao  randint só que aqui basta colocarmos o número máximo do intervalo, considerando o mínimo 0:
import random

number = random.randrange(10)

Assim, este código gera um número entre 0 e 9. inclusive.

Baralhar listas
Para baralhar listas, esta biblioteca disponibiliza 2 comandos:

  • 'Shuffle': que serve para trocar a ordem de valores de uma lista; exemplificando:
import random

cards = ['A', 2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K']

random.shuffle(cards)

Neste exemplo, temos uma lista de cartas pertencentes a um dos 4 naipes. Depois de usarmos esse comando poderia aparecer por exemplo:

[5, 'K', 'Q', 2, 6, 7, 'A', 4, 3, 'J', 10, 9, 8]


  • 'Sample': com este comando, podemos baralhar os valores de uma lista, mas também criar uma sub-lista derivada da lista anterior:
import random

cards = [5, 'K', 'Q', 2, 6, 7, 'A', 4, 3, 'J', 10, 9, 8]

hand = random.sample(cards, 5)

em que depois da virgula podemos colocar o número de cartas que queremos adicionar à nova lista; o resultado dessa lista poderia ser:

['K', 7, 'A', 4, 10]


Sortear valores
Para esta funcionalidade, temos 1 comando da biblioteca que podemos utilizar:
  • 'Choice': em que escolhemos um valor de uma lista:

import random

fruit = [orange, banana, apple, pineapple]

print(random.choice(fruit))

em que o resultado poderia ser:


banana


Concluindo assim a publicação sobre esta biblioteca que poderá ser utilizada no futuro.


Referências:











Mensagem em destaque

C++ - Operadores de igualdade

Para termos um valor lógico, podemos simplesmente atribuir esse valor ( true ou false ). bool valor = true ; Mas outra forma de gera...