Lucas Teixeira

@lucastex

Vaga para desenvolvedor Grails

com 3 comentários

Oi pessoal,

Pra quem tiver interessado em trabalhar com Grails, ou que conheca alguem que esteja procurando…

The person must have hands on experience with GRAILS.

  • Experience with Oracle (plus)
  • Experience developing highly visited and highly scalable websites
  • Experience using the Grails Web Framework
  • Excellent communication skills

Location: Redwood City, CA
Duration: 3+ months
Start: ASAP
Rate: Open

Please send resumes to cwelch [at] bluewolf [dot] com (Charlotte)

Postado por Lucas Teixeira

January 7th, 2011 at 10:44 am

Postado em Grails

Com as tags ,

AWS Parte 2 – Configurando suas credenciais

com 10 comentários

Você pode controlar praticamente toda sua infraestrutura AWS através dos consoles web da Amazon, mas uma outra saída bem interessante, é configurar as APIs de acesso da amazon em sua máquina e acessar tudo diretamente da linha de comendo.

Cada serviço que possui uma API, possui um pacote para baixar, este post mostra como configurar e utilizar a API Tools do EC2, que são as instâncias da amazon. O primeiro passo é gerar e baixar as chaves de acesso de sua conta. Conto que a partir deste momento, você já tem um cadastro no AWS da Amazon (http://aws.amazon.com) e já se cadastrou no EC2 (http://aws.amazon.com/ec2).

Enfim, basta acessar esta URL (página de credenciais no seu perfil): https://aws-portal.amazon.com/gp/aws/developer/account/index.html?ie=UTF8&action=access-key, acessar a aba do meio, X.509 Certificates e criar um novo certificado. Isto irá baixar para seu computador dois arquivos, um que é sua chave privada (private key), e o outro que é de fato o certificado X.509 para se conectar no ambiente AWS.

ATENÇÃO: Estes arquivos não podem ser baixados novamente, caso você os perca, terá que criar um outro certificado e baixar novamente, portante, guarde-os com carinho.

Após ter os arquivos de credenciais, baixe o pacote da api do endereço: http://aws.amazon.com/developertools/351 e descompactá-lo em algum diretório. Eu particularmente sempre opto por um diretório “aws” na pasta do meu usuário, e ali dentro uma pasta “ec2″. Ou seja, as pastas baixadas (lib e bin) para mim ficam dentro da seguinte pasta:

/Users/lucastex/aws/

Dentro desta mesma pasta aws eu mantenho um diretório keys e nele guardo aquelas duas chaves que baixamos no primeiro passo.

O último passo, é definir algumas variáveis de ambiente para que o toolkit possa funcionar sem problemas. Precisamos definir o JAVA_HOME apontando para a instalação do java na máquina, e algumas variáveis que apontam para os certificados do AWS, além de é claro, redefinir o PATH para que os binários do AWS possam ser encontrados. Fiz isso no meu .bash_profile no meu Mac, mas se alguem usa linux ou windows, basta definir variáveis de sistema com estes nomes e respectivos valores:

export AWS_HOME=~/aws
export EC2_HOME=$AWS_HOME/ec2
export KEYS_HOME=$AWS_HOME/keys
export EC2_PRIVATE_KEY=`ls $KEYS_HOME/pk-*.pem`
export EC2_CERT=`ls $KEYS_HOME/cert-*.pem`
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
export PATH=$PATH:$EC2_HOME/bin

Pronto, basta garantir que estas instruções estão válidas para a sessão corrente. Na dúvida, encerre e reinicie a sessão do terminal.

Suas credenciais já estão configuradas! Você pode fazer um teste simples com o comando abaixo:

ec2-run-instances –region us-east-1 –instance-type t1.micro ami-4a0df923

Com este comando aí em cima, você está dizendo para que o AWS suba uma nova instância do tipo t1.micro na região de disponibilidade us-east-1 com a AMI ami-4a0df923.

AMI: São as máquinas já pré-montadas disponíveis para você utilizar, existem milhares na internet disponíveis, cada uma com seu código. Você pode usar uma AMI limpa do ubuntu como também pode utilizar uma das muitas que já vem com o ambiente inteiro instalado. Existem AMIs para desenvolvimento Ruby on Rails, desenvolvimento Java, AMIs com toda a stack AMP, e etc. Visite http://aws.amazon.com/amis para mais detalhes.

Rápido e simples! Em poucos segundos você já tem uma instância rodando. Acesse o console EC2 (https://console.aws.amazon.com/ec2/home) para ver o status da instância! Com o tempo vou colocando outras dicas, para acessar a maquina por SSH, configurar firewall e acesso externo além de outras coisas.

Postado por Lucas Teixeira

December 20th, 2010 at 3:28 pm

Postado em AWS

Com as tags , ,

AWS Parte 1 – Entendendo alguns termos

com 30 comentários

Faz um tempo já que estou mexendo com os serviços da Amazon AWS. Fiquei muito contente com os resultados dos meus testes, eles hoje já comportam uma infraestrutura completa por lá, que acaba por suprir toda a minha necessidade de infra. Nos próximos projetos aqui da nova empresa, estaremos investindo pesado nisso, e confiando nossa infraestrutura por lá.

Pra quem ainda não viu nada disso, vou colocar aqui alguns dos serviços que iremos utilizar deles, e o que exatamente são eles.

  • EC2: Elastic Compute Cloud – São as instâncias de máquinas virtualizadas, propriamente ditos, os “servidores” que iremos utilizar.
  • EBS: Elastic Block Storage – Um EBS é attachado (conectado) a uma instância EC2 como um HD que é conectado em sua máquina, é um disco de fato, onde sua instância dá o boot.
  • S3: Simple Storage Service – É um mecanismo de armazenamento de arquivos “nas nuvens”. Um storage que independe de máquina ou servidor. É como se fosse daqueles antigos discos virtuais, mas com uma confiabilidade e durabilidade muito maior, além de controle de ACL (segurança) para cada object (arquivo) ou bucket (pasta) lá dentro.
  • CloudFront: O CloudFront se posiciona junto com o S3, servindo como uma forma de cache para estes arquivos. Ele possui nós espalhados pelo mundo todo, e é ideal para servir arquivos estáticos como CSS, JS, e imagens de maneira rápida, muito rápida.
  • ELB: Elastic Load Balancer – Utilizado para balancear a carga entre suas instâncias na requisição a sua aplicação. Com isso você escala sua aplicação muito facilmente, por exemplo: Quando você tem uma carga de acesso muito grande, basta subir novas instâncias (novas máquinas) no seu parque de máquinas, e disponibilizá-las jutno a este ELB. É possível duplicar ou triplicar a capacidade de sua infraestrutura apenas com alguns cliques, copiando servidores e aumentando a capacidade de seu parque.
  • RDS: Relational Database Service – Trocando em miúdos, é um “mysql elástico”. Ele está na infra da propria Amazon, e consegue se dimensionar dependendo de sua necessidade, são vários tipos (small, large, extra, etc) de instâncias de banco de dados que você pode contratar dele. Para quem desenvolve, e para a aplicação, nada muda, o mesmo driver JDBC do banco, e apenas uma URL JDBC diferenciada.
  • CloudWatch: Um servico de monitoramento que você pode usar para acompanhar a saúde de suas instâncias EC2, dos discos EBS e até do seu banco RDS. Métricas como IO, memória, CPU, etc estão disponíveis e você pode setar alarmes para elas.
  • Route 53: Um servico de DNS, foi o último a ser testado, era uma grande reclamação do pessoal, pois ainda dependiam de um DNS externo, agora já não precisam, podem usar o próprio DNS da Amazon.

Todos os serviços tem uma característica que eu acho muito legal, que é o tal do pay-as-you-go, ou seja, você paga o que utilizar e quanto utilizar. No caso das máquinas (instâncias), paga por quantas horas elas estiverem sendo utilizadas. No caso de um disco EBS, paga por quantos GB estiver alocando, no caso do DNS Route 53, paga por queries em cima do serviço. Ou seja, nada de custos exorbitantes quando não se tem um retorno (acesso) exorbitante. Seu orçamento acompanha o real uso desta infraestrutura.

É muito legal entender como estes serviços funcionam, e mais que isso, como podem trabalhar juntos. Principalmente quando se fala em autoscaling desta arquitetura. É possível definir métricas para o CloudWatch (monitoramento), para que caso sua infraestrutura esteja chegando no limite, ele automaticamente aumente esta infra subindo novas máquinas por exemplo.  Também é possível o contrário, ou seja, baixar máquinas que não estejam sendo necessárias no determinado momento para uma economia de dinheiro.

Cloud Computing tem virado um super buzz ultimamente, tem que ser visto e analisado com cuidado, mas não podemos deixar passar em branco. E com certeza, a Amazon lidera este segmento desde o seu lançamento.

Até mais,

Postado por Lucas Teixeira

December 9th, 2010 at 12:11 pm

Postado em AWS

Com as tags , , , , , , , , , , ,

Um novo ano, um novo momento. Um novo desafio.

com 17 comentários

Imaginei algumas vezes que isso fosse acontecer, mas não sabia se seria tão rápido assim.

Em meio a um momento atribulado da minha vida, terminando de organizar e acertar minha festa de casamento, correndo atrás dos últimos detalhes de uma longa e merecida viagem de lua-de-mel e descanso, várias conversas se desenrolaram nos últimos 3 meses para acertar uma nova oportunidade de trabalho.

Enfim, aconteceu.

Ir para um lugar que ainda nem é um lugar. Construir “alguma coisa” que ainda é abstrata demais em nossas cabeças, correr atrás de detalhes que eu nunca pensei correr… Afinal, sempre foi simples chegar em algum lugar, sentar em uma mesa pronta com seu computador e simplesmente produzir.

É, as coisas ficam diferentes quando a gente chega no local, e nada existe. Quando temos que correr atrás de qual mesa e qual computador estará ali para que alguém sente e produza. É diferente, é muito diferente.

É o momento de se colocar em prova tudo que foi aprendido, de provar para si mesmo o quanto você estava certo umas vezes e também o momento de convencer a si mesmo, que outras vezes estava errado (e outras, muito errado).

Aprender, aprender, aprender. E ao mesmo tempo, ensinar, ensinar e ensinar. No começo, a si mesmo. Mas sempre pensando em preparar um terreno para que alguém possa crescer junto, aprender também, e ensinar mais.

Hoje, 03 de dezembro, chego em São Paulo de volta de uma lua-de-mel inesquecível.

Hoje, 03 de dezembro, também me despeço de São Paulo, grato por estes 4 anos de aprendizado e muitas amizades. Uma nova oportunidade apareceu, um novo momento em minha vida surgiu. Neste dezembro, volto a Londrina, minha cidade natal com uma idéia madura, e muita, mas muita força de vontade de fazer dar certo.

Muito obrigado a todos!

Postado por Lucas Teixeira

December 3rd, 2010 at 11:48 pm

Postado em Minha Vida

Com as tags , , ,

Criando um tipo de dados personalizado no Grails + Hibernate

com 11 comentários

Olá Pessoal,

Estou invadindo o Blog do meu grande amigo Lucas para postar uma solução que encontrei para um problema no mapeamento de dados de uma base de dados existente. Gostaria, em primeiro lugar, de agradecer o espaço cedido pelo Lucas e parabenizá-lo pelo excelente Blog.

Hoje em dia são poucos os projetos que precisamos desenvolver do zero — criar modelagem, tabelas e etc… — por isso é muito comum depararmos com padrões proprietários que muitas vezes não se “encaixam” na ferramenta de desenvolvimento. Não preciso dizer que não é uma tarefa fácil convencer os desenvolvedores a se adequarem aos novos padrões, então, se não pode com eles, una-se a eles.

Bom, vamos direto ao assunto, no meu projeto atual me deparei com um padrão que utiliza ‘S’ e ‘N’ para o mapeamento de propriedades booleanas no banco de dados Oracle. Na pesquisa que realizei encontrei várias pseudo-soluções mas a única que atendeu 100% as necessidades foi a implementação de um tipo de dados do Hibernate.

Abaixo a implementação da classe SNUserType, não tem segredo é apenas a implementação da interface org.hibernate.usertype.UserType. Salve este código no pacote persistence na pasta de src/groovy do seu projeto Grails.

package persistence;

import org.hibernate.*;
import org.hibernate.usertype.*;
import java.sql.*;
import java.util.*;
import java.io.Serializable;

public class SNUserType implements UserType {

   def SQL_TYPES = [Hibernate.YES_NO.sqlType()];

   public int[] sqlTypes() {
      return SQL_TYPES;
   }

   private Class targetClass;

   public void setParameterValues(Properties params) {
      String targetClassName = params.getProperty("targetClass");
      try {
         targetClass = Class.forName(targetClassName);
      } catch (ClassNotFoundException e) {
         throw new HibernateException("Class " + targetClassName + " not found ", e);
      }
   }

   public Class returnedClass() {
      return targetClass;
   }

   public boolean isMutable() {
      return false;
   }

   public Object deepCopy(Object value) {
      return value;
   }

   public Serializable disassemble(Object value) {
      return (Serializable) value;
   }

   public Object assemble(Serializable cached, Object owner) {
      return cached;
   }

   public Object replace(Object original, Object target, Object owner) {
      return original;
   }

   public boolean equals(Object x, Object y) {
      if (x == y)
         return true;
      if (x == null || y == null)
         return false;
      return x.equals(y);
   }

   public int hashCode(Object x) {
      return x.hashCode();
   }

   public Object nullSafeGet(ResultSet rs, String[] names, Object owner) throws SQLException {
      String value = rs.getString(names[0]);
      if ("S".equals(value))
         return true;
      else
         return false;
   }

   public void nullSafeSet(PreparedStatement ps, Object value, int index) throws HibernateException, SQLException {
      if (value == null) {
         ps.setNull(index, Hibernate.YES_NO.sqlType());
      } else {
         if((Boolean)value) {
            ps.setString(index, "S");
         } else {
            ps.setString(index, "N");
         }
      }
   }
}

Pronto, agora tudo que você precisa fazer é utilizar o novo tipo de dados no mapeamento de suas classes de domínio.

class Pessoa {

   String nome
   Boolean ativo

   static mapping = {
      ativo type: "persistence.SNUserType"
   }

}

Com isso, resolvi o problema de integração e concluímos este post.

Um abraço

Volnei

Postado por Volnei Munhoz

July 19th, 2010 at 8:39 am

Instalando o iOS 4 em seu iPhone 3G ou 3Gs

com 19 comentários

Oi pessoal,

Essa semana teve na WWDC o lançamento oficial do iPhone 4, o novo aparelho da apple, e junto com isso, também o lançamento da nova versão do sistema operacional, antigo iPhone OS, que agora é chamado de iOS, na versão 4.

A mudança de nome era fato que estava pra acontecer, já que o sistema já está sendo usado no iPad, e não fazia mais sentido o nome ‘iPhone’ nele.

Bom, o aparelho iPhone 4 veio com vários recursos legais, mas que dependem de hardware, ou seja, só conseguiremos brincar quando tivermos o aparelho em mãos, como filmagem em HD pela câmera, a tela tipo ‘retina’, que segundo o Jobs, foi a maior melhoria no iPhone, já que trouxe *muito* mais precisão e sensibilidade para a tela do iPhone, que já era simplesmente animal. Além disso, também o giroscópio, processador melhor, e outras coisas.

Já outras funcionalidades que não dependem de hardware, apenas de software (no caso, o iOS4), podem ser atualizadas pra quem tem o iPhone 3Gs, (e alguns itens dela no iPhone 3G). Ontem atualizei o meu iPhone 3Gs e estou aproveitando muito. Hoje vou atualizar o iPhone 3G da @kapiologo pra ver efetivamente o que de diferente ele vai ficar.

Recursos legais do iOS4 (alguns já em uso massivo por aqui):

  • Pastas de aplicativos – Chega daquela bagunça nas páginas, agora está enfim, tudo organizado em “Jogos”, “Financeiro”, “Inutil”, “Social”, e outras categorias
  • Multi-task – Enfim o tão esperado multi-task. Agora basta um duplo clique no botão home para que todos os programas que estejam abertos venham a tona, e você pode alterar entre eles sem perder tempo de recarregar ou perder o estado da app atual, muito bom mesmo.
  • Novo cliente de e-mail: Com e-mails agrupados em threads, como o gmail, agora fica mais fácil acompanhar listas de discussão também.
  • Bluetooth para teclados: Ainda não usei, nem sei se serviria para alguma coisa, mas vou fazer o teste hoje a noite com o teclado do iMac.
  • Camera fotográfica: Zoom digital – legal, e até mantém uma qualidade bem aceitável.
  • Personalização com papel de parede no home – particularmente não muda nada pra mim, mas pra quem gosta… :)

Entre outros pontos, também existem os novos softwares como um tal de “Game Center” que não vi explicações muito convincentes em lugar algum, mas me parece ser uma app no estilo do antigo GameSpy (alguém jogava quake?) ou do Steam, para os jogos do iPhone, mas não tenho certeza. Também o iBook (que não está presente ainda, acredito que virá na atualização oficial do iOS4).

Bom, só que, como o mel nem sempre é tão doce, a Apple prometeu a atualização do iOS4 pra quem tem iPhone 3G/3Gs apenas para quando o iPhone4 começar a ser vendido nos EUA, e isso será no dia 21 de junho.

Só que como o pessoal que faz parte do Developer Program da Apple já tem acesso a versão, isso acabou vazando pela internet e pode ser encontrado facilmente, só que com um detalhe: Apenas para usuários — abençoados — que possuem um Mac em casa.

Por quê? Pelo fato que só se consegue usar o ipsw do iOS4 se for atualizado a partir do iTunes 9.2, que ainda está na versão beta.

Então se você é um desses felizardos de ter um iPhone 3G/3Gs e um Mac em casa, pode correr pra instalar a nova versão.

Eu encontrei o link para baixar o beta do iTunes 9.2 pro Mac aqui: http://hotfile.com/dl/47027679/1629379/itunes_9.2_beta.dmg.html
O ipsw do iPhone 3G: http://hotfile.com/dl/47027501/b933959/iPhone12_4.0_8A293_Restore.ipsw.html
O ipsw do iPhone 3GS: http://depositfiles.com/en/files/imajjlubx (links retirados do blog Addictive Tips)

Bom, como fazer? Depois de baixar, é o procedimento normal de atualização. Execute o DMG do iTunes, e faça a instalação (mantenha sua versão do iTunes fechada durante o procedimento). Depois de instalar, abra o iTunes, e ele irá atualizar toda sua Library, esse processo demorou uns 5 minutos em minha library com 50gb aproximadamente.

Depois, é sempre bom dar uma verificada se a versão foi instalada corretamente, então vá no ‘About iTunes’, no menu para checar se está com a 9.2 e pronto.

Conecte seu iPhone no Mac, após o iTunes reconhecê-lo, faça o backup do seu aparelho (botão direito no item iPhone -> backup).

Selecione o iPhone no menu esquerdo e na direita existirá uma opção “UPDATE”, clique nesta opção com a tecla “ALT-OPTION” do Mac pressionada, e uma janela de localização de arquivo será aberta. Basta agora selecionar o firmware ipsw para o modelo do seu aparelho que você baixou, e aguardar a instalação.

No final, o backup será restaurado, e o iPhone pronto para ser usado.

Incrível :)

