Aug 04

Eu já estava enjoado do problema de transparência do flash 9 para o Linux. Saí em busca de uma solução genérica e funcional. Acabei me surpreendendo quando vi que já liberaram versões beta do flash 10.

Segundo alguns colegas aqui do escritório da Conrad Caine, o flash player 10 virá com 3D nativo entre outras features. Acabei de instalar e fiquei satisfeito com o resultado. Problemas de transparência e problemas de disposição (As animações em flash ignoravam o z-index, ficavam sempre à frente de tudo) foram resolvidos.

Clique aqui para baixar a versão do flash player 10 para Linux, Mac, Windows e etc…

May 07

Emacs

Desde ontem eu passei o dia procurando solução pro problema que surgiu após uma atualização do Ubuntu. Simplesmente parou de funcionar qualquer tipo de acentuação e caracter especial. Imaginem eu programando sem poder utilizar aspas duplas e aspas simples? Ainda bem que eu estava programando em Rails. A solução é muito simples, embora tenha consumido horas do meu dia. Porém, aqui vai ficar documentado para que outras pessoas não passem o que eu passei. O problema consiste em tentar utilizar por exemplo, acento circunflexo, aparece:

<dead-acute> is undefined

Quanto tentava utilizar aspas duplas, retornava o seguinte:

<S-dead-diaeresis> is undefined

A solução, que eu encontrei aqui, é simples. Remova ou renomeie os arquivos da pasta ~/.xinput.d/ e o problema estará solucionado após você reiniciar o seu computador. Aqui não teve nenhuma secuela notada a partir da remoção deste arquivo. O layout de teclado (Estilo americano com teclas acentuáveis) funciona perfeitamente.
Apr 30

Ubuntu Hardy Heron 8.04

Estou revoltado com o uppgrade do Ubuntu. Eu tenho em meu notebook de trabalho o Ubuntu Gutsy Gibbon (7.10) instalado e ontem me veio a oferta de instalar a atualização quentinha do Ubuntu Hardy Heron (8.04 LTS). Resolvi baixar os mais de 900 MB pois acreditei que valia a pena, visto que eu já havia instalado o 8.04 beta no meu PC e não encontrei problemas. Muito pelo contrário, desta vez não precisei instalar o Driver proprietário da ATI no braço e compilar o Kernel para a aceleração 3D funcionar corretamente! Após a finalização do download pus para prosseguir o upgrade e segui trabalhando, quando de repente me surge uma janela na frente que simplesmente travou e não voltou mais ao normal, ficou eternamente cinza... Resolvi reiniciar para ver se voltava ao normal e para a minha surpresa ele não entrava mais no X. Logava e tal, mas a tela ficava em branco. Após várias pesquisas nos fórums do Ubuntu e uma tentativa frustrada de ajuda no canal de IRC #ubuntu-br, desisti. Hoje enquanto fazia backups dos meus dados para formatar eu li no forum do ubuntu uma dica que parecia que resolveria meu problema. Subi como root e tentei:

aptitude update && aptitude dist-upgrade

Até adiantou alguma coisa, comecei a ter oficialmente a distro 8.04 em meu notebook, porém, após o login permanecia a situação em que nada aparecia. Estou agora a 18% de finalizar a instalação "do zero" do Ubuntu Hardy Heron 8.04, e desta vez com a home em outra partição... vivendo e aprendendo! Mesmo assim, o problema que passei é pouco perto do que já passei enquanto usuário Windows. São dois dias perdidos, mas que valerão a pena para entender uma coisa: "Sempre fazer backup de tudo antes de fazer atualizações e upgrades críticos". Ao que me parece, este problema não ocorreu somente comigo... o Eustáquio Rangel passou por um problema semelhante, como vocês podem acompanhar por aqui.
Apr 21

Firebug

Se você é como eu, não desenvolve sem utilizar o Firebug. Pode sentir-se limitado ao migrar para a versão beta do Firefox 3. Há dias venho postergando minha mudança para o firefox 3 em meu Ubuntu Gutsy Gibbon (7.10). Porém, intalei o Ubuntu Hardy Heron (8.04) no meu pc de casa. Ele já vem com o Firefox 3 beta, porém, agora ia trabalhar em um projeto nele e me deparei com a seguinte situação: fui direto à página de add-ons da Mozilla e busquei pelo firebug e tentei instalar, não deu, pois a versão atual não é suportada pelo Firefox 3 Beta.

A solução

