<?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>RD Tech</title>
	<atom:link href="https://www.rdtech.it/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.rdtech.it/</link>
	<description>Ricerca e Sviluppo messi a disposizione delle Imprese Italiane</description>
	<lastBuildDate>Wed, 09 Apr 2025 13:09:42 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>
	<item>
		<title>Come cambiare versione di Python con un solo comando!</title>
		<link>https://www.rdtech.it/come-cambiare-versione-di-python-con-un-solo-comando/</link>
					<comments>https://www.rdtech.it/come-cambiare-versione-di-python-con-un-solo-comando/#respond</comments>
		
		<dc:creator><![CDATA[Matteo Veraldi]]></dc:creator>
		<pubDate>Wed, 09 Apr 2025 12:26:59 +0000</pubDate>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[pyenv]]></category>
		<category><![CDATA[python]]></category>
		<guid isPermaLink="false">https://www.rdtech.it/?p=2268</guid>

					<description><![CDATA[<p>Se stai studiando o lavorando su progetti diversi, ti sarà sicuramente capitato di avere errori dovuti alla versione di Python. E allora giù a cercare di reinstallare Python, configurare variabili d’ambiente, disinstallare versioni precedenti… Un incubo! Ecco il punto: non tutte le app funzionano con la stessa versione di Python. Alcune richiedono una specifica versione per funzionare bene (o funzionare e basta). E se sei uno sviluppatore, uno studente o un data scientist, ti serve un modo semplice e veloce per passare da una versione all’altra. Quindi abbiamo scritto questo articolo in cui scoprirai come cambiare versione di Python con…</p>
<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/come-cambiare-versione-di-python-con-un-solo-comando/">Come cambiare versione di Python con un solo comando!</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Se stai studiando o lavorando su progetti diversi, ti sarà sicuramente capitato di avere errori dovuti alla versione di Python.</p>



<p>E allora giù a cercare di reinstallare Python, configurare variabili d’ambiente, disinstallare versioni precedenti… Un incubo!</p>



<p>Ecco il punto: <strong>non tutte le app funzionano con la stessa versione di Python</strong>. Alcune richiedono una specifica versione per funzionare bene (o funzionare e basta).</p>



<p>E se sei uno sviluppatore, uno studente o un data scientist, ti serve un modo semplice e veloce per <strong>passare da una versione all’altra</strong>.</p>



<p>Quindi abbiamo scritto questo articolo in cui scoprirai come cambiare versione di Python con un solo comando!</p>



<h2 class="wp-block-heading">Entra in scena <code>pyenv</code>: il tuo gestore di versioni Python</h2>



<h3 class="wp-block-heading">Cos’è pyenv?</h3>



<p><code>pyenv</code> è uno strumento da riga di comando che ti permette di <strong>installare e passare da una versione di Python all’altra</strong> in modo super semplice, senza dover toccare nulla delle versioni di sistema.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>✅ Installa più versioni di Python</p>



<p>✅ Passa da una versione all’altra con un solo comando</p>



<p>✅ Ogni progetto può avere la sua versione di Python dedicata</p>



<p>✅ Non interferisce con Python preinstallato nel sistema</p>
</blockquote>



<p>In pratica, è come <code><a href="https://www.rdtech.it/cambiare-versione-di-nodejs/" target="_blank" rel="noreferrer noopener">nvm</a></code> per Node.js o <code>rbenv</code> per Ruby: uno <strong>switcher intelligente</strong> di versioni.</p>



<h2 class="wp-block-heading">Come installare pyenv su Windows, Linux o macOS</h2>



<p>La procedura cambia leggermente a seconda del sistema operativo. Ecco la guida passo passo.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">💻 Su macOS</h3>



<p>Se usi macOS, il modo più semplice è tramite <a href="https://brew.sh/">Homebrew</a>:</p>



<pre class="wp-block-code"><code>brew update
brew install pyenv</code></pre>



<p>Poi aggiungi queste righe al tuo <code>~/.zshrc</code> (o <code>~/.bash_profile</code>):</p>



<pre class="wp-block-code"><code>export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - zsh)"</code></pre>



<p>E infine:</p>



<pre class="wp-block-code"><code>exec zsh</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">🐧 Su Linux</h3>



<p>Per Debian, Ubuntu o derivate:</p>



<pre class="wp-block-code"><code>curl https://pyenv.run | bash</code></pre>



<p>Poi aggiungi queste righe a <code>~/.bashrc</code>, <code>~/.zshrc</code> o <code>~/.profile</code>:</p>



<pre class="wp-block-code"><code>export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"</code></pre>



<p>Poi riavvia il terminale o esegui <code>source ~/.bashrc</code>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">🪟 Su Windows</h3>



<p>Su Windows il consiglio è usare <strong>pyenv-win</strong>, un progetto parallelo a pyenv per ambienti Windows.</p>



<ol class="wp-block-list">
<li>Apri PowerShell come amministratore</li>



<li>Esegui:</li>
</ol>



<pre class="wp-block-code"><code>Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &amp;"./install-pyenv-win.ps1"</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Come installare e cambiare versione di Python con pyenv</h2>



<p>Dopo aver installato <code>pyenv</code>, puoi iniziare a giocare con le versioni di Python.</p>



<h3 class="wp-block-heading">Installa una nuova versione</h3>



<p>Per esempio, per installare Python 3.10.13:</p>



<pre class="wp-block-code"><code>pyenv install 3.10.13</code></pre>



<h3 class="wp-block-heading">Cambia la versione di Python predefinita</h3>



<pre class="wp-block-code"><code>pyenv global 3.10.13</code></pre>



<p>Questa sarà la versione usata globalmente nel sistema (senza toccare quella di sistema!).</p>



<h3 class="wp-block-heading">Cambia versione solo per una cartella/progetto</h3>



<p>Entra nella cartella del tuo progetto e scrivi:</p>



<pre class="wp-block-code"><code>pyenv local 3.8.18</code></pre>



<p>Pyenv creerà un file <code>.python-version</code> e userà <strong>solo lì</strong> quella versione.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Tieni pyenv aggiornato!</h2>



<p>Il progetto <code>pyenv</code> viene aggiornato di frequente per supportare le nuove versioni di Python. Tienilo aggiornato con:</p>



<h3 class="wp-block-heading">Su macOS:</h3>



<pre class="wp-block-code"><code>brew install pyenv --head</code></pre>



<h3 class="wp-block-heading">Su Linux:</h3>



<pre class="wp-block-code"><code>pyenv update</code></pre>



<h3 class="wp-block-heading">Su Windows:</h3>



<pre class="wp-block-code"><code>&amp;"${env:PYENV_HOME}\install-pyenv-win.ps1"</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Conclusione: un comando, infinite possibilità</h2>



<p>Con <code>pyenv</code>, puoi installare tutte le versioni di Python che vuoi e passare da una all’altra <strong>in un secondo</strong>.</p>



<p>Niente più conflitti, niente più caos. È uno strumento indispensabile per chiunque prenda sul serio lo sviluppo in Python — anche se sei solo all&#8217;inizio!</p>



<p>Se vuoi sapere come configurare <code>pyenv</code> con <code>Visual Studio Code</code> o <code>PyCharm</code>, contattaci sui nostri canali social!</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">🧠 TL;DR</h3>



<ul class="wp-block-list">
<li>Hai progetti con versioni diverse di Python? Usa <code>pyenv</code>.</li>



<li>Installalo con un comando.</li>



<li>Installa Python 3.x con <code>pyenv install 3.x.x</code>.</li>



<li>Cambia versione con <code>pyenv global</code> o <code>pyenv local</code>.</li>



<li>Sei pronto per sviluppare con Python!</li>
</ul>
<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/come-cambiare-versione-di-python-con-un-solo-comando/">Come cambiare versione di Python con un solo comando!</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.rdtech.it/come-cambiare-versione-di-python-con-un-solo-comando/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Nuovo Percorso Formativo avviato tra RD Tech e Istituto di Istruzione Superiore &#8220;Carlo Rambaldi&#8221; di Lamezia Terme</title>
		<link>https://www.rdtech.it/pcto-istituto-carlo-rambaldi-lamezia/</link>
					<comments>https://www.rdtech.it/pcto-istituto-carlo-rambaldi-lamezia/#respond</comments>
		
		<dc:creator><![CDATA[publisher]]></dc:creator>
		<pubDate>Mon, 26 Feb 2024 16:52:42 +0000</pubDate>
				<category><![CDATA[Novità]]></category>
		<guid isPermaLink="false">https://www.rdtech.it/?p=2007</guid>

					<description><![CDATA[<p>Nuovo Percorso Formativo avviato tra RD Tech e Istituto di Istruzione Superiore &#8220;Carlo Rambaldi&#8221; di Lamezia TermeLa RD Tech ha ospitato oggi la classe 5H del Polo Tecnologico nella sede sita in Caraffa di Catanzaro per dare avvio al Percorso per le Competenze Trasversali e di Orientamento (PCTO). La collaborazione tra RD Tech e Polo Tecnologico per lo svolgimento dei percorsi formativi ha avuto inizio nel 2019 e ogni anno permette agli studenti coinvolti l&#8217;acquisizione di competenze nell&#8217;ambito informatico attraverso un&#8217;esperienza diretta in azienda. La RD Tech ringrazia il Dirigente Scolastico Anna Primavera e il Prof. Roberto Bennardo per la…</p>
<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/pcto-istituto-carlo-rambaldi-lamezia/">Nuovo Percorso Formativo avviato tra RD Tech e Istituto di Istruzione Superiore &#8220;Carlo Rambaldi&#8221; di Lamezia Terme</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="2007" class="elementor elementor-2007">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-ac6a33c elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="ac6a33c" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-fe36c88" data-id="fe36c88" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-02c692a elementor-widget elementor-widget-gallery" data-id="02c692a" data-element_type="widget" data-settings="{&quot;columns&quot;:2,&quot;aspect_ratio&quot;:&quot;1:1&quot;,&quot;lazyload&quot;:&quot;yes&quot;,&quot;gallery_layout&quot;:&quot;grid&quot;,&quot;columns_tablet&quot;:2,&quot;columns_mobile&quot;:1,&quot;gap&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]},&quot;gap_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]},&quot;gap_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]},&quot;link_to&quot;:&quot;file&quot;,&quot;overlay_background&quot;:&quot;yes&quot;,&quot;content_hover_animation&quot;:&quot;fade-in&quot;}" data-widget_type="gallery.default">
				<div class="elementor-widget-container">
			<style>/*! elementor-pro - v3.12.0 - 29-03-2023 */
.elementor-gallery__container{min-height:1px}.elementor-gallery-item{position:relative;overflow:hidden;display:block;text-decoration:none;border:solid var(--image-border-width) var(--image-border-color);border-radius:var(--image-border-radius)}.elementor-gallery-item__content,.elementor-gallery-item__overlay{height:100%;width:100%;position:absolute;top:0;left:0}.elementor-gallery-item__overlay{mix-blend-mode:var(--overlay-mix-blend-mode);transition-duration:var(--overlay-transition-duration);transition-property:mix-blend-mode,transform,opacity,background-color}.elementor-gallery-item__image.e-gallery-image{transition-duration:var(--image-transition-duration);transition-property:filter,transform}.elementor-gallery-item__content{display:flex;flex-direction:column;justify-content:var(--content-justify-content,center);align-items:center;text-align:var(--content-text-align);padding:var(--content-padding)}.elementor-gallery-item__content>div{transition-duration:var(--content-transition-duration)}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(2){transition-delay:calc(var(--content-transition-delay) / 3)}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(3){transition-delay:calc(var(--content-transition-delay) / 3 * 2)}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(4){transition-delay:calc(var(--content-transition-delay) / 3 * 3)}.elementor-gallery-item__description{color:var(--description-text-color,#fff);width:100%}.elementor-gallery-item__title{color:var(--title-text-color,#fff);font-weight:700;width:100%}.elementor-gallery__titles-container{display:flex;flex-wrap:wrap;justify-content:var(--titles-container-justify-content,center);margin-bottom:20px}.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:after,.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:before{background-color:var(--galleries-pointer-bg-color-hover)}.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:after,.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:before{background-color:var(--galleries-pointer-bg-color-active)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item:before{border-color:var(--galleries-pointer-bg-color-hover);border-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item:after{border-color:var(--galleries-pointer-bg-color-hover)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:after,.elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:before{border-color:var(--galleries-pointer-bg-color-active)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:before{border-left-width:var(--galleries-pointer-border-width);border-bottom-width:var(--galleries-pointer-border-width);border-right-width:0;border-top-width:0}.elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:after{border-left-width:0;border-bottom-width:0;border-right-width:var(--galleries-pointer-border-width);border-top-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:before{border-left-width:var(--galleries-pointer-border-width);border-bottom-width:0;border-right-width:0;border-top-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:after{border-left-width:0;border-bottom-width:var(--galleries-pointer-border-width);border-right-width:var(--galleries-pointer-border-width);border-top-width:0}.elementor-gallery__titles-container .e--pointer-double-line .elementor-item:after,.elementor-gallery__titles-container .e--pointer-double-line .elementor-item:before,.elementor-gallery__titles-container .e--pointer-overline .elementor-item:before,.elementor-gallery__titles-container .e--pointer-underline .elementor-item:after{height:var(--galleries-pointer-border-width)}.elementor-gallery-title{--space-between:10px;cursor:pointer;color:#6d7882;font-weight:500;position:relative;padding:7px 14px;transition:all .3s}.elementor-gallery-title--active{color:#495157}.elementor-gallery-title:not(:last-child){margin-right:var(--space-between)}.elementor-gallery-item__title+.elementor-gallery-item__description{margin-top:var(--description-margin-top)}.e-gallery-item.elementor-gallery-item{transition-property:all}.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-bottom,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-left,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-right,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-top,.e-gallery-item:hover .elementor-gallery__item-overlay-bg,.e-gallery-item:hover .elementor-gallery__item-overlay-content,.e-gallery-item:hover .elementor-gallery__item-overlay-content__description,.e-gallery-item:hover .elementor-gallery__item-overlay-content__title{opacity:1}a.elementor-item.elementor-gallery-title{color:var(--galleries-title-color-normal)}a.elementor-item.elementor-gallery-title.elementor-item-active,a.elementor-item.elementor-gallery-title.highlighted,a.elementor-item.elementor-gallery-title:focus,a.elementor-item.elementor-gallery-title:hover{color:var(--galleries-title-color-hover)}a.elementor-item.elementor-gallery-title.elementor-item-active{color:var(--gallery-title-color-active)}.e-con-inner>.elementor-widget-gallery,.e-con>.elementor-widget-gallery{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)}</style>		<div class="elementor-gallery__container">
							<a class="e-gallery-item elementor-gallery-item elementor-animated-content" href="https://www.rdtech.it/wp-content/uploads/2024/02/IMG_20240226_104705-1-scaled.jpg" data-elementor-open-lightbox="yes" data-elementor-lightbox-slideshow="all-02c692a" data-elementor-lightbox-title="IMG_20240226_104705 (1)" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjAyMCwidXJsIjoiaHR0cHM6XC9cL3d3dy5yZHRlY2guaXRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzAyXC9JTUdfMjAyNDAyMjZfMTA0NzA1LTEtc2NhbGVkLmpwZyIsInNsaWRlc2hvdyI6ImFsbC0wMmM2OTJhIn0%3D">
					<div class="e-gallery-image elementor-gallery-item__image" data-thumbnail="https://www.rdtech.it/wp-content/uploads/2024/02/IMG_20240226_104705-1-1024x578.jpg" data-width="1024" data-height="578" aria-label="" role="img" ></div>
											<div class="elementor-gallery-item__overlay"></div>
														</a>
							<a class="e-gallery-item elementor-gallery-item elementor-animated-content" href="https://www.rdtech.it/wp-content/uploads/2024/02/DSC05045.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-slideshow="all-02c692a" data-elementor-lightbox-title="DSC05045" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjAxNywidXJsIjoiaHR0cHM6XC9cL3d3dy5yZHRlY2guaXRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzAyXC9EU0MwNTA0NS5wbmciLCJzbGlkZXNob3ciOiJhbGwtMDJjNjkyYSJ9">
					<div class="e-gallery-image elementor-gallery-item__image" data-thumbnail="https://www.rdtech.it/wp-content/uploads/2024/02/DSC05045-1024x683.png" data-width="1024" data-height="683" aria-label="" role="img" ></div>
											<div class="elementor-gallery-item__overlay"></div>
														</a>
							<a class="e-gallery-item elementor-gallery-item elementor-animated-content" href="https://www.rdtech.it/wp-content/uploads/2024/02/DSC05043.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-slideshow="all-02c692a" data-elementor-lightbox-title="DSC05043" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjAxOCwidXJsIjoiaHR0cHM6XC9cL3d3dy5yZHRlY2guaXRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzAyXC9EU0MwNTA0My5wbmciLCJzbGlkZXNob3ciOiJhbGwtMDJjNjkyYSJ9">
					<div class="e-gallery-image elementor-gallery-item__image" data-thumbnail="https://www.rdtech.it/wp-content/uploads/2024/02/DSC05043-1024x683.png" data-width="1024" data-height="683" aria-label="" role="img" ></div>
											<div class="elementor-gallery-item__overlay"></div>
														</a>
							<a class="e-gallery-item elementor-gallery-item elementor-animated-content" href="https://www.rdtech.it/wp-content/uploads/2024/02/DSC05051.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-slideshow="all-02c692a" data-elementor-lightbox-title="DSC05051" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjAxMSwidXJsIjoiaHR0cHM6XC9cL3d3dy5yZHRlY2guaXRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzAyXC9EU0MwNTA1MS5wbmciLCJzbGlkZXNob3ciOiJhbGwtMDJjNjkyYSJ9">
					<div class="e-gallery-image elementor-gallery-item__image" data-thumbnail="https://www.rdtech.it/wp-content/uploads/2024/02/DSC05051-1024x683.png" data-width="1024" data-height="683" aria-label="" role="img" ></div>
											<div class="elementor-gallery-item__overlay"></div>
														</a>
							<a class="e-gallery-item elementor-gallery-item elementor-animated-content" href="https://www.rdtech.it/wp-content/uploads/2024/02/DSC05047.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-slideshow="all-02c692a" data-elementor-lightbox-title="DSC05047" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjAxNSwidXJsIjoiaHR0cHM6XC9cL3d3dy5yZHRlY2guaXRcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzAyXC9EU0MwNTA0Ny5wbmciLCJzbGlkZXNob3ciOiJhbGwtMDJjNjkyYSJ9">
					<div class="e-gallery-image elementor-gallery-item__image" data-thumbnail="https://www.rdtech.it/wp-content/uploads/2024/02/DSC05047-1024x683.png" data-width="1024" data-height="683" aria-label="" role="img" ></div>
											<div class="elementor-gallery-item__overlay"></div>
														</a>
					</div>
			</div>
				</div>
					</div>
		</div>
							</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-256239a elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="256239a" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-fde5768" data-id="fde5768" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-19952bd elementor-widget elementor-widget-text-editor" data-id="19952bd" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
			<style>/*! elementor - v3.12.0 - 29-03-2023 */
.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}</style>				<p>Nuovo Percorso Formativo avviato tra RD Tech e Istituto di Istruzione Superiore &#8220;Carlo Rambaldi&#8221; di Lamezia Terme<br />La RD Tech ha ospitato oggi la classe 5H del Polo Tecnologico nella sede sita in Caraffa di Catanzaro per dare avvio al Percorso per le Competenze Trasversali e di Orientamento (PCTO).<br /><span style="font-size: inherit; text-align: inherit; color: var(--color); font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);"><br />La collaborazione tra RD Tech e Polo Tecnologico per lo svolgimento dei percorsi formativi ha avuto inizio nel 2019 e ogni anno permette agli studenti coinvolti l&#8217;acquisizione di competenze nell&#8217;ambito informatico attraverso un&#8217;esperienza diretta in azienda.</span></p><p>La RD Tech ringrazia il Dirigente Scolastico Anna Primavera e il Prof. Roberto Bennardo per la fiducia riposta nel nostro team di lavoro.</p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/pcto-istituto-carlo-rambaldi-lamezia/">Nuovo Percorso Formativo avviato tra RD Tech e Istituto di Istruzione Superiore &#8220;Carlo Rambaldi&#8221; di Lamezia Terme</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.rdtech.it/pcto-istituto-carlo-rambaldi-lamezia/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Le novità di Angular 17</title>
		<link>https://www.rdtech.it/novita-angular-17/</link>
					<comments>https://www.rdtech.it/novita-angular-17/#respond</comments>
		
		<dc:creator><![CDATA[Matteo Veraldi]]></dc:creator>
		<pubDate>Mon, 13 Nov 2023 16:39:11 +0000</pubDate>
				<category><![CDATA[Angular]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[NodeJS]]></category>
		<category><![CDATA[Novità]]></category>
		<category><![CDATA[Senza categoria]]></category>
		<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://www.rdtech.it/?p=1912</guid>

					<description><![CDATA[<p>Angular si è rinnovato con un sito completamente nuovo ed un insieme di funzionalità che danno una ventata d&#8217;aria fresca al framework, sia dal punto di vista di Developer Experience che di User Experience. In questo articolo vedremo alcuni tra i principali cambiamenti. Angular Signals Signals è un sistema che permette ad Angular di gestire uno stato applicativo in maniera granulare.&#160; Questo sistema reattivo di gestione dello stato permette al change detector di ottimizzare la re-renderizzazione dei componenti coinvolti, permettendo allo sviluppatore di massimizzare le performances dei componenti che sviluppa. Un signal è un wrapper che rende &#8220;osservabile&#8221;&#160;un attributo di…</p>
<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/novita-angular-17/">Le novità di Angular 17</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1912" class="elementor elementor-1912">
									<main class="elementor-section elementor-top-section elementor-element elementor-element-cedf3fc ct-section-stretched elementor-section-full_width elementor-section-height-default elementor-section-height-default" data-id="cedf3fc" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-93e4dd4" data-id="93e4dd4" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-8c175f3 elementor-widget elementor-widget-text-editor" data-id="8c175f3" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Angular si è rinnovato con <a href="https://angular.dev/">un sito completamente nuovo</a> ed un insieme di funzionalità che danno una ventata d&#8217;aria fresca al framework, sia dal punto di vista di Developer Experience che di User Experience.</p><p>In questo articolo vedremo alcuni tra i principali cambiamenti.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-de597b6 elementor-widget elementor-widget-heading" data-id="de597b6" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<style>/*! elementor - v3.12.0 - 29-03-2023 */
.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}</style><h2 class="elementor-heading-title elementor-size-default">Angular Signals</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-3c6b36a elementor-widget elementor-widget-text-editor" data-id="3c6b36a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Signals è un sistema che permette ad Angular di gestire uno stato applicativo in maniera granulare. <br />Questo sistema reattivo di gestione dello stato permette al change detector di ottimizzare la re-renderizzazione dei componenti coinvolti, permettendo allo sviluppatore di massimizzare le performances dei componenti che sviluppa.</p><p>Un signal è un wrapper che rende <a href="https://www.google.it/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=&amp;cad=rja&amp;uact=8&amp;ved=2ahUKEwjVzuvRisGCAxUNhP0HHTz8BpMQFnoECBIQAw&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FObserver_pattern%23%3A~%3Atext%3DThe%2520observer%2520design%2520pattern%2520is%2C%252C%2520change%252C%2520test%2520and%2520reuse.&amp;usg=AOvVaw0CPdsmiZCtU8Ieqf7LxIQn&amp;opi=89978449">&#8220;osservabile&#8221;</a> un attributo di classe.</p><p><span style="font-size: inherit; text-align: inherit; color: var(--color); font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);">L&#8217;API di Signals rende il </span><a style="font-size: inherit; text-align: inherit; font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);" href="https://en.wikipedia.org/wiki/Reactive_programming">paradigma di programmazione reattiva</a><span style="font-size: inherit; text-align: inherit; color: var(--color); font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);"> più semplice da applicare grazie alla sua API minimale:</span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-1ea20a6 elementor-widget elementor-widget-code-highlight" data-id="1ea20a6" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-typescript line-numbers">
				<code readonly="true" class="language-typescript">
					<xmp>@Component({
  selector: 'my-app',
  standalone: true,
  template: `
    {{ fullName() }} <button (click)="setName('John')">Click</button>
  `,
})
export class App {
  firstName = signal('Jane');
  lastName = signal('Doe');
  fullName = computed(() => `${this.firstName()} ${this.lastName()}`);

  constructor() {
    effect(() => console.log('Name changed:', this.fullName()));
  }

  setName(newName: string) {
    this.firstName.set(newName);
  }
}</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-dfdb743 elementor-widget elementor-widget-text-editor" data-id="dfdb743" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Per creare un Signal, è sufficiente dichiarare un attributo di classe assegnandogli un valore iniziale &#8220;wrappato&#8221; dalla funzione <code>signal</code> .</p><p>Per leggere il valore corrente di un Signal si invoca l&#8217;attributo di classe come funzione.</p><p>Per modificare il valore di un Signal bisogna passare il nuovo valore coma argomento del metodo <code>set</code> . Il Change Detector di Angular verrà così segnalato e provvederà a notificare tutti gli osservatori, nel nostro caso l&#8217;aggiornamento del template e dell&#8217;attributo <code>computed</code>.</p><p>Per &#8220;reagire&#8221; ai cambiamenti di valore di un Signal, si usa <code>effect</code>, una funzione che accetta una callback come argomento, e la invoca ad ogni cambiamento di stato.</p><p>Un Signal può essere di diversa natura: read-only, scrivibile, composto ecc. Grazie a dei metodi di utilità, un Signal è compatibile con gli Observables della libreria <code>rxjs</code> . Per approfondimenti lasciamo il <a href="https://angular.dev/guide/signals">link alla documentazione dedicata</a> e al nostro <a href="https://www.rdtech.it/contatti/">form di contatto.</a></p><p> </p>						</div>
				</div>
				<div class="elementor-element elementor-element-e6088c1 elementor-widget elementor-widget-spacer" data-id="e6088c1" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
			<style>/*! elementor - v3.12.0 - 29-03-2023 */
.elementor-column .elementor-spacer-inner{height:var(--spacer-size)}.e-con{--container-widget-width:100%}.e-con-inner>.elementor-widget-spacer,.e-con>.elementor-widget-spacer{width:var(--container-widget-width,var(--spacer-size));--align-self:var(--container-widget-align-self,initial);--flex-shrink:0}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container,.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer,.e-con>.elementor-widget-spacer>.elementor-widget-container,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer{height:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner{height:var(--container-widget-height,var(--spacer-size))}</style>		<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-94684ba elementor-widget elementor-widget-heading" data-id="94684ba" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Control flow (Developer Preview)</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-16d289b elementor-widget elementor-widget-text-editor" data-id="16d289b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>I template Angular supportano il &#8220;control flow&#8221; come alternativa alle direttive <code>ngIf</code>, <code>ngFor.</code></p><p>Un esempio:</p>						</div>
				</div>
				<section class="elementor-section elementor-inner-section elementor-element elementor-element-d6d16c6 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="d6d16c6" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-d9da2e7" data-id="d9da2e7" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-5866475 elementor-widget elementor-widget-heading" data-id="5866475" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Control flow</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-1e76ecb elementor-widget elementor-widget-code-highlight" data-id="1e76ecb" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>@Component({
  selector: 'app-root',
  standalone: true,
  template: `
    <h2>Todos</h2>
    <input #text />
    <button (click)="add(text.value)">Add</button>

    @for (todo of todos; track $index) {
    <p>
      <input type="checkbox" (change)="toggle($index)" />
      @if (todo.done) {
      <s>{{ todo.text }}</s>
      } @else {
      <span>{{ todo.text }}</span>
      }
    </p>
    } @empty {
    <p>No todos</p>
    }
  `,
})
export class TodosComponent {
  todos: Array<{done: boolean; text: string}> = [];

  add(text: string) {
    this.todos.push({text, done: false});
  }

  toggle(index: number) {
    this.todos[index].done = !this.todos[index].done;
  }
}</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
					</div>
		</div>
				<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-a5f4db5" data-id="a5f4db5" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-d514fd2 elementor-widget elementor-widget-heading" data-id="d514fd2" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Common Module</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-d078fbd elementor-widget elementor-widget-code-highlight" data-id="d078fbd" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>@Component({
  selector: 'app-root',
  standalone: true,
  imports: [CommonModule],
  template: `
    <h2>Todos</h2>
    <input #text />
    <button (click)="add(text.value)">Add</button>
    <div *ngIf="todos.length; else empty"></div>
    <p *ngFor="let todo of todos; let index = index">
      <input type="checkbox" (change)="toggle(index)" />
      <s *ngIf="todo.done; else pending">{{ todo.text }}</s>
      <ng-template #pending>
        <span>{{ todo.text }}</span>
      </ng-template>
    </p>
    <ng-template #empty>
      <p>No todos</p>
    </ng-template>
  `,
})
export class TodosComponent {
  todos: Array<{ done: boolean; text: string }> = [];

  add(text: string) {
    this.todos.push({ text, done: false });
  }

  toggle(index: number) {
    this.todos[index].done = !this.todos[index].done;
  }
}
</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
					</div>
		</div>
							</div>
		</section>
				<div class="elementor-element elementor-element-1ff106e elementor-widget elementor-widget-spacer" data-id="1ff106e" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-4715064 elementor-widget elementor-widget-heading" data-id="4715064" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Hydration SSR</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-ef107ea elementor-widget elementor-widget-text-editor" data-id="ef107ea" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Angular è cambiato anche nella gestione dello stato in Server Side Rendering: dopo che il client riceve l&#8217;FCP e il bundle js, non viene renderizzata nuovamente l&#8217;intera pagina ma soltanto alcuni nodi specifici. Questo permette di:</p><ul><li>Non avere artefatti visivi dopo il <a href="https://web.dev/articles/fcp?hl=it">first contentful paint.</a></li><li>Ottenere migliori prestazioni Web Core Vitals</li><li>User Experience più fluida</li></ul><div>In aggiunta a tutti i benefici che il Server Side Rendering offre già.</div>						</div>
				</div>
				<div class="elementor-element elementor-element-998a5c1 elementor-widget elementor-widget-spacer" data-id="998a5c1" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-a57436a elementor-widget elementor-widget-heading" data-id="a57436a" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Deferrable views</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-f2c0f4b elementor-widget elementor-widget-text-editor" data-id="f2c0f4b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Analizziamo il caso in cui si utilizza Angular in Server Side Rendering: bisogna essere consapevoli di cosa si renderizza lato server, e cosa si renderizza lato client.</p><p>Questo comportamento si può gestire in diversi modi, ad esempio dichiarando una variabile di stato booleana inizializzata a <code>false</code> che diventa <code>true</code> dopo il ciclo di vita di <code>mount</code> (gestito quindi lato client). Questo stato usato come binding in un <code>ngIf</code> vincola una porzione di template ad essere gestita solo dal client e non dal server.</p><p>In Angular 17 nulla di ciò è più necessario. E&#8217; sufficiente usare il blocco <code>@defer</code> direttamente sul template e un attributo di utilità <code>isBrowser</code> nel Component. Angular gestirà il flusso di stato</p>						</div>
				</div>
				<div class="elementor-element elementor-element-c15fa4b elementor-widget elementor-widget-code-highlight" data-id="c15fa4b" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-typescript line-numbers">
				<code readonly="true" class="language-typescript">
					<xmp>@Component(
    selector: "my-app",
    template: `
    @defer(when isBrowser) {
        <p>Hi, I am the client.</p>
    }
    <p>Hi, I am the server.</p>
    `
)
export class AppComponent {
  isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
}</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-5153409 elementor-widget elementor-widget-text-editor" data-id="5153409" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Un altro caso d&#8217;uso importante è quello in cui il browser deve renderizzare un componente che per qualche motivo impiega molto a comparire sulla pagina.</p><p>Una buona User Experience si basa anche su quanto velocemente una pagina risponde ad un input utente. Un caso standard di &#8220;loading spinner&#8221; si potrebbe descrivere in questo modo:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-45d66be elementor-widget elementor-widget-code-highlight" data-id="45d66be" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>@defer {
  <large-component />
} @loading (after 100ms; minimum 1s) {
  <img decoding="async" alt="loading..." src="loading.gif" />
}
</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-eef612f elementor-widget elementor-widget-spacer" data-id="eef612f" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-9d07d06 elementor-widget elementor-widget-heading" data-id="9d07d06" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Migrazioni per la standalone API</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-eb79fdc elementor-widget elementor-widget-text-editor" data-id="eb79fdc" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Per supportare gli sviluppatori nella migrazione da <code>NgModules</code> a standalone api, il team di Angular ha creato un tool che permette di automatizzare il processo. Il requisito è di avere installato almeno la versione 15.2.0, la build deve essere pulita senza errori di compilazione ed il branch sul tuo vcs deve essere pulito.</p><p>Per lanciare l&#8217;automatismo basta scrivere questo comando su terminale dalla root del progetto:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-d4c2f65 elementor-widget elementor-widget-code-highlight" data-id="d4c2f65" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>ng generate @angular/core:standalone</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-10485fe elementor-widget elementor-widget-text-editor" data-id="10485fe" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Per i nuovi progetti basta usare il flag <code>--standalone</code> dopo <code>ng new</code>,</p>						</div>
				</div>
				<div class="elementor-element elementor-element-71fa5fc elementor-widget elementor-widget-spacer" data-id="71fa5fc" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-88c3493 elementor-widget elementor-widget-heading" data-id="88c3493" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Esbuild e Vite (Developer Preview)</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-a957d06 elementor-widget elementor-widget-text-editor" data-id="a957d06" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><code>ng serve</code> ora supporta<code>esbuild</code> per generare le build di produzione e di sviluppo e di produzione, e <code>vite</code> per il server di sviluppo. Questo significa che le performances di build in fase di sviluppo saranno sensibilmente più veloci. E&#8217; una funzionalità opt-in essendo ancora in &#8220;developer preview&#8221;, per attivarla bisogna modificare <code>angular.json</code> come segue:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-0c62cb2 elementor-widget elementor-widget-code-highlight" data-id="0c62cb2" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-json line-numbers">
				<code readonly="true" class="language-json">
					<xmp>...
"architect": {
  "build": {                     /* Add the esbuild suffix  */
    "builder": "@angular-devkit/build-angular:browser-esbuild",
...</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-b078757 elementor-widget elementor-widget-spacer" data-id="b078757" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-f5eb5e6 elementor-widget elementor-widget-heading" data-id="f5eb5e6" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Jest come test runner (Developer Preview)<br></h2>		</div>
				</div>
				<div class="elementor-element elementor-element-d0df76a elementor-widget elementor-widget-text-editor" data-id="d0df76a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><code>Jest</code> è uno dei framework di testing più diffusi e amati nell&#8217;ecosistema JavaScript. Da questa versione di angular in poi è possibile usarlo:</p><p><code>npm install --save-dev jest</code></p>						</div>
				</div>
				<div class="elementor-element elementor-element-a08e12d elementor-widget elementor-widget-code-highlight" data-id="a08e12d" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-json line-numbers">
				<code readonly="true" class="language-json">
					<xmp>{
  "projects": {
    "my-app": {
      "architect": {
        "test": {
          "builder": "@angular-devkit/build-angular:jest",
          "options": {
            "tsConfig": "tsconfig.spec.json",
            "polyfills": ["zone.js", "zone.js/testing"]
          }
        }
      }
    }
  }
}</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-e9fe08f elementor-widget elementor-widget-spacer" data-id="e9fe08f" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-dba34a1 elementor-widget elementor-widget-heading" data-id="dba34a1" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Conclusioni</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-548f6b1 elementor-widget elementor-widget-text-editor" data-id="548f6b1" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Con queste novità il team di Google dimostra non solo di ascoltare le richieste degli sviluppatori (vedi Jest, Esbuild + Vite) e un&#8217;attenzione particolare alla Developer Experience (vedi Control Flow, @defer), ma dimostra soprattutto che Angular è un Framework che tiene stretto il proprio posto nel mercato dell&#8217;industria Web e lo terrà ancora per lungo tempo.</p><p>Personalmente ho molto apprezzato l&#8217;introduzione dei <code>Signal</code> ed il lavoro fatto per semplificare e migliorare il <code>Server Side Rendering</code>. </p><p>Il nuovo sito di Angular <a href="https://github.com/angular/angular/tree/main/adev">sarà completamente open-source e disponibile su GitHub</a>, non vediamo l&#8217;ora di poterlo studiare e condividere le nostre scoperte con voi.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-9179035 elementor-widget elementor-widget-heading" data-id="9179035" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Vuoi approfondire uno di questi argomenti?</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-d1890af elementor-widget elementor-widget-text-editor" data-id="d1890af" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Contattaci tramite <a href="https://angular.dev/">il form su questo sito web</a> o <a href="https://tr.ee/aTQIIRlpWV">tramite i nostri canali social</a>!</p>						</div>
				</div>
				<div class="elementor-element elementor-element-ecd13b7 elementor-widget elementor-widget-text-editor" data-id="ecd13b7" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
													</div>
				</div>
				<div class="elementor-element elementor-element-8467b12 elementor-widget elementor-widget-text-editor" data-id="8467b12" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
													</div>
				</div>
					</div>
		</div>
							</div>
		</main>
							</div>
		<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/novita-angular-17/">Le novità di Angular 17</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.rdtech.it/novita-angular-17/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Alla scoperta di Bun: l’ecosistema JavaScript veloce, moderno e innovativo</title>
		<link>https://www.rdtech.it/scopri-bun/</link>
					<comments>https://www.rdtech.it/scopri-bun/#respond</comments>
		
		<dc:creator><![CDATA[Matteo Veraldi]]></dc:creator>
		<pubDate>Wed, 20 Sep 2023 13:29:53 +0000</pubDate>
				<category><![CDATA[NodeJS]]></category>
		<category><![CDATA[Novità]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[bun]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[informatica]]></category>
		<category><![CDATA[node]]></category>
		<category><![CDATA[novità]]></category>
		<guid isPermaLink="false">https://www.rdtech.it/?p=1762</guid>

					<description><![CDATA[<p>Introduzione In questi ultimi 14 anni, gli strumenti richiesti per sviluppare in NodeJS sono diventati sempre più lenti e complessi (vedi: webpack, babel, lerna, ecc…).&#160; Bun è un toolkit all-in-one gratuito e open source che mira a risolvere questo problema: permette di gestire, eseguire, costruire, testare e debuggare singoli file o complesse applicazioni full-stack scritte in JavaScript e TypeScript in maniera semplice. E’ stato sviluppato da “Oven”, un&#8217;azienda di sviluppo software con sede a San Francisco fondata con l’unico obiettivo di trasformare lo sviluppo in JavaScript rendendolo veloce e performante. Dalla versione 1.0 diventa ufficialmente adatto ad essere utilizzato in…</p>
<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/scopri-bun/">Alla scoperta di Bun: l’ecosistema JavaScript veloce, moderno e innovativo</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1762" class="elementor elementor-1762">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-5a62b9d elementor-section-full_width elementor-section-height-default elementor-section-height-default" data-id="5a62b9d" data-element_type="section">
						<div class="elementor-container elementor-column-gap-no">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-459185b" data-id="459185b" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-57100dc elementor-widget elementor-widget-heading" data-id="57100dc" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Introduzione</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-44cbc80 elementor-widget elementor-widget-text-editor" data-id="44cbc80" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span style="font-weight: 400;">In questi ultimi 14 anni, gli strumenti richiesti per sviluppare in <a href="https://www.rdtech.it/cambiare-versione-di-nodejs/">NodeJS</a> sono diventati sempre più lenti e complessi (vedi: webpack, babel, lerna, ecc…). </span></p><p><span style="font-weight: 400;">Bun è un toolkit all-in-one gratuito e open source che mira a risolvere questo problema: permette di gestire, eseguire, costruire, testare e debuggare singoli file o complesse applicazioni full-stack scritte in JavaScript e TypeScript in maniera semplice.</span></p><p><span style="font-weight: 400;">E’ stato sviluppato da “Oven”, un&#8217;azienda di sviluppo software con sede a San Francisco fondata con l’unico obiettivo di trasformare lo sviluppo in JavaScript rendendolo veloce e performante.</span></p><p><span style="font-weight: 400;">Dalla versione 1.0 </span><span style="font-weight: 400;">diventa ufficialmente adatto ad essere utilizzato in produzione</span><span style="font-weight: 400;">.</span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-d5e6281 elementor-widget elementor-widget-heading" data-id="d5e6281" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Ne avevamo davvero bisogno?
</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-6ad2e5c elementor-widget elementor-widget-text-editor" data-id="6ad2e5c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span style="font-weight: 400;">Dalla prima versione di Node JS, diversi strumenti sono stati sviluppati ed interconnessi tra loro per dare luce ai frameworks e alle librerie popolari che utilizziamo ogni giorno.</span></p><p><span style="font-weight: 400;">Ogni strumento aggiunto porta con sé un contributo di complessità</span><span style="font-weight: 400;"> in termini di configurazioni e performances, e viene accumulato con tutti gli altri strumenti già presenti e configurati all’interno del progetto.</span></p><p><span style="font-weight: 400;">Ad esempio, per sviluppare una “semplice” libreria di componenti <a href="https://react.dev/">React</a> in TypeScript con NodeJS devi ALMENO introdurre e configurare:</span></p><ul><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Il package.json</span></li><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Un gestore di pacchetti</span></li><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Una runtime JavaScript</span></li><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Un traspilatore per convertire TypeScript a JavaScript moderno </span></li><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Un traspilatore per convertire JavaScript Moderno a CommonJS</span></li><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Un test runner e una libreria per far girare i test automatici</span></li><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Un bundler per creare l’entry point delle applicazioni di esempio</span></li></ul><p><span style="font-weight: 400;">Per sviluppare una semplice libreria di componenti React in TypeScript con Bun devi solo configurare il package.json.</span></p><p><span style="font-weight: 400;">Non potrebbe essere più semplice di così!</span></p><p><span style="font-weight: 400;">Maggiore è la complessità della libreria o dell’applicazione, maggiore è la probabilità che verranno utilizzati strumenti aggiuntivi o che ci sia la necessità di ritoccare quelli già presenti.</span></p><p><span style="font-weight: 400;">L’obiettivo di Bun in questi termini è semplice: </span><span style="font-weight: 400;">ridurre al minimo la complessità e massimizzare la performances dei progetti JavaScript moderni</span><span style="font-weight: 400;">. Le librerie e i frameworks che funzionano con Node JS dovrebbero continuare a funzionare con Bun come al solito, senza che lo sviluppatore debba imparare o configurare nulla di nuovo.</span></p><p><span style="font-weight: 400;">Nonostante non servano tutti gli strumenti esterni utilizzati nei progetti NodeJS, Bun non è un collo di bottiglia per lo sviluppo! è stato sviluppato in maniera da essere </span><span style="font-weight: 400;">altamente personalizzabile</span><span style="font-weight: 400;"> per soddisfare la maggior parte dei requisiti progettuali.</span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-4314944 elementor-widget elementor-widget-heading" data-id="4314944" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Velocità – Bun vs NodeJS</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-0bea7e3 elementor-widget elementor-widget-text-editor" data-id="0bea7e3" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span style="font-weight: 400;">Ecco qualche dato di comparazione tra Bun e NodeJS:</span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-5354444 elementor-widget elementor-widget-heading" data-id="5354444" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Come package manager</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-5eee8b6 elementor-widget elementor-widget-text-editor" data-id="5eee8b6" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span style="font-weight: 400;">usare “bun” al posto di “npm” per l’installazione dei pacchetti aumenta le performances di </span><b>29 volte.</b></p>						</div>
				</div>
				<div class="elementor-element elementor-element-aef5e9e elementor-widget elementor-widget-image" data-id="aef5e9e" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
			<style>/*! elementor - v3.12.0 - 29-03-2023 */
.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=".svg"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}</style>												<img fetchpriority="high" decoding="async" width="1024" height="506" src="https://www.rdtech.it/wp-content/uploads/2023/09/packagemanager-1024x506.png" class="attachment-large size-large wp-image-1769" alt="" srcset="https://www.rdtech.it/wp-content/uploads/2023/09/packagemanager-1024x506.png 1024w, https://www.rdtech.it/wp-content/uploads/2023/09/packagemanager-300x148.png 300w, https://www.rdtech.it/wp-content/uploads/2023/09/packagemanager-768x380.png 768w, https://www.rdtech.it/wp-content/uploads/2023/09/packagemanager-1536x759.png 1536w, https://www.rdtech.it/wp-content/uploads/2023/09/packagemanager.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" />															</div>
				</div>
				<div class="elementor-element elementor-element-ea21a32 elementor-widget elementor-widget-heading" data-id="ea21a32" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Come bundler</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-783a94f elementor-widget elementor-widget-text-editor" data-id="783a94f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span style="font-weight: 400;">usare “bun” al posto di webpack per il bundling del codice aumenta la velocità di costruzione degli artefatti di </span><b>224 volte</b><span style="font-weight: 400;">.</span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-1492b38 elementor-widget elementor-widget-image" data-id="1492b38" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img decoding="async" width="1024" height="408" src="https://www.rdtech.it/wp-content/uploads/2023/09/bundler-1024x408.png" class="attachment-large size-large wp-image-1768" alt="" srcset="https://www.rdtech.it/wp-content/uploads/2023/09/bundler-1024x408.png 1024w, https://www.rdtech.it/wp-content/uploads/2023/09/bundler-300x120.png 300w, https://www.rdtech.it/wp-content/uploads/2023/09/bundler-768x306.png 768w, https://www.rdtech.it/wp-content/uploads/2023/09/bundler-1536x612.png 1536w, https://www.rdtech.it/wp-content/uploads/2023/09/bundler.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" />															</div>
				</div>
				<div class="elementor-element elementor-element-31b42d7 elementor-widget elementor-widget-heading" data-id="31b42d7" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Come transpiler</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-fe66386 elementor-widget elementor-widget-text-editor" data-id="fe66386" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span style="font-weight: 400;">La conversione di TypeScript in JavaScript con bun al posto di tsc aumenta la velocità di di </span><b>44 volte</b><span style="font-weight: 400;">:</span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-7e2dee2 elementor-widget elementor-widget-image" data-id="7e2dee2" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img decoding="async" width="1024" height="442" src="https://www.rdtech.it/wp-content/uploads/2023/09/transpiler-1024x442.png" class="attachment-large size-large wp-image-1770" alt="" srcset="https://www.rdtech.it/wp-content/uploads/2023/09/transpiler-1024x442.png 1024w, https://www.rdtech.it/wp-content/uploads/2023/09/transpiler-300x130.png 300w, https://www.rdtech.it/wp-content/uploads/2023/09/transpiler-768x332.png 768w, https://www.rdtech.it/wp-content/uploads/2023/09/transpiler.png 1394w" sizes="(max-width: 1024px) 100vw, 1024px" />															</div>
				</div>
				<div class="elementor-element elementor-element-23c2b45 elementor-widget elementor-widget-heading" data-id="23c2b45" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Come runtime</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-8ae9842 elementor-widget elementor-widget-text-editor" data-id="8ae9842" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span style="font-weight: 400;">Un WebSocket in Bun è più veloce rispetto ad un Web Socket in Node JS di </span><b>6 volte</b><span style="font-weight: 400;">:</span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-5b8bacf elementor-widget elementor-widget-image" data-id="5b8bacf" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="475" height="386" src="https://www.rdtech.it/wp-content/uploads/2023/09/websocker.png" class="attachment-large size-large wp-image-1771" alt="" srcset="https://www.rdtech.it/wp-content/uploads/2023/09/websocker.png 475w, https://www.rdtech.it/wp-content/uploads/2023/09/websocker-300x244.png 300w" sizes="auto, (max-width: 475px) 100vw, 475px" />															</div>
				</div>
				<div class="elementor-element elementor-element-57c2b75 elementor-widget elementor-widget-heading" data-id="57c2b75" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Conclusioni</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-4713ded elementor-widget elementor-widget-text-editor" data-id="4713ded" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span style="font-weight: 400;">Al momento della scrittura di questo articolo Bun è stato dichiarato stabile e production-ready da pochi giorni; La community è molto attiva e non ci sono progetti molto grossi che lo utilizzano.</span></p><p><span style="font-weight: 400;">E’ una novità imperdibile per tutti gli sviluppatori Backend o Frontend che usano Node JS, e vale la pena attendere ancora un po di tempo prima di cominciare a introdurlo nei prossimi progetti di ricerca e sviluppo.</span></p><p><span style="font-weight: 400;">Se vuoi saperne di più, consulta il <a href="https://bun.sh/">sito ufficiale di Bun</a> o <a href="https://www.rdtech.it/contatti/">contattaci tramite il form!</a></span></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/scopri-bun/">Alla scoperta di Bun: l’ecosistema JavaScript veloce, moderno e innovativo</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.rdtech.it/scopri-bun/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Test Driven Development (TDD): Vantaggi ed esempi pratici</title>
		<link>https://www.rdtech.it/test-driven-development-tdd-vantaggi-ed-esempi-pratici/</link>
					<comments>https://www.rdtech.it/test-driven-development-tdd-vantaggi-ed-esempi-pratici/#respond</comments>
		
		<dc:creator><![CDATA[Matteo Veraldi]]></dc:creator>
		<pubDate>Tue, 08 Aug 2023 15:53:04 +0000</pubDate>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[regressions]]></category>
		<category><![CDATA[solve bugs]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[test driven development]]></category>
		<guid isPermaLink="false">https://www.rdtech.it/?p=1700</guid>

					<description><![CDATA[<p>Introduzione Nell&#8217;ambito dello sviluppo software, il Test Driven Development (TDD) sta emergendo come un fondamentale approccio per creare applicazioni solide e affidabili. Attraverso la scrittura anticipata dei test, il TDD offre benefici significativi che influenzano la qualità e l&#8217;efficienza dello sviluppo. In questo articolo, esploreremo i vantaggi del Test Driven Development, con esempi concreti in JavaScript, evidenziando come questa metodologia possa notevolmente migliorare il processo di sviluppo. TDD e ottimizzazione del codice Consideriamo l&#8217;esempio di una classe JavaScript per una calcolatrice. Cominciamo scrivendo un test che delinea il comportamento atteso: describe("Calculator class", () => { test('it should add two numbers', ()…</p>
<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/test-driven-development-tdd-vantaggi-ed-esempi-pratici/">Test Driven Development (TDD): Vantaggi ed esempi pratici</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1700" class="elementor elementor-1700">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-69e6ccc elementor-section-full_width elementor-section-height-default elementor-section-height-default" data-id="69e6ccc" data-element_type="section">
						<div class="elementor-container elementor-column-gap-no">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5ea1411" data-id="5ea1411" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-d0f9acf elementor-widget elementor-widget-heading" data-id="d0f9acf" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Introduzione</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-add46d4 elementor-widget elementor-widget-text-editor" data-id="add46d4" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Nell&#8217;ambito dello sviluppo software, il Test Driven Development (TDD) sta emergendo come un fondamentale approccio per <strong>creare applicazioni solide e affidabili.</strong> <br />Attraverso la <strong>scrittura anticipata dei test</strong>, il TDD offre benefici significativi che influenzano la qualità e l&#8217;efficienza dello sviluppo. <br />In questo articolo, esploreremo i vantaggi del Test Driven Development, con esempi concreti in JavaScript, evidenziando come questa metodologia possa notevolmente <strong>migliorare il processo di sviluppo.</strong></p>						</div>
				</div>
				<div class="elementor-element elementor-element-0ee6949 elementor-widget elementor-widget-heading" data-id="0ee6949" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">TDD e ottimizzazione del codice</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-6e2b9b1 elementor-widget elementor-widget-text-editor" data-id="6e2b9b1" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Consideriamo l&#8217;esempio di una classe JavaScript per una calcolatrice. <br /><strong>Cominciamo scrivendo un test che delinea il comportamento atteso:</strong></p>						</div>
				</div>
				<div class="elementor-element elementor-element-a11b009 elementor-widget elementor-widget-code-highlight" data-id="a11b009" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>describe("Calculator class", () => {
    test('it should add two numbers', () => {
        const calc = new Calculator();
        expect(calc.add(2, 3)).toBe(5);
    });
})
</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-8995805 elementor-widget elementor-widget-text-editor" data-id="8995805" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Il TDD ci impone di ponderare la progettazione del codice prima ancora di iniziare a programmare, risultando in una base solida per lo sviluppo.<br />Per creare la funzionalità richiesta basta scrivere &#8220;il codice necessario per far passare il test&#8221;.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-ddcd981 elementor-widget elementor-widget-code-highlight" data-id="ddcd981" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>export class Calculator {
    add(numberA, numberB) {
        return numberA + numberB;
    }
}</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-00bee73 elementor-widget elementor-widget-text-editor" data-id="00bee73" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>L&#8217;eccessiva semplificazione dell&#8217;esempio non lo fa apprezzare, ma scrivere prima il test e poi il codice, specialmente in software reali, è una pratica che nella maggior parte dei casi permette di ridurre notevolmente la mole di linee di codice prodotte, perché lo sviluppatore tende ad avere molto più chiaro il requisito da soddisfare. </p>						</div>
				</div>
				<div class="elementor-element elementor-element-363ccd4 elementor-widget elementor-widget-heading" data-id="363ccd4" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Estenzione delle funzionalità in TDD</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-25b27e3 elementor-widget elementor-widget-text-editor" data-id="25b27e3" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Supponiamo di dover estendere la funzione add in modo da accettare un numero indefinito di argomenti da sommare.</p><p>Modifichiamo il codice del test</p>						</div>
				</div>
				<div class="elementor-element elementor-element-6db7b78 elementor-widget elementor-widget-code-highlight" data-id="6db7b78" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>describe("Calculator class", () => {
    // Aggiorniamo la descrizione del test
    test('it should add multiple numbers', () => {
        const calc = new Calculator();
        expect(calc.add(2, 3)).toBe(5);
        // aggiungiamo i casi da supportare
        expect(calc.add(1,2,3,4)).toBe(10);
    });
})
</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-6bcda1e elementor-widget elementor-widget-text-editor" data-id="6bcda1e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Modifichiamo il codice nella maniera più semplice per far passare il test</p>						</div>
				</div>
				<div class="elementor-element elementor-element-6072e3a elementor-widget elementor-widget-code-highlight" data-id="6072e3a" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>export class Calculator {
    add(...numbers) {
        let result = 0;
        for(let number of numbers) {
            result += number;
        }
        return result;
    }
}</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-ac06753 elementor-widget elementor-widget-text-editor" data-id="ac06753" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Attraverso i test, otteniamo un metodo efficace per estendere una funzionalità <strong>senza creare regressioni sul funzionamento precedente.</strong></p><p>La considerazione è sempre la stessa, è già visibile anche in questo esempio, ma è molto più apprezzabile su codice più complesso.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-8074193 elementor-widget elementor-widget-heading" data-id="8074193" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Refactoring con il TDD</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-0dce625 elementor-widget elementor-widget-text-editor" data-id="0dce625" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Consideriamo di dover rifattorizzare il codice della funzione add per ottimizzarla.<br />In questo caso non abbiamo bisogno di scrivere un altro test.<br /><strong>Per rifattorizzare una funzione in TDD è sufficiente modificare la funzione stessa assicurandosi che i test continuino a passare.</strong></p>						</div>
				</div>
				<div class="elementor-element elementor-element-338a58f elementor-widget elementor-widget-code-highlight" data-id="338a58f" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>export class Calculator {
    add(...numbers) {
        return Math.sum(...numbers);
    }
}</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-1d3a62a elementor-widget elementor-widget-heading" data-id="1d3a62a" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Rilevamento più preciso di Bug ed Errori</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-163c2e8 elementor-widget elementor-widget-text-editor" data-id="163c2e8" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Programmare implementando il Test Driven Development produce fin da subito una copertura dei test piuttosto alta, specialmente se in <a href="https://www.google.it/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=&amp;cad=rja&amp;uact=8&amp;ved=2ahUKEwiQr8ajtM2AAxXGVvEDHd4oB7EQFnoECBoQAQ&amp;url=https%3A%2F%2Fwww.redhat.com%2Fit%2Ftopics%2Fdevops%2Fwhat-is-ci-cd&amp;usg=AOvVaw0Fybq5lcx-eGczQzlPoQkQ&amp;opi=89978449">CI/CD</a> sono state implementate regole di soglia che impediscono la pubblicazione di codice non testato o che presenta errori in fase di test.</p><p>Questo significa che una buona fetta di bug, specificamente i bug dovuti a regressioni nel codice, vengono prevenuti.<br />Gli altri però, durante lo sviluppo, devono essere risolti come al solito.</p><p>Consideriamo il caso in cui il client chiami la funzione add inserendo valori non numerici. In produzione avremo un comportamento inaspettato nonostante i test continuino a passare.</p><p>Ecco come risolvere un bug implementando il TDD:</p><p>Scriviamo il codice che descrive il bug:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-f7ca869 elementor-widget elementor-widget-code-highlight" data-id="f7ca869" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>describe("Calculator class", () => {
    // ...
    test('it should throw if at least one argument is not a number', () => {
        const calc = new Calculator();
        expect(calc.add("hello", 3)).toThrow("All arguments must be of type numeric.");
    });
})</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-7426d18 elementor-widget elementor-widget-text-editor" data-id="7426d18" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Come fatto fin&#8217;ora, scriviamo il codice minimo per soddisfare il requisito:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-dad41da elementor-widget elementor-widget-code-highlight" data-id="dad41da" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>export class Calculator {
    add(...numbers) {
        if(numbers.some(n => typeof n !== number)) {
            throw new Error("All arguments must be of type numeric.");
        }
        return Math.sum(...numbers);
    }
}</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-d0de012 elementor-widget elementor-widget-heading" data-id="d0de012" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Incremento della Fiducia e Velocità nello Sviluppo</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-8f7cf9f elementor-widget elementor-widget-text-editor" data-id="8f7cf9f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Attraverso l&#8217;approccio TDD, sviluppiamo fiducia nella stabilità del codice. I test costanti assicurano che le modifiche non causino regressioni, permettendoci di sviluppare nuove funzionalità con rapidità.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-6040e84 elementor-widget elementor-widget-heading" data-id="6040e84" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Conclusione</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-088a651 elementor-widget elementor-widget-text-editor" data-id="088a651" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Il Test Driven Development (TDD) rappresenta un metodo potente per lo sviluppo, offrendo una serie di vantaggi tangibili. </p><p>Con esempi pratici in JavaScript, abbiamo illustrato come il TDD potenzia la progettazione, riduce gli errori, agevola il refactoring e incrementa la fiducia nello sviluppo. </p><p>Integrando il TDD nella propria pratica di sviluppo, è possibile garantire applicazioni di alta qualità e affidabilità. </p><p>Hai domande o vuoi approfondimenti su questo argomento? <a href="_wp_link_placeholder" data-wplink-edit="true">Contattaci</a>.</p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-894ce48 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="894ce48" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b8407e8" data-id="b8407e8" data-element_type="column">
			<div class="elementor-widget-wrap">
									</div>
		</div>
							</div>
		</section>
							</div>
		<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/test-driven-development-tdd-vantaggi-ed-esempi-pratici/">Test Driven Development (TDD): Vantaggi ed esempi pratici</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.rdtech.it/test-driven-development-tdd-vantaggi-ed-esempi-pratici/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Come cambiare versione di NodeJS con un solo comando!</title>
		<link>https://www.rdtech.it/cambiare-versione-di-nodejs/</link>
					<comments>https://www.rdtech.it/cambiare-versione-di-nodejs/#respond</comments>
		
		<dc:creator><![CDATA[Matteo Veraldi]]></dc:creator>
		<pubDate>Mon, 31 Jul 2023 10:35:55 +0000</pubDate>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[NodeJS]]></category>
		<category><![CDATA[downgrade]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[node]]></category>
		<category><![CDATA[nodejs]]></category>
		<category><![CDATA[nvm]]></category>
		<category><![CDATA[upgrade]]></category>
		<guid isPermaLink="false">https://www.rdtech.it/?p=1662</guid>

					<description><![CDATA[<p>TLDR; Utilizzando il CLI NVM (Node Version Manager), puoi installare nuove versioni di NodeJS con questo comando: nvm install v18.12.0 # versione opzionale se c'è un file .nvmrc Per attivare una delle versioni di NodeJS che hai installato: nvm use v18.12.0 # versione opzionale se c'è un file .nvmrc Per impostare una versione di default: nvm alias default v18.12.0 Introduzione Cambiare versione di NodeJS è una pratica molto comune nello sviluppo di applicazioni front-end e/o back-end. I motivi di solito sono questi tre: Hai bisogno di aggiornare il progetto a cui stai lavorando; Stai per lavorare su un altro progetto…</p>
<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/cambiare-versione-di-nodejs/">Come cambiare versione di NodeJS con un solo comando!</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1662" class="elementor elementor-1662">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-162fade elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="162fade" data-element_type="section">
						<div class="elementor-container elementor-column-gap-no">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-745f435" data-id="745f435" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-ae51356 elementor-widget elementor-widget-menu-anchor" data-id="ae51356" data-element_type="widget" data-widget_type="menu-anchor.default">
				<div class="elementor-widget-container">
			<style>/*! elementor - v3.12.0 - 29-03-2023 */
body.elementor-page .elementor-widget-menu-anchor{margin-bottom:0}</style>		<div id="tldr" class="elementor-menu-anchor"></div>
				</div>
				</div>
				<div class="elementor-element elementor-element-b245149 elementor-widget elementor-widget-heading" data-id="b245149" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">TLDR;</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-58effc3 elementor-widget elementor-widget-text-editor" data-id="58effc3" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Utilizzando il CLI NVM (Node Version Manager), puoi installare nuove versioni di NodeJS con questo comando:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-cee4056 elementor-widget elementor-widget-code-highlight" data-id="cee4056" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-bash ">
				<code readonly="true" class="language-bash">
					<xmp>nvm install v18.12.0 # versione opzionale se c'è un file .nvmrc</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-bb0a785 elementor-widget elementor-widget-text-editor" data-id="bb0a785" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Per attivare una delle versioni di NodeJS che hai installato:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-3feb8fd elementor-widget elementor-widget-code-highlight" data-id="3feb8fd" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-bash ">
				<code readonly="true" class="language-bash">
					<xmp>nvm use v18.12.0 # versione opzionale se c'è un file .nvmrc</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-246357d elementor-widget elementor-widget-text-editor" data-id="246357d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Per impostare una versione di default:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-9c851c5 elementor-widget elementor-widget-code-highlight" data-id="9c851c5" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-bash ">
				<code readonly="true" class="language-bash">
					<xmp>nvm alias default v18.12.0</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-272c8f1 elementor-widget elementor-widget-spacer" data-id="272c8f1" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-7f8db83 elementor-widget elementor-widget-heading" data-id="7f8db83" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Introduzione</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-3125abc elementor-widget elementor-widget-text-editor" data-id="3125abc" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span style="font-size: inherit; text-align: inherit; color: var(--color); font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);">Cambiare versione di NodeJS è una pratica molto comune nello sviluppo di applicazioni front-end e/o back-end.</span></p><p><span style="font-size: inherit; text-align: inherit; color: var(--color); font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);">I motivi di solito sono questi tre:</span></p><ol><li>Hai bisogno di aggiornare il progetto a cui stai lavorando;</li><li>Stai per lavorare su un altro progetto che usa una versione di NodeJS diversa da quella installata;</li><li>Lavori in più progetti NodeJS, alcuni dei quali funzionano solo usando versioni specifiche.</li></ol><div>Per non impazzire con le cartelle e le variabili d&#8217;ambiente, è quindi necessario avere <b>un sistema per aggiornare e cambiare versione di NodeJS il più velocemente possibile</b>. Questo sistema è un tool CLI (Command Line Interface) chiamato Node Version Manager (N.V.M., tr. Gestore di versioni Node). </div>						</div>
				</div>
				<div class="elementor-element elementor-element-cd8ce6b elementor-widget elementor-widget-heading" data-id="cd8ce6b" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Installazione</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-321eb8e elementor-widget elementor-widget-text-editor" data-id="321eb8e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Per cambiare versione di NodeJS bisogna per prima cosa assicurarsi di avere NVM installato nel sistema. Puoi farlo digitando questo comando dal Terminale (o dalla PowerShell per Windows):</p>						</div>
				</div>
				<div class="elementor-element elementor-element-bde4cf0 elementor-widget elementor-widget-code-highlight" data-id="bde4cf0" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-bash ">
				<code readonly="true" class="language-bash">
					<xmp>nvm --version</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-1574e18 elementor-widget elementor-widget-text-editor" data-id="1574e18" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Se il comando ritorna un errore, NVM non è installato, altrimenti puoi passare direttamente a SEZIONE_A_CUI_PASSARE</p>						</div>
				</div>
				<div class="elementor-element elementor-element-8e40588 elementor-widget elementor-widget-menu-anchor" data-id="8e40588" data-element_type="widget" data-widget_type="menu-anchor.default">
				<div class="elementor-widget-container">
					<div id="macos-linux" class="elementor-menu-anchor"></div>
				</div>
				</div>
				<div class="elementor-element elementor-element-db44199 elementor-widget elementor-widget-heading" data-id="db44199" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-large">Mac OS o Linux</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-6e8b7f6 elementor-widget elementor-widget-text-editor" data-id="6e8b7f6" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Apri un Terminale e digita questo comando:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-34f712c elementor-widget elementor-widget-code-highlight" data-id="34f712c" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-bash ">
				<code readonly="true" class="language-bash">
					<xmp>curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/[versione]/install.sh | bash</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-864260d elementor-widget elementor-widget-text-editor" data-id="864260d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>O se usi wget</p>						</div>
				</div>
				<div class="elementor-element elementor-element-3839a92 elementor-widget elementor-widget-code-highlight" data-id="3839a92" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-bash ">
				<code readonly="true" class="language-bash">
					<xmp>wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/[versione]/install.sh | bash</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-1fb9502 elementor-widget elementor-widget-text-editor" data-id="1fb9502" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>La versione da inserire al posto della scritta [versione] idealmente è la prima che trovi <a href="https://github.com/nvm-sh/nvm/releases">visitando la pagina dei rilasci</a>.<br />Nel mio caso è v0.39.3 .</p>						</div>
				</div>
				<div class="elementor-element elementor-element-8deb1e8 elementor-widget elementor-widget-heading" data-id="8deb1e8" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-large">Windows</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-d816cb4 elementor-widget elementor-widget-text-editor" data-id="d816cb4" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Il metodo ufficiale e raccomandato per installare NVM e usarlo su Windows è tramite uno di questi tools: <span style="font-size: inherit; text-align: inherit; color: var(--color); font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);">WSL,  GitBash, MSYS o Cygwin. <br />Sono tutti strumenti basati su una virtualizzazione di Linux, quindi per installare NVM mediante questi tools basta seguire la sezione <a href="#macos-linux">MacOS e Linux</a>.</span></p><p>Se vuoi usare la PowerShell del sistema Windows nativo (caldamente sconsigliato), tra le opzioni disponibili c&#8217;è nvm-windows.</p><ol><li><a style="font-size: inherit; text-align: inherit; font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);" href="https://github.com/coreybutler/nvm-windows/releases">Visita la pagina dei rilasci</a><span style="font-size: inherit; text-align: inherit; color: var(--color); font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);"> sul repository ufficiale del CLI.</span></li><li>Nel riquadro della prima versione che ti appare una volta dentro, dovresti trovare una sezione molto simile a questa<img loading="lazy" decoding="async" class="aligncenter wp-image-1678 size-medium" src="https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-25-014256-300x190.png" alt="Assets da scaricare per nvm-windows" width="300" height="190" srcset="https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-25-014256-300x190.png 300w, https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-25-014256-1024x648.png 1024w, https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-25-014256-768x486.png 768w, https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-25-014256.png 1280w" sizes="auto, (max-width: 300px) 100vw, 300px" /></li><li> Scarica ed esegui l&#8217;installer (l&#8217;unico file che finisce per .exe)</li></ol><div>Verifica l&#8217;installazione aprendo una PowerShell e digitando il comando:</div>						</div>
				</div>
				<div class="elementor-element elementor-element-5cbe13f elementor-widget elementor-widget-code-highlight" data-id="5cbe13f" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript ">
				<code readonly="true" class="language-javascript">
					<xmp>nvm</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
					</div>
		</div>
							</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-20226ce elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="20226ce" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3ed9df7" data-id="3ed9df7" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-1b38767 elementor-widget elementor-widget-spacer" data-id="1b38767" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-89085fe elementor-widget elementor-widget-heading" data-id="89085fe" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Conclusioni</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-048ec9d elementor-widget elementor-widget-text-editor" data-id="048ec9d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Hai correttamente installato un Gestore di Versioni NPM sul tuo PC, non ti resta che usare i comandi elencati in <a href="#tldr">TLDR;</a> per gestire le versioni di Node.</p><p>Bada bene che il cambio di NPM funziona per &#8220;sessione aperta&#8221;. Di base è attiva la versione definita come default.</p><p>L&#8217;installazione di NVM è personalizzabile tramite le variabili d&#8217;ambiente che vengono esposte (vedi la documentazione). <br />Se hai dubbi o hai bisogno di una consulenza, <a href="https://www.rdtech.it/contatti/">contattaci!</a></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/cambiare-versione-di-nodejs/">Come cambiare versione di NodeJS con un solo comando!</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.rdtech.it/cambiare-versione-di-nodejs/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Come installare Java per la programmazione</title>
		<link>https://www.rdtech.it/come-installare-java/</link>
					<comments>https://www.rdtech.it/come-installare-java/#respond</comments>
		
		<dc:creator><![CDATA[Matteo Veraldi]]></dc:creator>
		<pubDate>Tue, 18 Jul 2023 09:01:02 +0000</pubDate>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[corso]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[installare]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[vscode]]></category>
		<guid isPermaLink="false">https://www.rdtech.it/?p=1503</guid>

					<description><![CDATA[<p>Installare Java può non essere facile per chi è alle prime armi.&#160; In questo articolo verrà spiegato passo passo come fare, proponendo due metodi diversi. Che cos&#8217;è Java? Java è un linguaggio di programmazione ad alto livello, fortemente tipizzato, multi-paradigma e indipendente dalla piattaforma di esecuzione, ideato da James Gosling nei primi anni &#8217;90.&#160;Si usa per programmare una vasta gamma di applicazioni tra cui:&#160;&#8211; lo sviluppo web- le analisi dei big data- lo sviluppo di applicazioni mobile.&#160;In RD Tech lo usiamo principalmente per lo sviluppo back-end di applicazioni web di tipo enterprise.&#160;&#160; Come si installa Java? Per programmare in Java,…</p>
<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/come-installare-java/">Come installare Java per la programmazione</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1503" class="elementor elementor-1503">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-989e509 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="989e509" data-element_type="section">
						<div class="elementor-container elementor-column-gap-no">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2a374ee" data-id="2a374ee" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-8e9ba84 elementor-widget elementor-widget-text-editor" data-id="8e9ba84" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Installare Java può non essere facile per chi è alle prime armi. <br /><span style="font-size: inherit; text-align: inherit; color: var(--color); font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);">In questo articolo verrà spiegato passo passo come fare, proponendo due metodi diversi.<br /></span></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-fb95538 ct-section-stretched elementor-section-full_width elementor-section-height-default elementor-section-height-default" data-id="fb95538" data-element_type="section">
						<div class="elementor-container elementor-column-gap-no">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7aed8ef" data-id="7aed8ef" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-2feca96 elementor-widget elementor-widget-heading" data-id="2feca96" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Che cos'è Java?</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-883553b elementor-widget elementor-widget-text-editor" data-id="883553b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<div>Java è <i>un linguaggio di programmazione ad alto livello, fortemente tipizzato, multi-paradigma e indipendente dalla piattaforma di esecuzione</i>, ideato da James Gosling nei primi anni &#8217;90.</div><div> Si usa per programmare una vasta gamma di applicazioni tra cui: </div><div>&#8211; lo sviluppo web</div><div>&#8211; le analisi dei big data</div><div>&#8211; lo sviluppo di applicazioni mobile.</div><div> </div><div>In RD Tech lo usiamo principalmente per lo sviluppo back-end di applicazioni web di tipo enterprise.</div><div><div><div> <span style="color: var(--color); font-size: inherit; font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-align: inherit; text-transform: var(--textTransform);"> </span></div></div></div>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-c2058a4 ct-section-stretched elementor-section-full_width elementor-section-height-default elementor-section-height-default" data-id="c2058a4" data-element_type="section">
						<div class="elementor-container elementor-column-gap-no">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2e38aec" data-id="2e38aec" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-423b6dd elementor-widget elementor-widget-heading" data-id="423b6dd" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Come si installa Java?</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-3244a7c elementor-widget elementor-widget-text-editor" data-id="3244a7c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<div>Per programmare in Java, è necessario installare alcuni software sul computer.</div><div>I due metodi di installazione proposti sono <a href="#eclipse">Eclipse</a> e <a href="#vscode">Visual Studio Code</a>.</div><div> </div><div>I programmi come Eclipse sono inclusi nella categoria di IDE <span style="color: var(--color); font-size: inherit; text-align: inherit; font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);"> </span><span style="color: var(--color); font-size: inherit; text-align: inherit; font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);">(Integrated Development Environment)</span><span style="color: var(--color); font-size: inherit; text-align: inherit; font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);">, significa Ambiente di Sviluppo Integrato perché ha tutto ciò che serve per installare, gestire, scrivere, eseguire ed analizzare il codice Java.</span></div><div>Dei due metodi proposti, questo è il più semplice e veloce.</div><div><span style="color: var(--color); font-size: inherit; text-align: inherit; font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);"> </span></div><div><span style="color: var(--color); font-size: inherit; text-align: inherit; font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);">I programmi come Visual Studio Code sono inclusi nella categoria di editor di testo avanzati. <br />Visual Studio Code è open source, estensibile e ottimizzato per le operazioni comuni di sviluppo software. <br />Per usarlo con Java è necessario <a href="#java">installare manualmente il &#8220;Java Development Kit&#8221;</a> sul proprio computer, e sull&#8217;editor di testo bisogna aggiungere alcune estensioni per rendere più agevole l&#8217;esperienza di sviluppo.</span></div><div><span style="color: var(--color); font-size: inherit; text-align: inherit; font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);"> </span></div>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-b75d355 ct-section-stretched elementor-section-full_width elementor-section-height-default elementor-section-height-default" data-id="b75d355" data-element_type="section">
						<div class="elementor-container elementor-column-gap-no">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3f21b67" data-id="3f21b67" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-972b2ea elementor-widget elementor-widget-menu-anchor" data-id="972b2ea" data-element_type="widget" data-widget_type="menu-anchor.default">
				<div class="elementor-widget-container">
					<div id="eclipse" class="elementor-menu-anchor"></div>
				</div>
				</div>
				<div class="elementor-element elementor-element-50996fd elementor-widget elementor-widget-heading" data-id="50996fd" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Installazione di Eclipse</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-0832fda elementor-widget elementor-widget-text-editor" data-id="0832fda" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>In <a href="https://www.eclipse.org/downloads/">questo sito web</a> bisogna premere sul pulsante Download in basso a sinistra, verrà scaricato un file eseguibile che contiene il Wizard &#8220;eclipseinstaller&#8221;.</p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-97d89d5 ct-section-stretched elementor-section-full_width elementor-section-height-default elementor-section-height-default" data-id="97d89d5" data-element_type="section">
						<div class="elementor-container elementor-column-gap-no">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3c2363d" data-id="3c2363d" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-8e2c5c8 elementor-widget elementor-widget-image" data-id="8e2c5c8" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="300" height="270" src="https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-07-174627-1-e1688745168306-300x270.png" class="attachment-medium size-medium wp-image-1573" alt="" srcset="https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-07-174627-1-e1688745168306-300x270.png 300w, https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-07-174627-1-e1688745168306.png 750w" sizes="auto, (max-width: 300px) 100vw, 300px" />															</div>
				</div>
					</div>
		</div>
							</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-b532fa9 elementor-section-full_width elementor-section-height-default elementor-section-height-default" data-id="b532fa9" data-element_type="section">
						<div class="elementor-container elementor-column-gap-no">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9e52f69" data-id="9e52f69" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-bb3633b elementor-widget elementor-widget-image" data-id="bb3633b" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="250" height="300" src="https://www.rdtech.it/wp-content/uploads/2023/07/eclipse-installer-250x300.png" class="attachment-medium size-medium wp-image-1586" alt="" srcset="https://www.rdtech.it/wp-content/uploads/2023/07/eclipse-installer-250x300.png 250w, https://www.rdtech.it/wp-content/uploads/2023/07/eclipse-installer.png 524w" sizes="auto, (max-width: 250px) 100vw, 250px" />															</div>
				</div>
				<div class="elementor-element elementor-element-6c28afb elementor-widget elementor-widget-text-editor" data-id="6c28afb" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Per Java è sufficiente scegliere la versione &#8220;Eclipse IDE for Java Developers&#8221;.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-10516ed elementor-widget elementor-widget-image" data-id="10516ed" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="300" height="263" src="https://www.rdtech.it/wp-content/uploads/2023/07/image-6-300x263.png" class="attachment-medium size-medium wp-image-1624" alt="" srcset="https://www.rdtech.it/wp-content/uploads/2023/07/image-6-300x263.png 300w, https://www.rdtech.it/wp-content/uploads/2023/07/image-6-1024x899.png 1024w, https://www.rdtech.it/wp-content/uploads/2023/07/image-6-768x675.png 768w, https://www.rdtech.it/wp-content/uploads/2023/07/image-6.png 1216w" sizes="auto, (max-width: 300px) 100vw, 300px" />															</div>
				</div>
				<div class="elementor-element elementor-element-437e379 elementor-widget elementor-widget-text-editor" data-id="437e379" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Se il kit di sviluppo Java non è presente nel sistema, si potrà scegliere di delegare l&#8217;installazione ad Eclipse selezionando una versione di Java VM dal menù a tendina.</p><p>Se invece è presente, basta specificare il percorso di installazione</p>						</div>
				</div>
				<div class="elementor-element elementor-element-8a5f869 elementor-blockquote--skin-boxed elementor-blockquote--button-color-official elementor-widget elementor-widget-blockquote" data-id="8a5f869" data-element_type="widget" data-widget_type="blockquote.default">
				<div class="elementor-widget-container">
			<style>/*! elementor-pro - v3.12.0 - 29-03-2023 */
@charset "UTF-8";.entry-content blockquote.elementor-blockquote:not(.alignright):not(.alignleft),.entry-summary blockquote.elementor-blockquote{margin-right:0;margin-left:0}.elementor-widget-blockquote blockquote{margin:0;padding:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;quotes:none;border:0;font-style:normal;color:#3a3f45}.elementor-widget-blockquote blockquote .e-q-footer:after,.elementor-widget-blockquote blockquote .e-q-footer:before,.elementor-widget-blockquote blockquote:after,.elementor-widget-blockquote blockquote:before,.elementor-widget-blockquote blockquote cite:after,.elementor-widget-blockquote blockquote cite:before{content:none}.elementor-blockquote{transition:.3s}.elementor-blockquote__author,.elementor-blockquote__content{margin-bottom:0;font-style:normal}.elementor-blockquote__author{font-weight:700}.elementor-blockquote .e-q-footer{margin-top:12px;display:flex;justify-content:space-between}.elementor-blockquote__tweet-button{display:flex;transition:.3s;color:#1da1f2;align-self:flex-end;line-height:1;position:relative;width:-moz-max-content;width:max-content}.elementor-blockquote__tweet-button:hover{color:#0967a0}.elementor-blockquote__tweet-button span{font-weight:600}.elementor-blockquote__tweet-button i,.elementor-blockquote__tweet-button span{vertical-align:middle}.elementor-blockquote__tweet-button i+span,.elementor-blockquote__tweet-button svg+span{margin-left:.5em}.elementor-blockquote__tweet-button svg{fill:#1da1f2;height:1em;width:1em}.elementor-blockquote__tweet-label{white-space:pre-wrap}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button{padding:.7em 1.2em;border-radius:100em;background-color:#1da1f2;color:#fff;font-size:15px}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover{background-color:#0967a0;color:#fff}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover:before,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover:before{border-right-color:#0967a0}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button svg,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button svg{fill:#fff;height:1em;width:1em}.elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button,.elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button{padding:0;width:2em;height:2em}.elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i,.elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:before{content:"";border:.5em solid transparent;border-right-color:#1da1f2;position:absolute;left:-.8em;top:50%;transform:translateY(-50%) scaleY(.65);transition:.3s}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:before{right:auto;left:-.8em;border-right-color:#1da1f2;border-left-color:transparent}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:hover:before{border-right-color:#0967a0}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:before{left:auto;right:-.8em;border-right-color:transparent;border-left-color:#1da1f2}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:hover:before{border-left-color:#0967a0}.elementor-blockquote--skin-boxed .elementor-blockquote{background-color:#f9fafa;padding:30px}.elementor-blockquote--skin-border .elementor-blockquote{border-color:#f9fafa;border-left:7px #f9fafa;border-style:solid;padding-left:20px}.elementor-blockquote--skin-quotation .elementor-blockquote:before{content:"“";font-size:100px;color:#f9fafa;font-family:Times New Roman,Times,serif;font-weight:900;line-height:1;display:block;height:.6em}.elementor-blockquote--skin-quotation .elementor-blockquote__content{margin-top:15px}.elementor-blockquote--align-left .elementor-blockquote__content{text-align:left}.elementor-blockquote--align-left .elementor-blockquote .e-q-footer{flex-direction:row}.elementor-blockquote--align-right .elementor-blockquote__content{text-align:right}.elementor-blockquote--align-right .elementor-blockquote .e-q-footer{flex-direction:row-reverse}.elementor-blockquote--align-center .elementor-blockquote{text-align:center}.elementor-blockquote--align-center .elementor-blockquote .e-q-footer,.elementor-blockquote--align-center .elementor-blockquote__author{display:block}.elementor-blockquote--align-center .elementor-blockquote__tweet-button{margin-right:auto;margin-left:auto}</style>		<blockquote class="elementor-blockquote">
			<p class="elementor-blockquote__content">
				<b>Tip:</b> se Java è già presente nel sistema e si vuole usare quella versione invece che delegare ad Eclipse, si possono eseguire questi comandi per ottenerne il percorso:<br>
<b>Windows</b>: Apri la PowerShell -&gt; Digita <i>`$Env:JAVA_HOME`</i> <br>
<b>MacOS e Linux</b>: Apri il terminale -&gt; Digita <i>`echo $JAVA_HOME`</i> <br>
Il percorso restituito dal terminale sarà quello da specificare in fase di installazione.			</p>
					</blockquote>
				</div>
				</div>
				<div class="elementor-element elementor-element-b67789e elementor-widget elementor-widget-text-editor" data-id="b67789e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Una volta terminata l&#8217;installazione, Eclipse sarà già utilizzabile per lo sviluppo.</p><p>Adesso puoi andare al <a style="font-size: inherit; text-align: inherit; font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);" href="#helloworld" rel="noopener">paragrafo Hello World!</a></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-9c6bfc8 ct-section-stretched elementor-section-full_width elementor-section-height-default elementor-section-height-default" data-id="9c6bfc8" data-element_type="section">
						<div class="elementor-container elementor-column-gap-no">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-24115e4" data-id="24115e4" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-b76a088 elementor-widget elementor-widget-menu-anchor" data-id="b76a088" data-element_type="widget" data-widget_type="menu-anchor.default">
				<div class="elementor-widget-container">
					<div id="vscode" class="elementor-menu-anchor"></div>
				</div>
				</div>
				<div class="elementor-element elementor-element-1ead854 elementor-widget elementor-widget-heading" data-id="1ead854" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Installazione di Visual Studio Code</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-41ded2f elementor-widget elementor-widget-text-editor" data-id="41ded2f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>In <a href="https://code.visualstudio.com/">questo sito web</a> bisogna premere sul pulsante Scarica, verrà scaricato un file eseguibile che si dovrà aprire al termine. I passaggi di installazione sono guidati.</p><p>Una volta eseguito Visual Studio Code,  bisogna aprire il pannello &#8220;Estensioni&#8221; cliccando sul bottone rappresentato nell&#8217;immagine qui sotto:</p><p> </p>						</div>
				</div>
				<div class="elementor-element elementor-element-e6f6757 elementor-widget elementor-widget-image" data-id="e6f6757" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="47" height="300" src="https://www.rdtech.it/wp-content/uploads/2023/07/vscode-sidebar-47x300.png" class="attachment-medium size-medium wp-image-1599" alt="" srcset="https://www.rdtech.it/wp-content/uploads/2023/07/vscode-sidebar-47x300.png 47w, https://www.rdtech.it/wp-content/uploads/2023/07/vscode-sidebar.png 106w" sizes="auto, (max-width: 47px) 100vw, 47px" />															</div>
				</div>
				<div class="elementor-element elementor-element-e6af5ed elementor-widget elementor-widget-text-editor" data-id="e6af5ed" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Scrivendo &#8220;vscjava.vscode-java-pack&#8221; nella barra di ricerca del pannello, apparirà un &#8220;Extension Pack&#8221;, contiene tutte le estensioni necessarie per sviluppare in Java, può essere installato premendo su &#8220;Install&#8221;.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-0701fd7 elementor-widget elementor-widget-image" data-id="0701fd7" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="300" height="201" src="https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-10-115724-300x201.png" class="attachment-medium size-medium wp-image-1600" alt="" srcset="https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-10-115724-300x201.png 300w, https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-10-115724.png 573w" sizes="auto, (max-width: 300px) 100vw, 300px" />															</div>
				</div>
					</div>
		</div>
							</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-1fc171a elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="1fc171a" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7d2234a" data-id="7d2234a" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-276c837 elementor-widget elementor-widget-menu-anchor" data-id="276c837" data-element_type="widget" data-widget_type="menu-anchor.default">
				<div class="elementor-widget-container">
					<div id="java" class="elementor-menu-anchor"></div>
				</div>
				</div>
				<div class="elementor-element elementor-element-5045dda elementor-widget elementor-widget-heading" data-id="5045dda" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Installa Java SDK</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-6425be0 elementor-widget elementor-widget-text-editor" data-id="6425be0" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>A differenza di Eclipse, Visual Studio Code non gestisce le installazioni Java. Bisogna farlo manualmente.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-37ce6eb elementor-widget elementor-widget-heading" data-id="37ce6eb" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h4 class="elementor-heading-title elementor-size-medium">Windows</h4>		</div>
				</div>
				<div class="elementor-element elementor-element-5f729da elementor-widget elementor-widget-text-editor" data-id="5f729da" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Il metodo proposto usa Scoop come gestore di pacchetti per Windows.<br /><span style="font-size: inherit; text-align: inherit; color: var(--color); font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);">Si installa </span><a style="font-size: inherit; text-align: inherit; font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);" href="https://scoop.sh/">da questo sito</a><span style="font-size: inherit; text-align: inherit; color: var(--color); font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);"> seguendo i passi descritti in &#8220;Quickstart&#8221;.</span></p><p>1. Tramite PowerShell, bisogna installare il &#8220;bucket&#8221; di Java per Scoop:<br /><em>scoop bucket add java</em></p><p>2. In seguito, si può installare la versione più recente di Java (OpenSDK).<br /><em>scoop install java/openjdk</em></p><p>3. I comandi seguenti servono per inserire il percorso di Java tra le variabili d&#8217;ambiente:</p><pre><em>[System.Environment]::SetEnvironmentVariable("JAVA_HOME", "Incolla qui il percorso di installazione di Java JDK")<br /></em><em style="color: var(--color); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);">[System.Environment]::SetEnvironmentVariable("Path", [System.Environment]::GetEnvironmentVariable('Path', [System.EnvironmentVariableTarget]::Machine) + ";$($env:JAVA_HOME)\bin")</em></pre><p>Una volta aperta una nuova PowerShell e digitato:<br /><em>java &#8211;version</em> <br />apparirà l&#8217;output della Java Virtual Machine. L&#8217;installazione sarà completa.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-2a81373 elementor-widget elementor-widget-heading" data-id="2a81373" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h4 class="elementor-heading-title elementor-size-medium">Mac OSX</h4>		</div>
				</div>
				<div class="elementor-element elementor-element-8fea035 elementor-widget elementor-widget-text-editor" data-id="8fea035" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Installando Homebrew seguendo le istruzioni <a href="https://brew.sh/index_it">su questo sito</a>, è sufficiente digitare questo comando e aspettare che l&#8217;operazione sia completata:</p><p><em>brew install openjdk</em></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-69d0c11 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="69d0c11" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-eea2dc4" data-id="eea2dc4" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-62319c1 elementor-widget elementor-widget-menu-anchor" data-id="62319c1" data-element_type="widget" data-widget_type="menu-anchor.default">
				<div class="elementor-widget-container">
					<div id="helloworld" class="elementor-menu-anchor"></div>
				</div>
				</div>
				<div class="elementor-element elementor-element-149f530 elementor-widget elementor-widget-heading" data-id="149f530" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Hello World!</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-17f0340 elementor-widget elementor-widget-text-editor" data-id="17f0340" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Per capire se la configurazione dell&#8217;ambiente di sviluppo è andato a buon fine, è utile scrivere <a href="https://it.wikipedia.org/wiki/Hello_world">un programma Hello World!</a>.</p><p>Crea una cartella sul tuo computer, e all&#8217;interno scrivi un file HelloWorld.java, incollando questo codice:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-a59c038 elementor-widget elementor-widget-code-highlight" data-id="a59c038" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-java line-numbers">
				<code readonly="true" class="language-java">
					<xmp>class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-6545e6f elementor-widget elementor-widget-heading" data-id="6545e6f" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-medium">Eclipse</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-0d5817c elementor-widget elementor-widget-text-editor" data-id="0d5817c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Una volta salvato il file, clicca sul pulsante verde a forma di &#8220;play&#8221; subito sotto la scritta &#8220;Refactor&#8221; sulla barra in alto.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-2dc72c9 elementor-widget elementor-widget-image" data-id="2dc72c9" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="1024" height="869" src="https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-10-123517-1024x869.png" class="attachment-large size-large wp-image-1613" alt="" srcset="https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-10-123517-1024x869.png 1024w, https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-10-123517-300x255.png 300w, https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-10-123517-768x652.png 768w, https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-10-123517.png 1272w" sizes="auto, (max-width: 1024px) 100vw, 1024px" />															</div>
				</div>
				<div class="elementor-element elementor-element-6b3d4a9 elementor-widget elementor-widget-text-editor" data-id="6b3d4a9" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>La console dovrebbe restituire la scritta &#8220;Hello World&#8221;.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-78152d0 elementor-widget elementor-widget-heading" data-id="78152d0" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-medium">Visual Studio Code</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-a7cd378 elementor-widget elementor-widget-text-editor" data-id="a7cd378" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Una volta salvato il file, clicca sul pulsante a forma di &#8220;play&#8221; in alto a destra.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-46539f5 elementor-widget elementor-widget-image" data-id="46539f5" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="1024" height="481" src="https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-10-123943-1024x481.png" class="attachment-large size-large wp-image-1614" alt="" srcset="https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-10-123943-1024x481.png 1024w, https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-10-123943-300x141.png 300w, https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-10-123943-768x361.png 768w, https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-10-123943-1536x722.png 1536w, https://www.rdtech.it/wp-content/uploads/2023/07/Screenshot-2023-07-10-123943.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" />															</div>
				</div>
					</div>
		</div>
							</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-280efad elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="280efad" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ecbc392" data-id="ecbc392" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-c3de4a1 elementor-widget elementor-widget-heading" data-id="c3de4a1" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Conclusioni</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-7857dad elementor-widget elementor-widget-text-editor" data-id="7857dad" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Se hai seguito tutti i passi correttamente sei pronto a sviluppare in Java. Se hai riscontrato problemi o hai ulteriori domande, <a href="https://www.rdtech.it/contatti/">contattaci!</a></p><p> </p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/come-installare-java/">Come installare Java per la programmazione</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.rdtech.it/come-installare-java/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Che cos&#8217;è un Web Developer?</title>
		<link>https://www.rdtech.it/cose-un-web-developer/</link>
		
		<dc:creator><![CDATA[Matteo Veraldi]]></dc:creator>
		<pubDate>Mon, 06 Feb 2023 15:23:57 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[azienda]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[informatica]]></category>
		<category><![CDATA[lavoro]]></category>
		<category><![CDATA[offerta]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://www.rdtech.it/?p=1372</guid>

					<description><![CDATA[<p>Un web developer è un professionista capace di sviluppare applicazioni accessibili dal web. I suoi compiti sono quelli di un frontend developer e un backend developer  — spesso è più specializzato in una delle due categorie.</p>
<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/cose-un-web-developer/">Che cos&#8217;è un Web Developer?</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1372" class="elementor elementor-1372">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-6ed969f ct-section-stretched elementor-section-full_width elementor-section-height-default elementor-section-height-default" data-id="6ed969f" data-element_type="section">
						<div class="elementor-container elementor-column-gap-no">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-701262d" data-id="701262d" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-e9a5f8e elementor-widget elementor-widget-global elementor-global-1406 elementor-widget-text-editor" data-id="e9a5f8e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Definire che cos&#8217;è un Web Developer oggi non è semplice. Con l&#8217;avanzamento delle tecnologie web le competenze richieste per lo sviluppo e la manutenzione di un&#8217;applicazione sono aumentate. </p><p>&#8220;Sono un Web Developer&#8221; inquadra il tuo settore, ma non le tue competenze specifiche.</p><p>Il motivo è che su applicazioni di medie o grandi dimensioni lavorano vari gruppi di sviluppo, ognuno dei quali è composto da più di uno sviluppatore web con specializzazione diversa a seconda del loro ruolo nel progetto.</p><p><!-- notionvc: 3c1eb7df-1047-4b97-b208-1ae29038cc35 --></p><p>Ad esempio: <br />Può esserci un team dedicato ad uno specifico servizio Back-end e le sue API: <a href="https://www.rdtech.it/cose-un-backend-developer/">Web Developers specializzati in tecnologie Back-end o Back-end Developers</a>;<br />Un altro team può dedicarsi allo sviluppo delle interfacce utente: <a href="https://www.rdtech.it/cose-un-frontend-developer/">Web Developers specializzati in tecnologie Front-end o Front-end Developers</a>;<br />Un terzo team può essere specializzato nella distribuzione delle varie componenti online tramite sistemi automatizzati (CI/CD deployments): Web Developers specializzati in DevOps o DevOps Developers;<br /><span style="font-size: inherit; text-align: inherit; color: var(--color); font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);">La lista è incredibilmente lunga. </span></p><p><span style="color: var(--color); font-size: inherit; font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-align: inherit; text-transform: var(--textTransform);">Ogni ruolo è fondamentale per la creazione di un&#8217;applicazione di successo per garantire che il sistema sia funzionale, sicuro e performante.</span></p><p><span style="color: var(--color); font-size: inherit; font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-align: inherit; text-transform: var(--textTransform);">In RDTech, ci occupiamo dello sviluppo Back-End tramite <a href="https://spring.io/">Spring Boot (Java Framework)</a> o <a href="https://aws.amazon.com/it/what-is/net/">.NET (C# Framework)</a>, produciamo <a href="https://www.redhat.com/it/topics/api/what-is-a-rest-api">REST API</a> e le documentiamo tramite lo standard <a href="https://swagger.io/specification/">OpenAPI (Swagger);</a><br />Sviluppiamo interfacce utente tramite <a href="https://angular.io/">Angular (TypeScript Framework)</a>, <a href="https://it.reactjs.org/">React (libreria JavaScript)</a> o <a href="https://www.thymeleaf.org/">Thymeleaf (Template engine)</a> e distribuiamo le applicazioni tramite <a href="https://httpd.apache.org/">Apache Web Server</a>, <a href="https://tomcat.apache.org/">Tomcat</a>, <a href="https://www.nginx.com/">NGINX</a>, <a href="https://www.redhat.com/it/technologies/jboss-middleware/application-platform">JBoss EAP</a>. </span></p><p><span style="color: var(--color); font-size: inherit; font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-align: inherit; text-transform: var(--textTransform);">Queste sono le tecnologie principali che abbiamo riscontrato essere al momento più adatte per i progetti che gestiamo, ma non siamo chiusi su di esse. Siamo un team dinamico e come tale valutiamo la tecnologia più adatta a seconda delle necessità progettuali.</span></p><p><span style="font-weight: 600;" data-token-index="0">Ti piacerebbe lavorare nell’ambito dello sviluppo di applicazioni web? potresti essere la persona giusta per noi! <a href="https://www.rdtech.it/contatti/">Clicca qui</a> per candidarti.</span></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/cose-un-web-developer/">Che cos&#8217;è un Web Developer?</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Cos’è un Frontend Developer?</title>
		<link>https://www.rdtech.it/cose-un-frontend-developer/</link>
		
		<dc:creator><![CDATA[Matteo Veraldi]]></dc:creator>
		<pubDate>Mon, 06 Feb 2023 14:39:36 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[azienda]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[frontend]]></category>
		<category><![CDATA[informatica]]></category>
		<category><![CDATA[lavoro]]></category>
		<category><![CDATA[offerta]]></category>
		<category><![CDATA[tech]]></category>
		<guid isPermaLink="false">https://www.rdtech.it/?p=1367</guid>

					<description><![CDATA[<p>Un frontend developer è un professionista specializzato nello sviluppo e nella manutenzione di una interfaccia utente; Essa costituisce la parte visibile e interagibile di un sistema informatico</p>
<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/cose-un-frontend-developer/">Cos’è un Frontend Developer?</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1367" class="elementor elementor-1367">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-4a13a4c elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="4a13a4c" data-element_type="section">
						<div class="elementor-container elementor-column-gap-no">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0e17ad3" data-id="0e17ad3" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-f611a8b elementor-widget elementor-widget-text-editor" data-id="f611a8b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Un Frontend Developer è un professionista che si occupa di sviluppare una interfaccia utente.</p><p>In condizioni di lavoro ideali, un Frontend Developer lavora a stretto contatto con uno UI/UX Designer e un Backend Developer:</p><ul><li>Lo UI/UX Designer fornisce tutti gli strumenti necessari per riprodurre lo stile grafico dell’interfaccia, e una documentazione esaustiva su tutti i flussi operativi per utilizzarla.</li><li>Il <a href="https://www.rdtech.it/cose-un-backend-developer/">backend developer</a> fornisce la documentazione necessaria per usare le API (Application Programming Interface): che ha sviluppato per un determinato servizio: sono un’interfaccia software che permette la comunicazione tra due applicativi al fine di creare, leggere, modificare e eliminare i dati secondo la logica di business del sistema</li></ul><p><!-- notionvc: e26d6301-445b-4467-9d8c-01be96c1bad5 --></p><p>Lo sviluppatore front-end dovrà conoscere le principali tecnologie del suo campo così da scegliere quella migliore: ovvero quella che permette il raggiungimento di tutti i requisiti progettuali.</p><p>Il suo ruolo è fondamentale per la creazione di un&#8217;applicazione di successo e la sua esperienza e competenza sono cruciali per garantire che l&#8217;applicazione sia funzionale, sicura e performante.</p><p>In RDTech, i nostri frontend developer utilizzano tecnologie all&#8217;avanguardia come <a href="https://angular.io/">Angular</a> e <a href="https://it.reactjs.org/">React</a> per le interfacce utente renderizzate lato client, e template engine moderne come <a href="https://www.thymeleaf.org/">Thymeleaf</a> per le interfacce utente renderizzate lato server.</p><p><span style="font-weight: 600;" data-token-index="0">Se hai studiato JavaScript e ti piacerebbe lavorare nell’ambito dello sviluppo di applicazioni web come frontend developer, potresti essere la persona giusta per noi! <a href="https://www.rdtech.it/contatti/">Clicca qui</a> per candidarti.</span></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/cose-un-frontend-developer/">Cos’è un Frontend Developer?</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Cos&#8217;è un Backend Developer?</title>
		<link>https://www.rdtech.it/cose-un-backend-developer/</link>
		
		<dc:creator><![CDATA[Matteo Veraldi]]></dc:creator>
		<pubDate>Mon, 06 Feb 2023 14:21:06 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[azienda]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[informatica]]></category>
		<category><![CDATA[lavoro]]></category>
		<category><![CDATA[offerta]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://www.rdtech.it/?p=1354</guid>

					<description><![CDATA[<p>Un backend developer si occupa di sviluppare e mantenere il lato server delle applicazioni web e/o mobile. Si concentra sulla costruzione delle API, sulla gestione della base di dati e sulla risoluzione di problemi di performance.</p>
<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/cose-un-backend-developer/">Cos&#8217;è un Backend Developer?</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1354" class="elementor elementor-1354">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-974a32d elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="974a32d" data-element_type="section">
						<div class="elementor-container elementor-column-gap-no">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4794ac1" data-id="4794ac1" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-404faa4 elementor-widget elementor-widget-text-editor" data-id="404faa4" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Un Backend developer è un professionista che si occupa di:</p><ul><li>Gestione e manutenzione di un database: Il database deve essere progettato e mantenuto al fine di rispecchiare le caratteristiche del sistema modellato; Conosce come usare e interfacciarsi ai principali tipi di Database e conosce le tecniche di ottimizzazione delle performances.</li><li>Costruzione di un’API (Application Programming Interface): Di fatto è un intermediario con cui due applicativi possono comunicare tra loro per le operazioni di Creazione, Lettura, Aggiornamento e Rimozione dei dati. Il backend, tramite un set di regole (business rules) e logiche (business logic) stabilisce se una determinata azione richiesta può essere eseguita.</li><li>Sicurezza: La sicurezza è un aspetto fondamentale delle applicazioni web e mobile. Uno sviluppatore Backend è responsabile — nel suo dominio applicativo — di garantire che i dati dell&#8217;utente siano protetti e che l&#8217;applicazione sia sicura da eventuali minacce.</li></ul><p>Il suo ruolo è fondamentale per la creazione di un&#8217;applicazione di successo e la sua esperienza e competenza sono cruciali per garantire che l&#8217;applicazione sia funzionale, sicura e performante.</p><p>In RDTech, un backend developer si interfaccia con diverse tecnologie:<br />Database relazionali come MySQL, MariaDB, PostgreSQL. Spring Boot o .NET (C#) per le API, usando lo standard OpenAPI (Swagger) per la documentazione ed i test funzionali. Userai Docker per la virtualizzazione degli ambienti, principalmente per la gestione delle istanze dei Database, e vari tools CLI o GUI per operazioni di diagnostica.</p><p><span style="font-weight: 600;" data-token-index="0">Se hai studiato Java e ti piacerebbe lavorare nell’ambito dello sviluppo di applicazioni web come backend developer, potresti essere la persona giusta per noi! <a href="https://www.rdtech.it/contatti/">Clicca qui</a> per candidarti.</span></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/cose-un-backend-developer/">Cos&#8217;è un Backend Developer?</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
