Você comprou um computador novo, ou um monitor novo, e não consegue fazer com que a resolução dele fique boa? Bom, isso aqui não é um tutorial do que você deve ou pode fazer, mas sim, um depoimento do que aconteceu comigo, e como resolvi o problema.
A história começa quando decidi finalmente comprar algo que eu já almejava há bastante tempo: um monitor ultrawide. Depois de muita pesquisa, decidi por comprar o Husky Tempest de 34", pois foi o melhor custo-benefício que encontrei. A Husky é uma marca produzida pela loja Kabum, como fiquei sabendo depois de procurar saber mais pela marca, até então desconhecida pra mim. Pensei "Bom, a Kabum é uma loja bastante conhecida, já comprei coisas lá e nunca tive problema. Vou arriscar!". Comprei, e adorei. Funcionou tudo direitinho como eu esperava.
Recentemente, 1 ano depois da compra do monitor, senti a necessidade de trocar o meu computador por um mais novo. Aproveitei que estava chegando a Black Friday, comecei a pesquisar. Fiz bastante pesquisa e decidi por um notebook Dell Inspirou 15 3530 bem parrudo. A configuração estava muito boa, e o preço bem abaixo de outros notebook com uma configuração semelhante, então, vamos lá! Comprei e adorei!
O problema, é que neste notebook não conseguia configurar meu monitor Husky para ficar com uma configuração boa (3440 x 1440 a 144hz), ele só pegava 1920 x 1080 a 60hz, que além de ser uma resolução muito baixa para o tamanho do monitor, se tratando de um monitor ultrawide, ficava toda distorcida também... Troquei o cabo HDMI, tentei outra entrada do monitor, tentei mexer nas configurações, e nada... Então meu pensamento foi "O Windows não deve ter reconhecido o driver do monitor, e colocou um genérico qualquer". Até que fui atrás do driver oficial do monitor, e aí começou toda a minha frustração... Read more
Hoje em dia é comum vermos cada site com regras bem diferentes pra a criação de senhas, e boa parte deles são opção de gerar automaticamente as senhas. Então, eis aqui uma sugestão de como criar, com Javascript, um gerador de senhas flexível o bastante para se adaptar às regras de cada site.
A ideia é que possamos definir grupos de caracteres, e para cada grupo, o número mínimo de caracteres requeridos para nossas senhas. Também podemos definir o tamanho da senha a ser gerada. Se a soma das quantidades mínimas para cada grupo de caractere não for menor que o tamanho da senha, novos caracteres, dentre os dos grupos, serão adicionados para completá-la: Read more
Desde que comecei a trabalhar com programação que me interessei por ferramentas que pudessem auxiliar no meu trabalho, seja para agilizar o processo de desenvolvimento, ou para melhorar a qualidade do código. Logo no início me chamaram atenção os CMS como o Joomla, Drupal e Wordpress, e posteriormente os frameworks.
Minha história com frameworks começou quando comecei a trabalhar na UFPB , em 2007, no projeto da UFPB Virtual, de cursos à distância. Precisava desenvolver um sistema para possibilitar a integração do Sistema de Controle Acadêmico com o Sistema de Ensino à Distância (Moodle). Foi aí que conheci o Zend Framework, em sua primeira versão. Um dos primeiros frameworks PHP, que parecia uma maravilha diante do que tinha visto até então, pois englobava várias ferramentas em uma só, dentro de um padrão pré-definido por uma empresa consolidada. Ter esse conhecimento no meu currículo, sem dúvida, me abriu várias portas. Read more
Uma das características mais interessantes do Laravel é a facilidade de criar toda a estrutura do código rapidamente utilizando a ferramenta artisan. Uma dessas funcionalidades, é a de criar tabelas diretamente no banco de dados, baseando-se em suas classes de migration.
Por padrão, o Laravel irá criar as tabelas utilizando a engine MyISAM. Ela é uma engine útil quando precisamos de alta performance, porém, ela não serve se quisermos trabalhar com relacionamentos entre as tabelas, já que não aceita chaves estrangeiras. Para isso, geralmente é usada a engine InnoDB. Precisaremos, então, mudar essa configuração para que as tabelas sejam criadas utilizando InnoDB. Read more
Recentemente criei um projeto simples, mas bastante útil, para exibição de mensagens utilizando javascript de forma prática. Chamei-o de jn-messages
.
Com ele, é possível criar blocos de mensagens de três tipos:
- default: Tipo padrão, como os alerts do bootstrap;
- floating: As mensagens flutuam na frente do conteúdo;
- corner: As mensagens aparecem no canto inferior direito da página.
Cada bloco de mensagens pode ser configurado com as seguintes opções:
- max: Limitar a quantidade máxima de mensagens a ser exibida, fazendo com que, caso esse limite seja ultrapassado as mais antigas vão sendo fechadas automaticamente;
- closable: Ativar ou não a exibição de um botão X para fechar cada mensagem;
- timeout: Definir um tempo para que as mensagens sejam fechadas depois de um número de segundos definido;
- counter: Evitar que mensagens repetidas sejam exibidas, mostrando, em vez disso, um contador de exibições em cada mensagem;
Também é possível definir uma lista mensagens fixas com códigos, o que é útil para sistemas que já têm uma lista de mensagens predefinidas.
O código está disponível gratuitamente no github em https://jaimeneto.github.io/jn-messages/ e uma demo em http://jaimeneto.com/jn-messages/demo/ para quem quiser experimentar!
Espero que seja útil!
Neste sábado (10 de Novembro de 2018) aconteceu o 1º PHP Day em João Pessoa/PB, realizado pela comunidade do PHP-PB. Fui convidado para dar uma palestra, e o tema que apresentei foi "Seu framework é melhor pra quê?".
Disponibilizei os slides da palestra no meu slideshare: http://www.slideshare.net/jaimecpn. Link direto para esta palestra: https://pt.slideshare.net/jaimecpn/seu-framework-melhor-pra-qu.
Não raramente precisamos trabalhar com países em nossos sistemas. Então, vou deixar aqui uma classe PHP já pronta pra isso, com suporte a internacionalização, inclusive. Deixei a classe já com os países em inglês e português, quem precisar pode adicionar outros países, caso necessário. Também adicionei dois métodos estáticos para buscar o nome pelo código do país, e o contrário também. O motivo de ter criado como métodos estáticos é apenas por questões práticas, pois assim não é necessário instanciar a classe antes de usá-la. Read more
O PHP vem evoluindo muito desde sua criação, principalmente nas últimas versões, que vêm incorporando os mais modernos conceitos no que diz respeito ao desenvolvimento de software. Uma das funcionalidades básicas, e que também vem trazendo evoluções, é o operador ternário. Vamos dar uma olhada nas formas que temos de utilizá-lo e entender a diferença entre elas. Read more
Uma funcionalidade muito útil do banco de dados PostgreSQL, e que muita gente não conhece, é transformar um conjunto de dados no formato JSON. Esse formato é muito utilizado atualmente para comunicação entre serviços, alimentação de dados em grid, e várias outras funcionalidades. Alguns bancos usam funções que convertem os registros para JSON, mas o PostgreSQL tem uma forma muito mais prática, como veremos nos exemplos a seguir:
Digamos que eu queira a lista de posts de um site para ser exibida em um grid. Se fizer a query seguinte, eu terei essa lista como result set:
SELECT * FROM posts
Pra quem ainda não está familiarizado com esse novo operador do PHP7, o spaceship, eis um resumo de sua funcionalidade: ele serve pra comparar dois valores, e saber se o primeiro operando é menor, igual ou maior que o segundo. Ou seja, ele junta os operadores <
, ==
e >
num só, formando <=>
. Vejamos como seria fazer essas três comparações sem esse operador:
Read more