Lendo sobre as novidades do Mac OS Lion, um dos recursos que a Apple vende como fantástico é o recurso de auto-salvar e versionar os documentos "automagicamente". Ela promete que seus documentos serão salvos e versionados automaticamente, entretanto quando você detalha essas funcionalidades, percerá que as Apps precisam implementar esse suporte, e não é um recurso automático do sistema operacional, conforme eu tinha entendido em um primeiro momento. Se você utilizar o Microsoft Word 2011 (até hoje, 19/01/2012), por exemplo, ele não implementa o recurso de auto-save, então não esqueça de utilizar o Command+s para salvar seus documentos. O recurso de versionamento, só é possível utilizar se você possui time machine configurado. Se você utiliza outra ferramenta de backup, o versionamento de documentos não estará disponível para você.
Para os mais atentos, perceberão que ela descreve melhor o recurso de auto-save neste link, quando fala "os apps desenvolvidos com o recurso auto-salvar".
Já o versionamento, não fica tão claro a necessidade do time machine, porém este é um pré-requisito, tanto que a configuração do recurso de tempo de bloqueio de edição do documento é feito em configurações-> time machine.
Devemos parabenizar a Apple pelo SO fantástico, mas também observar que é necessário ficar atento as entrelinhas para entender os recursos do sistema.
Blog que utilizarei para registrar algumas coisas que aprendi ou achei interessante.
quinta-feira, 19 de janeiro de 2012
Recursos salvamento automático Mac OS
Marcadores:
Mac OS
Como traduzir o dicionário do Word 2011 no Mac
Recentemente verifiquei que o Word 2011 que instalei no Mac OS vem com opção default de idioma inglês. Então quando você escreve textos em português, ele considera a escrita errada. Para modificar isto, basta clicar em tools-> language na barra de menus e escolher o português como idioma. Recomendo que coloque essa opção como default se seus textos são sempre escritos em português.
fonte: http://mac2.microsoft.com/help/office/14/en-us/word/item/987fc20a-b6bd-49db-8ba1-6a263a924b41
fonte: http://mac2.microsoft.com/help/office/14/en-us/word/item/987fc20a-b6bd-49db-8ba1-6a263a924b41
Marcadores:
Mac OS,
Office 2011
terça-feira, 27 de dezembro de 2011
URL encoding + erro 406 Http
Quando tentamos conectar através de uma URL passando parâmetros é importante que não existam espaços em branco nestes parâmetros.
Para resolver essa situação, o atributo em questão deve ser tratado da seguinte forma:
texto = texto.replaceAll(" ","%20");
Mais explicações sobre caracteres de escape que devem ser utilizados na passagem de parâmetros pode ser encontrado aqui e principalmente neste excelente link.
Quando tentei utilizar a chamada sem o encoding devido tive como retorno o erro http 406 ("Not Acceptable")
Para resolver essa situação, o atributo em questão deve ser tratado da seguinte forma:
texto = texto.replaceAll(" ","%20");
Mais explicações sobre caracteres de escape que devem ser utilizados na passagem de parâmetros pode ser encontrado aqui e principalmente neste excelente link.
Quando tentei utilizar a chamada sem o encoding devido tive como retorno o erro http 406 ("Not Acceptable")
Mais explicações sobre retornos HTTP podem ser encontrados aqui.
Marcadores:
Java
Conectar URL através de um proxy em Java
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Properties;
public class Main{
public static void main(String s[]) throws Exception{
try {
Properties systemSettings = System.getProperties();
systemSettings.put("proxySet", "true");
systemSettings.put("http.proxyHost", "proxy.mycompany.local");
systemSettings.put("http.proxyPort", "80");
URL u = new URL("http://www.java.com");
HttpURLConnection con = (HttpURLConnection) u.openConnection();
sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
String encodedUserPwd = encoder.encode("domain\\username:password".getBytes());
con.setRequestProperty("Proxy-Authorization", "Basic " + encodedUserPwd);
con.setRequestMethod("HEAD");
System.out.println(con.getResponseCode() + " : " + con.getResponseMessage());
System.out.println(con.getResponseCode() == HttpURLConnection.HTTP_OK);
} catch (Exception e) {
e.printStackTrace();
System.out.println(false);
}
}
}
A fonte desta solução é o excelente site java2s.com : Código
import java.net.URL;
import java.util.Properties;
public class Main{
public static void main(String s[]) throws Exception{
try {
Properties systemSettings = System.getProperties();
systemSettings.put("proxySet", "true");
systemSettings.put("http.proxyHost", "proxy.mycompany.local");
systemSettings.put("http.proxyPort", "80");
URL u = new URL("http://www.java.com");
HttpURLConnection con = (HttpURLConnection) u.openConnection();
sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
String encodedUserPwd = encoder.encode("domain\\username:password".getBytes());
con.setRequestProperty("Proxy-Authorization", "Basic " + encodedUserPwd);
con.setRequestMethod("HEAD");
System.out.println(con.getResponseCode() + " : " + con.getResponseMessage());
System.out.println(con.getResponseCode() == HttpURLConnection.HTTP_OK);
} catch (Exception e) {
e.printStackTrace();
System.out.println(false);
}
}
}
A fonte desta solução é o excelente site java2s.com : Código
Marcadores:
Java
Download Excel (Csv) utilizando Ajax e Json
Em um dos projetos que trabalho precisei realizar o download de arquivo excel via Ajax, quando me deparei com um problema. O Ajax não trabalha com retorno binário. Ele trabalha apenas com retorno texto ou XML.
Para resolver essa situação, escrevi um código utilizando JSON + Ajax + Dwr que resolveu meu problema.
Segue trecho de código:
//função javascript
function exportarGridReclamacoesExcel() {
exibirCarregando(true);
var REQUEST;
if (window.XMLHttpRequest) {
REQUEST = new XMLHttpRequest();
} else if (window.ActiveXObject) {
REQUEST = new ActiveXObject("Microsoft. XMLHTTP");
}
REQUEST.open('POST', '/sistema/modulo/ ExportacaoGridExcel? tipoExportacao=reclamacoes& dadosRelatorio',false);
REQUEST.setRequestHeader(' Content-Type', 'application/x-www-form- urlencoded; charset=UTF-8');
var objetoJson = JSON.stringify( markersAgrupados);
REQUEST.send(objetoJson);
if(REQUEST.readyState == 4 && REQUEST.status == 200) {
alert(REQUEST.responseText);
exibirCarregando(false);
}
//código da servlet
protected void processRequest( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// PrintWriter out = response.getWriter();
try{
response.setContentType("text/ csv");
response.setHeader("Content- Disposition","attachment; filename=relatorio_grid.csv");
response.setHeader("pragma"," public");
response.setHeader("pragma"," no-cache");
response.setHeader("Cache- Control","cache");
response.setHeader("Cache- Control","must-revalidate");
String tipoExportacao = request.getParameter(" tipoExportacao");
String conteudoExportacao = (String) request.getAttribute(" dadosRelatorio");
JSONArray listaObjetos = new JSONArray(conteudoExportacao);
Writer fw = new OutputStreamWriter(response. getOutputStream());
fw.write("Data Reclamação;Login;Numero da Reclamação;Número da Linha;Plano;Reclamação; Tecnologia;Tipo Ocorrência;Pesquisa Realizada;Localização Selecionada;Cobertura GSM;Cobertura 3G;BIOR;Latitude;Longitude\n") ;
fw.flush();
fw.close();
}catch (Exception ex) {
ex.printStackTrace();
// fw.println("Erro ao tentar gerar relatório dos grids\n" + ex.getMessage());
}finally {
//fw.close();
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
Referências dos problemas:
http://www.w3.org/TR/ XMLHttpRequest/#the-send- method
http://www.zachhunter.com/ 2011/06/json-to-csv/
http://www.zachhunter.com/ 2010/11/download-json-to-csv- using-javascript/
http://www.ibm.com/ developerworks/web/library/j- ajax2/
http://www.ibm.com/ developerworks/web/library/wa- ajaxintro3/
http://www.json.org/
Para resolver essa situação, escrevi um código utilizando JSON + Ajax + Dwr que resolveu meu problema.
- Criei uma ƒunção javascript que chama uma servlet passando um objeto Json como atributo do request.
- A Servlet convert esse objeto JSON em um arquivo csv e devolve como resposta.
Segue trecho de código:
//função javascript
function exportarGridReclamacoesExcel()
exibirCarregando(true);
var REQUEST;
if (window.XMLHttpRequest) {
REQUEST = new XMLHttpRequest();
} else if (window.ActiveXObject) {
REQUEST = new ActiveXObject("Microsoft.
}
REQUEST.open('POST', '/sistema/modulo/
REQUEST.setRequestHeader('
var objetoJson = JSON.stringify(
REQUEST.send(objetoJson);
if(REQUEST.readyState == 4 && REQUEST.status == 200) {
alert(REQUEST.responseText);
exibirCarregando(false);
}
//código da servlet
protected void processRequest(
// PrintWriter out = response.getWriter();
try{
response.setContentType("text/
response.setHeader("Content-
response.setHeader("pragma","
response.setHeader("pragma","
response.setHeader("Cache-
response.setHeader("Cache-
String tipoExportacao = request.getParameter("
String conteudoExportacao = (String) request.getAttribute("
JSONArray listaObjetos = new JSONArray(conteudoExportacao);
Writer fw = new OutputStreamWriter(response.
fw.write("Data Reclamação;Login;Numero da Reclamação;Número da Linha;Plano;Reclamação;
fw.flush();
fw.close();
}catch (Exception ex) {
ex.printStackTrace();
// fw.println("Erro ao tentar gerar relatório dos grids\n" + ex.getMessage());
}finally {
//fw.close();
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP
POST method.* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
Referências dos problemas:
http://www.w3.org/TR/
http://www.zachhunter.com/
http://www.zachhunter.com/
http://www.ibm.com/
http://www.ibm.com/
http://www.json.org/
Marcadores:
Java
Assinar:
Postagens (Atom)