logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!
Jan 30

Amplie seu conhecimento com o livro jQuery Mobile na prática

Escrito por Daniel Schmitz em 1, AR, BI, C#, exemplo, Exemplos, framework, html, IE, JQuery, Livro, mobile, O, on, Outros, Ria’s Geral, S+S, UI @ 01 30th, 2012 | via http://flex.etc.br | Sem comentários
Daniel Schmitz
? 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 »

Já está aberta a venda do livro jQuery Mobile na Prática. Por apenas R$ 10,00, você terá a chance de conhecer este framework do melhor jeito possível, através de exemplos práticos!

O lançamento ocorrerá no dia 27/02.

Muitas surpresas estão por vir, aguarde!

http://www.danielschmitz.com.br/jquery-mobile-na-pratica.html

Dez 14

Mudanças para 2012

Escrito por Daniel Schmitz em 1, 2.0, 4, 6, Adobe, Adobe Air, Adobe Flex, Air, api, app, AR, auto, BI, blog, C#, class, cultura, Desenvolvimento, Dica, Diversos, email, exemplo, Flex, for, Formação, framework, Frameworks, html, html 5, ide, IE, if, Java, Javascript, JQuery, Livro, Livros, Mate, mg, mobile, mudanças, NaN, Notícias, O, on, Opinião, processo, prova, pt, Revistas, RIA, Ria’s Geral, S+S, site, Sugestões, Sun, Tecnologia, Tema, UI, XP @ 12 14th, 2011 | via http://flex.etc.br | Sem comentários
Daniel Schmitz
? 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 »

2012 será mais um ano de ascensão dos dispositivos mobile em todo o mundo. Mesmo que aqui no Brasil tudo seja mais lento, com preços mais altos, estamos seguindo em frente. Já temos frameworks javascript adaptados ? s telinhas, como o Sencha, ? e o jQueryMobile, além do Flex Mobile, claro. Outras tecnologias estão crescendo a cada dia, e a quantidade de informação que é “jogada” para nós programadores aumenta em um ritmo alucinante. Seguindo esta tendência, estamos também nos adaptando, e para que tudo fique bem claro ao leitor, decidi comentar as principais mudanças do site neste post.

Neste novo ano estaremos adotando algumas mudanças que visam melhorar a qualidade de nossas obras. As principais mudanças que estão por vir são:

1)? Fim do suporte por email: Nestes quatro anos de suporte por email, pude observar diversos prós e contras, e sempre tentei agradar a “gregos e troianos”. Nunca fiz nenhuma distinção de quem comprou ou quem não comprou meus livros, sempre respondendo as dúvidas em menos de 48 horas. Todo esse tempo foi um aprendizado enorme, e agora tenho a necessidade de “lapidar” este processo de suporte. Observei que muito das dúvidas dos leitores eram repetidas e que sempre respondia ? s mesmas questões. Observei também que, ? s vezes, dava prioridade a alguém que não tinha comprado um livro, e deixava “na fila” uma outra pessoa que tinha dúvidas relativas aos livros. Também cheguei ao ponto de responder 10, 15 e-mails por dia, tornando uma tarefa bastante trabalhosa. Neste contexto, estarei “movendo” o suporte para um fórum especial, aberto a qualquer pessoa e destinado a sanar dúvidas dos livros. Falarei mais deste fórum em um outro post, mas deixo claro que, para quem é leitor, terá como sempre o suporte 100% garantido.

2)? eBOOKs serão predominantes: Todo o processo de criação/distribuição de um ebook é perfeito aos olhos do autor se não fosse a pirataria. Realmente encontrar meus livros que consumiram várias horas de preparo e trabalho nos torrents por aí não é uma sensação boa. Mas eu quero acreditar que isso é possível! Eu quero acreditar que o brasileiro é gente honesta, que deseja pagar por um conteúdo útil sem ser “assaltado”. Por isso, em 2012, eu vou priorizar o desenvolvimento de eBooks, cobrando um preço justo, e com a meta de criar muito mais ebooks do que já foi criado atualmente.

3)? Flex não será prioridade: Nestes últimos quatro anos tenho me dedicado muito ao Flex. Fui o primeiro a escrever um livro sobre Adobe Flex no Brasil e desde então foram quase 10 livros abordando o tema. Sei que está chegando o momento em que eu terei que “dissipar” o meu conhecimento para outras áreas, pois o tema Flex já está bastante difundido, felizmente hoje em dia existe bastante conteúdo dedicado a cultura Flex e só não aprende quem não quer. Veja que, para quem escreve livros, as tecnologias saturam, mas não morrem. Este é o caso do Flex, o conteúdo está saturado, eu não tenho muito mais a escrever, por isso o foco será distribuído para outras áreas. O livro “Adobe Air em Ação” será o último livro a ser escrito para a tecnologia Flex, e não haverá mais edições previstas. O suporte continuará normalmente para quem comprou qualquer livro sobre Flex.

4)? Mobile será prioridade: Daremos certa prioridade ao desenvolvimento mobile, e dependendo de novas tecnologias que deverão surgir, estaremos pesquisando e publicando material sobre elas. Isso significa que determinados livros poderão conter menos páginas, por exemplo, 100, mas que expliquem um conceito ou tecnologia emergente.

5)? Tendências serão prioridade:? A rapidez com que uma tecnologia emerge abre uma lacuna de desinformação para nós tupiniquins. E a? idéia? é preencher esta lacuna com um livro. Por exemplo, ainda não temos um livro sobre SENSHA, muito menos EXTJS. Um livro sobre HTML 5, custa nada mais, nada menos que 73 reais. Nem temos um livro sobre a linguagem SCALA ou sobre DJANGO. Enfim, existe muito assunto para se escrever.

6)? Site flex.etc.br deixa de conter informações sobre os livros:? Todas as informações estarão no site danielschmitz.com.br. O blog flex continua, mas aos poucos deixará de ser atualizado.

Resumindo:

- Vamos publicar ebooks com qualidade e a preços atraentes, sobre diversos temas. Contamos com a aprovação de vocês, enviando críticas e sugestões, .

- Haverá um fórum dedicado ao suporte dos livros.

- Estaremos em breve publicando quais serão os primeiros eBooks a serem lançados e contamos com a sua opinião. Mande ideias !

Dez 8

JQuery: Compatibilidade de CSS com utilização de cssHooks.

Escrito por DClick Team em .NET, 1, 2.0, action, api, AR, BI, blog, browser, C#, código, css, css3, custom, demo, Desenvolvedor, desenvolvedores, Desenvolvimento, Design, development, Dica, Diversos, efeito, efeitos, err, exemplo, explorer, Ferramenta, filter, for, function, html, IE, if, image, int, internet, Introdução, Java, Javascript, JQuery, lógica, Microsoft, NaN, O, object model, on, Outros, padrão, problema, Projetos, pt, RIA, Ria’s Geral, S+S, Sem categoria, site, TAT, Twitter, UI, Ved, web, XP @ 12 8th, 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!


Introdução

Um desafio de todo desenvolvedor html é manter o seu site compatível com todos os browsers ( em especial o Internet Explorer ), devido as limitações e detalhes na implementação de cada um, isso é um fato inegável, e qualquer um que ja tentou um dia desenvolver alguma coisa em html sabe disso.

Em projetos pequenos podemos tomar conta disso sem a necessidade de nenhuma ferramenta extra, entretanto com o? crescimento? do projeto? a tendência ? é que estes trechos de códigos para manter a compatibilidade fiquem tão grande quanto o código do próprio site em si, tornando difícil de manter e etc.

jQuery

Nesta hora é importante conhecer as ferramentas que existem para ajudar o desenvolvimento, e utiliza-las de maneira correta. Uma ferramenta importante no desenvolvimento html é o jQuery.

Para quem não sabe o que é, o jQuery é uma biblioteca javascript que facilita a manipulação do DOM ( Document Object Model ) html, ou seja, facilita a manipulação da sua página html.

Para entender melhor do que este post se trata é necessário ter um conhecimento básico da biblioteca jQuery

Hooks

Muitos dos métodos get e set do jQuery podem ser extendidos para casos especiais, estas extensões são conhecidas como hooks. O namespace $.cssHooks permite extender o método .css(), permitindo criar novas propriedades de CSS.

Os hooks podem ser utilizados como uma solução elegante para a compatibilidade de CSS em diferentes browsers, por exemplo, a propriedade text-shadow do CSS3 não é suportada pelo Internet Explorer, portanto o código abaixo não funcionará no IE:

PLAIN TEXT
JAVASCRIPT:

  1. $(document).ready(function()
  2. $(‘h3′).css(text-shadow: ‘#00ff00′);
  3. });

Este código aplica um glow verde em todos os elementos H3 do documento HTML, porém não funciona no IE.

CSS Hooks

Mas nós podemos criar uma nova propriedade css, e internamente tratar o caso do IE. Vamos chamar a nova propriedade de glowColor:

PLAIN TEXT
JAVASCRIPT:

  1. (function($)
  2. var div = document.createElement(‘div’);
  3. $.support.textShadow = div.style.textShadow === ”;
  4. $.support.filter = div.style.filter === ”;
  5. div = null;
  6. if ($.support.textShadow)
  7. $.cssHooks.glowColor =
  8. set: function(elem, value)
  9. if (value == ‘none’)
  10. elem.style.textShadow = ”;
  11. else
  12. elem.style.textShadow = ’0 0 2px ‘ + value;
  13. }
  14. };
  15. }
  16. else
  17. $.cssHooks.glowColor =
  18. set: function(elem, value)
  19. if (value == ‘none’)
  20. elem.style.filter = ”;
  21. else
  22. elem.style.zoom = 1;
  23. elem.style.filter =
  24. ‘progid:DXImageTransform.Microsoft’ +
  25. ‘.Glow(Strength=2, Color=’ + value + ‘);’;
  26. }
  27. };
  28. }
  29. })(jQuery);

Este código cria uma propriedade dentro do namespace .cssHooks chamada glowColor, esta propriedade possui uma função set específica para o caso do IE e outra para o caso dos outros browsers. A lógica deste código é basicamente, verificar se possui suporte ao textShadow, caso sim,? define? uma função set que altera o atributo elem.style.textShadow com a cor do parâmetro, caso não, define uma função que altera a propriedade elem.style.filter com um filtro especifico utilizando a cor do? parâmetro.

Agora podemos aplicar o efeito através do código

PLAIN TEXT
JAVASCRIPT:

  1. $(document).ready(function()
  2. $(‘h3′).css(glowColor: ‘#00ff00′);
  3. });

Conclusão

O lado bom de criar um cssHook no jQuery para o problema de descrito é que o código que trata a compatibilidade fica oculto do desenvolvedor, ele não precisa se? preocupar? com isso, o foco é no código que? constrói? a pagina unicamente. Esta? estratégia pode ser aplicada para outros diversos efeitos e manipulações, criar uma serie de hooks para tratar este tipo de coisa e etc. O lado ruim no meu ponto de vista é que estamos criando propriedades novas, que são desconhecidas pelos outros desenvolvedores e etc, portanto um novo desenvolvedor iria demorar para aprender todas customizações e suas funções, uma dica é tentar manter os nomes semelhantes ao padrão.

Por @thiagoofelix

Referências

  • Learning jQuery, Third Edition
  • jQuery API
Dez 6

Introdução ao jQuery

