Função para criptografar com MD5 (Java)

17 17UTC Dezembro 17UTC 2007

    /**
* criptografa usando MD5
*
* @param valor
* @return
* @throws NoSuchAlgorithmException
*/

    public static String md5 (String valor) throws Exception {
MessageDigest md = MessageDigest.getInstance(”MD5″);
BigInteger hash = new BigInteger(1, md.digest(valor.getBytes()));
String s = hash.toString(16);
if (s.length() %2 != 0)
s = “0″ + s;
return s;
}


Executando programa externo e recuperando a saída (Java)

17 17UTC Dezembro 17UTC 2007

import java.io.*;
public class Executar {

public static void main(String argv[]) {
try {
String line;
Process p = Runtime.getRuntime().exec (”dir c:“);
BufferedReader input =
new BufferedReader
(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
}
catch (Exception err) {
err.printStackTrace();
}
}
}


Exemplo de envio de e-email com Java

17 17UTC Dezembro 17UTC 2007

import java.io.IOException;
import java.io.PrintStream;

import sun.net.smtp.SmtpClient;

/**
* Classe para envio de email
*/

/**
* @author gregui
*
*/

public class Email {

   /**
* Construtora
*
*/

public Email() {

}

public boolean enviar() {

String to = “maurivanluiz@gmail.com,” +
kleber.martins@gmail.com“;

String from = “gregui@gmail.com“;

try {
SmtpClient client = new SmtpClient(”mail.xxxxx.com.br“);  //servidor smtp
client.from(from);
client.to(to);
PrintStream msg = client.startMessage();
msg.println(”to:” + to);
msg.println(”from:” + from);
msg.println (”Subject:Exemplo de Envio de e-mail”);
msg.print(”\r\n”);
msg.println(”Testando de email  http://gregui.wordpress.com”);

client.closeServer();
} catch (IOException e) {
System.out.println(e.getMessage());
return false;
}
return true;
}

    /**
* Exemplo de uso
* @param args
*/

public static void main(String args[]) {
Email mail = new Email();

mail.enviar();
}
}


Instanciando uma classe dinamicamente (JAVA)

17 17UTC Dezembro 17UTC 2007

Aqui vai exemplo de como instanciar um objeto dinamicamente!
String classeNome = “NomeDaClasse”;
Object[] contrutoraParam = new Object[0]; //parametros da contrutora

Object objeto = Class.forName (classeNome).getConstructors()[0].newInstance(contrutoraParam);

NomeDaClasse teste = (NomeDaClasse) objeto; //Casting

System.out.println(teste.toString());

Qualquer dúvida! estou a disposição!


Duvida! Qual distribuição do Linux devo instalar!?

17 17UTC Outubro 17UTC 2007

Pessoal! andei meio desatualizado com os lançamentos do linux! A última distribuição do linux em que trabalhei era o Conectiva 8. Dei uma pesquisada e vi que tem uma porrada de versões e distribuições!

Agora gostaria da opinião dos leitores do blog, para decidir em que versão partir.

Comentem e dêem opiniões sobre vantagens e desvantagens.

Não só para mim, mas para os leitores do blog.

Ahhh e obrigado pelo comentário!


Programação orientada a Objetos – Boas práticas de programação (1)

10 10UTC Outubro 10UTC 2007

Tenho participações em fóruns como JavaFree e PortalJava. E notei que muitos programadores se “batem” com orientação a objetos, mesmo utilizando uma linguagem Orientada a Objetos como Java, Flex, Php.

Tentarei trazer dicas de orientação a objeto e boas práticas de programação, utilizando exemplos simples para o fácil entendimento. No momento estou bem ocupado, então posso demorar para postar coisas novas! ;)

Então…

Notem este código:
public class Motor {

}

public class Carro {
private Motor motor = new Motor();

