ricardo duarte http://ricardoduarte.com ruby, rails, linux, php, seo and ui posterous.com Wed, 06 Oct 2010 10:16:00 -0700 Instalando o PostgreSQL 9.0 usando homebrew no OS X Snow Leopard http://ricardoduarte.com/instalando-o-postgresql-90-usando-homebrew-no http://ricardoduarte.com/instalando-o-postgresql-90-usando-homebrew-no

Com o homebrew devidamente instalado, siga os passos abaixo para instalar e configurar o PostgreSQL 9.0:

Instalando o PostgreSQL usando o homebrew:

Iniciando um banco de dados:

Criando um usuário administrador e sua senha

Bonus: Instalando a RubyGem pg

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte
Mon, 12 Jul 2010 19:35:00 -0700 O decifrador do comércio eletrônico http://ricardoduarte.com/o-decifrador-do-comercio-eletronico http://ricardoduarte.com/o-decifrador-do-comercio-eletronico

Tony Hsieh, da Zappos, revela o que é essencial para vencer na web:

  • Lição nº 1: Uma loja virtual é construída com base em clientes fiéis
  • Lição nº 2: O "boca a boca" realmente funciona na internet
  • Lição nº 3: Não faça competição de preços
  • Lição nº 4: Tenha certeza do seu estoque
  • Lição nº 5: Centralize sua distribuição
  • Lição nº 6: Atendimento ao consumidor é um investimento, não uma despesa
  • Lição nº 7: Comece pequeno, mantenha-se concentrado
  • Lição nº 8: Não guarde segredo. Não se preocupe com os concorrentes
  • Lição nº 9: Você precisa administrar a cultura da sua empresa ativamente
  • Lição nº 10: Desconfie dos chamados especialistas. Inclusive de mim.

Leitura interessante. Quem puder, compre a PEGN de Junho/2010. ;-)

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte
Mon, 26 Apr 2010 13:20:00 -0700 Rails: Sobrescrevendo atributos do ActiveRecord http://ricardoduarte.com/rails-sobrescrevendo-atributos-do-activerecor http://ricardoduarte.com/rails-sobrescrevendo-atributos-do-activerecor

Dica rápida para sobrescrever atributos do ActiveRecord no Rails 2.3:

Com esse exemplo, quando o name de um User for recuperado, ele irá capitalizar o nome. E quando for definir o name, ele iá transformar o texto para minusculas.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte
Wed, 31 Mar 2010 22:10:00 -0700 Ovi Maps (3.03) disponível para E71 http://ricardoduarte.com/ovi-maps-303-disponivel-para-e71 http://ricardoduarte.com/ovi-maps-303-disponivel-para-e71

Quando a Nokia anunciou que iria disponibilizar a navegação por voz gratuitamente no Nokia Maps, rebatizado de Ovi Maps, foi um alvoroço geral. E para minha surpresa, o excelente E71 ficou de fora da lista de aparelhos compatíveis.

Media_httpricardoduar_qoiba
Várias desculpas foram dadas para justificar e nenhuma versão compatível tinha sido lançada ainda. Ok, oficialmente ainda não foi mas... Por acaso achei hoje esse link no forum da Nokia para o .SIS compatível com o E71.

Download do Ovi Maps 3.03 para E71:

ATENÇÃO: Testei somente no meu E71 que está com o firmware 400.21.013. Outros aparelhos e firmwares, POR SUA CONTA E RISCO, OK? Quem puder testar em outros aparelhos e firmwares, gostaria muito de um comentário seu. UPDATE: A Nokia anunciou oficialmente hoje o suporte do Ovi Maps para E71 e E66. #eujasabia

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte
Thu, 04 Feb 2010 02:18:00 -0800 Git: Push e Delete de branches remotos http://ricardoduarte.com/git-push-e-delete-de-branches-remotos http://ricardoduarte.com/git-push-e-delete-de-branches-remotos

Dica rápida

Para enviar um branch local para o servidor remoto, use o comando abaixo:

Já para deletar um branch remoto, é tão simples quanto:

PS. Não esqueça de deletar o branch local também, se for o caso:

Dica do git ready.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte
Wed, 06 Jan 2010 02:50:00 -0800 Filtrando as consultas com has_scope http://ricardoduarte.com/filtrando-as-consultas-com-hasscope http://ricardoduarte.com/filtrando-as-consultas-com-hasscope

A Plataforma Tecnologia lançou recentemente o has_scope, plugin/gem extraído do InheritedResources (o qual ainda não tive a capacidade de entender o funcionamento).

Ele permite criar filtros nas consultas usando os escopos (named_scopes) definidos no Model de uma forma simples e elegante, mantendo toda a lógica do negócio fora do Controller.

Vamos ao código:

No Model

No Controller, defini quais escopos que vou usar no filtro.

Na View, criei uma partial com os campos do filtro.

Esse formulário do filtro irá chamar o método index usando GET (através da URL), como no exemplo:

Como de costume, esse post é só um aperitivo. Acesse o completíssimo README no GitHub para mais detalhes de utilização.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte
Wed, 28 Oct 2009 02:15:00 -0700 RPCFN #2: Average Arrival Time For A Flight http://ricardoduarte.com/rpcfn-2-average-arrival-time-for-a-flight http://ricardoduarte.com/rpcfn-2-average-arrival-time-for-a-flight

O Ruby Learning começou uma série de desafios para Rubistas iniciantes, na qual um profissional Ruby elabora um problema e os interessados em participar enviam as soluções desenvolvidas em Ruby para serem avaliadas. O autor do desafio escolhe a melhor implementação e sorteia uma entre as outras soluções funcionais. Os premios são screencasts da PeepCode e BDDCasts.

Por que não participar?

O problema proposto pelo Chris Strom foi o seguinte:

Você deve um grande favor e concordou em pegar um amigo no aeroporto toda Sexta-feira a noite. A linha área que seu amigo voa é barata, mas terrível quando se trata em reportar atrasos e horários de saída e chegada. Você rapidamente descobriu que o voos agendados para as 10pm nunca chegam no horário e usualmente atrasam mais de uma hora. Se o avião chegar as 11:15pm, 12:03am, 11:30pm, 11:23pm e 11:48pm, qual é o horário médio da chegada?

A solução funciona se seu amigo mudar o horário de chegada para 6 horas depois? E se for 12 horas depois? A saída esperada do programa é a seguinte:

E qual foi a minha solução?

Eu identifiquei os seguintes passos a serem seguidos:

  • Transformar as posições do array de String para Time, para poder calcular qual é o médio.
  • O problema deixa claro que todos os tempos são no futuro, então é preciso corrigir o parser de tempo das horas que são do dia seguinte. No exemplo: Se no momento da consulta são 28/10/2009 19:00, o parser do Ruby irá converter 12:01am, 12:06am e 12:11am para 00:01, 00:06 e 00:11 do dia 28/10/2009, quando o correto seria do dia 29/10/2009).
  • Ordenar o array por tempo ascendente.
  • Pegar a posição do meio do array.

O código para essa implementação foi o seguinte:

Executando os testes propostos, tenho o resultado esperado. Woooo!

UPDATE 1: As soluções vencedoras foram:

UPDATE 2: o Chris Storm publicou um feedback sobre as soluções do teste. Leitura obrigatória.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte
Mon, 21 Sep 2009 02:42:00 -0700 Criando um Rails Application Template http://ricardoduarte.com/criando-um-rails-application-template http://ricardoduarte.com/criando-um-rails-application-template

Quando vamos criar uma aplicação Rails, normalmente executamos uma série de passos (instalação de plugins, gems, controllers, etc.) iguais. Por que não automatizar esse processo?

Usando o ótimo guia escrito pelo Nando Vieira sobre Rails Application Templates, escrevi o meu primeiro template:

Para usar o template, basta chama-lo durante a criação da aplicação com o parametro -m:

Esse template é bem simples e faz apenas o que eu uso sempre em todas as aplicações:

  • Gems: authlogic, rspec, rspec-rails e less
  • Plugins: less-for-rails, jrails, i18n_label, activerecord_i18n_defaults, brazilian-rails, asset_packager, formtastic, paperclip e will_paginate.
  • Git: Inicia um repositório e faz os primeiros commits
  • Rails: Configura a linguagem para pt-br e o timezone para UTC-3.

Pode melhorar esse script? Faça um fork no Github

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte
Sat, 29 Aug 2009 22:44:00 -0700 Deployment automatizado de aplicação PHP com Capistrano http://ricardoduarte.com/deployment-automatizado-de-aplicacao-php-com http://ricardoduarte.com/deployment-automatizado-de-aplicacao-php-com

Os que me conhecem sabe quanto o Rails Summit 2008 mudou a minha vida profissionalmente. Eu já sabia que as coisas haviam evoluído mas sinceramente nunca tinha dado muita bola, pois os meus processos sempre funcionaram bem. Lá eu pude ver que muita coisa legal estava sendo feita e eu que não podia ficar de fora. Uma delas foi o deployment automatizado.

Capistrano

O Capistrano é uma RubyGem que permite que você escreva receitas para publicação em servidores web. É possível usa-la integrada com o seu repositório (centralizado ou distribuído) ou mesmo copiar-tudo-compactar-e-enviar automaticamente. Ele permite manter várias versões da aplicação no servidor (e fazer rollback se necessário) e utiliza links simbólicos para dizer qual delas é a atual.

A instalação é mais fácil que fazer miojo:

É necessário ter o Ruby e o RubyGems instalado no seu sistema. Se você usa Ubuntu, eu posso ajudar.

Configurando o seu projeto

Dentro do diretório do seu projeto, crie a estrutura básica do capistrano:

Notem que o arquivo config/deploy.rb foi criado. É nele que você irá escrever a sua receita.

Exemplo de receita usando estratégia de cópia

Usando o Capistrano

Após estar com a receita devidamente escrita, é hora de configurar o servidor online para a estrutura do Capistrano.

O setup só precisa ser rodado uma única vez.

Depois de configurado, para publicar a sua aplicação basta fazer isso:

Mágico né?

Fez merda e publicou alguma coisa que não devia? Faça um rollback!

Algumas considerações sobre essa receita:

  1. FAÇA BACKUP! Antes de começar a testar o capistrano, tenha certeza que os arquivos da sua aplicação estão protegidos e você não irá fazer cagada.

  2. Por se tratar de uma aplicação em PHP, não é necessário reiniciar o servidor como em aplicações Rails. Por isso reescrevi a tarefa restart para que ele não faça nada.

  3. A aplicação em questão permite o upload de arquivos pelos usuários, sendo necessário criar links simbólicos para manter esses dados fisicamente fora da estrutura da aplicação que será enviada pelo Capistrano. Nesse caso, todos os arquivos que serão enviados pelos usuários ficam no diretório /f/.

  4. Como os ambientes de desenvolvimento e produção são sensivelmente diferentes, optei por manter dois arquivos de configurações separados: conf.php e conf-online.php. A aplicação faz referência ao conf.php e durante a publicação, o Capistrano se encarrega de apagar o arquivo de desenvolvimento e faz um link simbólico para o arquivo de produção.

  5. Essa receita resolve O MEU PROBLEMA. Espero que possa ser útil para você.

Se ficou interessado em usar o Capistrano para publicar a sua aplicação, sugiro fortemente que leia a documentação para maiores detalhes.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte
Wed, 26 Aug 2009 23:43:00 -0700 Filezilla sem senha usando SFTP + ssh-key http://ricardoduarte.com/filezilla-sem-senha-usando-sftp-ssh-key http://ricardoduarte.com/filezilla-sem-senha-usando-sftp-ssh-key

Ok, eu sei que usar cliente de FTP é coisa do passado, mas quem não tem um projeto sem o deployment automatizado que atire a primeira pedra.

Media_httpricardoduar_mxhqi
Na versão 3.0.8 do Filezilla foi adicionado o suporte a chaves públicas nas conexões por SFTP. Com isso, podemos aproveitar a mesma chave que usamos para conectar sem senha por ssh para autenticar no cliente de FTP.

Instalando a nova versão

  1. Baixe a versão atualizada do Filezilla: 3.2.7.1.
  2. Descompacte o arquivo em /opt/:
  3. Crie um link simbólico:

Convertendo sua chave privada para o formato .ppk:

  1. Já com o Filezilla aberto, acesse Editar -> Configurações
  2. No menu interno, selecione Conexão -> SFTP
  3. Clique no botão Adicionar keyfile
  4. Localize e selecione sua chave privada (Provavelmente ela deve estar em ~/.ssh/id_rsa)
  5. O Filezilla irá informar que a chave não está num formato suportado e se oferecerá para converte-la. Responda Sim.
    Media_httpricardoduar_ocydk
  6. Escolha o local para salvar a chave convertida para o formato do Putty. Sugiro manter no mesmo diretório ~/.ssh/
  7. Pronto. Nos hosts que sua chave for autorizada, o Filezilla não pedirá mais senha nas conexões por SFTP.

Criando uma conexão:

  1. Acesse Arquivo -> Gerenciador de sites
  2. Clique em Novo site
  3. Preencha apenas os campos:
    1. Host: dominio.com
    2. Tipo de servidor: SFTP - SSH File Transfer Protocol
    3. Tipo de login: Normal
    4. Usuário: seulogin

Media_httpricardoduar_wgcea

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte
Wed, 29 Jul 2009 03:36:00 -0700 Rails plugin: asset_packager http://ricardoduarte.com/rails-plugin-assetpackager http://ricardoduarte.com/rails-plugin-assetpackager

Comentei há alguns dias atrás no Twitter sobre um plugin para Rails que instalei na aplicação que desenvolvemos na Tecmedia: o asset_packager.

O objetivo deste plugin é reduzir o número de requisições e o tamanho dos assets(arquivos javascript e css) em aplicações Rails. Como a maioria das soluções, é quase mágico:

Instalando e configurando

script/plugin install git://github.com/sbecker/asset_packager.git

Gere o arquivo .yml com os assets a serem unificados e comprimidos:

rake asset:packager:create_yml

Ele irá gerar uma estrutura semelhante a essa no arquivo config/asset_packages.yml, já com os assets que estão configurados no seu projeto:

---
javascripts:
- base:
  - prototype
  - effects
  - controls
  - dragdrop
  - application
stylesheets:
- base:
  - screen
  - header

E no seu layout, basta remover as chamadas antigas e colocar apenas:

<%= stylesheet_link_merged :base %>
<%= javascript_include_merged :base %>

Ele ainda tem a

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte
Mon, 20 Jul 2009 12:15:00 -0700 Rails delegate http://ricardoduarte.com/rails-delegate http://ricardoduarte.com/rails-delegate

Uma funcionalidade interessante do Rails que descobri através do RubyFlow foi o delegate.

No exemplo simples abaixo, mostra como mapear atributos de um model em outro.

E o que isso faz? Olhe abaixo:

Os atributos que foram declarados com delegate passam a responder como atributos do model Customer.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte
Fri, 17 Jul 2009 23:47:00 -0700 SSH: Economizando teclado http://ricardoduarte.com/ssh-economizando-teclado http://ricardoduarte.com/ssh-economizando-teclado

Sempre tive a necessidade de conectar em diversos servidores, todos com usuários e senhas diferentes. Cheguei até a ter um arquivo criptografado no Desktop com todos os usuários e senhas mais usados. Bobagem a minha.

Dica 1: Acessar servidor SSH sem senha

Criando o diretório .ssh no servidor

Você já tem uma chave ‘rsa’? Então crie uma:

Agora basta enviar sua chave pública (id_rsa.pub) para o servidor:

E pronto! Quando você acessar novamente a sua conta por SSH, ele não pedirá mais senha.

Dica 2: Apelidos para os user@host

Algumas pessoas perdem a noção e criam domínios gigantescos, aliados com políticas de criação de login dos provedores, está formado o inferno na hora de conectar um servidor.

Crie/edite o arquivo ‘~/.ssh/config’ com o seguinte conteúdo

Observem a diferença para conectar:

Bem melhor né?

Fontes:

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte
Sat, 11 Jul 2009 01:37:04 -0700 Nokia E71: Meu top 10 apps http://ricardoduarte.com/nokia-e71-meu-top-10-apps http://ricardoduarte.com/nokia-e71-meu-top-10-apps No final do ano passado comprei o meu primeiro(e único até agora) smartphone: Nokia E71. Aparelho fantástico, não tenho do que reclamar (Ok, a camera não é fantástica).
Media_httpricardoduar_ximej
Depois de testar muitos aplicativos, compilei minha lista de favoritos:
  1. Nokia Browser(nativo): Roda sem problemas a maioria dos sites, com suporte a Flash e leitor de RSS embutido.
  2. Nokia Podcasting (nativo): Apesar de não ouvir muitos podcasts, esse app supre a necessidade básica de baixar os feeds e já é integrado com a biblioteca do smartphone. [Dica: Assine o podcast do Pretinho Básico da Atlantida]
  3. Gravity (pago): Ótimo cliente para rede do Twitter e Laconica. Valeu o investimento.
  4. Palringo (gratuito): Cliente de IM(Google Talk, MSN, ICQ, etc.)
  5. Google Maps (gratuito): Integrado com o GPS, supre a necessidade básica de localização de endereços. Se você precisa de ajuda inclusive no transito, esse NÃO é o app ideal.
  6. FreeTimeBox (gratuito): Além de sincronizar o horário do celular com servidores NTP, ele tem a opção de adicionar a hora de forma persistente, sendo que ela sempre fique visivel. Ótimo para quem custuma perder a hora.
  7. TotalRecall (pago): Grava todas as ligações do celular, sem que a outra pessoa saiba. Ótimo para paranoicos e para quem não gosta de ficar anotando recados e/ou informações importantes durante as ligações.
  8. Nokia Email (gratuito): Leitor de email push, com suporte HTML e múltiplas contas.
  9. Nokia Mail for Exchange (gratuito): Aplicativo que sincroniza com servidor Microsoft Exchange. Uso somente para sincronizar Contatos, Tarefas e Calendário.
  10. Tema Prestige(Solace): Não gosto de temas muito coloridos e que atrapalhem a leitura da tela inicial do celular. Esse tema é discreto e tem um pacote de ícones bem agradável.
Espero que seja útil.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte
Sat, 11 Jul 2009 00:52:56 -0700 Leitura recomendada: Startup http://ricardoduarte.com/leitura-recomendada-startup http://ricardoduarte.com/leitura-recomendada-startup Aproveitando a superpromoção do Submarino, comprei no mês passado o box Steve Jobs + Start-up.

Media_httpricardoduar_iqijo

O livro de Jessica Livingston é composto por entrevistas com fundadores de Startups que decolaram e hoje são grandes companias. Os executivos falam sobre o processo que usaram no desenvolvimento das ideias, dificuldades iniciais, aquisições e relação com investidores. Mesmo as situações narradas não sendo as mesmas dos dias de hoje, valem muito pelo modo em que contornaram os problemas.

Leitura obrigatória para quem quer tirar as grandes ideias da cabeça e coloca-las em prática.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte
Wed, 13 May 2009 02:12:00 -0700 Criando um bot no Twitter em Ruby http://ricardoduarte.com/criando-um-bot-no-twitter-em-ruby http://ricardoduarte.com/criando-um-bot-no-twitter-em-ruby

Depois de ler a notícia no excelente Ruby Inside de como criar um Twitter bot com Ruby, criei coragem e montei o meu.

O código abaixo é quase idêntico ao disponível no repositório do projeto no GitHub, com apenas uma correção e uma customização:

E para rodar o bot, é preciso instalar as gems descritas abaixo e executar em um terminal:

Pode melhorar esta solução? Faça um fork dela e me avise! ;–)

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte
Sat, 18 Apr 2009 07:53:00 -0700 Construção http://ricardoduarte.com/construu00e7u00e3o http://ricardoduarte.com/construu00e7u00e3o

Obra da casa minha e da Fran!

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte
Fri, 10 Apr 2009 23:04:00 -0700 YSlow: Acelere sua aplicação com o .htaccess http://ricardoduarte.com/yslow-acelere-sua-aplicacao-com-o-htaccess http://ricardoduarte.com/yslow-acelere-sua-aplicacao-com-o-htaccess

Eu já conhecia o YSlow a algum tempo, mas nunca havia seguido a risca as verificações que o Yahoo propõe.

Na semana passada, em uma conversa com o Thiago (@thiagobfiorenza), ele comentou sobre o case do MyTVShows que passou da classificação “F” para “C”.

Resolvi então fazer algumas experiências para tentar diminuir o tempo de carregamento da nosso Portal Corporativo SaaS, o PCT4. Ele estava classificado como “F” também. Após algumas pequenas modificações no arquivo .htaccess, ele passou para a classificação “B”. No nosso caso, isto representou uma economia de ~200kb de download!

As linhas mágicas:

Claro que existem outras alterações a serem feitas (e que já haviam sido implementadas nesse sistema), para que pudesse ter esse ganho expressivo com somente essas instruções de compactação e cache no .htaccess,. Mas isso é assunto para um próximo post.

Pode melhorar esta solução? Faça um fork dela e me avise! ;–)

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte
Fri, 10 Apr 2009 22:36:42 -0700 Rails Guides em Português! http://ricardoduarte.com/rails-guides-em-portugues http://ricardoduarte.com/rails-guides-em-portugues O Cassio Marques acabou de anunciar a boa nova: Rails Guides em Português do Brasil. Parabéns a toda equipe de tradução!

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte
Thu, 09 Apr 2009 15:00:00 -0700 Shell script: Importar dumps SQL verificando MD5 http://ricardoduarte.com/shell-script-importar-dumps-sql-verificando-m http://ricardoduarte.com/shell-script-importar-dumps-sql-verificando-m

Integrar sistemas ERP antigos com aplicações web normalmente é algo complicado. Quando a carga de informações tem um tamanho considerável e a frequência de atualização é alta, os problemas aumentam.

Em duas aplicações web desenvolvidas na Tecmedia, o desenvolvedor do ERP envia arquivos de dump SQL para o servidor web em um intervalo de tempo pré-definido. Para importar estes arquivos com segurança, implementei um shell script que que verifica a integridade usando md5sum, descompacta os dumps .sql.bz2 e importa os dados diretamente no MySQL.

Optei pelo uso de shell script para evitar sobrecarregas sem necessidade em outros serviços do servidor, como Apache, PHP, etc.

Não gostou da solução? Faça um fork dela e me avise! ;–)

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/580082/4203bf83f438804dde849b48de826158.jpeg http://posterous.com/users/5AfA0ofkCjf3 Ricardo Duarte rduarte Ricardo Duarte