by Luiz Paulo
| outubro 20, 2010
| 6 Comments »
Internet Explorer como sempre nos trás boas surpresas. Dessa vez, me deparei com um erro bizarro. Quando cliquei em um arquivo DOCX para download, o Internet Explorer 8 transformou em ZIP. Veja o motivo e a solução para o problema.
O problema está nas configurações de segurança padrão do IE8, que restringe arquivos (docx, xlsx, pptx) e são baixados como ZIP. Não pesquisei e o problema ocorre com outras extensões, mas só de não aceitar os arquivos da própria Microsoft, já é um problema grave.
Solução em sua aplicação JAVA
Obviamente, passei por esse problema em nossa aplicação e tive que achar alguma forma de solucionar. A modificação é relativamente simples.
Basta adicionar uma regra de mime-type em seu web.xml que tudo se resolve.
No local que encontrei a solução, dizia para referenciar "DOCX" a "application/msword" mas dessa forma o arquivo é reconhecido como "DOC", gerando inconsistência na leitura do Office.
Segue a solução que implementei:
<mime-mapping>
<extension>docx</extension>
<mime-type>application/vnd.openxmlformats-officedocument.wordprocessingml.document</mime-type>
</mime-mapping>
Com essa modificação, seus arquivos DOCX serão baixados normalmente no IE8.
Agora que você já tem o conhecimento, poderá resolver o problema em sua aplicação mesmo que seja em outra linguagem... Basta modificar as configurações PHP, por exemplo seria o php.ini, e assim por diante.
Solução no seu browser
Para que seu browser passe a aceitar os arquivos, basta seguir os seguintes passos:
- No canto superior direito do IE8, clique em Ferramentas para abrir o menu drop-down;
- Na parte inferior do menu Ferramentas, clique em Opções da Internet;
- Na caixa de diálogo Opções da Internet, selecione a aba Segurança;
- Na guia Segurança, selecione a zona Internet e clique no botão Nível Personalizado;
- Vá aproximadamente 2 / 3 para baixo na lista para a opção "Abrir arquivo com base no conteúdo, não na extensão de arquivo" e alterar a configuração Desativar;
- Clique em OK;
- Repita os passos 4-6 para a zona da intranet local e zona de sites confiáveis;
- Clique em OK;
- Feche todas as instâncias do IE8;
- Reabrir o IE8 e agora deve reconhecer o Office 2007 e 2010 extensões de arquivo ao salvar anexos de email.
Isso provavelmente fará com que seu browser aceite os arquivos.
Abraços!
Categorias: Artigo, Browser, Desenvolvimento web, Java
Tags: , Browser, download, ie8, internet explorer, java
by Luiz Paulo
| dezembro 25, 2008
| 1 Comment »
Como prometi anteriormente, vou criar um post com as soluções sobre como pegar o último dia dos mês. Todas as soluções postadas aqui, foram comentadas no post: Javascript - Último dia do mês onde falei sobre esse assunto.
Bem, não tive como testar todos, até por que tem linguagem aí embaixo que nunca utilizei 
Se tiver algum erro, fiquem a vontade para comentar que eu acerto, blz?
Segue as soluções e seus respectivos criadores / postadores.
Último dia do mês em PHP:
Comment: Luiz Paulo
<?php
$year = 2008;
$month = 2;
echo date("t", mktime(0, 0, 0, $month, 1, $year));
?>
Último dia do mês em JAVA:
Comment: Felipe Zappala
System.out.println(new SimpleDateFormat("dd").format(new Date(2008,2,0)));
System.out.println(new GregorianCalendar(2008,2,0).get(Calendar.DAY_OF_MONTH));
Último dia do mês em Python:
Comment: Rodrigo Cacilhas
last_day = calendar.monthrange(year, month)[1]
Último dia do mês em Lua:
Comment: Rodrigo Cacilhas
function lastday(year, month)
return 0 + os.date(
"%d",
os.time {
year = year
month = month + 1
day = 0
}
)
end
Último dia do mês em Objective-C (do Mac OS X):
Comment: Rodrigo Cacilhas
int lastday(int year, int month) {
id date = [NSDate
dateWithString: [NSString
stringWithFormat: @"%d-%d-01 00:00:00 +000", year, month
]
];
[date addTimeInterval: -86400.];
id day = [date
descriptionWithCalendarFormat: @"%d"
timeZone: [NSTimeZone defaultTimeZone]
locale: nil
];
return [day intValue];
}
Último dia do mês em Rails:
Comment: Valdinei dos Santos
d = Date.new(2008,11)
d.end_of_month
=> Sun, 30 Nov 2008
Último dia do mês em Smalltalk:
Comment: Rodrigo Cacilhas
lastDayOfMonth: m year: y
| aux |
m := m + 1.
(m = 13) ifTrue: [
m := 1.
y := y + 1.
].
aux := Date year: y month: m day: 1.
aux := aux addDays: -1.
↑ aux dayOfMonth
!
Último dia do mês em Common Lisp:
Comment: Rodrigo Cacilhas
(defun last-day-of-month (y m)
(setq m (+ m 1))
(when (= m 13)
(setq m 1)
(setq y (+ y 1)))
(multiple-value-bind
(*sec* *min* *hour* *day* *month* *year* *date-of-week* *dst-p* *tz*)
(decode-universal-time
(-
(encode-universal-time 0 0 0 1 m y)
86400))
*day*))
Último dia do mês em Fortran-90:
Comment: Guilherme Gualberto
program Hora_e_data
interger ,parameter:: n = 3
interger :: data(n),horaSys(n)
call idate(data)
! data(1)=dia, data(2)=mes data(3)=ano
call itime(horaSys)
! horaSys(1)=hora, horaSys(2)=minute,horaSys(3)=second
write(*,'('Date ', i2.2, '/', i2.2, '/', i4.4, '; time ',i2.2, ':', i2.2, ':', i2.2)')data(2), data(1), data(3), now
endprogram
Último dia do mês em C#:
Comment: Fabio Caldas
int year = 2008;
int month = 09;
int daysInMonth = DateTime.DaysInMonth(year,month);
Grande abraço aos amigos que postaram! Agradeço a todos... Tenho certeza que esses códigos ajudarão a muitas pessoas
Categorias: Linguagens, Tecnologia
Tags: , c, fortran, java, lisp, lua, objective-c, php, pyton, rails, ruby, smalltalk
by Luiz Paulo
| setembro 26, 2008
| 5 Comments »
A internacionalização é um diferencial para qualquer projeto, independente da linguagem que você utilize. É importante que você saiba alguma técnica para essa funcionalidade.
Desenvolver sistemas web com JAVA se torna bem simples se bem feito, mais simples ainda quando utilizamos bibliotecas como o JSTL. Vamos ver como é simples criar um sistema web com internacionalização em JAVA.
Nesse tutorial veremos como trabalhar com internacionalização em sistemas web utilizando JSP e a biblioteca JSTL.
Vamos direto para a prática!
Utilizaremos o Eclipse como API para desenvolvimento JAVA, partindo de um projeto web já criado.
Primeiro passo
Antes de começar a escrever código, você precisa baixar a biblioteca JSTL. Utilizaremos os pacotes standard.jar e jstl.jar.
Copie as duas bibliotecas para o diretório /WebContent/WEB-INF/lib/ ou para o diretório de libs do JAKARTA, para que sejam enxergadas pelo seu projeto.
Segundo passo
Vamos criar os arquivos de tokens.
Devemos definir o pacote para os arquivos. No nosso caso vamos colocar em:
com.lppjunior.blog.controller.messages
Criaremos 2 arquivos de tokens dentro desse pacote:
messages_pt.properties
My_first_test=Meu primeiro teste
Hello_World=<h1>Olá Mundo</h1>
messages_en.properties
My_first_test=My first test
Hello_World=<h1>Hello World</h1>
O arquivo de token é formado por TOKEN_NAME=VALUE sempre!
Não utilize espaço, acento ou qualquer caractere no TOKEN_NAME, e não utilize quebra de linha no VALUE, quando precisar desse tipo de recurso, utilize \n ou a tag br no caso de HTML.
Perceba no exemplo acima que coloquei tags HTML no Hello_World para ilustrar a possibilidade, mas o ideal é utilizarmos as tags no próprio código HTML.
Terceiro passo
Vamos criar um HTML bem simples já com as tags e as chamadas para as tokens.
Veja o exemplo:
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<fmt:setLocale value="pt" />
<fmt:setBundle basename="com.lppjunior.blog.controller.messages.messages" />
<html>
<head>
<title><fmt:message key="Internacionalization_test" /></title>
</head>
<body>
<fmt:message key="My_first_test" />
<fmt:message key="Hello_World" />
<hr />
<fmt:message key="Test_undefined_token" />
</body>
</html>
Definições:
- Primeiro importamos a tagLib "fmt" para utilização do recurso de internacionalização;
- Configuramos a linguagem que desejamos utilizar (nesse caso "pt" Português);
- Configuramos a localização dos arquivos de tokens (repare quem além do pacote, precisamos colocar o início do nome do arquivo "messages" - O JSTL concatena [bundle + "_" + locale] para achar o arquivo);
- Utilizamos a tag "fmt:message" para retornar o conteúdo das tokens.
Resultado final:
<html>
<head>
<title>Meu primeiro teste</title>
</head>
<body>
<h1>Olá Mundo</h1>
<hr />
???Test_undefined_token???
</body>
</html>
Repare que deu um erro na token "???Test_undefined_token??? ". Isso aconteceu, pois a token "Test_undefined_token" não foi definida em nosso arquivo "messages_pt.properties", para resolver o problema basta defini-la.
Baixe aqui o projeto
É importante dizer que essa é uma das formas mais simples de criar a internacionalização. Em um projeto real, você pode isolar e definir as configurações dinamicamente, para que sejam reaproveitadas por todo o projeto.
Existe uma outra forma para configurar o JSTL para internacionalização, utilizando o web.xml, mas não achei necessário citar nesse tutorial.
Categorias: Desenvolvimento web, Java, Linguagens
Tags: , exemplo, internacionalização, java, jstl, tutorial
by Luiz Paulo
| setembro 16, 2008
| 4 Comments »
JSTL é uma biblioteca utilizada para substituir código JAVA nos JSPs. Todo o código JAVA é substituido por TAGs específicas equivalentes a cada funcionalidade.
Uma poderosa solução da JSTL são as TagLibs onde podemos criar nossas próprias tags com funcionalidades personalizadas.
Veja um exemplo de página JSTL:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<jsp:useBean id="agora" class="java.util.Date" />
<html>
<body bgcolor="#FFFFFF">
<p><strong>Versão Curta: </strong><fmt:formatDate value="${agora}" /></p>
<p><strong>Versão Longa: </strong><fmt:formatDate value="${agora}" dateStyle="full" /></p>
</body>
</html>
O resultado desse código seria:
Versão Curta: 15/09/2008
Versão Longa: Segunda-feira, 15 de Setembro de 2008
A propriedade prefix define o prefixo "ftm" que interpretará a biblioteca de formatação e interação do JSTL.
Bibliotecas padrão
O JSTL fornece algumas bibliotecas padrão com foco bem específico, veja as bibliotecas:
Download
Para utilizar o JSTL você precisa fazer o download dao biblioteca.
Clique aqui para baixar
Categorias: Desenvolvimento web, Java
Tags: , internacionalização, java, jstl, taglib, web
by Luiz Paulo
| setembro 14, 2008
| 4 Comments »
Desde que resolvi me dedicar à programação sempre me identifiquei com desenvolvimento web. Web sempre foi o meu principal foco!
Passei por várias fases no desenvolvimento web. Já desenvolvi projetos em HTML puro, utilizei muito gif animado, frame, tabela. Trabalhei com dreamweaver, fireworks até no FrontPage (argh!).
Na época minha vida mudou completamente quando comecei a utilizar PHP / MySql, era tudo lindo e maravilhoso as coisas se tornaram mais simples com reaproveitamento e criação de componentes dinâmicos. Mesmo satisfeito com os resultados percebia que faltava alguma coisa, o PHP (até então PHP4) apesar de simples e fácil era muito feio. Mesmo com todo cuidado na escrita dos códigos, sempre ficava alguma gambiarra.
Até que pintou uma oportunidade de conhecer outro mundo... Desenvolvimento web com JAVA. O JAVA é bem mais complexo mais burocrático e os projetos ficam consideravelmente maiores. Todos conhecem a fama do JAVA e muitos pontos negativos, mas tem muitos pontos positivos também. Um projeto bem feito em JAVA é lindo! Adicionar recursos ou fazer manutenção no código se torna bem mais simples.
O mais interessante do JAVA não é a linguagem em si, mas o conceito envolvido. A modularização de componentes, utilização de partners (mvc, command, dao, factory, etc), a documentação. Enfim, cada vez mais cuidado para fazer códigos limpos.
Para desenvolver em JAVA é essencial a utilização de uma IDE (atualmente utilizo o Eclipse), sem ela posso dizer que seria quase impossível. Além de tudo ser interligado no projeto, o JAVA é bem grandinho, seria complicado escrever um projeto ou dar manutenção em códigos em um editor de textos padrão.
Estou nessa vida há um tempo e não me arrependo.
Como dizia um amigo “JAVA é o que há!” rsrsrs
Categorias: Desenvolvimento web, Java, Linguagens
Tags: , desenvolvimento, java, web