     //construtora
public Carro(Motor motor) {
this.motor = motor;
}
}

Um exemplo muito simples, com dois objeto (Carro e Motor);

Agora, notem…
- A contrutora da classe “Carro”, informa (obriga) que um “Carro” tenha um “Motor”.
- Então antes de instanciar um carro, eu preciso instanciar um motor (motor pode ser “null”, nulo).
- Quando eu contruir um carro, eu incluo o motor no carro, mas notem a linha 2:
private Motor motor = new Motor();
- Se a construtora de “Carro” me obriga ter um “Motor”, por que diabo ela já tem um motor construído?

É mais ou menos como: “Vou contruir um carro 2.0, mas o carro já possuí um motor 1.0, então terei que tirar o motor 1.0, e substituir pelo 2.0″
(No mundo real isso é bom, já que eu teria um motor sobrando, mas … na programação há disperdício de processamento e memória para criar o motor 1.0, já que foi contruído e não foi utilizado)

- Agora você deve se perguntar, grande coisa… Não vai fazer muita diferença.
- Para um exemplo simples como esse sim, mas imagine um sistema complexo, com classe gigantes e complexas

Agora olhem a classe abaixo:

public class Carro {
private Motor motor = null;

    //construtora
public Carro(Motor motor) {
this.motor = motor;
}
}

No carro eu “declarei” mas não “instanciei” o Motor.
É mais ou menos como: “tenho um carro, agora só falta o motor (reservei espaço para o Motor)”

Uma outra Boa Prática de Programação (BPP) é, sempre informar o valor da variável ao declará-la.
Como no exemplo abaixo

Exemplo de utilização:

Motor motor_1; //não recomendado
Motor motor_2 = null; //OK
Motor motor_3 = new Motor(); //OK

motor_1 = new Motor();
motor_2 = new Motor();

Carro corsa = new Carro(motor_1);
Carro corsa_sedan = new Carro(motor_2);

Até a próxima ;)


java.io.IOException: No serializer found for class pacote.Classe in registry org.apache.axis.encoding. TypeMappingDelegate@

5 05UTC Outubro 05UTC 2007

Eai pessoal!!!!

Então! hoje eu estvaa criando um WebServer.
E me debati com o sequinte erro ao testar.

AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.io.IOException: No serializer found for class gregui.ValorBean in registry org.apache.axis.encoding.TypeMappingDelegate@17574b9
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.io.IOException: No serializer found for class gregui.ValorBean in registry org.apache.axis.encoding.TypeMappingDelegate@17574b9
at org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1507)
at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
at org.apache.axis.encoding.SerializationContext.outputMultiRefs(SerializationContext.java:1055)
at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:145)

Leia o resto deste post »


HTTP Error: no data present after HTTP headers (SOAP + PHP)

4 04UTC Outubro 04UTC 2007

Opa!

estava eu acessando um web service e precisei passar um objeto por webService.

E perdi algumas hora pra resolter um problema! Eu não consiguia enviar (em PHP, usando NuSoap) um objeto para o webServices!

Tentei de várias formas até que consegui!

então lá vai:

aqui um exemplo que Request que deveria ser feito para se inserir o objeto


POST /SafeVenue/WebInterface.asmx HTTP/1.1
Host: servidor.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://192.1.2.3/SafeVenue/InsertRedListEntry"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xmlns:xsd="http://www.w3.org/2001/XMLSchema"
		xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <InsertRedListEntry xmlns="http://192.1.2.3/SafeVenue/">
      <redListEntry>
        <TicketID>long</TicketID>
        <FailureReasonID>int</FailureReasonID>
      </redListEntry>
    </InsertRedListEntry>
  </soap:Body>
</soap:Envelope>

Para chamar enviar o objeto, no PHP, fiz assim:

 <?php
/**
 * Enviando Objeto via WebService com NuSoap
 *
 * @author Gregui Shigunov
 * @since 03/10/2007
 */

require_once('nusoap/nusoap.php');

$wsdl = "http://servidor/SafeVenue/WebInterface.asmx?WSDL";

$client = new soapclient($wsdl, true);

$client->soap_defencoding = 'UTF-8';
$client->useHTTPPersistentConnection();

$err = $client->getError();
if ($err) {
	echo '<pre>PROBLEMAS AO ACESSAR O WEBSERVICE ' . $err . '</pre><br>';
}

$objeto = '<InsertRedListEntry xmlns="http://192.1.2.3/SafeVenue/">
      <redListEntry>
        <TicketID>12345</TicketID>
        <FailureReasonID>1</FailureReasonID>
      </redListEntry>
    </InsertRedListEntry>';




//detalhe em vermelho, sem isso não funciona

$result = $client->call('InsertRedListEntry', $objeto, "http://192.1.2.3/SafeVenue/"); 		

