Avançar para o conteúdo principal

Mensagens

C# IEnumerable e IEnumerator

Neste artigo vamos aprender como utilizar a interface IEnumerator por forma a permitir utilizar um ciclo foreach num conjunto ou coleção de dados. A maior parte das coleções (listas e outras) já implementam a interface, mas neste caso vamos personalizar a maneira como percorremos a lista. Quando utilizamos código assim: foreach(Class c in Collection) { ... } O compilador converte este código em algo assim: IEnumerator cc = Collection.GetEnumerator() while(cc.MoveNext()) { c=(Class)cc.Current; ... } Ao implementar a interface IEnumerable significa que a classe implementa uma versão da função GetEnumerator() que deve devolver uma classe que implemente a interface IEnumerator. Vamos explorar um exemplo. Começamos pela classe client Esta classe permitirá guardar os dados dos clientes, existindo um campo para indicar se o cliente ainda está ativo ou não. De seguida temos uma classe que define uma lista de clientes e que implementa a interface IEnumerable que de...

Coroutinas em Unity 3D Parte II

As coroutines são funções úteis para implementar tarefas que devem ocorrer ao longo de várias frames. Neste posto vamos ver como animar a camera de um ponto inicial para outro ponto final com uma determinada duração em segundos. A duração da animação é armazenada numa variável para que possa ser facilmente ajustada. A função é executada quando o utilizador premir a barrar de espaços. void Update () {         if (Input.GetKeyDown(KeyCode.Space))         {             if(func!=null)                 StopCoroutine(func);             func = StartCoroutine(smoothMoveCamera());         } } Precisamos de algumas variáveis:     public float duration = 2.0f;     public float xStart = -5.0f;     public float xFinish = 5.0f;     Coroutine func; A primeira define a duração em segund...

Coroutines em Unity3d

Coroutines são funções que mantém o estado enquanto devolvem a execução do código ao método que as chamou. São úteis para o desenvolvimento de jogos para permitir a execução de determinado código ao longo de várias frames. Por exemplo para animar a câmara do jogo podíamos executar o seguinte código: for(int i=0;i<100;i++){     transform.position += new Vector3(1, 0,0); } Se este código estiver dentro de uma função que é executada normalmente não é possível ver a câmara a mover-se ao longo do eixo dos X uma vez que a atualização do cenário do jogo só ocorre no final do ciclo e não ao longo da execução deste. Para que seja possível ver o movimento da câmara é necessário executar um iteração do ciclo e depois atualizar a cena (fazer o render) e depois continuar a execução do ciclo com mais uma iteração e volta a atualizar a cena, neste caso o que se pretende é interromper a execução e retomar sem que se perca o estado, para isso pode-se implementar uma coroutine. ...

ASP.NET MVC com Entity, Identity e Migrações Parte 3 - Upload de ficheiros

Na terceira parte deste tutorial vamos adicionar dois controllers e dois models com a possibilidade de fazer o upload de ficheiros para o nosso site. O model Room é muito simples:  public class Room {         [Key]         public int nr { get; set; }         [Required(ErrorMessage = "Deve indicar o piso do quarto")]         public int piso { get; set; }         [Required(ErrorMessage = "Deve indicar a lotação")]         public int lotacao { get; set; }         [Required(ErrorMessage = "Deve indicar o estado do quarto")]         public bool estado { get; set; }         [DataType(DataType.Currency)]         [Required(ErrorMessage = "Deve indicar o preço por dia do quarto")]         public decimal custo_dia { get; set; }     } Agora bast...

TensorFlow Variáveis e placeholders

Neste tutorial vamos introduzir dois novos tipos de nós: variáveis e placeholders. Depois de importarmos o tensorflow: import tensorflow as tf Iniciamos a sessão, mas antes fazemos o reset ao estado interno: tf.reset_default_graph() sess=tf.Session() Agora podemos criar duas variáveis: x = tf.Variable(2.0,tf.float32) y = tf.Variable(3.0,tf.float32) Sempre que se utilizam variáveis numa sessão tensorflow é necessário inicializa-las: init = tf.global_variables_initializer() sess.run(init) Agora podemos definir a expressão matemática a utilizar: sumnodes = x + y Agora podemos calcular o resultado da expressão: print(sess.run(sumnodes)) Para alterarmos os valores das variáveis devemos utilizar a função assign: sess.run(x.assign(5.0)) Como sempre temos de executar dentro da sessão. Podemos associar esta operação a uma referência o que permite executar várias operações em simultâneo: NewX = x.assign(5.0) NewY = ...

Introdução ao TensorFlow - Parte 1

Segundo a Google o TensorFlow é uma framework the software aberto que permite para a computação numérica. No TensorFlow cada nó pode ser uma constante, uma variável ou uma expressão matemática que utiliza variáveis e/ou constantes. Estes nós pode ser executados no CPU ou no GPU tirando partido de dispositivos multicore. Começamos por importar a framework: import tensorflow as tf Para criar uma constante fazemos: node1 = tf.constant(3.0) ou node2 = tf.constant(4.0, dtype=tf.float32) A primeira linha permite ao TensorFlow decidir qual o tipo de dados a aplicar à variável. Depois temos de iniciar uma sessão TensorFlow assim: sess = tf.Session() Para ver o tipo de nó podemos utilizar: print(node1,node2) Para avaliar o nó, recebendo o valor que ele contém: print(sess.run([node1,node2])) Podemos criar uma função matemática que calcular a soma das duas constantes: sumnodes = tf.add(node1,node2) Para obter o resultado: print(sess.run(sumnodes)) Vídeo no ...

ASP.NET MVC com Entity, Identity e Migrações Parte 2 - Dropdown list

Na segunda parte do tutorial sobre MVC vamos adicionar uma dropdown list que permitirá escolher o perfil do utilizador. No User model temos de adicionar um campo do tipo interface que servirá para passar à view a lista de opções: public IEnumerable<System.Web.Mvc.SelectListItem> perfis { get; set; } No controlador temos de editar as funções Create e Edit para preencher a interface com um vetor com as opções de perfis. O código é qualquer coisa assim:         // GET: Users/Create         public ActionResult Create()         {             //perfis options for the dropdownlist             var user = new User();             user.perfis = new[] {                 new SelectListItem{Value="0",Text="Admin"},                 new SelectListItem{Val...