<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: TheDigitalBricklayer</title>
    <description>The latest articles on DEV Community by TheDigitalBricklayer (@thedigitalbricklayer).</description>
    <link>https://dev.to/thedigitalbricklayer</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1144898%2Fef8e9a11-f9eb-448a-9d0a-02bf5a1827fc.jpg</url>
      <title>DEV Community: TheDigitalBricklayer</title>
      <link>https://dev.to/thedigitalbricklayer</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thedigitalbricklayer"/>
    <language>en</language>
    <item>
      <title>Estudos e Aprendizados</title>
      <dc:creator>TheDigitalBricklayer</dc:creator>
      <pubDate>Fri, 14 Mar 2025 11:58:28 +0000</pubDate>
      <link>https://dev.to/thedigitalbricklayer/estudos-e-aprendizados-30nl</link>
      <guid>https://dev.to/thedigitalbricklayer/estudos-e-aprendizados-30nl</guid>
      <description>&lt;p&gt;Quase tudo que eu estudo ou preciso revisar eu tento fazer vídeos para o canal, a sequência abaixo foi resultado justamente disso.&lt;br&gt;
Algumas discussões com alguns amigos, ferramentas que precisei usar, ou algo que eu precisava estudar para conversar no trabalho sobre alguma demanda. &lt;br&gt;
Eu tento aproveitar o máximo e gravar isso pois serve como um portfolio para a minha carreira.&lt;/p&gt;

&lt;p&gt;Segue os vídeos:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/SEzG5HD15K4" rel="noopener noreferrer"&gt;Observability com Spring + Jaeger + OpenTelemetry&lt;br&gt;
&lt;/a&gt;&lt;br&gt;
&lt;a href="https://youtu.be/pn7AsIT2Emk" rel="noopener noreferrer"&gt;Arquitetura de Software: Comecem Com Monolitos x Microserviços&lt;br&gt;
&lt;/a&gt;&lt;br&gt;
&lt;a href="https://youtu.be/8KvfVrRVG7I" rel="noopener noreferrer"&gt;Uma das melhores ferramentas para programadores!! (Terminal)&lt;br&gt;
&lt;/a&gt;&lt;br&gt;
&lt;a href="https://youtu.be/PGWdEgS_f8A" rel="noopener noreferrer"&gt;Programadores: Conheçam suas ferramentas - Postman - Runner&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/WGIruZavFc8" rel="noopener noreferrer"&gt;Desastre!! Programador Vazou Senha&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>se mantenha as origens de computação</title>
      <dc:creator>TheDigitalBricklayer</dc:creator>
      <pubDate>Fri, 15 Nov 2024 00:32:52 +0000</pubDate>
      <link>https://dev.to/thedigitalbricklayer/se-mantenha-as-origens-de-computacao-1l7d</link>
      <guid>https://dev.to/thedigitalbricklayer/se-mantenha-as-origens-de-computacao-1l7d</guid>
      <description>&lt;p&gt;Bora falar um pouco sobre backups, e como podemos fazer os mesmos tentando maximizar a chance de sucesso caso as aplicações peguem fogo em uma sexta feira depois de um deploy, vamos falar de uma técnica conhecida como backup de 3 pontas, e como podemos usar provedores de cloud como aws, gcp ou azure para armazenar esses backups ou infra própria. &lt;/p&gt;

&lt;p&gt;Link para o vídeo:: &lt;a href="https://youtu.be/nUSgMmQVvpg" rel="noopener noreferrer"&gt;https://youtu.be/nUSgMmQVvpg&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Tijoladas Digitais Ep 5</title>
      <dc:creator>TheDigitalBricklayer</dc:creator>
      <pubDate>Sun, 25 Aug 2024 17:21:45 +0000</pubDate>
      <link>https://dev.to/thedigitalbricklayer/tijoladas-digitais-ep-5-2ij2</link>
      <guid>https://dev.to/thedigitalbricklayer/tijoladas-digitais-ep-5-2ij2</guid>
      <description>&lt;p&gt;&lt;strong&gt;Tijoladas Digitais Ep 5&lt;/strong&gt;&lt;br&gt;
