# Se não instanciou o template não tem nada de errado

2024-07-03 tag_coding tag_ccpp ^

Considere este código:

struct Adapter1 { static const int Size = 10; };
struct Adapter2 { static const int NoSize = 10; };
template<typename Adapter> struct Size { int size() { return Adapter::Size; } };
int main() { }

Vai quebrar em que linha? Resposta: nenhuma. Isso porque não há uma instanciação de nenhum template Size e o compilador não tem código algum para validar. Tudo que ele sabe é que, uma vez instanciado Size seu tipo Adapter precisa ter um membro chamado Size compatível com um inteiro para que o método size() seja um código válido.

int main()
{
    Size<Adapter1> a1;
    int sz1 = a1.size();
    Size<Adapter2> a2;
    int sz2 = a2.size(); // error C2039: 'Size': is not a member of 'Adapter2'
}

Agora, sim. O código existe; não é mais apenas um "gabarito", termo que foi a tradução de template na primeira edição de A Linguagem de Programação C++ (agora até que faz sentido esse termo). E enquanto Size<Adapter1> gera um código 100% correto Size<Adapter2> não, pois seu único membro não se chama Size.


# Etchart Privado Rosé 2022

2024-07-05 tag_wine ^

Mais um pra coleção. Este Rosé é mais encorpado do que estou acostumado. Lembra um pouco o Torrontés no corpo, mas o aroma e o sabor são muito mais frutados. É bom para acompanhar queijos leves.


# Frieren: Beyond Journey's End

2024-07-10 tag_animes ^

A ideia do ponto de vista da passagem do tempo de uma elfa em comparação com as pessoas que ela convive é interessante. O anime parece que começa no final, quando a guilda que ela pertence derrota um demônio poderoso. Porém, a ideia é que seus amigos morrem e ela, imortal, continua a mesma.

Após alguns saltos de décadas na história ela adota uma pupila e ecos do seu passado heroico vão se tornando tema. Não dá para saber se esta será a fórmula (ao que tudo indica sim). O anime é muito bem desenhado e detalhado. Ele não precisa de muitos frames por quando você pode admirar por vários instantes cada cenário.

O humor é lento e a lógica do universo é de isekai, mas no lugar de lutas com poderzinho uma reflexão lenta, quase inexistente, sobre a vida.


# Bartender

2024-07-10 tag_animes ^

A atenção aos detalhes desta animação espirituosa sobre bebidas e quem as prepara nos faz esquecer do roteiro maniqueista que coloca essas duas meninas sempre na frente do personagem-título. A graça da história está de fato nos momentos em que ele prepara uma bebida que harmoniza com seu cliente e seu momento, mais pela beleza da dedicação do preparo do que pela construção da cena. Existe magia na construção de um drinque, e Bartender consegue captar e inclusive resgatar um pouco da história das bebidas icônicas e exóticas. Mas tudo não passa de uma farsa de diálogos manjados.


# Game of Thrones S03

2024-07-10 tag_series ^

Um pouco mais agitada que a temporada anterior, continua cozinhando em Banho Maria os desdobramentos da primeira, embora com um aproveitamento melhor do orçamento. Dragões crescidos e milhares de soldados soam verossímil em 2013. Encucado, perguntei para a IA a comparação de budget:

> Game of Thrones: around $10-15 million per episode

> Lord of the Rings (trilogy): around $94 million per film (or around $31 million per episode, assuming 3 episodes per film)

> The Rings of Power (Amazon Prime series): around $465 million for the first season (or around $52 million per episode, assuming 9 episodes per season)

O que torna ainda as obras baseadas em Tolkien relativamente mais caras que a série baseada nos livros de George R. Martim. E pelo menos os filmes de Peter Jackson com uma atuação muito melhor, bem escritos e dirigidos.

Não sei sobre Rings of Power, não consumo muito esse tipo de conteúdo.


# O que O Artista me diz em sua revisita?

2024-07-10 tag_movies ^

