quinta-feira, março 17, 2016

Será que a culpa é mesmo da Dilma, Lula, Aécio, Moro, Cunha, etc, etc, etc.

O Brasil passando por uma dos momentos políticos mais críticos de sua história. Entro no Twitter e encontro a hashtag "#RenanVaiEstudar". De cara, imagino que essa hashtag está relacionada ao político Renan Calheiros. Mas para minha surpresa, ela se refere ao programa Big Brother Brasil.

Será mesmo que a culpa é só dos políticos?

sábado, janeiro 19, 2013

Dica: Bootstrap typeahead com objeto

O objeto padrão de retorno usado pelo typeahead (http://twitter.github.com/bootstrap/), é um array de String, por exemplo:

{
    "options": [
        "Cliente ABC",
        "Cliente XYZ",
        "Cliente LTDA",
        "Cliente SA",
        "Cliente N"
    ]
}

Imagine que vc está está usando o um webservices como source do typeahead, e além de mostrar o nome do cliente na listagem do typeahead, vc precisa do id desse cliente. A solução que encontrei foi criar uma classe Option com operações semelhantes a um objeto String :

function Option (id, value) {
    this.id = id;
    this.value = value;
    this.toLowerCase = function() {
        return value.toLowerCase();
    };
    this.replace = function(){
        return value.replace();
    };
    this.indexOf = function(){
        return value.indexOf();
    };
    this.toString = function(){
        return value;
    };
    this.getValue = function(){
        return value;
    };
    this.getId = function(){
        return id;
    };
}
O código do typeahead ficaria assim:

$('.typeahead').typeahead({
        minLength: 4,
        items: 7,
        source:function (query, process) {
            return $.ajax({
                url:'/customers.json',
                type:'get',
                data:{search_name:query},
                dataType:'json',
                success:function (json) {
                    var options = new Array;
                    $.each(json, function (i, customer) {
                        var option = new Option(customer.id, customer.name);
                        options.push(option);
                    });
                    return process(options);
                }
            });
        },
        updater:function (item) {
            return item.toString();
        },
        highlighter: function (item) {
            var regex = new RegExp( '(' + this.query + ')', 'gi' );
            return item.toString().replace( regex, "$1" );
        }
    });

sexta-feira, abril 03, 2009

redimencionar iframe html

testei esse codigo no ubuntu com o firefox 3.0.8 e nao tive nenhum problema.


<script type="text/javascript">
function autoIframe(frame){
try{
innerDoc = (frame.contentDocument) ? frame.contentDocument : frame.contentWindow.document;
frame.height = innerDoc.body.scrollHeight + 50;
}catch(err){
alert(err);
window.status = err.message;
}
}
</script>


<iframe name="detailFrame"
src ="foo.html"
scrolling="no"
frameborder="0"
onload="if (window.parent && window.parent.autoIframe) {window.parent.autoIframe(this);}">

terça-feira, fevereiro 03, 2009

configurar sistema de arquivos sftp no ubuntu

- baixar o pacote sshfssudo apt-get install sshf
sudo apt-get install sshfs

- criar diretorio do sistema de arquivos
sudo mkdir /media/nome-dir

- dar permissao para o usuario
sudo chown felipe /media/nome-dir

- uncluir o usuario no grupo fuse (nao sei o que eh esse grupo)
sudo adduser felipe fuse

- montar sistema de arquivos
sshfs servidor.com:/qualquercoisa /media/nome-dir

segunda-feira, janeiro 12, 2009

Evite float e double se você quer respostas exatas!

Usar double ou float podem trazer muitos problemas para operações que exijam exatidão, como operações financeiras. Saiba como evitar tais problemas utilizando as alternativas aqui apresentadas...

David Pereira (david@jeebrasil.com.br)

http://www.jeebrasil.com.br/mostrar/47

domingo, junho 08, 2008

backup e restore do ubuntu

Backup
tar -cvpzf /media/sda5/bkp/backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/media /

Restore
tar xvpfz backup.tgz -C /

quinta-feira, junho 05, 2008

segunda-feira, junho 02, 2008

Colegas da PUC

Esses são meus colegas da pós em engenharia da computação na PUC-SP. A foto foi tirada no último dia de aula, sábado passado. Foi muito bacana conhecer todos eles. Vou sentir saudades. Um grande abraço!!!!

quinta-feira, maio 29, 2008

Programas essenciais para o Ubuntu

Avidemux
Editor de vídeo
download: http://www.getdeb.net/app/Avidemux
info: http://ubuntudicas.blogspot.com/2008/01/avidemux-editor-de-vdeo.html

Deluge
Torrents
donwload: http://www.getdeb.net/app/Deluge
info: http://ubuntudicas.blogspot.com/2008/01/deluge-0581-nova-verso.html

Emesene
Instant Messenger tipo MSN
info: http://ubuntudicas.blogspot.com/2007/12/emesene-clone-do-msn.html

Exaile
Player de mp3 e CD
download: via Adicionar/Remover Programas...

Frostwire
P2P
download: via Adicionar/Remover Programas...

Gmount-ISO
Leia imagens ISO
download: Via Synaptic
via terminal: sudo apt-get install gmountiso

PyTube
Baixar vídeos do YouTube
info: http://bashterritory.com/pytube/index.php
download

VLC
Player de vídeo divx ou dvd
download: Via Synaptic
info: http://ubuntudicas.blogspot.com/2007/10/vlc-no-mostra-as-legendas.html

Wifi Radar
Buscador de redes wireless
donwload: Via Synaptic
info: http://ubuntudicas.blogspot.com/2008/01/wifi-radar.html

Fonte: http://ubuntudicas.blogspot.com/2008/01/programas-essenciais.html

quarta-feira, maio 28, 2008

Sistemas Especialitas

Sistema Baseado em Conhecimento (SBC)

  • Sistemas de software no qual o conhecimento relativo ao dominio de problemas é armazenado como regras, separadas do modo como são processadas, em um repositório chamado Base de Conhecimento (BC).
  • Sistema Especialista é um SBC construído para executar tarefas que requerem conhecimento de um especialista humano (perito).
  • Sistema computacional no qual um programa interpretador (Motor de Inferencia - MI), com base nos dados correntes armazenados na Memória de Trabalho (MT), escolhe e aplica regras de inferência armazenadas em uma Base de Conhecimento (BC) para realizar tarefas do domínio.
  • Sistemas Especialistas estão baseados no pressuposto que conhecimento perito pode ser representado como fatos, regras e objetos e estes elementos podem ser descobertos em um processo de aquisição de conhecimento, e tornados explícitos em uma BC.
  • Regras de Produção ou Inferência definem a lógica de uma aplicação de forma separada do modo como são processadas (encademaento).

segunda-feira, maio 26, 2008

Modelo CMMI

O CMMI (Capability Maturity Model Integration) é um modelo de referência que contém práticas (Genéricas ou Específicas) necessárias à maturidade em disciplinas específicas (Engenharia de Sistemas, Engenharia de Software, Desenvolvimento Integrado do Produto e do Processo, Fontes de Aquisição). Desenvolvido pelo SEI (Software Engineering Institute) da Universidade Carnegie Mellon, o CMMI é uma evolução do CMM e seu objetivo servir de guia para a melhoria de processos na organização e também da habilidade dos profissionais em gerenciar o desenvolvimento, aquisição e manutenção de produtos e serviços. Assim espera-se que o uso do CMMI permita a organização ser mais eficiente, respeitando seus proprios prazos e construíndo software com menos erro.

Os 5 Níveis da Maturidade do CMMI:
  1. Inicial (Imprevisível, mal controlado e reativo)
  2. Gerenciado (Projetos, reativo)
  3. Definido (Organizado e pró-ativo)
  4. Quantitativamente Gerenciado (Processo medido e controlado)
  5. Otimização (Melhoria contínua do processo)
Nível 2 - Gerenciado
  • Gerência de Requisitos
  • Planejamento de Projetos
  • Acompanhamento e Supervisão de Projetos
  • Gerencia de fornecimento
  • Medição e Análise
  • Garantia da Qualidade de Software de processo e produto
  • Gerência de Configuração de Software
Nível 3 - Definido
  • Desenvolvimento de requisitos
  • Solução técnica
  • Integração de produto
  • Verificação
  • Validação
  • Foco no Processo da Organização (SEPG)
  • Definição do Processo da Organização
  • Programa de Treinamento
  • Gerência de Projetos Integrada
  • Gerencia de riscos
  • Coordenação entre Grupos
  • Gerencia integrada de fornecimento
  • Análises de decisão e resolução
  • Ambiente organizacional para integração
Nível 4 – Quantitativamente gerenciado
  • Desempenho de processo organizacional
  • Gerência Quantitativa de Projetos
Nível 5 - Otimizado
  • Inovação organizacional e distribuição
  • Análise casual e resolução

sábado, maio 24, 2008

dica de leitura

Esse livro é muito bacana, Covert Java™: Techniques for Decompiling, Patching, and Reverse Engineeringby Alex Kalinovsky.

Várias técnicas para solução de problemas de desenvolvimento na plataforma Java como interceptação dinâmica do fluxo de execução usando reflection, como usar de forma adequada técnicas de tracing, dicas para descompilar classes, dicas para proteger aplicações comerciais contra hacking, etc.

Vale a pena ler esse livro.

terça-feira, maio 13, 2008

O que é qualidade de software?

A qualidade de software depende principalmente do correto emprego de boas metodologias pelos desenvolvedores de software, está ligada a um processo de melhoria contínua.

Um dos fatores que exerce influência negativa sobre a qualidade de um projeto é a complexidade que está associada ao tamanho das especificações, em razão das interações entre diversos componentes dos sistema.

As dificuldades no processo de software começam durante as etapas iniciais de um projeto: delimitar o escopo de um sistema está longe de ser uma tarefa trivial. A volatilidade dos requisitos é uma das maiores causas de insucesso de projeto de software. Muitas vezes, mesmo que a estrutura do software tenha sido toda desenhada, é muito complicado prever como será programa acabado.

A qualidade é um conceito muito subjetivo, o que para uns pode ser bom, para outros não. Por isso, estabelecer critérios (requisitos) que sirvam de base é uma forma de garantir a qualidade de um determinado produto/processo. É preciso saber como cada pessoa envolvida no projeto influi sobre os requisitos para conhecer com precisão o objetivo que se pretende alcançar.

Então é possível dizer que a qualidade de software é o conjunto de características mensuráveis que possibilitam a um produto atender as necessidades do cliente, de forma confiável, acessível, segura, no tempo certo e com o menor custo:
  • Qualidade de Processo – refere-se às “atividades, métodos, práticas e transformações que profissionais de informática utilizam para desenvolver e manter software e os produtos associados” (CMMI)
  • Qualidade de Projeto – refere-se ao correto emprego da metodologia definida e dos recursos disponibilizados na produção de software, objetivando: Eficiência, Eficácia, Controle de Custos, Cumprimento de Prazos, Satisfação de clientes e usuários
  • Qualidade de Produto – seu controle visa garantir a conformidade com as especificações de projeto
Algumas recomendações nas atividades relacionadas a qualidade de software:
  • Requisitos de qualidade de software - orçamento para realização, usuários envolvidos, ferramentas e métodos necessários, aspéctos relacionados a segurança de funcionamento e as consequencias que as falhas podem causar.
  • Detecção a não-conformidade dos requisitos - teste de software, revisões, inspeções, auditorias e ferramentas automatizadas de verificação.
  • Técnicas para gerenciamento de qualidade - orientada a pessoas, como é o caso de revisões e auditorias; estáticas, que não envolvem execução do produto; dinâmicas, que são efetuadas durante a execução do software; e as técnicas analíticas, que fazem uso de métodos formais.
  • Medição de qualidade - conjunto de dados obtidos por medidas é um recurso de extrema ajuda para auxiliar a tomada de decisões gerenciais.
Características que determinam o grau de qualidade de um produto final de software:
  • Facilidade de instalação
  • Facilidade de utilização
  • Previsibilidade de comportamento
  • Padronização das interfaces e do código fonte
  • Cobertura das necessidades funcionais que se pretende atender (escopo)
  • Exatidão de resultados
  • Tratamento apropriado de casos normais e exceções
  • Facilidade de manutenção

domingo, maio 11, 2008

Modelo de um documento de iniciação da monografia

Título (localizador do trabalho)
- Motivação (inclui a descrição do problema)
- Objetivos
- Resultados Esperados e Contribuições (produtos e extensões de conhecimento)
- Método de Pesquisa (atividades)
- Cronograma (atividades no tempo)
- Referências a serem consultadas

quarta-feira, maio 07, 2008

dica de leitura

1968: o Ano que Não Terminou
Zuenir Ventura

"Fascinante reconstituição dos acontecimentos de 1968 no âmbito do país. Os heróis dessa geração que queriam virar o mundo pelo avesso, seus dramas e paixões, suas lutas e vitórias estão descritos neste relato fundamental para a compreensão do Brasil contemporâneo."

segunda-feira, abril 14, 2008

Conceitos de padrões de projeto de software

Projeto de software orientado a objetos reutilizável:

  • identificar objetos pertinentes

  • fatorar os objetos em classes

  • definir interfaces

  • definir hierarquia de herança

  • estabelecer as relações-chave entre objetos

A grande dificuldade é tentar desenvolver sistemas específicos que ao mesmo tempo sejam genéricos afim de que no futuro os componentes modelados possam ser reutilizado.

Boas soluções precisam ser reutilizadas repetidamente, ou seja, padrões de classes e de comunicação entre elas devem ser repassados entre diferentes projetos, dessa forma os projetos orientados a objetos tornam-se mais flexíveis.

Padrões de projetos tornam mais fácil reutilizar projetos e arquiteturas. Os padrões de projetos ajudam a escolher alternativas de projeto que tornam um sistema reutilizável.

Segundo Christopher Alexander “cada padrão descreve um problema no nosso ambiente e o cerne de sua solução, de tal forma que você possa usar essa solução mais de um milhão de vezes, sem nunca faze-lo da mesma maneira” [AIS+ 77]. Para Erich Gamma padrões de projeto “são descrições de objetos e classes comunicantes que precisam ser personalizadas para resolver um problema geral de projeto num contexto particular. Um padrão de projeto nomeia, abstrai, e identifica aspectos-chave de uma estrutura de projeto comum para torna-lo útil para a criação de um projeto orientado a objetos reutilizável” [G193].

Um padrão possui 4 elementos essenciais:

  1. O nome do padrão: vocabulário de projeto.

  2. O problema: descreve em que situação aplicar o padrão.

  3. A solução: elementos que compõe o padrão de projeto (relacionamentos, responsabilidades e colaborações)

  4. As consequências: resultados e análise das vantagens e desvantagens da aplicação do padrão. As consequências de um padrão incluem o seu impacto sobre a flexibilidade, a extensibilidade ou a portabilidade de um sistema.

sábado, janeiro 26, 2008

sábado, agosto 25, 2007

pesquisar livros bruce eckel e doug rosenberg.


http://www.iconixsw.com/UMLBook.html

sexta-feira, julho 27, 2007

J2EE e Web Services

A plataforma Java 2, Enterprise Edition (J2EE) foi concebida para simplificar problemas complexos no desenvolvimento, disponibilizarão e gerenciamento de soluções multicamadas. J2EE é uma especificação padrão, e é o resultado de uma grande iniciativa liderada pela Sun Microsystems. O objetivo das especificações J2EE é oferecer aos clientes a chance de escolha de um fornecedor de produtos e ferramentas, encorajando a competição entre esses fornecedores por oferecer produtos de alta qualidade.

Já é conhecido que o J2EE foi concebido para arquitetura baseada do lado do servidor pela linguagem de programação Java. Pode ser utilizado para construção de tradicionais web sites à componentes de software. O J2EE foi estendido para suportar a construção de web services baseados em XML. Esses web services podem possuir interoperabilidade com outros web services que podem ou não ter sido escritos com o padrão J2EE.

A tecnologia J2EE através da API JAX-RPC permite a interoperabilidade com Java. JAX-PRC significa API Java para PRC baseado em XML, é uma tecnologia para construir serviços e clientes de Web Services que utilizam chamadas de procedimento remoto e XML. Freqüentemente usados em um modelo cliente-servidor distribuído, um mecanismo RPC habilita os clientes a executar procedimentos em outros sistemas.

Em JAX-RPC, uma chama de procedimento remoto é representada por um protocolo baseado em XML, como SOAP, por exemplo.

Embora as mensagens SOAP sejam complexas, a API JAX-RPC oculta esta complexidade para o desenvolvedor da aplicação. No lado do servidor, o desenvolvedor especifica os procedimentos remotos definindo método em uma interface Java. Uma ou mais classes que implementam essa interface também precisam ser codificadas. No lado cliente, a API JAX-RPC também fornece uma forma bem definida de encapsular a complexidade da execução de um Web Services.

Com JAX-RPC, clientes e Web Services têm uma grande vantagem, a independência de plataforma da linguagem de programação Java . Além disso, JAX-RPC não é restritivo, ou seja, um cliente JAX-RPC pode acessar um Web Services que não esteja rodando na plataforma Java, e vice-versa. Essa flexibilidade é possível por JAX-RPC utiliza tecnologias definidas pela World Wide Consortion (W3C) – HTTP, SOAP e WSDL.


Tipos suportado por JAX-RPC

A API JAX-RPC mapeai os tipos da linguagem de programação Java para definições XML/WSDL. Po exemplo, JAX-RPC mapeia a classe java.lang.String para o tipo de dado XML xsd:string. O desenvolvedor do aplicativo na precisa saber os detalhes destes mapeamentos, mas devem estar conscientes de nem toda classe da plataforma Java (J2SE) pode ser usada como parametro de metodo ou tipo de retorno em JAX-RPC.

Os seguintes tipos Java são suportados por JAX-RPC:

Classes

  • java.lang.Boolean

  • java.lang.Byte

  • java.lang.Double

  • java.lang.Float

  • java.lang.Integer

  • java.lang.Long

  • java.lang.Short

  • java.lang.String

  • java.math.BigDecimal.

  • java.math.BigInteger

  • java.net.URI

  • java.uitl.Calendar

  • java.uitl.Date

Primitivos

  • boolean

  • byte

  • double

  • float

  • int

  • long

  • short

Arrays

JAX-RPC também suporta arrays que possuam membros de tipos suportados por JAX-RPC. Exemplos de arrays suportados são int[] e String[]. Arrays multidimencional, tais como BigDecimal[][], também sao suportados.

Componentes JavaBeans

JAX-RPC também suporta componentes JavaBeans, que devem obedecer ao mesmo conjunto de regras, como as classes de aplicativos. Além disso, um componente JavaBean deve possuir um metodo getter e um setter para cada propriedade do bean. O tipo de propriedade do bean deve ser um tipo JAX-RPC suportado.

Tecnologias J2EE para Web Services

Graças ao fato de XML e Java trabalharem de maneira tão coesa juntas, ambas tecnologias aos poucos se tornaram um ponto central para os Web services. Em Java, já na versão J2EE 1.3, já se era encontrado todos os recursos necessários para infraestrutura de Web Services. A versão atual apresenta integração nativa com Web Services.

A disseminação no uso de web services nos últimos anos incentivou o mercado e a comunidade Java a oferecer uma grande variedade de ferramentas e aplicações para prover suporte a essa tecnologia. Atualmente, as principais plataformas para web services, Sun Microsystems, IBM, BEA, Oracle, Apache fornece uma leque diversificado aplicações para criar, manipular e executar Web services.

A IBM é um fornecedor altamente diversificado de tecnologias e ferramentas para web services e servidores de aplicação. O IBM WebSphere Software Developer Kit for Web Services (WSDK V5.0.1) é um conjunto de ferramentas para a criação, busca, invocação e testes para web services. O WSDK versão 5.0.1 encontra-se em conformidade com as últimas versões das especificações para web services incluindo WS-Security, SOAP, WSDL e UDDI. Entre as principais ferramentas de desenvolvimento, podem ser citadas o WebSphere Studio Application Developer (IDE), Web Services Gateway, Web Services Invocation Framework e o UDDI Explorer.

O Java Web Services Developer Pack (Java WSDP) é um conjunto de ferramentas integradas e gratuitas que permite desenvolvedores Java implementarem e testarem aplicações web com XML e web services. O Java WSDP engloba as APIs de Java para XML, Java Architecture for XML Binding (JAXB), JavaServer Faces, Web Services Interoperability Sample Application, Web Services Security, JavaServer Pages Standard Tag Library (JSTL) e Java WSDP Registry Server. As ferramentas Ant Build Tool e Apache Tomcat container também fazem parte deste pacote distribuído pela Sun. O servidor de aplicação da Sun é o Sun ONE™ Application Server 7.

Saindo de sistemas proprietarios e entrando em sistemas do Web Services abertos e desenvolvidos pela comunidade Java, encontramos o servidor de Web Services Apache Axis. Apache Axis é um projeto open source para um servidor e cliente SOAP. Axis é considerado basicamente um SOAP engine – um framework para a construção de processadores de mensagens SOAP. Atualmente está implementado apenas na linguagem Java, mas uma versão para cliente C++ está em andamento.