Foto rosto Robson Bittencourt

SESSÃO PERFIL COM ROBSON BITTENCOURT

Tenho o prazer em ser colega deste grande amigo e excelente desenvolvedor que em uma conversa de poucos minutos percebe-se a determinação em escrever código de qualidade. Confira o que Robson Bittencourt curte e o que ele

Data de Nascimento:

02/07/1989

Cargo / Função:

Desenvolvedor

Empresa Atual:

uMov.me S.A

Formação acadêmica:

Graduando em Sistemas de Informação

Tem algum ídolo ou referência em sua área que te inspira?

Não

Cursos e treinamentos já realizados:

Formalmente somente a graduação.

Com quais linguagens de programação você já trabalhou? Tem alguma que ainda quer aprender / trabalhar?

Trabalho atualmente com Java. Também utilizo Ruby para um projeto de testes funcionais. Gostaria de aprender .Net para diversificar o conhecimento.

Já trabalhou em algum projeto open-source? Quais?

Não

Quais foram as dificuldades para aprender a programar?

A princípio foi fácil, sempre tive facilidade com matemática e problemas de lógica.

Utiliza técnicas de métodos ágeis? Se sim, qual e o que mudou ao adotar?

Posso citar duas, TDD e Pair Programing. Não sei dizer o que mudou pois sempre tive o privilégio de trabalhar assim, mas de qualquer forma as vantagens de se adotar métodos ágeis são diversas.

Na sua opinião, quais tecnologias / linguagens de programação irão predominar no mercado nos próximos anos?

Na minha opinião as plataformas móveis ganharam cada vez mais destaque. Em virtude disso acredito que linguagens que rodem em diversos dispositivos serão muito importantes.

Tem algum gadget favorito que anda sempre com você?

Somente o smartphone.

facebook-20120202114915

Cuidado! Não confunda sua vida pessoal com a virtual

Durante a Campus Party Brasil 2012, o gerente geral de segurança do portal UOL, deu dicas de como diminuir os riscos na rede e continuar com sua privacidade intocada. Para ajudar os internautas, o especialista apresentou uma pesquisa de análise de comportamento que concluiu que o ser humano tende a se comportar da mesma maneira nos mundos virtual e real.

Segundo ele, um mero post em rede social pode trazer perigos. Para exemplificar, o especialista citou o caso de um funcionário de uma companhia de soluções para web, que foi demitido por causa de um tuíte. Para comemorar a vitória de seu time de futebol, o funcionário brincou com outro time usando o nome de sua empresa. Porém, na época, a companhia era patrocinadora oficial do time paulistano.

Algo parecido também ocorreu com um importante executivo, que precisou apagar de sua “lista de desejos” de um site de compras, um livro que ensinava como fabricar uma bomba atômica. Por conta disso, Nelson fez um alerta: cuidado com as listas de desejo ou serviços que exibem nas redes sociais o que você está ouvindo ou assistindo, elas podem ser usadas contra você.

Outra dica de Nelson é tomar cuidado com os amigos do Facebook. Ele diz que, mesmo que a pessoa seja conhecida, seu perfil pode conter falhas de segurança. Além disso, sempre há a possibilidade de um criminoso virtual utilizar uma conta “real” para enganar as vítimas. Fora isso, Nelson explica que é importante se lembrar que um post pode ficar eternizado na rede. “Uma vez postada, a informação fica lá para sempre. Ou seja, se você coloca alguma mensagem, mesmo que ela seja apagada, alguém pode ver, salvar ou até tirar um print screen e, então, ela será eternizada”, ressaltou.

Apesar de todos os avisos e alertas, Nelson afirma que sair das redes sociais não é a solução. De acordo com ele, basta pensar antes de postar. “Tem de haver consciência na hora de publicar informações nas redes sociais. Uma consciência que dure 24 horas por dia e 7 dias por semana, pois nosso hábitos, mesmo que virtualmente, dizem muito sobre nós”, concluiu.

Você tem alguma dica de como manter sua privacidade e segurança na rede? Compartilhe conosco nos comentários.