Um filme como poucos. Homenageia o cinema mudo ou qualquer pequena revolução na sétima arte, as perdas, os ganhos, com muito charme. A relação entre a nova atriz que chega e o velho ator que sai é muito mais que simbólica. Ele atua em cima de vários níveis e hoje pode ser visto sob outros aspectos, como a mudança social abrupta e o quão ele é doloroso para os da geração anterior. Ao mesmo tempo ele é fofinho, doce, engraçado e mantém um ritmo sem som invejável comparado com a maioria de filmes coloridos e em som.


# Cafayate Torrontés 2021 Etchart

2024-07-10 tag_wine ^

Esta garrafa mais cara da Etchart vendida no Hirota não é um reserva, pois querem manter os aromas da uva, e estava gostosa, mas acho que o melhor custo benefício ainda é o Torrontés jovem feito pela mesma bodega (a metade do preço) e pelo frescor e pelas mesmas notas, corpo, aroma. Não me cativei pelo branco reserva. Vale a degustação lado a lado, acredito.


# Cafayate Cabernet Sauvignon 2021 Etchart

2024-07-10 tag_wine ^

Já este, sim, me parece um reserva (10 meses) que vale cada centavo. Até porque não é muito caro. Ele tem um aroma característico de Cabernet com a marca registrada de Cafayate.


# Wired to Eat (Robb Wolf)

2024-07-11 tag_books tag_body ^

Os pilares de uma vida plena

Saúde alimentar, comunidade, exercícios, bom sono. Em conjunto estes são os pilares de acordo com Wired to Eat, um livro que tenta apresentar de maneira irreverente descobertas a respeito da alimentação moderna que pode estar causando surtos de doenças imunodeficientes como diabetes e alzheimer. A premissa está firmada em detalhes ocultos como nossa flora intestinal e como alimentamos as bactérias que queremos que floresçam. Mas não é só isso. O autor apresenta uma nova forma de criar uma dieta personalizada baseado em uma pesquisa que revelou que diferentes pacientes reagem à mesma forma de alimentação de formas diferentes. Por isso ele adota em seu livro uma limpeza corporal de 30 dias seguido por sete dias de experimentos com diferentes tipos de carboidratos cuja reação no corpo será medida pelo índice glicêmico no sangue, obtido pelo uso de medidores para diabéticos, hoje amplamente acessíveis, o que é um misto de ironia com satisfação usar a mesma ferramenta de pessoas doentes para entender nossa dinâmica digestiva antes de nós nos tornarmos os próximos (há espaço também para os que infelizmente já se encontram em algum quadro de diabetes, pelo que entendi).

Recortes

> Through an interesting set of circumstances, which you’ll hear about later in the book, the idea of a Paleo or ancestral diet made its way onto my radar, and out of abject desperation, I tried this seemingly wacky way of eating. This decision saved my life. All my health problems resolved in a matter of months. I shared this transformation with my doctors, including my gastroenterologist, rheumatologist, general practitioner, and therapist, all of whom said, “It’s great that you’re doing better, but it has nothing to do with your dietary changes.”

> In recent studies, hundreds of people were fed a variety of foods and their individual blood glucose responses were tracked over time. To everyone’s surprise, there was not a one-size-fits-all “best diet,” but rather massive variation, from person to person and in the types of foods each individual reacted favorably or negatively to.

> Understanding how we are wired to eat will remove the morality and guilt often associated with attempting dietary changes.

> Using the science of epigenetics, we will understand that our genes are not our destiny.

> By altering our sleep, food, exercise, and social connections, we will shift all the factors governing our metabolism in a way that makes success easy. Additionally, we will lean heavily on the latest behavior change insights, which support the idea that we are not all the same. Some people will find success by abstaining from certain trigger foods. Others will be able to moderate their intake of (rather than avoid completely) certain foods. After reading this book, and doing a little self-experimentation, you will know which strategy will work best for you. Once appetite and blood sugar are in check, you will find it easier to lose weight and prevent or reverse a number of health problems, ranging from obesity and diabetes to heart disease and neurodegenerative diseases like Parkinson’s and Alzheimer’s.