Postado por Lucas Teixeira

June 10th, 2010 at 4:07 pm

Postado em Mac

Com as tags , , , , , , , , ,

Palestra sobre Grails, meus agradecimentos

com 27 comentários

Como postado antes, ontem falei sobre Grails no SESTINFO – “Grails: Java produtivo e divertido”, evento aberto da UMESP (Universidade Metodista de São Paulo).
O evento foi incrível, com muita gente presente. O último número que recebi é que tinham 98 pessoas na sala assistindo e mais dois professores. Ainda depois do início da palestra cerca de 15 a 20 pessoas chegaram mas não puderam entrar pelo limite de pessoas na sala.

Pra quem não pode estar presente, comecei a apresentação falando de groovy e fazendo um paralelo de uma aplicação Java e a mesma em Groovy, passo-a-passo mostrando os benefícios e vantagens que o groovy pode trazer para o desenvolvimento (o antigo caso do seletor de palavras).
Tentei deixar bem claro o tempo inteiro que o importante é gastarmos tempo *PENSANDO* em resolver o problema e não tentando aprender e entender como a linguagem de programação funciona.

Logo depois, passei por vários pontos do Grails, tentando mostrar como ele trazia os benfícios do Groovy para o desenvolvimento web. Passei pelo GORM (mapeamento objeto-relacional dinâmico), plugins, convenções e vários outros pontos. Pra encerrar a parte teórica, deixei alguns links e sites interessantes para que o pessoal pudesse consultar além de oferecer para os presentes cupons de desconto para a GroovyMag, revista focada em desenvolvimento Groovy e Grails.

Ao fim, apresentei uma aplicação simples, desenvolvida em bem pouco tempo que funcionava como um ‘twitter wall’, ou seja, fazendo buscas automaticamente no twitter de palavras previamente cadastradas, inclusive capturando automaticamente tweets do pessoal que estavam assistindo a palestra e twittando… :)

Bom, como eu já falei, foi muito bom, e além de satisfeito, fiquei muito agradecido, então não posso deixar de agradecer:
Principalmente ao Prof. Mauro Schneider (@muschneider), professor da Universidade que me fez o convite e viabilizou tudo isso, a Universidade não só o meu agradecimento, mas também os meus parabéns pelo ótimo evento. Aos meus amigos que me confirmara, e foram me apoiar e ajudar, Emerson (@erbernardino), Paulo (@paulosuzart), Leonardo (@leonardofigs), Rafael (@rafaelfelini), Luca (@lucabastos) e Jailton (@jailton). Ao Jailton, não só pela presença, mas também pelo apoio divulgando o evento na lista do SOUJava.

Pra quem quiser, a apresentação segue abaixo. E também 2 repositórios que criei no github, um com os fontes do projeto apresentado, e outro com a apresentação em HTML.

Repositório da apresentação: http://github.com/lucastex/slides-grails-umesp
Repositório dos fontes do projeto: http://github.com/lucastex/projeto-grails-umesp

