Adding and removing remote branches

Today I’m going to share another git’s trick to easily set up a remote branch and how to delete them from the remote branch.

Frequently we have to work parallelly to master branch on an exciting feature of your product, right? More often then this is sharing it so your co-workers can contribute and make it even more exciting.

Adding remote branches

The problem is that every time that you create a new branch it’s created locally and you can’t just push your changes because git doesn’t know where to push it. Git stores your branch’s configuration on your .git/config file like this:

[branch "ftw_feature"]
  remote =
  merge =

You can solve this problem manually, every goddamn time setting branch’s remote configurations in .git/config file or if you’re working with git’s version 1.7+ you can use the –set-upstream flag instead.

git branch --set-upstream ftw_feature origin/ftw_feature

Now, just like magic your .git/config file should look like this:

[branch "ftw_feature"]
  remote = origin
  merge = refs/heads/ftw_feature

Or if your you’re sadly running under 1.7 git’s version you can still do a better approach than manually (or not too verbose for me):

git config branch.ftw_feature.remote origin
git config branch.ftw_feature.merge refs/heads/ftw_feature

Removing remote branches

If somehow you screw things up and have to clean the mess before anyone notices, just type:

git push origin :ftw_feature

Or even more intuitive:

git push origin --delete ftw_feature

That does the job.


Posts Relacionados:

  • Nenhum post relacionado!

Detectando Requisições Ajax com PHP

É bem comum trabalharmos com requisições Ajax que batem em um servidor rodando alguma aplicação PHP. O problema é que as vezes utilizamos o mesmo método para atender tanto a arquitetura do seu sistema quanto as requisições que são feitas via Ajax.

Por exemplo: Temos um objeto PHP que tem como objetivo recuperar todas as notícias cadastradas na base de dados.

<?php
class MinhaClasse {
    public function getAllNews(){
        // implementação para receber as notícias
        
        return $news;
    }
}
?>

Como eu faço para que este mesmo método supra as minhas requisições Ajax sem que eu tenha que criar outro?

É bem comum vermos por aí programadores criando dois objetos diferentes para atender as duas necessidades (aplicação e Ajax). Sendo que a única diferença entre eles é como o método retorna.

Podemos utilizar o mesmo método e fazer com que retorne de forma diferente dependendo de como eu estou chamando o método.

Vamos criar um método chamado isAjax():

public function isAjax(){
        return (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
    }

Funciona de forma simples: Sempre que uma requsição Ajax é disparada um header é setado nesta requisição chamada HTTP_X_REQUESTED_WITH e o valor dela é setado como XMLHttpRequest.

Desta forma a nossa classe ficaria assim:

<?php
class MinhaClasse {
    public function isAjax(){
        return (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
    }
    public function getAllNews(){
        // implementação para receber as notícias
        // ..
        
        // se o metodo for invocado via Ajax, retorne um JSON
        if($this->isAjax()) {
            echo json_encode($news);
        } else {
            return $news;
        }

    }
}
?>

Veja que se a requisição for feita via Ajax o método dar um echo JSON de $news. Se o método for invocado de qualquer outra forma ele irá retornar normalmente.

É isso. Post rápido, pá pum :D

[]‘s
Igor.


Posts Relacionados:

  • Nenhum post relacionado!

Redes Sociais Aplicada no Desenvolvimento de Aplicações Web

Com a Internet cada vez mais presente na vida de todos, as redes sociais estão ganhando força (muita força). A influência de uma marca nas redes sociais já pode ser convertida em lucro e a grande maioria das empresas já perceberam isso. Essas redes têm sido alvo de muitas empresas para fidelizar e conquistar novos clientes através de ações geniais e muito criativas.

Assim como qualquer outra profissão, as coisas mudam. As tendências mudam. As metodologias mudam. As tecnologias mudam. Tudo muda. Inclusive os desejos e prioridades de nossos clientes. Atualmente as empresas querem estar cada vez mais presentes na vida de cada um de seus clientes. FacebookTwitterOrkutYouTube, etc.. está tudo muito comum e nós precisamos aprender a interagir com estas comunidades para poder dar possibilidade ao seu cliente e potencializar a possibilidade de conversão.

Se você não está familiarizado com o termo “conversão”, podemos dizer que conversão é quando você anuncia e este anúncio é clicado. Isso é chamado de conversão.

O motivo para eu estar aqui hoje, falando sobre redes sociais para vocês, é para dar um puxão de orelha nos profissionais que ainda não estão dando a mínima para este novo (nem tanto assim) conceito de interação. As redes sociais são mais um leque de aplicações que surgiram com a web 2.0. Neste boom, o conceito de interação foi explorado em uma escala muito maior. Junto com todas as inovações e as modificações na forma como interagimos com os sites e aplicativos web hoje, a web 2.0 trouxe o que chamamos hoje de redes sociais.

O meu foco com este post é evangelizar. É fazer com que após você ter lido este post você comece a criar já pensando na integração com as redes sociais. Não faz ideia de como?

Vou te dar algumas ideias:

  • Já pensou que nas notícias do seu site poderia ter a possibilidade dos usuários comentarem nas notícias e replicarem o seu comentário para o Twitter?
  • Os comentários estão protegidos por login? Use o usuário do Twitter do seu visitante para possibilitar mais uma alternativa de autenticação.
  • Upload de vídeos? Dê uma folga para o seu data storage e faça o upload direto para o YouTube e busque as informações através da API.
  • Quer fazer transmissão ao vivo para os seus visitantes? Utilize toda a interação que ferramentas como o Twitcam oferecem para você.
  • Crie aplicativos para Orkut, Facebook e Smarthphones. Os seus usuários poderão ter um nível de interação muito maior e a experiência deles será muito mais rica.
  • Dê a possibilidade do usuário divulgar suas notícias, fotos, albuns e vídeos através das redes sociais que eles participam.
  • Crie aplicações onde o seu usuário possa acompanhar as atualizações das suas redes sociais através da aplicação da sua empresa ou start-up.

Essa lista pode crescer muito ainda. O importante é você ter a criatividade e começar a incluir as redes sociais no planejamento do novo produto ou site da sua empresa ou cliente.

[]‘s
Igor.


Posts Relacionados:

  • Nenhum post relacionado!

Feliz Dia Do Programador!

Esta é uma data nerd especial!

O Dia do Programador (em russo: День программиста) é um feriado profissional oficial na Rússia, celebrado no 256º dia do ano (255º dia, se 1 de janeiro for considerado o dia 0). O número 256 (28) foi escolhido para esta data porque 256 é o número de valores distintos que podem ser representados com um byte de oito bits, um número bem conhecido entre os programadores.

Além disso, ’256′ em hexadecimal é ’100′ (’0×100′), e é a maior potência de 2 abaixo de 365 (o número de dias em um ano). Nos anos bissextos, a data comemorativa é 12 de setembro (13 de setembro em outros anos).

http://pt.wikipedia.org/wiki/Dia_do_programador
Parabéns para nós!

[]‘s
Igor.


Posts Relacionados:

  • Nenhum post relacionado!

Torne-se excelente.

Olá pessoal!

Sem muito tempo para postar. Me deparei com um link que estava perdido aqui no meio das minhas coisas que não entendo como não divulguei ele aqui para vocês. O texto é excelente. Fala muito sobre o nosso trabalho e sobre como podemos conduzir nossas vidas. Se você é um profissional ou quer se tornar um da área de Internet, você não pode deixar de ler o que vem a seguir:

By Klaus Wuestefeld

1) Torne-se excelente.

Seja realmente bom em alguma coisa. Não fique só choramingando ou
querendo progredir às custas dos outros. Não pense q pq vc sentou 4
anos numa faculdade ouvindo um professor falar sobre software q vc
sabe alguma coisa. Jogador de futebol não aprende a jogar bola tendo
aula. Ele pratica. Instrumentistas geniais nao aprendem a tocar tendo
aula. Eles praticam. Pratique. Chegue em casa depois do trabalho e da
aula e pratique. No final de semana, pratique.

Crie seu próprio virus, seu proprio jogo, seu proprio SO, seu proprio
gerenciador de janelas, seu proprio webserver, sua propria VM, qq
coisa. Varias coisas.

Nao precisa ser só programacao. Pode ser networking, vendas, etc. Só
precisa ser bom mesmo. Tenha paixão pela coisa.

As melhores praticas do mercado sao polinizadas primeiro nos projetos
de software livre. Aprenda com eles.

Discípulo, Viajante, Mestre: Primeiro seja um discipulo, tenha mestres
locais, aprenda alguma coisa com alguem realmente bom, qq estilo.
Depois viaje, encontre outros mestres e aprenda o estilo deles. Por
fim, tenha o seu estilo, tenha discípulos, seja um mestre.

Vou fazer o curso da Mary Poppendieck em SP semana q vem e qdo tiver o
curso de Scrumban do Alisson e do Rodrigo quero fazer tbem.

"Torne-se excelente" tbem pode ser chamado de "Melhoria Continua" ou "Learning".

2) Não seja deslumbrado.

