quinta-feira, 28 de fevereiro de 2008

ZCR contrata estagiário PHP

zcr_logo Se você está afim não apenas de um estágio atuando com PHP, mas também de encarar novos desafios, e lidar com uma equipe muito bem humorada e também bem comandada pelo meu amigo Germano Bona, aí está a oportunidade!

Dados:

Estamos precisando de um estagiário, ou seja, tem que estar cursando uma faculdade, e de preferência Sistemas de Informação, Ciência da Computação, ou coisas do tipo.  A pessoa vai trabalhar com desenvolvimento de sistemas web, páginas dinâmicas, sistemas de notícias, enquetes, banco de dados,  etc...

É necessário que a pessoa já tenha os seguintes conhecimentos:

•    Programação em PHP (orientado a objeto)
•    Conhecimentos em base de dados MySql / SqlServer
•    Conhecimento em HTML e CSS
•    Ter jogo de cintura pra resolver os maiores projetos do mundo!!!

Mande seu currículo pra germano@zcr.com.br colocando no subject a tag [currículo]

Atenciosamente
GERMANO BONA
Gerente Dep. de Criação
Tel.: 55 71 3113-8774
Cel: 55 71 8814-8796

quarta-feira, 27 de fevereiro de 2008

Parceiros Adobe em Salvador

Adobe CS3Particularmente sou uma pessoa insatisfeita com a atividade Adobe local pois há tempos que não vejo nem ao menos um evento público notável e em relação à centros de treinamento, um deles pra mim é de atividade desconhecida, enquanto o outro eu não recomendo mesmo. Para evitar citar nomes (não quero influenciar opiniões), seja por falta de conhecimento da atividade de um ou pela total descrédito que o outro tem em sua qualidade e administração, simplesmente não recomendo nenhum dos dois.

Como sou consultor, autodidata e instrutor e tenho minhas atividades particulares independente da atividades destes parceiros da Adobe localmente, essa questão nunca realmente me incomodou diretamente. Porém, esta semana, percebi que estou sendo impedido de exercer atividade de participante em um grupo de usuários gerido pelo diretor de um destes centros de treinamento aqui.

Ao procurar um meio de denunciar tal prática, que só beneficia ao tal centro de treinamento e seu diretor, acabei descobrindo que não sou o único a notar que as coisas estão muito erradas em relação a parceiros Adobe aqui na Bahia e que não sou o único insatisfeito. Assim, resolvi perguntar e abrir o espaço afim de que tudo o que for coletado possa ser encaminhado diretamente para a Adobe.

Fique à vontade, para através dos comentários redigir e discutir sua defesa ou reclamação sobre algum destes parceiros. E se você conhece mais alguém que tenha a mesma opinião que você, ou até mesmo uma opinião contrária que possa adicionar à discussão, por favor convide-a a colocar seu comentário aqui.

IMPORTANTE: Não haverá nenhuma moderação! E reforço que vou fazer o máximo para que a Adobe venha a tomar conhecimento de tudo o que for colocado aqui.

segunda-feira, 25 de fevereiro de 2008

ExtJS 2.0.2 release com suporte ao AIR 1.0

ext132bannerDownload (release, docs)

Overview bem completo com aplicação DEMO

Para quem não sabe, o ExtJS é uma API Javascript destinada ao desenvolvimento de interfaces usando o mesmo, repleta de componentes visuais para este fim e com uma abordagem excelente de orientação à objetos com a tecnologia.

Já é vastamente utilizado em aplicações no modelo AJAX, dada a sua integração com serialização/deserialização de dados que fazem parte da API. Desde a fase Beta do AIR já era conhecida a sua integração com o mesmo dado o suporte do AIR à AJAX a partir do engine WebKit que a Adobe incorporou nele.

Quem usa ColdFusion também já o conheçe (mesmo sem saber) pois a partir da versão 8 passou a fazer parte de algumas funcionalidades presentes nele.

Agora o ExtJS demonstra um apoio aberto ao AIR, documentando as funcionalidades de integração.

ÓTIMA NOTÍCIA!

AIR 1.0 download

getAdobeAIRLinks para download:
Runtime (para rodar as aplicações)
SDK (compilador, debugger, etc.)

Adobe Flex 3 disponivel

flex3boxFinalmente!

