BlogBlogs.Com.Br

segunda-feira, 20 de abril de 2009

Attach debugger NetBeans


O NetBeans possui varias formas de debug. Uma opção interessante é Attach debugger que permite depurar programas em execução ( no caso de applets por exemplo) local ou remotamente.



Para depurar um applet que está sendo executado localmente, devemos anexar esta aplicação pelo número do seu processo ao NetBeans. A visual virtual machine é interessante, pois mostra o id dos processos java sendo executados (download em: https://visualvm.dev.java.net/).
Antes de anexar o processo no Netbeans é necessário adicionar os parâmetros na virtual machine. Para isso vá em Iniciar > painel de Controle > java. Escolha a aba java e click no view da opção Java applet runtime settings:

-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_shmem,suspend=n,server=y

Feito isso, execute o applet, olhe na Java Visual JVM e número do processo do seu applet. No NetBeans , na barra de ferramentas escolha Depurar> Attach to debugger. Preencha os campos como a figura abaixo. Lembre-se de colocar o id correto da sua aplicação em execução.

quarta-feira, 8 de abril de 2009

CakePHP :Links Ajax helper com efeitos Scriptaculous


Nem tudo é Rails no mundo dos CRUDS. O CakePHP é um framework de desenvolvimento ágil assim como o Ruby Rails.
Segue abaixo os passos para usar Helpers Ajax com efeitos da biblioteca Scriptaculous. Se você não conhece o CakePHP viste http://vinicius.biz/cakephp/introducao.php para obter mais informações.
Tendo o CakePHP funcionando devidamente é necessário instalar a lib Scriptaculous (http://script.aculo.us/) . Para isso, basta descompactar os arquivos na pasta /app/webroot/js .
O primeiro passo é tornar disponível a biblioteca scriptaculous e prototype. Para isso inclua o código abaixo antes da tag no layout (/app/views/layout/default.thtml) .


< ?php if(isset($javascript)):
echo $javascript->link('prototype.js');
echo $javascript->link('scriptaculous.js?load=effects');
endif;
?>

Na classe Controle é preciso adicionar o helper 'Ajax' no array de helpers.

< ?php
class LoginController extends AppController {

var $name = 'Login';
var $helpers = array('Form', 'Html', 'Javascript', 'Time', 'Ajax');

function index() {
$this->render('index');
}

function view($id) {
// use ajax layout
$this->render('index', 'ajax');
}//view()
}?>

Na classe View criamos um link Ajax que irá chamar o conteúdo de uma

especifica. No caso abaixo o link Ajax, com o nome de “Ajuda”, vai chamar a url “ /things/view” ( renderiza ela mesma) e vai aplicar os efeitos Appear e Fade em dois campos (divs) com um conteúdo qualquer identtificado por “divExemplo1” e “divExemplo2” .

< div id="help1">
< ?php echo ' | ';

// use an effect
echo $ajax->link('Ajuda', '/things/view/1',
array('loading' => 'Effect.Appear(\'divExemplo1\'), Effect.Fade(\'divExemplo2\')',FALSE)
); ?>
/div>


< ?php echo $ajax->div('divExemplo1'); ?>
< h2>/*Um conteúdo qualquer:links, imagens, xml, etc */ < /h2>
<?php echo $ajax->divEnd('divExemplo1'); ?>
Outros métodos que produzem diferentes efeitos pela Scriptaculous podem ser vistos em :http://wiki.github.com/madrobby/scriptaculous

quarta-feira, 1 de abril de 2009

Java : Casting Objects


O Cast serve para determinar qual o tipo do objeto está sendo usado.
Consideramos as seguintes classes JogoDeTabuleiro e Xadrez. A classe Xadrez é filha da Classe JogoDeTabuleiro.

Se for declarado:
public Xadrez meuJogo = new Xadrez ();
O meuJogo é um jogo de Xadrez. Sendo Xadrez uma classe descendente de JogoDeTabuleiro e também da classe Object, o meuJogo é também um JogoDeTabuleiro e um Object.
A afirmativa contrária não é verdadeira. Um JogoDeTabuleiro não é necessariamente um jogo de Xadrez. Da mesma forma um Object pode ser um JogoDeTabuleiro ou um jogo de Xadrez.
Veja o código abaixo:
Object obj = new Xadrez();
obj é um Object e um jogo de Xadrez. Cast implícito
Xadrez meuJogo = (Xadrez)obj;
O cast assegura que obj do tipo Xadrez seja passado ao meuJogo que só é do tipo meuJogo. Cast explicito.
Uma outa maneira de prevenir erros está no teste lógico:
if (obj instanceof Xadrez) {
Xadrez meuJogo = (Xadrez)obj;
}