> We don’t “cheat” on our food. We do not need a “healthy relationship” with our food. We simply need to understand that there are consequences to our food choices. The mind-set surrounding the “cheating” mentality is almost a guarantee of failure and puts the focus in the wrong place, when the real problem is most likely a lack of love and connection. Now is the opportunity to change our minds and our lives.

> Living in close proximity to larger numbers of people as well as animals appears to have posed a significant immune challenge for our early agricultural ancestors. Reliance on starchy, low-nutrient foods such as grains also appears to have posed a significant challenge with regard to growth and nutrient deficiencies.

> Anthropologists have estimated that hunter-gatherers walked 5 to 10 miles most days.

> Social isolation is recognized as a huge stressor and appears to be a key piece of addictive behavior, including overeating.

> If there is one “simple” trick that will make better eating easy, it is fixing the neuroregulation of appetite.

> We have complex systems that monitor how much food we have taken in versus how much energy we have expended. Additionally, our body-fat level is monitored. These variables, which consider both our short-term and long-term energy status, determine our neuroregulation of appetite.

> Even if a plant tastes good to us, we will become bored of the food at some point because there are still toxins in things as benign as apples, carrots, and blueberries if we overeat them.

> The second reason for palate fatigue is somewhat the opposite of avoiding toxins and relates to optimizing nutrient intake in the form of vitamins, minerals, and other food-based nutrients such as polyphenolics (one of the likely health-promoting elements in chocolate and green tea).

> This is likely due to the fact that humans cannot consume more than about 35 percent of their calories from protein before suffering from protein toxicity.

> Fiber-rich carbohydrates tend to be the next most satiating, as they effect changes to the stomach’s mechanoreceptors, which communicate to the brain that we are filling our stomach.

> As we will see, some of these satiety studies look only at the short term (hours) when considering the satiety effects of various foods. This may be a bit misleading, as the effects of hormonal dysregulation and overeating play out over days, weeks, months, and years. Fat does not cause much stomach distension, but it is calorically dense and triggers the release of hormones that provide satiety over the longer haul.

> (...) junk carbs from the diet, which can hijack the neuroregulation of appetite and make us feel hungry.

> Anthropologist Jared Diamond makes the point that abandoning the hunter-gatherer life-way was perhaps the greatest mistake made in all of humanity.

> His reasoning is controversial but compelling: These new agriculturalists suffered a number of health problems unique to their new way of living. The accumulation of “stuff” allowed for the development of class structures and large-scale exploitation of people and the environment. Our path out of Eden has brought us to a literal existential crisis in which we now have the technology to destroy not only ourselves but most of life on the planet we call home.

> What on earth do sickle cell anemia and malaria have to do with health, weight loss, and food? Let me ask you a question: Is there any moral failing with people who have sickle cell anemia? No, clearly not, at least not due to the genetics which produce that condition. But the same processes that developed sickle cell anemia were at play in wiring our genetics to eat more and move less. You cannot moralize our desire to “eat all the food” any more than one could make a credible argument to lambast folks with sickle cell anemia. When faced with a stress, our species can adapt (like in the case of malaria), but it takes time and the adaptation comes at a cost. If, however, the rate of change is sufficiently rapid, we may not be able to cope effectively. This is the salient point of the discordance theory. Our genes are not identical to those of our hunter-gatherer ancestors; there are changes like sickle cell anemia and lactase persistence (the ability to digest the sugar found in milk), but these changes are incomplete in that some novel foods, like refined carbohydrates, still give us problems.

> This phenomenon has been well documented for decades and is called the dessert effect. Simply put, this is the observation that someone may claim to be full after a meal, commenting, “Oh, I cannot eat another bite!” only to eat much more than a bite once the dessert tray comes out. This is just the short-term effect of hyperpalatable complex foods.

> Serotonin gets a lot of airplay in the media due to its use in antidepressants such as Prozac (which increase the levels of serotonin in the brain), but dopamine is the key player in the hedonic (reward) centers of the brain and in drugs such as caffeine, nicotine, and cocaine.

