Networking…

em áreas diferentes com sentidos diferentes.

Setembro 30th, 2009 Author: 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 Author: 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 Author: Mauro
Maio 5th, 2009 Author: Mauro

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

Em breve continuo… Enquanto isso to no Twitter.

Dezembro 23rd, 2008 Author: 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….

Outubro 31st, 2008 Author: 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 Author: 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 Author: 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?!

Agosto 11th, 2008 Author: Mauro

Outro dia olhando coisas pela internet achei isso. Dai perdi uma tarde fazendo o meu! Claro que não tinha camera profissional muito menos técnica pra alinhar os lances…. foi no olhometro mesmo!

 

Julho 13th, 2008 Author: 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!