Hospedagem Profissional

Hospedagem Profissional
Clique aqui e ganhe US$ 10,00 para testar durante 1 mês a melhor hospedagem: Digital Ocean!

quarta-feira, 18 de novembro de 2009

Aplicativos inteligentes para Internet têm autogerenciamento e autocorreção


Aplicativos inteligentes para Internet têm autogerenciamento e autocorreção

Aplicações intensivas que rodam pela Internet normalmente exigem equipes de especialistas para mantê-las. Mas isso logo deixará de ser assim. É o que afirmam pesquisadores europeus que desenvolveram um sistema para criar aplicativos capazes de se autogerenciar e corrigir seus próprios erros.

Interligação de dispositivos

Parte do potencial da Internet reside na sua capacidade de conexão de centenas, milhares, ou mesmo milhões de dispositivos.

Se um usuário está baixando um vídeo de um serviço ponto-a-ponto, realizando pesquisas científicas em um grid ou usando a computação em nuvem para gerir um negócio, os programas que permitem que muitos dispositivos e aplicativos trabalhem em conjunto são fundamentais.

O problema, diz Peter Van Roy, coordenador projeto Selfman, é que está ficando cada vez mais difícil manter os sistemas em funcionamento. "O desafio central quando você constrói aplicativos para a internet é como mantê-los funcionando sem ter de ficar ajustando-os e gerenciando-os o tempo todo ", diz ele.

Programas que se corrigem

A equipe do projeto Selfman está tentando resolver o problema há três anos, buscando descobrir como construir programas que cuidam de si mesmos no ambiente constantemente em mutação da Internet.

"Nós queremos tornar os grandes aplicativos da Internet mais fáceis de lidar", diz Van Roy, "para que todos os problemas de gestão que ocorrem normalmente sejam manipulados pelo próprio sistema. "

A recompensa, segundo ele, será enorme. "Isto irá levar a Internet para o próximo nível."

Autogestão - quatro características-chave

Os pesquisadores do projeto Selfman identificaram quatro funções vitais para que um aplicativo distribuído seja capaz de autogerir-se - autoconfiguração, autoajuste, autocorreção e autoproteção.

Os softwares estão sendo constantemente corrigidos, atualizados ou substituídos. Para que um sistema distribuído se autoconfigure, ele precisa monitorar todos os seus componentes, atualizá-los quando necessário e, a seguir, certificar-se de que todas as partes do sistema continuarão falando umas com as outras depois da atualização.

"Nosso sistema pode perguntar a um componente: De que versão você é? Com quem você está se comunicando? Ele pode então pode substituir uma versão antiga por uma nova, conforme necessário," diz Van Roy.

A capacidade de autoajuste significa que o sistema pode se ajustar instantaneamente em resposta a alterações na carga de processamento e ao movimento de componentes saindo ou entrando na rede.

"Suponha que um nó está ficando sobrecarregado", diz Van Roy. "O nosso algoritmo de balanceamento de carga aloca novos nós próximos a esse ponto quente. Ele espalha o superaquecimento para os outros nós e o ponto quente esfria."

Replicação de dados

A Internet é um ambiente imprevisível - roteadores que travam, cabos interrompidos, partes do sistema têm sobrecarga e interrompem o serviços, todos os componentes estão sujeitos a entrar e sair do ar.

"Com o Selfman", diz Van Roy, "cada nó armazena uma parte dos dados e cada fatia dos dados é replicada um certo número de vezes. Se um nó falhar, os outros nós detectam a falha, encontram um novo nó e lhe fornecem os dados que faltam. O sistema conserta a si mesmo."

Autodefesa

Um dos maiores problemas enfrentados pelos pesquisadores do Selfman foi autodefesa.

Os pesquisadores descobriram que a segurança de um sistema depende da sua topologia - a forma como os nós são ligados uns aos outros. Eles descobriram que redes de pequeno porte - nos quais a maioria dos nós não estão diretamente ligados, mas nas quais qualquer nó pode se comunicar com outro em uns poucos passos - são os mais seguros.

"Com uma rede de pequeno porte é mais fácil de detectar, isolar e extrair nós ruins", diz Van Roy. "O serviço de segurança observa o comportamento do sistema. Se ele percebe que certas partes da rede estão agindo de forma anormal, ele entra em ação."

Arquitetura estruturada

Aplicativos inteligentes para Internet têm autogerenciamento e autocorreção
[Imagem: Projeto Selfman]

A equipe descobriu que transformar essas capacidades avançadas em aplicativos úteis exige uma abordagem altamente estruturada.

A base de cada aplicação é uma rede estruturada sobreposta. Trata-se de um programa - ele próprio replicado por toda a rede - que monitora todos os nós e as conexões entre eles, podendo decidir quando e como corrigir os problemas.

O próximo nível é um sistema de armazenamento replicado. Ele garante que cada nó tem acesso aos mesmos dados, e que os dados sempre são replicados para garantir que eles não se percam.

Resolvedor de problemas

O terceiro nível contém o resolvedor de problemas transacional do Selfman. Ele se baseia em um sofisticado algoritmo chamado Paxos para fornecer uma maneira sistemática de chegar a um consenso entre qualquer número de componentes falíveis.

Van Roy usa a analogia de uma transferência entre duas contas bancárias. "Se você quiser reduzir uma conta bancária em 100 reais e acrescentar 100 reais a outra, você quer as duas coisas simultaneamente ou nenhuma delas," diz ele." Cada nó deve ver os mesmos dados."

"Alcançar todo esse comportamento fluido - onde, mesmo se nós estão falhando ou novos nós estão entrando e saindo, a rede nunca pode ter problemas e bloquear o sistema - foi um grande desafio técnico", diz Van Ray." Precisamos do Paxos para fazê-lo funcionar."

Aplicativos inteligentes

A arquitetura e os componentes do Selfman foram utilizados para construir algumas aplicações impressionantes. Elas incluem uma Wikipédia distribuída que pode manipular muito mais consultas do que a versão atual, um serviço comercial de streaming de vídeo e um programa gráfico que permite que vários usuários colaborem em um projeto.

Van Roy acredita que Selfman abre a porta para uma infinidade de aplicativos para Internet de alto desempenho, flexíveis e que não travam. "Agora mesmo nós estamos apenas arranhando a superfície," diz ele.

Via http://www.inovacaotecnologica.com.br

quarta-feira, 11 de novembro de 2009

Google lança ‘Go’, sua própria linguagem de programação

image O Google anunciou sua nova linguagem de programação, chamada ‘Go’. Moderna, ela possui design orientado a objetos com sintaxe parecida com C/C++, e oferece dentre outras coisas garbage-collector, suporte a multi-processamento e reflections. Robert Griesemer, Ken Thompson, e Rob Pike iniciaram o projeto em 2007, que agora está reforçando a linha opensource do Google, pois ‘Go’ é distribuída sob a licença BSD.

O objetivo da empresa é obter uma linguagem que possa unir a velocidade de desenvolvimento de linguagens dinâmicas (como Python) com a performance e segurança de uma linguagem compilada (como C ou C++). Ou seja, querem juntar o melhor de dois mundos, e esse é o sonho de toda linguagem de programação: ser fácil, eficiente e segura.

O que raios levou o Google a criar sua sua própria linguagem de programação? cutucar a Microsoft? lançar mais produtos? fugir das limitações das linguagens atuais? Seja qual for o motivo, esse lançamento é mais um enorme passo do Google em busca do domínio mundial, além de avançar por novos caminhos.

Uma nova linguagem de programação própria pode ser ponto chave para a consolidação de seus sistemas operacionais (Android e Chrome OS). Atrair os desenvolvedores deverá ser o próximo passo para que o ‘Go’ não morra na praia. Se você ficou interessado em fazer parte do lado negro da força, acesse o site oficial da linguagem ‘Go’ e devore os tutoriais.

Via FayerWayer

segunda-feira, 9 de novembro de 2009

Campanha SUN de Retake via web !


Campanha de Retake via Web
Comprando seu voucher pela web de 03 de Novembro à 11 de Dezembro de 2009, você terá direito à segunda chance gratuitamente, caso não obtenha êxito na primeira tentativa !

Para adquirir é simples:
  1. Acesse http://www.sun.com.br/edu, no tópico "Procurar por tipo de Produto" clique em "Certificações";
  2. Identifique a certificação que você deseja obter com base em seus objetivos profissionais e de desenvolvimento pessoais;
  3. Preencha corretamente o formulário e assegure que todos os campos estejam corretos;
  4. Clique em "Confirmar e enviar pedido";
  5. Aguarde o recebimento do boleto bancário, em até 15 dias úteis, no endereço de email cadastrado no formulário de compra;
  6. Após a confirmação do pagamento, os vouchers serão enviados fisicamente para o endereço cadastrado no formulário de compra.
Dê os próximos passos, aprimore suas habilidades e avance em sua carreira!

Se tiver alguma dúvida ou desejar fornecer feedback, envie uma mensagem para sun.education@sun.com
Termos e Condições
a. Validade da Campanha: das 08:00hs do dia 03/11/2009 às 18:30hs do dia 11/12/2009; b. Campanha válida para todas as certificações publicadas no site da Sun Microsystems, exceto para os produtos de código 310-252A, 310-252R, 310-300A, 310-300R, 310-301A e 310-301R; c. Campanha exclusiva para compras efetuadas pela web. Solicitações feitas por telefone não serão processadas dentro da campanha; d. O boleto bancário será enviado para o endereço de e-mail cadastrado no formulário de compras em até 15 dias úteis, desde que o endereço fornecido esteja correto; e. Os vouchers serão postados fisicamente, após análise de cadastro do cliente e confirmação de pagamento antecipado via boleto bancário, em até 15 dias úteis, desde que o endereço fornecido esteja correto; f. Caso o candidato não compareça ao primeiro exame, perderá automaticamente o direito à segunda tentativa; g. Os vouchers tem validade de 10 a 12 meses e não são prorrogáveis; h. O candidato deverá aguardar 72 horas para agendar o segundo exame gratuito e pelo menos 14 dias úteis para realizá-lo a contar da data do primeiro exame; i. Para esclarecimento de qualquer dúvida sobre a campanha, entre em contato com a Central de Negócios pelo telefone 0800 55 7863.

terça-feira, 3 de novembro de 2009

Samsung abre concurso para desenvolvimento de aplicativos móveis

Prêmio total soma US$ 330 mil e possibilidade de parceria contínua com a fabricante.
A Samsung anuncia o início de um concurso mundial de desenvolvedores de software, com objetivo de estimular a criação de aplicativos para seus smart phones.

O concurso em vigência é para o modelo Omnia II (I8000), para o qual haverá premiação que totalizará US$ 330 mil.

Com inscrições abertas (em inglês e italiano) até o dia 10 de dezembro, a fabricante irá selecionar os aplicativos campeões até o fim daquele mês, disponibilizando-os para download, pago ou gratuito, em sua loja de aplicativos (www.samsungapps.com).

Os campeões também poderão manter parceria contínua com a Samsung por meio de série de oportunidades futuras, entre elas a participação do programa de apoio a programadores móveis da Samsung.

Mais informações estão disponíveis em http://seller.samsungapps.com

Este aparelho possui o sistema Windows Mobile 6.1, porém suporta aplicações em Java pois possui a especificação "Java Yes, MIDP 2.0"

Pode-se desenvolver para ele usando JME com MIDP 2.0 e CLDC 1.1.

Neste link tem todas as caracterísiticas deste aparelho e um preço estimado de R$ 1.300,00.
http://cidadesaopaulo.olx.com.br/samsung-i8000-omnia-2-omnia-ii-gps-igo-8-instalado-iid-50661360

Fonte: Reseller Web

sexta-feira, 23 de outubro de 2009

Unidade de pesquisa da Microsoft inscreve para bolsas na America Latina.

Divisão quer atrair estudantes de ciências da computação e engenharia elétrica ou da computação para um ano em Redmond.

A Microsoft Research, divisão da gigante de softwares responsável por pesquisas acadêmicas, receberá até o dia 31 de outubro trabalhos para o Programa Latino-Americano de Bolsa de Estudos para Doutorado e ao Programa Latino-Americano de Estágios.

Os programas, referentes ao ano acadêmico de 2009-2010, serão conduzidos na sede da empresa, em Redmond, nos Estados Unidos, e estão abertos à indicação de candidatos por qualquer universidade na América Latina e no Caribe nas áreas de ciências da computação e engenharia elétrica ou da computação.

Segundo a Microsoft Research, candidatos também podem submeter aplicações diretamente, mas será dada preferência aos estudantes indicados por suas instituições. Serão aceitas até três aplicações por departamento e um total de nove por universidade.

Entre os objetivos dos dois programas estão oferecer oportunidades para estudantes talentosos trabalharem em conjunto com pesquisadores da Microsoft Research e identificar candidatos potenciais a futuras vagas nos laboratórios da empresa.

Segundo as exigências da Microsoft Research, postulantes devem demonstrar histórico tanto acadêmico excelente como elevado potencial de pesquisa em temas ligados à tecnologia da informação, além de proficiência em inglês.

Junto com o formulário, o candidato deve incluir seu currículo, dois endereços de e-mail e cartas de referência. Os candidatos a bolsa de estudo devem ter interesse em cursar o doutorado e incluir uma proposta de tese junto ao formulário.

O resultado do processo seletivo será anunciado até 8 de fevereiro de 2010. Mais informações podem ser encontradas na página do programa dentro do site da Microsoft Research em http://research.microsoft.com/en-us/collaboration/global/latam/latam-awards.aspx.

Via IDG Now!

quarta-feira, 21 de outubro de 2009

Utilizando AJAX com JSF de maneira eficiente

Galera, este é um artigo do Rafael Ponte, importantíssimo para quem está começando com JSF e que adota uma questão interessante, a necessidade de abandonarmos o paradigma “action like”  ou “click´n´ wait” das costumeiras aplicações web, e extraírmos o máximo das possibilidades que o ajax nos fornece, onde no caso do artigo, se utiliza Rich Faces com Ajax4Jsf.

Graças a natureza orientada à componentes e eventos do JavaServer Faces podemos implementar aplicações com AJAX de maneira simples e prática. Existem vários frameworks e conjuntos de componentes AJAX disponíveis para JSF, uns mais simples e super fáceis de integrar, outros mais chatinhos, porém bastante eficientes em determinados cenários. Entre eles o mais utilizado e prático sem dúvida nenhuma é o Ajax4jsf que é trazido juntamente com o conjunto de componentes Richfaces da JBoss, com ele é possível inserir recursos AJAX em aplicações JSF de forma transparente e bastante produtiva.

Mesmo com a toda a simplicidade e gama enorme de componentes/frameworks AJAX ainda assim estes recursos não são aproveitados de forma eficiente ao se desenvolver com JSF, muitos desenvolvedores mesmo utilizando-se destes recursos continuam pensando de forma “click’n’wait”, o que no final das contas acaba meio que “anulando” os benefícios oferecidos por tais recursos.

Na onda de aplicações ricas e WEB2.0 não podemos deixar de aproveitar certos recursos essenciais para desenvolver tais aplicações. Utilizar estes recursos em JSF de forma eficiente trará ganhos consideráveis em vários aspectos para o projeto, à equipe de desenvolvimento e principalmente ao cliente, entre eles podemos destacar aspectos como performance, escalabilidade, produtividade e principalmente usabilidade.

O artigo completo pode ser encontrado em : http://www.rponte.com.br/2008/04/10/utilizando-ajax-com-jsf-de-maneira-eficiente/

User Interface 2.0

Um artigo muito interessante sobre as tendências seguidas no desenvolvimento do design de aplicações web 2.0 onde o foco é simplicidade e interatividade.

 

One of the things that attracts us all to Web 2.0 is that it is slick. Stuff pops up, floats, appears and disappears showcasing us the power of effects possible with today's JavaScript. We sit there in awe, thinking, wow, that was cool! Cool is what compels us to give it a try. Cool is marketing. But cool is not the substance. Clearly, in order for us to adapt a new application it needs to demonstrate the utility beyond cool. It needs to be useful and usable, preferably daily.

Artigo completo : User Interface 2.0

The "Webification" of the Desktop: What Are the Implications for Web 2.0 and AJAX?

Um ótimo artigo sobre a influência das tecnologias da web 2.0 e Ajax em aplicações desktop.

 

There's no reason why our desktop applications cannot be web-aware. An improvement in this area would drive up our productivity, because switching back and forth between the application and the browser is very inefficient. This article looks at some examples of apps that already succeed in integrating web sites and web services into our desktops.

Artigo completo : The "Webification" of the Desktop: What Are the Implications for Web 2.0 and AJAX?

segunda-feira, 28 de setembro de 2009

DIVULGAÇÃO DE VAGA PARA PROFESSOR DE INFORMÁTICA EM CUIABÁ

A EE Nilo Póvoas, no Bairro Bandeirantes, abriu inscrição para professor de Informática, no Curso Técnico em Informática  que inicará as aulas em fevereiro do próximo ano. 

Os interessados deverão procurar a EE Nilo Póvoas, na rua Diogo Domingos Ferreira, 311 - Bairro Bandeirantes - Cuiabá - falar com Sandra ou Donizetti. 

Contatos por telefone 3321 - 9730 ou 8465 -0211 ou 8409 - 9886.

