sexta-feira, 28 de fevereiro de 2014

Usando o chakra linux: instalando eclipse e outros do pacotes extra.

Depois de muito tempo sem postar aqui (muitos posts de blogs começam com esse texto, mas é verdade) resolvi recomeçar. Estou testando o chakra linux (www.chakra-project.org), uma distribuição inicialmente baseada no veloz e spartano ArchLinux, que agora já caminha com as próprias pernas. O chakra utiliza o estilo semi-rolling release, ou seja, a base do so mantém-se estática e estável enquanto as aplicações evoluem. Ah, não posso esquecer de dizer que essa distro me foi recomendada pelo professor Sandro, um dos desenvolvedores/evangelistas do KDE e Qt!

A instalação do chakra é bem simples, interface grafica e next, next... a idéia do projeto é ter uma distro tão boa, rápida e estável quanto o archlinux porém fácil de usar.

Após a instalação é preciso configurar o pacman para incluir o pacote extra.

como root:

# vim /etc/pacman.conf

descomentar as linhas
#[extra]
#Include = /etc/pacman.d/mirrorlist

salvar o arquivo e digitar:
# pacman -Syyu

isso vai atulizar o sistema e a lista dos mirrors.

Assim que acabar de baixar tudo vc pode instalar o eclipse por exemplo:
# pacman -S eclipse

Ou o firefox

# pacman -S firefox-kde

e também o pacote multi-idioma

# pacman -S firefox-i18n

quarta-feira, 5 de outubro de 2011

Executando testes unitários com o framework Demoiselle


Primeiro, deve ser criado um projeto usando o arquétipo Vaadin do Framework Demoiselle.

Este vídeo feito pelo Cleverson (@zyc) pode ser usado como referência para a criação de uma aplicação que use o Demoiselle, com a diferença de que o arquétipo a ser utilizado é o do Vaadin.

Logo após a criação do projeto (aos 3:25 minutos do vídeo), podemos começar a modificar o mesmo.

Deve ser criado o pacote foo.init, na pasta src/main/java.

Dentro deste pacote deve ser criada a classe ApplicationLoader

package foo.init;

import javax.enterprise.context.ApplicationScoped;
import br.gov.frameworkdemoiselle.annotation.Shutdown;
import br.gov.frameworkdemoiselle.annotation.Startup;
import br.gov.frameworkdemoiselle.transaction.Transactional;

@ApplicationScoped
public class ApplicationLoader {

@Startup
@Transactional
public void load() {
}
@Shutdown
public void unload() {
}
}

No pacote foo, dentro da pasta src/test/java, deve ser criada a classe CategoryBCTest, a qual já conta com alguns testes:

package foo;

import static org.junit.Assert.assertNotNull;

import javax.inject.Inject;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

import foo.business.CategoryBC;
import foo.domain.Category;
import foo.init.ApplicationLoader;

import br.gov.frameworkdemoiselle.transaction.Transactional;
import br.gov.frameworkdemoiselle.util.DemoiselleRunner;
import static org.junit.Assert.fail;

@Transactional
@RunWith(DemoiselleRunner.class)
public class CategoryBCTest {

@Inject
private ApplicationLoader appLoader;

@Inject
CategoryBC bc;

@Before
public void before() {
for (Category category : bc.findAll()) {
bc.delete(category.getId());
}
}

@Test
public void testInsert() {
Category category = getMinimalValidCategory();
bc.insert(category);
assertNotNull(category.getId());
}

@Test
public void testUpdate() {
Category category = getMinimalValidCategory();
bc.insert(category);

bc.update(category);
category = bc.load(category.getId());
}

@Test
public void testDelete() {
Category category = getMinimalValidCategory();
bc.insert(category);
category = bc.load(category.getId());
bc.delete(category.getId());
category = bc.load(category.getId());
Assert.assertNull(category);
}

@Test
public void testInsertLogradouroNull() {
Category category = getMinimalValidCategory();
category.setDescription(null);
try {
bc.insert(category);
}catch (javax.validation.ConstraintViolationException e) {
return;
}

fail("Aceitou inserção sem Descrição");
}

/**
* Este método retorna um objeto que é minimamente válido.
* @return Objeto mínimo possível
*/

public Category getMinimalValidCategory() {
Category cat = new Category();
cat.setDescription("Descrição");
return cat;
}

}