Desenvolvimento de software é a mesma coisa há 60 anos: modelo
imperativo. Há 30 anos: orientação a objetos. Bancos de dados
relacionais: 30 anos. ("Web", por exemplo, não é uma tecnologia ou um
paradigma. É meramente um conjunto de restrições sobre como
desenvolver e distribuir seu software).

Não corra atras da ultima buzzword do mercado. Busque a essência, os
fundamentos.

Busque na wikipédia e grokke: determinismo, complexidade de algoritmos
"O()", problema de parada de turing. Pronto, pode largar a faculdade.
Falando sério.

Trabalhe com software livre. Não dê ouvidos a grandes empresas,
grandes instituições ou grandes nomes só pq são grandes.

Vc acha q vai aprender mais, ter mais networking e mais chance de
alocação no mercado trabalhando em par comigo no Sneer por um ano, 8h
por semana, ou passando 4 anos na faculdade, 20h por semana, pagando
sei la qto por mes?

Vc acha q vai aprender mais trabalhando em par com o Bamboo 6 meses na
linguagem boo e na engine do Unity ou fazendo um ano de pós em "a
buzzword da moda"?

"Nao seja deslumbrado" tbem é conhecido como "Coolness".

3) Mantenha-se Móvel.

Com a demanda q temos hoje no mercado, se vc é desenvolvedor de
software e n consegue negociar um contrato com uma empresa onde vc é
pago por hora e pode trabalhar qtas horas quiser com um minimo de meio
periodo, vc precisa rever a sua vida.

É melhor ter dois empregos de meio-periodo q um de periodo integral,
pq vc pode largar um deles a qq momento.

Vc nunca vai conseguir nada melhor se nao tiver tempo, se nao tiver
disponibilidade pra pegar algo melhor qdo aparecer.

Vc sustenta seus pais e 7 irmaos? Nao. Entao para de ser ganancioso e
medroso no curto prazo, para de pagar facu, mestrado, pós, MBA,
sei-la-o-q e vai aprender e empreender.

Trabalhe remoto. Não é o mais fácil, mas é perfeitamente possível.

Não fique reclamando q está trabalhando demais. Aumente seu preço e
trabalhe menos.

4) Emparceire-se Promiscuamente.

Participe de dojos, de congressos, de projetos de software livre.
Tenha amigos, colegas, conhecidos. Seja conhecido. Nao faça ruído em
seis  projetos e doze fóruns. Ajude de verdade em um ou dois projetos
de cada vez. Ao longo do tempo, vc terá ajudado em varios projetos,
trabalhado em varias empresas.

5) Mentalidade de Abundância.

Ajude seus amigos sem cobrar (a "camaradagem" do Vinícius). Dê
palestras gratuitas. Cursos gratuitos. Participe de projetos de
software livre.