echo "Resultado------------------------<br>";
print_r($result);
echo "------------------------";

if ($client->fault) {
	echo '<h2>Fault</h2><pre>'; print_r($result);
	echo '</pre>';
} else {
	$err = $client->getError();
	if ($err) {
		echo '<h2>(Autenticacao)</h2><pre>' . $err . '</pre>';
	}
}

echo '<br><br><h2>Request</h2><pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';
echo '<h2>Response</h2><pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';
echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>';

?>
 

 Qualquer coisa é só dar um toque pessoal!



Governo brasileiro compra dois supercomputadores …

27 27UTC Setembro 27UTC 2007

Também quero um desse pra trabalhar em casa…

Governo compra dois supercomputadores da Bull, fornecedora francesa de infra-estrutura de TI.

As duas máquinas farão parte do Sinapad (Sistema Nacional de Processamento de Alto Desempenho), que terá um total de oito supercomputadores espalhados no Brasil interligados em rede.

Os computadores ficarão na Universidade Federal de Pernambuco e na Universidade Federal do Ceará e entrarão em funcionamento até o final do ano.

Ambos terão capacidade de processamento de 6,1 teraflops – ou trilhões de operações por segundo. Cada um deles é um cluster de 72 servidores Bull NovaScale com dois processadores Xeon quad-core, num total de 576 núcleos de processamento. Cada supercomputador terá 45 terabytes de armazenamento e 1 TB de memória RAM. E o sistema operacional, será o Linux, é claro.

“São os maiores computadores que teremos fora da França”, afirma Didier Lamouche, presidente mundial da Bull, que está em visita no Brasil esta semana. O supercomputador de maior desempenho da empresa francesa é uma máquina de 100 teraflops que fica num centro de pesquisa científica no sul de Paris.

Recentemente, a Bull trocou os processadores de sua linha de supercomputadores. De acordo com Alberto Araújo, presidente da Bull no Brasil, a opção pelo Xeon em vez do Itanium, série em que a empresa participa do desenvolvimento junto à Intel, deu-se pela maior capacidade de processamento do Xeon.

“O custo de operações de cálculo no Itanium é maior que no Xeon. Optamos por oferecer servidores com Itanium apenas para banco de dados”, afirma Araújo.

Além da UFPE e da UFC, o Sinapad conta com mais seis computadores na UFRGS, UFRJ, UFMG, Unicamp, INPE e Laboratório Nacional de Computação Científica, ligado ao Ministério da Ciência e Técnologia.

http://www.bull.com


Atriz “Xu Jinglei” tem blog mais lido do mundo

27 27UTC Setembro 27UTC 2007

Quando eu crescer! Eu quero ser igual a ela :P

A atriz e diretora chinesa Xu Jinglei, é a responsável pelo blog mais acessado da Internet (média de 100 visitas por segundo). Em menos de dois anos já teve mais de 100 milhões de páginas vistas.

O blog, iniciado em outubro de 2005 no site sina.com.cn, começou a ganhar popularidade no ano passado. A visitação é tanta que a atriz publicou, em março do ano passado, um livro baseado em seus artigos virtuais.

Xu Jinglei ficou conhecida em 2004, quando ganhou o prêmio como melhor nova diretora no Festival Internacional de Cinema de San Sebastian, na Espanha, com o filme Letter From An Unknown Woman, baseado na obra de Stefan Zweig.

A mídia chinesa afirma ainda que o sucesso de Jinglei, tida como uma mulher íntegra e de alta reputação, foi conseguido falando sobre sexo ou contando histórias indiscretas, mas apenas focando seu cotidiano e trabalho. Para comemorar a marca dos 100 milhões de visitas, Jinglei convidou 20 fãs entre os que assinam seu blog, para festejar com ela.

De acordo com o site The Guardian, o site Technorati, que cataloga blogs e mede a popularidade de cada um deles, afirmou que em 2006 o blog de Jinglei foi o mais referenciado por outros sites na Internet.

O escritor Han Han, em segundo lugar no Sina.com.cn, em breve ultrapassará 100 milhões de visitas também.

Xu Jinglei

Ah! o endereço do site dela é http://blog.sina.com.cn/m/xujinglei , tentei entender algo, mas está em chinês.