Comandos Básicos do Docker

O Docker é uma das ferramentas mais utilizadas para a criação e gestão de contêineres, permitindo que aplicativos sejam executados de maneira isolada e eficiente. Para quem está começando ou quer relembrar comandos essenciais, aqui está um guia com os principais comandos do Docker e suas funções.

1. Gerenciamento de Contêineres

  • docker run – Executa um comando em um novo contêiner.
  • docker ps – Lista todos os contêineres em execução.
  • docker start – Inicia um contêiner que está parado.
  • docker stop – Para um contêiner em execução.
  • docker restart – Reinicia um contêiner.
  • docker rm – Remove um ou mais contêineres.
  • docker kill – Encerra forçadamente um contêiner.
  • docker pause – Pausa um contêiner em execução.
  • docker unpause – Retoma um contêiner pausado.
  • docker attach – Conecta-se a um contêiner em execução.
  • docker exec – Executa um comando dentro de um contêiner sem precisar conectá-lo ao terminal.
  • docker logs – Exibe os logs de um contêiner.
  • docker top – Exibe os processos em execução dentro de um contêiner.
  • docker stats – Mostra estatísticas de uso de CPU, memória e rede do contêiner.
  • docker inspect – Exibe todas as configurações de um contêiner em formato JSON.

2. Gerenciamento de Imagens

  • docker images – Lista as imagens disponíveis no host.
  • docker pull – Faz o download de uma imagem do Docker Hub.
  • docker push – Envia uma imagem para um repositório.
  • docker build – Cria uma imagem a partir de um arquivo Dockerfile.
  • docker commit – Cria uma nova imagem a partir de um contêiner em execução.
  • docker save – Salva uma imagem em um arquivo .tar.
  • docker load – Carrega uma imagem a partir de um arquivo .tar.
  • docker rmi – Remove uma ou mais imagens.
  • docker history – Exibe o histórico de comandos usados para criar uma imagem.
  • docker tag – Adiciona uma tag a uma imagem.
  • docker import – Importa uma imagem de um arquivo .tar.

3. Gerenciamento de Volumes e Arquivos

  • docker volume – Gerencia volumes no Docker.
  • docker cp – Copia arquivos ou diretórios entre o host e o contêiner.
  • docker export – Exporta o sistema de arquivos de um contêiner para um arquivo .tar.

4. Rede e Conectividade

  • docker network – Gerencia redes do Docker.
  • docker port – Lista as portas mapeadas de um contêiner.

5. Gerenciamento de Serviços e Clusterização

  • docker swarm – Gerencia clusters de contêineres Docker.
  • docker service – Gerencia serviços no Docker Swarm.
  • docker node – Gerencia nós em um cluster Docker Swarm.

6. Outras Operações

  • docker info – Exibe informações detalhadas sobre o host Docker.
  • docker version – Exibe as versões da API, Cliente e Servidor do Docker.
  • docker update – Atualiza as configurações de um ou mais contêineres.
  • docker events – Mostra eventos do Docker em tempo real.
  • docker search – Pesquisa por imagens no Docker Hub.
  • docker login – Faz login em um repositório de imagens.
  • docker logout – Faz logout de um repositório de imagens.
  • docker wait – Aguarda a finalização de um contêiner antes de prosseguir.

Conclusão

Dominar esses comandos do Docker é essencial para quem deseja trabalhar com contêineres de maneira eficiente. Se você está começando, experimente cada um deles para entender como funcionam na prática. Para usuários avançados, revisar esses comandos pode ajudar a otimizar fluxos de trabalho e automatizar tarefas no ambiente de desenvolvimento e produção.

Como agendar uma impressão semanal automática na Epson EcoTank L3250 com Gmail e Google Apps Script

A impressora Epson EcoTank L3250 é uma excelente opção para quem busca economia e qualidade na impressão. No entanto, impressoras de tanque de tinta podem sofrer com entupimentos se ficarem muito tempo sem uso. Para evitar esse problema, uma solução simples é programar uma impressão automática semanal de uma página colorida. Isso pode ser feito enviando um e-mail para a impressora usando o Epson Connect e Google Apps Script.

Outras Impressoras Compatíveis com Impressão via E-mail

Esse processo também pode ser feito em outros modelos de impressoras de rede, seja da Epson ou de outras marcas. A HP, por exemplo, oferece o serviço HP Smart App, enquanto a Canon conta com o PIXMA Cloud. Esses serviços geram um e-mail exclusivo para a impressora, permitindo que qualquer documento enviado para esse endereço seja impresso automaticamente. Uma busca simples, você encontra como habilitar esses serviços no modelo de sua impressora. Este é o pré-requisito para continuarmos, a seguir, explico como configurar tudo isso passo a passo.

Passo 1: Registrar a Impressora no Epson Connect

Antes de automatizar o envio de e-mails, é necessário cadastrar a impressora no Epson Connect e obter um e-mail exclusivo para a impressora.

  1. Acesse Epson Connect.
  2. Crie uma conta ou faça login.
  3. Registre sua impressora seguindo as instruções.
  4. Após o registro, um e-mail será gerado automaticamente para a impressora, algo como nomedaimpressora@print.epsonconnect.com.
  5. Salve esse e-mail, pois ele será usado para automatizar o envio dos arquivos

Se quiser ver um vídeo desse processo, este aqui é bacana e ensina até como integrar com a Alexa: https://www.youtube.com/watch?v=y0KpSzAYNiI&t=180s

Passo 2: Criar ou Baixar um Arquivo de Teste para Impressão

Agora, é preciso definir qual arquivo será impresso semanalmente. Ele deve conter imagens coloridas para garantir a circulação de tinta nos cartuchos. Você pode:

Armazene esse arquivo no Google Drive em uma pasta específica, para facilitar o envio automatizado. No exemplo, a pasta chamará Impressão Semanal e foi criado na raiz do Google Drive.

Passo 3: Criar um Google Apps Script para Enviar o E-mail Automático

Agora, vamos configurar o Google Apps Script para enviar um e-mail com o arquivo anexado para a impressora automaticamente toda semana.

1. Criar um Projeto no Google Apps Script

  1. Acesse Google Apps Script.
  2. Clique em Novo Projeto.
  3. Substitua o código padrão pelo seguinte:
function enviarEmailParaImpressora() {
  var emailImpressora = "SEU_EMAIL_DA_IMPRESSORA@print.epsonconnect.com"; // Substitua pelo e-mail da sua impressora
  var assunto = "Impressão Semanal Automática";
  var mensagem = "Este é um teste de impressão automática.";
  
  // Acessar o Google Drive e obter o arquivo PDF
  var pasta = DriveApp.getFoldersByName("Impressão Semanal").next(); // Nome da pasta onde está o arquivo
  var arquivos = pasta.getFiles();
  
  if (arquivos.hasNext()) {
    var arquivo = arquivos.next();
    
    MailApp.sendEmail({
      to: emailImpressora,
      subject: assunto,
      body: mensagem,
      attachments: [arquivo.getAs(MimeType.PDF)]
    });
    
    Logger.log("E-mail enviado com sucesso para a impressora.");
  } else {
    Logger.log("Nenhum arquivo encontrado na pasta.");
  }
}
  1. Substitua SEU_EMAIL_DA_IMPRESSORA@print.epsonconnect.com pelo e-mail da sua impressora.
  2. Clique em Salvar.

2. Criar um Acionador para Executar Semanalmente

  1. No Google Apps Script, clique no ícone do Relógio (Acionadores) no menu lateral.
  2. Clique em Adicionar acionador.
  3. Configure da seguinte forma:
    • Escolher função (Function) para executar: enviarEmailParaImpressora
    • Escolher origem do evento: Baseado no tempo (Time-Based)
    • Tipo de acionador baseado no tempo: Semanalmente
    • Clica em Add Trigger
    • Escolha o dia e horário desejado.
  4. Clique em Salvar e autorize as permissões.

Passo 4: Testar a Automação

  1. No Google Apps Script, clique em Executar (Executions) → enviarEmailParaImpressora.
  2. Verifique no Gmail se o e-mail foi enviado corretamente.
  3. Aguarde a impressora imprimir automaticamente o documento.

Conclusão

Agora, seu Gmail enviará automaticamente um e-mail semanalmente para sua impressora, garantindo que a tinta continue fluindo e evitando entupimentos!

O mundo pode ter 1 bilhão de desenvolvedores

O futuro da programação está em constante transformação, e uma previsão surpreendente está ganhando força: o mundo pode ter 1 bilhão de desenvolvedores em um futuro próximo. Essa estimativa não é aleatória; ela é baseada em estudos de fontes renomadas, como a Sequoia Capital e o GitHub, que identificam uma expansão acelerada no papel dos desenvolvedores e nas ferramentas disponíveis.

A ideia de que 1 bilhão de pessoas estarão envolvidas com desenvolvimento de software pode parecer exagerada, considerando que nem todos têm a ambição de se tornar programadores. No entanto, segundo a Sequoia Capital, o papel do desenvolvedor está se tornando mais inclusivo, com o surgimento de novas plataformas e abordagens. Tecnologias como o no-code e o low-code, além da inteligência artificial, e mesmo as plataformas de gerenciamento de conteúdo como WordPress e de e-commerce, estão permitindo que pessoas sem formação técnica desenvolvam soluções complexas de software.

Esse fenômeno tem sido denominado “Citizen Developer” pela Gartner, referindo-se a indivíduos que, com ferramentas simplificadas, conseguem criar e gerenciar sistemas sem a necessidade de um time de desenvolvimento tradicional, o que diminui a dependência dos departamentos de TI e acelera a inovação dentro das empresas​. Claro que isso também pode gerar problemas de manutenção, especialmente quando essas soluções crescem ou quando precisam ser integradas a sistemas legados. Nesse caso, equipes de TI acabam lidando com códigos ou soluções que não seguem os padrões estabelecidos, o que pode complicar a evolução e a sustentação do sistema a longo prazo​.

Essa tendência reflete mudanças maiores no cenário tecnológico. A ideia do “Dev em T”, que representa um profissional com conhecimento profundo em uma área específica e habilidades amplas em diversas outras, torna-se cada vez mais relevante nesse contexto, mostrando a necessidade de flexibilidade e adaptação às novas formas de trabalho, onde o desenvolvimento de software está se tornando uma habilidade essencial, abrangendo não apenas programadores profissionais, mas também indivíduos de diversas áreas.

Como reparar disco rígido externo com Mac Terminal

