Archive for the ‘Linux’ Category

blockdiag no Ubuntu 13.04

8 Maio 2013

O objectivo é instalar blockdiag para fazer a representação de diagramas de blocos de uma forma textual, algo parecido com o graphviz mas orientado para diagramas de blocos.

Ao instalar

 ap-get install blockdiag

no Ubuntu 13.04 deu erro ao executar, o instalador não faz a validação das dependências e não instala Python Image Library (PIL).

Apôs instalar o PIL com a ferramenta easy_install não fica com o suporte para as funcionalidades necessárias pelo blockgiag …

Para resolver o problema da instalação do PIL, existe um artigo 🙂

Algumas correcções ao artigo, os links simbólicos (ln -s) mudaram, agora são:

sudo ln -s /usr/lib/i386-linux-gnu/libjpeg.so /usr/lib/
sudo ln -s /usr/lib/i386-linux-gnu/libfreetype.so /usr/lib/
sudo ln -s /usr/lib/i386-linux-gnu/libz.so /usr/lib/

Para fazer a remoção do PIL caso este já esteja instalado é com

 sudo pip uninstall PIL

Ao instalar, executando

sudo pip install PIL

ele deve fazer a compilação do programa e no fim imprime um resumo, lá indica que funcionalidades suporta:

--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      linux2 2.7.4 (default, Apr 19 2013, 18:32:33)
[GCC 4.7.3]
--------------------------------------------------------------------
*** TKINTER support not available (Tcl/Tk 8.5 libraries needed)
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
*** LITTLECMS support not available
--------------------------------------------------------------------

No fim disto é só criar um ficheiro de texto com o código correspondente ao diagrama e executar o comando:

blockdiag block.diag -T png -o block.png

Ubuntu 11.04 e a syntax highlight do gvim

21 Abril 2011

Com a instalação do Ubuntu 11.04, versão beta, surgiram alguns problemas, um deles relacionado com o gvim.

A opção de syntax highlight não ficava activa e não me era possível seleccionar no menu …

Através da edição dos ficheiros de configuração, ~/.vimrc e ~/.gvimrc, verifiquei que a variável runtimepath continha uma ligação para /usr/share/vim/vim72 quando esta deveria ser /usr/share/vim/vim73.

Com a substituição da variável o problema deixou de se manifestar.

Software para desenho de diagramas

1 Fevereiro 2011

Normalmente a aplicação recomendada para fazer diagramas em Linux é o Dia. Simples, uma interface intuitiva e com um bom conjunto de elementos gráficos para a construção de diagramas. O problema do Dia é que as suas características mantém-se à muito tempo, não que isto seja mau, mas não evoluiu com as formas geométricas nem com os objectos disponíveis, tornou-se boa mas não tão agradável para ilustrações que se pretende cativar com o visual.

Andei a ver alternativas e aqui fica um resumo do que apareceu.

O Inkscape é um programa para desenho vectorial, dá para fazer uns diagramas engraçados mas não produz os efeitos “out of the box”, é necessário algumas qualidades artísticas … não abundam para estes lados.

O yEd possuí algumas características interessantes, efeitos com pinta, possibilidade de organização dos diagramas e um montão de opções.

Ainda utilizo o LaTex de vez em quando, apresentações da Universidade ou artigos, fica porreiro :), para o LaTex encontrei o latexdraw e outro que neste momento não o encontro … (entretanto encontrei 🙂 é o ipe)

Um programa mais focado no desenvolvimento de diagramas relativo a interfaces gráficas, mas expansível com outras paletes de imagens é o Pencil skectching da Mozilla, que permite correr como uma extensão do firefox ou como uma aplicação independente.

Ok, assim já dá para memorizar com que programas dá para fazer uns rascunhos 🙂

Acesso Samba via Firefox em Linux

9 Novembro 2009

Para aceder a uma partilha samba em Linux pode-se recorrer ao comando  mount.smbfs, ou de uma forma mais simples, aceder através do Firefox.

Para aceder via Firefox basta colocar o url no browser a começar por smb://, por exemplo smb://192.168.0.2/partilha.

O Firefox interpreta a partilha samba e disponibiliza uma página com as pastas, como faz para um servidor de ftp, mais simples era difícil 🙂

