Postagens

Mostrando postagens de 2016

AngularJS - detectando o evento Enter através de uma diretiva ngEnter

O AngularJS tem inúmeras diretivas e funções para criar rapidamente uma aplicação porém uma que não existe no pacote do framework e que faz bastante falta é um evento ' on-Enter ' para chamar uma função ou método. Por exemplo se estou desenvolvendo um formulário e quero que ao preencher um campo e apertar o Enter uma função seja chamada, seja para validar algum dado, seja para efetuar um login. Apesar de não existir um evento deste tipo o AngularJS permite a criação de diretivas personalizadas. Assim podemos criar a nossa própria diretiva ng-Enter . Abaixo está uma diretiva simples que permite incluir em sua aplicação um ng-enter e, através deste, chamar uma função qualquer. /* Esta diretiva permite chamar uma função qualquer ao pressionar a tecla Enter. */ app.directive('ngEnter', function () { return function (scope, element, attrs) { element.bind("keydown keypress", function (event) { if(event.which === 13) { ...

MySQL - Clonando tabelas na linha de comando

Clonar tabelas é fácil se você tiver a disposição um ' PHP MyAdmin ' ou uma aplicação gráfica instalada em sua máquina. Porém existem casos em que você só possui acesso a um shell (ou terminal) ou mesmo precisa criar uma aplicação que em algum momento seja necessária a clonagem de uma tabela. Os procedimento é muito simples: 1º Criar um clone da estrutura original (LIKE banco_de_dados.tabela) CREATE TABLE recipes_new LIKE production.recipes; 2º Inserir o conteúdo original dentro do clonado (FROM banco_de_dados.tabela) INSERT recipes_new SELECT * FROM production.recipes; É simples assim! Abraços

AngularJS - Como gerenciar requisições assíncronas em Ajax e não perder o fluxo de dados

Imagem
Se por um lado a tecnologia Ajax de requisições assíncronas foi uma revolução para a Web, permitindo aplicações mais leves, rápidas, robustas e ágeis seu gerenciamento exige cuidados. É muito comum perder dados entre requisições ou então efetuar cálculos ou procedimentos sem ter o cuidado de garantir que os dados requisitados através de um http Post ou Get tenham chegado a tempo. Talvez o maior segredo para trabalhar com requisições assíncronas é ter sempre em mente que os dados não chegam em uma sequência como a da programação estruturada mas sim na ordem em que as consultas feitas nos web services e fontes de dados são concluídas. Desta forma uma consulta que foi feita primeiro em uma fonte de dados 'A' não necessariamente será concluída antes de uma consulta feita logo depois em uma fonte de dados 'B'. Se o server 'B' for mais rápido que o 'A', por exemplo, a sequência é invertida. Este cenário é interessante na medida em que não precisamos aguar...

Mobile - Tabela de dimensões e aparelhos

Uma lista que pode ser util na hora de criar um layout responsivo para mobile: Dimensões Tela 320x568 4'' iPhone 5 360x640 480x800 720x1280 4.8'' Galaxy S 768x1024 9.7'' iPad 1024x768 15'' monitor 1280x800 14'' Notebook 1360x768 1440x900 19'' monitor 1600x900 20'' monitor 1680x1050 22'' monitor 1920x1200 24'' monitor

PHP - phpinfo diretamente na linha de comando

Imagem
É procedimento mais que conhecido e adotado criar um arquivo (phpinfo.php) para visualizar as propriedades da instalação do PHP em determinada máquina. <?php echo phpinfo(); Mas é posssível obter esta mesma informação diretamente pelo terminal, através do shell $ php -i O problema aqui é que será exibida uma lista corrida na tela com todas as propriedades, funções e etc. Podemos resolver o problema redirecionando a saída para um arquivo, através de um pipe: $ php -i | cat > phpinfo.txt Uma maneira mais prática é consultar diretamente o pacote que se deseja descobrir se está instalado ou não. Para isto podemos usar o comando abaixo: $ php -i | grep -i <pacote_a_ser_verificado> Vamos descobrir se o Curl está instalado: $ php -i | grep -i curl A resposta é: Fácil e rápido!

GIT - Comandos uteis

Imagem
  A breve lista de comandos úteis do GIT deste post estão muito longe de esgotar todas as possibilidades. Marca o arquivo para remoção git rm <file> Desfaz um git add em <file> git reset <file> Reverte um único arquivo para seu ultimo commit git checkout <filename> Vai para um commit qualquer (semelhante a mudar para um branch $ git checkout <branch_name>) git checkout <commit_hash> Volta para o HEAD do seu branch atual git checkout master Exibe os logs de atualização em linhas git log --oneline Exibe quais branches foram foram adicionados ao Master git log --oneline --decorate Verifica o conteúdo modificado antes de dar um add git diff <filename> Verifica o conteúdo modificado após um add git diff --cached Verifica o conteúdo modificado comparado com o último commit git diff HEAD Se esquecer de commitar um arquivo basta colocar este arquivo no stage dando um 'gi...

Linux - Quebrando grandes arquivos texto em blocos menores com SPLIT

Para dividir um arquivo de texto muito grande em pedaços menores basta o seguinte comando: split -b <tamanho_dos_blocos> <nome_do_arquivo_original> Exemplo: split -b 50MB lista_de_telefones.txt Quebrará um arquivo de, por exemplo, 150MB em três de 50MB com nomes padrão (como por exemplo XAA, XAB, XAC)

MySQL - Adicionando zeros em um campo para obter tamanho fixo com LPAD() e RPAD()

Existem casos em que uma consulta no MySQL deve retornar um número fixo de caracteres. O código de cidade do TSE (Tribunal Superior Eleitoral), por exemplo, deve sempre retornar 5 caracteres, mesmo que algumas cidades possuam apenas dois (como Porto Velho - Rondônia) Para estes casos podemos retornar diretamente do MySQL o campo formatado utilizando LPAD() SELECT LPAD(35, 5, '0') AS cod_tse O retorno será: cod_tse 00035 RPAD() faz o mesmo só que colocando os caracteres de preenchimento do lado direito. Podemos usar LPAD() e RPAD() com qualquer caractere de preechimento, como no exemplo abaixo: SELECT RPAD('ATENÇÃO', 13, ' <=') AS Warning Resulta em: Warning ATENÇÃO <= <= Por hoje é isso!

PHP - Corrigindo o erro 'Allowed memory size exhausted'

Um erro que pode ocorrer em scripts que consomem muito recurso de memória é o: Allowed memory size of 134217728 bytes exhausted (tried to allocate 8759191 bytes) Este tipo de erro pode ser remediado colocando a seguinte linha no topo de seu script: Ini_set( “memory_limit”, -1 )

PHP - Criando uma Array de objetos igual ao retorno de uma consulta PDO

Você pode criar uma array de objetos como aquela retornada através do PHP PDO quando realiza uma consulta a um banco de dados. A sintaxe não tem segredos. É como 'tipar' uma variável com (String), (Int), (Float) etc. $object_array = Array( (object) Array( 'codMunicipio' => '09210', 'uf' => 'MA' ), (object) Array( 'codMunicipio' => '12190', 'uf' => 'PI' ), (object) Array( 'codMunicipio' => '71072', 'uf' => 'SP' ) ); Se você printar a array com 'var_dump()' obterá a seguinte...

MySQL - Inserindo sequência numérica dentro de GROUP BY

Uma necessidade comum no dia a dia é determinar, por exemplo, qual o primeiro elemento de cada diferente agrupamento. A query abaixo mostra como fazer isso a partir de variáveis do MySQL SELECT idMunicipio, nomeAbrangencia, zona, numeroCandidato, nomeUrna, partido, totalVotos, ( CASE zona WHEN @curType THEN @curRow := @curRow + 1 ELSE @curRow := 1 AND @curType := zona END ) AS rank FROM zonas, (SELECT @curRow := 0, @curType := '') r WHERE ...

Ocultando arquivos e diretórios que não se deseja versionar com GIT usando gitignore

Imagem
É comum no diretório em que estamos desenvolvendo uma aplicação existirem arquivos e pastas que não queremos versionar e nem que apareçam ao dar um ' git status '. Pastas com imagens, arquivos de log e etc. são alguns exemplos. Para facilitar nossa vida é possível fazer o GIT ignorar tais arquivos e pastas. Basta criar um arquivo chamado ' .gitignore '. O exemplo abaixo é o padrão do arquivo e pode ser copiado e alterado dependendo de suas necessidades. # Compiled source # ################### *.com *.class *.dll *.exe *.o *.so # Packages # ############ # it's better to unpack these files and commit the raw source # git has its own built in compression methods *.7z *.dmg *.gz *.iso *.jar *.rar *.tar *.zip # Logs and databases # ###################### *.log *.sql *.sqlite # OS generated files # ###################### .DS_Store .DS_Store? ._* .Spotlight-V100 .Trash...

PHP - Conectando bancos de dados através do PDO (PHP Data Object)

Imagem
Com o advento do php 7 precisamos rever alguns procedimentos que acabaram ficando conosco desde os primórdios do PHP. Um destes pontos a serem revistos é o trabalho com bancos de dados. Uma grande parte dos desenvolvedores PHP ainda trabalha com mysql_query, seja pelo costume, preguiça ou mesmo ambiente legado. Precisamos evoluir deste ponto e começar a trabalhar com bibliotecas mais modernas e flexiveis. Está na hora de começarmos a trabalhar com PDO ou PHP Data Object. PDO é uma classe nativa para conexão com banco de dados e que, além de trazer recursos excelentes, também pode ser mais rápida se adequadamente utilizada, além de adicionar uma camada de abstração que faz o trabalho de mudar de base de dados muito tranquila. PDO suporta inúmeros bancos como MySQL, SQLite, Postgree, Oracle e outros. Vamos dar algumas dicas simples e rápidas para começar a usar o PDO. CONEXÃO Abaixo segue um exemplo de conexão, juntamente com o tratamento de erro adequado para o caso da cone...

CSS - Problemas de performance ao montar layouts

Como saber se uma propriedade CSS causará problemas de desempenho? O site  http://csstriggers.com/ dá todas as informações importantes para que você tome a melhor decisão para montar o layout de seu projeto web.