Método 1: Verifique e repare o disco rígido externo na linha de comando

  1. Abra o Terminal (/Aplicativos/Utilitários/Terminal.app)
  2.  Digite o comando: # cd /Volumes e, em seguida, digite ls.
    (Você verá uma lista de discos anexados ao seu Mac. Selecione aquele para verificação e reparo e observe a letra da unidade.
  3. Digite o comando: #diskutil VerifyVolume [identificador de unidade] e pressione Enter. (Certifique-se de substituir a parte [identificador da unidade] pelo nome real do disco rígido externo)
    Depois de verificar o disco rígido externo, se você não receber nenhuma mensagem de erro, não será necessário reparar o disco rígido externo . Mas se você receber a mensagem de erro: “O volume foi encontrado corrompido e precisa ser reparado”, você deve usar outras linhas de comando para reparar a unidade.
  4. # diskutil repairvolume /Volumes/[identificador de unidade]/ e pressione Return. (Por exemplo, se o nome do seu disco rígido externo for “ExternalBackups”, digite diskutil repairvolume /Volumes/ExternalBackups/)

Método 2: Repare o disco rígido externo com fsck

Se a solução acima falhar ao reparar o disco rígido externo, não fique chateado, você pode tentar  o comando fsck  . Essa linha de comando é um pouco mais complexa, mas funciona em situações em que  o Utilitário de Disco não consegue reparar arquivos .

  1. Abra o Terminal (/Aplicativos/Utilitários/Terminal.app).
  2. Digite diskutil list (Isso produzirá uma lista de todas as unidades atualmente conectadas, montadas e desmontadas).
  3. Localize o que você deseja e encontre seu identificador de unidade.
  4. Reinicie o seu Mac e, antes que o logotipo da Apple apareça, mantenha pressionadas as teclas Command + S para inicializar no  modo de usuário único do Mac .
  5. Algum texto branco irá rolar rapidamente. Quando parar, digite /sbin/fsck –fy e pressione Return.
  6. Digite /sbin/fsck_hfs -fy /dev/[identificador de unidade] (Altere hfs para o sistema de arquivos da unidade de destino e substitua [identificador de unidade] pelo nome real da unidade). O fsck verificará o sistema de arquivos e tentará reparar qualquer dano encontrado no disco rígido externo.
  7. Quando o fsck terminar de verificar e reparar o sistema de arquivos, digite reboot no prompt de comando e pressione Enter. Em seguida, nosso Mac será reinicializado, retornando à tela de login normal.

Fonte: https://wiert.me/2020/03/13/macos-checking-a-disk-for-bad-blocks/

GPS no Windows CE – Kia Sorento

Procedimentos:

  1. Separe um cartão SD limpo de boa qualidade Classe A, de 4 GB é suficiente.
  2. Este pacote de arquivos, contém 4 programas de GPS, onde, através de um menu permite escolher qual navegador você deseja usar:
  3. Porém, você não precisa utilizar este menu, pode definir um programa padrão que a central vai acessar.
  4. Baixar o arquivo zipado e descompacte e jogue tudo para a raiz de um cartão SD limpo:
    – Link de Download: https://1drv.ms/u/s!AgxQcstkT7fPhLJbfA_CwQ1agzChDQ?e=LT3hDB
    – Tamanho: 3,29 GB
  5. Ao descompactar o arquivo no cartão, ficará com as seguintes pastas:
    – 7ways
    – Amigo
    – Menu
    – Navitel
    – NavitelContent
    – Backup
  6. Coloque o cartão SD na central. E altere o “caminho da navegação,(vídeo)”, para que seu aparelho inicie com este novo navegador ou pelo Menu.

Este procedimento do vídeo acima, serve como exemplo para todos os aparelhos de GPS, apenas com diferentes menus e traduções.

  • O GPS IGO Amigo esta atualizado e adicionado a última versão dos mapas disponibilizados no site GPS Clube.
    Mapa Here 2022.Q4 Brasil – iGO
    Mapa TomTom Brasil 2022.12 – iGO
  • GPS Navitel esta usando os mapas oficiais deste link: https://navitel.cz/pt/downloads/demo/maps9100
  • GPS 7Ways é necessário baixar o mapa do quadrante da sua região ou da região que irá passar em uma viagem, isso é mais indicado do que baixar o mapa do país inteiro, pois o arquivo fica muito grande e atrapalha no processamento.
    Os mapas você atualiza baixando os quadrantes correspondentes a sua região e mensalmente saí também os arquivos de alertas rodoviários (Radar, Polícia Rodoviária, Lombadas Urbanas, Lombadas Rodoviárias, Perigo, Áreas de Risco, Pedágio, Marcos da Estrada Real, Rota Imperial), nesse pacote foi baixado os do mês de outubro/2020, mas caso você queira atualizar posteriormente, você pode baixar desse site: https://www.tracksource.org.br/desenv/sevenways.php

Ocultando categorias vazias do WooCommerce

Adicionar este trecho no arquivo functions.php do tema. Com isso, categorias que não possuem nenhum produto não serão exibidas.

**
 * Ocultando categorias vazias do Woocommerce
 *
 */

add_filter( 'woocommerce_product_categories_widget_args', 'bbloomer_hide_empty_terms' );
 
function bbloomer_hide_empty_terms( $args ) {
$args['hide_empty'] = true;
return $args;
}

 

Como mudar a cor e outros elementos CSS dos botões do WooCommerce

Para alterar a cor dos botões do WooCommerce, precisaremos alterar/substituir o estilo CSS padrão dos botões. Para fazer isso, precisaremos adicionar css personalizado ao tema do WordPress.

Existem duas maneiras de fazer isso:

  1. Adicionando o CSS customizado no style.css do tema
  2. Usando algum plugin para injetar o css personalizado nas páginas da web.

Quase todos os temas possui um módulo para isso, mas caso não tenha, pode-se usar este plugin para injetar o css nas páginas do site WooCommerce > CSS personalizado simples

  • Etapa 1: Instale o plug-in em seu site e acesse o plug-in.
  • Etapa 2: Vai em Aparência > Simple Custom CSS

Coloque o seguinte css na área de texto e clique em “Update Custom Css”.

.woocommerce #content input.button.alt:hover, .woocommerce #respond input#submit.alt:hover, .woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover, .woocommerce input.button.alt:hover, .woocommerce-page #content input.button.alt:hover, .woocommerce-page #respond input#submit.alt:hover, .woocommerce-page a.button.alt:hover, .woocommerce-page button.button.alt:hover, .woocommerce-page input.button.alt:hover {
    background: red !important;
    background-color: red !important;
    color: white !important;
    text-shadow: transparent !important;
    box-shadow: none;
    border-color: #ca0606 !important;
}

