Slide 1

Slide 1 text

GNU/Linux e Python Bem vindo ao meu mundo!

Slide 2

Slide 2 text

Rafael Henrique da Silva Correia @rafaelhenrique http://blog.abraseucodigo.com.br - “Futuro” desenvolvedor Python na CargoBR - “Coordenador/instrutor” do Grupo de Estudos Python Sorocaba - Membro do GruPy-SP - Viciado em World of Warcraft (for the horde!) - Palestrante nas horas que sobram - Certificado LPIC-2 por puro “hobbie” Eu

Slide 3

Slide 3 text

● Richard Stallman e Linus Torvalds ● GNU is not UNIX! ● 4 liberdades x GPL x Software livre ○ Liberdade de executar o programa para qualquer propósito ○ Liberdade para estudar/adaptar às suas necessidades ○ Liberdade de redistribuir cópias ○ A liberdade de aperfeiçoar o programa e liberar os seus aperfeiçoamentos O que é GNU/Linux? Quem é GNU, quem é Linux e que salada é essa?

Slide 4

Slide 4 text

● Motivo 1: Porque Linux “é de graça” e software livre! ● Motivo 2: Porque roda em qualquer máquina! ● Motivo 3: Porque o Windows te faz chorar! ● Motivo 4: Porque muitas bibliotecas são incompatíveis ou muito trabalhosas de se usar no Windows! ● Motivo 5: Repita motivo 3! ● Motivo 6: Repita motivo 3! ● Motivo 7: …. acho que vocês já entenderam Por que usar Python no GNU/Linux? NO MORE TEARS!

Slide 5

Slide 5 text

Chega de papo! Hands-on

Slide 6

Slide 6 text

VirtualBox Por que usar? ● Running multiple operating systems simultaneously ● Easier software installations ● Testing and disaster recovery ● Infrastructure consolidation https://www.virtualbox.org/manual/UserManual.html

Slide 7

Slide 7 text

VirtualBox (Ilustrando conforme nosso exemplo) Como funciona? https://www.virtualbox.org/manual/UserManual.html S.O. da sua máquina Hardware da sua máquina

Slide 8

Slide 8 text

/ /bin /boot /dev /etc O sistema de arquivos padrão O que são, onde vivem e do que se alimentam? /home /lib /lib64 /media /mnt /opt /proc /root /sbin /srv /tmp /usr /var http://www.pathname.com/fhs/pub/fhs-2.3.pdf

Slide 9

Slide 9 text

O sistema de arquivos padrão O que são, onde vivem e do que se alimentam? http://www.pathname.com/fhs/pub/fhs-2.3.pdf ● / : diretório inicial, também chamado de raiz ● /bin : programas fundamentais para o S.O. ● /boot : arquivos estáticos para carregamento do S.O. (bootloader) ● /dev : arquivos de dispositivos de caractere e de bloco ● /etc : configurações gerais ● /home : armazenamento de arquivos dos usuários ● /lib e /lib64 : arquivos de bibliotecas de sistema (em geral C/C++)

Slide 10

Slide 10 text

O sistema de arquivos padrão O que são, onde vivem e do que se alimentam? ● /media : ponto de montagem para mídias removíveis ● /mnt : ponto de montagem para filesystems temporários ● /opt : instalação de programas extras de natureza “não linux” ● /proc : imagem do kernel em execução ● /root : diretório para armazenamento de arquivos pessoais do superusuário ● /sbin : programas fundamentais para o S.O. que precisam de permissão de superusuário http://www.pathname.com/fhs/pub/fhs-2.3.pdf

Slide 11

Slide 11 text

O sistema de arquivos padrão O que são, onde vivem e do que se alimentam? ● /srv : “antigo diretório” que servia arquivos de um servidor ● /tmp : diretório de arquivos temporários, limpo quando S.O. é reiniciado ● /usr : contém uma sub-estrutura similar a de / porém com arquivos/comandos “menos essenciais” ao S.O. ● /var : contém arquivos de informações variáveis, cache, logs.. etc http://www.pathname.com/fhs/pub/fhs-2.3.pdf

Slide 12

Slide 12 text

O sistema de arquivos padrão Informações bacanas http://www.pathname.com/fhs/pub/fhs-2.3.pdf ● O usuário comum (não root) só tem permissão DE ESCRITA no diretório pessoal dele (/home/fulano) e na pasta /tmp

Slide 13

Slide 13 text

● /boot : arquivos de inicialização usam um certo espaço considerável ● / : encheu a raiz você trava o sistema ● /tmp : é um diretório público onde todos podem escrever ● swap : obrigatoriamente deve ser separada ● /usr : existem programas bem pesados que ficam no /usr ● /var : arquivos de cache/temporários tendem a crescer ● /opt : existem programas bem pesados que ficam no /opt ● /home : seu diretório pessoal é legal deixar separado para eventuais reinstalações do sistema Dividindo partições Dividir para conquistar! O que é legal separar e por que?

Slide 14

Slide 14 text

● sda → 21.5 GB ○ Primárias ■ /boot → 700 MB ■ / → 700 MB ■ swap → 1 GB ○ Lógicas ■ /tmp → 700 MB ■ /var → 5 GB ■ /usr → 5 GB ■ /home → 8.4 GB Como ficou nossa VM? Um exemplo usável (apenas para desenvolvimento) ● Áudio desativado ● Memória RAM 1 GB ● Rede em modo Bridge associada a interface em uso (wi-fi ou cabeada) ● S.O. Ubuntu 16.10 Server amd64 ● Pacotes standard, nenhum adicional ● Grub instalado

Slide 15

Slide 15 text

Simbologia para permissão de execução de comandos Como é a representação em tutoriais? ● # : Executar comando como root/superusuário ● $ : Executar comando como usuário normal

Slide 16

Slide 16 text

Instalando/configurando e usando ssh O que um iniciante deve saber? # apt-get update # apt-get install ssh # vim /etc/ssh/sshd_config # netstat -naptul https://help.ubuntu.com/community/SSH/OpenSSH/Configuring

Slide 17

Slide 17 text

