Networking…

em áreas diferentes com sentidos diferentes.

Setembro 30th, 2009 by Mauro

You need to a flashplayer enabled browser to view this YouTube video

Little less conversation, little more action, please

 A little less conversation, a little more action please
All this aggravation ain’t satisfactioning me
A little more bite and a little less bark
A little less fight and a little more spark
Close your mouth and open up your heart and baby satisfy me
Satisfy me baby

Baby close your eyes and listen to the music
Drifting through a summer breeze
It’s a groovy night and I can show you how to use it
Come along with me and put your mind at ease

A little less conversation, a little more action please
All this aggravation ain’t satisfactioning me
A little more bite and a little less bark
A little less fight and a little more spark
Close your mouth and open up your heart and baby satisfy me
Satisfy me baby

Come on baby I’m tired of talking
Grab your coat and let’s start walking
Come on, come on
Come on, come on
Come on, come on
Don’t procrastinate, don’t articulate
Girl it’s getting late, gettin’ upset waitin’ around

A little less conversation, a little more action please
All this aggravation ain’t satisfactioning me
A little more bite and a little less bark
A little less fight and a little more spark
Close your mouth and open up your heart and baby satisfy me
Satisfy me baby

Agosto 10th, 2009 by Mauro

não interesseiro. Dicas de ser popular e conseguir o que se quer? Com certeza muito além dessas coisas momentâneas de popularidade…

Tanto no mercado de trabalho quanto entre amigos, enfim, networking é muito importante e diria.. quase que vital. Um artigo que li cita fases como: “Apresente-se e reapresente-se”. Nem sempre as pessoas lembram de ti, e se lembrarem poderás com essas atitudes conquistá-las. O maior e mais importante elemento da relação entre as pessoas: Confiança!

Vai fica ai parado lendo? Olha pro lado e começa a conquistar teus espaços!

Julho 30th, 2009 by Mauro
Posted in Learning, Nerd | 3 Comments
Dezembro 23rd, 2008 by Mauro

Bah, faz tempo q não blogo nada…

Tenho precisado de tempo… tempo pra tudo… inclusive de tempo pra ter tempo…

Tempo pra fazer nada… tempo pra viajar… nem que seja dentro da cabeça…

Já fui mais criativo… já fui mais esperto… hoje sou mais calmo… mais pensativo…

O que acontecerá amanha? Sei lá…

Mais uma experiência… todas se parecem… mas o amanhã nunca é igual… sempre somos surpreendidos!

It’s cool!

Trabalho novo, celular novo… Natal em casa… Ano novo na praia!

Who cares?!?!?! Me, Myself and I?!?!

Keepalive….

Posted in Learning | 1 Comment
Outubro 31st, 2008 by Mauro

Aplicações Web-based são uma realidade em muitas empresas por motivos como a facilidade de manutenção (não sendo necessário reinstalar a aplicação no cliente a cada alteração).

É claro que como toda tecnologia exitem vantagens e desvantagens. A usabilidade na manipulação de dados numa interface baseada numa pagina web, as vezes poder ser trabalhosa dependendo dos mecanismos de controle que a página oferece, como a validação de dados.

O GWT (Google Web Toolkit) é uma excelente alternativa para geração de páginas web voltadas para aplicações (ex: GMail). A facilidade de criar interfaces e comunica-las com servidores, torna esse Toolkit uma ferramenta interessante no desenvolvimento de aplicações web. Além do Toolkit, a extensão GWT-Ext é uma alternativa a mais que facilita, por exemplo, a criação rápida de formulários com recursos muito semelhantes a aplicações desktop (inclusive de validação). Em aplicações web, a manipulação de dados acontece do modelo cliente/servidor. A criação de web-services do lado servidor para manipulação de dados é uma opção onde tanto aplicações web quando desktop podem facilmente fazer operações CRUD, por exemplo.

Neste contexto entra o conceito de persistência de dados, no Java: JPA. O Hibernate é um serviço baseado neste conceito e que através de Annotations é possível definir entidades de persistência de forma rápida e simples. No entanto, essas entidades possuem características que o compilador GWT não consegue interpretar nativamente. Uma das formas de integra a utilização de GWT para aplicações que utilizam entidades de persistência é implementando o padrão de projeto Decorator. Este padrão de projeto do tipo comportamental permite que sejam definidas funcionalidades específicas a um determinado objeto, no caso a definição de persistência. Sendo assim, cria-se um objeto DTO (Data Transfer Object) e uma entidade de persistência que recebe este DTO para que se possa aplicar a persistência dos dados.

No exemplo que será apresentado a seguir, foram criadas duas entidades de persistência: City e State. As entidades representam duas tabelas no banco de dados que possuem relação entre elas através do campo id da tabela State com o campo state_id da tabela City. No lado cliente (GWT) criou-se duas classes DTO contendo as informações que são persistidas no banco de dados. O processo da-se da seguinte maneira:

  • O cliente cria um DTO com os dados da tela;
  • O cliente passa através do service o DTO;
  • O service cria a entidade de persistencia passando como parametro do contrutor o DTO;
  • O service faz a persistencia da entidade.

Para melhor exemplificar segue abaixo o código fonte do DTO (cliente) e da entidade da tabela State(servidor):

public class StateBean implements IsSerializable, Serializable {
private Integer id;
private String abbrev;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getAbbrev() {
return abbrev;
}
public void setAbbrev(String abbrev) {
this.abbrev = abbrev;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Object[] toObjectArray(){
return new Object[]{
this.getId(),
this.getAbbrev(),
this.getName()
};
}
}


@Entity
@Table(name="State")
public class State implements Serializable {
@Transient
private StateBean bean;
private List<City> city;
public State(StateBean bean){
this.bean = bean;
}
public State(){
this.bean = new StateBean();
}
@OneToMany(cascade=CascadeType.ALL,mappedBy="state")
public List<City> getCity() {
return city;
}
public void setCity(List<City> city) {
this.city = city;
}
@Column(name="abbrev")
public String getAbbrev() {
return bean.getAbbrev();
}
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
public Integer getId() {
return bean.getId();
}
@Column(name="name")
public String getName() {
return bean.getName();
}
public void setAbbrev(String abbrev) {
bean.setAbbrev(abbrev);
}
@Transient
public StateBean getBean(){
return bean;
}
public void setId(Integer id) {
bean.setId(id);
}
public void setName(String name) {
bean.setName(name);
}
public void setBean(StateBean b){
this.bean = b;
}
}

No serviço temos o seguinte:


public class StateServiceImpl extends RemoteServiceServlet implements
StateService {
...
public boolean save(StateBean bean) {
BaseDao bd = new BaseDao();
State st = new State(bean);
return bd.save(st);
}

}

O BaseDao serve apenas como utilitario para a persistencia. Ele possui o seguinte código:


public class BaseDao implements Serializable{
private static SessionFactory factory = InitSessionFactory.getInstance();

public boolean save(T obj){
Session em = factory.openSession();
try{
em.getTransaction().begin();
em.persist(obj);
em.getTransaction().commit();
return true;
} catch (Exception e){
em.getTransaction().rollback();
e.printStackTrace();
return false;
} finally {
em.close();
}
}

}

Na internet é possível encontrar outras alternativas para utilizar Hibernate e GWT. gwt-hibernate é uma alternativa semelhante a apresentada porém sem a utlização de JPA. hibernate4gwt faz tranformações de classes entre o cliente e o servidor. Este tutorial também apresenta uma alternativa de implementação.

Outubro 14th, 2008 by Mauro

Há algum tempo atrás, em projeto da Boa Idéia Software Livre, trabalhei com XP (Extreme Programming). Recentemente tenho ouvido falar de Scrum, um modelo baseado em ciclos guiados por reuniões de definições de trabalho. É claro que metodologia de desenvolvimento de software sempre podem denominar se um projeto foi bem ou mal. O fato que achei interessante em Scrum foi a descrição de Metodologias Ágeis. Na verdade essa descrição deve ser aplicada a todos os modelos de trabalho, acho que essa é a essência do famoso “mão na massa”. Os princípios dessa metodologia são:

“Estamos descobrindo maneiras melhores de desenvolver software fazendo-o nós mesmos e ajudando outros a fazê-lo. Através desse trabalho, passamos a valorizar:

  • Indivíduos e interação entre eles mais que processos e ferramentas;
  • Software em funcionamento mais que documentação abrangente;
  • Colaboração com o cliente mais que negociação de contratos;
  • Responder a mudanças mais que seguir um plano.

Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda.”

Ou seja, diplomas, certificações e idiomas são diferenciais importantes na hora de uma entrevista ou de preencher o currículo, mas o que vai te fazer um profissional de sucesso e com uma boa remuneração é o que tu é de verdade, no dia-a-dia. Portanto: “mão na massa”!

Maio 22nd, 2008 by Mauro

As vezes, no trabalho ou na faculdade, queremos acessar recursos na internet que não gostaríamos que o administrador da rede tivesse acesso, como bancos ou conteúdos bloqueados. Já que instei uma VM com o XP, fiz um teste utilizando o PuTTY, para acesso SSH, e configurei um túnel de rede(no how-to que segui, em versões mais novas do putty no item Tunnel pode-se escolher as opções Local, Remote e Dynamic - utilizei a Dynamic pois não precisa identifica o nome da máquina, só a porta).

Depois de configurado o túnel e conectado no seu servidor, basta configurar suas aplicações para utilizarem conexão Socks apontando para sua máquina local e para a porta que tu configurou no PuTTY-Tunnel. Abaixo a configuração no IE.

Pronto! Agora é só acessar tudo que você quiser e de forma segura, já que a conexão SSH é criptografada. Abaixo a imagem da minha VM XP fazendo túnel via PuTTY.

Pra quem usa Linux, esse link tem dicas para Tunneling. Fazemos a mesma coisa, no entanto em modo texto.

Maio 21st, 2008 by Mauro

Virtualização! Esse termo ta na moda!

Nos diferentes níveis de abstração, desde as Máquinas Virtuas Java até sistemas de virtualiação para consolidação de servidores em DataCenters, as máquinas virtuais podem ser uma ferramenta interessante tanto para profissionais como para usuários leigos.

Profissionais podem utilizar para testar programas Web, por exemplo. Usuários leigos, nem tão leigos assim, podem utilizar para testar seus programas sem perder a instalação do SO principal, ou mesmo criar uma VM para testar o Linux ;) .

Exitem diversos sistemas de virtualização, dentre eles o Xen, VMWare. No meu caso utilizei, no intuito de testar e acabei gostando, o VirtualBox da Sun. Como todos produtos Sun, o sistema de gerência é simples e de fácil configuração. Com certeza qualquer usuário pode criar uma VM e instalar sistemas baseados na arquitetura x86. Como eu uso Ubuntu, criei uma VM pra instalar o Windows XP (xangue paum). Depois de criado o disco virtual, bastou inicializar a VM e dar boot pelo CD do windows e voialá! Instalação como se estivesse em uma máquina normal.

Nas imagens estão os screenshots do processo de instalação: Instalação - Boot - Final .

Agora é só instalar programinhas e testar…

Maio 9th, 2008 by Mauro

Dizem que o trabalho dignifica o homem (sem querer ser machista). Pois bem! Tudo que acontece na vida deve ser encarado de forma positiva, embora em alguns momentos tu te pegue pensando: Onde estou? Quem sou? Pra onde vou?

Todo período de transição é desafiador. Isso é bom por que tu vai ter oportunidade de conhecer teus limites, virtudes, enfim, irá evoluir como ser humano. E a ambição é um elemento importante para o sucesso, principalmente no início de uma carreira.

Abaixo mais uma tirinha do PhD Comics que muitas vezes mostra a realidade, mas que deve servir para refletir sobre tudo o que passou e tudo que se deseja passar ainda na vida!

 

Vamos tocando que o tempo não para e “o mundo não acaba amanhã”!

Abril 17th, 2008 by Mauro