lunedì 4 novembre 2024

TypeScript resettare una array di oggetti

Nel linguaggio TypeScript, per resettare un oggetto di tipo Array, tramite la proprietà Length impostato a 0, rendere l'array senza valori.

Di seguito un frammento di tale utilizzo.

TypeScript:
 this.nominativi.push(new Nominativo('Emanuele',
'Mattei', new Date('12/12/1974')));
    this.nominativi.push(new Nominativo('Luigi',
'Cristaldi', new Date('12/12/1984')));
    this.nominativi.push(new Nominativo('Luca',
'Rossi', new Date('12/12/1954')));
    this.nominativi.push(new Nominativo('Max',
'Bianchi', new Date('12/12/1994')));
    console.log( this.nominativi);
    let  nominativi2 : Nominativo[] = [];
    nominativi2.push( ...this.nominativi);
    this.nominativi.length = 0;
    console.log(nominativi2);



L'oggetto Nominativi sarà uguale a 0
L'oggetto Nominativi2 sarà uguale a 4

C# Introduzione alla creazione delle web api con .Net 8



In questo articolo vedremo come realizzare delle web api, ossia un progetto di tipo servizio, che espone dei metodi per la gestione delle operazioni CRUD sui dati.
Quado si realizzano applicazioni può capitare di realizzare dei servizi che trovandosi tra una fonte dati e l’applicativo vero e proprio (sito web, o applicazione per sistema operativo) permette la gestone delle informazioni tra le due parti.
Per chi sviluppa con la tecnologia .Net, sia con il linguaggio VB.Net e sia con il linguaggio C#, conoscerà i servizi web services, quelli soap di tipo ASMX, e successiva l’evoluzione con i servizi di tipo “Windows Comunication Foundation” WCF.
Negli ultimi anni ha preso sempre più interesse e grande utilizzo anche servizi di tipo Web api, servizi che restituiscono un json con il quale  una volta trasformati in oggetti possiamo gestire le informazioni.
In questo articolo vedremo come realizzarne uno con il linguaggio di programmazione C# e l’ambiente di sviluppo Visual Studio 2022 Community.
Creazione del progetto
Dopo aver aperto l’ambiente di sviluppo Visual Studio 2022 Community, selezionare tra i modelli di progetti quello con la dicitura “Api web Asp.Net Core” il tutto come mostrato in figura 1.


Figura 1 – Il modello dei progetti per la creazione dei servizi web api

Dopo aver selezionato il progetto facciamo click sul pulsante “Avanti” e successivamente impostiamo il nome del progetto, fatto ciò facciamo click sul pulsante “Avanti”, e nella finestra successiva selezioniamo l’ultima versione del Framework, nel momento in cui stiamo scrivendo è la 8, lasciando come spunta solo le caselle con la dicitura “Abilita supporto OpenAPI” e “Usa in controller”, il tutto come mostrato in figura 2.

Figura 2 – Le varie opzioni selezionate

Dopo aver impostato le varie opzioni facciamo click sul pulsante “Crea”.
A questo punto il progetto è stato creato.


Creazione della fonte dati

I servizi in tantissimi casi fanno uso di una base dati, nel nostro caso utilizzeremo il database Microsoft Sql Server, con un database denominato “Dati” ed una tabella denominata “Anagrafica”.
La tabella avrà un campo di tipo intero contatore chiave primaria denominata “IdAnagrafica” un campo di tipo “Varchar” di lunghezza 100 e denominata “Nome” ed un campo di tipo “VarChar” di lunghezza 100 denominata “Cognome”, il tutto come mostrato in figura 3.


Figura 3 – La tabella con la fonte dati.

Stesura del codice

In questa parte vedremo la stesura del codice, prima di utilizzare le varie classi, e la gestione di una fonte dati, dobbiamo aggiungere al progetto alcune librerie, pacchetti Nuget, che ci permettono di gestire una fonte dati e non solo.
Oltre al pacchetto che troveremo per default per la gestione di “Swagger” denominato “Swashbuckle.AspNetCore” dobbiamo aggiungere i vari componenti di Entity Framework.
Aggiungiamo i seguenti pacchetti:
“Microsoft.EntityFrameworkCore”
“Microsoft.EntityFrameworkCore.SqlServer”
“Microsoft.EntityFrameworkCore.Tools”
“Microsoft.EntityFrameworkCore.InMemory”
“Microsoft.VisualStudio.Web.CodeGeneration.Design”
Come riportato in figura 4, il progetto avrà le librerie appena aggiunte.



