New Job – Again 2011 – HP


chimarrao

ae pessoal,

Mais um post em tão curto tempo, sobre new Job. Quem tem acompanhado o blog, sabe que atualmente trabalho em SP na 4Linux em projetos Java da empresa com Linux. Porém, surgiu uma oportunidade para POA, na HP e estou mudando novamente de estado e é bem capaz de o blog ficar atrasado ou com posts desatualizado durante esse time de mudança e adaptação(espero que não fique). Bom, estarei indo trabalhar no Laboratorio de pesquisa e desenvolvimento com Java da HP (ECL). Bom, estou muito feliz(já estava feliz na 4Linux), e é difícil expressar aqui a felicidade de ir fazer parte do time HP. E sempre tive vontade de trabalhar com pesquisa, alem de desenvolvimento.

hp_logo

Sentirei falta dos colegas da 4Linux, que apesar do pouco tempo que fiquei fiz grandes amizades, conheci profissionais de alto nível e sem falar que o “pinguim” tem voz  por aqui, é o capitão da empresa. O presidente da empresa Rodolfo Gobbi é um dos executivos mais humano, humilde, administrador, empreendendor que já conheci. Realmente é um verdadeiro líder. Aproveito o espaço para agradecer pela oportunidade, sinceridade e transparência. Se você é um cara que ama linux, deve passar na 4Linux e conhecer as missoes criticas da empresa com a tecnologia. Eu fiquei pouco tempo e vi no dia-dia o bom trabalho do pinguim e que de fato Linux é Linux.  Acabei tendo um pouco de “sorte” e somente vou para terra do “tchê” em Janeiro, pois nem entrei direito e peguei férias coletivas da HP, devido as festas do final do ano.

Em especial quero agradecer  a uma grande amiga, que conheci cerca de 3 anos atras, pre-ibm, lá no GUJ, e depois na IBM, ficamos amigos e foi a pessoa que fez a indicação da vaga e que vinha falando “aqui na HP ta rolando vagas pra Java nao quer vim nao?”, estou falando da Veronica Nunes. Obrigado moça.

Meu processo:

1. A Veronica fez indicação e 1 ou 2 dias a equipe do RH entrou em contato

2. damos start no processo de entrevistas e apresentação da vaga (realmente HP, so aceita com o cv cadastrado no site deles, funciona o sistema de recebimento via site da HP)

3. uma entrevista técnica do tipo overview

4. uma entrevista em inglês (30min) conversação

5. uma entrevista com um dos gestores do laboratório

6.uma entrevista com um líder técnico – 100% tecnica(java,tdd, restful, refactoring,frameworks java,maven,soa etc)

END. Approved? yes/no

Eu estarei no ECL.

Abaixo algumas informações sobre o job, essas informações não são confidenciais, está no site da HP.

Sobre o Job

BUSINESS ENVIRONMENT
Brazil R&D is an international research and development organization with its R&D Center in Porto Alegre, RS, Brazil. As a HP’s R&D organization, Brazil R&D purpose is to deliver innovative products that provide a competitive advantage for HP, working in collaboration with business units leveraging knowledge horizontally between them. Brazil R&D has 3 laboratories in its R&D Center:
Enterprise Computing Lab (ECL), Enterprise Printing Lab (EPL) and Personal Computing Lab (PCL). This position is for the Enterprise Computing Lab.

There are several products ECL contributes with tools and solutions, participating since the conception of the features till the testing and validation of complex solutions and its support.

Job Description: Responsible for design, development, maintenance, testing, and quality and performance assurance of system software products. Work within this job classification falls into three major categories:

1. Maintenance and enhancement: Makes changes to system software to correct errors in the original implementation and creates extensions to existing programs to add new features or performance improvements;
2. Major enhancement and new product design: Designs and develops major functional or performance enhancements for existing products, or produces new software products or tools;
3. Quality and performance assurance: Reviews requirements, specifications and designs to assure product quality. Develops and implements plans and tests for product quality or performance assurance.

Experience and Skills:

* Experience with Java;
* Must be able to work with other people under a teamwork environment;
* Experience in full software development life cycle and methodologies;
* Experience working with internal and external partners;
* Very experienced communication skills and English fluency.

Concluindo

Bem, vou ficando por aqui, e como sempre eu não deixo de compartilhar minhas experiencias com meus leitores hehe :). Ahh quase esqueço, fiquei sabendo que vou trabalhar do lado de um dos caras feras, que todo javeiro e a galera de ruby conhece, Urubatan.

JNDI com Hibernate – Ambiente de Test

Olá Pessoal,

No post de hoje, vou apresentar como usar JNDI dentro do seu arquivo hibernate.cfg.xml dentro de um ambiente de teste. Em outro post falarei como usar em um ambiente de produção e ver que fica mais fácil realizar mudanças nas conexões de modo mais fácil, uma vez que normalmente o ambiente de teste possui configurações levemente diferente do ambiente de produção desde nome do usuário, até o path do BD.

Lets go…

Starting/Nosso Cenário

Eu já falei aqui no blog sobre pool de conexão no TomCat e JNDI, porém não falei como usar o JNDI dentro do Hibernate.

Aqui veremos isso com um framework bem utilizado no mercado que é o Hibernate.

Mas, a pergunta que você pode está fazendo: “Camilo, por que eu usaria isso?”, “Qual a diferença na pratica?”

Como sempre gostei de ser mais pratico e menos teorico, eu também tive essa dúvida rs. Porém, descobrir a grande produvidade quando tive 6 projetos diferentes para Produção e sempre quando tinhamos um release, era fato de esquecer de mudar o hibernate.cfg.xml, para as conexões de produção, fora que toda vez já era um saco, porque tinha que configurar sempre no ambiente de desenvolvimento antes de enviar para prod.

Enfim, na pratica você só vai configurar em um lugar as config de conexão, em um único arquivo e mais nada. E o melhor, quando for pra PRODUÇÃO, veremos que lá temos outro arquivo JNDI só para PROD, que normalmente não tem porque mudar com frequência. E nos desenvolvedores precisamos apenas saber o JNDI correto, e o administrador do Servidor que se vire lá com as configs, do arquivo de conexão em produção. Isso é extremamente importante, trabalhei em um projeto do qual nos desenvolvedores não tinhamos acesso as senhas, pw de produção, somente os administradores, para nos o que importava era apenas o path do JNDI e mais nada. Para quem trabalha fazendo todos os papeis (isso lembra meu tempo de freelance rs) desenvolvedor,administrador, DBA, isso parece ser estranho, mas em projetos grandes que participei na IBM , não é assim que funciona. Desenvolvedor é desenvolvedor,Testador é testador e por ai vai. E em ambiente teste você tem até acesso ao BD, PW etc. Mas, em produção. Not.

Hoje estarei limitado ao ambiente de teste, porque no ambiente de produção há algumas mudanças significativas e quero deixar o post focado à um assunto.

Nosso projeto

Criei um projeto muito simples, pois a funcionalidade está no uso de JNDI com Hibernate em teste. Não passa de um projeto com JSF + Hibernate. Porém,vc pode configurar isso em qualquer projeto com Hibernate para que ele funcione com JNDI.


Primeiro passo:

É configurar o arquivo web.xml do seu projeto com o nome do JNDI que deseja, pode ser o nome do seu cachorro, da sua namorada, o que você quiser.

<resource-ref>

<res-ref-name>jdbc/lpjava</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

Segundo passo:

Após ter configurado o web.xml, informando que a conexão para o BD estará naquele path. Vamos configurar o nosso JNDI, com os dados de conexão. Em ambiente de teste, vamos configurar o arquivo context.xml que está na pasta Server do Eclipse. É nele que vai estar as config locais. Insira dentro da tag Context o Resource abaixo:

<Resource auth=“Container”

name=“jdbc/lpjava”

driverClassName=“com.mysql.jdbc.Driver”

maxActive=“20” maxIdle=“10” maxWait=“-1”

type=“javax.sql.DataSource”

url=“jdbc:mysql://localhost/apptestes”

password=“lpjava”

username=“camilolopes”

validationQuery=“SELECT 1”

testOnBorrow=“true”

testWhileIdle=“true”

timeBetweenEvictionRunsMillis=“10000”

minEvictableIdleTimeMillis=“60000” />

Observe que informamos o nome do JNDI, que este tem referencia.

Terceiro passo:

Feito isso, vamos informar ao Hibernate que ele vai usar uma conexão JNDI, para o Hibernate o que importa é o path, se amanha você muda a senha de conexão vai precisar alterar apenas o arquivo context.xml que está na pasta Server dentro do Eclipse, lembrando que isso em ambiente de teste. Abaixo como ficou meu arquivo hibernate.cfg.xml

<hibernate-configuration>

<session-factory name=“hibernate/SessionFactory”>

<property name=“hibernate.connection.datasource”>java:/comp/env/jdbc/lpjava</property>

<property name=“hibernate.current_session_context_class”>thread</property>

<property name=“hibernate.transaction.factory_class”>org.hibernate.transaction.JDBCTransactionFactory</property>

<property name=“hibernate.dialect”>org.hibernate.dialect.MySQL5InnoDBDialect</property>

<property name=“hibernate.jdbc.batch_size”>0</property>

<mapping class=“br.com.camilolopes.bean.TUsuario”/>

</session-factory>

</hibernate-configuration>

Quem usa o Hibernate ou está começando vai ver que não temos mais a property para o password ou user, uma vez que há uma referencia para um path, onde este tem referencia para um arquivo (context.xml) onde está de fato nossa conexão.

Finalizando

Teste sua aplicação, mande executar e faça uma persistencia, porem não deixe de verificar se já deu um start no banco de dados, se todos os .jars referente ao Hibernate estão no projeto e no caso do Eclipse olhe se está fisicamente na pasta lib do projeto.

Vou ficando por aqui, espero que tenham gostado do post.

Abracos, see ya guys!!! 🙂

Uma simples aplicação Hibernate + JSF + poolConexao

olá Pessoal,

Bem, hoje resolvi fazer um post, do qual eu já tive problemas e acredito que alguém já passou ou passa por isso. Vc nunca ficou perdido nos passos de como desenvolver uma nova aplicação usando um conjunto de frameworks? Tipo, por onde começar? Quando você faz isso com frequência não tem como esquecer, mas não é a realidade, nem todo dia estamos criando novas aplicações e alguns processos base, “dão branco”. Eu sofria com isso, quando precisava iniciar uma nova app do zero. Claro que hoje temos ferramentas que nos ajuda. Mas, vamos esquecer essas ferramentas de auxilio e pensar em um ambiente que não temos ela disponível.

O objetivo deste post, é documentar tópicos  para que você possa montar uma pequena estrutura para o ambiente de produção e ao mesmo tempo ir reelembrando aquilo que seu cerebro deixou no “pool” dele. Usarei o Hibernate + JSF tendo o pool de conexão implementado.

note: Claro em projetos reais e grandes não fazemos isso, para não perder tempo e tb não é nada legal. Porém, se você está começando agora a fazer aplicações sem muita experiência, procure sempre lembrar a funcionalidade de cada framework dentro do projeto e quando eles aparecem no desenvolvimento isto é tão importante qto saber usar cada um deles.

Lets go…

note: vou considerar os passos abaixo para um ambiente de produção, pois em testes raramente temos problemas. Um deles é o open session view que só descobrir ele quando subir minha app.

Steps

  1. Ter o BD e tabelas criadas

  2. criar a estrutura do projeto JSF Project

  3. Adicionar as bibliotecas dos frameworks

  4. criar o bean e fazer os annotations (não queira usar xml )

  5. criar o JNDI META-INF/context.xml

  6. criar o pool de conexao com o JNDI em web.xml (Resources)

  7. atualizar o hibernate.cfg.xml com o JNDI/Pool de conexão.

    current_session_context_class: thread

    connection.datasource: java:com/env/jdbc/nomejndi

    transaction.factory_class:org.hibernate.transaction.JDBCTransactionFactory

    jdbc.batch_size:0

  8. criar o DAO Generico com Hibernate no package dao

  9. Criar a classeDAO para fazer a persistencia no BD

  10. criar o managebean e controlador para JSF

  11. iniciar a construção do front end com JSF.

  12. Implementar o SpringSecurity (optional)

  13. Implementar o Filter para evitar o open session view

Claro que nesses passos há temos apenas  os pontos chaves que acabam reativando o conhecimento que está la no “pool de string” do seu cerebro.

Visite a nossa as categorias abaixo no blog que boa parte dos assuntos listados nos passos estão nas respectivas categorias:

https://blog.camilolopes.com.br/category/hibernate/

https://blog.camilolopes.com.br/category/java/

https://blog.camilolopes.com.br/category/javaee/

https://blog.camilolopes.com.br/category/jpa/

https://blog.camilolopes.com.br/category/jsf/

Abracos, see you next post. 🙂

CLT, PJ OU CLT Flex?

Olá Pessoal,

Hoje vou falar de um assunto bem “difícil” para alguns profissionais, principalmente aqueles que estão iniciando na área. É o velho tipo de contratação CLT/PJ/CLT FLEX?

Vou abordar levemente o que é cada tipo de contratação e qual o profissão deve escolher, claro que a escolha sempre vai estar atrelada ao objetivo pessoal/profissional de cada um. Não vou deixar de falar qual contratação escolher com base no seu nível, veremos que há momentos que ser contrato por um tipo não compensa tanto.

Lets go…

Pois é amigos, temos essas formas de contratação no mercado sendo a última chamada de flex, ela não legal para o governo, uma vez que o valor real que o profissional recebe é diferente para o que é declarado de fato. Isso é errado? Bom, não posso dizer que é certo, pq não está na leis trabalhistas. Mas, aqui entre nos, a minha opinião é que ela vai existir enquanto o governo ficar com essas altas taxas tributarias em cima das nossas empresas BR. Experimenta abrir uma empresa, ter funcionários e ai vc vai entender o pq o flex existe. E não sou contra à pratica do flex não. Vou deixar meu comentário sobre ele mais pra frente.

CLT Full ou simples CLT

Essa aqui é a forma de contratação tradicional, que todas pessoas que deseja ser empregado de uma empresa, deve ser contratada. Para o governo não existe outra forma de contração CLT sem ser essa, qualquer outra coisa é um produto genérico.

Ela possui vantagens, que o trabalhor tem tais como:

  • décimo terceiro;

  • férias remuneradas;

  • FGTS; (só pode sacar se for demitido/comprar um imóvel/em caso de doenças graves:câncer,aids etc)

  • Seguro desemprego no caso de demissão involuntária. Teto máximo R$ 1000,00 que varia de 3- 6 meses.

As dúvidas que sempre tive por falta falta de experiência (tenho que confessar) nessa área trabalhista, era achar que CLT era sempre a melhor opção, mas será?

As perguntas que você deve fazer são:

  • Camilo, até quando vale ser CLT?

Eu digo que CLT vale, até quando seu salario é R$ 2.000,00 acima disso não vejo vantagem nenhuma (Exceto se a empresa tiver outros beneficios como plano de carreira e você se ver lá por um bom tempo).

  • Mas, por que?

Vejam as taxas de INSS(11%), IR. O cara acaba ganhando quase a metade. Fora os descontos de plano de saúde, odontológico e vale de transporte (que as empresas podem cobrar). Então se você ganha 2 mil em carteira seu salário é de 1.754,09 com as deduções do governo.

Então eu sempre digo, se você é estagiário, programador(ou outra função) JR. não tem porque pensar no PJ. Veremos mais na frente pra quem o PJ é indicado. O nível de profissional que se encaixa para o PJ. Se seu salário é o que acabei de citar acima, fique tranquilo que você está na “vantagem” sobre o PJ, para o valor citado


CLT Flex

O flex tem os mesmos benefícios do CLT, a única diferença que ele sempre vai ser baseado no valor que está em carteira e não o valor real. Ele funciona da seguinte forma: o profissional que ganhar R$ 3 mil vai receber 40% desse valor em carteira e os 60% por fora. E o melhor 60% liquido sem dedução de imposto, pq a empresa paga a você por uma folha extra que não tem nada relacionado ao seu salário(entra como benefícios).

Ser empregado dessa forma, não espere:

  • ter um FGTS em cima do seu salario bruto, e sim o que está na carteira

  • Décimo será em cima do valor em carteira;

  • Seguro desemprego com a média do salario real, mas não adianta muito já que tem o limite que não ultrapassa 1 mil reais. Então pouco importa se vc ganha 3k ou menos, o máximo que vai conseguir é 1 mil de seguro desemprego.

E é vantagem?

Bem, depende de quanto você precisa por mês, eu acredito que seja vantagem sim. Pois vc acaba ganhando mais e pagando menos imposto, agora seja inteligente pegue essa grana que vc está deixando de pagar de imposto e invista em vc mesmo. Faça um curso, compre livros (e leia), tire uma certificação, enfim veja a diferença que dá e não conte com ela para garantir a balada do mês.

Se você ainda é novo, é melhor ainda, aproveite pra ganhar dinheiro e re-aplicar em si mesmo. E não se preocupar muito com essas coisas de INSS, FGTS etc. Contribuía o que for necessário, mas fazer investimentos altos em FGTS e INSS, quando ainda é jovem não sei se é uma forma inteligente de agir pensando no futuro, como a mídia diz. (claro ela tem seus motivos)

  • Camilo, vc é louco eu tenho sim que pensar na minha aposentaria, no FGTS etc.

Claro que vc deve pensar, mas uma coisa que aprendi. Você não vai conseguir comprar a casa dos seus sonhos e ter aposentadoria que deseja, tendo o valor desse em carteira. Contribuindo com 200-300,00 reais por mês para a previdência. E outra lembre-se que a previdência do governo ela tem um teto máximo para vc receber, então mesmo que pague para querer receber 20 salários mínimos, mas se o teto é 10, vai receber 10, e os outros 10 ficam para os nossos governantes hehe :).

Eu já passei pelo CLT-Flex e toda parte “fria” que deixei de pagar, simplemente fiz investimento tais como: paguei um bom curso de inglês, comprei livros, etc. Depender do seu salario, você pode pagar até 600,00 por mês, só de imposto. Puts, dar pra fazer qtos cursos Java no ano com essa mensalidade? Pensei nisso.


Vou ficando por aqui e no próximo post, vou falar sobre o PJ.

Abracos, see ya!

Going to SP… novo rumo

capitalsp

Olá Pessoal,

Nas próximas semanas é possível que fique sem atualizar o blog, por um pequeno intervalo, pois estou de mudança para São Paulo/Capital. E nesse processo de mudança, até adaptação tanto à nova empresa, projetos, moradia etc. Então terei que deixar um pouco o blog meio que off para organizar colocar as coisas em dia. Espero que não seja por muito tempo, pois tirar um blog de um blogueiro é suicídio na certa.

P.S: alguns posts eu já deixei programado, mas não são muitos :). Então se acontecer de ficar alguns dias sem atualização no blog, vocês já sabem o motivo.

Abracos, e see ya!