E não vejo a hora desse download terminar.

Ah! Como poderão ver no link para download, ele na verdade não é de 169MB. São na verdade  425MB!

Ah! É um trial ok? 60 dias! Open-source free só o SDK.

domingo, 24 de fevereiro de 2008

Teclado Optimus Maximus

optimusmaximuskeyboard Definitivamente eu queria ter US$500 pra gastar com um teclado!

Não seria apenas um "brinquedo" interessante, mas é definitivament produtivo!

Novo artigo no blog CTRLF5

coca13 Como alguns sabem, sou colaborador no blog CTRLF5 que é um blog que reúne uma galera que considero ser a NATA do mercado de criação/publicidade de Salvador. Bom, até agora eu sou o único colaborador lá mais voltado para a área de tecnologia, ou seja, não faço parte da NATA. ;)

Bom, de vez em quando eu tenho o desafio de escrever algo lá analisando tecnologias de desenvolvimento para web. Pra falar a verdade participo mais dos Comments realizando esse trabalho, pois assim o faço em cima do que eles demonstram interesse e/ou está dentro do foco deles.

Porém hoje, lendo algumas notícias, observei essa no UOL à respeito dessa marca da qual sou consumir absoluto. Imediatamente imaginei que sería legal colocá-la no CTRLF5. Mas aí me veio a pergunta: "Eu falando de marca? Nada a ver!".

Então observando os sites relacionados, encontrei o que falar pois o site da coca-cola é repleto de bons exemplos de aplicação do Flash Platform.

Para quem quiser ver a matéria sem muita linguagem técnica e citação de algumas críticas pessoais a respeito das tecnologias, segue o link.

Coca-Cola com novidades em suas marcas e uma análise de alguns recursos em seus sites

Flex Team anuncia novidades sobre o SDK

flex3_fx_124x120 Essa semana já fomos muito bem "preparados" para a chegada do Release final do Flex 3 SDK junto com o FlexBuilder com o post bem humorado do Ted Patrick (A long time ago in a galaxy far, far away...).

Agora a notícia vem diretamente da equipe de desenvolvimento do Flex, recheada com informações sobre como será o primeiro release como projeto open-source.

Dentre as informações importantes para quem já planejava fazer uso disso de alguma forma, seja participando ou apenas observando o desenvolvimento, já ficou claro como isso vai funcionar. O projeto tá possui inclusive, conforme o anúncio, um repositório SVN configurado.

Na verdade, creio que o mais importante era mesmo saber "o quê" sería realmente publicado lá, e o anúncio deixou tudo bem esclarecido.

AS3 & MXML Compilers / Debugger: Já era esperado, mas nem por isso é menos empolgante saber desta informação, pois o que isso vai trazer de melhoras para os desenvolvedores em torno da tecnologia, é praticamente impossível de se medir. Embora o FlexBuilder não faça parte deste projeto open-source, os desenvolvedores podem aguardar o aprimoramente de ferramentas IDE já existentes para o desenvolvimento em MXML/AS3, além é claro de novas ferramentas que surgirão à partir disso.

SWFUtils Java Library: Essa, pelo menos pra mim foi uma boa novidade! Trata-se de uma biblioteca Java que permitirá não apenas LER dados de arquivos SWF para o formato do FlashPlayer 9.x, bem como escrevê-los.

Todos esses recursos reunidos certamente irão resultar não apenas em grandes novidades para nós desenvolvedores, como também para os consumidores dessa tecnologia. Ao menos as portas estão abertas para que novos produtos em torno do Flash Platform venham a surgir.

sábado, 23 de fevereiro de 2008

Silverlight 2.0 anunciado

silverlight_logo O gerente geral da divisão de desenvolvimento da Microsoft, Scott Guthrie, anunciou em seu blog o Silverlight 2.0, suas "novidades" e também um tutorial.

Dentre as informações que mais chamam a atenção está a de que nessa nova ação a Microsoft incluí o plano de um release da plataforma para Linux adicionalmente.

 

Uma outra fonte da mesma informação, o site da ComputerWorld, cita que este release do Silverlight tem como objetivo direto atacar a tecnologia Flash da Adobe que o mesmo site cita como "popular" no universo RIA.

Licença Pública WTFPL

wtfpl

