Aug
12

Joining different technologies can give sweet results

A couple of fun free apps..

Lately we have played around with Adobe AIR in Web Responsive and the outcome is two small but sweet applications.

JEPUM – Joomla Easy Picture Uploader and Manager

This application is somehow geeky, as it combines two technologies rarely seen working (intimately) together: Joomla and Flex (AIR). Basically it is a picture uploader for Joomla, since the normal picture uploader/manager in Joomla is somewhat annoying/time-consuming to use. This application also features integrated FTP installation of the Joomla extension, which serves more as test case/experiment, rather than true usefulness.

Get a free version of JEPUM.

WorkSmart – Get more done, feel better

As someone spending plenty of hours sitting at the desk in front of a computer, I am becoming increasingly aware of the long term physical problems this can lead to.

With that in mind, we created a small free application, that uses the Pomodoro technique to increase your productivity at work, while utilizing the work pauses to improve your body posture through targeted mobility and stretching exercises. This is the first application inside the HealthWize project.

Get a free version of WorkSmart.

Our next version will feature video exercises, which will be a lot of fun.

As always, feedback of any kind is very welcome!




Mar
24

RiaPT Meeting no Porto – A experiência, conclusão e os slides!

Bem, já lá vai mais de uma semana que o Meeting do Porto decorreu.

Posso dizer que, de início, pensamos em colocar um limite de 100 pessoas no evento, mas depois pensamos que a procura não iria ser muita, uma vez que no último encontro eramos apenas… três pessoas!

No entanto, lá nos aventuramos em colocar o limite de 70 + 10 speakers e a aposta foi ganha! No final, e totalizando toda a gente, eramos 67 pessoas juntas no evento!

O que correu bem?

  • O almoço

- Eramos cerca de doze pessoas e foi interessante falar das expectativas sobre o evento, de conversar com pessoas com quem não tivemos hipótese de trocar ideias noutros eventos, etc. O lombo estava bom e mesmo a queimar as duas, lá conseguimos pagar todos e lá fomos para o local onde ia decorrer o evento.

  • O evento

- Como todos notaram, o evento começou com cerca de vinte minutos de atraso. Não havia problema se ninguém se esticasse nas apresentações (o que não foi o caso!).

- Uma coisa a referir foi o espírito de todos! Durante as cerca de cinco horas em que tivemos no edifício Maus Hábitos houve sempre um bom convívio, as piadas típicas dos apresentadores ao qual a plateia correspondia sempre com umas gargalhadas. O que dizer do Luís Martins que arranjou um milagroso projector porque o nosso era “esverdeado”.

  • O jantar

Depois de tantas horas no evento, que bem que soube comer umas belas pizzas de… 50 centímetros, no S. Marino! Eramos também cerca de doze pessoas e o convívio foi muito interessante, dando para trocar ideias e falar sobre o que se passou no evento, sobre as novas tecnologias, experiências que tenhamos tido, etc. Tudo acabou, por volta da uma da manhã no Rivolli, onde decorria o Fantasporto.

  • Conclusões

Como nunca nada corre perfeito, temos noção que houve várias falhas, mas todas elas devido à pouca experiência que os organizadores tinham em realizar eventos.

  1. O local – Embora o local fosse interessante, era notório a falta de condições para a projecção dos conteúdos através do projector. O facto de ter ficado muito escuro a partir do meio do evento, fez com que o público quase não conseguisse ver os speakers.
  2. Talvez devêssemos ter apenas uma refeição em conjunto. Assim, podíamos tentar ter mais pessoas no mesmo espaço;
  3. O controlo do tempo. Esta sim, uma falha um pouco grave, umas vez que perdemos completamente a noção do tempo;

Apresentações:

Ainda não consegui que os vídeos ficassem todos disponíveis uma vez que temos limite, tanto no Vimeo, como no Youtube, de tempo para os vídeos (só dá para 10 minutos em cada).

No entanto, já podem ver o vídeo de introdução do evento aqui

Sendo assim, ficam aqui as apresentações que já nos foram facultadas pelos speakers. Quando me enviarem mais, actualizarei aqui o post

Mauro Martins:

Web – Construir é diferente de ver

Nuno Gomes:

HTML 5, a Realidade da Utopia

Miguel Pinto:

Zend Framework e Flash

Felipe Ávila:

The Usability Page

Cumprimentos a todos, e preparem-se porque vêm aí mais!




Feb
08

RiaPT meeting no Porto!

6 de Março de 2010 o RiaPT vai voltar ao Porto!

Marca desde já essa data na agenda e prepara-te para passar uma tarde bem disposta juntamente com pessoas que partilham contigo interesses e paixões pela Internet e não só!

Vamos ter speakers a abordar temas de elevado interesse da actualidade que te vão deixar com água na boca para aprender, explorar e procurar as inovações para o design e desenvolvimento das tuas aplicações!

O universo de desenvolvimento de aplicações web está em perfeita erupção! Não são só as tecnologias cliente, mas toda a “pilha” de desenvolvimento com as suas diversas tecnologias, linguagens e ferramentas está a ser posta em causa e cada um quer encontrar o seu nicho nesta realidade. Não perca esta oportunidade de ouvir alguns experts  portugueses na área do desenvolvimento de Rich Internet Applications.

Como se isto não fosse suficiente ainda vamos ter prémios para distribuir pelo pessoal que estiver a assistir que vão desde licenças de software a vouchers de cursos de formação e outros.

Não percam! Dia 6 de Março, no Edifício “Maus Hábitos”, às 14:00, e sim, no Porto!

Inscreve-te em: http://riapt.stagehq.com/events/182/booking/new

Agenda

14:00 Abertura Rui Silva, Mauro Martins
14:10 Zend Framework com Flash Miguel Pinto
14:35 Web – Construir é diferente de ver! Mauro Martins
15:00 Flex Decoupled – Build Strong from the Foundation Vítor Monteiro
15:25 Balsamiq Mockups e Napkee: A arte de “rabiscar” Rui Silva
15:50 Papervision 3D João Crispim
16:10 Coffee Break Networking
16:25 Make Web not War: A plataforma Microsoft Luís Martins
16:50 Silverlight 101: Anatomia de uma Aplicação Ricardo Castelhano
17:15 Swiz e Flex João Fernandes
17:40 “HYPE”: Voltar à criatividade em Flash! João Gonçalves
18:05 HTML5: A realidade da utopia Nuno Gomes
18:30 Encerramento – Prémios Rui Silva, Mauro Martins



Sep
30

Parte I – Flex, AIR & SQLite

 

adobe-air

Introdução:

Esta é a primeira parte de uma série de três tutoriais que vou colocar sobre a integração de Flex com AIR e SQLite. A primeira (esta) vai centrar-se em uma breve introdução ao AIR com SQLite e vamos criar uma aplicação onde vamos adicionar uma base de dados local, inserir vários tipos de dados e depois coloca-los directamente em uma datagrid em Flex.

A parte dois que será colocada mais tarde (estou a trabalhar nela) será centrada em criar uma form para adicionar dinamicamente informação à base de dados e em colocar várias tabelas a interagirem entre si em que a primeira tem dados e a segunda possui várias informações relativas aos items anteriores.

A terceira será depois a integração das chamadas da base de dados com itemClasses e também ValueObjects.

Espero que gostem! Mauro.

Parte I

Sem dúvida que se há uma coisa que o Adobe AIR tem de interessante é a capacidadede ser possível criar base de dados locais sem a necessidade de nenhum servidor local como o wamp ou semelhante e com extrema facilidade.

Ter a possibilidade de inserir, actualizar e retirar informação de uma estrutura de base de dados é sem dúvida mais fácil de gerir do que, por exemplo, a utilização de ficheiros de texto ou então ficheiros com estruturas em XML como por vezes acontece.

Este tipo de interactividade entre o Flex ou Flash com estas estruturas permitem-nos fazer relações entre várias tabelas, podendo assim associar facilmente dados que poderão estar organizados nas famosas sequências “one-to-many” (uma entrada na tabela TAB_1 tem várias entradas associadas na tabela TAB_2). Isto torna a injecção de dados em componentes de Flex ou Flash numa acção simples e quase directa.

Para começar a utilizar este tipo de estrutura e para podermos ter qualquer interacção com uma base de dados em SQLite através do AIR, são precisos ,no mínimo, três elementos: um ficheiro (base de dados), uma conexão e uma declaração (query).

Este tutorial vai ser constituído por três partes sendo a primeira mais simples, com criação, adição e preenchimento de uma dataGrid em Flex. A segunda parte do tutorial terá também relação entre mais que uma tabela na mesma base de dados (relações on-to-many) e mais tarde, vamos utilizar itemClasses para termos um mapeamento perfeito e mais correcto da nossa aplicação.

Passando ao código..

// Criamos uma variável que vai guardar a referencia ao nosso ficheiro de base de dados
private var dbFile:File;

// Criamos uma nova conexão e abrimos o ficheiro que contem a base de dados
private var conn:SQLConnection;

// Método init para iniciar as nossas variáveis e associar-lhes valores
private function init () : void {
    dbFile = File.applicationStorageDirectory.resolvePath(“employees.db”);
    conn = new SQLConnection();
    conn.open(dbFile);
    createDataBase();
    insertDataBase();
    selectDataBase();
}

// Primeiro criamos a nossa base de dados local
private function createDataBase() : void
{
    // Criamos a variável que vai executar a nossa query, atribuimos a nossa conexão, e criamos a query para depois executar
    var statement : SQLStatement = new SQLStatement();
    statement.sqlConnection = conn;
    statement.text = “CREATE TABLE employees (empId INTEGER PRIMARY KEY AUTOINCREMENT, empName VARCHAR(255))”;
    statement.execute();
}

Da mesma forma que é fácil criar uma base de dados, também é fácil adicionarmos conteúdo à mesma bastanto quase copiar o código anterior mudando apenas a nossa query.

private function insertDataBase():void
{
    var dbStatement:SQLStatement = new SQLStatement();
    dbStatement.sqlConnection = conn;
    dbStatement.text = “INSERT INTO employees (empName) VALUES (:empName)”;
    dbStatement.parameters[ ":empName" ] = “António”;
    dbStatement.execute();
}

Agora que já temos conteúdo, podemos ir buscá-lo através de um SELECT à base de dados

private function selectDataBase():void
{
    var dbStatement:SQLStatement = new SQLStatement();
    dbStatement.sqlConnection = conn;

    dbStatement.text = “SELECT * FROM employees”;
    dbStatement.execute();

    // Se quiserem ver o resultado da vossa query…
    var ac:ArrayCollection = new ArrayCollection(dbStatement.getResult().data);
    var acLength : Number = ac.length;
    for ( var i:uint; i < acLength; i++ )
    {
        trace( ac[i].empId + ” – ” + ac[i].empName );
    }

}
Já temos aqui uma primeira base mas ainda nos falta controlar várias acções, nomeadamente controlar a execução dos eventos e ter a certeza que estes ocorrem correctamente e só acedemos aos dados quando estes são recebidos / inseridos na nossa aplicação.

Exemplo:

Passando para um exemplo mais concreto, temos, nesta parte I deste tutorial, uma lista de trabalhadores de uma empresa que está guardada em uma base de dados SQLite.

