Pesquisar aqui

sábado, 14 de dezembro de 2019

iOS 5 - v 5.1


 iOS 5.1

 Esta versão do iOS 5 foi lançada no dia 7 de março de 2012 estando disponível para as seguintes plataformas: iPhone 3GS, iPhone 4, iPhone 4s, iPad, iPad 2, iPod Touch de 3ª e 4ª geração. As melhorias e correções de erros que vieram com esta atualização foram o suporte para o idioma japonês da Siri, as fotos poderem ser apagadas do serviço Compartilhar Fotos, o atalho da câmera que ficou sempre visível na tela bloqueada com excessão nos iPads, a deteção destacada de rostos da aplicação câmera, a própria aplicação da câmera que foi redesenhada para o iPad, seleções e listas Genius para as pessoas com assinatura no iTunes Match, erros que afetavam a autonomia da bateria, um problema que fazia com que por vezes o audio das chamadas fosse interrompido.

sexta-feira, 13 de dezembro de 2019

iOS 5 - v.5.0.1


iOS 5.0.1


  As atualizações do iOS 4 já chegaram ao fim por isso agora vou mudar para as do iOS 5. 
  Esta atualização de software foi lançada no dia 10 de novembro de 2011, estando disponível para as seguintes plataformas: iPhone 3GS, iPhone 4, iPhone 4s, iPad, iPad 2, e iPod Touch de 3ª geração e posterior. As melhorias e correções de erros desta atualização foram a correção de erros que afetavam a duração da bateria, a inclusão de gestos multi tarefa para o iPad original, a correção de erros que afetavam os documento existentes no iCloud e o recurso de voz melhorado para os utilizadores australianos que utilizavam o recurso ditado.

IoT e VR são uma junção natural

Tanto VR (ou realidade virtual em português) como IoT são duas tecnologias com enorme potencial, tendo a IoT já possuído um maior impacto na transformação da sociedade e economia atual. Ambas partilham uma filosofia e um propósito muito semelhantes, que é unir o mundo digital com o mundo físico, sendo que o fazem de maneiras opostas. Enquanto que a realidade virtual tenta fazer com que o mundo digital parece o mais real possível, a IoT tenta tornar objetos reais manipuláveis no mundo digital.

Uma das aplicações que podem ter juntas é na comunicação. Permitindo por exemplo que uma pessoa utiliza diversas câmaras e sensores para conseguir movimentar um robô, que transmite tudo o que vê para uns óculos de realidade virtual permitindo uma imersão incrível e até conversas à distância quase reais. Isto não é ficção, a empresa OdenVR já se encontra a produzir este tipo de tecnologia ao qual chama de "telepresence robot".


Outra aplicação interessantíssima e que a mim me parece ser a mais útil é a criação de simulações em VR de cidades inteiras ou parte delas em que é possível através do uso de óculos de realidade virtual e de comandos navegar pelos diferentes ambientes visualizando a informação que os diversos sensores espalhados pela área estão a recolher em tempo real. Como por exemplo, imagens de video vigilância, temperatura, humidade do solo, localização de comboios ou veículos específicos, etc... Tudo isto permite não só uma monitorização a uma grande escala mas também uma otimização do sistema de transportes públicos, por exemplo. Esta tecnologia está também em desenvolvimento, neste caso pela empresa Eye Create Worlds.


Para além disso, podemos também usar a IoT para captação de dados durante cirurgias a zonas muito pequenas, permitindo que o cirurgião realize todo o processo controlando uma máquina com maior precisão que ele a uma escala menor, utilizando a realidade virtual e os dados recolhidos. O "da Vinci Surgical System" é um sistema de cirurgia que já utiliza a assistência de robôs.


Para concluir, a IoT e a realidade virtual são duas tecnologias que se complementam muito bem e que poderão ser usadas em conjunto para melhoria de procedimentos em diversas áreas.

fonte:


imagens:
  • URL1
  • a segunda imagem é uma printscreen do vídeo com este link
  • URL3
  • consultadas no dia 07/12/2019



C++ - Switch

A alternativa a usar as condições if(), else() e else if() é usar o switch.
O switch verifica se um valor é igual a outro, ou mais especificamente, qual dos casos é igual ao valor.

Escrevendo:
Um "switch" seguido de uma expressão entre ( ).
Diferentes casos "case" seguidos de com um valor, e um código a executar.
Um "break" no fim de cada caso (opcional, será explicado).

switch(x){
    case 3:
        cout << "It's a 3!" << endl;
        break;
    case 4:
        cout << "It's a 4!" << endl;
        break;
}
Neste caso, queremos verificar o valor da variável x (inteiro).
Temos os casos 3 e 4.
Se o valor da variável for 3, é feito o print de "It's a 3!".
Se o valor da variável for 4, é feito o print de "It's a 4!".
Se não for nenhum dos dois, nada acontece.



