abr 2012 26

Devido aos repetidos escândalos políticos em Brasilia, a carga tributária insuportável e o inevitável fim do mundo previsto pelos Maias, muitas pessoas já começaram a construir seus próprios foguetes caseiros para fugir do Brasil.

Escolas de todo o país já ensinam as teorias básicas de Von Braun desde a 5a série, antecipando-se à grande demanda por engenheiros de foguetes que esta nova fase do mundo trará.

Para quem já estiver trabalhando na construção de seu próprio míssil intercontinental caseiro, talvez o código fonte do programa que levou o homem à Lua poder ser bastante útil.

Esta página tem dezenas de links para materiais raríssimos, inclusive páginas originais escaneadas do código fonte mais valioso da corrida espacial.

(Bem que podia ser verdade que as escolas estavam ensinando as crianças a construir foguetes, não acham? Quase meio século depois da Apollo 11 chegar à lua o Brasil ainda não fez um foguete que fosse sair do chão.)

abr 2012 23

Quem trabalha com software já ouviu falar em algum “framework” de testes. Programadores de Java tem o JUnit, onde testam-se pequenas unidades de código, normalmente classes.

Quem trabalha com linguagem C, há cerca de 40 anos vem criando seus próprios sistemas de testes. Não é uma linguagem dinâmica, portanto a introspecção de código é difícil. Usam-se assertions para proteção dinâmica do programa(“se é para falhar, falhe logo e faça barulho!”), mas há também ferramentas para testes do código-fonte, bem como testes de caixa-preta onde você fornece dado A, recebe dado B e verifica assim se essa função está nos conformes sem ter que estudar o funcionamento interno(daí o termo proveniente da aviação).

Diversas outras linguagens tem sistemas de testes específicos.

Quem trabalha com software talvez pense que testar seja apenas um luxo, um algo a mais no fim da produção de software. Não é bem assim.

Tudo na computação baseia-se em pequenas premissas, as quais sendo falsas, ou incertas, podem gerar catástrofes. Ao testar um software, estamos buscando uma prova lógica, matemática, para tal programa.

A maior parte dos frameworks de testes se baseiam no sistema de verificação de tipagem. Dada uma entrada na forma A, busca-se uma saída na forma B. Essa tradução de A para B envolve a decisão sobre os tipos de A e B. Por exemplo, dado o número de CPF de um cidadão, retorne seu nome. Nesse caso mapeamos um número para um nome. Caso a função retorne qualquer coisa que não pareçȧ ser o nome de uma pessoa então algo de errado aconteceu.

Lembro-me de um colega de trabalho que me olhava feio quando eu saltava a etapa de testes ao compilar e instalar programas no Linux. Dizia-me que aquilo não era certo. E eu lhe dizia que esses testes já tinham sido executados milhares de vezes até tal software chegar a minha máquina. Não preciso de um framework de testes para saber que o colega estava certo e eu errado.

Testes de software fazem parte de uma área da computação chamada Verificação Formal. Testar software não é uma exclusividade de um determinado modismo de época(insira aqui seu nome mercadológico predileto, Agile, XP, etc).

Seu programa maravilhoso para gerar números ganhadores da Megasena funcionou. E agora, você pode provar?

Atualização 26/4: A professora Mariana Penna nos enviou a dica da biblioteca GLib para testes em linguagem C. Nada melhor do que falar com quem entende!

abr 2012 18

Lá em casa ninguém tem conta no Bradesco. Nunca tive, ninguém teve.

Perdido em uma estante de livros, há um aparelho ligado a um número de telefone que foi adquirido em conjunto com um pacote de TV a Cabo. Ninguém utiliza esse número, nunca foi ouvido tocar, nem sabemos qual é o número desse ramal. Há um certo tempo que o silêncio foi rompido.

Eis que o Bradesco, ou alguém agindo em seu nome, tem ligado, em sequência, a todos os números telefônicos da minha casa. Ligam primeiro naquele número esquecido. Depois ligam no telefone principal, o único que usamos. E logo tentam em uma outra extensão do número principal, que raramente é usada, também fruto de um pacote desses qualquer.

Três telefonemas, em sequência – do Bradesco.

Agora vem a parte interessante: como nas melhores famílias, lá em casa todos dividimos as despesas. Cada telefone está em nome de uma pessoa diferente, de mesmo sobrenome.

Como o Bradesco obteve os três números, cada um em nome de uma pessoa distinta, e ligam sempre em sequência neste mesmo endereço perguntando por uma só pessoa?

Arrisquemos uma dedução natural.

As ligações em sequência nos dizem que, no sistema deles, os três números constam para este mesmo endereço – para alguém específico neste mesmo endereço. (Sempre perguntam pela mesma pessoa.)

Para que isso seja possível, foi preciso fazer uma seleção e posterior organização dos números, relacionando os mesmos a uma pessoa específica neste endereço – para isso é preciso estabelecier uma relação qualquer do tipo marido/mulher, pai ou mãe e filhos, etc. Afinal, desconhecidos completos não moram na mesma casa.

Esse tipo de informação não consta em bancos de dados comuns, constam apenas em cadastros completos. Resumindo: foi preciso que ligassem semânticamente o nome da pessoa pela qual perguntam, ao nome dos outros proprietários das outras linhas. Eles precisavam saber, também, que as outras pessoas moravam nesse local, pois sempre perguntam por uma terceira pessoa.

À partir dessas informações podemos inferir uma série de outros fatos que não vem ao caso.

O importante é ressaltar que ninguém aqui tem conta no Bradesco, nunca lhes fornecemos nossos dados e eles jamais poderiam ter efetuado essas ligações telefônicas. O problema não é só o incômodo com o spam telefônico, mas o fato que está por trás desse spam: como é possível terem cruzado todos esses dados?

O que nos traz ao velho debate de privacidade na Internet.

Enquanto politiqueiros de plantão empurram adiante o tal “Marco Civil da Internet”, nossa privacidade é sistematicamente violada por estabelecimentos fora do ciberespaço. É bem capaz que o posto de gasolina, onde nunca tive crediário, tenha mais informações sobre mim que qualquer portal social da Internet do qual já tenha participado.

Como podemos ter privacidade online, se essa privacidade não existe no mundo fora da Internet? Seria análogo a impedir fraudes via Internet, quando as fraudes correm soltas no mundo real.

Pessoas que não tem a menor vergonha de entrarem fisicamente em um estabelecimento com seus rostos à vista para emitirem cheques falsos terão vergonha em praticar fraudes pela Internet?

Como é que a operadora X de cartões de crédito pode me oferecer um valor tal de crédito, sem que eu jamais tenha tido conta com eles? Os cadastros ocultos estão funcionando a pleno vapor. Corporações trocam informações pessoais de pessoas que jamais autorizaram tais transações. Nada disso é impedido pelas autoridades, mas o Congresso insiste em regulamentar a Internet. Qual a lógica disso?

Controlar a Internet dará muito mais lucro que regulamentar o que é feito com nossas informações pessoais em estabelecimentos comerciais tradicionais. Então a Internet está na mira de nosso Congresso, mas quem viola diariamente nosso direito constitucional à privacidade, nas ruas da cidade, não está.

A privacidade nos bancos brasileiros é inexistente, em especial nos bancos politiqueiros, controlados pelo governo. É possível obter o extrato bancário de uma pessoa qualquer após uma boa conversa – o autor deste blog é testemunha disso.

Exemplo 1: Recentemente um grande banco estatal forneceu, a um advogado conhecido do autor, todos os dados de um cliente desse advogado. Ao sair da agência o advogado notou que não tinha procuração para agir especificamente naquele banco! Sem querer, agindo legalmemte em nome desse cliente(tendo seu consentimento), o advogado havia quebrado seu sigilo, sem que este tivesse lembrado de incluir na procuração aquela autorização explícita. Ele estava moralmente autorizado pelo seu cliente para fazer isso, mas legalmente não poderes para isso. Traduzindo: quebrou o sigilo bancário do cliente “no lero”. Essa situação provavelmente se repete milhões de vezes em bancos de todo o Brasil.

Exemplo 2: O escândalo da quebra ilegal do sigilo de um caseiro que denunciou o ex-ministro Antônio Palocci.

Todo cidadão sabe que o sigilo bancário é inexistente no Brasil, mas esse é apenas um problema minúsculo em um país onde sequer a vida humana é respeitada; um país que relativiza crimes terríveis dependendo das circunstâncias políticas.

Pelo menos as autoridades fiscais do Brasil tem trabalhado. Nos ranks do Banco Central pode-se conferir o nível de insatisfação do povo com os bancos – não se surpreenda, as reclamações não são poucas.

Não precisa ser nenhum Sherlock Holmes para decifrar esta charada. O telefone lá de casa ao qual o Bradesco ligou primeiro nunca foi fornecido em qualquer cadastro, de qualquer pessoa lá de casa. Ninguém tem esse número. Portanto quem forneceu o telefone ao Bradesco, com o nome correto do proprietário, só pode ter sido a provedora de TV a cabo.

abr 2012 16

A história da Computação comercial é extremamente curta e precoce. A própria Computação é uma ciência nova, com menos de 100 anos de vida.

Nos últimos 50 anos o mundo tecnológico deu saltos enormes. A capacidade de processamento de um computador atual de baixo custo é milhares de vezes superior ao do maior computador existente em 1970.

Este fenômeno, de enorme progresso em pequeno espaço de tempo, é comum nas áreas científicas que se encontram nos estágios iniciais de descobrimento.

A eletrônica surge com a válvula termiônica, primeiro dispositivo que permitia controlar o fluxo de corrente elétrica sem peças mecânicas. Lee de Forrest inventava assim o ramo da eletrônica ao fim do século XIX. Em pouco mais de 100 anos, um chip menor que uma moeda de 5 centavos possui centenas de milhões de válvulas elétricas funcionando a velocidades astronômicas.

E o que isso tudo tem a ver com responsive sites?

