O Guia DEFINITIVO de UBUNTU para Devs Iniciantes

O Guia DEFINITIVO de UBUNTU para Devs Iniciantes

Começando aos 40: Dicas de Programação e Ambiente de Desenvolvimento

Introdução ao Vídeo

  • Fabio Akita apresenta a série "Começando aos 40", focando em conceitos mal explicados como concorrência, paralelismo e gerenciamento de memória.
  • Ele destaca a importância do Linux para iniciantes em programação, recomendando o Arch Linux como uma boa opção para aprendizado.

Ambiente de Desenvolvimento

  • Akita menciona que muitos desenvolvedores usam máquinas virtuais com Vagrant para acessar ambientes Linux, mesmo quando estão no Mac.
  • O apresentador argumenta que o melhor ambiente de desenvolvimento é sempre um sistema baseado em Linux, especialmente para aplicações web.

Considerações sobre Sistemas Operacionais

  • Ele alerta que versões nativas de Python ou PHP no Windows podem não funcionar corretamente devido à falta de dependências nativas.
  • A recomendação é usar um Linux como sistema operacional primário; se necessário, fazer dual-boot com Windows apenas para jogos.

Escolha da Distribuição

  • O objetivo do vídeo é partir da instalação do Ubuntu e criar um ambiente de desenvolvimento funcional.
  • Akita prefere a distribuição Manjaro por ser mais simples que o Arch e elogia o gerenciador de pacotes Pacman pela sua filosofia de atualizações contínuas.

Requisitos Mínimos para Desenvolvimento

  • Para iniciantes, ele recomenda começar com Ubuntu devido ao suporte amplo tanto em hardware quanto software.
  • O mínimo recomendado é ter 8GB de RAM; idealmente, investir em 16GB. Um processador Core i3 pode ser suficiente, mas um Core i5 é preferível.

Configuração Ideal da Máquina

  • Para quem tem orçamento maior, montar uma máquina com Core i9 e SSD NVMe é ideal. No entanto, ele sugere começar com configurações mais modestas.

Comparação entre Processadores: Intel vs AMD

Desempenho e Custo-Benefício

  • O vídeo discute a viabilidade de notebooks da Dell para programadores iniciantes, destacando que opções mais baratas podem sacrificar desempenho.
  • A AMD Ryzen se destaca por oferecer mais núcleos em comparação com os processadores Intel equivalentes, como o Ryzen 3 com 4 núcleos versus o Intel Core i3 com 2 núcleos.
  • Apesar dos Ryzen terem mais núcleos, a performance máxima de cada núcleo ainda é inferior à da Intel, especialmente em jogos. No entanto, a nova geração está começando a superar a Intel até nesse aspecto.

Turbo Boost vs Precision Boost

  • As CPUs da Intel possuem Turbo Boost para picos de desempenho em tarefas intensivas, mas isso é temporário.
  • Os novos processadores Ryzen utilizam Precision Boost, que oferece um aumento de clock menor que o Turbo Boost da Intel, mas mantém essa velocidade por períodos mais longos.

Experiência Pessoal e Perspectiva

  • O apresentador compartilha sua experiência pessoal com notebooks caros e menciona que não é necessário investir tanto para ter um bom desempenho no desenvolvimento.
  • Ele enfatiza que ter um computador topo de linha não garante produtividade se o usuário não souber como otimizar seu uso.

Importância do Aprendizado Prático

  • Iniciantes devem começar em ambientes menos favoráveis para desenvolver habilidades; um bom programador pode ser produtivo mesmo com hardware modesto.
  • A importância do conhecimento sobre otimização é ressaltada; entender seu próprio ambiente de trabalho é crucial para resolver problemas futuros.

Instalação do Ubuntu e Dicas Práticas

  • A instalação do Ubuntu é descrita como simples; seguir instruções corretamente pode evitar muitos erros comuns entre iniciantes.

Introdução ao Ambiente Ubuntu

Tela Inicial e Workspaces

  • Após a instalação, o usuário verá uma tela inicial com a opção de logar automaticamente. É recomendado se familiarizar com os workspaces, que permitem organizar janelas como se houvesse múltiplos monitores.
  • O Ubuntu utiliza workspaces para facilitar a navegação entre diferentes programas abertos, semelhante aos desktops em UNIX e Linux.

Navegando entre Janelas

  • Para mover janelas entre workspaces, utilize as combinações de teclas Super + Shift + Page Up/Page Down. Isso ajuda a manter os programas organizados.
  • Maximizar janelas é possível usando Super + seta para cima ou organizá-las lado a lado com Super + seta para esquerda/direita.

Personalização do Ambiente

  • A personalização do tema é importante; o autor sugere o tema Flat Remix como uma alternativa mais elegante ao padrão do Ubuntu.
  • Para instalar novos temas e ícones, são utilizados comandos no Terminal, começando pela instalação do Git e ferramentas necessárias.

Instalando Temas e Ícones

Clonagem de Repositórios

  • O processo inclui clonar repositórios do GitHub para obter ícones e temas desejados. Os comandos git clone são usados para baixar os arquivos necessários.

Configuração dos Temas

  • Após clonar os repositórios, é necessário criar diretórios específicos para ícones e temas antes de copiar os arquivos baixados para esses diretórios.

Mudança de Aparência

  • O Tweak Tool permite mudar facilmente o tema, ícones e fontes do sistema operacional. Sugestões adicionais incluem explorar outros conjuntos de temas como Material Dark.

Comandos Básicos no Terminal

Estrutura de Diretórios

  • Cada usuário tem um diretório próprio em /home/username. O comando whoami pode ser usado para verificar qual usuário está logado.

Navegação no Sistema

  • Comandos básicos como cd, ls, ls -l, e ls -la ajudam na navegação por diretórios. Arquivos ocultos começam com ponto (.) e não aparecem nas listagens padrão.

Criação de Arquivos

  • O comando touch é utilizado para criar arquivos vazios ou atualizar a data de modificação se já existir.

Manual dos Comandos

Comandos Básicos do Shell

Significado dos Comandos

  • O comando cd significa "change directory" (mudar diretório), enquanto mkdir é "make directory" (criar diretório). Outros comandos incluem rm para remover, e chown para mudar a propriedade.
  • O comando whoami informa quem você é no sistema, e pwd mostra o diretório atual ("print working directory").

Navegação entre Diretórios

  • Para voltar ao diretório inicial, pode-se usar cd $HOME, onde $HOME representa uma variável de ambiente. Alternativamente, o atalho cd ~ também funciona.
  • A expansão de tilde permite que caminhos como ~/Documents sejam automaticamente convertidos para /home/akitaonrails/Documents.

Estrutura do Sistema de Arquivos

  • O shell mais comum é o Bash (Bourne Again Shell), mas existem outros como tcshell e Z shell. É importante saber qual shell está sendo utilizado ao executar comandos.
  • Ao navegar até a raiz (cd /) e listar arquivos lá, encontramos links simbólicos como vmlinuz e initrd.img que estão relacionados ao kernel do Linux.

Links Simbólicos e Dispositivos

  • Os arquivos vmlinuz (kernel do Linux) e initrd.img (RAM disk inicializado durante o boot) são links simbólicos localizados em /boot.
  • Para interagir com dispositivos como USB ou CD-ROM, eles precisam ser montados em um sistema de arquivos apropriado.

Montagem de Dispositivos

  • Dispositivos devem ser montados em subdiretórios como /mnt ou /media. Sistemas modernos geralmente montam dispositivos automaticamente quando conectados.
  • O comando df -h lista os dispositivos montados. Por exemplo, um pendrive pode ser detectado automaticamente pelo Ubuntu.

Estrutura dos Diretórios do Sistema

  • O diretório /root é a home do usuário root. Outros diretórios importantes incluem /opt, onde programas externos podem ser instalados, e /bin, que contém binários essenciais do sistema.
  • No diretório /usr, encontra-se a maioria das aplicações instaladas. Ele abriga binários em /usr/bin, bibliotecas em /usr/lib, entre outros.

Configurações e Arquivos Importantes

  • Antigamente existia um diretório chamado /usr/etc para configurações, mas atualmente as configurações costumam estar em /etc.

Estruturas de Diretórios e Processos no Linux

Diretório /var e suas Funções

  • O diretório /var contém dados variáveis, incluindo:
  • /var/spool: utilizado para impressão.
  • /var/mail: armazena e-mails.
  • /var/log: onde ficam os logs do sistema.
  • /var/run: contém PIDs (IDs dos processos em execução).
  • /var/cache: usado para armazenar caches do sistema.