Mais mobilidade usando SSH O que um iniciante deve saber? ● Se você usa Windows recomendo usar MobaXTerm para acessar sua VM remotamente e trabalhar mais tranquilo ● Se você usa Linux/Mac OSX basta instalar o SSH client ● Ou você pode usar a VM como está mesmo, porém é meio chato de ler, copiar e colar coisas :( https://help.ubuntu.com/community/SSH/OpenSSH/Configuring

Slide 18

Slide 18 text

O editor de texto VIM vim-nox, um vim parrudão # apt-get update # apt-get install vim-nox

Slide 19

Slide 19 text

O editor de texto VIM O que um iniciante deve saber? ● i → modo de inserção. Digite ESC para retornar ao modo Normal ● :wq → salva e sai do editor ● :q →sai sem salvar nada ● :w →salva ● dd → “recorta” linha corrente ● yy → copia ● p → cola ● :help → ajuda de determinado comando

Slide 20

Slide 20 text

Comandos Quais são os comandos indispensáveis? ● echo ● pwd ● man ● cat ● more ● less ● sort ● grep ● wc 14 comandos ● cp ● mkdir ● rm ● ls ● head ● tail

Slide 21

Slide 21 text

Comandos extras Quais são os comandos MUITO ÚTEIS? ● find ● locate ● updatedb ● du ● df ● chmod ● chown ● ifconfig ● ping ● netstat 10 comandos To-Do: Estes comandos ficam para lição de casa, espero que me perguntem e/ou descubram o que eles fazem [email protected]

Slide 22

Slide 22 text

echo mostra texto na tela - ecoa texto na tela ● Exemplos: $ echo “teste” $ echo $HOME ● Exemplo mais bacana: $ if [ $USER == “rafael” ]; then echo “É o Rafael”; else echo “Não é o Rafael”; fi

Slide 23

Slide 23 text

pwd print working directory - exibir/mostrar diretório de trabalho ● Exemplo: $ pwd ● Exemplo mais bacana: $ echo “Estou em $(pwd)”

Slide 24

Slide 24 text

man / apropos / help exibe manual do comando exibe “sumário” para achar comandos exibe help básico de um comando ● Exemplos: $ man ls $ apropos list $ ls --help A PROPÓSito como se chama este comando?

Slide 25

Slide 25 text

aproposITO O comando estressadinho ● Quando você digita apropos sem parâmetros ele te “xinga”: $ apropos apropos o que?

Slide 26

Slide 26 text

cat concatena arquivos / exibe arquivos ● Exemplos: $ echo “Rafael” > nome.txt && echo “Henrique” > sobrenome.txt $ cat nome.txt $ cat nome.txt sobrenome.txt $ cat nome.txt sobrenome.txt > nome_completo.txt $ cat -n nome_completo.txt

Slide 27

Slide 27 text

pipe / redirecionamento Como manipular streams de texto? ● > : manda a saída para um arquivo que você apontar sobrescrevendo o arquivo ● >> : manda a saída para um arquivo que você apontar adicionando ao arquivo ● | : Empilha comandos em sequência e faz com que a saída de um seja a entrada do outro Extra: Pipe é um caractere que fica no seu teclado, ninguém o usa até começar a usar Linux ou Mac OSX

Slide 28

Slide 28 text

Pipe Cano / Tubo cat /etc/passwd | cut -d”:” -f1 | grep “^r” Lista todos os usuários do sistema começados com a letra “r” cat /etc/passwd cut -d”:” -f1 grep “^r”

Slide 29

Slide 29 text

Redirecionamento > é tipo uma “seta” que direciona o fluxo de saída do comando cat /etc/passwd | cut -d”:” -f1 | grep “^r” > usuarios.txt Lista todos os usuários do sistema começados com a letra “r” >

Slide 30

Slide 30 text

less is more comandos para paginar saída ● Exemplos: $ more /etc/passwd $ less /etc/passwd $ dmesg | less $ dmesg | more

Slide 31

Slide 31 text

sort ordenar alfabeticamente/numericamente ● Exemplos: $ sort /etc/passwd $ sort arquivo_desordenado.txt $ sort -u arquivo_desordenado_com_linhas_duplicadas.txt

Slide 32

Slide 32 text

grep filtrar linhas segundo um padrão Global / Regular Expression / Print ● Exemplos: $ grep “^r” /etc/passwd $ grep “/bin/bash$” /etc/passwd $ grep “.*Rafael.*” /etc/passwd $ grep -i “.*speech.*” /etc/passwd

Slide 33

Slide 33 text

wc Word Count ● Exemplos: $ wc -l /etc/passwd $ wc -c /etc/passwd $ wc -w /etc/passwd

Slide 34

Slide 34 text

cp Copy ● Exemplos: $ cp /etc/passwd /home/rafael $ cp /etc/passwd /home/rafael/usuarios_sistema.txt $ cp -R /home/rafael/diretorioA /home/rafael/diretorioB

Slide 35

Slide 35 text

mkdir Make Directory ● Exemplos: $ mkdir /home/rafael/diretorioA $ mkdir -p /home/rafael/diretorioC/teste/abc

Slide 36

Slide 36 text

rm Remove ● Exemplos: $ rm -r /home/rafael/diretorioC/teste/abc $ rm -i /home/rafael/arquivo123 $ rm -f /home/rafael/arquivo321

Slide 37

Slide 37 text

rm Remove # rm -rf / Não usar este comando NUNCA!!!

Slide 38

Slide 38 text

ls List ● Exemplos: $ ls -l $ ls -a $ ls -la $ ls --color -l $ ls -d

Slide 39

Slide 39 text

head Cabeça/Cabeçalho ● Exemplos: $ head /etc/passwd $ head -2 /etc/passwd

Slide 40

Slide 40 text

tail Rabo/Cauda ● Exemplos: $ tail /etc/passwd $ tail -2 /etc/passwd # tail -f /var/log/messages # tail -f /var/log/messages /var/log/auth.log

Slide 41

Slide 41 text

Configurando a rede via terminal Removendo o network-manager # update-rc.d -f NetworkManager remove # apt-get purge network-manager https://help.ubuntu.com/community/NetworkConfigurationCommandLine/Automatic

Slide 42

Slide 42 text

Configurando a rede via terminal Configurando a rede com ip estático # vim /etc/network/interfaces auto iface inet static address netmask gateway dns-nameservers https://help.ubuntu.com/community/NetworkConfigurationCommandLine/Automatic

Slide 43

Slide 43 text

Configurando a rede via terminal Configurando a rede com ip dinâmico # vim /etc/network/interfaces auto iface inet dhcp https://help.ubuntu.com/community/NetworkConfigurationCommandLine/Automatic

Slide 44

Slide 44 text

Configurando a rede via terminal Restartando a rede e checando configurações # service networking stop # service networking status # service networking start # service networking status # cat /etc/resolv.conf # ifconfig # ping 8.8.8.8 # ping www.google.com https://help.ubuntu.com/community/NetworkConfigurationCommandLine/Automatic

Slide 45

Slide 45 text

Instalando pacotes O que um iniciante deve saber? ● apt-get update ● apt-cache search python3 ● apt-get install python3

Slide 46

Slide 46 text

Python Linux Qual a dificuldade em usar o Python do S.O. para tudo? ● Versões diferentes de Python ● Versões diferentes de bibliotecas Python ● Fazer experimentos rápidos sem afetar o ambiente ● Muitos programas do Linux (desktop em sua maioria) são escritos em Python, e usam o Python do S.O.

Slide 47

Slide 47 text

Python Linux Soluções para gerenciamento de versões/bibliotecas ● pip ● virtualenv ● virtualenvwrapper ● pyenv ● pipenv http://blog.abraseucodigo.com.br/virtualenv-pip-pra-que-servem.html http://blog.abraseucodigo.com.br/instalando-qualquer-versao-do-python-no-linux-macosx-utilizando-pyenv.html

Slide 48

Slide 48 text

Instalando Python(s) com pyenv Baixando e instalando o pyenv... # apt-get install curl git $ curl -L http://bit.ly/pyenv-installer | bash http://blog.abraseucodigo.com.br/instalando-qualquer-versao-do-python-no-linux-macosx-utilizando-pyenv.html

Slide 49

Slide 49 text

Instalando Python(s) com pyenv Editando o arquivo .bashrc para adicionar a conf do pyenv $ vim ~/.bashrc # configurações pyenv export PATH="/home//.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" http://blog.abraseucodigo.com.br/instalando-qualquer-versao-do-python-no-linux-macosx-utilizando-pyenv.html Digitar este trecho no final do arquivo .bashrc

Slide 50

Slide 50 text

Instalando Python(s) com pyenv Recarregando .bashrc e chamando o comando pyenv $ source ~/.bashrc $ pyenv pyenv 20160202-10-ga6f1f48 Usage: pyenv [] Some useful pyenv commands are: commands List all available pyenv commands local Set or show the local application-specific Python version …. linhas omitidas …. http://blog.abraseucodigo.com.br/instalando-qualquer-versao-do-python-no-linux-macosx-utilizando-pyenv.html Recarrega a configuração do seu .bashrc

Slide 51

Slide 51 text

Instalando Python(s) com pyenv Verificando as versões disponíveis para instalação $ pyenv -l Available versions: .... linhas omitidas .... 3.5-dev 3.5.1 3.6-dev .... linhas omitidas .... http://blog.abraseucodigo.com.br/instalando-qualquer-versao-do-python-no-linux-macosx-utilizando-pyenv.html

Slide 52

Slide 52 text

Instalando Python(s) com pyenv Instalando Python 3.5 # apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev $ pyenv install 3.5.1 http://blog.abraseucodigo.com.br/instalando-qualquer-versao-do-python-no-linux-macosx-utilizando-pyenv.html

Slide 53

Slide 53 text

Instalando Python(s) com pyenv Usando Python 3.5 $ pyenv versions $ pyenv global 3.5.1 $ python http://blog.abraseucodigo.com.br/instalando-qualquer-versao-do-python-no-linux-macosx-utilizando-pyenv.html

Slide 54

Slide 54 text

Criando seu primeiro projeto!! Go go go Flask! $ git clone [email protected]:rafaelhenrique/flask_simple_hello.git $ cd flask_simple_hello $ python -m venv .venv $ source .venv/bin/activate (.venv)$ pip install -r requirements.txt (.venv)$ python run.py

Slide 55

Slide 55 text

Criando seu primeiro projeto!! Run run run run!

Slide 56

Slide 56 text

No content

Slide 57

Slide 57 text

● Guia foca Linux ● Blog do Aurélio ● Blog do Júlio ● IBM Developer Works Linux ● IBM Developer Works LPIC (certificação Linux) ● Dicas -l Referências Extras - Linux Links interessantes

Slide 58

Slide 58 text

● Instalando qualquer versão do Python no Linux/Mac OSX utilizando pyenv ● virtualenv/pip pra que servem? ● Guia definitivo para organizar meu ambiente Python ● Python para Zumbis Referências Extras - Python Links interessantes

Slide 59

Slide 59 text

● Grupo do Google (mailing-list) ○ https://groups.google.com/forum/#!forum/python-sorocaba ● Canal no youtube ○ http://bit.ly/youtube-python-sorocaba ● Nosso slack ○ https://grupopythonsorocaba.herokuapp.com/ ● Eventos presenciais ○ https://www.meetup.com/pt-BR/Grupy-SP/ ○ https://www.meetup.com/pt-BR/Developer-Sorocaba/ ● Nosso github ○ https://github.com/python-sorocaba Python Sorocaba Links gerais

Slide 60

Slide 60 text

Tem interesse em aprender Python com um instrutor tipo eu (pois na verdade sou eu mesmo)? Seus problemas acabaram!!!! http://bit.ly/curso-python-sorocaba Developer School Curso de PYTHON!!! \o/

Slide 61

Slide 61 text

OBRIGADO!!! Perguntas?? Contato: http://blog.abraseucodigo.com.br [email protected] Google Groups: python-sorocaba