O documento discute os conceitos de beleza no desenvolvimento de software. Resume que beleza é fundamental e que código bonito trás benefícios como menos bugs, melhor manutenibilidade e maior produtividade. Também discute aspectos específicos como nomes expressivos, funções pequenas que fazem uma coisa única e comentários literais.
The document discusses Yahoo Query Language (YQL) and provides examples of how it can be used to extract and manipulate data from various sources on the internet. YQL allows developers to select and query data across web services via SQL-like statements and then build applications and mashups. Examples shown include retrieving weather data, conducting image searches, and mapping Flickr photos on a map using the Yahoo Maps API.
O documento discute as novas tecnologias da Web como HTML5, CSS3 e JavaScript, e como elas permitem a criação de aplicações incríveis. Ele também cobre novos recursos como vídeo, geolocalização, armazenamento local e formulários, além de frameworks que simplificam o desenvolvimento.
The document outlines the key roles and responsibilities of different human resources positions including generalists, administrators, specialists, officers, and leads. It details functions such as talent management, measurement, transactions, knowledge management, administrative services, recruitment, performance management, compensation, benefits, training, development, and employee relations.
O documento discute as tendências tecnológicas futuras da televisão, incluindo TV digital, interatividade, TV 3D, TVs conectadas à internet, TV móvel, integração com redes sociais, aumento da definição de imagem, telas flexíveis, hologramas, comunicação por luz visível e o futuro da TV aberta.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise stimulates the production of endorphins in the brain which elevate mood and reduce stress levels.
O objetivo desta palestra é mostrar aos programadores iniciantes no mundo do kernel do GNU/Linux, como construir um pequeno módulo no kernelspace que seja capaz de capturar e manipular os pacotes de redes que passam pela máquina. Será feito um overview sobre como funciona o framework netfilter e seus hooks dentro do kernel do GNU/Linux. Questões de peformance também serão discutidas em relaćão a outras solućões em userspace. Discutiremos também como se comporta uma regra do iptables dentro do kernel do GNU/Linux.
Pré-requisitos: Programaćão em C, conhecimento básico da pilha TCP/IP.
Quem disse que ler livros é caro e publicá-los quase impossível? Pois na Campus Party a LibroVirtual.org, iniciativa espanhola de Antonio Arteaga que está vencendo a crise do setor editorial tradicional, trará a solução ideal aos autores brasileiros. Reunindo inovação, criatividade e solidariedade ao utilizar a internet - principalmente redes sociais - para difundir obras literárias, através da Libro Virtual os escritores podem publicar seus livros para que os leitores possam acessá-los de forma gratuita ou baixá-los no formato eBook em troca de doações.
Com apenas 5 meses de vida, o projeto já conta com 500 obras de mais de 200 autores, acumulando cerca de 3.600 fãs na rede social Facebook. Conheça os segredos do projeto e as possibilidades abertas para a difusão da criatividade na internet, com direito, ainda, a uma surpresa especial a todos os campuseiros.
This document provides an overview and introduction to Linux and open source. It discusses the history and origins of Linux from 1969 with Unix at Bell Labs to Linus Torvalds starting the Linux kernel project in 1991. It describes the key components of an operating system distribution and popular distributions like Red Hat, Debian, and Fedora. The document outlines how Linux has been used for servers, embedded systems, supercomputers, and desktops. It also discusses open source licensing and communities and how to get started with Linux.
The document discusses Yahoo Query Language (YQL) and provides examples of how it can be used to extract and manipulate data from various sources on the internet. YQL allows developers to select and query data across web services via SQL-like statements and then build applications and mashups. Examples shown include retrieving weather data, conducting image searches, and mapping Flickr photos on a map using the Yahoo Maps API.
O documento discute as novas tecnologias da Web como HTML5, CSS3 e JavaScript, e como elas permitem a criação de aplicações incríveis. Ele também cobre novos recursos como vídeo, geolocalização, armazenamento local e formulários, além de frameworks que simplificam o desenvolvimento.
The document outlines the key roles and responsibilities of different human resources positions including generalists, administrators, specialists, officers, and leads. It details functions such as talent management, measurement, transactions, knowledge management, administrative services, recruitment, performance management, compensation, benefits, training, development, and employee relations.
O documento discute as tendências tecnológicas futuras da televisão, incluindo TV digital, interatividade, TV 3D, TVs conectadas à internet, TV móvel, integração com redes sociais, aumento da definição de imagem, telas flexíveis, hologramas, comunicação por luz visível e o futuro da TV aberta.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise stimulates the production of endorphins in the brain which elevate mood and reduce stress levels.
O objetivo desta palestra é mostrar aos programadores iniciantes no mundo do kernel do GNU/Linux, como construir um pequeno módulo no kernelspace que seja capaz de capturar e manipular os pacotes de redes que passam pela máquina. Será feito um overview sobre como funciona o framework netfilter e seus hooks dentro do kernel do GNU/Linux. Questões de peformance também serão discutidas em relaćão a outras solućões em userspace. Discutiremos também como se comporta uma regra do iptables dentro do kernel do GNU/Linux.
Pré-requisitos: Programaćão em C, conhecimento básico da pilha TCP/IP.
Quem disse que ler livros é caro e publicá-los quase impossível? Pois na Campus Party a LibroVirtual.org, iniciativa espanhola de Antonio Arteaga que está vencendo a crise do setor editorial tradicional, trará a solução ideal aos autores brasileiros. Reunindo inovação, criatividade e solidariedade ao utilizar a internet - principalmente redes sociais - para difundir obras literárias, através da Libro Virtual os escritores podem publicar seus livros para que os leitores possam acessá-los de forma gratuita ou baixá-los no formato eBook em troca de doações.
Com apenas 5 meses de vida, o projeto já conta com 500 obras de mais de 200 autores, acumulando cerca de 3.600 fãs na rede social Facebook. Conheça os segredos do projeto e as possibilidades abertas para a difusão da criatividade na internet, com direito, ainda, a uma surpresa especial a todos os campuseiros.
This document provides an overview and introduction to Linux and open source. It discusses the history and origins of Linux from 1969 with Unix at Bell Labs to Linus Torvalds starting the Linux kernel project in 1991. It describes the key components of an operating system distribution and popular distributions like Red Hat, Debian, and Fedora. The document outlines how Linux has been used for servers, embedded systems, supercomputers, and desktops. It also discusses open source licensing and communities and how to get started with Linux.
The document discusses Ruby on Rails, including its history and growth in popularity. It covers topics like installing Rails and Ruby versions, editors, gems, testing, stylesheets, templates, deployment, authentication, events, and support resources. Diagrams show the relationships between Rails, Ruby, and related tools. The presentation aims to provide an overview of the Rails framework and ecosystem.
O documento fornece um tutorial sobre o serviço NTP.br, cobrindo:
1) Uma visão geral do site NTP.br e do serviço de sincronização de tempo fornecido;
2) Exemplos de configuração básica e avançada do daemon NTP (ntpd) em diferentes sistemas;
3) Comandos para verificar o funcionamento correto do NTP depois da configuração.
Perspectives On Microsoft And Open Source Fy 10 Customer PresentationCampus Party Brasil
This document discusses Microsoft's "Open Edge" strategy of combining open source software (OSS) with their commercial core products. It lists several ways Microsoft incorporates OSS, such as supporting PHP on IIS, jQuery in Visual Studio, OpenPegasus for System Center, and over 300 OSS components in SharePoint. It also discusses Microsoft contributions to OSS projects like Linux kernel drivers for Hyper-V, AMQP protocol support in Apache Qpid, and integrations with Moodle and Chem4Word. The strategy aims to provide customers choice and flexibility through an open hybrid environment.
The document outlines the key roles and responsibilities of different human resources positions including generalists, administrators, specialists, officers, and leads. It details functions such as talent management, measurement, surveys, assessments, strategy, transactions, knowledge management, administrative services, recruitment, performance management, compensation, benefits, training, development, and employee relations.
The document provides instructions for classroom projects including decorating the door with leaves and insects, making a birthday board to list students' birthdays, having each student write about themselves on a leaf shaped paper to display on the wall, and allowing students to bring books from home to share during reading period.
- The document discusses AMD's presentations on January 19th and 20th about the future of GPUs and accelerated computing.
- It provides information on DirectX 11 features like tessellation, multi-threading, and order independent transparency.
- Examples are given showing the improvements these features provide for graphics like shadows, anti-aliasing, and depth of field effects.
- The document also discusses how GPUs are focused on gaming, entertainment and productivity and how technologies like AMD Eyefinity and AMD Stream can improve the user experience.
This document appears to be from Jan Herling at Ilmenau University of Technology in Germany and contains 4 pages from 2009 discussing augmented reality and diminished reality on their website for virtual and digital worlds research. The pages are from October 7, 2009 and relate to augmented and diminished reality technologies.
Perspectives On Microsoft And Open Source F Y 10 Customer PresentationCampus Party Brasil
This document discusses Microsoft's "Open Edge" strategy of combining open source software (OSS) with their commercial core products. It lists several ways Microsoft incorporates OSS, such as supporting PHP on IIS, jQuery in Visual Studio, OpenPegasus for System Center, and over 300 OSS components in SharePoint. It also discusses Microsoft contributions to OSS projects like Linux kernel drivers for Hyper-V, AMQP protocol support in Apache Qpid, and integrations with Moodle and Chem4Word. The strategy aims to provide customers choice and flexibility through an open hybrid environment.
Sterling Staffing Solutions provides recruitment solutions with a focus on accountability, knowledge, and a client-focused attitude. They aim to place candidates that will perform well within a client's culture through continuous improvements to quality and integrity. Their executive search services directly target pre-selected candidates in a client's industry, while their functional capabilities cover a wide range of marketing, finance, technology, sales, and human resources fields.
This document provides learning targets and materials for a lesson on identifying motifs related to sportsmanship in the novel Tangerine. It includes definitions of a motif and examples of sportsmanship-related motifs from the novel. Students are asked to evaluate examples of good and bad sportsmanship from characters in part of the novel and craft a thesis on motifs of sportsmanship throughout the work. The document guides students to write an introduction connecting a quote about effort and winning to a character who demonstrates good sportsmanship through effort.
This document provides instructions for students to discuss examples of sportsmanship from the novel Tangerine in small groups. Each group will present one example to the class, who will take notes to add to their graphic organizers. Students will then use these class discussion notes and their graphic organizers to write a 3 to 6 sentence conclusion to an essay about the motif of sportsmanship in Tangerine. The conclusion should restate the thesis, evaluate the author's purpose in discussing sportsmanship, and discuss the importance of sportsmanship in real life.
This document discusses an introduction to object-oriented programming in PHP. It covers key concepts like classes, objects, attributes, methods, inheritance, polymorphism, interfaces, exceptions, and more. It emphasizes thinking in an object-oriented way when programming in PHP 5.
The document is a presentation about the Apache OFBiz open source ERP software. It provides an overview of OFBiz, describing it as a turn-key software for managing business operations and a library of pre-made processes that can be used to build custom business applications. It outlines features like e-commerce, warehouse management, and accounting. It also discusses how OFBiz uses an entity engine for data access and service engine for functions, and how the community is critical for sharing business practices and code.
O documento discute a jornada de aprendizado de orientação a objetos, desde os primeiros passos com classes, objetos e métodos até a aplicação de padrões de projeto e princípios como SOLID. Também aborda desafios como código legado e a importância de testes.
O documento apresenta um treinamento sobre desenvolvimento de software limpo e qualidade de código. Ele discute princípios como clean code, boas práticas de programação, ferramentas para teste e controle de versão que auxiliam na manutenção de código limpo e de qualidade.
O documento discute o que deve ser procurado em uma revisão de código, incluindo se o código se adequa à arquitetura do projeto, é legível e mantível, contém testes adequados e segue boas práticas de programação. Ele também lista ferramentas como Lint, Checkstyle e SonarQube que podem auxiliar na análise do código.
7Masters jQuery - jQuery além do código, com Leon KulikowskiiMasters
O documento discute os benefícios e aplicações da biblioteca Jquery além do código. Apresenta como Jquery promove inovação através da compartilhamento de boas práticas de forma acessível. Também compara Jquery a modelos históricos como o Taylorismo, Toyotismo e Wikipedia, mostrando como estimula a colaboração e replicação de soluções.
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com Visual Studio 2019. Mais informações podem ser obtidas em www.developeracademy.com.br ou www.developeracademy.dev.
O documento discute princípios de código limpo em PHP, incluindo o que é um código "sujo", como refatorar código para limpá-lo através de boas práticas como a aplicação de padrões de nomenclatura e princípios SOLID. Também aborda as consequências de um código ruim e a importância de os desenvolvedores serem responsáveis pelo código que produzem.
O documento discute arquitetura limpa para software, onde o núcleo da aplicação contém apenas regras de negócio e entidades independentes de detalhes externos. Adaptadores fazem a interface entre o núcleo e elementos externos como bancos de dados e interfaces web. Uma demonstração mostra uma aplicação armazenando dados de usuários com diferentes alvos de linguagem e interface usando esta abordagem arquitetural.
O documento discute a arquitetura limpa para desenvolvimento de software. Apresenta os conceitos de arquitetura hexagonal, ports and adapters e como a arquitetura limpa separa a lógica do núcleo da aplicação de detalhes como a interface do usuário, banco de dados e linguagem. Demonstra uma aplicação que armazena dados de usuários usando essa abordagem arquitetural.
The document discusses Ruby on Rails, including its history and growth in popularity. It covers topics like installing Rails and Ruby versions, editors, gems, testing, stylesheets, templates, deployment, authentication, events, and support resources. Diagrams show the relationships between Rails, Ruby, and related tools. The presentation aims to provide an overview of the Rails framework and ecosystem.
O documento fornece um tutorial sobre o serviço NTP.br, cobrindo:
1) Uma visão geral do site NTP.br e do serviço de sincronização de tempo fornecido;
2) Exemplos de configuração básica e avançada do daemon NTP (ntpd) em diferentes sistemas;
3) Comandos para verificar o funcionamento correto do NTP depois da configuração.
Perspectives On Microsoft And Open Source Fy 10 Customer PresentationCampus Party Brasil
This document discusses Microsoft's "Open Edge" strategy of combining open source software (OSS) with their commercial core products. It lists several ways Microsoft incorporates OSS, such as supporting PHP on IIS, jQuery in Visual Studio, OpenPegasus for System Center, and over 300 OSS components in SharePoint. It also discusses Microsoft contributions to OSS projects like Linux kernel drivers for Hyper-V, AMQP protocol support in Apache Qpid, and integrations with Moodle and Chem4Word. The strategy aims to provide customers choice and flexibility through an open hybrid environment.
The document outlines the key roles and responsibilities of different human resources positions including generalists, administrators, specialists, officers, and leads. It details functions such as talent management, measurement, surveys, assessments, strategy, transactions, knowledge management, administrative services, recruitment, performance management, compensation, benefits, training, development, and employee relations.
The document provides instructions for classroom projects including decorating the door with leaves and insects, making a birthday board to list students' birthdays, having each student write about themselves on a leaf shaped paper to display on the wall, and allowing students to bring books from home to share during reading period.
- The document discusses AMD's presentations on January 19th and 20th about the future of GPUs and accelerated computing.
- It provides information on DirectX 11 features like tessellation, multi-threading, and order independent transparency.
- Examples are given showing the improvements these features provide for graphics like shadows, anti-aliasing, and depth of field effects.
- The document also discusses how GPUs are focused on gaming, entertainment and productivity and how technologies like AMD Eyefinity and AMD Stream can improve the user experience.
This document appears to be from Jan Herling at Ilmenau University of Technology in Germany and contains 4 pages from 2009 discussing augmented reality and diminished reality on their website for virtual and digital worlds research. The pages are from October 7, 2009 and relate to augmented and diminished reality technologies.
Perspectives On Microsoft And Open Source F Y 10 Customer PresentationCampus Party Brasil
This document discusses Microsoft's "Open Edge" strategy of combining open source software (OSS) with their commercial core products. It lists several ways Microsoft incorporates OSS, such as supporting PHP on IIS, jQuery in Visual Studio, OpenPegasus for System Center, and over 300 OSS components in SharePoint. It also discusses Microsoft contributions to OSS projects like Linux kernel drivers for Hyper-V, AMQP protocol support in Apache Qpid, and integrations with Moodle and Chem4Word. The strategy aims to provide customers choice and flexibility through an open hybrid environment.
Sterling Staffing Solutions provides recruitment solutions with a focus on accountability, knowledge, and a client-focused attitude. They aim to place candidates that will perform well within a client's culture through continuous improvements to quality and integrity. Their executive search services directly target pre-selected candidates in a client's industry, while their functional capabilities cover a wide range of marketing, finance, technology, sales, and human resources fields.
This document provides learning targets and materials for a lesson on identifying motifs related to sportsmanship in the novel Tangerine. It includes definitions of a motif and examples of sportsmanship-related motifs from the novel. Students are asked to evaluate examples of good and bad sportsmanship from characters in part of the novel and craft a thesis on motifs of sportsmanship throughout the work. The document guides students to write an introduction connecting a quote about effort and winning to a character who demonstrates good sportsmanship through effort.
This document provides instructions for students to discuss examples of sportsmanship from the novel Tangerine in small groups. Each group will present one example to the class, who will take notes to add to their graphic organizers. Students will then use these class discussion notes and their graphic organizers to write a 3 to 6 sentence conclusion to an essay about the motif of sportsmanship in Tangerine. The conclusion should restate the thesis, evaluate the author's purpose in discussing sportsmanship, and discuss the importance of sportsmanship in real life.
This document discusses an introduction to object-oriented programming in PHP. It covers key concepts like classes, objects, attributes, methods, inheritance, polymorphism, interfaces, exceptions, and more. It emphasizes thinking in an object-oriented way when programming in PHP 5.
The document is a presentation about the Apache OFBiz open source ERP software. It provides an overview of OFBiz, describing it as a turn-key software for managing business operations and a library of pre-made processes that can be used to build custom business applications. It outlines features like e-commerce, warehouse management, and accounting. It also discusses how OFBiz uses an entity engine for data access and service engine for functions, and how the community is critical for sharing business practices and code.
O documento discute a jornada de aprendizado de orientação a objetos, desde os primeiros passos com classes, objetos e métodos até a aplicação de padrões de projeto e princípios como SOLID. Também aborda desafios como código legado e a importância de testes.
O documento apresenta um treinamento sobre desenvolvimento de software limpo e qualidade de código. Ele discute princípios como clean code, boas práticas de programação, ferramentas para teste e controle de versão que auxiliam na manutenção de código limpo e de qualidade.
O documento discute o que deve ser procurado em uma revisão de código, incluindo se o código se adequa à arquitetura do projeto, é legível e mantível, contém testes adequados e segue boas práticas de programação. Ele também lista ferramentas como Lint, Checkstyle e SonarQube que podem auxiliar na análise do código.
7Masters jQuery - jQuery além do código, com Leon KulikowskiiMasters
O documento discute os benefícios e aplicações da biblioteca Jquery além do código. Apresenta como Jquery promove inovação através da compartilhamento de boas práticas de forma acessível. Também compara Jquery a modelos históricos como o Taylorismo, Toyotismo e Wikipedia, mostrando como estimula a colaboração e replicação de soluções.
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com Visual Studio 2019. Mais informações podem ser obtidas em www.developeracademy.com.br ou www.developeracademy.dev.
O documento discute princípios de código limpo em PHP, incluindo o que é um código "sujo", como refatorar código para limpá-lo através de boas práticas como a aplicação de padrões de nomenclatura e princípios SOLID. Também aborda as consequências de um código ruim e a importância de os desenvolvedores serem responsáveis pelo código que produzem.
O documento discute arquitetura limpa para software, onde o núcleo da aplicação contém apenas regras de negócio e entidades independentes de detalhes externos. Adaptadores fazem a interface entre o núcleo e elementos externos como bancos de dados e interfaces web. Uma demonstração mostra uma aplicação armazenando dados de usuários com diferentes alvos de linguagem e interface usando esta abordagem arquitetural.
O documento discute a arquitetura limpa para desenvolvimento de software. Apresenta os conceitos de arquitetura hexagonal, ports and adapters e como a arquitetura limpa separa a lógica do núcleo da aplicação de detalhes como a interface do usuário, banco de dados e linguagem. Demonstra uma aplicação que armazena dados de usuários usando essa abordagem arquitetural.
Palestra sobre Clean Code ministrada na Benner em Outubro de 2018. Baseada no livro Clean Code do Uncle Bob (Robert Cecil Martin).
Código fonte em: https://github.com/paulohs/CleanCodeSample/
O documento discute a importância da sustentabilidade no desenvolvimento de software. Apresenta o conceito de código sustentável e como ele envolve a adoção de padrões e práticas que promovam a modularidade, reutilização e flexibilidade. Também descreve situações não sustentáveis como falta de instruções ou documentação e como implementar práticas de código sustentável como arquitetura, ferramentas e processos que permitam a evolução contínua do software.
O documento apresenta Rodrigo Campos, diretor de operações da walmart.com, que falará sobre como DevOps pode melhorar as relações entre desenvolvimento e operações nas empresas de tecnologia. Ele discute conceitos como cultura DevOps, novos papéis como desenvolvedores de infraestrutura e gestão de sistemas, métricas como capacidade e velocidade de entrega, e desafios como segurança da informação e conformidade com normas.
O documento introduz os conceitos de DevOps e Continuous Delivery. Resume que DevOps enfatiza a comunicação, colaboração, integração e automação entre equipes de desenvolvimento e operações. Apresenta também a importância da infraestrutura como código e do deploy contínuo para entregar valor de forma mais rápida e confiável.
XP Conf BR: eXtreme Programming para programadores. Aplicando XP em seu código!Mauricio Andreazza
Apresentação realizada junto com @joleques na Conferencia Brasileira de eXtreme Programming. Abordamos assuntos como TDD, Clean Code, Qualidade de código entre outros assuntos
Segunda aula sobre testes, na qual é apresentada a turma a regra fundamental de desenvolvimento orientado a testes, o desafio existente no desenvolvimento e manutenção de software e como podemos manter a qualidade interna e externa de nosso código com TDD e ATDD. Por fim é apresentado o ciclo de desenvolvimento com TDD e como conseguimos software melhor e mais condizente com as necessidades de nosso clientes com ATDD.
O documento descreve os princípios da Clean Architecture, uma estratégia arquitetural que promove o desacoplamento entre as regras de negócio de uma aplicação e recursos externos. A Clean Architecture define camadas lógicas com entidades, casos de uso e adaptadores de interface que isolam as regras de negócio de tecnologias como bancos de dados e frameworks. Isso permite mudanças nesses recursos sem afetar o código de domínio e aumenta a testabilidade.
O documento introduz o TDD (Desenvolvimento Orientado a Testes) como um estilo de vida e não apenas uma tarefa. Explica que os testes devem ser construídos antes do código e que o foco principal é fazer os testes passarem, e não a implementação em si. Também discute os benefícios do TDD como código de melhor qualidade e redução de bugs.
O documento fornece uma introdução aos conceitos fundamentais de engenharia de software, incluindo:
1) Uma definição de software e suas características como invisibilidade, complexidade e mutabilidade;
2) Os principais modelos de processo de desenvolvimento de software e a importância da modelagem;
3) Os paradigmas orientados a objetos que dominam o desenvolvimento de software atual.
O documento discute o que é ser um programador, enfatizando a importância da atitude ao invés de habilidades técnicas. Um bom programador deve sempre se desenvolver, dar o melhor, e gerar resultados de qualidade. A principal mensagem é que ser programador requer foco contínuo no aprendizado ao longo da vida.
Programação de Elite - Requisito dado é código implementadoSamuel David
O documento discute tópicos relacionados ao desenvolvimento de software, incluindo controle de versão, técnicas e padrões de desenvolvimento, e testes unitários. Ele enfatiza a importância de seguir boas práticas como orientação a objetos, refatoração, padrões de projeto e princípios SOLID para escrever código extensível e de fácil manutenção.
Algumas dicas que servem para ajudar quando vamos desenvolver códigos com mais precisão, empatia e legibilidade. Essa apresentação tem base do Clean Code do Uncle Bob.
O documento discute as vantagens do WordPress como plataforma para desenvolvimento de sites e redes sociais. Inicialmente criado para blogs, o WordPress evoluiu para ser um sistema de gerenciamento de conteúdo (CMS) flexível com milhares de plugins e temas disponíveis que o tornam uma ferramenta poderosa e amigável para criação de sites de todos os portes.
Buracos negros são regiões do espaço-tempo onde a gravidade é tão forte que nada, nem mesmo a luz, pode escapar. Eles se formam quando estrelas massivas colapsam ao final de suas vidas e podem ser detectados quando a matéria que cai neles emite radiação. A fonte Cygnus X-1 é um possível buraco negro detectado por variar e desaparecer periodicamente sua emissão de raios-X.
O objetivo da palestra é valorizar o esforço dos programadores que criaram os jogos clássicos do Atari 2600. Uma apresentação básica da arquitetura (em particular das limitações de CPU/memória e do chip TIA), montagem e rodagem, em um emulador, de um pequeno experimento, demonstrando a complexidade envolvida na criação de um jogo completo.
Palestrante
Carlos Duarte do Nascimento
Matemático pelo IME/USP e Gerente de Produto no Apontador, faz "artesanato" de software há 20 anos, defendendo plataformas e conteúdo livres.
Uma palestra para explorar o Google App Engine (GAE), uma plataforma de desenvolvimento e hospedagem de aplicações web na nuvem. Aplicativos fáceis de criar, manter e escalar.
Palestrante: Carlos Duarte do Nascimento
Matemático pelo IME/USP e Gerente de Produto no Apontador, faz "artesanato" de software há 20 anos, defendendo plataformas e conteúdo livres.
Quem nunca perdeu um arquivo após deletar algo por engano na máquina fotográfica, computador ou celular? Ou ainda, quem nunca formatou um pendrive ou partição de disco sem querer? Veja como utilizar técnicas de Forense Computacional para recuperar arquivos apagados. Recuperações a partir de dados ainda existentes na memória RAM e demonstrações ao vivo.
Palestrante: João Eriberto Mota Filho
Oficial de Cavalaria do Exército Brasileiro. Gerente de Rede e de Segurança em Rede do Gabinete do Comandante do Exército. Coordenador e professor da pós-graduação em Software Livre na Universidade Católica de Brasília (UCB) e professor da pós-graduação em Perícia Digital (UCB). Autor dos livros Linux & Seus Servidores (2000), Pequenas Redes com Microsoft Windows (2001) e Descobrindo o Linux (2ª edição em 2007).
Com tantas app stores, fabricantes e sistemas operacionais diferentes, em qual deles devemos apostar? Esta provavelmente é a sua maior dúvida se você está pensando em lançar uma start-up, criar jogos ou apps para seus serviços web no mundo mobile. Saiba onde investir e os porquês de cada plataforma. Conheça diferentes SDK cross-platform, apostas em Mobile Web app ou Nativo App.
Palestrante: Igor Costa
Tem 12 anos de experiência no mercado de software. É co-fundador da RIACycle, empresa brasileira dedicada a criar apps para web/mobile e a ensinar uma vasta rede de desenvolvedores. Palestrante assíduo, já particiou de vários eventos como o iMasters Intercon, Campus Party, Just Java, Flash Camp Brasil, Flex for Kids, Flex Mania, Flash Open Source Conference, faculdades, etc.
O documento discute tempestades solares, incluindo explosões solares (flares) e ejeções de massa coronal. Ele explica que essas tempestades solares emitem radiação e partículas energéticas que podem interferir nos sistemas elétricos e de comunicações na Terra e causar danos a satélites e espaçonaves. O documento também discute o ciclo solar de 11 anos e teorias não comprovadas sobre profecias maias relacionadas a tempestades solares.
Este documento discute a busca por planetas além do nosso Sistema Solar. Resume os principais métodos utilizados para detectar planetas extrassolares, incluindo velocidade radial, trânsitos, lente gravitacional e detecção direta. Também descreve alguns dos principais satélites dedicados a essa busca, como CoRoT, Kepler e Gaia.
3 (dos 5) dados incríveis sobre o LHC
[A] Lugar mais frio da galáxia (- 271 oC)
[B] Um dos lugares mais quentes no Universo (10.106.109 oC)
[C] Mais vazio que o espaço exterior
O documento fornece detalhes sobre o Large Hadron Collider (LHC) no CERN, destacando 3 de seus 5 dados mais incríveis: seu sistema de refrigeração criogênica produz as temperaturas mais baixas da galáxia; as colisões de prótons
Este documento fornece instruções para construir uma luneta (telescópio refrator) de baixo custo utilizando lentes e tubos. Explica os conceitos básicos de óptica envolvidos no funcionamento de um refrator e fornece dicas sobre montagem, uso e sites para mais informações sobre astronomia.
Hardware livre Arduino: eletrônica e robótica com hardware e software livresCampus Party Brasil
O documento apresenta uma introdução ao Arduino, um hardware livre para eletrônica e robótica. Apresenta os objetivos do Arduino, como licenciamento de hardware livre, modelos de placas como Arduino Uno e shields. Explica brevemente o funcionamento básico do Arduino com instruções como pinMode, digitalWrite e delay. Demonstra também o controle de um servo motor usando PWM e biblioteca Servo.
Este documento discute a educação inclusiva e o uso da robótica pedagógica para apoiar alunos com deficiência. Em particular, ele explora (1) o desenvolvimento de maquetes táteis sonoras para fornecer informações espaciais para pessoas cegas e (2) o mapeamento tátil sonoro do campus da UNICAMP para facilitar a navegação independente. O documento argumenta que a robótica pedagógica pode promover a autonomia e inclusão de alunos com deficiência.
Fazendo do jeito certo: criando jogos sofisticados com DirectXCampus Party Brasil
Tecnologias vêm e vão, mas apenas uma permanece ao longo do tempo: o DirectX. Com o novo Windows 8 à vista, não poderia ser diferente e, nesta palestra, iremos explorar esta tecnologia, suas características e recursos, principalmente sob os novos aspectos necessários para a criação de jogos para Windows 8 e a interface Metro.
Palestrante: José Antonio Leal de Farias
CEO da Stairs Game Studio, professor, bacharel em Ciências da Computação pela UFCG, XNA/Directx Microsoft Most Valuable Professional, autor de livros e artigos publicados no Brasil e nos Estados Unidos e programador profissional há mais de uma década.
Este documento discute a educação inclusiva e o uso da robótica pedagógica para promover a autonomia de pessoas com deficiência. Em particular, ele descreve (1) um projeto de pesquisa que desenvolve maquetes táteis e sonoras para ensinar conceitos geográficos; e (2) um mapa tátil e sonoro da Universidade Estadual de Campinas para guiar pessoas com deficiência visual.
Gestão e monitoramento de redes e dispositivos com Software LivreCampus Party Brasil
O documento descreve as funcionalidades e benefícios do Zabbix para monitoramento de ativos. O Zabbix permite monitorar ativos de forma proativa, detectar falhas antecipadamente e analisar a qualidade dos serviços de baixo custo. Ele é uma solução escalável com interface amigável que usa agentes para coletar métricas de ativos e dispara ações com base em triggers.
O documento apresenta a suíte de software livre Kicad para projeto de circuitos impressos, descrevendo seus principais módulos (Eeschema, Cvpcb, Pcbnew, Gerbview), seu idealizador Jean-Pierre Charras e referências sobre o tema.
Ideias e ferramentas para publicar conteúdo de forma relevante aproveitando os recursos das redes sociais tendo como base o caso do site Vida de Programador.
Palestrante: André Noel
Bacharel em Ciência da Computação pela Universidade Estadual de Maringá é desenvolvedor web desde 2002, mesmo ano em que aderiu ao Linux. Atualmente é membro do Conselho da Comunidade Ubuntu-BR e autor do site Vida de Programador.
O documento discute o tema de Cloud Computing e suas tendências. Aborda o que é Cloud Computing, suas vantagens como economia de infraestrutura e acessibilidade, cenários propícios e impróprios para sua adoção, e tendências como maior segurança e desempenho. Também discute a relação entre Cloud Computing e Virtualização.
O documento descreve o que é Arduino e fornece exemplos de seu uso. Também discute como os desenvolvedores projetaram sua própria placa Arduino ao remover componentes difíceis de encontrar e desenvolver seu próprio bootloader e implementação de padrão USB por software. Por fim, fornece um cronograma para a formação de grupos, fabricação de placas, montagem de componentes e testes.
1. Beleza de Código
Nelson Lago / Prof. Dr. Fabio Kon
Centro de Competência em Software Livre
IME-USP
Campus Party - Janeiro de 2011
2. Visão geral
• Por que falar de beleza?
• O que é beleza?
• O que é beleza no desenvolvimento de software?
• Aspectos específicos: nomes
• Aspectos específicos: funções
• Aspectos específicos: comentários
3. Visão geral
• Por que falar de beleza?
• O que é beleza?
• O que é beleza no desenvolvimento de software?
• Aspectos específicos: nomes
• Aspectos específicos: funções
• Aspectos específicos: comentários
4. Por que falar de beleza?
• É comum abordar a gerência de projetos de
software como outros processos ou sistemas de
produção
• Mas desenvolvimento de software tem um forte
caráter de “artesanato”
• Há um grande número de gerentes de software
que jamais escreveram código
• Será possível que exista um bom Chef de Cuisine que
nunca cozinhou na vida?
5. Por que falar de beleza?
• Cientistas, engenheiros etc. muitas vezes tendem
a superestimar o poder da ciência, da matemática
e da engenharia
• Mas será que a ciência, a matemática e a engenharia
sozinhas oferecem tudo o que é necessário para
explicar e vivenciar o universo?
• E, em particular, o desenvolvimento de software?
6. Visão geral
• Por que falar de beleza?
• O que é beleza?
• O que é beleza no desenvolvimento de software?
• Aspectos específicos: nomes
• Aspectos específicos: funções
• Aspectos específicos: comentários
7. O que é beleza?
• Segundo o dicionário Houaiss da língua
portuguesa:
• Caráter do ser ou coisa que desperta sentimento de
êxtase, admiração ou prazer através dos sentidos
• Característica daquilo que possui harmonia,
proporção, simetria, imponência etc.
• Qualidade do ser ou coisa que suscita a admiração e
um sentimento de adesão por seu valor moral ou
intelectual
• Parece um bom objetivo para qualquer coisa que
se faça na vida!
• Trabalhar com isso parece ser bom!
8. O que é beleza?
• Várias formas na cultura ocidental:
• pré-socráticos (pitágoras): beleza e matemática,
proporção áurea, simetria
• romantismo: fragmentação e irregularidade como
belo, talvez pela alusão à harmonia ausente
• modernismo:
- “Less is more” (Mies van der Rohe)
- “a perfeição é atingida não quando não há mais o que
acrescentar, mas quando não há mais o que remover”
(Antoine de Saint-Exupéry)
• pós-modernismo: “Less is a bore” (Robert Venturi)
9. O que é beleza?
• As visões grega e moderna parecem uma boa
base para pensar em beleza no contexto da
ciência e tecnologia
• Ciência: “Faça as coisas da maneira mais simples
possível, mas não mais simples que isso” (atribuído a
Einstein)
• Tecnologia: “integridade conceitual: o arquiteto deve
desenvolver uma ideia do que o sistema deve fazer e
garantir que essa visão é compreendida pelo restante
da equipe. Para garantir um sistema fácil de usar,
pode-se deliberadamente oferecer menos
funcionalidades do que seria possível” (Fred Brooks)
10. O que é beleza?
• Beleza é fundamental!
• Código bonito:
• Dá prazer ao leitor
• Faz o escritor feliz
• Torna o trabalho em equipe mais agradável
• O que traz:
• Menos bugs
• Melhor manutenibilidade
• Maior produtividade da equipe
• Ou seja, qualidade
11. Visão geral
• Por que falar de beleza?
• O que é beleza?
• O que é beleza no desenvolvimento de software?
• Aspectos específicos: nomes
• Aspectos específicos: funções
• Aspectos específicos: comentários
12. What is Clean
Code?
“ I like my code to be elegant and
efficient. The logic should be
straighforward to make it hard
for bugs to hide, the
dependencies minimal to ease
maintenance, error handling
complete according to an
articulated strategy, and
performance close to optimal so
as not to tempt people to make
Bjarne Stroustrup the code messy with unprincipled
Inventor of C++ optimizations. Clean code does
one thing well.”
13. What is Clean
Code?
“ Clean code is simple and direct.
Clean code reads like well-
written prose. Clean code never
obscures the designer's intent but
rather is full of crisp [clearly
defined] abstractions and
straighforward lines of control.”
Grady Booch
Author of Object Oriented Analysis and
Design with Applications
14. What is Clean
Code?
“ Clean code can be read, and
enhanced by a developer other
than its original author. It has
unit and acceptance tests. It
has meaningful names. It
provides one way rather than
many ways for doing one thing. It
has minimal dependencies,
which are explicitly defined, and
provides a clear and minimal
Dave Thomas API. Code should be literate
Founder of OTI, godfather of since depending on the language,
the Eclipse Strategy not all necessary information can
be expressed clearly in code
alone.”
15. What is Clean
Code?
“ I could list all of the qualities
that I notice in clean code, but
there is one overarching quality
that leads to all of them. Clean
code always looks it was
written by someone who cares.
There is nothing obvious that
you can do to make it better.
All of those things were thought
about by the code's author, and if
Michael Feathers you try to imagine improvements,
Author of Working Effectively you're led back to where you are,
With Legacy Code sitting in appreciation of the code
someone left for you – code left
by someone who cares deeply
about the craft.”
16. What is Clean
Code?
“ In recent years I begin, and
nearly end, with Beck's rules of
simple code. In priority order,
simple code:
•
Runs all tests
•
Contains no duplication
•
Expresses all the design ideas
that are in the system
•
Minimizes the number of
entities such as classes, methods,
Ron Jeffries functions, and the like.”
Author of Extreme
Programming Installed
17. What is Clean
Code?
You know you are working on
clean code when each routine
you read turns out to be pretty
much what you expected. You
can call it beautiful code when
the codes also makes it look like
the language was made for the
problem.”
Ward Cunningham
Inventor of Wiki, Fit and much more
”Godfather of all those who care about
code”
18. What is Clean
Code?
Without
Simple
Efficient obvious
improvements
Straightforward
Expressive
Contains no
Turns out to be what
duplications
you expected Runs all tests
Full of meaning Literal Reads well
Beautiful: when the Minimal
language was made Written by
for the problem someone who
cares
19. O que é beleza no
desenvolvimento de software?
• Um exemplo bastante popular: a classe
“Collection” do SmallTalk (citando Rebecca Wirfs-
Brock):
• Garante todas as funcionalidades básicas exigindo que
as subclasses implementem três métodos:
- add: anObject
- remove: anObject ifAbsent: exceptionBlock
- do: aBlock
• Os métodos da classe abstrata “Collection” para
adicionar e remover elementos, acumular diferentes
resultados ao processar todos os elementos, checar se
a classe está vazia etc. são todos implementados
utilizando esses aspectos básicos ou através de outros
procedimentos pré-definidos que dependem apenas
dessas implementações; reúso belo e elegante!
20. Visão geral
• Por que falar de beleza?
• O que é beleza?
• O que é beleza no desenvolvimento de software?
• Aspectos específicos: nomes
• Aspectos específicos: funções
• Aspectos específicos: comentários
21. Aspectos específicos: nomes
• Nomes expressivos são fundamentais!
• Um programa é basicamente composto de palavras
reservadas e nomes
• Escolher bons nomes toma tempo; no entanto, isso
acaba economizando mais tempo ainda
• Os nomes devem ser expressivos e eliminar dúvidas
• Exemplo:
public List<int[]> getThem() {
List<int[]> list1 = new ArrayList<int[]>();
for (int[] x : theList)
if(x[0] == 4)
list1.add(x);
return list1;
}
22. Aspectos específicos: nomes
public List<int[]> getThem() {
List<int[]> list1 = new ArrayList<int[]>();
for (int[] x : theList)
if(x[0] == 4)
list1.add(x);
return list1;
}
• Dúvidas!!!
• O que esse método seleciona?
• Quais tipos de coisa estão em theList?
• Qual a relevância da posição zero?
• O que significa “4”?
23. Aspectos específicos: nomes
public List<int[]> getThem() {
List<int[]> list1 = new ArrayList<int[]>();
for (int[] x : theList)
if(x[0] == 4)
list1.add(x);
return list1;
}
• Que tal assim:
public List<int[]> getFlaggedCells() {
List<int[]> flaggedCells = new ArrayList<int[]>();
for (int[] cell : gameBoard)
if(cell[STATUS_VALUE] == FLAGGED)
flaggedCells.add(cell);
return flaggedCells;
}
24. Aspectos específicos: nomes
public List<int[]> getFlaggedCells() {
List<int[]> flaggedCells = new ArrayList<int[]>();
for (int[] cell : gameBoard)
if(cell[STATUS_VALUE] == FLAGGED)
flaggedCells.add(cell);
return flaggedCells;
}
• Ahá!
• O que esse método seleciona? As células marcadas!
• Quais tipos de coisa estão em theList? theList é um
tabuleiro com células!
• Qual a relevância da posição zero? É o status!
• O que significa “4”? Significa “marcado”!
25. Aspectos específicos: nomes
public List<int[]> getFlaggedCells() {
List<int[]> flaggedCells = new ArrayList<int[]>();
for (int[] cell : gameBoard)
if(cell[STATUS_VALUE] == FLAGGED)
flaggedCells.add(cell);
return flaggedCells;
}
• Mas ainda dá pra melhorar!
public List<Cell> getFlaggedCells() {
List<Cell> flaggedCells = new ArrayList<Cell>();
for (Cell cell : gameBoard)
if(cell.isFlagged())
flaggedCells.add(cell);
return flaggedCells;
}
26. Aspectos específicos: nomes
• Modificar o código precisa ser fácil, e portanto o
código precisa ser fácil de entender
• Use nomes legíveis
- XYZControllerHandlingOfStrings !=
XYZControllerStorageOfStrings
• Use nomes que possam ser usados em buscas
• Use os padrões da linguagem (camelCase etc.)
• Use nomes do domínio da solução
- Padrões de projeto, algoritmos, termos matemáticos etc.
• Use nomes do domínio do problema
• Não confunda o leitor
- Uma palavra para cada conceito (get, fetch, retrieve)
- Evite piadinhas ou metáforas de significado obscuro
27. Aspectos específicos: nomes
• Falar é fácil, mas isso é importante MESMO
• É melhor que os nomes sejam relativamente
curtos, desde que sejam claros (economizar
alguns toques no teclado não é uma boa razão
para promover a obscuridade)
• Se você encontrar um mau nome, mude-o
imediatamente!
28. Visão geral
• Por que falar de beleza?
• O que é beleza?
• O que é beleza no desenvolvimento de software?
• Aspectos específicos: nomes
• Aspectos específicos: funções
• Aspectos específicos: comentários
29. Aspectos específicos:
funções
• Funções devem ser pequenas
• Cada uma delas deve ser óbvia quanto ao que faz e
simples de entender quanto ao como o faz
• Funções devem evitar estruturas aninhadas
• Blocos de if's/while's/else's devem ser diretos no que
fazem (provavelmente, apenas chamar uma função)
- Condicionais provavelmente devem ir para uma função
separada
30. Aspectos específicos:
funções
• Funções devem fazer uma e apenas uma coisa, e
fazê-la corretamente
• evita repetição de código em diferentes funções
• Uma função que faz apenas uma coisa não pode ser
dividida em seções
• Se não é possível extrair uma sub-função de dentro
dela cujo nome não seria o mesmo que o nome que
ela já tem, ela provavelmente faz só uma coisa
• Exemplo:
public void pay() {
for (Employee e : employees) {
if (e.isPayday()) {
Money pay = e.calculatePay();
e.deliverPay(pay);
}
}
}
31. Aspectos específicos:
funções
public void pay() {
for (Employee e : employees) {
if (e.isPayday()) {
Money pay = e.calculatePay();
e.deliverPay(pay);
}
}
}
• Esta função faz mais que uma coisa!
• Itera por todos os empregados
• Checa para ver quais empregados precisam ser pagos
• Paga os empregados
32. Aspectos específicos:
funções
public void pay() { Apenas itera
for (Employee e : employees)
payIfNecessary(e);
}
private void payIfNecessary(Employee e) { Verifica se o
if (e.isPayday()) funcionário precisa
calculateAndDeliverPay(); ser pago
}
private void paga o empregado
calculateAndDeliverPay(Employee e) {
Money pay = e.calculatePay();
e.deliverPay(pay);
}
• Será um exagero?
33. Aspectos específicos:
funções
• Um único nível de abstração
• Todas as linhas de uma função devem operar no
mesmo nível
• Quando detalhes se misturam a conceitos mais
abstratos, mais e mais detalhes tendem a se insinuar
• É o primeiro passo rumo às funções gigantes
• Exemplo:
public void gameLoop() {
advanceTimer();
moveMonsters();
movePlayers();
removeDeadBodies();
if (keyPressed) {
if key.scancode == “X”; then... Hein?!?!
}
}
34. Aspectos específicos:
funções
• O número de argumentos de uma função deve
ser pequeno
• Argumentos dificultam os testes
• um grande número de argumentos sugere que a
função faz mais que uma coisa
• um grande número de argumentos sugere que a
função é usada de maneiras muito díspares
• Argumentos que na verdade são “flags” praticamente
garantem que a função faz mais que uma coisa
- rotaciona (int angulo, bool sentidoHorario)
- rotacionaHorario (int angulo), rotacionaAntiHorario (int angulo)
• Funções devem evitar efeitos colaterais
• Uma função deve ter um efeito sobre um objeto OU
devolver algo
35. Visão geral
• Por que falar de beleza?
• O que é beleza?
• O que é beleza no desenvolvimento de software?
• Aspectos específicos: nomes
• Aspectos específicos: funções
• Aspectos específicos: comentários
36. Aspectos específicos:
comentários
• Comentários são, no máximo, um mal necessário
• O quase único uso dos comentários é compensar
nossa incapacidade de expressão através do código
• Comentários são mentirosos
• Comentários nem sempre acompanham as mudanças
no código
• Mantê-los requer tempo; Na prática, mantê-los acaba
sendo impossível
• A verdade está em um único lugar: no código
37. Aspectos específicos:
comentários
• Bons comentários:
• Comentários sobre aspectos legais que influenciam o
código
• Alguns tipos de comentários informativos, como
explicações sobre expressões regulares
• Esclarecimentos sobre decisões tomadas em função
não da implementação, mas do problema
• Esclarecimentos sobre bibliotecas de terceiros que
não são tão claras
• Comentários que frisam a importância de um
determinado elemento
• Comentários tipo TODO e JavaDoc para APIs públicas
38. Bibliografia
• Fontes relevantes sobre o tema:
• Robert C. Martin. Clean Code - A Handbook of Agile
Software Craftsmanship. Prentice Hall. 2008.
• Andy Oram and Greg Wilson. Beautiful Code. O'Reilly.
2007.
• beaut.e(code) - exposição de arte por Bob Hanmer,
Karen Hanmer e Andrea Polli. Algum material pode ser
acessado em http://karenhanmer.com/gallery/?
gallery=beautecode
• Conversas e entrevistas
• Estes slides foram baseados no trabalho de João
Machini de Miranda - IME/USP
39. Obrigado!
Centro de Competência em Software Livre
IME/USP
Nosso sítio web está no endereço:
http://ccsl.ime.usp.br