Figura 4 – Le librerie appena aggiunte

Terminata l’aggiunta dei pacchetti non resta che scrivere il codice.
Si crea una cartella denominata “Modelli” il quale ci sarà una classe che rappresenterà la tabella per la nostra fonte data.
Dopo aver creato la tabella “Modelli” facciamo click con il tasto destro sulla cartella e dal menu che viene visualizzato, selezioniamo “Aggiungi” e nel sottomenu selezioniamo “Classe”.
Diamo il nome di “Anagrafica” alla classe.
La classe avrà una proprietà di tipo int32, e due proprietà di tipo string, che avranno i nomi delle rispettive colonne della tabella.
Di seguito si riporta il frammento di codice completo della classe “Anagrafica”.


C#

   public class Anagrafica

   {

       [Key]

       public Int32 IdAnagrafica { get; set; }

       public string Nome { get; set; }

       public string Cognome { get; set; }

   }


Sempre nella cartella “Modelli” occorre creare una classe per la gestione del contesto, ossia quella classe che avrà il compito di effettuare il collegamento alla base dati.
Facciamo sempre tasto destro sulla cartella modelli e si crea una nuova classe denominata “DatiContesto”. 
Questa classe erediterà dal “DBcontext” e nell’evento della creazione del modello, andiamo ad impostare come chiave primaria il campo ”IdAnagrafica”.
Di seguito si riporta le suddette dichiarazioni nel linguaggio “C#”.

C#

 

public class DatiContesto : DbContext

{

    public DatiContesto(DbContextOptions<DatiContesto> opzioni) : base(opzioni) { }

    public DbSet<Anagrafica> Anagrafica { get; set; } = null!;

    protected override void OnModelCreating(ModelBuilder modelBuilder)

    {

          

        modelBuilder.Entity<Anagrafica>()

    .HasKey(ana => ana.IdAnagrafica);

 

 

 

 

 

    }

 

 

}

Il collegamento al database verrà inserito nella proprietà “ConnectionString” del file “appsettings.json”.
Facciamo click su tale file ed aggiungiamo il parametro per la connessione al database.
Di seguito si riporta il codice completo di tale file con l’aggiunta della stringa di connessione.

{

  "Logging": {

    "LogLevel": {

      "Default": "Information",

      "Microsoft.AspNetCore": "Warning"

    }

  },

  "ConnectionStrings": {

    "DefaultConnection": "Server=NomeServer;Initial Catalog=Dati;TrustServerCertificate=True;Trusted_Connection=True;"

  },

  "AllowedHosts": "*"

}

Naturalmente occorre modificare i dati di connessione, in particolare il nome del server, su quello che avete configurato.
Terminata di impostare la connessione al database, dobbiamo aggiungere nel file “Program” le istruzioni di codice per impostare la stringa di connessione alla classe di contesto. 
Sotto all’istruzione al metodo “AddControllers” aggiungiamo il riferimento alla stringa di connessione come riportato qui di seguito.

C#

var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");

builder.Services.AddDbContext<DatiContesto>(opt => opt.UseSqlServer(connectionString));

 Di seguito si riporta il codice completo del file Program, con le righe di codice aggiunte per la gestione della connessione al database.


using Microsoft.EntityFrameworkCore;

using WebArtWebApi.Modelli;

 

var builder = WebApplication.CreateBuilder(args);

 

// Add services to the container.

 

builder.Services.AddControllers();

var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");

builder.Services.AddDbContext<DatiContesto>(opt => opt.UseSqlServer(connectionString));

// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle

builder.Services.AddEndpointsApiExplorer();

builder.Services.AddSwaggerGen();

 

var app = builder.Build();

 

// Configure the HTTP request pipeline.

if (app.Environment.IsDevelopment())

{

    app.UseSwagger();

    app.UseSwaggerUI();

}

 

app.UseAuthorization();

 

app.MapControllers();

 

app.Run();


Siamo giunti quasi alla fine del nostro articolo, tramite l’aggiunta di un controllo scaffold avremo per ogni operazione di tipo CRUD un determinato metodo.
Facciamo click con il tasto destro del mouse sulla cartella “Controllers” selezioniamo la voce “Aggiungi” e  nel sottomenu che viene aperto selezioniamo la voce “Nuovo elemento di Scaffolding”, nella finestra che viene aperta selezionare la voce “Controller API con azioni, che usa Entity Framework”, il tutto come mostrato in figura 5.


Figura 5. – La scelta dell’elemento

Nella finestra che viene visualizzata (figura 6) impostare per il campo “Classe del modello”  la classe di riferimento alla tabella creata in precedenza, nel nostro caso “Anagrafica”, nella casella “DbContext Class” selezioniamo la classe del contesto creata in precedenza, nel nostro caso era “DatiContesto”.




Figura 6 – La finestra per impostare la classe ed il contesto.

Dopo aver valorizzato i vari campi, non resta che fare click sul pulsante “Aggiungi” ed attendere qualche secondo per la creazione della classe con i vari metodi.

Ora non resta che testare il nostro progetto, eseguiamo l’applicativo, e per il metodo get con id finale, inseriamo un valore di cui siamo certi è presente un dato nel database.
Il risultato sarà come nell’immagine 7, nel quale sarà riportato il dato per quel determinato record.

Figura 7 – Il test su Swagger per il metodo di ottenere il singolo record.

Conclusioni

In ambiente Visual Studio 2022 e con la tecnologia .Net 8 diviene ancora più semplice e rapida la creazione dei servizi di tipo web api. Servizi nuovi che sono sempre più adottati in nuovi progetti. Un nuovo modo per gestire le informazioni anche a livello multipiattaforma, dando così la possibilità a più linguaggi di programmazione ed a più sistemi operativi di interagire con questo nuovo modo di rappresentare e gestire i dati.
L’articolo ha voluto fornire al lettore un’introduzione a questo nuovo scenario, anche se è possibile affrontare scenari molto più complessi.

domenica 3 novembre 2024

Strumento online per la verifica delle velocità e qualità di un sito web con il servizio gratuito di pagespeed

 

Sito pagespeed

Google ha sviluppato uno strumento online gratuito, che non necessita di email o account, per testare la velocità e la qualità di un sito web.

Il sito, disponibile in italiano all'indirizzo https://pagespeed.web.dev/?hl=it, consente di analizzare la velocità e altri aspetti tecnici di un sito web.

È un servizio pratico per i webmaster.


Download gioco Asphalt 8 - Car Racing Game

 


Disponibile gratuitamente e senza limitazioni il gioco di corsa automobilistica Car Racing Game per sistemi operativi Windows.

Il gioco offre una grafica molto ben curata ed ottima giocabilità ed è in lingua italiana.

Per maggiori informazioni e download visitate il seguente sito https://store.epicgames.com/it/p/asphalt-8-car-racing-game-8740cf


Angular TypeScript ordinare un array di una classe dalla proprietà di tipo data

Il frammento di codice qui di seguito, illustra una tecnica nel linguaggio TypeScript, per effettuare l'ordinamento di un array di un oggetto in base ad una proprietà di tipo data in maniera crescere e decrescente.

TypeScript:
Classe:
export    class Nominativo{

public Nome: string;
public Cognome: string='';
public Eta: Date;

constructor(nome: string, cognome: string, eta: Date){
  this.Nome = nome;
  this.Cognome = cognome;
  this.Eta = eta;

}

}

TypeScript:
Esempio di ordinamento

