por Sândler

Comentário referencial no código, como FIXME TODO BUG ISSUE TODO como usar?

janeiro 17, 2018 em CakePhp, CodeIgniter, iGrape, Java, JavaScript, JQuery, Php, Spaguetti, WordPress por Sândler

Você viu isto em código. Isto pode ser chamado de code tags.

Estritamente é um comentário como outro qualquer. Ele pode ter um significado específico para alguma ferramenta. É comum IDEs ou pelo menos extensões deles terem alguma coisa que vasculham o código procurando comentários que começam com:

  • TODO: (“para fazer”) Alguém [eu] precisa arrumar isso urgente
  • FIXME: (“me conserte”) Tem um erro que precisa ser consertado aqui, mas funciona (TOFIX:)
  • HACK: (“gambi”) Não teve outro jeito de resolver pra cumprir o prazo, depois melhoro
  • XXX: (“atenção”) Alguns editores destacam comentários com isto como algo importante sem dar semântica específica
  • DONE: (“feito”) Avisar que o TODO está resolvido. Quando remover isto?
  • UNDONE: (“desfeito”) Precisei voltar ao original por alguma razão
  • ASAP: (“tão rápido quanto possível”) Precisa arrumar isso urgente
  • REMOVE: (“remova”) Esse código foi colocado só para testar algo e deve sumir
  • NOTE: (“anotação”) Só para informar que tem algo importante agora
  • BUG: (“falha”) Tem um bug conhecido aqui que precisa ser arrumado – especialização do FIXME – costuma ter um número de ticket associado
  • ISSUE: (“questão”) Há uma dúvida aqui se deve ser assim mesmo
  • ERROR: (“erro”) Tem um erro reproduzível aqui – especialização do FIXME
  • BROKEN: (“quebrado”) não vai pra frente mesmo, não adianta insistir – especialização do FIXME
  • GLITCH (“falha”) Algo estranho ocorre aqui em situação bem específica
  • REVIEW: (“revise”) Revise isso pra mim, usado onde se costuma fazer peer review
  • WTF: (“que p0rr@ é essa?”) Fizeram um besteira muito grande aqui

 

Exemplo de Utilização:

 

// TODO: alguma coisa escrita
código....

 

 

Referencehttps://pt.stackoverflow.com/questions/121245/todo-o-que-%C3%A9-qual-sua-utilidade-e-como-usar

por Sândler

Como utilizar método de outra controller em cakephp

janeiro 15, 2018 em CakePhp por Sândler

Como utilizar método de outra controller em cakephp

 

Para carregar outra controller ou fazer a chamada dela, vocÊ pode utlizar o requestAction.

Exemplo:

echo $this->requestAction(
    array('controller' => 'articles', 'action' => 'featured'),
    array('named' => array('limit' => 3))
);

 ou

echo $this->requestAction(
    array('controller' => 'articles', 'action' => 'featured'),
    array('named' => array('limit' => 3))
);

echo $this->requestAction(
    array('controller' => 'articles', 'action' => 'view'),
    array('pass' => array(5))
);

 

 

Outra forma é:

App::import(‘Controller’, ‘Posts’);
$post = new PostsController();
$post->myFunction();

 

Diferente de quando usamos o $this->loadModel(‘Posts’) que irá efetuar execuções para o banco de dados, como o “find” ou “save”.

 

 

Referência: https://book.cakephp.org/2.0/en/controllers.html
Referência: https://stackoverflow.com/questions/7902293/how-to-use-methods-from-other-controllers-in-cakephp

por Sândler

Calendário no QlikSense

janeiro 11, 2018 em QlikSense por Sândler

Calendário no QlikSense

Calendário encontrado que funciona bem é o: SenseDateRangePicker, e o mesmo faz é uma extensão que está no branch do qliksense.

 

Abaixo segue o Github do SenseDateRangePicker:

Download: https://github.com/NOD507/SenseDateRangePicker

 

