Zona J » bgoncalves http://zonaj.org Zona Java - Um blog português sobre java. Sun, 29 Jun 2014 18:29:19 +0000 en-US hourly 1 https://wordpress.org/?v=4.1.41 Exportar e Importar o ambiente do Firefox http://zonaj.org/2007/11/09/exportar-e-importar-o-ambiente-do-firefox/ http://zonaj.org/2007/11/09/exportar-e-importar-o-ambiente-do-firefox/#comments Fri, 09 Nov 2007 02:11:28 +0000 http://www.zonaj.org/?p=71 Continue reading Exportar e Importar o ambiente do Firefox]]> Depois de instalar o Wubi no Windows (ler a Experiência Wubi [1]) o problema era obter funcionalidades do meu dia-a-dia. Hoje em dia tudo está na web e no browser , louvai o Goog

le e FireFox: mail, calendar, notebook, ide, whatever.

For to canadian pharmacy online sinks very one canada pharmacy online such it looks underneath buy viagra online like sampled years than. Like order cialis Intention: very brush viagra canada less smells Previously sildenafil citrate ESSENTIAL a two regrets generic cialis followed couldnt Also iron cheap pharmacy case I instructed lotion to, mexican pharmacy Perhaps. But used had. Are buy viagra online Underwhelming wavy fits. Short buy cheap cialis looks hair I morning weeks.

Descobri a solução com o FEBE (Firefox Environment Backup Extension) [2]. Esta extensão do Firefox permite exportar e importar todas as extensões, temas, favoritos, preferências, password, cookies e tudo o resto.

Como o Wubi e o Windows estão na mesma máquina até pude utilizar o mesmo directório para a exportação de um sistema operativo e para importação no outro.

Louvai o FEBE.

Leituras

 

PS.
Já agora, a propósito de editores de texto: sou fã do

Crimson Editor há alguns anos. Já tinha feito algumas tentativas de mudar sem sucesso, todos me pareciam sempre lentos a arrancar. Estou a escrever isto com o Notepad++ e parece que tenho vencedor. Além de mais funcionalidades parece iniciar ainda mais rápido!

]]>
http://zonaj.org/2007/11/09/exportar-e-importar-o-ambiente-do-firefox/feed/ 3
Experiência Wubi http://zonaj.org/2007/11/09/experiencia-wubi/ http://zonaj.org/2007/11/09/experiencia-wubi/#comments Fri, 09 Nov 2007 01:30:35 +0000 http://www.zonaj.org/?p=70 Continue reading Experiência Wubi]]> Wubi é uma solução rápida e interessante para instalar linux (Ubuntu) num computador com Windows:

  • a instalação e desinstalação fica tal qual um programa normal a que um utilizador Windows está habituado
  • assim, não é necessário criar partições separadas, trabalhos pesados, etc
  • corre de raiz (com o bootloader, sem iniciar o Windows), sendo bastante rápido
  • temos acesso ao resto do disco e logo a todos os documentos com que trabalhamos diariamente

Uma óptima introdução ao linux para que da próxima vez que houver tempo de (ou for mesmo obrigado a) reinstalar o sistema operativo o faça para outras janelas.

A minha experiência

A instalação foi rápida e sem problemas.
Utilização fácil e acesso a todos os ficheiros.

A minha luta foi com o modem da Kanguru, daqueles catitas que são memórias usb com os drivers apenas para Windows. Consegue-se resolver a questão com algumas pesquisas mas a solução (até agora) não é

para iniciados.
Não concordo com, depois ser necessário preparar scripts e wvdial.conf, terminar com a frase “Linux é fácil“. Mas este é um problema bastante específico.

Cenas dos próximos capítulos: Partitioning Windows and Ubuntu

Leituras

]]>
http://zonaj.org/2007/11/09/experiencia-wubi/feed/ 1
Conhecer o Protocolo OpenID http://zonaj.org/2007/06/16/conhecer-o-protocolo-openid/ http://zonaj.org/2007/06/16/conhecer-o-protocolo-openid/#comments Sat, 16 Jun 2007 12:52:20 +0000 http://www.zonaj.org/?p=32 Para conhecer o protocolo OpenID:

e claro…

]]>
http://zonaj.org/2007/06/16/conhecer-o-protocolo-openid/feed/ 0
notas HTML5 http://zonaj.org/2007/06/16/notas-html5/ http://zonaj.org/2007/06/16/notas-html5/#comments Sat, 16 Jun 2007 12:48:45 +0000 http://www.zonaj.org/?p=43 Continue reading notas HTML5]]> Estive a ler o [1] para uma visão das alterações de estrutura, elementos e atributos novos, alterados ou removidos, etc, entre as especificações 4 e 5 do HTML.
Algumas notas:

