Elmord's Magic Valley

Software, lingüística, mitologia nórdica e rock'n'roll

Prevérbios

2013-09-18 00:16 -0300. Tags: lang

Muitas pessoas ficam perplectas ao se depararem pela primeira vez com os assim chamados phrasal verbs do inglês, construções verbo+partícula tais como give up, give in, give away, throw up, take off, take over, blow up, em que o significado da expressão nem sempre é óbvio a partir do significado das partes. Acontece que o português está recheado de um primo distante dos phrasal verbs herdado do latim. Tão recheado que só até agora neste post eu já usei pelo menos seis dessas construções (possivelmente sete, dependendo (oito!) de o que conta como "phrasal verb").

Os phrasal verbs são uma feature comum entre as línguas germânicas. Em alemão e holandês, eles existem na forma de verbos separáveis, i.e., construções partícula+verbo em que a partícula ocorre incorporada ao verbo ou não dependendo da construção verbal. Entre as línguas nórdicas, construções análogas à do inglês também parecem ser bastante comuns (por exemplo, "give up" em sueco é "ge upp" [update: e em islandês a expressão "gefa upp" também existe, mas aparentemente significa "revelar, deixar escapar"]).

Essa característica das línguas germânicas tem origem em um fenômeno análogo em proto-indo-europeu. Em PIE, algumas partículas adverbiais ou posposicionais (não há uma distinção muito forte entre esses dois tipos de partícula em PIE, da mesma maneira que o status de algumas partículas como advérbio ou preposição é duvidoso/variável em inglês [citation needed]), convencionalmente chamadas prevérbios, possuem efeitos similares sobre o significado de diversos verbos, e podem ser incorporadas ou não ao verbo, de maneira similar ao que ocorre em alemão e holandês. Em latim arcaico, essa situação se preserva. O exemplo clássico é a expressão "sub vos placo" (= "vos supplico"), graças a um camaradinha que escreveu:

Posteriormente, essas partículas passaram a ser obrigatoriamente incorporadas ao verbo em latim. (Em latim, a incorporação de prefixos ocasionalmente provoca certas alterações nas vogais da palavra, daí a mudança de sub placo → supplico e ob sacro → obsecro. No período clássico, as construções originais, com a partícula separada, ja não deviam mais fazer muito sentido para os falantes de latim, razão pela qual o camarada Festus deve ter sentido a necessidade de dar essa explicação.)

Esse fenômeno é absurdamente produtivo em latim. Por exemplo:

Para encerrar, aqui vai uma lista de algumas palavras originárias de construções partícula+verbo usadas neste post:

E isso só no primeiro parágrafo (9 palavras em 81 (descartando as palavras em inglês, e contando repetições), i.e., 1/9 das palavras do parágrafo são derivadas construções partícula+verbo). Há um bocado de outras palavras do mesmo tipo, tais como "ad-vérbio", "convencional" (de "con-vir"), "in-corporar", "pre-servar", "pro-vocar", e diversas outras. E isso só contando (< "com-putando") palavras do latim ("aná-logo" é uma construção análoga em grego). De repente o inglês começa a parecer brincadeirinha de criança.

8 comentários

Anarquia Teocrática

2013-09-15 02:59 -0300. Tags: about

Resolvi criar um blog para suprir minha necessidade de publicar nonsense e outros insultos à literatura sem infligi-los aos leitores deste blog aqui, que é bello e sério demais para o assunto, ou assim eu tento me iludir. O orkut anda me fazendo falta.

Perdoem a falta de posts decentes por aqui nos últimos tempos. Há pelo menos dois na fila, assim que eu criar o ânimo para escrevê-los.

7 comentários

Convertendo archives do LISTSERV para mbox

2013-09-04 01:45 -0300. Tags: comp, unix, prog, perl

Escrevi um pequeno script em Perl para converter um archive de mailing list do LISTSERV para o formato mbox, que pode ser importado em diversos clientes de e-mail. Possa ele ser-vos útil.

3 comentários

Zoom lento no MPlayer

2013-08-27 23:52 -0300. Tags: comp, unix, mundane

Esses dias fui assistir um filme com uma resolução maior do que a minha tela com o mplayer e meu Atom não estava dando conta de fazer o zoom out/scaling em tempo real.

Solução? O mplayer suporta uma opção -sws N, que permite escolher o algoritmo de software scaling a ser usado. Usando -sws 4, obtém-se um zoom de qualidade levemente pior, mas que consome menos processamento.

Outra opção útil é -autosync N, que controla a sincronia entre áudio e vídeo. A documentação do mplayer recomenda -autosync 30 para resolver problemas de sincronia com drivers de áudio problemáticos. No meu caso, -autosync 1 pareceu funcionar melhor. Não sei exatamente o que faz essa opção, sinceramente. Para mais informações, consulte a manpage do mplayer.

Quem me contou foi esse cara.

1 comentário

Raciocínio categorial

2013-08-04 00:33 -0300. Tags: life, random

Certa vez, quando eu tinha uns sete anos de idade, estava na casa de um tio. Minha prima (que se minhas contas não falharam, tinha uns nove anos) estava tendo dificuldades com um tema de casa que provavelmente envolvia conjugações verbais. Meu tio diz:

"Mas isso aí até o Vítor sabe. Vítor, qual é a primeira pessoa?"

Eu não fazia a menor idéia do que ele estava falando. Ponderei sobre aquela questão profundamente filosófica de quem diabos era a primeira pessoa por uns três ou quatro segundos e respondi:

"Eu?"

Até hoje eu me admiro daquela resposta.

2 comentários

Die, monster

2013-07-27 03:33 -0300. Tags: life, mind

You don't belong in this world.

4 comentários

Determinando a posição do cursor em um arquivo com o lsof

2013-07-18 23:21 -0300. Tags: comp, unix, mundane

Às vezes executamos comandos do tipo:

cat imagem_grande_que_demora_para_copiar.img >/dev/sdb

e queremos saber o andamento do processo. Quando copiamos os dados de um disco para um arquivo podemos simplesmente olhar o tamanho do arquivo para ter uma idéia do andamento da operação, mas quando o destino é um disco isso não é possível.

É possível, entretanto, olhar a posição do cursor no arquivo. No Unix, todo arquivo aberto tem associado a si um cursor, i.e., a posição a partir da qual operações de leitura e escrita operam por padrão; cada leitura ou escrita no arquivo avança a posição do cursor.

Podemos utilizar um programinha chamado lsof (list open files, pacote lsof no Debian/Ubuntu) para visualizar diversas informações sobre arquivos abertos, dentre elas a posição do cursor. Por padrão, o lsof mostra uma coluna que contém ou a posição do cursor ou o tamanho do arquivo, dependendo do tipo de arquivo; a opção -o (offset) força o lsof a mostrar sempre o cursor. Além disso, por padrão o lsof mostra a posição em hexadecimal se ela ocupar mais de 8 dígitos decimais; a opção -o 0 desabilita esse comportamento. As duas opções podem ser combinadas como -oo0.

Por padrão, todos os arquivos abertos são listados. É possível especificar os nomes dos arquivos a serem listados, ou os nomes (-c nome) ou PIDs (-p pid) dos processos cujos arquivos abertos se deseja ver. Por exemplo:

# cat /dev/sda5 >/dev/sda6 &
[1] 28252
# lsof -oo0 /dev/sda6
COMMAND   PID USER   FD   TYPE DEVICE      OFFSET NODE NAME
cat     28252 root    1w   BLK    8,6 0t254476288 1303 /dev/sda6

Para mais informações, consulte a manpage do lsof.

Appendix A: Do fato de que ninguém deveria usar dd para copiar discos sem uma boa razão

# ls -lah foo
-rw-r--r-- 1 root root 512M Jul 18 23:00 foo
# time cat foo >bar

real    0m21.304s
user    0m0.068s
sys     0m5.212s
# time dd if=foo of=bar
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 39.397 s, 13.6 MB/s

real    0m39.621s
user    0m1.528s
sys     0m25.910s

O motivo para isso é que o dd sempre copia os arquivos usando um tamanho de bloco fixo (indicado pelo parâmetro bs=tamanho, 512 bytes por padrão), enquanto o cat usa um tamanho de bloco "ótimo", o que permite que ele faça a cópia com menos chamadas de sistema (o que se reflete no tempo de sys na saída do comando time). Alternativamente, você pode especificar um tamanho de bloco maior para o dd (e.g., bs=1M), mas isso não apresenta nenhuma vantagem sobre usar o cat, a menos que você queira especificar o tamanho do arquivo também (e.g., no clássico dd if=/dev/zero of=foo bs=1M count=512 (que no entanto também pode ser substituído por um head -c 512M /dev/zero >foo)).

1 comentário

Como evitar que Google, Facebook, Twitter e a NSA saibam por onde você anda na Web

2013-07-13 22:53 -0300. Tags: comp, web, privacy

Agora que é um fato público e conhecido que os dados que você entrega ao Google, Facebook e companhia não estão em boas mãos (e se você acha que está tudo bem, queira assistir um videozinho), pode ser uma boa você reduzir a quantidade de informação a que eles têm acesso.

E graças aos botões de "Curtir", "Tweet", "+1" e similares, bem como as propagandas do Google, o Google Analytics, e o uso extensivo do googleapis.com, essas empresas recebem informação suficiente para ter uma boa idéia de por onde você anda na Web, mesmo quando você está navegando páginas fora desses serviços, a menos que você tome os devidos cuidados.

Existe um bocado de addons que você pode instalar no Firefox para reduzir a possibilidade tracking. (Se você usa o Chrome, é mais fácil você começar a usar o Firefox). Neste post, listo alguns deles e explico como eles podem ser usados para esse fim.

AdBlock Plus

O AdBlock Plus é um addon bem conhecido cujo uso primário é bloquear propagandas. Por si só, isso já é um começo, pois evita que os servidores de propaganda possam trackeá-lo. Porém, o AdBlock pode ser usado para bloquear quaisquer itens indesejáveis de terceiros em páginas. Por exemplo, suponha que você deseja bloquear acessos de outras páginas para o Facebook (há maneiras mais convenientes de atingir esse objetivo, todavia):

  1. Vá a alguma página que faça acesso ao Facebook.
  2. Clique no ícone do AdBlock e selecione Open blockable items (ou Abrir itens bloqueáveis).

  3. Encontre algum dos acessos ao Facebook na lista e dê dois cliques sobre o mesmo.
  4. A janela que se abre apresentará várias possibilidades de regras de bloqueio. Selecione a mais apropriada (neste caso, facebook.net^; note que posteriormente você também deverá repetir o processo para o facebook.com).
  5. Clique no botão Advanced (ou Avançado). Este botão apresentará algumas opções adicionais à direita. Dentre elas, a mais útil é a Third-party only (ou Apenas terceiros); se marcada, essa opção impede o acesso ao facebook.net, exceto a partir do próprio facebook.net. Você pode achar isso útil se por algum diabo você ainda usa a rede social da NSA para se comunicar.

  6. Clique em Add filter (ou Adicionar filtro). Está feito!

Você pode bloquear outros sites (como facebook.com, twitter.com, google-analytics.com, scorecardresearch.com, etc.) da mesma maneira.

Por padrão, o AdBlock permite "ads não-intrusivos". Embora a idéia seja bem-intencionada, na prática isso significa que ele não bloqueia o Google por padrão, então é uma boa idéia desabilitar essa opção indo no menu do AdBlock, Filter preferences, primeira aba (Filter subscriptions), e desmarcar Allow some non-intrusive advertising.

Por padrão, o AdBlock faz atualizações automáticas da lista de sites a bloquear. Se você quiser evitar isso, abra o about:config, procure a opção extensions.adblockplus.subscriptions_autoupdate e dê dois cliques sobre ela para ajustá-la para false.

Disconnect

O Disconnect é um addon que já vem com uma lista padrão de sites de tracking conhecidos e bloqueia acessos aos mesmos a partir de sites de terceiros. Só descobri esse addon hoje, e como eu já uso o RequestPolicy, não cheguei a experimentá-lo direito, mas aparentemente ele funciona bem.

Smart Referer

Por padrão, sempre que o browser faz acesso a uma página a partir de outra (e.g., quando você clica em um link, ou quando uma página inclui uma imagem ou script de outra), o browser envia na requisição um header Referer, que diz qual é a proveniência do acesso (i.e., a página que continha o link ou a imagem ou script). O Smart Referer é um addon que faz com que o browser só envie esse header se a origem e o destino estiverem no mesmo domínio, o que impede o site de saber de onde você está vindo.

mencionei o Smart Referer antes por aqui, mas até recentemente não tinha me dado conta de quão importante ele é: uma quantidade enorme de sites usa serviços hospedados nos servidores do Google (jQuery, reCAPTCHA, Maps, entre outros), e por padrão, ao acessar esses serviços, o browser acaba informando ao Google pelo header Referer que página você está acessando. Com o Smart Referer, você evita enviar essa informação (a menos que o jQuery ou outro serviço se dê ao trabalho de enviar essa informação; pelo menos no caso do jQuery esse não parece ser o caso (ainda)).

O Smart Referer não exige configuração nenhuma, não adiciona ícone de toolbar nenhum, e faz o seu serviço quietinho sem incomodar ninguém.

HTTPS Everywhere

O HTTPS Everywhere é um addon mantido pela Electronic Frontier Foundation que traduz URLs HTTP de sites conhecidos para URLs HTTPS seguras. Por exemplo, toda vez que você acessa http://en.wikipedia.org, o addon substitui automaticamente a URL por https://en.wikipedia.org. Com isso, evita-se enviar informações não-encriptadas pela Web por descuido.

RequestPolicy

Um plugin que você pode achar útil é o RequestPolicy. Ele bloqueia todos os acessos de páginas a sites de terceiros por padrão (com exceção de uma pequena lista de acessos conhecidos, como por exemplo de wordpress.com para wp.com, e que você pode escolher na instalação), e permite adicionar exceções para sites individuais através de um ícone na barra de toolbars. O RequestPolicy é um dos plugins que melhor garante sua privacidade, às custas da inconveniência de ter que freqüentemente adicionar novas exceções para conseguir usar páginas. Ele também é útil para carregar páginas mais rápido em um 3G ou algum outro tipo de conexão lenta. Não recomendo muito para pessoas menos-que-paranóicas e que não vivam com uma conexão de 6kB/s, desde que você use alguma alternativa como o Disconnect.

Últimas observações

Uma lista de outros addons e serviços para assegurar melhor sua privacidade pode ser encontrada no PRISM Break.

Fugindo do assunto de addons, uma alternativa de serviço de e-mail para quem quer fugir do GMail é o SAPO, um provedor português. O SAPO Mail fornece 10GB de espaço e fica hospedado em Portugal, onde existe uma legislação decente de prote(c)ção de dados pessoais (dê uma olhada na política de privacidade dos camaradas).

2 comentários

Learn Not Not to Speak Esperanto

2013-07-06 23:18 -0300. Tags: lang, conlang, esperanto

Caros seres,

Por falta de coisa melhor para fazer com a minha vida, resolvi fazer algo que eu queria fazer há uns sete anos e escrever uma crítica a uma famosa crítica ao esperanto chamada Learn Not to Speak Esperanto.

Ainda não revisei o texto direito, e o HTML ainda está meio capenga. Quaisquer erros (fora o HTML) e sugestões podem ser reportados nos comentários deste post. Por precaução, gostaria que me dessem uma semana para revisar o texto antes de divulgarem links por aí. Feedback é bem-vindo.

6 comentários

Undefined behavior

2013-07-03 20:17 -0300. Tags: comp, prog, c

Hoje apresentei uma palestra-relâmpago no FISL sobre undefined behavior em C.

A palestra foi horrível, mas os slides ficaram decentes.

Update: Well, parece que existe um vídeo da palestra (minha parte começa aos 12:27). E foi menos pior do que eu tinha pensado...

2 comentários

Main menu

Posts recentes

Tags

comp (81) life (33) prog (32) unix (29) random (24) lang (21) mundane (21) about (18) mind (16) web (13) img (11) rant (11) pldesign (11) ramble (10) privacy (8) esperanto (7) bash (7) lash (6) home (6) shell (6) academia (5) conlang (5) misc (5) mestrado (4) worldly (4) lisp (4) copyright (4) book (4) music (4) freedom (4) kbd (3) film (3) politics (3) security (3) android (2) network (2) poem (2) physics (2) editor (2) c (2) wrong (2) cook (2) treta (2) php (2) latex (2) perl (1) pointless (1) audio (1) philosophy (1) kindle (1)

Elsewhere

Quod vide


Copyright © 2012-2015 Vítor Bujés Ubatuba De Araújo
O conteúdo deste blog, a menos que de outra forma especificado, pode ser utilizado segundo os termos da licença Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International.

Powered by Blognir.