Explorando o Diretório /proc

  • O diretório /proc representa processos em execução como diretórios, permitindo a exploração através de comandos como ps.
  • É possível acessar informações detalhadas sobre um processo usando arquivos pseudo-localizados em /proc, como status e io.
  • A manipulação direta desses arquivos é uma forma prática de obter informações sem depender de APIs complexas.

Comandos Básicos para Manipulação de Arquivos

  • O diretório temporário /tmp é ideal para armazenar arquivos que não precisam ser preservados após reinicializações.
  • Comandos como touch, echo, e cat são usados para criar, escrever e visualizar conteúdos de arquivos.
  • Redirecionamentos com > sobrescrevem o conteúdo anterior, enquanto >> permite adicionar ao final do arquivo.

Navegação em Conteúdos Longos

  • O comando more permite visualizar conteúdos que não cabem na tela, mas carrega tudo na memória antes da exibição.
  • Usar pipes (|) conecta a saída padrão de um comando à entrada padrão de outro, facilitando a visualização sequencial com comandos como ps aux | more.
  • O comando moderno less melhora essa funcionalidade ao permitir navegação eficiente sem carregar todo o conteúdo na memória.

Links Simbólicos e Monitoramento de Arquivos

  • Links simbólicos são criados com o comando ln -s, permitindo acesso fácil a outros arquivos sem duplicação.
  • O comando tail -f é útil para monitorar alterações em tempo real em arquivos, especialmente logs.

Manipulação de Comandos no Terminal

Filtrando Saídas com grep e ag

  • O comando ps aux | grep bash filtra a saída do comando ps, mostrando apenas as linhas que contêm a palavra "bash".
  • O ag, conhecido como Silver Searcher, é uma alternativa mais rápida ao grep, aceitando expressões regulares semelhantes.

Extraindo IDs de Processos com awk

  • Para obter os PIDs dos processos bash, utiliza-se o comando: ps aux | ag bash | awk ' print $2 '.
  • O AWK é uma linguagem interpretada voltada para processamento de dados e textos, permitindo configurar separadores personalizados.

Navegando pelo Histórico de Comandos

  • O Bash possui um recurso de histórico que permite acessar comandos anteriores pressionando a seta para cima.
  • Para buscar comandos antigos, use Ctrl + R e digite parte do comando desejado; continue pressionando Ctrl + R para navegar pelos resultados filtrados.

Comandos Básicos para Manipulação de Arquivos

  • Comandos básicos incluem:
  • Apagar arquivo: rm b.txt
  • Criar diretório: mkdir foo
  • Mover arquivo: mv a.txt foo
  • Para apagar um diretório, utilize o comando forçado: rm -f foo.

Permissões e Execução de Scripts

  • O comando chmod +x seu_script.sh é utilizado para dar permissão de execução a scripts ou binários.
  • É importante dominar esses conceitos básicos antes de avançar em manipulações mais complexas no terminal.

Avançando na Programação com Bash

Importância da Combinação de Comandos

  • Aprender a combinar comandos usando pipes é essencial para realizar tarefas complexas, como mover arquivos com critérios específicos.

Introdução à Programação em Bash

  • O Bash pode ser considerado um ambiente de programação que suporta variáveis e estruturas condicionais (como if).

Integração com Outras Linguagens

  • É possível combinar o Bash com outras linguagens como AWK, Perl, Python e Ruby para criar scripts que manipulam todo o sistema.

Preparação do Ambiente de Desenvolvimento

Instalação dos Pacotes Essenciais

  • A instalação inicial deve incluir pacotes essenciais como:
  • build-essential
  • default-jdk
  • libssl-dev

Gerenciamento de Versões em Linguagens Modernas

  • Linguagens modernas como Go ou JavaScript mudam frequentemente; por isso, gerenciadores específicos são necessários.

Desafios na Manutenção das Versões das Linguagens

Introdução ao Gerenciador de Versões ASDF

O que é o ASDF?

  • O gerenciador de versões Universal, ASDF, é apresentado como uma solução para gerenciar diferentes versões de linguagens de programação.
  • A instalação do ASDF é recomendada através da documentação disponível no GitHub, utilizando o Google para encontrar informações.

Funcionamento do ASDF

  • O ASDF utiliza variáveis de ambiente do shell e não executa diretamente os binários das linguagens. Ele procura no PATH configurado.
  • Para facilitar a gestão, o ASDF funciona como um framework que requer a instalação de plugins específicos para cada linguagem.