Bem vindos ao recap semanal do canal!! (&lt;a href="https://www.youtube.com/@TheDigitalBrickLayer" rel="noopener noreferrer"&gt;https://www.youtube.com/@TheDigitalBrickLayer&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vídeo sobre desenvolvimento incremental&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://youtu.be/bg8tJ4_TPPI" rel="noopener noreferrer"&gt;https://youtu.be/bg8tJ4_TPPI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Programando jogo de truco mineiro  + artigos&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://youtube.com/live/afGVUuJFltk4" rel="noopener noreferrer"&gt;https://youtube.com/live/afGVUuJFltk4&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtube.com/live/RZLohbJte14" rel="noopener noreferrer"&gt;https://youtube.com/live/RZLohbJte14&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtube.com/live/CIl7MAJhiyE" rel="noopener noreferrer"&gt;https://youtube.com/live/CIl7MAJhiyE&lt;/a&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>kotlin</category>
      <category>gamedev</category>
      <category>learning</category>
    </item>
    <item>
      <title>Tijoladas Digitais Ep 4</title>
      <dc:creator>TheDigitalBricklayer</dc:creator>
      <pubDate>Mon, 12 Aug 2024 11:32:27 +0000</pubDate>
      <link>https://dev.to/thedigitalbricklayer/tijoladas-digitais-ep-4-122j</link>
      <guid>https://dev.to/thedigitalbricklayer/tijoladas-digitais-ep-4-122j</guid>
      <description>&lt;p&gt;Tijoladas Digitais Ep 4&lt;br&gt;
Bem vindos ao recap semanal do canal!! (&lt;a href="https://www.youtube.com/@TheDigitalBrickLayer" rel="noopener noreferrer"&gt;https://www.youtube.com/@TheDigitalBrickLayer&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  1 vídeo no canal:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://youtu.be/jTa9jN_HYxE" rel="noopener noreferrer"&gt;Tarefas do dia a dia de programador: SQL +  Gráficos&lt;br&gt;
&lt;/a&gt;&lt;br&gt;
Vamos fazer uma tarefa cotidiana no dia a dia de um programador, vamos gerar gráficos através de dados que foram agrupados via consulta no postgres sql e gerar as imagens de dois gráficos com o resultado dessa consulta sql de agregação e gerar os gráficos de torta. Fiz em java mas o conceito pode ser levado para outras linguagens.&lt;/p&gt;

&lt;h2&gt;
  
  
  Duas lives na semana:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Revisando TDD, três links pois minha internet caiu.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtube.com/live/7T54qXVrqBc" rel="noopener noreferrer"&gt;https://youtube.com/live/7T54qXVrqBc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtube.com/live/V-0eRW7T8Nk" rel="noopener noreferrer"&gt;https://youtube.com/live/V-0eRW7T8Nk&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtube.com/live/C3S8vLCW8sI" rel="noopener noreferrer"&gt;https://youtube.com/live/C3S8vLCW8sI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lendo artigos tech e papeando&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtube.com/live/R-q4M87u0YE" rel="noopener noreferrer"&gt;https://youtube.com/live/R-q4M87u0YE&lt;/a&gt;&lt;/p&gt;

</description>
      <category>developer</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>tdd</category>
    </item>
    <item>
      <title>Tijoladas Digitais Ep 3</title>
      <dc:creator>TheDigitalBricklayer</dc:creator>
      <pubDate>Sat, 13 Jul 2024 16:11:36 +0000</pubDate>
      <link>https://dev.to/thedigitalbricklayer/tijoladas-digitais-ep-3-5ca0</link>
      <guid>https://dev.to/thedigitalbricklayer/tijoladas-digitais-ep-3-5ca0</guid>
      <description>&lt;p&gt;Bem vindos ao recap semanal do canal!! (&lt;a href="https://www.youtube.com/@TheDigitalBrickLayer" rel="noopener noreferrer"&gt;https://www.youtube.com/@TheDigitalBrickLayer&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;2 vídeos no canal:&lt;/p&gt;

&lt;p&gt;Como hospedar sites estáticos através de s3 buckets na aws&lt;/p&gt;

&lt;p&gt;Vídeo: &lt;a href="https://youtu.be/y8njwwVqa6M" rel="noopener noreferrer"&gt;https://youtu.be/y8njwwVqa6M&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A jornada de pedreiro a arquiteto de soluções aws, falando um cadinho da minha jornada de aprendizado para retirar essa certificação ep: DNS, s3 e healthchecks&lt;/p&gt;

&lt;p&gt;Vídeo: &lt;a href="https://youtu.be/mXKlqzLKI10" rel="noopener noreferrer"&gt;https://youtu.be/mXKlqzLKI10&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fizemos duas lives também:&lt;/p&gt;

&lt;p&gt;Desafios de programação:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=NdSaq6avnvQ" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=NdSaq6avnvQ&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=wfCbyOHjXd4" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=wfCbyOHjXd4&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;System Design:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=dw1oKlFZt18" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=dw1oKlFZt18&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Ue-h4zNIKz0" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=Ue-h4zNIKz0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=yuP6LtWBBi8" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=yuP6LtWBBi8&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Artigos Postados:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/thedigitalbricklayer/automacoes-editando-shorts-com-programacao-27de"&gt;https://dev.to/thedigitalbricklayer/automacoes-editando-shorts-com-programacao-27de&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/pulse/automa%C3%A7%C3%B5es-editando-shorts-com-programa%C3%A7%C3%A3o-vitor-hugo-de-castro-silva-ugrlf/?trackingId=tsDkooMSm%2FdeAT59EIUNLQ%3D%3D" rel="noopener noreferrer"&gt;https://www.linkedin.com/pulse/automa%C3%A7%C3%B5es-editando-shorts-com-programa%C3%A7%C3%A3o-vitor-hugo-de-castro-silva-ugrlf/?trackingId=tsDkooMSm%2FdeAT59EIUNLQ%3D%3D&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Automações: Editando Shorts com programação</title>
      <dc:creator>TheDigitalBricklayer</dc:creator>
      <pubDate>Mon, 01 Jul 2024 01:48:31 +0000</pubDate>
      <link>https://dev.to/thedigitalbricklayer/automacoes-editando-shorts-com-programacao-27de</link>
      <guid>https://dev.to/thedigitalbricklayer/automacoes-editando-shorts-com-programacao-27de</guid>
      <description>&lt;p&gt;O problema: Tempo. &lt;/p&gt;

&lt;p&gt;Tenho pouco tempo para gravar conteúdos para o canal e queria aproveitar os vídeos longos que faço para o formato vertical.&lt;/p&gt;

&lt;p&gt;Eu pegava esses vídeos longos, gerava uma lista com 5-6 vídeos curtos (shorts &amp;lt;1 minuto) para então jogar no editor e cortar esses vídeos, converter no formato vertical, colocar a logo do canal e ctas (call to action, curte, comenta, se inscreve e informando que era um vídeo curto para um vídeo maior). &lt;/p&gt;

&lt;p&gt;Isso consome muito tempo, e trabalho manual que minha mão grita de dor pois tenho lesões nas duas mãos.&lt;/p&gt;

&lt;p&gt;Quebrando o problema em etapas menores:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cortar os vídeos em tamanho máximo de 59 segundos.&lt;/li&gt;
&lt;li&gt;Converter os vídeos para formato vertical, eu gravo em 16:9 formatos verticais são 9:16.&lt;/li&gt;
&lt;li&gt;Adicionar o layer de cta do canal 
&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm18csfl5i3owoz09bxx3.gif" alt="Image description" width="606" height="1080"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Iremos falar da primeira etapa hoje, cortar os vídeos em no máximo 59 segundos. Aqui tem um trabalho manual de assistir o vídeo e anotar uma minutagem de início, fim e nome do arquivo para o corte ser realizado. &lt;/p&gt;

&lt;p&gt;Feito essa planilha no formato  csv, ela será o input do script que escrevi e vou ler a mesma utilizando a lib csv do python.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fomou1yeyogi2th3of9tk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fomou1yeyogi2th3of9tk.png" alt="Image description" width="733" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Faço validação pois preciso ter os campos que mencionei acima e sigo para criar os vídeos no formato vertical. Nesse ponto para cada vídeo longo eu vou criar n vídeos dependendo das entradas da planilha e o nome dos arquivos segue o formato abaixo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffjii566f3tp8s97vghyf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffjii566f3tp8s97vghyf.png" alt="Image description" width="800" height="308"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Onde um dicionário foi criado para marcar o nome do arquivo de saída com um contador, pois para cada entrada abaixo vai ser formado uma saída dessa forma:&lt;/p&gt;

&lt;p&gt;{basename}_{counter}{extension}&lt;/p&gt;

&lt;p&gt;Em outras palavras, informado a planilha abaixo:&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flfiav5o0kfa8250orb8f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flfiav5o0kfa8250orb8f.png" alt="Image description" width="744" height="162"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Eu tenho a saída:&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwn5cvig80kzoxzacc3fh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwn5cvig80kzoxzacc3fh.png" alt="Image description" width="393" height="189"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tudo certo, agora precisamos cortar o vídeo de fato, para isso vamos utilizar FFmpeg, software utilizado para manipular, editar etc arquivos de áudio e vídeo.&lt;/p&gt;

&lt;p&gt;Procurando na doc e stackoverflow e chat gpt para explicar os comandos consegui realizar o comando abaixo:&lt;/p&gt;

&lt;p&gt;Estou rodando o ffmpeg no terminal e os comandos ditam:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyk7xuwr6zih8pixlc1zv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyk7xuwr6zih8pixlc1zv.png" alt="Image description" width="800" height="40"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;“”ss” - Inicio do corte&lt;br&gt;
“to” - Fim do corte&lt;br&gt;
“-i” -  Arquivo de entrada”&lt;/p&gt;

&lt;p&gt;Rodando esse comando eu consigo cortar os vídeos dado um início e fim e o nome de saída, agora falta integrar isso no python e tá pronto o sorvetinho certo? &lt;/p&gt;

&lt;p&gt;Não!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg9oeljko6rqdz4vk0bbf.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg9oeljko6rqdz4vk0bbf.gif" alt="Image description" width="216" height="192"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Detectei um problema onde há uma falha de sincronização entre o áudio e o vídeo. A faixa de áudio começava primeiro e após alguns segundos aparecia o vídeo, ouch!! &lt;/p&gt;

&lt;p&gt;Pesquisa, pesquisa e mais pesquisa. &lt;/p&gt;

&lt;p&gt;Chatgpt me explicou alguns comandos que achei na doc (a doc é bem triste de ler do ffmpeg). &lt;/p&gt;

&lt;p&gt;Vamos de teste com o novo comando:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ffmpeg -ss 00:00:00 -t 00:00:10 -i branding.mp4 -vcodec copy -acodec copy -avoid_negative_ts make_zero potato.mp4&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Agora podemos comemorar&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgpvw6pk85nze26dy0ry1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgpvw6pk85nze26dy0ry1.gif" alt="Image description" width="250" height="136"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora é juntar isso tudo no python, criar um subprocesso para chamar o ffmpeg e cortes rápidos igual aquela marca de faca (patrocina nós) .&lt;/p&gt;

&lt;p&gt;Vou utilizar a lib subprocess para abrir o processo de chamar o ffmpeg que está instalado no meu sistema operacional e aguardar até que o vídeo seja cortado.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;result = subprocess.run([&lt;br&gt;
   'ffmpeg', '-ss', start_time, '-t', duration, '-i', filename,&lt;br&gt;
   '-vcodec', 'copy', '-acodec', 'copy', '-avoid_negative_ts', 'make_zero',&lt;br&gt;
   output_filename&lt;br&gt;
], capture_output=True, text=True)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;O pulo do gato para retirar a falha de sincronização foi justamente adicionar o parâmetro ('-avoid_negative_ts', 'make_zero') que evita de ter timestamp negativos e com isso não gerar a falha de sync entre vídeo e aúdio.  &lt;/p&gt;

&lt;p&gt;E seguimos fazendo isso para cada linha do csv que nos foi informado para processar e o resultado são vídeos cortados em até 59 segundos para serem colocados no formato vertical.&lt;/p&gt;

&lt;p&gt;Por hoje era isso, receber o csv, cortar o vídeo, lidei com a dessincronização de áudio e vídeo e exportei os vídeos para a próxima etapa que é transformá-los em formato vertical. Irei trazer o artigo de conversão desses vídeos para vertical em um futuro próximo.&lt;/p&gt;

</description>
      <category>development</category>
      <category>python</category>
      <category>shorts</category>
      <category>developer</category>
    </item>
    <item>
      <title>A Trigger Analogy</title>
      <dc:creator>TheDigitalBricklayer</dc:creator>
      <pubDate>Tue, 18 Jun 2024 00:05:43 +0000</pubDate>
      <link>https://dev.to/thedigitalbricklayer/a-trigger-analogy-1gkc</link>
      <guid>https://dev.to/thedigitalbricklayer/a-trigger-analogy-1gkc</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/cs"&gt;DEV Computer Science Challenge v24.06.12: One Byte Explainer&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Explainer
&lt;/h2&gt;

&lt;p&gt;We can think of triggers in the context of a rabbit trap. When an update, delete, or insert is made, it is like the prey triggering the trap, and we can do something about it, like inserting, updating, or deleting a record in the database.&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional Context
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.geeksforgeeks.org/sql-trigger-student-database/"&gt;https://www.geeksforgeeks.org/sql-trigger-student-database/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>cschallenge</category>
      <category>computerscience</category>
      <category>beginners</category>
    </item>
    <item>
      <title>naive explanation of cryptography.</title>
      <dc:creator>TheDigitalBricklayer</dc:creator>
      <pubDate>Mon, 17 Jun 2024 23:06:29 +0000</pubDate>
      <link>https://dev.to/thedigitalbricklayer/naive-explanation-of-cryptography-gpo</link>
      <guid>https://dev.to/thedigitalbricklayer/naive-explanation-of-cryptography-gpo</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/cs"&gt;DEV Computer Science Challenge v24.06.12: One Byte Explainer&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Explainer
&lt;/h2&gt;

&lt;p&gt;Cryptography is the act of shuffling a message, and the only way to read the message and its contents is to know how the message was encrypted or to have the key to decrypt it. Turing broke the Enigma and helped to win the war.&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional Context
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Cryptography"&gt;https://en.wikipedia.org/wiki/Cryptography&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pt.wikipedia.org/wiki/Alan_Turing"&gt;https://pt.wikipedia.org/wiki/Alan_Turing&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>cschallenge</category>
      <category>computerscience</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