<?xml version=”1.0″ encoding=”utf-8″?>
<mx:WindowedApplication xmlns:mx=”http://www.adobe.com/2006/mxml”
                        layout=”absolute”
                        creationComplete=”init()”>

    <mx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;

            // Variável que vai ter a informação para o array e que bind para a nossa datagrid
            [Bindable]
            private var empArray : ArrayCollection;

            // Variáveis de conexão
            private var dbFile : File;
            private var conn : SQLConnection;
            private var dbStatement : SQLStatement;

            // Variáveis para controlar as nossas queries
            private var empNames : Array = new Array( “António Amaro”, “Marco Silva”, “Luis Ribeiro”, “Salvador Mesquita”, “Lourenço Pinto”, “João Guimarães” );
            private var empLoc : Array = new Array( “Financeira”, “Desenvolvimento”, “Recursos Humanos”, “Transportes”, “Desenvolvimento”, “Vendas” );
            private var empTel : Array = new Array( “351″, “456″, “745″, “860″, “254″, “555″ );
            private var empPos : Number = 0;

            /**
             * INIT
             */
            private function init() : void
            {
                // Criamos a referência para o nosso ficheiro
                dbFile = File.applicationStorageDirectory.resolvePath( “employees.db” );

                // Criamos uma nova conexão que nos vai ligar à base de dados
                conn = new SQLConnection();

                // Se a base de dados existe abrimos, senão criamos uma nova
                // Dependendo da acção atribuimos diferentes listeners para invocarmos diferentes métodos
                if ( !dbFile.exists )
                {
                    conn.addEventListener( SQLEvent.OPEN, connOpen );
                } else
                {
                    conn.addEventListener( SQLEvent.OPEN, selectDataBase );
                }
                // Abrimos a base de dados
                conn.open( dbFile );
            }

            /**
             * connOpen
             */
            private function connOpen( e : SQLEvent ) : void
            {
                // abriu a conexão, vai então criar a base de dados
                createDataBase();
            }

            /**
             * createDataBase
             */
            private function createDataBase() : void
            {
                // Criamos a variável que vai executar a nossa query, atribuimos a nossa conexão, e criamos a query para depois executar
                dbStatement = new SQLStatement();
                dbStatement.sqlConnection = conn;
                dbStatement.addEventListener( SQLEvent.RESULT, insertEmpNames, false, 0, true );
                dbStatement.text = “CREATE TABLE employees (empId INTEGER PRIMARY KEY AUTOINCREMENT, empName VARCHAR(255), empLoc VARCHAR(255), empTel INTEGER)”;
                dbStatement.execute();
            }

            /**
             * insertEmpNames
             */
            private function insertEmpNames( e : SQLEvent ) : void
            {
                // Depois de criada a base de dados vamos preencher informação
                insertDataBase();
            }

            /**
             * insertDataBase
             */
            private function insertDataBase() : void
            {

                dbStatement = new SQLStatement();
                dbStatement.sqlConnection = conn;

                // Vamos inserindo novos elementos à base de dados até percorrermos todo o nosso array
                if ( empPos < empNames.length – 1 )
                {
                    dbStatement.addEventListener( SQLEvent.RESULT, insertEmpNames, false, 0, true );
                } else
                {
                    dbStatement.addEventListener( SQLEvent.RESULT, selectDataBase, false, 0, true );
                }

                // Agora vamos adicionar para cada campo, um objecto com o valor que queremos inserir na tabela
                dbStatement.text = “INSERT INTO employees (empName, empLoc, empTel) VALUES (:empName, :empLoc, :empTel)”;
                dbStatement.parameters[ ":empName" ] = empNames[ empPos ];
                dbStatement.parameters[ ":empLoc" ] = empLoc[ empPos ];
                dbStatement.parameters[ ":empTel" ] = empTel[ empPos ];
                empPos++;
                dbStatement.execute();

            }

            /**
             * selectDataBase
             */
            private function selectDataBase( e : SQLEvent ) : void
            {
                dbStatement = new SQLStatement();
                dbStatement.sqlConnection = conn;
                dbStatement.addEventListener( SQLEvent.RESULT, attribDataGrid, false, 0, true );

                // Depois de inseridos todos os registos vamos seleccionar tudo que está na base de dados
                dbStatement.text = “SELECT * FROM employees”;
                dbStatement.execute();
            }

            private function attribDataGrid( e : SQLEvent ) : void
            {
                // Vamos buscar o valor retornado pela base de dados e colocar directo num array collection
                empArray = new ArrayCollection( dbStatement.getResult().data );
            }
        ]]>
    </mx:Script>

    <mx:Panel width=”100%”
              paddingTop=”10″
              paddingBottom=”10″
              paddingLeft=”10″
              paddingRight=”10″
              title=”TRABALHADORES DA SOFT S.A.”>

        <mx:DataGrid width=”100%”
                     dataProvider=”{empArray}”>
            <mx:columns>
                <mx:DataGridColumn headerText=”Nome”
                                   dataField=”empName”/>
                <mx:DataGridColumn headerText=”Departamento”
                                   dataField=”empLoc”/>
                <mx:DataGridColumn headerText=”Telefone”
                                   dataField=”empTel”/>
            </mx:columns>
        </mx:DataGrid>
    </mx:Panel>

</mx:WindowedApplication>

Como podem ver, é bem simples criamos um sistema de base de dados que a cria, adiciona e mostra os resultados para uma datagrid. Como disse mais a cima, na parte dois do tutorial vamos avançar para relações entre várias tabelas na mesma base de dados para podermos associar a um só item de uma tabela, várias informações de outra.

NOTA: Se quiserem ir testando a criação dos ficheiros de base de dados e não conseguem porque a base de dados já está criada podem apagar “à mão” os ficheiros que ficam guardados no vosso computador.

WINDOWS: C:\Users\<user>\AppData\Roaming

MAC: <user>\Libraries\preferences\

Podem descarregar o projecto aqui:

download do ficheiro

Para mais informações sobre SQLite no AIR:
http://coenraets.org/blog/2008/02/sqlite-admin-for-air-10/
http://livedocs.adobe.com/flex/3/langref/localDatabaseSQLSupport.html

Uma ferramenta muito boa para poderem ver o que vai acontecendo e a estrutura da vossa base de dados, eu aconselhava a instalarem o Lita que foi referenciado num anterior post meu sobre As melhores aplicações AIR para Designers e Developer.

Até à próxima e espero que tenham gostado!

Mauro Martins.




Apr
30

cTIC 2009

Terá lugar no próximo dia 13 de Maio de 2009 a cTIC 2009 com a seguinte agenda:

9:00 Sessão de Abertura
Participantes convidados:
Governador Civil de Viseu
Presidente da Cãmara Municipal de Viseu
Presidente do Instituto Politécnico de Viseu
Presidente da Escola Superior de Tecnologia de Viseu
Director do Departamento de Informática da ESTV
Representantes dos alunos dos cursos do DI

09:30 Sessão 1
Rich Internet Applications – Uma visão Geral
João Saleiro – RIaPT
Potencialidades das RIA ao serviço da comunidade e das organizações
Pedro Veloso – Areal Media
Moderador: Rui Abrantes – Buzz-id

10:30 Coffee Break

10:45 Sessão 2
Microsoft® Silverlight™ – Light up the Web
Gonçalo Chaves – Microsoft Portugal
ADIGITALBOOK (Adobe Flex e AIR )
Rui Cruz – Areal Media
Moderador: Professor Doutor Óscar Mealha

12:45 Almoço

14:00 Sessão 3
Usabilidade em Contextos Multimédia e Web-based
Professor Doutor Óscar Mealha – Universidade de Aveiro
Projecto EZ Show (Adobe Flex e AIR )
Rui Abrantes – Buzz-id
Moderador: Nelson Batista

15:45 Coffee Break

16:00 Sessão 4
Interactividade – Criar novas fronteiras
Nelson Batista
Segurança em Aplicações Web-based e em Rich Internet Applications
Professor Doutor Carlos Serrão – ISCTE
Moderador: João Saleiro – RIaPT

17:30 Sessão de Encerramento
Director do Departamento de Informática da ESTV

As inscrições poderão ser feitas a partir daqui.

cTIC2009

cTIC2009

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