post

Neste artigo, compartilho a última parte do meu projeto como estagiário aqui na Doutbox. Confira!

Se você ainda não leu a Introdução do meu projeto de estágio, clique aqui para ler a parte 1.

3.6.1 Tarefas de Desenvolvimento

Tarefa: Parte da documentação também é descrever o que foi feito para atingir o resultado final em formas de tarefas, o que auxiliaram no versionamento futuramente, então vamos gerar as tarefas de desenvolvimento

O padrão de tarefas é sempre de forma direta explicar o que deve ser desenvolvido, iniciando com verbos no infinitivo, por exemplo: Nome da Tarefa - Descrição inicial.

• Tarefa 0 - Baixar e instalar as pastas e dependências do Laravel

• Tarefa 1 - criar a migration do projeto

• Tarefa 2 - configurar a migration do projeto

• Tarefa 3 - criar os models do projeto

• Tarefa 4 - criar os controller do projeto

• Tarefa 5 - criar os arquivos das views do projeto

• Tarefa 6 - adicionar as rotas para os controllers do projeto

• Tarefa 7 - estilizar as telas das views

3.6.2 Padrões Doutbox

Tarefa: Na Doutbox utilizamos padrões para manter a qualidade dos códigos e garantir que todos consigam entender as mecânicas e se encontrem facilmente no projeto.

Códigos em Inglês

Tarefa: Escrevemos todos nossos códigos em inglês leia atentamente e levante os benefícios de escrever os códigos em inglês.

As linguagens já utilizam o inglês nas palavras reservadas, por exemplo: GET, SET, SELECT, IF, FOR, etc. ou seja, se for utilizado outra língua sempre que for criar algo será misturado português e inglês, por exemplo getCodigo(); Sem contar que a língua inglesa é mais direta, por ter palavras mais curtas, e não conta com caracteres especiais como: ç,ã,â,à e coisas do tipo, que, não funcionam muito bem se adicionados a um método, classe ou variável, elas vão ter uma formatação estranha.

Outro ponto é que os frameworks como o laravel estão preparados para a utilização do inglês, por exemplo ,ao utilizar o comando php artisan make: model Car – migration anteriormente, a migration já criou a tabela cars, por conta própria, por que como o framework está preparado para que seja utilizado o inglês ele fará mais coisas se aplicado o inglês.

O ponto mais clichê, mas que não deixa de ser verdade é que o inglês é a linguagem universal da programação, ou seja um código em inglês é entendido, e por consequência pode obter manutenção, de qualquer pessoa no globo, e isso aumenta o escopo de aplicação do código e de pessoas que podem usar esse código, facilitando casos de venda ou de integração de alguém que fale outra língua a equipe.

3.7 Módulos

Tarefa: estudar e descrever a importância da utilização, todo conhecimento de ser aplicado ao projetos futuros

Começar instalando a lib com: composer require nwidart/laravel-modules, depois. dentro do package.json, adicionar os modules dentro do autoload adicionando a linha "Modules ":"Modules/", dentro do "psr-4".

Depois criar os modules com o comando php artisan module:make , pode-se criar mais de um, como no exemplo: php artisan module:make Blog User Auth.

Dentro do projeto foi adicionado a collective: composer require laravel-collective/html.

Para usar o module, usar o comando php artisan module: use , ao utilizar o module, então devem ser feitos os padrões, como as migrations, models e controllers para aquele module, com o comando alterado para o module, por exemplo: php artisan module:make-migration create-sharkstable−−table=sharks−−createouphpartisanmodule:make−model. E então basta começar a codificar o projeto.

As configurações para o banco de dados ficam no .env do projeto.

Views e rotas semelhantes na nomenclatura utilizamos a nomeação de rotas com separação através de .(ponto) e - (traço), por exemplo se temos um módulo de cliente dentro da área administrativa o nome da rota ficaria assim para a listagem do index: restrictedarea.clients.index Utilizando a entidade no plural A view para o exemplo da rota acima é:/Modules/Client/Resources/views/clients/index.blade.php (no lugar de / vai contra barra)