Fonte : O meu vizinho na EFACEC

Inserir Windows XP num Dual Boot com Ubuntu

26 Setembro 2009

No mestrado vou trabalhar com o Autodesk Inventor, que não têm versão para Windows e aparenta ser suficiente pesadito para não correr numa máquina virtual, não cheguei a tentar.

Portanto, tive que instalar Windows no portátil …

Primeiro tive que redimensionar o disco para arranjar espaço para o Windows, live cd do Ubuntu, gparted e 30 GB já estavam reservados.

Reiniciei, arranquei pelo cd do Windows e, ao fim de algum tempo, um ecrã azul …. não conseguia detectar o controlar do disco, foi necessário ir à BIOS alterar a forma como era identificado … após a alteração não permite formatar a partição, reiniciar, entrar no Ubuntu e formatar a partição.

Fazer boot pelo CD do Windows, que já conseguia formatar a partição, e instalar o dito cujo. Ao fim de 40 minutos já tinha o Windows … ou algo parecido porque não conhecia mais de metade dos periféricos …

Reiniciar, reparar o grub que foi à vida, usar o Live CD do Ubuntu para o instalar.

Tentar introduzir uma entrada no menu.lst do grub para o Windows, reiniciar e não conseguir arrancar, foi necessário reescrever o MBR da partição do Windows para conseguir arrancar.

Deu luta …

Links interessantes para a resolução destes casos :

DDD : watchpoint, observar uma variável

5 Julho 2009

Para quem não conhece o ddd, data display debugger, é um front end ao debugger do gdb, gnu data debugger, uma ferramenta para conseguir vasculhar o programa enquanto ele corre, para facilitar a vida a quem programa e detectar os bugs de uma forma mais fácil.

Uma funcionalidade que desconhecia como usar é o watchpoint, monitorizas uma variável e, quando ela mudar, o programa pára e mostra em que ponto do programa te encontras.
A funcionalidade é ideal para quando uma variável toma uma valor que tu não fazes ideia como lá foi parar, colocas um watchpoint, quando a variável mudar o programa pára e dá para ver quem mexeu …

Eu prefiro a linha de comandos à GUI, por isso isto é feito através da linha de comandos que geralmente está por baixo do código, senão Alt-1 e fica activa.

Em primeiro lugar colocar um breakpoint numa linha que a variável seja utilizada,

br FicheiroExemplo.cpp:123

depois, a parte complicada que pode não estar descrita da melhor forma … ainda usei esta funcionalidade poucas vezes. Imprimir o endereço da variável

print &(your_variable)

e activar a monitorização da variável, com o comando

watch *$

Após estes simples comandos sempre que a variável mudar a execução do programa pára para se poder analisar. Normalmente não só te interessa ver quem mudou mas também todas as funções responsáveis por essa alteração, as chamadas recursivas de funções, para isso existe o comando

backtrace

que imprime as funções que foram chamadas até ocorrer aquela instrução, ideal para observar a linha de execução do programa.

Eu aprendi esta funcionalidade através da ajuda do utilizador volodya no canal do irc gdb.freenode.net, e está explicado em inglês neste post.

Criar uma máquina virtual a partir de um disco rígido

23 Novembro 2008

Na empresa um dos servidores foi-se, uma máquina antiga com meia dúzia de servidores, svn, wiki, bla bla, mas o disco ficou OK.

A maioria dos serviços foram migrados para o servidor de desenvolvimento mas uma das aplicações estava desenvolvida sobre a versão 4.0 do php, a sua migração é mais complicada devido à incompatibilidade entre a versão 5.0 e 4.0 do php, descontinuação total.

A solução empregue foi a construção de uma máquina virtual a partir de todo o conteúdo do disco rígido, algo bem mais simples do que parece.

É necessário ter instalado o software qemu-img e o comando é :

# qemu-img convert -f raw /dev/hdc -O vmdk external_disk/boot.vmdk

O /dev/hdc corresponde ao device do disco a ser copiado e boot.vmdk será o ficheiro que contêm o disco da máquina virtual. O qemu-img compacta o disco virtual, o espaço livre no disco não irá ser criado no disco da máquina virtual, dimínuindo o tamanho do ficheiro final.

