<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Carlos Gonçalves</title>
	<atom:link href="https://cgoncalves.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://cgoncalves.com</link>
	<description>Simplificando o .NET</description>
	<lastBuildDate>Mon, 22 Nov 2021 07:52:15 +0000</lastBuildDate>
	<language>pt-PT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Trabalhe por dinheiro, nunca por amor! O tal &#8220;salário emocional&#8221;</title>
		<link>https://cgoncalves.com/2021/trabalhe-por-dinheiro-nunca-por-amor-o-tal-salario-emocional/</link>
					<comments>https://cgoncalves.com/2021/trabalhe-por-dinheiro-nunca-por-amor-o-tal-salario-emocional/#respond</comments>
		
		<dc:creator><![CDATA[Carlos Gonçalves]]></dc:creator>
		<pubDate>Mon, 22 Nov 2021 07:52:13 +0000</pubDate>
				<category><![CDATA[Opiniões, Ideias e Pensamentos]]></category>
		<guid isPermaLink="false">https:/?p=792</guid>

					<description><![CDATA[<p>O assunto de hoje é um tanto ou quanto polémico, trabalhe por dinheiro, nunca por amor e o tal de...</p>
<div><a href="https://cgoncalves.com/2021/trabalhe-por-dinheiro-nunca-por-amor-o-tal-salario-emocional/" class="btn"><span>Read more</span></a></div>
<p>The post <a href="https://cgoncalves.com/2021/trabalhe-por-dinheiro-nunca-por-amor-o-tal-salario-emocional/">Trabalhe por dinheiro, nunca por amor! O tal “salário emocional”</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>O assunto de hoje é um tanto ou quanto polémico, <strong>trabalhe por dinheiro, nunca por amor</strong> e o tal de salário emocional. Anteriormente falei sobre <strong><a href="https:/como-explicar-que-nao-existem-almocos-gratis">Como explicar que não existem almoços grátis</a></strong> mas hoje vamos mais direto ao ponto.</p>



<p>Decidi fazer este artigo pois vi vários posts no LinkedIn sobre isso, sendo um deles do <a href="https://www.linkedin.com/posts/urldobruno_jogo-activity-6851483151089324032-x-bx">Bruno Lacerda</a> sobre o tema.</p>



<h2 class="wp-block-heading">O que é esse tal de Salário Emocional?</h2>



<p>Falamos de salário emocional quando nos referirmos às vantagens que as empresas oferecem aos funcionários para &#8220;melhorar&#8221; os seus níveis de satisfação no trabalho sem que isso signifique realmente um&nbsp;aumento salarial.</p>



<p>Com isto as empresas esperam <strong>reduzir a rotatividade dos funcionários</strong>,&nbsp;bem como tentar <strong>aumentar a sua eficiência</strong>. </p>



<p>O que nos leva a um novo conceito de&nbsp;<strong>Felicidade Interna Bruta (FIB)</strong> da empresa que, basicamente, avalia o índice de bem-estar dos funcionários.</p>



<p>Esse conceito, defende afincadamente a ideia de salário emocional como um complemento ao salário que é oferecido pela empresa.</p>



<h2 class="wp-block-heading">Minha Opinião sobre Salário Emocional</h2>



<p>Para mim, chega a ser ridículo o discurso de muitas empresas sobre o tema para justificar os baixos salários que proporcionam em troca do tal &#8220;bem estar emocional&#8221;.</p>



<p>É claro que tem que ter um ambiente agradável e, no mínimo, adequado pra se trabalhar, mas tem que, obrigatoriamente, vir com uma remuneração de acordo com a função e justa.</p>



<p>Uma coisa básica que deveria ser ensinado nas escolas, e que muitas pessoas esquecem é sobre qual é o fundamento básico de qualquer empresa / emprego, que é, simplesmente <strong>GANHAR DINHEIRO</strong>! O trabalho foi feito para recebermos uma contrapartida monetária em troca do nosso esforço, das nossas competências e em troca do valor que podemos gerar para uma empresa ou alguém.</p>



<p>Apenas e só isso: <strong>contrapartida monetária</strong>.</p>



<p>E não, não é por fazeres o que gostas que está garantido que sejas reconhecido e remunerado acima da média. O que vai definir isso são os teus resultados. Sendo bem pragmático, ninguém sobrevive a fazer o que ama, se for extremamente mau a fazê-lo! Esta é a verdade que ninguém te conta!</p>



<p>O LinkedIn está cada vez mais inundado de posts que espalham a ideia que se &#8220;fizermos o que amamos, nunca mais teremos que trabalhar&#8221;, que precisamos amar o nosso trabalho, caso contrário seremos infelizes.</p>



<p>O trabalho não foi feito para amar, e é aqui que o problema começa, pois acabamos esquecendo efetivamente o conceito de trabalho e o conceito de amor.</p>



<p>E enquanto que o trabalho serve para ganhar dinheiro, o AMOR, isso é outra coisa! Uma coisa muito mais importante e especial<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2764.png" alt="❤" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="767" src="https://cgoncalves.com/wp-content/uploads/2021/11/IMG_20200723_071756-1024x767.jpg" alt="" class="wp-image-833" srcset="https://cgoncalves.com/wp-content/uploads/2021/11/IMG_20200723_071756-1024x767.jpg 1024w, https://cgoncalves.com/wp-content/uploads/2021/11/IMG_20200723_071756-300x225.jpg 300w, https://cgoncalves.com/wp-content/uploads/2021/11/IMG_20200723_071756-768x575.jpg 768w, https://cgoncalves.com/wp-content/uploads/2021/11/IMG_20200723_071756-1536x1150.jpg 1536w, https://cgoncalves.com/wp-content/uploads/2021/11/IMG_20200723_071756-2048x1533.jpg 2048w, https://cgoncalves.com/wp-content/uploads/2021/11/IMG_20200723_071756-256x192.jpg 256w, https://cgoncalves.com/wp-content/uploads/2021/11/IMG_20200723_071756-900x675.jpg 900w, https://cgoncalves.com/wp-content/uploads/2021/11/IMG_20200723_071756-1920x1437.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Enquanto andarmos a brincar aos cupidos do trabalho, que só amando o que fazemos que nos vai trazer a felicidade, vamos continuar reféns de tudo o que são apenas fugas.</p>



<p>O trabalho é o verdadeiro significado de ser adulto: não fazer o que nos apetece mas sim o que precisa ser feito.</p>



<p>Em suma, eu acredito que devemos <strong>trabalhar por dinheiro, nunca por amor</strong>, principalmente se o negócio for teu, mas que devemos <strong>trabalhar com &#8220;amor&#8221;</strong>.</p>



<p>Ou seja, deves ter dedicação ao que te destinaste a fazer. Se vais fazer, faz bem feito! </p>



<p>E tu, o que achas desse &#8220;<strong>salário emocional</strong>&#8220;?</p>
		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="792"
					data-ulike-nonce="4d5bf437a2"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_792"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+1"></span>			</div></div><p>The post <a href="https://cgoncalves.com/2021/trabalhe-por-dinheiro-nunca-por-amor-o-tal-salario-emocional/">Trabalhe por dinheiro, nunca por amor! O tal “salário emocional”</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://cgoncalves.com/2021/trabalhe-por-dinheiro-nunca-por-amor-o-tal-salario-emocional/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Desabafos estapafúrdicos de um programador &#8211; Parte 2</title>
		<link>https://cgoncalves.com/2021/desabafos-estapafurdicos-de-um-programador-parte-2/</link>
					<comments>https://cgoncalves.com/2021/desabafos-estapafurdicos-de-um-programador-parte-2/#respond</comments>
		
		<dc:creator><![CDATA[Carlos Gonçalves]]></dc:creator>
		<pubDate>Wed, 17 Nov 2021 08:35:07 +0000</pubDate>
				<category><![CDATA[Opiniões, Ideias e Pensamentos]]></category>
		<guid isPermaLink="false">https:/?p=584</guid>

					<description><![CDATA[<p>Já faz algum tempo que não colocava um artigo no site, por indisponibilidade pessoal. E nada melhor do que voltar...</p>
<div><a href="https://cgoncalves.com/2021/desabafos-estapafurdicos-de-um-programador-parte-2/" class="btn"><span>Read more</span></a></div>
<p>The post <a href="https://cgoncalves.com/2021/desabafos-estapafurdicos-de-um-programador-parte-2/">Desabafos estapafúrdicos de um programador – Parte 2</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Já faz algum tempo que não colocava um artigo no site, por indisponibilidade pessoal. E nada melhor do que voltar aos artigo e dizer o que tenho cá dentro com os meus desabafos.</p>



<p>Se perdeste a o último <a href="https:/2021/desabafos-estapafurdicos-de-um-programador/" title="https:/2021/desabafos-estapafurdicos-de-um-programador/">desabafos estapafúrdicos de um programador</a> podes ir vê-lo.</p>



<ol class="wp-block-list"><li>Recebo vários emails onde solicitam ajuda, mas a maioria esquece-se da regra mais básica para pedir ajuda, e acabam sem receber nenhuma resposta, enviando novo email a perguntar porque não receberam nenhuma resposta. A resposta é simples, se não demonstrares que tentaste fazer ou chegar a algo, <strong>não mereces ajuda</strong>;</li><li>Nos últimos tempos fiz alguns trabalhos de consultoria e decididamente abriu os meus olhos para diferentes formas de gerir projetos;</li><li>Às vezes quando estou a programar algo que realmente gosto fico bastante entusiasmado;</li><li>Dentro de duas semanas vou usufruir das minhas tão merecidas férias (duas semanas);</li><li>Várias pessoas julgam os nugets baseados na sua popularidade em vez da sua funcionalidade. <strong>Não confundam popularidade com funcionalidade e flexibilidade</strong>;</li><li>Não vejo nada de errado abrir links em novas abas. Queres que um PDF, um documento Word, ou um Excel abra na mesma aba? Muito menos se for a aba principal de um utilizador, pois esses vão de imediato fechar a aba em vez de apenas clicar em &#8220;voltar&#8221;. Se um link é usado apenas como referência ou link de apoio deve ser aberto numa nova aba;</li><li>Já morei e trabalhei no Brasil, e acho que na sua maioria os profissionais de TI de lá são mais capacitados, nem que seja pelo &#8220;jeitinho brasileiro&#8221; onde qualquer problema sempre tem uma solução criativa;</li><li>Relacionado com o item acima, às vezes tenho mais orgulho de uma boa &#8220;<strong>solução alternativa</strong>&#8221; do que a solução final. <strong>Um bom programador precisa ser inteligente</strong>;</li><li>O Brasil, no quesito de tecnologia bancária, está bem mais avançado que Portugal, na minha opinião. Acho o <strong>Nubank</strong> incrível ainda mais agora com a sua aquisição da <strong>Easy Invest</strong>, formando o <strong>Nu Invest</strong>;</li><li>A área Fintech é uma das minhas preferidas, existem sempre imensos desafios para resolver;</li></ol>



<p>Sabe bem fazer estes desabafos e deitar tudo cá para fora. Agora é a tua vez, comenta abaixo os teus desabafos…</p>



<p>Esperem por mais no futuro. Estou sempre cheio de aborrecimentos, além disso, sente-te à vontade para partilhares os teus desabafo!</p>
		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="584"
					data-ulike-nonce="74ed097a3c"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_584"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+1"></span>			</div></div><p>The post <a href="https://cgoncalves.com/2021/desabafos-estapafurdicos-de-um-programador-parte-2/">Desabafos estapafúrdicos de um programador – Parte 2</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://cgoncalves.com/2021/desabafos-estapafurdicos-de-um-programador-parte-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Como explicar que não existem almoços grátis?</title>
		<link>https://cgoncalves.com/2021/como-explicar-que-nao-existem-almocos-gratis/</link>
					<comments>https://cgoncalves.com/2021/como-explicar-que-nao-existem-almocos-gratis/#respond</comments>
		
		<dc:creator><![CDATA[Carlos Gonçalves]]></dc:creator>
		<pubDate>Thu, 28 Oct 2021 08:08:39 +0000</pubDate>
				<category><![CDATA[Opiniões, Ideias e Pensamentos]]></category>
		<guid isPermaLink="false">https:/?p=555</guid>

					<description><![CDATA[<p>Há algum tempo li um artigo do Henrique Arake, bastante interessante por sinal, que nos faz ver e perceber, que...</p>
<div><a href="https://cgoncalves.com/2021/como-explicar-que-nao-existem-almocos-gratis/" class="btn"><span>Read more</span></a></div>
<p>The post <a href="https://cgoncalves.com/2021/como-explicar-que-nao-existem-almocos-gratis/">Como explicar que não existem almoços grátis?</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Há algum tempo li um artigo do <strong>Henrique Arake</strong>, bastante interessante por sinal, que nos faz ver e perceber, que enquanto freelancer, empresário, trabalhador autónomo ou até mesmo funcionários, temos que cobrar por pequenas coisas, como diz no título “<a href="http://carreirasolo.org/respostas/legalize/como-explicar-que-nao-existe-almoco-gratis" target="_blank" rel="noreferrer noopener">Como explicar que não existe almoços grátis?</a>“.</p>



<p>Ao ler o artigo revi-me muitas vezes nele, apesar do foco ser para a advocacia, se mudarmos o termo serve perfeitamente.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><em>Recentemente, um colega de um colega me pediu uma &#8220;ajuda&#8221; com um assunto. Um assunto simples, trivial, que CERTAMENTE eu saberia responder de pronto. E, surpresa das surpresas, não era tão simples assim. Demandaria, pelo menos&#8230; PELO MENOS a leitura de alguns documentos e um pouquinho mais de investigação, mas que se ele pudesse marcar uma reunião mais tarde&#8230;&nbsp;</em></p><cite>Henrique Arake</cite></blockquote>



<p>Quantas vezes não fui contactado para ajudar numa “pequena coisinha”, numa dúvida num projeto, ou mesmo numa sequência de funções? Digo-vos, inúmeras vezes. Às vezes respondo, outras nem por isso, pois a maioria das vezes é por preguiça de quem pergunta.</p>



<p>Existem inúmeras comunidades de ajuda, como o <strong>Stack Overflow</strong>, onde a dúvida irá ter mais atenção, do que num email! Sem contar que, a partilha de conhecimentos é algo fundamental, pode existir mais pessoas com a mesma dúvida, e se todos seguíssemos a mesma filosofia, não haveria informação disponível.</p>



<p>Depois, se vemos que é algo mais complexo, e dizemos, vamos falar um pouco melhor, para percebermos melhor a dúvida, geralmente a resposta é:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>“Oh! É mesmo? Ah, então deixa né? Outra hora, então!” E eu quase que podia ouvir: “peço uma ajuda simples e esse ganancioso sem-vergonha já quer lucrar às minhas custas”</p><cite> Henrique Arake </cite></blockquote>



<h2 class="wp-block-heading">Sounds familiar?</h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Deixa eu contar uma novidade para vocês (particularmente aos advogados, médicos, arquitetos, publicitários, designers, dentistas, veterinários, etc.)… vocês estudaram pra C@#$%#@ pra se formar, adquirir conhecimento e expertise e, se são profissionais liberais, VIVEM disso!</p><cite> Henrique Arake</cite></blockquote>



<p>Pois é meus amigos, o conhecimento tem custos, é o ato de adquirir informações e saber trabalha-las, “<em><strong>uma informação sozinha não é conhecimento, é apenas um dado sem razão ou sem fundamento e sem nenhum objetivo</strong></em>“. E hoje em dia, o conhecimento tornou-se numa ferramenta que marca a diferença na nossa área.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Outra coisa, se a pergunta foi feita para você, é porque a resposta não é óbvia! Significa que o Google e a Wikipedia não foram suficientes! E se ela não é óbvia, significa que VOCÊ também não achará a resposta no Google e na Wikipedia (eu sei que vocês também fazem isso )! Então, camarada, você tem duas opções:</p><p>1 – Responder com a primeira coisa que te vier à cabeça! Afinal, você é um profissional, conhece do assunto e, mesmo que não tenha TANTA certeza sobre o conselho que está dando, ora essa, ele jamais saberá, certo?</p><cite>  Henrique Arake</cite></blockquote>



<p>Como diz o Henrique, “<em><strong>ERRADO! O que acontecerá é que ele tentará implementar sua solução, provavelmente dará errado, e seu filme estará queimado para sempre!</strong></em>“.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>2 – Explicar que a solução não é tão simples quanto parece e marcar uma reunião PROFISSIONAL para resolver o assunto.</p><p>Assim você terá tempo para investigar o assunto com profundidade, descobrirá que ele NÃO TE CONTOU TODOS OS DADOS NECESSÁRIOS ali na mesa do boteco. “O que? O cliente esconde informações que ELE julga não serem importantes?”</p><cite>  Henrique Arake </cite></blockquote>



<p>Infelizmente isso acontece com frequência.</p>



<p>Porém ao tomarmos essa atitude, não só estamos a ser corretos, profissionais, como estamos a salvaguardar-nos, pois se o “colega do colega” for financeiramente cauteloso e não quiser pagar pelos próprios problemas, então esse problema não é assim tão importante, e nós acabamos por não perdermos tempo, com algo que poderíamos aproveitar para aprofundar o nosso conhecimento ou mesmo a trabalhar.</p>



<p>Porém, o maior problema prende-se quando nós próprios esquecemo-nos da importância e do custo, seja ele monetário ou em termos temporais, do nosso conhecimento.</p>



<p>Faz um favor a toda a comunidade de tecnologia, <strong>COBRA PELOS TEUS SERVIÇOS</strong>!</p>
		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="555"
					data-ulike-nonce="93da55d385"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_555"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+2"></span>			</div></div><p>The post <a href="https://cgoncalves.com/2021/como-explicar-que-nao-existem-almocos-gratis/">Como explicar que não existem almoços grátis?</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://cgoncalves.com/2021/como-explicar-que-nao-existem-almocos-gratis/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>A mediocridade nunca vence</title>
		<link>https://cgoncalves.com/2021/a-mediocridade-nunca-vence/</link>
					<comments>https://cgoncalves.com/2021/a-mediocridade-nunca-vence/#respond</comments>
		
		<dc:creator><![CDATA[Carlos Gonçalves]]></dc:creator>
		<pubDate>Sat, 23 Oct 2021 10:56:30 +0000</pubDate>
				<category><![CDATA[Opiniões, Ideias e Pensamentos]]></category>
		<guid isPermaLink="false">https:/?p=525</guid>

					<description><![CDATA[<p>Vivemos numa época de constante mudança. Mesmo os profissionais de maior sucesso são obrigados a redefinir-se a fim de defenderem...</p>
<div><a href="https://cgoncalves.com/2021/a-mediocridade-nunca-vence/" class="btn"><span>Read more</span></a></div>
<p>The post <a href="https://cgoncalves.com/2021/a-mediocridade-nunca-vence/">A mediocridade nunca vence</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Vivemos numa época de constante mudança. Mesmo os profissionais de maior sucesso são obrigados a redefinir-se a fim de defenderem a sua posição no mercado. Se eles não o fizerem, serão apanhados desprevenidos e ultrapassados, por fim irão pertencer ao grupo da mediocridade e, eventualmente, acabarão por sair do mercado, devido aos ambiciosos rivais.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>A riqueza flui directamente da inovação e não da optimização&#8230; a riqueza não é adquirida através do aperfeiçoamento do conhecido.</p><cite>Desconhecido</cite></blockquote>



<p>É ingénuo da tua parte se simplesmente ficares sentado à espera que as coisas (seja um trabalho, oportunidade, cliente, e por aí vai) venham ter contido e acreditares que os teus concorrentes não estão a fazer nada para poder roubar a tua parte de mercado. Existem várias formas de correr atrás do que queres quando tens objetivos bem definidos (já escrevi sobre <strong><a href="https:/2021/barreiras-e-obstaculos-o-bicho-de-7-cabecas/">As Barreiras e Obstáculos</a></strong>).</p>



<p>Como sabem, vivemos numa era onde a concorrência é muito grande, pois além de competirmos com outros profissionais, temos também que competir com inúmeras empresas (vulgo <em>outsourcing</em>), portanto perder oportunidades está fora de questão.</p>



<p>Talvez ainda não tenhas percebido, mas em algum lugar, um dos teus concorrentes acabou de ter uma ideia brilhante, terminou uma especialização, estudou, evoluiu e vai conquistar uma parte da tua quota de mercado. Se tiveres sorte, vais te aperceber disso e no momento certo serás capaz de tomar as medidas adequadas para que isso não aconteça. Se não tiveres sorte, só te vais aperceber quando for tarde demais.</p>



<p>Então, se não tiveres constantemente a procurar novas ideias, inovar, aprender, evoluir e estudar vais ficar para trás!</p>



<p>Na nossa área, só podemos ter sucesso se formos capazes de pensar de forma diferente. O futuro pertence a quem não tem medo de assumir riscos. <strong>O futuro pertence àqueles que aproveitam a oportunidade para fazer exactamente isso</strong>.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Se estamos dispostos a assumir um risco, há teoricamente uma possibilidade de que podemos alcançar resultados diferentes, descobrir um nicho, criar um monopólio temporário e ganhar dinheiro.</p><cite>Desconhecido</cite></blockquote>



<p>O &#8220;<strong>normal</strong>&#8221; e a &#8220;<strong>média</strong>&#8221; são cada vez mais símbolos de mediocridade, não só um serviço medíocre mas também um profissional medíocre, <strong>uma empresa medíocre</strong>. Basta vermos a generalidade das empresas e como são os seus gestores, projetos, entregas, processos, cultura (ou ausência dela). É raro encontrar um profissional bem-humorado, capacitado, pois muitos deles são figuras tristes que vestem-se de forma idêntica a tantos outros, sem vontade de serem diferentes, de inovar.</p>



<p>E qual é o resultado? Quem tem a mesma abordagem e pensa exactamente da mesma maneira, irá forçosamente criar soluções idênticas. E os clientes? Eles punem a conformidade e a uniformidade dos serviços com a mais dura punição possível, simplesmente vão procurar o preço mais baixo.</p>



<p>Lembrem-se &#8220;<strong><em>para serem bem sucedidos, têm que ser diferentes.</em></strong>&#8220;</p>
		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="525"
					data-ulike-nonce="5539e8576e"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_525"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+2"></span>			</div></div><p>The post <a href="https://cgoncalves.com/2021/a-mediocridade-nunca-vence/">A mediocridade nunca vence</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://cgoncalves.com/2021/a-mediocridade-nunca-vence/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Desabafos estapafúrdicos de um programador</title>
		<link>https://cgoncalves.com/2021/desabafos-estapafurdicos-de-um-programador/</link>
					<comments>https://cgoncalves.com/2021/desabafos-estapafurdicos-de-um-programador/#respond</comments>
		
		<dc:creator><![CDATA[Carlos Gonçalves]]></dc:creator>
		<pubDate>Tue, 12 Oct 2021 09:51:00 +0000</pubDate>
				<category><![CDATA[Opiniões, Ideias e Pensamentos]]></category>
		<guid isPermaLink="false">https:/?p=551</guid>

					<description><![CDATA[<p>Ando um pouco aborrecido, então achei por bem fazer um post sobre alguns desabafos relacionadas com a Web Development: Olho...</p>
<div><a href="https://cgoncalves.com/2021/desabafos-estapafurdicos-de-um-programador/" class="btn"><span>Read more</span></a></div>
<p>The post <a href="https://cgoncalves.com/2021/desabafos-estapafurdicos-de-um-programador/">Desabafos estapafúrdicos de um programador</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Ando um pouco aborrecido, então achei por bem fazer um post sobre alguns desabafos relacionadas com a Web Development:</p>



<ol class="wp-block-list" type="1"><li>Olho para algumas expressões regulares mais avançadas, como se estivessem escritas em chinês. Preciso de algum tempo para compreendê-las;</li><li>Prefiro muito mais trabalhar em server-side;</li><li>&nbsp;Para aqueles que realmente amam o seu trabalho, como eu, <strong>considera-te cheio de sorte</strong>. Há dias que são uma luta para alguns de nós;</li><li>A <strong>falta de responsabilização que vejo em alguns programadores deveria ser considerada um crime</strong>. Levam semanas para fazer actualizações básicas ou cobram valores exorbitantes para corrigir problemas que eles próprios criaram. Absolutamente chocante;</li><li>O inverso também se aplica, a <strong>falta de responsabilização que vejo em algumas empresas deveria ser considerada um crime</strong>. Querem tudo pelo preço da chuva, e algumas ainda se acham no direito de exigir coisas para as quais não pagam. Há dias complicados;</li><li>Nunca fui, nem sou um grande fã de pseudocódigo. Percebo qual é o seu objectivo, mas prefiro trabalhar com isso na minha cabeça;</li><li>Considero que é uma vantagem trabalhar e poder levar o meu trabalho para casa, porém também considero uma enorme desvantagem;</li><li>Acho ridículo contratar programadores só porque &#8220;são baratos&#8221; mesmo sem terem qualidade. Quase sempre, menos é mais. Geralmente nestes casos, o que se poupa no imediato gasta-se o dobro no futuro;</li><li>Uma coisa que a pandemia do COVID-19 nos ensinou, é que é possível trabalharmos de forma remota. Acho ridículo quando vejo notícias como <a href="https://www.idealista.pt/news/imobiliario/escritorios/2021/04/12/46911-google-obriga-trabalhadores-a-voltar-a-trabalhar-no-escritorio-em-setembro">Google obriga trabalhadores a voltar a trabalhar no escritório em setembro</a> ainda por mais vindo de grandes empresas como a Google;</li><li>A pandemia COVID-19, revolucionou muito o mercado de trabalho, o que antes era apenas um &#8220;benefício&#8221; em algumas empresas poderem trabalhar de forma remota, agora é bastante comum;</li></ol>



<p>Esperem por mais no futuro. </p>



<p>Estou sempre cheio de aborrecimentos, além disso, sente-te à vontade para partilhares os teus desabafos!</p>
		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="551"
					data-ulike-nonce="4eb59504fa"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_551"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+2"></span>			</div></div><p>The post <a href="https://cgoncalves.com/2021/desabafos-estapafurdicos-de-um-programador/">Desabafos estapafúrdicos de um programador</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://cgoncalves.com/2021/desabafos-estapafurdicos-de-um-programador/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programadores, não ignorem o ano do copyright</title>
		<link>https://cgoncalves.com/2021/programadores-nao-ignorem-o-ano-do-copyright/</link>
					<comments>https://cgoncalves.com/2021/programadores-nao-ignorem-o-ano-do-copyright/#respond</comments>
		
		<dc:creator><![CDATA[Carlos Gonçalves]]></dc:creator>
		<pubDate>Tue, 05 Oct 2021 08:39:10 +0000</pubDate>
				<category><![CDATA[Opiniões, Ideias e Pensamentos]]></category>
		<guid isPermaLink="false">https:/?p=573</guid>

					<description><![CDATA[<p>Manter o teu site atualizado é extremamente importante quando o objetivo é aumentar o tráfego. Uma forma rápida e fácil...</p>
<div><a href="https://cgoncalves.com/2021/programadores-nao-ignorem-o-ano-do-copyright/" class="btn"><span>Read more</span></a></div>
<p>The post <a href="https://cgoncalves.com/2021/programadores-nao-ignorem-o-ano-do-copyright/">Programadores, não ignorem o ano do copyright</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Manter o teu site atualizado é extremamente importante quando o objetivo é aumentar o tráfego. Uma forma rápida e fácil para ver se o teu site está atualizado é o texto de copyright na parte inferior da página. </p>



<p>Isto é uma coisa bastante óbvia e fácil de fazer, mas alguns sites têm negligenciado o ano do copyright.</p>



<p>Eis alguns exemplos:</p>



<h2 class="wp-block-heading">Site 1: <a href="http://empreendedorismo.pt/">Empreendedorismo</a></h2>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="448" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-14-1024x448.png" alt="" class="wp-image-718" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-14-1024x448.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-14-300x131.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-14-768x336.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-14-1536x672.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-14-2048x895.png 2048w, https://cgoncalves.com/wp-content/uploads/2021/10/image-14-256x112.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-14-900x394.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-14-1920x839.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Site 2: <a href="https://www.iapmei.pt/">IAPMEI</a> Agência para a Competitividade e Inovação</h2>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="437" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-15-1024x437.png" alt="" class="wp-image-719" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-15-1024x437.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-15-300x128.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-15-768x327.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-15-1536x655.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-15-2048x873.png 2048w, https://cgoncalves.com/wp-content/uploads/2021/10/image-15-256x109.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-15-900x384.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-15-1920x818.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Site 3: <a href="http://www.cnema.pt/">CNEMA</a> Centro Nacional de Exposições</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="349" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-16-1024x349.png" alt="" class="wp-image-720" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-16-1024x349.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-16-300x102.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-16-768x262.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-16-1536x523.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-16-2048x698.png 2048w, https://cgoncalves.com/wp-content/uploads/2021/10/image-16-256x87.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-16-900x307.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-16-1920x654.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Site 4: <a href="https://www.rentalcars.com/pt/">RentalCars</a></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="457" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-13-1024x457.png" alt="" class="wp-image-717" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-13-1024x457.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-13-300x134.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-13-768x343.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-13-1536x686.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-13-2048x915.png 2048w, https://cgoncalves.com/wp-content/uploads/2021/10/image-13-256x114.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-13-900x402.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-13-1920x858.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Site 5: <a href="https://motorguia.net/">MotorGuia</a></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="463" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-12-1024x463.png" alt="" class="wp-image-716" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-12-1024x463.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-12-300x136.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-12-768x347.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-12-1536x695.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-12-2048x927.png 2048w, https://cgoncalves.com/wp-content/uploads/2021/10/image-12-256x116.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-12-900x407.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-12-1920x869.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Site 6: <a href="https://www.mitsubishi-motors.pt/">Mitsubishi Motors</a></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="544" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-17-1024x544.png" alt="" class="wp-image-722" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-17-1024x544.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-17-300x159.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-17-768x408.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-17-1536x816.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-17-2048x1088.png 2048w, https://cgoncalves.com/wp-content/uploads/2021/10/image-17-256x136.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-17-900x478.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-17-1920x1020.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Site 7: <a href="https://noticias.automoveis-online.com/">noticias.automoveis-online.com</a></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="435" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-18-1024x435.png" alt="" class="wp-image-723" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-18-1024x435.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-18-300x127.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-18-768x326.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-18-1536x652.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-18-2048x869.png 2048w, https://cgoncalves.com/wp-content/uploads/2021/10/image-18-256x109.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-18-900x382.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-18-1920x815.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Site 8: <a href="https://www.budget.com.pt/#">Budget</a></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="464" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-19-1024x464.png" alt="" class="wp-image-725" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-19-1024x464.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-19-300x136.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-19-768x348.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-19-1536x696.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-19-2048x927.png 2048w, https://cgoncalves.com/wp-content/uploads/2021/10/image-19-256x116.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-19-900x408.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-19-1920x869.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Site 9: <a href="https://www.csmaritimo.org.pt/">CS Maritimo</a></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="639" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-20-1024x639.png" alt="" class="wp-image-727" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-20-1024x639.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-20-300x187.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-20-768x480.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-20-1536x959.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-20-256x160.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-20-900x562.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-20.png 1917w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Site 10: <a href="https://www.fcpf.pt/">FC Paços de Ferreira</a></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="450" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-21-1024x450.png" alt="" class="wp-image-728" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-21-1024x450.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-21-300x132.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-21-768x337.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-21-1536x675.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-21-2048x900.png 2048w, https://cgoncalves.com/wp-content/uploads/2021/10/image-21-256x112.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-21-900x395.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-21-1920x843.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Site 11: <a href="https://www.rioavefc.pt/">Rio Ave FC</a></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="457" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-22-1024x457.png" alt="" class="wp-image-729" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-22-1024x457.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-22-300x134.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-22-768x342.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-22-1536x685.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-22-2048x913.png 2048w, https://cgoncalves.com/wp-content/uploads/2021/10/image-22-256x114.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-22-900x401.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-22-1920x856.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Site 12: <a href="https://www.zerozero.pt/">Zero Zero</a></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="461" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-23-1024x461.png" alt="" class="wp-image-730" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-23-1024x461.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-23-300x135.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-23-768x346.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-23-1536x691.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-23-2048x921.png 2048w, https://cgoncalves.com/wp-content/uploads/2021/10/image-23-256x115.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-23-900x405.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-23-1920x864.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Site 13: <a href="https://www.ligaportugal.pt/pt/homepage/#">Liga Portuguesa de Futebol</a></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="453" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-24-1024x453.png" alt="" class="wp-image-731" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-24-1024x453.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-24-300x133.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-24-768x340.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-24-1536x680.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-24-2048x906.png 2048w, https://cgoncalves.com/wp-content/uploads/2021/10/image-24-256x113.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-24-900x398.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-24-1920x850.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Site 14: <a href="https://www.dgs.pt/">Direção Geral de Saúde</a></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="505" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-25-1024x505.png" alt="" class="wp-image-732" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-25-1024x505.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-25-300x148.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-25-768x379.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-25-1536x758.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-25-2048x1011.png 2048w, https://cgoncalves.com/wp-content/uploads/2021/10/image-25-256x126.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-25-900x444.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-25-1920x947.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Site 15: <a href="https://www.inem.pt/">INEM</a></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="448" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-26-1024x448.png" alt="" class="wp-image-733" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-26-1024x448.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-26-300x131.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-26-768x336.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-26-1536x672.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-26-2048x895.png 2048w, https://cgoncalves.com/wp-content/uploads/2021/10/image-26-256x112.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-26-900x393.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-26-1920x839.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Site 16: <a href="https://www.portugal.gov.pt/pt/gc22">Governo da República Portuguesa</a></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="469" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-27-1024x469.png" alt="" class="wp-image-734" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-27-1024x469.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-27-300x137.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-27-768x352.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-27-1536x704.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-27-2048x939.png 2048w, https://cgoncalves.com/wp-content/uploads/2021/10/image-27-256x117.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-27-900x412.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-27-1920x880.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Site 17: <a href="https://www.era.pt/">ERA</a></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="517" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-28-1024x517.png" alt="" class="wp-image-735" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-28-1024x517.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-28-300x151.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-28-768x387.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-28-1536x775.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-28-2048x1033.png 2048w, https://cgoncalves.com/wp-content/uploads/2021/10/image-28-256x129.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-28-900x454.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-28-1920x969.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Site 18: <a href="https://www.century21.pt/">Century 21</a></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="417" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-29-1024x417.png" alt="" class="wp-image-736" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-29-1024x417.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-29-300x122.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-29-768x312.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-29-1536x625.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-29-2048x833.png 2048w, https://cgoncalves.com/wp-content/uploads/2021/10/image-29-256x104.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-29-900x366.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-29-1920x781.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading"> Site 19: <a href="https://www.chiptec.net/">Chiptec</a></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="479" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-30-1024x479.png" alt="" class="wp-image-737" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-30-1024x479.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-30-300x140.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-30-768x359.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-30-1536x718.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-30-2048x958.png 2048w, https://cgoncalves.com/wp-content/uploads/2021/10/image-30-256x120.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-30-900x421.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-30-1920x898.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>E é isto, e vocês, mantém o ano do copyright atualizado?</p>



<p></p>
		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="573"
					data-ulike-nonce="34f8b6978b"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_573"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div><p>The post <a href="https://cgoncalves.com/2021/programadores-nao-ignorem-o-ano-do-copyright/">Programadores, não ignorem o ano do copyright</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://cgoncalves.com/2021/programadores-nao-ignorem-o-ano-do-copyright/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Como melhorei a performance de um processo em mais de 12000%</title>
		<link>https://cgoncalves.com/2021/como-melhorei-a-performance-de-um-processo-em-mais-de-12000/</link>
					<comments>https://cgoncalves.com/2021/como-melhorei-a-performance-de-um-processo-em-mais-de-12000/#respond</comments>
		
		<dc:creator><![CDATA[Carlos Gonçalves]]></dc:creator>
		<pubDate>Sat, 02 Oct 2021 14:13:05 +0000</pubDate>
				<category><![CDATA[.NET5]]></category>
		<category><![CDATA[Arquitetura]]></category>
		<guid isPermaLink="false">https:/?p=600</guid>

					<description><![CDATA[<p>Recentemente tive que pegar num processo crucial, mas que deixava muito a desejar em termos de performance, inclusive dava inúmeras...</p>
<div><a href="https://cgoncalves.com/2021/como-melhorei-a-performance-de-um-processo-em-mais-de-12000/" class="btn"><span>Read more</span></a></div>
<p>The post <a href="https://cgoncalves.com/2021/como-melhorei-a-performance-de-um-processo-em-mais-de-12000/">Como melhorei a performance de um processo em mais de 12000%</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Recentemente tive que pegar num processo crucial, mas que deixava muito a desejar em termos de performance, inclusive dava inúmeras vezes <em>Time out Exception</em> do lado do SQL.</p>



<p>O desafio era super interessante e mexia em muita coisa core, pelo que tinha que ser uma intervenção quase que cirúrgica.</p>



<p>Os passos que fiz para melhorar esse processo, foram os seguintes:</p>



<h2 class="wp-block-heading">Conexão com a BD</h2>



<p>Por alguma razão, para processar uma quantidade bem elevada de registos (7 dígitos) muitas vezes tratavam tudo na mesma conexão, ou seja, abriam a conexão e executavam um monte de operações, com lógicas e chamadas de funções pelo meio.</p>



<p>Sendo que, a primeira coisa que fiz foi tratar da conexão com a BD, e nesse caso, as conexões eram abertas apenas quando eram necessárias e fechadas imediatamente a seguir.</p>



<p>Isso trouxe uma&nbsp;<strong>melhoria de 348%</strong>&nbsp;de performance no processo, só com essa &#8220;simples&#8221; mudança.</p>



<h2 class="wp-block-heading">Limpeza e Otimização de código</h2>



<p>Outra coisa que vi foi que havia muito código repetido, funções que podiam ser rapidamente otimizadas e foi exatamente isso que fiz.</p>



<p>O código também, em boa parte, não era&nbsp;<em>testable</em>&nbsp;(não gosto da palavra testável), então criei&nbsp;<em>interfaces</em>&nbsp;e modifiquei o código de forma a que tudo fosse&nbsp;<em>testable</em>.</p>



<p>Outro ponto que, em nada influencia na performance mas ajuda muito em termos de manutenção, foi o nome dos métodos, argumentos e variáveis para algo mais claro.</p>



<h2 class="wp-block-heading">Clean Architecture</h2>



<p>Apesar do projeto não ser muito grande, tinha a sua complexidade, e estava todo bagunçado, pelo que mudei e reestruturei o projeto inteiro para usar&nbsp;<em>Clean Architecture</em>&nbsp;(ou&nbsp;<em>Onion Architecture</em>), de forma a separar as lógicas e responsabilidades.</p>



<h2 class="wp-block-heading">Separação em domínios</h2>



<p>Analisando melhor o processo deu para entender que claramente existiam domínios diferentes e, principalmente, independentes , pelo que, o passo natural foi separar cada um em seu próprio domínio (um&nbsp;<em>Console Application</em>&nbsp;para cada) compartilhando entre si o core que era comum.</p>



<p>A este ponto fui capaz de ganhar uma&nbsp;<strong>melhoria de 652%</strong> de performance .</p>



<h2 class="wp-block-heading">Mudança de Entity Framework para Dapper</h2>



<p>Com tudo mais organizado e simples de entender, a próxima decisão foi trocar o&nbsp;<em>Entity Framework</em>&nbsp;para o&nbsp;<em>Dapper</em>, visto que o&nbsp;<em>Entity Framework</em>&nbsp;pouco, ou nada, agregava no processo em causa que exigia performance ao invés de facilidade de utilização (para mim a maior vantagem do&nbsp;<em>Entity Framework</em>).</p>



<p>Verdade que o&nbsp;<em>Entity Framework&nbsp;</em>evoluiu muito nos últimos tempos, mas ainda assim, em termos de performance fica atrás do&nbsp;<em>Dapper</em>.</p>



<p>Decisão fácil de tomar e que, teve como resultado uma&nbsp;<strong>melhoria de 1122%</strong> de performance .</p>



<h2 class="wp-block-heading">Otimização de Queries e Tabelas</h2>



<p>Após a mudança para o&nbsp;<em>Dapper</em>&nbsp;possibilitou compreender melhor a estrutura da Base de Dados e com isso ver que algumas&nbsp;<em>queries&nbsp;</em>não estavam otimizadas e que, principalmente, as tabelas não eram amigáveis para as&nbsp;<em>queries&nbsp;</em>a executar.</p>



<p>Com a ajuda do&nbsp;<strong>SQL Server Profiler</strong>&nbsp;fui vendo os maiores impactos e, com isso, pude criar alguns indexes que ajudaram em muito a execução das&nbsp;<em>queries</em>, inclusive em alguns casos criando uns&nbsp;<em>clustered indexes</em>.</p>



<p>A este ponto já tinha uma&nbsp;<strong>melhoria de 5336%</strong> de performance .</p>



<h2 class="wp-block-heading">Bulk Operations</h2>



<p>Outra coisa que percebi com o decorrer do&nbsp;<em>refactor</em>&nbsp;é que, a cada iteração era feito um&nbsp;<em>insert</em>, estilo de um&nbsp;<em>log</em>. Ou seja, um número muito elevado de operações (mais uma com a Base de Dados) por cada iteração.</p>



<p>A decisão foi agrupar em lotes de 1000 e fazer&nbsp;<em>bulk inserts</em>&nbsp;dessa forma seria 1 acesso extra por cada 1000 iterações, o que reduzia substancialmente o número de operações à Base de Dados.</p>



<h2 class="wp-block-heading">Parallel.ForEachAsync</h2>



<p><em>Last but not least&nbsp;</em>em nenhuma parte do código era usado paralelismo. Uma vez que a ordem dos acontecimentos não eram relevantes para o caso, decidi começar a usar <strong><em>Parallel.ForEach</em></strong>, mas o problema é que, alguns dos métodos necessários a ser chamado dentro do loop eram <strong><em>async</em></strong>.</p>



<p>Apesar de o <strong><em>Parallel.ForEachAsync</em>&nbsp;</strong>já estar disponível no <strong>NET6&nbsp;</strong>ele não está disponível no <strong>NET5</strong>, pelo que a alternativa foi criar o meu próprio <strong><em>Parallel.ForEachAsync</em></strong>.</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text/x-csharp&quot;,&quot;theme&quot;:&quot;tomorrow-night-eighties&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:true,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;C#&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;csharp&quot;}">public static Task ParallelForEachAsync&lt;T&gt;(
  this IEnumerable&lt;T&gt; source, 
  Func&lt;T, Task&gt; body,
  int maxDegreeOfParallelism = 10)
{
  async Task AwaitPartition(IEnumerator&lt;T&gt; partition)
  {
    using (partition)
    {
      while (partition.MoveNext())
      {
        await body(partition.Current);
      }
    }
  }

  return Task.WhenAll(
    Partitioner
    .Create(source)
    .GetPartitions(maxDegreeOfParallelism)
    .AsParallel()
    .Select(AwaitPartition));
}</pre></div>



<p>Isto trouxe uma&nbsp;<strong>melhoria de 12044%</strong> de performance .</p>



<h2 class="wp-block-heading">Comparação dos resultados finais em termos de Performance</h2>



<p>Após todo este processo, e os testes unitários estarem todos a 100% era altura de comparar resultados.</p>



<p>Corri o processo antigo a partir do zero (longas 31 horas), e noutra Base de Dados rodei o processo novo que <strong>demorou apenas 15 minutos</strong> face às 31 horas do antigo processo.</p>



<p>Chegou a altura de comparar as tabelas e as entradas que tinham que ser exatamente iguais.</p>



<p>Felizmente o Visual Studio tem uma ferramenta que nos auxilia a&nbsp;<a href="https:/2021/como-comparar-duas-bases-de-dados-com-o-visual-studio/">comparar duas bases de dados</a>&nbsp;sobre o qual, inclusive, já escrevi um artigo. Além disso executei o&nbsp;<em><strong>EXCEPT</strong>&nbsp;</em>do SQL SERVER para uma segunda prova e, felizmente, os resultados foram exatamente iguais.</p>



<div class="alert alert-primary" role="alert">
  <strong>O que foi considerado como melhoria</strong> <br>Como melhoria, foi sempre considerado única e exclusivamente o tempo de execução do processo a partir do zero.​
</div>



<p></p>
		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="600"
					data-ulike-nonce="2fd59ee16e"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_600"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div><p>The post <a href="https://cgoncalves.com/2021/como-melhorei-a-performance-de-um-processo-em-mais-de-12000/">Como melhorei a performance de um processo em mais de 12000%</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://cgoncalves.com/2021/como-melhorei-a-performance-de-um-processo-em-mais-de-12000/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Como comparar duas Bases de Dados com o Visual Studio</title>
		<link>https://cgoncalves.com/2021/como-comparar-duas-bases-de-dados-com-o-visual-studio/</link>
					<comments>https://cgoncalves.com/2021/como-comparar-duas-bases-de-dados-com-o-visual-studio/#respond</comments>
		
		<dc:creator><![CDATA[Carlos Gonçalves]]></dc:creator>
		<pubDate>Fri, 01 Oct 2021 09:13:07 +0000</pubDate>
				<category><![CDATA[Bases de Dados]]></category>
		<category><![CDATA[Dicas]]></category>
		<guid isPermaLink="false">https:/?p=644</guid>

					<description><![CDATA[<p>Já te deparaste com a necessidade de comparar duas bases de dados? Pois eu já. Dado a um trabalho que...</p>
<div><a href="https://cgoncalves.com/2021/como-comparar-duas-bases-de-dados-com-o-visual-studio/" class="btn"><span>Read more</span></a></div>
<p>The post <a href="https://cgoncalves.com/2021/como-comparar-duas-bases-de-dados-com-o-visual-studio/">Como comparar duas Bases de Dados com o Visual Studio</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Já te deparaste com a necessidade de comparar duas bases de dados? Pois eu já. </p>



<p>Dado a um trabalho que tinha que realizar, onde <a href="https:/2021/como-melhorei-a-performance-de-um-processo-em-mais-de-12000/" title="melhorei a performance de um processo em mais de 12000%">melhorei a performance de um processo em mais de 12000%</a>, deparei-me com uma situação em que tinha que comparar os dados de algumas tabelas entre Bases de Dados diferentes mas com a mesma estrutura.</p>



<p>Já sabia que o Visual Studio é uma ferramenta incrível para se trabalhar, mas confesso que desconhecia a funcionalidade dele em <strong>comparar duas Bases de Dados</strong> de forma tão fácil.</p>



<p>Para isso basta, no menu, ir em&nbsp;<strong>Tools</strong>&nbsp;-&gt; no sub menu&nbsp;<strong>SQL Server</strong> -&gt;&nbsp;<strong>New Data Comparison</strong>&#8230;:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="601" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-1024x601.png" alt="" class="wp-image-652" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-1024x601.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-300x176.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-768x451.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-256x150.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-900x528.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image.png 1218w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Opção New Data Comparison no Visual Studio</figcaption></figure>



<p>Isso irá te abrir a seguinte janela:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="644" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-1-1024x644.png" alt="" class="wp-image-653" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-1-1024x644.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-1-300x189.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-1-768x483.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-1-1536x966.png 1536w, https://cgoncalves.com/wp-content/uploads/2021/10/image-1-256x161.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-1-900x566.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-1.png 1696w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Selecionar as conexões para comparar duas bases de dados</figcaption></figure>



<p>Posto isso basta configurar as conexões a ambas as Bases de Dados, o que também é muito simples.</p>



<p>Ao clicarmos em <strong>Select Connection</strong> nos deparamos com:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="836" height="1024" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-2-836x1024.png" alt="" class="wp-image-654" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-2-836x1024.png 836w, https://cgoncalves.com/wp-content/uploads/2021/10/image-2-245x300.png 245w, https://cgoncalves.com/wp-content/uploads/2021/10/image-2-768x941.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-2-209x256.png 209w, https://cgoncalves.com/wp-content/uploads/2021/10/image-2.png 845w" sizes="(max-width: 836px) 100vw, 836px" /><figcaption>Configurar conexão com a Base de Dados</figcaption></figure>



<p>Basta ir a <strong>Browse </strong>e depois configurar os dados ao nosso servidor <strong>SQL Server</strong>.</p>



<p>Para o exemplo, imaginemos o seguinte script sql:</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;sql&quot;,&quot;mime&quot;:&quot;text/x-sql&quot;,&quot;theme&quot;:&quot;tomorrow-night-eighties&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:true,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;SQL&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;sql&quot;}">CREATE DATABASE SourceDb
GO
USE SourceDb
GO
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    PRIMARY KEY (ID)
);
GO
INSERT INTO Persons VALUES(1,'Gonçalves', 'Carlos', 33)
INSERT INTO Persons VALUES(2,'Gonçalves', 'Rodrigo', 2)
GO
CREATE DATABASE DestinationDb
GO
USE DestinationDb
GO
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    PRIMARY KEY (ID)
);
GO
INSERT INTO Persons VALUES(1,'Gonçalves', 'Carlos', 33)
INSERT INTO Persons VALUES(2,'Gonçalves', 'Rodrigo', 1)</pre></div>



<p>O que deveríamos esperar era que, ao <strong>comparar duas Bases de Dados</strong>, no caso a tabela <strong>Persons </strong>da  Base de Dados <strong>DestinationDb</strong> com a tabela <strong> <strong>Persons</strong></strong> da Base de Dados <strong>SourceDb</strong> era que a primeira entrada seja 100% igual e que a segunda difira na idade, em que na <strong>SourceDb</strong> o Rodrigo tem <strong>2 anos</strong> mas na <strong>DestinationDb</strong> ele está com <strong>1 ano</strong>.</p>



<p>Vejamos então:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="178" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-4-1024x178.png" alt="" class="wp-image-657" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-4-1024x178.png 1024w, https://cgoncalves.com/wp-content/uploads/2021/10/image-4-300x52.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-4-768x134.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-4-256x45.png 256w, https://cgoncalves.com/wp-content/uploads/2021/10/image-4-900x157.png 900w, https://cgoncalves.com/wp-content/uploads/2021/10/image-4.png 1309w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Registos diferentes entre as tabelas</figcaption></figure>



<p>Bem como podemos confirmar que existe 1 <strong>Identical Record</strong> que no caso seria a primeira entrada:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="899" height="244" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-5.png" alt="" class="wp-image-658" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-5.png 899w, https://cgoncalves.com/wp-content/uploads/2021/10/image-5-300x81.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-5-768x208.png 768w, https://cgoncalves.com/wp-content/uploads/2021/10/image-5-256x69.png 256w" sizes="(max-width: 899px) 100vw, 899px" /></figure>



<p>Uma forma simples também para isso poderia ser:</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;sql&quot;,&quot;mime&quot;:&quot;text/x-sql&quot;,&quot;theme&quot;:&quot;tomorrow-night-eighties&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:true,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;SQL&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;sql&quot;}">  SELECT * FROM SourceDb.[dbo].Persons
  EXCEPT
  SELECT * FROM DestinationDb.[dbo].Persons</pre></div>



<p>Que nos daria o resultado:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="402" height="122" src="https://cgoncalves.com/wp-content/uploads/2021/10/image-6.png" alt="" class="wp-image-659" srcset="https://cgoncalves.com/wp-content/uploads/2021/10/image-6.png 402w, https://cgoncalves.com/wp-content/uploads/2021/10/image-6-300x91.png 300w, https://cgoncalves.com/wp-content/uploads/2021/10/image-6-256x78.png 256w" sizes="(max-width: 402px) 100vw, 402px" /><figcaption>SQL Except entre duas tabelas</figcaption></figure>



<p>E é isso, espero que tenha ajudado. E vocês, já conheciam essa opção do <strong>Visual Studio</strong>? Utilizam outra forma? Deixem nos comentários.</p>
		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="644"
					data-ulike-nonce="b838967ec8"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_644"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div><p>The post <a href="https://cgoncalves.com/2021/como-comparar-duas-bases-de-dados-com-o-visual-studio/">Como comparar duas Bases de Dados com o Visual Studio</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://cgoncalves.com/2021/como-comparar-duas-bases-de-dados-com-o-visual-studio/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Barreiras e Obstáculos &#8211; O Bicho de 7 Cabeças</title>
		<link>https://cgoncalves.com/2021/barreiras-e-obstaculos-o-bicho-de-7-cabecas/</link>
					<comments>https://cgoncalves.com/2021/barreiras-e-obstaculos-o-bicho-de-7-cabecas/#respond</comments>
		
		<dc:creator><![CDATA[Carlos Gonçalves]]></dc:creator>
		<pubDate>Mon, 20 Sep 2021 04:37:57 +0000</pubDate>
				<category><![CDATA[Opiniões, Ideias e Pensamentos]]></category>
		<guid isPermaLink="false">https:/?p=517</guid>

					<description><![CDATA[<p>Haverá sempre barreiras e obstáculos entre onde estás atualmente e onde queres vir a estar, mas se a tua força...</p>
<div><a href="https://cgoncalves.com/2021/barreiras-e-obstaculos-o-bicho-de-7-cabecas/" class="btn"><span>Read more</span></a></div>
<p>The post <a href="https://cgoncalves.com/2021/barreiras-e-obstaculos-o-bicho-de-7-cabecas/">Barreiras e Obstáculos – O Bicho de 7 Cabeças</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Haverá sempre barreiras e obstáculos entre onde estás atualmente e onde queres vir a estar, mas se a tua força de vontade for grande, irá sempre superar. Provavelmente irás gastar muito tempo e dinheiro com os obstáculos que te surjam, e podes até conseguir ultrapassar a maioria deles, no entanto, no dia em que encontrares uma barreira ou um obstáculo que seja maior do que a tua força de vontade, tenderás a desistir. Esta é a má notícia. Os obstáculos que encontrares podem ser intimidativos, podem atrasar-te no caminho do teu objetivo, podem ser difíceis, podem dar-te dores de cabeça, e é quando menos esperas que eles aparecem, e facilmente podes perder o rumo.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>As nossas vidas são o somatório das nossas decisões.</p><cite>Albert Camus</cite></blockquote>



<p>E é assim que começamos o artigo de hoje.</p>



<p>Todos nós detestamos perder coisas, é da própria natureza humana. Desde a altura em que perdemos o nosso primeiro dente percebemos que a perda causa sofrimento, por isso mesmo não gostamos de perder dinheiro ou de desistir dos nossos projetos, em suma, <strong>detestamos perder</strong>.</p>



<p>A aversão à perda significa que damos mais valor ao que temos a perder do que ao que podemos ganhar.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Damos mais valor ao que temos a perder do que ao que podemos ganhar.</p><cite>Desconhecido</cite></blockquote>



<p>Esta aversão à perda significa igualmente que a forma como se formula uma pergunta afeta o resultado. As escolhas envolvem, frequentemente, compromissos. Pergunta a ti próprio do que precisas de abdicar para tomares uma decisão. De seguida coloca a pergunta de maneira diferente, imagina que não possuis aquilo que deves abdicar, quanto pagarias para a comprar?</p>



<p>Temos que ter conhecimento da nossa aversão à perda de coisas, mas claro que o conhecimento por si só não irá tornar o processo mais fácil.</p>



<p>Se não tens conhecimento da tua aversão à perda, estarás sempre receoso com as barreiras e obstáculos que se vão deparar no teu caminho, e se é assim que pensas, está na hora de mudares a tua visão. As barreiras e os obstáculos estão lá por um propósito muito definido: <strong>separar a inconsequência e a paixão</strong>.</p>



<h2 class="wp-block-heading">Estabelecer objetivos</h2>



<p>É imprescindível que ao iniciares um novo desafio, definas muito bem os objetivos do mesmo, esse conjunto de objetivos é o que te confere um caminho de orientação para as tuas decisões, no sentido que progridas numa direção. Os objetivos explicam-te o que pretendes alcançar com o teu desafio, com um carácter temporal. Estes são essenciais na gestão do teu desafio, na medida em que esclarecem onde queres chegar e como podes avaliar se o estás a conseguir.</p>



<p>Deves ter sempre em consideração que os objetivos devem respeitar os 5 critérios SMART (Specific, Measurable, Achievable, Relevant e Time Bound):</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="777" height="181" src="https://cgoncalves.com/wp-content/uploads/2021/09/objetivos-smart.png" alt="" class="wp-image-603" srcset="https://cgoncalves.com/wp-content/uploads/2021/09/objetivos-smart.png 777w, https://cgoncalves.com/wp-content/uploads/2021/09/objetivos-smart-300x70.png 300w, https://cgoncalves.com/wp-content/uploads/2021/09/objetivos-smart-768x179.png 768w, https://cgoncalves.com/wp-content/uploads/2021/09/objetivos-smart-256x60.png 256w" sizes="(max-width: 777px) 100vw, 777px" /><figcaption>Fonte: http://vidadeproduto.com.br/wp-content/uploads/2020/06/smart-1.png</figcaption></figure>



<p>É a partir daqui que os obstáculos e as barreiras surgem.</p>



<p>Ora, vamos supor que queres criar um produto novo tipo um TODO List e que o teu objetivo é: <strong>atingir 10 clientes no prazo de 1 ano</strong>. Se formos analisar, esse teu objetivo:</p>



<ol class="wp-block-list"><li><strong>Específico: </strong><span class="label label-success">Sim</span>
, pois diz claramente o que é;</li><li><strong>Mensurável:</strong> <span class="label label-success">Sim</span>, pois consegues validar se conseguiste ter a quantidade de clientes, no caso 10;</li><li><strong>Atingível:</strong> <span class="label label-success">Sim</span>, pois o objetivo está ao teu alcance, não sendo complexo de atingir;</li><li><strong>Relevante:</strong> <span class="label label-danger">Não</span>, ele não tem um elevado grau de desafio, o que torna o objetivo estabelecido simples, acredito que muitas pessoas consigam lá chegar. Na outra face está, quanto mais complexo, mais difícil é de concretizar esse objetivo;</li><li><strong>Temporal: </strong> <span class="label label-success">Sim</span>, é especificado um período de tempo, no caso 1 ano;</li></ol>



<h2 class="wp-block-heading">A força de vontade</h2>



<p>A maioria das pessoas, quando se depara com uma barreira ou um obstáculo, o que fazem é desistir. É por isso que vemos inúmeros divórcios, negócios que não vingam, entre outros exemplos. Quantos aqui se enquadram no que disse? Quantos mais se irão enquadrar?</p>



<p>Quem vos garante que se tentarem ultrapassar esse obstáculo não terão sucesso?</p>



<p>O que importa é ter alguma compostura e perspetiva perante essa barreira / obstáculo. Não se deixem enredar pelo desfecho a curto prazo, porque o que acontece a longo prazo pode ser bem diferente.</p>



<p>Se ficarmos demasiado presos nos desfechos de curto prazo não conseguimos perceber que podem tornar-se diferentes a longo prazo.</p>



<p>Há uma história que diz o seguinte:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Certa vez havia um sábio agricultor chinês perdeu um dos seus cavalos.<br>Quando o vizinho foi consolá-lo, o agricultor disse:<br>“Quem sabe o que é bom ou mau?”</p><p>Quando o cavalo dele voltou no dia seguinte, trazia consigo um bando de outros cavalos que lhe seguiram, o vizinho foi felicitá-lo pela sua boa fortuna.<br>“Quem sabe o que é bom ou mau?”, disse o agricultor.</p><p>Quando então o filho do agricultor partiu a perna ao tentar montar num dos novos cavalos, o vizinho foi consolá-lo de novo.<br>“Quem sabe o que é bom ou mau?”, disse o agricultor.</p><p>Quando o exército passou convocando os homens para a guerra, deixaram o filho do agricultor por causa da perna partida.<br>Quando o vizinho foi felicitar o fazendeiro pelo facto do seu filho ter sido poupado, de novo o agricultor disse:<br>“Quem sabe o que é bom ou mau?”</p><p>Quando podemos esperar que esta história termine?</p><cite>Desconhecido</cite></blockquote>



<p>Por outro lado, tendemos sempre a considerar apenas um único desfecho possível, como o vizinho do agricultor, em vez de considerar todos os desfechos possíveis. Se fores um pessimista, tenta obrigar-te a pensar no melhor desfecho, pois no reverso, os outros irão sempre partir do princípio que as coisas correm sempre bem. Se fores um desses otimistas, tenta pensar no que poderia correr mal.</p>



<h2 class="wp-block-heading">Tentar, falhar e Continuar</h2>



<p>É mais que sabido, que uma pessoa que tenta, falha e continua tem mais valor que aquela que tenta, falha e para. Ninguém toma decisões sem cometer erros, porém não se deve repetir o mesmo erro duas vezes. Não é preciso ir muito longe, lanço-vos o desafio de responderem a esta questão, <strong>aprenderam mais nos vossos projetos de sucesso, ou naqueles que cometeram vários erros?</strong></p>



<p>Provavelmente a maioria vai responder nos projetos em que erraram. Pois o &#8220;<strong>erro certo</strong>&#8221; ensina-nos mais que todo o sucesso no seu conjunto.</p>



<p>O problema é que à medida que envelhecemos e nos tornamos mais experientes, sentimos orgulho no facto de cometermos cada vez menos erros. Somos bons no que fazemos e isso significa não fazer asneiras, certo?</p>



<p>O problema é que, quanto menos erramos, menos aprendemos. Para se ser bom em algo, para nos distinguirmos dos demais, regra geral, é preciso cometer erros.</p>



<h2 class="wp-block-heading">Analogia</h2>



<p>Para melhor percebermos toda esta questão, podemos usar uma analogia engraçada, quem é que nunca jogou ao Sonic? No final de cada nível existia sempre o boss final (chefão, para os meus amigos brasileiros), o boss é mais complicado de vencer, regra geral, que o próprio nível.</p>



<p>Se considerarmos as barreiras e os obstáculos o boss final do nosso nível, podemos prepararmo-nos para ele, estudando-o e definindo uma estratégia para o derrubar. Tornando-nos mais fortes para as adversidades seguintes.</p>



<h2 class="wp-block-heading">Conclusão</h2>



<p>Podemos assim concluir que as barreiras ajudam-nos a filtrar quem realmente merece atingir os objetivos. Ajudam-nos a eliminar a concorrência, pois se o objetivo é mensurável, com um elevado grau de desafio mas realista e atingível, é um factor de distinção para quem o alcançar.</p>



<p>Espero que comecem a ver os obstáculos e as barreiras de outra forma, principalmente que não os vejam como vossos adversários, e sim como aliados, pois são estes que vos permitem evoluir e a tornarem-se melhores.</p>
		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="517"
					data-ulike-nonce="510bbe68df"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_517"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+1"></span>			</div></div><p>The post <a href="https://cgoncalves.com/2021/barreiras-e-obstaculos-o-bicho-de-7-cabecas/">Barreiras e Obstáculos – O Bicho de 7 Cabeças</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://cgoncalves.com/2021/barreiras-e-obstaculos-o-bicho-de-7-cabecas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>String com 0xfeff no início</title>
		<link>https://cgoncalves.com/2021/string-com-0xfeff-no-inicio/</link>
					<comments>https://cgoncalves.com/2021/string-com-0xfeff-no-inicio/#respond</comments>
		
		<dc:creator><![CDATA[Carlos Gonçalves]]></dc:creator>
		<pubDate>Sat, 18 Sep 2021 04:37:32 +0000</pubDate>
				<category><![CDATA[Dicas]]></category>
		<guid isPermaLink="false">https:/?p=507</guid>

					<description><![CDATA[<p>Por vezes quando trabalhamos com strings podemos nos deparar com alguns casos insólitos. Por exemplo, na abordagem que falei NEventStore...</p>
<div><a href="https://cgoncalves.com/2021/string-com-0xfeff-no-inicio/" class="btn"><span>Read more</span></a></div>
<p>The post <a href="https://cgoncalves.com/2021/string-com-0xfeff-no-inicio/">String com 0xfeff no início</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Por vezes quando trabalhamos com strings podemos nos deparar com alguns casos insólitos.</p>



<p>Por exemplo, na abordagem que falei <a href="https:/2021/neventstore-system-io-filenotfoundexception-in-system-private-corelib-dll/" title="NEventStore System.IO.FileNotFoundException in System.Private.CoreLib.dll">NEventStore System.IO.FileNotFoundException in System.Private.CoreLib.dll</a> como recebemos um array de bytes do payload e para trabalhar com o nosso evento precisamos converter esse array de bytes para uma string e dessa forma podemos usar o Deserialize para um objeto nosso.</p>



<p>Se formos converter utilizando o Encoding <strong>ASCII</strong> usualmente acontece depararmo-nos no início da string com <strong>???</strong> para resolver podemos facilmente utilizar algo como:</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text/x-csharp&quot;,&quot;theme&quot;:&quot;tomorrow-night-eighties&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:true,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;C#&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;csharp&quot;}"> const char trash = '???';
 var json = Encoding.UTF8.GetString(commit.Payload).Replace(trash.ToString(), string.Empty);</pre></div>



<p>Porém se precisas, por causa de alguns caracteres, de utilizar  <strong>UTF-8</strong>, então é comum que te depares com um <strong>&lt;0xFEFF&gt;</strong>, tipo:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="406" height="56" src="https://cgoncalves.com/wp-content/uploads/2021/09/image.png" alt="" class="wp-image-510" srcset="https://cgoncalves.com/wp-content/uploads/2021/09/image.png 406w, https://cgoncalves.com/wp-content/uploads/2021/09/image-300x41.png 300w, https://cgoncalves.com/wp-content/uploads/2021/09/image-256x35.png 256w" sizes="(max-width: 406px) 100vw, 406px" /></figure>



<p>Se inspecionares pelo visual studio não vais perceber nada de anormal na string, pois o <strong>&lt;0xFEFF&gt;</strong> não é exibido, porém se copiares o valor e colocares, por exemplo no Sublime Text 3, aí vais ver algo como a imagem acima.</p>



<p>Esse <strong>&lt;0xFEFF&gt;</strong> nada mais é que o <strong>BOM</strong> (Byte Order Mark), que é um uso particular do caractere Unicode especial, U + FEFF BYTE ORDER MARK, que tem uma aparência como um número mágico no início de um texto para sinalizar várias coisas para o programa que for ler o documento ou, no nosso caso a string.</p>



<p>E, no caso de <strong>UTF-8</strong>&nbsp;a representação do BOM é a sequência hexadecimal <strong>0xEF</strong>, <strong>0xBB</strong> e <strong>0xBF</strong>.</p>



<p>O mesmo acontece se, com o <strong>NEventSore</strong> fores ler o Payload na Base de Dados, fazes algo como:</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;sql&quot;,&quot;mime&quot;:&quot;text/x-sql&quot;,&quot;theme&quot;:&quot;tomorrow-night-eighties&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:true,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;SQL&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;sql&quot;}">CAST(Payload AS VARCHAR(MAX))</pre></div>



<p>E ele te retorna no início uns caracteres estranhos <strong>ï»¿</strong> que também está relacionado com o <strong>UTF-8</strong> mas na sua representação de bytes como caracteres <a href="https://en.wikipedia.org/wiki/Windows-1252#Code_page_layout" title="Windows CP1252" target="_blank" rel="noreferrer noopener">CP1252</a></p>



<p>A solução para limpar essa string pode passar por:</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text/x-csharp&quot;,&quot;theme&quot;:&quot;tomorrow-night-eighties&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:true,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;C#&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;csharp&quot;}"> const char trash = '\xfeff';
 var json = Encoding.UTF8.GetString(commit.Payload).Replace(trash.ToString(), string.Empty);</pre></div>



<p>E é isso, espero que tenha ajudado.</p>
		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="507"
					data-ulike-nonce="412d07638c"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_507"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div><p>The post <a href="https://cgoncalves.com/2021/string-com-0xfeff-no-inicio/">String com 0xfeff no início</a> first appeared on <a href="https://cgoncalves.com">Carlos Gonçalves</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://cgoncalves.com/2021/string-com-0xfeff-no-inicio/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
