junho 20th, 2011PHP com BDD

Olá,

Nesse Post vou mostrar um pouco de desenvolvimento PHP usando BDD (Behaviour-Driven Development).
O BDD é uma prática ágil que tem como objetivo facilitar o desenvolvimento orientado a testes,
onde o software é direcionados por comportamentos, trazendo para o contexto de destes os casos de uso ou historias da aplicação.

Enquanto em TDD (Test Driven Development) testamos a aplicação de forma granular em um ambiente micro
no BDD os testes são globais voltados para a Funcionalidade, Casos de uso, Comportamentos, etc..

Como se em TDD testamos a aplicação de dentro para fora e já em BDD a aplicação é testada de fora para dentro.
Existe muito material sobre esse assunto p\ ai e muita gente mais preparada que eu para abordar esse assunto de forma teorica,
Então nesse Post vou mostrar na pratica um pouco de desenvolvimento PHP usando o Behat

Behat

Behat é um framework BDD em PHP 5.3 construindo sobre de componentes do Symfony2.
Behat foi inspirado no Cucumber do Rails e especialmente a parte da sintaxe das features.

A instalação do Behat pode ser feita baixando diretalente pelo git diretamente pelo do git: http://github.com/Behat/Behat
Ou instalando através do pear :

 
$ pear channel-discover pear.behat.org
$ pear install behat/behat

Se tudo der certo o Behat esta instalado
A versão atualmente disponível no pear é a 1.1.9
Para verificar se esta correto e ver a versão instalada execute :

$ behat -V
Behat version 1.1.9

Depois de concluir a instalação o Behat esta pronto para ser usado.
para isso vamos inicializar o projeto de testes com o Behat

$ cd path-to-my-app
$ behat --init

O comando behat –init vai criara a estruturar de diretórios usada p\ organizar os teste do Behat

|-- features
   |-- steps            ##Diretório dos arquivos que contem os cenários de testes
       |-- steps.php
   |-- support          ##Configurações, requires e configs de ambiente
       |-- bootstrap.php  
       |-- env.php

A definição de um historias e cenários de teste é bem simples.
Utilizando algumas palavras chaves : Feature, Scenario, Given, When, Then, But or And
Os cenários são escritos em arquivos .feature que serão interpretados pelo Behat

features/contacts.feature

Feature: Contacts Registration
    In order to demonstrate the framework
    As a SouDev using BDD
    I want to register contacts

  Scenario: Add new contact
    Given a contact named "Fabio B. Silva" using the email "fabio.bat.silva@gmail.com"
      And the phone "xx xxxx-xxxx"
     When press save
     Then everything will be saved

Com a historia escrita podemos executar o Behat dentro da aplicação
O Behat vai interpretar os arquivos .feature
e mostrar quais funções vc tem que implementar para poder rodas o teste

 
$ cd path-to-my-app
$ behat
1 scenario (1 undefined)
4 steps (4 undefined)
0m0.03s
 
You can implement step definitions for undefined steps with these snippets:
 
$steps->Given('/^a contact named "([^"]*)" using the email "([^"]*)"$/', function($world, $arg1, $arg2) {
    throw new \Behat\Behat\Exception\Pending();
});
$steps->And('/^the phone "([^"]*)"$/', function($world, $arg1) {
    throw new \Behat\Behat\Exception\Pending();
});
$steps->When('/^press save$/', function($world) {
    throw new \Behat\Behat\Exception\Pending();
});
$steps->Then('/^everything will be saved$/', function($world) {
    throw new \Behat\Behat\Exception\Pending();
});

Essa definição dos steps que o Behat lançou pode ser copiada para um arquivo de steps.php o que facilita bastante a implementação dos teste..
Porem escrever historias em inglês pode ser meio confuso, mais o tem suporte a i18n oq nos permite escrever as historias em português.
para isso basta adicionar # language: pt_BR no inicio do arquivo .feature
com isso ganhamos as palavras chaves em português : Funcionalidade,Cenario, Scenario, Quando, Então, Entao, Dado, Mas, E

features/contacts.feature

# language: pt_BR
Funcionalidade: Cadastro de contatos
    Para demostrar o funcionamento do framework
    Como SouDev que usa BDD
    Desejo cadastrar contatos

  Cenario: Adicionar um novo contato
    Dado um usuário chamado "Fabio B. Silva" usando o email "fabio.bat.silva@gmail.com"
      E com o telefone "xx xxxx-xxxx"
     Quando pressionar salvar
     Entao os dados serão salvos

E ao executar novamente o Behat a implementação dos teste agora também vem em português :

 
$ cd path-to-my-app
$ behat
1 scenario (1 undefined)
4 steps (4 undefined)
0m0.03s
 
You can implement step definitions for undefined steps with these snippets:
 
$steps->Dado('/^um usuário chamado "([^"]*)" usando o email "([^"]*)"$/', function($world, $arg1, $arg2) {
    throw new \Behat\Behat\Exception\Pending();
});
$steps->E('/^com o telefone "([^"]*)"$/', function($world, $arg1) {
    throw new \Behat\Behat\Exception\Pending();
});
$steps->Quando('/^pressionar salvar$/', function($world) {
    throw new \Behat\Behat\Exception\Pending();
});
$steps->Entao('/^todos os dados serão salvos$/', function($world) {
    throw new \Behat\Behat\Exception\Pending();
});

Com essa definição a implementação dos testes para essa feature pode ser feita
features/contacts_steps.php

use App\Entities\Contact, App\Entities\Phone, App\Services\ContactService;
 
$steps->Dado('/^um usuário chamado "([^"]*)" usando o email "([^"]*)"$/', function($world, $arg1, $arg2) {
    $contact = new Contact();
    $contact->setName($arg1);
    $contact->setEmail($arg2);
 
    $world->contact = $contact;
});
 
$steps->E('/^com o telefone "([^"]*)"$/', function($world, $arg1) {
    $world->contact->addPhone(new Phone($arg1));
});
 
$steps->Quando('/^pressionar salvar$/', function($world) {
    $world->saveReturn = ContactService::getInstance()->save($world->contact);
});
 
$steps->Entao('/^todos os dados serão salvos$/', function($world) {
     assertTrue($world->saveReturn);
});

O BDD e TDD são ferramentas essenciais para um software bem feito,
Infeliz mente muitos “desenvolvedores” ainda tem resistência a aderir ao teste e por achar perda de tempo, tedioso, etc..
O fato é que uma suite de testes bem feita vai tornar sua aplicação muito mais estável e vai lhe economizar tempo e cabelos ao longo do projeto. rsrs

Gostei bastante do Behat é um projeto muito bem estruturado e em constante evolução a versão 2.0 esta prestes a sair
Vale apena dar uma conferida na Documentação do Behat

E Para quem tiver o interesse deixei a app no git
https://github.com/FabioBatSilva/bdd-php-behat

Abraço e até a próxima….

Click aqui para ver o post Original
Fábio B. Silva
Fabio B. Silva
http://www.flexria.com.br

Olá.

Escrevendo o post Java + MongoDB + Spring Data descobri o Spring Data JPA
e fiquei surpreso em descobrir algumas features como a criação de repositórios e consultas dinâmicas.
Neste Post vou falar um pouco sobre o Spring Data JPA e como ele pode lhe proporcionar uma maneira rápida e elegante de implementar seus repositórios.

O Spring Data JPA tem como principal objetivo facilitar a implementação das camadas de acesso a dados.
O Spring fica responsável pela implementação dos repositórios e oferece algumas funcionalidades sofisticadas e comuns na maioria dos CRUDs baseado na entidade que esta sendo gerenciada.

Nessa aplicação vou usar as entidades Contact, Phone, e o repositório ContactRepository.

As entidades são bem simples, é anotadas com o mapeamento de seus atributos e relacionamentos.
Contact.java

 
@Entity
@Table(name="phones")
public class Phone {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;
 
  @ManyToOne
  @JoinColumn(name="id_contact")
  private Contact contact;
  //getter and setter methods 
  ...
}

Phone.java

@Entity
@Table(name="contacts")
public class Contact {
 
   @Id
   @Column(name="id_contact")
   @GeneratedValue(strategy = GenerationType.AUTO)
   private Long id;
 