Fonte: UOL

como-ser-um-empreendedor-de-sucesso

10 autoquestionamentos para o empreendedor de primeira viagem

Confira dez autoquestionamentos para que o futuro empresário possa confrontar seus sonhos com a concreta realidade.

Vamos lá:

1º Questionamento: Estou preparado para assumir integralmente a responsabilidade pela minha geração de renda e sustento, como resultante daquilo que é gerado pelo meu próprio negócio?

2º Questionamento: Estarei satisfeito e realizado ao abdicar do status que a minha posição corporativa garantia?

3º Questionamento: Estou preparado para viver rigorosamente dentro da minha realidade econômica, construindo um colchão de segurança financeira a partir da contenção das despesas pessoais e da redução do consumo habitual?

4º Questionamento: Tenho paciência para enfrentar uma jornada de médio a longo prazo de trabalho duro e convivência com riscos, antes de atingir solidez econômica e satisfação financeira?

5º Questionamento: Conseguirei conviver com serenidade longe do “glamour”  corporativo e dos jogos de poder travados nos corredores e salas de reunião?

6º Questionamento: Estou preparado para enfrentar uma jornada diária de trabalho sem horários definidos para seu início ou término?

7º Questionamento: Estou emocionalmente maduro para pensar e decidir por conta própria, sem o apoio de chefes, colegas e consultores motivacionais?

8º Questionamento: Pretendo me tornar empreendedor pelo desejo de tornar-me rico ou pelo anseio de realizar e assumir o controle do meu próprio destino?

9º Questionamento: Serei feliz na solidão que envolve controlar o próprio destino e ser o centro das decisões vitais da minha vida empresarial?

10º Questionamento: Estou preparado para trabalhar com a mínima estrutura de suporte, assumindo com tranquilidade as tarefas que antes eram delegadas para secretárias, assistentes ou estagiários?

Gustavo Chierighini, da Plataforma Brasil

Para ler outros textos da coluna da Plataforma Brasil no blog Saia do Lugar, clique aqui.

Estou com sorte

“Estou com sorte” – Vale a pena usar?

O Google possui a ferramenta “estou com sorte” há muito tempo, este recurso basicamente leva você para o primeiro resultado da pesquisa.

O Google define que o primeiro resultado é o mais “relevante” para o que você está procurando, porém este recurso gera um custo de oportunidade muito grande pois quem clica no “estou com sorte” normalmente não visualiza os anúncios presentes nos resultados da busca e não gera receita para o Google através dos anunciantes.

Para nós usuários, o recurso estou com sorte é interessante para casos onde você pesquisa exatamente um termo que você sabe que o primeiro resultado é exatamente o que você procura. Exemplo: pesquise “Terra” no google. Com certeza o primeiro resultado será o site www.terra.com.br, então o recurso “estou com sorte” é interessante nestes casos.

Mas você sabe como o primeiro da lista é definido?

O algoritmo de indexação atual do Google (Hummingbird – na data de escrita deste post) leva muito em consideração o conteúdo do site e a “autoridade” do domínio / site. Se você possui um site “relevante”, com muitas visitas e recebe links de diversos outros sites “relevantes”, significa que seu site tem uma ótima “pontuação” para estar entre os primeiros colocados.

Técnicas de SEO (otimização para mecanismos de buscas) são importantes, mas estão cada vez mais atreladas ao conteúdo gerado pelo site do que simplesmente “engenharia” de palavras-chave e programação.

O recurso “Estou com Sorte” nem sempre leva o usuário ao resultado pesquisado, mas é uma funcionalidade que o Google avalia constantemente remover por “diminuir” a visualização dos anúncios nos resultados de pesquisas.

Screenshot página inicial site clínica

Novo site da Clínica Skin gerando resultados!

Recentemente colocamos no ar o novo site da Clínica de Dermatologia e Nutrição Skin de Porto Alegre – RS.  O projeto conta com painel de administração para gerenciar o conteúdo das páginas, tratamentos e contatos.