Na eterna batalha de se adotar um modelo de licença pública ideal, surge mais uma opção: What the Fuck Public License (Do What The Fuck You Want Public License) ou em bom português (tradução livre), "licença pública faça a porra que você quiser".

Trata-se na verdade de uma crítica em relação a esses modelos de licença sobre o qual sempre há a discussão a respeito de qual delas é "mais livre" do que a outra.

O autor, Sam Hocevar, no seu site, faz uma reprodução muito cômica do formato básico desses modelos de licença.

A licença, claro, tem apenas uma cláusula (traduzida):

0 . Você simplesmente faz a porra que você quiser

sexta-feira, 22 de fevereiro de 2008

Mock Objects

wikiMock

Até então, eu desconhecia o termo. Só usava há anos o método e apliquei no Flex a partir do uso extenso do Cairngorm.

Definição no Wikipédia:

  • Mock objects são objetos que simulam o comportamento de objetos reais de forma controlada. São normalmente criados para testar o comportamento de outro objeto.

Tomei conhecimento a partir deste post no blog da DClick e ao escrever este post aqui mesmo no meu blog sobre desenvolvimento Flex/Cairngorm.

Flex, Cairngorm e desenvolvimento progressivo independente de Business / Delegate usando "FakeData Factory"

flex3_fx_124x120 Eu já estava para fazer esse post desde ontem quando passei a adotar essa metodologia que vou apresentar aqui para o devido propósito anunciado como título, mas no momento de pausa para me atualizar do conteúdo de outros blogs que leio, acabei, por pura coincidência, me deparanto com um artigo publicado pelo Ricardo Pettine no Blog da DClick com o título “A EVOLUÇÃO DO MOCK USANDO O CAIRNGORM”, o que me levou a antecipar e mudar um pouco o objetivo desta postagem.

Na verdade, se observarem os 3 comments que fiz no Blog da DClick, vão ver que eu tentei fazer o assunto progredir lá mesmo, mas acabei esbarrando no problema de caracteres do código de exemplo que tentei postar.

(que vergonha a minha... enferrujando no uso de blogs... acho que se eu tivesse colocado um <code>, resolveria talvez).

Bom, vamos lá...

A minha intenção com o que eu fiz e proponho usar, é permitir o desenvolvimento de toda a estrutura de front-end no Flex, usando Cairngorm, independente da parte de Business/Delegate que referem-se justamente à integração com o Back-end.

Não fiz isso baseado em nenhum modelo, nem ao menos pesquisei alternativas. Simplesmente adotei e apliquei para uma necessidade atual que tive em um projeto no qual estamos redefinindo todo um framework de backend (ColdFusion), mas que por já ter todos os dados e requisitos especificados, obviamente permitia o progresso individual do desenvolvimento do Front-end.

Então, são os requisitos para aplicar esse recurso:

  1. Utilizar o framework Cairngorm (embora possa ser aplicado em qualquer situação onde o MVC seja a base de desenvolvimento)
  2. Ter os ValueObjects (VO) ou DataTransferObjects (DTO) definidos.

Com os requisitos atendidos você imediatamente compreenderá que a implementação proposta será aplicada nos Commands, no caso da arquitetura do Cairngorm.

Meu exemplo se baseia em um EmailLoadAllCommand, que por sua vez instanciaria um EmailDelegate e então o método loadAll(). O Result nesse caso trabalharia com o recebimento de uma array de instancias de EmailVO.

Apenas para referência, o método execute() de EmailLoadAllCommand:

public function execute(event:CairngormEvent):void{
var delegate:EmailDelegate = new EmailDelegate(this);
delegate.loadAll();
}

A alteração seria feita exatamente aqui, eliminando neste momento o Delegate e consequentemente a implementação de Responders para tratar o resultado da atividade do Delegate. O código acima alterado para usar a solução proposta pela implementação da classe EmailFakeCollection.as que apresentarei logo após:

public function execute(event:CairngormEvent):void{
//var delegate:PessoaFisicaDelegate = new PessoaFisicaDelegate(this);
//delegate.loadAll();
EmailModel.getInstance().emailCollection = EmailFakeCollection.generate();
}

Repare que estamos no método execute(), alterando o Model diretamente, com o dado solicitado. Neste caso apenas antecipamos o que só ocorrería no result() do responder que sería especificado no instanciamento do Delegate.´