Instalação e Configuração das Linguagens

Plugins e Instalações

  • Após instalar os plugins necessários, as linguagens podem ser instaladas usando o comando asdf install linguagem versão.
  • É possível definir versões globais ou locais para projetos específicos com os comandos asdf global e asdf local.

Atualizações e Comandos Adicionais

  • Os usuários podem verificar outros comandos disponíveis com asdf help, além de atualizar plugins com asdf plugins-update e o próprio ASDF com asdf update.

Estrutura dos Shims

Como Funciona a Execução

  • Ao executar um comando como which ruby, observa-se que ele aponta para scripts em um diretório específico chamado reshims.
  • Se houver problemas na execução de bibliotecas instaladas globalmente, pode-se usar o comando asdf reshim para recriar esses shims.

Instalação de Serviços Essenciais

Recomendação de Bancos de Dados

  • Sugestões incluem a instalação do PostgreSQL, Redis e Memcache como serviços essenciais. MongoDB também é mencionado, mas com cautela sobre seu uso.

Instruções para Instalação do MongoDB

  • A instalação do MongoDB requer seguir instruções específicas devido à falta dos pacotes nos repositórios oficiais.
  • É necessário adicionar chaves públicas e repositórios ao sistema antes da instalação efetiva do MongoDB.

Gerenciamento dos Daemons

Gerenciamento de Serviços e Daemons no Linux

Comandos para Gerenciar Serviços

  • O arquivo /etc/init.d/redis-server contém comandos como start, stop e status que podem ser utilizados diretamente com sudo /etc/init.d/redis-server status, embora o comando service seja mais simples de lembrar.
  • Para controlar daemons em sistemas que utilizam Systemd, utiliza-se o comando systemctl, onde a sintaxe é inversa ao comando service. Por exemplo, systemctl start mongod.

Segurança e Conexão com Servidores

  • Serviços como memcache, redis e mongo não requerem senha por padrão; portanto, não devem ser expostos à internet. Já o PostgreSQL exige configuração de usuários.
  • Para criar um novo usuário no PostgreSQL, deve-se logar como usuário postgres e usar os comandos:

sudo su postgres

createuser --interactive

createdb akitaonrails

Desenvolvimento vs Produção

  • Durante o desenvolvimento, frameworks geralmente conseguem conectar ao PostgreSQL sem necessidade de senha. Em produção, recomenda-se evitar conexões com superusuários.
  • Para projetos antigos que dependem de versões específicas do PostgreSQL, pode-se utilizar ferramentas como ASDF ou Docker para gerenciar diferentes versões.

Instalação do Docker

  • A instalação do Docker começa com a remoção de versões antigas (se existirem), seguida pela instalação dos pacotes necessários:

sudo apt-get install

apt-transport-https

ca-certificates

curl

gnupg-agent

software-properties-common

  • É importante adicionar chaves públicas para validar pacotes externos. Isso protege contra a instalação de pacotes modificados por hackers.

Configuração Final do Docker

  • Após instalar as chaves necessárias e adicionar repositórios ao APT usando add-apt-repository, instala-se o Docker com:

sudo apt-get install docker-ce docker-ce-cli containerd.io

  • O usuário deve ser adicionado ao grupo "docker" para gerenciar containers sem privilégios administrativos:

sudo usermod -aG docker $USER

Testando a Instalação do Docker

  • Após reiniciar a sessão do usuário, teste a instalação executando:

docker run hello-world

Configuração do PostgreSQL com Docker

Iniciando o PostgreSQL via Docker

  • O comando mkdir -p $HOME/docker/volumes/postgres cria um diretório para armazenar volumes do PostgreSQL.
  • Para garantir que a instalação nativa do PostgreSQL esteja desligada, utiliza-se sudo service postgresql stop e sudo service postgresql status.
  • O PostgreSQL é iniciado no Docker com o comando: docker run --rm --name pg-docker -e POSTGRES_PASSWORD=docker -d -p 5432:5432 -v $HOME/docker/volumes/postgres:/var/lib/postgresql/data postgres.
  • A conexão ao banco de dados pode ser feita usando o cliente nativo psql: psql -h localhost -U postgres.