Seguem abaixo screenshots de algumas páginas. Para conferir o resultado, acesse: http://www.clinicaskin.com.br

Screenshot página tratamentos

Página de tratamentos de nutrição

De acordo com os relatórios iniciais do Google Analytics, o site teve um aumento significativo de acessos e já possui mais de 4 páginas de resultados no Google.

cakeForm

Criando Formulários com CakePHP

O que é um Helper no CakePHP?

Helpers são calsses que nos ajudam a criar diversas coisas com mais rapidez e facilidade.  Existem diversos helpers que já vem com o Cake e instanciados por padrão, o FormHelper é um desses. Também podemos criar nossos próprios helpers.

O FormHelper.

O FormHelper é responsável pela criação de elementos HTML de formulários (radio,input, select, text…), utilizando funções em PHP de uma maneira simples e de fácil compreensão.

Ele possui uma nomenclatura baseada no model do form e no nome do campo dentro de uma variável data (veremos mais detalhes posteriormente nesse post), o id DOM é composto também pelo nome no form mais o model do campo em CamelCased.

Criando o Formulário

Para criarmos um formulário usando o FormHelper usamos o método create().

FormHelper::create(string $model = null, array $options = array());

Ele não possui parâmetros obrigatórios, pois caso chamemos ele sem nenhum deles ele assumirá algumas configurações padrão como: Metodo de submissão POST, e a Action será a com o nome do arquivo de view onde o form está. Vamos partir da boa prática que você sempre vai passar pelo menos um parâmetro para o form, o nome do model.

Criando um form.

<?php 
//view cadastrar.ctp do controller posts
echo $this->Form->create(“Post”);
/*<form id=”PostCadastrarForm” method=”post” action=”/posts/cadastrar>*/
?>

Para personalizarmos essas configurações usamos o array options do método, no qual podemos dizer qual será a action, definir o tipo de envio, id, funções de validação, etc.

Personalizando o formulário.

<?php 
//view cadastrar.ctp do controller Posts
echo $this->Form->create(
“Post”,
array(‘url’=>action(‘controller’=>’posts’,’action’=>’cadastrar’),’id’=>’FrmPost’
)
);
?>

Fechando o Form

Para fecharmos o formulário usamos o método end($options = null). Ele recebe como parâmetro um array de opções, nada, ou simplesmente um label. Por padrão é o tipo submit.

Fechando o formulário

<?php 
//view cadastrar.ctp do controller Posts
echo $this->Form->create(
“Post”,
array(‘url’=>action(‘controller’=>’posts’,’action’=>’cadastrar’),’id’=>’FrmPost’
)
);
//elementos devem fica entre esses dois metodos
echo $this->Form->end(‘postar’);//geralmente usamos apenas com o label
?>

Criando elementos

Para criarmos os elementos do form usaremos basicamente o método input(), pois com ele podemos criar quase todos os tipos de elemento.

FormHelper::input(string $fieldname,$options=null);

A criação de todos os elementos parte do mesmo principio, vejam:

Criando um input de tipo text.

//abertura do form
echo $this->Form->input(‘titulo’);
/*caso o campo seja de outro model deve-se usar Model.fieldname*/
/*
A saída será.
<div>
<label for="PostTitulo">Titulo</label>
<input name="data[Post][titulo]" type="text" value="" id="PostTitulo" />
</div>
*/
//fechamento do form

Todos os elementos básicos seguem esse mesmo padrão, precisando apenas passar o segundo parâmetro. Veja como ficaria um elemento do tipo select.

Criando um elemento select.

echo $this->Form->input(‘sexo’,
array(
‘type’=>’select’,
‘options’ => array(‘M’=>’Masculino’,’F’=>’Feminino’),
‘label’ =>’Selecione o sexo’
/*aqui também podemos chamar os atributos comuns de HTML inclusive os eventos de Javascript*/
)
);

Na listagem anterior foi usada a opção label, ela está disponível para todos os tipos, se não setarmos essa posição então o conteúdo do label será o mesmo nome do campo.

Outra opção útil seria a empty(boolean) ele define se o primeiro elemento deve ser vazio ou não, por padrão a primeira opção do array options é o que aparece.

