quinta-feira, 17 de outubro de 2013

Não é TRI

Uso o transporte público de Porto Alegre todos os dias, principalmente as lotações. Por isso, fiquei entusiasmado com a implantação do cartão de transporte integrado (TRI).

Durou pouco minha empolgação. Assim que descobri como funciona, percebi que o cartão foi concebido para beneficiar unicamente as empresas de transporte. Calculo que o objetivo inicial tenha sido o de eliminar as fraudes com as fichas.

Em primeiro lugar, é preciso cadastrar-se e são exigidos CPF, RG e comprovante de residência. É uma invasão de privacidade difícil de aceitar para quem quer apenas pagar pelo serviço de locomoção. Além disso, é preciso esperar 10 dias. Não, o visitante que estiver alguns dias em Porto Alegre não pode comprar um cartão. Em outros lugares, como Londres e Paris, pode-se comprar um cartão de transporte em qualquer esquina.

Como se as exigências burocráticas não fossem suficientes, os aspectos financeiros do sistema são um insulto ao consumidor. O portador abastece seu cartão com dinheiro, não com passagens. Mesmo pagando antecipadamente, se as passagens forem reajustadas, o paisano terá subtraído o novo valor a cada deslocamento. Além disso, não há qualquer desconto! Comprar cem passagens não confere nenhuma vantagem sobre comprar dez.

Em resumo, o cartão TRI é um esquema de prevenção de fraudes e de antecipação de receita. As necessidades dos clientes não entraram na equação. Passo por várias bancas de revistas pelo centro e torço pelo dia em que eu vou poder entrar numa para comprar um cartão de transporte para uma semana, um mês ou um dia.

terça-feira, 15 de outubro de 2013

Comandos distribuídos

Imediatamente depois de escrever o pequeno script do artigo anterior para procurar discos cheios nos servidores, percebi que poderia escrever algo um pouco mais genérico.

O código abaixo aceita como parâmetros uma lista de servidores e um comando a ser executado nesses servidores.

my $servers={
  srv01 => {user=>'user1', pass=>'pass1'},
  srv02 => {user=>'user2', pass=>'pass2'},
  srv03 => {user=>'user3', pass=>'pass3'}
};

my $cmd=pop(@ARGV);
print "$cmd:\n";
for my $server (@ARGV) {
  my $pass=$servers->{$server}->{pass};
  my $user=$servers->{$server}->{user};
  print "$server\n";
  my $data=`plink -pw $pass $user\@$server $cmd`;
  print "$data\n";
}

Por exemplo, para executar um "uname -a" em srv01 e srv02, eu poderia chamar o script assim (o nome do arquivo com o script é exec.pl):

exec.pl srv01 srv02 "uname -a"

Minha vontade era a de oferecer oções de linha de comando para referenciar grupos de servidores por nome, mas ainda não venci a preguiça.

sexta-feira, 11 de outubro de 2013

df distribuído

Tenho me deparado muito com discos cheios em diversas máquinas. Então, resolvi encontrar uma maneira de identificá-los mais rapidamente. Juntanto Perl e Plink (a versão de linha de comando do Putty), cheguei a uma solução bem simples.


my $servers={
  srv01 => {user=>user1, pass=>pass1},
  srv02 => {user=>user2, pass=>pass2}
};

foreach $server (keys %$servers) {
  my $pass=$servers->{$server}->{pass};
  my $user=$servers->{$server}->{user};
  print "$server\n";
  my $data=`plink -pw $pass $user\@$server df -h -l`;
  my @lines=split(chr(10), $data);
  for my $line (splice(@lines,1)) {
    my @cols=split(/\s+/, $line);
    (my $pct=$cols[4])=~s/\D//g;
    print "\t$cols[0] -> $cols[4] ($cols[5] has $cols[3] free)\n" if $pct>90;
  }
}


Através do plink, executo um "df -h -l" em cada máquina. Depois, basta processar o resultado, que será parecido com isto:


srv01
  /dev/sda1 -> 95% (/ has 500MB free)
srv02
  /dev/sdc1 -> 98% (/home has 25MB free)


Só são mostrados os discos com mais de 90% de uso.

terça-feira, 1 de outubro de 2013

Aumento de impostos já!

Uma peculiaridade dos impostos no Brasil é que os impostos sobre mercadorias são calculados por dentro. Isso significa que o valor efetivamente pago não é exatamente o indicado pela alíquota. Uma alíquota de 12%, por exemplo, corresponderia a uma alíquota de 13,63% se o imposto fosse cobrado por fora.

Se o consumidor for à Argentina e comprar uma mercadoria de valor 100, pagará adicionais 21 a título de IVA. A alíquota é de 21%. Se um consumidor brasileiro comprar uma mercadoria com ICMS de 17%, pagará, em realidade, quase 20,5%. Porque o ICMS é calculado por dentro, o preço final tem que ser inflado para que os 17% englobem também o valor agregado por ele mesmo. Isto é, os 17% têm que representar 17% do valor total pago e não apenas 17% adicionais sobre o custo da mercadoria.

Para calcular o quanto a alíquota realmente representa sobre o custo da mercadoria, é preciso multiplicá-la por 1/(1-a), sendo a o valor da alíquota.

Essa conta tem a particularidade de que, quanto maior a alíquota, mais ela foge do valor aparente. Uma alíquota de 30% representa mais de 42% sobre o valor da mercadoria. Uma alíquota de 50% representaria dobrar o valor do produto, o que equivaleria a uma alíquota de 100% por fora.

Esse cálculo fica interessante depois dos 100%. Os números ficam negativos!

Então, proponho que, uma vez que nossos legisladores não demonstram o devido interesse em simplificar os impostos ou diminuir as alíquotas, façamos campanha por aumento de impostos. Como deputados não costumam ser muito bons em contas, podem achar positivo que o ICMS seja aumentado para 500%. Talvez não gostem de descobrir que isso significará que terão que devolver 125% do preço dos produtos (os consumidores ganharão o produto e mais uns pilas).

A solução pode ser, dada a pouca tendência para a simplicidade dos nossos legisladores, aumentar o imposto de renda acima dos 100%. Então, pagaríamos mais do que ganhamos, mas ganharíamos por comprar as necessidades diárias. Não seria muito mais absurdo do que a situação atual.

quinta-feira, 26 de setembro de 2013

Evitando o ruído matinal

Há uma revolta crescente contra o grupo que domina a mídia no Rio Grande do Sul. Eu não consumo nenhum de seus produtos; evito até os da TV aberta. E não é por ideologia; é porque o conteúdo é muito pobre mesmo.

Este ano descobri o Télématin da TV5 (TV francesa). Não havendo qualquer outro motivo para aprender a língua francesa, ter o prazer de assistir à programação matinal da TV5 já deveria bastar. Os apresentadores são bem-humorados, o conteúdo é leve e informativo. Quando discutem política ou economia, o fazem com seriedade e alguma profundidade (o tempo, é claro, também é exíguo na TV francesa).

Fujo assim do ruído matinal dos noticiários da RBS e da Globo. Eles contêm excesso de violência (quem quer saber de violência durante o café da manhã?), excesso de futebol (mesmo quando não há jogos!) e bobagens como a abertura das bolsas. Se o movimento de fechamento das bolsas informa pouca coisa, que dirá o de abertura! A variação diária da bolsa de valores é apenas ruído: metade dos dias ela sobe e metade dos dias ela desce. Agregar uma explicação é patético, quando não malicioso.

Os apresentadores da TV5 conseguem ser divertidos sem cair no ti-ti-ti que as mocinhas da RBS julgam apropriado para um programa de informação. Os franceses também falam de esportes, mas não se limitam ao futebol e tampouco gastam tanto tempo nele quanto os jornalistas locais. De quando em vez tenho a sorte de assistir às Escapadas de Petitrenault (que segue o Télématin), um programa no qual o Monsieur Petitrenault passeia pela França conversando com as pessoas principalmente sobre a culinária local, mas sempre em lugares interessantes (e nunca dentro de estúdio).

O principal jornal gaúcho, a Zero Hora, é o maior representante da pobreza jornalística do estado. Tem muito mais opinião que análise. Dificilmente as notícias são colocadas num contexto histórico; parece que retórica basta. A seção mais informativa são os classificados. Na última página, para fechar em grande estilo, temos a opinião de um senhor que confessou que lê apenas o jornal para o qual escreve.

A Globo consegue inadvertidamente agregar algum humor quando convoca um correspondente estrangeiro em Buenos Aires para apresentar notícias da Venezuela. Ou alguém em Kuala Lumpur para informar sobre Tóquio (ao vivo!).

Eu tenho sorte, posso usufruir da TV5, da TVE, da BBC e até da DW (que tem programação em espanhol e inglês). É uma pena que muitos de meus compatriotas estejam presos ao mundo pequenino (e um tanto sombrio) das mídias nacionais, porque elas ofercerem muito pouco.

quarta-feira, 11 de setembro de 2013

Respeito

Recebo todos os dias a "Word of the Day" do dicionário Webster. Frequentemente, as palavras são de origem latina e essas dificilmente oferecem alguma novidade para quem tem como língua materna o português. Mesmo assim, as análises etimológicas que sempre acompanham são interessantes, porque revelam como as duas línguas (o português e o inglês) maltrataram de formas diferentes as palavras.

A última palavra do dia foi respite, cuja avó latina é respectus. Em português, respeito descende dessa palavra. A latina respectus significa "ação de olhar para trás".

Consequentemente, quando um rapaz passar por uma moça brasileira, cheia de graça, beleza e ziriguidum e olhar para trás, estará, em realidade, demonstrando respeito no sentido mais latino da palavra.

terça-feira, 10 de setembro de 2013

Suporte e seus padrões

Tenho a impressão que o trabalho do suporte deve ter muito em comum com a medicina. Os usuários repetem certos padrões de comportamento que os médicos devem testemunhar com frequência. Cataloguei alguns padrões muito comuns de comportamento:
  1. Terceirização - alguns usuários pedem aos colegas para conversar com o suporte; o grande problema é que os colegas geralmente não conseguem esclarecer nenhuma questão, porque não sabem o que houve (sabem apenas que algo de ruim aconteceu);
  2. Diagnóstico precoce - talvez baseando-se em sua experiência, muitos usuários gostam de entregar o diagnóstico pronto para o suporte; infelizmente, estão com frequência errados, ou o diagnóstico é insuficiente;
  3. Informação insuficiente - é comum ver imagens de telas (inclusive BMPs de 3MB com "Page not found - 404"), sem o devido contexto, quando muito mais simples seria um número de documento ou uma URL;
  4. Atraso - alguns usuários esperam uma ou duas semanas antes de reclamar de um problema; com frequência, o problema torna-se insolúvel (porque os logs já foram apagados) ou impraticável (recuperar um backup do banco de dados, quando teria sido possível executar uma consulta de flashback no momento da falha);
  5. Dificuldade com o óbvio - não importa quanta informação o sistema oferecer, para certos usuários, todos os avisos são inescrutáveis ("por que o sistema está dizendo que minha senha expirou?").
Alguns usuários mais avançados conseguem aplicar combinções desses padrões. Por exemplo, existe a terceirização atrasada com informação insuficiente ("meu colega teve um problema na semana passada, mas não lembro qual a tela"). Ou ainda, a perniciosa terceirização atrasada com diagnóstico precoce e informação insuficiente ("já resolveram aquela questão do banco de dados que deu problema para o fulano no mês passado?").