Figura 45: rotas para o module sharks

Tarefa: Montar um exemplo de 5 rotas e view com nomes e padrões discutidos acima.

Figura 46: rotas para o module sharks

Nomes e atalhos das rotas

Nunca utilizamos a rota sem nome, nunca a URL pura, sempre nomeamos para evitar problemas na manutenção. Utilizamos ao máximo o grupo de rotas para reduzir a repetição do código e agrupamos as similaridades (middleware, prefixo de nome, prefixo de url) nos grupos.

Tarefa: Fazer um exemplo de um grupo de rota (com rotas dentro) com o maior número de agrupamento semelhantes, buscar todos os parâmetros possíveis para um Route::group

Figura 47: rotas para o module sharks

3.8 Blog - Primeira apresentação

Tarefa: Desenvolver e descrever o desenvolvimento da aplicação do tutorial, busque entender todos métodos utilizados, e adaptar para a nova versão do laravel que você está utilizando. Busque construir o melhor layout (utilizando bootstrap) e utilizar as outras técnicas, padrões e boas práticas que aprendemos até o momento para tornar seu projeto ainda melhor!

• Ao iniciar, favor avisar para agendarmos a apresentação para o time

• Tempo de desenvolvimento: 3 dias

• Link para o tutorial: http://www.findalltogether.com/tutorial/simple-blog-applicationin-laravel-5/ link fora

• Alternativa: http://web.archive.org/web/20171225032909/http://www.findalltogether.com/tutorial/siblog-application-in-laravel-5/

• Github do site para exemplo: https://github.com/28harishkumar/blog

3.9 Perguntas da apresentação

• Parte pública em português

Tudo que for público continua em portugês, inclusive as rotas.

• O que é a variável $errors?

Uma variável que já está presente no framework e é usada para mostrar os erros da aplicação Illuminate/View/Middleware/ShareErrorsFromSession

• O que é a variável old?

A variável old(), vai buscar a última requisição, anterior a atual.

• Diferença de {{}} para {!! !!}

Ao utilizar o {{ }} será uma sessão onde será usado código php, já dentro de {!! !!} será usado requisições HTML.

• O que é o csrftoken?

O uso do csrf_token previne que ataques de csfr (cross-site-requests-foreign) ou falsificação de solicitações entre sites, que é a falsificação.

O csrf_token é um token atrelado aleatório que indica apenas a sessão atual de um usuário,e é passado pelo método hidden ao enviar dados, assim será feita a verificação se o token é compatível a sessão do usuário, evitando fraudes através de csrf.

• O que é o middleware?

O middleware fornece um mecanismo conveniente para inspecionar e filtrar solicitações HTTP que entram em seu aplicativo.

Por exemplo, o Laravel inclui um middleware que verifica se o usuário do seu aplicativo está autenticado. Se o usuário não estiver autenticado, o middleware redireciona o usuário para a tela de login do seu aplicativo.

No entanto, se o usuário for autenticado, o middleware permitirá que a solicitação prossiga no aplicativo.

• Request no lugar de validator:

Pode-se criar a request para cada controller através do comando php artisan module: makerequest , e dentro da request criada pode-se criar as validações para o controller através do método rules.

• Formatação de datas nas views? Criar um helper para formatar as datas fica muito mais fácil alterar a formatação de datas, basta mudar na raiz, que é o helper.

Dentro do helper:

class DateFormat { public const DATE_FORMAT = ’ d/m/Y H:i’; public static function formatDateAndTime($value) {

return Carbon::parse($value)->format(self::DATE_FORMAT);

} }

• Gets e sets do laravel (métodos mágicos)?

Depois de criada a request dentro dos models deve-se criar um método para get para formatar dados que passam por aquele model:

public function getDateFormatAttribute()

{

return DateFormat::formatDateAndTime($this->created_at);

}

• Tipos de dados e retornos?

• return $this->role == ’admin’ || $this->role == ’author’;

substitui

if($role == ’author’ || $role == ’admin’)

{

return true;

}

return false;