O atributo ‘value’ aparece em quase todos os elementos, usamos da mesma maneira que no HTML setando um valor padrão.

Dessa mesma forma podemos criar os elementos tipo radio, checkbox e textarea. Todos terão uma saída muito parecida.

Veja suas chamadas e algumas particularidades:

Radio, checkbox e textarea.

<?php 
//textarea
echo $this->Form->input('textarea', array(‘type’=>’textarea’,'rows' => '5', 'cols' => '5'));
//radio
echo $this->Form->radio('sexo',
 array(‘type’=>’radio’ ‘options’=>array('M'=>'Male','F'=>'Female'),’value’=>’M’));
//checkbox
echo $this->Form->input('ativo', array(‘type’=>’checkbox’,’label’=>”Deixe marcado para ativar”));
?>

Esses são apenas os métodos  básicos com chamadas mais básicas. Caso vocês queiram ter acesso a maiores informações e para consultar quando estiverem  desenvolvendo algo mais avançado acesse: http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html.

Página inicial - Profihair cosméticos

Nova loja virtual! Profihair – Distribuidora de cosméticos

Recentemente, desenvolvemos a loja virtual da Profihair – Distribuidora de cosméticos. O conceito do projeto foi expor os produtos da empresa da melhor forma possível para ter uma boa conversão. O público-alvo da loja são salões de beleza, estéticas e o cliente final por ter preços bastante competitivos. Há divisão por categorias, subcategorias e por fabricante.

Criamos também a integração com o PagSeguro para que as compras sejam intermediadas e passem segurança tanto para a empresa quanto para o comprador.

Atualmente, a Profihair investe em links patrocinados / Google Shopping.

O projeto contou com tecnologias de CSS3, PHP5, HTML5 e Javascript / JQuery.

Confira o resultado em: http://www.profihair.com.br

Site - Macdiesel

Pensou em alugar geradores de energia? MacDiesel é a resposta

Recentemente, desenvolvemos o novo site da MacDiesel – Aluguel de Geradores  de Energia. O conceito do projeto foi criar uma amostra maior dos serviços da empresa com a área de serviços subdividida e também conscientizar o público-alvo sobre os riscos de escolher a empresa errada na hora de locar geradores para sua empresa, evento, feira ou rodeio.

Atualmente, a MacDiesel Geradores investe em links patrocinados e com o lançamento do novo site já focado em Link Building, este investimento diminuirá para investir em técnicas de SEO para o Orgânico.

O projeto contou com tecnologias de CSS3, PHP5, HTML5 e Javascript / JQuery.

Confira o resultado em: http://www.aluguelgerador.com.br

tdc2013

TDC Porto Alegre 2013 – The Developer’s Conference

Um dos eventos mais esperados do ano pela comunidade de desenvolvedores do Sul do Brasil está chegando. O TDC (The Developer’s Conference) edição Porto Alegre acontecerá entre os dias 25 e 26 de Outubro na UniRitter.

O período de inscrições vai até o dia do evento (se houverem vagas). Aproveite e clique no link abaixo para efetuar sua inscrição:

http://www.thedevelopersconference.com.br/tdc/2013/inscricoes#portoalegre

Entre as trilhas disponíveis estão:

SEXTA – 25/10 SÁBADO – 26/10
Trilha Testes Trilha Arduino e Raspberry Pi
Trilha Java Trilha Arquitetura
Trilha .NET Trilha Agile
Trilha Mobile Trilha Games
Trilha Marketing Digital Trilha UX/Front-End
Trilha Stadium Sexta Trilha Stadium Sábado

Gustavo das Neves, diretor de criação da Master Studio Web submeteu palestra para a trilha de Ux / Front-end. Se puder ajudar votando na palestra, agradecemos :)

Já estamos com nossas inscrições feitas e aguardando ansiosamente esta oportunidade de compartilhar conhecimento com outros desenvolvedores.

www.ateliefm.com.br| Atêlie Fotográfico Frederico Mombach

Projeto de Social Media – Usina do Corpo Academia

Estamos há mais de 3 meses gerenciando a página do Facebook da Usina do Corpo Academia. O projeto tem como base atingir o público de 16 a 50 anos e que residam na região metropolitana de Porto Alegre, onde a Usina do Corpo possui atualmente 3 unidades.

Com 3 meses de campanha o impacto das redes sociais já foi percebido pela administração da academia. Sendo que a campanha de inauguração da unidade Gravataí Centro teve um alcance de mais de 27 mil pessoas.

O lançamento do site, coincidindo com a inauguração da nova unidade, trouxe  mais um canal de comunicação com os alunos.

Confira algumas fotos da academia:

 www.ateliefm.com.br| Atêlie Fotográfico Frederico Mombach www.ateliefm.com.br| Atêlie Fotográfico Frederico Mombach www.ateliefm.com.br| Atêlie Fotográfico Frederico Mombach www.ateliefm.com.br| Atêlie Fotográfico Frederico Mombach www.ateliefm.com.br| Atêlie Fotográfico Frederico Mombach www.ateliefm.com.br| Atêlie Fotográfico Frederico Mombach www.ateliefm.com.br| Atêlie Fotográfico Frederico Mombach

 

tabela tipos de empresa

Tipos de Empresa Mais Comuns no Brasil

Uma das maiores dúvidas do brasileiro na hora de abrir uma empresa é como ela estará enquadrada nas questão legais e financeiras. Então buscamos este material de apoio para você que pode estar passando por dificuldades na hora de abrir sua empresa.

O quadro abaixo resume as características essenciais dos tipos de empresas mais comuns no Brasil.

Tipos de Empresa

Legenda:

ME: Microempresa
EPP: Empresa de Pequeno Porte
MEI: Microempreendedor Individual
EIRELI: Empresa Individual de Responsabilidade Limitada

Espero ter ajudado!

Vimeo e Youtube

Vídeo > Serviços

Recentemente, lançamos no Youtube e Vimeo canais onde traremos novidades da área de tecnologia, cases de sucesso, tendências, etc…

Os endereços dos canais são: http://www.youtube.com.br/masterstudioBR e http://www.vimeo.com/masterstudioweb

Segue abaixo o vídeo com os principais serviços prestados pela empresa para você que ainda não conferiu:

 

Conheça os serviços da Master Studio Web no Vimeo.

Abraço galera!

ZF2 Auth

Tutorial simples de autenticação com ZF2

Pesquisando mais sobre o Zend Framework 2, encontrei este exemplo bastante simples para fazer autenticação usando a biblioteca Zend Auth.

As explicações do script eu coloquei diretamente no código, quando você for desenvolver, pode não ser mais necessários deixá-los no meio do código, pois provavelmente você irá entender o código somente olhando sem precisar ler os comentários, se for esse o caso então você pode retirá-los, pois como eu disse, os comentários foram para explicar os procedimentos, então são explicações didáticas.

// Setar o ‘use’ no topo do documento das seguintes classes

use ZendAuthenticationResult;
use ZendAuthenticationAuthenticationService;
use ZendAuthenticationAdapterDbTable;

// Recebe os parâmetros login e senha via post
$request = $this->getRequest();
$login = $request->getPost('login');
$senha = $request->getPost('senha');

/*
 * Get no adaptador do banco de dados, neste caso você precisa verificar&nbsp;
 * qual foi o nome usado para o adaptador.
 */
$zendDb = $this->getServiceLocator()->get('ZendDbAdapterAdapter');

/* Criando o auth adapter:&nbsp;
 * passando o primeiro parâmetro o adaptador do banco de dados $zendDb
 * segundo parâmetro a tabela de usuarios
 * terceiro parâmetro a coluna da tabela aonde está o login
 * quarto parâmetro a coluna da tabela aonde está a senha
 */
$authAdapter = new DbTable(
    $zendDb,
    'tbl_usuarios',
    'usuario_email',
    'usuario_senha'
);

/* Seta o credential tratment:&nbsp;
 * tratamento da senha para ser criptografada em md5
 * passado um parâmetro status para logar o usuario que esteja ativo no sistema
 * no caso dos parâmetros você pode passar quantos forem necessários usando o AND
 * na sequência seta o Identity que é o login e Credential que é a senha
 */
$authAdapter->setCredentialTreatment('md5(?) AND usuario_status = 1');
$authAdapter->setIdentity($login);&nbsp;
$authAdapter->setCredential($senha);

// Instanciando o AutenticationService para fazer a altenticação com os dados passados para o authAdapter
$authService = new AuthenticationService();

// Autenticando o passando para a variável result o resultado da autenticação
$result = $authService->authenticate($authAdapter);

// Validando a autenticação
if ($result->isValid()) {
    // Se validou damos um get nos dados autenticados usando o $result->getIdentity()
    $identity = $result->getIdentity();

    /* Imprimindo os dados na tela para confirmar os dados autenticados
     * pronto, se aparecer os dados isso quer dizer que o usuario está autenticado no sistema
     */
    exit(var_dump($identity));
} else {
    /* Caso falhe a autenticação, será gerado o log abaixo que será impresso&nbsp;
     * na tela do computador para você sabe do problema ocorrido.
     * os erros listados abaixo são os erros mais comuns que podem ocorrer.
     */
    switch ($result->getCode()) {
        case Result::FAILURE_IDENTITY_NOT_FOUND:
            echo "O email não existe";
            break;
        case Result::FAILURE_CREDENTIAL_INVALID:
            echo "A senha está incorreta";
            break;
        default:
            foreach ($result->getMessages() as $message) {
                echo $message;
            }
    }
}

Post original:http://www.zf2.com.br/tutoriais/post/script-para-criar-a-autenticacao-no-zf2-usando-o-zend-auth

Relatório Google Analytics personalizado PHP API

Pegando dados do Google Analytics via PHP

GAPI significa Google Analytics PHP Interface (ou Interface em PHP para Google Analytics) e é um projeto open-source criado por um cara chamado Stig Manning… Esse projeto foi criado para facilitar a sua (e a minha) vida na hora de buscar dados e gerar relatórios com os dados do Google Analytics para serem exibidos em outros sites… Espera um pouco, você não sabia que isso era possivel?! Viva la revolucion! :D

O GAPI é uma classe que te ajudará a fazer todo o trabalho de login, encontrar profile IDs, filtrar relatórios e tudo mais… Foi desenvolvido para ser usado com Frameworks (Symfony, CakePHP, Zend e etc.)… Mas pode ser usado perfeitamente por qualquer site com PHP 5 ou superior (e é isso que eu vou ensinar a fazer aqui hoje).

Com a API do Google Analytics você pode ter acesso a QUALQUER dado/relatório que teria acessando normalmente sua conta pelo site.

Download e “Instalação”

Para baixar o GAPI é simples.. Como diria meu professor de física do colegial: “é mel na chupeta!”… Acesse a página oficial do projeto dentro do Google Code e (logo ali na lateral direita) faça o download da última versão.

Para poder usar a classe você só precisa ter o hárduo trabalho de incluir o arquivogapi.class.php no seu site.

Exemplo de uso – Autenticação

Da mesma forma que você precisa fazer o login com a sua conta Google para ter acesso aos perfis de sites, e posteriormente aos relatórios desses perfis, você também precisa fazer o login autenticando seus dados de acesso… Veja como é dificil fazer isso:

 PHP |  copy code |? 
1
<?php
2
require_once("gapi.class.php");
3
//Autenticação
4
$ga=new gapi('SEU E-MAIL','SUA SENHA');
5
?>

Exemplo de uso – Listando os perfis de site

Para listar todos os perfis de site que você tem na sua conta você pode fazer assim:

 PHP |  copy code |? 
01
<?php
02
require_once("gapi.class.php");
03
//Autenticação
04
$ga = new gapi('SEU E-MAIL','SUA SENHA');&nbsp;
05
//Pega os&nbsp;dados&nbsp;da conta e perfis de site
06
$ga->requestAccountData();
07
//&nbsp;Pra&nbsp;cada&nbsp;resultado&nbsp;encontrado...
08
foreach($ga&minus;>getResults()&nbsp;as&nbsp;$perfil){
09
//Exibe os dados de cada um dos perfis de site
10
echo $perfil.'('.$perfil->getProfileId().')<br&nbsp;/>';
11
}
12
?>
13

O código acima irá exibir uma pequena lista dos sites que você tem na sua conta do Analytics… Usarei como exemplo o ID 12345 que é um ID fictício.

Exemplo de uso – Pegando dados

Agora você já fez o login e tem o ID do perfil do site que você quer pegar os resultados… Vamos fazer duas consultas de exemplo e pegar os dados necessários para fazer um relatório completo sobre as visitas e pageviews do mês passado:

 PHP |  copy code |? 
01
<?php
02
require_once("gapi.class.php");
03
//Autenticação
04
$ga=new&nbsp;gapi('SEU EMAIL','SUA SENHA');
05
 
06
//ID do perfil do site
07
$id='12345';
08
//Define o período do relatório
09
$inicio=date('Y-m-01',strtotime('-1 month'));//primeiro&nbsp;dia do mês passado
10
$fim=date('Y-m-t',&nbsp;strtotime('-1&nbsp;month'));//último dia do&nbsp;mês&nbsp;passado
11
//Busca&nbsp;os&nbsp;pageviews&nbsp;e&nbsp;visitas&nbsp;(total&nbsp;do&nbsp;mês&nbsp;passado)
12
$ga&minus;>requestReportData($id,'month',array('pageviews','visits'),null,null,$inicio,&nbsp;$fim);
13
foreach($ga->getResults() as $dados){
14
echo&nbsp;'Mês '.$dados.':'.$dados->getVisits().'&nbsp;Visita(s)&nbsp;e&nbsp;'.$dados->getPageviews()&nbsp;.'&nbsp;Pageview(s)<br&nbsp;/>';
15
}
16
echo '<br&nbsp;/>';

 PHP |  copy code |? 
1
 PHP |  copy code |? 
1
$ga&minus;&gt;requestReportData($id,'day',array('pageviews','visits'),'day',null,$inicio,$fim,&nbsp;1,50);

 PHP |  copy code |? 
1
foreach($ga->getResults() as $dados)&nbsp;{
2
echo&nbsp;'Dia'.$dados.':'.$dados->getVisits().'&nbsp;Visita(s)&nbsp;e&nbsp;'&nbsp;.&nbsp;$dados->getPageviews()&nbsp;.&nbsp;'&nbsp;Pageview(s)<br&nbsp;/>';
3
}
4
?>
5

É claro que esse codigo parece um pouco complexo pra quem está começando.. Vou tentar explicar os argumentos do método requestReportData:

1 – Primeiro tempos o ID do perfil do site que você já pegou antes usando o requestAccountData()

2 – Aqui temos a lista de dimensões que estamos buscando. No primeiro exemplo usamos ‘month’ para pegar o total de cada mês do período especificado, e no segundo usamos ‘day’ para pegar o total referente a cada dia do período. Veja aqui a lista completa de dimensões que podem ser usadas.

3 – No terceiro parâmetro temos as métricas, que são os valores que estamos buscando… Nos dois casos usamos ‘pageviews’ e ‘visits’. Veja aqui uma lista completa de métricas que podem ser usadas.

4 – O quarto parâmetro é a ordem dos resultados.

5 – O quinto parâmetro é o filtro. (Raramente usado)

6 e 7 – São os parâmetros que definem o período dos relatórios no formato AAAA-MM-DD.

8 – No oitavo parâmetro você define o n° do primeiro registro (usado para paginação de resultados).

9 – No nono (e último) parâmetro você define o n° do último registro (usado para paginação de resultados).

Os únicos argumentos obrigatórios são os três primeiros.

Post original: http://blog.thiagobelem.net/pegando-dados-do-google-analytics-via-php/

zf2 módulos

