O documento apresenta o LuaRocks, o gerenciador de pacotes para módulos Lua. Em três frases, descreve que o LuaRocks permite instalar, remover e gerenciar as dependências de módulos Lua, assim como compilar módulos escritos em Lua ou C. O documento também discute a evolução do projeto LuaRocks ao longo dos últimos 5 anos.
Apresentação de palestra onde falei sobre a cultura DevOps e o ambiente de redes. SDN, NFV e Docker, dentre outras soluções e paradigmas, dão força à proposta de entrega ágil e autônoma de infraestrutura e redes.
O material conta com o passo a passo para a criação de um laboratório de SDN utilizando Open vSwitch, Docker e Ryu.
Apresentação Docker básico (história, comunidade, conceito, vm vs docker, comandos, dockerfile, docker compose, docker swarn, docker engine)
Para ver o slide em qualidade melhor, fazer o download
Aprendendo a utilizar a ferramenta docker para criar um ambiente de desenvolvimento para Ruby on Rails. Nesta aula, vamos utilizar comandos rails para gerar um scaffold simples com o banco de dados Postgresql em containers com docker.
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Renato Groff
Apresentação sobre primeiros passos no uso de Docker, bem como dicas e truques na manipulação de containers. Palestra online realizada para profissionais da empresa Tecnobank no dia 20/04/2020.
Apresentação de palestra onde falei sobre a cultura DevOps e o ambiente de redes. SDN, NFV e Docker, dentre outras soluções e paradigmas, dão força à proposta de entrega ágil e autônoma de infraestrutura e redes.
O material conta com o passo a passo para a criação de um laboratório de SDN utilizando Open vSwitch, Docker e Ryu.
Apresentação Docker básico (história, comunidade, conceito, vm vs docker, comandos, dockerfile, docker compose, docker swarn, docker engine)
Para ver o slide em qualidade melhor, fazer o download
Aprendendo a utilizar a ferramenta docker para criar um ambiente de desenvolvimento para Ruby on Rails. Nesta aula, vamos utilizar comandos rails para gerar um scaffold simples com o banco de dados Postgresql em containers com docker.
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Renato Groff
Apresentação sobre primeiros passos no uso de Docker, bem como dicas e truques na manipulação de containers. Palestra online realizada para profissionais da empresa Tecnobank no dia 20/04/2020.
Uma visão geral do docker, uma ferramenta de gerenciamento de contêiners para simular o comportamento de aplicações em ambientes totalmente gerenciados.
A apresentação ensina os conceitos básicos e apresente um bloco de anotações com os principais comandos para o dia-a-dia.
Linux Containers: do que são feitos? de onde vem? quem os alimenta?Marcos Paulo de Souza
Neste apresentação será mostrado como são criados containers, o isolamento entre os processos que se encontram dentro dos containers, e as ferramentas adjacentes para assegurar a segurança dos ambientes que executam esses containers.
Alguns assuntos tratados:
* Kernel linux
* Namespaces
* Linux Security Modules (SELinux e Apparmor)
* Seccomp
* Bubblewrap, runc, docker, podman, e ferramentas relacionadas à execução de containers
Esta apresentação é indicada a todos que queiram entender mais sobre containers, além do uso comum do Docker e outras ferramentas do mesmo tipo.
Docker: o que é, de onde veio, como funciona e para o que serve.
Vídeo: https://www.youtube.com/watch?v=G66TRJ0n93Y
Código fonte da apresentação: https://github.com/nuxlli/docker-sp-18-03
Apresentação da palestra realizada na Conferência Brasileira de PostgreSQL - PGBR em 2013 na cidade de Porto Velho - Rondônia - Brasil, que apresenta a integração da Linguagem Python com o banco de dados PostgreSQL usando psycopg2.
Uma breve apresentação sobre este fantástico Sistema Gerenciador de Banco de Dados Objeto-Relacional.
Razões para adotá-lo, curiosidades e características.
Docker, facilitando a vida do desenvolvimentoSérgio Lima
Dessa vez, vamos falar de um "calo" de muitos desenvolvedores, ambientes, vamos falar de uma das principais ferramentas que facilitam e nos auxiliam nessa jornada, o Docker.
Exemplos no githug: https://github.com/sergiosdlima/meetup-phpdf-docker
Apresentação feita no nono meetup PHP FC de Brasília.
Última aula de Android Core, sobre aplicações. Nesta aula veremos conceitos e implementações de Services, Broadcasts receivers e código nativo, utilizando NDK e JNI.
Uma visão geral do docker, uma ferramenta de gerenciamento de contêiners para simular o comportamento de aplicações em ambientes totalmente gerenciados.
A apresentação ensina os conceitos básicos e apresente um bloco de anotações com os principais comandos para o dia-a-dia.
Linux Containers: do que são feitos? de onde vem? quem os alimenta?Marcos Paulo de Souza
Neste apresentação será mostrado como são criados containers, o isolamento entre os processos que se encontram dentro dos containers, e as ferramentas adjacentes para assegurar a segurança dos ambientes que executam esses containers.
Alguns assuntos tratados:
* Kernel linux
* Namespaces
* Linux Security Modules (SELinux e Apparmor)
* Seccomp
* Bubblewrap, runc, docker, podman, e ferramentas relacionadas à execução de containers
Esta apresentação é indicada a todos que queiram entender mais sobre containers, além do uso comum do Docker e outras ferramentas do mesmo tipo.
Docker: o que é, de onde veio, como funciona e para o que serve.
Vídeo: https://www.youtube.com/watch?v=G66TRJ0n93Y
Código fonte da apresentação: https://github.com/nuxlli/docker-sp-18-03
Apresentação da palestra realizada na Conferência Brasileira de PostgreSQL - PGBR em 2013 na cidade de Porto Velho - Rondônia - Brasil, que apresenta a integração da Linguagem Python com o banco de dados PostgreSQL usando psycopg2.
Uma breve apresentação sobre este fantástico Sistema Gerenciador de Banco de Dados Objeto-Relacional.
Razões para adotá-lo, curiosidades e características.
Docker, facilitando a vida do desenvolvimentoSérgio Lima
Dessa vez, vamos falar de um "calo" de muitos desenvolvedores, ambientes, vamos falar de uma das principais ferramentas que facilitam e nos auxiliam nessa jornada, o Docker.
Exemplos no githug: https://github.com/sergiosdlima/meetup-phpdf-docker
Apresentação feita no nono meetup PHP FC de Brasília.
Última aula de Android Core, sobre aplicações. Nesta aula veremos conceitos e implementações de Services, Broadcasts receivers e código nativo, utilizando NDK e JNI.
Docker é uma engine de contêires linux, poderosa, e que vem revolucionando o mercado nos últimos 2 anos, ganhando apoio de grandes empresas como google e microsoft.
Nesta apresentação conheceremos a jornada e lições aprendidas de um sysadmin praticando a cultura DevOps ao implantar sistemas monolíticos da forma tradicional e microsserviços usando pipelines no Jenkins
Inovações no mundo das distribuições Linux - Victor Hugo Aguiar Pacce - Tchel...Tchelinux
Nesta palestra teremos uma visão geral das distribuições Linux, quais estão inovando e para o lado que as coisas estão andando.
Victor Hugo Aguiar Pacce cursa Ciência da Computação pela Universidade de Santa Cruz do Sul.
Mais informações: https://github.com/drakonis
Nessa apresentação mostro alguns conceitos básicos para quem quer iniciar com o Docker! É claro que será melhorado, o farei em breve, procurei citar alguns conceitos que tenho utilizado e podem ser úteis para quem quer iniciar com Docker! Estou aberto à críticas e sugestões.
JavaDay2018 - Docker - Além do HelloWorldThiago Soares
Apresentação utilizada no JavaDay 2018 em Belém do Pará.
Uma rápida introdução ao Docker, Dockerfile e Docker-Compose e muitos links com as práticas DevOps.
Transportando as aplicações entre vários ambientes com DockerAécio Pires
Nesta palestra aprenderemos o que é Docker, conteiner, imagens e quais as principais ferramentas do Docker usadas para implantar e transportar contêineres de aplicação entre vários tipos de ambientes.
Tutorial que tem como objetivo auxiliar a instalação do projeto de integração das plataformas JADE e ROS. Desde a criação do projeto Maven, dentro do Eclipse, até a inserção execução de um serviço funcional.
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Embarcados
Nesse webinar conheceremos o Yocto Project, um conjunto de ferramentas open-source que possuem o objetivo de facilitar o desenvolvimento de distribuições e sistemas Linux. Também vamos entender como utilizar a ferramenta pode auxiliar na automatização do desenvolvimento de sistemas Linux Embarcado.
https://embarcados.com.br/webinar-utilizando-o-yocto-project-para-automatizar-o-desenvolvimento-em-linux-embarcado/
Semelhante a LuaRocks - palestra Hack'n'Rio 2011 (20)
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
LuaRocks - palestra Hack'n'Rio 2011
1. LuaRocks
O gerenciador de pacotes
para módulos Lua
Hisham Muhammad
h@hisham.hm
http://www.luarocks.org
2. Plano
● Rápida Introdução
● Lua? LuaRocks?
● LuaRocks
● Conhecendo a ferramenta
● Evolução do projeto
● Passeio “histórico” por esses 5 anos de LuaRocks
● Experiências sobre a evolução de um projeto de
software livre
3. Lua
● Linguagem “script” criada na PUC-Rio
● Dinâmica, extensível, bytecode+VM...
● Com algumas características peculiares
●
Minimalismo → tamanho e desempenho
● Projetada como linguagem de extensão para
embutir em outros programas
● Muito usada na indústria, especialmente jogos
● Adobe Photoshop Lightroom, Apache, nmap, Wireshark, VLC...
● Angry Birds, Company of Heroes, Civ 5, Garry's Mod, Crysis, Star
Wars Battlefront, World of Warcraft...
4. A “cara” de Lua
function process(filename, fn, ...)
local f = io.open(filename)
local rets = {}
for line in f:lines() do
rets[#rets+1] = { fn(line, …) }
end
f:close()
return rets
end
matches = process("file.txt", string.find, "foo")
for i, match in ipairs(matches) do
print(i, table.concat(match), ", ")
end
5. O que é LuaRocks
● Gerenciador de pacotes...
● similar a dpkg (apt-get), RPM, etc.
● similar a RubyGems, Python Eggs,
npm, CPAN, etc.
● ...para módulos Lua
● módulos = bibliotecas para estender a
linguagem
6. Por que LuaRocks?
(e RubyGems, Python Eggs, npm, CPAN, etc...)
Linguagens “script” costumam ter gerenciadores de
módulos próprios por dois motivos:
● muitos módulos
● CPAN: 23.866 pacotes
● Ubuntu: ~37.000 pacotes
● portabilidade
7. LuaRocks
● Tarefas de um gerenciador de módulos
● Instalar
– ...e certificar-se que Lua encontrará o módulo
● Remover
– ...e certificar-se que as coisas não explodam
● Verificar dependências
– ...ao instalar e ao remover
● Compilar
– ...porque módulos Lua podem ser escritos
em Lua ou em C (ou qualquer outra linguagem,
mas tipicamente C)
8. LuaRocks e seu “ecossistema”
Ferramentas de linha de comando
Formato de regras para empacotamento
Formato de arquivo para os pacotes
Servidor de módulos empacotados
9. Ferramentas
A parte que o usuário de um módulo vê:
~$ wget http://lua.org/ftp/lua-5.1.4.tar.gz
~$ tar zxvpf lua-5.1.4.tar.gz
~$ cd lua-5.1.4; make linux; sudo make install; cd ..
~$ wget http://luarocks.org/releases/luarocks-2.0.6.tar.gz
~$ tar zxvpf luarocks-2.0.6.tar.gz
~$ cd luarocks-2.0.6; ./configure; sudo make install; cd ..
~$ sudo luarocks install luasocket
~$ lua
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
> require "socket"
10. Comandos do luarocks
● build ● remove
para compilar para desinstalar
● install ● pack
para usar binários para gerar um pacote
● download ● path
para só baixar para configurar o ambiente
● list ● unpack
para listar os pacotes instalados para quem quer desempacotar e
mexer no conteúdo
● show
para mostrar informações de um ● make
pacote instalado para testar, no desenvolvimento
● help
sempre importante
11. Como criar um pacote
Um pacote em LuaRocks é um “rock”
Ele é criado a partir de um arquivo “rockspec”
12. Rocks
● Um rock contém módulos e o rockspec
● Pode conter os binários ou os fontes
● Arquivo com nome no formato
pacote-versao-revisao.tipo.rock:
● Exemplos: luafilesystem-1.5.0-2.src.rock,
lpeg-0.10-2.linux-x86.rock, lxsh-0.8.6-1.all.rock
● Na verdade é um arquivo .zip, com conteúdo
padronizado:
● Arquivos rockspec e rock_manifest na raiz
● Subdiretórios lua/, lib/, bin/...
13. Rockspecs
● Um rockspec um arquivo texto
com regras que indicam:
● De onde baixar os fontes
● Quais as suas dependências
● Como compilar
● Como instalar
● Na verdade é um arquivo Lua
● Um dos talentos de Lua é servir como linguagem
de descrição de dados
14. A “cara” de um rockspec
package = "LPeg"
version = "0.9-1"
source = {
url = "http://www.inf.puc-rio.br/~roberto/lpeg/lpeg-0.9.tar.gz",
md5 = "84a4f5fb4b87b90bb1b7284ec6bb69bc"
}
description = {
summary = "Parsing Expression Grammars For Lua",
detailed = [[LPeg is a new pattern-matching library for Lua...]],
homepage = "http://www.inf.puc-rio.br/~roberto/lpeg.html",
license = "MIT/X11"
}
dependencies = {
"lua >= 5.1"
}
build = {
type = "builtin",
modules = {
lpeg = "lpeg.c",
re = "re.lua"
},
copy_directories = { "tests" }
}
15. Usando Lua como formato de dados
● Permite bastante expressividade, declarar
variáveis auxiliares, etc.
● O rockspec é carregado em um ambiente
especial, sem acesso aos módulos padrão de
Lua
● Você não consegue chamar io.open, os.execute
e afins em um rockspec
● O pior que você poderia fazer é um
while true do end
e congelar a ferramenta de linha de comando
16. Disponibilizando os rocks
Publicando online repositórios,
chamados de “rocks servers”
Podem ser gerenciados usando a
ferramenta de linha de comando luarocks-admin
17. Rocks server
● Um conjunto de pacotes .rock
disponíveis online é um “rocks server”
● Um conjunto de rocks instalados localmente é
chamado de “rocks tree”
● Na verdade, é só uma URL HTTP
● Pode-se usar qualquer servidor web
● Diretório contendo arquivos .rock e um arquivo
manifest
● O manifest e um index.html são gerados pelo
rodando luarocks-admin no diretório
18. Comandos do luarocks-admin
● make-manifest
para preparar um diretório para ser um repositório
● add
para adicionar pacotes a um repositório
● remove
para remover pacotes de um repositório
● refresh-cache
para atualizar a cache local de um repositório
(bom para mirrors, backups)
● help
não pode faltar
19. Repositório público do LuaRocks.org
● A maioria dos desenvolvedores nunca lida com
a gerência de um rocks server
● Módulos são disponibilizados no server público:
http://luarocks.org/repositories/rocks/
● Há também um repositório para versões
“unstable”, que baixa fontes direto do
Git/SVN/etc.:
http://luarocks.org/repositories/rocks-scm/
20. Atualmente
● LuaRocks está na versão 2.0.6
● Temos 157 projetos no repositório público
(573 rocks disponibilizados)
● É muito pouco perto dos 23.866 de Perl
● Mas já é ~4x mais do que os ~40 módulos Lua
empacotados como .deb (Debian/Ubuntu)
● Para várias plataformas, simplesmente
não havia um repositório unificado de módulos
21. Período de desenvolvimento
● 0.1: agosto 2007
● 1.0: setembro 2008
● 0.2: outubro 2007
● 0.3: dezembro 2007
● 1.0.1: março 2009
● 0.3.1: dezembro 2007
● 2.0: outubro 2009
● 0.3.2: dezembro 2007 ● 2.0.1: outubro 2009
● 0.4: janeiro 2008
● 2.0.2: abril 2010
● 0.4.1: janeiro 2008
● 0.4.2: fevereiro 2008
● 2.0.3: setembro 2010
● 0.4.3: março 2008 ● 2.0.4: dezembro 2010
● 0.5: abril 2008 – 2.0.4.1: janeiro 2010
● 0.5.1: abril 2008 ● 2.0.5: agosto 2011
● 0.5.2: maio 2008
● 2.0.6: outubro 2011
● 0.6: junho 2008
22. Gênese
● Surgiu no contexto do Projeto Kepler
http://www.keplerproject.org
● Projeto criado pela Fábrica Digital e PUC-Rio em 2004 com o
objetivo de criar uma plataforma para programação web usando
Lua
● Financiamento via parceria empresa-universidade, FINEP,
CNPq...
● Encerrado o projeto institucional, hoje os projetos de software
livre surgidos ali são mantidos por voluntários como eu
23. Fase 0.x: “release early, release often”
● 0.1: agosto 2007
● Não havia uma cultura bem
● 0.2: outubro 2007 estabelecida de módulos reusáveis
● 0.3: dezembro 2007 em Lua
● 0.3.1: dezembro 2007 ● Lua existe desde '93-'94, o sistema
● 0.3.2: dezembro 2007 de módulos só entrou em 2006
● 0.4: janeiro 2008 ● Primeiras versões serviam para
● 0.4.1: janeiro 2008 atender ao projeto Kepler
● 0.4.2: fevereiro 2008 ● Popularidade dos módulos Kepler
● 0.4.3: março 2008 alavancaram o LuaRocks
● 0.5: abril 2008 ● Com o tempo ganhamos usuários, e
● 0.5.1: abril 2008 com eles módulos e bug reports
● 0.5.2: maio 2008 ● E com os bug reports, releases
● 0.6: junho 2008
24. Fase 1.x: estabilizando
● 1.0: setembro 2008 ● Objetivos do design inicial atingidos
● 1.0.1: março 2009 ● Algumas decisões de design
● 2.0: outubro 2009 serviam bem ao Kepler, mas iam
● 2.0.1: outubro 2009 contra a preferência da maioria da
comunidade Lua
● 2.0.2: abril 2010
● 2.0.3: setembro 2010
● Alguns usuários compraram a ideia,
outros não
● 2.0.4: dezembro 2010
– 2.0.4.1: janeiro 2010
● Fim do financiamento institucional
● 2.0.5: agosto 2011 ● Deixa de ser um emprego, passa a
● 2.0.6: outubro 2011
trabalho voluntário
● E os releases rareiam
● ...mas o Lua Team enfim demonstra
interesse no LuaRocks!
25. Fase 2.x: redesign e continuidade
● 1.0: setembro 2008 ● Redesign das partes problemáticas
● 1.0.1: março 2009 ● Para entrar em sintonia com a
● 2.0: outubro 2009 comunidade e funcionar out of the
box com Lua padrão
● 2.0.1: outubro 2009
● Aceitação melhorou bastante,
● 2.0.2: abril 2010
mas ainda há alguma resistência
● 2.0.3: setembro 2010
● Base de usuários vem crescendo
● 2.0.4: dezembro 2010
– 2.0.4.1: janeiro 2010
● Parceria com a distro “Lua for
Windows”
● 2.0.5: agosto 2011
● 2.0.6: outubro 2011
● LuaRocks sendo usado em ambiente
de produção
● E com isso trabalhos freelance
aparecendo
26. O futuro
● O feedback dos usuários aponta melhorias para o
formato rockspec
● mas quebrar compatibilidade é sempre traumático
● A maior falta sentida atualmente é de um serviço web
para contribuição de módulos para o repositório
público
● atualmente os módulos são enviados via mailing list
● potencial aberto para estabelecer um novo hub para a
comunidade Lua, com a atual ausência do luaforge.net
● isto seria toda uma nova frente de trabalho
27. Algumas lições aprendidas
● Compreender o contexto da comunidade onde
o projeto se insere
● Mesmo (e principalmente!) quando se quer
“mudá-la” um pouco
● Todo projeto existe dentro de um contexto
● Experiência sentida também em projetos anteriores
(GoboLinux, htop)
● Procure entender e se encaixar esse contexto,
não para ser político, mas porque isso é necessário
para que o software seja útil
28. Programar em comunidade
● É preciso criar condições para que as pessoas possam
ajudar o projeto
● Documentação
– É chato mas é necessário
– Para usuários (manual, help) e programadores (LuaDoc)
● “Suporte”: interação em listas, bug trackers, etc.
● Escolhas de design e implementação
– LuaRocks teve seus erros e seus acertos
● Você só ganha retorno depois de formar uma massa
crítica de usuários
– Mas depois que essa barreira é quebrada, o esforço “se paga”, na
forma de bugfixes, features...