logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!
Nov 4

Spring 3.1 RC1 – Profiles

Escrito por DClick Team em 1, 2.0, 4, 6, Air, app, AR, Banco de Dados, bar, BI, C#, carregar, class, código, dados, demo, Desenvolvimento, Dica, dispatch, Download, err, exemplo, for, framework, Google, ide, IE, if, int, interface, Java, LOB, lógica, novidade, Novidades, O, on, Outros, override, refresh, Release Candidate, RIA, Ria’s Geral, S+S, Sem categoria, site, Spring, SpringFramework, string, Sun, TAT, Teste, Twitter, UI, uint, web, XML, zend @ 11 4th, 2011 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Twitter!


Profiles e Environments no novo Spring 3.1



A SrpingSource adotou a estratégia de soltar mais versões do Spring com mais velocidade e escopos de funcionalidades menores.
Seguindo tal estratégia acabou de sair do forno o primeiro release candidate da versão 3.1 do framework.
Para uma estratégia de escopos menores, até que tiveram bastante trabalho e adicionaram várias novidades. Vamos cobrir as novidades aos poucos, começando com uma muito interessante: Profiles e Environments.

Especificando Profiles nos Beans



A idéia de um profile é simples. Um profile define um escopo, envirnmente como é chamado no framework, em que certos beans estarão disponíveis e outros não.
Imagine que você precisa de uma conexão com o banco de dados de testes, que é diferente do banco de dados de desenvolvimento. Com profiles podemos definir um data source do profile de desenvolvimento, e outro do profile de testes, instanciando o correto de acordo com o ambiente que a aplicação irá rodar.


Anotações



Para especificar um profile no seu bean, basta adicionar a anotação @Profile com o nome do profile correspondente. Lembrando que este é o caso em que seus Beans estão sendo criados pelo component-scan usando package scan. Vamos criar um exemplo pra ficar mais claro o que acontece.
Vamos criar uma interface comum para nossos beans:

1
2
3
4
5
public interface ProfileEspecificBean

String recoverActiveProfile();



Agora vamos criar dois profiles e dois beans diferentes para a mesma interface. Um é o bean de desenvolvimento (dev) e o outro de testes (qa).

1
2
3
4
5
6
7
8
9
10
public final class Profiles

private Profiles()

public static final String DEV_PROFILE = “dev”;

public static final String QA_PROFILE = “qa”;

}


1
2
3
4
5
6
7
8
9
10
11
12
package br.com.dclick.tentativas.beans;

@Component(“profileBean”)
@Profile(DEV_PROFILE)
public class DevEspecificBean implements ProfileEspecificBean

@Override
public String recoverActiveProfile()
return DEV_PROFILE;

}


1
2
3
4
5
6
7
8
9
10
11
12
package br.com.dclick.tentativas.beans;

@Component(“profileBean”)
@Profile(QA_PROFILE)
public class QAEspecificBean implements ProfileEspecificBean

@Override
public String recoverActiveProfile()
return QA_PROFILE;

}



Repare que já anotei os beans com @Profile respeitando os profiles específicos de cada bean.
Agora criamos o arquivo de beans do spring, dei o nome de spring31-test-beans.xml:

1
2
3
4
5
6
7
8
9
10
11
<?xml version=“1.0″ encoding=“UTF-8″?>
xmlns=“http://www.springframework.org/schema/beans”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:context=“http://www.springframework.org/schema/context”
xsi:schemaLocation=“http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd”
>

:component-scan base-package=“br.com.dclick.tentativas.beans” />

>



Feito isso, vamos criar um teste para verificar a lógica de criação dos beans. estou usando JUnit 4.8.1.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class ProfileBeansTest

@Test
public void testProfileDev()

GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.getEnvironment().setActiveProfiles(DEV_PROFILE);
ctx.load(“classpath:spring31-test-beans.xml”);
ctx.refresh();

// Profile de DEV
ProfileEspecificBean profileBean = ctx.getBean(“profileBean”,
ProfileEspecificBean.class);

Assert.assertEquals(DEV_PROFILE, profileBean.recoverActiveProfile());

@Test
public void testProfileQA()

GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.getEnvironment().setActiveProfiles(QA_PROFILE);
ctx.load(“classpath:spring31-test-beans.xml”);
ctx.refresh();

// Profile de QA
ProfileEspecificBean profileBean = ctx.getBean(“profileBean”,
ProfileEspecificBean.class);

Assert.assertEquals(QA_PROFILE, profileBean.recoverActiveProfile());

}



Algumas coisas diferentes estão acontecendo nesse teste.
Estou instanciando um GenericXmlApplicationContext para carregar meus arquivos de beans, isso porque esse application context me disponibiliza um método que é importante para nosso teste: getEnvironment(). Com isso conseguimos acessar o environment do application context, e mais do que isso, conseguimos setar os profiles que estão ativos usando setActiveProfiles. Repare que é possível de setar mais de um profile como ativo, e que os beans podem precisar de mais de um profile para serem instanciados.
Outro fato importante, é que este environment que está disponível, é uma instância de ConfigurableEnvironment. Se você tentar acessar o profile diretamtente em ApplicationContext, você estará acessando um Environment o qual não permite ativar e desativar profiles. Fica a dica.


Após ativar o profile que queremos, basta chamar o load no contexto seguido do refresh para que os beans sejam criados.
Uma vez que o bean foi criado, basta recuperá-lo e executar o teste para se certificaro que se trata do bean que estamos esperando. Note que o nome dos dois beans é o mesmo, e que apenas um deles existe no application context, pois o outro profile não está ativo.

Nested Beans



