Git: Revertendo um arquivo modificado

October 24th, 2009 rcmachado No comments

No SVN, para reverter um arquivo que foi modificado para a versão corrente do checkout, basta executar:

$ svn revert ARQUIVO

Uma desvantagem é que o comando não restaura diretórios apagados, já que não acessa o repositório.

Já no Git você pode utilizar o comando reset. Segundo o manual do git-reset, para descartar as modificações no arquivo basta passar para a opção –hard o commit para o qual você quer reverter. Supondo que você tenha um checkout do HEAD e queira descartar todas as modificações que fez nos arquivos, basta executar:

$ git reset –hard HEAD

(Utilize dois traços para a opção hard)

Isso no entanto não vai descartar os arquivos que foram criados mas não foram adicionados ao branch. Para isso, utilize o comando clean:

$ git clean DIRETORIO

Post to Twitter Post to Facebook

Categories: Server-related Tags: , ,

VIM syntax highlight para HTML 5

September 15th, 2009 rcmachado No comments

Cada vez mais escutamos falar do HTML5. A atualização do HTML 4.01 traz diversos novos elementos que prometem deixar as páginas mais semânticas (header, article, section) e facilitar o desenvolvimento (video, canvas).

Para quem ainda não se informou sobre, uma busca no Google é um bom começo. Em seguida, você pode verificar como anda o progresso no Working Draft (ele ainda está em desenvolvimento, então algumas coisas podem mudar) ou pela lista de diferenças entre o HTML 4 e o HTML 5.

O Vim (Vi IMproved) é um editor de textos para linha de comando estremamente poderoso, com syntax highlight para diversas linguagens de programação (e até arquivos de configuração) e extensível com o uso de plugins, o que o torna melhor do que muitas IDEs do mercado (segundo os usuários do vim :) ).

Quem edita seus arquivos HTML no Vim e já quer utilizar as novas tags e atributos do HTML 5 pode baixar o arquivo html.vim. Para instalá-lo, salve-o na pasta ~/.vim/syntax (ou a crie, se não existir) com o nome de html.vim.

Esse arquivo é uma modificação não-oficial do arquivo que acompanha o Ubuntu 9.04. Foram incluídos os novos elementos e atributos e retirados os que não devem ser utilizados pelos desenvovedores, de acordo com a página do W3C.

Referências:

Post to Twitter Post to Facebook

Categories: Programação, Web Tags: ,

Removendo espaços em branco com o Vim

August 21st, 2009 rcmachado No comments

Muitos editores e IDEs tem a opção de remover os espaços em branco no fim de cada linha ao salvar o arquivo. Com o Vim não é diferente: basta um comando.

:%s/\s\+$//g