Curso de Java para Web na Totem TI em Cuiabá

Galera,

As inscrições para a Formação "Desenvolvedor Java Web" ( iniciante ), já estão abertas. 

O curso acontecerá aos sábados (integral) e começa no dia 10/10.

Mais informações: www.totemti.com.br / 3027-1353

quinta-feira, 24 de setembro de 2009

SPIN MT - Palestras Gratuitas

No dia 25 de setembro o SPIN estará promovendo um encontro com a participação da Claudia Hazan, especialista em métrica de software.

No evento serão apresentadas 2 palestras e ainda o planejamento do Grupo Spin-MT para o programa de certificações da IBM.

As palestras são:

RUP – Como não fazer
Descrição: Onde será apresentado os cenários impróprios e mais comuns
nos processos de desenvolvimento de Software e as melhores práticas;
Palestrante: Angelo Oliveira
Horário: 20:00 as 20:40

Definição de Métricas para contratos de Manutenção
Descrição: Será apresentado soluções de métricas para atender os
projetos de manutenção de software.
Palestrante: Claudia Hazan
Horário: 20:45 as 21:45

Local UFMT – Auditório da FAET junto com o ICET conhecido como Mofão

O bloco do ICET fica ao lado do Zoológico.

Para inscrever-se, basta enviar um e-mail para angelo.oliveira@gmail.com com o nome, e-mail e empresa.

quinta-feira, 3 de setembro de 2009

Web Sequence Diagrams - Faça seus diagramas de sequência na WEB

Galera

Descobri um site muito interessante, é o www.websequencediagrams.com

Esse site permite, de uma forma intuitiva, através da descrição dos passos das iterações entre entidades, que se gere diagramas UML nos mais variados padrões.

Eu fiz um exemplo para ilustrar para vocês o quão fácil é utilizá-lo. (Confesso que fiquei brincando algum tempo com ele, hehe)

Após gerar seu diagrama, ainda há a possibilidade de se fazer uma exportação para PDF do seu diagrama.

Simplesmente uma ótima ferramenta naqueles momentos emergênciais.

Código para gerar o meu diagrama de exemplo:

Cliente->Vendedor : escolhe item
activate Vendedor
Vendedor->Vendedor : pega produto no estoque
Vendedor-->Cliente : produto escolhido
deactivate Vendedor
Cliente->Vendedor : solicita desconto
activate Vendedor

Vendedor->Gerente : solictia desconto
note right of Gerente : Decide % de desconto
activate Gerente
Gerente-->Vendedor : % de desconto
deactivate Gerente
Vendedor->Vendedor : calcula valor com desconto
Vendedor-->Cliente : valor com desconto
deactivate Vendedor

Cliente->Vendedor : efetua pagamento
activate Vendedor
Vendedor->Vendedor : registra pagamento no caixa
deactivate Vendedor

Agora vejam modelos diferentes do mesmo diagrama que simplesmente são gerados automaticamente:

terça-feira, 25 de agosto de 2009

Conexão via rede elétrica é avanço na inclusão

O mundo está cada vez mais interconectado. A possibilidade de movimentação e participação efetivas no ambiente virtual começa a determinar as chances de real desenvolvimento de indivíduos e de sociedades, com a exclusão daqueles e daquelas que não tenham condições de trilhar as "infovias" que cortam e integram todos os pontos do planeta. A "exclusão digital" se pronuncia mais cruel do que as formas de exclusão sócio-econômicas às quais estamos acostumados.

Por isso, é de grande importância a edição, pela Agência Nacional de Telecomunicações, da Resolução 527, de abril deste ano, que estabelece as condições de uso de radiofrequências por sistemas de Banda Larga por meio de Redes de Energia Elétrica, passo necessário para viabilizar a utilização de redes de energia elétrica para transmissão de dados e voz, inclusive viabilizando acesso à Internet.

Esta facilidade, conhecida como BPL (Broadband over Power Lines), por partir de uma infra-estrutura já disponível, dispensa realização de obras específicas para implantação de tais meios de aceso. É verdade que esta solução pode apresentar problemas (como interferências causadas pelos fios de cobre das redes de energia elétrica na transmissão dos dados e/ou voz), mas estes são passíveis de serem combatidos seja pelo incremento tecnológico, seja pela própria atuação fiscalizadora da Anatel.

Mas não podemos negar que estamos diante de uma significativa oportunidade de implementação de políticas públicas que permitam a inclusão digital, especialmente de moradores de áreas não cobertas adequadamente por redes de telecomunicações. Com a crescente convergência de tecnologias, a utilização da rede de energia elétrica praticamente surge como alternativa capaz de combater o apartheid digital que hoje marca a sociedade brasileira.

Basta que se imagine, por exemplo, a efetividade de acesso à Internet a partir da utilização de aparelhos de televisão dotados de conversores apropriados, conectados por sua vez à rede elétrica, já muito mais presente nos lares brasileiros do que a infraestrutura usualmente utilizada para serviços de Banda Larga. Haveria uma interessante conjugação da familiaridade da população com o equipamento (os televisores) com a facilidade de acesso ao ambiente virtual.

Há ainda, é claro, a necessidade de a Aneel editar, conforme sua competência legal, as regras que tratem das condições de uso destas redes elétricas pelos interessados em trafegar, a partir das regras da Anatel, dados e sinais de voz. Esta regulamentação, espera-se, levará em conta os interesses do próprio Estado, responsável pelas políticas públicas de inclusão digital, das Operadoras de serviços de energia elétrica e de telecomunicações, de prestadores de serviços de transmissão de dados, voz ou de acesso à Internet e, principalmente, dos usuários.

Equilibrar tais interesses, de maneira que todos possam ganhar, é o desafio.O que não se pode é deixar de aproveitar a oportunidade de avançarmos na construção de acessos que permitam, a qualquer um, conectar-se com o mundo em que vivemos.

Por Leonardo Brandão 

Curso de Análise de Pontos de Função com Estimativas

Para quem tiver interesse, nos dias 25, 26 e 27 de setembro a Ábaco Tecnologia estará oferecendo um Curso de Pontos por Função com a Claudia Hazan.
 
Segue as informações sobre o curso:
 
* O Certificado será emitido pela UFMT - Instituto de Computação
Local: Mato Grosso Hotel


Valor: Valor de R$ 1.100,00

*Para quem for do grupo SPIN-MT conseguimos 6 vagas com o valor de R$900,00, podendo ser dividido em 3 vezes.


 
Período de Aulas:

Dia 25 - das 8:00 as 12:00 e das 14:00 as 18:00

Dia 26 - das 8:00 as 12:00 e das 14:00 as 18:00

Dia 27 - das 8:00 as 12:00


Carga Horária: 20 horas

  

Objetivo Capacitar os participantes em na utilização da Metodologia de Contagem de Pontos por Função, publicada no CPM (Counting Practices Manual) release 4.2.1 pelo IFPUG (International Function Points Users Group), assim como em Processos de Estimativas de Projetos de Software baseados na técnica de Análise de Pontos por Função.

 

Público Alvo Gerentes de Projetos de Software, Líderes de Projetos, Analistas de Sistemas, Analista de Negocios e Programadores.

 

Programa do Treinamento

 

Introdução à Análise de Pontos de Função
- Visão Geral da Análise de Pontos por Função

Contagem de Pontos de Função

- Etapas para Contagem de Pontos por Função
- Tipos de Cálculos
- Definição da Visão do Usuário e Fronteira da Aplicação
- Definição das funções: Arquivo Lógico Interno, Arquivo de Interface Externa, Entrada Externa, Saída Externa e Consulta Externa
- Cálculo de Pontos por Função não Ajustados
- Características Gerais do Sistema (Cálculo do Fator de Ajuste)
- Cálculo de Pontos por Função Ajustados
- Contagem de PF de Sistema Exemplo

 

Aplicações da Análise de Pontos por Função
- Exercícios e Exemplos de Aplicações de Contagem de PF

- Definição de um Processo de Estimativas para Planejamento e Acompanhamento de Projetos de Software , baseado no modelo CMMI

 

Exercícios para preparação para o CFPS

Simulado com questões do exame de  Certificação CFPS – Certified Function Point  Specialist

 

Professora Claudia Hazan, Consultora de Métricas e Qualidade de Software graduada pela Universidade do Estado do Rio de Janeiro (UERJ). Mestre em Engenharia de Sistemas e Computação pelo Instituto Militar de Engenharia (IME), Certified Function Point Specialist desde 2001.

sexta-feira, 14 de agosto de 2009

Mais de 50% dos líderes de empresas são dispensáveis

Pesquisa aponta que maioria dos chefes não tem condições de levar organizações a bons resultados

por AméricaEconomia.com.br

