Renato M Miyasaki

Como fazer, links de Gestão de TI e programação.

Cluster com Terracotta

Publicado em 1 de July de 2010 | Sem comentários

Pesquisando sobre clusterização, acabei encontrando o TerraCotta (http://www.terracotta.org/)

Para executá-lo no modo mais simples, sem fazer uma configuração mais fina, bastou instalá-lo no servidor (terracotta-3.2.1_2-installer.jar) e colocá-lo para funcionar.

Configurei um arquivo (tc-config.xml) e coloquei junto com o start-tc-server.bat – na pasta bin.

C:\Arquivos de programas\terracotta\terracotta-3.2.1_2\bin>start-tc-server.bat -n Server1

O meu arquivo de configuração:

<?xml version="1.0" encoding="UTF-8"?>
<!-- All content copyright Terracotta, Inc., unless otherwise indicated.      All rights reserved. -->
<tc:tc-config xsi:schemaLocation="http://www.terracotta.org/schema/terracotta-5.xsd"
xmlns:tc="http://www.terracotta.org/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<servers>
<!– Sets where the Terracotta server can be found. Replace the value of          host with the server’s IP address. –>
<server host=”10.2.0.101″ name=”Server1″>
<data>%(user.home)/terracotta/server-data</data>
<logs>%(user.home)/terracotta/server-logs</logs>
</server>

<!– If using more than one server, add an <ha> section. –>
<ha>
<mode>networked-active-passive</mode>
<networked-active-passive>
<election-time>5</election-time>
</networked-active-passive>
</ha>
</servers>
<!– Sets where the generated client logs are saved on clients. –>
<clients>
<logs>%(user.home)/terracotta/client-logs</logs>
</clients>
</tc:tc-config>

E nas aplicações, eu coloquei no context.xml (no META-INF) ou diretamente na pasta conf do Tomcat:

<Context>
<Valve className="org.terracotta.session.TerracottaTomcat60xSessionValve" tcConfigUrl="10.2.0.101:9510"/>
<param-value>10.2.0.101:9510</param-value>
</Context>

Pronto, acione o Developer Console e veja os clientes de seu cluster.

JSF + Facelets + ICEfaces

Publicado em 1 de July de 2010 | Sem comentários

Tive alguns problemas para conseguir incluir o ICEfaces (1.8.1) na minha aplicação JSF 1.2 (com MyFaces) + Facelets + Hibernate.

1o passo: incluir os jars necessários
Como já estava utilizando o MyFaces, utilizei o jar just-ice.jar ao invés do icefaces.jar.
backport-util-concurrent.jar
commons-beanutils.jar
commons-collections.jar
commons-digester.jar
commons-fileupload.jar
commons-logging.jar
FastInfoset.jar
icefaces-comps.jar
just-ice.jar
jxl.jar
krysalis-jCharts-1.0.0-alpha-1.jar
xercesImpl.jar
xml-apis.jar

E para utilizar o facelets também no icefaces:
icefaces-facelets.jar

2o passo: configurar web.xml

O Eclipse adicionou essa parte para mim:

<context-param>
<description>To allow multiple windows for a single application.</description>
<param-name>com.icesoft.faces.concurrentDOMViews</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<description>Turn on/off application-wide synchronous or asynchronous updates.    </description>
<param-name>com.icesoft.faces.synchronousUpdate</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<description>Google Maps API key is required if gMap component is used. Sign up for an API key from http://code.google.com/apis/maps/signup.html</description>
<param-name>com.icesoft.faces.gmapKey</param-name>
<param-value>ABQIAAAADlu0ZiSTam64EKaCQr9eTRTOTuQNzJNXRlYRLknj4cQ89tFfpxTEqxQnVWL4k55OPICgF5_SOZE06A</param-value>
</context-param>
<context-param>
<param-name>com.icesoft.faces.uploadDirectory</param-name>
<param-value>upload</param-value>
</context-param>
<context-param>
<param-name>com.icesoft.faces.uploadMaxFileSize</param-name>
<param-value>404857600</param-value>
</context-param>

<listener>
<listener-class>com.icesoft.faces.util.event.servlet.ContextEventRepeater</listener-class>
</listener>

<servlet>
<servlet-name>Persistent Faces Servlet</servlet-name>
<servlet-class>com.icesoft.faces.webapp.xmlhttp.PersistentFacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>Blocking Servlet</servlet-name>
<servlet-class>com.icesoft.faces.webapp.xmlhttp.BlockingServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>uploadServlet</servlet-name>
<servlet-class>com.icesoft.faces.component.inputfile.FileUploadServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>Persistent Faces Servlet</servlet-name>
<url-pattern>*.iface</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Persistent Faces Servlet</servlet-name>
<url-pattern>/xmlhttp/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Blocking Servlet</servlet-name>
<url-pattern>/block/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>uploadServlet</servlet-name>
<url-pattern>/uploadHtml</url-pattern>
</servlet-mapping>

E essa parte, eu adicionei para que em algumas páginas eu utilizasse o icefaces e em sem.

<context-param>
<description>
The following parameter will cause the ICEfaces ViewHandler
to process only those pages with a .iface extension:
</description>
<param-name>com.icesoft.faces.delegateNonIface</param-name>
<param-value>true</param-value>
</context-param>

3o passo: configurar faces-config.xml
Tive que basicamente mudar as navegações, onde estava pagina.xhtml, mudei para pagina.iface

4o passo:
Testar

Regras:
Nas expressões, se o icefaces estende o html ou o tomahawk, tive que utilizar a implementação do icefaces. Exemplo: onde era mudei para . Podem até coexistir, porém não funcionará corretamente.

Algumas referências:
Icefaces + Tomahawk – Status of ICEfaces Support for MyFaces Tomahawk Components
http://support.icesoft.com/jive/servlet/KbServlet/download/731-102-1045/ICEfacesTomahawkCompSupport.html
PDF – Guia do desenvolvedor do ICEfaces (ver pasta docs do download do ICEfaces)

JSF + Facelets: alterar objeto agregado em um droplist

Publicado em 9 de June de 2010 | Sem comentários

Estou fazendo uma prova de conceito com JSF + Facelets + Hibernate, e tive problemas em alterar um objeto agregado em um droplist.

Antes, eu estava somente colocando o código identificador do objeto que queria modificar, e assim ele me dava o erro “org.hibernate.HibernateException: identifier of an instance …

O código antes era:

<h:selectOneMenu id=”forn” value=”#{NotaFiscalBean.notaFiscal.fornecedor.codFornecedor}” >
<f:selectItems value=”#{NotaFiscalBean.fornecedores}” ></f:selectItems>
</h:selectOneMenu>

Onde #{Bean.notaFiscal.fornecedor.codFornecedor} é o código do objeto agregado e;
#{NotaFiscalBean.fornecedores} é uma lista de objetos do tipo Map (na verdade, SelectItem) com os valores possíveis. E a chave continha o código identificador e o valor, o nome do fornecedor.

O novo código passou a ser:

<h:selectOneMenu id=”forn” converter=”#{NotaFiscalBean.fornecedorConverter}
value=”#{NotaFiscalBean.notaFiscal.fornecedor}” >
<f:selectItems value=”#{NotaFiscalBean.fornecedores}” ></f:selectItems>
</h:selectOneMenu>

Onde: #{NotaFiscalBean.notaFiscal.fornecedor} é o objeto agregado;
#{NotaFiscalBean.fornecedores} é igual acima, exceto que na chave do mapeamento passei a utilizar os objetos;
#{NotaFiscalBean.fornecedorConverter} é uma classe que implementa a interface javax.faces.convert.Converter

Na implementação de javax.faces.convert.Converter, você precisa implementar os métodos:
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) e;
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2).

