Dec
28

Online training em Flex 2

O Lynda.com possui dois cursos de Flex 2 em vídeo, excelentes para quem está a entrar neste mundo e quer aprender rapidamente.

O primeiro curso chama-se Flex 2 Essential Training e introduz temas como a linguagem MXML, controlos visuais, layout e navegação, carregamento simples de dados (XML e Web Services) do servidor, formulários, e manipulação da apresentação visual através CSS.

O segundo curso tem o nome Flex 2 Beyond The Basics e apresenta temas como debugging, manipulação de eventos, E4X, menus, janelas de diálogo, efeitos visuais, integração com Coldfusion, autenticação, manipulação de dados do lado do cliente, e integração com .NET através de Web-services.

Ambos os cursos podem comprados em DVD ou acedidos online (para inscritos no Lynda.com), possuem uma duração de cerca de 5 horas cada, e um preço que ronda os $100. Porém, os primeiros capítulos são gratuítos (Getting Started e Debugging).

Não são propriamente baratos, mas são um excelente recurso para quem quer começar a aprender Flex 2 a partir do zero e pode abrir os cordões à bolsa.




Dec
24

Introdução teórica às tecnologias de desenvolvimento de RIAs baseadas em Flash

Introdução

Quando me interessei por Rich Internet Applications, já tinha alguns anos de experiência em programação e algum conhecimento de Actionscript e linguagens Web. Mesmo assim não foi fácil entrar no mundo das RIAs, pois nunca encontrei um local que explicasse “Uma RIA consiste nisto, deves usar isto, e aprender como se faz aquilo”. No fundo, tive primeiro que aprender várias tecnologias, deduzir como iria integrá-las, e só então é que se tornou claro para mim como construir uma RIA.

Quer isto dizer que é complicado fazer uma RIA? Não, muito pelo contrário. “RIA” é apenas um conceito, pois na prática não passa da nossa capacidade de integrar diferentes tecnologias e metodologias para implementar uma aplicação semelhante ao software desktop com um interface extremamente usável e “optimizado” em função do utilizador final.

Porém, o que pode ser complicado é o “entrar” neste mundo. Existe uma panóplia de ferramentas espalhadas por aí, 1001 formas de fazer a mesma coisa, cada uma com os seus pontos fortes e fracos. E sem os conselhos adequados é preciso “perder” imenso tempo a investigar até se obter aquilo que a comunidade osflash designa por “workflow”. A utilização deles desta palavra não é a mesma a que estamos habituados no nosso país, mas no fundo designa o conjunto de ferramentas, de técnicas e metodologias que se unem para se atingir um objectivo. Neste caso, construir uma RIA.

Neste tutorial não é pretendido dizer “é assim” que se faz uma RIA, mas sim explicar por alto quais os componentes que a compõem, que tecnologias e soluções podem ser usados, e sugerir alguns workflows usando Flash/Flex.

 

Estrutura de uma RIA

Uma RIA não passa de uma aplicação distríbuida. Quer isto dizer que haverão pelo menos duas “entidades” envolvidas: um cliente e um servidor. O cliente é o computador do utilizador que acede ao interface gráfico da aplicação. O servidor é um computador que disponibiliza serviços, que escondem por detrás a lógica de negócio e a base dados. A comunicação é sobre HTTP e é conseguida através de várias soluções, como LoadVars, XML ou remoting.

A seguinte figura ilustra o que descrevi anteriormente:

Diagrama n-tier

(Curiosidade: o diagrama acima foi feito no Gliffy, que é uma RIA para fazer diagramas).

Isto implica que têm que ser feitas pelo menos 3 escolhas de tecnologias: client-side, comunicação, e server-side.

A escolha entre as tecnologias client-side e server-side seria completamente independente (ou seja, inicialmente pode ser usado actionscript no lado do cliente, e java no do servidor, e mais tarde mudar o java para php sem que seja necessário mudar uma única linha de código no lado do cliente), se não estivesse dependente da escolha do método de comunicação.
Por isso, interessa explicar primeiro quais os métodos mais habituais para a comunicação.

 

A comunicação

A escolha do método de comunicação deve ter em conta a sua eficiência (i.e. dados comprimidos ou não), o overhead que coloca no servidor e cliente (i.e. processamento necessário para converter o formato dos dados transmitidos para dados manipuláveis), e o trabalho que o programador terá que ter a mais ou a menos durante o desenvolvimento.
Temos as seguintes opções:

- LoadVars
- XML
- Flash Remoting
- Web Services

LoadVars é uma tecnica antiga desaconselhada para aplicações complexas. Consiste em disponibilizar ficheiros de texto com pares variavel = conteudo.

XML é uma das técnicas mais usadas (talvez a mais usada), e consiste em disponibilizar os dados em formato de texto numa estrutura em árvore – equivalente à estrutura dos “objectos” a transmitir. É uma solução bastante boa, com as desvantagens de que é menos eficiente que a solução proposta a seguir, e ainda de que implica mais trabalho da parte do programador.

Flash Remoting consiste em colocar o servidor a disponibilizar objectos (através protocolo AMF0 ou AMF3, – o programador pode fazer uma RIA sem sequer saber o que é AMF!), que são consumidos e convertidos automaticamente para a linguagem do lado do cliente. Esta solução é interessante na medida em que o programador não tem que escrever o código para converter o formato dos dados transmitidos para o formato dos objectos da linguagem em questão (problema que acontece, por exemplo, com o XML). Além disso, ao não existir esse código há menos processamento envolvido=mais eficiência. Outra vantagem, é o facto do protocolo AMF comprimir os dados, isto é, uma mensagem AMF ocupa muito menos que uma mensagem XML=mais “velocidade”. Esta é sem dúvida a solução mais sensata para aplicações complexas.

Web Services Esta solução não é muito diferente da de Flash Remoting na medida em que também existe conversão automática dos objectos. A principal diferença reside no facto dos dados transmitidos não serem comprimidos, pois os Web Services na realidade assentam em XML, apesar de o fazerem transparentemente

 

Implementações de Flash Remoting

Como se viu anteriormente, o Flash Remoting é a solução de comunicação mais interessante. Existem várias implementações desta solução disponíveis:

- AMFPHP: para PHP. Suporta AMF0 e AMF3. É open-source
- SabreAMF: para PHP. Suporta AMF3. É open-source
- Fluorine: para .NET. É open-source. Suporta AMF0 e AMF3
- ColdFusion: implementação comercial da Adobe, que integra o Flash Remoting com uma linguagem própria para desenvolvimento web (e muitas outras potencialidades). Suporta AMF0, AMF3 e Web-Services.
- openAMF: para JAVA. Open-source. Suporta AMF0
- Red5: Para JAVA. Open-source. Suporta AMF0, e RTMP. Solução para streaming multimédia.
- WebOrb: possuem implementações comerciais para .NET, RoR, e open-source para PHP.
- Flex Data Services 2: é uma solução comercial da Adobe que suporta tudo e faz “tudo” (exceptuando pipocas), tal como data push, data synchronization, e muitas outras potencialidades revolucionárias.

A escolha da implementação do Flash Remoting será feita, obviamente, de acordo com os conhecimentos da equipa de desenvolvimento em certa linguagem e das características específicas dessa mesma linguagem. Por exemplo, se a equipa for expert em PHP, pode escolher entre AMFPHP, SabreAMF ou WebORB. Se perceber de JAVA, poderá optar por openAMF, Red5 (que também pode e deve usado para streaming de dados multimédia), WebORB, ou mesmo ligar código JAVA ao Flex Data Services 2 ou ao Coldfusion.

 

Do lado do servidor

Programar a lógica de negócio e de acesso a dados (o lado do servidor) é algo que irá fazer com relativa facilidade se já tiver experiência de desenvolvimento. Não há aqui muito a dizer, irá apenas fazer código para manipular dados de uma base de dados e disponibilizá-los na forma de serviços. Essa “disponibilização” é a única novidade, mas não implica quase esforço nenhum por parte do programador: basta na solução de remoting escolhida “designar” quais as classes que estão acessíveis para o exterior.
Obviamente, cabe ao programador escolher qual é o sistema de gestão de base dados (SGBD) que vai usar, sendo que para a web um dos mais habituais é o MySQL.

 

Lado do cliente

Chega então a altura de escolher a linguagem do lado do cliente, que é onde reside a verdadeira diferença das RIAs. Aqui a escolha será dividida entre as seguintes (se se objectivar uma RIA a correr através do Flash Player):

- Actionscript 2.0
- Actionscript 3.0

O Actionscript 2.0 é a linguagem por defeito do Flash 8. É compatível com todas as versões do Flash Player a partir do 7 e pode ser compilado pelo (lento) compilador da Macromedia ou pelo (rápido) MTASC que, entre outras coisas, é open-source e estimula as boas práticas de desenvolvimento. Optar por desenvolver o seu projecto em Actionscript 2.0 implica escolher entre estes compiladores, e também entre diversos “workflows” (i.e. usar apenas o Flash IDE para fazer o design e o código, usar o Eclipse para programar compilando com o MTASC, etc).

O Actionscript 3.0 foi introduzido com o compilador do Flex 2. É uma linguagem muito mais poderosa que a versão anterior, e o conjunto de bibliotecas (componentes) que acompanha o Flex 2 é fenomenal. Além disso, pode optar por programar em MXML, a linguagem do Flex, que é fantástica por ser tão simples. O compilador é muito rápido, e usando o Flex Builder 2 obtém indices de produtividade muito elevados. As bibliotecas (SDK) e o compilador do FB2 são gratuítos, pelo que só terá que pagar se quiser mesmo comprar o IDE – que compensa!

Em breve será lançada a versão 9 do Flash IDE, que irá suportar Actionscript 3.0. Quer isto dizer que será possível desenvolver projectos usando estas duas ferramentas em conjunto, onde o Flash pode ser usado para as animações e efeitos do interface, e por aí adiante, e o Flex para a programação.
Apesar disto já ser possível entre o Flex 2 e o Flash 8, é desaconselhado pois implica um esforço extra para colocar código AS3 a comunicar com AS2.

 

Workflows

Posto isto, existem então diversas combinações que se podem obter para construir um workflow de desenvolvimento de Rich Internet Applications.

Optando por Actionscript 3.0, pode fazer as seguintes combinações (por exemplo):

Flex 2+AMFPHP+PHP+SGBD
Flex 2+SabreAMF+PHP+SGBD
Flex 2+ColdFusion+SGBD
Flex 2+Fluorine+.NET
Flex 2+Flex Data Services 2+JAVA+SGBD
Flex 2+Flex Data Services 2+Coldfusion+SGBD

Isto, se quiser usar implementações de Flash Remoting que suportem AMF3 – que é mais eficiente que o AMF0, e criado especialmente para ser utilizado com Actionscript 3.0.

Se quiser usar AMF0, terá que usar esta classe e poderá fazer mais combinações, como:

Flex2+openAMF+JAVA+SGBD
Flex2+Red5+JAVA+SGBD

Se optar por Actionscript 2.0, pode obter todas as combinações acima (trocando Flex 2 por Flash). Em termos estruturais nada muda, excepto a linguagem do lado do cliente.

Desenvolver em Actionscript 3 implica apenas utilizar o compilador da Adobe, independentemente de utilizar só o SDK ou o próprio Flex Builder 2.
No caso do Actionscript 2.0, a coisa não é tão directa: existe um leque enorme de possibilidades que resultam da integração do Flash 8 IDE com várias ferramentas open-source.
Por exemplo, pode-se optar por:

- Desenhar o interface e programar no proprio Flash 8, compilando com o compilador da Macromedia – extremamente desaconselhado
- Desenhar o interface no Flash 8, programar no Eclipse (usando o plugin ASDT) compilando com o compilador MTASC – a opção mais sensata
- Criar a biblioteca de recursos usando o SWFMill que é open-source, programar no Eclipse+ASDT, e compilar com MTASC, cujo workflow se denomina de AMES- a opção 100% open-source e gratuíta

Para obter mais informações sobre desenvolvimento em Flash usando ferramentas open-source consulte www.osflash.org.

No meio de tantas escolhas, qual é a certa? Bem, não há uma resposta certa: de acordo com as características do projecto, com o dinheiro disponível e com os conhecimentos da equipa deverá ser escolhida a solução que mais se adequar ao caso.
Pessoalmente, eu sou adepto de Flex 2+AMFPHP+PHP, que é uma solução bastante equilibrada, simples e gratuíta, e que funciona em qualquer serviço de hosting.
Neste momento ando a investigar Flex 2+Coldfusion, porque aparentemente ir-me-á aumentar a produtividade.
Mas se tivesse dinheiro, a minha aposta seria sem qualquer dúvida a combinação Flex 2+FDS2+Coldfusion ou JAVA.

 

Já percebi a lógica… mas estas tecnologias permitem usar boas práticas habituais em J2EE?

Apesar de não ser necessário desenhar uma arquitectura ou framework para desenvolver uma RIA, faz sentido esclarecer este ponto.
Se fôr um adepto de Engenharia de Software sabe perfeitamente que é muito complicado construir projectos de média/larga envergadura sem se basear numa arquitectura robusta, baseada em boas práticas. Portanto, neste caso, a pergunta será algo como “posso aplicar arquitecturas e padrões de desenho comuns noutras linguagens (JAVA) a actionscript?“.
A resposta é sim. O Actionscript, especialmente na versão 3.0 possui uma sintaxe e características muito semelhantes ao JAVA. Migrar de JAVA para Actionscript é algo que não é muito complicado: basta perceber o conceito por detrás das RIAs, e estudar um pouco as bibliotecas do Flex SDK. Quer isto dizer que os padrões de desenho e as arquitecturas são facilmente implementáveis em Actionscript.

Aliás, existem duas implementações em Actionscript 2.0 e 3.0 de frameworks de desenvolvimento baseadas em MVC: Cairngorm e ARP. Se for adepto de boas práticas, pode, portanto, construir a sua RIA usando as melhores metodologias de Engenharia de Software.

Se possui um sistema informático baseado em JAVA (ou .NET… ou até PHP) e quiser criar-lhe um front-end que possa ser executado em qualquer computador com um browser e o Flash Player, e se o seu sistema actual assentar numa arquitectura de camadas, basta incorporar no seu sistema a plataforma de Flash Remoting que optar, e “escolher” os serviços da sua camada de negócio que quer expôr para o exterior. Depois é uma questão de implementar a camada de apresentação usando Actionscript.

 

Em resumo…

Resumindo, se já sabe uma linguagem que possa usar do lado do servidor, apenas terá que perceber como acrescentar Flash Remoting ao seu código (que é algo extremamente fácil independentemente da implementação que escolher), e aprender Actionscript.

Se é algo tão simples porque é que escrevi tanto, quando podia ter explicado só isto?
Ora bem, esta “simplicidade” é resultado de um processo evolutivo no mercado de desenvolvimento de RIAs. Para essa evolução ter ocorrido, foi necessário irem surgindo diversas implementações do Flash Remoting, e outras ferramentas, resultando em muitas opções e escolhas a fazer. Sem a ajuda necessária, será certamente assustador para quem está a entrar neste mundo deparar-se com 1001 ferramentas sem saber para que servem. “Limitei-me” a apresentar algumas das opções possíveis (há mais!) e sugerir algumas escolhas.

Espero que com esta introdução teórica ao desenvolvimento de RIAs tenha ficado com uma ideia geral dos componentes que necessita de juntar para construir uma RIA, e que a partir daqui seja mais simples tomar as suas opções, concentrando a sua investigação nas tecnologias que escolheu.




Dec
21

AMFPHP 1.9 beta com suporte de AMF3

Foi lançada uma nova versão (beta) do AMFPHP, agora com suporte de AMF3 – ou seja, já podemos ligar uma aplicação Flex2 ao PHP sem precisarmos do RemoteObjectAMF0. Entre outras coisas, esta nova versão do AMFPHP suporta:

- AMF3
- JSON
- Novo Service Browser
- …

Para mais informações, clique aqui.




Dec
19

Palestra online sobre o Apollo

Logotipo do Apollo

O Apollo promete revolucionar o mundo ao permitir que uma aplicação web seja simultâneamente uma aplicação desktop compatível com Windows, Mac e Linux, sem necessitar do browser, e com a capacidade de gerir uma ligação à Internet ocasional… confuso? :)

Nada como assistir gratuitamente à palestra online no dia 20 de Dezembro pelas 22:30 de Portugal (19:30 no Brasil), no Adobe Chats.

O orador será o Leonardo França, programador Web com tecnologias Adobe à cerca de 5 anos e administrador do AUGDF (Adobe User Group de Brasilia).

Para mais informações clique aqui.




Dec
18

A Comunidade Portuguesa de Desenvolvimento de Rich Internet Applications

O que são RIAs?

O termo Rich Internet Application (RIA) surgiu pela primeira vez num artigo da Macromedia em Março de 2002, quando esta finalmente se apercebeu que a Flash Platform, criada inicialmente com o objectivo de adicionar animação e interactividade a páginas Web, se tinha tornado numa ferramenta poderosa de construção de aplicações Web com características idênticas às das aplicações desktop.

Desde esse momento até aos dias de hoje houve uma evolução marcante nesta área, de tal forma que aplicações em Flash ou AJAX, como o Yahoo Maps ou o Google Mail, fazem parte do nosso quotidiano. Mais do que um conjunto de tecnologias, as Rich Internet Applications são no fundo um conceito que consiste em unir num thin client as melhores características do software desktop com o potencial das aplicações Web, resultando em aplicações multi-plataforma que, além de caracterizadas pelo seu interface aprimorado e rico em multimédia, permitem a redução de custos e o aumento da eficiência do utilizador (graças a preocupações com a usabilidade), entre outras vantagens.

 

Objectivo da comunidade

Com esta comunidade, pretendemos unir todos os experts e interessados em RIAs num único ponto, partilhar conhecimento, mostrar ao país e ao mundo o que se faz de bom por cá, e quem sabe organizar umas conferências em Portugal de tempos a tempos, entre outras coisas.

 

Como surgiu esta comunidade?

Existem já algumas centenas de comunidades estrangeiras em redor do desenvolvimento em flex, flash, ajax e rich internet applications especificamente, como o osflash, flexcoders ou flex-brasil. Nas nossas trocas de conhecimento nestas comunidades fomos constatando que afinal até haviam vários portugueses especializados e apaixonados por este tema. Sentimos a necessidade de criar esta comunidade à semelhança do que se faz lá fora, e cá estamos!

 

Quem se pode inscrever?

Todos os apaixonados por RIAs, Web Applications, ou simplesmente websites de qualidade, sejam eles programadores ou designers. Não existem quotas, compromissos ou obrigações – apenas troca de conhecimento!

 

Onde me posso inscrever

A mailing list é o ponto central da nossa comunidade. É onde partilhamos conhecimentos, tiramos dúvidas ou tomamos decisões. Primeiro deve consultar a mailing list para ter uma ideia dos assuntos discutidos. Depois, deve inscrever-se usando esta página.

Para se inscrever como blogger, basta que se registe aqui.

advair Yasmin Lee Combivent inhaler phendimetrazine diet pills 758. cozaar side effects; Hydrocodone Bitartrate

doxycycline side effects?

buy anabolic steroids Spiriva letrozole, georgia accutane lawyers! Pepcid georgia accutane lawyers! side effects of prednisolone Lamivudine drugs and alcohol diovan hct Ephedrine In Mexico buy steroids
asacol side effects
Didrex No Prescription Needed Alcohol addiction recovery buy testosterone 788. dallas sleep dentist Voltaren Diclofenac sleep dentistry san francisco "cefuroxime" Side Effects Of Steroids sleep inn dogs and aspirin British Dragon Steroids floxin sleep medications Dangers Of Vicodin buy vicodin in mexico american academy of sleep medicine

Alcohol Withdrawl

sleep learning Alcohol fact sheet natural testosterone supplements 379. Suprax yellow bullet ephedra review? avandia, Olanzapine subutex buy codeine Dutasteride carvedilol buy fioricet Lactase oxycontin withdrawal affects of alcohol Ultram Er lamictal withdrawal dogs and aspirin Phendimetrazine No Prescription history of alcohol! "oxycontin abuse" Buy British Dragon Steroids orlistat side effects alcohol detox program Bontril Sr metformin hcl drug and alcohol abuse Augmentin imitrex vasotec Baclofen Side Effects Combivent inhaler phendimetrazine diet pills 758. cozaar side effects; Buy Phendimetrazine doxycycline side effects? "lysodren" Buy Ritalin Online letrozole, georgia accutane lawyers! Oxycontin Addiction georgia accutane lawyers! side effects of prednisolone Zyprexa Side Effects drugs and alcohol ultram er Celebrex Dosage

buy steroids

miles to go before i sleep Lovastatin Alcohol addiction recovery buy testosterone 788. teens and alcohol 2008 Hyundai Sonata sleep dentistry san francisco "cefuroxime" Alcohol 1.9.5 Crack sleep inn dogs and aspirin Crestor Side Effects floxin diclofenac voltaren intestine, Darvocet buy vicodin in mexico american academy of sleep medicine Periactin sleep learning ponstel!

Sleep Apnea Alternative To Cpap

yellow bullet ephedra review? metformin; Tretinoin Cream
subutex
zelnorm recall Pravachol carvedilol buy fioricet Toddler Wont Sleep oxycontin withdrawal affects of alcohol Nexium Rebate lamictal withdrawal dogs and aspirin Zyrtec history of alcohol! "oxycontin abuse" Lexapro Antidepressant orlistat side effects alcohol detox program Alcohol Abuse Effects metformin hcl drug and alcohol abuse Topamax Weight Loss imitrex alcohol calories Alcohol 120 Download Combivent inhaler phendimetrazine diet pills 758. cozaar side effects; Topamax And Weight Loss doxycycline side effects? "lysodren" Buprenorphine letrozole, georgia accutane lawyers! Coreg Cr georgia accutane lawyers! side effects of prednisolone Micardis drugs and alcohol

ultram er

Side Effects Of Celebrex buy steroids
miles to go before i sleep
Diclofenac Sodium Alcohol addiction recovery buy testosterone 788. dallas sleep dentist Fioricet Addiction sleep dentistry san francisco "cefuroxime" Sleep Country sleep inn dogs and aspirin Hydroxyzine Hcl floxin sleep medications Natural Testosterone buy vicodin in mexico american academy of sleep medicine

Cause Of Low Testosterone

sleep learning Alcohol fact sheet natural testosterone supplements 379. Facts About Alcohol yellow bullet ephedra review? avandia, Allegra De Vita subutex buy codeine Colorado Botox carvedilol buy fioricet Generic Percocet oxycontin withdrawal side effects of topamax Diovan Hct Side Effects lamictal withdrawal dogs and aspirin Zyvox history of alcohol! "oxycontin abuse" Rivotril orlistat side effects alcohol detox program Diovan Hct metformin hcl drug and alcohol abuse Alcohol Prohibition imitrex alcohol calories Alcohol Facts Combivent inhaler phendimetrazine diet pills 758. cozaar side effects; Ephedra P57 doxycycline side effects? "lysodren" Cheapest Sildenafil Citrate letrozole, georgia accutane law suits, Everclear Alcohol georgia accutane lawyers! generic oxycontin Cefadroxil drugs and alcohol ultram er Snorting Hydrocodone buy steroids asacol side effects Arimidex
Alcohol addiction recovery buy testosterone 788.
dallas sleep dentist Aygestin sleep dentistry san francisco "cefuroxime" Blood Alcohol Content sleep inn dogs and aspirin Synthroid floxin diclofenac voltaren intestine, Xenical Scam buy vicodin in mexico american academy of sleep medicine Stages Of Copd sleep learning ponstel! Sleep Sound Machine yellow bullet ephedra review?
avandia,
Eternal Sonata subutex zelnorm recall Cardizem carvedilol order vicodin Symptoms Of Sleep Apnea oxycontin withdrawal affects of alcohol Mobic lamictal withdrawal dogs and aspirin Ephedra Products history of alcohol! "oxycontin abuse" Fioricet Overnight orlistat side effects alcohol detox program Kingdom Hearts Birth By Sleep metformin hcl drug and alcohol abuse Percocet 512 imitrex alcohol calories Fetal Alcohol Syndrom Combivent inhaler phendimetrazine diet pills 758. cozaar side effects; Alcohol Drink Recipes doxycycline side effects? "lysodren" Sleep Fuck letrozole, georgia accutane law suits, Zoloft Side Effects
georgia accutane lawyers!
bd steroids; Alcohol Awareness drugs and alcohol diovan hct Cant Sleep

buy steroids

miles to go before i sleep Levoxyl
Alcohol addiction recovery buy testosterone 788.
dallas sleep dentist Anafranil sleep dentistry san francisco "cefuroxime" Mexican Steroids sleep inn dogs and aspirin Arimidex Side Effects floxin diclofenac voltaren intestine, Sleep Ez buy vicodin in mexico american academy of sleep medicine Easy Way To Buy Hydrocodone Online sleep learning ponstel! Sleep Walking yellow bullet ephedra review? avandia, Computer Sleep subutex buy codeine Doxycycline Hyclate carvedilol buy fioricet Atenolol Side Effects oxycontin withdrawal affects of alcohol Boulder Botox lamictal withdrawal dogs and aspirin Buy Ephedra history of alcohol! "oxycontin abuse" Buy Steroids orlistat side effects alcohol detox program Flomax Side Effects metformin hcl drug and alcohol abuse Lipitor imitrex vasotec Normal Testosterone Levels Combivent inhaler phendimetrazine diet pills 758. amitriptyline side effects Lortab Without Prescription doxycycline side effects? "lysodren" Hydroxyzine Pam letrozole, georgia accutane lawyers! Lotensin georgia accutane lawyers! side effects of prednisolone Fetal Alcohol Syndrome drugs and alcohol ultram er Effects Of Steroids buy steroids asacol side effects Xenical Alcohol addiction recovery buy testosterone 788. teens and alcohol Fosamax For Children sleep dentistry san francisco "cefuroxime"
Georgia Oxycontin Lawyers sleep inn lactase Effexor And Alcohol floxin diclofenac voltaren intestine, Symptoms Vicodin Addiction buy vicodin in mexico american academy of sleep medicine Effects Of Alcohol On The Brain sleep learning

ponstel!

Dilantin Overdose yellow bullet ephedra review? metformin; Didrex Online subutex buy codeine Ezetimibe carvedilol buy fioricet Quetiapine oxycontin withdrawal affects of alcohol Low Testosterone Levels lamictal withdrawal dogs and aspirin Bupropion Sr history of alcohol! "oxycontin abuse" Sleep Inn Hotels orlistat side effects alcohol detox program Generic Prilosec metformin hcl drug and alcohol abuse Effexor Xr Side Effects imitrex alcohol calories Yasmin Birth Control Combivent inhaler phendimetrazine diet pills 758. cozaar side effects; Glipizide doxycycline side effects? "lysodren" Copd Stages letrozole, georgia accutane lawyers! Metoprolol Tartrate georgia accutane lawyers! side effects of prednisolone Isopropyl Alcohol Msds drugs and alcohol ultram er Glucotrol buy steroids asacol side effects Side Effects Of Zelnorm
Alcohol addiction recovery buy testosterone 788.
dallas sleep dentist Acid Folic Women sleep dentistry san francisco "cefuroxime" Botox Side Effects sleep inn dogs and aspirin Flomax floxin diclofenac voltaren intestine, Heparin buy vicodin in mexico american academy of sleep medicine Botox Chicago sleep learning ponstel! Natural Sleep Aid yellow bullet ephedra review?
avandia,
Phendimetrazine Diet Pills subutex zelnorm recall Risperidone carvedilol buy fioricet Lantus Solostar oxycontin withdrawal side effects of topamax Fort Worth Sleep Dentistry lamictal withdrawal dogs and aspirin Griseofulvin history of alcohol! alcohol problems? Alcohol Poisoning orlistat side effects alcohol detox program Motrin metformin hcl drug and alcohol abuse Sleep Remedies imitrex alcohol calories Ciprofloxacin Combivent inhaler phendimetrazine diet pills 758. cozaar side effects; Advair doxycycline side effects? "lysodren" Plavix Side Effects letrozole, georgia accutane lawyers! Low Testosterone Symptoms georgia accutane lawyers! generic oxycontin Yasmin Taylor drugs and alcohol
top