Abrace um programador

Olá pessoal.

Início de ano e um momento descontração é sempre bom. Um vídeo que mudou a minha vida, apesar de ser meio antigo.

O vídeo aborda alguns pontos como:

  • Prazos absurdos;
  • Falha no levantamento de requisitos;
  • Projetos legados;
  • Pressões;

Indicado por Vinícius Torves: “Abrace um programador”

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/

Tablesorter: configurações e mapeamentos via classes css

Olá pessoal
Ao utilizar o plugin tablesorter, tive alguns problemas com ordenação de valores, datas e outros atributos. Acabei pesquisando e vi que não era o único.
Vi algumas soluções baseadas no plugin Jquery metadata, mas estava querendo evitar este overhead, já que posso trabalhar com configurações de classes a partir do próprio jquery.
Baseado em uma solução proposta no próprio stackoverflow (http://stackoverflow.com/questions/5672993/how-to-ignore-th-with-specific-class-name-in-tablesorter), acabei criando uma própria com os seletores.
Baixe o arquivo tablesorter no site do projeto
Abra o arquivo jquery.tablesorter.js e modifique:
– A variável “defaults” vai ficar com mais um atributo abaixo da chave debug : false
    debug: false,
noSorterClass: 'no-sorter'
– O método “checkHeaderMetadata” agora irá utilizar o valor da classe configurada para não inserir a coluna como “sortable”
function checkHeaderMetadata(cell, noSorterClass) {
if ((($.metadata) && ($(cell).metadata().sorter === false)) || $(cell).hasClass(noSorterClass)) {
return true;
};
return false;
}
E agora iremo modificar o método que utiliza o checkHeaderMetadata para que envie o valor da classe configurada. O método que o utiliza é o buildHeaders:
modifique o conteúdo
if (checkHeaderMetadata(this) || checkHeaderOptions(table, index)) this.sortDisabled = true;
por este

if (checkHeaderMetadata(this, table.config.noSorterClass) || checkHeaderOptions(table, index))    this.sortDisabled = true;
Agora em um arquivo javascript insira as configurações do tablesorter. Utilizei as configurações padrão do próprio plugin Tablesorter, então só vamos inserir o seguinte código:

$(function() {
function setupTablesorter() {

$.tablesorter.addParser({
id: "money",
is: function(s) {
return true;
},
format: function(s) {
return $.tablesorter.formatFloat(s.replace(/ /, '').replace('R$', '').replace(/\./, '').replace(/\,/, '.').replace(new RegExp(/[^0-9,]/g),""));
},
type: "numeric"
});


var classHeaders = {
'text': '.sorter-text',
'digit': '.sorter-digit',
'currency': '.sorter-currency',
'ipAddress': '.sorter-ipAddress',
'url': '.sorter-url',
'isoDate': '.sorter-isoDate',
'usLongDate': '.sorter-usLongDate',
'shortDate': '.sorter-shortDate',
'time': '.sorter-time',
'metadata': '.sorter-metadata',
'digit': '.sorter-digit',
'money': '.sorter-money',
};
        var tableHeaders = '', separator;
        $('.tablesorter').each(function (i, e) {
            var self = $(this);
$.each(classHeaders, function(key, value){
self.find(key).each(function (pos) {
                    if(separator == undefined)
separator = ',';
                    tableHeaders += separator +' '+ $(this).index()+' : { sorter: "'+key+'"}';
});
});
            $(this).tablesorter({ widgets: ['zebra'], dateFormat: 'uk', noSorterClass: 'no-sorter', headers: tableHeaders });
});
}
    if($('.tablesorter')[0])
setupTablesorter();
});
E agora é cria a tabela e inserir a classe “tablesorter” e as classes referentes a cada configuração em suas respectivas tags “th” e pronto! Está feito!Os arquivos estão disponíveis no meu Github para quem quiser porpôr melhores soluções. e farei um gist com eles.
Obrigado a todos e até mais!

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.

Curso MongoDB da 10Gen

Olá pessoal. Estava há algum tempo sem postar nada e decidi passar uma impressão de um curso que estou fazendo atualmente.

A empresa 10gen que desenvolve e fornece suporte ao MongoDB , disponibilizou o curso (gratuito, mas excelente diga-se de passagem) do Banco de dados não relacional (NoSQL) MongoDB, tendo 2 vertentes:

– “10gen: M101 MongoDB for Developers“, que aborda a utilização do MongoDB a nível de desenvolvimento;

– “10gen: M101 MongoDB for DBAs“, que aborda a utilização do MongoDB a nível de administradores de Banco de dados;

O nível do curso está REALMENTE acima do esperado, abordando várias vertentes no âmbito do mongodb em específico. Em janeiro vai iniciar uma nova turma e recomendo a todos que se inscrevam e se empenhem no curso, pois além do conhecimento, há uma possibilidade (altíssima a meu ver) de você utilizar este banco em específico em futuros trabalhos pela sia versatilidade e desempenho.

A quem tiver interesse, segue o link do curso:

https://education.10gen.com/dashboard

Mini-curso: sublime text + git + github

Olá pessoal.

Em uma iniciativa com um grupo de amigos montamos um grupo de estudos onde todos que participam trocarão conhecimentos. A coisa está fluindo divinamente com vários outros conteúdos como web semântica, ferramentas para gerenciamento de projetos, dentre outros.

Nesta sexta-feira tive a satisfação de ministrar um mini-curso sobre o editor sublime text + git + github, demonstrando a instalação do sublime text com a instalação do plugin de gerenciamento de pacotes, atalhos importantes do editor, criação de snippets e um setup inicial de trabalho com alguns plugins já instalados, mostrando as facilidades que cada um proporciona para o desenvolvimento e como instalálos diretamente via github e pelo plugin de gerenciador de pacotes.

Falei também sobre o conceito de versionamento distribuído do git e sua integração com o github, criando a chave ssh  e cadastrando no perfil do github a chave gerada, disponibilizando um repositório para um projeto fictício e enviando alguns arquivos para o github, dentre outras coisas.

Segue o slide da apresentação.

Obrigado pessoal e até mais!

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.

Git + Github : Versionamento nunca foi tão simples!

Olá.

Tive algumas dificuldades em alguns projetos no quesito versionamento: Ou o sistema de versionamento não atendia as espectativas do grupo de desenvolvimento, ou o versionamento ocorria de forma precária, ou ele nem mesmo existia.

Pesquisando outras formas de versionamento que encontrei o GIT, uma ferramenta de versionamento de forma distribuída interessante, apesar do trocadilho com o nome (“git” em inglês britânico é uma gíria referente à “estúpido”) grandes projetos estão utilizando esta ferramenta. Juntamente com o Github, que foi criado com o objetivo de atender o versionamento dos projetos que usam o controle de versionamento do GIT, acabou tornando-se uma importante ferramenta de ajuda colaborativa.

Mas agora nos perguntamos: “Mas como é que isto funciona”? Pois bem, vamos pôr a mão na massa agora:

Primeiro vamos no site do git http://git-scm.com/download e fazemos o download do software (faça visando o seu sistema operacional.). No meu caso fiz o download do software para o Windows:

Site do projeto GIT

Site do projeto GIT

Com o download feito iremos instalar o git no computador. Utilizaremos a instalação padrão dele. Existe um roteiro inicial para a instalação disponível no link: http://help.github.com/win-set-up-git/

Este link passa o conteúdo de forma mastigada, então não entrarei em detalhes sobre este procedimento.

Agora em sua conta no github você vai criar um diretório com o nome de sua escolha ( EX: “diretorio-teste” ). Será nele que enviaremos o conteúdo do nosso projeto.

Criando diretório

Vamos abrir o GIT e vamos digitar os comandos:

cd “C:\Users\O-seu-usuario-no-computador\Desktop”

mkdir “diretorio-teste”

cd “diretorio-teste”

git init

O comando mkdir foi utilizado para criarmos a pasta com o nome “diretorio-teste” e o comando git init foi usado para iniciarmos o repositório GIT. Pronto! Iniciamos o nosso projeto. A partir daqui iremos fazer todas as modificações necessárias.

Basta clicar com o botão direito do mouse dentro da pasta e aparecerá a opção “Git Init Here” (usuários Windows)

Iniciando versionamento com 'Git init Here'

Iniciando versionamento com ‘Git init Here’

Após isto você pode clicar clicar com o botão direito na opção ‘git gui’, que mostrará a visualização das alterações feitas no seu projeto.

Inicializando o Git GUI

Inicializando o Git GUI

Segue um vídeo que encontrei no youtube feito pelo ‘vedovelli‘ com o título ‘ Instalação do GIT no Windows 7 e primeiros passos no GitHub ‘

Agora segue um link em português que explica algumas operações básicas sobre o GIT:

http://rogerdudler.github.com/git-guide/index.pt_BR.html

Valeu galera e até mais!

Plugin Jquery Text Resize

Inicialmente agradeço a todos que colaboraram diretamente ou indiretamente neste projeto, especialmente a Thiago Teles, colaborador direto para a criação do plugin.

O plugin  “jquery.text.resize.js” é um plugin javascript que manipula o tamanho de fonte do texto, juntamente com algumas outras opções como valor da variação da fonte, persistência da fonte com a utilização de COOKIE, limitar a quantidade de clicks para incremento/decremento da fonte, dentre outras opções.

A quem interessar o projeto “Jquery Text Resize” está disponibilizado para download no Github ou na própria página do projeto:

Github: https://github.com/willmendesneto/Jquery-Text-Resize

Página do projeto: http://willmendesneto.github.com/Jquery-Text-Resize.

Introdução ao MongoDB

Olá pessoal.

Estava pesquisando alguns bancos de dados de alto desempenho e me deparei com este artigo sobre “NoSQL” no site Imasters.

http://imasters.com.br/artigo/17043/banco-de-dados/nosql-voce-realmente-sabe-do-que-estamos-falando

Achei algo extremanete interessante, baseado até mesmo nas empresas que o utilizam.e Decidi me aprofundar um pouco mais no assunto.

A quem interessar segue uma pequena introdução do que seria e de como trabalhar com este banco de dados. No próprio site do MongoDB há uma vasta documentação sobre o assunto, drivers para vários Frameworks, independente da linguagem de programação utilizada no projeto.

Saiba mais:

Banco de dados MongoDB

Logo referente ao Banco de dados MongoDB

MongoDB: http://pt.wiki.mongodb.org/display/DOCS/Home

Introdução ao MongoDB: http://www.ibm.com/developerworks/br/offers/lp/demos/summary/j-jmongodb.html

Utilizando o MongoDB sem instalação via WEB: http://try.mongodb.org/