Para que este funcione corretamente, você precisa adicionar na data que irá utilizar o seguinte comando na seu load da querie:

Date(<DATA_CADASTRO>,’YYYY.MM.DD’) as DATA_CADASTRO,

Na Dimensão do Calendário coloque o campo de data:  =DATA_CADASTRO

Reference: https://qlikcommunity.qliktech.com/thread/225616

por Carlos

Forçar funcionamento do .gitignore

janeiro 3, 2018 em github por Carlos

Os arquivos / pastas em seu controle de versão não serão apenas excluídos apenas porque você os adicionou ao .gitignore agora. Eles já estão no repositório. Você deve removê-los. Você pode fazer isso com isso:

  • git rm -rf – em cache.
  • git add.

Isso remove todos os arquivos do repositório e os adiciona novamente (desta vez respeitando as regras em seu .gitignore).

Lembre-se de comprometer tudo o que você mudou antes de fazer isso.

 

https://stackoverflow.com/questions/25436312/gitignore-not-working

por Sândler

Como referenciar código ao invés do texto no filtro do gráfico do QlikSense

janeiro 2, 2018 em QlikSense por Sândler

Como referenciar código ao invés do texto no filtro do gráfico do qliksense

Quando temos um contexto de informações do tipo repetitivo como por exemplo:

Pergunta 1 (cod_pergunta 1)

  • Sim (cod_opcao 1) 10 – pessoas
  • Não (cod_opcao 2)  8 – pessoas

Pergunta 2 (cod_pergunta 2)

  • Sim ( cod_opcao 3) 21 – pessoas
  • Não (cod_opcao 4) 2 – pessoas

Imagine que pegaremos um gráfico pizza para cada questão acima, mas quando iremos clicar na questão 1 (sim) para filtrar quantas pessoas, automaticamente o QlikView ou QlikSense, ele filtra pelo texto e não pelo código da opção, e apareceria para o cliente 31 pessoas ao invés de 10 pessoas.
Caso coloque por exemplo: cod_opcao, ao invés de aparecer no gráfico o nome “SIM” aparecerá o código dele “1″, e o filtro funciona corretamente, mas fica visualmente inviável para um cliente.

 

Então para que seja possível adicionar o texto no gráfico e ao mesmo tempo filtrar pelo código,  é necessário colocar uma função chamada DUAL.

Exemplo: =dual(nome_opcao,cod_opcao)

Desta maneira o nome exibido ficará “Sim” e o código e quando clicado, fará o filtro pelo código “1″.

 

Referência: Curso Nordica

por Sândler

Como alterar a pasta padrão de carregamento do Qlik Sense

dezembro 28, 2017 em QlikSense por Sândler

Como alterar a pasta padrão de carregamento do Qlik Sense

Para efetuar a alteração padrão você deve:

  • Fechar o seu QlikSense.
  • Depois vai até a pasta: C:\Usuários\<usuariodosistema>\Documentos\Qlik\Sense
  • Agora crie uma cópia do arquivo “settings.ini” e o nome da cópia deixe como “settings_backup.ini”.
  • Agora no arquivo “settings.ini” adicione a linha:

DocumentDirectory=\\server\share

Aviso: O arquivo settings.ini deve ficar com uma linha vazia como a imagem abaixo:

Settings-ini-default.png

Linha 3 está vazia.

  • A partir de agora quando executar seu qliksense, ele estará com caminho default como:  \\serve\share

Referencehttps://community.qlik.com/thread/237545

por Sândler

Dicionário de Dados

dezembro 7, 2017 em Mysql, PostgreSql, SQL por Sândler

Comandos SQL

SELECT
TABLE_NAME as Tabela,
COLUMN_NAME as Coluna,
DATA_TYPE as Tipo,
CHARACTER_MAXIMUM_LENGTH,
NUMERIC_PRECISION,
NUMERIC_SCALE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE  TABLE_NAME = ‘acl_action’
GROUP BY COLUMN_NAME
ORDER BY  COLUMN_KEY DESC;

