tag:blogger.com,1999:blog-37153329529196077542024-02-19T07:07:30.266-03:00PHP, Web e coisas assimBlog de PHP com artigos, tutoriais, scripts e dicas sobre tecnologias web em geral.Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.comBlogger203125tag:blogger.com,1999:blog-3715332952919607754.post-24605233067624552992021-11-25T22:36:00.002-03:002021-11-25T22:36:29.082-03:00Script de Debug para o Opcache<meta itemprop="keywords" content="opcache, debug, php">
<div>
<div class="title">Introdução</div>
<p>O <strong>Opcache</strong> é um recurso do PHP para cachear o byte-code do código interpretado de um script PHP. Para ajudar a debugar o uso do Opcache, o PHP oferece a função <tt>opcache_get_status</tt>. Neste artigo vou compartilhar um script para visualizar o debug do retorno dessa função de forma amigável.</p>
</div>
<a href="https://rubsphp.blogspot.com/2021/11/script-de-debug-para-o-opcache.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com0São Paulo, Brasil-21.2922457 -50.3428431-49.602479536178848 -85.49909310000001 7.0179881361788468 -15.186593100000003tag:blogger.com,1999:blog-3715332952919607754.post-3480865244563036332021-10-02T00:49:00.001-03:002021-10-02T00:49:41.113-03:00Expressões Regulares em PHP - Recursos avançados<meta itemprop="keywords" content="regex, regular expression, pcre">
<div>
<div class="title">Introdução</div>
<p>No artigo sobre <a href="https://rubsphp.blogspot.com/2015/02/expressoes-regulares-em-php.html">Expressões Regulares em PHP</a>, vimos os conceitos básicos da sintaxe de <strong>Expressões Regulares</strong> usadas no PHP, que é o padrão <strong><abbr title="Perl Compatible Regular Expression">PCRE</abbr></strong>, além das funções do PHP para realizar diferentes operações com expressões regulares. Após 6 anos, resolvi complementar aquele artigo com os recursos mais avançados sobre <abbr title="regular expression">regex</abbr> e algumas curiosidades extras sobre o assunto. Caso você não conheça o básico sobre Expressões Regulares, é altamente recomendável que primeiro vocẽ leia o artigo anterior para depois continuar.</p>
</div>
<a href="https://rubsphp.blogspot.com/2021/10/expressoes-regulares-recursos-avancados.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com2São Paulo, Brasil-21.2922457 -50.3428431-49.602479536178848 -85.49909310000001 7.0179881361788468 -15.186593100000003tag:blogger.com,1999:blog-3715332952919607754.post-43794731166293230022020-08-26T22:05:00.010-03:002020-08-28T21:22:46.806-03:00Streams do PHP<meta itemprop="keywords" content="stream,stdout,stderr,stdin,php">
<div itemprop="headline">
<div class="title">Introdução</div>
<p><strong>Streams</strong> são canais por onde passam fluxos de dados (bytes). É comum se falar em "streaming de vídeo", que é um canal por onde é trafegado um fluxo de dados do vídeo em pedaços (chunks).</p>
<p>Segundo a definição do <a href="https://php.net/">php.net</a>, streams são recursos por onde se lê ou escreve dados de forma linear, e que também permite se posicionar em uma posição arbritária do stream.</p>
<p>Neste artigo veremos como a linguagem PHP trabalha com streams e também como manipulá-los no terminal de comandos.</p>
</div>
<a href="https://rubsphp.blogspot.com/2020/07/streams-do-php.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com4São Paulo, SP, Brasil-23.5505199 -46.633309399999987-24.4811409 -47.92420289999999 -22.619898900000003 -45.342415899999985tag:blogger.com,1999:blog-3715332952919607754.post-46241083583675005872020-07-02T21:53:00.001-03:002020-08-26T23:41:44.711-03:00Iteradores do PHP<meta itemprop="keywords" content="iterator, iterador">
<div itemprop="headline">
<div class="title">Introdução</div>
<p>No artigo <a href="https://rubsphp.blogspot.com/2010/11/interfaces-iterator-arrayaccess-countable.html">As interfaces Iterator, ArrayAccess e Countable do PHP</a> comentei rapidamente sobre <strong>iteradores</strong>, porém não mostrei um exemplo real e as vantagens desse tipo de recurso. Nesse artigo, vou me aprofundar um pouco mais nesses pontos.</p>
</div>
<a href="https://rubsphp.blogspot.com/2020/07/iteradores-do-php.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com1São Paulo, SP, Brasil-23.5505199 -46.633309399999987-24.4811409 -47.92420289999999 -22.619898900000003 -45.342415899999985tag:blogger.com,1999:blog-3715332952919607754.post-21981211015639490042019-12-30T00:01:00.001-03:002020-08-26T23:42:28.509-03:00O Diferencial do PHP<meta itemprop="keywords" content="php,microserviços">
<div itemprop="headline">
<div class="title">Introdução</div>
<p>Já faz um bom tempo que eu não escrevo nada neste blog e eu resolvi voltar com um artigo que não tem o mesmo intuito de ensinar algo extremamente prático sobre o mundo do PHP, mas apresentar um artigo mais reflexivo sobre o que o PHP é em essência e o que o distingue das demais linguagens utilizadas para web hoje em dia. Por fim, fazer algumas análises sobre o momento atual, em que tanto se fala de <em>microserviços</em> e <em>serverless</em>, e como o PHP está (ou não) inserido neste cenário.</p>
</div>
<a href="https://rubsphp.blogspot.com/2019/12/o-diferencial-do-php.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com2São Paulo, Brasil-23.5431786 -46.629184500000008-31.0339516 -56.956333000000008 -16.0524056 -36.302036000000008tag:blogger.com,1999:blog-3715332952919607754.post-24304893049916124192016-09-17T00:45:00.001-03:002020-08-26T23:42:37.550-03:00Expressões Regulares com Intervalos Numéricos<meta itemprop="keywords" content="regex, range, intervalo, expressão regular, php">
<div itemprop="headline">
<div class="title">Introdução</div>
<p>No artigo sobre <a href="http://rubsphp.blogspot.com.br/2015/02/expressoes-regulares-em-php.html">Expressões Regulares em PHP</a>, vimos os conceitos básicos sobre expressões regulares. Porém, algo que pode gerar certa confusão é sobre a criação de uma expressão regular que verifique se determinada string é um número presente em um determinado intervalo numérico (<i lang="en">range</i>). Neste artigo veremos qual é o problema e é apresentada uma classe que gera a expressão regular de um intervalo numérico.</p>
</div>
<a href="https://rubsphp.blogspot.com/2016/09/expressoes-regulares-com-intervalos.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com2São Paulo, State of São Paulo, Brazil-23.5505199 -46.633309399999973-24.4811409 -47.924202899999976 -22.619898900000003 -45.34241589999997tag:blogger.com,1999:blog-3715332952919607754.post-90164001639776881912016-07-04T13:55:00.002-03:002020-08-26T23:42:48.359-03:00Novidades do PHP 7.1<meta itemprop="keywords" content="php 7.1,novidades">
<div itemprop="headline">
<div class="title">Introdução</div>
<p>O PHP 7.1 foi lançado dia 01/12/2016. Seguem as principais novidades do PHP 7.1:</p>
<ul>
<li><a href="#tipo-nulo">Especificação de tipos nulos e retornos nulos</a></li>
<li><a href="#melhorias-list">Melhorias na construção <tt>list</tt></a></li>
<li><a href="#acesso-a-indices-negativos-de-strings">Acesso a índices negativos de strings</a></li>
<li><a href="#visibilidade-de-constantes">Visibilidade de constantes</a></li>
<li><a href="#multiplo-catch">Multiplo <tt>catch</tt></a></li>
<li><a href="#type-hint-iterable">Type hint <tt>iterable</tt></a></li>
<li><a href="#ajustes-no-this">Ajustes na variável <tt>$this</tt></a></li>
<li><a href="#criacao-de-closure-a-partir-de-callable">Criação de <tt>Closure</tt> a partir de <tt>callable</tt></a></li>
<li><a href="#float-com-mais-precisao">Float com mais precisão</a></li>
<li><a href="#melhorias-modulo-curl">Melhorias no módulo Curl</a></li>
</ul>
</div>
<a href="https://rubsphp.blogspot.com/2016/07/novidades-do-php-7-1.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com8São Paulo, State of São Paulo, Brazil-23.5505199 -46.633309399999973-24.4811409 -47.924202899999976 -22.619898900000003 -45.34241589999997tag:blogger.com,1999:blog-3715332952919607754.post-732044176155107112016-06-29T23:11:00.001-03:002020-08-26T23:42:59.393-03:00Caches de Aplicação<meta itemprop="keywords" content="cache,apc,memcache,php">
<div itemprop="headline">
<div class="title">Introdução</div>
<p>É muito comum (e útil) aplicações complexas armazenarem algumas informações em cache para diversas finalidades. A mais importante é o rápido acesso a uma informação que tem um custo relativamente alto para ser obtido, seja pelo tempo gasto, consumo de recursos computacionais para se realizar a consulta ou pela quantidade de vezes que se acessa a mesma informação.</p>
<p>Neste artigo, vou mostrar o conceito básico para se montar uma estratégia de cache e algumas exemplos de utilização.</p>
</div>
<a href="https://rubsphp.blogspot.com/2016/06/caches-de-aplicacao-em-php.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com1São Paulo, State of São Paulo, Brazil-23.5505199 -46.633309399999973-24.4811409 -47.924202899999976 -22.619898900000003 -45.34241589999997tag:blogger.com,1999:blog-3715332952919607754.post-6675940821959176762016-03-23T21:57:00.002-03:002020-08-26T23:43:45.204-03:00Cuidados ao criar um script de Cron<meta itemprop="keywords" content="cron, php, cuidados, dicas">
<div itemprop="headline">
<div class="title">Introdução</div>
<p>Em 2010, escrevi o artigo <a href="//rubsphp.blogspot.com.br/2010/10/tarefas-agendadas.html">Tarefas agendadas via Cron + PHP</a>, que ensinava o básico sobre como montar um script de cron e configurá-lo para que fosse executado com certa periodicidade automaticamente. Hoje, quase 6 anos depois, revolvi escrever mais um artigo sobre o assunto, mas desta vez para compartilhar algumas lições valiosíssimas que devem ser levadas em conta ao se preparar um script de cron.</p>
</div>
<p>Observação: as dicas apresentadas neste artigo também valem para a construção de serviços (daemons) em PHP.</p>
<a href="https://rubsphp.blogspot.com/2016/03/cuidados-ao-criar-um-script-de-cron.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com4São Paulo, São Paulo - SP, Brazil-23.5505199 -46.633309399999973-24.4811409 -47.924202899999976 -22.619898900000003 -45.34241589999997tag:blogger.com,1999:blog-3715332952919607754.post-65238231521813413572016-02-10T22:02:00.001-02:002020-08-26T23:44:08.515-03:00Outras novidades do PHP 7<meta itemprop="keywords" content="php, php7">
<div itemprop="headline">
<div class="title">Introdução</div>
<img itemprop="image" style="float: right; margin: 0 0 10px 10px;" height="83" width="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW0FogTRNAfkvIcqa9_u7-jkSZMr5TrNJYdwBiGBK5DEH4GbNNOHP4Nr3L21fJ-3HEMaO_mIfeCnoKiNu_2ToJR20CNQHMGfeHHzQOvpIWKJ820tc5qCcgs_dxAqtJI-1o3timoexRHQ/s1600/php7.png">
<p>No artigo <a href="http://rubsphp.blogspot.com.br/2016/02/novidades-do-php-7.html">Novidades do PHP 7</a> falamos sobre as principais novidades do <strong>PHP 7</strong>, porém, não deu pra colocar tudo lá. Neste artigo vou complementar com algumas outras novidades de menor relevância:</p>
<ul>
<li><a href="#nomes-reservados">Utilização de nomes reservados</a></li>
<li><a href="#constantes-com-array">Criação de constantes contendo arrays</a></li>
<li><a href="#constante-php-int-min">Constante <tt>PHP_INT_MIN</tt></a></li>
<li><a href="#strings-com-unicode">Strings podem representar caracteres Unicode de forma escapada</a></li>
<li><a href="#closure-com-call">Closures têm o método <tt>call</tt></a></li>
<li><a href="#unserialize-melhorado"><tt>unserialize</tt> melhorado</a></li>
<li><a href="#classe-intlchar">Classe <tt>IntlChar</tt></a></li>
<li><a href="#use-agrupado">Agrupamento de classes no <tt>use</tt></a></li>
<li><a href="#generator-com-getreturn">Gerenators têm o método <tt>getReturn</tt></a></li>
<li><a href="#generator-de-generator">Generators de Generators</a></li>
<li><a href="#funcao-intdiv">Divisão de inteiros</a></li>
<li><a href="#mudancas-session">Mudanças em Sessions</a></li>
<li><a href="#funcao-preg-replace-callback-array">Função <tt>preg_replace_callback_array</tt></a></li>
<li><a href="#funcao-get-resources">Função <tt>get_resources</tt></a></li>
<li><a href="#melhorias-reflection">Melhorias em Reflection</a></li>
<li><a href="#list-aceitando-arrayaccess"><tt>list</tt> aceitando objetos <tt>ArrayAccess</tt></a></li>
<li><a href="#mudancas-funcoes">Mudanças em algumas funções</a></li>
</ul>
</div>
<a href="https://rubsphp.blogspot.com/2016/02/outras-novidades-do-php-7.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com1São Paulo, São Paulo - SP, Brasil-23.5505199 -46.633309399999973-24.4811409 -47.924202899999976 -22.619898900000003 -45.34241589999997tag:blogger.com,1999:blog-3715332952919607754.post-85372578046802220202016-02-08T02:50:00.001-02:002020-08-26T23:44:23.532-03:00Novidades do PHP 7<meta itemprop="keywords" content="php, php7">
<div itemprop="headline">
<div class="title">Introdução</div>
<img itemprop="image" style="float: right; margin: 0 0 10px 10px;" height="83" width="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW0FogTRNAfkvIcqa9_u7-jkSZMr5TrNJYdwBiGBK5DEH4GbNNOHP4Nr3L21fJ-3HEMaO_mIfeCnoKiNu_2ToJR20CNQHMGfeHHzQOvpIWKJ820tc5qCcgs_dxAqtJI-1o3timoexRHQ/s1600/php7.png">
<p>No final de 2015 foi lançado finalmente o <strong>PHP 7.0.0</strong>, que estabeleceu uma nova "era" para o PHP e deixou as versões 5.X no passado. As versões 5.X (que começaram em 2004) tiveram uma grande importância na história do PHP, embora alguns tropeços também.</p>
<p>O que algumas pessoas podem se perguntar é <i>por que a versão 5.X saltou para 7.X sem passar pela 6.X?</i> Acontece que no passado houve a implementação do que seria o PHP 6. O projeto iniciou em 2005, mas acabou sendo "abandonado" em 2010. Chegaram até a lançar algumas versões alpha ou beta que cheguei a testar, mas a versão final nunca foi lançada por conta da complexidade que agregou ao núcleo do PHP. A feature que gerou toda a confusão foi o suporte nativo a <a href="http://rubsphp.blogspot.com.br/2010/10/entendendo-o-unicode-utf8.html">Unicode</a>. Porém, mesmo abandonando a versão 6, os desenvolvedores da linguagem optaram por lançar algumas das outras features previstas nas versões 5.3.X em diante mesmo. Com isso, vimos as versões 5.X terem uma enorme mudança desde o lançamento da versão 5.0.0 até as versões 5.6.X atuais. Afinal, foram mais de uma década desta versão.</p>
<p>Enfim, como o PHP 6 chegou a ser arquitetado e divulgado com um conjunto de features específicas e até artigos e livros sobre o assunto foram publicados (antes mesmo da versão final ser lançada), optaram por saltar esse número na contagem de versões do PHP para evitar confusões. Para mais detalhes sobre isso, você pode ler o <a href="https://wiki.php.net/rfc/php6">RFC sobre o próximo nome do PHP</a>.</p>
<p>Bem, mas estamos aqui para falar de PHP 7. Estou um pouco enferrujado para escrever artigos, mas vamos ver se esse ano volto ao ritmo.</p>
</div>
<a href="https://rubsphp.blogspot.com/2016/02/novidades-do-php-7.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com10São Paulo, São Paulo - State of São Paulo, Brazil-23.5505199 -46.633309399999973-24.4811409 -47.924202899999976 -22.619898900000003 -45.34241589999997tag:blogger.com,1999:blog-3715332952919607754.post-50233973196508493882015-06-23T20:46:00.001-03:002020-08-26T23:44:40.388-03:00Minificação de arquivos para Web<meta itemprop="keywords" content="minificação, css, javascript">
<div itemprop="headline">
<div class="title">Introdução</div>
<img itemprop="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaV-HxTkTM-ePD8WuTYTJNQqdkU6wWSzgc7fKAeR2RXE25Nbb6Hu2o91OZpwiLE_o83R63qpHgHhfx0ZJHVn93wV0BtkS1r5XE752KkP7qCPjMj72ujGKy1YicuswzlTZwlE7XHuNDLg/s400/zip.gif" width="100" height="100" style="float: right; margin: 0 0 10px 10px" alt="compressão de arquivos">
<p>O ambiente web é repleto de requisições e respostas HTTP contendo arquivos HTML, JS, CSS, imagens, etc. Dependendo da arquitetura da aplicação, cada página pode requerer muitos arquivos de estilos, script ou imagens auxiliares, que acabam consumindo tempo para serem baixados e processados pelo navegador. Portanto, é útil aplicar algumas técnicas para minimizar o tamanho destes arquivos, afinal, arquivos menores podem ser trafegados mais rapidamente. Uma página rápida é sempre bem vista pelos buscadores, como o Google, pois impacta diretamente numa melhor experiência do usuário.</p>
<p>Neste artigo, veremos algumas dicas de como minimizar o tamanho de alguns tipos de arquivos, para tornar as páginas mais rápidas de serem carregadas e, consequentemente, ter maior relevância para buscadores. Os assuntos estão divididos em:</p>
<ul>
<li><a href="#minificacao-js-css">Minificando arquivos JS e CSS</a></li>
<li><a href="#otimizacao-png">Otimizando arquivos PNG</a></li>
<li><a href="#otimizacao-jpg">Otimizando arquivos JPG</a></li>
<li><a href="#minificacao-html">Minificando arquivos HTML</a></li>
</ul>
</div>
<a href="https://rubsphp.blogspot.com/2015/06/minificacao-de-arquivos-para-web.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com5São Paulo - SP, Brasil-23.5505199 -46.633309399999973-24.4811409 -47.924202899999976 -22.619898900000003 -45.34241589999997tag:blogger.com,1999:blog-3715332952919607754.post-4391818119885295212015-03-27T09:45:00.000-03:002015-03-27T09:45:04.177-03:00Executando código PHP local em máquina remota<meta itemprop="keywords" content="php, servidor remoto, ssh">
<div>
<div class="title">Introdução</div>
<p>No artigo <a href="http://rubsphp.blogspot.com.br/2013/01/php-em-modo-interativo.html">PHP em modo interativo</a> vimos como executar o PHP de forma interativa, ou seja, abrir um "terminal de PHP" e executar comandos sob demanda. Neste artigo, vamos ver como tirar proveito deste recurso de forma que se possa executar um código PHP de sua máquina local em uma máquina remota.</p>
</div>
<a href="https://rubsphp.blogspot.com/2015/03/executando-codigo-php-local-em-maquina-remota.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com0São Paulo - SP, Brasil-23.5505199 -46.633309399999973-24.4811409 -47.924202899999976 -22.619898900000003 -45.34241589999997tag:blogger.com,1999:blog-3715332952919607754.post-42797575268651783792015-02-02T09:00:00.003-02:002021-10-26T15:53:37.899-03:00Expressões Regulares em PHP<meta itemprop="keywords" content="preg, expressões regulares, php">
<div>
<div class="title">Introdução</div>
<p><em>Expressões regulares</em> são expressões que permitem especificar um padrão de string, ou seja, como os caracteres de uma string ficam dispostos em sequência. Com este padrão, é possível realizar checagens para saber se uma string segue determinado padrão, capturar pedaços da string com base no padrão, ou ainda substituir pedaços de uma string por outra sequência de caracteres.</p>
<p>As expressões regulares são um recurso extremamente útil não apenas para PHP, mas para várias outras linguagens, inclusive JavaScript. Porém, como possui uma sintaxe própria, nem todos programadores PHP tem familiaridade em montar ou entender expressões regulares. Neste artigo veremos um compilado de informações úteis para se aprender a usar expressões regulares em PHP.</p>
</div>
<a href="https://rubsphp.blogspot.com/2015/02/expressoes-regulares-em-php.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com5São Paulo - SP, Brasil-23.5505199 -46.633309399999973-24.4811409 -47.924202899999976 -22.619898900000003 -45.34241589999997tag:blogger.com,1999:blog-3715332952919607754.post-39329804536698674372014-12-08T21:22:00.001-02:002020-08-28T18:15:10.973-03:00Link prefetching<meta itemprop="keywords" content="link prefetching, http, otimização">
<div>
<div class="title">Introdução</div>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix6RuIcgpl2tiw1Fhv_c6X5NYCYAM4S6_n9vgyE2Tm6HNTT14Vf3xxIyMI_zGmN3zppmHuGI5Af4cUxDOo-jpwY8JGKIzDn69KI1MXrl-_1FH4BiLBXs5vmJX7QBdOxKLyQib4jsl1ag/s400/performance.jpg" alt="Performance" width="200" height="200" style="margin: 0 0 10px 10px; float: right;">
<p><em>Link prefetching</em> (ou pré-carregamento de links) é um recurso oferecido por navegadores para que sites possam especificar arquivos que devem ser pré-carregados, de forma que estejam prontamente disponíveis quando solicitados, melhorando a performance e consequentemente a usabilidade do site.</p>
<p>Até o momento, apenas os navegadores baseados na engine Gecko (como é o caso do Firefox) implementam o link prefetching, embora a especificação está sendo proposta como recomendação da W3C.</p>
<p>Neste artigo, veremos como o recurso funciona e como tirar proveito para otimização de sites.</p>
</div>
<a href="https://rubsphp.blogspot.com/2014/12/link-prefetching.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com0São Paulo - SP, Brasil-23.5505199 -46.633309399999973-24.4811409 -47.924202899999976 -22.619898900000003 -45.34241589999997tag:blogger.com,1999:blog-3715332952919607754.post-40753285889088710422014-10-29T22:36:00.000-02:002014-11-03T09:36:41.837-02:00Criação de campos de Status<meta itemprop="keywords" content="modelagem, banco de dados, estruturas de dados">
<div>
<div class="title">Introdução</div>
<p>Campos de "<em>status</em>" são campos que guardam a situação de determinada entidade em determinado contexto. Eles são muito comuns em modelagens de bancos de dados e estruturas de dados em geral para ajudar a arquitetar soluções e processos computacionais. Embora pareça algo muito simples, existem alguns problemas e observações que podem ser feitas sobre o assunto. Neste artigo vamos ver sobre elas.</p>
</div>
<a href="https://rubsphp.blogspot.com/2014/10/criacao-de-campos-de-status.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com5São Paulo - SP, República Federativa do Brasil-23.5505199 -46.633309399999973-24.4811409 -47.924202899999976 -22.619898900000003 -45.34241589999997tag:blogger.com,1999:blog-3715332952919607754.post-49102448559127703532014-07-18T16:33:00.000-03:002014-07-18T16:33:47.986-03:00Timestamp em PHP<meta itemprop="keywords" content="timestamp,php,datas">
<div>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKewOmYPjGhCNjvA3CIhOOEmc9tTHS1kFjQwCbc0nUJ1ZutE9pSu5YbCnb4nP3StbFn0vbDIp3Y0tPJBy9cmVKiL2UR43H5U-b_jtfR2JU32DiFha6nH1ZML55Ezl3pTumNUHGZQ3Utg/s400/calendario.jpg" alt="Calendário" style="float: right; margin: 0 0 10px 10px;" width="200" height="189">
<div class="title">Introdução</div>
<p>Há algum tempo escrevi o artigo <a href="http://rubsphp.blogspot.com.br/2010/11/aritmetica-de-datas.html">Aritmética de Datas</a>, que mostrava como manipular datas no PHP e realizar operações sobre elas. Porém, embora tenha citado brevemente sobre Timestamp, não explorei tanto o assunto.</p>
<p>Neste artigo, pretendo explicar melhor o que é o <b>Timestamp</b> e como ele é manipulado no PHP. Também vou destacar algumas características importantes, relacionadas ao fuso horário (timezone).</p>
</div>
<a href="https://rubsphp.blogspot.com/2014/07/timestamp-em-php.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com3São Paulo, República Federativa do Brasil-23.5505199 -46.633309399999973-24.4811409 -47.924202899999976 -22.619898900000003 -45.34241589999997tag:blogger.com,1999:blog-3715332952919607754.post-8545158087624394182014-06-03T17:15:00.001-03:002014-06-05T12:23:40.376-03:00Full text search com Sphinx<meta itemprop="keywords" content="sphinx, banco de dados, full text, busca">
<div>
<div class="title">Introdução</div>
<img style="margin: 0 0 10px 10px; float: right;" width="232" height="55" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYhCuNrguf2qtMC5eNBLIyfhoe4NThtHF-5qqoEQVfbwMfofoXIr7w5AiW8nemE1Ex7g0WBoc1ui5nWHujHe40tSb3vvsPwhCF-1uJnKRlad88b1NP9b_8jWw9R1K4dUD062YyFYIPFg/s1600/sphinx.png" alt="logo do sphinx search">
<p>Full text é um recurso conhecido pelos entusiastas de bancos de dados. Ele permite a realização de queries de busca de registros em campos de texto com mais flexibilidade que uma busca envolvendo os operadores convencionais como o <tt>=</tt>, <tt><></tt>, <tt>LIKE</tt>, <tt>NOT LIKE</tt>, etc. Vários bancos de dados relacionais dão suporte a este recurso, por exemplo, o MySQL, PostgreSQL, Oracle, até o SQLite possui módulos que suportam Full Text.</p>
<p>Porém, também existem bancos de dados especialistas em buscas Full Text. Neste artigo, vou mostrar o <strong>Sphinx</strong>, que é um banco de dados Open Source, gratuito, muito prático e que tem evoluído rapidamente. Veremos as vantagens/desvantagens e quando é útil utilizar este tipo de banco.</p>
</div>
<a href="https://rubsphp.blogspot.com/2014/06/full-text-search-com-sphinx.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com0São Paulo - SP, Brasil-23.5505199 -46.633309399999973-24.4811409 -47.924202899999976 -22.619898900000003 -45.34241589999997tag:blogger.com,1999:blog-3715332952919607754.post-46130132364800876962014-04-05T19:13:00.000-03:002017-06-30T22:58:10.776-03:00Criando Bolas e Círculos com CSS<meta itemprop="keywords" content="css, bolas, círculos">
<div>
<img style="margin: 0 0 10px 10px; float: right;" width="300" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWP2fyC9rb-JgFjg7s2tBp64Km4DrKdn2xvcSRfji7WENvqkdU4lbJetA7cPjT8QigXEiLqCnVOMCh5AIdJDJKE8mJZLJoH5TQgVs9Mbfb_1hkPrM03oF-jhKRS50xnitFrnS92YswUw/s1600/bola.png">
<div class="title">Introdução</div>
<p>Recentemente vimos como <a href="//rubsphp.blogspot.com.br/2013/08/criando-triangulos-com-css.html">criar triângulos com css</a>. Neste artigo, veremos como criar bolas, círculos e elipses com CSS.</p>
</div>
<a href="https://rubsphp.blogspot.com/2014/04/criando-bolas-e-circulos-com-css.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com21São Paulo - SP, Brasil-23.5505199 -46.633309399999973-24.4811409 -47.924202899999976 -22.619898900000003 -45.34241589999997tag:blogger.com,1999:blog-3715332952919607754.post-24220549329903690682014-03-27T10:41:00.001-03:002014-03-27T10:41:40.474-03:00Prevenção de Timing Attack no PHP<meta itemprop="keywords" content="timing attack, segurança, senha, php">
<div>
<div class="title">Introdução</div>
<p><b>Timing Attack</b> (ataque baseado em tempo) é um tipo de ataque a sistemas. Ele é pouco conhecido e normalmente é realizado por crackers mais avançados. Neste artigo, veremos o que são estes tipos de ataque e como podem ser prevenidos no PHP.</p>
</div>
<a href="https://rubsphp.blogspot.com/2014/03/prevencao-de-timing-attack-no-php.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com5São Paulo - SP, Brasil-23.5505199 -46.633309399999973-24.4811409 -47.924202899999976 -22.619898900000003 -45.34241589999997tag:blogger.com,1999:blog-3715332952919607754.post-84031232294499696532014-03-15T23:32:00.002-03:002014-03-15T23:33:38.071-03:00Desempacotamento de Parâmetros em Funções no PHP (operador splat)<meta itemprop="keywords" content="splat operator, desempacotamento de parâmetros, php, sintaxe">
<div>
<div class="title">Introdução</div>
<p>No artigo anterior, falamos sobre <a href="http://rubsphp.blogspot.com.br/2014/01/funcoes-variadicas.html">Funções Variádicas</a>, que ganhou uma sintaxe nova no <a href="http://rubsphp.blogspot.com.br/2014/01/novidades-do-php-5.6.0.html">PHP 5.6</a>. Neste artigo, veremos um recurso adicional e similar, que é o <strong>desempacotamento de parâmetros em funções e métodos</strong> através do símbolo de reticências. O operador é conhecido em outras linguagens como operador "<em>splat</em>".</p>
</div>
<a href="https://rubsphp.blogspot.com/2014/03/desempacotamento-de-parametros-no-php-com-operador-splat.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com0São Paulo - SP, Brasil-23.5505199 -46.633309399999973-24.4811409 -47.924202899999976 -22.619898900000003 -45.34241589999997tag:blogger.com,1999:blog-3715332952919607754.post-91253059782832075242014-01-31T15:56:00.000-02:002014-01-31T16:06:17.172-02:00Funções Variádicas<meta itemprop="keywords" content="funções variádicas, variadic functions, php">
<div>
<div class="title">Introdução</div>
<p>Uma das novidades do PHP 5.6 é o suporte a uma nova sintaxe para declaração de funções variádicas. Para quem não sabe, funções variádicas (variadic functions) são aquelas que podem receber um número indeterminado de parâmetros. Neste artigo veremos o que são funções variádicas e qual é a nova sintaxe para declará-las a partir do PHP 5.6.</p>
</div>
<a href="https://rubsphp.blogspot.com/2014/01/funcoes-variadicas.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com5São Paulo - SP, Brasil-23.5505199 -46.633309399999973-24.4811409 -47.924202899999976 -22.619898900000003 -45.34241589999997tag:blogger.com,1999:blog-3715332952919607754.post-23115893881246594512014-01-30T18:14:00.000-02:002014-06-17T09:01:25.701-03:00Novidades do PHP 5.6<meta itemprop="keywords" content="php, 5.6">
<div>
<div class="title">Introdução</div>
<p>O ano de 2013 terminou e foi marcado pelo <a href="http://rubsphp.blogspot.com.br/2013/06/lancamento-do-php-5.5.0.html">lançamento do PHP 5.5</a>, com ótimas novidades. Mas chegou 2014 e, logo no começo do ano, já temos o lançamento da <a href="https://github.com/php/php-src/blob/PHP-5.6/NEWS"><strong>primeira versão ALPHA do PHP 5.6</strong></a>. Isso mesmo! O ciclo de desenvolvimento do PHP parece estar a todo vapor. Além disso, o exame de certificação em PHP já se atualizou e agora as perguntas são baseadas na versão 5.5 do PHP.</p>
<p>Neste artigo, vamos dar uma olhada inicial nas principais características anunciadas para o PHP 5.6, lembrando que esta versão ainda é <b>ALPHA</b>, ou seja, ainda é instável e pode sofrer mudanças até o lançamento oficial da versão 5.6.0. Conforme serão anunciadas as novidades em outras versões ALPHA, BETA e Release Candidate, vou atualizando este artigo para que fique completo.</p>
</div>
<a href="https://rubsphp.blogspot.com/2014/01/novidades-do-php-5.6.0.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com1São Paulo - SP, Brasil-23.5505199 -46.633309399999973-24.4811409 -47.924202899999976 -22.619898900000003 -45.34241589999997tag:blogger.com,1999:blog-3715332952919607754.post-52586302831255841912013-12-01T15:08:00.000-02:002013-12-01T15:08:57.169-02:00Rich Snippets (customização de resultados no Google)<meta itemprop="keywords" content="rich snippets, google, schema.org, seo">
<div>
<div class="title">Introdução</div>
<p><em lang="en">Rich Snippets</em> (literalmente traduzido como "fragmentos ricos") é o nome das marcações que podem ser feitas em páginas HTML para agregar mais semântica a elas. O Google utiliza estas marcações tanto para renderizar as páginas de seus resultados de busca de forma diferenciada quanto para auxiliar algumas de suas buscas, como a de notícias, blogs, vídeos, etc. Ou seja, os rich snippets são uma importante ferramenta para transformação da web em uma estrutura mais semântica e compreensível não apenas para humanos, mas também para as máquinas (bots).</p>
<p>Neste artigo, vamos ver quais são os tipos de marcações de rich snippets, como elas podem ser feitas e como podem ser testadas.</p>
</div>
<a href="https://rubsphp.blogspot.com/2013/12/rich-snippets-do-google.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com3São Paulo - SP, República Federativa do Brasil-23.5489433 -46.6388182-24.4795613 -47.929711700000006 -22.618325300000002 -45.3479247tag:blogger.com,1999:blog-3715332952919607754.post-14049247364163850062013-10-24T23:01:00.000-02:002013-10-24T23:04:35.254-02:00Scroll Infinito<meta itemprop="keywords" content="scroll,infinito,javascript">
<div>
<div class="title">Introdução</div>
<p>Um dos elementos de usabilidade que vem aparecendo em alguns sites nos últimos tempos é o "<em>scroll infinito</em>". Trata-se daquele comportamento da página de linha do tempo de perfis do Facebook entre outras redes sociais. Quando você se aproxima do fim da página, ela automaticamente carrega mais elementos e, consequentemente, ajusta o scroll da página, que pode ser rolada mais para baixo. Embora o scroll infinito gere uma experiência interessante para o usuário, também pode se tornar um vilão, quando mal planejado.</p>
<p>Neste artigo, veremos como montar uma página com scroll infinito, mas também discutiremos as preocupações a serem tomadas para garantir a acessibilidade do seu site.</p>
</div>
<a href="https://rubsphp.blogspot.com/2013/10/scroll-infinito.html#more">Leia mais »</a>Rubens Takiguti Ribeirohttp://www.blogger.com/profile/09969812132765367619noreply@blogger.com22São Paulo - SP, República Federativa do Brasil-23.5489433 -46.6388182-24.4795613 -47.929711700000006 -22.618325300000002 -45.3479247