Como gravar Blu-Ray no Ubuntu GNU/Linux

Até a versão 13.04, do Ubuntu o pacote de aplicativos que costumava vir no cdrecord foi substituído pelo wodim. Há uma polêmica em torno disto e eu não vou entrar no mérito (por pura incapacidade de determinar quem está certo ou errado). O fato é que, se você deseja gravar blu-ray no Linux, você precisa ter o cdrecord — e sua instalação implica na remoção do wodim.

blu-ray logo
blu-ray logo
Para evitar qualquer frustração posterior, devo avisar que vamos tratar exclusivamente deste processo de substituição, aqui, neste artigo.

Aviso

Eu sei que é muito chato dizer isto, mas… se o seu sistema ficar inoperante depois de você aplicar o que aprendeu aqui, a culpa não é minha. Ok? 😉

Como adicionar a PPA do cdrecord

Já sabemos que o cdrecord não faz parte do repositório oficial do Ubuntu 13.04. Portanto, será necessário indicar um PPA onde ele poderá ser baixado para o seu sistema. É fácil fazer isto dentro de um terminal (Ctrl + Alt + T):

sudo add-apt-repository ppa:brandonsnider/cdrtools

Feito isto, atualize a lista de pacotes com o seguinte comando:

sudo apt-get update

Em seguida, instale o cdrecord:

sudo apt-get install cdrecord

Note que o sistema irá avisar sobre a remoção do wodim.

Captura de tela - instalação do cdrecord
Captura de tela – instalação do cdrecord

Daqui pra frente

Uma vez concluído o processo, você terá o cdrecord instalado em seu sistema, em substituição ao wodim.
Antes de começar a gravar os seus CDs, DVDs ou Blu-Rays, pode ser necessário indicar no seu programa de gravação os novos comandos.

Daqui pra trás…

Se você quiser desfazer o processo, execute os seguintes passos que seguem:
Primeiro remova o cdtools.

sudo apt-get remove cdtools cdrecord

Remova a entrada que adicionamos mais cedo ao /etc/apt/sources.list.

sudo add-apt-repository --remove ppa:brandonsnider/cdrtools

Atualize o seu sistema e, em seguida, reinstale o cdrkit

sudo apt-get update
sudo apt-get install cdrkit wodim

Isto deve ser o suficente.

Como instalar as fontes Google no Ubuntu via script

As fontes Google figuram como uma opção a mais para quem trabalha com design, dentre tantas outras que também podem ser baixadas gratuitamente.
Neste tutorial, vou mostrar como baixar e instalar um script que, por sua vez, irá baixar e instalar as fontes em seu computador.

Embora o título do post se refira ao Ubuntu, nada impede que você execute o script em qualquer outra distro baseada no Debian, tais como os outros sabores do Ubuntu, como KUbuntu, XUbuntu, LUbuntu.

Google fonts
Google fonts

O script e as webfonts do Google

O TypeCatcher permite que se tenha uma prévia das fontes com seus tamanhos ajustados; fazer downloads e instalar as fontes desejadas em seu computador local. Porém, como ele não faz o download completo de todas as fontes, fomos buscar, lá no WebUpd8 um script que faz este trabalho com rapidez e simplicidade. Eu achei simples, pelo menos.

O que o script faz?

Pra ser objetivo, ele baixa os arquivos do diretório de fontes do Google (Google Font Directory) – há algo em torno de 100 itens diferentes lá, que podem ser usados para personalizar o seu desktop ou em seus trabalhos de design – e as instala em /usr/share/fonts/truetype/google-fonts/. Simples assim. 😉

Baixe o script e instale as fontes

Abra um terminal (Ctrl + Alt + T) e digite os seguintes comandos (são 3 linhas):


cd && wget http://webupd8.googlecode.com/files/install-google-fonts

chmod +x install-google-fonts

./install-google-fonts

O que foi feito?

Basicamente, o que fizemos acima foi entrar no nosso diretório /home e fazer o download para dentro dele do script de instalação. Em seguida, mudamos sua permissão (chmod) para executável e, por fim, o executamos.

Se não estiver instalado no seu sistema, o script baixará e instalará automaticamente o pacote do mercurial-common. A depender da sua conexão, este processo pode ser um pouco demorado… pausa para um café! 😉

Continuação

Uma vez terminado o processo de baixar e instalar as fontes, você pode começar a experimentá-las.
Se quiser, pode usá-las para personalizar o visual do seu Ubuntu.

Preferências da área de trabalho no LXDE - lista de fontes disponíveis.
Preferências da área de trabalho no LXDE – lista de fontes disponíveis. (Clique na imagem para ampliar)

Para tanto, clique com o botão direito do mouse sobre o desktop e selecione “Preferências” e escolha as fontes desejadas na guia Fontes.

O que eu faço com este diretório, que o script criou na minha pasta /home