Referência: http://sqlfromhell.wordpress.com/category/dicionarios-de-dados/

por Sândler

Valida email via jquery

dezembro 7, 2017 em Php por Sândler

Validação de E-mail em Jquery

 

function IsEmail(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}

por Sândler

Esqueça as funções javascript alert() e confirm()

dezembro 7, 2017 em Php por Sândler

 

Esqueça as funções javascript alert() e confirm()

Uma das coisas que mais me incomoda em sistemas web é a enorme quantidade de alertas do sistema. Confirmações, perguntas, informações — todos utilizando o visual padrão do sistema operacional. Para nossa felicidade, a evolução do javascript permitiu que estes verdadeiros inimigos da usabilidade fossem substituídos por versões mais elegantes e amigáveis. Conheça uma delas, o plugin m2brDialog, para jQuery.Apesar de neste artigo você conferir um método para substituir as janelas padrões de sistema, gostaria de começar com o seguinte conselho: evite o uso de confirmações. O Windows Vista é a maior prova de que inúmeras perguntas e avisos incomodam — e muito — qualquer usuário. Algumas alternativas incluem avisos de confirmação mais discretos, como o modelo lançado pelo Google, exibido no canto superior da tela, ou perguntas inline, exibidas de forma dinâmica diretamente no miolo do sistema. É claro que, em alguns casos, é necessário impedir que o usuário clique ou execute qualquer funcionalidade antes de confirmar a ação. É aí que entra o m2brDialog.O objetivo principal deste plugin é substituir completamente o uso de alertas e confirmações padrões. Possui como dependências o framework javascript jQuery, além de sua extensão para interfaces caso você queira habilitar a opção de arrastar a janela. O m2brDialog funciona baseado no evento clique e seu visual é totalmente customizável, todo baseado em CSS — o tema padrão utiliza o set de ícones Tango, mas nada impede que você implemente suas próprias imagens.

Caso você precise de uma introdução ao jQuery, leia os primeiros parágrafos de meu artigo sobre uma interface drag and drop utilizando o framework.

Download: m2brDialog

Opções da extensão jQuery m2brDialog()

Confira o conjunto de opções disponíveis para configurar o alerta exibido:

largura valor inteiro que define a largura do aviso, em pixels
altura valor inteiro que define a altura do aviso, em pixels
tipo string indicando o tipo do aviso, estando disponíveis as seguintes opções: alerta, erro, pergunta e info
titulo string a ser exibida no título do aviso
texto conteúdo da mensagem do alerta
draggable true ou false para definir se o usuário pode arrastar e mover o aviso (depende da extensão jQuery UI)
botoes array com o conteúdo, tipo e links dos botões do aviso
tempoExibicao tempo de duração da exibição do alerta, em segundos
condicao array com funções que determinam a condição se o alerta deve ser exibido ou não (saiba mais abaixo)

m2brDialog na prática

Faça a chamada para os arquivos javascript do jQuery e do plugin m2brDialog dentro da tag head de seu HTML, bem como o link para a folha de estilos.

 

  1.     <link rel=”stylesheet” type=”text/css” href=”m2br.dialog.css” />
  2.     <script src=”jquery.js”></script>
  3.     <script src=”jquery.m2brdialog.pack.js”></script>

No exemplo abaixo, buscamos todos os elementos a (links) que possuam a classe “link-alerta” e atribuímos um alerta com a mensagem “Teste m2brDialog”:

  1. $(document).ready(function(){
  2.     $(‘a.link-alerta’).m2brDialog({
  3.     largura        : ’300′,
  4. altura        : ’120,
  5. tipo        : ‘alerta’,
  6. titulo        : ‘TESTE’,
  7. texto        : ‘Teste m2brDialog’
  8. });
  9. });