ngOnInit(): void {

    this.nominativi.push(new Nominativo('Emanuele', 'Mattei', new Date('12/12/1974')));
    this.nominativi.push(new Nominativo('Luigi', 'Cristaldi', new Date('12/12/1984')));
    this.nominativi.push(new Nominativo('Luca', 'Rossi', new Date('12/12/1954')));
    this.nominativi.push(new Nominativo('Max', 'Bianchi', new Date('12/12/1994')));


    //Crescente
    this.nominativi = this.nominativi.sort((a,b)=>{ return new Date( a.Eta ).getTime()
- new Date( b.Eta ).getTime()});
    for (let index = 0; index <  this.nominativi.length; index++) {
      console.log(  this.nominativi[index]);

    }
    //Decrescente
    this.nominativi = this.nominativi.sort((a,b)=>{ return new Date( b.Eta ).getTime()
- new Date( a.Eta ).getTime()});
    for (let index = 0; index <  this.nominativi.length; index++) {
      console.log(  this.nominativi[index]);

    }

  }

sabato 2 novembre 2024

TypeScript string ritorno a capo

Nel caso che stiamo concatenando del testo e vogliamo riportare una stringa a capo, tramite il carattere speciale "\n", possiamo mettere in una stringa il testo a capo.
Di seguito un frammento di codice di tale utilizzo.


TypeScript:
let testo = "Questa è la prima frase. \n Questa è la seconda
frase.";
console.log(testo);

Download gioco Ghostwire: Tokyo


 

Un nuovo gioco per adolescenti ed adulti quello proposto da Epicgames, che permette la possibilità di giocare gratuitamente.

Il video gioco Ghostwire di tipo avventura è ambientato in Giappone, con il quale sconfiggere le varie forze soprannaturali.

Il gioco è in lingua italiana e per sistemi operativi, con una grafica molto ben fatta.

Fino al 7 novembre 2024 si potrà scaricare gratuitamente dopo tale data il download sarà a pagamento, per maggiori informazioni e download visitate il seguente sito https://store.epicgames.com/it/p/ghostwire-tokyo 

C# aprire un file con il programma default associato al tipo di file

Il frammento di codice qui di seguito, in linguaggio C#, illustra una tecnica per aprire un file qualsiasi con il programma associato al tipo di file.

Aggiungere il seguente spazio dei nomi, in alto.

using System.Diagnostics;


C#
 string percorsoNomeFile = @"C:\varie\test.txt";
 Process.Start(new ProcessStartInfo(percorsoNomeFile) { UseShellExecute = true });

venerdì 1 novembre 2024

Download gioco Witch It

 


Witch It è un gioco con una grafica molto ben fatta adatto a ragazzi ed adulti.

Il gioco in lingua italiana è di tipo avventura e per sistemi operativi Windows.

Fino al 7 novembre si potrà scaricare gratuitamente dopo tale data il download sarà a pagamento.

Per maggiori informazioni e download visitate il seguente sito https://store.epicgames.com/it/p/witch-it-3624a9

Sistema operativo gratuito Colibri

 


Colibri, è un sistema gratuito open source, molto ben fatto, ma che lo rende diverso e speciale da altri sistemi operativi per il poco spazio che richiede.

Un sistema operativo che si può usare anche nei floppy Disk.

Il sistema operativo, è possibile utilizzarlo su pc anche datati, e tra le varie lingue anche quella italiana.

Per maggiori ed informazioni visitate il sito ufficiale qui https://kolibrios.org/it/  mentre qui https://www.kolibrios.org/it/download.htm trovate la pagina di download. 

naps2 'IAsyncEnumerable' non contiene una definizione di 'ToListAsync' e non è stato trovato alcun metodo di estensione accessibile 'ToListAsync' che accetta un primo argomento di tipo 'IAsyncEnumerable'. Probabilmente manca una direttiva using o un riferimento all'assembly

Nel caso che si stanno utilizzando metodi e classi del componente "Nuget" di Naps", può capitare che visualizza l'errore " 'IAsyncEnumerable<ProcessedImage>' non contiene una definizione di 'ToListAsync' e non è stato trovato alcun metodo di estensione accessibile 'ToListAsync' che accetta un primo argomento di tipo 'IAsyncEnumerable<ProcessedImage>'. Probabilmente manca una direttiva using o un riferimento all'assembly" nell'utilizzare il metodo ".ToListAsync()".
Per risolvere tale problema aggiungere il riferimento nuget "System.Linq.Async" nel progetto.