Browse Source

Merge branch 'release/20200306'

master
Julio Biason 5 years ago
parent
commit
cd530f31f1
  1. 9
      _images/MIT_logo.svg
  2. BIN
      _images/agpl-logo.png
  3. BIN
      _images/apache-license-2.0.png
  4. BIN
      _images/apache-license.png
  5. BIN
      _images/back-to-the-future.jpeg
  6. BIN
      _images/bsd.png
  7. BIN
      _images/chrysalis.jpeg
  8. BIN
      _images/consuela.jpeg
  9. BIN
      _images/copyright.jpeg
  10. BIN
      _images/download-apple-google.png
  11. BIN
      _images/fear.jpeg
  12. BIN
      _images/github-lgpl.png
  13. BIN
      _images/gpl-logo.png
  14. BIN
      _images/guido-no-bdfl.png
  15. BIN
      _images/iplenix.png
  16. BIN
      _images/ipython-notebook.png
  17. BIN
      _images/ipython.png
  18. BIN
      _images/isso-nao-prova-nada.png
  19. BIN
      _images/jupyter.jpeg
  20. BIN
      _images/lgpl-logo.png
  21. BIN
      _images/oogway.jpeg
  22. BIN
      _images/past.jpg
  23. BIN
      _images/patrick-license.jpeg
  24. BIN
      _images/present.jpg
  25. BIN
      _images/public-domain.png
  26. BIN
      _images/pycaxias.png
  27. BIN
      _images/python-datascience.png
  28. BIN
      _images/python-usage.png
  29. BIN
      _images/python15.png
  30. BIN
      _images/python27-clock.png
  31. BIN
      _images/scikit.jpeg
  32. BIN
      _images/the-witch-is-dead.png
  33. BIN
      _images/tilefile.jpg
  34. BIN
      _images/tweet-python2020.png
  35. 4
      activitypub.html
  36. 103
      base.html
  37. 2
      cleancodemeetup.html
  38. 788
      com-licenca.html
  39. 4
      filosofando-testes.html
  40. 2
      flask-40mins.html
  41. BIN
      fonts/hack-bold-subset.woff
  42. BIN
      fonts/hack-bold-subset.woff2
  43. BIN
      fonts/hack-bold.woff
  44. BIN
      fonts/hack-bold.woff2
  45. BIN
      fonts/hack-bolditalic-subset.woff
  46. BIN
      fonts/hack-bolditalic-subset.woff2
  47. BIN
      fonts/hack-bolditalic.woff
  48. BIN
      fonts/hack-bolditalic.woff2
  49. BIN
      fonts/hack-italic-subset.woff
  50. BIN
      fonts/hack-italic-subset.woff2
  51. BIN
      fonts/hack-italic.woff
  52. BIN
      fonts/hack-italic.woff2
  53. BIN
      fonts/hack-regular-subset.woff
  54. BIN
      fonts/hack-regular-subset.woff2
  55. BIN
      fonts/hack-regular.woff
  56. BIN
      fonts/hack-regular.woff2
  57. 4
      fugindo-com-python-2.html
  58. 2
      fugindo-com-python.html
  59. 2
      gramatica-vim.html
  60. 157
      htmlslides.css
  61. 210
      htmlslides.js
  62. 2
      index.json
  63. 4
      intro-stream-processing.html
  64. 5
      makeidx.py
  65. 4
      porque-como-opensource.html
  66. 4
      porque-rust.html
  67. 428
      pycaxias2020.html
  68. 2
      python-bdd.html
  69. 2
      python23six.html
  70. 2
      python36.html
  71. 8
      quick-rust.html
  72. 80
      reveal-base.html
  73. 2
      rustlatam-2019.html
  74. 16
      terminimal.css
  75. 2
      unit-in-unittest.html
  76. 2
      unit-in-unittests-2.html

9
_images/MIT_logo.svg

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--zaz-->
<svg xmlns="http://www.w3.org/2000/svg" height="166" width="321">
<g stroke-width="35" stroke="#A31F34">
<path d="m17.5,0v166m57-166v113m57-113v166m57-166v33m58,20v113"/>
<path d="m188.5,53v113" stroke="#8A8B8C"/>
<path d="m229,16.5h92" stroke-width="33"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 318 B