Agora vamos criar uma janela de confirmação em todos os elementos com a classe “m2brdialog-pergunta”, com os botões confirmar e cancelar. Caso o usuário clique em confirmar, será redirecionado para o link www.daviferreira.com. A janela também terá a propriedade de drag and drop:

  1. $(document).ready(function(){
  2. $(‘.m2brdialog-pergunta’).m2brDialog({
  3. tipo:         ‘pergunta’,
  4. titulo:        ‘Confirme’,
  5. texto:        ‘Tem certeza que deseja executar esta operação?’,
  6. draggable: true,
  7. botoes: {
  8. 1: {
  9. label: ‘confirmar’,
  10. tipo: ‘link’,
  11. endereco: ‘http://www.daviferreira.com’
  12. },
  13. 2: {
  14. label: ‘cancelar’,
  15. tipo: ‘fechar’
  16. }
  17. }
  18. });
  19. });

Funções condicionais

Em alguns casos, precisaremos de uma condição para exibir ou não o alerta. Por exemplo, em um formulário, exibir a mensagem de alerta apenas se algum campo obrigatório não tiver sido preenchido. É para isto que serve o parâmetro de configuração avançada condicao. Esta propriedade recebe um vetor com duas funções. A primeira representa a condição e a segunda a URL de retorno caso esta condição seja verdadeira. Vejamos como funcionaria no exemplo do formulário citado anteriormente:

 

  1. <form name=”frm-newsletter” id=”frm-newsletter” method=”post” action=””>
  2. <label for=”email”>Seu e-mail</label>
  3. <input type=”text” name=”email” id=”email” size=”60″ />
  4. <input type=”button” id=”btn-newsletter” value=”OK” />
  5. </form>
  6. <script type=”text/javascript”>
  7. $(document).ready(function(){
  8. $(‘#btn-newsletter’).m2brDialog({
  9. tipo            : ‘erro’,
  10. titulo            : ‘Erro!’,
  11. texto            : ‘Por favor, preencha o campo e-mail’,
  12. condicao        : {
  13. origem        : function() {
  14.                             return ($(‘#email’).val() ? true : false);
  15.             },
  16. retorno        : function() { return true; }
  17. }
  18. });
  19. });
  20. </script>

Note que na opção de configuração condicao são passados dois valores: origem e retorno. Na origem estamos validando o campo de id email, verificando se ele foi preenchido. Caso retorne true, ou seja, caso ele esteja preenchido, o alerta é ignorado e o script executa a função retorno — no nosso exemplo um simples return true;. O alerta de erro apenas será exibido caso o campo esteja vazio.

Demo: veja o m2brDialog em ação!

Pra finalizar, uma gambiarra

Nem sempre o alerta será exibido a partir de um clique em algum link ou botão. Uma função AJAX, por exemplo, pode retornar um alerta. Neste caso, utilizamos o código abaixo:

  1. var alertaPadrao = function(titulo, msg, tipo, altura, largura) {
  2.         $(‘body’).append(‘<a href=”#” id=”alerta-padrao”></a>’);
  3.         $(‘#alerta-padrao’).m2brDialog({
  4.                 draggable: true,
  5.                 texto: msg,
  6.                 tipo: tipo,
  7.                 titulo: titulo,
  8.                 altura: altura,
  9.                 largura: largura,
  10.                 botoes: {
  11.                     1: {
  12.                         label: ‘Fechar’,
  13.                         tipo: ‘fechar’
  14.                     }
  15.                 }
  16.         });
  17.         $(‘#alerta-padrao’)
  18.             .click()
  19.             .remove();
  20. };

Sim, uma tremenda de uma gambiarra! O que este código faz é criar um elemento a, simular seu clique e depois destruí-lo. Vamos supor que sua função retorna um aviso de operação concluída. Seria só chamar o nosso alertaPadrao desse jeito:

 

  1. <script type=”text/javascript”>
  2. $(document).ready(function(){
  3.     alertaPadrao(‘Informação:’, ‘Operação concluída com sucesso.’, ‘info’, 110, 250);
  4. });
  5. </script>

E aí, curtiu? Em caso de dúvidas ou sugestões, envie um comentário utilizando o formulário abaixo. Até a próxima!

Atualizações [26/11/2008]

Código-fonte e arquivo CSS do script atualizados com correções enviadas pelo leitor Rômulo, envolvendo bugs nas versões 6 e 7 do Internet Explorer. Valeu, Rômulo! :)

Atualizações [08/12/2008]

A rapaziada levantou a bola nos comentários sobre como passar um código dinâmico para nossa janela de confirmação, para o caso de uma listagem com exclusão, por exemplo.

No código a seguir você confere como atingir este objetivo utilizando o método each() nativo do jQuery. O primeiro passo é criar o HTML da tabela. Note que no atributo id do a estou passando o código de nossos registros.

  1. <table width=”100%” border=”0″ cellspacing=”0″ cellpadding=”0″ id=”resultado”>
  2.     <thead>
  3.         <tr>
  4.             <th>Código</th>
  5.             <th>Nome</th>
  6.             <th>Ação</th>
  7.         </tr>
  8.     </thead>
  9.     <tbody>
  10.         <tr id=”linha-1″>
  11.             <td>1</td>
  12.             <td>Davi Ferreira</td>
  13.             <td><a href=”#” class=”item-excluir” id=”1″><img src=”excluir.png” width=”24″ height=”24″ alt=”excluir registro 1″ /></a></td>
  14.         </tr>
  15.         <tr id=”linha-2″ class=”alt”>
  16.             <td>2</td>
  17.             <td>Rômulo</td>
  18.             <td><a href=”#” class=”item-excluir” id=”2″><img src=”excluir.png” width=”24″ height=”24″ alt=”excluir registro 2″ /></a></td>
  19.         </tr>
  20.         <tr id=”linha-3″>
  21.             <td>3</td>
  22.             <td>Bruno</td>
  23.             <td><a href=”#” class=”item-excluir” id=”3″><img src=”excluir.png” width=”24″ height=”24″ alt=”excluir registro 3″ /></a></td>
  24.         </tr>
  25.         <tr id=”linha-4″ class=”alt”>
  26.             <td>4</td>
  27.             <td>João Francisco</td>
  28.             <td><a href=”#” class=”item-excluir” id=”4″><img src=”excluir.png” width=”24″ height=”24″ alt=”excluir registro 4″ /></a></td>
  29.         </tr>
  30.     </tbody>
  31. </table>

Agora, através da chamada .each() varremos todos os elementos da tabela de resultado com a classe item-excluir e atribuímos nossa m2brDialog passando o código dos registros no Sim do botão.

  1. $(document).ready(function(){
  2. $(‘table#resultado a.item-excluir’).each(function(){
  3. var codigo = $(this).attr(‘id’);
  4. $(this).m2brDialog({
  5. tipo:         ‘pergunta’,
  6. titulo:        ‘Confirme’,
  7. texto:        ‘Tem certeza que deseja excluir o registro ID’+
  8. ‘<span style=”color:#ffff00″>’+codigo+’</span>?’,
  9. draggable: true,
  10. botoes: {
  11. 1: {
  12. label        : ‘sim’,
  13. tipo        : ‘link’,
  14. endereco    : ‘excluir.php?codigo=’+codigo
  15. },
  16. 2: {
  17. label        : ‘não’,
  18. tipo        : ‘fechar’
  19. }
  20. }
  21. });
  22. });
  23. });

 

 

Referência/Criação: http://www.daviferreira.com/posts/esqueca-as-funcoes-javascript-alert-e-confirm

 

 

por Sândler

Variavel php assumir condição de operador lógico

dezembro 7, 2017 em Php por Sândler

/*

* bcadd = adição

* bcsub = subtração

* bcmul = multiplicação

* bcdiv = divisão

*/

$operador = ‘add’;

$val1 = 10;

$val2 = 10;

$result = call_user_func(‘bc’.$operador,$val1,$val2);