Minificação de output de maneira simples com PHP

Olá pessoal.

Uma dica bem simples para quem está fazendo algum site em PHP (independente de Framework). A grande maioria dos frameworks possuem a feature de minificação da saída de HTML. Isso é muito útil pois melhora o tempo de carregamento do site/aplicação para os seus usuários.

Fiz este gist pra mostrar uma forma bem simples de como usar a minificação, caso não haja um suporte padrão.

https://gist.github.com/willmendesneto/7236329

Claro que esse Regex deve ser melhorado, mas a idéia seria basicamente esta. Existem também algumas configurações a serem feitas no seu servidor que já facilitam bastante, mas fica para um próximo post.

Até mais!

Testes no Codeigniter com CIUnit

Olá pessoal.

Para quem já tentou utilizar TDD (Test Development Driven) no Codeigniter percebeu que sofria horrores para conseguir. Para isso Tatsuya Fukata criou uma biblioteca, a CIUnit, e a deixou disponível no Github (https://github.com/fukata/CIUnit-for-CI2). Este post vai mostrar como é bem simples fazermos testes unitários utilizando este componente.

Seu acoplamento é bastante simples:

Github - Projeto CIUnit

Github – Projeto CIUnit

Faça o download do Codeigniter e descompacte-o no seu servidor local. Após isto faça o download do projeto CIUnit e insira os arquivos do projeto no diretório “application/third_party/” da sua aplicação;

Remova o conteúdo da pasta “tests” e crie o arquivo “phpunit.xml.dist” na raíz do projeto com este conteúdo (https://gist.github.com/willmendesneto/5005522).

Agora crie o arquivo  “VerificationTests.php” dentro da pasta tests e insira este conteúdo (https://gist.github.com/willmendesneto/5005595).

Passando por estas etapas, abra a linha de comando e insira os comandos:

cd pasta-do-seu-projeto/


phpunit --testdox

Dica: Caso esteja usando o phpunit via composer, você pode utilizar os comandos:

cd pasta-do-seu-projeto/


php vendor/phpunit/phpunit/composer/bin/phpunit --testdox

Pronto, se tudo deu certo você verá a mensagem de tudo ok na aplicação.

Obrigado e até mais

https://github.com/fukata/CIUnit-for-CI2

Codeigniter + Twig + Composer : Uma boa idéia

Olá a todos.

Em um projeto tive a necessidade de utilizar alguns recursos de um template engine e olhando alguns achei interessante trabalhar com o twig (http://twig.sensiolabs.org/).

Twig Template engine

Twig Template engine

Já existe uma biblioteca no Codeigniter para trabalhar com o Twig, o Codeigniter Twig (https://github.com/altrano/codeigniter-twig) que é de fácil acoplamento, basta fazer o download dos arquivos, inseri-los na aplicação e carregar no controller que vá usá-lo. Ele faz o processo de carregamento automático dos helpers inseridos no arquivo de autoload da aplicação.

application/libraries/Twig.php
Link do gist  : https://gist.github.com/4550897

application/config/twig.php
Link do gist : https://gist.github.com/4550897
Baixado os arquivos do projeto Codeigniter Twig no github e inseridos no projeto, vamos começar a integração Primeiro vamos inserir o composer na aplicação. Iremos criar a requisição do Twig no arquivos composer.json. Crie um arquivo composer.json na raíz do projeto com as informações:

composer.json
Link do gist : https://gist.github.com/4550979

Depois iremos inserir o código que vai chamar o arquivo de carregamento dos pacotes do composer no arquivo index.php na raíz do projeto.

No arquivo autoload.php (application/config/autoload.php) modifique o conteúdo do arquivo da linha 55 à 67 e insira a informação abaixo:

application/config/autoload.php
Link do gist : https://gist.github.com/4551017

O código do controller da aplicação:

application/controllers/welcome.php
Link do gist: https://gist.github.com/4550963

Agora os templates. O Twig tem algumas funções nativas que podem ser muito úteis. Criaremos 2 arquivos na pasta “application/views”:
  • template.html.twig – Template padrão da aplicação
  • index.html.twig – Arquivo com o conteúdo específico da página;
Como ficou o código das views:
template.html.twig
application/views/template.html.twig
index.html.twig

application/views/index.html.twig
Link do gist : https://gist.github.com/4551017

Agora uma observação:
Quando for utilizar algum helper que gere html (form_helper, por exemplo), utilize o método com o sufixo |raw
 Chamada da função form_open(); do helper
     {{ form_open("/login")|raw }}
ao invés de
     form_open("/login");
Link do Gist com o código dos arquivos utilizados no projeto:
Documentação do Twig:
Valeu e até mais!

Open source: criação do tema “twitter bootstrap” no Grocery CRUD

Olá pessoal.

A quem utiliza o scaffolding Grocery CRUD (http://www.grocerycrud.com/) nos projetos com o Codeigniter fiz uma colaboração no projeto criando um novo tema para ele com base no Twitter bootstrap (http://twitter.github.com/bootstrap/) pelo fato da grande absorção dele em grandes projetos e de todas as suas facilidades para interações, UX e outros aspectos.

Github do projeto

Github do projeto

Para quem quiser testar e/ou utilizá-lo em suas aplicações para verificar o seu uso, o projeto mais atual com o tema pode ser encontrado no repositório do próprio projeto no Github (https://github.com/scoumbourdis/grocery-crud).

Fica aqui a minha satisfação de poder participar do projeto e poder contribuir ao projeto do John Skoumbourdis (https://github.com/scoumbourdis) . Agradeço também ao John por me inserir na listagem dos colaboradores do projeto na página do projeto no link http://www.grocerycrud.com/documentation/credits!

Créditos no projeto Grocery CRUD

Créditos no projeto Grocery CRUD

Espero que vocês gostem do resultado, ainda estou aprimorando-o, então toda sugestão e crítica é sempre bem-vinda e acima de tudo todos podem colaborar na melhora do projeto!

Pretendo participar do novo projeto do grocery CRUD 2.0 que deve focar alguns outros aspectos como interoperabilidade atendendo a alguns PSR’s como o PSR-0 e o PSR-1, testes unitários, melhoras de performance, dentre outros para que possa ser utilizado em qualquer projeto PHP!

Obrigado e até mais!

Iniciativa PHP do jeito certo

Olá pessoal

Uma grande jogada para quem está iniciando no mundo PHP é dar uma olhada no site “PHP do jeito certo”.

php do jeito certo

php do jeito certo

Alguns (vários) desenvolvedores PHP se queixam de algunsm exemplos de documentação para estudo, exemplos, etc. Daí surgiu a idéia do site. E o melhor, como o projeto tem um repositório no Github quem estiver interessado pode colaborar com o projeto.

Valeu galera e até mais!

PHP do jeito certo (link): http://br.phptherightway.com/

Configurando o plugin PHPDocumentor do Sublime text 2 em ambiente Windows

Olá pessoal

Uma dica simples para configurar o PHPDocumentor no Sublime Text 2:

1. Instalando o PHPDocumentor

– Baixe o projeto via PYRUS/PEAR

PYRUS

php pyrus.phar install pear/PhpDocumentor

PEAR

pear install phpdoc/phpDocumentor-alpha

– Baixe o projeto via git

git clone https://raw.github.com/phpDocumentor/phpDocumentor2/develop/installer.php

– Baixe o projeto via composer

No arquivo composer.json insira

"require": "phpdocumentor/phpdocumentor": "dev-develop"

2. Acesse o arquivo install.php

php installer.php

3. Vá no Sublime Text 2 > Preferences > Packages Settings >phpDocumentor > Settings - User e insira o código

"executable_path": "php pasta-onde-está-o-php-documentor\bin\\phpdoc.php"

4. Faça o teste! Com o plugin “SideBarEnhancements” instalado, clique na pasta do projeto no sublime text com o botão direito  e escolha a opção phpDocumentor > Generate Documentation e pronto! Código de documentação gerada!

Espero ter ajudado.

Sublime text 2 – meu setup inicial

Olá pessoal.

Para quem já conhece o editor Sublime Text, tem real noção do seu poderio. Um editor muito rápido, versátil e que cabe no seu pendrive. Caso você não conheça, recomendo que leia este link. Não falarei sobre este tópico pelo fato deste post ter a idéia de ser mais “mão-na-massa”.

Antes da listagem uma configuração interessante que você pode implementar no seu editor é indo em PREFERENCES > SETTINGS-USER e insira est trecho de código:

{
"color_scheme": "Packages/Color Scheme - Default/Twilight.tmTheme",
"default_line_ending": "unix",
"ignored_packages":
[
"Vintage"
],
"trim_trailing_white_space_on_save": true
}

Este trecho de código deixa sua linha finalizadora padrão no formato UNIX (linha 2) e remove espaços em branco à direita automaticamente quando você salva o arquivo.

Caso esteja usando Linux (no meu caso específico o Ubuntu), logo após isso vá no menu: PREFERENCES > KEY BINDINGS – USER e insira este código:

[
{ "keys": ["ctrl+'"], "command": "show_panel", "args": {"panel": "console", "toggle": true} }
]

Agora sim vamos ao setup dos plugins que você deve ter no Sublime Text

1 – Gerenciador de pacotes

Este na verdade é o plugin inicial para todos os usuários do Sublime TextDepois do Sublime Text já instalado no seu computador, abra-o e clique no atalho ” CTRL+’ ” para que apareça a linha de comando do editor. insira o código contido neste link e reinicie o sublime para que ele reconheça o gerenciador de pacotes.

2 – Zen Coding

Plugin que aumenta a produtividade na criação de arquivos HTML/XHTML. Possui uma lista vasta de atributos.

3 – Jquery snippets pack

Snippet que incorpora um conjunto de snippets referentes ao Jquery.

4 – Prefixr

Essa é para quem curte algumas features do css3. Ele transforma os atributos css para formatar a compatibilidade com os outros browserz.

5 – Placeholders

Insere conteúdo temporário para testes. Muito bom para dinamizar o trabalho.

6 – Alignment

Alinhamento do curso em seleções múltiplas.

7 – Clipboar History

Mantém um histórico de trechos de códigos diversos que tenhamos copiado com o CTRL+C.

8 – SublimeREPL

Com ele você pode executar seu interpretador padrão dentro do próprio Sublime Text

9 – DetectSyntax

Este plugin detecta a sintaxe que está sendo escrita no editor de maneira automática.

10 – Nettuts + Fetch

Com este plugin você configura todos os seus repositórios, dividindo-os entre arquivos e pacotes, podendo inserir atalhos para eles. Muito prático para arquivos que você utiliza com certa frequência nos seus projetos, como jquery, frameworks específicos, etc. Ao inserir o atalho ele faz o download direto do diretório CDN, Github, etc que você cadastrou.

11 – SFTP

Esse é um dos mais simples e ao mesmo tempo um dos melhores plugins. Com ele você poderá fazer upload e download de arquivos, pastas ou até do projeto inteiro do seu servidor via FTP. Uma espécie de Filezilla incorporado.

12 – Bracket Highlighter

Ele marca de cor diferente o escopo de uma função, de um bloco lógico, loop, dentre outros que você esteja com o cursor.

13 – Nodejs

Snippet para trabalhar com Node.js no Sublime Text. REALMENTE necessário.

14 – DocBlockr

Monta um bloco de documentação de sua classe, com alguns formatos previamente cadastrados.

15 – PHPDoc

Com ele você poderá documentar métodos das classes muito mais rápida no formato PHPDoc.

16 – Codeigniter Snippets

Snippets do framework Codeigniter. Como utilizo ele em vários trabalhos, este snippet tem um lugar reservado em meus projetos.

17 – PHPUnit

Plugin que proporciona o suporte ao PHPUnit nativo no Sublite Text.

18 – Aditional PHP Snippets

Alguns snippets para quem desenvolve na pliguagem PHP.

19 – PHP Syntax Checker

Este plugin checa e avisa a linha que está com erros de sintaxe.

20 – SideBarGIT

Ele integra o GIT no Sublime Text via sidebar. Não conhece o GIT? Leia sobre o assunto aqui

Tem um vídeo legal do Zeno no youtube, onde ele demonstra o funcionamento do sublime text 2.

Lembrando que este são SOMENTE alguns dos plugins que este editor possui. Ele tem plugins diversos para Python, Ruby, C#, Jade, Coffescript, Frameworks diversos. Pelo fato do sublime ser altamente extensível, leve, prático e aceita colaboração de seus usuários, acredito que este seja só o início de uma ferramenta excelente. Apesar de pago, você pode usá-lo mesmo sem pagar nada, mas acho bastante válido o pagamento que na verdade é bastante razoável se vermos suas vantagens dentre os demais.

OBS: Todos os plugins são encontrados facilmente no link do Sublime Text Packages: http://wbond.net/sublime_packages/community

Obrigado e até mais.