Pare as vezes uma tarde pra receber um amigo seu e explicar seu
projeto. Vá visitar seus amigos nos projetos deles. Viaje com algum
amigo seu pra visitar um cliente dele, só pra conversar e fazer
companhia.

Vc tem um espaço onde dá cursos? É uma Aspercom, Caelum da vida? Chama
os brothers p dar curso. Porra, bola um modelo em q as pessoas podem
se inscrever para cursos variados, pagando um sinal, e mantém tipo uma
agenda pre-combinada: "Será numa terça e quinta a noite, avisadas com
duas semanas de antecedencia". Se rolar, beleza, se depois de meses
nao der quorum, devolve o sinal. Pode ser curso de Prevayler, de
Kanban, de Scrum, de Lean, de Comp Soberana, de Restfulie, de
Cucumber, de Rails, de Teste Automatizado Mega-Avançado, qq coisa.

Chame amigos seus pra dar curso em dupla com vc. Divida clientes.
Divida projetos, mesmo q nao precise de ajuda.

Dizia o pai de um brother meu de infância: "Tudo q custa dinheiro é barato."

6) Busque modelos de custo zero.

Trabalhe em coisas q tem custo administrativo/burocratico/manutencao
zero. Por menos ganho q tragam, depois de prontas, estarao tendo uma
relação custo/beneficio infinitamente vantajosa.

7) Ganhe notoriedade.

Faça coisas massa. Participe de projetos de software livre. Dê
palestras gratuitas. Promova eventos (dojos, debates, grupos de
usuarios, etc).

By Dairton Bassi:

8 - Não tenha medo!

Meta a cara. Arrisque empreender. Arrisque inovar. O que você tem a perder? 
No máximo um emprego, mas isso pode ser revertido facilmente em um mercado 
aquecido como o atual. O pior que pode acontecer é não dar certo. Mesmo assim 
você terá aprendido muito mais do que batendo cartão.
Saia da zona de conforto. Se o seu trabalho estiver fácil e sob controle, 
isso significa que ele não está mais agregando para a sua evolução técnica e pessoal. 

Não desperdice a chance de trocar de função se a nova oportunidade 
for mais desafiadora. Isso fará você crescer tecnicamente e o preparará 
para desafios maiores ainda. Conhecer pessoas novas é tão importante 
quanto manter-se em contato com código.

Não se detenha por insegurança ou pela sensação de despreparo. 
Como você acha que vai ganhar experiência em alguma coisa se sempre adiá-la?

Posts Relacionados:

  • Nenhum post relacionado!

Mais um Zend Certified Engineer

Mais uma etapa da vida concluída. No dia 19 de julho, ao meio dia, eu me tornei mais um PHP5 Zend Certified Engineer. Não vou te enganar não, não foi fácil. A prova tem muita pegadinha o inglês da prova é bem tecnico e você precisa de muita calma e paciência para fazer a prova.

Após “aquele” cagaço de clicar em “Finish Exam”, eu fechei os olhos, contei até 10. Ao abrir os olhos, vejo a notícia no monitor:

CONGRATULATIONS! YOU’RE NOW A PHP5 ZEND CERTIFIED ENGINEER.

#nerdpride. Enfim, acho que vocês já estão de saco cheio de tanto que eu falo desta certificação aqui no blog. O post é só para comunicar que eu consegui. Afinal, começou!, termina!. Muita gente ficou torcendo por mim deste o começo e nada mais justo do que vir até aqui e anunciar a conquista da mesma forma que eu anunciei a luta.

Obrigado à todos os que me ajudaram nos tempos de estudo e todos os que torceram por mim.

:D Até o próximo post :D


Posts Relacionados:

jGallery – A jQuery Plugin for Image Gallery’s

Olá Pessoal!