> The people who figured out this game, the people who ate more and moved less, are the folks we call ancestors—the ones who didn’t die.

> Depending on the structure of a given protein, it can be easier or harder to digest. This is an important point we will consider when we look at food intolerances and food-borne immune responses such as celiac disease.

> For our purposes, we just need to be aware that carbs can come in the form of sugar, starch, or fiber and that depending on the makeup of a given food (its relative mix of sugars, starch, or fiber), it can create vastly different blood glucose responses.

> Our knowledge of digestion in general and our unique response to carbs in particular will influence our food choices to affect weight loss and improve our health.

> For some folks, simply seeing or smelling a dessert (or a damn tasty meal) can cause the release of insulin, which is a key hormone in health and body fat levels.

> The stomach is really a marvel of biological engineering, as it is host to an environment so acidic (the pH of the stomach should be around 2 to 2.5) that it can dissolve metals.

> This highly acidic environment begins the process of protein digestion in earnest, while starch and fat digestion will ramp up once we hit the small intestine.

> The contents of the stomach squirt into the small intestine and a number of processes occur simultaneously, including important roles by the pancreas and the gallbladder. Ideally, at the end of the process, carbohydrates in the form of starch are reduced to sugars (mainly glucose), while proteins are degraded into amino acids.

> In this stage, the proteins and carbohydrates can be absorbed at the intestinal wall and enter the circulation for a trip to the liver and eventually into the body, where they may be stored or used as energy or building blocks for the growth and repair of our bodies.

> Two critically important features of our digestive tract are structures called villi and microvilli. These finger- and hairlike structures increase the surface area of the gut, thereby increasing its ability to absorb nutrients, and play a crucial role in the digestive process.

> If the gut lining is not fully intact, amino acids and sugars can still be absorbed (albeit inefficiently), but fats will not be absorbed. This can be a serious problem, as a remarkable number of nutrients—antioxidants, beta-carotene, etc.—can only be absorbed by the body when eaten with fat (a fact those preaching low-fat diets often overlook).

> Undigested fat that makes its way into the large intestine and colon can have…”remarkable” consequences. The medical term is diarrhea, but around the Wolf household we like to call that “disaster pants.”

> In general, we see more absorption occur in later sections of the small intestine. The consumption of highly refined foods can alter this process, causing more nutrients to be absorbed early and effectively starving the gut bacteria later in the GI tract.

> Undigested fiber and a wide variety of starches called resistant starch are the primary food source for our gut bacteria. The bacteria ferment these starches and fibers, producing certain vitamins and a not insignificant amount of short-chain fatty acids, which not only feed the cells of the gut but can also make their way into our circulatory system and play a role in our own energy needs.

> Problems in the digestive process (such as low stomach acid) can leave large intact food pieces present in the “southbound” regions of the GI tract, and this can stimulate the growth of bacteria that are not benign to our health.

> (...) bacteria growing in the wrong places (as happens when we eat large amounts of refined carbs, which stimulates the growth of bacteria inappropriately in some places and starves bacteria in other regions).

> Hormones are chemical messengers released into the circulatory system by specific glands or tissues.

> When a hormone has bonded to its receptor site, we generally see a change in DNA expression in a given cell, which means we will see changes in how certain proteins are produced within the cell, and this is how we change our physiology.

> When our cells do not respond properly to insulin (insulin resistance) our blood sugars tend to rise too high after a meal.*1 The unfortunate side effect is that blood sugars tend to then crash to abnormally low levels, leaving us shaky, hungry, and irritated, what I and others have taken to calling “hangry” (hungry + angry = hangry).

> In general, carbohydrate releases the largest amount of insulin on a calorie-by-calorie basis, with protein releasing (generally) less insulin and fat releasing a relatively small amount.

> There are some exceptions to this, as certain proteins and amino acids do stimulate the release of large amounts of insulin.

> Glucagon is insulin’s counter hormone. Released by hunger and also by protein, it is able to convert proteins in the body to glucose via a process called gluconeogenesis.

> In short, insulin helps to store nutrients in the body, while glucagon helps to liberate those fuels.

> Adrenaline is released under a number of circumstances: physical (or psychological) threat, physical activity, and hunger

> (...) adrenaline increases blood glucose levels by stimulating the liver.

> It’s important to note the sensitivity hormones have for their receptors, as many of the pathologic conditions we will consider have, at their core, a state of resistance on the part of the hormone’s desired action.

> When insulin goes up after a meal, it begins effecting metabolic changes, and one of those changes is a decrease in the number of insulin receptors. This is a normal process unless insulin becomes chronically elevated and the individual’s body greatly reduces the number of insulin receptors and thus becomes insulin resistant.

> This process of down regulation or resistance can happen with any hormone and is again part of the feedback loops that keep our physiology working effectively.

> (...) the action of glucagon on insulin sensitivity is an interesting case in point: glucagon tends to increase insulin sensitivity.

> You simply need to know that in the insulin-resistant state in which glucose levels are elevated, increased glucagon levels do play a part in attempting to improve insulin sensitivity

> Cortisol has a number of functions, including aiding in blood sugar control and modulating inflammation and immune response.

> Under normal circumstances, a relatively high level of body fat should suppress our appetite, while low levels increase appetite.

> Calorie restriction or fasting appears to be quite beneficial, as some of our cells can sustain damage over time that induces a state called senescence. In this condition, cells are technically alive, but they are not behaving as they should. Under ideal conditions a cell that becomes damaged will undergo a process called apoptosis and do us the favor of dying and being recycled. In certain circumstances, however, these senescent cells can become cancerous and/or produce large amounts of inflammation, which increases our likelihood of a host of diseases, including cancer, cardiovascular disease, and neurodegeneration. If calorie restriction and/or fasting are of sufficient magnitude and duration, we enter a state called starvation ketosis, whereby our metabolism shifts from a primarily glucose-based fuel to being fueled by free fatty acids and ketones.

> (...) most practitioners are unfamiliar with the difference between ketosis (induced by calorie restriction, fasting, or a low-carb, moderate-protein, high-fat diet) and ketoacidosis, which is a state of significantly elevated ketones generally seen in poorly controlled diabetics.

> Excess fat increases the inflammatory signaling in our body, which, unfortunately, accelerates the cascade of problems related to elevated blood glucose. This is particularly true when fat is deposited in two key locations: the liver and around the visceral organs.

> Elevated blood glucose can be toxic to the brain, kidneys, and capillaries. So in a fascinating adaptive response, our bodies convert the highly reactive molecule glucose into fat.

> Although excess body fat can have problems of its own, elevated blood glucose can kill us quite rapidly.

> The brain becomes leptin resistant and the muscles become insulin resistant. This fools the brain and the liver into believing we are starving.

> Under normal circumstances, the mitochondria, and by extension our metabolism, should be very flexible in shifting between fat and carbohydrate as a fuel. Unfortunately, the damage created by the overfed state can impair our ability to use fat as a fuel source, which makes us all the more dependent on carbohydrates

> “The Gut-Brain Connection, Mental Illness, and Disease: Psychobiotics, Immunology, and the Theory of All Chronic Disease,” was written by my good friend Emily Deans, MD.

> Is what we eat inside or outside of our body? Seriously! Have you ever thought about this?! The answer to this question may seem obvious. Of course what I’ve eaten is inside my body. But the truth is that we have a tunnel from our mouth directly to our PEP (Posterior Exit Port), so the contents of that tunnel are in fact outside the body.

> Here are some key observations that support the Hygiene Hypothesis: 1. The gut bacteria of non-Westernized populations appears to be quite different from that of most Westernized populations. Western populations have much less bacterial diversity in general and appear to be lacking a significant number of species common to non-Westernized populations. 2. Children in Westernized societies who are raised around animals and on farms appear to have a gut bacterial profile far more diverse than those who are not. Their microbiome may not be as varied as the one seen in non-Westernized populations, but is significantly different from that of individuals born and raised in urban settings. 3. The likelihood of the two aforementioned groups to develop allergies, autoimmunity, and inflammatory bowel issues is much lower than that of the folks with what we’d call “Western guts.”

> Ancestral diets that are rich in a wide variety of fibers appear to provide a form of carbohydrate that is not broken down by the action of our digestive enzymes, but instead feeds the bacteria in our large intestine and colon. Bacteria convert certain types of fiber to short-chain fatty acids, which appear to play an important role in feeding the intestinal cells while also decreasing inflammation throughout the body. Additionally, and really to the point of the paper, cellular carbohydrate, like that found in fruits, vegetables, roots, beans, and whole grains are packaged in such a way that their digestion is slow, and this appears to “save” the carbohydrate for digestion later in the digestive tract. By contrast, refined carbohydrate alters the digestive system by encouraging the abnormal growth of bacteria in the small intestine (SIBO), while also encouraging the growth of pathogenic bacteria in the large intestine and colon.

> Although less severe (at least initially) the development of SIBO and changes in our microbiota allow for abnormally large amounts of LPS to make its way into our circulation. While these levels are not as high as those seen in life-threatening sepsis, it establishes a chronic inflammatory state that increases risk for cardiovascular disease, neurodegeneration, and a host of other conditions.

> Studies of Western versus non-Westernized populations show striking differences in not only disease rates and risks, but also levels of inflammatory markers and the hormones governing the neuroregulation of appetite. Ancestral diets show a remarkable spread in macronutrient profiles. Some are rather low carb, while others may be as high as 70 percent carbohydrate. This spread in macronutrients appears to have little if any impact on health so long as the foods are largely unprocessed and the carbohydrates come mainly from fruits, vegetables, and tubers.

> (...) researchers have taken the gut biome from obese mice and inoculated lean healthy mice with the altered gut profile. The result? The healthy mice gained weight and became insulin and leptin resistant.

> A grazing animal that consumes some ripe grain may in fact pass most of the seeds intact through its digestive system, and this is due in part to the enzyme inhibitors. This can be problematic as these enzyme inhibitors may negatively affect the digestion and absorption of other foods,

> You can watch Dr. Wahls’s amazing TED Talk by searching for “Minding Your Mitochondria.”

> Refined (acellular) carbohydrates appear to negatively alter gut bacteria, causing overgrowth in the small intestine (SIBO) while starving the bacteria in the colon and large intestine.

> The infant gut is naturally permeable, which allows the large, intact proteins found in breast milk to make their way into the infant body, tuning the immune system and setting us up for success. Early exposure to foods other than breast milk dramatically increases the likelihood of allergies and reactivity to foods, as the highly permeable infant gut is ill prepared to deal with these novel foods.


# Ajoomma - Uma Viagem Inesquecível

2024-07-15 tag_movies ^

A confusão de idiomas e o Lost in Translation é a maior parte da diversão nesta comédia de situação onde uma senhora se vê perdida em um país estrangeiro sem meios de se comunicar com seu filho. Mas o filme perde muito tempo explicando como tudo vai acontecer, se esquece de respirar ou de contar uma história.


# Fora da Lei

2024-07-15 tag_coffee ^

Esta cafeteria foi a surpresa do fds depois de ter sido apresentado a alguns de seus grãos como convidados na Kiki Café no bairro do Ipiranga (vale a visita). Já o Fora da Lei fica localizado na região da Paulista próximo do metrô Paraíso, em uma rua agradável e tranquila. Lá reside um experimento bem sucedido de uma série incrível de não um, nem dois, mas mais de cinco grãos de cafés especiais disponíveis para espresso! Tive que experimentar alguns na primeira visita, inclusive o da casa, bem equilibrado e um bom ponto de partida se quer conhecer mais sobre cafés especiais (além do Eclipse, um pouco mais forte no paladar). De comida só provei o pão na chapa e o pão de queijo, ambos ótimos para acompanhar um bom café. Ao final da minha degustação de quatro espressos tive o prazer de experimentar um quinto espresso no estilo naked, sem o porta filtro, o que pode ser uma nova forma de experimentar com um novo grão (visualizar canalização, por exemplo) e no meu caso me fez pensar o quanto a cremosidade de um espresso é importante no sabor final. Eu particularmente achei os espressos degustados com o porta filtro mais intensos, mas por outro lado esse gentil experimento da casa me possibilitou enxergar parte do processo de finalização de um perfil sensorial de uma nova torra, por exemplo. Não há respostas definitivas no mundo complexo do café, sobretudo do espresso, e é isso que o torna tão fascinante aos amantes da bebida. O fato é que estou muito contente de ter conhecido esta cafeteria e seus baristas. Espero voltar mais vezes.


# Asciidoc the worst?

2024-07-15 tag_blogging ^

Tentei por um tempo assimilar a ideia de usar o formato asciidoc como o padrão para meu novo arquivo-fonte do blog e de futuros livros. O racional era óbvio: feito para a escrita de documentos mais complexos, Asciidoc seria uma mudança para longo prazo, muito mais robusta que Markdown e suas mil e uma versões.

No entanto, minha última leitura do padrão para começar a transformar o texto me fez realizar que este padrão está bem longe de ser adotado de fato. Ele é bom apenas na teoria, mas na prática todas ferramentas e ambientes usam Markdown como o idioma franco. Não exatamente à toa. Ele já estava sendo construído ao longo de milhares de mensagens na usenet antes mesmo do HTML ter sido criado. Ele é simples e pode ser implementado em apenas um arquivo perl (como foi no início). E ele está pronto para ter uma definição não-ambígua, o CommonMark.

O que ele não tem que é necessário para a construção de um livro são metadados, notas de rodapé e referências cruzadas para índices remissivos. A boa notícia é que isso nem é tão difícil assim de integrar graças à flexibilidade do uso de links:

# Asciidoc the worst?
[date]:# "2024-07-15"
[tags]:# "tag_blogging tag_books"
Tentei por um tempo assimilar a ideia de usar o formato asciidoc como o padrão para meu novo arquivo-fonte do blog e de futuros livros.
Markdown já está pronto para ter uma definição não-ambígua, o [CommonMark].
O que ele não tem que é necessário para a construção de um livro são metadados (como a data e as tags vista acima), notas de rodapé <sup>[1]</sup> e [referências] cruzadas <sup>[2]</sup> para índices remissivos. A boa notícia é que isso nem é tão difícil assim de integrar graças à flexibilidade do uso de links:
[CommonMark]: https://commonmark.org/
[1]:# "Esta é a única maneira quase universal dessas notas em MD, mas até que não é tão ruim assim."
[referências]:#
[2]:# "A referência acima serve apenas para documentar o desejo de uma entrada em um índice remissivo com outras menções à mesma palavra."

As vantagens do Markdown como lingua franca ultrapassam em muito a teórica robustez de um padrão como Asciidoc que está muito longe de ser suportado amplamente. E há um motivo para isso: ele abrange muitas formas de estruturar texto e dá muito trabalho para textos curtos. MD acaba sendo um equilíbrio sensato entre o que é usado no dia-a-dia da comunicação textual da internet e alguma forma de escalar formatação e estrutura em textos maiores e complexos.


# Mielina [link]

2024-07-15 tag_body tag_self ^

Quando nos esforçamos para aprender algo novo uma nova conexão sináptica é criada, uma nova "perninha" em um neurônio. Essa atividade comumente é cansativa, pois além de tentativa e erro, energia, tempo e repetidos esforços para construir um comportamento ou assimilar uma informação são necessários. A criação de apenas uma dessas perninhas já é um esforço significativo, aprender algo novo exige muitas repetições e muitas dessas perninhas se tornam mais fortes se coberturas de lipídios (gordura) forem construídas em volta, o que agiliza e potencializa o tráfego de elétrons. Este fenômeno realmente existe para cobrir os axônios, os canais de comunicação entre neurônios, fortalecido por repetição. Esses canais de gordura são chamados de bainha de mielina e acontecem naturalmente quando a pessoa está envolvida repetidamente na mesma tarefa, sem troca de foco, por mais tempo. O cérebro "entende" que o canal sendo criado é mais importante e constrói as estruturas de mielina que irá privilegiar e proteger o novo comportamento e informação em detrimento de outros caminhos.


