• Home
  • Quem Sou
  • Tutoriais
  • Curriculum Vitae
  • Posts
  • Comments
  • Email
João Gonçalves

João Gonçalves


Web Design para Multiplataformas – “Responsive Web Design”

Posted on 05. Ago, 2011 by João Gonçalves.

0

Nos dias que correm, criar uma “presença digital” ou “presença web” para um cliente, implica alguma reflexão e representa um conjunto de desafios para o Web Designer. Qual é o cliente que hoje não gostaria de ter ou mesmo exige uma versão do seu site para tablets ou smartphones?

Ultrapassar as inconsistências dos browsers, as diferentes resoluções de ecrãs já por si só traduz-se num desafio para o Web Designer. Mas como ultrapassar os novos desafios que são apresentados pelas várias plataformas tecnológicas que oferecem a possibilidade de visualizar páginas web e como conseguir que o site do cliente seja consistente quer em PC’s , Portáteis, netbooks, tablets, smartphones, ebook readers e na TV?

A abordagem para a resolução deste desafio tem sido na sua grande maioria criar, subdomínios do domínio principal e optar por um design diferente para “mobile”. Mas então e para ver no iPad, no Galaxy, no Blackberry, no Nexus ou no Kindle? Cada um deles tem uma resolução diferente? O “aspect-ratio” é diferente? O Kindle não tem cores? Será que deve-se efectuar um layout personalizado para cada uma das plataformas existentes? Será isso financeiramente viável? Ou parte do público que utiliza uma plataforma vai ser sacrificado em detrimento de outro?

Umas das abordagens para este novo paradigma foi inicialmente introduzido por Ethan Marcotte: “Responsive Web Design”, o conceito é simples, em vez de criar layouts próprios e independentes para cada um dos dispositivos web existentes, é utilizada a tecnologia existente para tornar o layout não só mais flexível mas também adaptável às diferentes características (resolução, orientação, cor, “aspect-ratio”, entre outros) desses dispositivos. Um excelente exemplo desta abordagem poderá ser visualizado nesta demo: http://sn.im/.u-, o site http://colly.com/ é também um bom exemplo.

Este conceito é essencialmente baseado em 3 técnicas de HTML e CSS:
1. A utilização de “grids” flexíveis para layouts
2. A utilização de imagens flexíveis
3. A utilização de “Media Queries”

1. “Grids” flexíveis para layouts – Criar layouts flexíveis e adaptáveis a resolução do ecrã é essencial. Imaginemos um layout clássico com 2 colunas, menu à esquerda conteúdos à direita, se tivermos a visualizar numa resolução superior a 640px, com os ajustes adequados e utilização de “elastic layout” ou “liquid layout”, não haverá qualquer tipo de problema. Mas se tivermos a visualizar o mesmo site num smartphone com a resolução de 320px ou 480px (talvez as resoluções mais comuns em smartphones), o mais provável é aparecer o scroll horizontal. O ideal será adaptar este layout a uma única coluna quando a resolução for inferior a 640px e o menu em vez de ser lateral, passa para a parte superior da página, aumentando também o tamanho dos links para adaptação à tecnologia “touch” (Fitts’ Law em “Interface Design”). Não querendo abordar extensivamente deixo aqui duas boas referências para conseguir este resultado: http://sn.im/.rq (Fluid 960grid System) e http://sn.im/.0g (1140 css grid, 12 colums fluid to mobile), para mais referências relativas a layouts flexíveis podem visitar o site ZOMIGI (http://sn.im/.0i) .

2. Imagens Fléxiveis – além da flexibilidade e adaptação do layout, as imagens devem também se adaptar a resolução do ecrã. Para obter esse resultado, basta uma simples regra de css:
img {max-width:100%}
e porque não incluir aqui os vídeos também:
img, object {max-width:100%} ;
Desta forma garantimos a renderização da imagem/vídeo pelo browser não no tamanho original da imagem, mas adaptando-se ao tamanho do seu “container”, evitando desta forma o “overflow” da imagem quando o layout se adaptar de acordo com as características anteriormente referidas.

3. “Media Queries” – Aqui reside a técnica mais importante do conceito “Responsive Web Design”. Todos nós já usamos “Media Queries” quanto mais não seja para optimização da impressão de páginas web por parte do utilizador. A actual “candidate recommendation” para “Media Queries” no standard de CSS3 (http://www.w3.org/TR/css3-mediaqueries/) do W3C, inclui novos tipos de propriedades que nos permite filtrar um determinado “media” consoante a resolução, orientação, entre outros (device-with, orientation, aspect-ratio, color, …), desta forma se colocar um “Media Query”:

A folha de estilos “estilos480.css” será aplicada à página caso a interface tenha uma resolução inferior ou igual a 480px. Com esta técnica facilmente criámos uma folha de estilos para cada tipo de interface/plataforma, adaptando o layout do site automaticamente a qualquer tipo e característica da interface.

Resumindo, a abordagem e/ou conceito “Responsive Web Design” oferece-nos a possibilidade de criar um site flexível e adaptável às várias interfaces/plataformas existentes, independentemente da resolução de ecrã, orientação, cores, etc.
Não querendo afirmar que é a forma mais correcta de abordar o desenvolvimento de um site, é sem dúvida um método de “Design Thinking” centrado essencialmente nas necessidades e exigências do utilizador, são os conteúdos que se devem adaptar ao utilizador e não o contrário.

“Today, anything that’s fixed and unresponsive isn’t web design, it’s something else. If you don’t embrace the inherent fluidity of the web, you’re not a web designer, you’re something else.”
— Andy Clarke

Continue Reading

Tempo para ficar Internacional

Posted on 14. Fev, 2011 by João Gonçalves.

0

A partir de hoje, irei tentar escrever todos os meus “Posts” em Português e Inglês.
Este era um desafio que há muito andava a preparar, alargando assim desta forma o alcance a outras paragens internacionais que não as da Língua Portuguesa.

Continue Reading

Gerador de Árvores em AS3 / Tree Generator AS3 Code

Posted on 12. Fev, 2011 by João Gonçalves.

2

Ultimamente tenho estado a ler um livro que considero um dos melhores livros de Design e programação de 2010, FORM+CODE, de Casey Reas , Chandler Williams, e LUST. 

Se até à bem pouco tempo o “Código” era um domínio exclusivo de programadores, cada vez mais Designers, artistas, etc, iniciaram o seu percurso no dominio das linguagens de programação, criando novas frameworks de programação viradas para a Arte e o Design, como são o caso do Processing, criado por Casey Reas e Ben Fry, Open Frameworks, desenvolvido por Zach Lieberman, Theodore Watson, and Arturo Castro, ou até a framework HYPE de Joshua Davis e Branden Hall, para não falar em muitas outras. 

Este livro mostra claramente como tirar partido destas ferramentas para criar trabalhos artisiticos nas várias áreas do Design e Visualização de Dados, gaming, Inteligência artificial, etc…, utilizando qualquer linguagem de programação.

Como bem sabem pelo menos aqueles que me conhecem melhor, o meu mundo é quase todo ele ocupado pela dedicação à plataforma FLASH e mais concretamente ao Actionscript, nos últimos tempos e fruto do Mestrado em Multimédia que estou a frequentar, tenho me interessado sobremaneira a visualização de dados (tema do meu projecto de Mestrado), e ao ler o livro peguei nos exemplos de Processing e resolvi brincar traduzindo alguns deles em Actionscript , pelo que deixo aqui um exemplo de como é fácil criar formas visuais usando algoritmos de repetição com recursividade. 

Exemplo:

Get Adobe Flash player

E o Código em As3 para os mais curiosos:

 actionscript3 |  copy code |? 
001
package 
002
{
003
 import flash.display.Sprite;
004
 import flash.events.Event;
005
 import flash.events.MouseEvent;
006
 import flash.text.TextField;
007
 import flash.text.TextFieldAutoSize;
008
 
009
 /**
010
  * ...
011
  * @author Joao Gonçalves
012
  * http://joaogoncalves.net
013
  * joao@joaogoncalves.net
014
  */
015
 
016
 [SWF(width='900', height='600', backgroundColor='#ffffff', framerate=1)]
017
 public class Main extends Sprite 
018
 {
019
 
020
 private var dotSize:Number = 9;
021
 private var angleOffsetA:Number;
022
 private var angleOffsetB:Number;
023
 
024
 private var instructions:TextField;
025
 
026
 
027
 public function Main():void 
028
 {
029
 if (stage) init();
030
 else addEventListener(Event.ADDED_TO_STAGE, init);
031
 }
032
 
033
 private function init(e:Event = null):void 
034
 {
035
 removeEventListener(Event.ADDED_TO_STAGE, init);
036
 // entry point
037
 
038
 instructions = new TextField();
039
 instructions.text = "Click to generate a Tree, Double-Click to clear the stage.";
040
 instructions.autoSize = TextFieldAutoSize.LEFT;
041
 addChild(instructions);
042
 
043
 angleOffsetA = degToRad(1.5);
044
 angleOffsetB = degToRad(50);
045
 
046
 stage.doubleClickEnabled = true;
047
 stage.addEventListener(MouseEvent.CLICK, generateThree);
048
 stage.addEventListener(MouseEvent.DOUBLE_CLICK, clearStage);			
049
 
050
 }
051
 
052
 private function clearStage(e:MouseEvent):void 
053
 {
054
 this.graphics.clear();
055
 }
056
 
057
 private function generateThree(e:MouseEvent):void 
058
 {
059
 //this.graphics.beginFill(Math.random()*0xffffff);
060
 seed1(dotSize, degToRad(270), mouseX, mouseY);
061
 }
062
 
063
 private function seed1(dotSize:Number, angle:Number, xpos:Number, ypos:Number):void
064
 {
065
 
066
 this.graphics.beginFill(Math.random()*0x0000bb);
067
 if (dotSize>1) 
068
 {
069
 // create random number between 0 and 1
070
 var r:Number = Math.random();
071
 
072
 // 98% chances this will happen
073
 if (r> 0.02) 
074
 {
075
 this.graphics.drawEllipse(xpos, ypos, dotSize, dotSize);
076
 var newX:Number = xpos + Math.cos(angle) * dotSize;
077
 var newY:Number = ypos + Math.sin(angle) * dotSize;
078
 seed1(dotSize * 0.99, angle- angleOffsetA, newX, newY);
079
 }
080
 // 2% chance this will happen
081
 else 
082
 {
083
 this.graphics.drawEllipse(xpos, ypos, dotSize, dotSize);
084
 var newX:Number = xpos + Math.cos(angle);
085
 var newY:Number = ypos + Math.sin(angle);
086
 seed2(dotSize * 0.99, angle + angleOffsetA, newX, newY);
087
 seed1(dotSize * 0.60, angle + angleOffsetB, newX, newY);
088
 seed2(dotSize * 0.50, angle-angleOffsetB, newX, newY);
089
 
090
 }
091
 }
092
 }
093
 
094
 private function seed2(dotSize:Number, angle:Number, xpos:Number, ypos:Number):void
095
 {
096
 if (dotSize>1) 
097
 {
098
 // create random number between 0 and 1
099
 var r:Number = Math.random();
100
 
101
 // 95% chances this will happen
102
 if (r> 0.05) 
103
 {
104
 this.graphics.drawEllipse(xpos, ypos, dotSize, dotSize);
105
 var newX:Number = xpos + Math.cos(angle) * dotSize;
106
 var newY:Number = ypos + Math.sin(angle) * dotSize;
107
 seed2(dotSize * 0.99, angle+ angleOffsetA, newX, newY);
108
 }
109
 // 5% chance this will happen
110
 else 
111
 {
112
 this.graphics.drawEllipse(xpos, ypos, dotSize, dotSize);
113
 var newX:Number = xpos + Math.cos(angle);
114
 var newY:Number = ypos + Math.sin(angle);
115
 seed1(dotSize * 0.99, angle + angleOffsetA, newX, newY);
116
 seed2(dotSize * 0.60, angle + angleOffsetB, newX, newY);
117
 seed1(dotSize * 0.50, angle-angleOffsetB, newX, newY);
118
 
119
 }
120
 }
121
 }
122
 
123
 
124
 private function degToRad(deg:Number):Number
125
 {
126
 return deg * (Math.PI / 180);
127
 }
128
 
129
 }
130
 
131
}

Continue Reading

O que é User Experience?

Posted on 04. Jan, 2011 by João Gonçalves.

0

É verdade já tinha saudades de escrever novamente, estes últimos meses têm, sido muito complicados pessoal e profissionalmente, entretanto comecei um Mestrado em Multimédia, e a vontade de dar nova vida ao Blog surgiu, aproveito este reinicio colocando aqui um artigo que escrevi para a Computer Arts Portugal, sim é verdade, já temos a versão portuguesa, a qual aproveito aqui publicamente para dar os meus parabéns , principalmente ao António Castelhanito, pela capacidade que teve em trazer para Portugal uma revista deste calibre, pessoalmente cá estarei para ajudar a escrever artigos ou tutoriais quando assim o entenderem.

Artigo de Opinião da Computer Arts Portugal Nº2:

O que é User Experience?

 “ The main thing is that everything become simple, easy enough for a child to understand” — Albert Camus 

Aproveitando a comemoração do “Dia Mundial da Usabilidade” que decorreu no ultimo dia 11 de Novembro, irei abordar o tema “User Experience (UX)“, isto porque existem várias dúvidas e autores que defendem que UX é sinonimo de Usabilidade, pessoalmente entendo que UX é mais do que usabilidade.

Desde da década de 70, quando se começou a falar de “Ubiquitous Computing” , “Calm Tecnology” ou “Pervasive Computing“, até aos dias de hoje, ainda não existe um consenso alargado acerca da definição de “User Experience“, actualmente e segundo o standard ISO 9241-210 de 2010, User Experience é:

“A faculdade perceptiva e respostas de um individuo resultante da utilização e/ou antecipação da utilização de um determinado produto, sistema ou serviço”

Poderão muitos perguntar mas isso não é a definição de usabilidade? Não, segundo o mesmo standard, Usabilidade é:

“A medida em que um sistema, produto ou serviço pode ser utilizado por um determinado tipo de utilizador na concretização de determinados objectivos, com eficácia, eficiência e satisfação num determinado contexto de utilização”

A designação é muito parecida ambas se referem a uma medida durante e após a utilização de um produto, sistema ou serviço, no entanto, nem sempre um produto é usável  e tem um boa User Experience, alem de que o conceito de User Experience abrange também o “antes”,  além do “durante” e o “depois”, analisemos um exemplo: o Motorola ROKR E1 ITunes Phone (2005), o telemóvel tinha as melhores componentes para ter êxito, tecnologia de ponta, Design de sucesso (evolução do RAZR, com reconhecida usabilidade), e ligação ao “Market”  ITunes da Apple, então como se justifica que 2 anos depois, o IPhone tenha rapidamente conquistado a grande maioria do mercado, contribuindo para o insucesso do ROKR apesar dos 2 anos de vantagem, uma das razões apontadas é simples: os utilizadores tinham uma melhor “User Experience” no IPhone comparada com a dos os restantes modelos existentes no mercado.

Analisando , chegamos rapidamente á conclusão que Usabilidade, é uma medida influenciada por 3 factores chaves: eficácia, o utilizador consegue alcançar os seu objectivos completando e corrigindo as suas tarefas; eficiência, o utilizador consegue esses resultados com um mínimo de esforço;  satisfação, o utilizador sente-se confortável na utilização da interface durante a execução das suas tarefas.

O conceito de User Experience(UX)  é mais abrangente e resulta da interacção de vários factores, tanto a nível intrínseco, como extrínseco. Ao nível intrínseco é o produto de uma interacção complexa entre factores cognitivos, afectivos, motivacionais e atitudinais. Perante a possibilidade de utilização do sistema/produto,  o utilizador desenvolve expectativas e inferências sobre o que o produto consegue fazer (“affordances“) e em que medida este lhe permite alcançar os seus objectivos(eficiência), o que irá moldar a sua atitude face ao sistema e o modelo mental que desenvolve sobre o produto. A experiência de utilização do sistema permite ao utilizador desenvolver a sua percepção acerca do produto e registar os aspectos fulcrais da interacção em memória, a partir das aprendizagens efectuadas aquando da interacção. A interacção com o sistema leva ainda o utilizador a experimentar emoções (positivas ou negativas) e satisfação (ou não), em função da medida em que  o sistema alcança os objectivos propostos(satisfação emocional), fornece uma resposta cabal ás necessidades do utilizador e cumpre as expectativas delineadas(eficácia). Ao nível extrínseco a User Experience(UX) é moldada pelas influências e pressões sociais a que o utilizador é submetido, bem como pelo contexto socioeconómico e tecnológico em que este se encontra num dado momento. Todos estes factores condicionam a qualidade da relação criada com o sistema, por exemplo, a satisfação de possuir, ler e conservar um livro antigo será diferente caso tenha adquirido o mesmo, num livreiro clássico, num supermercado de retalho, num leilão de antiguidades ou mesmo encontrado no meio da rua.

Poderemos  caracterizar graficamente ambas as definições da seguinte forma:

Ux_Usability

Esperando que tenha contribuído para um maior esclarecimento sobre este tema, tenciono em futuras edições, abordar temas relativos  a estas novas disciplinas como são User Experience(UX), Interaction Design(IxD), Design de Interfaces, Service Design, Information Design, Information Architecture(IA), Usability, Human Computer Interaction(HCI), Data Visualization, etc…, ou seja, todos estes conceitos giram a volta de uma palavra que tão bem conhecemos DESIGN.

“ Design’s fundamental role is problem solver”— Fast Company, 2005

Continue Reading

1 2 3 4 »Last »

Nuvem

ACE ACI acrobat.com actionscript actionscript 3.0 Add new tag Adobe Adobe Open Screen Project air ajax api as3 beta design dreamweaver e4x ebook evento eventos flash FLASH CATALYST flash platform flash player flex formação Google HCI interaction design javascript lisboa livros Microsoft offf offf 2008 open source papervision ria tutoriais tutorial utilitário web web 2.0 web design xml yahoo
  • Popular
  • Comments
  • Tags
  • Vera Tiago: Muito Bom!...
  • Mário Parrinha - Web Designer: excelente professor !!!...
  • Fabiano: Olá João, estou usando um PC comum, com Flash CS4 ...
  • santos: bom dia João Tou agora a tentar fazer um project...
  • Jeffex: por favor eu preciso colocar mais de um marcador p...
ACE ACI acrobat.com actionscript actionscript 3.0 Add new tag Adobe Adobe Open Screen Project air ajax api as3 beta design dreamweaver e4x ebook evento eventos flash FLASH CATALYST flash platform flash player flex formação Google HCI interaction design javascript lisboa livros Microsoft offf offf 2008 open source papervision ria tutoriais tutorial utilitário web web 2.0 web design xml yahoo

Amigos

  • AUG PT
  • Cláudia Pernencar
  • David Marques
  • Eduardo Antunes
  • Francisco Costa
  • João Flex with CF
  • Paulo Moreira
  • riaPT
  • Ricardo Castelhano
  • Sofia´s Blog

Blogroll

  • aaron beall
  • Algorithmist
  • Aral Balkan
  • ByteArray.org
  • Carlos Ulloa
  • Chris Hewitt
  • Colin Moock
  • Daniel Dura
  • Drew Cummins
  • Flash and Math
  • Generative Graphics
  • Grant Skinner
  • Jared Tarbell
  • Jesse Warden
  • John Grden
  • John Lindquist
  • Keith Peters
  • Lee Brimelow
  • Lost in Actionscript
  • Mihai Corlan
  • Mike Chambers
  • Mike Lively
  • RIAvolution
  • Rob Chiu
  • Ryan Stewart
  • Seb Lee-Delisle
  • Serge Jespers
  • SoulWire
  • Stefan Richter
  • TheTechLabs
  • Tinic-Uro

formandos brilhantes

  • Cátia Rodrigues
  • David Marques
  • Francisco Costa
  • João Oliveira
  • José Varregoso
  • Pedro Moleiro
  • Vanea Cera
  • Vitor Magano

Twitter

  • @pernencar he was the father of NUI
  • A saborear as primeiras sardinhas do ano (@ 2 Da Torre) http://t.co/Yf3zwfFa
  • I just unlocked the “Porky” badge on @foursquare for checking in to barbecue spots! Brisket all around! http://t.co/VmbzX6hs

Comentários

  • Vera Tiago on Gerador de Árvores em AS3 / Tree Generator AS3 Code
  • Mário Parrinha - Web Designer on Ferramentas gratuitas desenvolvimento web
  • Fabiano on GAIA framework para FLASH
  • santos on Realidade Aumentada em FLASH
  • Tweets that mention MXNA Gerador de Árvores em AS3 / Tree Generator AS3 Code: Ultimamente tenho estado a ler um livro que considero ... -- Topsy.com on Gerador de Árvores em AS3 / Tree Generator AS3 Code

Arquivos

  • August 2011
  • February 2011
  • January 2011
  • December 2009
  • October 2009
  • September 2009
  • August 2009
  • July 2009
  • June 2009
  • May 2009
  • April 2009
  • February 2009
  • January 2009
  • November 2008
  • October 2008
  • September 2008
  • August 2008
  • July 2008
  • June 2008
  • May 2008
  • April 2008

© 2008 João Gonçalves. All Rigths Reserved.

ACE Flash ACE DreamweaverACI FlashACI Dreamweaver