Archive for the ‘Programação’ Category

c-jump-box001-custom.jpg

Tá bom, isso não é o que eu gostaria de ganhar dos meus pais quando eu tinha uns 12 anos, mas um jogo de tabuleiro que ensina noções básicas de programação me parece bem legal agora….Brincadeiras a parte, se o seu filho(a) é um mini gênio você pode comprar para ele o C-Jump, que utiliza uma corrida de esqui para ensinar loops, ifs, variáveis, e a sintaxe usada em C, C++ e Java. Esse não é o melhor presente quando se tem 12 anos ? OK, um PS3 ou X-Box é melhor…

C-Jump é vendido por $24.95 dolares no site da empresa homônima.

c-jump-box002-custom.jpg

Via: OhGizmo!

A empresa Batori, especializada em segurança, fez uma análise sobre as vulnerabilidades em sistemas baseados na web e destaca dez delas como sendo a causa de 89% dos das principais falhas, além de afirmar que scanners e analisadores de código não são capazes de detecta-las, sendo que apenas analistas experientes podem corrigi-las.

São elas:

1) Cross-site scripting (XSS): correspondem à 13% das ocorrências, Permite executar scripts maliciosos no navegador do usuário.

2) Manipulação de dados ocultos: com 13% das ocorrências, permite acesso à dados ocultos. Clique em “Exibir” e depois “código-fonte”, e caso o site que voce visita esteja com este problema, voce poderá ver nomes de usuário, senhas de acesso a banco de dados, códigos internos etc…

3) Falha ao restringir acesso: são 11% das ocorrências, a política falha de acesso ao sistema permite ver áreas restritas. Eu vejo muito site por aí, inclusive este que usa um template Wordpress, que provavelmente tem esta falha. É só ficar vasculhando com o explorer, a árvore de diretórios, por exemplo.

4) Tratamento indevido de erro: 9% das ocorrências. Um código que não foi muito bem testado pode gerar um erro de script, por exemplo, revelando chaves e senhas no browser.

5) Armazenamento de criptografia não-seguro: também 9% das ocorrências. Esta falha me lembrou que quando eu fiz um estágio na SAD-RJ (Secretaria de Estado de Administração) e trabalhei com um servidor Digix. Na documentação, dizia que eu não poderia usar uma senha em inglês (até hoje não sei o motivo), mas é claro que eu tinha que testar. Resultado: no arquivo de senhas, todas elas estavam criptografadas, menos a minha.

6) Comunicação insegura: são 8% das ocorrências, aonde o sistema trafega dados sensíveis através de canais não-seguros.

7) Falha da especificação de requisitos: correspondem a 8% das ocorrências. Onde estavam os analistas de sistemas?

8.) Injeção de comandos: responsável por 8% das ocorrências, explora a injeção de comandos através da aplicação para serem processadas por outros sistemas ou camadas (SQL injection, SMTP injection, HTML injection, etc…)

9) Processo inadequado de cadastro de usuários: 5% das ocorrências. Precisa explicar mais?

10) Quebra de autenticação e gerenciamento de sessão: 5% das ocorrências.

O restante responde por 11% das ocorrências.

Conclusão: O pessoal gosta de pôr no curriculum que é analista de sistemas, mas de fato, não é a verdade. Um analista de sistemas não codifica, ele desenha e projeta o sistema, prevendo todas os aspectos que o sistema deverá atender (e isso inclui a segurança). Então com o sistema redondo no papel, parte-se para a codificação. A maioria dos problemas acima é de projeto e teste mal feitos. Quando se inicia o sistema diretamente do código, perde-se o foco do projeto e depois, com o sistema rodando, tenta-se corrigir e fica aquele mafuá de gambiarras, lenvando a essas falhas.

A Microsoft informou que as contas vão bem. Com faturamento de miseros US$13,76 bilhões no último trimestre, devido ao aumento de vendas do Vista e do Halo 3, venceu a disputa já comentada aqui e conseguiu comprar a participação de 1,6% no Facebook, por também uns trocados: US$ 240 milhões. Bill Gates está de olho nos 48 milhões de usuários do site. Para não ficar pra trás, o Google decidiu partir para outra estratégia: se não pode ter o Facebook, vai acabar com o mercado dele.

baltan80.jpg

O Facebook recentemente abriu um espaço para novos desenvolvedores, e chegou ao montante de 5 mil programas produzidos que posteriormente foram adotados por milhões de usuários do site, os quais os usam para aumentar a interação na rede de relacionamento. O Google então resolveu reunir no primeiro dia deste mês, os sites de relacionamento Orkut, LinkedIn, hi5, Friendster, Plaxo e Ning, para juntos estabelecerem normas para o desenvolvimento de programas para os usuários destas redes se comunicarem entre si (mas não com o Facebook), sob uma plataforma que está sendo chamada de OpenSocial. Os criadores das ferramentas mais acessadas no Facebook: iLike, Slide, Frixter e RockYou devem anunciar que farão versões destas aplicações para o OpenSocial.

As especulações sobre como o lançamento do OpenSocial vai afetar o segmento de redes sociais tem claro objetivo: amarelar o anúncio de um novo sistema de publicidade no Facebook, que é espaço exclusivo da Microsoft e foi criado para competir com o Google. Como notícia ruim nunca vem sozinha, a Microsoft irá pagar US$709 milhões (497 milhõe de euros) na multa por abuso de posição dominante (imagina!) movido pela Comissão Européia.

No capítulo anterior: Google lança ‘Android’, sistema operacional aberto para celular

Chamado de Podloso, foi descoberto pela empresa Kaspersky Lab especializada em segurança digital e se trata do primeiro vírus para Ipods. Felizmente ele não se replica, ipod_virus.jpgtendo que ser copiado e executado pelo usuário desavisado e só infecta aqueles que usam Linux em seus aparelhos (para ampliar as capacidades do iPod). E aparentemente, o vírus, não faz nada além de infectar os arquivos “.elf” do HD do Ipod, fazendo com que o seu usuário receba a mensagem “Voce foi infectado pelo Oslo, o primeiro vírus para iPods com Linux” (”You are infected with Oslo, the first iPodLinux Vírus” no original). Dessa maneira, o vírus não causa muito estrago, tendo sido criado, provavelmente, para demonsntrar a fragilidade do sistema. Mas como se sabe, todos os códigos verdadeiramente maliciosos nasceram assim…

Ao ler este artigo no C#BR, fique preocupado com a falta de formação em ciência de computação que o pessoal tem hoje em dia. Daí eu ter escrito esta crítica.

Antes de mais nada comecemos com uma pérola encontrada no Manifesto do Xprevail: know_the_xprevail.gif“Esse modelo traz o benefício da total transparência para os objetos de negócios, pois eles nem mesmo sabem que estão sendo persistidos”. É uma base de dados ou inteligência artificial? Será que os objetos concientes do Prevayler, um dia irão se unir para
escapar da escravidão .NET e dominar os humanos?

O documento não explica os conceitos, já que diz que se baseou no Prevayler mas não usa nenhum código anterior, além de suas próprias idéias (?).  Qualquer conceito que se  preza independe da linguagem, como criptografia, rede IP etc…. Ele não explica o conceito, porque já deve ter partido para a programação direto. Ou seja, ele NÃO tem um conceito definido.

Outra pérola: “A aplicação pode ser negativamente afetada por um grande número de classes ‘auxiliares’ geradas para realizar as operações em cima dos objetos de negócio”. Muto frágil para um código aberto. Mais um indicativo de falta de conceito, além de erros básicos na contrução da hierarquia de objetos. Nada que um bom trabalho de análise não corrija. Mesmo assim a análise precisa de uma orientação, ou seja do conceito. Nem pensar em olhar o código.

Como já havia me decepcionado com o Xprevail, buquei conhecer o Prevayler, para checar se o problema é somente do Xprevail. Ao procurar sobre Klaus Wuestefeld, criador do “conceito”, só encontrei um site em construção. Inclusive no Wikipedia, onde talvez um dia houve uma biografia, agora há um “404″. Porém encontrei no Database Debukings, uma discussão reveladora sobre o assunto com a participação do próprio Klaus.

Enfim, “prevalência”, tirando toda a fantasia livre-Java-moderninha é nada mais do que acessar dados em memória RAM. Putz, eu tinha isso em DOS com o RAMDISK, há quinze anos atrás. Se eu criar uma instância MySQL no RAMDISK então eu teria o melhor dos dois mundos, velocidade e SQL! Até com Clipper eu já fiz isso!

Vão dizer que o problema é que Klaus é brasileiro. Mas, como já falei, a falta de um conhecimento de ciência da computação mais profundo, pode levar a acreditar qualquer coisa que pareça promissora. Para desafiar a substituir o uso de banco de dados, que são baseados em teoria matemática (Teoria dos Conjuntos e Estatística) , a “prevalência” deveria apresentar conceitos ainda mais sólidos! Mas nem conceito eu encontrei…

Se lhe apresentarem um novo conceito de acessos a dados diferente do convencional só dê atenção se eles tiverem um exemplo rodando uma folha de pagamento ao mesmo tempo que atualiza um plano de contas…

Quem conhece o código interno (standart) utilizado pelo R/3 (o ERP da SAP) , sabe que piratas-do-caribe01.jpgtodos os requisitos técnicos (regras de programação, compatibilidade e performance) que são impostos aos desenvolvedores, raramente são praticados pela empresa, o que é muito estranho. E já ouvi boatos, que não posso confirmar, de consultores que encontraram o seu próprio código, feito para um cliente que usava o R/3, no código standart SAP, como parte do pacote vendido às empresas.  Acho que só iremos para de ler notícias como essa quando todos os códigos forem livres. Mas aí, como garantir os direitos autorias?