BIN
_images/agpl-logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

BIN
_images/apache-license-2.0.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 702 KiB

BIN
_images/apache-license.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
_images/back-to-the-future.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
_images/bsd.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
_images/chrysalis.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
_images/consuela.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
_images/copyright.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
_images/download-apple-google.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
_images/fear.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
_images/github-lgpl.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
_images/gpl-logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

BIN
_images/guido-no-bdfl.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

BIN
_images/iplenix.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
_images/ipython-notebook.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

BIN
_images/ipython.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
_images/isso-nao-prova-nada.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
_images/jupyter.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
_images/lgpl-logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

BIN
_images/oogway.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
_images/past.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

BIN
_images/patrick-license.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

BIN
_images/present.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

BIN
_images/public-domain.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

BIN
_images/pycaxias.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

BIN
_images/python-datascience.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

BIN
_images/python-usage.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
_images/python15.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
_images/python27-clock.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
_images/scikit.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
_images/the-witch-is-dead.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 KiB

BIN
_images/tilefile.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
_images/tweet-python2020.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

4
activitypub.html

@ -89,7 +89,7 @@
<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="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="http://presentations.juliobiason.me">http://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>
@ -451,7 +451,7 @@
<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="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>

103
base.html

@ -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>

2
cleancodemeetup.html

@ -85,7 +85,7 @@
<li>Júlio Biason</li>
<li>@juliobiason</li>
<li>julio.biason@gmail.com</li>
<li><a href="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>

788
com-licenca.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 &lt;organization&gt; 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
&lt;organization&gt;.
</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>

4
filosofando-testes.html

@ -74,7 +74,7 @@
<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="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>
@ -554,7 +554,7 @@ client.py 24 0 100%
<li>Júlio Biason</li>
<li>https://functional.cafe/@juliobiason</li>
<li>julio.biason@pm.me</li>
<li><a href="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>

2
flask-40mins.html

@ -78,7 +78,7 @@
<li>Júlio Biason</li>
<li>@juliobiason</li>
<li>julio.biason@gmail.com</li>
<li><a href="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.net">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>

BIN
fonts/hack-bold-subset.woff

Binary file not shown.

BIN
fonts/hack-bold-subset.woff2

Binary file not shown.

BIN
fonts/hack-bold.woff

Binary file not shown.

BIN
fonts/hack-bold.woff2

Binary file not shown.

BIN
fonts/hack-bolditalic-subset.woff

Binary file not shown.

BIN
fonts/hack-bolditalic-subset.woff2

Binary file not shown.

BIN
fonts/hack-bolditalic.woff

Binary file not shown.

BIN
fonts/hack-bolditalic.woff2

Binary file not shown.

BIN
fonts/hack-italic-subset.woff

Binary file not shown.

BIN
fonts/hack-italic-subset.woff2

Binary file not shown.

BIN
fonts/hack-italic.woff

Binary file not shown.

BIN
fonts/hack-italic.woff2

Binary file not shown.

BIN
fonts/hack-regular-subset.woff

Binary file not shown.

BIN
fonts/hack-regular-subset.woff2

Binary file not shown.

BIN
fonts/hack-regular.woff

Binary file not shown.

BIN
fonts/hack-regular.woff2

Binary file not shown.

4
fugindo-com-python-2.html

@ -89,7 +89,7 @@
<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="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>
@ -1079,7 +1079,7 @@ pares = (num
<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="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>

2
fugindo-com-python.html

@ -74,7 +74,7 @@
<li>Júlio Biason</li>
<li>@juliobiason</li>
<li>julio.biason@gmail.com</li>
<li><a href="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>

2
gramatica-vim.html

@ -74,7 +74,7 @@
<li>Júlio Biason</li>
<li>@juliobiason</li>
<li>julio.biason@gmail.com</li>
<li><a href="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>

157
htmlslides.css

@ -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%;
}

210
htmlslides.js

@ -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);
}());

