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> |
||||||
<html lang="en"> |
|
||||||
|
|
||||||
<head> |
<head> |
||||||
<meta charset="utf-8"> |
<meta charset="utf-8" /> |
||||||
|
<link rel="stylesheet" href="htmlslides.css" title="" type=""> |
||||||
<title>reveal.js – The HTML Presentation Framework</title> |
<link rel="stylesheet" href="terminimal.css" title="" type=""> |
||||||
|
<script src="htmlslides.js" charset="utf-8"></script> |
||||||
<meta name="description" content="A framework for easily creating beautiful presentations using HTML"> |
<title> |
||||||
<meta name="author" content="Hakim El Hattab"> |
PRESENTATION TITLE |
||||||
|
</title> |
||||||
<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> |
</head> |
||||||
|
|
||||||
<body> |
<body> |
||||||
<div class="reveal"> |
<header> |
||||||
<div class="slides"> |
<h1> |
||||||
<section> |
PRESENTATION TITLE |
||||||
<h1>Reveal.js</h1> |
</h1> |
||||||
<h3>The HTML Presentation Framework</h3> |
</header> |
||||||
|
|
||||||
|
<section id="introduction"> |
||||||
|
<h1> |
||||||
|
ONE TITLE |
||||||
|
</h1> |
||||||
|
|
||||||
<p> |
<p> |
||||||
<small>Created by <a href="http://hakim.se">Hakim El Hattab</a> / <a href="http://twitter.com/hakimel">@hakimel</a></small> |
content |
||||||
</p> |
</p> |
||||||
</section> |
</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: |
<section id="image"> |
||||||
// https://github.com/hakimel/reveal.js#configuration |
<h1>This one have an image</h1> |
||||||
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> |
|
||||||
|
|
||||||
|
<img src="_images/cargo-cult-smokey.jpg" alt="" class="center"> |
||||||
|
</section> |
||||||
</body> |
</body> |
||||||
</html> |
</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> |