Opa, maio mês das noivas e como diz um amigo meu, casar é bom, mas morrer queimado é um pouquinho pior :)
Ok sem mais delongas vou comentar a respeito de um novo conceito que recentemente vi na web o MVC+J.
Você ja deve ter ouvido falar do famoso MVC (Model, View e Control), agora o que esse J ta fazendo ai? É j de ajax, ou seja é aquela pagina que dinamicamente vai ganhando conteudo ou realizando chamadas sem precisar realizar uma nova requisição na pagina inteira.
Entao temos as seguintes opções:
Model - Dao´s, Services utilizando JPA(hibernate, toplink), JDBC, WebServices geralmente o Spring integrando tudo.
Control - Frameworks web como o proprio Spring MVC, Faces, Struts, WebWork
View - JSP com JSTL, JSF, Groovy
e o J - com JQuery, Prototype, DoJo.
A arquitetura que escolhi foi String com iBatis, e por ja utilizar o framework Spring, aproveitei a parte web dele com o Spring MVC, com view em JSP com JSTL, e jQuery por ser o mais rapido e tem um grande numero de widgets (componente) escritos com sua linguagem.
Outra teoria minha é que esse J possa ser de JSON uma vez que os componentes jQuery podem fazer interação direto com os controller´s utilizando essa anotação.
segunda-feira, 3 de maio de 2010
quarta-feira, 14 de abril de 2010
JQuery, IE6, and 'Could not set the selected property. Unspecified error.'
Opa,
pela primeira vez o jQuery me decepcionou, brincadeira, a culpa nao é dele e sim do Internet Explorer.
estava fazendo um form com dois combos um para ano e outro pra mes, e gostaria que viesse selecionado os itens da data atual.
utilizei
so que testando no IE6 da o erro Could not set the selected property. Unspecified error, pesquisando no google parece que é um problema do DOM.
então a solução foi colocar selected no momento da criação do option
ok assim funga o trem
pela primeira vez o jQuery me decepcionou, brincadeira, a culpa nao é dele e sim do Internet Explorer.
estava fazendo um form com dois combos um para ano e outro pra mes, e gostaria que viesse selecionado os itens da data atual.
utilizei
$("#mesoption[value='04']").attr('selected', 'selected');
so que testando no IE6 da o erro Could not set the selected property. Unspecified error, pesquisando no google parece que é um problema do DOM.
então a solução foi colocar selected no momento da criação do option
var listMes = {'01':'Janeiro', '02':'Fevereiro', '03':'Março', '04':'Abril', '05':'Maio', '06':'Junho', '07':'Julho', '08':'Agosto', '09':'Setembro', '10':'Outubro', '11':'Novembro', '12':'Dezembro'};
var agora=new Date();
var mesAtual = agora.getMonth();
var anoAtual = agora.getFullYear();
var optionSelected = "<option selected>/option>";
var optionNormal = "<option>/option>";
.each(listMes, function(key, value)
{
$('#mes').append($((parseInt(mesSelected) == parseInt(key) ? optionSelected : optionNormal)).attr("value",key).text(value));
});
ok assim funga o trem
terça-feira, 23 de fevereiro de 2010
DPEC Erro Root element is missing
Opa,
esse mês gostaria de continuar escrevendo sobre o spring security e como utiliza-lo atravez de anotação, mas acabei compranto um iphone, dai pensei em escrever um tutorial de como turbinalo, mas vou acabar escrevendo sobre um problema enfrentado que me tirou toda a atenção esses mês :(
Server was unable to process request. ---> Root element is missing.
Esse erro é retornado quando é enviado uma DPEC(resumo das notas fiscais eletronicas) ao projeto NF-e. O erro aparentemente é causado por alguma falha na formatação do XML certo?
Não, infelizmente não é o caso. Justifico:
Primeiro e mais estranho - A mesma DPEC uma hora é aceita outra hora o erro ocorre.
Segundo - O exemplo do manual de contiguencia esta tudo errado e nao serve de base para conferencia.
Terceiro - eu testei com 3 (três maneiras diferentes de envio e a mesma coisa acontecia.
Quarto (já tava no desespero), interceptei as mensagem enviado do proprio programa emissor do projeto que é disponibilizado gratuitamente, e estava igual ao do meu sistema.
Quinto - o erro tambem o ocorre no sitema deles kkkkkkkkkkkkkkk (ri alto)
Sexto - enviei email para o suporte, liguei no 0800, liguei ate em sao paulo na prodesp e ninguem sabe me responder o que acontece
Então meus amigos, o que fazer? Rezar paro o sistema não precisar de contingência?
O que aqui no Paraná quase nao acontece (rir alto)
esse mês gostaria de continuar escrevendo sobre o spring security e como utiliza-lo atravez de anotação, mas acabei compranto um iphone, dai pensei em escrever um tutorial de como turbinalo, mas vou acabar escrevendo sobre um problema enfrentado que me tirou toda a atenção esses mês :(
Server was unable to process request. ---> Root element is missing.
Esse erro é retornado quando é enviado uma DPEC(resumo das notas fiscais eletronicas) ao projeto NF-e. O erro aparentemente é causado por alguma falha na formatação do XML certo?
Não, infelizmente não é o caso. Justifico:
Primeiro e mais estranho - A mesma DPEC uma hora é aceita outra hora o erro ocorre.
Segundo - O exemplo do manual de contiguencia esta tudo errado e nao serve de base para conferencia.
Terceiro - eu testei com 3 (três maneiras diferentes de envio e a mesma coisa acontecia.
Quarto (já tava no desespero), interceptei as mensagem enviado do proprio programa emissor do projeto que é disponibilizado gratuitamente, e estava igual ao do meu sistema.
Quinto - o erro tambem o ocorre no sitema deles kkkkkkkkkkkkkkk (ri alto)
Sexto - enviei email para o suporte, liguei no 0800, liguei ate em sao paulo na prodesp e ninguem sabe me responder o que acontece
Então meus amigos, o que fazer? Rezar paro o sistema não precisar de contingência?
O que aqui no Paraná quase nao acontece (rir alto)
sexta-feira, 15 de janeiro de 2010
Spring Security 3.0
Opa,
de volta das festas, resolvi criar um projeto utilizando maven,
ja tinha visto alguma coisa na pos-graduaçao, mas o desafio
era maior agora, pois quero criar um projeto que vai utilizar
ibatis na parte de persistencia, e Spring MVC para camada web
e Spring Security para controlar as permissoes do usuario e seu login.
Inicialmente coloquei o plugin m2eclipse (http://docs.codehaus.org/display/M2ECLIPSE/Home),
com ele no eclipse eu ja crio o projeto com o artefact para web.
Uma vez criado o projeto, vamos ao famoso pom.xml. Como eu queria utilizar a ultima versao do Spring a 3.0 o arquivo ficou assim:
O proximo passo foi colocar as configuraçoes certa em cada xml de configuracao do webproject
web.xml
applicationContex-security.xml
dispatcher-servlet.xml
Com essas configuraçoes voce ja pode inicial um projeto com autenticacao
para continuar voce vai fazer a parte de dao e service mas dai voce pode escolher
como vai fazer, com jdbc simples, hibernate, toplink... tudo por conta do Spring
Para finalizar vou colocar um exemplo de controller
Pra comerçar a brincadeira e´ isso por enquanto..
de volta das festas, resolvi criar um projeto utilizando maven,
ja tinha visto alguma coisa na pos-graduaçao, mas o desafio
era maior agora, pois quero criar um projeto que vai utilizar
ibatis na parte de persistencia, e Spring MVC para camada web
e Spring Security para controlar as permissoes do usuario e seu login.
Inicialmente coloquei o plugin m2eclipse (http://docs.codehaus.org/display/M2ECLIPSE/Home),
com ele no eclipse eu ja crio o projeto com o artefact para web.
Uma vez criado o projeto, vamos ao famoso pom.xml. Como eu queria utilizar a ultima versao do Spring a 3.0 o arquivo ficou assim:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.mactus</groupId>
<artifactId>projectus</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>Gerenciador de Projetos da Mactus Infomatica</name>
<url>http://projectus.mactus.com.br</url>
<repositories>
<repository>
<id>spring-milestone</id>
<name>Spring Milestone Repository</name>
<url>s3://maven.springframework.org/milestone</url>
</repository>
<repository>
<id>ibatis</id>
<name>Ibatis repo</name>
<url>http://svn.apache.org/repos/asf/ibatis/java/ibatis-2/trunk/ibatis-2-core/</url>
</repository>
<repository>
<id>spring-maven-milestone</id>
<name>Springframework Maven Repository</name>
<url>http://s3.amazonaws.com/maven.springframework.org/milestone</url>
</repository>
</repositories>
<pluginRepositories>
</pluginRepositories>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-acl</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.ibatis</groupId>
<artifactId>ibatis-sqlmap</artifactId>
<version>2.3.4.726</version>
</dependency>
</dependencies>
<build>
<finalName>projectus</finalName>
</build>
<properties>
<spring.version>3.0.0.RELEASE</spring.version>
</properties>
</project>
O proximo passo foi colocar as configuraçoes certa em cada xml de configuracao do webproject
web.xml
<web-app>
<display-name>Archetype Created Web Application</display-name>
<welcome-file-list>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
<!-- Carrega as configuraçoes do Spring security-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-security.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Mapeamento para o String MVC-->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<!-- Adicionar filtro para Segurança-->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Vincular httpsession com o esquema de segurança do Spring-->
<listener>
<listener-class>
org.springframework.security.web.session.HttpSessionEventPublisher
</listener-class>
</listener>
</web-app>
applicationContex-security.xml
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd">
<http auto-config='true'>
<intercept-url pattern="/login.htm" filters="none" />
<intercept-url pattern="/**" access="ROLE_USER" />
<form-login login-page="/login.htm" always-use-default-target="false"
authentication-failure-url="/login.htm?authfailed=true" />
<logout invalidate-session="true" logout-success-url="/login.htm?loggedout=true"/>
<session-management>
<concurrency-control max-sessions="1" error-if-maximum-exceeded="true"/>
</session-management>
</http>
<!-- Aqui voce pode substituir por um bean que vai no banco de dados e verificao o usuario -->
<authentication-manager>
<authentication-provider>
<user-service>
<user name="user1" password="pass1" authorities="ROLE_USER, ROLE_ADMIN" />
<user name="user2" password="pass2" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
</beans:beans>
dispatcher-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config />
<context:component-scan base-package="br.com.mactus.web"/>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
Com essas configuraçoes voce ja pode inicial um projeto com autenticacao
para continuar voce vai fazer a parte de dao e service mas dai voce pode escolher
como vai fazer, com jdbc simples, hibernate, toplink... tudo por conta do Spring
Para finalizar vou colocar um exemplo de controller
@Controller
public class MainController {
@RequestMapping(value="/index", method = RequestMethod.GET)
public String index() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication.getAuthorities().contains("ROLE_ADMIN")) {
return "redirect:homeAdmin.htm";
} else {
return "redirect:home.htm";
}
}
@RequestMapping(value="/login", method = RequestMethod.GET)
public void login() {
}
@RequestMapping(value="/home", method = RequestMethod.GET)
public void home() {
}
@RequestMapping(value="/homeAdmin", method = RequestMethod.GET)
public void homeAdmin() {
}
}
Pra comerçar a brincadeira e´ isso por enquanto..
quinta-feira, 22 de outubro de 2009
Reflexão em Flex
Como diz um amigo meu:
Opa,
ainda estou apanhando com o flex, mas sei que no começo é assim mesmo
igual a irmão mais novo, despois que cresce ja viu ne...
para fazer reflexao em flex é mais ou menos assim:
flash.utils.getQualifiedClassName(obj:Object); // para pegar o qualify name de um obejto
e getDefinitionByName(name:String); // para pegar um objeto a partir de uma string;
exemplos:
então a dica é a seginte: para elaborar um menu eu passava como parametro o objeto da janela que queria abrir para uma funcao showForm, no meu caso. So que mesmo passano o caminho correto recebia o erro:
Variable List is not defined. at global/flash.utils::getDefinitionByName()....
então, o esquema é criar uma variavel do tipo que vc vai instanciar por reflexao para o copilador nao se perder. ( eu sei que no Java isso nao precisa :p)
ex:
Opa,
ainda estou apanhando com o flex, mas sei que no começo é assim mesmo
igual a irmão mais novo, despois que cresce ja viu ne...
para fazer reflexao em flex é mais ou menos assim:
flash.utils.getQualifiedClassName(obj:Object); // para pegar o qualify name de um obejto
e getDefinitionByName(name:String); // para pegar um objeto a partir de uma string;
exemplos:
var methodRef:Function = Function(flash.utils.getDefinitionByName(method));
methodRef.call(this);
var classReference:myClass;
var klas:Class=getDefinitionByName("myClass") as Class;
então a dica é a seginte: para elaborar um menu eu passava como parametro o objeto da janela que queria abrir para uma funcao showForm, no meu caso. So que mesmo passano o caminho correto recebia o erro:
Variable List is not defined. at global/flash.utils::getDefinitionByName()....
então, o esquema é criar uma variavel do tipo que vc vai instanciar por reflexao para o copilador nao se perder. ( eu sei que no Java isso nao precisa :p)
ex:
var formUsuario:usuario.List;
var formPassaro:passaro.List;
var formAlterarSenha:usuario.AlterarSenha;
new Util().showForm(this, getDefinitionByName(item) as Class);
segunda-feira, 19 de outubro de 2009
Conversao latin1 para utf-8
Uma dica rapida para outubro nao passar em branco.
como uso o postgres desde a versao 6.4
no inicio para aceitar os caracteres do brasil utilizava o latin1
como enconding.
hoje na versao 8.4 o suporte a utf-8 esta se tornando padrao, entao o
que fazer para migrar as bases antigas?
Resposta esta na utilizacao de conversores de codificaçao do arquivo de backup.
para linux faça o seguinte:
- Gere um backup normal com pg_dump:
pg_dump -i banco > backup.sql
- utilize recodificadores de caracteres, no meu caso escolhi o recode (http://www.gnu.org/software/recode/recode.html):
recode l1..utf8 backup.sql
- por final, edite o arquivo para retirar o SET client_encoding = 'LATIN1'; que o pg_dump gera:
vim backup.sql
- feito isso basta importa o backup para o novo banco ja criado com a codificaçao UTF-8
psql banco < backup.sql
como uso o postgres desde a versao 6.4
no inicio para aceitar os caracteres do brasil utilizava o latin1
como enconding.
hoje na versao 8.4 o suporte a utf-8 esta se tornando padrao, entao o
que fazer para migrar as bases antigas?
Resposta esta na utilizacao de conversores de codificaçao do arquivo de backup.
para linux faça o seguinte:
- Gere um backup normal com pg_dump:
pg_dump -i banco > backup.sql
- utilize recodificadores de caracteres, no meu caso escolhi o recode (http://www.gnu.org/software/recode/recode.html):
recode l1..utf8 backup.sql
- por final, edite o arquivo para retirar o SET client_encoding = 'LATIN1'; que o pg_dump gera:
vim backup.sql
- feito isso basta importa o backup para o novo banco ja criado com a codificaçao UTF-8
psql banco < backup.sql
sexta-feira, 11 de setembro de 2009
Palestra sobre Java Mobile com Roger Brinkley (Sun Microsystems)
Opa,
Dia 10 de setembro em maringa, mais precisamente no Cesumar, foi realizado uma palestra : "O futuro do desenvolvimento móvel com JavaME", com Roger Brinkley.
Roger Brinkley é o Líder da Comunidade Móvel & Embarcados da Sun Microsystems. É responsável pelo desenvolvimento comunitário relacionado a tecnologias Java ME. Roger possui mais de 30 anos de experiência profissional, sendo mais de 14 na Sun. É um palestrante asssíduo em conferências técnicas ao redor do mundo.
Estive la, com a ajuda (leia-se carona) do pessoal da unimake, e pude conferir de perto, estava na primeira fila, mais sobre o assunto.
O cara é estranho, começou lançando duas bolinhas de brinde da sun, com taco de golf,
pensei, hoje eu ganho brinde, que nada, foram os unicos de todo o encontro.
A desculpa foi que o tudo foi arranjado na hora, e ate o datashow e a tradução falharam.
Roger basicamente comentou sobre tres aspectos: mobile, tv digital, e embarcados.
Em relação a parte movel, ele comentou de um novo projeto chamado phoneME, que vai começar a vir no celulares para daqui uns 6 meses, esse projeto traz recursos avançados para o desenvolvedor inventar moda no celular. Assim ele pode programar para um e rodar em qualquer dispositivo com phoneME e tera o mesmo resultado, a mesma cara no caso. Comentou tambem sobre o lwuit (https://lwuit.dev.java.net/) que é um conjunto de componente para trabalhar com java me.
Na parte da tv digital o fato importante esta que a tecnologia brasileira esta toda em java, ele falou de projeto nos EUA o que pra mim ainda nao vem ao caso.
Por final, os embarcados (brinquedinhos caros), foi a que o pessoal gostou mais. Ele demonstrou o SUN SPOT, uns cubinhos que rodam aplicações java, que da pra inventar um monte de coisa, exemplo que ele demonstrou:
- um spot jogando bola com outro
- um carinho robo que desvia de obstaculos e ate de buraco
- um luva do tipo minority report, que ele usou para manipular imagens
- um dipositivo do tamnaho de uma carteira aberta que recebe dispositivos plug-play
Ja no no pinga-fogo, onde era proibido fazer pergunta sobre a oracle, o destaque foi para a resposta sobre o phoneME em relação o Java FX, a ide nova para programar para java mobile, e o suporte a multi-touch e android.
Do mais, o evento foi muito bom pois revi amigos e professores, e é bom ficar interado um pouco sobre novas tecnologias :)
Dia 10 de setembro em maringa, mais precisamente no Cesumar, foi realizado uma palestra : "O futuro do desenvolvimento móvel com JavaME", com Roger Brinkley.
Roger Brinkley é o Líder da Comunidade Móvel & Embarcados da Sun Microsystems. É responsável pelo desenvolvimento comunitário relacionado a tecnologias Java ME. Roger possui mais de 30 anos de experiência profissional, sendo mais de 14 na Sun. É um palestrante asssíduo em conferências técnicas ao redor do mundo.
Estive la, com a ajuda (leia-se carona) do pessoal da unimake, e pude conferir de perto, estava na primeira fila, mais sobre o assunto.
O cara é estranho, começou lançando duas bolinhas de brinde da sun, com taco de golf,
pensei, hoje eu ganho brinde, que nada, foram os unicos de todo o encontro.
A desculpa foi que o tudo foi arranjado na hora, e ate o datashow e a tradução falharam.
Roger basicamente comentou sobre tres aspectos: mobile, tv digital, e embarcados.
Em relação a parte movel, ele comentou de um novo projeto chamado phoneME, que vai começar a vir no celulares para daqui uns 6 meses, esse projeto traz recursos avançados para o desenvolvedor inventar moda no celular. Assim ele pode programar para um e rodar em qualquer dispositivo com phoneME e tera o mesmo resultado, a mesma cara no caso. Comentou tambem sobre o lwuit (https://lwuit.dev.java.net/) que é um conjunto de componente para trabalhar com java me.
Na parte da tv digital o fato importante esta que a tecnologia brasileira esta toda em java, ele falou de projeto nos EUA o que pra mim ainda nao vem ao caso.
Por final, os embarcados (brinquedinhos caros), foi a que o pessoal gostou mais. Ele demonstrou o SUN SPOT, uns cubinhos que rodam aplicações java, que da pra inventar um monte de coisa, exemplo que ele demonstrou:
- um spot jogando bola com outro
- um carinho robo que desvia de obstaculos e ate de buraco
- um luva do tipo minority report, que ele usou para manipular imagens
- um dipositivo do tamnaho de uma carteira aberta que recebe dispositivos plug-play
Ja no no pinga-fogo, onde era proibido fazer pergunta sobre a oracle, o destaque foi para a resposta sobre o phoneME em relação o Java FX, a ide nova para programar para java mobile, e o suporte a multi-touch e android.
Do mais, o evento foi muito bom pois revi amigos e professores, e é bom ficar interado um pouco sobre novas tecnologias :)
Assinar:
Postagens (Atom)