Gerenciamento de Containers

  • É possível subir uma aplicação web em um container e o PostgreSQL em outro, gerenciados pelo Docker.
  • O comando ps aux permite visualizar que o PostgreSQL está ativo na máquina.
  • Esclarece que Docker não é uma máquina virtual; os processos rodam no mesmo kernel do sistema operacional.

Entendendo cgroups e a Leveza do Docker

Funcionamento dos cgroups

  • Os cgroups permitem que o sistema operacional limite a visibilidade dos processos, evitando que eles enxerguem todo o sistema.
  • Comparação entre a configuração de cgroup de um processo normal (bash) e como o Docker configura seus containers.

Comandos Básicos do Docker

  • Recomenda-se aprender comandos básicos como docker run, docker pull, e docker ps.
  • O comando docker stop [nome do container] é utilizado para parar containers ativos.

Introdução à Criptografia

Tipos de Tecnologias Criptográficas

  • Existem três categorias principais na criptografia: algoritmos de digestão, encriptação reversível e criptografia assimétrica.

Algoritmos de Digestão

  • Algoritmos como MD5, SHA1, SHA512 produzem impressões digitais fixas para qualquer entrada. Usados para verificar integridade da informação.

Encriptação Reversível

  • Refere-se à criptografia simétrica onde mensagens são embaralhadas por uma chave secreta. Exemplos incluem Triple DES, Blowfish e AES.

Criptografia Assimétrica

  • Utiliza pares de chaves (privada e pública). A chave privada deve ser mantida em segredo enquanto a pública pode ser compartilhada.

Importância das Chaves Públicas e Privadas

  • Serviços como GitHub exigem registro da chave pública para autenticação. A chave privada é usada localmente para assinar informações.

Criando Chaves SSH

Processo de Geração de Chaves

  • Para criar uma chave SSH segura usa-se: ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/id_ed25519 -C "boss@akitaonrails.com".

Armazenamento das Chaves

  • As chaves geradas são armazenadas no diretório .ssh. A chave privada deve ser mantida em segurança; backup é essencial.

Uso do ssh-agent

Configuração de Chaves e Git

Importância da Chave Privada

  • A chave privada é essencial, pois representa sua identidade digital. Se perdida, deve ser substituída em todos os serviços que você utiliza.
  • Quem possui a chave privada tem acesso total às suas informações e serviços.

Configurando o Git

  • Para configurar o Git, utilize os comandos:

git config --global user.name "AkitaOnRails"

git config --global user.email "boss@akitaonrails.com"

  • Essa configuração global será usada em todos os commits. É possível personalizar por projeto no arquivo .git/config.

Escolha do Editor de Texto

Preferências Pessoais

  • O autor prefere usar VIM como editor de texto, mas recomenda o Visual Studio Code como uma excelente opção moderna.
  • Sublime Text 3 é mencionado como leve e eficiente; Atom é considerado pesado devido ao uso do Electron.

Comparação entre Editores

  • O VS Code usa componentes nativos, tornando-o mais responsivo que editores baseados apenas em Javascript.
  • O GVIM oferece uma interface gráfica para usuários que preferem um ambiente visual.

Introdução ao TMUX

O Que é TMUX?

  • TMUX é um multiplexer de terminal que permite múltiplas sessões dentro de um único terminal.
  • Para instalar, use: apt install tmux. Ele facilita a gestão de várias tarefas simultaneamente.

Funcionalidades Básicas do TMUX

  • Comandos básicos incluem iniciar com tmux, dividir janelas com Ctrl+b % e navegar entre painéis com Ctrl+b O.
  • É possível gravar arquivos no VIM enquanto se utiliza o TMUX para gerenciar sessões.

Vantagens do Uso do TMUX

Persistência das Sessões

  • Ao fechar o terminal normal, todas as atividades são perdidas; no entanto, com TMUX você pode listar sessões ativas usando tmux ls.

Recuperação Rápida

  • Comando tmux attach-session -t 0 permite retomar a sessão anterior sem perder progresso.

Utilidade em Conexões Remotas

Configurando o Ambiente de Desenvolvimento com VIM e Tilix