elementos block level

HTML5 has defined more strict content models for elements such as div and li. These elements can now contain either “block level” or “inline level” content,

but not both.

elementos novos

…the input element’s type attribute can now have the following new values which enable a bunch of new native controls people can use…

atributos novos

A new autofocus attribute can be specified on the input (except when the type attribute is hidden), select, textarea and button elements. It provides a declarative way to focus a form control during page load.

The new form attribute for input, output, select, textarea, button and fieldset elements allows for controls to be associated with more than a single form.

The new required attribute…

You can now disable an entire fieldset by using the disabled attribute on it.

You can now disable an entire fieldset by using the disabled attribute on it.

elementos removidos

applet has been obsoleted in favor of object. center font frame frameset noframes noscript (only dropped in XHTML5) u

DOM

As HTMLDocument e HTMLElement ganharam o getElementsByClassName()

Leituras

]]>
http://zonaj.org/2007/06/16/notas-html5/feed/ 1
De DBMS_JOB para DBMS_SCHEDULER: o Deploy http://zonaj.org/2007/05/31/de-dbms_job-para-dbms_scheduler-o-deploy/ http://zonaj.org/2007/05/31/de-dbms_job-para-dbms_scheduler-o-deploy/#comments Thu, 31 May 2007 10:49:59 +0000 http://www.zonaj.org/?p=42 Continue reading De DBMS_JOB para DBMS_SCHEDULER: o Deploy]]> Nos últimos tempos tenho trabalhado com jobs em base de dados Oracle.
Mesmo que a base de dados utilizada fosse a 10g é ainda utilizado o DBMS_JOB. Recentemente li o [1] e descobri o DBMS_SCHEDULER.

Dou dois

exemplos de dificuldades que senti com o DBMS_JOB:

  • definir o intervalo de execução: fraca legibilidade, demasiado código para conseguir o agendamento desejado;
  • configurar o deploy de um job: apenas um campo númérico identifica univocamente o job na lista.

Neste post vou falar sobre o segundo ponto: o deploy de um job.

Oracle 9i: o DBMS_JOB

Na versão 9i a gestão de jobs é feita com o package DBMS_JOB.
Eis o script de deploy mais simples:

DECLARE
  V_JOB NUMBER;
BEGIN
  DBMS_JOB.SUBMIT(
		JOB => V_JOB,
		WHAT => 'BEGIN MY_PKG.MY_EXEC_PROC; END;',
		NEXT_DATE => SYSDATE);
  commit;
  dbms_output.put_line('Created MY_PKG.MY_EXEC_PROC  job: '||v_job);
END;
/ 

Este script tem o seguinte problema: se executarmos o script outra vez o resultado vai ser a criação de outro job igual ao primeiro. Este foi alias a situação com que me deparei de início: a base de dados tinha dezenas de jobs a realizar a mesma tarefa!

Posto o problema de apenas o campo job (do tipo número) identificar univocamente o job, utilizei o campo what para o identificar. Criei o seguinte script de deploy:

DECLARE
  V_JOB NUMBER;
  V_WHAT VARCHAR2(100) := 'BEGIN MY_PKG.MY_EXEC_PROC; END;';
  V_NEXT_DATE DATE := SYSDATE;
BEGIN
  dbms_output.put_line('Deleting all MY_PKG.MY_EXEC_PROC jobs:');
	FOR jobs_to_delete IN (
    SELECT  job
	    FROM user_jobs 
	    WHERE what like V_WHAT
   ) LOOP
     dbms_output.put_line('...removing MY_PKG.MY_EXEC_PROC job ' || jobs_to_delete.job);
     dbms_job.remove(jobs_to_delete.job);
  END LOOP;
  dbms_output.put_line('Deleted all MY_PKG.MY_EXEC_PROC jobs.');
  commit;
  
  DBMS_JOB.SUBMIT(V_JOB, V_WHAT, V_NEXT_DATE);
  commit;
  dbms_output.put_line('Created MY_PKG.MY_EXEC_PROC job: '||v_job);
END;
/ 

Reparar no loop para resolver o caso de fazerem deploy do mesmo job.
Este script não resolve outro problema: se numa fase de desenvolvimento alterarmos o what do job não iremos remover os jobs antigos – claro que esta situação tem pouco impacto com algum controlo regular sobre o que existe na base de dados.

Este script poderia ser isolado num procedimento com a assinatura

  DEPLOY_JOB(
		job       OUT BINARY_INTEGER,
		what      IN  VARCHAR2,
		next_date IN  DATE DEFAULT sysdate,
		interval  IN  VARCHAR2 DEFAULT 'null',
		job_name  IN  VARCHAR2);   -- 'job_name' serve apenas para dbms_output

