Projeto levemente inspirado na série Aprenda X mas com o objetivo de registrar os meus estudos "de cada dia" sobre algumas linguagens de programação que foram escolhidas por mim. Reunindo um vasto conteúdo de informações didaticamentes bem formuladas sobre cada linguagem e os conceitos que as cercam.
Para cada linguagem a ser conhecida, haverá um diretório (com o seu nome) que listará conteúdos que podem ser vídeos, artigos, playlists, livros, etc. Cada item (chamado de tarefa) foi escolhido com uma breve pesquisa sobre aspectos introdutórios da linguagem ou recomendado pela comunidade. Para mais informações sobre as tarefas dispostas e a formatação adotada, clique aqui. Junto com o arquivo que listas as tarefas (README.md por padrão), haverá um emblema/badge que servirá de "contador de progresso".
Além das tarefas em si, o Projects deste repositório reunirá tanto ideia de projetos [pessoais] a serem desenvolvidos para praticar o uso das linguagens quanto links para informações mais "dinâmicas", como blogs.
O formato para listar as tarefas foi escolhido pensando nos scripts (em Shell Script) que controlariam a inserção, remoção e edição das tarefas. Para o correto funcionamento desses scripts para "automatizar" a atualização das tarefas, o arquivo de texto em Markdown que lista as tarefas deve seguir o template EJS abaixo. Além disso, os itens (chamados de "tarefas") devem estar dipostos um por linha da seguinte forma:
<div align="center">
<img src="<%= lang.logo_path %>" width="<%= lang.logo_width %>">
<h1><i><%= lang.name %></i> de Cada Dia</h1>
<img src="https://img.shields.io/badge/done-0%25%20(0%20of%200)-<%= lang.badge_color %>.svg" width="<%= lang.badge_width %>">
</div>
<p align="center">
<% sections.forEach(function(s) { -%>
<a href="#<%= s.name.trim().toLowerCase().replace(/\\s/g, '-') %>">:<%= s.emoji %>:</a>
<% }) -%>
</p>
---
<div align="center">
<% sections.forEach(function(section) { -%>
## <%= section.name %>
status | title | last update | snippet | notes
:-----:|:------|:-----------:|:-------:|:----:
<% }) -%>
</div>
lang: {
name: String,
badge_color: String,
badge_width: Number,
logo_path: String,
logo_width: Number,
};
sections: [{ name: String, emoji: String }];
Como visto anteriormente, a tabela de cada seção deve ter as seguintes colunas:
status
- Se não tiver valor, então a tarefa está pendente. Deve ser preenchido com o emoji de nome white_check_mark
title
*- Nome único que identificará a tarefa
last update
- Indica que "versão" da tarefa foi registrar/feita
snippet
- Breve introdução sobre o conteúdo da tarefa
notes
- Referencia o arquivo/diretório que contém possíveis anotações sobre a tarefa, podendo ser código, pequeno projeto envolvido, etc
No arquivo, uma tarefa dita pendente deve estar mais ou menos assim:
^|| [nome-da-tarefa](link-para-a-tarefa) | data | |$
Ao passo que uma dita concluída deve estar assim:
^:white_check_mark: | [nome-da-tarefa](link-para-a-tarefa) | data | |$
testado no
bash
(MinGW, Cygwin e Fish) ezsh
(vide o script)
O script tasks_manager.sh utiliza os padrões definidos para facilitar a criação, edição, remoção das tarefas. Além de marcar as tarefas pendentes como feitas, abrir links do title e criar arquivos e diretórios.
$ ./tasks_manager.sh
para maiores detalhes