Ao se tentar executar o teste neste momento, é lançado o seguinte erro: java.lang.ClassFormatError: Absent Code attribute in method...

Isto ocorre porque o arquétipo disponibilzado vem com a dependência javaee-api e javaee-web-api, que especificam o JavaEE6.
No entanto, estas bibliotecas servem apenas para compilação, pois os métodos que estão dentro destes jars estão sem implementação.

Para corrigir este problema, deve ser feita a adição dos seguintes campos no arquivo pom.xml do projeto, os quais resolvem as dependências relativas a uma implementação completa do javaee 6.0:
<repository>
<id>repository.jboss.org</id>
<name>JBoss Repository</name>
<url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>
</repository>

<dependency>
<groupId>org.jboss.spec</groupId>
<artifactId>jboss-javaee-6.0</artifactId>
<version>1.0.0.Final</version>
<scope>test</scope>
<type>pom</type>
</dependency>

Neste ponto, o JUnit teste ainda não consegue executar o teste (é lançada uma exceção do tipo java.util.NoSuchElementException, provavelmente ligada à falta de uma fonte/conexão a um banco de dados).

Resta agora configurar o acesso ao banco de dados:

O conteúdo da pasta src/main/resources deve ser copiado para a pasta src/test/resources

Na pasta src/main/resources/META-INF
Arquivo beans.xml:

<?xml version="1.0"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_1.xsd">

<alternatives>
<class>br.gov.frameworkdemoiselle.transaction.JPATransaction</class>
</alternatives>

</beans>

Arquivo persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

<persistence-unit name="bookmark-ds" transaction-type="RESOURCE_LOCAL">
<class>foo.domain.Bookmark</class>
<class>foo.domain.Category</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver" />
<property name="javax.persistence.jdbc.user" value="sa" />
<property name="javax.persistence.jdbc.password" value="" />
<property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:hsql://localhost:9001/bookmark" />

<property name="eclipselink.logging.level" value="FINE" />
<property name="eclipselink.ddl-generation" value="create-tables" />
<property name="eclipselink.ddl-generation.output-mode" value="database" />

<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="false" />
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>

Na pasta src/test/resources/META-INF
Arquivo beans.xml:

<?xml version="1.0"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_1.xsd">
</beans>

Arquivo persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

<persistence-unit name="bookmark-ds">
<jta-data-source>java:/DefaultDS</jta-data-source>
<class>foo.domain.Bookmark</class>
<class>foo.domain.Category</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver" />
<property name="javax.persistence.jdbc.user" value="sa" />
<property name="javax.persistence.jdbc.password" value="" />
<property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:hsql://localhost:9001/bookmark" />

<property name="eclipselink.logging.level" value="FINE" />
<property name="eclipselink.ddl-generation" value="create-tables" />
<property name="eclipselink.ddl-generation.output-mode" value="database" />

<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="false" />
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>

Com isto, chegamos à tão desejada barra verde do JUnit, juntamente com o deploy do projeto no JBOSS6.

Agradeço ao @mariojp pelo apoio na hora de encontrar esta solução, ao mostrar seu conhecimento sobre os arquivos de configuração.

sábado, 12 de março de 2011

Inscrição na ERBASE

Recomendo a todos a participação na ERBASE 2011 e no Maré de Agilidade.

Além da recomendação aqui vai uma dica para quem é estudante de graduação.
Para se tornar socio da SBC (www.sbc.org.br) existe uma a anuidade de R$10,00. Valores da anuidade SBC.

A inscrição para ERBASE é dividida em Sócios e não Sócios com os seguintes valores para Estudantes:
SócioNão Sócio
Inscrição40,0050,00
Minicurso35,00 45,00
Mare40,0050,00
A diferença de preço da inscrição é de 10,00 reais (Valor igual ao da anuidade da SBC).
1. Ao apenas se inscrever na ERBASE o custo é o mesmo de ficar sócio da SBC e se inscrever na ERBASE e ter direito aos benefícios oferecidos pela SBC.
2. Se além de se inscrever nas palestras se inscrever em algum outro evento (MC, LAB ou MARE) a economia será de 10,00 por evento.

