8 de setembro de 2014

Refrescando a memória

Vamos lá, com tanta notícia fake e sem fontes na internet, seguem alguns dados pra ajudar a refrescar a memória:

Evolução taxa de desemprego no Brasil

Evolução do PIB no Brasil

Evolução da renda per capita no Brasil

Evolução do IPC

8 de julho de 2014

Perdemos

Prólogo de mais um alienado que não sabe votar

Enfim, mais uma Copa se passou. Mais um título desejado e não conquistado. Mais uma derrota.

E desta vez humilhante.

A geração dos meus avós nunca viu algo parecido. Nem de meus pais. Nem a minha. Pelo contrário, vi o Brasil levantar a taça duas vezes (1994 e 2002). Cresci com o status de País do Futebol.

E hoje, estas três gerações, unidas com a mais nova geração que ainda não viu o Brasil levantar uma taça...quatro gerações que se encontram e vêem a seleção Brasileira ser expulsa da Copa de forma humilhante, no próprio País.

Perderam. Perdemos. Mais uma vez.

Perdemos o status da artilharia em Copas. Perdemos a semi-final. Perdemos a partida. Perdemos a noção. Perdemos tudo isso hoje, aos 8 de julho de 2014.

Mas ganhamos. Ganhamos a maior goleada da Copa. Da história das semi-finais em Copas. Ganhamos bola na nossa rede. E ganhamos vergonha na cara.

Vergonha essa que mostra que há tempos deixamos de ser o país do futebol.

50 anos de história, craques da bola, esquadrão de ouro, 70 foi 10, Romário, Ronaldo, quadrado mágico...deixamos de ser o país de futebol quando terminou o quadrado mágico.

Ronaldo, Ronaldinho, Kaká e Adriano foram o marco final de uma seleção de glórias com status de país do futebol, onde após isso passamos a ser apenas mais um. Tudo na vida é um ciclo. Talvez daqui 100 anos quem for olhar pra isso verá que durante mais ou menos 50 anos Brasil foi o país do futebol. E que depois vieram outros, e por aí vai...

Futebol não é mais individualismo. Futebol não é mais samba. Futebol evoluiu para estratégia, assim como as guerras evoluíram.

E hoje, Alemanha mostrou que com estratégia e um time que joga bem montado e entrosado é possível sim desmontar a estratégica adversária. Quebrar paradigmas. Quebrar tabus. E fazer gols.

Conclusão de outro alienado que não sabe votar

Mais do que perder a Copa, perdemos a capacidade de evoluir há muito tempo. Há muitos anos vejo uma briga sem sentido partidária, criada por duas classes sociais poderosíssimas no Brasil, que manipulam as massas, fazendo cada uma acreditar em suas próprias razões.

Razões loucas.

De um lado, um louco que defende algo utópico: que o mercado se auto-regula e que não existe caos. Do outro lado, outro insano que defende que o governo deve intervir e centralizar tudo, achando que o homem não é levado pra corrupção. 

São induzidos a xingar e rotular a parte contrária. Mas ambos são loucos.

Duas classes emergidas do caos. A criação de um pensamento de "direita" e outro pensamento de "esquerda" que não faz nenhum sentido, esquecendo-se dos requisitos primários para evolução e convívio em sociedade.

Enquanto um é raivoso, sofre do complexo de vira-latas e não quer que ninguém mexa no seu chocolatinho quente, o outro é tolo e acha que a solução de todos os problemas sociais está num governo populista, esquecendo-se que o sistema eleitoral em que ele está inserido é falho e antigo. E gente passando fome...

Enquanto um se maravilha com qualquer coisa podre fora no Brasil e usa aquilo como argumento para ferir a própria nação, o outro se afoga no orgulho vão. E gente passando fome...

Enquanto um é contra tudo, só reclama mas não faz o mínimo pra mudar, o outro acha que está tudo bem. E gente passando fome...

Enquanto um acha que sabe votar e é douto, o outro acha a mesma coisa. Ambos não sabem nada. E gente passando fome...

Enfim, não vou estender muito este texto pois acho que perdemos faz tempo. Não consigo fazer essas duas classes diferentes enxergarem que ambas são manipuladas, pois não sei manipular.

Perdemos.

13 de setembro de 2012

Git rebase é o cara


Esses dias precisei fazer uma tarefa que ao meu ver não é trivial (pois não domino o Git). O estado da minha branch master era tipo esse:

- Commit 17
- Commit 16
- Commit 15
- Commit 14
.
.
.
.
- Commit 2
- Commit 1

Normal. Então eu precisava gerar uma tag stable e mandar pra produção, mas na master alguns commits (3, 6 e 14) não podiam entrar em produção em hipótese alguma.

Minha primeira solução seria fazer cherry pick do que poderia entrar no stable a partir da master.
Mas fazer cherry pick do 2 ao 17, só por causa de 3 commits, cansa.

Aí encontrei uma alternativa no rebase. Dado que tenho uma branch temporária igualzinha a master, faço o rebase no modo interativo, e APAGO as linhas/commits que não podem entrar no rebase.

git rebase -i [commit 2]~1


Irá abrir um arquivo editável:


Apagar, por exemplo, as linhas 3, 6 e 14, e salvar o arquivo (Deletar uma linha irá apagar o commit pra sempre):


Daí é só bater e tag stable e ser feliz :-)

21 de julho de 2012

Migrar SQLite para MySQL

Se você tem um"legado" no sqlite e pretende migrar para o MySQL, seguem alguns passos muito simples:

 1) Instale o Addon Sqlite-Manager no Firefox

 2) Após instalado, abra o SQLite Manager no Firefox
(eu instalei usando o idioma inglês, então vou passar as opções de acordo com o idioma que estou usando)

 3) Na opção "Connect Database" selecione o caminho do arquivo *.sqlite
 (se for o .sqlite3, dá pra renomear ou selecionar busca por qualquer extensão)

 4) Menu "Database" → "Export Database". Vai ser gerado o .sql, (quase) pronto para ser importado em outro tipo de base

 5) Edite o arquivo .sql fazendo replace das seguintes ocorrências:
5.1) AUTOINCREMENT → AUTO_INCREMENT
5.2) " → `
5.3) Caso houver algum comando com a ocorrência "sqlite_sequence" ou algo do gênero, pode tirar do arquivo

 6) Depois, só jogar pro MySQL:
mysql -h [host] -u [user] -p [password] database < [aquivo_exportado_e_editado].sql

Inspiração

1 de agosto de 2011

Gerar JSON a partir de objeto Ruby

Que eu saiba não existe algo pronto no Ruby que, a partir de um objeto, gere um Json com todas as propriedades dele.

Encontrei na web um exemplo que mostra como criar um módulo que gera o Json de todas as propriedades de algum objeto.

Porém este exemplo assume apenas que as propriedades sejam simples. Quando a propriedade for um Array (que não inclui o módulo em sua origem), ele chega vazio no Json.

Fiz duas adaptações no exemplo:
1) Gerar Json de elementos simples de um Array
2) Gerar Json dos elementos (do Array) que têm o módulo incluído



Então, o código abaixo deve funcionar :)

p = Person.new
p.name = "Leandro"
p.age = 24

n1 = Note.new("first note")
a1 = Address.new("cool!")
n1.addresses = []
n1.addresses << a1

n2 = Note.new("last note")

p.notes = []
p.notes << n1
p.notes << n2

p.simple_notes = []
p.simple_notes << "abc"
p.simple_notes << "123"
  
p.to_json
Tente imprimir "p.to_json" e verás todas as propriedades em cascata bonitinhas dentro do Json!