segunda-feira, junho 13, 2011

Dicas para a prova PMI – Assuntos Diversos


Resumo de Dicas – PMP – Baseado no Pmbok 3ª edição.


 
Programa - x Projeto x Subprojeto
Ciclo de vida do GP x ciclo de vida do projeto
Ciclo PDCA – Melhoria contínua, operações, atividades (sem início e fim)

 
Projeto : Temporário, original, novidade.
Tríplice Restrição: escopo, custo e prazo (qualidade).
Project Charter (sumário do projeto) – Elaborado pelo GP e patrocinador. Aprovado pela alta administração.
Riscos são maiores no início do projeto e menores no final.
Mudanças são maiores ao final do projeto e menor no início.
Planejamento – Elaborado pelo GP e Time do Projeto.

 
Disciplinas relacionadas com o GP: Pmbok, Habilidades interpessoais, Normas e regulamentação da área, conhecimentos e habilidades de gerenciamento em geral, entendimento do ambiente do projeto.

 
Fases:
Marcos(milestones) – pontos de controle, sem duração, que podem, ou não, ter resultados associados; Resultados/ Entregas(Deliverables): Produtos (ou serviços) tangíveis e verificáveis frutos da execução do projeto. ; Avaliações(Reviews): Análise do desempenho do projeto e dos resultados alcançados; Critério para Evolução (Phase Exit Criteria) – Critério para se o projeto deve prosseguir para a próxima fase.

 
Estruturas organizacionais
Funcional – especialização, exército, canais verticais RIGIDOS de comunicação, GF > GP.
   
  • Project Coordinator – Nível mais alto da organização possui poder de decisão.
  • Project Expeditor – Nível mais baixo, sem poder de decisão.

 
Matricial – dupla subordinação
Pessoal designado temporariamente, retornando após o final do projeto.
  • Forte – GP > GF
  • Fraca – GP < GF
  • Balanceada – GP = GF
Vantagens: Recupera a visibilidade dos objetivos, permite uso eficiente dos recursos coorporativos, melhora o fluxo de informações.
Desvantagens: Mais que 1 chefe, estrutura de controle complexa, custos, conflitos e treinamento aumentados.

 
ProjetizadaGP > GF – Gerente do projeto tem total autonomia, melhor para o projeto, ao final do projeto, dificuldade de desmobilizar a equipe. Competência gerencial, adequação a mudanças.

 
Diferenças:
Tipo
Poder 
Matriz forte
Gerente Projetos 
Matriz fraca 
Gerente Funcional 
Matriz Balanceada 
Balanceado 
Projetizada 
Organização por projetos, o GP tem total controle dos projetos. As pessoas se reportam ao GP. 

 
Condução de projetos multidisciplinares complexos -> Matriz Forte

 
Pros X contras 
Funcional 
Matricial 
Projetizada 
Competências Técnicas 
1 - Verde 
2 - Amarelo 
3 - Vermelho 
Adaptação a mudanças
3 - Vermelho
2 - Amarelo
1 - Verde
Controle de recursos
1 - Verde
3 - Vermelho
2 - Amarelo
Coordenação Horizontal -------
3 - Vermelho
2 - Amarelo
1 - Verde
Treinamento corporativo
1 - Verde
3 - Vermelho
2 - Amarelo
Disponibilidade de RH
2 - Amarelo
3 - Vermelho
1 - Verde
Competência Gerencial em conduzir projetos
3 - Vermelho
2 - Amarelo
1 - Verde

 
* Se não falar nada você é o gerente de projeto em uma organização Matricial.

 
PLINCm > Condutor do Processo e Liderança
Problem Solving – Solucionador de problemas, nunca fugir deles.
Liderança
Influenciador – capacidade de influenciar - poder
Comunicação - + de 90%
Motivação

 
Escritório de Projetos – Mentoring, metodologias, portfólio de programas e projetos.

 
Cultura organizacional influencia diretamente o andamento dos projetos.
Influências Sociais–Econômicas-Ambientais – projetos devem operar dentro do contexto das normas culturais onde a organização atua. As organizações são cada vez mais responsabilizadas por tais impactos (poluição, imagem...)

domingo, junho 12, 2011

Google Calendar - Proxy Servlet para adição de agendas externas

Conforme já falei no post anterior sobre o assunto, Google Calendar - Adicionando agendas externas, no google calendar para se fazer a adição de uma url de uma agenda externa é necessário que se utilize um proxy. No post anterior passei o código fonte de um programa na linguagem ASP (Active Server Pages).

Mas agora que cancelei o meu provedor de hospedagem anterior, que suportava ASP, tive que arrumar uma nova solução, de preferencia gratuita.

A escolha foi fazer um servlet em Java e colocar para rodar na estrutura do GAE, Google App Engine. Que é o servidor de apps web do Google, que suporta aplicações escritas em Java, Python e Go e para aplicações que não utilizem muitos recursos você pode usar a infraestrutura do Google de graça.

Foi relativamente simples, apesar do código necessário ser muito maior em Java do que o necessário em ASP.  O único problema que não consegui resolver, devido ao pouco tempo disponível, foi uma exceção de time out. Sim, o GAE - Google App Engine, limita a execução do seu código em no máximo 30 segundos por requisição.

Assim, como o servidor de onde baixo os dados é um pouco lento, tive que apagar alguns registros mais antigos do calendário. Com menos de 5000 registros consegui baixar o arquivo em menos de 30 segundos, contornando temporariamente o problema.
 Apos instalar seu app no google app engine, use a seguinte url para utilizar o sistema:

http://[nome app].appspot.com/AgendaProxy?acesso=[codigo app]

Segue o código do servlet.
Version:1.0 StartHTML:0000000167 EndHTML:0000049823 StartFragment:0000000452 EndFragment:0000049807
import java.io.IOException;

import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.BufferedReader;
import java.io.PrintWriter;

import javax.servlet.http.*;
import javax.servlet.ServletException;

import com.google.appengine.api.urlfetch.HTTPResponse;
import com.google.appengine.repackaged.com.google.common.util.Base64;

import java.util.logging.Logger;




@SuppressWarnings("serial")
public class AgendaProxyServlet extends HttpServlet {
private static final String HOST = "[servidor do calendário]";
private static final Logger log = Logger.getLogger(AgendaProxyServlet.class.getName());
private static final String versao = "Versão: 1.00";


private HttpURLConnection getConnection(String path, String username, String password, String prot) throws Exception {
String porta = ":443";
prot = prot.toLowerCase();

if (prot!="https") {
prot = "http";
porta = "";
}

URI uri = new URI(prot, HOST, path, null);
URL url = uri.toURL();


log.info("abrindo conexão");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();


connection.setRequestProperty("Host", HOST + porta);
connection.setRequestProperty("Accept", "text/html, */*");
connection.setRequestProperty("User-Agent", "Mozilla/3.0 (compatible; Indy Library)");
connection.setDoOutput(true);
connection.setRequestProperty("Authorization", "Basic "
+ Base64.encode((username + ":" + password).getBytes()));
int timeout=connection.getConnectTimeout();
log.info("time Out:" + timeout);

connection.setConnectTimeout(timeout * 100);
timeout=connection.getConnectTimeout();
log.info("NEW time Out:" + timeout);
return connection;
}
public void service (HttpServletRequest httpRequest,
HttpServletResponse httpResponse)
throws ServletException
{

log.severe("===>" + versao);
String acesso="";
try {
acesso = httpRequest.getParameter("acesso");
}
finally {
if (acesso==null) acesso="";
}
log.info(">acesso:" + acesso);
try {
if (acesso.equals("dmsxyz1234")) {

URLConnection urlConn = getConnection("/[caminho para download sem o nome do servidor]/Calendar", "[nome usuário]", "[senha]","http");


log.info("urlConn:" + urlConn.toString());

// show the client the content type:
log.info("geting contentType");
String contentType = urlConn.getContentType();
log.info("contentType:" + contentType);
httpResponse.setContentType(contentType);
// get the input stream
log.info("abrindo imputStream");
InputStream in = urlConn.getInputStream();
log.info("abrindo buffer de leitura");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
//char[] buffer = new char[1024];
String contentString = "";
log.info("vai iniciar a leitura");
String tmp = br.readLine();

int c = 0;
do
{
c++;
if (c % 5000==0) {
log.info("qt:" + c);
}
contentString += tmp + "\n";
tmp = br.readLine();
}
// while (tmp != null && c<50000);
while (tmp != null);
log.info("qnt de linhas lidas:" + c);
//
// Now write the bytes out to the client.
//
byte[] contentBytes = contentString.getBytes();
OutputStream out = httpResponse.getOutputStream();
log.info("carregando variavel out");
out.write(contentBytes, 0, contentBytes.length);
log.info("Escrevendo variavel out");
out.flush();
out.close();
log.info("fechei, tudo ok");
}
else
{
log.severe ("acesso negado:"+acesso);

try {
PrintWriter pw = httpResponse.getWriter();
pw.println("Acesso negado ! Senha invalida !" + acesso);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
log.severe("erro ao ler o input");
throw new ServletException("Erro durante a escrita: " + e.getMessage());
}
}
}
catch (IOException ioe) {
// on open connection:
log.severe("erro ao abrir conexao");
throw new ServletException("Exception while opening '" + "': " + ioe.getMessage());
}
catch (Exception e) {
// on reading input:
log.severe("erro ao ler o input");
throw new ServletException("Exception during request: " + e.getMessage());
}
}
public static String encode (String source) {
StringBuilder buf = new StringBuilder(source);
byte[] bytes = null;
try {
bytes = buf.toString().getBytes("ISO-8859-1");
} catch (java.io.UnsupportedEncodingException uee) {
assert false;
}
String header = Base64.encode(bytes);
return header;
}
}

quinta-feira, junho 09, 2011

T-Mobile Angry Birds Live

Muito legal este vídeo no YOUTUBE, mostra um evento que a T-Mobile montou em Barcelona para promover seus celulares.
 E o tema foi o Angry Birds.

Yate: Como usar o Google Voice no seu PC sem precisar do GMAIL

.
.
Muitos já sabem que existe uma maneira de utilizar o Google Voice para fazer ligações gratuitas para os EUA através do Gmail Call. O problema é que para funcionar corretamente ou você precisa estar fisicamente nos EUA ou utilizar um proxy.

   
    Descobri ontem o aplicativo YATE. Este aplicativo alem de dar acesso a MSN, GTALK, JABBER e outros, também permite que você utilize a sua conta do GTALK para fazer ligações via Google Voice, temporariamente, de graça para os EUA e se você tiver créditos para qualquer lugar do mundo.



    Para isto, basta você:
 1 - Fazer o download do programa para a sua plataforma, funciona para Windows, MAC (OSX) e Linux.

  2 - Instalar o programa e executá-lo.

  3 - Configurar a sua conta do Gmail no programa, escolhendo a opção adicionar uma nova conta Gtalk ou Jabber.

 4 - No menu principal do programa, escolher a aba Telephony.



5 - Digitar o número que você quer chamar e clicar no botão Call.  Lembre-se que você deve usar um formato de número compatível com os números de telefone dos EUA.  Ou seja, para discar para o Brasil você deve digitar, +55 [ddd sem o 0] [número telefone] .  Mas para discar para outros lugares fora dos EUA e Canadá você precisa ter créditos.
      Para testar você pode ligar para o BING da Microsoft, 1-800-Bing-411, no número: 1-800-246-4411.

Translation by Google Translate

Many already know that there is a way to utilize Google Voice for making free calls to USA via Gmail Call. The problem is that to work properly or you need to be physically in the U.S. or use a proxy.
     I discovered yesterday the application YATE. This application in addition to providing access to MSN, Gtalk, Jabber and others, also allows you to use your account to make calls via GTALK Google Voice temporarily free to the U.S. and if you have credits anywhere in the world.


For this, you simply:

  1 - Download the program for your platform, works for Windows, Mac (OSX) and Linux.

   2 - Install the program and executes it.

   3 - Configure your Gmail account in the program, choosing the option to add a new account Gtalk or Jabber.



   4 - In the main program menu, choose the tab Telephony.

    5 - Enter the number you want to call and click on Call. Remember that you must use a number format compatible with U.S. phone numbers. That is, to dial you must enter Brazil, +55 [area code] [number]. But to dial to other places outside the U.S. and Canada you must have credits.

       To test you can call Microsoft BING, 1-800-Bing-411 in number: 1-800-246-4411.number





Busca do Google

Custom Search