Skip to content
Permalink
Browse files

BIG merge entre CTV e Blogue do Caloni.

  • Loading branch information...
Caloni committed Jun 6, 2019
1 parent a079812 commit 4907a037a869e1717131373381a3ab173786bd39
Showing 2,297 changed files with 40,067 additions and 1,801 deletions.

This file was deleted.

@@ -0,0 +1,6 @@
---
date: {{ .Date }}
title: "{{ replace .TranslationBaseName "-" " " | title }}"
categories: [ "code" ]
desc: ""
---
@@ -0,0 +1,6 @@
---
date: {{ .Date }}
title: "{{ replace .TranslationBaseName "-" " " | title }}"
categories: [ "food" ]
desc: ""
---
@@ -0,0 +1,9 @@
---
date: {{ .Date }}
title: "{{ replace .TranslationBaseName "-" " " | title }}"
desc: "{{ replace .TranslationBaseName "-" " " | title }}"
imdb: "0000000"
categories: [ "movies" ]
stars: "3/5"
cabine: "cinemaqui"
---
@@ -0,0 +1,6 @@
---
date: {{ .Date }}
title: "{{ replace .TranslationBaseName "-" " " | title }}"
categories: [ "places" ]
desc: ""
---
@@ -3,7 +3,6 @@ date: {{ .Date }}
title: "{{ replace .TranslationBaseName "-" " " | title }}"
desc: "{{ replace .TranslationBaseName "-" " " | title }}"
imdb: "0000000"
categories: [ "movies" ]
categories: [ "blog" ]
stars: "3/5"
cabine: "cinemaqui"
---
@@ -0,0 +1,6 @@
---
date: {{ .Date }}
title: "{{ replace .TranslationBaseName "-" " " | title }}"
categories: [ "reading" ]
desc: ""
---
@@ -1,11 +1,13 @@
baseURL = "http://www.cinetenisverde.com.br/"
baseURL = "http://www.caloni.com.br/"
languageCode = "en-us"
title = "Cine Tênis Verde"
title = "Blogue do Caloni"
theme = "capsule"
disqusShortname = "cinetenisverde"
disqusShortname = "caloni"
ignoreFiles = ["\\.Rmd$", "_files$", "_cache$"]
preserveTaxonomyNames = true
footnotereturnlinkcontents = "?"
PygmentsCodeFences = true
pygmentsCodefencesGuessSyntax = true

[taxonomies]
category = "categories"
@@ -20,7 +22,7 @@ footnotereturnlinkcontents = "?"
weight = 1
[[menu.main]]
name = "twitter"
url = "https://twitter.com/cinetenisverde"
url = "https://twitter.com/caloni"
weight = 2
[[menu.main]]
name = "rss"
@@ -29,7 +31,7 @@ footnotereturnlinkcontents = "?"

[params]
description = "A website built through Hugo and blogdown."
googleAnalytics = "UA-50557403-1"
yandexVerification = "48a8210fc043c5e8"
repo = "https://github.com/Caloni/cinetenisverde"
googleAnalytics = "UA-50557403-2"
yandexVerification = "b7d70255e0560467"
repo = "https://github.com/Caloni/caloni"
share = true
@@ -0,0 +1,16 @@
---
date: "2013-03-28"
title: Décimo Encontro de Programadores de C e C++
categories: [ "code" ]
---
_Ando tendo alguns problemas de postagem no meu blog, por isso o aviso não foi feito com mais antecedência. Peço desculpas aos organizadores do evento, pois sei que todo tipo de divulgação é útil._

Chegamos em mais um evento do grupo C/C++ Brasil, dessa vez honrando a parte "Brasil" do nome. Sim, nosso próximo evento será fora de Sampa, mas ainda próximo, no Rio de Janeiro! Até onde eu sei, o primeiro que se tem notícia. Finalmente o grupo terá a chance de se reunir na terra de programadores C++ de referência internacional como [Pedro Lamarão](https://twitter.com/pedrolamarao).

Os detalhes do evento estão, logicamente, no [saite oficial do grupo](http://www.ccppbrasil.org/wiki/Grupo:Encontro_VIII). Ele ocorrerá no dia 25 de maio (ainda dá tempo de comprar passagem) e terá sua programação divulgada já em abril. Infelizmente o tempo para o call for papers quase se esgotou (vai até dia 30 desse mês).

Enfim, essa é a chance de intercâmbio esperada entre nossa comunidade de programadores C/C++ de outras partes do país e que ainda não tiveram a oportunidade de participar dos nossos tradicionais encontros.

_Correção: esse encontro foi o décimo, diferente do inicialmente proposto. Ou mudamos a base para 8 =P_

_Atualização: o encontro rolou, [pelos comentários](https://groups.google.com/forum/?fromgroups#!topic/ccppbrasil/z_4c4jRH75U) foi bem legal e em breve teremos slides, vídeos, depoimentos e etc._
@@ -0,0 +1,35 @@
---
date: "2015-02-03"
title: CCPPBrasil11 Brasil -- Call for Papers
categories: [ "code" ]
---
Acho que já está na hora de nos reencontrarmos, né?

A comunidade CCPP Brasil está preparando mais um daqueles eventos em que conversaremos sobre nossa maior paixão: <del>B!</del> <del>BCPL!</del> C e C++!

```cpp
#include <ccpp-people.h>
int main()
{
std::cout << "Hello, C/C++ Brasil!\n";
}
```

Então vamos aos detalhes:

| Chave | Valor |
|-----------|------------------|
| Data | 2015-03-28 |
| Local | Micro$oft Brasil |
| Palestras | ![](http://i.imgur.com/1s692J2.jpg) |

Ops, deu um errinho acima. Acho que é porque ainda não temos as palestras.

Quer colaborar? Não deixe de preencher então o nosso [formulário do Call for Papers](http://goo.gl/forms/NB1EcFF8EM)!

Alguma dúvida antes de preencher? Fale conosco na [thread sobre o CFP](https://groups.google.com/forum/#!topic/ccppbrasil/pf63h82yxvI)!

Se conhece alguém que gostaria de participar do evento, palestrante ou não, por favor, espalhe a notícia o mais rápido possível. Quanto mais cedo soubermos quantas pessoas irão, melhor fica organizar melhor nosso reencontro.

As próximas notícias continuarei divulgando aqui e em [fórum C/C++](https://groups.google.com/forum/#!forum/ccppbrasil). Fique atento.
@@ -0,0 +1,14 @@
---
date: "2015-02-19"
title: CCPPBrasil11 Brasil -- Inscrições
categories: [ "code" ]
---
[Agora é pra valer!](http://www.ccppbrasil.org/encontro11/)

![](http://i.imgur.com/2CwAVpB.jpg)

O [Call for Papers](https://docs.google.com/forms/d/1G4Wifn64YknKk-BG1IvTZ1jOEflR4LatcutsilqilyE/viewform?c=0&w=1) já iniciou há duas semanas e deverá ser encerrado no final de Fevereiro, quando publicaremos o cronograma do nosso evento. Até lá a [página oficial do evento](http://www.ccppbrasil.org/encontro11/) deverá ser atualizada com coisas a mais do que os dois _coffee breaks_. Porém, antes que o preço aumente, você já pode garantir o seu lugar e pagar mais barato. Para uma dica do que poderá ser selecionado de palestras compilamos uma lista de palavras-chave.

Porém, fora as palestras, teremos a chance de conversar sobre os mais diversos assuntos que giram em torno de tecnologia, C/C++ e todas as áreas em que essas linguagens são usadas. O pessoal de __embarcados__ costuma marcar uma presença forte por lá, além de algum pessoal de __finanças__, __segurança da informação__, __projetos open-source__, __matemática__, __acadêmicos__ e, acredite se quiser, até programadores de device drivers para o __kernel do Windows__.

_A foto de abertura do post é de uma série muito bem-humorada chamada [Russian Nerds Party](http://www.sharenator.com/Russian_Nerds_Party/)._
@@ -0,0 +1,12 @@
---
date: 2017-07-19T15:15:02-03:00
title: "13 Encontro (Relâmpago) C/C++ Brasil Indaiatuba (SP) 5 de Agosto de 2017"
categories: [ "code" ]
---
Depois desse título não há muito o que falar. Será um encontro relâmpago porque não tivemos tempo de fazer call for papers nem de muita divulgação, que será feita pela Diebold Nixdorf, a empresa que está patrocinando esta edição.

O motivo da pressa é: ela se interessou em disponibilizar o espaço deles e coffee break para fazermos um evento lá. A empresa fica em Indaiatuba e o foco do evento seria para Campinas e região. Eles precisavam pelo menos de uma prévia dos palestrantes para aprovar com o RH e passamos os dados básicos, que foram os nomes prévios das palestras e os palestrantes.

Por fim, montei o nosso [hot site](http://ccppbrasil.github.io/encontro13/) como de costume com as informações que temos até o momento. Irei palestrar sobre novidades do Visual Studio para C++ moderno (que realmente funcionam), o Gianni sobre as mesmas novidades (possivelmente) para GCC (é o Visual Studio open source =P), o Strauss sobre linkedição, o Galuppo sobre ZMQ (Zero MQ) e Fernando Roberto sobre Windows Drivers.

Espero que quem puder comparecer que compareça =P. Teremos um bom tempo livre e de coffee para trocarmos ideias para projetos, negócios e prazer. Tudo o que a comunidade C/C++ Brasil precisa é se reunir de vez em quando. Pena que esse de vez em quando seja bem de vez mesmo =(.
@@ -0,0 +1,15 @@
---
date: 2017-08-06T23:51:23-03:00
title: "13o. Encontro CCPPBrasil (Post Mortem)"
categories: [ "code" ]
---
Mais um encontro que deu certo. No interior de SP em um sábado meio friozinho meio calor houve o décimo-terceiro encontro de nossa comunidade C/C++ Brasil, em um espaço e coffee-break fornecidos pela empresa Diebold em Indaiatuba. Houve cinco palestras e o dia passou bem rápido. Parabéns a todos os envolvidos pelo sucesso do encontro.

![](http://i.imgur.com/VorULlV.jpg)

![](http://i.imgur.com/CkP296j.jpg)

![](http://i.imgur.com/NxCKTnr.jpg)

![](http://i.imgur.com/dW7Zl45.jpg)

@@ -0,0 +1,27 @@
---
date: 2019-04-19T15:59:00-03:00
title: "14o. Encontro CCPP42BR"
categories: [ "code" ]
desc: "Décimo-quarto encontro de programadores e entusiastas das linguagens C e C++ a ser realizada em algum local em São Paulo Capital no dia 6 de julho de 2019."
---
![](https://i.imgur.com/aq26Lai.jpg)

Foi definido recentemente no [nosso grupo de Telegram](https://t.me/ccppbrasil) que nosso próximo encontro será realizado na cidade de São Paulo no dia 6 de julho de 2019. Como nossa última tentativa falhou miseravelmente por falta de inscrições suficientes estaremos iniciando a organização primeiro pelas incrições, e, havendo quórum, será feita alocação de sala(s) e coffee-break. Em paralelo iniciaremos o call for papers, onde você é convidado a palestrar em nosso encontro.

### Resumo

Quando: 06 (seis) do 07 (julho) de 2019.
Onde: São Paulo, Capital.
Onde exatamente: a ser definido.

### Inscrições

As inscrições terão o preço inicial definido em R$ 30,00 (trinta taoqueis). O pagamento poderá ser feito pelo PagSeguro neste link: https://pag.ae/7UPUvqBb1

### Call for Papers

Se está interessado em palestrar envie sua proposta na [página do CFP](https://easychair.org/cfp/content.cgi?a=21794885). Se atente às datas limites para envio do abstract e do conteúdo.

### Atualizações

Vá no [site oficial do grupo](http://ccppbrasil.github.io/) para ficar antenado das últimas atualizações sobre o evento.
@@ -0,0 +1,8 @@
---
date: 2017-09-11T22:25:46-03:00
title: "14o. Encontro CCPPBR CFP (Call for Papers)"
categories: [ "code" ]
---
Está aberta a temporada de [Call For Papers](https://goo.gl/forms/bFkQYWrJvjoitdT43) do nosso próximo encontro de programadores e aficionados C/C++ Brasil, que deverá acontecer em São Paulo (capital) dia 25 de Novembro de 2017 (sábado). Para quem deseja reservar seu lugar e uma promoção nos ingressos clique no link de [pré-inscrição](https://goo.gl/forms/EBg9iLU7DgSTpfVW2).

Mais detalhes, que serão atualizados, no nosso [site](http://ccppbrasil.github.io/).
@@ -0,0 +1,97 @@
---
date: "2014-04-24"
title: 2048 motivos para não programar
categories: [ "code" ]
---
[![2048](http://i.imgur.com/LpkzLQH.jpg)](/images/13989736784_92d49267fe_o.jpg)

Pronto, posso programar em paz. O jogo 2048 é uma lástima para todos os trabalhadores intelectuais que dependem de suas mentes para produzir algo que preste. Ele gerou mais posts no Hacker News do que a moda dos bitcoins (talvez não) e mais projetos no GitHub do que a busca para a cura do câncer (talvez não). (Obviamente que este post vai gerar [mais um commit Python no repositório de artigos](https://github.com/Caloni/Caloni.com.br).)

Não sou fã de jogos, e dos poucos que participei logo parei (exceções honrosas: Portal e Portal 2, esses malditos). Posso dizer o mesmo de 2048, a versão de uma espécie de jogo já conhecido feita pelo italiano [Gabriele Cirulli](http://gabrielecirulli.github.io/2048/) em um fds para ele descobrir se seria capaz de fazê-lo. Ele fez e o jogo e de quebra o índice de produtividade mundial cair.

Houve pelo menos dois projetos de I.A. para resolver o problema que consiste em dobrar números múltiplos de 2 em um quadrado 4 x 4 até que se consiga o quadrado com o valor 2048 (e além). O artigo de [Nicola Pezzotti](http://diaryofatinker.blogspot.it/2014/03/an-artificial-intelligence-for-2048-game.html) explica o mais efetivo deles, de autoria de [Robert Xiao](https://github.com/nneonneo/2048-ai) (eu acho). O programa desenvolvido por Xiao otimiza o tabuleiro do jogo guardando-o em um inteiro de 64 bits, deixando 4 bits para cada casa, mais que o suficiente para que seja armazenada a potência de 2 localizada no quadrado (o limite fica sendo de 2 ** 16, ou 65536). Ao rodar a versão executável console ele imprime cada posição do tabuleiro em um formato fácil de ser lido, como este:


Move #69, current score=584
1356
0051
0012
0000

Como pode-se perceber, cada número diferente de zero contém a potência de dois que ocupa a casa (1 é igual a 2, 5 é igual a 2 ** 5 = 32 e assim por diante). Para alinhar corretamente o tabuleiro os números estão impressos em hexadecimal, ou seja, os valores válidos vão de 0 a f (15).

Isso já seria o suficiente para desvendar os movimentos da I.A., mas nada como um apelo visual. Que tal um vídeo?

http://youtu.be/GVTCej6zwAk

Feito com a ajuda de um tabuleiro-template e um pouco do poder Python+PIL:

```python
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
from itertools import islice
TilePositions = [
[32, 216], [153, 216], [274, 216], [395, 216],
[32, 339], [153, 339], [274, 339], [395, 339],
[32, 461], [153, 461], [274, 461], [395, 461],
[32, 584], [153, 584], [274, 584], [395, 584]
]
TileSize = 106
def LoadTemplate():
img = Image.open('2048.png')
draw= ImageDraw.Draw(img)
return img, draw
def DrawBoard(board):
img, draw = LoadTemplate()
bigFont = ImageFont.truetype('DejaVuSans-Bold.ttf', 48)
smallFont = ImageFont.truetype('DejaVuSans-Bold.ttf', 24)
dbgFont = ImageFont.truetype('DejaVuSans-Bold.ttf', 8)
for r in range(len(board)):
for c in range(len(board[r])):
number = 2 ** board[r][c]
if number > 1:
tileX, tileY = TilePositions[r*4 +c][0], TilePositions[r*4 +c][1]
font = smallFont if number > 64 else bigFont
text = str(number)
textW, textH = draw.textsize(text, font=font)
x, y = tileX + (TileSize - textW) / 2, tileY + (TileSize - textH) /2
dbgText = str(tileX) + ' + (' + str(TileSize) + ' - ' + str(textW) + ') / 2'
draw.text((x, y), text, (0,0,0), font=font)
return img
def ReadNextBoard(f):
lines = [lines for lines in islice(f, 4)]
if (len(lines)) == 4:
board = [
[ int(lines[0][0], 16), int(lines[0][1], 16), int(lines[0][2], 16), int(lines[0][3], 16) ],
[ int(lines[1][0], 16), int(lines[1][1], 16), int(lines[1][2], 16), int(lines[1][3], 16) ],
[ int(lines[2][0], 16), int(lines[2][1], 16), int(lines[2][2], 16), int(lines[2][3], 16) ],
[ int(lines[3][0], 16), int(lines[3][1], 16), int(lines[3][2], 16), int(lines[3][3], 16) ]
]
return board
return None
def ProcessGame(filePath):
f = open(filePath)
board = ReadNextBoard(f)
boardNumber = 1
while board:
DrawBoard(board).save('2048-' + str(boardNumber) + '.png')
board = ReadNextBoard(f)
boardNumber = boardNumber + 1
```

Note que a estratégia basicamente é ordenar as casas em um lado e, assim que acumular valores o suficiente, consolidar tudo na última casa. Nem sempre isso é possível, pois uma virada de jogo pode deixar a casa com o maior valor no meio de um dos lados. Nesse caso, é interessante ver como a I.A. se sai, já que com apenas uma execução ela foi até 8192 e mais um 4096. Dá-lhe, computador!

Observação importante: para que o conversor Python funcione ele exige um arquivo que tenha _apenas_ as posições do tabuleiro dispostas como nas 4 linhas acima. Nada que um grep "^[0-9a-f][0-9a-f][0-9a-f][0-9a-f]$" na saída do jogo não resolva.

Dica: como criar seus próprios vídeos a partir de uma [porrada de PNGs](https://trac.ffmpeg.org/wiki/Create%20a%20video%20slideshow%20from%20images).

Ah, sim, se você pretende analisar a estratégia do jogo passo-a-passo, acho que é melhor você dar uma olhada no [log do jogo](https://github.com/Caloni/Caloni.com.br/tree/master/2048) (ou usá-lo para gerar seus PNGs).

Brinde: versão 2048 do [Vida de Programador](http://goistsg.github.io/2048-vdp/)!

0 comments on commit 4907a03

Please sign in to comment.
You can’t perform that action at this time.