Avaliação do Usuário: 5 / 5

Estrela ativaEstrela ativaEstrela ativaEstrela ativaEstrela ativa

As empresas estão sempre buscando desenvolver novos produtos e serviços que possam atender as necessidades de seus clientes. Estamos vivendo em uma época de forte concorrência e mudanças constantes.

As tecnologias evoluem rapidamente permitindo que uma grande quantidade de produtos e serviços sejam disponibilizados diariamente no mercado. O consumidor final, diante de tantas possibilidades e ofertas, conta com diversas ferramentas para tomar a decisão de compra como, por exemplo, comparativos de preços e reviews na internet de outras pessoas que compraram ou utilizaram o serviço.

Para as empresas que criam, desenvolvem e implementam produtos e serviços esta evolução tecnológica gera um grande desafio: Quais caminhos seguir (metodologias, padrões e tecnologias) para que suas equipes possam desenvolver com qualidade, rapidez e com um menor custo gerando um produto/serviço que possa ser lançado no mercado antes que seus concorrentes o façam?

Seguindo nesta linha, este texto descreve de forma centralizada algumas tecnologias e padrões de desenvolvimento que podem ser utilizadas em conjunto no desenvolvimento de sistemas web buscando rapidez, qualidade, adaptação a mudanças e fácil manutenção.

Cada projeto requer uma análise criteriosa sobre quais tecnologias serão utilizadas no seu desenvolvimento, se você trabalha com sites pequenos, com algumas páginas, um pequeno blog com posts e comentários, por exemplo, utilizando apenas um framework MVC já seria o suficiente para um desenvolvimento rápido, porém se o seu sistema começar a crescer com a implementação de novos módulos e novas funcionalidades você certamente terá uma grande dor de cabeça para dar manutenção chegando ao ponto de se frustrar e desistir do projeto.

O que quero dizer é que sempre começamos projetos novos com entusiasmo, a utilização de um framework popular ou nosso próprio framework criado após anos de experiência. Tudo é pequeno e o desenvolvimento flui com rapidez onde vários CRUDs são implementados rapidamente. Com o passar do tempo por diversos motivos nosso sistema começar a ganhar corpo e de repente nos damos em conta de que temos vários trechos de códigos duplicados, misturamos a lógica do negócio com a interface do usuário e para cada correção geramos novos bugs.

Imagine que você precisa desenvolver um produto ou serviço. Alguns requisitos são apresentados e agora você sabe que o sistema deve:

  • Rodar em uma plataforma web;
  • Ser modular - os módulos possuem dependências e podem ser ativados/desativados a qualquer momento pelo cliente;
  • Atender diversos tipos de clientes;
  • Futuramente rodar em diversos aplicativos;
  • Futuramente pode se integrar a outros sistemas;
  • Ser integrado a um ERP que realiza a ativação, medição e cobrança dos clientes.

Pelo exemplo acima já podemos afirmar que não se trata de uma aplicação pequena, então definimos o nosso cenário. Temos um sistema complexo e que irá evoluir ao longo do tempo. Até este pondo já podemos descartar a utilização de um “simples MVC” como conhecemos, com os models que se comunicam com os controllers que por sua vez enviam informações para as views. Conforme já expliquei acima, com o tempo a manutenção seria desgastante e complexa.

Continuando com nosso exemplo, as tecnologias utilizadas para o desenvolvimento desta aplicação estão a seu critério. É sua responsabilidade definir como o sistema será desenvolvido.

Digamos que você é um programador ou analista de sistemas e com certeza (deveria) se preocupa com algumas características que a aplicação deveria ter antes de sair codificando. Citando alguns exemplos:

  • Deploy simples – controlar e subir novas versões para ambientes de testes e de produção deve ser simples sendo realizado com poucos comandos;
  • Facilidade de manutenção – correções e mudanças devem ser fáceis de realizar;
    • Base de código menor permitindo que novatos na equipe entendam o sistema rapidamente;
    • Reaproveitamento de código (de verdade) permitindo uma reutilização facilitando a manutenção e diminuindo duplicidade de código;
    • Implantação contínua e adaptável a mudanças;