Módulos no Zend Framework 2

No Zend o uso de módulos é muito fácil, basta você fazer algumas configurações e pronto! Todo seu sistema esta particionado e organizado da maneira que desejar! Primeiro vamos entender qual a vantagem de se criar um projeto em módulos.

Vou utilizar a idéia de que você esta desenvolvendo um web site e o mesmo precisa de um gerenciador para o conteúdo (editar texto, imagem, etc…). Caso não tenha conhecimento de modularização você iria utilizar 2 cópias de projetos do zend, uma em cada pasta não é? ficando:

meuprojeto/meusite/public/
meuprojeto/admin/public/

ou

meuprojeto/meusite/public/
meuprojeto/meusite/admin/public/

Com Zend isso não é necessário pois você pode criar módulos dentro de um mesmo projeto Zend, reaproveitando configurações de banco de dados, plugins, etc…
Cada módulo possui seu grupo de “controllers, models e views” independentes, ou seja, tudo é organizado dentro de pastas e o Zend faz o resto (yesss!).

A arquitetura básica que eu utilizo para módulos é a seguinte:
Zend Modules

Repare que dentro da minha pasta application eu não tenho mais “controllers, models e views”, pois essas pastas estão dentro de modules. Cada pasta em modules é (obviamente rs) um módulo, logo dentro de cada uma você precisa ter seus controllers, models e views indepententes ou seu projeto não irá funcionar corretamente, pois o Zend ao executar um módulo ele irá procurar por esses arquivos dentro dessa pasta.

Bom, antes de começar a configuração vamos relembrar que um módulo é apenas um conjunto de ações dentro do seu projeto. Como citei o caso do web site, você pode ter o web site em default e o administrador emadmin.
OBS: default que é a pasta padrão, é onde o zend irá procurar por arquivos caso você não indique caminho.
Exemplos:

MÓDULO default: www.com.br/public/
MÓDULO admin:www.com.br/public/admin
MÓDULO cliente:www.com.br/public/cliente

TOME MUITO CUIDADO PARA NÃO CRIAR UM MÓDULO COM O MESMO NOME DE UM CONTROLLER INTERNO DO default.

*** Agora vamos as configurações para poder enfim desfrutar desse recurso!

Primeiro você precisa modificar seu application.ini na pasta application/configs do seu projeto.
Em um projeto sem módulo eu indico onde estão meu controllers com a linha:

PHP

1
resources.frontController.controllerDirectory = APPLICATION_PATH “/controllers”

Porém em um projeto com módulo eu vou trocar essa linha por:

PHP

1
2
resources.frontController.moduleDirectory = APPLICATION_PATH “/modules”
resources.modules[]= “”

Automaticamente ele irá entender que dentro de cada pasta módulo eu ja tenho as pastas controllers, lembrando também que o nome da sua pasta modules pode ser qualquer uma, basta você citar corretamente seu nome no seu arquivo de configuração.

Agora DENTRO DE CADA MÓDULO você deve adicionar um arquivo Bootstrap.php para inicialização do seu módulo, porém notem que o cabeçalho é um pouco diferente:

BOOTSTRAP PRINCIPAL:

PHP

1
2
3
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
}

BOOTSTRAP DE UM MÓDULO:

PHP

1
2
3
class Admin_Bootstrap extends Zend_Application_Module_Bootstrap {
}

Note que na frente do nome da classe Bootstrap você deverá utilizar o nome do seu módulo, no caso acima eu estou adicionando o bootstrap do módulo admin, então o nome deve ser Admin_Bootstrap e essa classe deverá ser extentida para Zend_Application_Module_Bootstrap, pois assim o Zend sabe que se trata de um bootstrap de módulo! A estrutura final então de um projeto com site e admin deverá ficar parecida com:
Zend Modules

 

Post original: www.brunoporto.com.br/2010/09/27/modulos-zend-framework/

A solução web que você e sua empresa procuram!

This site is protected with Urban Giraffe's plugin 'HTML Purified' and Edward Z. Yang's Powered by HTML Purifier. 3878 items have been purified.