Mais um projeto pessoal. Com a oportunidade de um novo trabalho surgiu o jGallery. Um cliente me pediu um plugin parecido com o Lightbox, porém, ele queria que as fotos aparecessem logo abaixo, como uma galeria de fotos onde o usuário pudesse navegar entre as fotos sem sair da famosa “lightbox”. A partir desta necessidade surgiu o jGallery. Um plugin feito em jQuery para exibir de forma elegante uma galeria de fotos.

Características

  • Atalhos de teclado.
  • Se a imagem estourar a área útil do navegador a mesma é redimencionada de forma proporcional.
  • A galeria sempre se ajusta a sua resolução, inclusive a imagem (caso estoure a área útil).
  • Efeitos de transição.
  • Pre-loading de imagem.
  • Interface intuitiva e fácil de utilizar.
  • Compatibilidade com Internet Explorer, Chrome, Safari, Firefox e Opera (foi os que eu testei).

Código-Fonte

http://github.com/igorescobar/jGallery

Demo

http://igorescobar.com/projects/jGallery/

Sugestões

blog [at] igorescobar [dot] com


Posts Relacionados:

Falta pouco para a ZCE

Olá pessoal, este é um post de muita alegria (hehe).

Faz 4 semanas que eu estou na luta para me tornar um Zend Certified Engineer. Dos 10 simulados que eu comprei no zend shop este é o resultado no meu quinto simulado. Confesso que no começo apanhei um pouco. Tem muita coisa que o exame cobra que é decoreba. Só o dia-a-dia com PHP para te ensinar certas coisas.

No meu quinto simulado esta é a primeira vez que eu tiro excellent em todos os tópicos do exame. Agradeço a todos os que me ajudaram nesta fase de estudo, principalmente Fernando Mantoan, Felipe Ribeiro e Jaydson Gomes. - Vocês são foda!

Vou divulgar aqui para vocês os materiais que me ajudaram para a prova da ZCE:

  1. ZEND PHP5 Certification Study Guide (PDF)
  2. Passing the Zend php 5 certification exam
  3. Strings And Regular Expressions
  4. Streams And Network
  5. XML & Web Service
  6. Web Programming & Web Features
  7. Database & SQL
  8. Security
  9. PHP 4 & PHP 5
  10. Object Oriented Programming in PHP 5
  11. Object Oriented Programming: Design & Theory
  12. Zend PHP5 certification Exam study review 10: Supplementary I
  13. Zend PHP5 certification Exam study review 10: Supplementary II
  14. Zend PHP5 certification Exam study review 10: Supplementary III
  15. php.net
  16. Google.com

Posts Relacionados:

Zend Certified Engineer, Vamos?

Arrumei dinheiro. Tomei vergonha na cara. Certificações é sempre um assunto que gera bastante polêmica. Sempre que falamos sobre o assunto, tem sempre alguém que declara guerra e não para de falar sem parar os motivos pelos quais ele despreza as certificações. Não tiro a razão de ninguém.

Mas eu tenho um pensamento que vocês deveriam refletir. Não falo isso generalizando as certificações, estou falando da ZCE.

Minha mensagem é especificamente para as pessoas que amam o PHP assim como eu. Pessoas que realmente levam a sua filosofia e a sua comunidade a sério. Se você não faz a certificação por que tem raiva do mundo, então faça pelo PHP. Quanto mais de nós, profissionais, nos comprometermos com o meio em que trabalhamos, mais informal este mercado deixa de ser e mais ele passa a ser levado a sério.

Eu particularmente quero tirar esta certificação para me testar, ver como eu estou (oficialmente) na linguagem e claro é uma boa oportunidade para aprimorar os conhecimentos, estudar mais e quem sabe isso possa me trazer sorte (rs).

Tirar a certificação este ano não estava nos meus planos. Este ano era para eu ter iniciado a minha pós-graduação em Engenharia de Software, porém, não estou tendo condições financeiras de pagar o curso este ano.  Sem grana, resolvi adiantar a certificação e inverter as metas.