Escrito por Elvis Fernandes em 1, 2.0, 2009, 4, Ajax, Android, aplicacao, app, Apresentação, AR, arte, Balsamiq, Balsamiq Mockups, BI, blog, C#, CRUD, Curso, Cursos, dados, Desenvolvimento, DRE, err, erro, falha, firefox, for, git, Google, gratuito, html, ide, IE, if, int, Introdução, Java, Javascript, JQuery, live, Livro, Microsoft, mockup, NaN, novidade, Novidades, O, Office, on, Palestra, Partilha, permalink, Plugin, protótipo, pt, rails, rest, restfulx, RIA, Ria’s Geral, S+S, Sun, swf, tag, Tema, UI, web, window, windows, XP @ 12 6th, 2011 | via http://www.elvis.eti.br | Sem comentários
Elvis Fernandes
? 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 »

O jQuery é uma biblioteca JavaScript poderosa que está quase se tornando quase “sinônimo” do próprio JavaScript.

A apresentação de slides a seguir é de uma palestra introdutória do jQuery, que destaca praticamente todos os seus recursos e que mostra algumas modificações na versão mais recente da biblioteca (1.7).

E para quem quiser se aprofundar no assunto, o último slide aponta para um livro gratuito de jQuery: jqfundamentals.com.

(Registro aqui o agradecimento ao Erko Bridee por compartilhar esse conteúdo)

Posts relacionados

  • Livro: Google Android“>Livro: Google Android (0)
  • Instalando sua aplicação Rails/RestfulX (e as gems) na DreamHost Installing your Rails/RestfulX app (and its gems) at Dreamhost“>Instalando sua aplicação Rails/RestfulX (e as gems) na DreamHost Installing your Rails/RestfulX app (and its gems) at Dreamhost (2)
  • CRUD com o RestfulX – aplicação funcionandoCRUD with RestfulX – live application“>CRUD com o RestfulX – aplicação funcionandoCRUD with RestfulX – live application (2)
  • CRUD com o RestfulX: Parte 1/2 – RetrieveCRUD with RestfulX: Part 1/2 – Retrieve“>CRUD com o RestfulX: Parte 1/2 – RetrieveCRUD with RestfulX: Part 1/2 – Retrieve (7)
  • Protesto: falha em sistema da Orizon expõe dados sigilosos de pacientes“>Protesto: falha em sistema da Orizon expõe dados sigilosos de pacientes (0)
  • Balsamiq Mockups: solução entre protótipos de alta e baixa fidelidade“>Balsamiq Mockups: solução entre protótipos de alta e baixa fidelidade (8)
  • Erro “bad line length character” no Git“>Erro “bad line length character” no Git (1)
  • Windows e Office: novidades da Microsoft“>Windows e Office: novidades da Microsoft (4)
  • Firefox Plugin – visualizar trace de SWFs“>Firefox Plugin – visualizar trace de SWFs (2)

© Elvis for Elvis Fernandes, 2011. |
Permalink |
Nenhum comentário |
Adicione ao
del.icio.us


Tags: AJAX, Desenvolvimento, JavaScript, jQuery, web

Nov 28

CoffeeScript, lidando com JavaScript sem sofrimento

Escrito por Erko Bridee em 1, 2.0, 4, 6, action, Adobe, Adobe Flex, api, aplicacao, AR, arte, blog, C#, editores, exemplo, Exemplos, Flex, for, git, how-to, html, ide, IE, if, int, Java, Javascript, JQuery, library, Links, Mac, mg, NaN, O, on, Outros, Plugin, pt, quick, RIA, Ria’s Geral, S+S, site, UI, UX, web, window, windows @ 11 28th, 2011 | via http://blog.erkobridee.com | Sem comentários
Erko Bridee
? 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 »

Como estou retornando ao mundo do HTML+JS ? inevit?vel ter que voltar a codificar em JavaScript, certo? Bom, talvez n?o… para isto temos o CoffeeScript que apresenta uma proposta bem interessante de sintaxe e codifica??o que no final o resultado gerado ? JavaScript.

CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again

O que achei interessante nessa apresenta??o foi a apresenta??o dos demais geradores de JavaScript, como GWT em java, entre outros, bom ao final dessa apresenta??o achei bem interessante e consider?vel o uso do CoffeeScript para gerar o JavaScript, utilizando uma sintaxe melhor e obviamente n?o apenas uma nova sintaxe, pois o CoffeeScript possui algumas facilita??es de codifica??o bem interessantes.

No pr?prio site do CoffeeScript possui alguns exemplos e um local onde voc? pode escrever um coffeescript e ver o javascript resultado.

Um fato que me chamou aten??o o compilador do CoffeeScript est? vinculado ao NodeJS.

Aten??o: vale lembrar que o CoffeeScript nada mais ? que uma maneira diferente de codificar JavaScript, ou seja, caso queria utilizar jQuery ou outra lib JavaScript codificando via CoffeeScript ? poss?vel (How CoffeeScript makes jQuery more fun than ever).

Links ?teis para instala??o do CoffeeScript:

How To Install CoffeeScript On Mac OS X

5 Steps to Get Started with CoffeeScript (Mac OS X)

Node.js and CoffeeScript on Windows, Redux

CoffeeScript compilador para windows (GitHub)

Installing CoffeeScript on Ubuntu

Segue alguns links de introdu??o ao CoffeeScript:

What is CoffeeScript?

Simple CoffeeScript Introduction

A brief introduction to CoffeeScript

Introduction To Coffeescript & Node.Js By Pedro Teixeira

Plugin para os editores de c?digo:

CoffeeScript GitHub

Plugin para o Sublime Text 2

Sublime Text 2 Build System Scripts: CoffeeScript & Node

Coffeescript package for Sublime Text (GitHub)


Veja também:

  • Voltando ao mundo HTML+JS e agora?
  • [Adobe Flex] Definindo o foco na aplicação
Nov 25

Voltando ao mundo HTML+JS e agora?

Escrito por Erko Bridee em 1, 2.0, 2009, 3d, 4, 6, action, Adobe, Adobe Flex, Air, api, aplicacao, app, AR, Arquitetura, auto, back, BI, blog, browser, C#, chrome, css, css3, Curso, Cursos, dados, demo, Desenvolvimento, Design, Dica, err, Excel, firefox, flash, Flex, fonte, fonts, for, git, Google, html, html5, ide, IE, if, int, Java, Javascript, JQuery, layout, Linux, Livro, Mate, Mercado, mg, mvc, NaN, novidade, Novidades, O, on, Pessoal, Projetos, pt, RIA, Ria’s Geral, S+S, tag, TAT, Tema, Twitter, UI, UX, vs, web, web design, XP @ 11 25th, 2011 | via http://blog.erkobridee.com | Sem comentários
Erko Bridee
? 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 adianta chorar o leite derramado, depois que a Adobe lan?ou as ?ltimas not?cias vemos que o mercado indo de vez para o HTML5 e n?o adianta reclamar, daqui para frente mais projetos ir?o demandar conhecimentos em HTML5 (novas tags), Javascript e sobre as novidades do CSS3.

Voltando ao mundo HTML teremos que voltar inevit?velmente ao uso do Javascript, mas ao menos a boa not?cia hoje ? que diferente de anos atr?s temos dispon?veis boas bibliotecas javascript para nos ajudar na dif?cil tarefa de fazer uma aplica??o (que tente) funcionar em todos os principais web browsers do mercado (Google Chrome, Mozilla Firefox e o tem?vel IE)

Quanto ao Javascript, hoje pelo que tenho visto ? quase imposs?vel se falar em javascript sem associar ao JQuery, que ajuda muito a criar um c?digo mais limpo e organizado e at? podemos dizer, sofrer menos com o uso do javascript.

Sobre Javascript e JQuery recomendo os respectivos materiais para observar:

The JQuery Essentials

Aos que ficaram interessados pelo JQuery o @bielversallini mandou uma dica muito boa de curso web de JQuery, o jQuery Air, tamb?m jQuery Fundamentals e Livro fundamentos de jQuery 100% traduzido para pt-BR

jQuery Proven Performance Tips & Tricks, 2011

Confesso que desanimei ao ver esta apresenta??o, pois basicamente todos os recursos que gostei no JQuery s?o os mais lentos e recomendados para que n?o sejam usados a menos que n?o haja outra alternativa ou extremamente necess?rios.

jQuery & Responsive Web Design

Excelente dica de como projetar uma p?gina/sistema que se adeque as dimens?es dispon?veis (por alguns este recurso ? chamado de layout fuido/adaptativo). Como estou falando sobre layout recomendo olhar tambem o Knockout.js que possui recursos interessantes para auxiliar na defini??o da view.

Agora para falar a verdade mesmo o melhor material sobre desenvolvimento HTML+JS que vi que o autor foi real e sincero sobre o tema ? o respectivo abaixo:

Taking JavaScript Seriously (feat. Backbone.js)

Como ? dito nos slides, o javascript n?o ? a melhor linguagem do mercado, ela foi escrita em 10 dias, possui muitas defici?ncias, mas temos que aprender pois n?o temos nenhuma outra op??o.

Outro detalhe que me chamou aten??o e achei muito ?til foi a apresenta??o do Backbone.js como uma alternativa para suprir a necessidade de organizar o c?digo em algo que tenta ser o mais pr?ximo poss?vel do MVC.

Mas e sobre arquitetura aplica??es de larga escala? Bom recomendo observar este material abaixo, o qual indica as boas prat?cas de mercado e atuais recursos dispon?veis:

Large-scale JavaScript Application Architecture

Cheguei at? esta apresenta??o atrav?s deste post.

Aten??o este texto a seguir expressa minha oponi?o pessoal

Sinceramente esta apresenta??o foi o santo gral da agonia, pois para mim se trata de uma regress?o tecnol?gica brutal, irei mudar esta minha opini?o no dia em que, eu consiga ter uma arquitetura com um mesmo n?vel que possuo hoje com Adobe Flex + Swiz, como a descrevi neste post, quando este dia chegar (se ? que vai) irei dizer que podemos ent?o come?ar a pensar em utilizar o HTML+JS para solu??es corporativas.

E vamos a luta, retornando ao velho mundo do HTML, por alguns chamados de revolucion?rio mundo do HTML5…

Tweet

Veja também:

  • [Canvas vs. Flash] Butterfly 3D (Canvas + JavaScript)
  • [Adobe Flex] Definindo o foco na aplicação
  • Moto elétrica da Mavizen atinge 210 Km/h e vem equipada com Linux e WiFi
  • Elly Tran Ha, sexy blogger do Vietnã
  • FontStruct : precisa de uma fonte diferente?
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!

Ago 31

Oportunidades de trabalho na Alta Comunicazione

Escrito por Lucas Marçal em 1, 4, action, Actionscript, ActionScript 3, Actionscript 3.0, AMF, amfphp, Android, api, app, AR, Banco de Dados, BI, builder 4, C#, ColdFusion, ColdFusion 8, css, css3, dados, Desenvolvimento, Design, designer, Destaque, developer, DRE, Dreamweaver, err, Ferramenta, flash, flash builder, Flash Builder 4, framework, gaia, git, html, html5, IE, if, ignite, int, Java, Javascript, JQuery, layout, motion, mysql, O, on, oop, photoshop, PHP, procura, programação, pt, RIA, Ria’s Geral, S+S, Sun, TAT, UI, Vagas, web, xhtml @ 08 31st, 2011 | via http://www.lucasmarcal.com.br/blog/ | Sem comentários
Lucas Marçal
? 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 Alta Comunicazione está abrindo novas vagas para o setor de web, abaixo segue um descritivo do perfil desejado separado por áreas.
Se você tem facilidade em trabalhar em equipe, gosta de um bom desafio e procura uma vaga de trabalho entre em contato conosco:

Enviar CV para: trabalhecomagente@altacomunicazione.com.br
Assunto: DIGITAL
www.altacomunicazione.com.br

Perfil WebDesigner

-Ferramentas de trabalho
*Dreamweaver CS5.5
*Photoshop Cs5
*Illustrator CS5
*Fireworks Cs5

-Habilidades necessárias
*Conhecimento sobre XHTML e CSS
*Conhecimento sobre Jquery
*Conhecimento sobre JavaScript
*Sólidos Conhecimentos sobre Adptação de layouts (PSD) para XHTML

-Diferenciais
*habilidade para desenvolver layouts
*HTML5 e CSS3
—————————————————————————-

Perfil Developer PHP

-Ferramentas de trabalho
*Dreamweaver CS5.5
*Navcat
*Photoshop cs5
*Fireworks Cs5

-Habilidades necessárias
*Conhecimento sobre XHTML e CSS
*Conhecimento sobre Jquery / Javascript
*Conhecimento Intermediário sobre Linguagem SQL e Banco de dados MYSQL
*Conhecimento (ter desenvolvido algo) com Codeigniter
*Conhecimento sobre AMFPHP
*Conhecimento sobre PHP nativo
*Falicidade na integração de APIs

-Diferenciais
*HTML5 e CSS3
*Coldfusion 8 ou 9
—————————————————————————

Perfil Developer Actionscript 3.0

-Ferramentas de trabalho
*Dreamweaver CS5.5
*Flash Cs5.5
*Flash Builder 4.5 / FlashDeveloper 4.0 / FTD
*Photoshop cs5
*Fireworks Cs5

-Habilidades necessárias
*Conhecimento sobre Actionscript 3.0
*Conhecimento sobre Gaia Framework
*Conhecimento sobre adptação de layouts
*Conhecimento sobre OOP (Programação orientada a objeto)
*Falicidade na integração de APIs
*Sólidos conhecimentos sobre Motion via Timeline ou Greensock

-Diferenciais
*HTML5 e CSS3
*Coldfusion 8
*PHP (AMFPHP)
*Desenvolvimento de Apps para Android e IOS

Enviar CV para: trabalhecomagente@altacomunicazione.com.br
Assunto: DIGITAL
www.altacomunicazione.com.br

Mai 21

Comparando ASP.net WebForms e ASP.net MVC

Escrito por Vinícius Sandim em .NET, 1, 2.0, 3.5, 3d, 3g, 4, 6, action, Ajax, app, AR, Arquitetura, Asp.Net, back, Banco de Dados, BI, browser, C#, C#.net, class, classe, classes, cliente, código, código fonte, comparação, Componente, Componentes, control, CRUD, css, dados, Desktop, developer, Download, Drag And Drop, err, event, Exemplos, explorer, Ferramenta, Flex, fonte, for, framework, function, gae, gc, html, ide, IE, if, int, Java, Javascript, JQuery, Links, lista, map, menu, mg, mtv, mvc, O, on, Partilha, Pessoal, portal, Projetos, pt, RIA, Ria’s Geral, S+S, server, site, SQL Server, state, tag, TAT, template, tv, UI, uint, UX, Visual Studio, vs, web, xhtml, XML, XP @ 05 21st, 2011 | via http://www.viniciussandim.com | 1 comentário
Vinícius Sandim
? 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 »

Eu confesso que nunca me interessei em desenvolver sites e muito menos aplicações web utilizando ASP.net, sempre achei que a metodologia “drag and drop” que o Web Forms nos proporciona não funciona legal na web, pois ela gera muito “lixo” para o navegador, e isso é crucial em uma WebAPP.

Portanto, desde que migrei de desktop (Delphi 7) para web, tenho trabalhado com o nosso querido Flex no Front End e o C#.net no Back End. Mas desde que o ASP.net MVC foi lançado, tenho acompanhado de perto a sua evolução, e confesso que ele tem me agradado bastante.

Para não perder o costume, venho hoje compartilhar com vocês um pouco do que tenho estudado, este post faz uma comparação de um projeto idêntico criado usando as duas metodologias.

Então chega de conversa e vamos ao que interessa:

As ferramentas que utilizei para criar os projetos foram:
• SQL Server 2008 Express
• Visual Web Developer Express 2010
• Framework ASP.net MVC 2.0

O projeto acessa uma base de dados com apenas uma tabela, com a seguinte estrutura:

Tabela

Não utilizei nenhum framework ORM, fiz o mapeamento das entidades manualmente, usando as classes nativas do Framework. (SqlConnection, SqlCommand e SqlDataReader).

Quando criei os projetos, utilizei os templates do prório Visual Web Developer:

CriandoProjeto

Para o projeto Web Forms, usei ASP.NET Web Application.
Para o projeto MVC usei: ASP.NET MVC 2 Web Application.

É claro que não vou fazer um passo a passo de como criar o projeto, o foco deste post não é isso, mas depois de pronto, nosso Solution Explorer do projeto WebForms ficará assim:

SolutionForms

Já o projeto MVC, tem uma estrutura um pouco maior, porque ele trabalha completamente “tipado”, temos as classes Model, Controller e View, como manda o figurino:

SolutionMVC

Certo, agora vamos ao objetivo, quando executo o projeto WebForms e acesso a página de clientes, o Framework gera este código HTML:

"-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">"http://www.w3.org/1999/xhtml" xml:lang="en">


"../Styles/Site.css" rel="stylesheet" type="text/css" />
"post" action="default.aspx" id="ctl01">
class="aspNetHidden"> "hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> "hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> "hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="ZhpEPEbRGaEf3wxNFvEkKLAz6ze4Y1776/kxLQ+oQoJx5Ew6ZrkBOLulNNEfu2T+c9uFRH7RTl5UUrZ3A1gK1BMKQc174Sha+0Wt5wmfhTKcGIb1YUgfoyjwcO8TYaR3U3o3l/07IemJNiwmeH8cM7BzSKkWiBTRuwjyI6u7VHlH7TyWLCMw0bneQ8edbb2YBMnGslvv7YSjWb5RdYMIjhu77ZE4CwQwK75UxHI1QZUgHjIaNP7MrZpoxi+tQbCBVW9Lc3jZCq0gbouSkWw7epm9WZknpiH5T68BTGirDfP4BfUZygsyB6aHmrpdN47pKJz7kFH78soAuE4Yd1NWNk9mHK+6ErcoVe3EkH8ycfXm51UwzkwNp2XRdr2s2AANsWpDdxNhyDTo2Mia2/YrPGirUzqV62RWlVWpS/KBwBpdtSLlYVnLaU6eJyjrJhqXxKzTa8b3F1av8h40cX5teT+0odXAWB3E2GcrE9XGfwa1ACk5QQlFsh+UplF/dEuzes6UBjJd9LQS7kPVabfzs/y8L3BRsK0Rtb0i1unXfHMuq3eVg/XQGnwb9uEhL5EdHjniskkoUzQh1T2yJfPwajrjxU06M5Ba43Soj8pk03isqi4tBqBllPVkv13Hyz8eapd85VejaO+3CUqXVr3J9/3MvZWjNcA2QOef7H4xKmtVExbxingFQqj5K5appmJReVczk8/HLCOnLD+Wa5/7CKWTj/OucQgIgPYnGEpzMZUlKJZFLAeFfwwkR2XVZcyyCoYWjK2pJX5zuCXMVkMxKCCuWjVvtl3GPfUkz1nsgP/Jtyq7vSdiXdGE/qxV8yRGJN5h4MlvVOfYq2gKspcNIZzwCzVCidhdoY8SYjnz+qyIXmXxXD3VkF2XGbcId86i/qOkwOyk9UcAS8iR+Es/MkQg7WximaQQji+o67grOaE=" />
class="aspNetHidden"> "hidden" name="__VIEWSTATEENCRYPTED" id="__VIEWSTATEENCRYPTED" value="" /> "hidden" name="__PREVIOUSPAGE" id="__PREVIOUSPAGE" value="J0z-AYjFMhWT0kpqMD21gr0HoEKRmyw5_w3a37YYi27BAPn9DepNebG_20nPZ-VajOl1_KCPnab6uApAzjeQe7rOkN95u7baMYMKLA59Jpw1" /> "hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="IRcnHy6RQ1JCPCa5l/6k5JvtDNRbcbaJH7wDUCh/MVtgwLHo5W/iwGkTGRYeZHjYgqrWjjGjzZQvt+FJuMho2GE+Qf3syKzyeGXquF9a/Ws577KUO6oFdTWrhmsBXMMh" />
class="page">
class="header">
class="title">

My ASP.NET Application

class="loginDisplay"> [ "../Account/Login.aspx" id="HeadLoginView_HeadLoginStatus">Log In ]
class="clear hideSkiplink"> "#NavigationMenu_SkipLink"><span"Skip Navigation Links" src="/WebResource.axd?d=xFBnuqKYnqgWTzzLZBOde45ezhDnXgdvOgtOQCvZwJw6xfKBic_vxFOBRotUqhEobwKQWWgbNXfNYvZsldu9uZj6j6aYf49eocT9vsEpgtM1&t=634356288728593750" width="0" height="0" style="border-width:0px;" />
class="menu" id="NavigationMenu">
    class="level1">
  • class="level1" href="../Default.aspx">Home
  • class="level1" href="../About.aspx">About
"NavigationMenu_SkipLink">
class="main"> Listagem Completa de Clientes
"0" rules="all" border="1" id="MainContent_GridView1" style="border-collapse:collapse;">
"col">Id_Cliente "col">Nome "col">CPF "col">RG "col">Idade "col"> "col">
17 Jo?o 123.123.123-12 12.312.123-1 30 "Edita.aspx?Id_Cliente=17">Editar "return confirm('Tem certeza?');" id="MainContent_GridView1_LinkButton1_0" href="javascript:__doPostBack('ctl00$MainContent$GridView1$ctl02$LinkButton1','')">Excluir
19 Jos? 444.444.444-44 44.444.444-4 21 "Edita.aspx?Id_Cliente=19">Editar "return confirm('Tem certeza?');" id="MainContent_GridView1_LinkButton1_1" href="javascript:__doPostBack('ctl00$MainContent$GridView1$ctl03$LinkButton1','')">Excluir
18 Maria 999.999.999-99 99.999.999-9 35 "Edita.aspx?Id_Cliente=18">Editar "return confirm('Tem certeza?');" id="MainContent_GridView1_LinkButton1_2" href="javascript:__doPostBack('ctl00$MainContent$GridView1$ctl04$LinkButton1','')">Excluir
"submit" name="ctl00$MainContent$btnInserir" value="Inserir novo cliente" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$btnInserir", "", false, "", "Insere.aspx", false, false))" id="MainContent_btnInserir" />
class="clear">
class="footer">

Dêem uma olhada em quanto código os componentes criam. É muita coisa, imaginem isso em um grande portal? Americanas.com gerando este código? Meio inviável não? Aproveito para destacar o código gerado pelo ViewState, herói e vilão do Web Forms.

Agora vamos comparar a mesma página gerada pelo projeto MVC:

"-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">"http://www.w3.org/1999/xhtml">

    Index


"Content/Site.css" rel="stylesheet" type="text/css" />


class="page">
"header">
"title">

My MVC Application

"logindisplay"> [ "/Account/LogOn">Log On ]
"menucontainer">
    "menu">
  • "/">Home
  • "/Home/About">About
"main">

Listagem completa de clientes:

Código Nome CPF RG Idade
30 Jo?o 123.123.123-12 12.312.123-1 30 "/Cliente/Edit?Id_Cliente=30">Editar | "/Cliente/Delete?Id_Cliente=30" onclick="return confirm('Tem certeza?');">Excluir |
32 Jos? 444.444.444-44 44.444.444-4 21 "/Cliente/Edit?Id_Cliente=32">Editar | "/Cliente/Delete?Id_Cliente=32" onclick="return confirm('Tem certeza?');">Excluir |
31 Maria 999.999.999-99 99.999.999-9 35 "/Cliente/Edit?Id_Cliente=31">Editar | "/Cliente/Delete?Id_Cliente=31" onclick="return confirm('Tem certeza?');">Excluir |
"/Cliente/Create">Novo cliente...
"footer">

O que acham? As duas páginas fazem exatamente a mesma coisa, no entato o MVC gera beeeem menos código.

Bom pessoal, essa é apenas uma das vantagens do MVC, posso destacar outras:

  • Controle total do código que será enviado ao navegador;
  • Arquitetura em camadas, códigos completamente separados;
  • Classes que auxiliam a geração do HTML para o browser de acordo com as ações do Controlador, sem lixo!;
  • Facilidade de se implementar Ajax (de verdade) no seu projeto.
  • Integração com o Jquery usando classes do Framework;

Bom é isso, vou me despedindo, mas antes deixo o código fonte dos dois projetos disponíveis para download.

Mai 13

JavaScriptMVC

Escrito por Fábio Batista da Silva em 1, 2.0, 6, action, Ajax, Aplicativos, app, AR, back, backend, BI, C#, class, classe, classes, código, Componente, Componentes, configuração, control, CRUD, css, dados, demo, Desenvolvimento, Design Patterns, development, Dica, dispatchEvent, Download, email, err, erro, error, Estilo, event, Evento, Eventos, Ferramenta, Flex, fonte, for, Formulário, formulario de contato, framework, function, gestão, git, Google, html, html5, IE, if, image, int, Java, Javascript, JQuery, label, labs, lista, map, mg, mvc, O, on, padrão, PHP, Plugin, pt, rails, RIA, Ria’s Geral, RoR, S+S, serviço, Serviços, string, tag, TAT, Tecnologia, template, Teste, tv, UI, uint, update, UX, web @ 05 13th, 2011 | via http://www.flexria.com.br/home | Sem comentários
Fábio Batista da Silva
? 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á,

Com a chegada eminente do HTML5 e outras tecnologias baseadas em javascript como MongoDB e node.js
tenho deixado o Flex o meio de lado e me dedicado um pouco mais ao javascript.
Porem fica a questão, Como ter um front-end com a mesma performance, escalabilidade e desacoplamento que o flex permite ?
Realmente nesses termos ainda não encontrei nada que me proporcione o que o Flex proporciona.

Nesse Post vou falar um pouco sobre Framework JavaScriptMVC
Me perece uma das melhores alternativas para manter um frond-end JavaScript/HTML

JavaScriptMVC é formado por uma seria de ferramentas para construção de aplicativos JavaScript e consiste nos seguintes componentes:

  • StealJS -Gestão de Dependência
  • FuncUnit – Testes Unitários
  • jQueryMX – Biblioteca de Componentes
  • DocumentJS – Geração de JSDoc

O JavaScriptMVC pode ser utilizado com qualquer back-end , java,php,rails, etc…
Ele pode ser instalado baixando diretamente aqui ou instalando cada componente individualmente atreves do github.

Os componentes devem ficar nas raiz do diretório web da sua aplicação, nesse caso a pasta public.
Então as estrutura da aplicação fica assim.

public
  /documentjs
  /funcunit
  /jquery
  /steal
  /js

O JavaScriptMVC tem ferramentas de geração de código para auxiliar na criação da aplicação.
Vamos começar criando a aplicação pelo terminal, então o JavaScriptMVC vai gerar toda a estrutura do projeto.

    cd path-to-application/public/
   ./js jquery/generate/app contacts

Assim como o rails o JavaScriptMVC possui scaffolds que podem gerar seu CRUD.
Para isso basta executar o comando scaffold passando como parâmetro o nome do modelo.
Os nomes das classes seguem o seguinte padrão : ..
então temos o model “Contacts.Models.Contact”

     ./js jquery/generate/scaffold Contacts.Models.Contact

O JavaScriptMVC vai gerar o controlador, modelos, views e testes unitários da aplicação.
Porem o único arquivo que sera incluído na aplicação é o steal.js ele é responsável por gerenciar as dependências da aplicação.
No ambiente de desenvolvimento ele vai incluir individualmente todos os controladores, modelos, etc..

 type='text/javascript'  src='../steal/steal.js?contacts,development'>>

O parâmetro “?contacts” na tag de inclusão indica o nome do arquivo de configuração que tem o mesmo nome da aplicação nesse caso contacts.js
nele ficam mapeados todas dependências do projeto que serão gerenciadas pelo StealJS
contacts/contacts.js – Arquivo de configuração

steal.plugins(
    'jquery/controller',
    'jquery/controller/subscribe',
    'jquery/view/ejs',
    'jquery/controller/view',
    'jquery/model',
    'jquery/lang/json',
    'jquery/dom/form_params')

.css('contacts')

.resources()
.models('contact')
.controllers('contact')
.views();

Depois de fazer uma refatoração a aplicação ficou assim :

contacts/view/contact/contacts.html – Tela inicial da aplicação

>
    >
        >JS - MVC>
         type='text/javascript'  src='../steal/steal.production.js?contacts'>>
    >
    >
        
 id='contacts'>
            
>Contacts>
            
 id='contact'>>
        >
    >
>

contacts/view/contact/list_view.ejs – Template para a listagem de contatos


 class="link">
     href="javascript://" class='text_button create' >Create>
    
/>
>

 class="table">
    
>
        
>
            
>Name>
            
>E-Mail>
            
> >
        >
    >
    
>
        <%for(var i = 0; i < contacts.length ; i++)%>
        
 <%= contacts[i]%>>
            
><%= contacts[i].name%>>
            
><%= contacts[i].email%>>
            
 class="last">
                 href='javascript://' class='edit'>edit>%>
    >
>

contacts/view/contact/list_view.ejs – Template para o formulario de contatos


 <%= contact%> >
    
 action="#" class="form">
        
>
             class="label">Name>
            
 type="text" class="text_field" id="name" name="name" value="<%= contact.name%>" />
             class="label">E-Mail>
            
 type="text" class="text_field" id="email" name="email" value="<%= contact.email%>" />
        >
        
 class="link">
             href="javascript://" class="text_button save">Save>
             href="javascript://" class="text_button cancel">Cancel>
        >
    >
>

contacts/models/contact.js – Classe ‘Contacts.Models.Contact’ Reponsavel pela abstração do acesso aos serviços

$.Model.extend('Application.Models.Contact',
/* @Static */

    /**
     * Service url.
     */
    url: 'http://localhost/patho-to-app/contacts/',

    /**
     * Recupera os dados dos contacts do serviço no backend.
     * @param Object params
     * @param Function success
     * @param Function error
     */
    findAll: function( params, success, error )
        $.ajax(
            url     : this.url,
            type    : 'get',
            dataType: 'json',
            data    : params,
            success : this.callback(['wrapMany',success]),
            error   : error
        );
    },
    /**
     * Cria um novo contacto
     * @param Object attrs
     * @param Function success
     * @param Function error
     */
    create: function( attrs, success, error )
        $.ajax(
            url     : this.url + 'save',
            type    : 'post',
            dataType: 'json',
            error   : error,
            success : success,
            data    : contact:attrs
        });
    }
    /**
     * Altera os dados de um contacto
     * @param String id
     * @param Object attrs
     * @param Function success
     * @param Function error
    */
    update: function( id, attrs, success, error )
        $.ajax(
            url     : this.url + 'save',
            type    : 'post',
            dataType: 'json',
            data    : contact:attrs,
            success : success,
            error   : error
        });
    },
    /**
     * Remove um contacto
     * @param String id
     * @param Function success
     * @param Function error
     */
    destroy: function( id, success, error )
        $.ajax(
            url     : this.url + 'destroy/id/'+id,
            type    : 'post',
            dataType: 'json',
            error   : error,
            success : success
        );
    },
},
);

contacts/controllers/contact_controller.js – Classe ‘Contacts.Controllers.Contact’ Responde a eventos da view e do modelo

$.Controller.extend('Contacts.Controllers.Contact',onDocument: true,

     /**
     * Função chamada quando a página é carregada
     */
     load: function()
        this.findAll();
     ,

     /**
     * Função que renderiza a listagem de contatos apartir do template /contacts/views/list_view.ejs
     * @param Array contacts
     */
     listView: function( contacts )
        $('#contact').html(this.view('list_view', contacts:contacts ));
     },

     /**
     * Função que renderiza o formulario de contatos apartir do template /contacts/views/form_view.ejs
     * @param Contacts.Models.Contact contact
     */
     formView: function(contact)
        $('#contact').html(this.view('form_view', contact:contact));
     },

     /**
     * Função que lista os contatos atraves do model e renderiza a tela quando obtem resultado
     */
     findAll: function(){
        Contacts.Models.Contact.findAll(, this.callback('listView'));
     },

    /**
     * Listener para o evento 'click' no link create
     */
    '.create click': function()
        // cria um novo contato e monta o formulario
        var contact = new Contacts.Models.Contact();
        this.formView(contact);
    ,

     /**
     * Listener para o evento 'click' no link edit
     * @param jQuery el
     */
    '.edit click': function( el )
        // Recupera o contato selecionado e monta o formulario
        var contact = el.closest('.contact').model();
        this.formView(contact);
    ,

     /**
     * Listener para o evento 'click' no link destroy
     * @param jQuery el
     */
    '.destroy click': function( el )
        if(confirm("Are you sure you want to destroy?"))
            // Recupera o contato selecionado e o remove
            var contact = el.closest('.contact').model();
            contact.destroy();
        
     },

    /**
     * Listener para o evento 'click' no link save
     * @param jQuery el
     */
    '.save click': function(el)
        // Recupera o contato selecionado
        var contact = el.closest('.contact').model();
        // Recupera os dados do formulario
        var attrs   = $('.form').formParams();
        // Atualiza os dados no "objeto"
        contact.attrs(attrs);
        // Salva
        contact.save();      	// a função save é erdada do objeto Model
                               // ela verifica se o objeto ja existe e chama o metodo create ou update
    ,

    /**
     * Listener para o evento 'click' no link cancel
     */
    '.cancel click': function()
        this.findAll();
    ,

    /**
     * Listener para o evento 'created' disparado pelo "objeto" Contacts.Models.Contact
     * @param String called
     * @param Event contact
     */
    'contact.created subscribe': function( called, contact )
        this.findAll();
    ,

    /**
     * Listener para o evento 'updated' disparado pelo "objeto" Contacts.Models.Contact
     * @param String called
     * @param Event contact
     */
    'contact.updated subscribe': function( called, contact )
        this.findAll();
    ,

     /**
     * Listener para o evento 'destroyed' disparado pelo "objeto" Contacts.Models.Contact
     * @param String called
     * @param Event contact
     */
    "contact.destroyed subscribe": function(called, contact)
        this.findAll();
     
});

Agora antes de colocar a aplicação em ambiente de produção podemos compactar todos os arquivos .js e .css gerando uma versão final.

 ./js contacts/scripts/build.js

O StealJS utiliza o Google Closure para compactar todos os arquivos
e gerar arquivos compactados/concatenados que serão usados em produção contacts/production.js e contacts/production.css .

Com isso reduzimos todos os arquivos da aplicação, estilos, plugins, etc.. são reduzidos a apenas um arquivo .js e um arquivo .css.
E para mudar as configuração do ambiente temos apelas que mudar o tag de inclusão do StealJS

<script type='text/javascript'  src='../steal/steal.production.js?contacts'>script>

Esse foi apenas uma pequena amostra do JavaScriptMVC.
Com essa estrutura ele nos permite construir grandes aplicações de forma modular
com um bom ambiente de teste, velocidade no desenvolvimento e performance no ambiente de produção.

Essa aplicação esta rodando aqui : http://flexria.com.br/labs/js-mvc/
E os fontes estão disponíveis no github : https://github.com/FabioBatSilva/js-mvc

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

« Entradas anteriores |

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 2755 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