Olá a todos, futuros Engenheiros de Software Sênior ! Nos últimos meses, tenho escrito artigos simples que descrevem partes importantes do desenvolvimento. Hoje vou contar para vocês a minha ideia! Quero ajudar você a conseguir seu primeiro emprego. O que é necessário para isso? Para fazer isso você precisa ganhar experiência. Entenda em que consistem esses mesmos projetos, nos quais os engenheiros trabalham e fazem avançar o mundo da tecnologia da informação.
Como fazer isso? Eu preciso escrever algo. Portanto, como parte desta série de materiais, escreveremos passo a passo nosso próprio bot de telegrama (detalhes abaixo). E, ao mesmo tempo, entenderemos a pilha de tecnologia que até mesmo um desenvolvedor Java novato precisa.
Alvo
Escreva um projeto que combine o trabalho com bancos de dados, a criação da lógica de negócios necessária e a configuração do trabalho para implantar o projeto e testá-lo. O que vamos escrever? Se você vai escrever, então precisa escrever algo realmente útil para que haja interesse no trabalho e alguém possa aproveitar o resultado. Com base nesses dados, será escrito um bot de telegrama que funcionará com o site JavaRush. Isso será útil? Sem dúvida! Devido ao fato de os bots de telegrama não serem tão difíceis de escrever, você pode obter rapidamente um projeto funcional que pode ser útil.Tempo de desenvolvimento
Os artigos serão publicados uma vez por semana, então haverá tempo suficiente para dominar/repetir/escrever perguntas se algo não estiver claro. Os primeiros artigos serão a fundamentação teórica que utilizaremos no projeto. E então é só praticar.MVP (produto mínimo viável)
O que é MVP? O termo, como sempre, não é nosso, mas você pode encontrar uma explicação razoável no wiki . Citamos: MVP é um produto que possui funções mínimas, mas suficientes para satisfazer as primeiras necessidades. A principal tarefa é receber feedback para formar hipóteses para o futuro desenvolvimento do produto. Para nós, essa descrição se encaixa perfeitamente. Uma rápida descrição de todas as funcionalidades: Como usuário do Telegram, quero poder assinar novos artigos em grupos e receber notificações quando novos forem publicados. Adoro ler o grupo Histórias de Sucesso , isso me motiva a continuar aprendendo e aprender algo novo. Sou preguiçoso e não quero entrar e atualizar a página todas as vezes . Portanto, eu, como programador, quero facilitar minha vida e escrever um programa que me envie uma mensagem no Telegram informando que um novo artigo foi publicado. Mais ainda: este não é o único grupo que acompanho. Sou de Kharkov, por isso estou interessado em ler artigos publicados lá. Como desenvolvedor deste produto, terei muito interesse em saber se alguém está usando meu trabalho, por isso adicionaremos funcionalidades para administradores para que possam visualizar as estatísticas do bot de telegramas. É possível fazer isso? Certamente! Como? Isso é o que mostrarei em uma série de artigos.Nome de código
Todo projeto legal deveria ter um codinome. O nosso não será exceção, então por enquanto será assim: JRTB (JavaRush Telegram Bot). Doravante será chamado assim.Que tópicos iremos cobrir?
Base de dados
Você precisa entender imediatamente que não pode armazenar estado (dados e informações) no aplicativo. Os dados precisam ser armazenados em um banco de dados. Como não há informações sobre isso no treinamento (pelo que me lembro :D), tentarei preencher as lacunas de conhecimento que precisaremos. Tentarei tornar o esquema do banco de dados o mais simples possível para que não haja confusão. Esta parte incluirá:- Teoria de como trabalhar com SQL baseado em MySQL.
- Uma ferramenta para trabalhar com MySQL é o MySQL Workbench.
- Versionamento de banco de dados. Flyway e base líquida.
- Criando um esquema de banco de dados.
- Crie um desenho de esquema de banco de dados.
Git
Já existem artigos sobre este tema. Claro, nada funcionará sem um sistema de controle de versão. Para começar a trabalhar no JRTB, você precisa entender o git. Você pode fazer isso sozinho ou ler meus artigos sobre este tópico: Se desejar, você também pode ler sobre estratégias de ramificação, mas isso não é crítico aqui e pode ser ignorado.Maven
Aqui falaremos sobre o sistema de montagem, para que serve, como iremos utilizá-lo, no que prestar atenção e regras de bons costumes. Também falaremos sobre versionamento aqui e como exatamente faremos isso.Docker
Para tornar nossa vida mais simples e fácil, e para tornar o processo de implantação o mais simples possível, usaremos Docker. Para fazer isso, vamos falar sobre o que é Docker e quais comandos úteis existem. Quero dizer imediatamente que uso o Docker no nível do usuário e talvez não saiba ou não seja capaz de fazer algo)) Portanto, se alguém sugerir como tornar o trabalho com o Docker melhor/mais fácil, ficarei feliz com isso. Esta parte incluirá:- Teoria e prática do Docker.
- Faça backup/restaure dados via docker.
- Configurando nosso projeto para que ele rode em Docker.
Scripts Bash
Para automatizar o trabalho, às vezes é útil escrever um ou dois scripts. Scripts Bash são scripts que todos os desenvolvedores entendem de uma forma ou de outra, porque são essencialmente trabalhos de linha de comando no Linux, simplesmente salvos em um arquivo separado.Criando um aplicativo
Toda a movimentação estará aqui. Com base no conhecimento prévio, construiremos uma aplicação Spring Boot que conterá um objeto bot de telegrama. O que vamos fazer aqui?- Criando uma descrição completa da funcionalidade que deveria estar lá.
- Uma breve descrição do que é um bot de telegrama.
- Criando um aplicativo Spring Boot.
- Descrição de como trabalhar com Lombok.
- Descrição de como trabalhar com UniRest.
- Implementação do padrão Command + trabalho com criação de sua própria anotação para comandos de administrador.
- Criando um cliente para trabalhar com consultas JavaRush (como uma lista de grupos, uma lista de artigos em um grupo) usando UniRest.
- Testando. Vamos escrever todos os testes possíveis para cobrir nossa funcionalidade.
- Configurando um sistema para verificar a qualidade do código e construir automaticamente no GitHub.
- Conectando o banco de dados junto com o controle de versão do banco de dados.
GO TO FULL VERSION