Tag Archive | emacs

Aventuras com o Emacs: recuperando arquivos

Dia 6 de agosto, em algum momento próximo a 20:00, o meu editor de textos está aberto. Há rascunhos de ideias que eu havia anotado ao longo do dia. Uso o ambiente/shell Enlightenment para prover alguma interface gráfica para o meu sistema Linux, ambiente que já falhou várias vezes comigo. Não foi diferente dessa vez, o Enlightenment parou, não estava me servindo mais. Mas eu quero meus arquivos de volta, assim começa a história de como perdi algumas horas de minha vida. “Eu quero” é o que basta para fazer isso acontecer.

Primeiro passo, eu utilizo a interface não-gráfica do Linux, um tty diferente. Eu não posso usar a interface gráfica agora, logo vou ter que me acostumar a usar muitos aplicativos simultaneamente (usar o navegador web via TUI enquanto leio o manual de como usá-lo no lado direito, etc). Eu conhecia o tmux, mas não estava habituado a usá-lo, e isso mudou. Passei algumas horas me acostumando a usar o tmux enquanto usava os outros aplicativos. Usei o gdb para interromper o fluxo normal de execução do Enlightenment aberto e chamar a função ecore_app_restart, dica que havia aprendido na lista de email do Enlightenment.

photo554335250209155207

Eu estava perdendo o preconceito de controlar o posicionamento das “janelas” utilizando apenas o teclado. Entretanto, a dica do gdb para reiniciar o Enlightenment, que já me ajudou no passado algumas vezes, dessa vez não teve efeito.

photo554335250209155208

Já são 2:00 no dia seguinte e eu ainda estou pesquisando, na internet, algo que pudesse me ajudar. O Emacs estava aberto e na memória RAM do computador eu poderia recuperar o que eu havia digitado. Foi então que, lendo um arquivo que dava instruções de como depurar o Emacs, eu percebo a informação que vai me ajudar.

Mais uns vinte minutos e eu já tinha salvo o estado de execução no qual o Emacs se encontrava, o core dump file. Hora de voltar a ser produtivo, voltarei a esse problema outro dia.

20 de agosto

O dia que eu retorno ao problema. Passei dias demais sem atualizar meu sistema com receio de distanciá-lo demais do ambiente no qual o Emacs estava funcionando. Hora de ler novamente as instruções do arquivo DEBUG que encontrei no repositório do Emacs. Sigo as instruções e não funciona, meu binário não possui os símbolos de depuração. Considerando a possibilidade de que não fosse funcionar, re-gero o binário do Emacs de forma que os símbolos de depuração fossem salvos no sistema de arquivos.

Hora da verdade. Tento novamente e vejo o esperado warning:

warning: core file may not match specified executable file.

Prossigo de qualquer forma, e, para minha satisfação, recupero as informações que eu queria.

shot-2016-08-20_06-44-01

Trabalho feito, hora de atualizar o sistema. Acho que se fosse no Windows, eu não teria nenhuma chance. De qualquer forma, acho que está na hora de encontrar um substituto para o Enlightenment.

Meu ambiente Emacs

Há alguns anos que o editor de texto Emacs me serve durante minha principal atividade, que é programar, e resolvi dedicar um post nesse blog para o Emacs e, em especial, meu uso com o Emacs.

Arquivos incovenientes

O Emacs tenta arduamente impedir que você perca qualquer modificação em qualquer de seus arquivos e um efeito colateral de tal funcionalidade é que vários arquivos de backup são criados por todos os lugares que você edita. Minha primeira modificação no Emacs foi evitar que tais arquivos fossem criados.

Visão “conservadora”

Antes do Emacs eu estava habituado a ferramentas com paradigmas muito diferentes (intuitivo, mouse, treinamento zero, customização no máximo de cores, …) e o Emacs me fez aceitar novos (na verdade velhos, considerando a idade do Emacs) paradigmas, tais como “se esforce o possível para manter sua posição de digitação padrão”, “tudo que você deleta é copiado”, “buffers no lugar de abas”, “janelas & frames”. Apesar de eu ter aceitado vários dos conceitos do Emacs com o objetivo de alcançar um maior nível de produtividade, há elementos que simplesmente iriam me confundir quando eu alternasse para uma janela não-Emacs e não eram exclusividades que iriam melhorar minha produtividade. Logo, eu me mantive “conservador” em relação a alguns elementos:

Suporte para manter estilo/consistência

Mudanças que acabei fazendo nesse sentido:

Outras ajudas para programadores

Mudanças:

Meus truques

Além de configurar o Emacs, existe a forma como eu o uso, minhas funcionalidades favoritas. Algumas dessas funcionalidades são ligeiramente mais obscuras (não são bem conhecidas) e achei que seria legal documentar elas.

Pacotes extras

A lista de pacotes extras que eu tenho instalados é:

Fim

Acho que esse é o primeiro post no qual fiz uso pesado da ferramenta asciinema, desde a fase de planejamento. E para quem quiser como referência, o meu arquivo de configuração do Emacs. Façam um post sobre a ferramenta de vocês e postem aí nos comentários, para que eu talvez migre para um workflow melhor, após uma nova epifania.

Meu ambiente de desenvolvimento em 7 itens

Mesmo sem terem me incluído na brincadeira, até porque sou blogger novato, resolvi participar, pois a ideia é interessante.

Regras:

  1. Escreva sobre 7 itens de seu ambiente de trabalho – fale sobre qualquer ponto que quiser
  2. Indique de 3 a 5 pessoas para que possivelmente façam um artigo sobre seu ambiente

Meu ambiente

Começando pelo ambiente então.