O qemu-img não devolve informação sobre o progresso de construção do ficheiro. Para facilitar a percepção de como está a decorrer a construção do ficheiro pode-se utilizar o seguinte comando :

$ watch -n 10 “ls -lh ~/external_disk/bot.img”

O comando watch executa o comando que lhe é passado como argumento numa cadência configurável, neste caso de 10 em 10 segundos, assim dava para ir sabendo qual era o tamanho do ficheiro criado, um disco de 250 Gb gerou uma imagem de 67 Gb.

Apôs ter o disco é necessário criar o ficheiro de configuração para a máquina virtual, no meu caso utilizei o sítio easyvmx, coloquei as especificações relativas à distribuição linux que a máquina tinha e foi arrancar.

Neste caso a máquina não arrancou logo à primeira, devido às configurações internas da máquina, como os discos eram representados para o sistema operativo, através de umas pequenas alterações e o servidor estava em funcionamento.

Referências

Personal Wiki

7 Novembro 2008

Normalmente possuo um conjunto de folhas por cima da secretária com anotações, sobre problemas encontrados no software ou apenas uns memorandos para não me esquecer de fazer algo.

Foi aí que encontrei uma classe de software que pode resolver o meu problema, uma wiki pessoal que poderia conter toda esta informação de uma forma organizada e de fácil utilização.

Depois de navegar na wikipedia, foi lá que encontrei a designação deste tipo de software surgiram dois que me despertaram mais curiosidade :

  • zim – básicamente um editor de texto com as potencialidade da wiki, podendo inserir imagens, links para outros documentos e possível expansão através de plugins. Funciona em linux e à instruções para a colocar  a funcionar em windows, é desenvolvido em perl.
  • Wiki on a Stick – o conceito é muito simples uma página html que é a tua wiki, completamente portátil com as tradicionais funcionalidades de uma wiki.

Experimentei o zim e achei engraçado agora substitui o papel, difícil … talvez diminua a confusão 😀

Guardar texto de uma linha de comandos

5 Agosto 2008

Por vezes é necessário guardar o output de programas da linhas de comandos, ou guardar o histórico da execução de comandos para depois fazer um tutorial ou ficar como referência.

A consola xterm em Linux permite guardar todo o conteúdo num ficheiro, para activar apenas é necessário carregar em control e com o botão do rato esquerdo seleccionar Log to File, automaticamente é criado um ficheiro onde será guardada toda a informação impressa na consola.

dd – data definition

12 Julho 2008

O dd é um programa comum no mundo Unix para copiar sistemas de ficheiros a um baixo nível, ideal para fazer cópias de discos ou tentar recuperar sistemas de ficheiros.

Por exemplo para copiar o conteúdo de um disco para um ficheiro basta fazer :

dd if=/dev/sda of=disk_image

e copia-se todo o conteúdo do disco representado pelo device /dev/sda para o ficheiro no file_disk. O disco pode ter partições que todas serão copiadas e ao copiar para um novo disco este fica com igual ao anterior.

É possível aceder ás partições que se encontram no disco copiado através de alguns cálculos e com recurso a outro programa.

Para aceder á listagem de partições utiliza-se o comando fdisk :

fdisk -u -l disk_image

que irá listar todos os partições pertences ao disco clonado, o resultado será algo do estilo :

[puffs@web ~]$ fdisk -u -l /mnt/storage/disk_image

You must set cylinders.
You can do this from the extra functions menu.

Disk /mnt/storage/disk_image: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders, total 0 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x41172ba5

Device Boot      Start         End      Blocks   Id  System
/mnt/storage/disk_image1              63       64259       32098+  de  Dell Utility
/mnt/storage/disk_image2   *       64260    78108029    39021885    7  HPFS/NTFS
Partition 2 has different physical/logical endings:
phys=(1023, 254, 63) logical=(4861, 254, 63)

Depois é necessário fazer alguns cálculos, para fazer mount da segunda partição :

512*64260=32901120

[puffs@web ~]$ sudo mount -o loop,offset=32901120 -t auto /mnt/storage/disk_image /home/puffs/Desktop/drive_image

Fonte