Categoria: Desenvolvimento

Como validar links externos

Introdução

Em projetos open source, usamos o arquivo README escrito em markdown, que é uma forma simples e flexível de documentar informações importantes.

Usamos o markdown para criar as famosas Awesome Lists, como o Awesome A11y.

Uma Awesome List geralmente possuí diversos links externos.

Como tratamos com várias referências, será que existe uma forma de garantirmos que aquele link não está quebrado?

Pensando nisso, nesse artigo vou te ensinar uma forma prática de validar os links no padrão markdown.

Anatomia de um hyperlink

A função principal de um link é promover conexão entre páginas web, essas ligações pode ser através de:

  • uma página a outra;
  • arquivos;
  • telefones;
  • endereços eletrônicos (e-mail);
  • âncorar locais em uma mesma página.

Para maiores informações consulte a documentação do elemento <a>.

Links quebrados

É bem comum ouvir a expressão “link quebrado”, mas o que ela quer dizer?

Um link quebrado, é um recurso que o servidor tentou localizar e não encontrou, gerando o famoso 404 - Page not found

Links quebrados vs Markdown

Hoje, estava estudando algumas referências sobre qualidade de software em um repositório no Github e me deparei com alguns links quebrados no Markdown.

Fiquei pensando como poderia corrigir isso, resolvi procurar uma solução que permitisse percorrer todos os links e retornar o status de cada um.

Encontrei o Markdown link check, ele é um pacote no npm de fácil utilização.

Usando o Markdown Lint Check

Para usar o Markdown link check, devemos ter um arquivo package.json configurado. Caso seu projeto não tenha, execute o seguinte comando:

# cria uma estrutura padrão do package.json
npm init -y

# cria uma estrutura padrão do package.json
npm init -y

Instalando a dependência

Após ter o package.json configurado, iremos instalar ele localmente no projeto com o comando:

npm install --save-dev markdown-link-check

Validando os links

Existem duas alternativas de validar os links:

  • através da linha de comando;
  • através de um comando script definido no package.json.

Linha de comando

Pela linha de comando é recomendável para poucos arquivos, assim você tem um feedback bem rápido.

markdown-link-check https://github.com/tcort/markdown-link-check/blob/master/README.md

No exemplo acima, validamos o README do Markdown link check

Tarefa no package.json

Eu utilizei esse formato, encontrei no blog do Gleb Bahmutov.

Abra seu arquivo package.json e configure:

{
  "scripts": {
    "check:markdown": "find *.md -exec npx markdown-link-check {} \;"
  }
}
Dessa forma ele irá percorrer todos os arquivos com a extensão *.md

Digite no terminal:

npm run check:markdown

Nessa solução pode demorar um pouco, visto que, percorrerá todos os arquivos do projeto.

Considerações finais

Esse pacote me auxiliou e economizou um tempo consideralvél.

Ele é uma ótima alternativa para detectar possíveis problemas e resolvê-los de forma rápida e dinâmica.

Existe a possibilidade de usar com o Docker e também incluir ele numa pipeline de desenvolvimento. Legal né?

E você como usaria ele para auxiliar seu trabalho?

Criando alias para ganhar produtividade


Introducão

No dia a dia de um desenvolvedor é muito comum repetirmos diversos comandos, fazendo assim, o trabalho um pouco repetitivo. Pensando nisso os alias foram criados como uma forma de encurtar alguns comandos. Nesse post eu te mostro como criar dois alias de forma rápida e prática.

Em nosso cotidiano, digitamos uma infinidade de comandos, seja no código fonte ou no terminal.

A grande maioria desses comandos, são tarefas repetitivas que podem ser otimizados com a criação de alguns alias, que assim, tornam nosso dia mais produtivo.

Exemplo prático

Como analista de teste, utilizo o git como versionador de códigos juntamente com o meu time. Dentre algumas tarefas que faço todos os dias e atualizar minha base de código e enviar algumas alterações relacionados aos testes que possuímos.

Além disso, abro alguns pull requests para a melhoria contínua da aplicação.

Para atualizar nosso código usamos o comando git push que envia as modificações para o servidor. Todos os dias faço o uso dele, como descrito logo abaixo:

git push origin master

Todos os dias também, tenho que usar o docker para subir a aplicação e preciso digitar dois comandos que sempre esqueço. 😂

Os dois comandos estão descrito abaixo

  # Inicializa o docker
  docker-compose up -d nginx mysql redis workspace

  # Executa o container
  docker-compose exec workspace bash

Pensando nisso decidi criar um alias para otimizar esse comando e encurtar ele. Pessoalmente eu detesto ter que ficar digitando uma infinidade de comandos no terminal, sou fã de coisas simples, como iniciar um banco de dados com apenas uma única linha.

Com os alias isso é possível, desde que, passamos os paramêtros corretos para o alias. A estrutura do alias consiste em:

alias comando_encurtado='comando real'

# exemplo de um comando alias
alias ..="cd .."

Ao digitar no terminal .. ele irá entender que o .. é um atalho para o cd ... Isso é fantástico, eu posso customizar comandos do sistema operacional e também de aplicações, como por exemplo, iniciar o Visual Code com uma única linha de comando.

Para utilizarmos precisamos configurar os alias em nosso terminal. O arquivo de configuração padrão no Ubuntu é o .bash_profile, no meu caso estou usando o zsh que é uma outra versão do bash. O ZSH possuí o arquivo de configuração .zshrc.

Caso esses arquivos não existem eles devem ser criados com o comando:

# Bash padrão
touch .bashrc

# ZSH
touch .zshrc

Importante, a primeira coisa que iremos fazer e verificar se existe o arquivo de configuração. Caso não exista, devo criar o arquivo conforme acima.

# vai para o diretório raiz
cd ~/

# listo os diretórios
ls -lha

Se a minha resposta for parecida com essa, então meu arquivo de configuração está criado:

-rw-r--r--  1 pulis 4,5K mai  6 11:49  .zshrc

Com o arquivo criado, iremos abri-lo digitando no terminal: gedit .zshrc e vou incluir os alias que quero para o docker.

alias init='docker-compose up -d nginx mysql redis workspace'
alias run='docker-compose exec workspace bash'

# reiniciando o terminal para aplicar as modificações
source .zshrc

Após o terminal reiniciado ele reconhecerá os comandos. Assim digitaria:

# inicializando
init

# executando
run

Conclusão

Os comandos alias são poderosos e podem te ajudar bastante no dia a dia. No meu github eu tenho uma coleção de alias.

Expressões regulares: metacaracteres


Introdução

Fala pessoal! Continuando nossa jornada no mundo das expressões regulares iremos aprender sobre os metacaracteres que são essenciais para construirmos nossas regexps.

Metacaracteres: a essência das regexp

Para escrevemos as expressões regulares, aprendemos no post inicial da série que necessitamos de alguns padrões de escrita para acontecer o “casamento” daquilo que procuramos.

Esse casamento é gerado através dos metacaracteres que são:

uma sequência de caracteres ou um caracter com significado especial. Os metacaracteres podem ser categorizados conforme seu uso.

Podemos utilizá-los, para casarmos tudo dentro de uma sequência de caracteres, ou buscarmos somente uma palavra dentro de um texto, por exemplo.

Na tabela abaixo está listado os metacaracteres que as regexp utilizam.

MetacaractereNome
.Ponto
[ ]Lista
[^ ]Lista Negada
?Opcional
*Asterico
+Mais
{ }Chaves
^Circunflexo
$Cifrão
bBorda
 Escape
|Ou
( )Grupo
1Retrovisor

Após conhercemos cada metacaractere, devemos compreender que eles estão subdividos em grupos de acordo com suas características, que são:

Grupos de metacaracteres

Representantes

São metacaracteres que sua principal função é representar um ou mais caracteres. Todos os metacaracteres desse tipo casam a posição de um único caractere, e não mais que um.

MetacaractereNomeFunção
.PontoUm caractere qualquer
[…]ListaLista de caracteres permitidos
[^…]Lista NegadaLista de caracteres proibidos

Quantificadores

São metacaracteres que nos dizem a quantidade de repetições que o caractere ou metacaractere anterior pode realizar.

MetacaractereNomeFunção
?OpcionalZero ou um
*AstericoZero, um ou mais
+MaisUm ou mais
{n, m}ChavesDe n até m

Âncoras

Diferentemente dos anteriores, os do tipo âncora marcam uma posição específica na linha que está sendo examinada.

MetacaractereNomeFunção
^Circunflexoinício da linha
$Cifrãofinal da linha
bBordainício ou fim de palavra

Outros

São metacaracteres que possuem funções específicas mas não se relacionam entre si.

MetacaractereNomeFunção
cEscapetorna literal o caractere c
|OuOu um ou outro
(…)Grupodelimita um grupo
1…9Retrovisorcasa nos grupos 1 até 9

Conclusão

Nos próximos artigos, iremos aprofundar em cada grupo de metacaracteres e começar a colocar a mão na massa.

Expressões regulares: introdução e história

Nesta série, vamos estudar sobre expressões regulares e compreender os benefícios de sua utilização.

Introdução

Fala pessoal! Depois de muito tempo offline, sem escrever absolutamente nada sobre desenvolvimento resolvi reativar meu blog para partilhar conhecimentos e me forçar a estudar também.

Nesta série de artigos, iremos estudar juntos sobre Expressões Regulares, sua história, conceitos e implementações dela, no mundo real.

Vamos, encarar esse monstro?

Bambam tirando sua camisa no treino

Comecei a folhear o livro Expressões Regulares: Uma Abordagem Divertida do Aurélio Jarbas, uma das grandes referências brasileiras no assunto.

O livro, está na sua quinta edição e você pode adquiri-lo no site da NOVATEC. Existe também a versão digital que é comercializada na Amazon.

O intuito dessa série de artigos e estudar as etapas que compreendem uma expressão regular. Servira como um guia de estudos e fonte de consulta posterior também.

Posteriormente irei fazer um review do livro.