Archlinux

Para responder com qual sistema eu me sinto mais confortável eu não preciso pensar muito para responder que é o GNU/Linux. Mas dentre as várias distribuições que eu testei (openSUSE, Debian, Ubuntu, Dreamlinux e alguns derivados irrelevantes), a única distribuição com a qual eu não tenho problemas sérios é a Archlinux.

O principal problema que eu enfrentava nas outras distribuições sempre acabava se resumindo ao gerenciamento de pacotes. Com o Ubuntu, por exemplo, eu sempre acaba configurando vários PPAs para ter as últimas versões disponíveis do VLC, Firefox, OpenOffice.org, ou mesmo instalando o binário fornecido pelos desenvolvedores, no caso do SDK do Qt, por exemplo. Essa prática sempre acabava me causando problemas. Tudo isso sem contar com o meu orgulho de programador ao ver que o meu sistema em si já era uma gambiarra!

Afinal, qual o ponto em ter um gerenciador de pacotes se no final você acaba gerenciando os pacotes por si próprio? A situação só se agravava com o passar do tempo, devido ao perfil de usuário no qual eu me encaixo. Um certo dia então, encontrei o Archlinux.

O problema dos repositórios e pacotes desatualizados foram resolvidos quando comecei a usar o Archlinux. O problema básico de versões velhas foi resolvido com o rolling release. Não há versões da distribuição, há versões dos pacotes, e se quiser um sistema atualizado é suficiente atualizar os pacotes. Para essa ideia ser viável, o sistema precisa de um gerenciador de pacotes robusto, e certamente posso afirmar isso sobre o pacman, pois a distro foi criada em 2002 e o gerenciador ainda está fazendo o que foi feito para fazer sem grandes dificuldades.

Outra vantagem do Arch é que eu finalmente posso instalar o zsnes no meu sistema 64-bit, pois o sistema possui um repositório multilib, com o propósito de facilitar tarefas como essa.

Ainda em repositórios, o Archlinux possui um grande repositório oficial, e o AUR, que sob a minha visão é um projeto que resolve o problema que os PPAs, do Ubuntu, deveria resolver. Graças a grande abrangência desses dois repositórios, e as políticas de gerenciamento adotadas pela comunidade, eu não mais preciso utilizar técnicas obscuras para instalar algum aplicativo.

Como se todas essas facilidades ainda não fossem o bastante, o pacman também é flexível o suficiente para que eu possa configurá-lo para utilizar o Aria2, ou algum outro, para efetuar o download dos pacotes.

MPD

MPD é um Media Player para quem não conhece. Primeiramente, é o único modo decente que encontrei de controlar um media player através do terminal. Mas uma escolha minha geralmente envolve mais que um motivo, e alguns dos outros motivos para escolher esse media player são os incontáveis modos de controlá-lo.

Tenho uma interface gráfica completa tradicional, uma interface para o firefox, uma interface web, uma interface para meu symbian (controlar seu media player no conforto do sofá é essencial =p) e ainda posso combinar o cliente linha de comando com vários outros aplicativos (associando atalhos de teclado no gnome ou no e17, por exemplo).

Além de toda a flexibilidade fornecida para controlar o MPD, posso configurar também para onde irá o som. As opções vão desde o sistema ALSA/PulseAudio (direto para a caixa de som), até streaming web via HTTP simples ou passando pelo Icecast. Adicionando o sistema JACK a combinação, as possibilidades são tentadoras.

Firefox

Antes não-tão-essencial, eu alternava entre o Chromium e o Firefox, pois para mim não havia muita diferença entre os dois. Mas a versão 4 do Firefox veio com um recurso que mudou minha opinião, o grupo de abas. Usando desse novo recurso, eu finalmente consigo navegar na web sem me perder, mesmo tendo em torno de 25 abas abertas durante a maior parte do tempo. Há um grande conjunto de pequenas mudanças que fizeram a diferença também, mas para mim essa funcionalidade é única.

Gmail

E o que seria de minha vida sem a google e seus produtos com seus níveis de qualidade que constantemente aumentam? Usando alguns recursos do labs (como várias listas de email, por exemplo) eu finalmente consegui organizar minhas tasks. E integrado com o Google Agenda, não preciso mais me lembrar de compromissos. São tantas funcionalidades. Não há nenhum produto igual.

Pidgin

Durante a realização de suas tasks você está vulnerável a sofrer stress, ainda mais quando você está trabalhando com tecnologias muito novas ou chatas. Um IM é essencial para diminuir o nível de stress e manter seu nível de produtividade. Já testei vários IMs, e apesar de não gostar do Pidgin, ele é o único que suporto.

Emacs

Costumo trabalhar com projetos escritos em diferentes linguagens, e não vi ainda uma IDE que seja suficiente para mim e suporte bem todas as linguagens com as quais trabalho. Diante dessa situação, um editor de textos avançado como o Vim ou o Emacs, é o que pode me ajudar. O primeiro que usei foi o Emacs, e eu até tentei esquecer o Emacs e usar o vi, mas eu me adaptei bem ao paradigma Emacs, e é ele que eu sei usar (e muito mal, se levar em consideração o tempo de uso e meu conhecimento).

Subversion

O sistema de versionamento que mais uso é o subversion. A maioria dos projetos em que eu trabalho o adota e ele é muito fácil de usar, principalmente quando tem uma interface web poderosa em conjunto. Fiz até algumas apresentações sobre ele e convenci várias pessoas a utilizá-lo, e isso no primeiro semestre de UFAL.

Minhas vítimas

Repasso a tarefa para:

%d blogueiros gostam disto: