Networking…

em áreas diferentes com sentidos diferentes.

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!

Maio 5th, 2009 by Mauro

Deu pra ver que não to mantendo muito isso aqui…

Em breve continuo… Enquanto isso to no Twitter.

Posted in Working | 2 Comments
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”!

Setembro 30th, 2008 by Mauro

Após alguns meses de experiência no mercado de trabalho, comecei a observar o quanto está desfigurado o profissional de tecnologia da informação. Não existem métricas para classificar os profissionais até porque a área é muito ampla. Você pode trabalhar em empresas de TI ou numa de publicidade ou num mercadinho, todos precisam de um “sisteminha”.

Nessa orgia de oportunidades profissionais se discute muito sobre o modelo de contratação. Na área de TI é muito comum tu constituir uma empresa que presta serviços (o chamado PJ). Neste modelo, ao contrario do CLT (carteira assinada), o trabalhador consegue uma maior liquidez visto que os tributos trabalhista que a empresa que contrata paga ao Estado são repassados (em parte) ao PJ. Além de que a empresa que contrata prefere PJ pois, não há exames admissionais e outras burocracias.

Deve ta pensando, mas e o décimo terceiro e o fundo de garantia?! Bom, quando for fazer o contrato deve levar isso em consideração. E posso te dizer que qualquer investimento da mais que o fundo de garantia!

Outro dia vi esse post  e fiquei muito indignado. O governo sustenta essa cambada de sindicalistas pra criar um orgão fiscalizador barato e o que é pior, sustentado pelo próprio trabalhador! Claro que existem prós e contras sobre essa questão então avalie e tire suas próprias conclusões: pró x contra

Se ainda acha que CLT é bom por que tem férias e é “socialmente” “correto”, só tenho uma coisa a dizer: VAI TRABALHAR, não espera tudo cair de mão beijada. O que as empresas procuram hoje em dia é pessoas pró-ativas e produtivas e não sangue sugas que só pensam nos seu direitos e ficam levando atestado até pra unha encravada!

E o que tu procura? Ficar num emprego que é difícil de pedir aumento pois a empresa paga muitos tributos por cada centavo que tu custa ou uma maior liquidez pra tu te estabilizar e crescer?!

Posted in Nerd, Working | No Comments
Julho 13th, 2008 by Mauro

Vinha trabalhando em alguns projetos mas ainda não tinha os publicado em lugar algum. Finalmente os publiquei no hosting do Google Code.

O vcodegenerator é um projeto que surgiu da necessidade de gerar código repetitivo que, nós programadores que não utilizamos frameworks, nos deparamos várias vezes. Utilizando Apache Velocity e uma estrutura de classes simples para leitura de arquivo, foi possível criar alguns Templates para geração de códigos.

O jmobilityskeleton é um projeto que desenvolvi como Projeto de Graduação. Após algumas tentativa consegui, junto com o meu orientador e co-orientador, a publicação de um artigo referente ao trabalho. Neste projeto utilizamos o padrão Template Method para criar padrões de mobilidade de código.

Ambos os projetos são Open Source e disponíveis no svn do Google Code. Em posts futuros vou entrar em mais detalhes dos projetos.

Era isso!

Posted in Nerd, Working | No Comments
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

Abril 14th, 2008 by Mauro

Na busca por trabalho é sempre bom ter experiências anteriores ou um bom QI. No entanto, um outro meio para comprovar e estar a altura na conquista por uma vaga e concorrer com profissionais experientes ou que possuam boas indicações são as certificações (principalmente na área de TI). Se tu é novo no mercado e não tem QI, passará por n entrevistas (até decorar as perguntas) e aguardará por respostar sem um puto no bolso :P. Mas isso faz parte! Enquanto espera respostas se dedique a conquistar um terceiro elemento muito válido para essas situações, as certificações.

No Fórum do site GUJ existe um tópico com materiais de estudo e diversos links de simulados para que procura certificação Java. Destaco um simulado em português, o da Caelum. Além de uma certificação de uma linguagem de programação é importante o conhecimento de sistema operacional. Uma certificações Linux é uma boa escolha, se tu estiver procurando se manter na comunidade de Software Livre. As Provas LPI certificam e são reconhecidas em todo mundo. Podes fazer um simulado no site CertificacaoLinux.com.br.

Bueno! Agora é estudar, já que não se da pra fazer festas, viagens ou qualquer outra coisa sem $$$.