Ir para conteúdo

Ederson Mendes Goulart

Members
  • Total de itens

    14
  • Registro em

  • Última visita

Reputação

1 Comum

Sobre Ederson Mendes Goulart

  • Data de Nascimento 12/29/1987

Informações Pessoais

  • Sexo
    Masculino
  • Localização
    Tubarão
  1. Ederson Mendes Goulart

    Como trabalhar com arquitetura multi tenancy?

    Aqui de escrever algo sobre isso aqui: Aqui
  2. Bom dia, boa tarde ou boa noite! Nesse artigo vou falar de um assunto que sempre quis compartilhar com o pessoal de T.I., a analise de desenvolvimento e arquitetura de um software de gestão MULTIEMPRESAS. Notas: Todo o sucesso de um sistema está em sua análise. Antes de começar escrever sobre essa arquitetura, acho válido falar da evolução dos sistemas ao longo desses últimos anos, antes dos serviços de servidores nas nuvens chegarem com toda essa força, existiam poucas soluções no mercado nacional de softwares de gestão na web, a maioria dos softwares de gestão era desktop instalado em uma maquina servidora(ou não) e compartilhado com outros computadores da rede local. Não estou dizendo que software desktop é ultrapassado, ambos tem vantagens e desvantagens, tudo depende do que vai ser apresentado ao software, mas é realidade que com a chegada das nuvens os softwares web ganharam muito mais demanda, e com essa nova realidade tecnológica por que não desenvolver um único sistema que funcione para todos os nossos clientes? Um único software multiempresas. Fiz algumas pesquisas na internet sobre o tema, porém não achei muita informação, ou nenhuma. Achei estranho pois a maioria das empresas de grande fluxo de dados na web hoje trabalham com essa ideia de projeto, o facebook, youtube, linkedin e toda ferramente de mídia social tem essa estrutura de B.D. similar. O próprio linkedin seria um exemplo, pois cada usuário tem seu acesso e só ele pode alterar suas informações. A única diferença de um software gerencial multiempresa, seria que cada empresa não conseguiria visualizar a informação da outra, porém estariam todas juntas no mesmo sistema e no mesmo Banco de Dados. O desenvolvimento realmente necessita de cuidados especiais, porém acredito que existem mais vantagens que desvantagens, separei alguns pontos positivos sobre: Implantação do Software Simples Suporte ágil, onde quando ajustado bugs pra um, replica automaticamente para todos. Um único servidor para todos as empresas(no nosso caso são 5 servidores, cada um com sua função, mas vou deixar para falar sobre arquitetura de servidores em um próximo artigo), com isso não terás problemas com instalação em sistemas operacionais ou máquinas virtuais de versões diferentes, ou aquelas atualizações indesejadas de sistema operacional que muitas vezes ferram todo o sistema. Uma unica versão do sistema que é replicado para todos no mesmo momento da atualização Diminuição de requisição de suporte e atendimento ao cliente Elimina do cliente exigências e compras de produtos e serviços como: - Computadores, Nobreak, Modem, etc. - Sistema operacional - Contratação de ip fixo - Internet própria para o servidor com boas taxas de uploads(raridade no Brasil). - Equipe ou profissional de infraestruturas em redes. A equipe se concentra em apenas um produto com isso consegue aplicar uma qualidade superior ao software, diminuir drasticamente o estresse da equipe por não ter que dar suporte em vários softwares diferentes e a vários tipos de problemas ao mesmo tempo, e temos de consequência uma equipe mais tranquila e focada na criação de novas ideias e melhoras do software. Esquema técnico: Na parte técnica desenvolvemos uma modelagem de B.D. de solução simples. Tenho uma tabela empresa, que é recursiva, ou seja, se relaciona com ela mesmo, os relacionamentos são as filiais para poder agrupar empresas que tenham mais de uma filial(Cadastramos sempre uma empresa pai e outra filha mesmo se ela não tiver filiais, indicando e preparando o sistema para inclusão de uma nova filial se um dia precisar). Usamos o código da empresa pai para cadastrar registros gerais que serão listados para todas as filiais, mas tem também registros que são cadastrados e vinculado a uma determinada filial, esses são listados apenas para a filial lançada, porém o usuário matriz pode visualizar de todos os registros de todas as filiais. No cadastro de usuário, é solicitado a empresa que ele pertence e a filial, se não for definido filial o sistema vai entender que o usuário tem acesso a todas as filiais, se for definido a filial ele vai ter acesso apenas as informações daquela filial. No script ao fazer o login criamos uma variável global(SESSION), onde recebe os códigos das empresas que o usuário pertence, se não for definido filial o usuário vai receber o código de todas as filiais onde vai ser listados registros de todas as filiais. Se for definido a filial no cadastro, vai receber apenas o código da filial onde vai listar apenas registros dessa filial. O cuidado que deve ter e o ponto chave desse modelo é sempre comparar em TODOS os SQL's usando essa variável global. Se o projeto for bem gerenciado, fiscalizado e testado, não terá problema algum. Agora, crie sua ideia e boa sorte no mercado. O que acharam? Espero ter ajudado. Dúvidas, críticas positivas e negativas são muito bem vindas. Linkedin: https://www.linkedin.com/in/ederson-mendes-goulart-74a0a4aa/
  3. Ederson Mendes Goulart

    Ir para próximo campo{ Focus() } no formulário quando chegar no limite do maxlength

    Obrigado Wesley. Apenas reforçando a explicação da funcionalidade: O ID '#content' é o id da masterpage, ou oque circula todo formulário. A rotina tbm faz uma verificação se o próximo campo está escondido ou não no formulário, e vai procurar até achar o proximo campo que esteja visível, comparando sempre pela div pai de cada campo. Segue exemplo: <div id="content"> <form> <div class="row" <?php if ($_SESSION[sn]['confs']['osDadosCondutorVis'] == 'F') { echo 'style="display: none;"'; } ?>> <label for="nomeCondutor">Nome Condutor: <?php req('nomeCondutor'); ?></label> <input id="nomeCondutor" class="text" name="nomeCondutor" type="text" size="31" maxlength="10" > /> </div> <div class="row" <?php if ($_SESSION[sn]['confs']['osDadosCondutorVis'] == 'F') { echo 'style="display: none;"'; } ?>> <label for="cpfCondutor">CPF Condutor: <?php req('cpfCondutor'); ?></label> <input id="cpfCondutor" class="text" name="cpfCondutor" type="text" size="20" maxlength="10" /> </div> <div class="row" <?php if ($_SESSION[sn]['confs']['osDadosCondutorVis'] == 'F') { echo 'style="display: none;"'; } ?>> <label for="telCondutor">Tel Condutor: <?php req('telCondutor'); ?></label> <input id="telCondutor" class="text" name="telCondutor" type="text" size="15" maxlength="10" /> </div> </form> </div>
  4. Boa tarde! Criei um método que percorre todos os campos do formulário e aplica a regra de quando chegar no limite do campo, aplica focus no próximo campo. Bem legal para formulários, segue: window.onload = function(){ var allEl = $("#content input, #content textarea, #content select, #content checkbox"); allEl.each(function(){ var campoAtual = $(this); var maxlength = campoAtual.attr("maxlength"); if (!isEmpty(maxlength)){ $(this).keyup(function () { //Pega posição do focus do campo, quando chegar no ultimo focus, entra na rotina para ir para proximo campo var positionFocus = this.selectionStart; //Se chegar no limite if (maxlength == campoAtual.val().length && positionFocus == maxlength ){ var nomeCampoAtual = campoAtual.attr("name"); var encontrouCampo = false; var idxProxCampo = 0; for (var i=0; i < allEl.length; i++) { if (!encontrouCampo){ if ( nomeCampoAtual == allEl.eq(i).attr('name') ){ idxProxCampo = i+1; encontrouCampo = true; } } if (encontrouCampo){ var tagPai = allEl.eq(idxProxCampo).parent(); if (tagPai.is(':visible')){ break; //Se o campo não tiver visivel soma +1 para verificar o proximo campo da lista }else{ idxProxCampo = idxProxCampo + 1; } } }; allEl.eq(idxProxCampo).focus(); } }); } }); }
  5. Ederson Mendes Goulart

    GROUP BY em ordem ASC

    Genial irmão!! Ihuu ! Estava em sufoco com isso. Vlww!
  6. Ederson Mendes Goulart

    Problema em dividir nivéis de acesso

    Boa tarde. Desculpe amigo.. mas está um pouco confuso entender oque você precisa. Lança algum erro? Aparentemente o codigo está correto.. só aqui que pode está incorreto: $dt["Permissao"] use como foi definido no SQL: $dt["permissao"]
  7. Ederson Mendes Goulart

    SQLSTATE[42P01]

    Opa, descula demora. Posta seu codigo pra gente dar uma olhada brother.. Está usando algum framework para o b.d. ?
  8. Ederson Mendes Goulart

    Imprimir em Impressora Fiscal

    A impressora não tem um manual?
  9. Ederson Mendes Goulart

    Ler e Exibir conteúdo CSV para impressao

    Show de bola Osians.
  10. Ederson Mendes Goulart

    SQLSTATE[42P01]

    E como você está usando? Posta o code.
  11. Ederson Mendes Goulart

    [Resolvido] Transformar uma String em Array

    Boa noite. Aqui no imasters tem vários artigos sobre isso.. Como é um texto de arquivo, pode usar o fopen sem medo, podes percorrer linha a linha com um conjunto de funções, o artigo no link abaixo tem um exemplo: https://imasters.com.br/artigo/1134/php/php-lendo-um-arquivo-txt?trace=1519021197&source=single $ponteiro = fopen ($textoPegoDoServer,"r"); Pra colocar num array, apenas cria o array, coloca um contador e vai aplicando a variavel.. tipo: $arr = array(); $posicao = 1; for({comparação linhas} as $linha){ $arr[$posicao] = $linha; $posicao++; }
  12. Ederson Mendes Goulart

    Insert e Update na mesma query

    Pode fazer 2 query irmão, sem mendo. rs Acho que um insert e um update juntos não rola com a classe que está usando.. Não tenho certeza.
  13. Ederson Mendes Goulart

    Problema em dividir nivéis de acesso

    Falou falou e não disse nada.. Qual é o problema? Qual msg de erro?
  14. Ederson Mendes Goulart

    SQLSTATE[42P01]

    Brother, acho que você está usando aspas no lugar errado.. Você só deve usar aspas nas strings.. não pode usar em nome de tabelas ou colunas de b.d. E isso é problema de BD e não de PHP.. Redireciona para o lugar correto. Tenta assim: select count(*) as aggregate from usuario where email = 'rhenan@gmail.com'
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.