Grails: Java produtivo e divertido

View more presentations from Lucas Teixeira.
Ah, e uma foto do pessoal se arrumando antes da palestra comecar:
palestra
palestra
[]s,

Lucas

Postado por Lucas Teixeira

May 26th, 2010 at 11:20 pm

Postado em Grails

Com as tags , , ,

Palestra aberta de Grails na Universidade Metodista

com 25 comentários

Pra quem estará em São Paulo na próxima terça-feira, eu irei apresentar uma palestra sobre Grails na SESTINFO – Semana de Estudos em Tecnologia da Universidade Metodista de São Paulo.

O título da palestra será – “Grails – Java produtivo e divertido” e a entrada é liberada para quem quiser assistir. Vou falar de Groovy e Grails além da comunidade envolvida em torno dessas tecnologias. E ao final da apresentação, vou fazer algum hands on com o pessoal, desenvolvendo uma aplicação live com todos.

Divulgue em suas listas de discussões, empresa, amigos e inimigos, aproveitem que a entrada é liberada!

Data: 25 de maio
Horário: A partir das 19:00
Local: Universidade Metodista
Endereço: Rua Alfeu Tavares, 149 – Rudge Ramos – São Bernardo do Campo – SP

Mapa: http://maps.google.com.br/maps?f=q&source=s_q&hl=pt-BR&geocode=&q=Rua+Alfeu+Tavares,+149+Rudge+Ramos+-+S%C3%A3o+Bernardo+do+Campo+%E2%80%93+SP&sll=-23.581689,-46.642769&sspn=0.020551,0.046756&ie=UTF8&hq=&hnear=R.+Alfeu+Tavares,+149+-+Rudge+Ramos,+S%C3%A3o+Bernardo+do+Campo+-+S%C3%A3o+Paulo,+09641-000&ll=-23.609924,-46.548729&spn=0.16437,0.37405&z=13&iwloc=A

Depois da palestra, vou divulgar os slides e os fontes do hands on aqui no blog.

Ajude a divulgar, retwittando esta mensagem: http://twitter.com/lucastex/status/14333780136

[Atualizado!]

Vou distribuir uma edição grátis da Groovy Magazine (groovymag.com) para cada pessoa presente no local, compareça!

Postado por Lucas Teixeira

May 19th, 2010 at 11:30 pm

Postado em Grails

Com as tags ,

Usando o textmate como editor de texto padrão do Mac

com um comentário

Uma coisa bem chata que acontece, é que quando tentava abrir arquivos com a extensão txt no Mac, sempre abria o TextEdit, o editor padrão do Mac OS.

É um editor muito simples e pouco funcional, o que me fazia todas as vezes buscar o textmate para editar e trabalhar com os arquivos. Resolvi definir ele como padrão da seguinte forma

  1. Localize algum arquivo com a extensão que quer mudar (no meu caso, .txt)
  2. Vá em propriedades deste arquivo (ou selecione-o e aperte cmd+I)
  3. Na ‘aba’ “Open with”, selecione o programa que deseja usar
  4. Selecione o botão “Change All” para setar como padrão para todos os arquivos deste tipo.

Pronto, agora os arquivos TXT serão abertos diretamente no Textmate!

Postado por Lucas Teixeira

April 20th, 2010 at 7:18 pm

Postado em Mac

Com as tags , ,

Plugin grails para calcular valor de frete dos correios

com 11 comentários

Acabei de lancar um novo plugin grails.

Este calcula o valor do envio de uma encomenda através dos Correios. Contempla SEDEX, SEDEX 10, SEDEX a cobrar e outros. O texto explicativo está bem simples e legal, e está no github junto com os fontes:

http://github.com/lucastex/correios-br

Mesmo os fontes no github, você pode instalar o plugin usando o comando padrão do grails:

grails install-plugin correios-br

Deem uma olhada nos docs do github, vale a pena!

Postado por Lucas Teixeira

April 14th, 2010 at 3:46 pm

Postado em Grails

Com as tags , , , , ,

Get Adobe Flash playerPlugin by wpburn.com wordpress themes