   @Column(name="name")
   private String name;
 
   @Column(name="email",unique=true)
   private String email;
 
   @OneToMany(mappedBy="contact",cascade=CascadeType.ALL, fetch=FetchType.LAZY)
   @Fetch(FetchMode.JOIN)
   @private Set phones = new HashSet();
 
  //getter and setter methods 
  ...
}

ContactRepository.java

public interface ContactRepository extends JpaRepository {
 
    public Contact findByEmail(String email);
}

Até aqui nada de novo, porem agora como a “mágica” do Spring JPA ..rsrs

A interface do repositório estende JpaRepository, essa interface tem alguns métodos comuns como findAll, findOne, save, delete, etc…
Normalmente teríamos que implementar essa interface criando uma classe ContactRepositoryImpl e registra-la como um bean do spring
para que então possamos utilizar o repositório.

Com o Spring JPA não é necessário escrever essa implementação :) ..
Não é magia meus amigos, é tecnologia !!!…rsrs

O Spring JPA vai procurar por interfaces de repositórios que estendam a interface JpaRepository,
e então criar uma implementação para a interface e registra-la como um bean.

Para isso so é necessário apenas adicionar a tag jpa:repositories no contexto do spring,
com isso o Spring sabe onde procurar os repositórios que ele teve implementar.

applicationContext.xml

 
// Declaração dos Beans, TransactionManager, DataSource, etc...
 
<jpa:repositories base-package="br.com.flexria.springjpa.repository" />

Com isso a implementação do repositório já esta pronta para ser injetada é utilizada na aplicação.

 
@Autowired
ContactRepository repository;
 
repository.save(contact);
 
repository.delete(contact);
 
List list = contactRepository.findAll();

Isso por si so ja é algo incrível so que o Spring Data JPA vai alem.

Algo que ja é comum no Rails, são os Dynamic attribute-based finders que é a possibilidade de realizar buscas dinâmica baseadas nos atributos do objeto
Em rails temos :

//"SQL : SELECT * FROM contacts WHERE email = 'fabio.bat.silva@gmail.com'"
 
Contact.where(:email =>"fabio.bat.silva@gmail.com")
 
//Usando Dynamic attribute-based finders
Contact.find_by_email "fabio.bat.silva@gmail.com"

É exatamente isso que o Spring Data JPA faz,
além de implementar do repositório com ele é possível utilizar buscas dinâmica baseadas nos atributos do objeto.

   // HQL : select c from Contact c where c.email = ?1
    public Contact findByEmail(String email);
 
   // HQL : select c from Contact c where c.name like ?1
    public List findBynameLike(String email);

Com base em algumas palavras chaves varias consultas podem ser feitas :

Keyword Sample JPQL snippet
And findByLastnameAndFirstname … where x.lastname = ?1 and
x.firstname = ?2
Or findByLastnameOrFirstname … where x.lastname = ?1 or
x.firstname = ?2
Between findByStartDateBetween … where x.startDate between 1? and
?2
LessThan findByAgeLessThan … where x.age < ?1
GreaterThan findByAgeGreaterThan … where x.age > ?1
IsNull findByAgeIsNull … where x.age is null
IsNotNull,NotNull findByAge(Is)NotNull … where x.age not null
Like findByFirstnameLike … where x.firstname like ?1
NotLike findByFirstnameNotLike … where x.firstname not like ?1
OrderBy findByAgeOrderByLastnameDesc … where x.age = ?1 order by
x.lastname desc
Not findByLastnameNot … where x.lastname <> ?1

Repositórios dinâmicos, consultas dinâmicas, Buscas baseadas em NamedQuery ou anotações, etc..
com certeza tem muita coisa a ser explorada no Spring Data JPA, me surpreendi com a facilidade e agilidade.

Vale apena dar uma conferida na documentação do Spring Data JPA

E Para quem tiver o interesse deixei a app no git
https://github.com/FabioBatSilva/spring-data-jpa

Abraço e até a próxima….

Click aqui para ver o post Original
Fábio B. Silva
Fabio B. Silva
http://www.flexria.com.br

Mock-up é uma maquete ou um modelo em tamanho real de um projeto. Utilizado para o ensino, demonstração, avaliação de concepção e outras finalidades. Um Mock-up é um protótipo e mostra pelo menos alguma funcionalidade que o projeto real visa ter.

O SketchFlow é um recurso da família Microsot Expression Studio Ultimate, que lhe da a capacidade, rapidez e eficácia de mapear o fluxo de uma aplicação de interface com o usuário através de layout de telas permitindo a transição de um estado para outro. Esta habilidade permite explorar e testar várias idéias sem investir grandes quantidades de tempo, mostrando ao seus clientes que você é capaz de encontrar a solução certa para eles.

Com o SketchFlow os clientes podem testar diversos cenários e fornecer um feedback para a equipe de desenvolvimento, através de comentários, anotando a sua experiência enquanto navegam pelo protótipo.

Então vamos começar!!!

Um cliente te ligou solicitando a criação de uma tela para a consulta de pedidos de compra feitos no dia que deve mostrar o número de vendas/hora por vendedor. Você logo imaginou o que o cliente queria e iniciou o desenvolvimento do protótipo de tela.

Para isso inicie o Microsoft Expression Blend 4 + Skecth Flow e na guia Projects escolha New Project, e então na tela New Project escolha Silverlight SketchFlow Application e nomeie o protótipo com o  seguinte nome PurchaseRequestSample então click em OK, conforme a figura 1 logo abaixo.

Figura 1 – Criando o projeto para o protótipo da tela.

image

Na barra de ferramentas do blend clique em Assets (recursos) e então na árvore selecione SketchFlow –> Styles –> SketchStyles clique no controle TitleLeft-Sketch e então desenhe no topo da página. Com um duplo clique no controle você poderá editar o texto ou então utlizar a barra de propriedades no grupo Common Properties propriedade Text.

Figura 2 – Selecionando o controle.

image

Figura 3 – Controle desenhado no topo da página.

image

Figura 4 – Barra de propriedades.

image

Existem algumas coisas importantes que você precisa saber ao utilizar o Expression Blend.

image 
image Utilize essa seta, quando você quiser redimensionar os controles.
Quando o controle estiver selecionado ele ficará de forma parecida como o da imagem abaixo, mostrando as áreas em que você pode manipular o mouse para redimensionar o controle.
image

Podemos também manipular as âncoras do controle.
Quando a âncora está habilitada ela fica dessa forma  image e quando desabilitada dessa image.

Quando habilitada; a medida em que a página for redimensionada o controle também será. Isso depende das configurações de âncora que você definiu, nesse caso o controle é redimensionado quando todas as âncoras estão habilitadas.

Para habilitar ou desabilitar as âncoras basta dar um clique em cima dela.

image Utilize essa seta, quando você quiser mover os controles.
image Utilize a “Mãozinha” para mover a página dentro do Expression Blend sem desorganizar os controles.
image Utilize a Lupa para aumentar o zoom da página. Mantenha a tecla ALT pressionada enquanto clica para reduzir o zoom.
image Utilize para inserir textos na página. BasicTextBlock-Sketch para Labels e BasicTextBox-Sketch para caixas de texto.

image

image Utilize para inserir controles de usuário como botões, caixas de seleção, etc…

image

Agora, vamos criar um subtítulo para a tela, para isso em Assets –> Sketch Styles selecione SubtitleLeft-Sketch e adicione o controle logo abaixo do título,  então altere o texto para “Vendas hora por vendedor”. Você pode encontrar os controles facilmente fazendo buscas conforme a figura 5.

Figura 5 – Localizando os controles mais facilmente.

image

Mude o tamanho da fonte do controle para 14, através da barra de propriedades conforme a figura  6.

Figura 6 – Mudando o tamanho da fonte

image

Agora vamos inserir um retangulo abaixo do subtítulo para simular uma caixa de listagem, para isso pesquise em Assets por rect para localizar o controle Rectangle-Sketch.

A sua página deverá ficar como a figura 7 ao executar o protótipo. Para executar o protótipo pressione a tecla F5 ou vá para o menu Project e clique na opção Run Project .

Figura 7 – Página esperada até o momento.

image

Em algum momento teremos de redimensionar a página que está sendo criada. Uma coisa que você precisa saber é que toda a página ou UserControl criado pelo Expression Blend por padrão tem um controle Grid nomeado de LayoutRoot é nele que adicionamos os nossos controles. Através da barra de ferramentas Objects and Timeline podemos observar como os nosso controles estão organizados. Veja a figura 8.

Figura 8 – Objects and Timeline

image

Todos os controles que estão no UserControl podem ser observados através dessa barra de ferramenta. Cada controle possui um símbolo de um olho image, clique nele para ocultar ou mostrar os controles que estão na página. Você também pode travar os controles evitando que eles se movam acidentalmente, para isso clique ao lado do símbolo do olho para habilitar o cadeado.

Figura 9 – TextBlock Travado.

image

 

O controle Grid “LayoutRoot” é redimensionado junto com a página, pois todas as suas âncoras estão habilitadas por padrão. Como queremos aumentar a página devemos clicar em UserControl na barra Objects and Timeline e então clicar na seta de redimensionamento image e redimensionar a página conforme o desejado.

Quando estamos redimensionando a página podemos notar que os controles acompanham o redimensionamento do controle pai. Caso você não queira que eles acompanhem desabilite as âncoras.

Agora vamos inserir alguns retângulos dentro do rentâgulo criado anteriormente e dentro de cada retângulo adicione um controle BasicTextBlock-Sketch com o nome do vendedor.

Figura 10 – Selecionando o controle BasicTextBlock-Sketch

image

Deixe o nome dos vendedores em negrito selecionando B “Bold” através da barra de propriedades no grupo Text.

Figura 11

image

 

A página deverá ficar conforme a figura 12.

Figura 12

image

Vamos redimensionar a página e adicionar mais controles até que ela fique da seguinte forma.

Figura 13

image

As setas do lado direito foram desenhas através dos controles Block Arrow Down Sketch e Block Arrow Up Sketch, elas foram redimensionadas até que ficassem dessa forma.

As cores dos retângulos foram aplicadas através do grupo Brushes da barra de propriedades, selecionando Background e aplicando a cor desejada.

Figura 14

image

Nesse post conhecemos o SketchFlow e aprendemos diversos detalhes do Expression Blend. Aprendemos como adicionar controles a página, redimensioná-los e alterar suas propriedades.

No próximo post adicionaremos fluxos de navegação a esse protótipo, e será demonstrado como o cliente pode fornecer um feedback para a equipe de desenvolvimento.

Veja o protótipo desse post clicando aqui ou um mais completo aqui.

Continue acompanhando novidades através do blog da FlexDev e do meu blog no wordpress, até o próximo artigo.

maio 19th, 2011Esferas 3D no Photoshop

Olá meu nome é Katriny e hoje iremos aprender como se fazer uma esfera 3D no Photoshop CS5

Para começarmos, abra seu photoshop e pressiona as teclas: Ctrl + N para criarmos uma novo documento

image

Mude as propriedades conforme a imagem mostrada e clique em “Ok”.

1º Passo: Pressione as teclas: Ctrl+Shift+Alt+N e escolha a opção cor, conforme a imagem indica:

foto2

Clique sobre a opção: Set the text color e mude a cor para #000cff, dessa forma:

foto3

2º Passo: Pressione a tecla G de seu teclado e clique na opção: Gradiente Tool e selecione Paint Bucket Tool, depois clique sobre o documento, assim preenchemos com a cor que selecionamos.

foto4

3º Passo: Pressionamos novamente as teclas: Ctrl+Shift+Alt+N para criamos uma nova Layer.

4º Passo: Pressione a tecla M do seu teclado e escolhendo a opção: Rectangular Marquee Tool

foto5

5º Passo: Na barra de ferramentas clique no icone: Add to Selection

foto6

6º Passo: Crie três seleções

foto7

7º Passo: Na barra de ferramentas, clique na opção: Edit –> Fill, e mude para as propriedades conforme a imagem e clique em “Ok”

foto8

8º Passo: Pressione a tecla Shift e clique sobre o segundo Layer

foto9

9º Passo: Na barra de ferramentas clique na opção: 3D – New Shape From Layer – Sphere

foto10

No final você terá em sua tela do photoshop essa imagem:

foto11

Olá, meu nome é André Almeida e hoje vou mostrar como colocar um efeito bem bacana em um texto, pra você que queira, por exemplo, dar um novo “ar” no logo da empresa, ou em um topo de um site. Trata-se de inserir um reflexo na imagem, dando a impressão de algo como se fosse vidro ou algo parecido.

Com o Adobe Fireworks aberto, vamos criar um New Document, com as dimensões de 500×500 pixels e um fundo transparente:

Criando Novo Documento

 

Agora, insira um texto que você queira aplicar o efeito, no exemplo, coloquei “FlexDev”.

02

 

Selecione a camada do texto, copie e cole (Ctrl+C / Ctrl+V, ou segure Alt e arraste a imagem) para termos 2 palavras para trabalhar:

Fazendo uma cópia

 

Atenção que agora só iremos trabalhar com a ‘cópia’. Selecione o texto e vá no menu Text –> Convert to Paths, ou Ctrl+Shift+P. Em seguida, vá na opção Modify –> Ungroup (ou Ctrl+Shift+G), para desagrupar o texto:

05

 

Vamos aplicar o efeito, para isso, com as letras selecionadas, mudaremos o fill para Gradient –> Linear:

Aplicando Gradient

Clicamos na caixa de cores ao lado do baldinho, e alteramos as cores do branco para o branco:

Do branco para o branco

No mesmo lugar, mudaremos a opacidade do branco da direita para 0:

Mudando a opacidade para 0

Com a Pen Tool (tecla de atalho: ‘P’), vamos criar uma forma parecida como da imagem abaixo:

Utilizando a ferramenta Pen Tool

 

Com o texto e o objeto que acabamos de criar selecionados, vamos em Modify –> Combine Paths –> Punch:

Punch

 

E finalmente, arrastamos o nosso efeito e colocamos sobre o texto original, ficando assim:

Resultado final

Até a próxima!

Através de um convite feito pelo meu amigo @vedovelli através do seu blog, obrigado pelo convite e parabéns pelo texto, vou expor rapidamente alguns pontos de vista que desenvolvi nesses quase 2 anos de empresa.

Bom vamos lá.

1 – Motivação para abrir uma empresa é uma coisa importante, se você hoje é empregado deve pensar em abrir a sua se nela enxergar uma oportunidade e não uma fuga, se você acha que abrindo sua empresa vai trabalhar menos e ganhar mais, está enganado, a curto prazo isso é muito difícil.

2 – Já de início faça a coisa certa e organize-se, comandar uma empresa é como educar um filho se você esperar ele ficar adolescente para lhe ensinar boas maneiras estará perdido, então mesmo que sua equipe seja pequena implemente metodologias de trabalho para que tudo funcione de maneira organizada. Muitas pessoas confundem organização com maneiras de vigiar seu colaborador ou coisas assim, não é disso que estou falando, a organização é em primeiro lugar uma maneira de dar feed back para o próprio colaborador de como está o trabalho dele e o que os clientes querem.

3 – Não contrate funcionários, faça amigos. Com certeza você vai precisar de ajuda e muita, e é muito melhor você ter amigos trabalhando ao seu lado do que apenas um funcionário, e procure ter a mesma sinceridade que tem com seus amigos com eles, sempre.

4 – Sócio(s), esse assunto é complicado, eu não tenho hoje nenhum sócio mas acredito ser um mal necessário, quando for a hora certa encontrarei um e contarei a vocês ;)

5 – Financeiro, nesse ponto se você é um profissional que vem da área técnica e não tem nenhuma experiência em administrar uma empresa é melhor procurar ajuda, dinheiro é um recurso complicado de gerenciar no início, eu mesmo posso lhes dizer que no início sofri e ainda sofro de um mal que os empresários iniciantes na sua maioria tem, achar que o que a empresa tem de receita é o salário dele, se você acha isso está com sérios problemas. Recentemente contratamos uma consultoria empresarial que está nos ajudando quanto isso, estamos desenvolvendo planos financeiros, de rh e marketing e eis que vos falo amigo, a coisa é necessária :)

6 – Não tenha vergonha de pedir ajuda, e se possível pague por ela, assim como comentei no tópico anterior sentimos a necessidade de alguém especializado em administrar negócios e por isso corremos atrás. Se você vai iniciar sua empresa e não tem conhecimento algum de como gerir o negócio, não espere.

7 – Clientes, essa é a parte boa de uma empresa, ou pelo menos deveria ser. Não sei se vou conseguir expressar o que penso em poucas palavras, mas para mim, você como empresa não está ali para atender clientes mas sim para dar o que for necessário a seus colaboradores para fazer isso, ou seja, são eles que atendem os clientes. Quanto a modelos de contratação e relacionamento com o cliente acredito que exista várias abordagens, mas sempre deixe claro para o cliente que você trabalha no estilo em que ele ganha e você também, tudo é uma parceria e não uma competição.

Bom pessoal se for continuar falando vai faltar tempo e paciência de vocês para continuar lendo, mas o que coloquei acima não são nem dicas nem conselhos mas pontos de vista no quais eu acredito.

Agora para continuar falando sobre o assunto convido uma pessoa que hoje é referência para nós, nosso amigo @carlos da E-Genial, uma empresa que é “Simplesmente notável!”. Vai la Carlinhos.

Grande abraço a todos.

janeiro 11th, 2010Manifesto Flex For Kids

SDC12008-238x300 Durante anos estivemos dedicados ao desenvolvimento de Aplicações Ricas. Durante anos estivemos dedicados a tecnologias como o Adobe Flex, BlazeDS, LiveCycle Data Services, Zend AMF, AMF PHP, Adobe Flash Professional, Flash Media Server, etc. Mas, principalmente, durante anos estivemos dedicados a compartilhar o nosso conhecimento com a comunidade. Na Flex Brasil , na FlexDev e em nossos blogs é provável que você já tenha encontrado algo que procura. E nunca pedimos nada em troca.

O que nos move não é nada material, mas sim a paixão pelo que fazemos e a convicção de que ao nos doar um pouco para a comunidade estamos ajudando e evoluindo conseqüentemente. Por estes mesmos motivos, estaremos todos reunidos dia 06 de fevereiro de 2010.

Temos muitas coisas que amamos para compartilhar com vocês. Porém, desta vez, queremos algo em troca. Algo que com certeza não lhe fará falta, mas que fará a diferença na vida das crianças do Cotolengo . Ganham vocês. Ganhamos nós. E, principalmente, ganham as crianças do Cotolengo.

Assinam o Manifesto:
Beck Novaes, Carlos Eduardo, Daniel Lopes, Ebertom Consolim, Eric Cavalcanti, Fabio Vedovelli, Gabriela Perry, Igor Costa, Igor Musardo, Mario Junior e Vicente Maciel Junior.

Registre-se agora no Flex for Kids e ajude as crianças do Cotolengo . Porque alguém, já ajudou você um dia (e de quebra assista palestras que estão sendo preparadas com a mesma paixão de sempre).

dezembro 17th, 2009Flex For Kids 2010

Flex for Kids

“O Flex for Kids é uma maratona de palestras on-line que será realizado no dia 06/02/2010 e contará com grandes nomes da comunidade Adobe Flex brasileira.”

“Todo dinheiro arrecadado será doado ao Cotolengo de Mato Grosso do Sul. Para conhecer a Cotolengo clique aqui.”

Fica aqui o convite para você também fazer parte dessa iniciativa muito legal. Estarei palestrando.

palestra

Para maiores detalhes sobre o evento e fazer sua inscrição clique aqui.

Abraço a todos e até lá.

junho 26th, 2009Flex Mania – Participe

banner

Flex Mania é um evento que será realizado totalmente on-line, onde vários palestrantes vão falar dos mais variados assuntos sobre desenvolvimento web e design.

inscreva-se palestrantes calendario

Participe.

junho 2nd, 2009Aguardem…

Você acha que a comunidade Flex está "meio parada" últimamente. Então se preparem…

wait

Mais informações em breve….


© 2008 Softwares para Automação Comercial e Desenvolvimento de Software Personalizado | iKon Wordpress Theme by TextNData | Powered by Wordpress | rakCha web directory Clicky Web Analytics