segunda-feira, 15 de julho de 2013

Software is Hard


Retirei o trecho abaixo do blog de um dos desenvolvedores do Firebug (Jan Odvarko):
http://www.softwareishard.com/blog/about/

"I often feel like an artist when making a software. There are always so many ways how to do it and I need to have good imagination when building the virtual world of classes, objects, methods and all the other things, which are available in particular computer language."

quinta-feira, 11 de julho de 2013

So You Don't Want to be a Programmer After All

O trecho abaixo é do artigo:
http://www.codinghorror.com/blog/2013/04/so-you-dont-want-to-be-a-programmer-after-all.html


I finished a computer science degree last year, worked about a year in the Java EE stack. I liked requirements engineering and more 'management stuff' in university, but let's face it: you tend to be driven to be a programmer. I enjoy programming itself. I'm not doing it that badly, I even do it better than some people. But it's too frustrating. Stupidly complex stuff (that people consider "standard" even if it's extremely complicated!), fighting against the computer, dumb errors, configuration, and stuff that people even worse than me implemented and I have to take care of. New stuff which is supposed to be incredibly easy, and it's just one more framework.
I think I realized I don't want to program because I landed at a company where people are quite good. And I honestly think I won't achieve that level, ever. And I don't enjoy programming as a hobby.
I'm sure that I'm good enough to be able to make a living continuing as I am … but I don't want to.

segunda-feira, 11 de março de 2013

Brincando com a densidade demográfica dos municípios

Semana passada vi o seguinte gráfico no facebook da The Economist: econ.st/VZLrLO

Tentei fazer algo parecido com os municípios brasileiros e o resultado foi:
Ou acesse:
http://aplicacoes.mds.gov.br/sagirmps/kadu/dd/le_densidades.php

Ainda tenho que explicar como fiz isso.

terça-feira, 19 de fevereiro de 2013

Linus Torvalds

Muito tempo atrás tinha visto um post no blog do Linus Torvalds onde ele falava sobre como ele consegue ler tanto.
O post é este: http://torvalds-family.blogspot.com.br/2009/05/yet-more-reading.html

quinta-feira, 7 de fevereiro de 2013

Usando o ajaxStufff


Este post está diretamente relacionado a este outro: Múltiplas requisições AJAX
A forma como uso o arquivo que chamo naquele post de ajaxStufff.js foi melhorada e agora uso assim:


action = "action";
pqs = "municipio=" + valor;
xhr = obterXHR();
o = {
    xhr: xhr,
    obterORSC: function(xhr) {
        return (function() {
            if (xhr.readyState == 4 && xhr.status == 200) {
                var j = xhr.responseText;
                alert(j);
            }
        });
    }
}
x = assoc(o, pqs, action);
x();

quarta-feira, 6 de fevereiro de 2013

DIV que ocupa espaço remanescente da página

Queria uma página com um mapa que ocupasse a tela inteira, mas sem scroll. Isso não é difícil de fazer. Basta ter algo parecido com isto:

<body onload='i()'><div id="map" style='border:1px solid #ccc; height: 100%; hidden'></div></body>

O chato é quando quero ter um cabeçalho e aí sim a DIV ocupando o resto da página. Nesse caso o height não pode mais ser 100% pra não ter scroll.
O que fiz:

<style type='text/css'>
.row { overflow: hidden; position: absolute; border:2px solid #CCCCCC; }
.row { left: 0; right: 0; }
.scroll-x { overflow-x: auto; }
.scroll-y { overflow-y: auto; }
.header.row { height: 75px; top: 0; }
.body.row { top: 60px; bottom: 0px; }
</style>
<body onload='i()'><div id="form" class="row header"><input type='text' name='local' value=''><input type='button' value='Buscar'></div><div id="map" class="row body"></div></body>

Aprendi isso nesta página:

http://blog.stevensanderson.com/2011/10/05/full-height-app-layouts-a-css-trick-to-make-it-easier/

quarta-feira, 30 de janeiro de 2013

Quantos municípios existem no Brasil?

Hoje temos 5.570. A melhor maneira de descobrir isso é indo no IBGE (http://www.ibge.gov.br), clico no link "Geociências", "Cartografia", "Divisão Territorial Brasileira" e depois "Divisão Territorial".
Ou clicando logo aqui: ftp://geoftp.ibge.gov.br/organizacao_territorial/divisao_territorial e depois clico no ano correspondente. Em 2012 haviam 5.565.

segunda-feira, 28 de janeiro de 2013

Lidando com "TopologyException: side location conflict"

O erro "TopologyException: side location conflict" ocorria comigo quando usava a função st_intersection do PostGIS e uma das geometrias tinha intersecção com ela mesma (um segmento da geometria cruzava um outro segmento dessa mesma geometria (uma geometria em forma de "8" seria um exemplo).

Pra descobrir se o erro que estou tendo é esse mesmo uso a função st_isvalidreason(geometry), que deve retornar "Self-intersection[lon lat]".

Daí acessei o endereço http://www.sogis1.so.ch/sogis/dl/postgis/cleanGeometry.sql, copiei o código gerado e executei no banco onde estavam as geometrias com problemas.

Agora, em vez de executar st_intersection(the_geom1, the_geom2), executo st_intersection(cleanGeometry(the_geom1), the_geom2), e o erro não ocorre mais.

É uma solução muito rápida e funcional! Peguei essa dica em http://linfiniti.com/2010/07/cleaning-geometries-inside-postgis/

Thanks a lot to Tim Sutton and his friend Horst Duester!

quinta-feira, 24 de janeiro de 2013

Em qual zona UTM está um determinado ponto?

Se a coordenada desse ponto está na projeção WGS84, mais conhecido como lat long, a fórmula é bem simples:
select trunc((long + 186) / 6)

Ou use esta página: http://whatutmzoneamiin.blogspot.com.br/