-
Notifications
You must be signed in to change notification settings - Fork 0
/
2011-05.html
511 lines (358 loc) · 43.4 KB
/
2011-05.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
<!DOCTYPE html>
<html lang="en-us" dir="ltr" itemscope itemtype="http://schema.org/Article">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Blogue do Caloni</title>
<meta name="author" content="Caloni" />
<meta name="generator" content="txt2blog 0.0.1">
<meta property="og:title" content="Blogue do Caloni"/>
<meta property="og:type" content="website"/>
<meta property="og:url" content="http://www.caloni.com.br"/>
<meta property="og:image" content="/img/about-brand.png"/>
<meta property="og:description" content="Write for computers, people and food."/>
<link href="/index.xml" rel="feed" type="application/rss+xml" title="Blogue do Caloni"/>
<link rel="stylesheet" type="text/css" href="/css/custom.css"/>
<link rel="stylesheet" type="text/css" href="/css/jquery-ui.css"/>
<script src="/js/jquery-1.12.4.js"></script>
<script src="/js/jquery-ui.js"></script>
<script src="/js/copy_clipboard.js"></script>
<script>
var quick_search_posts = [
];
</script>
<script src="/js/quick_search.js"></script>
<script src="/js/list.js"></script>
<link rel="icon" href="/img/favicon.ico"/>
</head>
<body style="min-height:100vh;display:flex;flex-direction:column">
<nav class="navbar has-shadow is-white"
role="navigation" aria-label="main navigation">
<div class="container">
<div class="navbar-brand">
<a class="navbar-item" href="months.html">
<div class="is-4"><b>caloni::2011-05</b></div>
</a>
</div>
</div>
</nav>
<div class="container">
<div class="column">
<div style="min-height:56vh">
<div style="padding-bottom: 1em;"></div>
<ul style="list-style: none;">
<li><small><a href="2011-05.html#bebes">Bebês</a></small></li>
<li><small><a href="2011-05.html#hop_rebeldes_sem_pascoa">Hop Rebeldes sem Páscoa</a></small></li>
<li><small><a href="2011-05.html#coincidencias_do_amor">Coincidências do Amor</a></small></li>
<li><small><a href="2011-05.html#scott_pilgrim_contra_o_mundo">Scott Pilgrim Contra o Mundo</a></small></li>
<li><small><a href="2011-05.html#sem_reflection">Sem reflection</a></small></li>
<li><small><a href="2011-05.html#os_agentes_do_destino">Os Agentes do Destino</a></small></li>
<li><small><a href="2011-05.html#garota_infernal">Garota Infernal</a></small></li>
<li><small><a href="2011-05.html#comparando_strings_no_windbg">Comparando strings no WinDbg</a></small></li>
<li><small><a href="2011-05.html#wall_street_poder_e_cobica">Wall Street Poder e Cobiça</a></small></li>
<li><small><a href="2011-05.html#velozes_e_furiosos_5_operacao_rio">Velozes & Furiosos 5: Operação Rio</a></small></li>
<li><small><a href="2011-05.html#star_wars_episodio_i_a_ameaca_fantasma">Star Wars, Episódio I: A Ameaça Fantasma</a></small></li>
<li><small><a href="2011-05.html#novo_branch_para_projetos_do_caloni_com_br">Novo branch para projetos do Caloni.com.br</a></small></li>
<li><small><a href="2011-05.html#singularidades_de_uma_rapariga_loura">Singularidades de uma Rapariga Loura</a></small></li>
<li><small><a href="2011-05.html#star_wars_episodio_ii_ataque_dos_clones">Star Wars, Episódio II: Ataque dos Clones</a></small></li>
</ul>
<span id="bebes" title="Bebês"/></span>
<section id="section_bebes">
<p class="title"><a href="2011-05.html#bebes">#</a> <a class="external" href="https://www.imdb.com/title/tt1020938">Bebês</a></p>
<span class="title-heading">Caloni, 2011-05-01 <a href="movies.html">movies</a><a href="2011-05.html"> <sup>[up]</sup></a> <a href="javascript:;" onclick="copy_clipboard('section#section_bebes')"><sup>[copy]</sup></a></span>
<p>O filme mostra a história de quatro bebês espalhados em quatro lugares do planeta bem diferentes entre si. O que mais impressiona é o fato de que, apesar das culturas serem tão diferentes, o filme enfoca justamente o que é comum a todo bebê: mamar, chorar, a curiosidade, as primeiras engatinhadas...</p>
<p>A fotografia é fabulosa, uniforme nos quatro ambientes, e digno de nota juntamente da maravilhosa e oculta técnica que, para conseguir esses momentos especiais, posiciona as câmeras em lugares estratégicos que conseguem, inexplicavelmente, os melhores ângulos, e captam momentos-chave da evolução de todos aqueles pequeninos seres humanos.</p>
<p>O enquadramento de várias cenas consegue quase sempre o melhor ângulo para acompanhar a ação do ponto de vista exclusiva dos bebês. Só isso bastaria para que um cinéfilo acompanhasse cada segundo da experiência desse filme, que é, para mim, desde já, parte de uma cinegrafia necessária a todo estudioso da sétima arte.</p>
<p>E por falar em sétima arte, uma outra característica igualmente oculta é que este é um documentário, sob o ponto de vista de gênero, mas, para o espectador, parece uma ficção, de tão empolgados que ficamos acompanhando o desenvolvimento das "histórias" de seus "personagens".</p>
<p>Fora isso, o filme merece ser visto porque é muito fofinho.</p>
</section><hr/>
<span id="hop_rebeldes_sem_pascoa" title="Hop Rebeldes sem Páscoa"/></span>
<section id="section_hop_rebeldes_sem_pascoa">
<p class="title"><a href="2011-05.html#hop_rebeldes_sem_pascoa">#</a> <a class="external" href="https://www.imdb.com/title/tt1411704">Hop Rebeldes sem Páscoa</a></p>
<span class="title-heading">Caloni, 2011-05-01 <a href="movies.html">movies</a><a href="2011-05.html"> <sup>[up]</sup></a> <a href="javascript:;" onclick="copy_clipboard('section#section_hop_rebeldes_sem_pascoa')"><sup>[copy]</sup></a></span>
<p>A cada cinco minutos do filme, a cada cena obviamente maquiada e implantada na narrativa da maneira mais artificial possível, eu me fazia uma nota mental que dizia sempre a mesma coisa: "É um filme feito pra Páscoa; pra ESSA Páscoa".</p>
<p>E no fundo, essa é uma maneira sensata de classificar Hop, que agora faz parte das famigeradas produções que não serão lembradas nunca mais. Se forem, da mesma forma que as pessoas não entenderão por que diabos Luciano Huck está dublando um (futuro?) clássico da Disney, ficarão pensando quais são aquelas músicas usadas no filme com o coelho engraçadinho cuja única ação toda hora é: fazer coisas engraçadinhas.</p>
</section><hr/>
<span id="coincidencias_do_amor" title="Coincidências do Amor"/></span>
<section id="section_coincidencias_do_amor">
<p class="title"><a href="2011-05.html#coincidencias_do_amor">#</a> <a class="external" href="https://www.imdb.com/title/tt0889573">Coincidências do Amor</a></p>
<span class="title-heading">Caloni, 2011-05-16 <a href="movies.html">movies</a><a href="2011-05.html"> <sup>[up]</sup></a> <a href="javascript:;" onclick="copy_clipboard('section#section_coincidencias_do_amor')"><sup>[copy]</sup></a></span>
<p>Kassie (Jenifer Aniston) deseja ser mãe, mas não possui nenhum parceiro nem deseja ter um, se contentando com os ombros amigos de Wally (Jason Bateman, de Juno), que sempre está por perto. Porém, sua idade avançando a deixa preocupada a ponto de pensar em ter o filho por conta própria, usando o já não tão modernoso método de inseminação artificial. Para isso, decide procurar um candidato que se encaixe em seus padrões de homem bem-sucedido (Patrick Wilson, em uma aparição apagada) e anuncia em uma festa que será fecundada pelo esperma do tal sujeito que será, acreditem, gerado naquela mesma noite durante a festa.</p>
<p>O que ela não esperava é que seu amigo Wally, contra sua ideia, se embebeda o suficiente para acidentalmente derrubar o recipiente onde se encontravam os espermatozoides do "pretendido" e, para corrigir o ato falho, resolve preencher o copinho com seu próprio, er, "material".</p>
<p>Só pela descrição inicial de Coincidências do Amor já é possível ter uma noção do incômodo absurdo que permeia o roteiro de Allan Loeb (que chegou a escrever Quebrando a Banca e, acreditem, a continuação de Wall Street). Como se não bastasse, a história tenta, em sua segunda metade, se focar nas semelhanças infantis existentes entre o filho de Kassie, já um menino de seis anos, e Wally, que certamente possui sérios problemas de atenção, pois não consegue perceber, a despeito das sutilezas da narrativa, que o filho de sua amiga é uma espécie de Mini-Me de mal gosto de si próprio.</p>
<p>O mais incrível é que Loeb acredita realmente que apenas a piada recorrente dessas semelhanças durante o resto do longa seja o suficiente para nos prender a atenção. Porém, mesmo que Jason Bateman se esforce para criar um personagem tão inverossímil quanto Wally e sua cópia em miniatura, a gag não funciona nem no começo, se transformando o filme inteiro, assim como a festa da inseminação, em um espetáculo bizarro e de muito mal gosto.</p>
</section><hr/>
<span id="scott_pilgrim_contra_o_mundo" title="Scott Pilgrim Contra o Mundo"/></span>
<section id="section_scott_pilgrim_contra_o_mundo">
<p class="title"><a href="2011-05.html#scott_pilgrim_contra_o_mundo">#</a> <a class="external" href="https://www.imdb.com/title/tt0446029">Scott Pilgrim Contra o Mundo</a></p>
<span class="title-heading">Caloni, 2011-05-16 <a href="movies.html">movies</a><a href="2011-05.html"> <sup>[up]</sup></a> <a href="javascript:;" onclick="copy_clipboard('section#section_scott_pilgrim_contra_o_mundo')"><sup>[copy]</sup></a></span>
<p>Scott Pilgrim é o tipo de filme que abraça um conceito até o fim. Melhor: começa como um filme comum, mas vai apresentando o seu conceito de forma orgânica e cada vez mais intensa. E intensidade é uma palavra que resume muito bem toda a experiência que esse filme proporciona.</p>
<p>Ambientado em Toronto, aos poucos percebemos que tudo não passa de um jogo de video-game, e os personagens desse jogo não sabem que fazem parte disso. As fases do jogo são passadas através do combate entre Pilgrim e cada um dos sete "ex-namorados do mal" do seu interesse amoroso, Ramona. A possibilidade de "gamificar" o filme acaba revelando cenas de ação em completo êxtase, com uma montagem que possui um dinamismo ímpar. Sobre as brincadeiras na tela (como as divisões de tela, as onomatopeias escritas e os movimentos impossíveis e estilizados), logo lembramos de Speed Racer, outro filme espetacularmente inovador e inacreditavelmente esquecido.</p>
<p>A trilha sonora (e os efeitos, também) são dignos de nota, pois conseguem homenagear como ninguém o mundo dos games, realizando transições sonoras entre o techno e os temas limitados dos primeiros consoles. Da mesma forma, os efeitos visuais vão de forma cada vez mais frequente referenciando a origem pixelada daquele mundo (como o martelo de Ramona).</p>
<p>Um filme ágil com um tema inesperado. Mais uma pena para os espectadores que não conseguem tentar algo novo de vez em quando.</p>
</section><hr/>
<span id="sem_reflection" title="Sem reflection"/></span>
<section id="section_sem_reflection">
<p class="title"><a href="2011-05.html#sem_reflection">#</a> Sem reflection</p>
<span class="title-heading">Caloni, 2011-05-18 <a href="coding.html">coding</a><a href="2011-05.html"> <sup>[up]</sup></a> <a href="javascript:;" onclick="copy_clipboard('section#section_sem_reflection')"><sup>[copy]</sup></a></span>
<p>Em C++ não temos (ainda) a possibilidade de listarmos, por exemplo, a lista de métodos de um determinado tipo, a fim de chamá-lo pelo nome em tempo de execução. Algo assim:</p>
<pre>
class MyClass
{
public:
void Method1();
void Method2();
void Method3();
};
int main()
{
MyClass c;
if( auto m = typeid(c). methods. getaddresof( "Method1" ) )
m();
}
</pre>
<p>OK, foi apenas um exemplo tosco de como seria um reflection em C++.</p>
<p>Porém, existem algumas maneiras de contornar esse problema. A solução, é claro, depende de qual problema você está tentando resolver.</p>
<p>Vamos supor, por exemplo, que você queira cadastrar funções para serem chamadas de maneira uniforme pelo prompt de comando. Vamos chamar nossa classe tratadora de CommandPrompt.</p>
<pre>
typedef void (Method*)(vector<string>& args);
class CommandPrompt
{
public:
void Add(string name, Method m); // adiciona novo método
void Interact(ostream& os, istream& is); // começa interação com usuário
};
</pre>
<p>Internamente, para armazenar as funções de acordo com o nome dado, basta criarmos um mapeamento entre esses dois tipos e fazemos a amarração necessária para o método principal de parseamento:</p>
<pre>
typedef map<string, Method> MethodList; // uma variável desse tipo armazena todas as funções
void CommandPrompt::Interact(ostream& os, istream& is)
{
while( is )
{
string func;
vector<string> args;
if( ParseLine(is, func, args) )
{
// se a função desejada está em nossa lista,
// podemos chamá-la, mesmo sem conhecer qual é
if( Method m = m_funcs[func] )
m(args);
}
}
}
</pre>
<p>Essa solução não é exatamente um reflection, mas apenas parte do que o verdadeiro reflection possibilita. Existem outras funcionalidades, como traits, que a STL já consegue se virar razoavelmente bem, por exemplo.</p>
</section><hr/>
<span id="os_agentes_do_destino" title="Os Agentes do Destino"/></span>
<section id="section_os_agentes_do_destino">
<p class="title"><a href="2011-05.html#os_agentes_do_destino">#</a> <a class="external" href="https://www.imdb.com/title/tt1385826">Os Agentes do Destino</a></p>
<span class="title-heading">Caloni, 2011-05-19 <a href="movies.html">movies</a><a href="2011-05.html"> <sup>[up]</sup></a> <a href="javascript:;" onclick="copy_clipboard('section#section_os_agentes_do_destino')"><sup>[copy]</sup></a></span>
<p>Em uma época em que religião e economia precisam ser reinventadas, a visão mesclada de ambas em uma organização fria e calculista não deixa de ser no mínimo curiosa. Porém, mais do que isso é constatarmos que os homens sisudos do filme têm por função coordenar algo que para nós, seres humanos, especialmente em tempos de crise, é sabidamente a única coisa de que realmente somos donos: o livre arbítrio.</p>
<p>Sabendo disso, e ainda de bônus o fato do personagem de Matt Damon ser um político popular, jovem e em ascenção, mas que ao mesmo tempo se questiona sobre suas prioridades, conseguimos, desde o início, um filme que aborda discussões pelo menos um passo adiante sobre algumas de nossas principais convicções sociais.</p>
<p>De forma que, quando vemos o discurso de David Norris (Damon), refeito na hora de improviso, que estigma desde já o nosso conceito de espontaneidade, explicando para um público completamente hipnotizado pelo seu poder de comunicação como os sapatos que ele calçou durante a campanha são desgastados meticulosamente para que ao mesmo tempo atraia o trabalhador comum e não afaste a elite do mundo financeiro, somos levados através de um pano de fundo realista para uma experiência no mínimo intrigante sobre o funcionamento da nossa própria realidade.</p>
<p>E, de fato, existe algo durante toda a projeção que nos incita a ficarmos permanentemente curiosos a respeito do futuro de David e Elise, pois, ao mesmo tempo que descobrimos como esse futuro é construído, não conseguimos concebê-lo desde o início, condicionados que estamos com a evolução de uma narrativa cinematográfica clássica, com seus imprevistos e percalços necessários ao arco dramático de nosso protagonista.</p>
<p>E é justamente nesse momento que percebemos a maior fraqueza do filme: não conseguir estimular os anseios dos dois personagens, fixando-se, no lugar, em descrever durante o trajeto a forma como os tais agentes trabalham e os problemas que precisam enfrentar para tornar tudo funcionando da maneira que foram instruídos para funcionar.</p>
<p>No entanto, essa é uma parte necessária ao tema do filme, e muito bem-vinda, pois assim como em A Origem, precisamos de explicações muitas vezes didáticas de como as coisas funcionam nesse universo. O problema, contudo, é que, no terceiro ato, ao tentar voltar-se completamente para David e Eloise, o filme perca toda a construção feita até então para dar foco ao casal do filme que sequer conseguiu se definir na narrativa. Dessa forma, a decisão de David de vê-la mais uma vez, e para isso montar uma estratégia de guerra, soa forçado demais.</p>
<p>Portanto, é de esfriar os ânimos que um filme que se entregue em seu início tão corajosamente a instigar o raciocínio de seus espectadores mais abertos à filosofia, em seu final se entregue justamente ao seu oposto, quase como se o próprio filme, vítima de um plano maior, precisasse reassumir o lado clichê das produções de Hollywood e voltasse à normalidade em seus últimos quinze minutos.</p>
<p>Porém, não seria essa a finalização metalinguística do seu próprio criador?</p>
</section><hr/>
<span id="garota_infernal" title="Garota Infernal"/></span>
<section id="section_garota_infernal">
<p class="title"><a href="2011-05.html#garota_infernal">#</a> <a class="external" href="https://www.imdb.com/title/tt1131734">Garota Infernal</a></p>
<span class="title-heading">Caloni, 2011-05-21 <a href="movies.html">movies</a><a href="2011-05.html"> <sup>[up]</sup></a> <a href="javascript:;" onclick="copy_clipboard('section#section_garota_infernal')"><sup>[copy]</sup></a></span>
<p>Aprendemos duas coisas assistindo Garota Infernal: que não se dá Oscar de melhor roteiro para uma estreante com delírios de grandeza (Diablo Cody, de Juno) e não se coloca atrizes como Megan Fox (Transformers e... argh! Transformers 2), que rivaliza com Kristen Stewart em atuação, em um papel principal.</p>
<p>Ou talvez se coloque. Afinal de contas, Fox não compromete em nada esse projeto mais do que bem vindo aos amantes de seu corpo e seus lábios. Na verdade, talvez seja a escolha ideal para uma personagem cuja principal função seja a de andar seminua por aí se alimentando de homens.</p>
<p>Mas não posso dizer que não me diverti com o roteiro. Afinal de contas, surpresas como um pai que jura pendurar as bolas do assassino de seu filho e uma mãe que compara o corpo de seu filho com uma "lasanha com dentes" sempre podem impressionar.</p>
<p>Jennifer (Fox) e Needy (Seyfried, assustada como o Chapeuzinho Vermelho) são melhores amigas que se conhecem desde a infância. Jennifer, uma jovem desejada pelos garotos que foi uma vez a mais popular da escola, pode ser comparada como o perfeito oposto de Needy, a garota desajeitada de óculos cuja definição "freak" nesse filme é ser uma pessoa normal. Aliás, não há de fato uma tentativa de se aprofundar na relação dessas duas jovens, embora a história sempre as coloque juntas ao final de cada cena, que sempre tende a ser episódica e que não muda muita coisa no contexto geral.</p>
<p>Confesso que muitos dos diálogos e "aparições" de Jennifer me pareceram ser um semi-preparo para um filme que se auto-intitula como "trash", ou seja, que não é ruim por defeitos de produção, mas erra consciente de ser essa a temática a ser adotada em uma história como essa. Infelizmente, isso não é verdade, pois podemos perceber claramente que existe uma tentativa de dramatização, ainda mais se considerarmos que a introdução tenta ligar-se à conclusão, em uma forma de dizer "está vendo? fizemos tudo planejadinho".</p>
<p>Isso quer dizer que fica muito difícil defender um filme que abre planos para colocar atores pendurados por cabos ou encharcados de molho de tomate e ainda assim soar realista. De qualquer forma, a fotografia do filme colabora em muitos enquadramentos noturnos, onde vemos Jennifer e Needy sozinhas em uma imensidão de cenário tenebroso. (Aliás, é divertido lembrar que a maioria desses cenários está molhado para garantir a iluminação adequada na filmagem, mas sem uma desculpa razoável no roteiro, como chuva, por exemplo.)</p>
</section><hr/>
<span id="comparando_strings_no_windbg" title="Comparando strings no WinDbg"/></span>
<section id="section_comparando_strings_no_windbg">
<p class="title"><a href="2011-05.html#comparando_strings_no_windbg">#</a> Comparando strings no WinDbg</p>
<span class="title-heading">Caloni, 2011-05-22 <a href="coding.html">coding</a><a href="2011-05.html"> <sup>[up]</sup></a> <a href="javascript:;" onclick="copy_clipboard('section#section_comparando_strings_no_windbg')"><sup>[copy]</sup></a></span>
<p>O WinDbg fornece aos programadores diversos meios (muitos redundantes) de comparar valores inteiros em quaquer lugar da memória, em qualquer tamanho (8, 16, 32, 64 bits). Porém, quando precisamos comparar strings, que todos sabem ser uma sequência de bytes de tamanho arbitrário (se for em C, até o zero terminador).</p>
<p>Uma solução simples e rápida é comparar os 4 primeiros bytes de uma string, ou os 4 primeiros bytes que diferem de uma lista grande.</p>
<p>Por exemplo, imagine o seguinte código que abre todos os arquivos da pasta de sistema:</p>
<pre>
#define _CRT_SECURE_NO_WARNINGS
#include <Windows.h>
#include <stdio.h>
int main()
{
CHAR sysPath[MAX_PATH];
CHAR findPath[MAX_PATH];
GetSystemDirectory(sysPath, MAX_PATH);
sprintf(findPath, "%s\\*.*", sysPath);
WIN32_FIND_DATA findData;
HANDLE findH = FindFirstFile(findPath, &findData);
if( findH != INVALID_HANDLE_VALUE )
{
do
{
CHAR filePath[MAX_PATH];
sprintf(filePath, "%s\\%s", sysPath, findData.cFileName);
HANDLE fileH = CreateFile(filePath, GENERIC_READ,
FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
if( fileH )
{
CHAR firstBytes[4];
DWORD wasRead = 0;
if( ReadFile(fileH, firstBytes, 4, &wasRead, NULL) && wasRead == 4 )
{
printf("%s: %02X %02X %02X %02X\n", findData.cFileName,
(int) firstBytes[0], (int) firstBytes[1],
(int) firstBytes[2], (int) firstBytes[3]);
}
CloseHandle(fileH);
}
}
while( FindNextFile(findH, &findData) );
FindClose(findH);
}
}
</pre>
<p>Queremos colocar um breakpoint no momento em que o arquivo shell32.dll estiver sendo aberto. Para isso, devemos nos atentar para os parâmetros passados para a função CreateFile.</p>
<pre>
windbg strcmpwindbg1.exe
0:000> bp kernel32!CreateFileA
Breakpoint 0 hit
eax=001bf918 ebx=7efde000 ecx=001bf7e0 edx=001bf7e0 esi=001bf824 edi=001bfd90
eip=7663ca6e esp=001bf804 ebp=001bfd90 iopl=0 nv up ei pl zr na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246
kernel32!CreateFileA:
7663ca6e 8bff mov edi,edi
0:000> da poi(esp+4)
001bf918 "C:\Windows\system32\accessibilit"
001bf938 "ycpl.dll"
0:000> g
Breakpoint 0 hit
eax=001bf918 ebx=7efde000 ecx=001bf7e0 edx=001bf7e0 esi=001bf824 edi=001bfd90
eip=7663ca6e esp=001bf804 ebp=001bfd90 iopl=0 nv up ei pl zr na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246
kernel32!CreateFileA:
7663ca6e 8bff mov edi,edi
0:000> da poi(esp+4)
001bf918 "C:\Windows\system32\ACCTRES.dll"
</pre>
<p>O padrão aqui é que todo path passado para o CreateFile vai começar com c:\windows\system32, o que não é uma informação que podemos usar para buscar um arquivo específico.</p>
<p>Temos que nos atentar para o padrão de bits após esse path. Vamos dar uma olhada por dentro da string.</p>
<pre>
0:000> db 001bf918
001bf918 43 3a 5c 57 69 6e 64 6f-77 73 5c 73 79 73 74 65 C:\Windows\syste
001bf928 6d 33 32 5c 41 43 43 54-52 45 53 2e 64 6c 6c 00 m32\ACCTRES.dll.
001bf938 79 63 70 6c 2e 64 6c 6c-00 cc cc cc cc cc cc cc ycpl.dll........
</pre>
<p>O nome do arquivo começa no offset 16+4 = 20, ou 14 em hexa. Dessa forma, podemos capturar o padrão de bits da seguinte maneira:</p>
<pre>
0:000> dd poi(esp+4)+14 l1
001bf92c 54434341
</pre>
<p>Para nos certificarmos que é realmente esse o padrão, e para já montarmos nosso próprio padrão para o shell32.dll, vamos alocar um pedaço de memória e verificar se a sequência de bits está correta.</p>
<pre>
0:000> dd poi(esp+4)+14 l1
001bf92c 54434341
0:000> .dvalloc 100
Allocated 1000 bytes starting at 00030000
0:000> ea 00030000 "ACCTRES.dll"
0:000> dd 00030000 l1
00030000 54434341
</pre>
<p>Ótimo. Os padrões bateram, então podemos colocar um breakpoint condicional partindo do padrão de bits do nome do arquivo que precisamos.</p>
<pre>
0:000> bp kernel32!CreateFileA "j (poi(poi(esp+4)+14)=6c656873) ''; 'g'"
breakpoint 0 redefined
0:000> g
eax=0021f48c ebx=7efde000 ecx=0021f354 edx=0021f354 esi=0021f398 edi=0021f904
eip=7663ca6e esp=0021f378 ebp=0021f904 iopl=0 nv up ei pl zr na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246
kernel32!CreateFileA:
7663ca6e 8bff mov edi,edi
0:000> da poi(esp+4)
0021f48c "C:\Windows\system32\shell32.dll"
</pre>
<p>Com isso, economizamos alguns minutos de puro tédio, verificando os nomes um a um conforme eles são abertos. Ou, dependendo da massa de dados, algumas décadas. Quem sabe. Pode ser muito mais útil um outro dia.</p>
</section><hr/>
<span id="wall_street_poder_e_cobica" title="Wall Street Poder e Cobiça"/></span>
<section id="section_wall_street_poder_e_cobica">
<p class="title"><a href="2011-05.html#wall_street_poder_e_cobica">#</a> <a class="external" href="https://www.imdb.com/title/tt0094291">Wall Street Poder e Cobiça</a></p>
<span class="title-heading">Caloni, 2011-05-23 <a href="movies.html">movies</a><a href="2011-05.html"> <sup>[up]</sup></a> <a href="javascript:;" onclick="copy_clipboard('section#section_wall_street_poder_e_cobica')"><sup>[copy]</sup></a></span>
<p>Após ganhar o oscar por Platoon, Oliver Stone decide focar suas lentes para sua terra natal e abordar temas em torno do que faz mudar, nós e um país inteiro, a maneira de se enxergar: o dinheiro.</p>
<p>A história se passa coincidentemente um pouco antes dos escândalos dos títulos podres e de informação privilegiada (uma rima da vida real no mínimo interessante, se considerarmos sua continuação após a crise de 2008). Michael Douglas faz seu primeiro papel de mau, deixando os antigos mocinhos da televisão que interpretava para trás. Charlie Sheen, por sua vez, tem a missão de transitar por ambos os extremos da moral, uma tarefa ingrata, se consideramos que terá que disputar atenção com um antagonista tão magnético quanto Gordon Gekko.</p>
<p>Após descrever a selva natural de Platoon, Stone decide filmar a selva de pedra que é Wall Street, onde os mais aptos sobrevivem, e o resto definha. E essa selva é capturada muitas vezes do alto, enxergando a multidão como rebanhos se engalfinhando por um lugar no elevador.</p>
<p>Nessa vida de pequenas disputas por um espaço, alguns tentam mais, ambicionam mais. Como Bud Fox (Sheen), que é o único que vemos sair daquele escritório apertado para procurar algo melhor. Aliás, apertado é apelido. Com seus corredores estreitos, a falta de janelas próximas, um teto baixo que a câmera de Stone captura estrategicamente por um ângulo baixo, e as pilhas de papéis de multiplicando lado a lado, o ambiente onde Fox trabalha mais se parece com um purgatório para os que não conseguiram "vencer na vida".</p>
<p>Esse é um dos motivos por que impressiona o escritório de Gordon Gekko (Douglas), um megainvestidor assediado pelos menores. Com uma janela grandiosa e espaço livre para se movimentar entre as gigantescas mesas, Gordon Gekko é o personagem futuro de Bud Fox. É, pelo menos, o que ele deseja ser. E, francamente, depois de vermos aqueles corredores apertados onde Fox trabalha, é onde Gekko está que queremos estar: no topo da cadeia alimentar.</p>
<p>Tudo que importa saber sobre dinheiro parece repousar na mesa e nos ombros daquele homem. "Por que estou te ouvindo?", é o que ele pergunta para Bud Fox, que mal consegue se segurar na cadeira onde senta.</p>
<p>A partir daí, o paralelo entre ambas as realidades é primordial para entendermos todo o contexto da trama. Ao entrarmos no universo onde vive Gordon Gekko percebemos um mundo diferente, distorcido do senso comum. Dinheiro, é o elemento que sobra. De forma que ele é gasto em futilidades como quadros pendurados pelas paredes valendo milhões de dólares. Contudo, estamos enxergando o mundo dos ricos não pela ótica de abastados herdeiros, mas por alguém que trilhou o caminho das pedras, o que faz com que até o hobby de colecionar arte se torne uma atividade lucrativa.</p>
<p>A decoração das habitações dos ricos é mostrada de forma irônica, a ponto de fazer uma rima anedótica com a quitinete minúscula onde vive Fox. Possui paredes com tijolos expostos e objetos com partes que faltam. A mesa, incompleta em sua superfície, também tem sua função metafórica: reflete esse sentimento vazio e deformado de uma pessoa que já teria o suficiente para uma boa vida, mas que quer sempre mais. O meio se torna o fim. A cobiça pelo dinheiro é tamanha, que as notas verdes acabam por representar essa mesma cobiça, e o poder que dele emana na mente das pessoas.</p>
<p>O mundo de Wall Street como é retratado poderia ser visto como um documentário sobre a economia do país onde foi filmado, mas, mais do que isso, exibe as entranhas da ambição que existe em cada um de nós. Se enxergamos o filme como um auto-reflexo, a experiência se multiplica, como juros sobre juros. Nossa consciência, que oscila muitas vezes entre a integridade do pai de Bud Fox e o oportunismo de Gordom Gekko. Gekko se torna o pai espiritual de Fox, e, de certa forma, de todos nós que temos um pouco de ambição.</p>
</section><hr/>
<span id="velozes_e_furiosos_5_operacao_rio" title="Velozes & Furiosos 5: Operação Rio"/></span>
<section id="section_velozes_e_furiosos_5_operacao_rio">
<p class="title"><a href="2011-05.html#velozes_e_furiosos_5_operacao_rio">#</a> <a class="external" href="https://www.imdb.com/title/tt1596343">Velozes & Furiosos 5: Operação Rio</a></p>
<span class="title-heading">Caloni, 2011-05-25 <a href="movies.html">movies</a><a href="2011-05.html"> <sup>[up]</sup></a> <a href="javascript:;" onclick="copy_clipboard('section#section_velozes_e_furiosos_5_operacao_rio')"><sup>[copy]</sup></a></span>
<p>O Rio de Janeiro está em alta no cinema mundial esse ano: palco de duas produções internacionais de prestígio, a uma vez chamada Cidade Maravilhosa começa a mostrar aos poucos sua nova cara para o mundo, mesmo que sob a ótica distorcida das produções de Hollywood.</p>
<p>A quinta produção da franquia Velozes e Furiosos finca mais forte no elenco a presença de Vin Diesel, que tinha se ausentado até a reaparição no quarto filme, e agora redefine o núcleo de personagens junto com o casal principal, vivido pelos já rodados (desculpe o trocadilho) Brian O'Conner (Paul Walker) e Mia Toretto (Jordana Brewster), de uma forma, além de mais saudosista, familiar.</p>
<p>Em torno desse núcleo constrói-se a gangue já conhecida com suas piadas já batidas, o que não é um mau sinal, se considerarmos que, na maioria das vezes, a interação entre os personagens parece cada vez melhor, embora existam algumas surpresas mais interessantes. É o caso de Dwayne Johnson, em sua primeira aparição na série. Aqui ele faz Luke Hobbs, um agente federal forte e decidido a capturar Dominic Toretto (Diesel) a qualquer custo. A disposição de Johnson transparece em cada cena que participa, e é uma escolha a dedo para a irreverência de Toretto. Além de ser igualmente forte e contracenarem uma cena de luta consideravelmente... tensa.</p>
<p>Porém, os personagens da franquia já são limitados pela própria lógica das tramas, que sempre envolvem muita ação e pouco tempo para diálogos e cenas de transição vazios (algo que Stallone não percebe em Os Mercenários, por exemplo). Felizmente, em sua terceira tentativa, Gary Scott atribui o devido peso a cada um desses elementos, tornando o resultado final satisfatório, pois mesmo que a história não contribua em nada para a tensão, ela preenche bem o vazio necessário entre as cenas de ação, gerando uma fluidez quase natural para o andamento da trama.</p>
<p>E por falar em ação, ela não deixa a desejar nem em momentos não-motorizados. Quando o trio principal é perseguido morro abaixo, o movimento de câmera durante cada salto consegue imprimir um ritmo muito semelhante em produções mais estilizadas como Cidade de Deus e o irrepreensível Tropa de Elite. Da mesma forma, as cenas de luta protagonizadas por Diesel e Johnson funcionam.</p>
<p>Mas é no asfalto que a direção enérgica de Justin Lin mostra a que veio e consegue feitos ainda maiores de tensão, com cortes bem articulados, nem que para isso sejam usados ângulos diferentes a todo o momento, o que não deixa de ser um feito considerável, se lembrarmos que as locações são em plenas ruas do Rio de Janeiro (ou pelo menos lembram bem uma cidade brasileira).</p>
<p>E se a "surpresa" final seria um deus ex machina se houvesse um conflito construído de fato para tal, ela em nada interfere na história, e é banalizada pela própria escolha de nunca levar muito a sério as questões propostas no filme.</p>
</section><hr/>
<span id="star_wars_episodio_i_a_ameaca_fantasma" title="Star Wars, Episódio I: A Ameaça Fantasma"/></span>
<section id="section_star_wars_episodio_i_a_ameaca_fantasma">
<p class="title"><a href="2011-05.html#star_wars_episodio_i_a_ameaca_fantasma">#</a> <a class="external" href="https://www.imdb.com/title/tt0120915">Star Wars, Episódio I: A Ameaça Fantasma</a></p>
<span class="title-heading">Caloni, 2011-05-27 <a href="movies.html">movies</a><a href="2011-05.html"> <sup>[up]</sup></a> <a href="javascript:;" onclick="copy_clipboard('section#section_star_wars_episodio_i_a_ameaca_fantasma')"><sup>[copy]</sup></a></span>
<p>Quando se mexe com algo sagrado como a trilogia clássica de Star Wars ou alguém está produzindo uma sátira ou essa pessoa é George Lucas. Por mais que os fãs apontem defeitos e/ou sugestões, o Criador da saga sempre teve palavra final. Portanto, não é de se admirar que a nova trilogia comece com seu roteiro, direção, e autoridade.</p>
<p>Porém, autoridade não é sinônimo de competência. Não que o resultado final seja ruim, de fato, mas acaba se tornando reflexo do enorme poder de influência dos filmes anteriores, causando um certo tipo de "empolgação por tabela".</p>
<p>Aqui temos a história de um evento na República que ameaça Rainha Amidala e seu povo, ao mesmo tempo que um Jedi encontra um menino dotado de capacidades especiais. Ambientada em diferentes planetas, como de costume, e em diferentes contextos, a narrativa mantém um subtexto através de pistas nos diálogos, no movimento de câmera e na música que tentam sempre definir o que está por vir, que é o surgimento de Darth Vader, o personagem mais marcante da trilogia clássica. A tentativa acaba funcionando na maioria dos casos, embora apresente pistas de uma maneira tão discreta que em um primeiro momento poderia passar despercebido pela maioria dos espectadores, o que é uma pena, pois é esse subtexto que é construído durante a trama que nos remete à história original e que une as pontas entre as diferentes aventuras da saga.</p>
<p>São detalhes que já sinalizam o que vai acontecer, como a música-tema do Império quando Yoda confessa a Obi-Wan Kenobi (McGregor) que teme pelo treinamento de Anakin Skywalker (Lloyd), ou quando os Jedis comentam que os Siths, algo como "Jedis do mal", costumam andar sempre em pares (um aprendiz e um mestre), no que a própria câmera dá uma pista, uma prova da astúcia de Lucas de implantar pequenas dicas para os fãs mais atentos. E, ao final dos créditos, pode-se ouvir a respiração do personagem já citado.</p>
<p>Porém, algumas construções não foram articuladas o suficiente para nos ausentar de algumas surpresas de roteiro, como o fato de Padme confessar que nunca deixará de cuidar de Anakin, sendo que não havia nenhum laço definido entre os dois que indicasse tamanha intimidade no "relacionamento" entre eles. Mais engraçado é que essa informação remete à nova trilogia, em uma tentativa agora de juntar as pontas nos três novos filmes, algo menos necessário e feito de maneira desajeitada.</p>
<p>Ainda que existam indícios que unem os contextos da série, o fato é que nem sempre histórias, para serem contadas por completo, exigem o conjunto de três episódios. Portanto é compreensível que se entenda o primeiro desses episódios do ponto de vista puramente comercial, pois, se analisarmos em que Episódio I contribui para a saga como um todo, constataremos que quase nada, pois a história é, no máximo, episódica, necessário para apresentar personagens (tal como Superman I), mas como estamos falando aqui de uma narrativa das origens de personagens já existentes por três filmes seguidos, acaba por perder a Força.</p>
<p>Ainda assim, alguns detalhes chegam a ser interessantes, e só. É curioso, por exemplo, notar a diferente postura dos Jedis frente a uma espera durante o conflito (o que por si só representa a postura frente à mesma Força). Ao mesmo tempo, se a intepretação de Ian McDiarmid como senador Palpatine não chega a ser primorosa, é envolvente e misteriosa o suficiente para dar as primeiras pistas de suas reais intenções (o melhor exemplo é seu sorriso disfarçado ao final de uma cena-chave da trama).</p>
<p>Outras cenas são pura diversão, como a corrida de podracers, que faz uma discreta homenagem à corrida de bigas de Ben-Hur.</p>
</section><hr/>
<span id="novo_branch_para_projetos_do_caloni_com_br" title="Novo branch para projetos do Caloni.com.br"/></span>
<section id="section_novo_branch_para_projetos_do_caloni_com_br">
<p class="title"><a href="2011-05.html#novo_branch_para_projetos_do_caloni_com_br">#</a> Novo branch para projetos do Caloni.com.br</p>
<span class="title-heading">Caloni, 2011-05-29<a href="2011-05.html"> <sup>[up]</sup></a> <a href="javascript:;" onclick="copy_clipboard('section#section_novo_branch_para_projetos_do_caloni_com_br')"><sup>[copy]</sup></a></span>
<p>Reestruturei meus projetos caseiros e coloquei todos em um branch no repositório do Assembla. A partir dele começarei a reestruturas os códigos de exemplo do saite, o deve facilitar o acesso. Para usuários do Bazaar, como eu, basta puxar o branch usando <a href="http://subversion.assembla.com/svn/caloni/trunk">seu endereço</a> usando o comando `bzr get`:</p>
<img src="img/novo_branch_para_projetos_do_caloni_com_br_nova_branch_bazaar_assembla.png"/>
<pre>
</pre>
<p>Para os usuários do Subversion, ou qualquer outro controle de fonte que consiga ler um branch feito em SVN, google for it.</p>
</section><hr/>
<span id="singularidades_de_uma_rapariga_loura" title="Singularidades de uma Rapariga Loura"/></span>
<section id="section_singularidades_de_uma_rapariga_loura">
<p class="title"><a href="2011-05.html#singularidades_de_uma_rapariga_loura">#</a> <a class="external" href="https://www.imdb.com/title/tt1013856">Singularidades de uma Rapariga Loura</a></p>
<span class="title-heading">Caloni, 2011-05-29 <a href="movies.html">movies</a><a href="2011-05.html"> <sup>[up]</sup></a> <a href="javascript:;" onclick="copy_clipboard('section#section_singularidades_de_uma_rapariga_loura')"><sup>[copy]</sup></a></span>
<p>O filme 9 - A Salvação se baseia em um curta anteriormente produzido. O resultado é que temos uma história curta o suficiente para ser contada em 10 minutos ser expandida em tediosos 79 minutos.</p>
<p>O que se aprende nesse filme é que não se deve estender uma história, a não ser que se saiba o que se está fazendo. Infelizmente, Manoel de Oliveira nos apresenta um filme completamente diferente com a mesma peculiaridade: parece mais longo do que deveria.</p>
<p>O que acontece é que, para gastar o tempo, a montagem ocupa um tempo que é gasto em imagens paradas (como o horizonte da cidade onde os personagens vivem, por mais de cinco vezes mostrado em amplos segundos), mas, mesmo que isso significasse alguma coisa na narrativa, como demarcar a passagem do tempo, isso não ocorre. Avesso ao extremo, a própria passagem do tempo, quando necessária, ou se traduz em meras palavras da boca do protagonista ou quase não se percebe, de forma que não é um item com que, aparentemente, a narrativa se preocupe.</p>
<p>Ainda assim, se apenas isso significasse algo mais na surpresa final do "conto de 90 minutos", valeria a pena. Infelizmente, o conto de Eça ainda parece ser uma melhor pedida.</p>
</section><hr/>
<span id="star_wars_episodio_ii_ataque_dos_clones" title="Star Wars, Episódio II: Ataque dos Clones"/></span>
<section id="section_star_wars_episodio_ii_ataque_dos_clones">
<p class="title"><a href="2011-05.html#star_wars_episodio_ii_ataque_dos_clones">#</a> <a class="external" href="https://www.imdb.com/title/tt0121765">Star Wars, Episódio II: Ataque dos Clones</a></p>
<span class="title-heading">Caloni, 2011-05-29 <a href="movies.html">movies</a><a href="2011-05.html"> <sup>[up]</sup></a> <a href="javascript:;" onclick="copy_clipboard('section#section_star_wars_episodio_ii_ataque_dos_clones')"><sup>[copy]</sup></a></span>
<p>A República começa a perder a força, e o desespero pela resolução da crise no Senado faz com que forças especiais sejam entregues ao Chanceler Palpatine. Como podemos ver, a história caminha em ritmo adequado para o ponto de encontro com o antes chamado Guerra nas Estrelas e rebatizado para Episódio IV.</p>
<p>O problema mais marcante do novo filme é o relacionamento entre o Jedi aprendiz Anakin (Christensen, chato) e a Senadora Amidala (Portman, adequada), cuja aproximação beira o tédio, pois, por melhor que seja a intenção do roteiro em unir os dois, os diálogos soam forçados e a interpretação de Christensen não ajuda em nenhum momento. Para piorar, Lucas aposta em clichês que soam datados e já não fazem mais parte do "ritual de acasalamento cinematográfico", como o momento em que ambos rolam na grama.</p>
<p>Mas tudo isso passa e caminhamos para o momento em que Anakin deve ir em busca da mãe, em uma melhor performance de Christensen, vital para a continuidade da saga. A trilha sonora já se torna tensa e pesada, e já não se utiliza da sutileza que vimos em Episódio I. Pelo contrário, uma das sequência de notas mais famosas do cinema podem agora ser ouvidas sem pudor, em meio a uma fotografia escura que representa adequadamente o estado de espírito do conturbado Padawan.</p>
<p>E por falar em estado de espírito, vale ressaltar que a presença de Yoda dessa vez é muitíssimo bem-vinda, e é dele que saem as melhores frases, que, embora soem vindas de um livro de auto-ajuda galáctico, cabem bem a um Jedi que já viveu o suficiente para dizê-las. E, vale dizer, a decisão na troca do boneco de plástico pela sua versão digital teve muito a acrescentar, seja nas cenas contemplativas como nas desejadíssimas cenas de Yoda em ação.</p>
<p>Aliás, a presença de Yoda é o que realmente dá tom ao clima da história como um todo, pois de Anakin apenas demarca o início de um declínio, as cenas em que vemos Yoda preocupado e receoso permanecem como o melhor resumo do que a narrativa quis trazer para que caminhássemos em direção ao inevitável desdobramento dessas preocupações.</p>
</section><hr/>
<span style="float: left;">
<a href="2011-04.html">[2011-04]</a>
<a href="2011-06.html">[2011-06]</a>
</span>
</div>
</div>
</section>
<footer class="footer">
<div class="container">
</div>
</footer>
</body>
</html>