quarta-feira, 8 de agosto de 2012

tip: Atalho para fullscreen no OS X.

A partir do Lion, claro, podemos usar aplicativos em modo fullscreen. Entretanto, não existe um atalho default para entrar e sair desse modo.
Vamos configurar:
  1. System Preferences / Keyboard / Keyboard Shortcuts.
  2. Selecione a opção 'Application Shortcuts'
  3. Clique no símbolo "+".
  4. Faça como na imagem abaixo (fique livre para escolher o seu shortcut)

  1. De novo
Agora pressionando 'control + command + f' eu entro e saio do modo fullscreen. :)

quinta-feira, 31 de maio de 2012

Ivy usando repositório local do Maven.

Aqui vai uma dica rápida pra fazer essa pequena configuração. Fui motivado a fazer isso, pois baixei um projeto open-source que usa o Maven com o famoso pom.xml. Fiz a instalação do projeto (jar) e precisava usar o jar no meu projeto, onde gerenciador de dependências é o Ivy.

No seu arquivo ivysettings.xml deve ser feita a configuração a seguir. A segunda tag `ibiblio` é refente ao mapeamento do repositório local do maven:


    
        
            
            
        
    

segunda-feira, 23 de abril de 2012

tip: Melhorando a navegação entre arquivos pelo Finder.

Meu `os x` é todo personalizado. Eu frequentemente fico incomodado com passos que sempre faço e vejo que poderiam ser executados de forma mais rápida.

OK, aqui vou dar uma pequena dica de usabilidade no Finder.

Meu método de navegação favorito é por coluna. Acho que fica mais tranquilo de mover arquivos entre pastas e também me oferece feedback de onde estou na árvore de navegação. Então, primeira dica:

  • Ativo a navegação por coluna como padrão. -> View / Show View Options / Always open in column view.

Um fato que me incomoda na visão de coluna é que o espaço delas é muito curto. Isso prejudica a leitura de pastas com nomes maiores. Isso pode ser ajustado de algumas formas (do mais lento pro mais rápido):

  1. Colocar o mouse em foco e esperar que ele mostre o nome da pasta em uma caixa amarela. (leeeento)
  2. Clicar com o mouse sobre `||` na parte inferior de cada divisão de coluna e arrastar para deixar maior. (ainda está lento)
  3. Clicar duas vezes sobre `||` na parte inferior de cada divisão de coluna. (melhorou)
  4. Clicar duas vezes sobre `||` na parte inferior de alguma coluna pressionando a tecla `option`. (meu preferido)

A opção 4 é rápida e expande todas as colunas de uma só vez não importando em qual coluna seja clicada. Essa é a dica :)

quarta-feira, 18 de abril de 2012

tip: Usando eclipse em fullscreen no osx 10.7 lion

Não vou falar das vantagens de usar fullscreen. Se quiser saber um pouco mais sobre: http://www.apple.com/br/macosx/whats-new/full-screen.html

Em poucos passos, como adicionar o recurso de fullscreen no seu eclipse quando utilizando o osx 10.7 (lion)

  1. Eclipse aberto -> Menu "Help / Eclipse Marketplace..."
  2. Procure pela palavra "Lion"
  3. Selecione a opção "Full Screen enabler for Eclipse"
  4. Next, Next, Next, Next, Finish. :)

domingo, 15 de abril de 2012

Reflexão sobre foco nos estudos.

Essa semana um grande colega de trabalho (@w_leao_c) mencionou sobre o desenvolvimento de um aplicativo revolucionário (nossas ideias são sempre revolucionárias) usando a mais nova linguagem (hype) que causa a destruição em todas as outras que já existiram. Tá bom, é claro que não foi bem assim... Mas o importante é que chegamos a um estereótipo em que se enquadram diversos desenvolvedores (nós >> estereótipo)¹: 'O profundo conhecedor de superficialidades'.

"A nova ['tecnologia', 'ferramenta', 'linguagem', 'framework', 'padrão', 'SO', 'plugin'][rand(7)]² é muita massa! Eu realmente gostei do novo conceito que ela apresenta e acho que merece dedicação do meu tempo.". Diversos outros fatores podem influenciar na decisão de começar a estudar uma nova tecnologia. As pessoas que você acompanha podem estar falando bem daquilo e você enxerga essas vantagens realmente; A tecnologia provê uma melhor forma de implementação para a ideia sinistra que você teve; Vai te ajudar a economizar tempo; Você acha que vai precisar daquilo em um futuro próximo etc. OK, não há problema nenhum quanto a isso. Isso trás a tona que nós (devs) gostamos de estudar e avançar na nossa carreira.

