DGmike

DGmike

Calma! não entre em pânico! Amanhã (talvez) tem novo post…

  • Alice Andrade
  • Rafael Zamana
  • Home
  • Guia Rápido jQuery
  • Códigos prontos
    • PHP: Função __auloload()
    • Classe sqlsimples e sql – PHP
    • Bancos, bancos e mais bancos…
  • PagSeguro
  • Artigos
    • JavaScript (parte 1)
  • Quem?

Dados de teste

Posted in Programação, Tecnologia, Trabalho, sql by DGmike
Mar 18 2010
TrackBack Address.

Um projeto de verdade deve ser testado de várias formas possíveis. Já falei sobre teste unitários e como aumentar a produtividade com isso num evento de porte internacional. Agora, sabe quando você precisa criar vários registros no banco de dados[bb] só para mostrar ao cliente como o sistema vai ficar, ou quando você precisa de dados aleatórios dos mais variados tipos para saber se o sistema aguenta o tranco?

Todas as máquinas enviam registros a apenas um servidor de banco de dados

Gerar dados de forma simples como se fossem várias máquinas

É muito chato quando precisamos inserir no banco de dados vários registros para teste, você passa horas e horas apenas inserindo informações que você deve gerar de sua própria cabeça. Para resolver esse problema, existe um bom aplicativo web chamado Generate Data, onde você define a tabela e os campos e o que cada campo irá possuir.

Por exemplo, você está escrevendo um aplicativo de agenda pessoal com as seguintes tabelas:

usuario:
    id: int auto_increment
    nome: varchar(50)
 
telefone:
    id: int auto_increment
    id_usuario: int
    tipo: enum(celular,residencial,trabalho)
    numero: varchar(14)

Então, você só precisa inserir 30 registros para usuário, dizendo que o campo nome é um “full name” e ele gera vários nomes aleatórios para você não ter problemas de repetir dados.

Para a tabela telefone, coloque o “id_usuario” como um número inteiro entre 1 e 30. Para o campo tipo um valor string entre “celular”, “residencial” ou “trabalho”. E o campo numero ganhará um telefone no formato (XX) XXXX-XXXX. O legal é que o generate data dificilmente vai te deixar na mão, mas na maioria das vezes você consegue gerar registros de testes para seus projetos. Ele ainda consegue exportar os dados em vários – SQL, CSV, Excel, XML ou HTML[bb] e anda existe uma versão para download que você pode fazer rodar em sua máquina sem precisar estar online ou modificá-lo para alterar os dados que serão gerados como por exemplo, cidades e estados brasileiros. Fica a dica para aumentar sua produtividade[bb].

1 Comment »
Tagged as: banco de dados, dados, gerador, model, sql

Aprendendo com o técnico: quanto cobrar em um projeto web

Posted in Trabalho by DGmike
Mar 15 2010
TrackBack Address.
Orçamento, finanças e trabalho

Antes de começar este post gostaria de contar uma história que ouvi em algum lugar que não me lembro mais (provavelmente li na internet numa busca qualquer).

Tenha carinho pelos seus orçamentos, é dele que deve vir o lucro

Quanto um técnico ganha? Quanto você ganha? Pense nisso.

O sujeito comprou um equipamento caríssimo, que iria agilizar a produção em sua fábrica.

Após 1 mês de uso, o equipamento parou de funcionar.

Chamou todos os seus engenheiros, e nenhum deles conseguiu detectar o problema.

Desesperado, resolveu chamar um técnico de fora da empresa.

O técnico, examinando o equipamento, descobre o problema: um parafuso solto.

Apertou o parafuso, ligou a máquina e esta voltou a funcionar normalmente.

Apresentou a conta de Dez mil dólares.

O dono da empresa ficou espantado, alegou que não tinha como justificar esse preço absurdo, mas mesmo assim resolveu pagar, mediante descrição do serviço na nota fiscal.

O técnico então apresentou a nota fiscal com a seguinte descrição do serviço prestado:

Visita técnica: valor – cortesia

Apertar parafuso: US$ 10,00

Saber qual parafuso apertar: US$ 9.990,00

Recentemente meu apartamento tem passado por modificações, pintura, armário embutido, televisão[bb] acoplada e você sabe que quando tem mudança muitas coisas acabam quebrando. Bem, a hélice do meu ventilador de parede[bb] quebrou e eu tive que chamar a assistência técnica para arrumar outra hélice e colocá-la no lugar.

Como no meio do caminho estávamos pintando o quarto, decidi pedir para o técnico que veio em casa para colocar a hélice para passar o fio da tomada para o ventilador – menos de um metro, e fazer a instalação (passar o fio por dentro do tubo do ventilador. Não precisava nem fazer instalação elétrica, o ventilador já estava instalado, bastava apertar os parafusos na parede e passar o fio. Eis que ele me solta: “O custo desse serviço é de R$ 50,00 e eu precisarei voltar aqui outro dia para fazê-lo.” Claro que ele não falou com essas palavras, mas o resumo é esse. Respirei fundo e falei: “Não, ok! Pode deixar que eu faço.”

Bem, isso me fez refletir muito sobre o meu trabalho. E a pergunta inicial é “quanto devo cobrar sobre o meu trabalho“. Procurei, pesquisei, me informei com pessoas mais experientes e descobri o seguinte: não existe formula certa para o cálculo. Conversei com algumas pessoas e cheguei a um consenso de como fazer um orçamento sem ter prejuízos e o cliente ainda sair satisfeito pagando um valor justo.

Imagine a seguinte situação: A vizinha – dona de um restaurante, pergunta para você: “quanto custa fazer um site?” (isto já me aconteceu algumas vezes) e a pessoa não espera que você diga, “Passa na minha empresa depois para tomarmos um café e analisarmos sua situação, talvez cheguemos a um consenso comum em que você e eu sairemos satisfeitos com a proposta.” Muitas pessoas que recebem esse tipo de pergunta nem tem empresa para poder dar essa resposta – apesar de parecer a resposta mais sensata, então acabam soltando um numero aleatório qualquer, “sei lá… mil reais”. É aí que está a falha, você não sabe quanto trabalho vai levar, então quanto você deve cobrar? O que acontece é que depois de fechado o trabalho você se vê na condição de fazer tudo o que o cliente deseja: barba, cabelo e bigode. Tudo pelo preço já embutido. Oras, um site é um site, né?

Bom, não é uma fórmula nem a pura verdade. Cada um faz seus orçamentos como achar melhor, mas da forma como vou explicar talvez ajude você a não entrar em enrascadas ou a … Por incrível que pareça e mesmo parecendo chato, peça um tempo para orçar qualquer que seja o projeto[bb]. Analise o que será feito, o que deve ser implementado e comece a somar. Somar horas.

Encontre a solução que o cliente precisa e faça um projeto e leve menos de um dia para fazer isso, afinal você ainda não está sendo pago para trabalhar e mantenha uma boa aparência para o cliente, aparente ser ágil assim ele começa a pegar confiança em você. E estime por alto quanto você pode demorar a cada tarefa. Imaginemos a seguinte situação:

Quero implementar PagSeguro em minha loja. Minha loja só vende três produtos e não pretendo vender mais do que isso tão cedo.

Ok, uma implementação dessas não precisa de integração com o retorno automático nem implementação com uma linguagem server-side, podemos usar o PagSeguro com carrinho PagSeguro sem problemas. Quanto tempo para implementar? Um design de um botão, html simples para três produtos, jogar no ftp: trinta minutos. Coloquemos um nível de dificuldade que pode-se encontrar como o cliente não gostou do botão, o ftp que o cliente passou não funciona, mapear a URL de onde fica o botão, problemas de conexão… esta tarefa na verdade pode gerar um trabalho de uma hora. Então é isso, o trabalho terá o custo de uma hora.

Com as horas contadas, verifiquemos o valor que você deve cobrar, um valor justo, em cima do tempo que você vai gastar e não um chute de quanto você acha que o projeto inteiro leva.

Para gerar o valor de cada hora, precisamos saber, quanto você pretende ganhar em um mês? Digamos, R$ 5.000,00. Em um mês existem 26 dias úteis (30 menos 4 sábados menos 4 domingos) e cada dia possui 8 horas úteis o que totaliza em 208 horas. Peguemos esse valor de R$ 5.000,00 e dividimos pelos 208 horas, total de R$ 24,00.

Achamos um valor médio de trabalho, mas isso não é o valor ideal, ainda. Você não consegue pegar clientes todos os meses, existem meses em que você passa fome sem cliente algum, então você deve fazer uma média de tempo de vacas magras, digamos adicionar 10% no valor de cada hora. Também precisa adicionar os gastos que você terá durante o projeto, gastos que muitas vezes você não percebe que está tendo como por exemplo, energia elétrica ou desgaste de máquina, mais 10% dá conta do recado. E ainda temos o fato que você precisar de uma emergência como o fato de você adoecer e precisar contratar alguém para terminar o projeto no seu lugar, 20% deve resolver. Logo, os R$ 24,00 por hora ganham 50% de juros :) e temos o valor final de R$ 36,00 a cada hora de trabalho.

Imaginemos que você leve 4 dias para fazer aquele site da vizinha e você cobrou um valor de R$ 1.000,00 na lata. Para cada dia você trabalhou o equivalente a dez horas para conseguir manter o prazo, então você levou na verdade 40 horas de trabalho. Na ponta do lápis, você gastou R$ 1.440,00 e ganhou R$ 1.000,00 então você tomou um prejuízo de R$ 440,00. Quase 50% do projeto. Se você tivesse adoecido ou tivesse tido problemas com a familia você não conseguiria bancar as despesas e você ganhou apenas o que trabalhou, sem lucro algum. Isso quer dizer que você trabalhou de graça e não poderá tomar um sorvete por isso.

Na faculdade eu aprendi a ter ódio por “sobrinhos” porque eles cobravam o valor muito abaixo do que um projeto pode ter, por exemplo, minha vizinha conseguiu fazer um site para ela no valor de R$ 300,00. Impossível competir com meu valor de quase R$ 1.500,00. A diferença é estupidamente alta. Mas (!) mesmo não gostando desses pré-profissionais, depois que terminei a faculdade acabei cobrando o valor de um sobrinho para muitos projetos e em todos eles acabei tendo mais despesas do que lucros[bb].

Coloque no orçamento que enviará ao cliente um descritivo de cada trabalho que você irá fazer, mostrando que cada pequeno pedaço do software dele tem um custo para você e quanto isso vale. Descreva bem, este documento poderá ser usado como base para que o cliente não te peça coisas a mais e você tenha um resaldo do que foi acordado. O fatorW tem escrito bastante coisa interessante sobre orçamentos e dicas para orçar seus projetos, vale a pena dar lida no que ele tem a dizer sobre o mercado na internet.

Hoje consigo montar um orçamento que me agrade um pouco mais e é justo – assim como o técnico, que eu consigo ficar satisfeito com o quanto estou trabalhando. E se o cliente dizer “você cobra muito caro”, na verdade ele não está querendo o meu serviço, que posso dizer que é de qualidade e vale o preço que cobro (ah, aprendi isso a duras penas) e nesse caso, é preferível que ele fique com o sobrinho e não comigo. Muitas vezes esses clientes depois de tentar abaixar o preço ao máximo se acham no direito de implicar com tudo e dizer que está pagando por isso, mas isso é outra conversa.

E você, como faz o orçamento para seus clientes?

2 Comments »
Tagged as: aprendendo, benefício, custo, dinheiro, orçamento, renda, Trabalho

Palestra PagSeguro na Impacta

Posted in Programação, Semântica, Tecnologia, Trabalho, eventos, html, icephp, pagseguro, php, sql by DGmike
Feb 05 2010
TrackBack Address.

No sábado passado realizei uma palestra na Impacta sobre como implementar uma loja virtual do nada com ajuda do PagSeguro da UOL. Esta palestra já está na terceira versão, eu já a apresentei no PHP-Minas e PHPConference no ano passado. Eu sempre dou um upgrade entre uma apresentação e outra ou corto coisas que não são importantes, mas o conteúdo é basicamente o mesmo.

Foram abordados os temas controle de versão, PDO, Frameworks, motivação, KISS (keep it simple, stupid!) e desenvolvimento ágil.

Eu gosto muito dessa palestra em particular porque demonstra como você pode (e deve) ter sistemas grandes implementados com poucas linhas de código, bastando usar a essência do PHP. Hoje o PHP pode ser considerado uma linguagem bem estável e com grandes recursos que em muitos casos usar um Framework completo é algumas vezes perda de tempo, valendo mais a pena usar a essência da linguagem.

Sala cheia (duas) na palestra sobre PagSeguro na Impacta

Sala cheia (duas) na palestra sobre PagSeguro na Impacta

Também gosto pra caramba de implementar PagSeguro em palestras por ser simples. Em menos de vinte minutos explicativos é possível demonstrar como implementar PagSeguro com direito a retorno automático e dicas de segurança na hora de implementar. É muito satisfatório ver o quanto é rápido, simples e fácil implementar vários meios de pagamento de uma só vez. Com a segurança de “pishing”, fraude, reembolso e muitas outras vantagens que o PagSeguro disponibiliza.

A palestra esteve bem cheia, foram necessárias duas salas e uma conexão de áudio e vídeo para que todos possam ver a palestra. Dentre o pessoal consegui ver o @caferrari – dono do projeto vortice framework, e o @rodrideme – ex-funcionário da Visie e sua namorada @alazanscarol. Muito bom ver esse pessoal.

Enfim a palestra foi ótima e o código-fonte do projeto está no trac para qualquer um estudar. Para ver a palestra, basta vê-la no SlideShare. Espero que tenha mais palestras como esta pois acredite em mim, não é a mesma coisa assistir a palestra e vê-la no SlideShare, é completamente diferente.

Da argila ao forte: como desenvolver uma loja com PagSeguro
View more presentations from Michael Castillo Granados.

3 Comments »
Tagged as: controle de versão, desenvolvedor, ecommerce, ice-baby, impacta, implementação, loja, pagseguro, palestra, pdo, php, subversion, SVN, trac

O PagSeguro mudou a URL de retorno automático, e agora?

Posted in Chrome, Cotidiano, Firefox, Internet Explorer, Navegadores, Programação, Semântica, Tecnologia, Trabalho, Tutorial, eventos, jQuery, javascript, pagseguro, php, plugin, python, yui by DGmike
Nov 02 2009
TrackBack Address.

Nesta sexta-feira, dia 30 de outubro, o PagSeguro mudou a sua homepage e com ela muitas coisas novas aconteceram. Inclusive rolou uma palestra para 70 pessoas do twitter que acompanharam as mudanças do Twitter. A palestra foi ministrada pelo Dennis Ferreira e pela Valéria Santos. Pessoas que tive a oportunidade de conhecer de perto e eles são pessoas responsáveis e estão conscientes das mudanças e do impacto que esta mudança causa.

PagSeguro - Uma empresa UOL

PagSeguro - Uma empresa UOL

Tem bastante gente falando sobre as novidades do novo site do PagSeguro por aí, então se quiser saber o que exatamente, recomendo os slides da palestra e uma busca no oráculo.

Mas, e na parte de códigos? O que muda? Você precisa atualizar seus códigos para essa nova plataforma? A resposta é simples e óbvia: NADA. Sim você não precisa atualizar seu código correndo achando que sua URL mudou. O PagSeguro deixou de ser implementado em ASP e passou a ser implementado em JAVA, o que deixou a aplicação muito mais robusta e segura, com isso a URL do retorno automático mudou. No site do PagSeguro eles indicam uma nova URL para o retorno automático ( https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml ) mas a URL anterior continua funcionando normalmente e continuará por um longo tempo.

O pessoal do PagSeguro fez todas as alterações no seu sistema e antes de por no ar fez uma longa bateria de testes e só foi para o ar após verificar se todas as bibliotecas oficiais continuavam funcionando normalmente. Então, as URL de retorno automático continuará funcionando normalmente. Com o passar do tempo, é óbvio que a URL anterior morra, mas isso acontecerá muito tempo depois, até perceberem que ninguém mais utiliza a URL antiga.

A mudança vai ser longa e sutil, com o tempo iremos alterar todos os scripts para a nova URL, mas você não precisa sair desesperado para trocar suas URLs. O PagSeguro pensou bem nisso quando alterou a url de retorno automático. Eu mesmo fiz testes hoje de tarde para comprovar isso, já que recebi algumas dúvidas de alguns clientes e algumas pessoas reclamaram disso no twitter. Portanto, não se preocupe, você não precisa alterar nada no seu script de retorno automático do PagSeguro.

8 Comments »
Tagged as: Code, código, integração, javascript, novo pagseguro, pagseguro, php, python, rails, retorno automático, RoR, ruby on rails, Tecnologia, url

PHP+PagSeguro = Loja virtual de downloads

Posted in Programação, Tecnologia, Trabalho, Tutorial, jQuery, javascript, pagseguro, php, sql by DGmike
Apr 20 2009
TrackBack Address.

Voltamos a um assunto que interessa muitas pessoas: ganhar dinheiro. Talvez você não tenha nada físico para vender, mas você provavelmente tem talento (não, chocolate não) e sabe escrever um bom livro ou mesmo fazer ótimas fotografias[bb]. Você pode não saber, mas dá pra ganhar dinheiro com esse seu talento. Por que você não começa a vender arquivos para download? Sim! Por que não?! Comece a explorar o seu lado criativo e faça de seus dons uma forma de fazer lucros.

Crie uma loja virtual. Você pode começar com uma loja poderosa como o Magento ou mesmo uma coisa mais simples como OsCommerce, Joomla o mesmo WordPress. Mas, se você é programador como eu e prefere escrever seu próprio código ou mesmo entender como o sistema de sua loja (ou loja de seus clientes) funcionará, farei uma série de artigos para demonstrar como é simples criar uma loja virtual[bb] cujos produtos não são nada além de links para download.

Loja virtual com PagSeguro? Agora ficou fácil!

Loja virtual com PagSeguro? Agora ficou fácil!

Para você conseguir acompanhar este “curso” você deve entender um pouco dos seguintes assuntos:

  • PagSeguro: Vamos usar esta ferramenta de pagamento online para que nossos clientes se sintam seguros ao comprar em sua loja, então você já pode criar sua conta para podermos fazer a nossa loja virtual
  • PHP: Não precisa ser um expert, mas saber conceitos básicos de banco de dados e orientação a objetos já dão um gás
  • MySQL: Vamos trabalhar com a dobradinha mais conhecida da Web. Não usaremos o MySQL ao extremo mas iremos fazer um join ou outro
  • Ânimo: muitas vezes você irá errar. Podem ser erros básicos como não colocar um ponto-e-virgula/ no seu script, então não desanime e continue em frente

Ok, com os requisitos em mãos vamos por a mão na massa. A começar pela estruturação do nosso banco de dados.

O banco de dados

Vamos precisar basicamente de duas tabelas para organizar os produtos: categorias, produtos. Elas são descritas pelas seguintes queries:

CREATE TABLE `categoria` (
  `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `slug` VARCHAR(45) NOT NULL,
  `titulo` VARCHAR(100) NOT NULL,
  PRIMARY KEY (`id`)
);
 
CREATE TABLE `produto` (
  `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `categoria_id` INTEGER UNSIGNED NOT NULL,
  `slug` VARCHAR(45) NOT NULL,
  `titulo` VARCHAR(100) NOT NULL,
  `descricao` TEXT NOT NULL,
  `valor` FLOAT NOT NULL,
  `url` VARCHAR(32) NOT NULL,
  `imagem` CHAR(32) NOT NULL,
  PRIMARY KEY (`id`)
);

Usaremos os campos “slug” tanto de categoria quanto de produto para a url na loja virtual ficar mais fácil de enteder, é o que chamamos de URLs amigáveis. Repare também que temos “categoria_id” na tabela de produto, é nela que vamos basear a nossa organização, um produto deve ter uma categoria e uma categoria pode ter diversos produtos. Os campos de url e imagem da tabela de produtos conterá o endereço do arquivo físico (o arquivo que o usuário fará o download) e a imagem que aparecerá na loja virtual respectivamente. Eles receberão uma criptografia para a segurança de sua loja, usarei md5 como criptografia.

Muito bem, não vamos nos prender a criação de usuários no nosso sistema. Por quê?! Porque você realmete não precisa disso na sua loja. Se um usuário compra de sua loja ele terá os seus dados no PagSeguro, afinal, ele vai pagar por lá não é mesmo? Então para quê ter dados repetidos no seu sistema? Não vamos fazer também um sistema de login, tenho em mente que você é um programador experto e já sabe fazer isso de olhos fechados. Vamos colocar um sistema de login no nosso sistema sim, claro, mas com um usuário único e uma senha única. Isso para não perdermos o foco da loja virtual.

A outra tabela que iremos precisar é a tabela de compra, nela teremos a compra de cada usuário, assim poderemos reenviar um e-mail ao usuário com os links para onde ele pode efetuar o download dos produtos que ele comprou. Esta tabela também serve para sabermos que o produto foi enviado ao cliente, digo, a data de envio do e-mail. Essa tabela é regida pelo seguinte SQL.

CREATE TABLE `compra` (
  `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `email` VARCHAR(100),
  `produtos` TEXT NOT NULL,
  `transacao_id` VARCHAR(45),
  `status` VARCHAR(45) NOT NULL,
  `data_confirmacao` DATETIME NOT NULL,
  PRIMARY KEY (`id`)
);

Veja que produtos é um campo do tipo do tipo TEXT, nele vamos gravar os ids contidos na tabela produto, separados por virgula. Os campos transacao_id, status e data_confirmacao serão completados ao receber o retorno do PagSeguro.

Com isso já temos as tabelas básicas necessárias para a criação de nossa loja virtual. Fique ligado para a próxima parte dessa série onde vamos montar uma loja virtual voltada para downloads.

  • Campo DataTransacao no retorno do PagSeguro
  • Palestra PagSeguro na Impacta
  • Verifique o retorno automático, sempre!
  • [PagSeguro] O campo status
  • O PagSeguro mudou a URL de retorno automático, e agora?

7 Comments »
Tagged as: criatividade, dinheiro, ecommerce, joomla, loja virtual, magento, mysql, oscommerce, pagamento, pagseguro, php, talento, visie, wordpress
Next page »

Categorias

  • Amigos  (16)
  • cases  (4)
  • Cotidiano  (71)
  • CSS  (19)
  • Design  (1)
  • Dia-a-dia  (30)
  • Diversão  (18)
  • eventos  (10)
  • extensions  (11)
  • flash  (3)
  • Games  (1)
  • html  (5)
  • icephp  (4)
  • Ilustração  (6)
  • Imagem  (8)
  • Inspiração  (5)
  • javascript  (35)
    • jQuery  (7)
    • yui  (2)
  • Não categorizado  (26)
  • Navegadores  (17)
    • Chrome  (4)
    • Firefox  (16)
    • Internet Explorer  (5)
  • pagseguro  (10)
  • php  (42)
    • PHP Conference  (3)
  • plugin  (3)
  • Programação  (43)
  • python  (5)
  • Semântica  (16)
  • sql  (9)
  • tableless  (18)
  • Tecnologia  (47)
  • Trabalho  (27)
  • Tutorial  (24)
  • Vetorial  (5)
  • video  (7)
  • video-tutorial  (5)
  • Windows  (4)
  • wordpress  (2)
  • xHTML  (23)

Tags

ajax artigo banco de dados biblioteca blog browser classe CSS data Design Dia-a-dia dinheiro evento eventos Firefox framework google html icephp internet Internet Explorer javascript jQuery loja mysql online opera pagseguro palestra php plugin Programação python retorno automático simples site solução sql string tableless Tecnologia twitter visie web wordpress

Arquivo

SlideSare

Últimos Posts

  • [QuickPOST] Vagas de emprego
  • Dados de teste
  • Aprendendo com o técnico: quanto cobrar em um projeto web
  • Frete com PagSeguro: simples!
  • Palestra PagSeguro na Impacta

Amigos

  • Alice Andrade
  • Rafael Zamana
Powered by WordPress | “Blend” from Spectacu.la WP Themes Club