Adicionalmente, inclui o construtor que recebe a lista dos possíveis objetos.

Então, a minha classe Converter ficou assim:

package com.renatom.jsf.converter;

import java.util.List;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;

import com.renatom.jsf.model.Fornecedor;

public class FornecedorConverter implements Converter {

List <Fornecedor> list;

public FornecedorConverter(List<Fornecedor> fornecedores) {
list = fornecedores;
}

@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
if (arg2 == null || arg2.length() == 0)
return null;

long id = Long.valueOf(arg2).longValue();
if (id < 0)
return null;

Fornecedor fornRet = null;
for (Fornecedor forn : list) {
if (forn.getCodFornecedor() == id) {
fornRet = forn;
break;
}
}
return fornRet;
}

@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
if (arg2==null) return "-1";
Fornecedor forn = (Fornecedor)arg2;
return String.valueOf(forn.getCodFornecedor());
}
}

Fonte: http://seamframework.org/Community/SelectOneMenuAndJPAManyToOne

Hibernate + JPA no Eclipse com Hiber Objects

Publicado em 28 de May de 2010 | Sem comentários

Hiber Objects – http://objectgeneration.com/eclipse/index.html

Plugin para eclipse que gera, através de um diagrama de classes, todo o código necessário para persistir dados de uma tabela.