São Paulo. Mais de 50% dos líderes de empresas - entre presidentes, diretores e gerentes - não têm condições ou preparo para levar suas organizações a um bom desempenho ou a sobreviver em um futuro próximo. Isso é o que aponta uma pesquisa desenvolvida ao longo de três anos pela consultoria Entheusiasmos.

"Esse dado explica por quê 75% dos empregados de empresas, segundo levantamento do Conselho Americano de Liderança, não acreditam que suas lideranças podem levar as empresas adiante, com sucesso, nos próximos cinco anos", afirmou o diretor da consultoria,  Eduardo Carmello. "Líderes precisam agir como resilientes, para promover as transformações necessárias que levem a empresa e entregar resultados de alta performance", completou.

Segundo Carmello, o dado revela que muitas empresas não têm lideranças aptas a entender que 80% do valor que uma companhia gera hoje vem de ativos intangíveis como relacionamentos, marca, conhecimento, reputação e capital intelectual, relacionado diretamente aos empregados.

"Ao longo de 15 anos de estudos e práticas nas empresas, fizemos algumas perguntas aos líderes e executivos. Uma delas é se eles se consideravam pessoas com conhecimento e eficazes e 80% deles disseram que sim, pois fizeram MBAs, frequentam cursos de atualização e leem várias revistas e jornais. No entanto, quando íamos verificar se estes conhecimentos estavam sendo aplicados, esse índice caía para 39%. E quando íamos avaliar se estes conhecimentos aplicados estavam gerando resultados, o indicador chegava a apenas 19%. Ou seja, apenas dizer que sabe, não significa fazer e, para uma empresa, o fazer é o decisivo, é o que gera resultados", destacou Carmello.

quarta-feira, 12 de agosto de 2009

Sun Microsystems oferece cursos para certificação JAVA em Campinas e Cuiabá


Sun Microsystems oferece cursos

para certificação JAVA em Campinas e Cuiabá

 

A Sun Microsystems, líder mundial em soluções de infraestrutura de tecnologia da informação,  acaba de fechar duas parcerias para disponibilizar cursos para certificação na linguagem de programação. Os novos parceiros são a Dextra Sistemas, empresa de TI que presta serviços de fábrica de software, consultoria e treinamentos de capacitação tecnológica, que atuará em Campinas e a TDS Tecnologia, em Cuiabá, que é a única representante no estado do Mato Grosso.

O objetivo dos treinamentos é prover ao participante os conhecimentos necessários para utilização da linguagem no desenvolvimento de aplicações corporativas e também prepará-lo para os exames de certificação SCJP (Sun Certified Java Programmer) e SCJD (Sun Certified Java Developer) da empresa.

As duas parceiras já oferecem em suas cidades os módulos de treinamentos para a certificação Java Associate, Programador Java e Desenvolvedor Java, entre outros pacotes.  

Segundo Bruno Giannini, gerente de marketing e canais da área de Serviços Educacionais da Sun Microsystems do Brasil, existem muitas empresas se instalando nessas regiões e consequentemente um número considerável de profissionais buscando por qualificação e certificação na tecnologia Java.

"Por meio desta parceria, a Sun Microsystems busca formar mão-de-obra qualificada e atender as demandas regionais, oferecendo treinamentos que apresentam um padrão global de qualidade, instrutores altamente capacitados e de grande expertise ", afirma Giannini.

Com a parceria, a Dextra será a única empresa fora das capitais brasileiras a oferecer os cursos oficiais em Java. Para Luis Dosso, diretor da companhia, a união com a Sun Microsystems  vai reforçar a imagem de excelência na tecnologia Java que a empresa tem e trará benefícios para os serviços de fábrica de software e consultoria.

Para o diretor comercial da TDS Tecnologia, Daniel Carvalho Cortês, a parceria resultará em profissionais mais capacitados para atender ao crescimento de companhias no Mato Grosso e reforçará o objetivo da empresa de ser uma referência em tecnologia. Segundo o executivo, uma das vantagens é a comodidade de fazer a prova de certificação sem ter os custos de viagem para outros Estados, visto que é o único curso oficial na região.

Interessados podem obter mais informações no site: www.dextra.com.br ou www.tdstecnologia.com.br.

           

SERVIÇO

Dextra Sistemas
Rua Antonio Paioli, 320, Parque das Universidades
Campinas – SP

Telefone: (19) 3256-6722 e (11) 2824-672

 

TDS Tecnologia

Rua Campo Grande, 533 sala 201, Centro Norte
Cuiabá – MT
Telefone: (65) 3624-7052

Sobre Sun Microsystems, Inc.

A Sun Microsystems desenvolve tecnologias que movem o mercado global. Guiada por uma visão peculiar - "A Rede é o Computador" –, a Sun impulsiona a participação na rede compartilhando inovações, desenvolvimento da comunidade e liderança aberta. A Sun pode ser encontrada em mais de 100 países e na Web, no endereço www.sun.com.br.

 

Sobre a Dextra Sistemas    

No mercado desde 1995 a Dextra oferece soluções customizadas em desenvolvimento e integração de sistemas e treinamentos de capacitação tecnológica. Com certificações como SUN Microsystems em tecnologia Java EE, JBoss Administration, Linux LPI, e Gerenciamento de Projetos (PMP) do PMI, a Dextra atende clientes como Força Aérea Brasileira, Metrô, UOL, Banco IBI, Banco BMG, CPqD, IG, entre outros.

 

Sobre a TDS Tecnologia

Desde 1998 trabalhando com tecnologia da informação, a TDS Tecnologia (TDS System Ltda) é especialista em treinamentos técnicos e soluções tecnológicas para empresas, preparando a área de TI para obter os melhores resultados. Possui certificações Sun Microsystems, Novell, Borland e Microsoft no Estado do Mato Grosso.

sexta-feira, 7 de agosto de 2009

A CAMISA DA EMPRESA

Acho que foi em 1994, não me lembro com precisão, quando escrevi pela primeira vez sobre a lengalenga de vestir a camisa da empresa.

Tenho percebido que a expressão tem voltado à baila. Pode parar! A camisa que o funcionário, colaborador, empregado, ou o nome que se queira dar, tem que vestir, é apenas uma. A dele!

Só quando ele vestir a própria camisa é que se dará conta que tem que produzir o melhor; tem que atender como se ele fosse o cliente; tem que conduzir o trabalho buscando deixá-lo o mais "redondo" possível pra quem vai dar continuidade; que o seu crescimento pessoal e profissional é responsabilidade dele; de que a historinha do "não sou pago pra isso" é pra quem "ta se achando", mas ainda não se encontrou.

A responsabilidade pela minha carreira, é minha, só minha. Não posso me dar ao luxo de ficar aguardando a empresa bancar o meu desenvolvimento, garantir  minha carreira.

Ah, mas não é difícil entender né! Eu só posso fazer o melhor a alguém quando eu fizer o melhor para mim!

Se eu estiver "fazendo" o melhor para o outro e não fizer o melhor para mim, que o outro comece a rezar pra dar certo, porque senão vou dizer que o problema – e a responsabilidade – é dele. Afinal, se eu visto a camisa da empresa, ela que vista a minha, também. Não estou certo? "Noblesse oblige".

A relação entre funcionário e empresa tem que buscar, sempre, ser profissional. Amizade é entre pessoas e não entre uma pessoa e uma empresa. Isso não existe! Se eu estiver na pior, posso ser amicíssimo do presidente, mas se o conselho da empresa não aprovar, eu que me vire!

Por isso que eu defendo, há 18 anos, acabar com a praga da carteira de trabalho e permitir que a relação entre uma pessoa jurídica e uma física, possa ser regida por contrato particular, sem que precise arcar com impostos astronômicos. Tem que haver mudanças na legislação e não tentar burlar a legislação. Bom, mas isso é assunto legal e estou falando de comprometimento, de comportamento.

Voltando à suada camisa, é preciso acordar e tomar as rédeas da própria vida. Nenhuma empresa quer, na verdade, que você "vista" a camisa dela. Ela quer que você empreenda o tempo todo. Quer que faça do seu trabalho o seu empreendimento. Ela quer que você cresça no seu empreendimento. Que tenha consciência de tudo que ocorre à sua volta. Que faça esse empreendimento crescer. Que seja responsável por ele!

Ela não quer que você "se ache" o dono da empresa, pois você não é! E não vai adiantar chorar as pitangas depois, dizendo que "deu o sangue pela empresa"; que deixou esposa, marido e filhos "de lado"; acumulou férias e "blablabla". Problema seu!

Faça o seu trabalho bem feito, pois o retorno dele é o seu resultado, que faz parte do resultado da empresa; se importe com os colegas; respeite a opinião dos demais; aprenda que você ainda tem muito pra aprender, mas também tem muito pra ensinar e deve ensinar; se ver um faxineiro carregando um monte de tralha, ajude-o a carregar – isto não rebaixará você; assim como você espera receber um trabalho bem feito, para que possa fazer o seu, quem receber o seu estará esperando a mesma coisa; dê o melhor de si, em todos os sentidos, pois a vida é sua.

Se de toda a maneira, você ainda quiser vestir uma camisa que não seja a sua, eu tenho uma para lhe dar e um monte de coisa pra você fazer. Pagamento? Ah, não! Afinal você já está vestindo uma camisa que é minha! 

por Silvio T Corrêa

segunda-feira, 3 de agosto de 2009

Competências comportamentais mais valorizadas pelas empresas

Por Patrícia Bispo

O ser humano é uma verdadeira fonte de emoções e através do seu comportamento expressa as características de sua personalidade, mesmo que de forma inconsciente. Se antes revelar os sentimentos era considerado puro romantismo - muito evidenciado na literatura brasileira, no século 17, hoje as emoções são vistas por outros prismas. Muitas organizações, por exemplo, quando realizam um processo seletivo não avaliam o candidato apenas por sua bagagem técnica.

 

As competências comportamentais ou humanas, não importa a nomenclatura utilizada, pesam no momento da contratação. Mas, por que isso ocorre? Porque a aptidão em lidar com as emoções influenciará diretamente o comportamento das pessoas no dia-a-dia das organizações, inclusive a performance diante das atividades. Então, quais as competências comportamentais valorizadas pelo mercado de trabalho? Abaixo, listo 15 das competências humanas que se encontram em alta no mercado. Essa relação foi formulada a partir de entrevistas, conversa que mantenho com profissionais de RH e executivos dos mais variados segmentos.

1 - Trabalho em equipe: hoje não se cogita mais que a individualidade nas organizações. É preciso o profissional precisa lidar com seus pares para atingir e até mesmo superar metas, vencer desafios.

 

2 - Capacidade de negociação: dialogar com os demais colaboradores é fundamental para chegar a consensos diante de determinadas situações que impactam diretamente no clima organizacional e até no negócio da empresa em que se atua.

 

3 - Liderança: gerir pessoas tem sido um grande desafio para as empresas, afinal o líder é considerado o comandante do barco, que dá um norte à equipe e a direciona ao alcance de performance que atenda as necessidades da organização.

 

4 - Comunicação: é preciso saber expressar ideias, tirar dúvidas, apresentar soluções para fatos que ocorrem todos os dias. Se a pessoa não consegue vencer a barreira do "silêncio", agregará pouco ou valor algum à empresa.

 

5 - Criatividade / inovação: os profissionais devem estar preparados para lidar com situações inesperadas. Muitas vezes, arriscar, liberar o potencial criativo pode trazer benefícios tanto para o colaborador quanto para a organização. Uma inovação em um processo específico pode, por exemplo, significar uma grande economia para as finanças da empresa. Sair do automático, deixar de "ser uma máquina programada", leva pessoas a novas perspectivas.

 

6 - Prudência: apesar de ser muito valorizado no mercado, o potencial criativo não deve servir de "base" para a adoção de atitudes precipitadas. Por isso, pensar duas vezes, avaliar uma proposta e ouvir a opinião do colega de trabalho não é sinal de fraqueza, mas sim de responsabilidade.

 

7 - Flexibilidade: dizer um "não" à zona de conforto. Ser capaz de aceitar as mudanças, como também situações e comportamentos antagônicos possibilitam o amadurecimento do profissional. Esse aprendizado pode, inclusive, ser aplicado na vida pessoal.

 

8 - Otimismo: é indispensável não se entregar diante do primeiro obstáculo que surge. O pessimismo afeta o colaborador e se não for trabalhado, pode ser absorvido por outros membros da equipe. Uma situação assim compromete o desempenho e compromete o clima organizacional.

 

9 - Assertividade: uma pessoa assertiva é hábil para expressar posicionamentos, ideias e até mesmo suas emoções. Ao ser assertivo, o indivíduo defende seus direitos e respeita os dos colegas. Aprende a dizer não, com argumentos que revelam profissionalismo. Através da assertividade é possível evitar conflitos desnecessários que geralmente afetam negativamente a rotina corporativa.

 

10 - Ética: uma empresa que deseja ser competitiva precisa contar com profissionais éticos e que valorizem a integridade. A ética é um dos pré-requisitos para a adoção da Responsabilidade Social nas organizações.

 

11 - Valorização da qualidade de vida: trabalhar, trabalhar, trabalhar e se tornar um workaholic (viciado no trabalho) é um indicador preocupante para as empresas. O profissional deve ter consciência de que a melhoria da qualidade de vida deve estar presente dentro e fora dos muros da companhia que atua.

 

12 - Visão holística: olhar para a organização e suas responsabilidades através de um contexto amplo, afinal não se concebe mais a possibilidade de um profissional ficar alheio ao que ocorre ao seu redor. Com a Tecnologia da Informação, o conhecimento é disseminado em uma velocidade cada vez maior.

 

13 - Compartilhamento de conhecimento: o profissional não deve temer a disseminação do conhecimento com seus pares. Cada vez que se transmite uma experiência, também se assimila algo, aprende-se com quem está ao seu lado. A recíproca também é verdadeira - quando não se domina um determinado assunto ou técnica, o profissional precisa buscar respostas com os pares.

 

14 - Autodesenvolvimento: para aprimorar suas competências, o colaborador não deve esperar apenas a iniciativa da organização. Ele também é responsável pelo seu desenvolvimento e precisa buscar ferramentas que agreguem valor como leituras de livros, revistas direcionados às suas atividades. O autodesenvolvimento não está atrelado apenas ao conhecimento técnico, pelo contrário. É aconselhável conhecer a si próprio e ler sobre os mais diversos assuntos, mesmo os que não estão ligados diretamente ao negócio da organização.

 

15 - Intuição: em determinadas situações, o colaborador precisa utilizar a intuição para desenvolver novas propostas que agreguem valor ao negócio. Essa competência faz parte dos processos mentais normais. Pode ser considerada como sendo a percepção que o indivíduo tem frente a uma determinada situação, sem a utilização do raciocínio lógico. Através da intuição pode-se adquirir e colocar em prática conhecimentos e informações.

 

Patrícia Bispo é formada em Comunicação Social - Habilitação em Jornalismo, pela Universidade Católica de Pernambuco/Unicap. Atuou durante dez anos em Assessoria Política, especificamente na Câmara Municipal do Recife e na Assembléia Legislativa do Estado de Pernambuco. Atualmente, trabalha na Atodigital.com, sendo jornalista responsável pelos sites: www.rh.com.br, www.portodegalinhas.com.br e www.guiatamandare.com.br.

 


quinta-feira, 30 de julho de 2009

Adequar-se ao sono do funcionário pode ser rentável para empresas

Até pouco tempo, as empresas estipulavam a escala de trabalho e o funcionário a cumpria, sem ao menos questionar ou sugerir uma alternativa para adequar suas necessidades físicas e psicológicas às empresariais.

As novas possibilidades que o mercado de trabalho apresenta e a mudança de perfil dos empresários estão mudando esse quadro. Adequar-se às necessidades fisiológicas do funcionário pode ser uma alternativa para as empresas que buscam melhores resultados profissionais.

"É importante que os empresários entendam que há pessoas matutinas, ou seja, que podem entrar mais cedo no trabalho, pois não terão problemas para acordar. No entanto, outra parcela, é vespertina, e terá melhor rendimento a partir do final da manhã para a tarde e a noite.

O que não significa que os vespertinos são preguiçosos ou os matutinos, trabalhadores, é apenas uma questão orgânica", explica o Prof. Dr. Luis Vicente Franco Oliveira, Coordenador do Laboratório do Sono da Universidade Nove de Julho – UNINOVE.

Trabalhar a noite, para uma pessoa que não se adapta ao turno, ou vice-versa, pode ser um grande risco, pois, a sonolência faz com que o profissional tenha uma redução dos reflexos, diminua a capacidade de concentração e criatividade, aumente a fadiga, nível de estresse, e, consequentemente, os riscos de acidentes no ambiente de trabalho e no trânsito são maiores.

Atualmente, algumas empresas já oferecem um espaço e período de descanso para o funcionário. Meia hora pode ser suficiente para a recomposição física e psicológica. Além de ter um ganho no rendimento profissional, a empresa pode deixar de perder monetariamente, afinal, funcionário afastado ou acidentado, gera alto custo.

Por Aline Alves - Casa da Notícia Comunicação

quarta-feira, 29 de julho de 2009

Hibernate e seus ResultTransformers

Esse é um ótimo artigo sobre os ResultTransformers do hibernate escrito por Ricardo Wendell em seu blog, Toca do Calango.

