Elmord's Magic Valley

Software, lingüística e rock'n'roll. Às vezes em Português, sometimes in English.

Posts com a tag: web

Fun with CSS (not)

2013-01-06 21:20 -0200. Tags: comp, web, em-portugues

HTML segue sendo minha maneira preferida de editar texto formatado desde 1927. (Houve um tempo, antes de entrar para a CIC, em que eu fazia trabalhos de aula em HTML e depois copiava e colava do browser no Word para imprimir.) Entretanto, esse tal de CSS e seu box model às vezes me decepcionam.

No penúltimo post, eu resolvi colocar uma imagem à esquerda do texto, de modo que o texto seguisse normalmente no espaço vazio à direita da imagem. Trabalho para um elemento floated. Coisa simples, não? Acontece que por três pequenos acasos essa tarefa foi menos trivial do que parecia ser.

Primeira tentativa

O primeiro passo foi adicionar a figurinha com a propriedade float: left e olhar no browser o resultado. Como eu ainda não tinha escrito o resto do texto do post, o que aconteceu é que o link de comentários e o post seguinte ficaram arranjados ao lado da imagem. Embora o problema fosse desaparecer assim que eu continuasse a adicionar texto, por uma questão de princípios eu resolvi garantir que o conteúdo de um post ficaria isolado do post seguinte independentemente de quanto texto houvesse no post. A primeira coisa que eu tentei foi colocar um <DIV> em volta do post inteiro. Isso não resolve o problema: o elemento floated não conta no tamanho da DIV por padrão, e a DIV termina antes da figura. A solução que eu encontrei nas Internets (e que não vou me dar ao trabalho de vasculhar no histórico para descobrir onde achei) foi dar a propriedade overflow: hidden para a DIV que engloba o post. Não, a definição oficial da propriedade overflow: hidden não é essa. Anyway. Primeiro problema resolvido.

Segunda tentativa

Por um acaso infernal, a primeira coisa ao lado da imagem, depois de um subtítulo, era um BLOCKQUOTE. O comportamento normal do BLOCKQUOTE é deixar uma margem à esquerda, indentando o texto citado. Porém, o CSS resolveu calcular a margem a partir da esquerda da DIV do post, ignorando a existência da imagem floated. Como a margem era menor que a largura da imagem, ela era simplesmente desprezada. O mesmo problema acontece com listas (com o bônus de que as bullets de uma lista são posicionadas no espaço da margem por padrão, e conseqüentemente aparecem por cima da imagem).

Não achei uma solução decente para isso. A solução indecente foi:

Agora está tudo certo, certo?

Terceira tentativa

Bem, não. Por outro acaso infernal, a imagem era um link. Lembra do nosso BLOCKQUOTE com margem maluca? Pois a margem maluca invisível agora fica sobreposta à imagem, e com isso o trecho de imagem que fica ao lado do BLOCKQUOTE não é clicável. Tentei tacar z-index na imagem e no BLOCKQUOTE para mudar a ordem de sobreposição. Nada.

Acontece que:

Ou seja, quando eu taquei um position: relative; left: 24px no BLOCKQUOTE, ele passou a ser empilhado sobre a imagem floated, com margem e tudo. A solução, portanto, é tacar um position: relative; z-index: 10 na imagem, para valores arbitrários de 10 (e um z-index: 0 no BLOCKQUOTE por via das dúvidas).

Agora tudo funciona. Certo?

4 comentários / comments

Facebook stalks you

2012-01-05 23:49 -0200. Tags: comp, web, privacy, em-portugues

Que o Facebook não tem respeito nenhum pela privacidade dos seus usuários não é nenhuma novidade. Porém, os meios de que ele se utiliza para obter dados ainda me surpreendem.

Como bom nerd, eu tenho o costume de olhar os logs de acesso do blog para ver em que páginas as pessoas têm caído. Ontem eu notei uma seqüência de acessos interessante:

Data: 2013-01-04 01:50:01 -0200
IP: (removido)
URL: /~vbuaraujo/blog/?entry=20120820-xmodmap
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
Referer: http://www.facebook.com/l.php?u=http%3A%2F%2Finf.ufrgs.br%2F~vbuaraujo%2Fblog%2F%3Fentry%3D20120820-xmodmap&h=VAQEHMeNj

Data: 2013-01-04 01:50:01 -0200
IP: 66.220.158.114
URL: /~vbuaraujo/blog/?entry=20120820-xmodmap
User-Agent: facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)
Referer: (vazio)

Isto é:

  1. Usuário abre um link via Facebook;
  2. Logo depois o Facebook requisita a página para olhar.

O link contido na string de User-Agent do bot do Facebook tem o seguinte a dizer:

Why does Facebook appear in my server logs?

Facebook allows its users to send links to interesting web content to other Facebook users. Part of how this works on the Facebook system involves the temporary display of certain images or details related to the web content, such as the title of the webpage or the embed tag of a video. Our system retrieves this information only after a user provides us with a link. You may have found this page because a Facebook user sent a link from your website to other Facebook users. If you have any questions or concerns about any links or content sent by one of our users, please contact us at legal@facebook.com.

Parece útil, não? Parece quase uma razão legítima para stalkear o usuário (heh). Acontece, entretanto, que os acessos do facebookexternalhit normalmente ocorrem menos de um segundo depois que um usuário clica em um link, não quando o link é submetido. Não tenho conta no Facebook, e portanto não tenho como testar melhor isso; estou me guiando pelos acessos do facebookexternalhit nos logs. (Para minha surpresa, o bot já tinha visitado o blog algumas vezes antes. Nunca tinha descoberto porque os acessos foram ao famoso post sobre os horários dos TM{1,2,3}, que eu filtro dos logs para visualizar, já que ele é responsável pela grande maioria dos acessos.) Porém, nem sempre os dois acessos aparecem juntos, então não sei exatamente qual é o princípio por trás disso.

2 comentários / comments

Proxy Auto-Config

2012-11-14 01:24 -0200. Tags: comp, web, mundane, em-portugues

Problema: fazer o browser usar um servidor proxy para apenas alguns sites.

Solução: Existe uma tecnologia de última geração inventada pela Netscape em 1996 chamada Proxy Auto-Config (PAC). A idéia é mui simples e bella: escreve-se um arquivo JavaScript definindo uma função FindProxyForURL(url, host). Essa função recebe a URL e o hostname da página que o browser está tentando acessar, e retorna uma string especificando como o acesso deverá ocorrer:

A esse script estão disponíveis algumas funções para manipulação de URLs e hostnames, além das funções normais do JavaScript.

No meu caso, o objetivo é acessar o portal da ACM através do proxy do Instituto de Informática, para poder baixar papers, e usar uma conexão direta para todos os outros sites. O arquivo PAC fica algo como:

function FindProxyForURL(url, host) {
    if (dnsDomainIs(host, "dl.acm.org"))
        return "PROXY 127.0.0.1:3128";
    else
        return "DIRECT";
}

De posse do arquivo PAC, basta configurar o browser para usá-lo. No Firefox, selecione Preferences > Advanced > Network > (Connection) Settings... > Automatic proxy configuration URL, e insira a URL para o arquivo (no caso de um arquivo local, algo como file:///caminho/do/arquivo.pac).

Note que você poderia escrever um script para substituir esse arquivo automaticamente de acordo com a presença de servidor(es) proxy, ou apontar a URL para um script CGI/PHP/whatever em um servidor HTTP para gerar a configuração de proxy dinamicamente.

Quem me contou foi esse povo.

1 comentário / comment

The woes of Firefox

2012-07-18 17:43 -0300. Tags: comp, web, mundane, em-portugues

Seguindo a aparente trend no mundo das interfaces gráficas para GNU/Linux, algumas das novas "features" do Firefox e seus addons só são configuráveis via propriedades no about:config. Eis uma relação das que me foram necessárias.

Itens úteis nessa vida de 3G:

Outros:

Provavelmente vou adicionar coisas a esse post no futuro.

5 comentários / comments

Communications with the Twitter Team

2012-05-30 21:43 -0300. Tags: comp, web, privacy, em-portugues

Formatação HTML e links adicionados por conveniência.

From: Vítor De Araújo <µµµ@µµµ.com>
To: privacy@twitter.com
Subject: Questions about Do-Not-Track and protected tweets
Date: Fri, 25 May 2012 15:00:28 -0300

Hi!

I have two points I'd like to question about Twitter's privacy policy.

  1. Recently Twitter announced that it now honors the Do-Not-Track header. I have also noticed that you have updated the privacy policy, but I don't see any mention of Do-Not-Track in the text. So, does the commitment to Do-Not-Track have any official value, i.e., is it something users can rely on as long as the current privacy policy is in effect, and if so, what guarantees that?
     
  2. The policy does not directly say anything about protected tweets. May Twitter share protected tweets with third parties according to the current policy? Also, I noticed that the current policy states that information about who I follow and who follows me can be shared, something the old policy didn't. May this information be shared even for protected accounts?

I left Twitter in late February when I came to know about the selling of the historical tweet database to DataSift. I liked Twitter a lot, and I would be more confortable using it if the policy gave explicit guarantees about protected posts and accounts not being shared.

Thanks for the attention!

Five days later...

From: phantasm <notifications-support@twitter.zendesk.com>
To: Vítor De Araújo <µµµ@µµµ.com>
Subject: #5352694 Twitter Support: update on "Questions about Do-Not-Track and protected tweets"
Date: Wed, 30 May 2012 16:55:36 +0000

#5352694 Twitter Support: update on "Questions about Do-Not-Track and protected tweets"

----------------------------------------------
phantasm, May 30 09:55 am (PDT):

Hi,

Thanks for your inquiry. Our Privacy Policy at http://twitter.com/privacy describes the information that Twitter receives, the purposes for which it may be used, and the limited circumstances in which private personal information may be shared.

Regards,

The Trust & Safety Team

I had hope.

Comentários / Comments

Google dies, Twitter dies, the self must also die

2012-03-01 20:44 -0300. Tags: comp, web, privacy, em-portugues

"Die, Twitter! You don't belong in this world."

"It was not by my hands that I'm once again given cash. I was brought here by humans, who want to pay me tribute."

"Tribute? You steal men's tweets, and sell them to your knaves."

"Perhaps the same could be said of all social networks."

"Your words are as empty as your privacy policy. Mankind ill needs a network such as you."

"What is a profile? A miserable little pile of secrets? But that's enough talk. Have at you!"

— Twittlevania: Symphony of the Night

Há mais ou menos um mês o Google anunciou que mudaria sua política de privacidade. A nova política entrou em vigor hoje, e permite ao Google cruzar os dados de seus diversos serviços para melhor servi-lo. Acho mui nobre e respeitável eles terem avisado enfaticamente com um mês de antecedência das mudanças. Mas respeitável ou não, eu já estava há horas com vontade de abandonar o Google, e esse foi o último empurrãozinho que me faltava. Nunca usei o GMail, pela questão da privacidade, então não tinha muito a perder. Matei minha Google Account no final do dia 28 de fevereiro (afinal, eles não explicitaram a partir de 1º de março de qual fuso-horário a política nova entra em vigor).

Na iminência de perder o orkut, e na necessidade de suprir minha compulsão de compartilhar links que ninguém lê, resolvi criar uma conta no Twitter no final de janeiro. Depois de observar alguns bots dando "follow" no meu perfil, e depois de me dar conta de como é fácil fazer data mining no Twitter (ainda mais com as APIs que o Twitter fornece), protegi minha conta.

Estava muito feliz com o Twitter.

Ontem o Twitter vendeu o acesso a todos os tweets postados desde 2010 para duas empresas de pesquisa. A empresa britânica de data mining Datasift fornecerá acesso aos dados através de uma plataforma cloud-based, que dá acesso não apenas ao conteúdo dos tweets, mas também a dados computados a partir dos mesmos. "We enrich every Tweet, every social conversation with sentiment, social media influence, topic-analysis, and NLP. No-one offers more insights for Tweets."

A empresa alega que conversas privadas (para algum valor de "privado"; nada garante que a definição inclui tweets protegidos) e tweets excluídos não serão acessíveis pelo sistema (o que não quer dizer que a empresa não tenha acesso aos mesmos), mas não podemos ter certeza de nada. De fato, os termos de serviço e a política de privacidade do Twitter não dão qualquer garantia quanto à privacidade de tweets protegidos. Tudo o que elas dizem é que "What you say on Twitter may be viewed all around the world instantly. You are what you Tweet!".

Por essa razão, estou em vias de matar minha conta no Twitter. Se todos fizessem o mesmo com serviços que desrespeitam nossa privacidade, as empresas seriam obrigadas a respeitá-la, para não perder o lucro. Infelizmente, o mundo tende a preferir conveniência a privacidade. Um dia o mundo aprende. Ou não.

3 comentários / comments

Addons para combater tracking

2012-02-26 21:01 -0300. Tags: comp, web, privacy, em-portugues

O artigo sobre o uso do User-Agent para tracking me levou por um passeio seguindo os links de artigos relacionados pelo site da EFF. Recomendo que você faça o mesmo. Resolvi experimentar alguns dos addons recomendados neste artigo, além de alguns outros addons relacionados que encontrei pelo caminho. São eles:

Com exceção do último, todos esses addons estão nos repositórios do Debian/Ubuntu, de modo que para instalá-los basta um comando: apt-get install xul-ext-cookie-monster xul-ext-noscript xul-ext-requestpolicy. Depois disso, basta reiniciar o Firefox. O outro addon pode ser baixado do site da Mozilla.

No início, usar esses plugins é um pouco inconveniente: deve-se liberar cada site confiável que se visita da primeira vez. Porém, isso é um termo constante e não afeta a complexidade assintótica da navegação (ou quase). (Por outro lado, o Smart Referer é totalmente invisível e não afeta em nada a navegação, portanto não há desculpas para não usá-lo.)

Outro inconveniente que encontrei é que o RequestPolicy pede confirmação para redirecionamentos de páginas, que em geral são inofensivos [citation needed], e não há uma opção para liberar redirecionamentos para todos os sites por padrão.

Como ponto positivo, se carrega menos porcarias ao acessar uma página, o que pode ter um efeito significativo quando se está usando um 3G da vida. (Além do benefício à privacidade, obviamente.)

No más.

Comentários / Comments

Main menu

Posts recentes

Comentários recentes

Tags

em-portugues (213) comp (137) prog (68) in-english (50) life (47) pldesign (35) unix (34) lang (32) random (28) about (27) mind (25) lisp (23) mundane (22) fenius (20) ramble (17) web (17) img (13) rant (12) hel (12) privacy (10) scheme (10) freedom (8) copyright (7) bash (7) music (7) academia (7) lash (7) esperanto (7) home (6) mestrado (6) shell (6) conlang (5) emacs (5) misc (5) latex (4) editor (4) book (4) php (4) worldly (4) android (4) politics (4) etymology (4) wrong (3) security (3) tour-de-scheme (3) kbd (3) c (3) film (3) network (3) cook (2) poem (2) physics (2) wm (2) treta (2) philosophy (2) comic (2) lows (2) llvm (2) perl (1) en-esperanto (1) audio (1) old-chinese (1) kindle (1) german (1) pointless (1) translation (1)

Elsewhere

Quod vide


Copyright © 2010-2020 Vítor 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.