Confissões de um geek

desenvolvimento de sistemas e novas tecnologias

Robô de navegação java

Publicado por alexandresoli em Novembro 11, 2009

Andei pesquisando ferramentas para navegação automática em sites sem a utilização do navegador e me deparei com duas boas opções em java, httpunit e htmlunit. Lembrando que tais ferramentas são utilizadas normalmente para testes de navegação automatizado, porém eu adaptei uma delas para ler minhas mensagens no gmail entre outras coisas ;-) .
Ambas são ótimas ferramentas, porém o httpunit não teve continuidade por seus desenvolvedores e o suporte a javascript é escasso, então optei pelo htmlunit, mesmo este sendo visivelmente mais lento.

Segue o código para visualizar email:

final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3);
final HtmlPage gmail_login_url = webClient.getPage(“https://www.google.com/accounts/ServiceLogin?service=mail&passive=true&rm=false&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3Fui%3Dhtml%26zy%3Dl&bsv=zpwhtygjntrz&scc=1&ltmpl=default&ltmplcache=2&hl=en”);
System.out.println(“\n GMAIL LOGIN TITLE: ” + gmail_login_url.getTitleText());
HtmlForm gmail_login_form = gmail_login_url.getForms().get(0);
gmail_login_form.getInputByName(“Email”).setValueAttribute(“meuemail@gmail.com”);
gmail_login_form.getInputByName(“Passwd”).setValueAttribute(“minhasenha”);
HtmlPage post_auth_page = gmail_login_form.getInputByName(“signIn”).click();
System.out.println(“\n GMAIL INBOX TITLE(normal): ” + post_auth_page.getTitleText());
HtmlPage htmlModePage = post_auth_page.getAnchors().get(0).click();
System.out.println(“\n GMAIL INBOX TITLE(html): ” + htmlModePage.getTitleText());
HtmlForm form = htmlModePage.getFormByName(“f”);
HtmlTable table = (HtmlTable)form.getElementsByTagName(“table”).item(1);

System.out.println(“\n GMAIL MESSAGES LIST: \n”);
for (final HtmlTableRow row : table.getRows()) {
int count = 0;

for (final HtmlTableCell cell : row.getCells()) {
if (count == 1){
System.out.println(“\n SENDER: ” + cell.asText());
} else if (count == 2) {
System.out.println(“\n MESSAGE TITLE: ” + cell.asText());
HtmlAnchor link = htmlModePage.getAnchorByText(cell.asText());
HtmlPage messagePage = link.click(); ////td[text()=" "]
List list = messagePage.getByXPath( “//div[@class='msg']“);
HtmlDivision messageDiv = (HtmlDivision) list.get(0);
System.out.println(“\n MESSAGE CONTENT: ” + messageDiv.getTextContent());
}else if (count == 3) {
System.out.println(“\n MESSAGE DATE: ” + cell.asText() + “\n”);
}
count++;

}
}

Agora o código para alterar as configurações de conta do google:

final WebClient webClient = new WebClient();
final HtmlPage gmail_login_url = webClient.getPage(“https://www.google.com/accounts/ServiceLogin?service=mail”);
final String loginTitle = gmail_login_url.getTitleText();
HtmlForm gmail_login_form = gmail_login_url.getForms().get(0);
gmail_login_form.getInputByName(“Email”).setValueAttribute(“meuemail@gmail.com”);
gmail_login_form.getInputByName(“Passwd”).setValueAttribute(“minhasenha”);
HtmlPage post_auth_page = gmail_login_form.getInputByName(“signIn”).click();
final String entranceTitle = post_auth_page.getTitleText();</code>

final HtmlPage gmail_settings_forwarding_url = webClient.getPage(“https://www.google.com/accounts/ServiceLogin?service=mail”);
gmail_login_form = gmail_login_url.getForms().get(0);
gmail_login_form.getInputByName(“Passwd”).setValueAttribute(“minhasenha”);
post_auth_page = gmail_login_form.getInputByName(“signIn”).click();
final String manageAccountTitle = post_auth_page.getTitleText();
final List links = post_auth_page.getAnchors();
NodeList h2 = post_auth_page.getElementsByTagName(“<h2>”);
final HtmlDivision profileDiv = post_auth_page.getHtmlElementById(“id”);
String text = profileDiv.getTextContent();

Outra opção que utiliza o navegador para teste é o selenium.

Referências:

httpunit: http://httpunit.sourceforge.net/
htmlunit: http://htmlunit.sourceforge.net/
selenium: http://seleniumhq.org/

Enviado em geek code | Tagged: , , , , | Deixar um comentário »

Tutorial DWR – Combos dependentes

Publicado por alexandresoli em Maio 21, 2009

Publiquei um novo tutorial sobre o DWR, desta vez o assunto são as famosas combos dependentes. Para quem não conhece, combos dependentes são combos que mudam o valor de outra(s) combo(s), por exemplo, as cidades de uma combo são modificadas quando selecionamos um estado.

O tutorial pode ser visualizado abaixo:

Enviado em DWR | Tagged: , , , | 4 Comentários »

Tutorial DWR

Publicado por alexandresoli em Maio 14, 2009

Resolvi escrever um tutorial demonstrando como se configura e utiliza o básico do DWR. O tutorial pode ser visto abaixo:

Enviado em DWR | Tagged: | Deixar um comentário »

Windows 7 estilo XP

Publicado por alexandresoli em Janeiro 31, 2009

Modificações para deixar o Windows 7 parecido com o Windows XP:

Restaurar o famoso Quick Launch

•    Botão direito na barra de tarefas.
•    Toolbar.
•    New Toolbar.
•    Entre como seguinte comando: %userprofile%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch .
•   Clique em select folder.
•   Clique emcima do novo item chamado Quick Lauch e desmarque lock the taskbar.
•   Clique sobre a divisória a barra e desmarque Show Text e Show Title.
•   Pronto, agora arraste para o lugar mais comodo da tela e utilize como no XP.

Windows Explorer sem frescuras

No Windows 7, quando acionamos o Windows Explorer, ele abre em uma tela cheia bobagens para usuários leigos, eu prefiro iniciar esta tela vendo meus discos.

•    Botão direito na área de trabalho.
•    New > Shortcut
•    No campo texto, coloque o seguinte comando: %SystemRoot%\explorer.exe /root,::{20D04FE0-3AEA-1069-A2D8-08002B30309D} .
•   Clique em Next e depois Finish.
•   Arraste o icone criado para a Quick Launch.

Dos meus icones cuido eu!

O Windows 7 tem a mania de esconder os icones ao lado do relógio, algo que me incomoda bastante. Abaixo como mostrar todos os icones.

•    Botão direito no menu Start.
•    Properties
•    Taskbar.
•    Customize.
•    Marque Always show all icons and modifications on the taskbar.
•    Clique em OK.

Links úteis:

20 Windows 7 Tweaks & Tips – Every Secret Uncovered to Date
Desabilitando serviços no Windows 7

Enviado em Windows 7 | Tagged: | 2 Comentários »

Checklist para desenvolvimento

Publicado por alexandresoli em Janeiro 27, 2009

Segue abaixo um checklist que utilizo na maioria dos meus projetos para garantir um minimo de qualidade.

1 – CHECKSTYLE para o eclipse – Auxilia na padronização do código, seguindo o SCC (Sun Code Convention), além de incentivar a documentação (javadoc).

2 – Criação de shared lib – evita conflito de jars no projeto, centralizando e simplificando a utilização de bibliotecas.

3 – JSTL – evita a criação de scriptlets e facilita a migração entre frameworks.

4 – Jquery – facilita o desenvolvimento em javascript, efeitos em ajax, além de funcionar nos navegadores mais populares.

5 – FIREBUG – Plugin para o Firefox que ajuda na depuração de javascript, além de auxiliar com o CSS.

6 – Web Developer – ajuda ao testar o layout de uma página, controle de sessão, cookies.

7 – JUNIT – garante que o código de outros desenvolvedores não irá modificar o funcionamento do código alheio.

8 – Selenium - automatização de testes de aceitação.

9 – YSlow – mede a performance de todos os componentes da página.

10 – Fiddler – analisa o tráfego dos navegadores.

Enviado em Qualidade | Tagged: , | Deixar um comentário »

Pessoas VS Recursos

Publicado por alexandresoli em Janeiro 25, 2009

Há muito tempo tenho escutado e de certa forma me aborrecido com esta palavra utilizada de maneira errada,  muitas vezes por ignorância e outras por necessidade em distânciar o ser humano. E é deste segundo grupo que este post se trata.

Primeiro, vamos a definição do dicionário Michaelis para a palavra recurso:

recurso
re.cur.so
sm (lat recursu) 1 Ato ou efeito de recorrer. 2 Ação pela qual se invoca o auxílio, o socorro ou o valimento de alguém. 3 Aquilo de que se lança mão para vencer uma dificuldade ou um embaraço. 4 Meio apropriado para chegar a um fim difícil de ser alcançado. 5 Auxílio, proteção, socorro. 6 Remédio. 7 Abrigo, refúgio. 8 Dir Ação que compete à pessoa condenada em juízo ou tribunal, para recorrer para outro juízo ou tribunal superior (Cód. de Proc. Civil, art. 808). 9 Dir Ação de garantias. 10 Pedido de reparação, de indenização; queixa, reclamação. 11 O ato de apelar ou recorrer para um poder maior. 12 Reg (Nordeste) Casa onde se aluga quarto para encontros amorosos. sm pl 1 Bens materiais, dinheiro, haveres, fortuna. 2 Meios pecuniários. 3 Elementos de força, de produção de riqueza: País de grandes recursos. 4 Dotes, faculdades. 5 Habilitações, possibilidades, aptidões, meios. R. de apelação: o interposto de sentença ou juiz ou tribunal inferior para o de superior instância, a fim de que esse possa revogar a sentença definitiva por aquele proferida. R. de ícone, Inform: arquivo que contém a imagem de mapa de bits de um ícone, usado por um programador quando escreve uma aplicação. R. de revista: aquele que a lei permite interpor de sentenças proferidas, em última instância, nos casos de injustiça notória ou nulidade manifesta, excedendo o valor da causa à alçada dos julgadores.

Muitos irão citar os famosos Recursos Humanos de uma empresa, porém vou logo avisando, são coisas totalmente distintas. A área de Recursos Humanos em uma empresa tem a finalidade de escolher quem seja qualificado para trabalhar para a empresa diante de uma série de candidatos.

Alguém que é pago para auxiliar nas tarefas de uma organização,  por mais profissional e ético que seja, ainda sim é um ser humano, alguém com sentimentos, que sente dor quando se machuca, chora quando está triste, ri quando alegre, enfim, uma pessoa suscetivel a problemas e digna de respeito por parte de seus colegas e superiores.

Chamar alguém de recurso, implica em afirmar que todos os pontos citados acima não se aplicam, podendo simplesmente ser descartado e até mesmo ignorados seus direitos como cidadão. Então, por mais que pareça “na moda” chamar as pessoas de recurso, pense antes que todos os recursos são finitos, e a durabilidade de um profissional em uma empresa está ligada ao fato dele se sentir parte de algo maior, sentir que seu trabalho agrega sentimento e dedicação e que sem estes ingredientes, nenhuma empresa vai conseguir segurar seus talentos.

Enviado em Carreira | Tagged: , , | 1 Comentário »