Entries Tagged 'Tutorials' ↓

Como automatizar as entradas de teclado no Linux

Volta e meia se faz necessário criar algo um pouco mais automatizado. Como podemos fazer isso em Linux?
Se lembrarmos da máxima “Em UNIX tudo é um arquivo”, a coisa fica um pouco mais simples. Por tudo, é realmente TUDO, inclusive o teclado ;)

Já entendeu como? Basta utilizar um redirect ;)
Como exemplo, vamos tentar automatizar o fdisk, algo um tanto quanto complexo não? Vamos supor que você queira criar uma partição primária com todo o espaço disponível em /dev/sdb, pode fazer com o seguinte script:

#!/bin/sh
cat << EOF | fdisk /dev/sdb
n
p
1

w
EOF
partprobe

Agora basta  salvar e executar o script, ele ira inserir os comandos ‘n’,'p’,’1′,’Enter’,'w’ no fdisk, como faria uma pessoa de forma iterativa. No final irá chamar o partprobe para reler as tabelas dos discos.

Como utilizar mutex para evitar race-conditions em pThreads?

Apenas uma dica rápida, outro dia me peguei programando em pThreads e, como qualquer coisa um pouco mais complexa, cai no famoso “race-condition”, quando uma thread tenta utilizar dados ao mesmo tempo em que outra thread tenta (por exemplo) criar os dados.
Existem várias formas de se resolver isso, porém acredito que a mais simples é a utilização de mutex (atenção, isso é exclusivo do SO, no nosso caso sistemas baseados em UNIX como Linux ou FreeBSD). A idéia do mutex é:

  1. Cria uma variável do tipo pthread_mutex_t
  2. Inicializa
  3. Dentro da thread, efetue um lock na área crítica da memória
  4. Trabalhe na memória
  5. Efetue um unlock da área crítica.

Vamos ao exemplo mais simples possível: Continue reading →

Entendendo fstab

O fstab é o core onde o Linux sabe qual é o tipo de partição utilizada em um ponto de montagem, quando você por exemplo, utiliza o comando mount /mnt/windows ele olha no /etc/fstab para ver onde está a partição /mnt/windows e qual o tipo dela, logo, entender o fstab é essencial para qualquer administrador de Linux.
Honestamente eu sempre achei isso tão básico que nunca dei muita atenção, até resolver, em um tempo de ócio pós-almoço, dar uma pesquisada nisso, vi então esse link do LinuxPlanet que explica com um pouco mais de detalhes quais são as opções e facilidades do fstab, em especial ao UUID, que já vem por default utilizado na maioria das distribuições, porém eu sempre trocava pela versão clássica, well, not anymore ;) .
Vale a pena dar uma olhada.
Zarnick

Tutorial LaTeX

Para quem não sabe o que é LaTeX, LaTeX é uma extensão do TeX, que foi criado por Donald Knuth e é um programa de typeset. Diferentemente de um processador de texto, Knuth fez o TeX para auxiliar na criação de documentos técnicos, principalmente na parte de fórmulas matemáticas. Usado extensivamente em qualquer documento científico que se preze (leia teses, papers, livros, etc), LaTeX permite que você cuide do texto e não da formatação, facilitando (e muito) o trabalho de artigos científicos.
Navegando por ai encontrei um ótimo tutorial do TUG India, vale a pena estudar e entender essa maravilhosa ferramenta.
-==Edit==-
Percebi apenas agora que não havia colocado o link para um tutorial sobre como fazer uma configuração portável do LaTeX, vejam, vale a pena ;) .

LVM no Linux, o que é e como utilizar