2
index.json

@ -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"}]

4
intro-stream-processing.html

@ -92,7 +92,7 @@
<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="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>
@ -602,7 +602,7 @@ light.switch()</code></pre>
<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="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
<h3></h3>

5
makeidx.py

@ -98,9 +98,8 @@ def main():
# only files in the current directly will be checked
continue
content = check_presentations(files)
# holy shit, talk about abusing Python internals
content.sort(cmp=lambda x, y: -1 if x['title'] < y['title'] else 1)
content = sorted(check_presentations(files),
key=lambda r: r['title'])
with open('index.json', 'w') as output:
output.write(json.dumps(content))

4
porque-como-opensource.html

@ -71,7 +71,7 @@
<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="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>
@ -579,7 +579,7 @@
<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="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
<h1 class="fragment semi-opaque">Perguntas?</h1>

4
porque-rust.html

@ -98,7 +98,7 @@
<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="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>
@ -957,7 +957,7 @@ fn call_isan(num: &amp;str) -&gt; Result&lt;Success, Error&gt; {
<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="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>

428
pycaxias2020.html

@ -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, /)
...
&gt;&gt;&gt; pow(x=5, y=3)
Traceback (most recent call last):
File "&lt;stdin&gt;", line 1, in &lt;module&gt;
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>

2
python-bdd.html

@ -85,7 +85,7 @@
<li>Júlio Biason</li>
<li>@juliobiason</li>
<li>julio.biason@gmail.com</li>
<li><a href="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>

2
python23six.html

@ -66,7 +66,7 @@
<li><img src="_images/logo-horizontal-claro.png" alt="CWI Software" class='no-border'>
<li>@juliobiason</li>
<li>julio.biason@gmail.com</li>
<li><a href="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>

2
python36.html

@ -73,7 +73,7 @@
<li><img src="_images/logo-horizontal-claro.png" alt="CWI Software" class='no-border'>
<li>@juliobiason</li>
<li>julio.biason@gmail.com</li>
<li><a href="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>

8
quick-rust.html

@ -87,7 +87,7 @@
<li>Júlio Biason</li>
<li>https://functional.cafe/@juliobiason</li>
<li>julio.biason@pm.me</li>
<li><a href="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>
@ -846,8 +846,6 @@ fn main() {
<section>
<img src="_images/rust-issues.png" alt="4.5k issues no Github" class="stretch">
<<<<<<< Updated upstream
<aside class="notes">
Outra curiosidade de Rust: 4.500 issues nesse screenshot.
@ -863,8 +861,6 @@ fn main() {
postar, nada acontece no grupinho seleto que decide todas
as coisas da linguagem. Tudo é feito de forma transparente.
</aside>
=======
>>>>>>> Stashed changes
</section>
</section>
@ -886,7 +882,7 @@ fn main() {
<li>Júlio Biason</li>
<li>https://functional.cafe/@juliobiason</li>
<li>julio.biason@pm.me</li>
<li><a href="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>

80
reveal-base.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>

2
rustlatam-2019.html

@ -87,7 +87,7 @@
<li>Júlio Biason</li>
<li>https://functional.cafe/@juliobiason</li>
<li>julio.biason@pm.me</li>
<li><a href="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>

16
terminimal.css

@ -8,6 +8,22 @@
}
h1 {
background-color: inherit;
color: var(--accent);
}
header h1 {
font-size: 5rem;
width: 100%;
text-align: center;
height: 90%;
align-items: center;
justify-content: center;
margin: 0;
padding: 0;
}
.button-container {
display:table;
margin-left:auto;

2
unit-in-unittest.html

@ -70,7 +70,7 @@
<li><img src="_images/logo-horizontal-claro.png" alt="CWI Software" class='no-border'>
<li>@juliobiason</li>
<li>julio.biason@gmail.com</li>
<li><a href="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>

2
unit-in-unittests-2.html

@ -69,7 +69,7 @@
<li>Júlio Biason</li>
<li>@juliobiason</li>
<li>julio.biason@gmail.com</li>
<li><a href="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>

Loading…
Cancel
Save