Este ano “vou” me certificar pela Zend. Já comprei o Zend PHP 5 Certification Bundle, recebi todo o material e agora é só cair de cara nos livros e me preparar para o exame final que pretendo fazer daqui um ou dois meses.

Se você tem interesse em se certificar vai aqui algumas informações que podem te acrescentar algo:

  • Você pode pagar a certificação com qualquer cartão de crédio internacional Visa/MasterCard, PayPal ou Transferência Bancária.
  • Material, simulados e a prova final é em inglês.
  • Os simulados são dados pela php|architect.
  • Os simulados, em teoria são mais difíceis do que a prova oficial.
  • Se você vai bem nos simulados, você vai bem no exame.
  • São 80 questões e você tem 90 minutos para responder (simulado e exame final).
  • O investimento total sai por 165,00 dolares.
  • A prova é bem detalhista. Se você pensa que a parte chata (bitwise operators, manipulação de números exponenciais, hexadecimais e octais por exemplo) não cai, você está enganado.
  • Prepare-se para decorar nome de funções e suas derivadas.
  • Os simulados são online.
  • O exame é aplicado somente em centros habilitados pela Zend.
  • Existem milhares centros espalhados pelo globo (inclusive no brasil).
  • Se você falhar no exame final, não se preocupe, a Zend oferece descontos para uma próxima prova (que eu pretendo não descobrir qual é).

Me desejem sorte :)

Igor
[]‘s


Posts Relacionados:

Tutorial jQuery – Método $.live();

Hoje vou falar sobre um método do jQuery muito útil, muito mesmo. Mais informações em inglês pode ser encontrada na documentação oficial do método .live().

O Problema

É muito comum quando estamos desenvolvendo aplicações para Internet e precisamos criar ferramentas tão dinâmicas que acabamos por utilizarmos quase todo o potencial que o JavaScript dispõe a oferecer. Nas ferramentas que desenvolvo é muito comum a interface da ferramenta ser controlada e alterada quase que o tempo todo através da manipulacão do DOM e muitas vezes precisamos atachar comportamentos em um determinado elemento da página.

Por exemplo: Temos um sistema de comentários onde todos os comentários são carregados e as respostas destes comentários aparecem como arvore.

  • Comentário 1
  • Comentário 2
    • Resposta do comentário 2
      • Resposta da resposta do comentário 2
  • Comentário 3

E assim vai…

Eu posso responder em tempo real um comentário e ele ja vai aparecer para mim. Tudo via jQuery. Quando fazemos uma varredura no DOM do documento usando os seletores do jQuery, procuramos por todos os botões que tenha a classe “responder” que originalmente ficam sem ação e depois, via jQuery damos ação ao elemento.

$('.responder').bind('click', function() {
  // instruções
});

Neste ponto, temos um problema. O indice de elementos do jQuery é estático, ele não atualiza automaticamente. Se um novo botão responder surgir na tela o jQuery não surtirá efeito sobre ele, pois ele apareceu DEPOIS da primeira varredura no DOM quando eu usei o seletor $(‘.responder’).

Solução

Para corrigir este problema, podemos utilizar o .live() do jQuery. Independente de quando e a quantidade de botões que surgirem na tela o jQuery irá acrescenta-lo em seu índice e você poderá manipula-lo da forma como quiser.

$('.responder').live('click', function() {
  // instruções
});

Caso queira adicionar ao DOM o mesmo comportamento em mais de um evento, basta fazer o seguinte:

$('.responder').live('mouseover mouseout', function(event) {
  if (event.type == 'mouseover') {
    // faça isso
  } else {
    // faça aquilo
  }
});

Ou crie 2 lives separadamente para cada evento.

$('.responder').live('mouseover', function() {
  // instruções
});
$('.responder').live('mouseout', function() {
  // instruções
});

A princípio o conceito pode ser um pouco confuso. Fica difícil de entender isso quando nunca se passou pelo problema. O dia que algo não funcionar como o esperado pelo jQuery nem simplesmente ter sido chamado, lembre-se do $.live();

Igor
[]‘s


Posts Relacionados: