sexta-feira, 23 de novembro de 2012

Como remover um objeto que não possui referencia no entityManager do hibernate


public class Controle {
...
    @PersistenceContext
    EntityManager em;
...
    public void excluir(Foo f) {
        em.remove(em.getReference(Foo.class, f.getId()));
    }

}

Instalando um jar manualmente no repositório local do Maven


mvn install:install-file -Dfile=artefato.jar -DgroupId=com.neordg -DartifactId=neo-lib -Dversion="1.0.0-SNAPSHOT" -Dpackaging=jar -DrepositoryId=localRepository -Durl=file:///~/.m2/repository

terça-feira, 13 de novembro de 2012

Criar um disco virtual de um pendrive

VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/usb.vmdk -rawdisk /dev/sdX

Recuperar o ip externo



fonte http://meuip.datahouse.com.br/internas/ip.php

Para recuperar via terminal

$curl -s http://meuip.datahouse.com.br/internas/ip.php | egrep '<span class="titulo-ip">.*<\/span>' -o

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1671    0  1671    0     0   4981      0 --:--:-- --:--:-- --:--:--  6258
<span class="titulo-ip"> 189.19.180.248</span>


OU

$curl ifconfig.me





fonte : http://ip-api.com/json

quinta-feira, 8 de novembro de 2012

Criar um Xstream que ignora atributos desconhecidos

public XStream getXStream() {
  XStream xstream = new XStream() {
    @Override
    protected MapperWrapper wrapMapper(MapperWrapper next) {
      return new MapperWrapper(next) {
        @Override
        public boolean shouldSerializeMember(Class definedIn, String fieldName) {
          if (definedIn == Object.class) {
            return false;
          }
          return super.shouldSerializeMember(definedIn, fieldName);
        }
      };
    }
  };
  return xstream;
}

segunda-feira, 5 de novembro de 2012

Teste de event Key Code Javascript






JavaScript Event KeyCode Test Page

JavaScript Event KeyCode Test Page

Input:
onKeyDown onKeyPress onKeyUp
event.keyCode
event.charCode
event.which

Notable Gotchas

  • Firefox and onKeyDown vs. onKeyPressed
  • Firefox and keyCode vs. charCode
  • Enter key and onKeyPress on Firefox vs. IE

fonte: http://www.asquare.net/javascript/tests/KeyCode.html


sexta-feira, 5 de outubro de 2012

Enviar e-mail por linha de comando linux


$sendmail -t -F "Hello Word" seu@email.com < texto.txt

MAIL

First run a quick test to make sure the “sendmail” application is installed and working correctly. Execute the following command, replacing “you@youremailid.com” with your e-mail address.
mail -s “Hello world” you@youremailid.com
Hit the return key and you will come to a new line. Enter the text “This is a test from my server”. Follow up the text by hitting the return key again. Then hit the key combination of Control+Dto continue. The command prompt will ask you if you want to mark a copy of the mail to any other address, hit Control+D again. Check your mailbox. This command will send out a mail to the email id mentioned with the subject, “Hello world”.
To add content to the body of the mail while running the command you can use the following options. If you want to add text on your own:
echo “This will go into the body of the mail.” | mail -s “Hello world” you@youremailid.com
And if you want mail to read the content from a file:
mail -s “Hello world” you@youremailid.com < /home/calvin/application.log
Some other useful options in the mail command are:
-s subject (The subject of the mail)
-c email-address (Mark a copy to this “email-address”, or CC)
-b email-address (Mark a blind carbon copy to this “email-address”, or BCC)
Here’s how you might use these options:
echo “Welcome to the world of Calvin n Hobbes” | mail -s “Hello world” calvin@cnh.com -c hobbes@cnh.com -b susie.derkins@cnh.com

MUTT

One of major drawbacks of using the mail command is that it does not support the sending of attachments. mutt, on the other hand, does support it. I’ve found this feature particularly useful for scripts that generate non-textual reports or backups which are relatively small in size which I’d like to backup elsewhere. Of course, mutt allows you to do a lot more than just send attachments. It is a much more complete command line mail client than the “mail” command. Right now we’ll just explore the basic stuff we might need often. Here’s how you would attach a file to a mail:
echo “Sending an attachment.” | mutt -a backup.zip -s “attachment” calvin@cnh.com
This command will send a mail to calvin@cnh.com with the subject (-s) “attachment”, the body text “Sending an attachment.”, containing the attachment (-a) backup.zip. Like with the mail command you can use the “-c” option to mark a copy to another mail id.

SENDING MAIL FROM A SHELL SCRIPT

Now, with the basics covered you can send mails from your shell scripts. Here’s a simple shell script that gives you a reading of the usage of space on your partitions and mails the data to you.
#!/bin/bash
df -h | mail -s “disk space report” calvin@cnh.com
Save these lines in a file on your Linux server and run it. You should receive a mail containing the results of the command. If, however, you need to send more data than just this you will need to write the data to a text file and enter it into the mail body while composing the mail. Here’s and example of a shell script that gets the disk usage as well as the memory usage, writes the data into a temporary file, and then enters it all into the body of the mail being sent out:
#!/bin/bash
df -h > /tmp/mail_report.log
free -m >> /tmp/mail_report.log
mail -s “disk and RAM report” calvin@cnh.com < /tmp/mail_report.log
Now here’s a more complicated problem. You have to take a backup of a few files and mail then out. First the directory to be mailed out is archived. Then it is sent as an email attachment using mutt. Here’s a script to do just that:
#!/bin/bash
tar -zcf /tmp/backup.tar.gz /home/calvin/files
echo | mutt -a /tmp/backup.tar.gz -s “daily backup of data” calvin@cnh.com
The echo at the start of the last line adds a blank into the body of the mail being set out.
This should get you started with sending mails form the Linux command line and from shell scripts. Read up the “man page” for both mail and mutt for more options.

quarta-feira, 3 de outubro de 2012

Recuperar o conteúdo do uma tag HTML com regex

Site Teste
http://regexpal.com/
http://www.regexplanet.com/advanced/java/index.html

Regex
<tag.*<\/tag>
ou
<tag>(?:[^\n]*(\n+|.*))+</tag>
ou
<\s*tag[^>]*>(.*?)<\s*/\s*tag>
ou
(?<=<\s*tag[^>]*>)(.*?)(?=<\s*/\s*tag\s*>)

String de teste

<root>
<tag>valor</tag>
</root>


(?<=% of )(.*)(?= at )



https://www.regexpal.com/96872
https://www.regexpal.com/27540


regex no java


String html="<root><tag>Medicamento</tag></root>"
String conteudo = null;
Pattern pattern = Pattern.compile("<tag.*<\\/tag>");
Matcher matcher = pattern.matcher(html);
if (matcher.find()) {
    conteudo = matcher.group(0).replace("<tag>", "").replace("</tag>", "").toUpperCase();
}


segunda-feira, 1 de outubro de 2012

Instalando Fontes true type no fedora


wget "http://blog.andreas-haerter.com/_export/code/2011/07/01/install-msttcorefonts-fedora.sh?codeblock=1" -O "/tmp/install-msttcorefonts-fedora.sh"

Devido ao tempo de disponibilização do script ... o arquivo install-msttcorefonts-fedora.sh deve ser alterado antes de executar o próximo comando

############### alterações ###############
trocar o bloco de mirros

#Download mirrors
MSTTF_DLMIRRORS[(${#MSTTF_DLMIRRORS[@]})]="http://heanet.dl.sourceforge.net/sourceforge/corefonts/"
MSTTF_DLMIRRORS[(${#MSTTF_DLMIRRORS[@]})]="http://switch.dl.sourceforge.net/sourceforge/corefonts/"
MSTTF_DLMIRRORS[(${#MSTTF_DLMIRRORS[@]})]="http://dfn.dl.sourceforge.net/sourceforge/corefonts/"
MSTTF_DLMIRRORS[(${#MSTTF_DLMIRRORS[@]})]="http://kent.dl.sourceforge.net/sourceforge/corefonts/"
MSTTF_DLMIRRORS[(${#MSTTF_DLMIRRORS[@]})]="http://mesh.dl.sourceforge.net/sourceforge/corefonts/"

############### por este ###############

#Download mirrors

MSTTF_DLMIRRORS[(${#MSTTF_DLMIRRORS[@]})]="http://heanet.dl.sourceforge.net/sourceforge/corefonts/files/"
MSTTF_DLMIRRORS[(${#MSTTF_DLMIRRORS[@]})]="http://dfn.dl.sourceforge.net/sourceforge/corefonts/files/"
MSTTF_DLMIRRORS[(${#MSTTF_DLMIRRORS[@]})]="http://kent.dl.sourceforge.net/sourceforge/corefonts/files/"

chmod a+rx "/tmp/install-msttcorefonts-fedora.sh"

su -c "/tmp/install-msttcorefonts-fedora.sh"

##### Intalando Manualmente as fontes #####

Baixar a fonte que necessite do site 
http://www.fontpalace.com/font-download

Copiar os arquivos TTF para o diretório
/usr/share/fonts/msttcorefonts

Reinicar o aplicativo que necessite de fontes

segunda-feira, 24 de setembro de 2012

Dividir a área de trabalho do vim

para dividir verticalmente
:vsplit nome do arquivo

para dividir horizontalmente
:split nome do arquivo

Para mudar o tamanho das colunas 
:vertical res +/- numero de colunas

para mudar o numero das linhas
:res +/- numero de linhas

para alternar entre as janelas 
+ ww

quinta-feira, 20 de setembro de 2012

Recuperar o nome da tabela a qual pertence uma constraint


SELECT ac.constraint_name ,
acc.table_name
FROM all_constraints ac ,
all_cons_columns acc
WHERE ac.constraint_name = 'SYS_C00134587'
and acc.table_name = ac.table_name

Inclusão de parâmetros em componentes JSF

Para incluir parametros em um componente jsp, e resgatá-los em um listener basta

<h:inputText>
      <f:attribute id="indiceBuscaProdutoItensValores" name="indice" value="#{itensValoresStatus.index}"/>
</ice:inputText>

e para resgatar o valor no java


public void textChangeListener(TextChangeEvent event){
       ...
       Integer index = (Integer) event.getComponent().getAttributes().get("indice");
       ...
}

o importante é que o nome do atributo não seja uma palavra reservada neste caso anteriormente usei index e não conseguia recuperar o valor, então recomendo que seja utilizado nomes em português que não tem erro.


sexta-feira, 14 de setembro de 2012

Tag Object no lugar de um iframe


<!DOCTYPE html>
<html>
<body>

<object id="page" type="text/html"
    data="http://www.google.com.br"
    width="500" height="600">
  <p>Oops! That didn't work...</p>
</object>

</body>
</html>

terça-feira, 11 de setembro de 2012

Merge de resultados do hql em um único objeto



A consulta mais simples possível do Hibernate é a seguinte:
from eg.Cat
Isto simplesmente retornará todas as instâncias da classe eg.Cat. Geralmente não precisamos qualificar o nome da classe, uma vez que o auto-import é o padrão. Por exemplo:
from Cat
Com o objetivo de referir-se ao Cat em outras partes da consulta, você precisará determinar um alias. Por exemplo:
from Cat as cat
Essa consulta atribui um alias a cat para as instâncias de Cat, portanto poderemos usar esse alias mais tarde na consulta. A palavra chave as é opcional. Você também pode escrever assim:
from Cat cat
Classes múltiplas podem ser envolvidas, resultando em um produto cartesiano ou união "cruzada".
from Formula, Parameter
from Formula as form, Parameter as param
É considerada uma boa prática nomear alias de consulta, utilizando uma letra minúscula inicial, consistente com os padrões de nomeação Java para variáveis locais (ex.: domesticCat).
Podemos também atribuir aliases em uma entidade associada, ou mesmo em elementos de uma coleção de valores, usando uma join. Por exemplo:
from Cat as cat
    inner join cat.mate as mate
    left outer join cat.kittens as kitten
from Cat as cat left join cat.mate.kittens as kittens
from Formula form full join form.parameter param
Os tipos de uniões suportados foram inspirados no ANSI SQL:
  • inner join
  • left outer join
  • right outer join
  • união completa (geralmente não é útil)
As construções inteirounião esquerda externa e união direita externa podem ser abreviadas.
from Cat as cat
    join cat.mate as mate
    left join cat.kittens as kitten
Você pode fornecer condições extras de união usando a palavra chave do HQL with.
from Cat as cat
    left join cat.kittens as kitten
        with kitten.bodyWeight 
> 10.0
A "fetch" join allows associations or collections of values to be initialized along with their parent objects using a single select. This is particularly useful in the case of a collection. It effectively overrides the outer join and lazy declarations of the mapping file for associations and collections. See Seção 20.1, “Estratégias de Busca ” for more information.
from Cat as cat
    inner join fetch cat.mate
    left join fetch cat.kittens
Geralmente, uma união de busca não precisa atribuir um alias, pois o objeto associado não deve ser usado na cláusula where (ou em qualquer outra cláusula). Também, os objetos associados não são retornados diretamente nos resultados da consulta. Ao invés disso, eles devem ser acessados usando o objeto pai. A única razão pela qual precisariamos de um alias é quando fazemos uma união de busca recursivamente em uma coleção adicional:
from Cat as cat
    inner join fetch cat.mate
    left join fetch cat.kittens child
    left join fetch child.kittens
Observe que a construção busca não deve ser usada em consultas invocadas usando iterate() (embora possa ser usado com scroll()). O Fetch também não deve ser usado junto com o setMaxResults() ou setFirstResult() pois essas operações são baseadas nas linhas retornadas, que normalmente contém duplicidade devido à busca das coleções, então o número de linhas pode não ser o que você espera. A Fetch não deve ser usada junto com uma condição with. É possível que seja criado um produto cartesiano pela busca de união em mais do que uma coleção em uma consulta, então tome cuidado nesses casos. Uma busca de união em várias coleções pode trazer resultados inesperados para mapeamentos do tipo bag, tome cuidado na hora de formular consultas como essas. Finalmente, observe o seguinte, abusca de união completa e busca de união direita não são importantes.
Se estiver usando o nível de propriedade busca lazy (com instrumentação de bytecode), é possível forçar o Hibernate a buscar as propriedades lazy imediatamente na primeira consulta, usando buscar todas as propriedades .
from Document fetch all properties order by name
from Document doc fetch all properties where lower(doc.name) like '%cats%'


Fonte: http://docs.jboss.org/hibernate/orm/3.5/reference/pt-BR/html/queryhql.html


Uma estratégia de busca é a estratégia que o Hibernate irá usar para recuperar objetos associados se a aplicação precisar navegar pela associação. Estratégias de Busca podem ser declaradas nos metadados de mapeamento O/R, ou sobrescritos por uma consulta HQL ou consulta com Criteria.
Hibernate3 define as seguintes estratégias de busca:
  • Join fetching - o Hibernate busca o objeto ou coleção associada no mesmo SELECT, usando um OUTER JOIN.
  • Select fetching - um segundo SELECT é usado para buscar a entidade ou coleção associada. A menos que você desabilite a busca lazy, especificando lazy="false", esse segundo SELECT será executado apenas quando você acessar a associação.
  • Subselect fetching - um segundo SELECT será usado para recuperar as coleções associadas de todas as entidades recuperadas em uma consulta ou busca anterior. A menos que você desabilite a busca lazy especificandolazy="false", esse segundo SELECT será executado apenas quando você acessar a associação.
  • Batch fetching - uma opção de otimização para selecionar a busca. O Hibernate recupera um lote de instâncias ou entidades usando um único SELECT, especificando uma lista de chaves primárias ou chaves externas.
O Hibernate distingue também entre:
  • Immediate fetching - uma associação, coleção ou função é imediatamente recuperada, quando o proprietário for carregado.
  • Lazy collection fetching - a coleção é recuperada quando a aplicação invoca uma operação sobre aquela coleção. Esse é o padrão para coleções.
  • "Extra-lazy" collection fetching - elementos individuais de uma coleção são acessados a partir do banco de dados quando necessário. O Hibernate tenta não buscar a coleção inteira dentro da memória a menos que seja absolutamente necessário. Isto é indicado para coleções muito grandes.
  • Proxy fetching: uma associação de um valor é carregada quando um método diferente do getter do identificador é invocado sobre o objeto associado.
  • "No-proxy" fetching - uma associação de um único valor é recuperada quando a variável da instância é acessada. Comparada à busca proxy, esse método é menos preguiçoso (lazy); a associação é buscada até mesmo quando somente o identificador é acessado. Ela é mais transparente, já que não há proxies visíveis para a aplicação. Esse método requer instrumentação de bytecodes em build-time e é raramente necessário.
  • Lazy attribute fetching: um atributo ou associação de um valor é buscado quanto a varíavel da instância é acessada. Esse método requer instrumentação de bytecodes em build-time e é raramente necessário.
Nós temos aqui duas noções ortogonais: quando a associação é buscada e como ela é buscada. É importante que você não os confuda. Nós usamos fetch para ajustar o desempenho. Podemos usar lazy para definir um contrato para qual dado é sempre disponível em qualquer instância desconectada de uma classe particular.


HQL: Fetch Join Collections from Eager Table


O segredo é :

SELECT e FROM Escola e JOIN FETCH e.aulas a;

para que o FETCH funcione é necessário que todos os relacionamentos sejam declarados na clausula  FROM e que um único objeto seja especificado na clausula SELECT

No exemplo acima o objeto Escola possui uma Collection de Aula, sendo assim eu quero que os resultados sejam resolvidos em uma única consulta, então defino o label "e" que representa a Escola no select e no FROM defino os relacionamentos com a clausula FETCH após os joins.

Com isso em uma única consulta o objeto será preenchido.



quarta-feira, 5 de setembro de 2012

Replicação de sessões HTTP no JBoss

Quando trabalhamos com aplicações web é muito comum salvar dados nas sessões dos usuários. No caso que estejamos trabalhando também com cluster, a melhor opção na maioria das vezes é replicar as sessões em todas as instancias do nosso servidor de modo que os usuários possam se conetar em qualquer nodo do cluster e a sessão este disponível para eles em tudo momento.
Talvez tenham se perguntado: qual é a outro opção? Bom, a outra opção e utilizar “sticky sessions”, de modo que o balanceador sempre se conete com o mesmo membro do cluster, o qual possui a sessão do usuário. O ruim das sticky sessions é que ao cair algum nodo do cluster, os dados que se encontravam neles serão perdidos dado que não foram replicados.
Nesse artigo vamos configurar nossa aplicação web para que o JBoss 4.2.2.GA replique a sessão HTTP ao longo de todos os nodos do cluster cade vez que ela sofrer alguma alteração. A configuração é realizada no JBoss Web que utiliza o Tomcat, pelo que a configuração num Tomcat independente não deveria fugir muito do que ira ser mostrado aqui.
Mãos na obra
A configuração é bem simples, são necessários somente dois passos.
O primeiro passo é indicar que nossa aplicação é distribuída. Possivelmente esta configuração já foi feita devido a que estamos supondo que a aplicação já foi configurada para rodar num cluster. De qualquer modo, a configuração é realizada no arquivo web.xml da aplicação; devemos inserir o seguinte trecho dentro do nodo web-app:
<distributable />
O segundo e último passo é configurar um arquivo chamado jboss-web.xml, que sera localizado na pasta WEB-INF. Esse arquivo indicara ao JBoss como e quando replicar a sessão da aplicação:
<jboss-web>
    
<replication-config>
        
<replication-trigger>SET</replication-trigger>
        
<replication-granularity>SESSION</replication-granularity>
    
</replication-config>
</jboss-web>
O nodo replication-trigger indica quando o JBoss deve replicar os dados. Nesse caso estamos indicando que os dados devem ser replicados cada vez que seja chamado o método setAttribute da sessão (HttpSession).
O nodo replication-granularity indica o que devera ser replicado. Se a sessão não for muito grande, SESSION é uma boa opção porque sera replicada a sessão inteira. Quando a sessão é grande demais, a opção ATTRIBUTE resulta num ganho de performance devido a que somente serão replicados os atributos da sessão que sofreram alteração.
Testando a configuração
Fiz uma aplicação web bem simples para poder testar e comprovar que o JBoss esta replicando os dados da sessão dela. A aplicação guarda na sessão o número de acesos e printa o valor na tela. Cada vez que acessarmos a aplicação, deveria aparecer quantas vezes realizamos a operação, independente de qual nodo do cluster o balanceador escolher para servir.
A aplicação pode ser descarregada de aqui .
Para finalizar, agora o blog possui uma pagina de contato. Qualquer duvida ou pergunta que não quiserem colocar nos comentários pode ser enviada mediante o formulário e eu responderei assim chegar na minha caixa de email.

Fonte: http://www.mouseoverstudio.com/blog/2008/06/20/replicacao-de-sessoes-http-no-jboss/

terça-feira, 28 de agosto de 2012

<ace:dateTimeEntry/> Correção do problema do componente

Correção do problema do componente


ice.onAfterUpdate( function (){
    var calendars = $('.hasDatepicker');
    if (calendars){
        ice.ace.jq.datepicker.initialized = false;
    }
});


jQuery(function($){
    ice.onBeforeUpdate( function (){
        ice.ace.jq.datepicker.initialized = false;
    });
}

segunda-feira, 27 de agosto de 2012

Cache jQuery

AJAX cache problem in IE, AJAX cache issue IE

Disable Cache in jQuery

Best way to avoid caching is by disabling it through jQuery setup. Following code snippet does this:

$.ajaxSetup ({
// Disable caching of AJAX responses
cache: false
});
Try to use this method of disabling cache in case you using different Ajax loading techniques such as.load(), .getJSON() etc.

quarta-feira, 15 de agosto de 2012

Inclusão dos parâmetros no log do servidor

Acrescentar nas configuração de log o seguinte filtro

<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>

caso ocorra erros verificar o pacote correto que faz o bind com

<logger name="org.hibernate.type" level="TRACE"/>