Caso você já tenha passado por uma situação onde era necessária a repartição do seu HD (ou criação de link simbólico) por que sua partição estava cheia, nunca se perguntou “Poxa, como seria bom se eu pude-se apenas redimensionar as partições…”? Ou você tem um monte de HD sobrando de 80Gb e pensa: “Será que eu consigo juntar todos em um só ou tenho que ter uma partição/diretório para cada um deles e colocar meus dados bem separados?”, ou ainda, comprou aquele super ultra-hd de 320GB e quer trocar seu antigo HD de 80GB, mas pensa a mesma coisa, “Será que eu não consigo apenas juntar os dois?”. Pois bem, com o LVM você pode fazer tudo isso sem ter RAID via hardware (atenção LVM não é uma alternativa ao RAID, ele apenas apresenta algumas características similares), e muito mais (como clonagem de hd para backup, ou stripping por exemplo), vou mostrar em um sistema Slackware recem-instalado (não full-install, porém com as ferramentas necessárias que existem em praticamente todas as distribuições) como fazer um array de dados básico em um HD, e depois adicionar um HD para o mesmo array sem perder os dados.

Continue reading →

Observers em C++

Observers são um patrão de design muito utilizado, principalmente quando você quer que camadas superiores do seu software saibam o que aconteceu nas camadas inferiores. O Ogre usa isso para renderizar Frames por exemplo, utilizando FrameListener. Pois bem, curioso como sou resolvi ir um pouco mais a fundo e ver como se faz isso na unha em C++, descobrindo o quão simples isso é, os passos são esses:

  1. Criar uma simples interface com um método que será chamado a toda atualização
  2. Criar um objeto singleton que pode ser observado, adicionando as interfaces em uma lista (ou pilha, whatever), que irá chamar o método de atualização de todos as interface quando obtiver uma mudança
  3. Criar um objeto que implementa sua interface.
  4. A cada atualização, notificar todas as interfaces.

Continue reading →

Ogre, parte 1

Bom, como prometido, temos algo do Ogre aqui :D

Repito que não vou fazer um tutorial sobre isso, para isso vejam a Wiki do Ogre.
Antes de mais nada, como já foi dito anteriormente, o Ogre por sí só é uma engine gráfica 3D, o que quer dizer que sim, você pode fazer seu jogo nela, mas irá faltar no mínimo iteração com o usuário, som e física (verdade, alguns jogos não precisam de física, mas ficam muito melhores com;). Quando você instala o Ogre ele vem com a parte de iteração, utilizando agora o OIS (antigamente era a SDL) e para ter uma GUI, ele utiliza a CEGUI. Com isso você já consegue fazer um jogo quase completo (isso e muita paciência), ou um aplicativo, que é o que vou mostrar aqui. Continue reading →

Estrutura de dados 2 – Lista

Quem nunca teve o problema clássico de ter que armazenar uma quantidade X de valores, sem limite máximo e com buscas, remoção e adição em qualquer lugar de forma rápida? Pois bem as listas estão ai exatamente para isso. Claro, poderíamos criar um vetor com um número X, e caso precisa-se, utilizaríamos realloc() para aumentar o vetor. Porém, qualquer coisa que fizéssemos com um vetor (ordernar, busca, remoção, adição) é muito custosa, uma lista ligada nos permite fazer isso de forma rápida, customizáda, e econômica. Vamos explicar aqui a lista duplamente ligada, uma das mais completas, porém vamos mostrar também a teoria de suas variações (lista ligada e lista circular).
Continue reading →

Estrutura de dados 1 – Pilha

Uma das coisas mais importantes e pesquisada na programação é a representação de dados no computador, essa área tem o nome de estrutura de dados, sendo uma das áreas principais no estudo da programação para computadores. Existem vários tipo de estrutura de dados clássicos, cada um com sua utilização, hoje vamos estudar como funciona a Pilha.
Continue reading →

Arquivos temporários em C

Ola, eu não esqueci de vocês não, apenas estou sem tempo com o final de semestre na faculdade. Então, para não deixar vazio, vamos mostrar como criar arquivos temporários em C.
Arquivos temporários são utilizados para uma vasta gama de utilidades, sendo que a mais comum é a comunicação entre processos. Isso mesmo, você leu direito, para dois processos se comunicarem é mais do que comum utilizarmos arquivos temporários. Isso quer dizer, por exemplo, que a maravilhosa função pipe() nada mais é do que uma criação de arquivos temporários. Continue reading →