Certas pessoas gostam de trabalhar em um ambiente razoavelmente organizado ou, pelo menos, não gostam de topar com “objetos estranhos”, ocupando espaço.

De fato, o script vai criar uma pasta /googlefontdirectory dentro da pasta em que foi executado.

Pois bem, você pode apagar este diretório sem problemas.
A vantagem de deixar o diretório quieto, aonde está, é que na próxima vez em que rodar o script, ele vai apenas atualizar os arquivos, em vez de baixar tudo de novo.
Para mim, vale a pena mantê-lo. O que você acha?

Como remover as fontes do Google do meu sistema

Você se arrependeu – ou cansou de brincar – e quer recuperar o espaço agora ocupado pelas fontes. Abra um terminal e proceda da seguinte forma:


sudo rm -vfr /usr/share/fonts/truetype/google-fonts/

Isto deve ser o suficiente.

Referências

Como usar ou instalar temas no libreOffice, OpenOffice, brOffice

Introdução

A nova versão do LibreOffice 4.1 vem causando alguma sensação e, na minha humilde opinião, isto não ocorre por causa dos novos recursos.
O LibreOffice e seu irmão OpenOffice vêm incomodando sobremaneira uma gigante do software, baseada em Redmond por que são bons produtos e estão sendo adotados por várias grandes empresas e instituições mundo afora.

Personas

Personas firefox beta logo
Esta nova versão permite usar os mesmos temas do Personas, um addon ou extensão pro navegador da Mozilla Foundation, Firefox.
Você encontra aqui os temas:
Página de temas Personas do Firefox

Seleção de temas
Clique para ampliar.

Clique no menu Ferramentas e, depois, no item Opções.A seguir, selecione Aparência, na lista de opções do painel à esquerda.
Clique em Tema próprio e no botão Selecionar um tema.
Visitar os temas do Firefox
Clique para ampliar.

Na pequena caixa de diálogo clique em “Visitar os temas do Firefox” e você será levado à página dos temas.
Escolha o tema desejado e clique sobre ele para ir à sua página específica. Ao chegar lá, você só precisa selecionar e copiar o endereço da página do seu tema Personas.
Clique para ampliar
Clique para ampliar

Depois de copiar o endereço da página volte para a caixa de diálogo anterior e cole-o no local indicado.
Onde colar o endereço da página que contém o tema Persona da sua escolha.
Clique para ampliar

Feito isto, clique no botão OK e aguarde. Em máquinas mais lentas, a troca do tema pode ser um pouco demorada.
Divirta-se! 😉

Como inserir notificações na área de trabalho do Ubuntu

notificação da área de trabalho do Ubuntu
Clique, para abrir a imagem em nova janela em tamanho maior.

Introdução

Há vários possíveis usos para este recurso. Particularmente, gosto dele para notificar sobre o fim da execução de uma determinada tarefa.
Sabe quando você abriu um terminal iniciou um backup ou um download com o wget e vai jogar um pouco de tempo fora nas redes sociais… este aplicativo ajuda a lembrar que vocẽ precisa voltar ao trabalho.

Instalação

Trata-se de um aplicativo padrão do Ubuntu e, portanto, não precisa ser instalado. Mas, como temos outras versões e sabores de Ubuntu e Debian disponíveis, Pode ser que ele não esteja à mão.
Neste caso, sua instalação é pode ser feita rapidamente.
Abra um terminal e rode o seguinte comando:

sudo apt-get install libnotify-bin

trata-se de um pacote muito pequeno (menos de 8kb) e deve levar poucos segundos para baixar e instalar.

Como enviar uma simples notificação para a área de trabalho do usuário

O programa notify-send pode ser usado para enviar uma simples e rápida notificação, conforme o exemplo abaixo:

notify-send 'Título da minha notificação' 'Texto da minha pequena notificação'

Seleção_022

Meio sem graça, cara…

E se adicionássemos um ícone?! Veja como é fácil:

notify-send -u critical -i "notification-message-IM" 'Execução terminada!!' 'O backup foi realizado. Verifique o terminal, parceiro!'

ícone do messenger na notificação da área de trabalho
Clique na imagem para abrir em uma nova janela

Note que inserimos dois parâmetros novos ao comando:

  • -u — que indica o nível de urgência da notificação. Em ordem de urgência:
    • low
    • normal
    • critical
  • -i — que indica o ícone padrão a ser utilizado

Legal!! Eu quero usar meus próprios ícones!

Veja como inserir os seus próprios ícones à mensagem:

notify-send -i /usr/share/icons/ubuntu-mono-dark/24x24/apps/shutter-panel.png 'Este parece o ícone da câmera...'

ícone da câmera na mensagem.
Clique para ampliar em nova janela

Basta indicar o caminho e o nome para o notify-send encontrar e exibir o ícone desejado.

Um introdução à Programação Orientada a Objetos em C++ (parte III)