Outra maneira de definir profiles nos beans é diretamente no XML do spring. Para que isso seja possível foi necessário permitir nested beans nos arquivos de beans, ou seja, definições de beans dentro de outra definição.
Além de possibilitar a definição de diferentes profiles, essa nova funcionalidade permite que sejam definidos alguns padrões de comportamento para os beans que só se apliquem no conjunto de beans que está nested. Mas isto veremos em um próximo post.
Para testar a definição de profiles direto no XML, vamos criar um outro XML chamado spring31-test-nested-beans.xml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version=“1.0″ encoding=“UTF-8″?>
xmlns=“http://www.springframework.org/schema/beans”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:context=“http://www.springframework.org/schema/context”
xsi:schemaLocation=“http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd”
>

profile=“dev”>
class=“br.com.dclick.tentativas.beans.DevEspecificBean” id=“profileBean” />
>

profile=“qa”>
class=“br.com.dclick.tentativas.beans.QAEspecificBean” id=“profileBean” />
>

>



Feito isso, vamos criar um novo teste que é idêntico ao primeiro, com exceção do arquivo de beans especificado, afinal o comportamento deve ser o mesmo em ambos os casos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@Test
public void testProfileDevXml()

GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.getEnvironment().setActiveProfiles(DEV_PROFILE);
ctx.load(“classpath:spring31-test-nested-beans.xml”);
ctx.refresh();

// Profile de DEV
ProfileEspecificBean profileBean = ctx.getBean(“profileBean”,
ProfileEspecificBean.class);

Assert.assertEquals(DEV_PROFILE, profileBean.recoverActiveProfile());

@Test
public void testProfileQAXml()

GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.getEnvironment().setActiveProfiles(QA_PROFILE);
ctx.load(“classpath:spring31-test-nested-beans.xml”);
ctx.refresh();

// Profile de QA
ProfileEspecificBean profileBean = ctx.getBean(“profileBean”,
ProfileEspecificBean.class);

Assert.assertEquals(QA_PROFILE, profileBean.recoverActiveProfile());



Sua barra do JUnit vai ficar verde e você vai ficar feliz com essa brincadeira rápida com profiles.

Ativando Profiles de outras maneiras



Ativa os profiles no código funciona muito bem no caso dos testes, mas o que realmente se aplica a vida real é poder ativar tais profiles de maneira independente da aplicação e do código propriamente dito. Por isso podemos ativar os profiles setando uma variável global chamada spring.profiles.active.
Podemos ativar tal variável de diversas maneiras, dentre elas no próprio web.xml como um parâmetro da sua Servlet do Spring:

1
2
3
4
5
6
7
8
>
-name>dispatcher-name>
-class>org.springframework.web.servlet.DispatcherServlet-class>
-param>
-name>spring.profiles.active-name>
-value>qa-value>
-param>
>



Podemos usar também JNDI, ou até mesmo uma variável de ambiente da VM Java. Se você preferir também pode ativar profiles diretamente no maven:

1
-Dspring.profiles.active=”profile1,profile2″


Fazendo Download



Se você usa o maven, basta adicionar o seguinte no seu pom:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
>
>
>org.springframework.maven.milestone>
>Spring Maven Milestone Repository>
>http://maven.springframework.org/milestone>
>
>

>
>
>org.springframework>
>spring-core>
>3.1.0.RC1>
>
>
>org.springframework>
>spring-beans>
>3.1.0.RC1>
>
>
>org.springframework>
>spring-context>
>3.1.0.RC1>
>
>



Caso você queira baixar diretamente do site, acesse o site do spring.

Espero ter sido útil, qualquer pergunta basta enviar nos comentários.

Por @Gust4v0_H4xx0r

Out 24

Adobe MAX 2011: Design, Photoshop, UX e…

Escrito por DClick Team em 1, 2.0, 3d, 4, Adobe, Air, Android, app, AR, arte, BI, blog, C#, Catalyst, class, Curso, Cursos, demo, Design, designer, Diversos, efeito, efeitos, empresas, err, event, Evento, Eventos, exemplo, Experiência do Usuário, Ferramenta, flash, Flash Catalyst, Flex, for, futuro, game, html, html5, IE, if, image, imagens, impressão, int, interface, lista, Mercado, mg, mobile, novidade, Novidades, O, on, Opinião, Outros, Palestra, Palestras, photoshop, Projetos, rest, RIA, Ria’s Geral, S+S, screen, Screencast, screencasts, social, Software, Sun, TAT, Tecnologia, Tema, Touch, Twitter, UI, UX, web, XP, zend @ 10 24th, 2011 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Twitter!

Antes de mais nada, meu enorme agradecimento a diretoria da DClick, Rafael Martinelli, Rogério Martinelli, e Eduardo Melendez, os quais estavam comigo nesse evento da MAX de 2011.

Como alguns aqui já sabem, fui para a MAX porque ganhei a primeira Season do Agon, nossa rede social interna na DClick.

E claro, estou aqui para trazer as minhas primeiras impressões sobre o evento.
Começo dizendo que de infraestrutura não deixa nada a desejar, é um evento de grande porte, muito bacana, e com uma produção de dar inveja. A abertura do evento possui toda a pirotecnia possível, mas vamos deixar essa parte de lado (que você pode conferir facilmente no youtube) para comentar sobre o conteúdo do evento, que é o mais importante.

Sempre reforço que Design é uma matéria que pertence a UX, e não o inverso, tal como outras demais matérias fazem parte do resultado final que é a Experiência do Usuário, e reforçando o que Rafael Martinelli comentou no seu post, a tecnologia é o meio, e ? no Design não é diferente… ? você pode desenvolver uma User Interface com qualquer ferramenta, e para qualquer estrutura, ou seja, qualquer linguagem, Flex, HMTL5, Android, iOS, etc etc… e claro, a ferramenta gráfica mais poderosa do mercado continua sendo o imbatível Photoshop, na minha humilde opinião… Eu sinceramente estava bastante curioso para ver o que a MAX iria trazer nesse sentido, na área de Interfaces, portanto me escrevi nas diversas Sessions de Photoshop, também na de ROX (Return of Experience, ROI pensando no Usuário) e claro, em uma palestra de Flash Catalyst….

Vou começar falando minha impressão sobre as palestras sobre Photoshop, o que vi foi que não se falou muito, ou quase nada de User Interface, e sim foi mostrado técnicas para fotógrafos e outros designers que visam o tratamento de imagem, ou ainda, a produção de imagens detalhadas com 3D e outros efeitos. Confesso que como AppDesigner que sou, me senti meio orfão, mas não é de se admirar, não há profissionais muito empenhados nesse segmento, nem mesmo lá fora, certamente a Adobe fez uma pesquisa do que seria mais atrativo aos participantes da MAX, e acertou em cheio nas palestras voltadas a tratamento de imagens, pois acaba agradando a todos, mesmo AppDesigners como eu se interessam também pelo assunto, pois também utilizamos tais recursos.

Sobre UI não vi nada de novo, nada que eu já não conheça, mas sobre tratamento de imagens, não exatamente no Photoshop, mas por exemplo no Camera Raw e Adobe Bridge, vi recursos que podem ajudar-nos no dia a dia a sermos mais produtivos, sim, muito mais produtivos.. ? e vou abordar as técnicas que vi em posts futuros. Resta dizer ainda, meio que reforçando os comentários do Rafael, que me surpreendi um tempo e vi um pouco de descaso ao Flash, ao Flex nem se fala, praticamente só ouvi falar do mesmo na Session de Catalyst, mas sobre o Flash, depois seu logo apareceu estampado no telão da general session… ? mas o foco era outro, percebi o que não é novidade para ninguém o quanto a plataforma está voltada para games. E claro, o quanto os games estão voltados para o social.

Mas se teve algo que foi comentado em grande escala em todos os eventos, quer seja a general session ou os eventos segmentados, foi sem dúvida o tão badalado nome do momento: HTML5. Acho que você tanto quanto eu sabe as implicações dessa tecnologia, do que ela depende, etc… mas não cabe aqui discutir isso, e sim que o mercado está aceitando o nome, como uma grife, como algo que as pessoas querem estampar. Eu me lembro do termo Web2.0, baladíssimo, as pessoas citam os termos mas não sabem do que se trata realmente.

Agora chega de blá blá blá e vamos a um resumo da situação.

Photoshop:

A MAX trouxe profissionais que falaram de muitas novidades, não dentro do software, mas extensões, aquele tipo de ferramenta que te ajuda no dia a dia. Se teve algo de novo para mim no Photoshop foi sobre uma palestra de compactação de arquivo JPG, confesso que ouvi coisas que me surpreenderam, e é de uma utilidade absurda. Futuro Post

UX:

Nada de novo, mas o óbvio, que avaliar as possibilidades do estudo centrado no usuário pode trazer um retorno muito maior ao investimento feito nos projetos. Não é novo, mas a maioria das empresas não aplica essa estratégia… ? UX também é um termo que está já meio que saturado, todo mundo fala, ninguém sabe o que é, mas é bonito de se citar… ? Não é bem assim que deveria ser, mas ao que parece, a Adobe também está fazendo o seu papel em educar os seus profissionais e evangelistas sobre esse termo, o que é, e o quanto é importante nos projetos. Logo, foi positivo ver esse posicionamento da empresa sobre o assunto. ROX, Futuro post

Design:

A MAX não é o que podemos dizer de um evento propriamente voltado a esse segmento, para isso existe um evento só sobre Photoshop, onde além de se tratar do software em si, se fala sobre os diversos aspectos do Design. Mas resta dizer que estava impecável o tratamento e cuidado com a matéria, quer seja nos games que vi, aplicações, ou citações nas palestras.

Novidade:

A Adobe trouxe alguns tipos de apps para mobile (Tablet mesmo), que pasmem (até parece.. rs) são para Androids primeiramente, e em breve vão sair para iOS.
Você pode encontrá-las aqui: http://www.adobe.com/products/touchapps.html


Aos poucos estarei trazendo as novidades referente aos temas que abordei em posts ou screencasts. Acompanhem o Blog!!!

Out 21

Android 4.0 – Ice Cream Sandwich – SDK

Escrito por Stefan Horochovec em 1, 2.0, 4, 6, Android, Aplicativos, app, AR, bar, BI, blog, C#, class, configuração, Curso, Desenvolvimento, Download, email, err, erro, for, Google, ide, IE, if, image, imagens, int, mg, O, on, padrão, Pessoal, problema, RIA, Ria’s Geral, runtime, S+S, SDK, SmartPhone, TAT, team, Tema, UI, uint, Widget, Widgets, zend @ 10 21st, 2011 | via http://www.horochovec.com.br/blog | Sem comentários
Stefan Horochovec
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Olá pessoal,

Me deparei com um problema com o Android SDK 4.0 lançado essa sistema e vi que muita gente está sofrendo com o mesmo problema que eu. Um crash inesperado na inicialização do AVD com a seguinte mensagem: “This application has requested the Runtime to terminate it in an unusual way. Please contact the application’s support team for more information.”

Essa semana tivemos o lançamento do Android 4.0 pela Google. Eu particularmente me identifico muito com o Android, possuo a alguns anos smartphones que rodam o sistema e sou instrutor de um curso de Android SDK em parceria com a RIACycle. Não sou um doido varrido pelo Android, mas realmente gosto de todo o seu ecossistema. Pelo fato de eu gostar tanto, desenvolver em cima da plataforma e por ser instrutor do SDK, já fui fazendo o download do novo SDK para conferir um pouco da nova versão Ice Cream Sandwich.

Alguma coisa foi alterada no ADB que algumas das minhas imagens antigas simplesmente não eram mais executadas, sempre dava o mesmo erro na hora de inicializar. Para resolver o problema, eu tive que reduzir a quantidade de memória disponibilizada para a emulação, por padrão, sempre utilizei 1GB, mas só funcionou com 512MB.

Outra situação que está fazendo crash independente da quantidade de memória, é quando eu adiciono na configuração do Hardware a propriedade “Camera Support”, sempre dá crash e não consigo iniciar o emulador.

E por fim, o último problema que eu tive foi com a opção “Launch from snapshot”. Todas as tentivas no Android 4.0 deram erro, sempre tive que iniciar com a opção “Wipe user data” selecionada.

Bom pessoal, tirei algumas telas para que vocês possam conferir a imagem para desenvolvimento. Por enquanto é isso!

Boas vindas

Boas vindas

Aplicativos

Aplicativos

Aplicativos

Aplicativos

Widgets

Widgets

Discador

Discador

Navegador

Navegador

Navegador

Navegador

Status do celular

Status do celular

Email

Email

Recebendo ligação

Recebendo ligação

Atendendo Ligação

Atendendo Ligação

Ligação Atendida

Ligação Atendida

SMS

SMS

Notification Bar

Notification Bar

Espero ter ajudado quem está com dificuldades com o novo ADB.

Um abraço e até a próxima

Out 10

Adobe Max 2011: Open your mind

Escrito por DClick Team em 1, 2.0, 3d, Adobe, Adobe Max, Air, análise, Android, Aplicativos, app, apple, AR, arte, BI, browser, C#, cliente, código, código fonte, comunidade, conferência, css, dados, demo, Desenvolvedor, desenvolvedores, Desenvolvimento, Design, designer, Desktop, developer, DRE, Dreamweaver, err, Experiência do Usuário, facebook, Ferramenta, flash, Flex, fonte, for, Formação, Formulário, Formulários, futuro, game, Google, html, html 5, IE, int, jogo, JQuery, Microsoft, novidade, Novidades, O, on, padrão, Palestra, Pessoal, problema, progress, ps3, RIA, Ria’s Geral, S+S, SDK, Sugestões, tag, TAT, Tecnologia, Teste, tv, Twitter, UI, Vários, Ved, vs, XP, zend @ 10 10th, 2011 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Twitter!

Esta foi a 7a edição da Adobe Max que pude acompanhar pessoalmente. Posso dizer com propriedade que está foi a Max que menos vi novidades, mas talvez foi a mais importante que tive a oportunidade de participar. Antigamente ficava colocando novidades técnicas. Agora pretendo fazer você pensar.

No ano passado estava muito forte a velha estória de Flash vs Html 5 e, de certa maneira, isso ainda persiste na mente de muitas pessoas. Ficou muito claro que para a Adobe isso não é um problema. Não podemos esquecer que na essência, a Adobe é uma empresa que desenvolve ferramentas para facilitar a vida de Designer, Arquitetos de Informação, Developers etc. A Adobe nunca foi contra o Html 5, inclusive ela sempre fez parte do W3C participando da definição dos padrões do Html 5. Vi progressos de ferramentas como o Adobe Edge e integrações do Dreamweaver com JQuery e PhoneGap muito interessantes. Alias a Adobe comprou a PhoneGap como vocês já sabem.

Mas e o flash? Confesso que no meio da conferência coloquei no twitter: “Acho que pela primeira vez o flash vai morrer”. Disse isso vendo as maravilhas que a Adobe estava mostrando com CSS e Html 5 e algumas sugestões que eles estavam fazendo para o W3C. Depois analisei com mais calma e acho que me precipitei. O flash tem um longo caminho pela frente, mas acho que ele vai ocupar espaços específicos. Vejo o flash usado em totens, aplicações com consumo grande dados, que abusem de processamento (flash agora usa GPU), aplicações internas específicas, games, 3D etc. Veja esta experiência: http://www.nissan-stagejuk3d.com/. Isso ainda vai ser flash por um bom tempo.

Na conferência vimos os melhores games rodando em Flash. Esse é um caminho sem volta e quem sabe no futuro você não precise mais de seu PS3 ou Xbox e faça isso na sua próxima TV com flash ou no seu próprio micro. Também vimos a Adobe muito bem posicionada para o desenvolvimento de apps para dispositivos móveis. Um código fonte para iOS e Android, só a Adobe consegue isso hoje. Até conseguimos fazer apps com html 5 e CSS, mas os apps desenvolvidos com as ferramentas da Adobe nos dão uma performance melhor. Além de tudo, desenvolvimento para desktop com AIR também é imbatível e agora com Native Extensions, o céu é o limite.

Ficou claro que aplicações tradicionais com formulários e transações serão em Html 5. Eu já fui em vários clientes e pergunta era sempre a mesma: “Funciona no iPad?”. Sabemos que o certo seria fazer um app específico e que os tablets e dispositivos móveis requerem iterações específicas. Mas nossos clientes e usuários querem acessar suas aplicação do seu browser de qualquer lugar e de qualquer dispositivo.

Então é isso? E a compatibilidade do browser? E a facilidade do SDK do Flex? E a carga de testes vai aumentar? A resposta é que esse é um caminho sem volta. E o melhor de tudo é que isso é uma grande oportunidade para todos. Vamos sim enfrentar o velho problema de compatibilidade de browsers, fabricantes e desenvolvedores de browsers querendo cada um “impor” o seu padrão. Mas quando grandes como Microsoft, Apple, Google, Facebook e Adobe dizem que este é o caminho, é melhor refletirmos sobre isso. Até grandes desenvolvedores da comunidade Flex falam sobre isso. Vi uma palestra do Grant Skinner sobre um jogo que ele fez em html 5 usando canvas.

Na DClick nós sempre falamos que a tecnologia é meio. O mais importante é a solução e a experiência do usuário. Se para o usuário não acessar sua aplicação de um tablet ou um celular é um problema, isso é um problema de experiência. Somos muito conhecidos pelo uso do Flex e Flash e temos muito orgulho disso, mas Html 5, JQuery, CSS etc, também são realidade para nós. Novamente, tecnologia é meio.

