Introducing Rachinations, a game execution engine and Ruby-based DSL that can be used to test out game designs and evaluate hypotheses and analyze gameplay. It is an implementation of Dr. J. Dormans' Machinations framework for game design.
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphereEloi Júnior
O documento descreve a portabilidade de um aplicativo JavaME para calculadora esférica para a plataforma Windows Phone 7 usando C# e o framework XNA. Detalha as semelhanças e diferenças entre as APIs de jogo em cada plataforma e os desafios encontrados ao converter tipos, áreas sensíveis ao toque, armazenamento de dados e outras funcionalidades.
O documento resume os principais conceitos e objetos do ADO.NET para acesso a dados, incluindo provedores de dados como SQL Server e Oracle, e classes como SqlConnection, SqlCommand, SqlDataReader e SqlDataAdapter para executar comandos, consultas e manipular dados.
O documento apresenta a biblioteca padrão do C++ (STL) e seus principais componentes como containers, algoritmos e funções. Exemplos mostram como utilizar containers como vector, stack, set, queue e list para armazenar diferentes tipos de dados, assim como algoritmos de ordenação e busca. O documento também sugere como resolver o problema "Agente 004" usando estruturas de dados da STL como grafos e filas de prioridade.
Curso de OO com C# - Parte 04 - Estruturas de controle e StringsLeonardo Melo Santos
O documento discute conceitos importantes de C# como strings, estruturas de controle e nullable types. Ele explica como manipular e formatar strings, as principais estruturas condicionais como if e switch, estruturas de repetição como while, for e foreach, e o uso de nullable types para variáveis do tipo value permitirem valor nulo.
O documento apresenta uma introdução ao uso da biblioteca padrão STL do C++ para resolução de problemas de programação competitiva, destacando que a STL possui diversas estruturas e algoritmos implementados que podem ajudar a escrever menos código e obter melhores resultados. É apresentado o uso de vetores, strings, pilhas, filas, mapas, conjuntos e classes básicas, assim como algoritmos de ordenação, busca e geração de permutações.
O documento descreve a Maratona de Programação, incluindo suas regras, fases, competição, motivação, sistema utilizado (BOCA) e dicas de treinamento. Competições acontecem em várias regiões do Brasil e os melhores times se classificam para a fase final nacional e possivelmente para o mundial. Problemas de diferentes tipos são resolvidos no menor tempo possível, com penalidades por submissões incorretas.
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricasLeonardo Melo Santos
O documento discute coleções genéricas e não genéricas em C#. Apresenta os principais tipos de coleções não genéricas como ArrayList, SortedList, Queue e Stack. Também explica o que são coleções genéricas e seus benefícios em relação às não genéricas, evitando boxing e unboxing. Por fim, fornece três exercícios para praticar o uso de coleções genéricas e não genéricas.
O documento apresenta uma introdução à linguagem de programação Ruby, descrevendo sua história desde a criação em 1993, características como variáveis, métodos, classes, módulos e estruturas de controle, e exemplos de código.
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphereEloi Júnior
O documento descreve a portabilidade de um aplicativo JavaME para calculadora esférica para a plataforma Windows Phone 7 usando C# e o framework XNA. Detalha as semelhanças e diferenças entre as APIs de jogo em cada plataforma e os desafios encontrados ao converter tipos, áreas sensíveis ao toque, armazenamento de dados e outras funcionalidades.
O documento resume os principais conceitos e objetos do ADO.NET para acesso a dados, incluindo provedores de dados como SQL Server e Oracle, e classes como SqlConnection, SqlCommand, SqlDataReader e SqlDataAdapter para executar comandos, consultas e manipular dados.
O documento apresenta a biblioteca padrão do C++ (STL) e seus principais componentes como containers, algoritmos e funções. Exemplos mostram como utilizar containers como vector, stack, set, queue e list para armazenar diferentes tipos de dados, assim como algoritmos de ordenação e busca. O documento também sugere como resolver o problema "Agente 004" usando estruturas de dados da STL como grafos e filas de prioridade.
Curso de OO com C# - Parte 04 - Estruturas de controle e StringsLeonardo Melo Santos
O documento discute conceitos importantes de C# como strings, estruturas de controle e nullable types. Ele explica como manipular e formatar strings, as principais estruturas condicionais como if e switch, estruturas de repetição como while, for e foreach, e o uso de nullable types para variáveis do tipo value permitirem valor nulo.
O documento apresenta uma introdução ao uso da biblioteca padrão STL do C++ para resolução de problemas de programação competitiva, destacando que a STL possui diversas estruturas e algoritmos implementados que podem ajudar a escrever menos código e obter melhores resultados. É apresentado o uso de vetores, strings, pilhas, filas, mapas, conjuntos e classes básicas, assim como algoritmos de ordenação, busca e geração de permutações.
O documento descreve a Maratona de Programação, incluindo suas regras, fases, competição, motivação, sistema utilizado (BOCA) e dicas de treinamento. Competições acontecem em várias regiões do Brasil e os melhores times se classificam para a fase final nacional e possivelmente para o mundial. Problemas de diferentes tipos são resolvidos no menor tempo possível, com penalidades por submissões incorretas.
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricasLeonardo Melo Santos
O documento discute coleções genéricas e não genéricas em C#. Apresenta os principais tipos de coleções não genéricas como ArrayList, SortedList, Queue e Stack. Também explica o que são coleções genéricas e seus benefícios em relação às não genéricas, evitando boxing e unboxing. Por fim, fornece três exercícios para praticar o uso de coleções genéricas e não genéricas.
O documento apresenta uma introdução à linguagem de programação Ruby, descrevendo sua história desde a criação em 1993, características como variáveis, métodos, classes, módulos e estruturas de controle, e exemplos de código.
Este documento fornece uma introdução à linguagem C#, abordando sua estrutura, tipos, variáveis, operadores, tratamento de erros e outros conceitos fundamentais. O foco está na entrada e saída de dados usando a classe Console, bem como na conversão entre tipos primitivos. Enumerações são introduzidas como uma alternativa às constantes tradicionais.
O documento descreve os conceitos de leitura e escrita, arredondamento e conversão em C#. Ele explica como usar Console.WriteLine() e Console.ReadLine() para entrada e saída, Math.Round() para arredondar valores e Int32.Parse() e Convert.ToInt32() para converter strings em inteiros.
O documento apresenta uma introdução ao Arduino e Python, descrevendo como conectar os dois usando comunicação serial. Explica brevemente o que é um Arduino, seus principais componentes como o microcontrolador ATmega328 e pinos digitais e analógicos. Também mostra exemplos básicos de código em C para configurar a porta serial e em Python para enviar e receber dados via serial. Por fim, lista alguns projetos atuais que utilizam Arduino e Python.
Este documento fornece uma introdução à criptografia em três partes. Primeiro, explica como a criptografia funciona por meio de encriptação e descriptografia usando chaves simétricas. Em seguida, fornece uma visão geral dos tipos de cifras, discutindo operações como substituição e transposição, número de chaves e modo de processamento por bloco ou fluxo. Por fim, fornece exemplos de cifras específicas.
O documento descreve conceitos de alocação dinâmica de memória em C, incluindo o uso das funções malloc(), calloc(), realloc() e free(). Explica como alocar e libertar memória para estruturas e vetores, e como redimensionar blocos de memória alocados.
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...iMasters
O documento apresenta informações sobre Ana Luiza Bastos, uma desenvolvedora de software e cientista da computação, e sobre recursão e trampolines em programação funcional. É discutido como recursão pode causar overflow de pilha e como trampolines e estilo de passagem de continuação (CPS) resolvem este problema de forma segura à pilha.
O documento introduz o Arduino, descrevendo que é uma plataforma para prototipagem de circuitos eletrônicos utilizando microcontroladores Atmel AVR. Também apresenta os principais tipos de placas Arduino, como a Arduino UNO, e explica conceitos básicos como programação, linguagem C++ e as funções setup() e loop() necessárias em programas para Arduino.
O documento apresenta exemplos de projetos com Arduino, incluindo um cafeteira controlada por tweet, robôs de diferentes tipos, um quadricóptero, um capacete que imita o Daft Punk e um dispenser de comida para gato controlado por smartphone. É também apresentado um tutorial sobre programação básica em Arduino, incluindo explicações sobre funções setup() e loop(), variáveis, comandos if, for e while e o uso de sensores.
Este documento fornece dicas para equipes que participarão de maratonas de programação. Resume as informações essenciais em 3 frases:
1) Maratonas de programação são competições onde equipes tentam resolver o maior número de problemas de programação em menor tempo para ganhar prêmios.
2) O documento fornece dicas sobre estratégias de equipe, algoritmos e estruturas de dados comuns, linguagens de programação, e como evitar erros comuns para ajudar as equipes a se prepararem para a competição.
3) Equipes
O documento discute algoritmos de enumeração para gerar todas as possibilidades de sequências, subconjuntos e permutações de um conjunto de dados. Especificamente, apresenta algoritmos recursivos para gerar sequências com n posições e m algarismos, listar subconjuntos de um conjunto na ordem lexicográfica e gerar permutações de um conjunto na ordem lexicográfica.
Hadoop MapReduce and Apache Spark on EMR: comparing performance for distribut...Felipe
O documento compara o desempenho do Hadoop MapReduce e do Apache Spark para cargas de trabalho distribuídas, usando duas tarefas: wordcount distribuído em um conjunto de dados de 18GB e clusterização K-means em um conjunto de dados de livros da Amazon de 15GB. O Spark mostrou desempenho superior, especialmente para tarefas iterativas como K-means. A configuração correta é importante para o desempenho, e o Spark se beneficiou da alocação dinâmica de recursos.
Boas práticas no desenvolvimento de softwareFelipe
Um pequeno conjunto de boas práticas para o desenvolvimento de software. O conteúdo é recomendado para desenvolvedores iniciantes ou intermediários. O foco é em desenvolvimento Web, baseado em Sistemas de Informação, com uma linguagem fracamente tipada. Os exemplos são dados na linguagem PHP.
Pré processamento de grandes dados com Apache SparkFelipe
O documento apresenta o framework Apache Spark para pré-processamento de grandes dados, abordando conceitos como RDDs, DataFrames, UDFs e a biblioteca Spark ML. É demonstrado um estudo de caso completo de pré-processamento de um conjunto de dados de reviews da Amazon contendo 82 milhões de registros.
DevOps Series: Defining and Sharing Testable Machine Configurations with vagrantFelipe
Vagrant allows users to define reproducible and testable machine configurations using configuration files. It supports various operating systems and virtualization providers. The document outlines the basics of using Vagrant, including adding base boxes, creating Vagrantfiles to define configurations, provisioning machines, and commonly used commands. It is useful for developers who need consistent environments or who configure machines for others.
A small presentation with some quick explanation of what D3.js is and a few examples of what it can do for you. It can be used for a quick presentation (20-30 mins) after which you should have an idea of whether you can use D3.js for your project.
O documento apresenta as plataformas Arduino e Python, discutindo suas características e aplicações, como hardware e software livres para prototipagem e automação.
O documento apresenta os objetivos e conteúdos de uma disciplina sobre algoritmos e estruturas de dados. Os tópicos incluem listas lineares, pilhas, filas, classificação de dados, recursividade e tipos abstratos de dados.
O documento apresenta os objetivos e conteúdos de uma disciplina de Algoritmos e Estrutura de Dados II. Os tópicos incluem listas lineares, pilhas, filas, classificação de dados e listas ligadas, com foco em definir formalmente estruturas de dados e selecioná-las para aplicações.
Este documento fornece um resumo sobre conceitos e técnicas de programação, incluindo:
1) Representação de algoritmos usando pseudocódigo e linguagem natural;
2) Elementos básicos de linguagens de programação como variáveis, constantes, tipos de dados e operadores;
3) Etapas para desenvolver um programa, como formular o algoritmo, codificá-lo e gerar um programa executável.
1. O documento apresenta um tutorial sobre o uso do software livre GNU Octave, que é uma ferramenta de cálculo numérico e científico similar ao Matlab.
2. O tutorial explica conceitos básicos como operações matemáticas, definir variáveis, formatar números, criar gráficos e definir funções.
3. O documento também fornece exemplos de código do Octave para ilustrar cada tópico abordado.
Este documento fornece uma introdução à linguagem C#, abordando sua estrutura, tipos, variáveis, operadores, tratamento de erros e outros conceitos fundamentais. O foco está na entrada e saída de dados usando a classe Console, bem como na conversão entre tipos primitivos. Enumerações são introduzidas como uma alternativa às constantes tradicionais.
O documento descreve os conceitos de leitura e escrita, arredondamento e conversão em C#. Ele explica como usar Console.WriteLine() e Console.ReadLine() para entrada e saída, Math.Round() para arredondar valores e Int32.Parse() e Convert.ToInt32() para converter strings em inteiros.
O documento apresenta uma introdução ao Arduino e Python, descrevendo como conectar os dois usando comunicação serial. Explica brevemente o que é um Arduino, seus principais componentes como o microcontrolador ATmega328 e pinos digitais e analógicos. Também mostra exemplos básicos de código em C para configurar a porta serial e em Python para enviar e receber dados via serial. Por fim, lista alguns projetos atuais que utilizam Arduino e Python.
Este documento fornece uma introdução à criptografia em três partes. Primeiro, explica como a criptografia funciona por meio de encriptação e descriptografia usando chaves simétricas. Em seguida, fornece uma visão geral dos tipos de cifras, discutindo operações como substituição e transposição, número de chaves e modo de processamento por bloco ou fluxo. Por fim, fornece exemplos de cifras específicas.
O documento descreve conceitos de alocação dinâmica de memória em C, incluindo o uso das funções malloc(), calloc(), realloc() e free(). Explica como alocar e libertar memória para estruturas e vetores, e como redimensionar blocos de memória alocados.
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...iMasters
O documento apresenta informações sobre Ana Luiza Bastos, uma desenvolvedora de software e cientista da computação, e sobre recursão e trampolines em programação funcional. É discutido como recursão pode causar overflow de pilha e como trampolines e estilo de passagem de continuação (CPS) resolvem este problema de forma segura à pilha.
O documento introduz o Arduino, descrevendo que é uma plataforma para prototipagem de circuitos eletrônicos utilizando microcontroladores Atmel AVR. Também apresenta os principais tipos de placas Arduino, como a Arduino UNO, e explica conceitos básicos como programação, linguagem C++ e as funções setup() e loop() necessárias em programas para Arduino.
O documento apresenta exemplos de projetos com Arduino, incluindo um cafeteira controlada por tweet, robôs de diferentes tipos, um quadricóptero, um capacete que imita o Daft Punk e um dispenser de comida para gato controlado por smartphone. É também apresentado um tutorial sobre programação básica em Arduino, incluindo explicações sobre funções setup() e loop(), variáveis, comandos if, for e while e o uso de sensores.
Este documento fornece dicas para equipes que participarão de maratonas de programação. Resume as informações essenciais em 3 frases:
1) Maratonas de programação são competições onde equipes tentam resolver o maior número de problemas de programação em menor tempo para ganhar prêmios.
2) O documento fornece dicas sobre estratégias de equipe, algoritmos e estruturas de dados comuns, linguagens de programação, e como evitar erros comuns para ajudar as equipes a se prepararem para a competição.
3) Equipes
O documento discute algoritmos de enumeração para gerar todas as possibilidades de sequências, subconjuntos e permutações de um conjunto de dados. Especificamente, apresenta algoritmos recursivos para gerar sequências com n posições e m algarismos, listar subconjuntos de um conjunto na ordem lexicográfica e gerar permutações de um conjunto na ordem lexicográfica.
Hadoop MapReduce and Apache Spark on EMR: comparing performance for distribut...Felipe
O documento compara o desempenho do Hadoop MapReduce e do Apache Spark para cargas de trabalho distribuídas, usando duas tarefas: wordcount distribuído em um conjunto de dados de 18GB e clusterização K-means em um conjunto de dados de livros da Amazon de 15GB. O Spark mostrou desempenho superior, especialmente para tarefas iterativas como K-means. A configuração correta é importante para o desempenho, e o Spark se beneficiou da alocação dinâmica de recursos.
Boas práticas no desenvolvimento de softwareFelipe
Um pequeno conjunto de boas práticas para o desenvolvimento de software. O conteúdo é recomendado para desenvolvedores iniciantes ou intermediários. O foco é em desenvolvimento Web, baseado em Sistemas de Informação, com uma linguagem fracamente tipada. Os exemplos são dados na linguagem PHP.
Pré processamento de grandes dados com Apache SparkFelipe
O documento apresenta o framework Apache Spark para pré-processamento de grandes dados, abordando conceitos como RDDs, DataFrames, UDFs e a biblioteca Spark ML. É demonstrado um estudo de caso completo de pré-processamento de um conjunto de dados de reviews da Amazon contendo 82 milhões de registros.
DevOps Series: Defining and Sharing Testable Machine Configurations with vagrantFelipe
Vagrant allows users to define reproducible and testable machine configurations using configuration files. It supports various operating systems and virtualization providers. The document outlines the basics of using Vagrant, including adding base boxes, creating Vagrantfiles to define configurations, provisioning machines, and commonly used commands. It is useful for developers who need consistent environments or who configure machines for others.
A small presentation with some quick explanation of what D3.js is and a few examples of what it can do for you. It can be used for a quick presentation (20-30 mins) after which you should have an idea of whether you can use D3.js for your project.
O documento apresenta as plataformas Arduino e Python, discutindo suas características e aplicações, como hardware e software livres para prototipagem e automação.
O documento apresenta os objetivos e conteúdos de uma disciplina sobre algoritmos e estruturas de dados. Os tópicos incluem listas lineares, pilhas, filas, classificação de dados, recursividade e tipos abstratos de dados.
O documento apresenta os objetivos e conteúdos de uma disciplina de Algoritmos e Estrutura de Dados II. Os tópicos incluem listas lineares, pilhas, filas, classificação de dados e listas ligadas, com foco em definir formalmente estruturas de dados e selecioná-las para aplicações.
Este documento fornece um resumo sobre conceitos e técnicas de programação, incluindo:
1) Representação de algoritmos usando pseudocódigo e linguagem natural;
2) Elementos básicos de linguagens de programação como variáveis, constantes, tipos de dados e operadores;
3) Etapas para desenvolver um programa, como formular o algoritmo, codificá-lo e gerar um programa executável.
1. O documento apresenta um tutorial sobre o uso do software livre GNU Octave, que é uma ferramenta de cálculo numérico e científico similar ao Matlab.
2. O tutorial explica conceitos básicos como operações matemáticas, definir variáveis, formatar números, criar gráficos e definir funções.
3. O documento também fornece exemplos de código do Octave para ilustrar cada tópico abordado.
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)Julio Betta
Slides que utilizei para ministrar uma palestra sobre Desenvolvimento WEB com Ruby on Rails no IV Congresso de Iniciação Científica da Faculdade Redentor de Itaperuna / RJ em Novembro de 2011.
O documento discute algoritmos e fornece exemplos. Em três frases:
Discutem-se definições e características de algoritmos, como sequências finitas de passos para resolver problemas. Fornecem-se exemplos de algoritmos, como receitas culinárias e troca de lâmpadas. Abordam-se também representações gráficas como fluxogramas para descrever algoritmos.
Minicurso de Ruby on Rails que ocorreu de 25/11/2014 até 28/11/2014 no Instituto Federal de Educação Ciência e Tecnologia do Sudeste de Minas Campus Barbacena
O documento introduz a linguagem de programação C, descrevendo brevemente sua história, características e aplicações. Foi desenvolvida em 1973 para o sistema operacional UNIX e padronizada em 1983. C oferece velocidade e portabilidade, combinando características de alto e baixo nível. É amplamente utilizada em sistemas operacionais, bancos de dados e efeitos especiais em filmes.
O documento apresenta um mini-curso sobre programação paralela utilizando OpenMP. Resume os objetivos do curso como apresentar técnicas de programação paralela com OpenMP, teoria e prática, além de desafios futuros para a área. Também introduz os palestrantes e suas experiências com OpenMP.
O documento apresenta um mini-curso sobre programação paralela utilizando OpenMP. Ele introduz os palestrantes e seus backgrounds, objetivos do curso, e um roteiro que inclui a evolução dos microprocessadores, programação paralela, OpenMP e desafios futuros.
Introdução ao Desenvolvimento WEB com Ruby on RailsJulio Betta
Slides que utilizei para ministrar uma palestra sobre Desenvolvimento WEB com Ruby on Rails no IV Congresso de Iniciação Científica da Faculdade Redentor de Itaperuna / RJ.
Versão PDF aqui: https://www.dropbox.com/s/2fkwksu00chm7nu/presentation.pdf
Introdução a linguagem Python: simples e produtivaÁlvaro Justen
Slides (melhorados) da webminar (palestra online) que ministrei no LabDeGaragem.com na terça-feira dia 16/08/2011.
A palestra abordou aspectos introdutórios da linguagem e mostrou através de exemplos práticos onde a linguagem pode ser utilizada a favor da produtividade do desenvolvedor.
Linguagens de Script
Este documento apresenta conceitos sobre linguagens de script, com foco na linguagem Lua. Aborda tópicos como pragmática, conceitos-chave e aplicações de Lua.
O documento descreve uma linguagem de programação chamada Pascal. O Pascal foi criado em 1971 por Niklaus Wirth para promover o uso de código estruturado. O Pascal foi muito popular na década de 1980 e é frequentemente usado para ensinar conceitos básicos de programação. O documento explica elementos-chave do Pascal como variáveis, constantes, operadores, estruturas de decisão e repetição.
Notas da Oficina Processing e Arduino no I-Sigatec: Simpósio Internacional de Games, Mundos Virtuais e Tecnologias na Educação. Simpósio de Artes, Mídias Locativas e Tecnologias na Educação
Matemática em Gráficos: A Mágica da Geração ProceduralAdriano Gil
O documento discute a geração procedural de conteúdo, incluindo geração de níveis, quebra-cabeças e música. Apresenta abordagens como algoritmos genéticos e dinâmica de fluidos. Também explora técnicas de processamento de malhas como simplificação, reconstrução a partir de imagens e conjuntos de pontos.
O documento apresenta um roteiro sobre entrada e saída de dados em shell script, incluindo: 1) como ler dados do usuário e armazenar em variáveis, 2) como exibir saídas, e 3) tipos básicos de dados e operações aritméticas. É apresentado um exemplo passo a passo de um script que calcula o total e valor individual a ser pago por 3 amigos em uma lancheira.
O documento discute as linguagens de programação Java e C. Apresenta características e funcionalidades básicas de cada linguagem, como tipos de dados, estruturas de controle, arrays, funções/métodos e entrada/saída. Realiza também comparações entre os conceitos em cada linguagem.
O documento apresenta o editor de texto VIM, descrevendo sua história, funcionalidades e como pode ser customizado através de plugins. O autor defende que VIM é uma poderosa ferramenta de edição que melhora a produtividade ao ser devidamente aprendido e configurado.
O documento discute a técnica de aprendizado de máquina chamada rotulação automática para prever tags em documentos. Ele apresenta três exemplos de algoritmos de aprendizado de máquina que podem ser usados: regressão linear, árvore de decisão e Naive Bayes. O documento também discute como lidar com problemas de aprendizado de máquina multi-rótulo.
First steps with Keras 2: A tutorial with ExamplesFelipe
In this presentation, we give a brief introduction to Keras and Neural networks, and use examples to explain how to build and train neural network models using this framework.
Talk given as part of an event by Rio Machine Learning Meetup.
Word embeddings introdução, motivação e exemplosFelipe
O documento apresenta uma introdução aos word embeddings, motivando sua utilização para representar palavras de forma distribuída e de baixa dimensionalidade. Explica como os modelos de linguagem neurais treinam embeddings de forma não supervisionada e como o Word2Vec tornou esse treinamento mais eficiente através de otimizações. Finalmente, discute aplicações e trabalhos futuros com embeddings.
This document provides an overview of popular cloud computing certifications from Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), and vendor-neutral certifications. It describes the purpose and requirements for certifications like AWS Certified Solutions Architect - Associate, MCSA: Cloud Platform, GCP Cloud Architect, and CompTIA Cloud+. The document also notes that certifications focus on roles like cloud architect, software engineer, and DevOps engineer, and that newer certifications address specific cloud aspects such as security and analytics.
This document provides an overview of using Elasticsearch for data analytics. It discusses various aggregation techniques in Elasticsearch like terms, min/max/avg/sum, cardinality, histogram, date_histogram, and nested aggregations. It also covers mappings, dynamic templates, and general tips for working with aggregations. The main takeaways are that aggregations in Elasticsearch provide insights into data distributions and relationships similarly to GROUP BY in SQL, and that mappings and templates can optimize how data is indexed for aggregation purposes.
Cloudwatch: Monitoring your Services with Metrics and AlarmsFelipe
CloudWatch is AWS's monitoring and metrics service that collects data from AWS services and allows users to set alarms and view metrics. It collects both built-in metrics provided by AWS services as well as custom metrics defined by users. CloudWatch allows viewing metrics and setting alarms in the console, through APIs, and via integration with other AWS services. It provides visibility into applications and infrastructure to help with decisions around capacity planning and troubleshooting.
Cloudwatch: Monitoring your AWS services with Metrics and AlarmsFelipe
Brief intro to AWS Cloudwatch. Motivation, examples and use cases. Shows how you can collect and monitors metrics for all your AWS services to better control your applications and infrastructure. #cloud-computing #aws #amazon-web-services
Online Machine Learning: introduction and examplesFelipe
In this talk I introduce the topic of Online Machine Learning, which deals with techniques for doing machine learning in an online setting, i.e. where you train your model a few examples at a time, rather than using the full dataset (off-line learning).
Aws cost optimization: lessons learned, strategies, tips and toolsFelipe
A couple of useful resources that may help you lower your AWS bill at the end of the month. Includes AWS Resources, Third-party Solutions and general tips and lessons learned.
Exemplos de uso de apache spark usando aws elastic map reduceFelipe
[1] O documento apresenta exemplos de uso do Apache Spark no AWS Elastic MapReduce (EMR), incluindo processamento em batch e streaming de dados. [2] Inclui detalhes sobre a criação de clusters no EMR e execução de códigos Spark tanto em modo batch quanto streaming. [3] Apresenta exemplos de códigos Spark para contagem de palavras em batch e contagem de tweets em streaming que podem ser executados no EMR.
A short introduction (with many examples) to the Scala programming language and also an introduction to using the Play! Framework for modern, safe, efffcient and reactive web applications.
Conceitos e exemplos em versionamento de códigoFelipe
Uma pequena apresentação dedicada a expôr desenvolvedores a conceitos e termos relacionados ao controle de versão de código em projetos de software; essa é uma prática essencial no desenvolvimento de software com a qual todos os desenvolvedores se depararão no decorrer de suas carreiras.
DevOps Series: Extending vagrant with Puppet for configuration managementFelipe
This is a short presentation on the reasons why you would augment your Vagrant installation with a full-fledged provisioner like Puppet and some examples of basic things you can do with it.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
2. Complexidade
● Atenção da ciência em geral
○ Muito grande ou muito pequeno (muita atenção)
○ Tamanho médio (menos atenção)
● Ciência tinha foco em reducionismo (até meados do séc 20)
○ Depois, estudos multidisciplinares foram surgindo
● Sistemas complexos
○ Emergência, auto-organização, ordem espontânea
3. Dinâmica de sistemas
● Uma forma de modelar sistemas complexos
● Introduzida por J. Forrester, década de 50
● O sistema é modelado em termos de estoques e fluxos
4. Jogos
● São sistemas complexos
● São regidos por uma mecânica interna
● Não é simples prever como um jogo irá se comportar
○ Muitas variáveis
○ Vários níveis na análise (tática, estratégia, etc)
○ Relacionamentos nem sempre fáceis de identificar
○ Jogabilidade (gameplay)
■ Quão divertido um jogo é
■ Como definir e medir?
5. Modelando jogos
● Máquinas de estado finito
● Redes de Petri
● Diagramas de jogos
○ Ralph Koster (2005)
○ Stéphane Bura (2006)
○ Diagramas UML (vários autores)
○ Machinations (2008)
6. Machinations
● Busca modelar a economia interna de um jogo
○ Ou seja, o fluxo de recursos que se movem durante um jogo
Ex.: Banco imobiliário
7. Machinations é legal mas
● É baseado em linguagem visual
○ Difícil de escalar
● Difícil de criar abstrações para subir o nível
● Implementação em Flash
○ Dificulta extensão
8. Ruby
● Linguagem de programação dinâmica.
● Foco no usuário, não na máquina.
● Liberal, dinamicamente tipada, boa para metaprogramação, totalmente
orientada a objetos (até tipos primitivos), grande comunidade.
● Exemplos:
"ice is nice" .length # => 11
"Nice Day Isn't It?" .downcase.split("").uniq.sort.join # => " '?acdeinsty"
[1, 'hi', 3.14].each {|item| puts item } # imprime: 1 'hi' 3.14
[1,3,5].reduce(10) {|sum, element | sum + element} # => 19
9. Rachinations = Ruby+Machinations
● A ideia foi implementar o Machinations em uma linguagem de
programação textual (não visual).
● O usuário poderia “escrever” um diagrama em formato texto e “executá-
lo”, debugar, obter métricas, testar hipóteses e usar todo o ferrramental já
disponível para código.
● Seria mais fácil construir abstrações de mais alto nível sobre as primitivas
originais do Machinations (nós, arestas, etc), bem como patterns.
● Criar uma DSL para interfacear com o usuário leigo (não-programador).
12. Rachinations v1: Esquema geral
● Usuário chama o método run!
● Este método, por sua vez, chama o método run_round! até que se
esgotem os turnos ou alguma condição de parada seja satisfeita
● O método run_round! executa os seguintes passos:
● Para cada nó no diagrama, fazer:
○ Este nó está habilitado? (enabled?)
○ Este nó deve ser gatilhado? (é automático ou inicial?)
○ Se sim, chame o método trigger! neste nó
■ O método trigger! fará todo o trabalho
13. Rachinations v1: limitações
● Rachinations é muito verboso.
● Muita escrita para descrever um diagrama Machinations relativamente
simples.
● Difícil para não programadores.
● Dificilmente seria adotado por muitos usuários.
14. Rachinations: DSL
● Mais enxuta e fácil de usar
● Só foi possível fazer isso por causa da flexibilidade da linguagem Ruby
● Muita metaprogramação
● Tentar fazer algo que “just works”
○ Funcione logo “de cara”
○ Sem surpresas
○ Defaults razoáveis
15. Rachinations: Internas da DSL
● Crio um método diagram que recebe um bloco de código como
parâmetro
○ Este método instancia um diagrama e executa o bloco de código
recebido no escopo do diagrama criado.
● Usando metaprogramação, reabro a classe Diagram em tempo de
execução e adiciono métodos mais curtos, mais livres e mais espertos.
○ Ex.: se o parâmetro :push_all foi passado ao método pool, eu
posso deduzir que isto é um modo de execução do nó, não preciso
exigir que o usuário passe mode: :push_all explicitamente.
16. Rachinations v2: Exemplo lado a lado
Usando a DSL Sem DSL (equivalente) Diagrama Machinations
equivalente
d = Diagram.new 'ainda simples'
d.add_node! Source, {
:name => 's1',
:activation => :automatic
}
d.add_node! Pool, {
:name => 'p1',
:initial_value => 0
}
d.add_node! Pool, {
:name => 'p2',
:initial_value => 0,
:activation => :automatic
}
d.add_edge! Edge, {
:name => 'e1',
:from => 's1',
:to => 'p1'
}
d.add_edge! Edge, {
:name => 'e2',
:from => 'p1',
:to => 'p2'
}
diagram 'ainda simples' do
source 's1'
pool 'p1'
pool 'p2', :automatic
edge from: 's1', to: 'p1'
edge from: 'p1', to: 'p2'
end
17. Rachinations v2: Exemplos completos
require 'rachinations'
d=diagram 'exemplo_2' do
source 's1'
pool 'p1'
converter 'c1', :automatic
pool 'p2'
pool 'p3'
edge from: 's1', to: 'p1'
edge from: 'p1', to: 'c1'
edge from: 'c1', to: 'p2'
edge from: 'c1', to: 'p3'
end
d.run 10
Diagrama Machinations
equivalente
18. Rachinations v2: Exemplos completos
require 'rachinations'
d=diagram 'exemplo_3' do
source 's1'
pool 'p1'
edge from: 's1', to: 'p1'
stop expr{ p1.resource_count > 5 }
end
d.run
Diagrama Machinations
equivalente
uma expressão que, quando
é satisfeita, para a execução
do diagrama
19. Trabalhos futuros
● Usabilidade da DSL
○ Sem quebrar BC, de preferência
● Meios de compartilhar diagramas
○ Talvez um site onde você escreve um diagrama e o executa de forma
online, sem precisar baixar e instalar o Rachinations na sua máquina
■ Diminuir a barreira de entrada de usuários
● Meios de criar abstrações customizadas e usá-las como se fossem primitivas
● Quer ajudar?
20. Lições aprendidas
● Testar de mais é tão ruim quanto testar de menos
○ Código “quebradiço” (brittle)
● Design top-down e bottom-up
○ Escrever seu código como se as partes já estivessem prontas
○ Top-down facilita pensar sobre e escrever algoritmos complexos
● Diagramas de sequência para ajudar a pensar uma estratégia