Bem, é que como ocorre em toda ciência que se encontra nos primórdios, a Computação é também vítima de aproveitadores do mercado. A cada dois anos parecem inventar novos termos mercadológicos para as coisas mais comuns que temos na computação, coisas triviais, óbvias. A obsolescência planejada, a necessidade do mercado de gerar hamburgueres para serem consumidos de imediato, força a aparição de idéias redundantes, repetidas e copiadas de poucos anos atrás.

Eu ainda não preciso trocar o meu primeiro iPhone. Funciona que é uma perfeição, mesmo tendo caído dentro de uma caixa d’agua há pouco tempo atrás. Mas o mercado já está me intimando a comprar o mais novo e espetacular iPad! Eu sequer tive o primeiro!

O que nos traz de volta ao assunto do post.

Pergunta: O que diabos é um “Responsive Site”?

Resposta: Um “Responsive site” é absolutamente nada.

É mais uma peça de bullshit mercadológico! Estão simplesmente dando nomes diferentes a coisas que existem desde 1970!

Basicamente, ou você tem um terminal burro ou um terminal inteligente. Assim eram chamados em 1970. Com a Internet, passamos a usar terminais relativamente burros: o navegador web por exemplo.

O Google decidiu que os terminais burros podem ser educados, transformando-os em terminais ricos e inteligentes. Surgiram assim aplicativos super interessantes como o Maps e o Gmail. Mas o Maps e o Gmail em nada se comparam aos softwares que exploram o potencial dos terminais inteligentes. Qualquer jogo tridimensional é um programa de computador um milhão de vezes mais complexo que o software do Gmail que roda em seu terminal. (O servidor do Gmail é, possivelmente, um sistema complexo. O terminal não é.)

O mesmo debate que existiu em 1975 quando surgia o fenômeno Bill Gates, existe hoje: o futuro está desktops poderosos(terminais inteligentes) ou desktops magros, com um servidor central(terminais burros)? O Google aposta nos terminais leves, no Chromium OS (um Linux direcionado à WWW). E a Microsoft aposta na sofisticação: terminais com alto poder de processamento.

A resposta ao que são “Responsive Sites” encaixa-se então nesse contexto: devemos programar o terminal, torná-lo inteligente? A pergunta que já vem sendo feita há 40 anos, parece ainda não ter resposta definitiva. A privacidade é um problema sério nos sistemas estilo Google. Ao usar sistemas do Google, sua privacidade é zero. Mesmo ao pagar por tais serviços, as proteções legais oferecidas são restritas pelo próprio conceito de “Cloud”: seus arquivos estão lá, de posse de quem administra a “nuvem”.

A velha máxima da segurança da computação vale aqui: quem possui acesso físico aos recursos, controla tais recursos. Quem tem, fisicamente, o disco rígido que armazena os dados da nuvem, tem controle dos dados contidos nesse disco. (Exceto quando são empregadas técnicas avançadas de criptografia, as quais o usuário final raramente emprega.)

Alguns exemplos de termos antigos sendo recauchutados por marqueteiros:

Virtualização: Todos os mainframes, “desde sempre”, tiveram tecnologia de virtualização. Sistemas como o VMS são especializados em virtualizar ambientes isolados, como se houvessem vários sistemas operacionais em um hardware apenas. De algum tempo para cá, o hardware para PC’s passou a contar com suporte físico à virtualização, e assim o termo tornou-se popular entre usuários caseiros.

Cloud Computing: É o processamento e armazenamento de dados centralizado. O debate de 1970 novamente: mainframes ou minicomputadores? Devemos gravar nossos arquivos em um super computador localizado remotamente, ou um disco rígido externo que podemos transportar conosco é mais adequado?

Responsive Sites: A WWW deve ser transformada em um meio de aplicativos inteligentes como Gmail e Maps? Ou isso deve ficar nas APIs nativas do Windows, Mac OS X e Linux? Aplicativos rodando dentro de navegadores podem chegar a competir com aplicativos nativos?

Padronização: Também um velho debate. Interesses comerciais sempre em guerra com padrões propostos. Inserir a novidade desenvolvida nos laboratórios, ou ficar esperando que a novidade se torne um padrão? O Google, buscando inserir capacidade avançada para 3D(WebGL) em seu navegador, e a Microsoft buscando aprimorar a capacidade 3D nativa(óbvia reação aos planos de terminais magros).

Como podem ver, não há nada novo nos conceitos de Cloud Computing, Responsive Sites, Virtualização e outros bullshitismos mercadológicos do momento.

A regra continua a mesma: faça um bom produto, um sistema rápido, limpo, usável, e ele será usado. Distrair-se com termos da moda é uma imensa perda de tempo.

abr 2012 13

UnB suspende aulas em alguns cursos após ameaças contra alunos

Os corredores do Instituto Central de Ciências (ICC) Norte na Universidade de Brasília (UnB) amanheceram mais vazios nesta sexta-feira (13/4). Grande parte dos alunos não apareceu para as aulas nesta manhã, depois que mensagens foram publicadas na internet com ameaças contra os estudantes. Os textos diziam que a universidade sofreria um atentado hoje, dia 13 de abril. O ICC fica no prédio central do câmpus do Plano Piloto e abriga grande parte das aulas dos cursos de Ciências Sociais.

Page 2 of 13012345102030...Last »