Para mim, não existe tecnologia “matadora” para tudo. Cada problema tem a melhor solução. Cada tecnologia tem seus prós e contras. Não perca o seu tempo “pixando” uma ou outra tecnologia. Veja o que cada uma pode trazer de benefício para você, seus aplicativos e seus clientes. Estude. E o mais importante, Seja feliz!

Out 6

Steve Jobs, 1955 – 2011

Escrito por Kelps Sousa em .NET, 1, 2.0, 4, 6, app, apple, AR, bar, BI, blog, C#, Carreira, demo, Desenvolvedor, Desenvolvimento, Design, efeito, Experiência do Usuário, for, Google, ide, if, int, lista, Mac, map, Mercado, mg, Microsoft, News, O, on, Outros, produto, pronunciamento, rest, RIA, Ria’s Geral, S+S, silverlight, Software, Sun, TAT, Tecnologia, Teste, Touch, Twitter, UI, UX, Ved, web, window, windows, XP, zend @ 10 6th, 2011 | via http://kelps-sousa.blogspot.com/ | Sem comentários
Kelps Sousa
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Não sou um Mac, sou um PC, mas isso não muda em nada o fato de que o mundo ficou um pouco mais feio e triste hoje, com a perda de Steve Jobs para um câncer de pâncreas.

Homenagem na Wired.com ?  Steve Jobs Nota na Apple.com sobre o falecimento de Jobs.

Desde quando comecei minha carreira como desenvolvedor, em 2000, eu trabalho com PCs e tecnologia primariamente da Microsoft, então acho que deve ser no mínimo estranho me ver fazendo aqui um post sobre o falecimento de Steve Jobs, mas ninguém pode negar que ele revolucionou todo o mercado de tecnologia.

Minha carreira começou como programador web, mas eu sempre me interessei bastante em fazer as coisas de forma a serem simples para o usuário (e se possível, para o desenvolvedor também). Na época esse conceito não tinha um nome nem era muito difundido, mas hoje chamamos de UX (experiência do usuário). Em toda minha carreira eu me dediquei a criar software seguindo o que considerava a melhor experiência possível. Comecei a focar mais intensamente nessa área a partir de 2007, com o surgimento do Silverlight e a crescente atenção dada pelo Microsoft ao assunto. Hoje, sou o especialista de UX e novas tecnologias na empresa onde trabalho e adoro o que faço. Devo muito ao Steve, pois se há alguém responsável por UX finalmente ter se tornado um assunto importante, ele foi esse alguém.

O único iProduto que tenho é um iPod Touch, que foi comprado 6 meses atrás quando eu estava ajudando em um projeto para portar uma aplicação de iOS para Windows Phone 7. É um bom aparelho e não me arrependo da compra, mas uso apenas para jogar e fazer testes de desenvolvimento.

Apesar de eu não ser muito fã da linguagem de design dos softwares da Apple, é impossível negar o impacto que eles têm no nosso mercado atual. Steve mudou o mundo ao mostrar que a experiência do usuário é o mais importante, não a tecnologia. As coisas devem ser fáceis de usar, simples de entender, práticas e belas ao mesmo tempo. Se não tiver esses 4 requisitos, não terá o sucesso que poderia ter.

A morte de Steve serve também para mostrar que ele era humano, como nós. Um humano extraordinário, mas humano, o que significa que todos temos esse potencial de mudar o mundo, fazer a diferença, mas apenas poucos conseguimos.

Para mostrar como Steve Jobs foi importante, basta olhar para quem já fez algum pronunciamento sobre seu falecimento e prestar atenção na mensagem que cada um tentou passar: Bill Gates, Barak Obama, Michael Bloomberg, Steve Wozniak, e muitos outros que nem dá pra citar aqui.

Por tudo isso, obrigado Steve. O mundo ficou um pouco mais feio e triste hoje. Meus mais sinceros sentimentos a todos seus amigos e familiares. Descanse em paz.



Out 1

Fui nomeado MVP em Silverlight por mais 1 ano!

Escrito por Kelps Sousa em .NET, 1, 4, 6, AR, arte, blog, C#, comunidade, Desenvolvimento, for, Google, map, mg, Microsoft, News, novidade, Novidades, O, on, Ria’s Geral, S+S, silverlight, Tecnologia, UI, XAML, zend @ 10 1st, 2011 | via http://kelps-sousa.blogspot.com/ | Sem comentários
Kelps Sousa
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

MVP_Horizontal_FullColor

Acabei de receber o comunicado oficial da Microsoft de que fui nomeado como MVP de Silverlight pelo segundo ano consecutivo.

Devo esse título a todos vocês que, assim como, eu adoram essa tecnologia. Estou muito animado com todas as novidades que a Microsoft vem anunciando e com a crescente importância que o XAML está ganhando em todas suas principais plataformas de desenvolvimento. Espero continuar fazendo parte dessa comunidade por muitos anos ainda.

Que venha mais um ano de muito XAML para todos nós!



Set 26

Gestão 3.0 – Para Líderes Ágeis – Parte 2

Escrito por Edgard Davidson em 1, 2.0, 4, 6, Agile, AR, arte, auto, back, blog, C#, camp, class, dados, Desenvolvimento, Desenvolvimento de Software, developer, dynamic, e-learning, event, Evento, Eventos, for, game, gestão, ide, IE, if, image, int, jogo, Jogos, lite, Livro, Mate, Mestrado, mg, O, on, Outros, Pessoal, processo, Projetos, pt, RIA, Ria’s Geral, S+S, social, Software, Sun, TAT, Tema, UI, UX, XP, zend @ 09 26th, 2011 | via http://edgarddavidson.com | Sem comentários
Edgard Davidson
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Ol? Pessoal.

Este ? o segundo post de uma s?rie de post's que estou fazendo, em formato de resenha. Como partida, estou lendo o livro Management 3.0 Leading Agile Developers, Developing Agile Leaders e sintetizando ele aqui. Confira aqui a parte 1.