Link do post original em : http://tocadocalango.wordpress.com/2008/05/06/hibernate-e-seus-

resulttransformers/

 

Creio que a maioria dos desenvolvedores Java alguma vez se deparou com o trabalhoso problema de persistir informações em um banco de dados relacional. E muitos deles descobriram no Hibernate uma (relativamente) simples e eficiente solução.

Este framework de mapeamento objeto-relacional tornou-se o padrão de facto para realizar o gerenciamento de entidades persistentes em aplicações Java (depois do fiasco dos Entity Beans), tendo muitas de suas idéias adotadas na especificação da JPA. Além da facilidade de definição dos mapeamentos e de uma completa API para a realização de consultas, um dos seus pontos fortes é a ótima documentação disponível.

Entretanto, existem algumas funcionalidades para as quais esta documentação é quase inexistente. E dentre elas temos os esquecidos, mas bastante úteis, transformadores de resultados.

O problema!

Para entender a utilidade deste recurso, considere a seguinte consulta de alunos utilizando HQL (os detalhes podem ser abstraídos sem maiores problemas):

 

  1. List resultado = session.createQuery("select matricula, nome, curso.nome from Aluno").list(); 
  2. ... 
...
List resultado = session.createQuery("select matricula, nome, curso.nome from Aluno").list();
...


Com esta simples projeção restringimos a busca e aumentamos a performance da consulta de todos os alunos persistidos. Entretanto, teremos como resultado final uma lista de Object[] que precisaria ser manipulada para extrair os diversos campos.



Esta manipulação podería ser um laço para percorrer a lista resultante e, para cada array de objetos, instanciar DTOs ou entidades. Simples, mas nada divertido…



Ou então poderíamos criar um construtor para aluno que aceite os parâmetros da consulta e substituir a query por "select new Aluno(matricula, nome, curso.nome) from Aluno" . Dessa forma teríamos uma lista de alunos pronta, mas que necessitaria de novos construtores a cada novo parâmetro necessário.



Para resolver problemas deste tipo é que vamos em busca dos ResultTransformers.



A interface ResultTransformer



Escondida na API do Hibernate existe uma interface que possibilita transformar o resultado de uma consulta, seja ela com Criteria, HQL ou SQL (o suporte aos dois últimos foi adicionado na versão 3.2) que utilize projeções em uma representação mais prática do que, por exemplo, uma lista de Object[]. Apresento então a pequena ResultTransformer:



 




  1. public interface ResultTransformer extends Serializable { 


  2. public Object transformTuple(Object[] tuple, String[] aliases); 


  3. public List transformList(List collection); 





public interface ResultTransformer extends Serializable {
public Object transformTuple(Object[] tuple, String[] aliases);
public List transformList(List collection);
}


Os dois métodos especificados são aplicados em diferentes momentos para transformar o resultado de uma query: transformTuple é chamado durante o processamento inicial do resultado, com acesso às colunas retornadas pela consulta e aos aliases especificados para cada uma delas (se existirem); no caso de transformList a chamada é imediatamente antes do Hibernate retornar o resultado de uma consulta.



Alguns transformadores prontos para usar



Mas de que adianta uma interface sem implementações, não é? Felizmente o Hibernate disponibiliza algumas classes prontas para serem usadas em seus projetos.



Voltemos ao nosso problema: como não ter trabalho para manipular o resultado de consultas com projeção?



A primeira opção é o AliasToBeanResultTransformer. Este transformador mapeia aliases (se você não sabe que o são alias, aguarde mais um pouco para entender com o exemplo) de colunas em atributos de objetos pertencentes à classe definida em seu construtor, populando-os através de métodos setters (via setter injection). A utilização pode ser vista no exemplo abaixo:



 




  1. ... 


  2. List<AlunoDTO> alunos = session 


  3.     .createQuery( "select matricula as matricula, nome as nomeAluno, curso.nome as nomeCurso from Aluno" ) 


  4.     .setResultTransformer(new AliasToBeanResultTransformer(AlunoDTO.class)) 


  5.     .list(); 


  6. ... 



...
List<AlunoDTO> alunos = session
.createQuery( "select matricula as matricula, nome as nomeAluno, curso.nome as nomeCurso from Aluno" )
.setResultTransformer(new AliasToBeanResultTransformer(AlunoDTO.class))
.list();
...


Comparando com o código original vemos algumas diferenças. A primeira é a utilização da palavra-chave “as”. Esta é a forma de definir aliases (apelidos) para as colunas que serão utilizados para popular instâncias da classe AlunoDTO através de setters no estilo setNomeAluno() ou setNomeCurso().



A segunda diferença é a chamada ao método setResultTransformer() da interface Query. Com ela é possível determinar uma estratégia de transformação de resultados de acordo com a necessidade da consulta. Neste caso, informamos uma instância de AliasToBeanResultTransformer, definido para transformar as colunas em objetos do tipo AlunoDTO.



Como alternativa para a criação de DTOs ou de métodos setters em entidades podemos utilizar o AliasToEntityMapResultTransformer. Com ele a lista de tuplas será transformada em uma lista de mapas, onde cada cada um deles terá um conjunto de entradas alias => valor_da_coluna. Dessa forma temos uma representação mais fácil de ser manipulada do que a original.



Logo abaixo vê-se um exemplo de seu emprego:



 




  1. ... 


  2. List<Map<String,Object>> mapaAlunos= session 


  3.     .createQuery( "select matricula as matricula, nome as nomeAluno, curso.nome as nomeCurso from Aluno" ) 


  4.     .setResultTransformer(new AliasToEntityMapResultTransformer()) 


  5.     .list(); 


  6. ... 



...
List<Map<String,Object>> mapaAlunos= session
.createQuery( "select matricula as matricula, nome as nomeAluno, curso.nome as nomeCurso from Aluno" )
.setResultTransformer(new AliasToEntityMapResultTransformer())
.list();
...


Viram como este recurso pode ser útil? Além destes dois apresentados existem mais transformadores que podem ser utilizados em outros casos, como o DistinctRootEntityResultTransformer, empregado para evitar duplicidade de entidades no resultado. E se ainda não for suficente, sempre é possível criar novas estratégias implementando a interface ResultTransformer.

Trabalhar sob pressão!!!

Sob pressão, as pessoas funcionam melhor ou pior? Veja opinião de especialista!

Por Karin Sato – InfoMoney

"Alguma pressão é necessária, uma vez que o ser humano tem a tendência de se acomodar", diz especialista.

Existem pessoas que trabalham melhor sob pressão. Mas é uma minoria. Quem garante é Flavia Garbo, gerente de Desenvolvimento Organizacional da Luandre - Soluções em Recursos Humanos.

"Acredito que é preciso separar a pressão das ações de incentivo. Por exemplo, ações como a do "funcionário do mês" são motivacionais e em nada se comparam com o terrorismo exercido por alguns gestores, que ficam infernizando a vida do funcionário e cobrando metas inatingíveis", explica.

"Alguma pressão é necessária, uma vez que o ser humano tem a tendência de se acomodar. Existe aí uma zona de conforto, na qual as pessoas acabam se apoiando", acrescenta.

Pressão boa ou ruim?

Segundo a especialista, um dos pontos que determinam o comportamento opressor do líder é a meta. "Para motivar, a meta deve ser atingível e desafiadora. Quando é inatingível, ocorre uma pressão que é desnecessária".
A maneira de se comunicar também indica se o gestor já passou dos limites.
Gritar, ameaçar de demissão e humilhar já indicam assédio moral.

Consequências da pressão

Essa pressão desnecessária, na maioria das pessoas, causa estresse e esgotamento. "O efeito é o oposto do esperado. Se a pressão é por prazo, a empresa perde em qualidade. Se é por qualidade, pode perder em prazo", afirma.

Quando um profissional passa muito tempo sob pressão, sua produtividade cai vertiginosamente, de acordo com Flavia. "Justamente para combater o estresse, muitas empresas contam com programas de qualidade de vida para seus funcionários".

Ela lembra que alguns profissionais estressados chegam a desenvolver problemas de saúde, como gastrite, dor de cabeça e insônia. "Como resultado, o nível de absenteísmo [ausência no trabalho] aumenta".

A gerente de Desenvolvimento Organizacional alerta ainda que o profissional pode vir a sofrer a chamada Síndrome do Burnout, termo que, em inglês, significa "acabar-se em chamas". Trata-se de um desgaste provocado pelo trabalho, que causa profundo sentimento de exaustão, frustração e raiva.

quinta-feira, 16 de julho de 2009

Vagas Java/WEB para Maringá (PR) e Campinas(SP)

A Matera está com 40 vagas abertas para desenvolvedores Java/Web, nos níveis júnior, pleno e sênior para as unidades da empresa nas cidades de Maringá (PR) e Campinas (SP).

Os profissionais selecionados deverão atuar em projetos de desenvolvimento de software de grande porte. Os principais requisitos para preenchimento das vagas são: formação superior completa na área de informática ou correlatas e experiência nas áreas de desenvolvimento Java para Web, JBoss 4.x, EJB3 e JPA e JSF.

Além disso, serão considerados diferenciais os candidatos com experiência em desenvolvimento com frameworks ICEFaces ou RichFaces e JBoss Seam e certificações SCJP, SCWCD e SCBCD serão consideradas um diferencial no processo de seleção.

Mais informações em http://www.matera.com/br/cont-empresa-vagas.html

sábado, 11 de julho de 2009

Dicas e truques para HIBERNATE JPA

Seguinte galera, as dicas retiradas do site http://shrubbery.mynetgear.net a seguir são muito importantes, e pode evitar muita dor de cabeça na hora de usar o hibernate para implementar a especificação jpa em seu projeto.

Fetch strategies and types

In native Hibernate, many-to-one association are lazy by default. This means that selecting a list of objects with an HQL query will not initialize the objects at the other end of the many-to-one association. In JPA the default fetch type is eager (i.e. non-lazy), with separate selects. This means that any JPAQL query for an entity that has many-to-one associations in it will result in an N+1 SELECTS problem even if those associations are not used. To eliminate the unnecessary queries, simply set the fetch type to LAZY using:

@ManyToOne(fetch=FetchType.LAZY)


Then, in any JPA query the association can be eagerly fetched using left join fetch.





Optimistic Locking



When optimistic locking is enabled for the parent and child entities in a typical parent-child relationship the parent will be optimistically locked whenever a child is added or removed from the parent's collection of children. That is, when a child is added the @Version attribute of the parent is incremented. In a highly concurrent system this may lead to some unnecessary contention and therefore lots of optimistic locking exceptions.



To disable the propagation of optimistic locking from child to parent, use:



@OptimisticLock(excluded = true)


Note that this can control the optimistic lock propagation on either association: parent->child or child->parent. When using this annotation it is important to think about what the behavior should be for your application.



Here is an example of disabling optimistic lock propagation in both directions:



public class Parent
{
...
private Set<Child> children = new HashSet<Child>();

@OneToMany(mappedBy = "parent", cascade = {CascadeType.ALL})
@OptimisticLock(excluded = true)
public Set<Child> getChildren()
{
return children;
}
...
}

public class Child
{
...

@ManyToOne
@OptimisticLock(excluded = true)
public Parent getParent()
{
return parent;
}
...
}




Typical Mappings




Basic Entity with a Surrogate Key


Most entities will have a Surrogate Key, and some other attributes. Basic entities have the @Entity and @Table annotations on the class and the @Id, @GeneratedValue, and @Columnannotations on the ID property.



@Entity
@Table(name = "thing")
public class Thing {
private Long id;

@Id
@GeneratedValue
@Column(name = "id")
public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}
}



Collection of Primitives


Hibernate can map collections of primitives (Strings, Dates, even enums) to Java collections directly. This can be very convenient when an entity would be a very 'heavy' solution. This requires:




  1. A table to store the collection elements, with a foriegn key back to the parent.


  2. @JoinTable to map the Java collection to the appropriate rows in the table.


  3. Hibernate's proprietary @CollectionOfElements annotation.



For example, here is a User object with a sorted set of roles (enum):



@Entity
@Table(name = "user")
public class User {
...

private SortedSet<Role> roles = new TreeSet<Role>();

...

/**
* The roles for this user.
*
* @return the roles for the user
*/
@CollectionOfElements(fetch = FetchType.LAZY)
@Enumerated(EnumType.STRING)
@Sort(type = SortType.NATURAL)
@JoinTable(name = "userroles",
joinColumns = {@JoinColumn(name = "userid")})
@Column(name = "role", nullable = false)
public SortedSet<Role> getRoles()
{
return roles;
}

public void setRoles(SortedSet<Role> roles)
{
this.roles = roles;
}

...
}



Parent->child using a Set


To make a bidirectional relationship where the 'many' side is fully dependent on the 'one' side, use:




  • @OneToMany in the parent, with the mappedBy attribute set to the name of the property in the child class that refers back to the parent.


  • Use cascade = {CascadeType.ALL} on the @OneToMany to automatically insert children if they are added to the parent's set of children (no need to call entityManager.persist() on the children).


  • Use @ManyToOne on the child's backpointer.


  • You can name the foriegn key column and the foreign key constraint in the child class using @JoinColumn and @ForeignKey respectively. NOTE: Make sure your foriegn key constraint name is unique in the schema. Most databases won't allow you to have two constraints with the same name (duh).


  • DON'T FORGET! The Child class needs to define hashCode() and equals() in a way that does not use the surrogate key!



public class Parent
{
...
private Set<Child> children = new HashSet<Child>();

@OneToMany(mappedBy = "parent", cascade = {CascadeType.ALL})
public Set<Child> getChildren()
{
return children;
}
...
}

public class Child
{
...

@ManyToOne
public Parent getParent()
{
return parent;
}
...
}



Splitting an Entity using Embedded


When an entity has many properties, Java programmers usually want a fine grained domain model while the DBA may want a more coarse grained database schema. For this situation, the groups of related columns can be bundled using an embedded mapping.



@Entity
@Table(name = "user")
public class User {
private Long id;
private UserSettings settings;
private ContactInfo info;

@Id
@GeneratedValue
@Column(name = "id")
public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

@Embedded
public UserSettings getSettings()
{
return settings;
}

public void setSettings(UserSettings settings)
{
this.settings = settings;
}

@Embedded
public ContactInfo getContactInfo()
{
return contactInfo;
}

public void setContactInfo(ContactInfo info)
{
this.contactInfo = info;
}
}


The embeddable objects:



@Embeddable
public class UserSettings implements Serializable
{
private boolean hasCheezburger;

@Column(name = "cheezburger", nullable = false)
public boolean isHasCheezburger()
{
return hasCheezburger;
}

public void setHasCheezburger(boolean cheebaga)
{
this.hasCheezburger = cheebaga;
}
}

@Embeddable
public class ContactInfo implements Serializable
{
private String jabberId;

@Column(name = "jabber", nullable = false)
public String getJabberId()
{
return jabberId;
}

public void setJabberId(String jabberId)
{
this.jabberId = jabberId;
}
}


In this case the "user" table has "id", "cheezburger" and "jabber" columns, but the columns are mapped to three different Java objects.





Null values


NOTE: When all of the values in an @Embedded object are null, Hibernate will set the field in the parent object to null. This can lead to NullPointerExceptions if not handled correctly. There are two ways to handle this:




  1. Make sure code that calls the @Embedded getter handles null return values.


  2. Add a non-nullable field to the embedded object, thus avoiding the behavior entirely.




Splitting an Entity using OneToOne


Sometimes a more fine grained model for both the db schema and the Java object model is more appropriate. In this case the two tables have the same primary key.



@Entity
@Table(name = "user")
public class User {
private Long id;
private UserSettings settings;
private ContactInfo info;

@Id
@GeneratedValue
@Column(name = "id")
public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

@OneToOne(fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
public UserSettings getSettings()
{
return settings;
}

public void setSettings(UserSettings settings)
{
this.settings = settings;
}

public UserSettings addSettings()
{
UserSettings s = getSettings();
if (s == null)
{
s = new UserSettings();
s.setId(id);
setSettings(s);
}
return s;
}

}


The one-to-one object:



@Entity
@Table("user_settings")
public class UserSettings implements Serializable
{
private Long id;
private boolean hasCheezburger;

@Id
@Column(name = "id")
public Long getId()
{
return id;
}

public void setId(Long id)
{
this.id = id;
}

@Column(name = "cheezburger", nullable = false)
public boolean isHasCheezburger()
{
return hasCheezburger;
}

public void setHasCheezburger(boolean cheebaga)
{
this.hasCheezburger = cheebaga;
}
}



Optimizations




  • Don't optimize simple code that is "good enough".


  • Measure performance before optimizing - Use a profiler. If something doesn't show up in the profiler, leave it alone.




N+1 SELECTs


Usually this happens when the UI displays a table of entities, where the entities have lazy many-to-one associations that are navigated in Java code. By default, there will be one select for the main query, and one select for each entity returned for each many-to-one association. If there are many entities, this will bombard the database with queries.




  1. Use left join fetch - Fetch the entities up front in the main query.


  2. Use batch size - Set an appropriate batch size for collections and entities. When one entity in an association is lazily loaded, Hibernate will pre-fetch other instances of that same entity that have proxies in the Persistence Context (Session).