Até este ponto temos em mente a complexidade do sistema e algumas características que queremos implementar no desenvolvimento. Antes de iniciarmos o projeto ou durante a análise já podemos definir algumas ferramentas que darão suporte ao desenvolvimento, seja por uma equipe ou apenas uma pessoa.

Controle de Versões

O controle de versões é essencial para manter todo histórico de desenvolvimento facilitando o trabalho em equipe e deploy em produção. No caso de falhas em produção, rapidamente é possível subir uma versão anterior do sistema para contornar a situação. Atualmente temos diversos repositórios gratuitos e pagos entre eles o Bitbucket, GitLab, GitHub, etc.

Para nosso projeto exemplo vamos utilizar o sistema de controle de versão GIT com as ferramentas disponíveis pela GitLab que possui uma versão free com repositórios ilimitados.  Permite também repositórios privados onde o acesso é controlado e possui uma visualização gráfica dos branches muito útil quando se trabalha em equipe.

Bom de nada adianta utilizarmos um sistema de gerenciamento de versão se não utilizarmos boas práticas. O Git possui o Gitflow que é uma extensão do Git que permite uma maior agilidade e organização para trabalhar em equipes ou até mesmo sozinho. Para saber mais sobre isto acesse “Boas Práticas de Organização de Branches”.

 

Gitflow

 

Editor de Código

Existem vários editores de código disponíveis free e pagos, dentre eles podemos citar o Eclipse, NetBeans, Sublime, PhpStorm, etc.

Para o nosso exemplo vamos utilizar o editor eclipse que possui um plugin que integra com o Git onde podemos realizar todo o gerenciamento dos branches no próprio editor sem a necessidade de saber linhas de comando (o que às vezes pode fazer falta...).

 

Tree

 

Arquitetura de Sistemas

Até aqui já sabemos como vamos controlar o versionamento e qual ferramenta vamos utilizar para codificar.