« Leia a parte II

Funções membro

É ótimo saber que já conseguimos declarar algumas variáveis. A questão, agora, é como fazer um bom uso delas? A resposta está nas funções. No C++ classes podem ter funções membro – que são declaradas de modo similar às variáveis membro. Vamos usar um exemplo para dar uma idéia melhor do seu funcionamento.
Imagine um quadrado. Primeiro temos que modelar os dados com base nos atributos de um quadrado. Ele tem comprimento, largura e, claro, área. Acreditamos que você já saiba encontrar a área de um quadrado, multiplicando o comprimento pela largura. Esta tarefa pode ser feita por uma função membro:

c++, programação orientada a objetos
Clique na imagem para ampliar.

Este exemplo deve oferecer o resultado “10”. A classe quadrado é muito similar à classe casa, vista anteriormente.
Em seguida, vamos declarar a função area(), que vai retornar um valor int. Você a declara exatamente como a declararia fora de uma classe. Neste caso, fazemos com que area() retorne o resultado da multiplicação do comprimento pela largura e terminamos a classe. A seguir, iniciamos a função main(), que se explica por si mesma.

Definição das funções por fora da definição de classe

Se você tiver uma “penca” de funções para inserir em uma classe, o seu código, obviamente, poderá ficar bagunçado e difícil de entender. Para evitar que isto ocorra, usamos algo chamado operador de resolução do escopo.
Digamos que o que queremos é declarar a função area() fora da nossa definição original da função. Em primeiro lugar, gostaríamos de declarar a classe quadrado, e dentro dela a função area(), como mostrado acima. No entanto, não é interessante inserir o código de função neste ponto, de forma que a definição da classe ficaria assim:

class quadrado
{
public:
	int comprimento, largura;
	int area();
};

Para definir a area() da função membro do lado de fora da definição de classe, faríamos isto aqui:

int quadrado::area()
{
	return comprimento*largura;
}

Este código deverá produzir o mesmo resultado.

Público ou privado?

A velha dicotomia também encontra um lugar para ser discutida aqui. Quando o assunto é a definição de funções membro, você deve aprender a diferença entre membros públicos ou privados de uma classe.
Os membros declarados públicos podem ser acessados de qualquer função de dentro do programa. Podemos explicar isto através de um exemplo. Vamos supor que tenhamos declarado a classe quadrado tal como ela estava anteriormente e tivéssemos tentado acessar a variável comprimento de dentro da função main(), que não é uma função membro da classe:

Clique, para abrir a imagem em outra janela.
Clique, para abrir a imagem em outra janela.

O compilador não terá problemas para entender isto e irá dar o valor 2, como resultado. contudo, se mudarmos a classe quadrado para que se parecesse tal como abaixo, com todos os membros privativos:

class quadrado
{
private:
	int comprimento, largura;
	int area();
};

Se tentarmos rodar o código da função main(), acima, o compilador irá gerar um erro. Membros privados só podem ser acessados dentro de suas funções membro.

Construtores de classe

Temos este método para declarar o valor de cada variável membro de uma classe, abaixo – que me parece um tanto contraprodutivo:

main()
{
   quadrado meu_quadrado;
   meu_quadrado.comprimento=2
   meu_quadrado.largura=3
}

Para cada membro de meu_quadrado, temos que declarar separadamente o seu valor inicial. É claro que não é somente tedioso, mas também é fácil errar ao “pular”, sem perceber, a inicialização de cada membro. E isto vai ficando pior à medida em que as classes vão ficando mais complexas.
Uma maneira de contornar o problema é usar um construtor de classes &emdash; que consiste em uma função inicializada aonde quer que a classe seja usada:

Clique na imagem para ampliar
Clique na imagem para ampliar

Aqui, o resultado previsível é 10.
Primeiro declaramos o construtor de classes, dando-lhe o mesmo nome que a própria classe já tinha. Daí em diante, esta função vai executar-se a cada vez que a classe for usada. A declaramos de forma que ela tenha 2 valores, ambos do tipo int.
A próxima mudança vem na função main(). A cada vez que se declara um objeto como sendo do tipo quadrado, adicionamos uma definição de função. Neste caso, demos às variáveis comprimento1 e comprimento2 os valores de 5 e 2. O construtor então pega estas duas variáveis e atribui seus valores às variáveis membro comprimento e largura.

Arrays e Classes

Claro que você pode usar arrays com classes – o que abre a possibilidade para declarar muito mais variáveis em um período de tempo menor. Vamos ver um exemplo:

Clique, para abrir a imagem em nova janela.
Clique, para abrir a imagem em nova janela.

Não há nada complicado neste nosso último exemplo. Analise-o cuidadosamente 😉
Até a próxima!

Fontes: An Introduction to Object-Oriented Programming in C++
OOP in Wikipedia
Leia mais artigos de programação.