After Width: | Height: | Size: 89 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 2.1 MiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 139 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 4.8 MiB |
After Width: | Height: | Size: 702 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 1.2 MiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 8.8 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 102 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 7.2 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 79 KiB |
After Width: | Height: | Size: 158 KiB |
After Width: | Height: | Size: 204 KiB |
After Width: | Height: | Size: 613 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: 65 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 124 KiB |
After Width: | Height: | Size: 2.0 MiB |
After Width: | Height: | Size: 285 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 115 KiB |
After Width: | Height: | Size: 176 KiB |
After Width: | Height: | Size: 142 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 166 KiB |
After Width: | Height: | Size: 286 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: 5.7 KiB |
After Width: | Height: | Size: 101 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 8.4 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 367 KiB |
After Width: | Height: | Size: 421 KiB |
After Width: | Height: | Size: 500 KiB |
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 87 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 98 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 2.2 MiB |
After Width: | Height: | Size: 167 KiB |
After Width: | Height: | Size: 227 KiB |
After Width: | Height: | Size: 207 KiB |
After Width: | Height: | Size: 79 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 928 KiB |
After Width: | Height: | Size: 115 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 207 KiB |
After Width: | Height: | Size: 241 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 59 KiB |
@ -0,0 +1,489 @@
|
||||
<!doctype html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="utf-8"> |
||||
|
||||
<title>ActivityPub</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); |
||||
} |
||||
|
||||
.white { |
||||
background-color: white !important; |
||||
} |
||||
</style> |
||||
</head> |
||||
|
||||
<body> |
||||
<div class="reveal"> |
||||
<div class="slides"> |
||||
<section data-background="_images/activitypub-logo.png" data-header> |
||||
<h2 class="semi-opaque">ActivityPub</h2> |
||||
</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> |
||||
<li><a href="http://presentations.juliobiason.me">http://presentations.juliobiason.me</a></li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-transition="slide"> |
||||
<img class="stretch" src="_images/internet.jpeg" alt=""> |
||||
|
||||
<aside class="notes"> |
||||
Para entender ActivityPub -- e porque ele existe -- |
||||
precisamos dar um passo atrás e entender a internet. |
||||
|
||||
A internet foi criada para ser "anarquica", no |
||||
sentido que não haveria um ponto central; se algum |
||||
ponto da rede fosse destruído por uma bomba nuclear |
||||
(porque assim eram os anos 60), outros pontos |
||||
continuariam funcionando. |
||||
</aside> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/federation.png" title="(do latim: foederatio, de foedus: “liga, tratado, aliança”) ou Estado Federal é um Estado composto por diversas entidades territoriais autônomas dotadas de governo próprio."> |
||||
|
||||
<aside class="notes"> |
||||
De certa forma, as coisas funcionavam de forma |
||||
"federada", cuja definição do dicionário para |
||||
"federação" é: "(do latim: foederatio, de foedus: |
||||
“liga, tratado, aliança”) ou Estado Federal é um |
||||
Estado composto por diversas entidades territoriais |
||||
autônomas dotadas de governo próprio." |
||||
|
||||
(E como eu sou fã de Jornada nas Estrelas, eu |
||||
sempre lembro da "Federação dos Planetas Unidos", |
||||
que tinha o mesmo significado: vários planetas, |
||||
cada um com suas políticas, mas cada um funcionando |
||||
da forma que quisesse.) |
||||
</aside> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/email.png" alt=""> |
||||
|
||||
<aside class="notes"> |
||||
Um dos exemplos mais básicos de federação ainda em |
||||
uso é o email: Existem vários servidores/serviços |
||||
de email por aí, cada um tem suas definições do que |
||||
é spam (ou como um email é definido como "spam"), |
||||
quotas de espaço, aliases -- enfim, uma série de |
||||
políticas -- mas os serviços conversam entre si |
||||
para garantir que todos possam receber emails, |
||||
mesmo estando em serviços (com políticas) |
||||
diferentes. |
||||
</aside> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="white stretch" src="_images/xmpp.png" alt=""> |
||||
|
||||
<aside class="notes"> |
||||
Outro exemplo de federação é o XMPP, um protocolo |
||||
criado para comunicação instantânea que era |
||||
utilizado pelo Hangouts a muito tempo (hoje não é |
||||
mais, é um protocolo fechado). |
||||
</aside> |
||||
</section> |
||||
|
||||
<section data-transition="slide"> |
||||
<img class="stretch" src="_images/socializing.jpeg" alt=""> |
||||
|
||||
<aside class="notes"> |
||||
Apesar dos pesares, humanos são seres sociais e, |
||||
apesar dos pesares, a internet é uma forma de |
||||
socialização. |
||||
</aside> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/silo.jpeg" alt=""> |
||||
|
||||
<aside class="notes"> |
||||
Infelizmente, a pouco tempo (em termos de tempo |
||||
de vida de internet), o modelo começou a mudar |
||||
para um modelo de "Silos", onde tudo fica no mesmo |
||||
lugar (mesmo que o "mesmo lugar" sejam vários |
||||
computadores em vários lugares). |
||||
|
||||
A ideia de coisas com "políticas diferentes que |
||||
trabalham em forma de aliança" foi esquecida e |
||||
agora boa parte das coisas que nós queremos |
||||
compartilhar acaba ficando sob uma única política. |
||||
</aside> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/all-eggs.jpeg" alt=""> |
||||
|
||||
<aside class="notes"> |
||||
Basicamente estamos colocando todos os ovos no |
||||
mesmo sesto. |
||||
</aside> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/all-eggs-broken.jpeg" alt=""> |
||||
|
||||
<aside class="notes"> |
||||
Basta lembrar o que acontece toda vez que algum |
||||
juiz diz que é para bloquear o WhatsApp. |
||||
|
||||
(O resultado é que explodem os cadastros no |
||||
Telegram, que sofre do mesmo problema.) |
||||
</aside> |
||||
</section> |
||||
|
||||
<section data-transition="slide"> |
||||
<img class="stretch white" src="_images/ActivityPub-logo.svg" alt=""> |
||||
|
||||
<aside class="notes"> |
||||
E assim como temos o XMPP para conversas |
||||
instantâneas, temos o ActivityPub para ações |
||||
"sociais" -- no sentido de "coisas que fazemos com |
||||
nossas vidas". |
||||
</aside> |
||||
</section> |
||||
|
||||
<section> |
||||
<h4>Mas O Que é ActivityPub</h4> |
||||
|
||||
<ul> |
||||
<li class="fragment">Protocolo certificado pela W3C.</li> |
||||
<li class="fragment">Baseado em HTTP e JSON.</li> |
||||
<li class="fragment">Tem vários conceitos iguais ao email.</li> |
||||
<li class="fragment">Composto de outros protolocos: WebFinger, ActivityStreams, ActivityVocabulary e JSON-LD.</li> |
||||
</ul> |
||||
|
||||
<aside class="notes"> |
||||
1. O protocolo é certificado (e padronizado) pela |
||||
W3C, o que deixa o protocolo aberto para |
||||
qualquer um implementar a sua própria versão (e |
||||
existem várias implementações, que eu vou falar |
||||
mais pra frente). |
||||
2. Apesar d'eu ter comentado o email, que usa um |
||||
protocolo específico, ActivityPub usa HTTP e JSON. |
||||
3. E apesar de ser HTTP e JSON, ainda aproveita |
||||
alguns conceitos do email -- e sim, eu estou |
||||
andando em circulos, mas peraí. |
||||
4. ActivityPub não é apenas um protocolo, mas é um |
||||
protocolo construido sobre outros protocolos, |
||||
como WebFinger para descoberta de informações de |
||||
usuários, ActivityStreams que descreve o formato |
||||
das atividades, ActivityVocabulary que inidica |
||||
quais ações existentes e os tipos de objetos |
||||
existentes e JSON-LD que define os formato dos |
||||
objetos em JSON. |
||||
</aside> |
||||
</section> |
||||
|
||||
<section> |
||||
<h4>O Que é ActivityPub</h4> |
||||
<h3>Activity Vocabulary</h3> |
||||
|
||||
<ul> |
||||
<li class="fragment">Actors <span class="fragment">(Person, Bot, Service)</span></li> |
||||
<li class="fragment">Notes</li> |
||||
<li class="fragment">Images</li> |
||||
<li class="fragment">Links</li> |
||||
<li class="fragment">...</li> |
||||
</ul> |
||||
|
||||
<aside class="notes"> |
||||
Existem atores que aplicam as ações (person, bot, |
||||
company/service), e as atividades tem coisas como o |
||||
compartilhamento de notas (texto), imagens, links e |
||||
outras coisas. Praticamente tudo que possa ser |
||||
pensando em compartilhar. |
||||
</aside> |
||||
</section> |
||||
|
||||
<section> |
||||
<h4>ActivityPub</h4> |
||||
<h3>WebFinger</h3> |
||||
|
||||
<pre><code class="hljs json" data-trim> |
||||
{"@context": "https://www.w3.org/ns/activitystreams", |
||||
"type": "Person", |
||||
"id": "https://social.example/alyssa/", |
||||
"name": "Alyssa P. Hacker", |
||||
"preferredUsername": "alyssa", |
||||
"summary": "Lisp enthusiast hailing from MIT", |
||||
"inbox": "https://social.example/alyssa/inbox/", |
||||
"outbox": "https://social.example/alyssa/outbox/", |
||||
"followers": "https://social.example/alyssa/followers/", |
||||
"following": "https://social.example/alyssa/following/", |
||||
"liked": "https://social.example/alyssa/liked/"} |
||||
</code></pre> |
||||
|
||||
<aside class="notes"> |
||||
Essa é a estrutura de um ator. Existem algumas |
||||
opções importantes/interessantes aqui. |
||||
</aside> |
||||
</section> |
||||
|
||||
<section> |
||||
<h4>ActivityPub</h4> |
||||
<pre><code class="hljs json" data-trim data-line-numbers="7"> |
||||
{"@context": "https://www.w3.org/ns/activitystreams", |
||||
"type": "Person", |
||||
"id": "https://social.example/alyssa/", |
||||
"name": "Alyssa P. Hacker", |
||||
"preferredUsername": "alyssa", |
||||
"summary": "Lisp enthusiast hailing from MIT", |
||||
"inbox": "https://social.example/alyssa/inbox/", |
||||
"outbox": "https://social.example/alyssa/outbox/", |
||||
"followers": "https://social.example/alyssa/followers/", |
||||
"following": "https://social.example/alyssa/following/", |
||||
"liked": "https://social.example/alyssa/liked/"} |
||||
</code></pre> |
||||
|
||||
<aside class="notes"> |
||||
Essa informação sobre o ator (que eu estou |
||||
mostrando do originador da mensagem) tem alguns |
||||
valores que são importantes. |
||||
|
||||
Por exemplo, the "inbox" tem as mensagens que |
||||
chegaram para esse usuário. |
||||
|
||||
Obviamente, não necessáriamente qualquer um pode |
||||
acessar o inbox, mas a informação pertence ao ator. |
||||
</aside> |
||||
</section> |
||||
|
||||
<section> |
||||
<h4>ActivityPub</h4> |
||||
<pre><code class="hljs json" data-trim data-line-numbers="8"> |
||||
{"@context": "https://www.w3.org/ns/activitystreams", |
||||
"type": "Person", |
||||
"id": "https://social.example/alyssa/", |
||||
"name": "Alyssa P. Hacker", |
||||
"preferredUsername": "alyssa", |
||||
"summary": "Lisp enthusiast hailing from MIT", |
||||
"inbox": "https://social.example/alyssa/inbox/", |
||||
"outbox": "https://social.example/alyssa/outbox/", |
||||
"followers": "https://social.example/alyssa/followers/", |
||||
"following": "https://social.example/alyssa/following/", |
||||
"liked": "https://social.example/alyssa/liked/"} |
||||
</code></pre> |
||||
|
||||
<aside class="notes"> |
||||
Assim como o "inbox", existe o "outbox" que é tudo |
||||
que o ator enviou. Basicamente, essa é a lista de |
||||
todas as atividades do usuário específico. |
||||
</aside> |
||||
</section> |
||||
|
||||
<section> |
||||
<h4>ActivityPub</h4> |
||||
<h3>Activity Stream</h3> |
||||
|
||||
<pre><code class="hljs json" data-trim> |
||||
{"@context": "https://www.w3.org/ns/activitystreams", |
||||
"type": "Create", |
||||
"id": "https://social.example/alyssa/posts/a29a6843", |
||||
"to": ["https://chatty.example/ben/"], |
||||
"actor": "https://social.example/alyssa/", |
||||
"object": {"type": "Note", |
||||
"id": "https://social.example/alyssa/posts/49e2d03d", |
||||
"attributedTo": "https://social.example/alyssa/", |
||||
"to": ["https://chatty.example/ben/"], |
||||
"content": "Did you finish reading that book?"}} |
||||
</code></pre> |
||||
|
||||
<aside class="notes"> |
||||
E uma atividade -- por exemplo, nosso ator acima |
||||
enviando um texto para outro ator. |
||||
</aside> |
||||
</section> |
||||
|
||||
<section> |
||||
<h4>ActivityPub</h4> |
||||
<img class="white stretch" src="_images/ActivityPub-tutorial-image.png" alt=""> |
||||
</section> |
||||
|
||||
<section> |
||||
<h4>ActivityPub</h4> |
||||
<h3>Client to Server Activities</h3> |
||||
|
||||
<p class="fragment"> |
||||
create, update, delete, follow, add, remove, like, |
||||
block, undo |
||||
</p> |
||||
</section> |
||||
|
||||
<section> |
||||
<h4>ActivityPub</h4> |
||||
<h3>Server to Server Activity</h3> |
||||
|
||||
<p class="fragment"> |
||||
create, update, delete, follow, accept (follow), |
||||
reject (to follow), add, remove, like, announce |
||||
(reposting/boosting), undo |
||||
</p> |
||||
</section> |
||||
|
||||
<section> |
||||
<h4>ActivityPub</h4> |
||||
<h3>Public</h3> |
||||
|
||||
<p class="fragment">https://www.w3.org/ns/activitystreams#Public</p> |
||||
</section> |
||||
|
||||
<section> |
||||
<h4>Suporte ao ActivityPub</h4> |
||||
|
||||
<ul> |
||||
<li class="fragment">ForgeFed (Código, Github)</li> |
||||
<li class="fragment">PixelFed (Fotos, Instagram)</li> |
||||
<li class="fragment">PeerTube (Videos, YouTube)</li> |
||||
<li class="fragment">HubZilla/Plume/WordPress ActivityPub Plugin (Blogging, WordPress)</li> |
||||
<li class="fragment">DistBin (Snippets, Pastebin/Gist)</li> |
||||
<li class="fragment">Diaspora (Social, Facebook)</li> |
||||
<li class="fragment">Microblog/Honk/Plemora/Mastodon (Micro-blogging, Twitter)</li> |
||||
</ul> |
||||
</section> |
||||
|
||||
<section> |
||||
<h4>Suporte ao ActivityPub</h4> |
||||
<h3>Mastodon</h3> |
||||
|
||||
<ul> |
||||
<li class="fragment">2.629 instâncias</li> |
||||
<li class="fragment">10.877.412 de contas criadas</li> |
||||
<li class="fragment">157.437 usuários ativos (última semana de novembro)</li> |
||||
<li class="fragment">1.562.887.737.129.765 toots</li> |
||||
</ul> |
||||
</section> |
||||
|
||||
<section> |
||||
<h4>Suporte ao ActivityPub</h4> |
||||
|
||||
<p> |
||||
<a href="https://fediverse.party">Fediverse</a> |
||||
</p> |
||||
</section> |
||||
|
||||
<section> |
||||
<h4>Informações Técnicas</h4> |
||||
|
||||
<ul> |
||||
<li><a href="https://www.w3.org/TR/activitypub/">ActivityPub, W3C Recommendation 23 January 2018</a></li> |
||||
<li><a href="https://nextcloud.com/blog/activitypub-the-new-standard-for-decentralized-networks/">NextCloud: ActivityPub: the new standard for decentralized networks</a></li> |
||||
<li><a href="https://hacks.mozilla.org/2018/11/decentralizing-social-interactions-with-activitypub/">Mozilla Hacks: Decentralizing Social Interactions with ActivityPub</a></li> |
||||
<li><a href="https://activitypub.rocks/">ActivityPub Rocks!</a></li> |
||||
<li><a href="https://flak.tedunangst.com/post/ActivityPub-as-it-has-been-understood">Honk: ActivityPub as it has been understood</a></li> |
||||
</ul> |
||||
</section> |
||||
|
||||
<section data-background='_images/thats-all-folks.jpg' data-transition="slide"> |
||||
<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,62 @@
|
||||
* { |
||||
font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif; |
||||
font-size: 1em; |
||||
font-style: normal; |
||||
} |
||||
|
||||
body { |
||||
max-width: 50rem; |
||||
padding: 20px 10px; |
||||
background: #000; |
||||
color: #ccc; |
||||
line-height: 1rem; |
||||
margin: 0 auto; |
||||
} |
||||
|
||||
h1 { |
||||
display: block; |
||||
position: relative; |
||||
padding: 20px 0 10px; |
||||
margin 0; |
||||
overflow: hidden; |
||||
float: none; |
||||
line-height: 1.3rem; |
||||
} |
||||
|
||||
h1:after { |
||||
content: "===================================================================================================="; |
||||
position: absolute; |
||||
bottom: -7px; |
||||
left: 0; |
||||
} |
||||
|
||||
h2 { |
||||
position: relative; |
||||
margin-top: 1rem; |
||||
margin-bottom: 10px; |
||||
} |
||||
|
||||
h2:before { |
||||
content: "## "; |
||||
display: inline; |
||||
} |
||||
|
||||
a, a:visited { |
||||
color: #ccc; |
||||
cursor: pointer; |
||||
border-bottom: 1px solid #ff2e88; |
||||
text-decoration: none; |
||||
} |
||||
|
||||
a:after { |
||||
content: " " url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20class='i-external'%20viewBox='0%200%2032%2032'%20width='14'%20height='14'%20fill='none'%20stroke='%23ff9800'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='9.38%'%3E%3Cpath%20d='M14%209%20L3%209%203%2029%2023%2029%2023%2018%20M18%204%20L28%204%2028%2014%20M28%204%20L14%2018'/%3E%3C/svg%3E"); |
||||
} |
||||
|
||||
div.muted { |
||||
color: rgba(255,255,255,0.5); |
||||
} |
||||
|
||||
div.hide { |
||||
display: none; |
||||
} |
||||
|
@ -1,80 +1,35 @@
|
||||
<!doctype html> |
||||
<html lang="en"> |
||||
|
||||
<html> |
||||
<head> |
||||
<meta charset="utf-8"> |
||||
|
||||
<title>reveal.js – The HTML Presentation Framework</title> |
||||
|
||||
<meta name="description" content="A framework for easily creating beautiful presentations using HTML"> |
||||
<meta name="author" content="Hakim El Hattab"> |
||||
|
||||
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> |
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui"> |
||||
|
||||
<link rel="stylesheet" href="reveal.js/css/reveal.css"> |
||||
<link rel="stylesheet" href="reveal.js/css/theme/black.css" id="theme"> |
||||
|
||||
<!-- Code syntax highlighting --> |
||||
<link rel="stylesheet" href="reveal.js/lib/css/zenburn.css"> |
||||
|
||||
<!-- Printing and PDF exports --> |
||||
<script> |
||||
var link = document.createElement( 'link' ); |
||||
link.rel = 'stylesheet'; |
||||
link.type = 'text/css'; |
||||
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css'; |
||||
document.getElementsByTagName( 'head' )[0].appendChild( link ); |
||||
</script> |
||||
|
||||
<!--[if lt IE 9]> |
||||
<script src="lib/js/html5shiv.js"></script> |
||||
<![endif]--> |
||||
<meta charset="utf-8" /> |
||||
<link rel="stylesheet" href="htmlslides.css" title="" type=""> |
||||
<link rel="stylesheet" href="terminimal.css" title="" type=""> |
||||
<script src="htmlslides.js" charset="utf-8"></script> |
||||
<title> |
||||
PRESENTATION TITLE |
||||
</title> |
||||
</head> |
||||
|
||||
<body> |
||||
<div class="reveal"> |
||||
<div class="slides"> |
||||
<section> |
||||
<h1>Reveal.js</h1> |
||||
<h3>The HTML Presentation Framework</h3> |
||||
<p> |
||||
<small>Created by <a href="http://hakim.se">Hakim El Hattab</a> / <a href="http://twitter.com/hakimel">@hakimel</a></small> |
||||
</p> |
||||
</section> |
||||
</div> |
||||
|
||||
</div> |
||||
|
||||
<script src="reveal.js/lib/js/head.min.js"></script> |
||||
<script src="reveal.js/js/reveal.js"></script> |
||||
|
||||
<script> |
||||
|
||||
// Full list of configuration options available at: |
||||
// https://github.com/hakimel/reveal.js#configuration |
||||
Reveal.initialize({ |
||||
controls: true, |
||||
progress: true, |
||||
history: true, |
||||
center: true, |
||||
|
||||
transition: 'slide', // none/fade/slide/convex/concave/zoom |
||||
|
||||
// Optional reveal.js plugins |
||||
dependencies: [ |
||||
{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } }, |
||||
{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }, |
||||
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }, |
||||
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }, |
||||
{ src: 'plugin/zoom-js/zoom.js', async: true }, |
||||
{ src: 'plugin/notes/notes.js', async: true } |
||||
] |
||||
}); |
||||
|
||||
</script> |
||||
|
||||
<header> |
||||
<h1> |
||||
PRESENTATION TITLE |
||||
</h1> |
||||
</header> |
||||
|
||||
<section id="introduction"> |
||||
<h1> |
||||
ONE TITLE |
||||
</h1> |
||||
|
||||
<p> |
||||
content |
||||
</p> |
||||
</section> |
||||
|
||||
<section id="image"> |
||||
<h1>This one have an image</h1> |
||||
|
||||
<img src="_images/cargo-cult-smokey.jpg" alt="" class="center"> |
||||
</section> |
||||
</body> |
||||
</html> |
||||
|
@ -0,0 +1,788 @@
|
||||
<!doctype html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="utf-8"> |
||||
|
||||
<title>Com Licença!</title> |
||||
|
||||
<meta name="description" content="Por que você deveria aprender Rust"> |
||||
<meta name="author" content="Julio Biason"> |
||||
|
||||
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> |
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui"> |
||||
|
||||
<link rel="stylesheet" href="reveal.js/css/reveal.css"> |
||||
<link rel="stylesheet" href="reveal.js/css/theme/night.css" id="theme"> |
||||
|
||||
<!-- Code syntax highlighting --> |
||||
<link rel="stylesheet" href="reveal.js/lib/css/zenburn.css"> |
||||
|
||||
<!-- Printing and PDF exports --> |
||||
<script> |
||||
var link = document.createElement( 'link' ); |
||||
link.rel = 'stylesheet'; |
||||
link.type = 'text/css'; |
||||
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css'; |
||||
document.getElementsByTagName( 'head' )[0].appendChild( link ); |
||||
</script> |
||||
|
||||
<!--[if lt IE 9]> |
||||
<script src="lib/js/html5shiv.js"></script> |
||||
<![endif]--> |
||||
|
||||
<style type="text/css" media="screen"> |
||||
.happy { |
||||
color: yellow; |
||||
} |
||||
|
||||
.reveal section img { |
||||
border: none; |
||||
} |
||||
|
||||
.reveal ul.empty { |
||||
list-style: none inside; |
||||
padding: 1px; |
||||
} |
||||
|
||||
.revel ul.empty li { |
||||
display: block; |
||||
} |
||||
|
||||
.cursor { |
||||
background-color: #666; |
||||
color: white; |
||||
} |
||||
|
||||
img { |
||||
max-height: 90%; |
||||
} |
||||
|
||||
td.seen { |
||||
font-style: italic; |
||||
font-weight: bold; |
||||
} |
||||
|
||||
.semi-opaque { |
||||
background-color: rgba(0, 0, 0, 0.7); |
||||
padding: 20px; |
||||
} |
||||
</style> |
||||
</head> |
||||
|
||||
<body> |
||||
<div class="reveal"> |
||||
<div class="slides"> |
||||
<section> |
||||
<section data-background="_images/patrick-license.jpeg" data-header> |
||||
<h2 class="semi-opaque">Com Licença!</h2> |
||||
</section> |
||||
</section> |
||||
|
||||
<section data-background="_images/avatar-20170726.png"> |
||||
<div class="semi-opaque"> |
||||
<img src="_images/avatar-20170726.png" alt="Me" style="float:left;width:200px;" class="no-border"> |
||||
|
||||
<div> |
||||
<ul class="empty"> |
||||
<li>Júlio Biason</li> |
||||
<li><a href="https://functional.cafe/@juliobiason">https://functional.cafe/@juliobiason</a></li> |
||||
<li><a href="https://t.me/juliobiason">https://t.me/juliobiason</a></li> |
||||
<li>julio.biason@pm.me</li> |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/avatar-20170726.png"> |
||||
<div class="semi-opaque"> |
||||
<ul> |
||||
<li>Coordenador do meetup <strong>Rust in POA</strong></li> |
||||
<li>Co-coordenador do meetup <strong>PyTche</strong></li> |
||||
<li>Co-coordenador do meetup <strong>Design de Código</strong></li> |
||||
<li>Palestrante do <strong>Tchelinux</strong></li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/avatar-20170726.png"> |
||||
<div class="semi-opaque"> |
||||
<h3>JulioBiason.me</h3> |
||||
|
||||
<ul> |
||||
<li><a href="https://blog.juliobiason.me/">Blog</a></li> |
||||
<li><a href="https://presentations.juliobiason.me/">Presentations</a></li> |
||||
<li><a href="https://git.juliobiason.me/">Git</a></li> |
||||
<li><a href="https://resume.juliobiason.me/">CV/Resumé</a></li> |
||||
<li><a href="https://books.juliobiason.me/">Books</a></li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/copyright.jpeg" alt=""> |
||||
</section> |
||||
|
||||
<section data-background="_images/copyright.jpeg"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Copyright é "Direito autoral ou direito de autor é um conjunto de prerrogativas |
||||
conferidas por lei à pessoa física ou jurídica criadora da obra intelectual, |
||||
para que ela possa usufruir de quaisquer benefícios morais e patrimoniais |
||||
resultantes da exploração de suas criações." |
||||
</p> |
||||
|
||||
<p> |
||||
<a href="https://pt.wikipedia.org/wiki/Direito_autoral">Wikipedia</a> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/copyright.jpeg"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Tirando casos específicos, as licenças se baseam na |
||||
<strong>distribuição</strong> do conteúdo. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/copyright.jpeg"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
<strong>AVISO!</strong> |
||||
</p> |
||||
|
||||
<p> |
||||
Eu não sou advogado, partes legais não são o meu |
||||
forte. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/gpl-logo.png" alt=""> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<ul> |
||||
<li>GPL v2</li> |
||||
<li>GPL v3</li> |
||||
<li>LGPL (v2/v3)</li> |
||||
<li>AGPL (Affero General Public License ou GNU Affero General Public License)</li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>GPL v2</h2> |
||||
|
||||
<ol> |
||||
<li>Executar a aplicação para qualquer fim;</li> |
||||
<li>Estudar como a aplicação funciona e modificar (código derivado);</li> |
||||
<li>Distribuir cópias livremente;</li> |
||||
<li>Distribuir cópias das modificações.</li> |
||||
</ol> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>GPL v3</h2> |
||||
|
||||
<ol start="5"> |
||||
<li>Se houver criptografia, a chave deve ser publicada (tivolization)</li> |
||||
</ol> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Se eu estou fazendo um software específico para |
||||
uma empresa, posso licenciar como GPL? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<strong>Sim.</strong> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Se eu estou fazendo um software específico para uma |
||||
empresa, e licenciar pela GPL, posso cobrar por |
||||
isso? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<strong>Sim.</strong> |
||||
<span class="fragment"> |
||||
Apenas entregue os fontes junto. |
||||
</span> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Posso pegar um software GPL, fazer alterações |
||||
e cobrar por isso? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<strong>Sim.</strong> |
||||
<span class="fragment"> |
||||
Apenas entregue os fontes junto. |
||||
</span> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Posso pegar um software GPL, mudar o nome, |
||||
colocar meu nome nos Copyrights e distribuir? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
Sim, passando a ser considerado "código derivado". |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<strong> |
||||
Você não pode retirar o copyright atual. |
||||
</strong> |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
Você precisa entregar os fontes junto. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Se eu fizer um serviço web qualquer e licenciar |
||||
como GPL, eu tenho que distribuir os fontes para |
||||
todo mundo que acessar o site? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<strong>Não.</strong> |
||||
<span class="fragment">GPLv2/v3 cobrem apenas distribuição.</span> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Posso gerar uma aplicação mobile GPL e colocar no store? |
||||
</p> |
||||
|
||||
<p class="fragment">Não.</p> |
||||
|
||||
<p class="fragment"> |
||||
<em> |
||||
O problema é que quem está distribuindo o |
||||
aplicativo (Apple/Google) não tem uma área |
||||
para distribuição dos fontes e não querem |
||||
se envolver com isso. |
||||
</em> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Se eu usar uma biblioteca/framework qualquer |
||||
que está licenciado sob a GPL, o que acontece? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
Seu código passa a ser distribuído pela GPL. |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<em> |
||||
É considerado código derivado. |
||||
</em> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/lgpl-logo.png" alt=""> |
||||
</section> |
||||
|
||||
<section data-background="_images/lgpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>LGPL</h2> |
||||
|
||||
<p>GNU Lesser General Public License</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/lgpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p>Igual a GPL, mas remove a cláusula de código derivado.</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/lgpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Se eu usar uma biblioteca/framework qualquer |
||||
que está licenciado sob a LGPL, o que acontece? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
Nada. Você usa a biblioteca/framework. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/lgpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Se eu fizer um serviço web qualquer que use uma |
||||
biblioteca LGPL, eu tenho que distribuir os fontes |
||||
para todo mundo que acessar o site? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<strong>Não.</strong> |
||||
<span class="fragment">LGPLv2/v3 cobrem apenas distribuição.</span> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/agpl-logo.png" alt=""> |
||||
</section> |
||||
|
||||
<section data-background="_images/agpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<ol start="6"> |
||||
<li>Fontes devem ser fornecidos junto com o acesso.</li> |
||||
</ol> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/agpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Se eu fizer um serviço web qualquer e licenciar |
||||
como AGPL, eu tenho que distribuir os fontes para |
||||
todo mundo que acessar o site? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
Sim. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/agpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<p>Se eu pegar um servidor web qualquer licenciado |
||||
sob a AGPL, eu tenho que distribuir os fontes para |
||||
todo mundo que acessar o site?</p> |
||||
|
||||
<p class="fragment"> |
||||
Sim. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Quem usa GPL?</h2> |
||||
|
||||
<ul> |
||||
<li>Linux¹</li> |
||||
<li>MySQL</li> |
||||
<li>BusyBox</li> |
||||
<li>VLC</li> |
||||
<li>JVM</li> |
||||
<li>OpenJDK</li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/gpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Linux</h2> |
||||
|
||||
<p> |
||||
"This program is free software; you can redistribute |
||||
it and/or modify it under the terms of the GNU |
||||
General Public License as published by the Free |
||||
Software Foundation; |
||||
<span class="fragment fade-out">either </span>version 2 |
||||
of the License<span class="fragment fade-out">, |
||||
or (at your option) any later version.</span>" |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/lgpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Quem usa LGPL?</h2> |
||||
|
||||
<img class="stretch" src="_images/github-lgpl.png" alt=""> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/lgpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Quem usa LGPL?</h2> |
||||
|
||||
<ul> |
||||
<li>Qt</li> |
||||
<li>Cedega</li> |
||||
<li>LibVLC</li> |
||||
<li>Lazarus</li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/agpl-logo.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Quem usa AGPL?</h2> |
||||
|
||||
<ul> |
||||
<li>Gitorious</li> |
||||
<li>Mastodon</li> |
||||
<li>Nextcloud</li> |
||||
<li>ScyllaDB</li> |
||||
<li>Launchpad</li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/bsd.png" alt=""> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>BSD 0-Clause</h2> |
||||
|
||||
<p> |
||||
Permission to use, copy, modify, and/or distribute |
||||
this software for any purpose with or without fee |
||||
is hereby granted. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>BSD 2-Clause</h2> |
||||
|
||||
<p> |
||||
Redistribution and use in |
||||
<span class="fragment highlight-blue">source and binary |
||||
forms</span>, with or without modification, are |
||||
permitted provided that the following conditions are |
||||
met: |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>BSD 2-Clause</h2> |
||||
<ol> |
||||
<li> |
||||
Redistributions of source code must retain the |
||||
above copyright notice, this list of conditions |
||||
and the following disclaimer. |
||||
</li> |
||||
|
||||
<li> |
||||
Redistributions in binary form must reproduce |
||||
the above copyright notice, this list of |
||||
conditions and the following disclaimer in the |
||||
documentation and/or other materials provided |
||||
with the distribution. |
||||
</li> |
||||
</ol> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>BSD 3-Clause</h2> |
||||
|
||||
<ol start="3"> |
||||
<li> |
||||
Neither the name of the <organization> nor the |
||||
names of its contributors may be used to |
||||
endorse or promote products derived from this |
||||
software without specific prior written |
||||
permission. |
||||
</li> |
||||
</ol> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>BSD 4-Clause</h2> |
||||
|
||||
<ol start="4"> |
||||
<li> |
||||
All advertising materials mentioning features |
||||
or use of this software must display the |
||||
following acknowledgement: This product |
||||
includes software developed by the |
||||
<organization>. |
||||
</li> |
||||
</ol> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Se eu estou fazendo um software específico para |
||||
uma empresa, posso licenciar como BSD? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<strong>Sim.</strong> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Posso pegar um software BSD, mudar o nome, |
||||
colocar meu nome nos Copyrights e distribuir? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
Sim. |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<strong> |
||||
Você não pode retirar o copyright atual. |
||||
</strong> |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
<strong> |
||||
Você não precisa entregar os fontes. |
||||
</strong> |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Posso gerar uma aplicação mobile BSD e colocar no store? |
||||
</p> |
||||
|
||||
<p class="fragment">Sim.</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<p> |
||||
Se eu fizer um serviço web qualquer que use uma |
||||
biblioteca BSD, eu tenho que distribuir os fontes |
||||
para todo mundo que acessar o site? |
||||
</p> |
||||
|
||||
<p class="fragment"> |
||||
Não. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/bsd.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Quem usa BSD?</h2> |
||||
|
||||
<ul> |
||||
<li>FreeBSD (2-clause)</li> |
||||
<li>NetBSD (2-clause)</li> |
||||
<li>OpenBSD (0-clause, ISC)</li> |
||||
<li>Anaconda (3-clause)</li> |
||||
<li>Django (3-clause)</li> |
||||
<li>Flask (0-clause)</li> |
||||
<li>go (3-clause)</li> |
||||
<li>Memcached (3-clause)</li> |
||||
<li>PHPUnit (3-clause)</li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/MIT_logo.svg" alt=""> |
||||
</section> |
||||
|
||||
<section data-background="_images/MIT_logo.svg"> |
||||
<div class="semi-opaque"> |
||||
<h2>MIT</h2> |
||||
|
||||
<p> |
||||
The above copyright notice and this permission |
||||
notice shall be included in all copies or |
||||
substantial portions of the Software. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/MIT_logo.svg"> |
||||
<div class="semi-opaque"> |
||||
<h2>Quem usa MIT?</h2> |
||||
|
||||
<ul> |
||||
<li>.NET core</li> |
||||
<li>AngularJS</li> |
||||
<li>React²</li> |
||||
<li>Babel</li> |
||||
<li>Godot</li> |
||||
<li>Lua</li> |
||||
<li>Pilhas de *.js</li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/MIT_logo.svg"> |
||||
<div class="semi-opaque"> |
||||
<h2>React</h2> |
||||
|
||||
<p> |
||||
Em 2017, o Facebook mudou a licença do React para |
||||
que, caso a empresa seja processada <em>por |
||||
qualquer motivo</em>, o litigiante perde o direito |
||||
de uso do produto. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/apache-license.png" alt=""> |
||||
</section> |
||||
|
||||
<section data-background="_images/apache-license.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Apache 2.0</h2> |
||||
|
||||
<img src="_images/apache-license-2.0.png" alt="" style="max-height:5%"> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/apache-license.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Apache 2.0</h2> |
||||
|
||||
<p> |
||||
Subject to the terms and conditions of this |
||||
License, each Contributor hereby grants to You a |
||||
perpetual, worldwide, non-exclusive, no-charge, |
||||
royalty-free, irrevocable copyright license to |
||||
reproduce, prepare Derivative Works of, publicly |
||||
display, publicly perform, sublicense, and |
||||
distribute the Work and such Derivative Works in |
||||
Source or Object form. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background="_images/apache-license.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Quem usa Apache?</h2> |
||||
|
||||
<ul> |
||||
<li>Android</li> |
||||
<li>Apache *</li> |
||||
<li>Elixir</li> |
||||
<li>IntelliJ IDEA</li> |
||||
<li>Kotlin</li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
|
||||
<section> |
||||
<h2>E se eu não colocar nenhuma licença?</h2> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/public-domain.png" alt=""> |
||||
</section> |
||||
|
||||
<section data-background="_images/public-domain.png"> |
||||
<div class="semi-opaque"> |
||||
<h2>Public domain</h2> |
||||
|
||||
<p> |
||||
The public domain consists of all the creative work |
||||
to which no exclusive intellectual property rights |
||||
apply. Those rights may have expired, been |
||||
forfeited, expressly waived, or may be |
||||
inapplicable. |
||||
</p> |
||||
</div> |
||||
</section> |
||||
|
||||
<section data-background='_images/thats-all-folks.jpg'> |
||||
<div class="semi-opaque"> |
||||
<ul class="empty"> |
||||
<li><a href="https://functional.cafe/@juliobiason">https://functional.cafe/@juliobiason</a></li> |
||||
<li><a href="https://t.me/juliobiason">https://t.me/juliobiason</a></li> |
||||
<li>julio.biason@pm.me</li> |
||||
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li> |
||||
</ul> |
||||
</div> |
||||
</section> |
||||
</div> |
||||
</div> |
||||
|
||||
<script src="reveal.js/lib/js/head.min.js"></script> |
||||
<script src="reveal.js/js/reveal.js"></script> |
||||
|
||||
<script> |
||||
// Full list of configuration options available at: |
||||
// https://github.com/hakimel/reveal.js#configuration |
||||
Reveal.initialize({ |
||||
controls: true, |
||||
progress: true, |
||||
history: true, |
||||
center: true, |
||||
// showNotes: true, |
||||
|
||||
transition: 'fade', // none/fade/slide/convex/concave/zoom |
||||
|
||||
// Optional reveal.js plugins |
||||
dependencies: [ |
||||
{ src: 'reveal.js/lib/js/classList.js', condition: function() { return !document.body.classList; } }, |
||||
{ src: 'reveal.js/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }, |
||||
{ src: 'reveal.js/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }, |
||||
{ src: 'reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }, |
||||
{ src: 'reveal.js/plugin/zoom-js/zoom.js', async: true }, |
||||
{ src: 'reveal.js/plugin/notes/notes.js', async: true } |
||||
] |
||||
}); |
||||
</script> |
||||
|
||||
</body> |
||||
</html> |
@ -0,0 +1,285 @@
|
||||
<!doctype html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="utf-8"> |
||||
|
||||
<title>Flink</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); |
||||
} |
||||
|
||||
img.padding { |
||||
padding: 10px; |
||||
background-color: #fff !important; |
||||
} |
||||
</style> |
||||
</head> |
||||
|
||||
<body> |
||||
<div class="reveal"> |
||||
<div class="slides"> |
||||
<section> |
||||
<section data-background="_images/streamprocessing-flink.png" data-header> |
||||
<h2 class="semi-opaque">Flink</h2> |
||||
</section> |
||||
</section> |
||||
|
||||
<section> |
||||
<section> |
||||
<pre><code> |
||||
cat log.log | grep ERROR | cut -f2 -d: > errors.txt |
||||
</code></pre> |
||||
</section> |
||||
|
||||
<section> |
||||
<h4>Entrada</h4> |
||||
|
||||
<h2><pre><code>cat log.log</code></pre></h2> |
||||
</section> |
||||
|
||||
<section> |
||||
<h4>Processamento</h4> |
||||
|
||||
<h2><pre><code>grep ERROR</code></pre></h2> |
||||
|
||||
<h2> |
||||
<pre><code>cut -f2 -d:</code></pre> |
||||
</h2> |
||||
</section> |
||||
|
||||
<section> |
||||
<h4>Saída</h4> |
||||
|
||||
<h2> |
||||
<pre><code>> errors.txt</code></pre> |
||||
</h2> |
||||
</section> |
||||
</section> |
||||
|
||||
<section> |
||||
<section> |
||||
<h4>cat</h4> |
||||
|
||||
<h3>Tem começo e fim</h3> |
||||
|
||||
<h2 class="fragment">"bounded"</h2> |
||||
</section> |
||||
|
||||
<section> |
||||
<h4>Dados "infinitos"</h4> |
||||
|
||||
<h2 class="fragment">"unbounded"</h2> |
||||
</section> |
||||
</section> |
||||
|
||||
<section> |
||||
<section> |
||||
<img src="_images/flink1.png" alt="" class="stretch"> |
||||
</section> |
||||
|
||||
<section> |
||||
<img src="_images/flink2.png" alt="" class="stretch"> |
||||
</section> |
||||
|
||||
<section> |
||||
<img src="_images/flink3.png" alt="" class="stretch"> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/datastream.png" alt=""> |
||||
</section> |
||||
|
||||
<section> |
||||
<h4>Operators</h4> |
||||
|
||||
<ul> |
||||
<li><code>map</code></li> |
||||
<li><code>flatMap</code></li> |
||||
<li><code>filter</code></li> |
||||
<li><code>reduce</code></li> |
||||
<li class="fragment"><code>split/select</code></li> |
||||
<li class="fragment"><code>join</code></li> |
||||
<li class="fragment"><code>keyBy</code></li> |
||||
<li class="fragment"><code>window</code></li> |
||||
</ul> |
||||
</section> |
||||
</section> |
||||
|
||||
<section> |
||||
<section> |
||||
<img src="_images/unclephil-time.jpg" alt="" class="stretch"> |
||||
</section> |
||||
|
||||
<section> |
||||
<img src="_images/unclephil-step0.png" alt="" class="stretch padding"> |
||||
</section> |
||||
|
||||
<section> |
||||
<img src="_images/unclephil-step1.png" alt="" class="stretch padding"> |
||||
</section> |
||||
|
||||
<section> |
||||
<img src="_images/unclephil-step2.png" alt="" class="stretch padding"> |
||||
</section> |
||||
|
||||
<section> |
||||
<img src="_images/unclephil-step3.png" alt="" class="stretch padding"> |
||||
</section> |
||||
|
||||
<section> |
||||
<img src="_images/unclephil-step4.png" alt="" class="stretch padding"> |
||||
</section> |
||||
|
||||
<section> |
||||
<img src="_images/unclephil-step5.png" alt="" class="stretch padding"> |
||||
</section> |
||||
|
||||
<section> |
||||
<img src="_images/unclephil-step6.png" alt="" class="stretch padding"> |
||||
</section> |
||||
|
||||
<section> |
||||
<img src="_images/unclephil-step7.png" alt="" class="stretch padding"> |
||||
</section> |
||||
|
||||
<section> |
||||
<img src="_images/unclephil-step8.png" alt="" class="stretch padding"> |
||||
</section> |
||||
|
||||
<section> |
||||
<img src="_images/unclephil-step9.png" alt="" class="stretch padding"> |
||||
</section> |
||||
|
||||
<section> |
||||
<img src="_images/unclephil-step10.png" alt="" class="stretch padding"> |
||||
</section> |
||||
</section> |
||||
|
||||
<section> |
||||
<section> |
||||
<img src="_images/dunno.jpg" alt="" class="stretch"> |
||||
</section> |
||||
|
||||
<section> |
||||
<img src="_images/flink-cluster1.png" alt="" class="stretch"> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/flink-cluster2.png" alt=""> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/flink-cluster3.png" alt=""> |
||||
</section> |
||||
</section> |
||||
|
||||
<section> |
||||
<section> |
||||
<img class="stretch" src="_images/unclephil-flinkpipelinereal.png" alt=""> |
||||
</section> |
||||
</section> |
||||
|
||||
<section> |
||||
<section> |
||||
<img class="stretch" src="_images/jobmanager-1.png" alt=""> |
||||
</section> |
||||
|
||||
<section> |
||||
<img class="stretch" src="_images/plan_visualizer.png" alt=""> |
||||
</section> |
||||
</section> |
||||
|
||||
<section data-background='_images/thats-all-folks.jpg'> |
||||
<section></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: |
||||
// 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> |