sábado, 8 de dezembro de 2012

Instalar as fontes Microsoft True Type em Red Had Linux

Para instalar as fontes Microsoft True Type em Red Hat Linux versão 5 enterprise seguir os passos seguintes:

  1. Descarregar o ficheiro msttcorefonts-1.3-4.noarch.rpm
  2. Criar a directoria TrueType usando o comando:  mkdir -m 755 /usr/X11R6/lib/X11/fonts/TrueType (pode-se usar a directoria já existente /usr/share/X11/fonts/TTF ao invés de se criar uma nova. Neste caso não é necessário efectua os pontos 2 e 6 )
  3. Caso se tenha o 7zip abrir o ficheiro e extrair as fontes para a directoria criada acima.
    1. Caso contrário efectuar o seguinte:
      1. Copiar o ficheiro msttcorefonts-1.3-4.noarch.rpm para a directoria criada acima
      2. Mudar para a directoria criada acima
      3. Executar o comando: rpm2cpio msttcorefonts-1.3-4.noarch.rpm | cpio -idmv
      4. As fontes estarão na directoria: ./usr/share/fonts/msttcorefonts/
      5. Mover as fontes para /usr/X11R6/lib/X11/fonts/TrueType
      6. Apagar a directoria ./usr/share/fonts/msttcorefonts/
  4. Na directoria onde estão as fontes extraídas executar: chmod 644 *.ttf
  5. Executar o comando ttmkfdir > fonts.scale
  6. Adicionar a directoria /usr/X11R6/lib/X11/fonts/TrueType ao ficheiro de configuração /etc/X11/fs/config  
    1. Localizar a linha catalogue = comma-separated-list-of-font-directories e adicionar a directoria criada no final
  7. Executar o comando: /usr/bin/fc-cache 
  8. Executar o comando: xset fp rehash
  9. Executar o comando: service xfs restart
  10. Usar o comando fc-list para listar as fontes instaladas


Fonte: http://www.yolinux.com/TUTORIALS/LinuxListOfFonts.html

sexta-feira, 30 de novembro de 2012

JAXB : unexpected element (uri:"http://...", local:"..."). Expected elements are (none)

Após a geração do código Java com o utilitário xjc a partir dos XSDs, e efectuado o código de marshall/unmarshall, ao usar o respectivo código ocorrem erros como os a seguir descritos.

Unmarshall


Erro durante o unmarshall:

unexpected element (uri:"http://.../.../...", local:"MinhaBase"). Expected elements are (none)


Aparentemente poderá ser um problema no XML a descodificar. Contudo se se tiver a certeza que o problema não está no XML a descodificar, então poderá estar a ocorrer um problema relacionado com a ausência da anotação @XmlRootElement na classe base do esquema gerado. Para verificar isto basta abrir a classe base do esquema gerado e verificar se a tag @XmlRootElement está presente. Se estiver o problema é outro que o descrito a seguir.

Resumidamente, isto não é um bug do JAXB. A ausência da anotação está relacionada com a impossibilidade do xjc determinar com exactidão qual a classe raiz do esquema. Em caso de dúvida o xjc não coloca esta tag.

A solução não é nada complicada.

Basta alterar a linha de código (onde está reader poderá estar outro tipo qualquer que seja aceite):

resultadoUnmarshal = (MeuTipoBase) unmarshaller.unmarshal(reader);

Por:

JAXBElement root = unmarshaller.unmarshal(new StreamSource(reader), MeuTipoBase.class);
resultadoUnmarshal = root.getValue();



Marshall

Erro durante o marshall:

com.sun.istack.internal.SAXException2: unable to marshal type "pt.MeuTipoBase" as an element because it is missing an @XmlRootElement annotation

Aqui nota-se claramente que o problema está relacionado com a falta da anotação @XmlRootElement na classe base. Ver este artigo para mais detalhes.

A solução aqui é também simples.

Em primeiro lugar é necessário abrir a classe ObjectFactory onde está a classe MeuTipoBase.

Procurar por algo semelhante a

@XmlElementDecl(namespace = "http://.../.../...", name = "MinhaBase")
public JAXBElement create
MinhaBase(MeuTipoBase, value) {
        return new JAXBElement<
MeuTipoBase>(_MINHA_BASE_QNAME, MeuTipoBase.class, null, value);
}


Ver a classe ObjectFactory facilita na obtenção dos parametros correctos para o objecto QName que terá de ser criado.


No nosso código substituir a linha (ou linha semelhante)

marshaller.marshal(instanciaAcodificar, System.out);

Por

marshaller.marshal(new JAXBElement(new QName("http://.../.../..", "MinhaBase"), MeuTipoBase.class, null, instanciaAcodificar), System.out);


Os parametros usados para criar a instância de QName são as que estão na linha do ObjectFactory

@XmlElementDecl(namespace = "http://.../.../...", name = "MinhaBase")


A não ser que o problema esteja entre a cadeira e o teclado, terão estes problemas resolvidos.

sexta-feira, 23 de novembro de 2012

Como não executar testes no maven

Por vezes é necessário não executar os testes num projecto maven. 
Ou porque não é o ambiente apropriado, ou porque se está com pressa e não se quer que 
os testes executem, etc.
 
Através da linha de comandos é simples.
Basta especificar a opção: -DskipTests

Caso se esteja por exemplo no Eclipse e se esteja com problemas com falhas nos testes 
e se quer que o maven do Eclipse não execute os testes, então pode-se criar uma nova 
configuração de Run para o maven e aí indicar que se quer saltar os testes.
 

Para evitar no próprio projecto (pom.xml) que os testes sejam executados, basta 
incluir na parte dos plugins o seguinte bloco:

 
 <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-surefire-plugin</artifactId>
     <version>2.12</version>
     <configuration>
       <skipTests>true</skipTests>
     </configuration>
   </plugin>

quinta-feira, 22 de novembro de 2012

Obter conteúdo de um CLOB (de texto) em Oracle SQL

Maneira simples de se ver o que está num CLOB (desde que seja um CLOB de texto).

SELECT DBMS_LOB.substr(coluna_clob, 3000)
FROM tabela_com_clob 

Problemas de build no maven

Durante a execução de mvn clean install ocorre o erro seguinte:


Downloading: https://........................pom
 

Exception in thread "pool-1-thread-1" ---------------------------------------------------java.lang.NoSuchMethodError: org.apache.maven.wagon.shared.http4.AbstractHttpClientWagon.getReadTimeout()I

Este erro ocorre devido a um bug na versão do maven 3.0.3. A solução é actualizar o maven para a versão 3.0.4 (ou superior caso já exista).

quarta-feira, 5 de setembro de 2012

Descobrir a Proxy

Quando se está numa rede com uma proxy, os browsers podem ter a opção "Detectar automaticamente as configurações de proxy para esta rede" (Auto-detect proxy settings for this network).

Para se saber que proxy é esta (ou as configurações que permitem a descoberta da proxy) pode-se usar no browser o seguinte:

http://wpad/wpad.dat

Ao escrever o endereço acima num browser poder-se-á efectuar o descarregamento de um ficheiro que contém as definições de descoberta da proxy.

Depois é só abrir o ficheiro e tentar perceber que proxy está a ser usada.

Referências:
http://en.wikipedia.org/wiki/Wpad
http://superuser.com/questions/33588/how-to-view-internet-explorer-auto-detected-proxy-settings

quinta-feira, 19 de julho de 2012

Importar/Exportar preferências no Eclipse

Quando se cria um novo Workspace em Eclipse as preferências são reinicializadas e todas as configurações que se tenha feito noutro Workspace desaparecem nesse novo Workspace.

Para copiar as preferências de um outro Workspace para um novo (ou se quer fazer uma cópia de salvaguarda das preferências actuais do Eclipse) basta fazer o seguinte no Workspace do qual se quer fazer a cópia:

File -> Export -> General -> Preferences.

Pode-se especificar exactamente o que é para ser exportado.

Isto faz com que seja criado um ficheiro com as preferências.

Para importar basta, no Workspace onde se quer aplicar as preferências:

File -> Import -> General -> Preferences

e seleccionar o ficheiro do qual importar as preferências.

segunda-feira, 18 de junho de 2012

Firefox em Windows com 64 bits

Um pouco farto de tanto crash no Firefox, e querendo mais rapidez, após alguma pesquisa encontrei esta versão do Firefox mais optimizada para 64 bits:


http://waterfoxproject.org/

Usa o mesmo perfil do Firefox, pelo que não é preciso reconfigurações.

domingo, 20 de maio de 2012

Multi-coversor online

Disponível em: http://www.online-convert.com/

Converte vários de e para vários tipos de formatos e vários tipos de ficheiros.

sábado, 19 de maio de 2012

Sobreposição de menus no Firefox

No Firefox por vezes quando se está num site com flash ou por exemplo no Google Maps ou no Youtube, ao se carregar com o botão da direita o menu de contexto da página aparece sobreposto com o menu de contexto do Firefox.

A solução deste problema é extremamente simples (instruções para o Firefox em Inglês):

Ir a Tools -> Options -> Context -> Carregar no botão Advanced (que está do lado oposto da checkbox JavaScript)

Seleccionar a checkbox "Disable or Replace Context Menus".


E pronto. Problema resolvido.

Solução encontrada em: http://www.geekscribes.net/blog/2011/12/02/solved-firefox-right-click-menu-overlaps-flash-javascript-menu/

quarta-feira, 4 de janeiro de 2012