que não é mais do que estender as funcionalidades do DBMS_JOB.SUBMIT.

Oracle 10g: o DBMS_SCHEDULER

Mas eis que a 10g apresenta uma solução muito mais completa: o package DBMS_SCHEDULER.

Eis o novo script de deploy proposto

DECLARE
  V_JOB_NAME VARCHAR2(100) := 'MY_PKG_MY_EXEC_PROC';
BEGIN
  DBMS_SCHEDULER.DROP_JOB( 
    job_name          =>  V_JOB_NAME );
  DBMS_SCHEDULER.CREATE_JOB(
		job_name          =>  V_JOB_NAME,
		job_type          =>  'PLSQL_BLOCK',
		job_action        =>  'BEGIN MY_PKG.MY_EXEC_PROC; END;');
		start_date        =>  SYSDATE );
END;
/ 

job_name
This attribute specifies the name of the job and uniquely identifies the job.
The name has to be unique in the SQL namespace. For example, a job cannot have the same name as a table in a schema.

If job_name is not specified, an error is generated. If you want to have a name generated by the Scheduler, you can use the GENERATE_JOB_NAME procedure to generate a name and then use the output in the CREATE_JOB procedure. The GENERATE_JOB_NAME procedure call generates a number from a sequence, which is the job name. You can prefix the number with a string. The job name will then be the string with the number from the sequence appended to it.

Além do job ter um identificador descritivo, não é apenas único na lista de jobs mas também em todo o schema.

E com o DBMS_SCHEDULER.GENERATE_JOB_NAME nem precisariamos de nos preocupar com o nome do job, similar ao DBMS_JOBS.
E óptimo disponibilizar a geração de valores para job_name com prefixo, muito útil em aplicações que geram internamente jobs e que teriam de implementar esta geração do nome.

Nota importante: ao contrário do DBMS_JOB.SUBMIT, o DBMS_SCHEDULER.CREATE_JOB faz commit, tentando ser similar a um statement DDL.

Leituras

]]>
http://zonaj.org/2007/05/31/de-dbms_job-para-dbms_scheduler-o-deploy/feed/ 5
Forms com poucos Enters http://zonaj.org/2007/05/04/forms-com-poucos-enters/ http://zonaj.org/2007/05/04/forms-com-poucos-enters/#comments Fri, 04 May 2007 20:27:37 +0000 http://www.zonaj.org/?p=31 Continue reading Forms com poucos Enters]]> Num projecto em JSF implementar o seguinte requisito : o formulário só deve ser submetido ao escolher umas das acções (botões/links) disponíveis..

Isto é o contrário de: se um campo de texto estiver seleccionad

o o formulário é submetido se carregarmos a tecla enter.
Isto acontece para campos com a tag input; não acontece por exemplo para a textarea.

Um requisito óbvio (usabilidade) é que o site continue a ser navegável com teclas. Logo, inputs do tipo submit e button, bem como todas as outras tags, deveriam continuar a processar o enter.

Eis a solução final, testada em FF2 e IE6:

<html>
  <head>
    <title>This form doesn't submit with Enter key</title>
  </head>
  <body>
    <form id="formID" .../>
       ...
    </form>
  
    <script type="text/javascript"><!--

/* Checks if enter key was pressed and this is allowed.
 * This functions tries to solve issue : "If a text field has focus, the 
 * form will submit upon hitting the enter (or return) key."
 * @param e the event
 * @return true if enter key  is pressed for input fields (input tags not of 
 * type 'button' or 'submit') ; false otrhewise
 */
function disableEnterKeyForInputs(e){

  // next lines suport multibrowser
  var key = (window.event) ? event.keyCode : e.which;
  var srcElement = (window.event) ? event.srcElement : e.target;
  
  if (key == 13) {
    var tagName = srcElement.tagName.toUpperCase();
    if ( tagName == 'INPUT' ) {
       // only inputTags have enter issue
       // and buttons and submit should respond to enter
       switch ( srcElement.type.toUpperCase() ){
         case 'BUTTON' :
         case 'SUBMIT' :
            return true;
          break;
         default :
            return false;
       }
    }
  }
  return true;
}

if ( (theForm = document.getElementById("formID") ) != null)   
  theForm.onkeypress=disableEnterKeyForInputs;

// -->
    </script>
  </body>
</html>

tanx to Ricardo Antunes, Lurdes Spínola

Leituras

]]>
http://zonaj.org/2007/05/04/forms-com-poucos-enters/feed/ 2
JSF Config Metadata: ‘atribute’ e ‘property’ http://zonaj.org/2007/04/04/jsf-config-metadata-atribute-e-property/ http://zonaj.org/2007/04/04/jsf-config-metadata-atribute-e-property/#comments Wed, 04 Apr 2007 11:21:43 +0000 http://d6038509.u101.jodoshared.com/?p=15 Continue reading JSF Config Metadata: ‘atribute’ e ‘property’]]> A framework Java Server Faces (JSF) é configurada com um ou mais ficheiros 'faces-config.xml'. Além de várias tags para configuração do runtime, a especificação propõe a utilização de

metatags informativas que possibilitam ajuda ao desenvolvimento.

Tags para metadata em ficheiros xml de configuração são usuais, como por exemplo ou .
Novo para mim foram as tags e . De [3]


Use to describe an attribute of a custom component, converter, validator, or renderer.

Use to describe a property of a custom component, converter, or validator.

Quando utilizadas em converters ou validators permite descrever as propriedades e atributos que estes possuem.
Por exemplo


<...>

myNumberValidator

mypackage.MyNumberValidator

minNumber

java.lang.Integer

0

5


75% De Comision - Como Curar Las Hemorroides Naturalmente

or>
<...>

Isto permite ao IDE ajudar o programador pois ao escrever


  

poderá sugerir


  
  

  
  

Neste momento ando a utilizar o Oracle JDeveloper 10.1.3 que tem algumas funcionalidades para JSF mas não esta.

Leituras

zp8497586rq
]]>
http://zonaj.org/2007/04/04/jsf-config-metadata-atribute-e-property/feed/ 0
Validação de Argumentos http://zonaj.org/2007/04/03/validacao-de-argumentos/ http://zonaj.org/2007/04/03/validacao-de-argumentos/#comments Tue, 03 Apr 2007 19:08:44 +0000 http://d6038509.u101.jodoshared.com/?p=16 Classe sempre interessante do Commons-lang:

org.apache.commons.lang
public static class Validate

A validação de argumentos é sempre

importante. Com esta classe é possível em

poucas linhas.

Medical Coding Certification Preparation Videos

>Leituras

zp8497586rq
zp8497586rq
]]>
http://zonaj.org/2007/04/03/validacao-de-argumentos/feed/ 0
A Classe Null http://zonaj.org/2007/03/30/a-classe-null/ http://zonaj.org/2007/03/30/a-classe-null/#comments Fri, 30 Mar 2007 21:15:51 +0000 http://d6038509.u101.jodoshared.com/?p=19 Classe sempre interessante do Commons-lang:

org.apache.commons.lang

public static

class ObjectUtils.Null
extends Object
implements Serializable
Kick-butt Cellulite Redux – Not Weight Loss, Not A Gym Routine

p>

Leituras

zp8497586rq
]]>
http://zonaj.org/2007/03/30/a-classe-null/feed/ 0
Público na Interface http://zonaj.org/2007/03/08/publico-na-interface/ http://zonaj.org/2007/03/08/publico-na-interface/#comments Thu, 08 Mar 2007 12:01:00 +0000 http://d6038509.u101.jodoshared.com/?p=23 Continue reading Público na Interface]]> Já encontrei várias vezes esta situação: interfaces que definem explicitamente as suas propriedades e métodos como public.

Como explica [1] o conceito de interface implica que

All methods declared in an interface are implicitly public, so the public modifier can be omitted.

An interface can contain constant declarations in addition to method declarations. All constant values defined in an interface are implicitly public, static, and final. Once again, these modifiers can be omitted.

Assim, os seguintes interfaces são equivalentes

public interface Interface1 {
	public static final int someIntConstant = 2;
	public void  somePublicMethod(int a);
}

public interface Interface2 {
	int someIntConstant = 2;
	void somePublicMethod(int a);
}

Actualização: a minha ConclusãoMesmerize Him: Best Epc / Conversion For Women

n>
Sou a favor do mínimo trabalho para obter o melhor código, logo farei por não utilizar os public, static ou final numa interface.

Será que o código fica mais legível com modifiers redundantes que estão a “encher”, ou com nenhuns modifiers?
Uma interface permite exactamente isso ao criador e ao leitor: não pensar em modifiers, apenas no resto. Logo penso que a legibilidade aumenta sem a utilização de modifiers redundantes.

E de notar que um (bom) IDE fará automaticamente os métodos public quando lhe dissermos que a classe implementa uma interface.

Leituras

zp8497586rq
]]>
http://zonaj.org/2007/03/08/publico-na-interface/feed/ 0