Como eliminar células de tabelas no LibreOffice Writer

Para remover células, a única opção é eliminar os seus contornos. Aqui tenho uma tabela da qual quero remover três das células mais altas que sobram:

Para o fazer carrego no botão Contornos que aparece no fundo quando seleccionamos as células que queremos apagar e depois carrego no botão Sem contorno, como faço na imagem seguinte:

No caso de se perder, aqui está também uma demonstração em vídeo:

O resultado é o seguinte:

Criar vídeos de ruído com FFmpeg

FFmpeg tem filtros que podem criar ruído de vídeo de forma aleatória. O filtro geq pode criar ruído de vídeo (com nullsrc como fundo branco), enquanto que o filtro aevalsrc pode criar ruído de áudio.

Assim, podemos criar um vídeo a preto e branco de 1280x720 pixels com o seguinte comando:

ffmpeg -f lavfi -i nullsrc=s=1280x720 -filter_complex \
"geq=random(1)*255:128:128;aevalsrc=-2+random(0)" \
-t 10 ruído.mkv
Continúa leyendo Criar vídeos de ruído com FFmpeg

Linhas de execução em Python

As linhas (ou encadeamento) de execução permitem-nos executar tarefas em simultâneo. Em Python podemos usar o módulo threading, embora existam muitos outros.

Vamos criar várias linhas de execução (threads):

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import threading
import time
import random

def sleeper(name, s_time):
    print('{} começado às {}.'.format(
        name, time.strftime('%H:%M:%S', time.gmtime())))

    time.sleep(s_time)

    print('{} terminado às {}.'.format(
        name, time.strftime('%H:%M:%S', time.gmtime())))


for i in range(5):
    thread = threading.Thread(target=sleeper, args=(
        'Linha ' + str(i + 1), random.randint(1, 9)))

    thread.start()

print('Já terminei, mas as outras linhas de execução não.')

Em primeiro lugar, importamos os módulos necessários: time, random e threading. Para criar threads só precisamos do último. Usamos time para simular uma tarefa e obter o seu tempo de início e fim; random, para fazer com que o nossa linha tenha uma duração aleatória.

A função sleeper «dorme» (não faz nada) durante o tempo que especificamos, diz-nos quando começou a «dormir» e quando acabou de «dormir». Como argumentos, passamos o nome que queremos dar à linha e o tempo que a função vai «dormir».

Depois, criamos um loop que cria 5 fios que executam a função sleeper. No threading.Thread devemos indicar a função a executar (target=sleeper) e os argumentos que queremos passar-lhe, args=('Linha ' + str(i + 1), random.randint(1, 9).

O resultado da execução é aleatório: não sabemos qual o processo que irá terminar primeiro:

Linha 1 começado às 09:16:14.
Linha 2 começado às 09:16:14.
Linha 3 começado às 09:16:14.
Linha 4 começado às 09:16:14.
Linha 5 começado às 09:16:14.
Já terminei, mas as outras linhas de execução não.
Linha 2 terminado às 09:16:17.
Linha 5 terminado às 09:16:20.
Linha 3 terminado às 09:16:21.
Linha 4 terminado às 09:16:21.
Linha 1 terminado às 09:16:22.

Software livre e política

O software livre é anarquista ou capitalista? Alguns dizem que é comunista, outros dizem que é capitalista, anarquista... Quem tem razão? Fazem sentido comentários como os feitos pelo antigo diretor executivo da Microsoft, Steve Ballmer? Continúa leyendo Software livre e política

O software livre é melhor do que a alquimia

É difícil explicar os benefícios do software livre a pessoas que não compreendem computadores? Tal como não é preciso ser jornalista para compreender os benefícios da liberdade de imprensa, não é preciso ser programador para compreender os benefícios do software livre.

Continúa leyendo O software livre é melhor do que a alquimia