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
sexta-feira, 28 de fevereiro de 2014
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:
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
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ócio | Não Sócio | |
Inscrição | 40,00 | 50,00 |
Minicurso | 35,00 | 45,00 |
Mare | 40,00 | 50,00 |
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
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:
Quaando os comandos acima tiverem terminado edite o arquivo /etc/likewise-open/lsassd.reg
Digite no terminal:
Quando o arquivo abrir, substitua "AssumeDefaultDomain"=dword:00000000 por "AssumeDefaultDomain"=dword:00000001
Após editar e salvar volte ao terminar e digite:
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.
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.
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!
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!
Assinar:
Postagens (Atom)