Pessoal.. hoje tive o erro:
[8/27/13 15:17:23:188 BRT] 00000043 CustomExcepti E Error loading theme, cannot find "theme.css" resource of "primefaces-bootstrap" library
javax.faces.FacesException: Error loading theme, cannot find "theme.css" resource of "primefaces-bootstrap" library
at org.primefaces.renderkit.HeadRenderer.encodeTheme(HeadRenderer.java:130)
at org.primefaces.renderkit.HeadRenderer.encodeBegin(HeadRenderer.java:92)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:579)
at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:519)
at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:533)
at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1581)
at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:264)
at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:116)
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1224)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:774)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:456)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:928)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1025)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:895)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1659)
[8/27/13 15:17:23:188 BRT] 00000043 SystemOut O
DEBUG ERROR
[8/27/13 15:17:23:188 BRT] 00000043 SystemOut O
O erro foi pois eu tinha isso no meu web.xml:
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>bootstrap</param-value>
</context-param>
porém eu não tinha a dependência no meu pom.xml para o primefaces-bootstrap.. por isso acontecia o erro..
Abraços!
Adriano Schmidt
terça-feira, 27 de agosto de 2013
sexta-feira, 2 de agosto de 2013
Buscar cidade pelo IP
Oi pessoal : )
Hoje tive que, pelo IP, descobrir a cidade do usuário.
Estou fazendo este post para repassar minhas descobertas : )
Antes de mais nada, caso você queira saber o seu IP é só acessar: http://www.whatismyip.com/
Resumindo (e correndo o risco de que você não termine de ler este post) o jeito mais simples é esse:
http://freegeoip.net/json/170.130.90.30
Esse serviço Rest é free e retorna em JSON a cidade e outras informações pelo IP. Você pode acessá-lo diretamente pelo browser ou via programação fazendo uma chamada Rest.
Essa busca é feita com base em um banco de dados gigante que é atualizado diariamente. Ele não é 100% preciso mas ajuda bastante!
Existe a possibilidade de que o retorno seja XML, CSV.
Mais detalhes e limitações em: http://freegeoip.net/
O freegeoip utiliza um banco de dados free da MaxMind
Você pode utilizar diretamente o serviço rest da MaxMinds, ela tem 2 modelos de serviço:
Free: Tem um número limitado de consultas e você tem que botar um link para o site da MaxMind no seu site
Pago: Mais precisão e garantia que o serviço estará no ar.. são 20 dólares para 50.000 consultas, tem outros planos também.
Mais detalhes e limitações em: http://www.maxmind.com/pt/geolocation_landing
Outra possibilidade é usar a API de GeoLocation do HTML5:
http://www.w3schools.com/html/html5_geolocation.asp
Aí você consegue pegar latitude e longitude aproximada da pessoa, e com isso pode buscar a cidade.
Existe uma diferença, talvez desvantagem, em fazer dessa forma é que o usuário terá que autorizar o sistema a utilizar sua localização. Aparecerá uma janela com a mensagem "Deseja compartilhar sua localização com este site?"
Enfim, a busca pela cidade por lat e lng pode ser feita de duas formas:
Serviço Google:
Procure por Geocodificação reversa (busca de endereços) em: https://developers.google.com/maps/documentation/geocoding/?hl=pt-br
Observação: a Google Geocoding API só pode ser usada junto com um mapa do Google; é proibido usar os resultados da geocodificação sem exibi-los em um mapa
Banco de dados próprio
É possível buscar em um banco de dados ou arquivo de cidades com suas respectivas latitudes e longitudes.. aí é só você fazer um algoritmo simples de aproximação.
Esse site tem uma lista das maiores cidades do Brasil com lat e lng: http://www.mapsofworld.com/lat_long/brazil-lat-long.html
Você também pode pegar essa lista direto do IBGE, procure no google por Cidades_do_Brasil_2008.rar que você via achar.
https://pt.vpnmentor.com/ferramentas/ipinfo/
Abraaço!!!
Adriano Schmidt
PS: Agradeço ao Rafael dos Santos que fez esta pesquisa comigo!
Hoje tive que, pelo IP, descobrir a cidade do usuário.
Estou fazendo este post para repassar minhas descobertas : )
Antes de mais nada, caso você queira saber o seu IP é só acessar: http://www.whatismyip.com/
FreeGeoIP
Resumindo (e correndo o risco de que você não termine de ler este post) o jeito mais simples é esse:
http://freegeoip.net/json/170.130.90.30
Esse serviço Rest é free e retorna em JSON a cidade e outras informações pelo IP. Você pode acessá-lo diretamente pelo browser ou via programação fazendo uma chamada Rest.
Essa busca é feita com base em um banco de dados gigante que é atualizado diariamente. Ele não é 100% preciso mas ajuda bastante!
Existe a possibilidade de que o retorno seja XML, CSV.
Mais detalhes e limitações em: http://freegeoip.net/
O freegeoip utiliza um banco de dados free da MaxMind
MaxMind
Você pode utilizar diretamente o serviço rest da MaxMinds, ela tem 2 modelos de serviço:
Free: Tem um número limitado de consultas e você tem que botar um link para o site da MaxMind no seu site
Pago: Mais precisão e garantia que o serviço estará no ar.. são 20 dólares para 50.000 consultas, tem outros planos também.
Mais detalhes e limitações em: http://www.maxmind.com/pt/geolocation_landing
API de GeoLocation do HTML5
Outra possibilidade é usar a API de GeoLocation do HTML5:
http://www.w3schools.com/html/html5_geolocation.asp
Aí você consegue pegar latitude e longitude aproximada da pessoa, e com isso pode buscar a cidade.
Existe uma diferença, talvez desvantagem, em fazer dessa forma é que o usuário terá que autorizar o sistema a utilizar sua localização. Aparecerá uma janela com a mensagem "Deseja compartilhar sua localização com este site?"
Enfim, a busca pela cidade por lat e lng pode ser feita de duas formas:
Serviço Google:
Procure por Geocodificação reversa (busca de endereços) em: https://developers.google.com/maps/documentation/geocoding/?hl=pt-br
Observação: a Google Geocoding API só pode ser usada junto com um mapa do Google; é proibido usar os resultados da geocodificação sem exibi-los em um mapa
Banco de dados próprio
É possível buscar em um banco de dados ou arquivo de cidades com suas respectivas latitudes e longitudes.. aí é só você fazer um algoritmo simples de aproximação.
Esse site tem uma lista das maiores cidades do Brasil com lat e lng: http://www.mapsofworld.com/lat_long/brazil-lat-long.html
Você também pode pegar essa lista direto do IBGE, procure no google por Cidades_do_Brasil_2008.rar que você via achar.
Direto pelo browser
Sem API, mas forma rápida e free:https://pt.vpnmentor.com/ferramentas/ipinfo/
Abraaço!!!
Adriano Schmidt
PS: Agradeço ao Rafael dos Santos que fez esta pesquisa comigo!
Assinar:
Postagens (Atom)