Blog | Édipo Costa Rebouças - Desenvolvedor Web
Édipo Costa Rebouças – Desenvolvedor Web
Leave a reply	A inversão de controle ou em inglês "inversion of control", também conhecida pela sigla IoC é um padrão de desenvolvimeto de software que introduz uma mudança no controle do fluxo de execução do seu programa. Ela faz um código de uso genérico (framework, sistema de eventos, biblioteca, etc…) ser o responsável por invocar/chamar/executar um código de uso específico (uma classe ou função feita para resolver algo da sua aplicação) [4].
Essa abordagem é um pouco diferente do que normalmente fazemos, quando o responsável por invocar/chamar/executar classes e funções dentro de um framework/biblioteca é o nosso código específico, seja para criar uma controller ou para validar um e-mail.
Uma forma mais simples de entender IoC é: você tem um código e alguém vai executá-lo, mas não vai ser você em um método main, numa controller ou algo parecido. Alguma coisa fora do seu controle (nesse código) vai invocar/chamar/executar.
Alguns exemplos em que isso acontece são: programação orientada a eventos, design pattern injeção de dependência e nas controllers do MVC, que serão explicados a seguir para ficar mais claro.
Em JavaScript (uma linguagem com um ótimo suporte a eventos), você pode pedir que um listener (função) seja executado quando determinado evento ocorrer, por exemplo, vamos executar uma função quando acontecer um clique do mouse, como no código:
alert('fui clicado')
document.body.onclick = clickListener;
Nesse código, em nenhuma linha foi feita uma chamada para função clickListener, quem faz essa chamada é o sistema de eventos do JavaScript quando acontece um clique na página.
Um jeito sem IoC para executar essa função no clique, talvez seja monitorar a página a cada x tempo e executar a função. A alternativa com IoC é a solução mais natural para este caso.
A injeção de dependência é um design pattern que altera a forma como as dependências são "chamadas" no seu código, caso você seja um programador "caprichoso", provavelmente a usa sem saber. Segue um exemplo de código sem a injeção de dependência.
class TableCliente
$this->db = new PDO('pgsql:host=localhost;dbname=test_basic01', 'userFoo', 'passBar');
Perceba que estamos criando uma instância da dependência PDO dentro da classe TableCliente, isso pode gerar uma série de problemas, dentre eles:
Problemas de manutenção: como exemplo, vamos citar o caso em que você queira usar uma classe que tem mais recursos e outras abstrações ao invés de usar a classe PDO. Você terá que alterar a chamada em cada classe e ter sorte pra não quebrar nada no processo.
Problema com testes: é mais difícil testar, ou pelo menos é mais chato você programar teste unitário em códigos desse tipo se você não tiver um setDb então, vai ter que escrever algum código pra conseguir testar ou não vai testar.
Existem outros problemas, que vou explicar detalhadamente num post específico sobre o design pattern.
Para resolver esses problemas, deve-se alterar o design da classe para receber a dependência, alterando o "controle" de criação e injeção da dependência para outro código fora dessa classe. Normalmente se usa um IoC Container para tal tarefa ou algum código mais simples que faz o mesmo trabalho.
Exemplo simples de IoC Container:
return new PDO('pgsql:host=localhost;dbname=test_basic01', 'userFoo', 'passBar');
function getTableCliente()
$db = $this->getDb();
return new TableCliente($db);
Utilizando o Container:
$ctx = new Container();
$tableCliente = $ctx->getTableCliente();
Controller MVC.
Uma controller no MVC é um trecho de código que é executado a partir de uma ação do usuário. Se for uma controller web, estaremos falando de requisições HTTP, se for um aplicativo desktop, vai ser o código que responde ao click de um botão. Os dois casos são muito parecidos, você pode entender que um código é executado externamente em um servidor web e o outro é local.
Como a execução foi tirada da sua mão e jogada para um evento de sistema gerado pelo usuário (o "controle" foi invertido), isso também é considerado IoC.
http://pt.wikipedia.org/wiki/Invers%C3%A3o_de_controle
This entry was posted in Artigos, Blog on April 23, 2014 by Édipo Costa Rebouças.	Flash Builder 4 (Flex 4) – Bug – Travamento na instalação
4 Replies	Boa tarde galera, eu estava a algum tempo tentando instalar o plugin do Flash Builder 4 (Flex 4) no meu Windows 7 x64 Professional Original, onde estava acontecendo um travamento depois de escolher a pasta do instalação do Eclipse(Helios x86), ele trava na primeira porcentagem de instalação.
O bug na instalação está relacionado ao nome das pastas, o instalador do plugin não te dá opção de onde extrair os arquivos, ele extrai em:
C:\Documents and Settings\Édipo\AppData\Local\Temp\Adobe Flash Builder 4 Plugin
No seu windows vai estar em:
C:\Documents and Settings\(Seu nome de usuário)\AppData\Local\Temp\Adobe Flash Builder 4 Plugin
No caso relatado:
http://translate.google.com.br/translate?hl=pt-BR&langpair=en|pt&u=http://forums.adobe.com/message/2714074
Vai pedir para você copiar a pasta de instalação do Flash Builder 4 que está em negrito:
Colar no C:\
Renomear de Adobe Flash Builder 4 Plugin para Adobe(Pode ser qualquer outro nome sem espaço ou caractere muito complexo, por exemplo o "É" de Édipo)
E executar o instalador que estará em C:\Adobe\Disk1\INSTDATA\VM
No caso, eu executei o InstallFlashBuilder4Plugin pelo prompt de comando como administrador.
This entry was posted in Blog on July 17, 2010 by Édipo Costa Rebouças.	TCC na USJT – 20/05/2010
Leave a reply	Piadas e mais piadas nesse TCC:
This entry was posted in Blog on May 28, 2010 by Édipo Costa Rebouças.	Duplo clique trava lightbox balupton edition
1 Reply	Ontem meu chefe resolveu dar dois cliques numa thumb com o lightbox do balupton e travou a página no Firefox.
Fiz uma correção no lightbox e vou compartilhar com vocês:
Versão 1.3.7-final
Linha 992:
$('#lightbox').stop(true,true).hide();
$('#lightbox-overlay').stop().fadeOut(function() { $('#lightbox-overlay').hide(); });
This entry was posted in Blog on January 16, 2010 by Édipo Costa Rebouças.	PetMag + Uol
Leave a reply	PetMag (Site pelo qual sou responsável pelo front-end) fechou nesse mês um parceria com Uol.
Com essa parceria, algumas materias do PetMag irão aparecem na home do Uol e Uol Bichos.
Parceria muito festejada pelos funcionários da Citrus7 e PetMag.
O projeto começou a ser pensado no ano passado (2008) e desenvolvido no começo deste ano (2009), foi lançado como versão beta e agradou muito aos internautas.
Parabéns a toda equipe do PetMag.
This entry was posted in Blog on October 15, 2009 by Édipo Costa Rebouças.	Parabéns Firefox, 1 Bilhão de Downloads
Leave a reply	O Firefox chegou a marca de um bilhão de downloads, um browser que ajuda tanto os desenvolvedorers e seus usuários com seus add-ons.
Eu não poderia deixar passar esse dia em branco, por isso estou cintado o mesmo aqui no blog.
Então, fica aqui meu grande obrigado para todos os colaboradores no desenvolvimento do Firefox e a Fundação Mozilla, pois uso bastante esse browser, ele e seus add-ons.
Fica aqui o site que a mozilla fez para esse dia:
This entry was posted in Blog on August 3, 2009 by Édipo Costa Rebouças.	Salvar Kyle XY – Seriado ABC Family
8 Replies	Num dia de domingo me deparei com o SBT passando um novo seriado, Kyle XY, fiquei maravilhado com o seriado e resolvi baixar na internet. Bem, esta faltando somente o último episódio da terceira temporara para eu ver e tenho me deparado com a situação de que o seriado foi cancelado pela ABC Family.
O Seriado é muito bom, e não entra na minha cabeça e nem de uma legião de fans, como isso aconteceu.
Por isso, algumas pessoas estão recolhendo assinaturas para salvar o seriado como já aconteceu com outro chamado Jerico.
Para quem esta acompanhando a série pelo SBT, pesso que ajudem, para não termos um seriado sem um fim, e com um "gostinho de quero mais que nunca vai acontecer".
Segue o link do site que achei mais enpenhado com a campanha, e o link direto para voto pois o site é meio confuso.