<?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/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>dicas Archives - Hiago Silva Souza</title>
	<atom:link href="https://www.hiago.me/tag/dicas/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.hiago.me/tag/dicas/</link>
	<description></description>
	<lastBuildDate>Tue, 16 Apr 2019 01:51:02 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.5</generator>

<image>
	<url>https://www.hiago.me/wp-content/uploads/2019/01/cropped-icon-hiagus-2-32x32.png</url>
	<title>dicas Archives - Hiago Silva Souza</title>
	<link>https://www.hiago.me/tag/dicas/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">147457425</site>	<item>
		<title>TypeScript: Interface ou Classes?</title>
		<link>https://www.hiago.me/2018/09/16/typescript-interface-ou-classes/</link>
					<comments>https://www.hiago.me/2018/09/16/typescript-interface-ou-classes/#comments</comments>
		
		<dc:creator><![CDATA[Hiago Souza]]></dc:creator>
		<pubDate>Sun, 16 Sep 2018 19:47:59 +0000</pubDate>
				<category><![CDATA[Angular]]></category>
		<category><![CDATA[Ionic]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[TypeScript]]></category>
		<category><![CDATA[angular]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[transpilacao]]></category>
		<category><![CDATA[typescript]]></category>
		<guid isPermaLink="false">https://www.hiago.me/?p=448</guid>

					<description><![CDATA[<p>Em aula o professor citou uma diferença bem importante entre o uso de interface e de classes no TypeScript. Então resolvi fazer um post para mostrar a vocês qual é essa diferença e como ela impactar seus aplicativos. TypeScript [wp_ad_camp_3] O TypeScript é uma linguagem criada pela microsoft para ajudar na criação de aplicações JavaScript &#8230;</p>
<p>The post <a href="https://www.hiago.me/2018/09/16/typescript-interface-ou-classes/">TypeScript: Interface ou Classes?</a> appeared first on <a href="https://www.hiago.me">Hiago Silva Souza</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Em aula o professor citou uma diferença bem importante entre o uso de interface e de classes no TypeScript. Então resolvi fazer um post para mostrar a vocês qual é essa diferença e como ela impactar seus aplicativos.</p>
<h1>TypeScript</h1>
<p><span style="display: inline !important; float: none; background-color: transparent; color: #333333; cursor: text; font-family: 'Source Sans Pro',Arial,sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">[wp_ad_camp_3]</span></p>
<p style="text-align: left;">O TypeScript é uma linguagem criada pela microsoft para ajudar na criação de aplicações JavaScript adicionando recursos poderosos como por exemplo: tipagem e propriedades estáticas. As classes foram introduzidas oficialmente no ecossistema do javascript no ES6 mas por razões de compatibilidade o TypeScript permite que você faça a transpilação para o ES5 para aumentar a compatibilidade do seu código.</p>
<h1>O que é transpilação?</h1>
<p>Transpilação nada mais é que pegar seu código e converter ele para outro em tempo de compilação ou seja, o programador escreve seu código em uma linguagem e após compilar ele converte esse código para um equivalente em outra linguagem de programação.</p>
<h1>Problema?</h1>
<p><span style="display: inline !important; float: none; background-color: transparent; color: #333333; cursor: text; font-family: 'Source Sans Pro',Arial,sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">[wp_ad_camp_2]</span></p>
<p>Geralmente quando desenvolvemos fazendo o uso do TypeScript seguimos a lógica de modelar todas as nossas informações (o que é sensacional e deve ser feito) e para isso geralmente seguimos nossos conhecimento de orientação a objetos e saímos criando nossas classes de modelos (as models). O problema é que o uso de classes gera um over head muito grande no código transpilado e isso aumenta o tamanho de nossos arquivos JS e com isso o tamanho de nosso aplicativo.</p>
<p>Abaixo deixo uma imagem de uma classe no TypeScript:</p>
<p><img fetchpriority="high" decoding="async" class="alignnone size-medium wp-image-449" src="https://www.hiago.me/wp-content/uploads/2018/09/exemplo-typescript-300x186.png" alt="" width="300" height="186" srcset="https://www.hiago.me/wp-content/uploads/2018/09/exemplo-typescript-300x186.png 300w, https://www.hiago.me/wp-content/uploads/2018/09/exemplo-typescript.png 504w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>O resultado do código acima após ser transpilado seria um código mais ou menos como esse na imagem abaixo:</p>
<p><img decoding="async" class="alignnone size-medium wp-image-450" src="https://www.hiago.me/wp-content/uploads/2018/09/exemplo-gerado-js-300x217.png" alt="" width="300" height="217" srcset="https://www.hiago.me/wp-content/uploads/2018/09/exemplo-gerado-js-300x217.png 300w, https://www.hiago.me/wp-content/uploads/2018/09/exemplo-gerado-js.png 604w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>É muito código para uma definição de uma classe não concordam?</p>
<h1>E a solução?</h1>
<p><span style="display: inline !important; float: none; background-color: transparent; color: #333333; cursor: text; font-family: 'Source Sans Pro',Arial,sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">[wp_ad_camp_1]</span></p>
<p>Em JavaScript a tipagem não existe ou seja o tipo da variável é o que tem dentro dela. O TypeScript ajuda no desenvolvimento implementando controles como esses minimizando erros e melhorando a performance no desenvolvimento. Ao criar uma interface o TypeScript faz o uso dela na compilação e após isso não faz a transpilação para o JavaScript. Já as classes são definições, elas possuem métodos com regras aplicadas e isso precisa ser transpilado.</p>
<p>Mas calma, não se apavorem! Muitas classes realmente precisam e devem ser implementadas dessa forma mas nas classes de modelo não tem essa necessidade, afinal de contas não é comum você implementar métodos em suas models não é mesmo? Para isso podemos simplesmente substituir nossas classes de modelos por &#8220;interfaces&#8221; assim ao transpilar elas não vão gerar esse código &#8220;desnecessário&#8221; em nossa aplicação.</p>
<p>Abaixo deixo o exemplo de definição para a mesma classe só que fazendo uso de interface:</p>
<p><img decoding="async" class="alignnone size-medium wp-image-451" src="https://www.hiago.me/wp-content/uploads/2018/09/exemplo-interface-typescript-300x134.png" alt="" width="300" height="134" srcset="https://www.hiago.me/wp-content/uploads/2018/09/exemplo-interface-typescript-300x134.png 300w, https://www.hiago.me/wp-content/uploads/2018/09/exemplo-interface-typescript.png 581w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>O resultado do código transpilado é exatamente como na imagem abaixo:</p>
<p><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-452" src="https://www.hiago.me/wp-content/uploads/2018/09/exemplo-interface-javascript-300x44.png" alt="" width="300" height="44" srcset="https://www.hiago.me/wp-content/uploads/2018/09/exemplo-interface-javascript-300x44.png 300w, https://www.hiago.me/wp-content/uploads/2018/09/exemplo-interface-javascript.png 606w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>O resultado da transpilação não gera código JavaScript isso é importante porque diminui o tamanho do build e melhora o tempo de processamento para tarefas como concat e minify.</p>
<h1>Conclusão</h1>
<p>Uma simples mudança ajuda na diminuição de tamanho do build de nossos sistemas e melhora o seu tempo de compilação. O Angular é um exemplo que usa esse pensamento em suas bibliotecas, eles simplesmente exportam as interfaces para serem utilizadas nos projetos.</p>
<p>Deixo como dica o site <a href="http://www.typescriptlang.org/play/">http://www.typescriptlang.org/play/</a> entrem lá coloquem o conteúdo de todas as suas models e façam vocês mesmo os testes.</p>
<p>The post <a href="https://www.hiago.me/2018/09/16/typescript-interface-ou-classes/">TypeScript: Interface ou Classes?</a> appeared first on <a href="https://www.hiago.me">Hiago Silva Souza</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.hiago.me/2018/09/16/typescript-interface-ou-classes/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">448</post-id>	</item>
		<item>
		<title>Seu produto está preparado para a nuvem?</title>
		<link>https://www.hiago.me/2017/06/16/seu-produto-esta-preparado-para-a-nuvem/</link>
					<comments>https://www.hiago.me/2017/06/16/seu-produto-esta-preparado-para-a-nuvem/#respond</comments>
		
		<dc:creator><![CDATA[Hiago Souza]]></dc:creator>
		<pubDate>Fri, 16 Jun 2017 15:30:52 +0000</pubDate>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Infraestrutura]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[google cloud]]></category>
		<category><![CDATA[infraestrutura]]></category>
		<category><![CDATA[nuvem]]></category>
		<guid isPermaLink="false">http://www.hiago.me/?p=219</guid>

					<description><![CDATA[<p>Essa é uma pergunta que não é feita por muitas pessoas, então estou aqui para colocar uma pulga atrás de sua orelha. Leia o post e veja se seu produto está preparado para a nuvem e confira algumas dicas para tornar seu software &#8220;escalável&#8221;. [wp_ad_camp_3] O que é a nuvem? Em computação, computação em nuvem &#8230;</p>
<p>The post <a href="https://www.hiago.me/2017/06/16/seu-produto-esta-preparado-para-a-nuvem/">Seu produto está preparado para a nuvem?</a> appeared first on <a href="https://www.hiago.me">Hiago Silva Souza</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Essa é uma pergunta que não é feita por muitas pessoas, então estou aqui para colocar uma pulga atrás de sua orelha. Leia o post e veja se seu produto está preparado para a nuvem e confira algumas dicas para tornar seu software &#8220;escalável&#8221;.</p>
<p>[wp_ad_camp_3]</p>
<h1>O que é a nuvem?</h1>
<p>Em computação, computação em nuvem (cloud computing, do inglês) se refere á uma utilização de memória e capacidade de armazenamento e processamento de computadores e servidores interligados pela internet.</p>
<h1>E meu produto precisa estar preparado?</h1>
<p>Sim! Algo muito bom na nuvem é que você pode &#8220;escalar&#8221; o uso de seus recursos computacionais. Hoje existe duas maneiras para se fazer a escalabilidade, são elas a escalabilidade vertical, e a horizontal.</p>
<p>[wp_ad_camp_1]</p>
<p>A escalabilidade vertical trata-se de elevar os recursos de seu servidor, um exemplo disso é você possuir um servidor com 4 núcleos de processamento e eles não darem conta de uma grande demanda, então se faz necessário fazer um upgrade aumentando os recursos da máquina, mas vai chegar um dia que nem o mais potente dos computadores vai aguentar essa malha de processamento.</p>
<p>Já a escalabilidade horizontal veio para resolver esse tipo de problema. A sua proposta é de escalar mais servidores para dividir o processamento, ou seja, você pode ter quantos servidores for necessário e eles são adicionados e removidos de acordo com a demanda.</p>
<p>Resumindo: Se você possui um e-commerce hoje e ele não gera muito processamento, pode ser que por algum motivo específicos (uma promoção, uma blackfriday) uma grande malha de acessos pode vir a aparecer e se a sua infra-estrutura não for escalável seu serviço vai ficar indisponível.</p>
<h1>Como preparo meu produto?</h1>
<p>Existem vários fatores e eles estão na área de desenvolvimento do seu produto. O investimento para desenvolver um produto escalável e preparado para a nuvem pode parecer alto, mas o retorno compensa.</p>
<p>[wp_ad_camp_2]</p>
<p>Mas vamos falar um pouco mais sobre isso em outros posts, enquanto isso deixo aqui algumas dicas:</p>
<ol>
<li>Não guarde os arquivos enviados (upload&#8217;s) no seu servidor de aplicação, lembre-se pode haver um servidor hoje, 300 amanhã e 10 depois de amanhã. Essas máquinas servem para processar, não para armazenar! Para isso use servidores de arquivos compartilhados, ou serviços como o Amazon S3.</li>
<li>Não guarde sessão localmente, a requisição de um usuário autenticado em sua máquina de aplicação 1 pode cair na maquina de aplicação 2 em algum momento. Procure armazenar as sessões no banco de dados ou em uma solução própria para isso.</li>
<li>Lembre-se o cache pode ser seu inimigo na hora de desenvolver, mas é muito importante para redução de custos e para fornecer maior velocidade para o usuário. Então desenvolva seu produto, projetando um modelo de cache.</li>
<li>Use soluções de PaaS para seu banco de dados. Você só precisa seguir a instruções do serviço e apontar para os servidores de banco dados.</li>
<li>Não execute processos pesados em foreground, crie filas para ele e libere as conexões. O máximo que vai acontecer é demorar para a operação ser concluída, porém isso nunca vai deixar alguém que esteja esperando uma operação mais simples, esperando&#8230; Um bom exemplo de empresa que faz isso é o facebook, quando você faz o post de um vídeo.</li>
</ol>
<h1></h1>
<p>The post <a href="https://www.hiago.me/2017/06/16/seu-produto-esta-preparado-para-a-nuvem/">Seu produto está preparado para a nuvem?</a> appeared first on <a href="https://www.hiago.me">Hiago Silva Souza</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.hiago.me/2017/06/16/seu-produto-esta-preparado-para-a-nuvem/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">219</post-id>	</item>
	</channel>
</rss>