.woocommerce #content input.button:hover, .woocommerce #respond input#submit:hover, .woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce input.button:hover, .woocommerce-page #content input.button:hover, .woocommerce-page #respond input#submit:hover, .woocommerce-page a.button:hover, .woocommerce-page button.button:hover, .woocommerce-page input.button:hover {
    background: red !important;
    background-color: red !important;
    color: white !important;
    text-shadow: transparent !important;
    box-shadow: none;
    border-color: #ca0606 !important;
    text-transform: none !important;
}

.woocommerce #content input.button, .woocommerce #respond input#submit, .woocommerce a.button, .woocommerce button.button, .woocommerce input.button, .woocommerce-page #content input.button, .woocommerce-page #respond input#submit, .woocommerce-page a.button, .woocommerce-page button.button, .woocommerce-page input.button {
    background: red !important;
    color: white !important;
    text-shadow: transparent !important;
    border-color: #ca0606 !important;
    text-transform: none !important;
}

.woocommerce #content input.button.alt:hover, .woocommerce #respond input#submit.alt:hover, .woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover, .woocommerce input.button.alt:hover, .woocommerce-page #content input.button.alt:hover, .woocommerce-page #respond input#submit.alt:hover, .woocommerce-page a.button.alt:hover, .woocommerce-page button.button.alt:hover, .woocommerce-page input.button.alt:hover {
    background: red !important;
    box-shadow: none;
    text-shadow: transparent !important;
    color: white !important;
    border-color: #ca0606 !important;
    text-transform: none !important;
}

 

Vá para a página do produto WooCommerce ou página do carrinho, você verá os botões nas cores vermelha. Para alterar a cor dos botões, por exemplo, substitua o “backgroud: red !important” pela cor desejada. Clique em atualizar e estará pronto e pronto para uso.

Consultando usuários de um banco PostgreSQL

Consultando todos os usuários de um banco PostgreSQL

SELECT usename AS role_name,
  CASE 
     WHEN usesuper AND usecreatedb THEN 
       CAST('superuser, create database' AS pg_catalog.text)
     WHEN usesuper THEN 
        CAST('superuser' AS pg_catalog.text)
     WHEN usecreatedb THEN 
        CAST('create database' AS pg_catalog.text)
     ELSE 
        CAST('' AS pg_catalog.text)
  END role_attributes
FROM pg_catalog.pg_user
ORDER BY role_name desc;

Listando Usuários e Grupos:

SELECT groname,usename from pg_group,pg_user where usesysid = any(grolist);

Listando Usuários e seus Schemas

select nspname,tablename from pg_tables, pg_namespace where nspname not similar
to '%(pg_|information_schema)%' and nspname = schemaname;

 

Adicionando ISRG Root X1 manualmente no chrome – OS X El Capitan 10.11.6

Muitos sites apresentando problemas com certificados ISRG Root X1 no Google Chrome no MacOS X El Capitan 10.11.6.

Problema não aparece no Firefox e tudo funciona bem, mas no Safari apresenta o mesmo problema do Google Chrome.

Uma maneira simples de resolver isso é adicionar manualmente o ISRG Root X1 à lista de certificado raiz confiável.

Rode o comando abaixo no terminal:

curl http://x1.i.lencr.org/ --output $HOME/Downloads/ISRG_Root_X1.der | sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" "$HOME/Downloads/ISRG_Root_X1.der"