Transcrição do áudio
É coleguinha, você não acredita. Já é o terceiro vídeo que eu estou fazendo. Eu estou fazendo o quê? Usando o próprio command line para gravar a tela. FFMP é foda, cara. Sem OBS Studio, coleguinha. Olha que da hora. É importante você dominar o sistema operacional. Você faz milagres com o seu sistema operacional. Por que eu estou fazendo isso, gente? O OBS Studio vinha travando essa máquina. Ele vinha consumindo tanto recurso. E como eu estou usando inteligência artificial, que já consome muito recurso. O OBS estava disputando ali, estava travando os vídeos. Aí eu assim, como é que eu resolvo isso aqui se o OBS é um código fonte fechado? Como é que eu faço? Então vamos lá, FFMPeg. Porque eu sei que dá para gravar vídeo da tela com o FFMPeg. Comecei a olhar os parâmetros, os argumentos. Gastei uma meia horinha. Está aí, gravando a tela, você está vendo esse vídeo aqui agora usando FFMPeg. E a máquina está muito suave, cara. E a máquina está muito suave, cara. Praticamente só a inteligência artificial que está consumindo recurso dessa máquina. Suave para caramba. Do meu ponto de vista. Tantos pontos de vista. Por falar em ponto de vista, cara, é importante você ter scripts mais profissionais. Eu aprendi isso quando entrei no mundo do hacker. Então vamos lá. Em 1998 eu comecei a programar, certo? Em 1999 eu já estava vendendo alguma coisinha. Beleza? Então ganhei um troquinho. Como foi? 2017 é agressivo. Porra, vou parar com essa minha vida. Vou parar com essa minha vida de programador. Eu vou entrar na área de security de cabeça. Porque eu já tinha um pé na security, porque eu era programador consciente. Eu não era tipo o Jovem Tranquilão que fala... O Jovem Tranquilão falou na live dele. Para que eu tenho que saber de segurança? Para que eu tenho que saber de redes? Cara, olha o que o cara me fala. Não, o programador consciente, ele pensa nessas coisas. Então eu já tinha essa visão. Então eu parti para a programação de programação para o mundo hacker. De cabeça. Entrei de cabeça e me fudi. A verdade é que eu me fudi, cara. Eu fudi no meu emprego. Eu me fudi no meu nome, na minha carreira. Porque eu fiquei associado a esse estigma agora. Beleza? E aqui é o que acontece. Eu aprendi a fazer scripts profissionais ali, cara. Então meus scripts eram feios, esquisitos, toscos, mal trabalhados, input mal descrito. Nada ajudava as pessoas. Eu tinha uma visão um pouco errada das coisas. Então você já aprende agora. Ninguém me explicou isso. Então você tem que padronizar o output. Output verboso, excessivamente verboso. Isso aqui não só fode a visualização da execução do comando, gente. Se esse comando que você fizer, ele for verboso, ele vai jogar nos logs do sistema. Vai atrapalhar muito a auditoria de logs de sistema. Quantas vezes eu fui olhar logs de sistema para fazer alguma auditoria e falei assim cara que desgraça de programa. Está jogando tanta coisa no output que está me atrapalhando a minha auditoria. Então cara, scripts verbosos são ruins cara. Ruins. Output com dados de depuração. Usuário sem aparecendo no... Ah, aparece. Input. Por coma de line, fora de padrão nenhum de chamada. Outro dia eu vi, cara, tracinho, uma palavra. Não cara. Você usa tracinho e uma letra. Se você vai usar uma palavra, são dois tracinhos. Tem um padrão para coma de line. Dá uma olhada no padrão POSIX. Palanis cara. Agora olhando cara. Está faltando um mini curso de POSIX. Nem que for 5 horas de POSIX cara. Está faltando assim, tipo colocar como um mini curso mesmo. Porque a minha ideia aqui no canal agora não é trabalhar essas grandes disciplinas. Os vídeos vão continuar sendo organizados por disciplinas. Você pode estudar por disciplina, mas a ideia é encaixar nas trilhas. Nas trilhas. Trilha para a certificação da CompTIA, da CEH. Então você teria aqui, no caso, nós estaríamos trabalhando nessas certificações aqui, que seria LPQ1. Eu tenho que pôr uma linha aqui. Linux+, da CompTIA. Na RHCSA, da Red Hat. Cursos menores encaixando aqui. As disciplinas continuam lá. Só que menores e encaixa os vídeos aqui para quem quiser ler numa trilha. Eu acho bacana. Eu acho bacana. Eu vou preparar alguma coisa sobre POSIX para vocês. E aí vocês vão entender esses padrões de argumentos, padrões de chamada de função e tudo mais. Legal? Manipulação errada, falta de dependência na máquina. Tudo cagalha na hora do uso. E isso é um problema. Seu script deixa de ser um script profissional para ser um script amador. No mundo de Hacker, os caras fazem scripts fantásticos, de um output fantástico. Eu acho que a maior contribuição do mundo, o Kali Linux, é reunir esses scripts bacanas. Porque ele é muito grande, cara. Kali Linux é muito grande. Então ele tem os melhores scripts lá. Quando você executar os scripts dele, você vai ver e vai entender o que eu estou falando. Uma boa pedida é o argparse. O argparse para trabalhar os argumentos de entrada do nosso comando. Então você vai ter que importar o argparse e criar um parser. E esse parser verifica os argumentos. Se não está faltando nada, se foi colocado algum argumento. Por exemplo, que nem deveria ser colocado. Então vamos ver como o bichinho funciona. Olha só. argparse. Cara, se eu estivesse com o OBS Studio, essa renderização aqui, eu não conseguia dar esses um. Sério mesmo? Parse.add argument traço a minúsculo ou traço, traço palavra padrão pos x. Quer dizer que se eu executar esse comando, eu vou naturalmente receber esse tipo de argumento. Aqui args parser args. Como que eu uso no código? No meu código eu uso args.arquivo. Muito melhor do que você usar o sys. Então como que você chama o teu script? Já que você deu permissão de execução para esse script, ele tem um showbang. Então é muito fácil. Traço a e o argumento. Na verdade o traço a é um argumento que define o valor ao próximo que é um argumento-valor. Entenderam? Ah, bom, você pode também ter número de argumentos como uma lista, valor padrão, tipo, se é requerido, um help. Se tem algum atributo ali que é destinatário para aquele argumento. Vamos lá. Esse cara aqui. Olha só que interessante. Add argumento traço a arquivos no plural. Beleza. Uma letrinha só. Beleza. E eu receberia então múltiplos valores após o traço a. Então vamos lá. Então o traço a, um valor, dois valores, três valores. Então três valores está ali. Quando eu leio aqui do código, olha o output que dá. Um array. Ah, meu array. Vamos lá. Bom, exemplo. Não sei quantos argumentos vão vir. Beleza. Valor constante e valor default. Então se o cara não passar nada, ele vai assumir um. Se o cara colocar o traço e, mas não passar nenhum valor, ele vai assumir outro. Então olha só que interessante. Se eu passo o traço e e o valor, eu uso o valor que foi passado como argumento. Entendeu? Se eu coloco o traço e, mas não passo nenhum valor, ele usa o valor da constante. E eu acho isso uma grande idiotice. Mas os caras criaram essa. Se eu não coloco nem o traço e, ele usa o valor default. Então essa é a diferença entre o valor constante e o valor default. Constante é se ele põe o traço e, mas não põe nenhum valor. Aí ele vai usar o constante. Se ele não põe nem o traço e, aí ele usa o default. Ele garante que uma variável sempre tenha aquele valor ali. E isso é importante para muitos scripts. Por quê? Você vai reduzir o if. Você vai reduzir o if da história. If aqui, if ali, if lá. Não precisa. Você já controla a entrada e os argumentos aqui dentro. No próprio arq.parse. Beleza? Requerido obrigatório. O script não funciona se não tiver esse argumento. E você coloca um help, informa o caminho do arquivo. Quer dizer que se o consagrado errar, ele nem executa o script. Isso é que é bacana. Ele já pipoca um erro para a execução e diz, olha, tem erro aí no script, tá faltando. Aí aquele helper que você colocou, ele é exibido. Lembrando também que o usuário pode colocar um traço H e aí ele vem e executa e mostra o helper inteirinho aqui, todos os argumentos, todas as observações dos argumentos, segundo o padrão POSIX do Linux. Então repare como é importante usar o arq.parse. A única coisa chata do arq.parse, desculpe. Pô cara, é mó foda escrever esse arq.parse aí. Tá entendendo? Porque é arq.parse e parser. E aí eu vivo metendo um R aqui, cara. Eu vivo fazendo merda, cara. A verdade é que eu vivo fazendo merda nesse arq.parse aí. Entendeu? Ó, tipo inteiro. Então ele já tipifica para mim no inteiro para mim. Teclado é texto e ele já converte para mim em numérico, cara. Porque eu pedi para ser do tipo int. Ele já faz e eu já baco lento. Se der pau de conversão, ótimo. Antes da pau no arq.parse e o teu script não sair fazendo merda, do que seu script tentar sair fazendo merda por aí porque você não fez uma conversão de tipo adequada. Entendeu? Muito bom, cara. Cara, arq.parse é praticamente o obrigatório. Eu trabalho muito com inteligência artificial, programando com inteligência artificial hoje, devido a dinâmica. Tenho uma dinâmica muito forte no meu trabalho. Eu trabalho em altíssimo nível. Então tá lá, né? Todo script python obrigatoriamente usa o arq.parse. Na IA, galera, nós podemos definir as regras universais. Regra universal. A regra universal é isso, isso, isso. Por exemplo, regra universal nunca mexe no meu MySQL. Regra universal nunca execute um comando assim e assim assado. Regra universal para scripts python sempre utiliza arq.parse. Legal? Próximo vídeo vou falar sobre outputs.