Nessa expressão regular estamos dizendo para substituir (s/) todos os espaços e tabulações (\s\+) por vazio (//), aplicando em todo o buffer (g). Como não é muito prático ficar digitando isso toda hora, vamos mapear para o comando “Trim”:

:command Trim %s/\s\+$//g

Para facilitar ainda mais, podemos mandar o Vim executar esse comando sempre antes de salvar o buffer (evento BufWriteCmd):

:autocmd BufWriteCmd * Trim

O ‘*’ diz a quais arquivos essa regra deve ser aplicada. Para aplicar somente a arquivos PHP, basta escrever:

:autocmd BufWriteCmd *.php Trim

Coloque esses comandos no arquivo ~/.vimrc (retirnado o ‘:’ no início da linha) e pronto. Simples, não?

Post to Twitter Post to Facebook

Categories: Uncategorized Tags:

Configurando mod_rewrite no VirtualHost do Apache

August 16th, 2009 rcmachado No comments

Os frameworks MVC e diversos sistemas (como o próprio WordPress) utilizam URLs amigáveis – algo como http://example.org/configurando-sites.html ao invés de http://example.org/post.php?id=99. Isso requer que o servidor web seja configurado corretamente. No Apache isso pode ser conseguido com o auxílio do mod_rewrite, que permite mapear URLs utilizando expressões regulares para diferentes arquivos. A maioria provê o seguinte exemplo (ou uma variação dele):

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php [QSA,L]

Esse código especifica que se o arquivo requisitado (%{REQUEST_FILENAME}) não for um diretório (!-d) e não for um arquivo (!-f), a regra seguinte deve ser aplicada (que no caso diz para passar a execução para o script index.php).

Podemos colocar esse código .htaccess, o que traz uma desvantagem: é preciso que o apache seja configurado para procurar arquivos .htaccess em cada diretório da aplicação, o que reduz o desempenho. O ideal seria colocá-lo diretamente na definição do VirtualHost. Para isso, precisamos fazer um pequeno ajuste. Onde está:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

Substitua por:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f

Isso é necessário porque o apache – por algum motivo que desconheço – não mapeia a caminho completo para a variável REQUEST_FILENAME (embora a documentação informe o contrário). Colocando o %{DOCUMENT_ROOT} antes, a condição se torna válida.

Post to Twitter Post to Facebook

Customização de URLs em projetos MVC – Fazendo o caminho inverso

July 24th, 2009 rcmachado No comments

Todo framework MVC sério possui um mecanismo de customização de URLs (as vezes chamado de routing). Esse mecanismo permite que tenhamos URLs amigáveis – transformando /carros/ver/35 em /maserati-3200gt.html. Normalmente, isso é implementado utilizando expressões regulares que são mapeadas diretamente para a URL no formato controller/action/parâmetros, o que torna muito simples de ser implementado e configurado. Com as URLs do projeto configuradas, ao desenvolver as páginas temos de optar por colocar os links na forma controller/action/parâmetros (o que não é uma boa idéia, já que estaríamos ignorando a customização de URLs) ou na sua forma customizada (o que claramente é melhor).

Só existe um problema com essa abordagem: vamos imaginar que fosse necessário fazer um ajuste nas URLs no decorrer do desenvolvimento – ou até mesmo imediatamente antes de publicar o projeto. Por menor que seja o ajuste, teríamos de alterar todos os links do projeto (com sorte poderíamos utilizar um script em sed para convertê-las automaticamente, mas ainda sim seria preciso verificar depois se tudo está OK). Foi exatamente esse o problema que enfrentei em um dos projetos que trabalhei recentemente.

Read more…

Post to Twitter Post to Facebook

Categories: Web Tags: , , , , ,

Gerar documentação do Django no Ubuntu

July 15th, 2009 rcmachado No comments

Comecei a brincar com o Django, “o” framework Python quando se trata de web. E como nem sempre estou com conexão disponível, resolvi ter também uma cópia local da documentação, para que eu possa consultá-la sempre que for preciso.

Pois bem, na página sobre a documentação do Django, vejo que os arquivos que preciso estão no diretório docs dentro da pasta criada ao descompactar o .tar.gz do mesmo. Para criar a documentação no formato HTML, basta instalar as ferramentas certas e fazer um

make html

no diretório.

Read more…

Post to Twitter Post to Facebook

Categories: Python, Web Tags: , , , , ,

Instalando o driver mysql para ruby

July 12th, 2009 rcmachado No comments

No post anterior eu expliquei como instalar o Ruby On Rails no Ubuntu, sem utilizar os pacotes oficiais. Pois bem, ao tentar instalar o driver para MySQL do Ruby, me deparei com o seguinte problema:

$ sudo gem19 install mysql
Building native extensions.  This could take a while…
ERROR:  Error installing mysql:
ERROR: Failed to build gem native extension.

Mas o que foi que aconteceu?
Read more…

Post to Twitter Post to Facebook

Categories: Programação, Server-related Tags:

Instalando e configurando Ruby On Rails no Linux

July 12th, 2009 rcmachado No comments

Juntamente com a linguagem Ruby, o framework Rails tem ganhado grande destaque ultimamente, principalmente pela rapidez e facilidade que proporciona para desenvolver um site ou uma webapp. Mesmo com a popularidade da dupla Ruby + Rails, muita gente ainda repete a frase “Rails não escala” (normalmente desenvolvedores “velhos” – não por causa da idade, mas por causa das ideias – também conhecidos como dinossauros). O foco desse post não é debater se Ruby on Rails escala ou não, e sim mostrar como em poucos minutos você pode configurar o seu ambiente Ruby + Rails.

Depois dos avisos, vamos ao que interessa.

Read more…

Post to Twitter Post to Facebook

Categories: Programação Tags: ,

iPhone/iTunes no Ubuntu com VirtualBox

March 23rd, 2009 rcmachado 2 comments

Update: Nas versões mais novas do VirtualBox não deve ser necessário realizar o procedimento de recompilar o módulo do kernel. No entanto, você ainda precisará utilizar a versão closed source.

Depois da empolgação inicial com o iPhone, veio a realidade: qualquer sincronização de dados entre o PC e o iPhone só pode ser feita pelo iTunes, incluindo aí minhas músicas. Isso não chega a ser um problema para usuários de Mac e Windows. Mas para quem (só) utiliza o Linux, isso se torna uma dor de cabeça.

Existem algumas alternativas a esse problema. A que eu escolhi foi utilizar uma imagem de Windows XP rodando no VirtualBox com o iTunes instalado. Simples e eficiente, desde que você faça alguns ajustes.

O motivo de utilizar o iTunes rodando no VirtualBox e não no Wine foi para garantir o mínimo de problemas durante o uso. Como tanto o iPhone quanto o iTunes são “caixas-pretas”, melhor não arriscar – ainda mais quando se trata de um dispositivo de R$ 1.600,00.

Read more…

Post to Twitter Post to Facebook

Sansa c250 no Ubuntu

March 14th, 2008 rcmachado 1 comment

Resolvi criar coragem e substituir o firmware original do meu Sandisk Sansa c250 pelo do projeto Rockbox. Para quem não conhece, o Rockbox é um firmware open source para diversos MP3 players (existe uma versão até para alguns modelos de iPod).

Antes de continuar lendo, lembre-se de que você está por sua própria conta e risco. Não me responsabilizo por danos presentes nem futuros ocasionados direta ou indiretamente pelos procedimentos aqui descritos. Lembre-se que o Rockbox (e outros projetos semelhantes) raramente contam com ajuda do fabricante do dispositivo e precisam implementar a maioria das funções utilizando uma documentação praticamente inexistente e muita engenharia reversa. Dito isso, podemos prosseguir.

A primeira coisa a fazer é se preparar psicologicamente: o upgrade de firmware (de qualquer dispositivo) é sempre uma operação delicada e interrompê-la pode significar perda total do dispositivo. Se possível, utilize um no-break – e teste-o para verificar se a bateria está OK.

Realizei o procedimento no linux, mas será basicamente o mesmo no Windows (atenção apenas na instalação do booloader).
Read more…

Post to Twitter Post to Facebook

~rcmachado is Digg proof thanks to caching by WP Super Cache