É simples, vá ao site do Firebug e baixe a versão 1.1 beta. A versão 1.05 é a versão do site de Add-ons da Mozilla, portanto, ela não funciona na versão 3 do Firefox. Se você migrou da versão 2 para a três provavelmente pode resolver os seus problemas agora!
Mar 06
Vida de quem trabalha com tecnologia é assim, hoje você aprende uma coisa que amanhã não será mais necessário, e assim consecutivamente... Encontro-me em um estágio de aprendizado constante, ainda mais quando estamos promovendo na equipe uma alteração drástica na infra-estrutura. Em reunião decidimos no início do ano que iríamos utilizar trac's em ruby para facilitar a customização e a integração com nosso futuro site, clientes, etc... É um passo muito grande para uma equipe que arrecém está se estabelecendo, porém, creio que nos tornará mais produtivos e com certeza diferenciais no mercado. Outro fator importante, é a mudança no controlador de versão. Muitas vezes ficamos empatados em tickets por depender de conexão (pode acontecer de sua internet estar fora do ar) ou ainda por problemas como este. Por isso decidimos passar a usar o Git. Ainda não etávamos utilizando Git, por estarmos em projetos antigos, mas esta semana começamos um projeto e decidimos (apenas eu e o Everton) usar git como repositório local juntamente com o git-svn para commitar ao servidor (o Retrospectiva ainda não tem suporte a Git, mas AINDA...). Eu já sei os comandos básicos do Git e do Git-SVN, mas confesso que o que me incomodou foi o Vim como editor padrão. Sou usuário linux, mas não me sinto nem um pouco à vontade para usar este editor, eu uso sempre o Nano para tarefas no console e o Emacs para programar. Então hoje a tarefa do dia foi aprender a modificar o editor que eu irei utilizar para fazer os comentários do commit. No subversion é muito fácil alterar, mas no Git eu encontrei muitas informações confusas acerca disto, somente algumas horas depois achei a solução fuçando no git da minha máquina mesmo. Nisso, o dia já estava acabando e eu notei que mesmo perdendo um dia, essa coisa boba de procurar como alterar o editor padrão do Git me mostrou outros recursos que eu posso utilizar no Git e Git-SVN. Para alterar o editor padrão do Git no Ubuntu, é muito simples: 1. Abra o arquivo com o seu editor favorito:
sudo emacs /usr/bin/git-commit
2. Vá até a linha 582 e altere o editor, no meu caso eu alterei do vi para o emacs, mas você pode alterar para o nano para editar seus commits no terminal:
${VISUAL:-${EDITOR:-emacs}} "$GIT_DIR/COMMIT_EDITMSG"
Feb 11

Traffic Sign