A Utilidade do VIM

  • O VIM puro é considerado limitado, semelhante ao NANO, que é um editor simples. O autor expressa sua aversão ao NANO, mencionando sua origem no editor PICO.
  • O PICO era usado em clientes de e-mail antigos como o PINE. O autor compara esses editores a ferramentas obsoletas que não são adequadas para programação moderna.
  • O VIM e o Emacs são destacados por serem altamente versáteis devido à sua capacidade de script. O Emacs usa Emacs Lisp, enquanto o VIM utiliza VimScript.

Funcionalidades Modernas do VIM

  • Com a capacidade de script, é possível adicionar funcionalidades modernas ao VIM, como colorização de sintaxe e autocompletar.
  • O autor prefere usar Tilix como terminal e Z Shell (Zsh) em vez do Bash, destacando a importância dos dotfiles para personalização.

Instalação e Personalização

  • Dotfiles são arquivos ocultos que armazenam configurações pessoais. Um exemplo famoso para Zsh é o Oh-my-ZSH; no entanto, o autor prefere os dotfiles do usuário SKWP.
  • Após instalar os dotfiles desejados, temas como Solarized Dark são aplicados automaticamente ao terminal e ao VIM.

Navegação e Atalhos no Terminal

  • No Tilix, o autor altera atalhos para facilitar a navegação entre janelas divididas. Ele menciona preferências pessoais sobre maximizar ou dividir telas durante o trabalho.
  • A configuração permite uma experiência híbrida entre terminal gráfico (Tilix com GVim), otimizando a produtividade sem depender excessivamente do mouse.

Produtividade e Ferramentas Remotas

  • Usar atalhos no TMUX e no VIM minimiza a necessidade de uso do mouse, ajudando na prevenção de lesões por esforço repetitivo (LER).
  • As mesmas ferramentas utilizadas localmente podem ser usadas remotamente via SSH. Além disso, sessões do TMUX podem ser compartilhadas para programação em par.

Considerações Finais sobre Software Livre

  • Para assistir vídeos online em uma nova instalação Linux, é necessário habilitar repositórios restritos instalando pacotes adicionais como ubuntu-restricted-extras.

Navegadores e Ferramentas no Ubuntu

Importância do Firefox e Diversidade de Navegadores

  • O Ubuntu vem com o Firefox por padrão, sendo recomendado como navegador primário para evitar a monopolização pelo Google Chrome.
  • A crescente dominância do Google Chrome é destacada, mencionando que outros navegadores como Microsoft Edge, Brave e Opera utilizam a mesma engine do Chrome.
  • A preferência por mais opções de navegadores é expressa, mas reconhece-se a necessidade de compatibilidade em aplicações web.

Instalação de Aplicativos Úteis

  • Para programadores web, é necessário instalar o Google Chrome ou sua versão aberta, Chromium, utilizando o comando apt install chromium-browser.
  • Sugestão para procurar "Ubuntu 18 post-install" para descobrir como instalar aplicativos úteis como Spotify, Discord e Skype após o primeiro boot.

Recursos Educacionais e Dúvidas Comuns

  • O autor menciona a importância deste vídeo para referência futura sobre ferramentas essenciais como Docker, Postgres, ASDF e Vim.
  • Um convite é feito aos iniciantes para que deixem suas dúvidas nos comentários abaixo do vídeo.
Video description

