After Width: | Height: | Size: 139 KiB |
After Width: | Height: | Size: 702 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 79 KiB |
After Width: | Height: | Size: 158 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 210 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 124 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 115 KiB |
After Width: | Height: | Size: 176 KiB |
After Width: | Height: | Size: 166 KiB |
After Width: | Height: | Size: 129 KiB |
After Width: | Height: | Size: 1.0 MiB |
After Width: | Height: | Size: 250 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 241 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 54 KiB |
@ -1,80 +1,35 @@
|
||||
<!doctype html> |
||||
<html lang="en"> |
||||
|
||||
<html> |
||||
<head> |
||||
<meta charset="utf-8"> |
||||
|
||||
<title>reveal.js – The HTML Presentation Framework</title> |
||||
|
||||
<meta name="description" content="A framework for easily creating beautiful presentations using HTML"> |
||||
<meta name="author" content="Hakim El Hattab"> |
||||
|
||||
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> |
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui"> |
||||
|
||||
<link rel="stylesheet" href="reveal.js/css/reveal.css"> |
||||
<link rel="stylesheet" href="reveal.js/css/theme/black.css" id="theme"> |
||||
|
||||
<!-- Code syntax highlighting --> |
||||
<link rel="stylesheet" href="reveal.js/lib/css/zenburn.css"> |
||||
|
||||
<!-- Printing and PDF exports --> |
||||
<script> |
||||
var link = document.createElement( 'link' ); |
||||
link.rel = 'stylesheet'; |
||||
link.type = 'text/css'; |
||||
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css'; |
||||
document.getElementsByTagName( 'head' )[0].appendChild( link ); |
||||
</script> |
||||
|
||||
<!--[if lt IE 9]> |
||||
<script src="lib/js/html5shiv.js"></script> |
||||
<![endif]--> |
||||
<meta charset="utf-8" /> |
||||
<link rel="stylesheet" href="htmlslides.css" title="" type=""> |
||||
<link rel="stylesheet" href="terminimal.css" title="" type=""> |
||||
<script src="htmlslides.js" charset="utf-8"></script> |
||||
<title> |
||||
PRESENTATION TITLE |
||||
</title> |
||||
</head> |
||||
|
||||
<body> |
||||
<div class="reveal"> |
||||
<div class="slides"> |
||||
<section> |
||||
<h1>Reveal.js</h1> |
||||
<h3>The HTML Presentation Framework</h3> |
||||
<p> |
||||
<small>Created by <a href="http://hakim.se">Hakim El Hattab</a> / <a href="http://twitter.com/hakimel">@hakimel</a></small> |
||||
</p> |
||||
</section> |
||||
</div> |
||||
|
||||
</div> |
||||
|
||||
<script src="reveal.js/lib/js/head.min.js"></script> |
||||
<script src="reveal.js/js/reveal.js"></script> |
||||
|
||||
<script> |
||||
|
||||
// Full list of configuration options available at: |
||||
// https://github.com/hakimel/reveal.js#configuration |
||||
Reveal.initialize({ |
||||
controls: true, |
||||
progress: true, |
||||
history: true, |
||||
center: true, |
||||
|
||||
transition: 'slide', // none/fade/slide/convex/concave/zoom |
||||
|
||||
// Optional reveal.js plugins |
||||
dependencies: [ |
||||
{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } }, |
||||
{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }, |
||||
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }, |
||||
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }, |
||||
{ src: 'plugin/zoom-js/zoom.js', async: true }, |
||||
{ src: 'plugin/notes/notes.js', async: true } |
||||
] |
||||
}); |
||||
|
||||
</script> |
||||
|
||||
<header> |
||||
<h1> |
||||
PRESENTATION TITLE |
||||
</h1> |
||||
</header> |
||||
|
||||
<section id="introduction"> |
||||
<h1> |
||||
ONE TITLE |
||||
</h1> |
||||
|
||||
<p> |
||||
content |
||||
</p> |
||||
</section> |
||||
|
||||
<section id="image"> |
||||
<h1>This one have an image</h1> |
||||
|
||||
<img src="_images/cargo-cult-smokey.jpg" alt="" class="center"> |
||||
</section> |
||||
</body> |
||||
</html> |
||||
|
@ -0,0 +1,788 @@
|
||||
<!doctype html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="utf-8"> |
||||
|
||||
<title>Com Licença!</title> |
||||
|
||||
<meta name="description" content="Por que você deveria aprender Rust"> |
||||
<meta name="author" content="Julio Biason"> |
||||
|
||||
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> |
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui"> |
||||
|
||||
<link rel="stylesheet" href="reveal.js/css/reveal.css"> |
||||
<link rel="stylesheet" href="reveal.js/css/theme/night.css" id="theme"> |
||||
|
||||
<!-- Code syntax highlighting --> |
||||
<link rel="stylesheet" href="reveal.js/lib/css/zenburn.css"> |
||||
|
||||
<!-- Printing and PDF exports --> |
||||
<script> |
||||
var link = document.createElement( 'link' ); |
||||
link.rel = 'stylesheet'; |
||||
link.type = 'text/css'; |
||||
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css'; |
||||
document.getElementsByTagName( 'head' )[0].appendChild( link ); |
||||
</script> |
||||
|
||||
<!--[if lt IE 9]> |
||||
<script src="lib/js/html5shiv.js"></script> |
||||
<![endif]--> |
||||
|
||||
<style type="text/css" media="screen"> |
||||
.happy { |
||||
color: yellow; |
||||
} |
||||
|
||||
.reveal section img { |
||||
border: none; |
||||
} |
||||
|
||||
.reveal ul.empty { |
||||
list-style: none inside; |
||||
padding: 1px; |
||||
} |
||||
|
||||
.revel ul.empty li { |
||||
display: block; |
||||
} |
||||
|
||||
.cursor { |
||||
background-color: #666; |
||||
color: white; |
||||
} |
||||
|
||||
img { |
||||
max-height: 90%; |
||||
} |
||||
|
||||
td.seen { |
||||
font-style: italic; |
||||
font-weight: bold; |
||||
} |
||||
|
||||
.semi-opaque { |
||||
background-color: rgba(0, 0, 0, 0.7); |
||||
padding: 20px; |
||||
} |
||||
</style> |
||||
</head> |
||||
|
||||
<body> |
||||
<div class="reveal"> |
||||
<div class="slides"> |
||||
<section> |
||||
<section data-background="_images/patrick-license.jpeg" data-header> |
||||
<h2 class="semi-opaque">Com Licença!</h2> |
||||
</section> |
||||
</section> |
||||
|
||||
<section data-background="_images/avatar-20170726.png"> |
||||
<div class="semi-opaque"> |
||||
<img src="_images/avatar-20170726.png" alt="Me" style="float:left;width:200px;" class="no-border"> |
||||
|
||||
<div> |
||||
<ul class="empty"> |
||||
<li>Júlio Biason</li> |
||||
<li><a href="https://functional.cafe/@juliobiason">https://functional.cafe/@juliobiason</a></li> |
||||
<li><a href="https://t.me/juliobiason">https://t.me/juliobiason</a></li> |
||||
<li>julio.biason@pm.me</li> |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/avatar-20170726.png"> |
||||
<div class="semi-opaque"> |
||||
<ul> |
||||
<li>Coordenador do meetup <strong>Rust in POA</strong></li> |
||||
<li>Co-coordenador do meetup <strong>PyTche</strong></li> |
||||
<li>Co-coordenador do meetup <strong>Design de Código</strong></li> |
||||
<li>Palestrante do <strong>Tchelinux</strong></li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/avatar-20170726.png"> |
||||
<div class="semi-opaque"> |
||||
<h3>JulioBiason.me</h3> |
||||
|
||||
<ul> |
||||
<li><a href="https://blog.juliobiason.me/">Blog</a></li> |
||||
<li><a href="https://presentations.juliobiason.me/">Presentations</a></li> |
||||
<li><a href="https://git.juliobiason.me/">Git</a></li> |
||||
<li><a href="https://resume.juliobiason.me/">CV/Resumé</a></li> |
||||
<li><a href="https://books.juliobiason.me/">Books</a></li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/copyright.jpeg" alt=""> |
||||
</section> |
||||
|
||||
<section data-background="_images/copyright.jpeg"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Copyright é "Direito autoral ou direito de autor é um conjunto de prerrogativas |
||||
conferidas por lei à pessoa física ou jurídica criadora da obra intelectual, |
||||
para que ela possa usufruir de quaisquer benefícios morais e patrimoniais |
||||
resultantes da exploração de suas criações." |
||||
</p> |
||||
|
||||
<p> |
||||
<a href="https://pt.wikipedia.org/wiki/Direito_autoral">Wikipedia</a> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/copyright.jpeg"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Tirando casos específicos, as licenças se baseam na |
||||
<strong>distribuição</strong> do conteúdo. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/copyright.jpeg"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
<strong>AVISO!</strong> |
||||
</p> |
||||
|
||||
<p> |
||||
Eu não sou advogado, partes legais não são o meu |
||||
forte. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/gpl-logo.png" alt=""> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<ul> |
||||
<li>GPL v2</li> |
||||
<li>GPL v3</li> |
||||
<li>LGPL (v2/v3)</li> |
||||
<li>AGPL (Affero General Public License ou GNU Affero General Public License)</li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>GPL v2</h2> |
||||
|
||||
<ol> |
||||
<li>Executar a aplicação para qualquer fim;</li> |
||||
<li>Estudar como a aplicação funciona e modificar (código derivado);</li> |
||||
<li>Distribuir cópias livremente;</li> |
||||
<li>Distribuir cópias das modificações.</li> |
||||
</ol> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>GPL v3</h2> |
||||
|
||||
<ol start="5"> |
||||
<li>Se houver criptografia, a chave deve ser publicada (tivolization)</li> |
||||
</ol> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Se eu estou fazendo um software específico para |
||||
uma empresa, posso licenciar como GPL? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<strong>Sim.</strong> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Se eu estou fazendo um software específico para uma |
||||
empresa, e licenciar pela GPL, posso cobrar por |
||||
isso? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<strong>Sim.</strong> |
||||
<span class="fragment"> |
||||
Apenas entregue os fontes junto. |
||||
</span> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Posso pegar um software GPL, fazer alterações |
||||
e cobrar por isso? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<strong>Sim.</strong> |
||||
<span class="fragment"> |
||||
Apenas entregue os fontes junto. |
||||
</span> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Posso pegar um software GPL, mudar o nome, |
||||
colocar meu nome nos Copyrights e distribuir? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
Sim, passando a ser considerado "código derivado". |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<strong> |
||||
Você não pode retirar o copyright atual. |
||||
</strong> |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
Você precisa entregar os fontes junto. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Se eu fizer um serviço web qualquer e licenciar |
||||
como GPL, eu tenho que distribuir os fontes para |
||||
todo mundo que acessar o site? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<strong>Não.</strong> |
||||
<span class="fragment">GPLv2/v3 cobrem apenas distribuição.</span> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Posso gerar uma aplicação mobile GPL e colocar no store? |
||||
</p> |
||||
|
||||
<p class="fragment">Não.</p> |
||||
|
||||
<p class="fragment"> |
||||
<em> |
||||
O problema é que quem está distribuindo o |
||||
aplicativo (Apple/Google) não tem uma área |
||||
para distribuição dos fontes e não querem |
||||
se envolver com isso. |
||||
</em> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Se eu usar uma biblioteca/framework qualquer |
||||
que está licenciado sob a GPL, o que acontece? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
Seu código passa a ser distribuído pela GPL. |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<em> |
||||
É considerado código derivado. |
||||
</em> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/lgpl-logo.png" alt=""> |
||||
</section> |
||||
|
||||
<section data-background="_images/lgpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>LGPL</h2> |
||||
|
||||
<p>GNU Lesser General Public License</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/lgpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p>Igual a GPL, mas remove a cláusula de código derivado.</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/lgpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Se eu usar uma biblioteca/framework qualquer |
||||
que está licenciado sob a LGPL, o que acontece? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
Nada. Você usa a biblioteca/framework. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/lgpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Se eu fizer um serviço web qualquer que use uma |
||||
biblioteca LGPL, eu tenho que distribuir os fontes |
||||
para todo mundo que acessar o site? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<strong>Não.</strong> |
||||
<span class="fragment">LGPLv2/v3 cobrem apenas distribuição.</span> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/agpl-logo.png" alt=""> |
||||
</section> |
||||
|
||||
<section data-background="_images/agpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<ol start="6"> |
||||
<li>Fontes devem ser fornecidos junto com o acesso.</li> |
||||
</ol> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/agpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Se eu fizer um serviço web qualquer e licenciar |
||||
como AGPL, eu tenho que distribuir os fontes para |
||||
todo mundo que acessar o site? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
Sim. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/agpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p>Se eu pegar um servidor web qualquer licenciado |
||||
sob a AGPL, eu tenho que distribuir os fontes para |
||||
todo mundo que acessar o site?</p> |
||||
|
||||
<p class="fragment"> |
||||
Sim. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Quem usa GPL?</h2> |
||||
|
||||
<ul> |
||||
<li>Linux¹</li> |
||||
<li>MySQL</li> |
||||
<li>BusyBox</li> |
||||
<li>VLC</li> |
||||
<li>JVM</li> |
||||
<li>OpenJDK</li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Linux</h2> |
||||
|
||||
<p> |
||||
"This program is free software; you can redistribute |
||||
it and/or modify it under the terms of the GNU |
||||
General Public License as published by the Free |
||||
Software Foundation; |
||||
<span class="fragment fade-out">either </span>version 2 |
||||
of the License<span class="fragment fade-out">, |
||||
or (at your option) any later version.</span>" |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/lgpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Quem usa LGPL?</h2> |
||||
|
||||
<img class="stretch" src="_images/github-lgpl.png" alt=""> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/lgpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Quem usa LGPL?</h2> |
||||
|
||||
<ul> |
||||
<li>Qt</li> |
||||
<li>Cedega</li> |
||||
<li>LibVLC</li> |
||||
<li>Lazarus</li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/agpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Quem usa AGPL?</h2> |
||||
|
||||
<ul> |
||||
<li>Gitorious</li> |
||||
<li>Mastodon</li> |
||||
<li>Nextcloud</li> |
||||
<li>ScyllaDB</li> |
||||
<li>Launchpad</li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/bsd.png" alt=""> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>BSD 0-Clause</h2> |
||||
|
||||
<p> |
||||
Permission to use, copy, modify, and/or distribute |
||||
this software for any purpose with or without fee |
||||
is hereby granted. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>BSD 2-Clause</h2> |
||||
|
||||
<p> |
||||
Redistribution and use in |
||||
<span class="fragment highlight-blue">source and binary |
||||
forms</span>, with or without modification, are |
||||
permitted provided that the following conditions are |
||||
met: |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>BSD 2-Clause</h2> |
||||
<ol> |
||||
<li> |
||||
Redistributions of source code must retain the |
||||
above copyright notice, this list of conditions |
||||
and the following disclaimer. |
||||
</li> |
||||
|
||||
<li> |
||||
Redistributions in binary form must reproduce |
||||
the above copyright notice, this list of |
||||
conditions and the following disclaimer in the |
||||
documentation and/or other materials provided |
||||
with the distribution. |
||||
</li> |
||||
</ol> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>BSD 3-Clause</h2> |
||||
|
||||
<ol start="3"> |
||||
<li> |
||||
Neither the name of the <organization> nor the |
||||
names of its contributors may be used to |
||||
endorse or promote products derived from this |
||||
software without specific prior written |
||||
permission. |
||||
</li> |
||||
</ol> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>BSD 4-Clause</h2> |
||||
|
||||
<ol start="4"> |
||||
<li> |
||||
All advertising materials mentioning features |
||||
or use of this software must display the |
||||
following acknowledgement: This product |
||||
includes software developed by the |
||||
<organization>. |
||||
</li> |
||||
</ol> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Se eu estou fazendo um software específico para |
||||
uma empresa, posso licenciar como BSD? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<strong>Sim.</strong> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Posso pegar um software BSD, mudar o nome, |
||||
colocar meu nome nos Copyrights e distribuir? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
Sim. |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<strong> |
||||
Você não pode retirar o copyright atual. |
||||
</strong> |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<strong> |
||||
Você não precisa entregar os fontes. |
||||
</strong> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Posso gerar uma aplicação mobile BSD e colocar no store? |
||||
</p> |
||||
|
||||
<p class="fragment">Sim.</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Se eu fizer um serviço web qualquer que use uma |
||||
biblioteca BSD, eu tenho que distribuir os fontes |
||||
para todo mundo que acessar o site? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
Não. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Quem usa BSD?</h2> |
||||
|
||||
<ul> |
||||
<li>FreeBSD (2-clause)</li> |
||||
<li>NetBSD (2-clause)</li> |
||||
<li>OpenBSD (0-clause, ISC)</li> |
||||
<li>Anaconda (3-clause)</li> |
||||
<li>Django (3-clause)</li> |
||||
<li>Flask (0-clause)</li> |
||||
<li>go (3-clause)</li> |
||||
<li>Memcached (3-clause)</li> |
||||
<li>PHPUnit (3-clause)</li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/MIT_logo.svg" alt=""> |
||||
</section> |
||||
|
||||
<section data-background="_images/MIT_logo.svg"> |
||||
<div class="semi-opaque"> |
||||
<h2>MIT</h2> |
||||
|
||||
<p> |
||||
The above copyright notice and this permission |
||||
notice shall be included in all copies or |
||||
substantial portions of the Software. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/MIT_logo.svg"> |
||||
<div class="semi-opaque"> |
||||
<h2>Quem usa MIT?</h2> |
||||
|
||||
<ul> |
||||
<li>.NET core</li> |
||||
<li>AngularJS</li> |
||||
<li>React²</li> |
||||
<li>Babel</li> |
||||
<li>Godot</li> |
||||
<li>Lua</li> |
||||
<li>Pilhas de *.js</li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/MIT_logo.svg"> |
||||
<div class="semi-opaque"> |
||||
<h2>React</h2> |
||||
|
||||
<p> |
||||
Em 2017, o Facebook mudou a licença do React para |
||||
que, caso a empresa seja processada <em>por |
||||
qualquer motivo</em>, o litigiante perde o direito |
||||
de uso do produto. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/apache-license.png" alt=""> |
||||
</section> |
||||
|
||||
<section data-background="_images/apache-license.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Apache 2.0</h2> |
||||
|
||||
<img src="_images/apache-license-2.0.png" alt="" style="max-height:5%"> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/apache-license.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Apache 2.0</h2> |
||||
|
||||
<p> |
||||
Subject to the terms and conditions of this |
||||
License, each Contributor hereby grants to You a |
||||
perpetual, worldwide, non-exclusive, no-charge, |
||||
royalty-free, irrevocable copyright license to |
||||
reproduce, prepare Derivative Works of, publicly |
||||
display, publicly perform, sublicense, and |
||||
distribute the Work and such Derivative Works in |
||||
Source or Object form. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/apache-license.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Quem usa Apache?</h2> |
||||
|
||||
<ul> |
||||
<li>Android</li> |
||||
<li>Apache *</li> |
||||
<li>Elixir</li> |
||||
<li>IntelliJ IDEA</li> |
||||
<li>Kotlin</li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section> |
||||
<h2>E se eu não colocar nenhuma licença?</h2> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/public-domain.png" alt=""> |
||||
</section> |
||||
|
||||
<section data-background="_images/public-domain.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Public domain</h2> |
||||
|
||||
<p> |
||||
The public domain consists of all the creative work |
||||
to which no exclusive intellectual property rights |
||||
apply. Those rights may have expired, been |
||||
forfeited, expressly waived, or may be |
||||
inapplicable. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background='_images/thats-all-folks.jpg'> |
||||
<div class="semi-opaque"> |
||||
<ul class="empty"> |
||||
<li><a href="https://functional.cafe/@juliobiason">https://functional.cafe/@juliobiason</a></li> |
||||
<li><a href="https://t.me/juliobiason">https://t.me/juliobiason</a></li> |
||||
<li>julio.biason@pm.me</li> |
||||
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
</div> |
||||
</div> |
||||
|
||||
<script src="reveal.js/lib/js/head.min.js"></script> |
||||
<script src="reveal.js/js/reveal.js"></script> |
||||
|
||||
<script> |
||||
// Full list of configuration options available at: |
||||
// https://github.com/hakimel/reveal.js#configuration |
||||
Reveal.initialize({ |
||||
controls: true, |
||||
progress: true, |
||||
history: true, |
||||
center: true, |
||||
// showNotes: true, |
||||
|
||||
transition: 'fade', // none/fade/slide/convex/concave/zoom |
||||
|
||||
// Optional reveal.js plugins |
||||
dependencies: [ |
||||
{ src: 'reveal.js/lib/js/classList.js', condition: function() { return !document.body.classList; } }, |
||||
{ src: 'reveal.js/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }, |
||||
{ src: 'reveal.js/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }, |
||||
{ src: 'reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }, |
||||
{ src: 'reveal.js/plugin/zoom-js/zoom.js', async: true }, |
||||
{ src: 'reveal.js/plugin/notes/notes.js', async: true } |
||||
] |
||||
}); |
||||
</script> |
||||
|
||||
</body> |
||||
</html> |
@ -0,0 +1,157 @@
|
||||
/* Colours and fonts */ |
||||
|
||||
body { |
||||
font-family: |
||||
"Source Sans Pro","Trebuchet MS","Lucida Grande", |
||||
"Bitstream Vera Sans","Helvetica Neue","sans-serif"; |
||||
|
||||
background-color: white; |
||||
color: #293c4b; |
||||
} |
||||
|
||||
h1, h2 { |
||||
background-color: #60b5cc; |
||||
color: white; |
||||
} |
||||
|
||||
a { color: #60b5cc; } |
||||
|
||||
tt,code { |
||||
background-color: #2d2d2d; |
||||
color: #66cccc; |
||||
} |
||||
|
||||
code em { color: #f33; } |
||||
code i { color: #0f0; } |
||||
|
||||
|
||||
/* Document structure */ |
||||
|
||||
* { |
||||
box-sizing: border-box; |
||||
} |
||||
|
||||
html,body { |
||||
padding: 0vh; |
||||
margin: 0vh; |
||||
} |
||||
|
||||
body { |
||||
font-size: 5vh; |
||||
} |
||||
|
||||
section,header { |
||||
display: flex; |
||||
flex-direction: column; |
||||
height: 100vh; |
||||
margin: 5vh 4vw; |
||||
break-after: always |
||||
} |
||||
|
||||
header div { |
||||
text-align: center; |
||||
font-size: 90%; |
||||
} |
||||
|
||||
h1,h2 |
||||
{ |
||||
padding: 1vh; |
||||
text-align: center; |
||||
} |
||||
|
||||
h1 { |
||||
margin-top: 15vh; |
||||
margin-bottom: 15vh; |
||||
font-size: 180%; |
||||
} |
||||
|
||||
h2 { |
||||
font-size: 150%; |
||||
margin-bottom: 2vh; |
||||
} |
||||
|
||||
a { |
||||
text-decoration: inherit; |
||||
} |
||||
|
||||
p { |
||||
margin-bottom: 2vh; |
||||
margin-top: 1vh; |
||||
} |
||||
|
||||
section > ul { |
||||
margin-left: 8vw; |
||||
margin-top: 2vh; |
||||
} |
||||
|
||||
section > ul ul { |
||||
margin-top: 2vh; |
||||
} |
||||
|
||||
li { |
||||
margin-bottom: 1vh; |
||||
} |
||||
|
||||
li ul li { |
||||
font-size: 80%; |
||||
} |
||||
|
||||
tt,code { |
||||
white-space: pre; |
||||
font-size: 70%; |
||||
overflow: auto; |
||||
} |
||||
|
||||
tt { |
||||
border-radius: 0.3vw; |
||||
padding: 0.8vw; |
||||
} |
||||
|
||||
code { |
||||
display: block; |
||||
border-radius: 0.5vw; |
||||
padding: 1.4vw; |
||||
} |
||||
|
||||
code em,i { |
||||
font-style: normal; |
||||
} |
||||
|
||||
div.cc { |
||||
display: flex; |
||||
flex-direction: row-reverse; |
||||
align-items: center; |
||||
font-size: 10px; |
||||
height: 31px; |
||||
} |
||||
|
||||
div.cc img { |
||||
float: right; |
||||
width: 88px; |
||||
height: 31px; |
||||
border-width: 0px; |
||||
height: 31px; |
||||
margin-left: 1vh; |
||||
} |
||||
|
||||
.moreinfo { |
||||
display: grid; |
||||
grid-template-columns: auto auto; |
||||
align-items: center; |
||||
font-size: 4vh; |
||||
width: 80%; |
||||
margin: auto; |
||||
} |
||||
|
||||
.moreinfo h3 { |
||||
text-align: right; |
||||
font-weight: 500; |
||||
margin-right: 1vw; |
||||
} |
||||
|
||||
.moreinfo > div { |
||||
display: flex; |
||||
flex-direction: column; |
||||
align-items: left; |
||||
font-size: 90%; |
||||
} |
@ -0,0 +1,210 @@
|
||||
"use strict"; |
||||
|
||||
/* htmlslides |
||||
|
||||
Info and examples: https://gitlab.com/andybalaam/htmlslides
|
||||
|
||||
Structure your HTML like this: |
||||
|
||||
<html> |
||||
<head> |
||||
<meta charset="utf-8"/> |
||||
<link rel="stylesheet" href="htmlslides.css"> |
||||
<script src="htmlslides.js"></script> |
||||
<title>How to Surf the Mist</title> |
||||
</head> |
||||
|
||||
<body> |
||||
<header> |
||||
<h1>How to Surf the Mist</h1> |
||||
<!-- ... some stuff ... --> |
||||
</header> |
||||
<section id="contents"> |
||||
<h2>Contents</h2> |
||||
<ul><li><a href="#breathin">First, breath in</a></ul> |
||||
<!-- ... some stuff ... --> |
||||
</section> |
||||
<section id="breathin"> |
||||
<h2>First, breath in</h2> |
||||
<!-- ... some stuff ... --> |
||||
</section> |
||||
<!-- ... more slides ... --> |
||||
</body> |
||||
</html> |
||||
|
||||
Open the Developer Tools in your browser and check the Console output. If |
||||
htmlslides was unable to understand your HTML, it will print error messages |
||||
there. |
||||
|
||||
You can disable mouse-clicking by including htmlslides.js like this: |
||||
|
||||
<script src="htmlslides.js"></script> |
||||
<script> |
||||
htmlslides.config.mouse_moves_pages = false; |
||||
</script> |
||||
|
||||
*/ |
||||
|
||||
let htmlslides = {} |
||||
|
||||
htmlslides.config = { |
||||
"mouse_moves_pages": true |
||||
}; |
||||
|
||||
(function() { |
||||
|
||||
let slide_anchors; |
||||
let current_slide; |
||||
let header; |
||||
let sections; |
||||
|
||||
const KEY_PAGEUP = 33; |
||||
const KEY_PAGEDOWN = 34; |
||||
const KEY_END = 35; |
||||
const KEY_HOME = 36; |
||||
const KEY_LEFT = 37; |
||||
const KEY_RIGHT = 39; |
||||
|
||||
function on_load() { |
||||
window.addEventListener("scroll", on_scroll); |
||||
document.addEventListener("keydown", on_key); |
||||
document.body.addEventListener('click', on_left_click); |
||||
document.body.addEventListener('contextmenu', on_right_click); |
||||
|
||||
header = document.getElementsByTagName("header")[0]; |
||||
sections = document.getElementsByTagName("section"); |
||||
slide_anchors = scan_slides(); |
||||
current_slide = find_slide(slide_anchors, window.location.hash); |
||||
} |
||||
|
||||
function is_interactive_element(element) { |
||||
let tag = element.tagName.toLowerCase(); |
||||
return (tag === "a" || tag === "button" || tag === "input"); |
||||
} |
||||
|
||||
function on_left_click(event) { |
||||
if (!htmlslides.config.mouse_moves_pages) { |
||||
return; |
||||
} |
||||
if (is_interactive_element(event.target)) { |
||||
return; |
||||
} |
||||
event.preventDefault(); |
||||
return go_to_slide(current_slide + 1); |
||||
} |
||||
|
||||
function on_right_click(event) { |
||||
if (!htmlslides.config.mouse_moves_pages) { |
||||
return; |
||||
} |
||||
if (is_interactive_element(event.target)) { |
||||
return; |
||||
} |
||||
event.preventDefault(); |
||||
return go_to_slide(current_slide - 1); |
||||
} |
||||
|
||||
function on_key(event) { |
||||
if (event.altKey || event.ctrlKey || event.shiftKey) { |
||||
return; |
||||
} |
||||
|
||||
switch(event.keyCode) { |
||||
case KEY_LEFT: |
||||
case KEY_PAGEUP: |
||||
event.preventDefault(); |
||||
return go_to_slide(current_slide - 1); |
||||
case KEY_RIGHT: |
||||
case KEY_PAGEDOWN: |
||||
event.preventDefault(); |
||||
return go_to_slide(current_slide + 1); |
||||
case KEY_HOME: |
||||
event.preventDefault(); |
||||
return go_to_slide(0); |
||||
case KEY_END: |
||||
event.preventDefault(); |
||||
return go_to_last_slide(); |
||||
} |
||||
} |
||||
|
||||
function on_scroll() { |
||||
if (isVisible(header)) { |
||||
history.replaceState(null, null, ' '); |
||||
current_slide = 0; |
||||
return; |
||||
} |
||||
|
||||
for (let section of sections) { |
||||
if (isVisible(section)) { |
||||
let anchor = "#" + section.id; |
||||
history.replaceState(null, null, anchor); |
||||
current_slide = find_slide(slide_anchors, anchor); |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
|
||||
function isVisible(obj) { |
||||
let rect = obj.getBoundingClientRect(); |
||||
return (rect.top >= 0 && rect.top < window.innerHeight / 2); |
||||
} |
||||
|
||||
function go_to_last_slide() { |
||||
go_to_slide(slide_anchors.length - 1); |
||||
} |
||||
|
||||
function go_to_slide(n) { |
||||
current_slide = n; |
||||
|
||||
if (current_slide < 0) { |
||||
current_slide = 0; |
||||
} else if (current_slide >= slide_anchors.length) { |
||||
current_slide = slide_anchors.length - 1; |
||||
} |
||||
|
||||
if (current_slide === 0) { |
||||
if (header) { |
||||
header.scrollIntoView(); |
||||
} |
||||
window.scrollTo(0, 0); |
||||
history.replaceState(null, null, ' '); |
||||
} else { |
||||
window.location.hash = slide_anchors[current_slide]; |
||||
} |
||||
} |
||||
|
||||
function find_slide(slide_anchors, anchor) { |
||||
let ret = slide_anchors.indexOf(anchor); |
||||
if (ret === -1) { |
||||
ret = 0; |
||||
} |
||||
return ret; |
||||
} |
||||
|
||||
function scan_slides() { |
||||
let ret = [""]; |
||||
|
||||
for (let section of sections) { |
||||
ret.push(find_anchor(section)); |
||||
} |
||||
|
||||
return ret; |
||||
} |
||||
|
||||
function find_anchor(section) { |
||||
if (section.id === "") { |
||||
fail("This section does not have an id='blah' attribute!:", section); |
||||
} |
||||
return "#" + section.id; |
||||
} |
||||
|
||||
function fail(msg, obj) { |
||||
console.error(`htmlslides error: ${msg}`); |
||||
if (obj) { |
||||
console.error(obj); |
||||
} |
||||
} |
||||
|
||||
window.addEventListener("load", on_load); |
||||
|
||||
}()); |
@ -1 +1 @@
|
||||
[{"image": "_images/tdd-kentbeck-book.jpg", "changed": "2019-02-13 10:10:13", "presentation": "unit-in-unittests-2.html", "title": "\"Unit\" em \"Unit Tests\""}, {"image": "_images/vim.png", "changed": "2019-02-13 10:10:13", "presentation": "gramatica-vim.html", "title": "A Gram\u00e1tica do VIM"}, {"image": "_images/ajax-sosp-cors-csrf.png", "changed": "2019-02-13 10:10:13", "presentation": "ajax-sosp-cors-csrf.html", "title": "AJAX / SOSP / CORS / CSRF"}, {"image": "_images/activitypub-logo.png", "changed": "2019-12-11 10:43:14", "presentation": "activitypub.html", "title": "ActivityPub"}, {"image": "_images/cargo-cult.jpg", "changed": "2019-02-15 09:45:46", "presentation": "cargo-cult.html", "title": "Cargo Cult"}, {"image": "_images/django-allauth.png", "changed": "2019-02-13 10:10:13", "presentation": "django-full.html", "title": "Django"}, {"image": "_images/django-allauth.png", "changed": "2019-02-13 10:10:13", "presentation": "django.html", "title": "Entendendo Django"}, {"image": "_images/django-rest.png", "changed": "2019-02-13 10:10:13", "presentation": "django-rest.html", "title": "Entendendo Django REST Framework"}, {"image": "_images/tdd-kentbeck-book.jpg", "changed": "2019-11-14 11:27:47", "presentation": "filosofando-testes.html", "title": "Filosofando sobre Testes"}, {"image": "_images/flask.png", "changed": "2019-02-13 10:10:13", "presentation": "flask-40mins.html", "title": "Flask em 40 Minutos ou Menos"}, {"image": "_images/streamprocessing-flink.png", "changed": "2019-09-12 14:52:26", "presentation": "flink.html", "title": "Flink"}, {"image": "_images/python.jpg", "changed": "2019-11-14 11:27:47", "presentation": "fugindo-com-python-2.html", "title": "Fugindo para as Colinas Com Python"}, {"image": "_images/Sketch27014711.png", "changed": "2019-02-13 10:10:13", "presentation": "gitsvn.html", "title": "GIT + GIT-SVN"}, {"image": "_images/git-workflow-gitflow.png", "changed": "2019-02-13 10:10:13", "presentation": "gitflow.html", "title": "GIT Flow"}, {"image": "_images/rust.png", "changed": "2019-02-15 09:45:46", "presentation": "rust-legal.html", "title": "O Que Rust Tem de Legal"}, {"image": "_images/tchelinux.png", "changed": "2019-12-11 10:43:14", "presentation": "tchelinux.html", "title": "O Que \u00c9 o Tchelinux?"}, {"image": "_images/osi_keyhole_300X300_90ppi_0.png", "changed": "2019-12-11 11:03:36", "presentation": "porque-como-opensource.html", "title": "Por que e Como Participar de Projetos Open Source"}, {"image": "_images/rust-ferris.png", "changed": "2019-12-11 10:43:14", "presentation": "porque-rust.html", "title": "Porque Voc\u00ea Deveria Aprender Rust"}, {"image": "_images/poa.jpg", "changed": "2019-02-13 10:10:13", "presentation": "pypoa.html", "title": "PyPoa 2014"}, {"image": "_images/snake-six.jpg", "changed": "2019-02-13 10:10:13", "presentation": "python23six.html", "title": "Python 2 + 3 = Six"}, {"image": "_images/python.jpg", "changed": "2019-02-13 10:10:13", "presentation": "python36.html", "title": "Python 3.6"}, {"image": "_images/Seascapeshd.png", "changed": "2019-02-13 10:10:13", "presentation": "rest.html", "title": "ReST"}, {"image": "_images/rustlatam.png", "changed": "2019-04-16 18:16:30", "presentation": "rustlatam-2019.html", "title": "Rust Latam 2019"}, {"image": "_images/rust-ferris.png", "changed": "2019-12-11 10:43:14", "presentation": "quick-rust.html", "title": "R\u00e1pida Introdu\u00e7\u00e3o ao Rust"}, {"image": "_images/Eau_Rouge_1997.jpg", "changed": "2019-02-13 10:10:13", "presentation": "spa.html", "title": "SPA"}, {"image": "_images/streamprocessing.jpg", "changed": "2019-12-11 11:03:36", "presentation": "intro-stream-processing.html", "title": "Uma N\u00e3o-Gentil Introdu\u00e7\u00e3o ao Stream Processing"}] |
||||
[{"presentation": "unit-in-unittests-2.html", "title": "\"Unit\" em \"Unit Tests\"", "image": "_images/tdd-kentbeck-book.jpg", "changed": "2020-03-06 12:51:29"}, {"presentation": "gramatica-vim.html", "title": "A Gram\u00e1tica do VIM", "image": "_images/vim.png", "changed": "2020-03-06 12:51:29"}, {"presentation": "ajax-sosp-cors-csrf.html", "title": "AJAX / SOSP / CORS / CSRF", "image": "_images/ajax-sosp-cors-csrf.png", "changed": "2018-10-20 08:23:12"}, {"presentation": "activitypub.html", "title": "ActivityPub", "image": "_images/activitypub-logo.png", "changed": "2020-03-06 12:51:29"}, {"presentation": "cargo-cult.html", "title": "Cargo Cult", "image": "_images/cargo-cult.jpg", "changed": "2020-03-06 12:51:29"}, {"presentation": "com-licenca.html", "title": "Com Licen\u00e7a!", "image": "_images/patrick-license.jpeg", "changed": "2020-03-06 12:51:29"}, {"presentation": "django-full.html", "title": "Django", "image": "_images/django-allauth.png", "changed": "2018-10-20 08:23:12"}, {"presentation": "django.html", "title": "Entendendo Django", "image": "_images/django-allauth.png", "changed": "2018-10-20 08:23:12"}, {"presentation": "django-rest.html", "title": "Entendendo Django REST Framework", "image": "_images/django-rest.png", "changed": "2018-10-20 08:23:12"}, {"presentation": "filosofando-testes.html", "title": "Filosofando sobre Testes", "image": "_images/tdd-kentbeck-book.jpg", "changed": "2020-03-06 12:51:29"}, {"presentation": "flask-40mins.html", "title": "Flask em 40 Minutos ou Menos", "image": "_images/flask.png", "changed": "2020-03-06 12:51:29"}, {"presentation": "flink.html", "title": "Flink", "image": "_images/streamprocessing-flink.png", "changed": "2020-03-06 12:51:29"}, {"presentation": "fugindo-com-python-2.html", "title": "Fugindo para as Colinas Com Python", "image": "_images/python.jpg", "changed": "2020-03-06 12:51:29"}, {"presentation": "gitsvn.html", "title": "GIT + GIT-SVN", "image": "_images/Sketch27014711.png", "changed": "2018-10-20 08:23:12"}, {"presentation": "gitflow.html", "title": "GIT Flow", "image": "_images/git-workflow-gitflow.png", "changed": "2018-10-20 08:23:12"}, {"presentation": "rust-legal.html", "title": "O Que Rust Tem de Legal", "image": "_images/rust.png", "changed": "2020-03-06 12:51:29"}, {"presentation": "tchelinux.html", "title": "O Que \u00c9 o Tchelinux?", "image": "_images/tchelinux.png", "changed": "2020-03-06 12:51:29"}, {"presentation": "porque-como-opensource.html", "title": "Por que e Como Participar de Projetos Open Source", "image": "_images/osi_keyhole_300X300_90ppi_0.png", "changed": "2020-03-06 12:51:29"}, {"presentation": "porque-rust.html", "title": "Porque Voc\u00ea Deveria Aprender Rust", "image": "_images/rust-ferris.png", "changed": "2020-03-06 12:51:29"}, {"presentation": "pycaxias2020.html", "title": "PyCaxias 2020", "image": "_images/pycaxias.png", "changed": "2020-03-06 12:51:29"}, {"presentation": "pypoa.html", "title": "PyPoa 2014", "image": "_images/poa.jpg", "changed": "2018-10-20 08:23:12"}, {"presentation": "python23six.html", "title": "Python 2 + 3 = Six", "image": "_images/snake-six.jpg", "changed": "2020-03-06 12:51:29"}, {"presentation": "python36.html", "title": "Python 3.6", "image": "_images/python.jpg", "changed": "2020-03-06 12:51:29"}, {"presentation": "rest.html", "title": "ReST", "image": "_images/Seascapeshd.png", "changed": "2018-10-20 08:23:12"}, {"presentation": "rustlatam-2019.html", "title": "Rust Latam 2019", "image": "_images/rustlatam.png", "changed": "2020-03-06 12:51:29"}, {"presentation": "quick-rust.html", "title": "R\u00e1pida Introdu\u00e7\u00e3o ao Rust", "image": "_images/rust-ferris.png", "changed": "2020-03-06 12:51:29"}, {"presentation": "spa.html", "title": "SPA", "image": "_images/Eau_Rouge_1997.jpg", "changed": "2018-10-20 08:23:12"}, {"presentation": "intro-stream-processing.html", "title": "Uma N\u00e3o-Gentil Introdu\u00e7\u00e3o ao Stream Processing", "image": "_images/streamprocessing.jpg", "changed": "2020-03-06 12:51:29"}] |
@ -0,0 +1,428 @@
|
||||
<!doctype html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="utf-8"> |
||||
|
||||
<title>PyCaxias 2020</title> |
||||
|
||||
<meta name="description" content="Por que você deveria aprender Rust"> |
||||
<meta name="author" content="Julio Biason"> |
||||
|
||||
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> |
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui"> |
||||
|
||||
<link rel="stylesheet" href="reveal.js/css/reveal.css"> |
||||
<link rel="stylesheet" href="reveal.js/css/theme/night.css" id="theme"> |
||||
|
||||
<!-- Code syntax highlighting --> |
||||
<link rel="stylesheet" href="reveal.js/lib/css/zenburn.css"> |
||||
|
||||
<!-- Printing and PDF exports --> |
||||
<script> |
||||
var link = document.createElement( 'link' ); |
||||
link.rel = 'stylesheet'; |
||||
link.type = 'text/css'; |
||||
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css'; |
||||
document.getElementsByTagName( 'head' )[0].appendChild( link ); |
||||
</script> |
||||
|
||||
<!--[if lt IE 9]> |
||||
<script src="lib/js/html5shiv.js"></script> |
||||
<![endif]--> |
||||
|
||||
<style type="text/css" media="screen"> |
||||
.happy { |
||||
color: yellow; |
||||
} |
||||
|
||||
.reveal section img { |
||||
border: none; |
||||
} |
||||
|
||||
.reveal ul.empty { |
||||
list-style: none inside; |
||||
} |
||||
|
||||
.revel ul.empty li { |
||||
display: block; |
||||
} |
||||
|
||||
.cursor { |
||||
background-color: #666; |
||||
color: white; |
||||
} |
||||
|
||||
img { |
||||
max-height: 90%; |
||||
} |
||||
|
||||
td.seen { |
||||
font-style: italic; |
||||
font-weight: bold; |
||||
} |
||||
|
||||
.semi-opaque { |
||||
background-color: rgba(0, 0, 0, 0.7); |
||||
} |
||||
</style> |
||||
</head> |
||||
|
||||
<body> |
||||
<div class="reveal"> |
||||
<div class="slides"> |
||||
<section> |
||||
<section data-background="_images/pycaxias.png" data-header> |
||||
<h2 class="semi-opaque">PyCaxias 2020</h2> |
||||
</section> |
||||
</section> |
||||
|
||||
<section> |
||||
<img src="_images/avatar-20170726.png" alt="Me" style="float:left;width:200px;" class="no-border"> |
||||
|
||||
<div> |
||||
<ul class="empty"> |
||||
<li>Júlio Biason</li> |
||||
<li><a href="https://functional.cafe/@juliobiason">https://functional.cafe/@juliobiason</a></li> |
||||
<li><a href="https://t.me/juliobiason">https://t.me/juliobiason</a></li> |
||||
<li>julio.biason@pm.me</li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section> |
||||
<ul> |
||||
<li>Coordenador do meetup <strong>Rust in POA</strong></li> |
||||
<li>Co-coordenador do meetup <strong>PyTche</strong></li> |
||||
<li>Co-coordenador do meetup <strong>Design de Código</strong></li> |
||||
<li>Palestrante do <strong>Tchelinux</strong></li> |
||||
</ul> |
||||
</section> |
||||
|
||||
<section> |
||||
<h3>JulioBiason.me</h3> |
||||
|
||||
<ul> |
||||
<li><a href="https://blog.juliobiason.me/">Blog</a></li> |
||||
<li><a href="https://presentations.juliobiason.me/">Presentations</a></li> |
||||
<li><a href="https://git.juliobiason.me/">Git</a></li> |
||||
<li><a href="https://resume.juliobiason.me/">CV/Resumé</a></li> |
||||
<li><a href="https://books.juliobiason.me/">Books</a></li> |
||||
</ul> |
||||
</section> |
||||
|
||||
<section> |
||||
<h3>"Coisas Que Eu Aprendi Na Marra (Em 30 Anos de Desenvolvimento de Software)</h3> |
||||
<h3 class="fragment">😞</h3> |
||||
</section> |
||||
|
||||
<section> |
||||
<h2>Python: Passado, Presente e Futuro</h2> |
||||
|
||||
<p class="fragment">... na minha visão</p> |
||||
</section> |
||||
|
||||
<section data-background="_images/past.jpg"> |
||||
<h2 class="semi-opaque">O Passado</h2> |
||||
</section> |
||||
|
||||
<section> |
||||
<h3>Python 1.5</h3> |
||||
<img class="stretch" src="_images/python15.png" alt=""> |
||||
</section> |
||||
|
||||
<section> |
||||
<h3>Python 1.5 (1998)</h3> |
||||
<ul> |
||||
<li><code>assert</code></li> |
||||
<li>raw strings (<code>r''</code>)</li> |
||||
<li>Novos métodos de dicionários: <code>.clear()</code>, <code>.copy()</code>, <code>.update()</code>, <code>.get()</code></li> |
||||
</ul> |
||||
</section> |
||||
|
||||
<section> |
||||
<p><code>[expression] and [on_true] or [on_false]</code></p> |
||||
</section> |
||||
|
||||
<section> |
||||
<p>"Vamos fazer um <i>browser</i> em Python!"</p> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/tilefile.jpg" alt=""> |
||||
|
||||
</section> |
||||
|
||||
<section> |
||||
<ul> |
||||
<li>Web Server</li> |
||||
<li class="fragment">Storage: <a href="https://docs.python.org/3/library/pickle.html?highlight=pickle#module-pickle">Pickle</a></li> |
||||
<li class="fragment">Atualizado storage: MySQL</li> |
||||
<li class="fragment">Criada toda uma camada para que o carregamento parecesse com leitura de pickles</li> |
||||
</ul> |
||||
|
||||
<p class="fragment">Django 1.0: 2008</p> |
||||
</section> |
||||
|
||||
<section> |
||||
<p>"É mais fácil pra mim vender AJAX e Rails do que Flash e Python."</p> |
||||
<p>-- Tilefile CEO</p> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/iplenix.png" alt=""> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/consuela.jpeg" alt=""> |
||||
</section> |
||||
|
||||
<section data-background="_images/present.jpg"> |
||||
<h2 class="semi-opaque">O Presente</h2> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/the-witch-is-dead.png" alt=""> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/python27-clock.png" alt=""> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/python-usage.png" alt=""> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/ipython.png" alt=""> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/ipython-notebook.png" alt=""> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/jupyter.jpeg" alt=""> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/scikit.jpeg" alt=""> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/python-datascience.png" alt=""> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/guido-no-bdfl.png" alt=""> |
||||
</section> |
||||
|
||||
<section data-background="_images/back-to-the-future.jpeg"> |
||||
<h2 class="semi-opaque">O Futuro</h2> |
||||
</section> |
||||
|
||||
<section> |
||||
<p>You can't connect the dots looking forward; you can only connect them looking backwards.</p> |
||||
<p>-- Steve Jobs</p> |
||||
</section> |
||||
|
||||
<section> |
||||
<p>No man is an island,<br> |
||||
Entire of itself,<br> |
||||
Every man is a piece of the continent,<br> |
||||
A part of the main.</p> |
||||
<p>-- John Donne</p> |
||||
</section> |
||||
|
||||
<section> |
||||
<h2>Type Hinting: Love it</h2> |
||||
</section> |
||||
|
||||
<section> |
||||
<p>"Mas Python não tem tipos!"</p> |
||||
|
||||
<pre class="fragment"><code data-trim> |
||||
In [1]: type(object) |
||||
Out[1]: type |
||||
</code></pre> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/isso-nao-prova-nada.png" alt=""> |
||||
</section> |
||||
|
||||
<section> |
||||
<pre><code data-trim> |
||||
In [4]: type("a") |
||||
Out[4]: str |
||||
|
||||
In [5]: type(str) |
||||
Out[5]: type |
||||
</code></pre> |
||||
</section> |
||||
|
||||
<section> |
||||
<pre><code data-trim> |
||||
def to_fahrenheit(temperature: int) -> int: |
||||
</code></pre> |
||||
</section> |
||||
|
||||
<section> |
||||
<pre><code data-trim> |
||||
@dataclass |
||||
class Celcius: |
||||
temperature: int |
||||
|
||||
|
||||
def to_fahrenheit(temperature: Celcius) -> int: |
||||
</code></pre> |
||||
</section> |
||||
|
||||
<section> |
||||
<h2>mypy</h2> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/tweet-python2020.png" alt=""> |
||||
</section> |
||||
|
||||
<section> |
||||
<h2>??</h2> |
||||
|
||||
<p class="fragment">None-aware operator (PEP 505)</p> |
||||
|
||||
<pre class="fragment"><code data-trim> |
||||
a ??= 'value' |
||||
</code></pre> |
||||
|
||||
<pre class="fragment"><code data-trim> |
||||
a = a if a is not None else 'value' |
||||
</code></pre> |
||||
</section> |
||||
|
||||
<section> |
||||
<h2>@</h2> |
||||
|
||||
<p class="fragment">Dedicated infix operator for matrix multiplication (PEP 465)</p> |
||||
</section> |
||||
|
||||
<section> |
||||
<h2>|</h2> |
||||
|
||||
<p class="fragment">Union Operator to Dict (PEP 584)</p> |
||||
|
||||
<pre class="fragment"><code data-trim> |
||||
dict1.update(dict2) # in-place |
||||
</code></pre> |
||||
|
||||
<pre class="fragment"><code data-trim> |
||||
dict3 = dict1 | dict2 |
||||
</code></pre> |
||||
|
||||
<pre class="fragment"><code data-trim> |
||||
dict1 |= dict2 # same as .update() |
||||
</code></pre> |
||||
</section> |
||||
|
||||
<section> |
||||
<h2>:=</h2> |
||||
|
||||
<p class="fragment">Assignment Operator (PEP 572)</p> |
||||
|
||||
<pre class="fragment"><code data-trim> |
||||
while chunk := file.read(8192): |
||||
process(chunk) |
||||
</code></pre> |
||||
</section> |
||||
|
||||
<section> |
||||
<h2>@dict[key].attr[0].decorator</h2> |
||||
|
||||
<p class="fragment">Relaxing Grammar Restrictions On Decorators (PEP 614)</p> |
||||
</section> |
||||
|
||||
<section> |
||||
<h2>Steering Council <span class="fragment"> 🤔 </span></h2> |
||||
</section> |
||||
|
||||
<section> |
||||
<h3>Python Positional-Only Parameters (PEP 570)</h3> |
||||
|
||||
<pre><code data-trim> |
||||
pow(x, y, z=None, /) |
||||
... |
||||
|
||||
>>> pow(x=5, y=3) |
||||
Traceback (most recent call last): |
||||
File "<stdin>", line 1, in <module> |
||||
TypeError: pow() takes no keyword arguments |
||||
</code></pre> |
||||
</section> |
||||
|
||||
<section> |
||||
<p>"Without the ability to specify which parameters are |
||||
positional-only, library authors must be careful when |
||||
choosing appropriate parameter names."</p> |
||||
|
||||
<h1 class="fragment">🤦</h1> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/chrysalis.jpeg" alt=""> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/oogway.jpeg" alt=""> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/fear.jpeg" alt=""> |
||||
</section> |
||||
|
||||
<section> |
||||
<h1>??</h1> |
||||
</section> |
||||
|
||||
<section data-background='_images/thats-all-folks.jpg'> |
||||
<div class="semi-opaque"> |
||||
<ul class="empty"> |
||||
<li><a href="https://functional.cafe/@juliobiason">https://functional.cafe/@juliobiason</a></li> |
||||
<li><a href="https://t.me/juliobiason">https://t.me/juliobiason</a></li> |
||||
<li>julio.biason@pm.me</li> |
||||
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
</div> |
||||
</div> |
||||
|
||||
<script src="reveal.js/lib/js/head.min.js"></script> |
||||
<script src="reveal.js/js/reveal.js"></script> |
||||
|
||||
<script> |
||||
// Full list of configuration options available at: |
||||
// https://github.com/hakimel/reveal.js#configuration |
||||
Reveal.initialize({ |
||||
controls: true, |
||||
progress: true, |
||||
history: true, |
||||
center: true, |
||||
// showNotes: true, |
||||
|
||||
transition: 'slide', // none/fade/slide/convex/concave/zoom |
||||
|
||||
// Optional reveal.js plugins |
||||
dependencies: [ |
||||
{ src: 'reveal.js/lib/js/classList.js', condition: function() { return !document.body.classList; } }, |
||||
{ src: 'reveal.js/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }, |
||||
{ src: 'reveal.js/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }, |
||||
{ src: 'reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }, |
||||
{ src: 'reveal.js/plugin/zoom-js/zoom.js', async: true }, |
||||
{ src: 'reveal.js/plugin/notes/notes.js', async: true } |
||||
] |
||||
}); |
||||
</script> |
||||
|
||||
</body> |
||||
</html> |
@ -0,0 +1,80 @@
|
||||
<!doctype html> |
||||
<html lang="en"> |
||||
|
||||
<head> |
||||
<meta charset="utf-8"> |
||||
|
||||
<title>reveal.js – The HTML Presentation Framework</title> |
||||
|
||||
<meta name="description" content="A framework for easily creating beautiful presentations using HTML"> |
||||
<meta name="author" content="Hakim El Hattab"> |
||||
|
||||
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> |
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui"> |
||||
|
||||
<link rel="stylesheet" href="reveal.js/css/reveal.css"> |
||||
<link rel="stylesheet" href="reveal.js/css/theme/black.css" id="theme"> |
||||
|
||||
<!-- Code syntax highlighting --> |
||||
<link rel="stylesheet" href="reveal.js/lib/css/zenburn.css"> |
||||
|
||||
<!-- Printing and PDF exports --> |
||||
<script> |
||||
var link = document.createElement( 'link' ); |
||||
link.rel = 'stylesheet'; |
||||
link.type = 'text/css'; |
||||
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css'; |
||||
document.getElementsByTagName( 'head' )[0].appendChild( link ); |
||||
</script> |
||||
|
||||
<!--[if lt IE 9]> |
||||
<script src="lib/js/html5shiv.js"></script> |
||||
<![endif]--> |
||||
</head> |
||||
|
||||
<body> |
||||
<div class="reveal"> |
||||
<div class="slides"> |
||||
<section> |
||||
<h1>Reveal.js</h1> |
||||
<h3>The HTML Presentation Framework</h3> |
||||
<p> |
||||
<small>Created by <a href="http://hakim.se">Hakim El Hattab</a> / <a href="http://twitter.com/hakimel">@hakimel</a></small> |
||||
</p> |
||||
</section> |
||||
</div> |
||||
|
||||
</div> |
||||
|
||||
<script src="reveal.js/lib/js/head.min.js"></script> |
||||
<script src="reveal.js/js/reveal.js"></script> |
||||
|
||||
<script> |
||||
|
||||
// Full list of configuration options available at: |
||||
// https://github.com/hakimel/reveal.js#configuration |
||||
Reveal.initialize({ |
||||
controls: true, |
||||
progress: true, |
||||
history: true, |
||||
center: true, |
||||
|
||||
transition: 'slide', // none/fade/slide/convex/concave/zoom |
||||
|
||||
// Optional reveal.js plugins |
||||
dependencies: [ |
||||
{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } }, |
||||
{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }, |
||||
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }, |
||||
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }, |
||||
{ src: 'plugin/zoom-js/zoom.js', async: true }, |
||||
{ src: 'plugin/notes/notes.js', async: true } |
||||
] |
||||
}); |
||||
|
||||
</script> |
||||
|
||||
</body> |
||||
</html> |