gallois_weblog

inutilidades em geral

git and bash tips

some tips for improving your git ans bash interaction

for completion copy ‘etc/bash_completion.d/git’ to ‘~./bash_completion.d/git’
after that add the following lines to your ‘~/.bashrc’
PS1=’${debian_chroot:+($debian_chroot)}\u@\h:\w$(git branch &>/dev/null; if [ $? -eq 0 ]; then echo ” ($(git branch | grep ‘^*’ |sed s/\*\ //))”; fi)\$ ‘
. .bash_completion.d/git

the first line you make the shell show you the branch you’re in inside parenthesis after the path.
all was done under debian lenny

cheers

April 1, 2008 Posted by gallois | pc, programacao | , , | 1 Comment

dicas para git e bash

algumas dicas para você deixar o seu git melhor de usar com o bash

completion
copie ‘etc/bash_completion.d/git’ para ‘~./bash_completion.d/git’

depois adicione as seguintes linhas no ‘~/.bashrc’
PS1=’${debian_chroot:+($debian_chroot)}\u@\h:\w$(git branch &>/dev/null; if [ $? -eq 0 ]; then echo ” ($(git branch | grep ‘^*’ |sed s/\*\ //))”; fi)\$ ‘
. .bash_completion.d/git
a primeira linha e para voce ver o branch que voce esta entre parenteses depois do path.
fiz isso num debian lenny

abracos e ate a proxima

April 1, 2008 Posted by gallois | pc, programacao | , , | No Comments Yet

no pain, no gain

Não que eu tenha uma vasta experiência com programação (tá bom, confesso, ela é bem limitada), mas do pouco que aprendi e coloquei em prática, C é a linguagem mais gratificante e recompensadora de todas.

Já trabalhei um pouco com Java em uma empresa (como era pra sistema de comércio colaborativo, pode incluir toda aquela frescura de javascript, SQL, xhtml, xm etc.), tive minhas aulas de Haskell e C e por hobby estou aprendendo Ruby / Rails. Realmente não é um exemplo de currículo, mas eu gosto de “fazer programas” (google-> você quis dizer: programar).

Por conta de uns trabalhos como bolsista de um grupo de pesquisa e extensão da faculdade, o Colméia, fiquei encarregado de fazer algo que configurasse automaticamente o mouse em computadores que receberiam uma distribuição linux, desenvolvida também pelo grupo, especialmente projetada para rodar em computadores antigos. A alternativa mais rápida parecia ser um shell script para fazer o trabalho, simples e eficiente. Porém, por questões acadêmicas e de mera curiosidade, optei por usar um código em C. Mais robusto, elegante e, principalmente, TRABALHOSO.

Por um bom tempo fiquei preso em um problema com threads que foi resolvido na semana passada (sim, resultava em seg fault xD). Depois disso, as coisas pareceram correr bem mais rapidamente e posso atribuir isso a um motivo em particular: eu fiquei mais esperto. Era uma falta de atenção, eu estava passando os argumentos de forma incorreta para a função que se iniciaria com a nova thread (quem ja usou pthreads deve saber que passar mais de um argumento para a thread é feito de uma maneira pouco ortodoxa). O erro, que não era exatamente de fácil percepção, acarretava em comportamento indesejável e, como a maioria dos programas em C, este não ocorria no exato ponto de execução da falha e a mensagem exibida não era muito amigável (ouvi seg fault de novo?). Uma gambiarra fazia o programa não travar, mas em compensação, empacava e não dava a menor dica do motivo.

Quando meus olhos perceberam o erro e o google me mostrou o que poderia ser a solução, corri para o meu velho k6-2 para testar. Aquelas inúmeras linhas de DEBUG subindo no tty, indicando que eu havia finalmente consegui resolver aquele pepino, quase me mataram de emoção. Nenhum framework te proporciona tamanha libertação. Como diria Uncle Bobby B dos transformers: “its a mystical bond between man and machine”, que numa tradução livre seria algo como “uma ligação mística entre o homem e a máquina”. Dá pra sentir =]

Esse tipo de coisa deixa o programador mais ligado no que deve ser escrito no código. Muitas vezes as IDEs e frameworks fazem a maior parte do trabalho por você. Apesar disso aumentar indiscutivelmente sua produtividade, acaba te tornando pouco atento para o que está fazendo e o que realmente se passa por baixo de cada uma das instruções que você passa à máquina. C é uma linguagem extremamente poderosa, embora tenha algumas falhas que são, ao meu ver, inconcebíveis. Como uma linguagem tão antiga e de uso tão amplo, não tem uma biblioteca de E/S padrão decente? as funções da biblioteca geralmente não funcionam ou tem alguma contra indicação. Não entendeu? Procure no google por “gets problems” e prepare-se para horas de leitura. Ler uma string exige o uso de bibliotecas específicas para o terminal, a biblioteca curses ou entao uma implementação de terceiros. Acho complicado demais para uma coisa que deveria ser extremamente simples, principalmente por sua frequência.

Apesar disso tudo, não posso negar que gosto de programar em C. O controle de tudo, a necessidade de atenção a cada passo, o acesso direto ao que se pretende fazer, sem passar por byte-codes, interpretadores etc, e, principalmente, a performance. Além do mais, posso usar o vim sem problemas, não preciso de uma IDE que monta o projeto, organiza os arquivos e come toda minha memória. Finalmente, depois de passados todos os horrores de não descobrir a razão de tudo dar errado, desenvolver coisas que já estão prontas, testadas e aprovadas em outras linguagens e tomar algumas canecas da café, ver o programa rodando, direitinho (ou pelo menos é o que se espera) é recompensador, como é.

Acho que C deveria ser usada como linguagem principal em todos os cursos superiores onde se ensina programação. Embora não exista uma grande aplicação comercial para ela hoje (as universidades também não deveriam se focar tanto no mercado de trabalho e sim, formar bacharéis) é extremamente útil para se mostrar os principais problemas que ocorrem quando se está programando, te força a prestar muita atenção no que está fazendo e prova o que nossos computadores poderiam fazer hoje, com os recursos de máquina existentes, se as linguagens de programação fossem tão eficientes como eles. Os computadores, apesar de estarem cada vez mais poderosos, não me parecem nem um pouco mais rápidos que o meu finado PC-XT (tudo bem que ele não fazia nem 1% do que os de hoje fazem). Isso, ao meu ver, se deve à redução da performance de execução dos códigos em prol da produtividade. Mas esse assunto é muito extenso e fica pra outra hora.

abraços e até a próxima.

February 17, 2008 Posted by gallois | programacao | , | 2 Comments