Apenas valores integrais (int)
No switch, apenas podemos verificar valores integrais.
Estes são int e char (porque char também é inteiro, devido aos ASCII, vou falar disto muito brevemente).

Então, por exemplo, não podemos verificar uma string.
string s;

switch(s){
    case "42":
        cout << "Answer to everything" << endl;
        break;
}
Isto não é possível e dá erro.

E mesmo podendo verificar um carácter, temos de ter em atenção para não usarmos aspas duplas (""), mas sim estas (''). Porque "" são para strings.
char c;

switch(c){
    case "1":
        cout << "Not valid!" << endl;
        break;
}
Isto não é possível e dá erro.

Default
Para que aconteça algo se nenhum dos casos corresponde à expressão, usamos o default.
O default é um caso especial opcional cujo código é executado só se nenhum dos outros casos for válido.
Em vez de "case" escrevemos "default", sem nenhum valor a seguir.

switch(x){
    case 1:
        cout << "1" << endl;
        break;
    case 2:
        cout << "2" << endl;
        break;
    default:
        cout << "Default" << endl;
        break;
}
Estamos a avaliar uma variável x novamente no switch.
Se for 1 ou 2, é feito o print de "1" ou "2", respetivamente.
Se não for nenhum dos dois, é executado o código do caso default, onde é feito o print de "Default".

Break
Certo, então devemos colocar "break" no fim de cada caso. Mas porquê?
É opcional mas se não o utilizarmos vai acontecer algo que não queremos de forma alguma.
Ao não termos o break, quando um caso é válido e o seu código é executado, o código de todos os outros casos abaixo dele também vai ser executado, até que se encontre um break.

switch(x){
    case 1:
        cout << "1" << endl;
    case 2:
        cout << "2" << endl;
    case 3:
        cout << "3" << endl;
        break;
    case 4:
        cout << "4" << endl;
        break;
    case 5:
        cout << "5" << endl;
        break;
}

  • Ou seja, se x for 1, é feito o print de "1";
  • Como não existe break no final do caso, também se executa o caso 2, print de "2";
  • Novamente como não há break, executa-se o caso abaixo, print de "3";
  • Encontra-se um break então acaba aqui.

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

int main()
{
    int month;
    cout << "Enter this month's number: ";
    cin >> month;
    
    switch(month){
        case 1:
            cout << "January" << endl;
            break;
        case 2:
            cout << "February" << endl;
            break;
        case 3:
            cout << "March" << endl;
            break;
        case 4:
            cout << "April" << endl;
            break;
        case 5:
            cout << "May" << endl;
            break;
        case 6:
            cout << "June" << endl;
            break;
        case 7:
            cout << "July" << endl;
            break;
        case 8:
            cout << "August" << endl;
            break;
        case 9:
            cout << "September" << endl;
            break;
        case 10:
            cout << "October" << endl;
            break;
        case 11:
            cout << "November" << endl;
            break;
        case 12:
            cout << "December" << endl;
            break;
        default:
            cout << "Invalid month number!" << endl;
            break;
    }
}
Este programa pede-nos um número de um mês e usa o switch para verificar as 12 possibilidades, fazendo print do nome do mês.
Se o número não for de 1 a 12, é ativado o caso default que faz print da mensagem "Invalid month number!".

Referências - 3/12/2019


Python - Tuplas

NAS PUBLICAÇÕES 'PYTHON - LISTAS' FALEI DO TIPO MAIS COMUM DE VARIÁVEL COMPOSTA, MAS EM PYTHON AINDA EXISTEM MAIS DOIS, TUPLAS E DICTIONARY; ESTA PUBLICAÇÃO DESTINA-SE ÀS TUPLAS.

Do inglês 'tuple', é uma lista imutável, ou seja, nas listas podem ser adicionados ou removidos elementos a qualquer momento, enquanto que nas tuplas não pode ocorrer esses processo, ou seja, não permite adição, remoção ou qualquer alteração da ordem dos elementos.

As listas geralmente têm elementos do mesmo tipo, como por exemplo uma lista de e-mails, já as tuplas têm elementos distintos como por exemplo o dia, o dia da semana, o mês e o ano, ou seja uma data:

tuple1 = (13, 'sexta-feira', 'dezembro', 2019)

Outra diferença entre listas e tuplas, é que as listas são delimitadas por parêntesis retos '[ ]' enquanto que as tuplas são delimitadas por parêntesis curvos '( )'.


Alguns comandos que estudamos nas listas podem ser utilizados nas tuplas, tirando aqueles que alteram elementos:


t = ("x", "y", 10, 20, "c")

print(t)
print(t[0])
print(t[-1])
print(t[1:3])

O output deste programa seria:


("x", "y", 10, 20, "c")
'x'
'c'
('y', 10, 20)

Nota: uma virgula é o que define uma tupla, e não os parêntesis que são opcionais como podemos verificar a seguir:


t1 = 1, 2, 3 #tupla sem o uso de parentesis

t2 = (1, 2, 3) #tupla com o uso de parentesis

t3 = 1, #tupla com um único elemento

t4 = () #tupla vazia

Assim aprendemos mais um tipo de variável composta em Python! Vai nos ser bastante útil em alguns exercícios específicos no futuro.


Referências:



quinta-feira, 12 de dezembro de 2019

iOS 4 - v 4.3.5


   iOS 4.3.5



  Esta versão do iOS 4 foi lançada no dia 25 de julho de 2011, estando disponível para as seguintes plataformas: iPhone 3GS, iPhone 4 modelo GSM, iPad, iPad 2 e iPod Touch de 3ª e 4ª geração. Esta versão veio com uma atualização de segurança para corrigir a validação de certificados.

O que é o Uncanny Valley?





Já alguma vez viste um robô humano-ide ou uma cara realista gerada por um computador, por exemplo num filme, e parecia-te um pouco perturbador ou esquisito e não conseguias explicar porquê?
O Uncanny Valley (ou vale da estranheza, traduzido para português) é um conceito introduzido pela primeira vez na década de 1970 por Masahiro Mori, professor do Instituto de Tecnologia de Tóquio. Mori cunhou o termo "Uncanny valley" para descrever a sua observação de que, à medida que os robôs parecem mais humanos, eles se tornam mais atraentes - mas apenas até a um certo ponto. Ao chegar ao Uncanny Valley, a nossa afinidade transforma-se em um sentimento de estranheza, de desconforto e uma tendência a estar assustado. Portanto, o Uncanny Valley pode ser definido como a reação negativa das pessoas a certos robôs realistas.
Um exemplo disto que leva o lugar número 1 na lista de robôs mais arrepiantes é Telenoid (a imagem que se pode ver a cima) . Com a sua cabeça careca, uma cara sem vida e a sua falta de membros faz com que este robô pareça mais um alien que um humano. Outro exemplo mais famoso que o Telenoid é a Sophia (a imagem que se pode ver a baixo). Este robô já mais humano que o anterior também encontra-se no Uncanny Valley. Isto acontece pela falta de emoções e características humanas que ainda não se consegui evitar nestes robôs realistas.



quarta-feira, 11 de dezembro de 2019

IoT está a transformar o mundo dos videojogos

Os videojogos ou games evoluíram muito desde o "pong", tornando-se uma das formas mais populares de entretenimento, gerando receitas anuais superiores a Hollywood, por exemplo. Com o crescimento do número de jogadores também cresceu a variedade dos mesmos. O mercado pediu por coisas cada vez mais diferentes que enquadrassem melhor as pessoas que cada apenas queriam se divertir por uns minutos, sem ter que comprar uma consola ou um computador potente que lhes permitisse jogar campanhas de dezenas de horas ou treinar para ser a próxima estrela dos e-sports. De forma a atender a esta demanda, as produtoras começaram a investir cada vez mais nos jogos mobile. É aqui que entra a IoT. 

Esta tecnologia é capaz de utilizar as funcionalidades do telemóvel ou tablet ao máximo, proporcionando experiências mais imersivas. Um grande exemplo é o recente sucesso mundial Pókemon GO!, que utilizava o GPS do telemóvel para situar o mesmo e acompanhar a sua deslocação pelo mundo, à medida que este se cruzava com outros jogadores era possível lutar ou apanhar Pokémons que apareciam na câmara do mesmo, dando a impressão que eram reais. Este é um exemplo claro do uso de IoT para transmitir as informações que cada aparelho recolhia para Cloud, cruzá-las e criar um mundo virtual que se diferenciava do real por uma linha muito ténue. O sucesso deste formato foi gigantesco, sendo o jogo mobile com mais downloads no seu primeiro mês de sempre.


A mesma empresa que desenvolveu o Pokemon GO! (Niantic Games), lançou recentemente outro sucesso (desta vez, não tão grande), o jogo "Harry Potter: Wizards Unite" que se baseia nos mesmos princípios, mas com ainda uma maior ênfase na realidade mista e com diferentes possibilidades dependendo do tipo de lua, ou da meteorologia do dia em questão.



Outro exemplo é também o "Zombies, Run! 2" que utiliza os dados do acelerómetro e pedómetro do telemóvel para monitorar as corridas do usuário que serão utilizadas para cumprir missões dentro do jogo como: "corra 5Km em 29 minutos para chegar a tempo de salvar os sobreviventes que se encontram no centro comercial", etc...

Como é possível perceber a IoT tem sido uma tecnologia muito promotora do sucesso dos "games", que possui muito mais aplicações que aquelas que aqui mencionei como realidade virtual, mas isso fica para outro post.

fontes:


imagens:
  • URL1
  • URL2
  • consultadas no dia 07/12/20019