Uma breve história

As expressões regulares são uma forma concisa de identificar cadeias de caracteres, palavras ou padrões de texto. Por exemplo: buscar todos os telefones que contenham o DDD (31).

Elas são escritas em uma linguagem formal que pode ser interpretada por processadores de ER’s, um programa que serve um gerador de analisador sintático ou examina o texto e identifica as partes que casam com a especificação dada.

Alguns, desses programas são distribuídos livremente na internet, como:

O termo deriva do trabalho do matemático norte-americano Stephen Cole Kleene, que desenvolveu as expressões regulares como uma notação ao que ele chamava de álgebra de conjuntos regulares ou também conhecida como álgebra de Kleene.

Kleene foi notório em sua área de atuação, considerado e reconhecido juntamente com Alan Turing e Emil Post e outros como o fundador de uma ramificação da lógica matemática, chamada de teoria da computabilidade. Esse trabalho fundamentou o estudo que as funções são computáveis.

Vários conceitos matemáticos têm seu nome, como: hierarquia de Kleene, álgebra de Kleene, fecho de Klenne e teorema da recursão de Klenne.

Legal, mas para que serve

As ER’s servem para uma infinidade de propósitos, vai depender muito do contexto em que iremos utilizá-la. Em um editor de texto, como o Word, por exemplo, podemos utilizar uma ER para substituir determinado termo dentro de um texto.

Imagine a praticidade de fazer isso em um tcc ou dissertação de mestrado de forma assertiva e simples.

Outra abordagem seria na validação de um número de cartão de crédito, ou até mesmo validar um e-mail e telefone.

Abaixo, cito alguns exemplos que ela pode ser utilizada:

  • corresponder a qualquer endereço de IP em um intervalo;
  • corresponder a qualquer endereço de e-mail de um domínio específico;
  • corresponder somente a frase exata;
  • corresponder a palavra com grafias diferentes ou caracteres especiais;
  • corresponder a um formato alfanumérico;
  • corresponder a um número de telefone;

Exemplo de expressão regular

Corresponde somente a frase exata:

(W|^)tesourodireto(W|$)

CEP formatado com expressões regulares

d{5}-d{3}

Curiosidades

As ER’s estão em praticamente em todos os lugares, linguagens de programação, editores de texto, banco de dados, planilhas e muito mais, abaixo, listo alguns meios em que se pode usar:

PlanilhasAplicativosBanco de dadosLinguagensEditores
Google DocsGrepMySQLAwkEmacs
OpenOfficeApache HTTPdPostgreSQLJavascriptVIM
 NginxOraclePHPWord
  SQLitePythonOpenOffice
   SedNotepad++
   TclVisualCode
   VBScriptSublime Text
   C 
   Java 
   Ruby 
   ActionScript 
   PHP PCRE 
   Shell Script 
   HTML5 
   Lua 
   .NET (VB, C#) 
   Powershell 

Conclusão

As expressões regulares são um recurso extremamente poderoso, dominando elas podemos resolver problemas do cotidiano de forma simples. Tem conhecimento do seu funcionamento é de suma importância para ser um bom desenvolvedor.

Venha nessa jornada rumo as Expressões Regulares!

Como buscar tags do wordpress sem link


Esse artigo visa mostrar de forma clara como é possível retornar o nome das tags do WordPress sem o link padrão. É uma técnica relativamente simples uma consulta na documentação e resolvemos nosso problema, vamos lá!

O cenário

Estou desenvolvendo um site com meu amigo Jhonny Costa, onde temos uma determinada página que irá retornar a tag de um determinado post.

Após algumas conversas, entramos em um impasse onde não exisitiria a necessidade das tags virem com seus respectivos links.

Então eu recorri a documentação do WordPress para consultar a função que gera as tags a the_tags(), a documentação mostra que ela recebe três paramêtros por padrão: $before, $sep, $after.

$before

Paramêtro do tipo String, onde retornará um texto antes das tags serem exibidas. Seu padrão é a palavra “Tags”.

$sep

Paramêtro do tipo String, onde retornará um texto ou caractere que serão exibidos entre cada tag link, O padrão dele é (,) entre cada tag.

$after

Paramêtro do tipo String, onde retornará um texto após a última tag. Seu padrão não é exibir nada.

A função the_tags() não possui retorno.

Exemplo

Imagine o caso, o cliente me pediu que o texto que deve ser mostrado seria “Tags Sociais” e separados pelo sinal maior (>):

the_tags(‘Tags Sociais: ‘,’ > ‘);

Para exibir somente as tags sem o link devemos escrever o seguinte código:

foreach(( get_the_tags() ) as $tag):
  echo $tag->name;
endforeach;

Você deve colocar esse trecho de código no lugar apropriado do seu tema para retornar as tags sem os seus links.

Conclusão

Com esse trecho de código resolvi meu problema para retornar as tags, espero que possa ser útil para alguém que tenha a mesma dúvida ou similar.

Caso tenha alguma dúvida escreva um comentário.

© 2021 Bruno Pulis

Theme by Anders NorenUp ↑