Considerando o exemplo acima, onde o Command teoricamente implementa mx.rpc.IResponder e portanto conterá o método result(), simplesmente mudamos a instrução de associação dos dados ao model de lugar.

A idéia então consiste em que a classe EmailFakeCollection (e todos os eventuais FakeCollections que o sistema necessitar) implementem um método estático generate() que por sua vez retorne um ArrayCollection simulando dados que seríam recebidos no result da classe apontada para ser o responder da aplicação.

Eu pessoalmente preferi implementar um parâmetro para o método estático generate() afim de que eu possa especificar um número de itens que desejo receber como retorno.

No caso do exemplo citado então, a proposta da classe EmailFakeCollection seria a mostrada abaixo, seguido da classe EmailVO para referência apenas:

package br.com.ir.pessoas.factory{
 
import br.com.ir.pessoas.vo.EmailVO;
 
import mx.collections.ArrayCollection;
 
public class EmailFakeCollection{
 
private static var fakeRawData:Array = [
{
id: 1,
email: "macieljr@gmail.com",
padrao: 1
},
{
id: 2,
email: "macieljr@interfacerica.com.br",
padrao: 0
},
{
id: 3,
email: "macieljr@ir.com.br",
padrao: 0
},
{
id: 4,
email: "owner@vpmjr.com",
padrao: 0
},
{
id: 5,
email: "publisher@teclandoalto.com.br",
padrao: 0
}
];
 
public function EmailFakeCollection(){}
 
public static function generate(_qty:int = 0):ArrayCollection{
 
var returnData:ArrayCollection = new ArrayCollection();
 
var totalItems:int = (_qty > 0 && _qty <= fakeRawData.length) ? _qty : fakeRawData.length;
 
for(var i:int = 0; i < totalItems; i++){
 
var email:EmailVO = new EmailVO(
fakeRawData[i].id,
fakeRawData[i].email,
fakeRawData[i].padrao
);
 
returnData.addItem(email);
 
}
 
return returnData;
 
}
 
}
 
}
package br.com.ir.pessoas.vo{
 
import com.adobe.cairngorm.vo.IValueObject;
 
[RemoteClass(alias="br.com.ir.pessoas.EmailVO")]
[Bindable] public class EmailVO implements IValueObject{
 
public var id:int;
public var usuario:String;
public var provedor:String;
public var padrao:uint;
 
public function set email(_email:String):void{
 
if(_email.length){
 
var emailParts:Array = _email.split("@");
this.usuario = emailParts[0];
this.provedor = emailParts[1];
 
}
 
}
 
public function get email():String{
 
return this.usuario + "@" + this.provedor;
 
}
 
public function EmailVO(_id:int = 0, _email:String = "", _padrao:uint = 0){
 
this.id = _id;
this.email = _email;
this.padrao = _padrao;
 
}
 
}
 
}

Eu acabei batizando isso de FakeDataFactory. Nem sei se o nome ja foi usado. Mas agora vou ficar de olho em temas como o abordado pelo Ricardo no blog da DClick para conhecer e aprender melhor formas alternativas de implementar isso.

Por enquanto esta forma me atende completamente. Inclusive, caso a aplicação especificasse a necessidade de criar um Factory (no padrão costumeiro da palavra mesmo) para o recebimento de dados no formato JSON, um XML ou qualquer outro tipo de serialização, eu simplesmente implementaría a classe normalmente e simularia dentro do meu FakeDataFactory o recebimento de dados e instanciamento através desse Factory de desserialização. Depois, na implementação final de integração com o Back-End, bastaría mover a chamada dessa implementação no seu local apropriado.

Qualquer dica à respeito do fundamento, outras formas de implementação e padrões já existentes é muito bem vinda!

quarta-feira, 20 de fevereiro de 2008

Ele não morreu! Director 11!

director11

Confesso que se me perguntassem, a resposta sería:

"Pelo jeito, morreu mesmo!"

Mas ainda bem, para me contrariar e não deixar o mercado órfão do melhor produto que já usei para desenvolver conteúdo para CD-ROM, e que me introduziu ao desenvolvimento de conteúdo multimídia/web, a Adobe mostra de uma vez por todas que o produto tem sua força!