Hoje é um dia atípico, mas ele já se repetiu algumas vezes. Atualmente, tenho trabalhado com uma equipe de desenvolvedores e os projetos são mantidos em track, via Subversion. Há uns dois meses o Everton J. Carpes, propôs que a equipe mudasse sua estrutura, entre essas mudanças poderíamos começar a usar o Git, mas como ainda estamos em projetos que vinham do ano passado, não iniciamos as modificações, pelo menos na parte de do controlador de versão. As outras mudanças como a configuração do LDAP e a utilização do capistrano para gerenciar os sistemas dos clientes já está em andamento. Em termos de produtividade, isto é muito bom para a equipe e para os clientes. Enquanto as mudanças não ocorrem, os problemas persistem. Hoje, ao iniciar o dia de trabalho, fiz o update básico para procurar atualizações dos plugins que a gente utiliza via SVN... svn update, atualizando... enquanto atualizava o plugin validates_as_cpf do rails, ocorreu um erro de conexão, até aí tudo bem, é comum cair a conexão, mas para minha surpresa, todos os plugins que utilizamos referentes ao servidor ossystems.com.br estavam dando erro 503:
svn: Requisição PROPFIND falhou em '/svn/plugonrails/plugins/validates_as_email' svn: PROPFIND de '/svn/plugonrails/plugins/validates_as_email': 503 Service Not Available (https://projetos.ossystems.com.br)
E durante toda a tarde fiquei preso a uma tarefa que dependia do validates_as_cpf por não poder voltar à versão anterior. Esse é o fardo que se carrega ao usar um controlador de versão que não armazena um repositório local dos arquivos que você necessita. Se eu estivesse utilizando o Git, isso com certeza não estaria ocorrendo. Por isso, não usarei mais o svn no desenvolvimento dos projetos, pois algumas vezes o meu dia de trabalho pode ir por água abaixo, como foi hoje. Esse, portanto, é um dos problemas comuns que se encontra quando utilizamos plugins direto do repositório ou qualquer tipo de webservice. Dependemos da disposição do servidor de terceiros, o que nem sempre é possível, pois há momentos em que um servidor pode estar em manutenção. O Git resolve este problema, pois ele cria um repositório dentro de sua máquina, e enquanto você trabalha, tem como fazer commits dentro da máquina, e só ao final voce faz um commit utilizando o git-svn, que envia todos os commits da sua máquina para o servidor. Isto reduz muito a perda de produtividade devido à dependência de conectividade com a internet e disposição dos servidores. Além do Everton, outros desenvolvedores Rails entraram na onda de utilizar o Git por ser o melhor a fazer, como o caso do Fábio Akita que tem feito propaganda massiva para que utilizemos o Git, ou até mesmo o Git-svn, que é uma forma interessante de utilizar o Git integrado ao subversion.
Feb 08
Antes de mais nada, o ambiente de desenvolvimento ideal é no momento, porque daqui a um mês posso mudar de opinião, mas o importante é que com as atuais modificações significaram muito para a minha produção, comecei a produzir com mais prazer e com mais agilidade, devido as novas modificações que eu fiz. Atualmente tenho falado bastante sobre a minha mudança radical para o emacs. Mas o emacs puro não tem nada que modifique a sua produtividade em ruby e rails como um TextMate ou um Aptana RadRails, pois ele não tem os recursos específicos da linguagem e do framework, como console, MVC e autocomplete de código e marcação, ele só tem a coloração do código e de seus recursos próprios. Foi então que neste fim de semana passado eu resolvi procurar configurações ideais para o emacs direcionado especificamente ao ruby e rails, bem como código xhtml + erb e css. Na busca, encontrei este screencast fantástico em que o cara mostra o emacs funcionando como os famosos editores de ruby que já comentei anteriormente. Neste screencast dizia por cima os recursos que ele usou no screencast, foi aí que eu fui buscar de novo, e caí na wiki do rails, em um texto que mostra como deixar o emacs funcionando pra desenvolver em rails com alguns recursos do textmate, como o autocomplete de código, marcação erb e xhtml. Além desses recursos, existe uma integração do emacs com toda a estrutura do rails, como a possibilidade de trabalhar com o console do rails e o irb no emacs, iniciar o server em mongrel ou WEBrick, geradores do rails, entre outros, como é possível ver neste screencast linkado nesta wiki. Vale lembrar que embora este usuário que está demonstrando utilize muito o mouse, o rails-mode pro emacs como os outros recursos que eu instalei, tem mapeamento de teclado e não é necessário se assustar com isto. O próprio emacs code browser, ou ECB, tem mapeamento de teclado. Meu ambiente de desenvolvimento após as modificações:

Trabalhando com console, model, view e controller (MVC) Trabalhando com o emacs code browser (ECB)

* O importante é saber que o visual é você que faz. Eu utilzei neste caso o tema Gray30, presente no Color Themes do emacs e setei a fonte .emacs. Abaixo o meu arquivo de configuração do emacs.
;Set Font
(set-default-font "lucidasanstypewriter-10")

;Set Theme
(require 'color-theme)
(color-theme-gray30)

(mouse-wheel-mode)
(global-font-lock-mode 1)
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
(require 'php-mode)
'(column-number-mode t)
'(cua-mode t nil (cua-base))
'(ecb-options-version "2.32")
'(message-log-max 150)
'(rails-ws:default-server-type "webrick")
;; Habilitar scroll do mouse
'(scroll-bar-mode (quote right))
'(text-mode-hook (quote (text-mode-hook-identify)))
'(transient-mark-mode t))
'(mouse-wheel-mode t)

(defun up-slightly ()
(interactive)
(scroll-up 5)
)
(defun down-slightly ()
(interactive)
(scroll-down 5)
)

;; Relaciona a rolagem da rodinha com
;; as 2 funções acima

(global-set-key [mouse-4] 'down-slightly)
(global-set-key [mouse-5] 'up-slightly)

;; Show column-number in the mode line
(column-number-mode 1)

;; Line highlight
;; (global-hl-line-mode 1)

(custom-set-faces

;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)

;carrega emacs code browser
(add-to-list 'load-path
"/usr/share/emacs22/site-lisp/ecb/")

;carrega css-mode
setq load-path (cons "~/.emacs.d/css-mode" load-path))
(require 'css-mode)
(autoload 'css-mode "css-mode")
(setq auto-mode-alist
(cons '("\\.css\\'" . css-mode) auto-mode-alist))

;carrega rails-mode
(setq load-path (cons "~/.emacs.d/rails" load-path))
(require 'rails)

;carrega ri-ruby
(setq ri-ruby-script (expand-file-name "~/emacs.d/ri/ri-emacs.rb"))
(autoload 'ri "ri-ruby.el" nil t)

;mmm-mode, suporte para marcacoes erb no html
(setq load-path (cons "~/.emacs.d/mmm-mode" load-path))
(require 'mmm-mode)
(require 'mmm-auto)
(setq mmm-global-mode 'maybe)
(setq mmm-submode-decoration-level 2)
(set-face-background 'mmm-output-submode-face  "Gray25")
(set-face-background 'mmm-code-submode-face    "MediumSlateBlue")
(set-face-background 'mmm-comment-submode-face "DarkOliveGreen")
(mmm-add-classes
  '((erb-code
  :submode ruby-mode
  :match-face (("<%#" . mmm-comment-submode-face)
  ("<%=" . mmm-output-submode-face)
  ("<%"  . mmm-code-submode-face))
  :front "<%[#=]?"
  :back "-?%>"
  :insert ((?% erb-code       nil @ "<%"  @ " " _ " " @ "%>" @)
  (?# erb-comment    nil @ "<%#" @ " " _ " " @ "%>" @)
  (?= erb-expression nil @ "<%=" @ " " _ " " @ "%>" @))
  )))
  (add-hook 'html-mode-hook
  (lambda ()
  (setq mmm-classes '(erb-code))
  (mmm-mode-on)))
  (add-to-list 'auto-mode-alist '("\\.rhtml$" . html-mode))

;Snippet Textmate like, deixar o emacs com os recursos do textmate
  (require 'snippet)
Feb 03
Há dias eu tenho buscado uma solução para exportar códigos ou trechos deles para HTML. O objetivo é mostrar posteriormente dicas com o código colorido, para melhor identificar os elementos. Existem alguns javascripts que transformam o código através de varredura por uma marcação com determinada classe, porém este é extremamente lento. Foi então que vi que com editores como o Vim, conforme mostra o Eustáquio Rangel em seu blog. Desde então fiquei entusiasmado para utilizar o mesmo recurso no emacs, que com certeza não iria perder para o vim neste recurso. Descobri que existe uma função lisp do emacs que faz isto, é a htmlize, que permite exportar um arquivo inteiro, um trecho do arquivo, vários arquivos entre outros. Para utilizar este recurso é simples: M-x htmlize (ALT + X e digite htmlize) aperte tab para ver todos os recursos disponíveis e selecione o recurso que deseja. Um exemplo de trecho código de um controller do Ruby on Rails exportado com o tema Gray30 do emacs:
  # PUT /comments/1
  # PUT /comments/1.xml
  def update
    @comment = Comment.find(params[:id])

    respond_to do |format|
      if @comment.update_attributes(params[:comment])
        flash[:notice] = 'Comment was successfully updated.'
        format.html { redirect_to comment_url(@comment) }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @comment.errors.to_xml }
      end
    end
  end
Esse código acima é um trecho de um controller gerado com o scaffold resource. Em breve vou dar dicas que estava guardando há dias para publicar aqui.
Jan 26
Há dias estava num dilema. Eu queria parar de trabalhar com o Aptana Radrails, pois ele me deixava muito dependente do mouse, e em termos de produtividade isto não é nada bom. Quando comecei a trabalhar com Rails, eu vi o Everton utilizando um editor simples, mas que cumpria o principal papel de um editor de texto: colorir e identar o código. Este editor se chama emacs. O emacs é um editor bem estabelecido, como vocês podem ler no link acima, ele tem nada mais nada menos do que 32 anos. Embora tenha uma interface extremamente simples, o editor é um dos mais poderosos editores que eu já vi. Um dos recursos mais impressionantes é que posso identar uma linha (apertando TAB) de qualquer lugar da linha, não precisa ser necessáriamente do início. Além disso, ele permite que eu abra N frames na mesma janela, como vocês podem ver abaixo:

emacs no Ubuntu

Pra quem faz download do emacs pelo ubuntu, via apt-get, nota que ele não colore o código, isto não é bug, é falta de configuração. Então faça o seguinte:
  1. Se ainda não fez, instale o emacs, no terminal digite: sudo apt-get install emacs;
  2. Após instalado, rode o emacs abrindo as próprias configurações dele: emacs /home/seu_login/.emacs & (o & é para liberar o terminal);
  3. Procure no arquivo a seguinte linha: (global-font-lock-mode 0) e troque o valor 0 (zero) para 1 (um);
  4. Salve o arquivo: C-x, C-s (ctrl + x e ctrl + s);
  5. Abra um arquivo em html, .rhtml ou .rb para ver se está ok.
Quer aprender alguns comandos básicos do emacs? Que tal a Wiki do emacs?