# Mock de Timer em Moq

2024-07-17 tag_coding ^

Acabou o dia e ainda não consegui terminar este mock dos infernos. Estou tentando criar o primeiro exemplo que usa dois wrappers nunca antes *mockados* (incluindo um timer), mas ficou faltando mockar o `System.Timer`. O teste já funciona, mas ele é obrigado a dar um *sleep* pra esperar o timer terminar.

O método que precisa ser testado é chamado como trigger deste timer. O teste constroi o objeto e chama um outro método de início que inicia o timer. O teste é quando o timer dispara a chamada do *callback*.

class A {
  init() {
	timer.init(callback);
  }
  callback() {
	// code to be tested
  }
}
Test() {
A a;
a.init();
}

Meu objetivo era que na chamada de `timer.init()` ele já rode o callback.

Mockar o timer foi a primeira ideia que me deram no stack overflow. Podem haver outras ideias. O cara do Stack Overflow falou que o timer do dotnet não dá essa flexibilidade, então teria que criar um adapter.

Daí eu achei um wrapper já no código e tentei modificá-lo, mas o evento contido no timer original não é acessível nem chamável e é preciso mexer nos paranauê do wrapper ou achar outro caminho.

Uma ideia que meu amigo Fábio deu seria ser um timer genérico e implementar o comportamento em cima dele, mas isso eu já tenho no codebase. O wrapper pode ser usado para isso (ou uma cópia dele). Eu parei justamente nessa parte, mas escrever o código com o a biblioteca Moq é que é o parto. Seus exemplos são para usos comuns e aparentemente mockar um timer não é um uso comum.

Esses resultados da internet me fazem pensar que estou indo no caminho errado (se não é comum, tá errado).

> Fabio: Se ele é um wrapper por que você não faz a classe crua do zero onde fica tudo sequencial e passa ele para a classe final.

>

> Caloni: Boa!

Você, caro urso, me deu uma ideia: simplificar a interface de start do `TimeWrapper` (esse é o nome da classe no basecode) e usar o resultado como uma implementação dummy, mas acho que já pensei num jeito de resolver que é ligeiramente diferente: ao final da tarefa ele chama um `timer.Restart` e daí é só ir acumulando estado.

Fiz desse jeito, que ficou bem tosco para falar a verdade, mas só de comentar na issue o TL já deu o toque pra funcionar direito. Tem que usar esta construção bizarra:

_timer.Raise(m => m.Elapsed += null, new EventArgs() as ElapsedEventArgs);

Com isso não precisa construir nenhuma classe e disparar o mock do `TimerWrapper` quando quiser.

A variável `_timer` no caso é um `Mock<TimerWrapper>` e o método `Raise` pode ser usado para disparar eventos. Isso resolve esta saga.

A próxima seria entender o que é necessário para que o Visual Studio pare de reclamar que `new EventArgs() as ElapsedEventArgs` pode ser null. Bom, ele pode mesmo. Porém, não tem como construir um `ElapsedEventArgs` sozinho no código. Ideias?


# Rafael Leite (Xadrez Brasil)

2024-07-17 tag_quotes tag_self ^

> Seu corpo é uma máquina bioquímica, você pode produzir a química e o estado que você quiser, sem usar drogas, que viciam e danificam as células. Aprenda sobre respirações, meditação e outras técnicas para que você viva o estado que procura de maneira saudável, sem depender de nada ou de ninguém. Em frente meu amigo, tenho certeza de que o mundo voltará a ser colorido para você. Forte abraço!


<< >>