  3. Use side-effect queries - Execute JPAQL queries to initialize the entities that will be referenced, discarding the results.




Over fetching


In a typical, 'real world' application there will be lots of entities and lots of @ManyToOne associations. By default, JPA interprets @ManyToOne as an eagerly fetched relationship, so when any business logic fetches that entity, all the @ManyToOne entities are fetched as well. This may cause unexpected performance problems when updating entities rapidly or displaying data in a table.



Solutions:




  1. Use lazy loading




Partial updates


In some cases, the business logic needs to update only a few properties of an entity. The usual sequence results is something like this:




  1. Thing x = em.find(Thing.class,id); Find by id. Hibernate issues a SELECT<tt> for the entity (and any non-lazy many-to-one entities), and remembers the original values.


  2. <tt>x.setSomeProperty(value); Set the property.


  3. Transaction commits, triggering em.flush(). Hibernate compares new values to the old values. Issues an UPDATE for all persistent properties of x.



Most of the time the business logic will update lots of properties of many different entities, but when only one property is being updated there is some unnecessary overhead. The overhead can be almost completely eliminated by using batch update statements (even though we aren't updating a batch of entities). The previous example could be re-coded as:



  Query q = em.createQuery("update from Thing t set t.someProperty = :propVal where t.id = :id")
.setProperty("propVal",value)
.setProperty("id",id);
q.executeUpdate();


This has the following advantages:




  • No SELECTs. No memory used to store the original values.


  • The UPDATE is for only one column.


  • No comparison with the original values.



However, it is important to remember the following:




  • If there is other code that works with the entity, even in the same PersistenceContext / Session, it will not see the change.


  • Check the return value of executeUpdate() to make sure the expected number of rows were updated.

sexta-feira, 12 de junho de 2009

Java FX 1.2 Lançado - Confira algumas mudanças

Este é um post publicado originalmente no java free pelo Jesuíno, e achei interessante divulgar aqui as novidades no Java Fx 1.2

JavaFX Versão 1.2 acaba de ser lançada. Muitas mudanças ocorreram para melhorar a linguagem. Algumas classes pacotes novos foram lançados! Maior suporte a RSS, melhorias na performance, além de muitos novos componentes para interface com o usuário:

1->Mudanças na animação:
Alguns ajustes ocorreram para algumas classes dos pacotes javafx.animation, javafx.animation.transition, mas não foram adicionados

2->Operações Assícronas: javafx.async
3 novas classes!
* JavaTaskBase
* RunnableFuture
* Task

3->Efeitos javafx.scene.effect
Mesmo com tanto efeito, dois novos efeitos:
* BlurType
* BoxBlur
(Para quem não sabe, aplicar efeitos nos componentes em JavaFX é muito, muito fácil e interessante!)

4->Mudanças nas partes gráficas
Muitas pequenas mudanças e algumas novas classes! Algumas mudanças:
*No pacote javafx.scene foi adicionada uma nova classe: Parent.
*Muitas mudanças no pacote de layout, antes eram só 4 classes, agora temos mais essas:
* ClipView
* Flow
* LayoutInfo
* LayoutInfoBase
* Panel
* Stack
* Tile
Agora contruir GUI's ficará melhor(Antes também era bom, bastante superior ao Swing!)
Algumas novas classes no pacote javafx.stage:
* Alert
* Screen

Algumas variáveis mudaram de nome, outras deixaram de existir. Importante conferir com detalhes:
http://www.javafx.com/docs/articles/javafx1-2.jsp

5-> Eventos
A classe do tipo Nade não é mais focável automaticamente, agora você tem uma variável boleana para dizer se ele está dentro da "corrente" de foco ou não: focusTraversable.

Novas classes para o pacote javafx.input:
* InputMethodEvent
* InputMethodHighlight
* InputMethodTextRun
* MouseButton
* TextInput

6-> Mudanças na linguagem
A linguagem teve algumas mudanças!
Agora temos que colocar virgulas para separação entre os elementos das tuplas(sequences em JavaFX), exceto se você tiver uma declaração de algum elemento que termine com "}", por exemplo, classes. Exemplo:
[3, 77, 8]
[Foo {
x: 14
}
Bar {
sneeze: "cough"
}
]

Agora também está decente usar sequências lógicas booleanas. Ela seguem a regra de prioridade que usamos em Java para as operações or e and, por exemplo:
x or y and z

Ele já dá a prioridade para o and, antes você definia a prioridade por parenteses.
Uma mudança impactante também é que variáveis não poder ser declaradas com o mesmo nome em bloco.

Exemplo:
public function f() {
var x : Integer;
{
var x : Integer; //compile error
}
}

Algumas mudanças na classe Duration também ocorreram.
* Duration.toMillis() mudou o tipo de retorno para double
* Duration.INDEFINITE tempo de largura indeterminada
* Duration.toDate() não existe mais!
Não são mais palavras reservadas:
* first
* in
* init
* into
* inverse
* last
* on
* postinit
* replace
* step
* trigger
* tween
* where
* with

7-> Midia
O protocolo de Streaming em tempo real é suportado!(RTSP - Real Time Streaming Protocol)

8->Mobile
Entre outras mudanças, O emulador de mobile para windows suporta mais formatos de mídia!

9->Performance
A performance, conforme promoteu a Sun melhorar gradativamente a performance, foi melhorada em alguns aspectos como o tempo de inicialização

10->Armazenamento javafx.io:
Duas novas classes:
* Resource
* Storage

11-> Suporte a algumas plataformas,
* Solaris Beta: OpenSolaris 2009.06
* Linux Beta: Ubuntu 8.04 LTE
(Pra que não sabe, no começo do JavaFX o pessoal de Linux ficou sem ter uma versão de JDK...)

12->Production Suite(Integração com trabalhos em outras ferramentas, como o PhotoShop)
Algumas mudanças entre elas o fato de suportar formatos do PhotoShop CS4 e Illustrator CS4.

13->Componentes de Interface com o usuário
Uma das partes mais interessantes e com mais novidades!
Novos elementos de UI, agora não precisamos nos prender nos elementos Swing para Java(pacote javafx.ext.swing).
* Behavior
* Button
* ButtonBase
* CheckBox
* Control
* Hyperlink
* Keystroke
* Label
* Labeled
* ListView
* ProgressBar
* ProgressIndicator
* RadioButton
* ScrollBar
* Skin
* Slider
* TextBox
* TextInputControl
* ToggleButton
* ToggleGroup

Para quem quer fazer Gui para JavaFX usando esse novos componentes: http://javafx.com/docs/articles/controls/

14-> Componentes para gráficos
Muitas classes adicionadas para os pacotes javafx.scene.chart, javafx.scene.chart.data, javafx.scene.chart.part:
* AreaChart
* AreaChart.Data
* AreaChart.Series
* BarChart
* BarChart.Data
* BarChart.Series
* BarChart3D
* BubbleChart
* BubbleChart.Data
* BubbleChart.Series
* Chart
* LineChart
* LineChart.Data
* LineChart.Series
* PieChart
* PieChart.Data
* PieChart3D
* ScatterChart
* ScatterChart.Data
* ScatterChart.Series
* XYChart

Para dados dos gráficos, duas novas classes:
* Data
* Series

Componentes/partes do gráfico novos no pacote javafx.scene.chart.part:
* Axis
* Axis.TickMark
* CategoryAxis
* Legend
* Legend.LegendItem
* NumberAxis
* PlotSymbol
* PlotSymbol.Circle
* PlotSymbol.Cross
* PlotSymbol.HollowDiamond
* PlotSymbol.HollowTriangle
* PlotSymbol.Square
* Side
* ValueAxis

15-> WebServices
Muitas mudanças! Suporte a RSS com um pacote exclusivo!
Algumas mudanças nas classes existentes, como por exemplo, todos os métodos e atributos que eram int agora são long.

Para mais detalhes nessas mudanças, analisar o site oficial!

O pacote de feed atom javafx.data.feed.atom com mais classes:
* Atom
* AtomTask
* Category
* Content
* Date
* Entry
* Factory
* Feed
* Generator
* Id
* Link
* Person
Um pacote novo, para feed RSS: javafx.data.feed.rss. Novas classes:
* Category
* Channel
* Enclosure
* Factory
* Guid
* Image
* Item
* RSS
* RssTask
* Source
16-> Diversas
Classes novas no pacote javafx.util:
* Math
* Properties
Novo pacote javafx.data contém:
* Converter
* Pair

O site oficial contém mais detalhes sobre esses novos componentes e as mudanças:
http://www.javafx.com/docs/articles/javafx1-2.jsp

A nova JDK já está disponível:
http://javafx.com/downloads/windows.jsp

Bom divertimento!

* Acompanhe este exemplo de uma Interface GUI com JavaFX:

Link: http://www.javafx.com/docs/articles/javafx1-2.jsp

Publicado há 9 dias atrás por jesuino