Mas pode ocorrer que após certo tempo você enxerga que aquilo não é tão legal assim; ou que você não vai precisar daquilo em um futuro breve como você pensava; ou que o tempo que você gasta implementando nem é tão diferente assim do tempo que você fazia com o que conhecia; ou pior, encontra alguma outra tecnologia que por algum motivo você ACHA que é melhor ainda.

Isso é problema? (eu.consultorModeOn()³) Depende. É legal você perceber rapidamente o que não traz tanto proveito e encerrar a dedicação de tempo naquilo. Entretanto, é chato você perceber isso sempre e continuar cometendo o mesmo erro de começar a estudar algo e abandonar depois de pouco tempo. É desperdício. Diariamente temos inúmeras tecnologias legais no mercado saindo do forno quentinhas, quentinhas (agora pense em um pão de queijo). É novo! Da vontade de aprender (comer). Mas depois de pouco tempo, talvez não esteja tão saboroso assim. Então o que fazemos? Largamos. Deixamos de lado facilmente.

OK, tem seus lados bons e ruins... é uma questão de foco da pessoa. Você prefere estar por dentro de tudo que rola no mundo da tecnologia ou prefere gerar valor parar a sociedade ao seu redor? Gosto muito de desenvolver software, mas primeiramente penso em fornecer algo útil. Não tem jeito, software é um meio. Desconheço um negócio onde ele se encontra como fim.

Um momento natural em conversas entre devs é comentar sobre as tecnologias existentes no mercado pra solucionar o n^2 problemas existentes que surgem nessa mesma conversa. O profundo conhecedor de superficialidades está lá. Sabe n^3 tecnologias que poderiam resolver o problema (ele já fez até um HelloWorld com todas elas), agora usar aquelas tecnologias a seu favor para resolver esses problemas é outra história.

Eu particularmente vinha apanhando bastante tentando agarrar o mundo com as próprias mãos. No entanto, tenho refletido sobre isso há algum tempo. Aprendi um pouco a pisar o pé no freio com todas essas informações e ser mais produtivo. Evitar o desperdício de tempo precioso.

Encerro aqui. :)


¹ append bash
² array ruby
³ method call java

sexta-feira, 2 de setembro de 2011

Coloque suas idéias em prática com vraptor 3 rodando no GAE

Olá! :D

Afim de colocar idéias em prática com os conhecimentos de programação que tenho e querendo um baixo custo para isso (tempo, por enquanto), descobri um framework java web open source, o vraptor.

Comecei com ele como quase todos (creio), peguei a apostila gratuita da caelum - que é a empresa responsável pela criação e manutenção do vraptor - e fui lendo-a e fazendo os exercícios. Em um final de semana a apostila estava finalizada e na cabeça logo veio: "Sim, era essa facilidade que eu queria". E já que o meu pensamento é em baixo custo, não perder tempo é essencial, afinal, tempo é dinheiro.

Vou enumerar aqui algumas vantagens que eu vi ao utilizar o vraptor.

Primeiro, a preocupação que eu tenho que ter com o framework é baixíssima. Com a premissa de 'Convention over Configuration' (CoC), o vraptor consegue manter meu tempo de codificação em cima do problema que eu quero solucionar (o fim), e acaba com a preocupação de difíceis configurações e maiores problemas com a tecnologia (o meio). Poucas vezes eu tenho que alterar alguma convenção do vraptor. Gosto do nome das controllers, de jsps, dos padrões de URIs, etc.

Segundo, é um framework action-based. Me dá liberdade de escolhas sobre frameworks javascript (JQuery, ExtJS, YUI, etc.), template-engines (jsp, velocity, etc.). Eu gosto do modelo action-based também por me dar visualização daquilo que eu programei. Olho o código fonte no browser e vejo aquilo que eu escrevi e nada mais. A detecção dos erros também é algo mais simples.

Terceiro, o conteúdo sobre vraptor na internet é o que não falta (em português ainda!). Temos a documentação no site oficial com guias bem explicativos, sem linguagem formal chata de ler e sem enrolações. Tem o fórum do GUJ, que é o maior fórum de java em lingua portuguesa. Lá você encontra grande parte dos problemas pelos quais você ainda vai passar. E esses problemas são respondidos na maioria das vezes pelos próprios commiters do vraptor (principalmente @lucascs e garcia-jj), que te respondem sempre educadamente não importando o nível da sua dúvida. Eu mesmo já postei umas dúvidas ridículas lá.

Quarto, vraptor-scaffold! Baseado na idéia do rails de iniciar novos projetos e montar os 'andaimes' da nossa aplicação, o @rodolfoliviero criou essa gem em ruby. Com o vraptor-scaffold, o trabalho de um CRUD mecânico é extinto. Classes de teste são geradas, o código de view gerado é muito clean. Basta criar manualmente os relacionamentos do seus models, ajustar views e se preocupar com a parte complexa do seu sistema :).

Essas são algumas das vantagens que me vem a cabeça quando falo do vraptor.

Levando em consideração ainda o baixo custo, eu não precisava apenas de um framework web que não consumisse todo o tempo que tenho disponível. Eu precisava de um servidor barato para colocar minhas idéias em produção. Eu já tinha conhecimento da existência do Google App Engine (GAE) desde que foi lançado. Mas tinha feito apenas alguns pequenos testes com servlets e só. A Google te fornece um ótimo plugin para o eclipse onde você pode começar a desenvolver rapidamente sua aplicação e fazer seu primeiro deploy em segundos com sua conta google.

Eis que então eu vejo que há um blank project do vraptor pronto para ser deployado no GAE.

Agora era só me adequar ao formato de se manter meus dados no BigTable (Datastore do GAE) e pronto. Eu conseguiria colocar aplicações java web "de graça" no ar e melhor, sem dores de cabeça no desenvolvimento :).

Quero dizer agora que ainda não tive uma super-idéia que está dando certo e eu estou conseguindo ganhar dinheiro com isso. Porém eu já tenho um ambiente pronto para a matança e vou atrás de um dia ainda conseguir isso.

Esse post serviu para passar diversas referências (links) para começar a desenvolver. Nos próximos eu pretendo aplicar a prática aqui. Vou refazer passos e relembrar problemas pelos qual eu já passei. Até! o/

quinta-feira, 25 de agosto de 2011

SyntaxHighlighter no Blogger.

Olá galera, estou começando um blog com objetivo que está escrito subtitulo deste mesmo.
Estava querendo fazer isso já há um tempinho porém sempre enrolava. Vou começar logo então.
Primeiro post vou falar sobre o SyntaxHighlighter, que é uma ferramenta em javascript para adicionar o syntax highlight nos trechos de código postados em um website/blog.

Pode ser baixado em SyntaxHighlighter.
A versão que eu estou utilizando nesse post é 3.0.83.
Feito o download, segue a estrutura de diretórios:


Iremos obrigatoriamente usar o arquivo 'src/shCore.js' e 'styles/shCore.css'.
Depois podemos escolher outros arquivos para as determinadas linguagens em que usaremos o syntax highlight.
Para usar esses arquivos, eu utilizei o sites.google.com para disponibiliza-los na web. Acredito que possa ser utilizado o DropBox também.
Após feito o upload dos arquivos que você quer utilizar, deve-se seguir os passos:

1. entrar na aba 'Modelo' do painel de administração do blogger.
2. editar hmtl
3. ao fim da tag <head> (ctrl+f </head) colar o seguinte codigo.
4. salvar as alterações.

<link href="http://ondeestouhospedado/shCore.css" rel="stylesheet" type="text/css" />
<link href="http://ondeestouhospedado/shThemeDefault.css" rel="stylesheet" type="text/css" />
<script src="http://ondeestouhospedado/shCore.js" type="text/javascript"></script>
<script src="http://ondeestouhospedado/shBrushCss.js" type="text/javascript"></script>
<script src="http://ondeestouhospedado/shBrushJava.js" type="text/javascript"></script>
<script src="http://ondeestouhospedado/shBrushJScript.js" type="text/javascript"></script>
<script src="http://ondeestouhospedado/shBrushRuby.js" type="text/javascript"></script>
<script src="http://ondeestouhospedado/shBrushXml.js" type="text/javascript"></script>
<script type="text/javascript"> 
   SyntaxHighlighter.config.bloggerMode = true;
   SyntaxHighlighter.all()
</script>

Depois faça um teste com uma publicação no blog para confirmar se deu certo.
É só usar um bloco de código em volta da tag <pre> e informar a linguagem no attributo 'class'.
Ex:
<pre class="brush: java" >
public static void main(String args[]) {
   System.out.println("Hello, Arthur!");
}
</pre>

Resultado:
public static void main(String args[]) {
   System.out.println("Hello, Arthur!");
}

Eu particularmente escolhi as linguagens css, java, js, ruby e xml (para html também). Porém diversos outros arquivos para aplicar o sh em outras linguagens são disponibilizados.

Então é isso aí.