Sobre a arquitetura de nosso exemplo poderíamos seguir dois caminhos. Criar um sistema com uma arquitetura monolítica ou baseado em microserviços (para saber mais acesse http://microservices.io).

Como ainda não temos nenhum cliente, não temos problemas de recursos e não temos a necessidade de enfrentar a complexidade de gerenciar microserviços, vamos seguir com uma arquitetura monolítica.

 

Frameworks

Para selecionarmos o framework sabemos que o sistema deve rodar na web, então vamos definir que a linguagem será PHP. Na “guerra” dos frameworks php podemos citar  o Zend, Slim, CakePHP, yii2, CodeIgniter, Symfony, Laravel, etc.

Para seguir no nosso exemplo vamos utilizar o framework Laravel que possui como característica a simplicidade e principalmente uma curva de aprendizagem pequena (digamos que para se tornar um usuário avançado não é tão simples assim).

Com as informações que temos até o momento já podemos iniciar o desenvolvimento? Ainda não! Chegamos até a escolha do framework que vamos utilizar contando com todos os seus recursos, porém conforme apresentado no início deste texto falamos sobre os problemas de se desenvolver utilizando apenas os conceitos tradicionais do MVC. O “esqueleto“ do Laravel disponibilizado ao realizar a instalação via composer é uma sugestão de arquitetura. Este esqueleto nos condiciona a trabalhar com os tradicionais models, controllers e views. Conforme mencionei anteriormente para projetos pequenos sem perspectiva de crescimento isto não é um problema e provavelmente é o melhor caminho para se seguir no desenvolvimento. Mas este não é o nosso caso, pois já sabemos que nosso sistema é complexo e tende a crescer. Para atingir nosso objetivo precisamos aplicar Design Patterns que serão apresentados no próximo tópico.

 

DDD e Design Patterns

Podemos definir Design Patterns como técnicas e padrões para resolver problemas comuns no desenvolvimento de software com objetivo de facilitar e melhorar a comunicação entre os desenvolvedores. Estes padrões permitem o compartilhamento de conhecimentos sobre programação orientada a objetos. Por exemplo, temos um modelo que resolve um problema sendo que a solução proposta já foi utilizada e testada durante um tempo garantindo assim sua eficácia.

DDD - Domain-Driven Design significa Desenvolvimento Orientado a Domínio lançado por Erick Evans em 2003. Podemos conceituar DDD brevemente como uma série de técnicas e conceitos com foco no domínio do software, ou seja, foco nas regras de negócio. Existem diversos livros sobre DDD e artigos na internet que ajudam a entender melhor seus conceitos.

Para seguir no nosso exemplo, e não tornar o artigo mais extenso do que já está, vamos apenas citar padrões do DDD sem entrar em detalhes, conforme dito anteriormente a ideia deste artigo é centralizar conceitos de tecnologias, se você desejar se aprofundar pode buscar pelo Livro ou artigos mais específicos disponíveis na internet.

Vamos utilizar o DDD em partes e aplicar alguns de seus padrões a nossa equipe e ao nosso sistema.

  • Ubiquitous Language - Para se obter sucesso em um projeto DDD é necessário que todos os integrantes falem e entendam a mesma linguagem. Por exemplo, se o cliente chama pedido de venda de order, todos os envolvidos no projeto devem falar order quando se referem a pedidos de venda. Isto deve ser transmitido ao sistema onde uma função que retorna pedidos de venda deveria se chamar, por exemplo, getOrderByID.
  • Desenvolvimento em Camadas – seguindo os conceitos de DDD, o desenvolvimento de um sistema deverá ser desenvolvido em camadas conforme imagem abaixo:

Camadas

  • Domain – representa o núcleo do negócio, as regras de negócio ficam na camada de domínio;
  • Infraestrutura – é responsável por fornecer suporte as demais camadas;
  • Application – é responsável pela comunicação entre o domínio e as camadas de entrada de dados;
  • User interface – é a camada responsável pela interface com o usuário, a entrada de dados.

Como mencionamos anteriormente não temos a pretensão de implantar o DDD por completo, então nossa sugestão de divisão de camadas utilizando laravel será um pouco diferente.

  • Domain
  • Support
  • Units (Aplicattion)

Esta estrutura foi proposta pelo codecasts no Laravel Conference Brazil e aborda diversos conceitos apresentados neste texto.

  • Repositórios – utilizando o conceito de repositórios separamos a comunicação com o banco de dados da lógica do sistema, desta forma controllers não acessam os models diretamente para recuperar dados e sim seus repositórios de forma desacoplada.
  • Factories – em alguns momentos criar instâncias de objetos se torna impossível sem a utilização de factories, para ir a fundo acesse “Factory Method in PHP”.

Fazendo um resumo do que foi apresentado nosso sistema teria uma arquitetura monolítica, seria desenvolvido em php utilizando framework Laravel com seu “esqueleto” alterado para se trabalhar com alguns conceitos de DDD, dentre eles linguagem ubíqua, desenvolvimento em camadas (proposto pelo codecasts), repositórios e factories.

Bom, se aplicarmos tudo isto teremos um sistema fácil de manter, com código reaproveitável e pronto para mudanças? A resposta é “depende” do quanto você vai se especializar e entender todos os padrões em envolvem o DDD ou até mesmo outros padrões. Quanto mais conhecimento você adquirir, mais “bagagem” você terá para escolher qual arquitetura vai usar, quais padrões e ferramentas. Realizar testes, entender como a estrutura do framework que você escolher funciona, refatorar seu projeto até que você perceba que todas estas ações estão gerando produtividade ao desenvolvimento. Infelizmente não existe uma receita pronta, cada projeto deve ser analisado com cautela. As tecnologias e design patterns estão aí para nos auxiliar no melhor caminho, cabe a você encontrá-lo!

 


Referência: saninternet.com/blog
Em: 07/11/2019

 

Avaliação do Usuário: 5 / 5

Estrela ativaEstrela ativaEstrela ativaEstrela ativaEstrela ativa

Um Cookie pode ser considerado um arquivo de texto que contém várias informações sobre os visitantes de um determinado site. São utilizados principalmente para identificar e armazenar tais informações, desde as páginas visitadas até os dados fornecidos ao site. Ao visitar um site, informações pessoais como nome, e-mail, IP e interesses, são armazenadas em um Cookie e enviadas ao navegador daquele usuário. É dessa forma que as empresas estudam o comportamento do usuário ou consumidor online, sabendo as páginas de visualização, a quantidade, o tempo e etc.

Os cookies na internet são ferramentas essenciais da navegação online. Eles não apenas lembram quais sites você visitou, mas também as informações de formulários, de modo a tornar a navegação e preenchimento de dados mais rápidos e eficientes. Por isso, sem os cookies, as páginas da internet seriam menos práticas e interativas para os usuários.

Em contrapartida, os cookies também são usados para rastrear informações dos visitantes de páginas. No mundo dos negócios, eles são componentes essenciais de qualquer plano de marketing. Quanto mais dados um site puder coletar, maior chance de uma empresa utilizá-los para gerar negócio. Uma ferramenta muito poderosa para o Marketing Digital.

Empresas de marketing digital coletam informações de cookies para executar campanhas direcionadas a um segmento de mercado, incluindo grupo de produtos, geolocalização, termos de pesquisa e dados demográficos.

No entanto, com a entrada em vigor da Lei Geral de Proteção de Dados (LGPD), a política de uso dos cookies terá que ser atualizada.

Neste artigo, você vai conhecer o que são cookies na internet, quais os seus tipos e o que muda no com a LGPD. Vamos lá?

 

O que são cookies na internet?

Um cookie nada mais é que um pequeno arquivo de texto que contém uma etiqueta de identificação exclusiva, colocada no seu computador por um site. Neste arquivo, várias informações podem ser armazenadas, desde as páginas visitadas até os dados fornecidos voluntariamente ao site.

Quando você visita em um site, informações pessoais, como seu nome, e-mail e interesses pessoais são armazenadas em um cookie e enviadas ao seu navegador da internet, que então as guarda para uso posterior.

Da próxima vez que você for para o mesmo site, ele pode reconhecê-lo. Como você pode imaginar, estudar o comportamento do consumidor online  — sabendo quando ele esteve em seu website, as páginas que visualizou, quanto tempo gastou em cada uma delas e quantas vezes voltou  — é uma iniciativa extremamente poderosa de vendas e de marketing.

 

Quais os tipos de cookies?

Existem vários tipos de cookies. Enquanto alguns facilitam a sua vida, permitindo que você seja reconhecido mais rapidamente por sites, outros analisam o comportamento de navegação para gerar dados para serem utilizados como ferramentas de marketing por dados.

Conheça alguns dos seus tipos!

1. Cookies de sessão
Também chamado de cookie transitório, é apagado quando você fecha o navegador de internet. Ele é armazenado na memória temporária do computador e não é retido depois que o navegador é encerrado.

Os cookies de sessão não coletam informações do seu computador. Eles normalmente armazenam informações na forma de uma identificação que não coleta dados pessoais do usuário.

2. Cookies persistentes
Também chamado de cookie permanente, é armazenado em seu disco rígido até expirar (cookies persistentes são definidos com datas de expiração) ou até você excluir.

Os cookies persistentes são usados para coletar informações de identificação sobre o usuário, como comportamento de navegação na internet ou preferências para um site específico.

3. Cookies maliciosos
Os cookies normalmente não comprometem a segurança, mas há uma tendência crescente de cookies maliciosos. Esses tipos de cookies podem ser usados para armazenar e acompanhar sua atividade online.

Eles rastreiam você e seus hábitos de navegação ao longo do tempo, para construir um perfil de seus interesses. Uma vez que esse perfil contenha dados suficientes, há uma boa chance de que suas informações possam ser vendidas a uma empresa de publicidade que, em seguida, use esse perfil para segmentá-lo com anúncios específicos de interesse e aumentar a taxa de conversão.

 

Do que se trata a Lei Geral de Proteção de Dados?

A principal preocupação para a maioria dos usuários é a privacidade. Os navegadores habilitados para cookies rastreiam todos os sites que você visitou. Isso significa que, com permissão, terceiros podem acessar as informações armazenadas por esses cookies. Esses terceiros podem ser anunciantes, outros usuários ou até mesmo o governo.

Com a LGPD, o objetivo é proteger os cidadãos brasileiros no que diz respeito ao processamento e livre circulação de seus dados pessoais. A partir de 15 de fevereiro de 2020, a Lei de Proteção de Dados do Brasil entrará em vigor e exigirá que as empresas cumpram requisitos rigorosos relacionados ao processamento de dados pessoais.

O problema com cookies é tanto de privacidade quanto de transparência, sobre o que está sendo registrado, quem está acompanhando você, para que finalidade, para onde vão os dados e por quanto tempo eles permanecem.

Embora nem todos os cookies sejam usados de maneira a identificar usuários, a maioria (e os mais úteis para os proprietários de sites) é, e, portanto, estará sujeita à Lei Geral de Proteção de Dados.

 

Qual a relação da LGPD e os cookies?

Como os cookies na internet podem fornecer uma boa visão sobre suas atividades e preferências, e usados para identificá-lo sem o seu consentimento explícito, isso representa uma grande violação do ponto de vista legal.

Conforme as tecnologias de dados vão se tornando cada vez mais sofisticadas, sua privacidade como usuário se torna cada vez mais comprometida.

Um dos requisitos mais importantes da LGPD está na definição do que constitui um consentimento adequado ao cookie. O usuário precisa optar por aceitar ou recusar os vários tipos de cookies. Esse consentimento deve ser de fácil procedimento para o usuário, além de permitir a possibilidade de ele mudar de ideia.

Um simples botão “ok” para aceitar cookies não é suficiente. É preciso ter um aviso em conformidade com a LGPD, solicitando o consentimento para definir cookies.

Além disso, o usuário tem o direito de ser “esquecido”. A partir de um pedido do usuário, todos os seus dados pessoais devem ser excluídos corretamente.

Somente os requisitos acima tornam obsoletos a maioria dos banners e notificações de cookies utilizados na internet.

 

Por que é importante softwares especializados para gerenciar cookies e dados?

Como proprietário de um website ou negócio online, tomar medidas para cumprir à LGPD significa garantir que a gestão de dados pessoais sejam tratados de acordo com as novas regulamentações.

Se o seu site ou organização processa dados diretamente pessoais, ele deve ser revisado para atender aos requisitos.

Para isso, o uso de softwares especializados garante um bom gerenciamento dos dados dos usuários e, ao mesmo tempo, mantém o site de acordo com a Lei. Os benefícios de utilizar uma Plataforma de Gerenciamento de Dados (PGD) ou Data Management Platform (DMP) variam dependendo do seu setor e de seus objetivos ao usar a tecnologia.

Assim, qualquer empresa que puder ser favorecida por um sistema que auxilia no uso de dados de acordo com a LGPD, pode se beneficiar de uma Plataforma de Gerenciamento de Dados.

Dessa forma, as informações fornecidas aos usuários sobre os cookies na internet em uso no site são precisas e legais. A partir desse cuidado com a privacidade é possível conquistar mais clientes e aumentar sua receita.

E então, ficou interessado em investir em sistemas para gerenciar os cookies na internet? Entre em contato com o Aula e fale com nossos consultores!

 

Tags: , ,

Avaliação do Usuário: 5 / 5

Estrela ativaEstrela ativaEstrela ativaEstrela ativaEstrela ativa

Nesta Sexta-feira a OAB - Ordem dos Advogados do Brasil entrou com uma ação contra a abertura de cursos na modalidade à distância na área de Direito. A ordem argumenta em medida protocolada na 7ª Vara Federal do Distrito Federal que as diretrizes curriculares do curso de Direito não são compatíveis com "formação virtual dos estudantes".

A ação, assinada pelo presidente da OAB, Felipe Santa Cruz, pede ainda que seja dada uma liminar determinando que o MEC paralise os pedidos de credenciamento e autorização de cursos de Direito na Educação à Distância (EAD) até o julgamento do processo.

No setor privado, alunos de educação à distância (EaD) já são maioria em metade das formações universitárias em que os estudantes podem optar entre o modelo presencial e o on-line. Há cinco anos, apenas 21% dessas carreiras tinham mais alunos estudando fora do que dentro das salas de aula tradicionais.

O dado ilustra a explosão da modalidade, que tinha apenas 60 mil graduandos em 2004 e passou a quase dois milhões de matrículas no ano passado — 24% dos alunos no país. Além disso, em 2018 houve, pela primeira vez, mais oferta de vagas à distância (7,1 milhões) do que presencial (6,3 milhões).

A abertura de cursos EAD no Direito é uma demanda antiga sobretudo das mantenedoras de ensino superior privado. Na modalidade presencial, essa é disparada a carreira com mais matriculados — quase um milhão dos 6,4 milhões de graduando do país. Atualmente não há protocolo no Ministério da Educação (MEC) para o credenciamento de EaD nessa área e a pasta afirma que não há indicativo de que isso venha acontecer no momento.

Na ação, a OAB cita a explosão no número de vagas ofertadas à distância no Brasil e o afrouxamento das regras para abertura de polos à distância a partir da publicação do decreto sobre o tema em 2017.

A entidade cita também "o encolhimento do ensino presencial e para uma queda de qualidade da educação superior, com efeitos particularmente nocivos em áreas que não podem ser atendidas de forma adequada por uma formação profissional exclusivamente a distância". 

O texto fala ainda sobre a "qualidade precária" dos cursos de Direito no país, com média de reprovação de 80% nos exames da ordem, e argumenta que a atividade prática é fundamental para a formação dos estudantes na área:

"Ainda que os cursos em EaD comportem a obrigatoriedade de atividades presenciais, tal previsão não seria suficiente para abarcar o treinamento prático que os estudantes de Direito devem obter ao longo de todo o curso e que não se restringe à realização do estágio ou de uma disciplina isolada."

Avaliação do Usuário: 5 / 5

Estrela ativaEstrela ativaEstrela ativaEstrela ativaEstrela ativa

Forte companheira dos maiores nomes do empreendedorismo, a tecnologia tem se tornando figura importante nos negócios do mundo. A popularização da internet contribuiu para que as plataformas virtuais alcançassem espaços nas maiores empresas do mundo, otimizando os serviços prestados dentro do meio digital.

Hoje em dia, é comum que empresários procurem expandir o alcance de seus negócios através de estratégias no mundo virtual. Alguns mercados ainda não foram explorados totalmente, o que aumenta a possibilidade de novos empreendimentos ganharem espaço dentro da internet. A busca de inovações nesse meio é um caminho tomado por muitos que tentam consolidar suas marcas no mundo.

sergei

Sergei Kapustin é um dos empresários que possuem esse objetivo. Responsável por um dos negócios que mais chamam atenção de diversos investidores pelo mundo, Sergei é um dos donos do ACCEL, empresa focada no desenvolvimento de cursos online. O empresário comanda, ao lado de seu parceiro comercial Dmitry Yurchenko, a maior empresa russa no segmento.

“Utilizamos diversas tecnologias para potencializar o processo de aprendizagem de nossos alunos. Nosso empreendimento foi considerado bastante inovador por diversos prêmios, por se tratar de um investimento em um setor que não conta com bastante atenção de algumas instituições de ensino em nosso país. Devido a isso, somos considerados a principal companhia do setor na Rússia”, conta o empresário russo.

O empreendimento de Sergei Kapustin não é sua primeira experiência com o meio digital. O empresário russo também possui um curso de astrologia védica — sistema indiano de astrologia. Realizado totalmente online, o curso ensina para seus alunos como se tornar um astrólogo focado nos pensamentos indianos.

“Minha vida tem mudado bastante desde os investimentos no meio digital. Os empreendimentos como o curso de astrologia e o ACCEL, têm proporcionado diversos espaços para o Dmitry e eu. Já comandei algumas conferências para empreendedores do ramo da informação da Rússia. Está sendo uma experiência marcante para minha vida”, explica o empreendedor.

Tags: