Para quem não conhece o GIT
é um ótimo sistema de controle de versão. Algumas pessoas não estão muito acostumadas a trabalhar com ele e procuram soluções gráficas, mas a melhor opção é sem dúvida o bom e velho terminal. Por ser um pouco complicado no início, mas muito simples depois que se acostuma, eu vou passar algumas dicas de como configura-lo tornando assim mais fácil ainda.
A configuração geral do GIT fica dentro do arquivo .gitconfig no diretório home do seu usuário. Existem duas maneiras de alterar estas configurações ou editando este arquivo, porém mantendo o padrão para cada configuração (o que não é muito simples) ou utilizando comando do próprio GIT que fazem estas alterações por você. Este comando é o "git config" que recomendo sempre utilizar o argumento opcional --global a fim de manter a mesma configuração para todos os seus projetos.
Editor
Quando você for fazer alguma iteração que necessite de entrada de texto, como um commit onde você deve passar uma descrição sobre o que foi alterado, o editor que você configurar será aberto para que você possa escrever esta mensagem dentro deste editor. Veja o exemplo abaixo, atente para o -w (wait) após o nome do editor, ele é utilizado para que o GIT espere até que este arquivo temporário que é aberto seja fechado.
git config --global core.editor "mate -w"
Alias
Alguns já acostumados com o SVN acabam se queixando de ter que escrever o nome do comando inteiro, visto que no SVN existem alias automático para este, porém no GIT você pode criar o atalho que desejas, o código é auto explicativo então veja o exemplo.
Ter os textos principais da saída de um comando colorido facilita a visualização do mesmo então o GIT te da esta opção. Abaixo a lista de comandos que aceitam cores, e você pode utilizar "true" ou "auto" para ligar ou então "false" ou "never" para desligar.
git config --global color.branch auto
git config --global color.diff auto
git config --global color.grep auto
git config --global color.interactive auto
git config --global color.status auto
Se preferir ao invés de utilizar todas estas configurações acima você pode usar apenas UI (user interface) que representa todas as demais.
git config --global color.ui auto
Merge
Quando ocorrem conflitos com um arquivo que o sistema não pode mesclar as alterações automaticamente você pode utilizar ferramentas externas para facilitar este trabalho. Para definir qual deve ser esta ferramenta utilize este comando abaixo.
git config --global merge.tool "opendiff"
User
Ter seus dados configurado no GIT é importante e facilita bastante quando você precisa por exemplo identificar o usuário que fez alguma alteração. Abaixo a forma como definir as configurações básicas de um usuário.
O #gdd começou com uma apresentação sobre HTML 5, logo depois tivemos Alex Dias do Google Brasil e Patrick Chanezon falando sobre as novidades do google, que de novidade não tinha nada, por sinal estavam até um pouco desatualizados como você pode ver no gráfico abaixo onde os navegadores da apple estão em versões antes da WWD09.
Google Wave – Visão geral
Foi praticamente a mesma apresentação do produto feita a um mês atras com a participação da própria Stephanie Hannon que desta vez apresentou o produto com o Torsten Nelson do Google Brasil, pude ver que o projeto está amadurecendo pois tivemos menos bug do que na primeira apresentação, porém ainda algumas instabilidades. O que chamou a atenção foram os robos, que foi explicado com mais detalhes na última palestra.
É até engraçado ver o Google desenvolvendo algo que tende a acabar com um dos maiores produtos deles o Gmail.
Almoço
Foi distribuído para todos os participantes um lanche (½ vegetariano, ½ frango, uma maçã, uma barra de cereal e 2 bombons) devido a falta de estrutura para alimentação o pessoal acabou comendo sentado no chão como você pode ver na foto abaixo.
Criando Aplicações Open Social rápidas e escaláveis
Patrick Chanezon falou sobre assuntos básicos de como escalar uma aplicação Open Social (que na verdade serve para todos os tipos de aplicação) usando o orkut como exemplo, deu muita importância para “latência”, “javascript minification” e “header cache”.
Acredito que a maioria das coisas ditas já é de conhecimento de todos os desenvolveres, o que mais se destaca é a técnica de image-replacement com apenas uma imagem (para layout do site) e a troca da posição do background, reduzindo assim para apenas uma requisição de imagem.
Procesamento Offline no App Engine: Uma perspectiva do futuro.
Michel Repass falou sobre App Engine. Realmente o assunto não me interessou muito, afinal tudo foi muito foca em plataforma JAVA da qual não tenho muito conhecimento. Fico devendo essa.
Pelo que parece o pessoal não está muito interessado em suportar outra linguagem além de Python e Java.
Google e o código aberto.
Chris DiBona falou sobre os projetos de código fonte aberto do qual o Google participa e realmente não são poucos. Foi um apanhado geral sobre a participação e um incentivo a todos participarem também. Mas óbvio que os principais produto não terão seu código fonte aberto como por exemplo o Google Wave que é a grande sensação do momento.
Google Wave Client: Powered by GWT. Como eu aprendi a parar de me preocupar e amar o GWT
Luke Macpherson falou sobre o desenvolvimento do Google Wave e principalmente sobre GWT (Google Web Toolkit) ferramenta do Google para escrever código Javascript em JAVA. Realmente muito interessante a ferramenta e o poder da mesma. Porém o meu gosto particular é algo mais simples como escrever Javascript com auxílio de bibliotecas como jQuery. E onde for possível escrever código Ruby. Quando perguntaram ao Luke sobre esta biblioteca que citei acima ele disse que o GWT não vai de encontro com estas e podem ser usadas na mesma aplicação.
Chamou a minha atenção quando foi explicado que se você pretendo criar um robô para o Wave basicamente você precisa da biblioteca javascript deles e mais nada. Para construir robôs mais avançados você pode utilizar Java ou Python ou até mesmo JSON.
Estendendo o Google Wave: Construindo um Exército de Robôs
Seth Covitz falou sobre os robôs, que é como são chamado os “pluguins” que interagem com o Wave. Entre tudo que foi dito vou explicar alguns do quais eu vi exemplos ao vivo.
Twitter: uma forma fácil para twittar, o que pode desbancar grande parte dos softwares desktop, principalmente pela facilidade de respostas e acompanhamento.
Auto-correção: robô que faz a auto-correção do seu texto em tempo real, não buscando apenas no dicionário mas no contexto do parágrafo também, além de estar disponível em outras línguas como o português do Brasil.
Links: Escreva um link e um menu com a opção para trazer o conteúdo aparecerá, você pode por exemplo importar o video se o link for de um video ou mostrar uma imagem se for link de uma imagem.
Tradutor: Lógico como não podia faltar um robô para tradução simultânea para as mensagens, que você pode observar a tradução das palavras mudando enquanto a frase vai se formando e criando um contexto.
Resumo
O evento foi bom mas podia ser melhor, principalmente pela falta de café durante o evento. Infelizmente grande parte do conteúdo já estava disponível na web, evitando assim o choque do primeiro contato com as novidades. Mas algumas coisas eram novidade e quem esteve presente pode se aprofundar ainda mais nos assuntos do Google além de receber uma conta do Google Wave.
Agora é só esperar o usuário e senha do Wave chegar para fazer os testes.
Mais uma novidade para o blog. Desta vez foi a versão para o iPhone. Como o blog está utilizando “page_cache” não quis mudar e fazer uma versão só pra iPhone então fiz o mais simples, apenas trabalhei com javascript e css.
A primeira coisa que eu fiz foi identificar se o usuário estava vindo de um iPod ou iPhone procurando pelas palavras “Safari” e “Mobile” como sugere a própria Apple.
Feito isso criei uma condição e utilizando o plugin Include do Alexandre Magno para adicionar um css dinamicamente e sob a condição a cima, o resultado ficou assim.
if (navigator.userAgent.match(/(Mobile\/.+Safari)/i)){
$.include("/stylesheets/iPod.css");
}
Depois o único trabalho foi sobrescrever algumas propriedades css no arquivo iPod.css para que a versão do mesmo ficasse simples e fácil pra ler nos aparelhos da maçã. Abaixo uma imagem para mostrar como ficou.
Fiquei um certo tempo sem postar nada por que estava reformulando o blog, estudando métodos de SEO e principalmente Ruby on Rails. Coloquei o novo no ar já tem alguns dias e procurei manter o mesmo padrão de antes, porém simplificando ao máximo o que podia, visto que agora deixei de usar o Mephisto e passei a usar uma aplicação Rails simples com pouco código e muito teste. Peço desculpas aos quem assinam o meu feed por que infelizmente foi atualizado, com isso todos retornaram a ser itens não lidos.
Abaixo você pode ver um vídeo que explica como usar e navegar no blog e outras formas para encontrar o conteúdo desejado.
Esta iniciativa me ajudou com os estudos sobre código, acessibilidade e principalmente sobre SEO, se você tem um site e quer ter sucesso não pode esquecer destes três itens que juntos representam aproximadamente 50% do sucesso os demais 50% é representado pelo conteúdo, que para este já estou com planos, mas espero que vocês me mandem sugestões de assuntos que gostariam de ver aqui.
Estou com alguns projetos que utilizam paperclip para fazer o upload e gerar um thumnail de um arquivo. Mas o grande problema que os clientes sempre acabam reclamando é quando eles fazem o upload de uma foto na vertical o crop automático acaba cortando o rosto das pessoas.
Então o @sadow11 dando uma analisada no paperclip acabou alterando o plugin para que quando for fazer o crop usar sempre a parte de cima da imagem. O resultado ficou bom e resolveu 90% dos problemas. Com uma linha de código tivemos um cliente feliz.
Caso alguém tenha interesse, ai vai o método que alteramos:
Se decidir usar em um projeto onde já tenha imagens geradas, basta rodar o refresh do paperclip para que ele refaça todos os crops agora com a parte superior das imagens.