Mi sono imbattuto in un comportamento piuttosto curioso utilizzando DBeaver con un server MySQL locale. All’avvio di DBeaver, il tentativo di connessione falliva con il messaggio: La cosa sorprendente era che bastava aprire un terminale …
Per anni avevo sentito ripetere che Docker è una virtualizzazione leggera. È una frase comoda per iniziare, ma in realtà è fuorviante. L’ho capito nel modo migliore: cercando di capire perché MySQL si comportasse in …
Aprendo Thunderbird mi è comparso un avviso che invitava a intervenire entro il 21 luglio 2026 per continuare a ricevere gli aggiornamenti ESR (Extended Support Release). Partiamo con le istruzioni operative per chi sa già …
Negli ultimi tempi termini come LLM, embedding e database vettoriali sono usciti rapidamente dall’ambito della ricerca e sono diventati argomenti quasi quotidiani. Sono mattoncini coi quali possiamo costruire sistemi capaci di interrogare grandi collezioni di …
Ho condotto un esperimento di scrittura di software per analizzare i risultati di una esportazione delle mie conversazioni con ChatGPT. Ma ho deciso di aiutarmi nell’analisi con un Large Language Model che sicuramente sa fare molto bene questo lavoro e in più con un LLM in locale, per vedere come funziona.
Come si fa a misurare un progetto software? In chilogrammi? in metri cubi? Esiste una specifica unità di misura e un algoritmo per il calcolo. E anche un esempio su un progetto di Cloud Computing.
COCOMO: Constructive Cost Model è un modello matematico per la stima dei costi di realizzazione di una applicazione software, espressi in termini di tempo di consegna o di mesi-uomo per la loro realizzazione [Wikipedia]. Il CoCoMo può essere calcolato secondo tre gradi di raffinatezza crescente (Basic, Intermediate, Detailed) e viene espresso in KNCSS.
KNCSS: Kilo Non Commenting Source Statements, sono 103 linee di codice esclusi i commenti: è un’unità di misura della grandezza di un programma: conto le istruzioni (un’istruzione distribuita su più righe la conto una volta soltanto) escludendo i commenti [Wikipedia].
Come esempio: il Basic COCOMO è stato utilizzato per misurare la stazza del progetto OpenNebula, che è di circa 170 KNCSS e la stima in dollari è pari a $ 2,392,496 [Fonte: ohlho]. OpenNebula è un progetto Open Source di piattaforma per il Cloud Computing.
Fantastico! Provengo da CVS (Concurrent Versioning System) e ho trovato questo sistema di versionamento, per dirla coi matematici, un meraviglioso prolungamento analitico di CVS: l’interfaccia testuale è molto simile (gli usuali comandi di init, add, commit, log, eccetera).
hg è un sistema di versionamento multi repository che permette di lavorare su più ambienti che possono fondersi con una operazione di merge in un repository centrale.
Cos’è un sistema di versionamento concorrente? E’ uno strumento software che permette di gestire senza errori la produzione di documenti (tipicamente codice di programmazione, ma non esclusivamente) scritti a molte mani, tipica situazione per gruppi che sviluppano uno stesso progetto software e nel quale ogni programmatore può intervenire sul lavoro di altri (ad esempio: correggere un bug, aggiungere una funzionalità, eccetera). Come fare in modo che le modifiche di ognuno non sovrascrivano quelle degli altri? Si usa un sistema di versionamento.
Cosi Marco può rilasciare una versione 0.1, Alessio può accorgersi ci un bug e correggerlo, rilasciando una versione 0.2, e quando Marco torna a lavorare sullo stesso file, ripartirà dalla versione senza bug, per produrre la sua versione 0.3 e così via; si può anche lavorare contemporaneamente sullo stesso file e il sistema di versionamento deve avvertire i concorrenti in casi di conflitti e deve segnare tutte le modifiche secondo uno storico che possa anche permettere di ripartire da un punto precedente che era noto funzionare. Questo sistema consente anche di effettuare i cosiddetti fork, ovvero delle derivazioni in cui il software iniziale prende una strada indipendente ad esempio perché la versione che si va a sviluppare è verticale per una determinata architettura hardware, pure essendo lo stesso software.
Yii è un framework PHP opensource per lo sviluppo di applicazioni Web 2.0.
Tra le features che lo rendono il framework di punta: adozione del pattern MVC, DAO/ActiveRecord, I18N/L10N, caching, autenticazione a controllo accesso role-based, scaffolding, testing, ecc.
In linea di principio lo sviluppo è rapido attraverso questi semplici passi:
tu crei il database;
Yii genera il codice PHP di base;
tu personalizzi il codice per soddisfare le tue specifiche necesssità.
Il pattern MVC (ho già scritto di questo qualche tempo fa) permette di separare dati/business (M) da logica di controllo (C) e dalla presentazione (V).
Dopo aver fatto un po’ di training sono in grado di spiegare un po’ meglio cos’è e come funziona Mirth.
Mirth è un software che assomiglia molto ad un PLC: elaboro una serie di input (sorgenti) e produco una molteplicità di output (destinazioni) in modo sincrono con la frequenza di scansione del programma. Ovvero ad ogni colpo di clock faccio una istantanea degli ingressi ed elaboro i valori delle uscite; se nel corso della scansione i valori cambiano non me ne curo.
Entrambi sorgenti e destinazioni possono essere webservice, database, file di testo… varie combinazioni:
leggo da un database, scrivo su un webservice
leggo da un webservice, scrivo su un servizio HL7
leggo da un servizio HTTP, scrivo su database e su file di testo…
Al pari della frequenza di scansione degli ingressi dei PLC, anche Mirth ha una frequenza di polling che però può essere impostata in modo indipendente da sorgente a sorgente.
Un’applicazione Mirth si compone di canali che sono processi che leggono da un insieme di sorgenti, eseguono una serie di operazioni (trasformazioni e filtri) e producono degli output su una o più destinazioni.
Esempio: scrivo in una istanza di Oracle, in un certo host, la temperatura registrata da un webservice ipotetico messo a disposizione da www.ilmeteo.it. In questo caso, definisco un nuovo canale che chiamerò “Temperature giornaliera delle ore 13” (nella scheda Summary) definendo una frequanza di polling in millisecondi, poi nella scheda Source definisco il tipo di connettore (in questo caso SOAP o HTTP Listener), scrivendo ad esempio l’indirizzo, il metodo di trasmissione GET/POST eccetera; infine, nella scheda Destinations definirò un connettore Oracle 10g Release 2, scriverò un template di SQL che verrà valorizzato con le variabili di canale (analogamente al PLC, è possibile definire delle variabili interne con uno scope variabile, da utilizzare a livello di canale, di singolo connettore o di tutta l’applicazione – globale).
Da un punto di vista generale è così che Mirth funziona.
Un mio caro amico, insegnante di Meccanica in un Istituto Navale, mi ha chiesto con una domanda secca che differenza esista tra Elettrotecnica ed Elettronica. Cose a cui di solito non si pensa. Al di là delle definizioni ufficiali e forbite che di certo già si trovano in letteratura, voglio provarmi nel dare una mia definizione.
Elettrotecnica
Credit:TebNad – Fotolia
L’Elettrotecnica si occupa della tecnologia della produzione, del trasporto, la trasformazione e dell’utilizzazione dell’energia elettrica per e a beneficio di macchinari ed apparati elettromeccanici ed elettronici. In sostanza l’Elettrotecnica si occupa di mettere in pratica i modelli e le equazioni dell’Elettromagnetismo classico nell’analisi e nella progettazione di impianti elettrici, macchine elettriche (trasformatori, alternatori, motori a corrente continua o alternata, dinamo), dispositivi di sezionamento e di distribuzione dell’energia.
Elettronica
Credit: CC0 Public Domain
L’Elettronica si occupa della tecnologia per l’analisi, la sintesi e la produzione di dispositivi che sono di supporto a tutte le attività umane (anche all’Elettrotecnica). E’ propriamente una branca della Fisica che si occupa del funzionamento e la progettazione di dispositivi che si situano, nel senso della scala di grandezza, a livello più basso dell’Elettrotecnica, occupandosi di come funziona la materia stessa su scala nanometrica per poter realizzare, a queste dimensioni, dispositivi elementari come diodi, transistor, componenti passivi e interi circuiti anche molto complessi come i microprocessori, o dispositivi per l’I/O e la memorizzazione come DVD, hard disk, USB/SD card, monitor LED, o i sensori e gli attuatori (convertitori tra grandezze fisiche ed elettriche).
In sostanza l’Elettronica si occupa di mettere in pratica i modelli e le equazioni della Meccanica Quantistica in dispositivi come quelli menzionati. L’armamentario matematico che si utilizza in Elettronica è in parte mutuato dall’Elettromagnetismo classico (ad esempio l’adozione di circuiti lineari equivalenti, che rappresentano linearizzazioni dei modelli non lineari attorno al punto di funzionamento) ma in determinate situazioni (ad esempio quando si studia come funziona una giunzione pn) occorre affrontare lo studio dei modelli con le equazioni di continuità e la statistica di Fermi.
Dal punto di vista pratico, il discrimine tra le due discipline è spesso molto sfumato. Per un impianto fotovoltaico possiamo dire in modo molto grezzo, ad esempio, che dalla cella fotovoltaica all’inverter è Elettronica, mentre dall’inverter alla rete elettrica nazionale è Elettrotecnica. Ma poi la distinzione è molto imprecisa, in quanto per esempio anche il contatore può essere elettronico. La stessa cosa si può pensare per i motori passo-passo, una macchina elettrica (motore a induzione) che viene fatta funzionare in stretto collegamento con un dispositivo elettronico (un generatore di impulsi che la fa ruotare).
Leggo con sorpresa nel sito dell’Apache Group, a proposito di log4j, un tool che permette di far loggare in modo controllato una applicazione che gli colleghiamo, che Brian Kernighan (l’autore del famosissimo The C Programming Language, con Dennis Ritchie, inventore dello stesso linguaggio C) preferisce vedere l’output dell’applicazione per controllarne il comportamento e gli errori, piuttosto che usare i debugger.
Letteralmente (tratto da “The Practice of Programming”, con Rob Pike, Addison-Wesley Professional, 1999)
As personal choice, we tend not to use debuggers beyond getting a stack trace or the value of a variable or two.
One reason is that it is easy to get lost in details of complicated data structures and control flow; we find stepping through a program less productive than thinking harder and adding output statements and self-checking code at critical places.
Clicking over statements takes longer than scanning the output of judiciously-placed displays. It takes less time to decide where to put print statements than to single-step to the critical section of code, even assuming we know where that is.
More important, debugging statements stay with the program; debugging sessions are transient. (Fonte)
Io, da quando programmo per il web, uso questa modalità: sinceramente, pensavo di essere un troglodita ma sono felice di vedere che sono in buona compagnia!
Al di là del rumore destato dall’entusiasmo del Ministro dell’Istruzione per la scoperta, mi pare di poter sottoscrivere la consueta correttezza del mondo dei fisici davanti a dei risultati che mettono in discussione un secolo di Fisica e la reputazione di una intera categoria di ricercatori.
Il portavoce scientifico dell’esperimento OPERA dell’INFN, Antonio Ereditato, ha dichiarato che «considerando le straordinarie conseguenze di questi dati, si rendono necessarie misure indipendenti prima di poter respingere o accettare con certezza questo risultato. Per questo motivo la collaborazione Opera ha deciso di sottoporre i risultati a un esame più ampio nella comunità»[Fonte]
Nel video seguente l’ottima spokeswoman italiana del CERN Paola Catapano, illustra l’esperimento congiunto tra CERN e INFN (Fonte).
Si può dire che è, se confermata, una situazione molto simile a quella in cui dovette trovarsi nel 1900 Max Plank, quando la curva di emittenza spettrale del corpo nero andava contro la teoria elettromagnetica di Maxwell (che prevedeva la cosiddetta catastrofe ultravioletta). Con un atto di disperazione (come lo definì egli stesso) fu costretto, per poter giustificare la realtà, ad inventare i quanti.
Il mio professore di Fisica II, Massimo Nigro, mi insegnava che tutto si spiegava mettendo le sommatorie al posto degli integrali 🙂
C’è un sito utilissimo che permette, da qualsiasi browser, di avere una anteprima di una pagina web così come apparirebbe in Microsoft Internet Explorer!
Forse può apparire strana la mia meraviglia. Ma io uso Linux e, se non ho una macchina Windows o una macchina virtuale a disposizione, non posso usare IE…
L’utilizzo del padding nella cifratura tramite openssl serve a evitare attacchi di tipo cifra-e-confronta dei crittogrammi.
Se encrypt(text, key) desse sempre lo stesso risultato, si potrebbe indovinare il testo in chiaro confrontando due file cifrati.
Abilitando l’opzione pkcs, openssl applica un padding versione PKCS ver. 1.5 al testo prima della cifratura, cioè introduce una stringa casuale prima del testo chiaro e poi procede con la cifratura; è è come se usassi una chiave monouso, solo che anziché modificare la chiave modifico il testo chiaro.
Utilizziamo tecnologie come i cookie per memorizzare e/o accedere alle informazioni del dispositivo. Lo facciamo per migliorare l'esperienza di navigazione e per mostrare annunci personalizzati. Il consenso a queste tecnologie ci consentirà di elaborare dati quali il comportamento di navigazione o gli ID univoci su questo sito. Il mancato consenso o la revoca del consenso possono influire negativamente su alcune caratteristiche e funzioni.
Funzionale
Sempre attivo
L'archiviazione tecnica o l'accesso sono strettamente necessari al fine legittimo di consentire l'uso di un servizio specifico esplicitamente richiesto dall'abbonato o dall'utente, o al solo scopo di effettuare la trasmissione di una comunicazione su una rete di comunicazione elettronica.
Preferenze
L'archiviazione tecnica o l'accesso sono necessari per lo scopo legittimo di memorizzare le preferenze che non sono richieste dall'abbonato o dall'utente.
Statistiche
L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente per scopi statistici.L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente per scopi statistici anonimi. Senza un mandato di comparizione, una conformità volontaria da parte del vostro Fornitore di Servizi Internet, o ulteriori registrazioni da parte di terzi, le informazioni memorizzate o recuperate per questo scopo da sole non possono di solito essere utilizzate per l'identificazione.
Marketing
L'archiviazione tecnica o l'accesso sono necessari per creare profili di utenti per inviare pubblicità, o per tracciare l'utente su un sito web o su diversi siti web per scopi di marketing simili.
Commenti recenti