No primeiro episódio técnico da série Começando aos 40 (https://www.youtube.com/watch?v=sx4hAHhO9CY) eu recomendei que todos estudassem Linux, e foi só isso. Hoje eu resolvi retomar o que eu disse e mostrar que em casa de ferreiro o espeto é de ferro! Vou pegar um Ubuntu recém-instalado, e do zero ir até um ambiente completo para desenvolvedores de software (em particular Web, claro), com Docker, Tmux, Vim, ASDF e durante o percurso explicar várias coisas sobre Linux em geral, várias dicas, e até mesmo como customizar os temas pra ficar "dahura"! As dicas estão espalhadas por todo o vídeo, então tente assistir o vídeo inteiro sem pular nada. Até o momento esse deve ser o vídeo mais longo que eu já fiz, e eu fiz de propósito pra que seja facilmente compartilhável num link só! Compartilhe com o máximo de pessoas que puder! E pra ninguém perder tempo, desta vez vou deixar listado aqui os tempos pra cada seção do vídeo pra que você possa pular direto pro que interessa caso já não seja mais tão iniciante ou se quiser relembrar alguma parte em particular: == COMPLEMENTO Esqueci de dizer que depois de instalar o dotfiles YADR os shortcuts de Tmux, Vim, Git mudam (vejam o código fonte!!). O Tmux em vez de Ctrl-B vira Ctrl-A por exemplo. No yadr-appearance.vim não use Solarized se quiser usar o Vim no Terminal (por alguma razão ele crasheia), troque por um "gruvbox" por exemplo. Pra abrir o NerdTree no terminal, use Ctrl+\ == ERRATA Em 00:54:24 eu percebi que faltou um áudio, eu devo ter apagado por engano e só percebi agora que já subi. Era a introdução da seção de Docker e o texto era: "Tem gente que prefere não instalar esses serviços diretamente, pelo mesmo motivo que usamos ASDF. E se você tem um projeto antigo que depende do PostgreSQL 7 e quebra se tentar conectar no Postgresql 10? Pra isso precisamos de algo parecido com um ASDF. E se não me engano acho até que o ASDF tem suporte pra Postgresql, vamos ver no google, e sim, tem mesmo. Mas se for esse o caso eu prefiro fazer diferente. Serviços como os que acabamos de instalar é o caso de uso perfeito pra usar Docker. Então é hora de instalar e configurar Docker. E a essa altura você já adivinhou: vamos pro GOOGLE." Em 00:03:00 eu falo que o Steam roda poucos jogos em Linux mas eu realmente me esqueci do Proton que é habilitado dentro da própria interface do Steam e você pode rodar os jogos quase que normalmente em Linux também! Eu mesmo não uso porque uso Steam no Windows mas fica a dica pra quem tem insegurança de mudar pra Linux e ficar sem Steam. Me siga nas redes sociais: * Twitter (https://twitter.com/akitaonrails) * Instagram (https://instagram.com/akitaonrails) * Facebook (https://facebook.com/akitaonrails) * Podcasts (https://anchor.fm/akitando) == Seções: 00:03:50 - Manjaro/Arch? 00:04:19 - Que hardware/notebook devo comprar pra programar? 00:08:46 - Que máquina Akita tem? Por que não comprar um topo de linha? 00:13:27 - Ubuntu: aprendendo sobre Workspaces 00:15:40 - Ubuntu: Tema Flat-Remix 00:18:19 - Linux: Conceitos e comandos básicos 00:22:59 - Linux: Entendendo os principais diretórios do sistema 00:28:41 - Linux: Entendendo Processos e manipulando arquivos e diretórios 00:40:42 - ASDF: Instalando e gerenciando versão de TODAS as linguagens!! 00:49:30 - Bancos: Postgresql 10, Redis, Memcached e MongoDB 00:54:24 - Docker: instalando, usando Postgres em container e mais! 01:00:21 - Básico do básico de criptografia, chaves SSH 01:05:52 - Básico de TMux e Vim 01:12:28 - Dotfiles: meu preferido, o YADR 01:17:22 - Configurações finais de Desktop == Links: * Upgrade Your SSH Key to Ed25519 (https://medium.com/risan/upgrade-your-ssh-key-to-ed25519-c6e8d60d3c54) * How to install Flat-Remix Theme on Any Linux Distribution? (https://www.osradar.com/install-flat-remix-theme-ubuntu/) * SWKP Dotfiles YADR (https://github.com/skwp/dotfiles) * VIM Cheat Sheet (https://vim.rtorr.com) * TMUX Cheat Sheet (https://tmuxcheatsheet.com) * ASDF (https://github.com/asdf-vm/asdf) * Understanding Shell Script's idiom: 2<&1 (https://www.brianstorti.com/understanding-shell-script-idiom-redirect/) * Upgrade Your SSH Key to Ed25519 (https://medium.com/risan/upgrade-your-ssh-key-to-ed25519-c6e8d60d3c54) * Bash scripting cheatsheet (https://devhints.io/bash) * Arguments against systemd (https://without-systemd.org/wiki/index.php/Arguments_against_systemd) * Vim cheatsheet (https://devhints.io/vim) * Tmux cheatsheet (https://devhints.io/tmux) * AkitaOnRails: Optimizing Linux for Slow Computers (https://www.akitaonrails.com/2017/01/17/optimizing-linux-for-slow-computers) Podcast: https://anchor.fm/dashboard/episode/ebvq57 Transcript: https://www.akitaonrails.com/2019/07/12/akitando-54-o-guia-definitivo-de-ubuntu-para-devs-iniciantes