• PHP docs?

Testes automatizados.

PHPUnit é um dos mais antigos e conhecidos pacotes de testes unitários para PHP. Ele é projetado principalmente para testes unitários, o que significa testar seu código nos menores componentes possíveis, mas também é incrivelmente flexível e pode ser usado para muito mais do que apenas testes unitários.

O PHPUnit inclui muitas asserções simples e flexíveis que permitem testar facilmente seu código, o que funciona muito bem quando você está testando componentes específicos.

3.9.1 Tarefas de Desenvolvimento

• Tarefa 0 - Baixar e instalar as dependência do Laravel

• Tarefa 1 - Criar as migrations, models e controllers.

• Tarefa 2 - Atualizar as migrations

3.10 Múltiplas autenticações - Segunda apresentação

Tarefa: Desenvolver o modelo de múltiplas autenticações no Laravel, vamos desenvolver um e-commerce onde exista a autenticação do cliente e do administrador (duas entidades diferentes), capazes de se logar em diferentes momentos, busque entender todos métodos utilizados, e adaptar para a nova versão do laravel que você está utilizando. Busque construir o melhor layout (utilizando bootstrap) e utilizar as outras técnicas, padrões e boas práticas que aprendemos até o momento para tornar seu projeto ainda melhor!

• Ao iniciar, favor avisar para agendarmos a apresentação para o time

• Tempo de desenvolvimento: 2 dias

• Link para o tutorial:

  • https://medium.com/@daluamon/multipla-autentica%C3%A7%C3%A3olaravel-32711ca9bced

  • https://www.pusher.com/tutorials/multiple-authentication-guardslaravel/

3.10.1 Tarefas de Desenvolvimento

• Tarefa 0 - Baixar e instalar as dependência do Laravel

3.11 OAuth 2.0 — OAuth

Tarefa: Pesquisar e descrever o que é o oauth (falar sobre o OpenID)

3.12 HTTP Cliente - Requisições

3.12.1 Guzzle

Tarefa: Pesquisar e descrever o que é o Guzzle, principais métodos, aplicações e concorrentes

3.12.2 Guzzle em Laravel

Tarefa: Pesquisar como instalar e aplicar o Guzzle na aplicação Laravel

3.12.3 Guzzle em Laravel Utilizando Jobs

Tarefa: Utilizar o projeto anterior e aplicar o conceito de Jobs, segue link da docuementação (https://laravel.com/docs/5.8/queues)

3.13 Aplicação 1

Tarefa: Desenvolver as requisições de utilizando o Guzzle (https://appdividend.com/2018/04/17/laravelguzzle-http-client-example/)

3.13.1 Tarefas de Desenvolvimento

• Tarefa 0 - Baixar e instalar as dependência do Laravel

3.14 Aplicação 2

Tarefa: Desenvolver as requisições de utilizando o Guzzle (https://www.kodementor.com/usingguzzle-with-laravel-example/) favor utilizar o link para fazer as request https://jsonplaceholder.typicode.com3.14.1 Tarefas de Desenvolvimento

• Tarefa 0 - Baixar e instalar as dependência do Laravel

3.15 Integração com Wakatime - Terceira apresentação

Tarefa: Vamos desenvolver uma aplicação capaz de cadastrar e logar um usuário, após logar o usuário temos que direciona-lo para uma área administrativa onde ele poderá realizar o login com o Wakatime, assim que logar no Wakatime e autorizar a aplicação devemos exibir mais botões no menu para buscar informações do usuário (por data e recurso da API). Importante utilizar elementos gráficos e exibir a informação de maneira clara para o usuário (em dias, horas, minutos e segundos).

• Ao iniciar, favor avisar para agendarmos a apresentação para o time

• Tempo de desenvolvimento: 5 dias


Fontes: www.carlosschults.net / www.lucascaton.com.br / www.sharklabs.com.br / www.guj.com.br / www.nwidart.com

Enviar uma mensagem

Nós adoraráriamos ajudar. Por favor forneceça alguns detalhes e nós entraremos em contato em breve.