Teoria dos sistemas complexos


A teoria dos sistemas complexos ? uma teoria advinda da matem?tica que se concentra em entender porque alguns tipos de sistemas s?o est?veis e porque alguns outros tipos n?o s?o. Levando para o campo de desenvolvimento de software a referida teoria nos ajuda a explicar porque alguns projetos s?o est?veis e porque outros n?o s?o.

Desenvolvimento de software pode ser visto como um sistema complexo adaptativo, onde as intensas intera??es e feedbacks fornecem oportunidade de melhoria aprendizado e conhecimento.

MULTIDISCIPLINARIDADE

A ideia de segregar pessoas que fazem trabalhos diferente oferece um impacto negativo ? performance da organiza??o. Esse tipo de segrega??o promove silos/feudos funcionais que dificultam a comunica??o e a amplifica??o do aprendizado e conhecimento na dimens?o ontol?gica da organiza??o (veja a teoria da cria??o do conhecimento). Corroborando com os princ?pios do manifesto ?gil, a teoria da complexidade tamb?m ? a favor da forma??o de equipes multidisciplinares.

O CORPO DE CONHECIMENTO DE SISTEMAS

N?o h? uma ?nica defini??o gen?rica para explicar a complexidade, cada sistema ? diferente, peculiar e por vezes suas defini??es s?o complementares, as vezes sobrepostas e as vezes contradit?rias. No entanto, existem v?rios estudos que se concentram em diferentes ?reas e que trouxeram uma contribui??o significativa para o campo dos sistemas complexos: Entre esses estudos est?o: a teoria evolucion?ria (evolutionary theory), a teoria dos jogos (game theory) a teoria do caos (chaos theory), a teoria dos sistemas din?micos (dynamical systens theory), entre outras. A figura abaixo apresenta o corpo de conhecimento de sistemas.

SIMPLICIDADE: UM NOVO MODELO

“Simplicidade normalmente est? relacionada com peso (o qu?o dif?cil ?) para algu?m tentar explicar ou entender algo. Qualquer coisa que ? f?cil de entender ou explicar ? simples, em contraste com algo complicado.”

Antes de discutir simplicidade, faz-se necess?rio entender cada terminologia abaixo:

  • Simples: f?cil de entender
  • Complicado: muito dif?cil de entender
  • Ordenado: totalmente previs?vel
  • Complexo: um pouco previs?vel (mas com muitas surpresas)
  • Ca?tico: completamente imprevis?vel

Na literatura, alguns modelos diferenciam a referida terminologia, como os modelos de David Snowden, que descreve um modelo contendo quatro dom?nios(simples, complicado, complexo e ca?tico) e modelo de Ralph Stacey que cria algo similar. Ele mostra o simples, complicado, complexo, e ca?tico, como quatro ?reas com base em duas dimens?es: o grau de concord?ncia e o grau de incerteza.

A NOVA ERA: PENSAMENTO COMPLEXO (COMPLEXITY THINKING)

Quando voc? aplica a teoria de sistemas complexos (complex systems theory) em desenvolvimento e gerenciamento de software, voc? est? tratando sua organiza??o como um sistema.

A din?mica do sistemas(System dynamics) – n?o confunda com a teoria dos sistemas din?micos(dynamical systems theory), foi uma das primeiras t?cnicas criadas para mostrar como eventos aparentemente simples podem causar comportamentos inesperadas na organiza??o.

A System dynamics percebe a organiza??o como uma estrutura interligada e mutuamente dependente das partes. A System dynamics tem ajudados os gestores ? melhorar sua compreens?o dos processo de neg?cio.

Uma outra t?cnica similar ? chamada de pensamento sist?mico (systems thinking), popularizada no livro The Fifth Discipline (que tamb?m pretendo fazer resenhas dele aqui no blog :) ). Essa t?cnica aborda o entendimento de como o pensamento influencia o outras partes como um todo e defende que o primeiro passo para se tornar uma organiza??o de aprendizagem ? ela compreender, como um sistema hol?stico, o que ela faz e como realmente faz.

O estudo da complexidade em sistemas sociais ? chamado de complexidade social (social complexity). A complexidade social ? o estudo de grupos sociais em sistemas adaptativos complexos.

System dynamics e systems thinking percebem a n?o linearidade, mas eles ainda partem da ideia que, de alguma forma, a alta ger?ncia constr?i o “tipo certo” de organiza??o que produz o “tipo certo” de resultado. Entretanto, atualmente os gestores percebem que para gerenciar a complexidade social, eles precisam entender como as coisas “emergem” e n?o como elas s?o “constru?das”. O modelo de gest?o 3.0 aplica o pensamento complexo (complexity thinking) e assume que os gestores n?o podem construir nem dirigir uma equipe auto-organizada. Em vez disso, a equipe deve emergir naturalmente. O modelo reconhece que organiza??es produtivas n?o s?o gerenciadas dirigidas por modelos e planos. Em vez disso, deve emergir atrav?s do poder da evolu??o da auto-organiza??o.

Obs: Para mim esses assuntos s?o complicados. Portanto, sinta-se a vontade para criticar, corrigir ou acrescentar valor nos coment?rios.

Set 11

Teoria da criação do conhecimento

Escrito por Edgard Davidson em 1, 2.0, 4, 6, AR, BI, C#, dynamic, for, git, IE, if, int, lógica, map, mapa, Mestrado, mg, O, on, Outros, Partilha, processo, RIA, Ria’s Geral, RoR, S+S, social, XP, zend @ 09 11th, 2011 | via http://edgarddavidson.com | Sem comentários
Edgard Davidson
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Na defini??o da teoria da cria??o do conhecimento organizacional [Nonaka e Takeuchi, 1995] definiram duas dimens?es para a cria??o do conhecimento:

i) a dimens?o epistemologica: onde ? feita uma distin??o entre o conhecimento t?cito e o expl?cito para a cria??o do conhecimento. Essa distin??o corrobora com a estabelecida por [Polanyi, 1967]. O conhecimento t?cito ? individual, pertence a pessoa ? espec?fico ao contexto e ? dif?cil de ser registrado e compartilhado. J? o conhecimento expl?cito pode ser registrado em meios f?sicos ou digitais em linguagem natural, formal, ou sist?mica;

ii) a dimens?o ontol?gica: onde enfatiza a cria??o do conhecimento organizacional em oposi??o ? cria??o do conhecimento individual, passando por v?rios n?veis de cria??o do conhecimento (individual, grupal, organizacional e inter-organizacional). Segundo [Nonaka e Takeuchi, 1995] o conhecimento s? pode ser criado pelos indiv?duos. O papel da organiza??o ? apoiar e motivar os indiv?duos criativos e lhe proporcionar um ambiente adequado para a cria??o do conhecimento. Neste contexto, o conhecimento organizacional ? o resultado do conhecimento individual amplificado, registrado e mantido pela organiza??o.

Na teoria da cria??o do conhecimento organizacional, conforme ilustrado na figura do espiral do conhecimento, as dimens?es epistemol?gica e ontol?gica suportam o “`espiral”' da cria??o do conhecimento [Nonaka e Takeuchi, 1995]. A referida espiral surge quando, por meio de intera??es entre o conhecimento t?cito e o conhecimento expl?cito, existe uma amplifica??o do conhecimento come?ando pelo conhecimento do indiv?duo, passando pela forma??o do conhecimento do grupo, estabelecendo o conhecimento da organiza??o e por fim convergindo no conhecimento da interorganiza??o.

No centro dessa teoria, conforme ilustrado na figura no modelo SECI abaixo, est? os quatro modos de convers?o do conhecimento criados a partir da intera??o entre t?cito e expl?cito. Esses modos de convers?o foram um modelo que descreve como o conhecimento t?cito ? criado atrav?s da socializa??o, convertido de t?cito para expl?cito atrav?s da externaliza??o, recombinado com outras formas de conhecimento expl?cito atrav?s da combina??o e convertido, novamente, em conhecimento t?cito atrav?s da internaliza??o.

i) socializa??o: quando o conhecimento t?cito se amplifica e ? formado um novo conhecimento t?cito. A socializa??o acontece quando h? compartilhamento de experi?ncias por meio observa??es, de forma emp?rica, diretamente de um indiv?duo para outro, com utiliza??o de linguagem ou apenas atrav?s de observa??es.

ii) externaliza??o: quanto o conhecimento t?cito se amplifica e ? formado um novo conhecimento expl?cito. A externaliza??o acontece quando o conhecimento t?cito ? registrado e pode ser compartilhado em um formato documental, met?fora, mapa mental, modelos, conceitos, hip?teses, etc.

iii) combina??o: quanto o conhecimento expl?cito se amplifica e ? formado um novo conhecimento expl?cito. A combina??o acontece quando um conhecimento j? externalizado ? compilado com outros conhecimento tamb?m j? extenalizados a fim de gerais um novo conhecimento externalizado. Normalmente a combina??o ocorre atrav?s de documentos, reuni?es, conversas ao telefone ou em comunica??o computadorizada.

iv) internaliza??o: quando o conhecimento expl?cito se amplifica e ? formado um novo conhecimento t?cito. A internaliza??o acontece quando o indiv?duo sintetiza e incorpora??o um conhecimento explicito para seu conhecimento t?cito. A internaliza??o ? concebido com o “aprender fazendo”, e incorpora no indiv?duo o “knowhow” t?cnico.

Seci

O paradigma de [Nonaka e Takeuchi, 1995] sobre a cria??o do conhecimento destaca tanto o processo de cria??o do conhecimento quanto as condi??es sob as quais o conhecimento ? criado. Essencial para esse paradigma ? a intera??o entre o conhecimento t?cito e expl?cito. A cria??o do conhecimento ? uma espiral, conforme ilustrado na figura do espiral do conhecimento e descrita pelo modelo SECI.

Refer?ncia:

[Nonaka e Takeuchi, 1995] Ikujiro Nonaka and Hirotaka Takeuchi. The knowledge-creating company: how Japanese companies create the dynamics of innovation. Oxford University Press, New York, 1995.

[Polanyi, 1967] Michael Polanyi. The tacit dimension. An anchor book: philosophy. Doubleday, Garden City, NY, 1967.

Jul 24

Princípios de Projeto OO – Single Responsibility Principle (SRP)

Escrito por Edgard Davidson em 1, 2.0, 4, 6, Agile, Air, api, AR, BI, blog, Blogs, boolean, C#, camp, class, classe, classes, dados, Design, Design Pattern, Design Patterns, Dica, for, ide, if, image, int, Java, mg, Microsoft, MSDN, O, on, pattern, POO, pt, RIA, Ria’s Geral, S+S, Software, TAT, UI, UML, zend @ 07 24th, 2011 | via http://edgarddavidson.com | Sem comentários
Edgard Davidson
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Princ?pio da ?nica Responsabilidade:

“Nunca deve haver mais de um motivo para uma classe ser alterada”

Cada responsabilidade constitui-se uma dimens?o de mudan?as. Se uma classe tem mais de uma responsabilidade, ent?o haver? mais de uma raz?o para alter?-la. Quanto mais responsabilidades h? numa classe, mais fr?gil (maior risco de para de funcionar) torna-se o projeto.

Viola??o do princ?pio:

Considere a Classe TAD:

import java.util.Vector;

/**
 *
 * @author Edgard Davidson
 */
public class TAD 

    private Vector vector;

    public TAD()
        vector = new Vector();

    public void empilhar(Object element)
        vector.insertElementAt(element, 0);

    public Object desempilhar()
        if (!this.eVazia())
            Object result = vector.firstElement();
            vector.removeElementAt(0);
            return result;
         else
            return null;

    }

    public void enfileirar(Object element)
        vector.add(element);

    public Object desenfileirar()
        if (!this.eVazia())
            Object result = vector.firstElement();
            vector.removeElementAt(0);
            return result;
         else
            return null;

    }

    public int obtemTamanho()
        return vector.size();

    public boolean eVazia()
        return vector.isEmpty();

}

Como pode ser visto, a classe TAD (Tipo Abstrato de Dados) ? uma classe que possui mais de uma responsabilidade. Ela implementa o contrato de um Pilha com os m?todos (empilha e desempilha) e o contrato de uma Fila com os m?todos (enfileira e desenfileira). A classe TAD viola o princ?pio da ?nica responsabilidade. Para se adequar ao princ?pio, ? necess?rio aplicar a refatora??o Extrair Classe. Essa t?cnica de refatora??o ? a mais indicada para o caso da viola??o do SRP. Sempre que houver uma classe fazendo o trabalho que deveria ser feito por duas classes, aplique a referida refatora??o para criar uma nova classe movendo os campos e m?todos pertinentes da classe antiga para a classe nova.

Al?m de aplicar a refatora??o Extrair Classe, na adequa??o ? viola??o do princ?pio, foi renomeado tamb?m a classe TAD, que n?o possuia um nome significativo ao seu contrato. Ap?s aplica??o de Refatora??o temos:

Adequa??o ao princ?pio:

Antes de mostrar a solu??o, a figura abaixo ilustra o contrato de uma Pilha e o contrato de uma Fila. Ambas s?o estruturas de dados com comportamentos diferenciados. A pilha implementa um algoritmo de LIFO (Last In, First Out), o ?ltimo a entrar ? o primeiro a sair. J? a fila implementa um algoritmo de FIFO (First In, First Out), o primeiro a entrar ? o primeiro a sair.

O diagrama de classe original foi refatorado e a classe TAD foi renomeada para Pilha e todos os m?todos referentes ao contrato de uma fila, ap?s aplicado o Extrair Classe e foram movidos para a classe Fila

Implementa??o da classe Pilha

import java.util.Vector;

/**
 *
 * @author Edgard Davidson
 */
public class Pilha 

    private Vector vector;

    public Pilha()
        vector = new Vector();

    public void empilhar(Object element)
        vector.insertElementAt(element, 0);

    public Object desempilhar()
        if (!this.eVazia())
            Object result = vector.firstElement();
            vector.removeElementAt(0);
            return result;
         else
            return null;

    }

    public int obtemTamanho()
        return vector.size();

    public boolean eVazia()
        return vector.isEmpty();

}

Implementa??o da classe Fila

import java.util.Vector;

/**
 *
 * @author Edgard Davidson
 */
public class Fila 

    private Vector vector;

    public Fila()
        vector = new Vector();

    public void enfileirar(Object element)
        vector.add(element);

    public Object desenfileirar()
        if (!this.eVazia())
            Object result = vector.firstElement();
            vector.removeElementAt(0);
            return result;
         else
            return null;

    }

    public int obtemTamanho()
        return vector.size();

    public boolean eVazia()
        return vector.isEmpty();

}

Com essa nova implementa??o, a classe Pilha e a classe Fila s?o extremamente coesas, possuem apenas um prop?sito, uma ?nica responsabilidade e apenas um contrato

Outras refer?ncias

  • http://engenhariadesoftwareagil.com/?p=236
  • http://www.objectmentor.com/resources/articles/srp.pdf
  • http://davidhayden.com/blog/dave/archive/2005/05/29/1066.aspx
  • http://c2.com/cgi/wiki?SingleResponsibilityPrinciple
  • http://msdn.microsoft.com/en-us/magazine/cc546578.aspx
  • http://codebetter.com/blogs/david_laribee/archive/2008/09/09/why-solid-gimme-an-s.aspx
  • Head First Design patterns. pags 185, 336, 339, 367
  • Agile Principles, Patterns, and Practices in C#.
  • UML for Java Programmers
Jul 19

Body Online Suplementos Nutricionais

Escrito por Cognitiva Soluções em .NET, 1, 2.0, 3.5, 4, 6, AR, BI, blog, Blogs, C#, camp, campanha, cliente, consultoria, e-commerce, Google, IE, image, int, internet, mg, News, O, on, online, Redes Sociais, rest, RIA, Ria’s Geral, S+S, serviço, tv, UI, zend @ 07 19th, 2011 | via http://blog.cognitivasolucoes.com | Sem comentários
Cognitiva Soluções
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

A Cognitiva Soluções Empresariais está prestando consultoria a Loja Virtual Body Online Suplementos Nutricionais.

Acesse a Loja aqui.

Estamos prestando serviço de assessoria e-commerce. Fazendo campanhas publicitárias em redes sociais e na internet. Assim, nosso cliente entrará com o pé direito nesse novo mundo de possibilidades ilimitadas.

« Entradas anteriores | Entradas recentes »

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 2791 entradas vindas de 53 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos

GOOGLE

Votação


Deveria o RedeRia agregar conteúdo em inglês?
Ver Resultados

AUTORES


Eduardo KrausAlexandre TadashiBindableCognitiva SoluçõesDaniel LopesDaniel SchmitzDanielPedrinhaDClick TeamEbercomEdgard DavidsonElvis FernandesErko BrideeFabiel PrestesFábio Batista da SilvaFabio da SilvaFabriccio BernardesFelipe BorellaFlavia MoreiraGabriel VersalliniGabriela T. PerryIgor MusardoJanderson CardosoJoão AugustoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalLuis MessiasLuiz TarabalMario JuniorMário SantosMauro MartinsPablo SouzaPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSamuelFacchinelloSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimWillian ManoXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com