No Java normalmente esse conteúdo, quando empacotado fica dentro de arquivo WAR interno a um arquivo EAR. Para extrair esse conteúdo estático e disponibilizá-lo no apache, criei um pequeno script que automatiza essa tarefa:
[sourcecode language=”bash”]unzip <NOMEDOPACOTE>.ear -d tmp/ > /dev/null && unzip tmp/*.war `unzip -l tmp/*.war | grep ‘.js$\|.jpg$\|.jpeg$\|.png$\|.gif$\|.htm$\|.html$\|.css$’ | awk ‘{print $4}’` -d static && rm -rf tmp[/sourcecode]
Se você utiliza somente o WAR sem o EAR, basta utilizar o seguinte script:
[sourcecode language=”bash”]unzip <NOMEDOPACOTE>.war `unzip -l tmp/*.war | grep ‘.js$\|.jpg$\|.jpeg$\|.png$\|.gif$\|.htm$\|.html$\|.css$’ | awk ‘{print $4}’` -d static[/sourcecode]
Esse script irá criar uma pasta static com todo o conteúdo a ser mapeado no Apache. Com isso, o seu servidor de aplicações ficará mais leve, com menos requisições e o trabalho de disponibilizar os conteúdos estáticos fica a cargo do Apache, que realiza essa atividade com muita eficiência.
]]>
O TDC 2014 – São Paulo será realizado de 5 a 9 de agosto e terá 36 trilhas (TV Digital, Android, Startups, Java, Arquitetura, etc) no Anhembi Morumbi e, como novidade, vários workshops na sede da Globalcode, inclusive de Raspberry PI e IoT com o Vinicius Senger.
A trilha de TV digital está bem bacana e está sendo coordenada por um grande amigo meu, o Carlos do Java Noroeste e por mim. Vamos ter palestras com aplicativos da Record, TQTVD, TV Aparecida, especialistas renomados na área de TV digital no Brasil e pela comunidade de desenvolvedores.
Para participar é só fazer a inscrição no site. Simultaneamente, vai ter um outro evento legal que é o TDC4Kids para crianças programarem com Scratch, Minecraft e IoT. Para ter uma ideia do porte do evento, essa é a lista de alguns patrocinadores: Amazon, Oracle, Stackoverflow, SAP, PayPal, Google, StackOverflow, JetBrains e Liferay.
A gente se fala lá!
]]>Como solução foi verificar se a URL é carregada no browser ou não. Com isso em mente, carreguei a URL em um elemento do tipo script e alterei o atributo src para a url a ser verificada. Caso seja carregado com sucesso executo uma função de erro, caso contrário executo uma função de sucesso.
[sourcecode language=”javascript”]
function checkOnline(url, error, ok) {
try {
var scriptElem = document.createElement(‘script’);
scriptElem.type = ‘text/javascript’;
scriptElem.onerror = function(){error();};
scriptElem.onload = function(){ok();};
scriptElem.src = url;
document.getElementsByTagName("body")[0].appendChild(scriptElem);
} catch(err) {
error(err);
}
};
[/sourcecode]
Para verificar se uma URL está online é só passá-la como parâmetro para o método.
[sourcecode language=”javascript”]checkOnline(‘http://www.thiagovespa.com.br’, function() {alert(‘Fora do ar!’)}, function(){alert(‘Online’)});[/sourcecode]
Ainda não testei no IE, mas creio que não deva ter nenhum problema. Se alguém puder testar pra mim, ficarei grato :).
Esse tipo de solução não é facilmente feita com ajax, devido às restrições de segurança contidas no browser.
Entretanto essa abordagem pode ocasionar erros de javascript ao carregar uma página dentro da tag script. Para evitar esse tipo de problema, você pode utilizar uma imagem para verificar se o site está online. Dei uma incrementada no código encontrado no stackoverflow.
[sourcecode language=”javascript”]
function checkImgOnline(imageUrl, error, ok){
var img = new Image();
img.src = imageUrl;
if(img.height>0){
ok();
} else {
error();
}
}
[/sourcecode]
Aí é só utilizar uma imagem como parâmetro.
[sourcecode language=”javascript”]checkImgOnline(‘http://www.thiagovespa.com.br/blog/wp-content/themes/thiagovespa-blog-theme/images/wasp2-mini.png’, function() {alert(‘Fora do ar!’)}, function(){alert(‘Online’)});
[/sourcecode]
Com isso, o possível problema com javascript é evitado, mas você depende de uma imagem para fazer a requisição.
]]>Para encurtar URL com JQuery e Javascript basta chamar o serviço deles passando os parâmetros necessários. Segue o exemplo:
[sourcecode language=”javascript”]
$.getJSON( "http://is.gd/create.php?callback=?", {
url: "http://www.thiagovespa.com.br",
format: "json"
}).done(function( data ) {
alert(data.shorturl);
});
[/sourcecode]
Esse código irá encurtar a url “http://www.thiagovespa.com.br” e irá exibir em um alert a URL encurtada (data.shorturl). Para maiores informações, consulte a API do is.gd.
]]>Eu estarei por lá, principalmente no dia 11, onde teremos uma trilha de TV Digital. Compareça!
]]>
Como qualquer livro da série Head First, sua abordagem é excelente. O livro é de fácil compreensão e não requer nenhum conhecimento avançado para lê-lo. O conteúdo aborda os conceitos básicos de HTML e CSS.
A desvantagem é que não há muitas novidades. O material melhor e mais avançado é encontrado em outros livros da série Head First. O livro não cobre javascript, nem canvas. Não há informações sobre seletores avançados de CSS, instruções específicas de CSS, transformações e transições com CSS, XHTML 5, áudio e assim por diante.
Eu recomendo este livro para quem está começando com HTML e CSS. Definitivamente não é um livro de referência para aqueles que já trabalham na área de HTML e CSS.
]]>Nesse post vamos instalar um plugin para habilitar o Zen Coding no Sublime. O Zen Coding é um jeito diferente para escrever códigos HTML. Em resumo, significa que você escreve mais com menos :). Exemplo: você digita isso: “div#page>div.logo+ul#navigation>li*5>a” e consegue isso:
]]>Dessa forma o autocompletar fica desabilitado e o browser não salva a senha do usuário.
Exemplo:
[sourcecode language=”html”]
<input type="text" name="campo" autocomplete="off" />
[/sourcecode]
Como esse atributo não é válido pela W3C o pessoal costuma inserir o autocomplete=”off” via javascript:
[sourcecode language=”javascript”]
// Utilizando JQuery
jQuery(‘campo’).attr(‘autocomplete’,’off’);
// Ou Javascript padrão
campo.setAttribute(‘autocomplete’,’off’);
[/sourcecode]
Pode-se utilizar a solução do javascript para adicionar esse atributo em campos do ADF e/ou elementos onde não temos acesso direto ao código HTML gerado.
Mais informações sobre a vulnerabilidade em:
]]>
Esse livro aborda o uso do elemento <canvas> do Html 5. Como o próprio livro diz, o canvas é um elemento revolucionário que permite o uso de uma maneira poderosa de elementos gráficos em aplicações Web. O autor explica como desenhar linhas, polígonos, curvas, aplicar cores, gradientes, transparência, utilizar transformações gráficas, manipular texto, utilizar sombras e manipular imagens utilizando JavaScript.
O leitor necessita de um conhecimento médio de HTML e JavaScript. O primeiro capítulo é um tutorial sobre vários aspectos do <canvas> e o segundo serve de referência dos recursos do <canvas> e dá nome ao livro. Uma coisa que achei bacana, é que apesar de ser um “Pocket Reference”, ele acompanha exemplos de código, que podem ser obtidos a partir desse link: http://examples.oreilly.com/0636920016045/.
Os exemplos são simples e ajudam quem está começando a brincar com <canvas>. Recomendo esse livro pra quem irá ou já trabalha com <canvas>. Um guia de referência é fundamental para quem trabalha com essa tecnologia.
]]>
Vai ter um super evento nessa próxima semana em São Paulo: The Developers Conference!
O evento é um dos maiores do Brasil e é composto por várias trilhas atendendo todos os gostos do mundo de desenvolvimento. Esse ano ele está maior e melhor e será realizado durante o lançamento do Java 7 e contará com a presença de nomes importantes do mundo de desenvolvedores e T.I. em geral.
]]>