Fonte:  http://www.mariojp.com.br

quinta-feira, 23 de setembro de 2010

Congresso Brasileiro de Software: Teoria e Prática (CBSoft)

O Congresso Brasileiro de Software: Teoria e Prática (CBSoft) é a principal conferência nacional de software.

O CBSoft integra quatro eventos tradicionais organizados pela comunidade brasileira de desenvolvimento de software: XXIV Simpósio Brasileiro de Engenharia de Software (SBES), XIV Simpósio Brasileiro de Linguagens de Programação (SBLP), IV Simpósio Brasileiro de Componentes, Arquiteturas e Reutilização de Software (SBCARS) e VIII Conferência Latino-americana em Linguagens de Padrōes de Programaçāo (SugarLoafPlop).

Em sua primeira edição, o CBSoft será realizado em uma das cidades mais belas e receptivas do Brasil, Salvador - Bahia, no período de 27 de setembro a 01 de outubro, no Hotel Bahia Othon Palace.

O CBSoft é um evento promovido pela Sociedade Brasileira de Computação (SBC) e organizado pelo Laboratório de Engenharia de Software (LES) da Universidade Federal da Bahia (UFBA).

Manoel Mendonça, Coordenador Geral do CBSoft

http://wiki.dcc.ufba.br/CBSOFT/WebHomePt

terça-feira, 18 de maio de 2010

Ubuntu 10.04 / Active directory com Likewise-open: Definindo o domínio como login padrão.

Bom eu fiz a atualização do ubuntu 10.04 e tive bastante problema com a nova versão do likewise-open. Depois de muita pesquisa encontrei a solução no ubuntu forums.


Vamos ao passo a passo...

Abra o terminal e digite:
sudo add-apt-repository ppa:likewise-open/likewise-open-ppa

sudo aptitude update

sudo aptitude safe-upgrade


Quaando os comandos acima tiverem terminado edite o arquivo /etc/likewise-open/lsassd.reg

Digite no terminal:
gksudo gedit /etc/likewise-open/lsassd.reg


Quando o arquivo abrir, substitua "AssumeDefaultDomain"=dword:00000000 por "AssumeDefaultDomain"=dword:00000001

Após editar e salvar volte ao terminar e digite:

sudo lwregshell import /etc/likewise-open/lsassd.reg

sudo lw-refresh-configuration


Pronto! Teoricamente, após os comandos acima você já será capaz de logar no domínio. Tente e deixe o feedback para nós nos comentários.

sexta-feira, 30 de abril de 2010

Ubuntu 10.04 Saiu!

Como esperado, a versão 10.04 do Ubuntu já está disponível para download. Veja as principais funcionalidades aqui!

terça-feira, 13 de abril de 2010

Nova Linha de MacBook Pro Lançcada

A Aple atualizou a linha de MacBooks Pro, ela já tinha atualizado o MacBook White, e essa atualização era esperada.

Veja a notícia na G1.

quinta-feira, 8 de abril de 2010

Inauguração da Primeira Apple Premium Reseller de Salvador

Hoje aconteceu a inauguração da iTown, a mais nova loja APple Premium Reseller e a única em Salvador. A inauguração aconteceu por volta das 19:30, um pouco atrasada, mas nada que tirasse o foco, pelo menos o meu, "produtos com desconto". A inauguração contou com a presença de Pitty e Dalton Vigh, mas o importante mesmo é a promoção de inauguração: produtos com até 30% de desconto, na lata!!!!

Eu estava pensando em adiquirir um Macbook Pro 13, que estava custando R$ 3.599,00 no site da Apple, mas hoje eu consegui comprar a mesma máquina por R$ 2.999,00, com possibilidade de dividir o valor em 12x sem juros.... Valeu muito a pena!

Quem quiser aproveitar a promoção, pode ficar tranquilo porque ela vai até dia 11/04/2010.

OBS.: A minha pressa me fez esquecer de levar a câmera fotográfica para registrar o momento.

Até mais!