Quando si esegue uno script Bash ci sono due modalità principali da impiegare, che hanno conseguenze diverse sull’ambiente della shell. 1. Esecuzione diretta (./script.sh) Quindi può solo leggere le variabili di ambiente della shell madre …
Preso dalla curiosità di ripassare l’assembly (tanti anni fa studiai il Motorola 68000) ho scritto una guida ordinata che illustra passo per passo come scrivere un semplice programma Assembly in real-mode (16 bit), confezionarlo come …
GeoGebra è un software open‑source per la didattica della matematica e della geometria dinamica. Quello che intendiamo qui con “geometria dinamica” è un approccio all’insegnamento e alla sperimentazione della geometria in cui le costruzioni non …
Negli ambienti desktop basati su GNOME, come Ubuntu, è possibile impostare uno sfondo che cambia automaticamente nel tempo, come una presentazione. Quello che molti non sanno è che GNOME supporta nativamente gli slideshow tramite file …
Negli ultimi giorni ho condotto una piccola sperimentazione con Whisper, il modello di riconoscimento vocale automatico (ASR) open source sviluppato da OpenAI. L’obiettivo era duplice: Cos’è Whisper Whisper è un sistema di riconoscimento vocale automatico …
L’installazione non partirà nemmeno se l’installer non avvertirà la presenza di Sun JDK. Ho provato anche con OpenJDK, ma non c’è verso.
Prerequisito: installazione del driver JDBC Oracle
Scaricare un driver jdbc che si vuole dal sito dell’Oracle. Io ad esempio ho scaricato l’Oracle Thin Client per Oracle 10.2 e all’interno c’era già il file ojdbc14.jar.
Nella mia installazione il file con la libreria Java jdbc l’ho messo in
/opt/oracle/instantclient_10_2
dove si trovano anche i tnsnames; questo percorso va inserito nella variabile di ambiente CLASSPATH:
$ CLASSPATH=/opt/oracle/instantclient_10_2
Nota bene
Il client Oracle serve affinché i servizi possano interagire con un DB relazionale.
Anche Mirth stesso scrive le sue configurazioni in un database, e si può configurare una serie di db relazionali molto usati: MySQL, PostGRES, Oracle affiché esso salvi tutti i parametri per il suo funzionamento.
Mirth “out-of-the-box” utilizza un Db con poche pretese, giusto per valutare il prodotto: Apache Derby.
internationalization → i[ altre 18 lettere ]n → i18n
localization → l[altre 10 lettere]n → l10n
Fine della magia.
Stando al sito del Consorzio Web la localizzazione è la declinazione di un prodotto nella lingua (ma anche negli usi e costumi) di una particolare comunità (Italia, Catalogna, USA etc); l’internazionalizzazione è la integrazione di un software con un componente che permetta al prodotto di essere facilmente localizzato.
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 🙂
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