Gera código Java dos POJOs, DAOs, classes de teste.

Agiliza o desenvolvimento com o Hibernate para Java.

Revisão bibliográfica – Blogs

Publicado em 4 de February de 2010 | Sem comentários

WIKIPEDIA. Blog. 2001. Atualizada em 3 jan. 2010. Disponível em <http://en.wikipedia.org/wiki/Blog>. Acesso em 03 fev. 2010.

Descrição

História, como funciona, tipos de blogs.

Contribuição para o TCC

Um blog, derivado de web log, é um tipo de sítio. Mantido por uma pessoa ou um grupo de pessoas que inclui um texto, chamado de post. Um post pode conter comentários dos leitores do blog, interagindo assim com o sítio. Um blog pode ser pessoal, a grande maioria dos blogs, corporativo ou por um assunto. Um post pode ser classificado e etiquetado. As etiquetas auxiliam os usuários a encontrarem um post relacionado a algum assunto.

Vantagens

- Facilidade de uso
- Classificação dos textos, facilitando a procura
- Livre estrutura para criação de categorias e etiquetas

Desvantagens

- Não ter um relacionamento mais íntimo entre os posts
- Com a grande quantidade de posts, há dificuldade em encontrar o item correto se não for bem estruturado
- Deve haver um supervisor para que os usuários não classifiquem os posts indevidamente

Revisão bibliográfica – Fórum de Discussão

Publicado em 4 de February de 2010 | Sem comentários

WIKIPEDIA. Internet Forum. 2003. Atualizada em 25 jan. 2010. Disponível em <http://en.wikipedia.org/wiki/Internet_forum>. Acesso em 31 jan. 2010.

Descrição

O que é um Fórum de Discussão? História, contribuição registrada ou anônima, regras e políticas, tipos de usuário, estrutura de um fórum, características comuns, comparação entre fórum e lista de discussão.

Contribuição para TCC

Segundo WIKIPEDIA (2003), um Fórum de Discussão é um sítio de discussão online sobre um determinado tema. Os participantes, através das discussões, podem socializar-se, encontrando um grupo que tenha os mesmos interesses que seus. Para participar de um fórum, abrindo um novo assunto ou respondendo, normalmente é necessário que haja um registro no sítio e os usuários são classificados de acordo com suas contribuições.

Um fórum é uma estrutura de diretórios em que o nó final é o tópico, que contém as mensagens. Ele é organizado como um conjunto de tópicos genéricos, atualizado pelos membros do fórum e regido por um grupo de moderadores.

Vantagens

- Facilidade de uso
- Estrutura de tópicos

Desvantagens

- Manutenção da estrutura de tópicos
- Relacionamento entre textos difuso
- Pesquisa difícil pelos interesses

Riscos – Análise

Publicado em 30 de August de 2009 | Sem comentários

Em um projeto sempre nos lembramos de fazer o escopo, as estimativas de esforço e de tempo. Porém, há um item que sempre deve ser considerado, não importando o tamanho do projeto: os riscos.

Menosprezá-lo pode significar a falha do projeto inteiro.

Para avaliar um risco, devemos considerar a probabilidade em que o risco pode ocorrer e o impacto que ela trará, se ocorrer. A probabilidade sendo calculada como porcentagem e o impacto como um valor monetário.
O produto da probabilidade e do impacto é o VME (valor monetário esperado).

Os riscos de um projeto podem ser negativos ou positivos.
Em caso negativo podemos dar respostas como evitar, mitigar, transferir ou aceitar.

  • Evitar: a resposta dada, evitará o risco. Ex.: Vou viajar para a Europa daqui a 4 meses e possuo o risco da variação cambial. Para evitar a variação, comprarei os Euros necessários hoje.
  • Mitigar / Reduzir: a resposta sobre a causa do risco irá diminuir a probabilidade de ocorrer ou o impacto. Ex.: roubo de carro. Mitigação sobre o impacto: venda do carro e compra de um menos visado. Mitigação sobre a probabilidade: evitar estacionar na rua.
  • Transferência: transferir a responsabilidade do impacto para um terceiro. Ex.: roubo de carro. Seguro do carro mediante o pagamento de um prêmio.
  • Aceitar: dado um risco, ele é aceito se nenhuma resposta identificada é factível. Ex.: poderá haver atraso de dois dias, porém mais que isso deve ser tratado.

Em caso de um risco positivo, podemos ter como respostas:

  • Explorar: garantir que a oportunidade ocorra
  • Compartilhar: envolver terceiros que possam capturar melhor a oportunidade
  • Melhorar: aumentar a probabilidade ou impacto da oportunidade.

Sabendo que o risco existe e do tipo de resposta que existem, podemos seguir para um próximo passo: como fazer isso.
Para fazer isso, eu utilizarei da área de conhecimento gerenciamento de riscos do PMBoK, da quarta edição.

  1. Planejar o gerenciamento de riscos
  2. Identificar riscos
  3. Realizar análise qualitativa dos riscos
  4. Realizar análise quantitativa dos riscos
  5. Planejar resposta aos riscos
  6. Monitorar e controlar riscos

1. Planejar o gerenciamento de riscos
Deve ser iniciado na concepção do projeto e finalizado nas fases iniciais do planejamento do projeto.
Ele é concebido para definir as atividades do gerenciamento de riscos.

ENTRADAS: escopo do projeto, plano do projeto, ativos organizacionais, fatores ambientes da empresa, plano de gerenciamento de custos, plano de gerenciamento de tempo, de comunicação
TÉCNICAS: reuniões e análises de planejamento
SAÍDAS: Plano de gerenciamento de riscos

O plano de gerenciamento de riscos contém: metodologia, papéis e responsabilidades, orçamento, prazos, categorias de riscos, definições de probabilidades e impactos, matriz de probabilidade e impacto, tolerâncias revisadas das partes interessadas, formatos dos riscos e acompanhamento.

(A partir desse ponto, vou parar de detalhar – ficará para uma atualização posterior)
2. Identificar riscos
É o processo de identificar os riscos que podem afetar o projeto e documentação de suas características.
Nesse processo, existem diversas técnicas para identificar:

2.1. Revisões de documentação
2.2. Coleta de informações: técnica Delphi, brainstorming, entrevista, análise da causa-raiz.
2.3. Análise de listas de verificação
2.4. Análise das premissas
2.5. Técnicas de diagramas: diagrama de Ishikawa, de influência e fluxograma
2.6. Análise SWOT
2.7. Opinião especializada

3. Realizar análise qualitativa de riscos
É o processo para priorizar os riscos de acordo com a probabilidade e o impacto.

4. Realizar análise quantitativa de riscos
Dos riscos que foram selecionados no processo 3 pela priorização, terão suas probabilidades e impactos calculados numericamente.
É utilizado também para riscos que não tivemos certeza no processo 3 para garantir que um risco que possa ter grande impacto não seja tratado.

5. Planejar resposta aos riscos
Desenvolvimento de opções e ações para aumentar as oportunidades e reduzir as ameaças ao projeto.

6. Monitorar e controlar os riscos
Implementação dos planos de respostas aos riscos, acompanhamento dos riscos identificados, riscos residuais, identificação de novos riscos e avaliação da eficácia do processo de riscos.

Fonte: PMI – Project Management Institute. A guide to the project management body of knowledge – PMBOK Guide. PMI Standards Committee, 2008.

[CEGTI - TCC - Vanzolini] Revisão Bibliográfica – Wikinomics

Publicado em 17 de May de 2009 | 1 Comentário

Tapscott, Don; Williams, Anthony D. Wikinomics: How mass collaboration changes everything (Expanded Edition). Nova Iorque: Ed. Portfolio, 2008.

Status: Lido.

Descrição

Em Wikinomics, os autores dão exemplos como a colaboração em massa pode resolver problemas em que se não fosse utilizada, consumiria grandes recursos financeiros e seria postergada ou até mesmo não chegassem ao objetivo.

Contribuição para o TCC

Análise de idéias para solucionar problemas da com ferramentas colaborativas como Wiki, Fórum, Blog, etc.

No final do livro, características como código-aberto (open source), peering, compartilhamento são analisadas, e como elas dão origens a empresas 2.0

[CEGTI - TCC - Vanzolini] Escolha do tema

Publicado em 17 de May de 2009 | Sem comentários

Como dito, eu estou cursando pós-graduação entitulado Curso de Especialização em Gestão da Tecnologia da Informação (CEGTI) , com duração de 20 meses. E término previsto para Dezembro de 2009.

Para conseguir o meu diploma, terei que desenvolver um Trabalho de conclusão de curso (TCC).

Algumas áreas foram consideradas:

  • Gestão da Comunicação
  • Gestão do Conhecimento
  • Gestão da Qualidade
  • Gestão de Projetos

Eu acabei escolhendo Gestão da Comunicação e Gestão do Conhecimento. A escolha dessas áreas ocorreu, porque na empresa, que eu trabalho, percebi que há perda de informação ou dificuldade em conseguí-la quando está restrita a poucas pessoas, ou há a contratação de um novo colaborador.

Algumas informações poderiam estar sempre disponíveis, e assim, serem atualizadas conforme necessárias.

Como ferramenta para conseguir gerir esse conhecimento e disseminá-la, considerei as ferramentas colaborativas surgidas com a Web 2.0: blogs, wikis, redes sociais, etc.

A partir disso, o tema foi definido em “Gestão da conhecimento com ferramentas colaborativas (web 2.0)”

Tema

Gestão da conhecimento com ferramentas colaborativas (web 2.0)

Contexto

A empresa possui ferramentas para gestão de incidentes, problemas, mudanças e de configuração em um ambiente web.

Problema

Principalmente nos grandes clientes, muitas das sugestões e pequenos erros dos usuários não são reportados para o desenvolvedor, ficando concentrados nos gestores desses usuários, gerente de contas e de projetos ou analistas que vão a campo fazer visitas. Perde-se, assim, sugestões, críticas dos usuários.

Com a rotatividade, e mesmo esquecimento por processo falho, há perda dessas informações.

Objetivos

Promover registro das idéias, sugestões e críticas para melhorar as ferramentas, tanto em usabilidade quanto em funcionalidade, e dar um melhor suporte aos colaboradores e gestores através de base histórica.

Justificativa

Melhoria das ferramentas, com melhor usabilidade e com características para auxiliar os processos de seus clientes.

Economia em treinamento através da base de conhecimento.

Satisfação do cliente tanto do suporte técnico quanto da facilidade de uso da ferramenta.

Etapas

Na intranet, configurar um sistema de colaboração para que haja troca de informações, do útil ao social.

Construção de um módulo como plugin para registrar idéias dos usuários das ferramentas.

No sistema de chamados, registrar as melhores idéias como características futuras (roadmap) das ferramentas.

O Gerente-Minuto

Publicado em 17 de May de 2009 | Sem comentários

Em 08/09/2008, iniciei a disciplina Gestão de RH e Comunicação na pós que estou fazendo.

A aula é bem dinâmica e posso dizer que foi dividida em duas partes: aula exposicional e dinâmica de grupo. E nessa aula inaugural, recebemos uma apostila. Na parte final, contém algumas bibliografias interessantes que o professor comentou.

Uma das que me chamaram a atenção foi o livro “Liderança e o Gerente-Minuto”, tentei comprar no Submarino, mas não havia disponível e acabei comprando o “Gerente-Minuto” mesmo. Mais tarde, consegui comprar o primeiro.

Os livros são bem didáticos e, por serem pequenos, rápidos de serem lidos.

Algumas bases dos livros:
- objetivo-minuto, elogio-minuto e repreensão-minuto.
- liderança situacional: direção, treinamento, apoio e delegação.

keep looking »
AJAXed with AWP