Duvida! Qual distribuição do Linux devo instalar!?
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)
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@
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)
HTTP Error: no data present after HTTP headers (SOAP + PHP)
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!