Segue a notícia no TI Inside.

Depois de tanto tempo trabalhando em desenvolvimento, tenho me tornado muito cético em relação às modas que volta e meia aparecem por aí. É claro que nem todo melhora deva vir de um novo algoritmo, pois a padronização de procedimentos facilita bastante a vida. Porém, vejo que a maioria dos modimos empresariais não vai muito além de uma promessa. E quando é realmente implementado, chega-se a conclusão de que é totalmente inútil. Já estive em projetos que o UML nada mais era do que propaganda. Vi gente formada em PMI definindo um prazo de fim de projeto, que no mundo real durou o dobro do tempo. Lá por volta de 1990, quando li sobre Análise Orientada a Objetos de Yourdon, todo objeto deveria executar serviços (ao contrário da palavra “método” que a UML usa). Será que o Yourdon estava à frente do seu tempo?

No meu projeto atual, estava comentando com um colega sobre SOA e ele me disse que o que estávamos fazendo já era integrado com SOA. Respondi: “-Sério? Eu nem havia notado”…

Segue a notícia no TI Inside.
Sobre SOA no Wikipedia.
Link do 2º Fórum SOA.

Será que Paulo Coelho virou programador? Ou Harry Potter, analista de sistemas?

Nada disso. Em primeiro lugar, quero esclarecer o significado real da palavra esotérico:  é o conhecimento restrito a uns poucos, que não é amplamente divulgado, por ser difícil a sua compreensão ou não interessar a quem não está profundamente ligado ao tema. Se aplica a qualquer área do conhecimento humano. Os místicos passaram a usar o termo justamente por que tratam de conhecimentos ocultos, revelados somente aos iniciados, etc…

Neste nosso caso, as linguagens esotéricas (também conhecidas como esolang), são linguagens de computador que não tem um caráter prático, pois foram criadas para demonstrar os limites teóricos da ciência da computação. Às vezes também como brincadeira, mas sempre são linguagens que funcionam baseadas na Máquina de Turing, ou Turing completas.

Alan Turing (1912-1954), foi um matemático britânico que criou um dispositivo teórico, a Máquina de Turing, que é o modelo abstrato de um computador digital. Se voce pode hoje em dia usar um software, isso se deve à Maquina de Turing. Simplificando, dizer que uma linguagem de programação é Turing completa significa que ela pode realizar qualquer tipo de cálculo, desde que tenha memória para isso. Nem todas são. O SQL, por exemplo, não é.

Uma das mais populares linguagens de programação esotéricas é a Brainfuck (o nome é este mesmo, algo um pouco pior que um quebra-cabeça). Foi criada por Urban Miller em 1993, com a intenção de criar o menor compilador possível e é baseada em outra linguagem, também esotérica, a False. Formalmente, a Brainfuck requer um vetor de células de memória, iniciando na posição zero e compreende apenas oito comandos:

  >  Move o ponteiro de memória para a direita;
  <  Move o ponteiro de memória para a esquerda; 
  +  Aumenta em uma unidade a célula de memória atual;
  -  Diminui em uma unidade a célula de memória atual; 
  .  Exibe  conteúdo da célula de memória atual; 
  ,  Permite a entrada de um caracter e o armazena na célula de memória atual;
  [  Salta para o comando após ao "]“, quando a célula de memória atual é igual a zero 
  ]  Volta o programa para a posição de memória depois de “[".

Como é Turing completa, pode-se fazer qualquer cálculo, porém escreve-se muito. O programa "Hello Word" em Brainfuck, ficaria assim:

>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]
<.>>>++++++++++[<+++++++++>-]<—.<<<<.+++.——.——–.>>+.

Existem diversas outras, como a Ook, que é uma versão da Brainfuck, sendo que os comandos são compostos com a palavra Ook (linguagem dos gorilas, na opinião do autor, foi criada como uma paródia ao Brainfuck). Uma longa lista pode ser encontrada na página dedicada a elas no Wikipedia.

Se voce já estudou programação não importa em que linguagem, já deve ter visto o código do primero programa exemplo, que em geral gera uma saída na tela ou impressora ou aonde quer que a saída do software, com os dizeres “Hello World!”.  É o programa mais básico e muitas vezes já exibe a complexidade da linguagem.

Quase toda apresentação de programação tem este programa e eu achei curioso que o primeiro post exemplo do Wordpress (aonde está este blog), também se chama “Hello World!”.  Assim, achei por bem que este fosse o primeiro post do blog (depois da apresentação), para seguir a tradição.

A título de curiosidade segue um link para uma coleção de códigos de programas “Hello World” em diversas linguagens de programação:

The Hello World Collection

Robespierre B. Gonçalves