Giu 25

Francesco Vedovato illustra all’IQC di Waterloo lo stato della Comunicazione Quantistica in spazio libero

Quantum Communication e Quantum Computing sono le frontiere più promettente del prossimo futuro in chiave di comunicazioni, sicurezza e velocità di elaborazione.

Francesco Vedovato, un dottorando di ricerca che lavora nel gruppo Quantum Future del DEI di Padova, diretto dal prof. Paolo Villoresi, sta studiando proprio questo tipo di comunicazioni.

Nel video che segue Francesco illustra all’Institute of Quantum Computing dell’Universtià di Waterloo (Ontario, Canada) i risultati del lavoro nell’ambito del progetto di Comunicazione tra Terra e satelliti LEO (Low Earth Orbit), svolto dal gruppo Quantum Future in collaborazione con il Matera Laser Ranging Observatory.

Il talk risale ad agosto 2016.

 

Apr 27

Creiamo un’applicazione con Laravel

Con questo articolo creiamo da zero una applicazione PHP+Laravel.

PHP

Ci posizioniamo nella cartella htdocs della installazione del nostro web server (Apache, Ngnix, LiteSpeed,…)

$ composer create-project laravel/laravel middleware 5.2.*

MySQL

mysql > create database middleware;
mysql > grant all privileges on middleware.* to 'middleware' identified by 'secret';

Modifichiamo il file .env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=middleware
DB_USERNAME=middleware
DB_PASSWORD=secret

Modifica di /etc/hosts

Occorre definire l’host che andremo ad invocare in modo tale che tcp/ip si connetta a localhost:

$ sudo nano /etc/hosts
127.0.0.1       localhost
127.0.0.1       cms.dev
127.0.1.1       jsbach js
127.0.0.1       api.trackye.com
127.0.0.1       smazing.dev
127.0.0.1       login.dev
127.0.0.1       middleware.dev

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Ho aggiunto la riga in grassetto.

Diritti sulle cartelle

$ sudo chown -R www-data middleware/
$ sudo chmod o+x storage/
$ sudo chmod g+w laravel.log
$ sudo chgrp marcob laravel.log #altrimenti non posso lanciare comandi da bash

Fino a qui riesco a fare funzionare l’url http://localhost/middleware/public ma non http://middleware.dev. Per fare questo occorre

Creare un virtualhost

# middleware
<VirtualHost *:80>
        DocumentRoot /var/www/html/middleware/public
        ServerName middleware.dev
        <Directory /var/www/html/middleware/public>
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error_middleware.log
        CustomLog ${APACHE_LOG_DIR}/access_middleware.log combined
</VirtualHost>

Riavviare Apache

$ sudo service apache2 restart

Creare il controller Auth per gestire la protezione degli accessi

$ php artisan make:auth
...
Authentication scaffolding generated successfully!

Queste istruzioni creano l’infrastruttura PHP per gestire la login. Però non viene creato nulla sul database, questo va fatto a mano tramite le migrazioni. Facendo riferimento alle due migrazioni che vengono create per default (la tabella users e la tabella password_resets) con artisan possiamo creare le tabelle nel database:

$ php artisan migrate
Migration table created successfully.
Migrated: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_100000_create_password_resets_table

Nel database vengono create e due tabelle:

 

 

 

 

 

 

 

 

In realtà esiste una terza che è migrations che è i log delle migrazioni che facciamo (nel linguaggio di Laravel una migrazione è uno script PHP che ha come effetto una modifica del database).

Alla fine ecco creata l’applicazione, alla quale accediamo con http://middleware.dev

Apr 15

Nuovo attacco phishing basato sulla tecnica punycode encoding

Attenzione!
Sono appena venuto a conoscenza da una newsletter di Wordfence di questo fatto allarmante.
Con una tecnica chiamata punycode encoding, un attaccante può farvi credere di trovarvi in un sito legale modificando addirittura l’indirizzo che vi compare sulla barra degli indirizzi: sfruttando una falla di Chrome e Firefox, unitamente alla possibilità di usare la codifica Unicode per i nomi di dominio, è possibile visualizzare una stringa identica a quella di un sito popolare anche se il dominio sottostante è tutto un altro.
Nell’articolo di Wordfence trovate un workaround per Firefox. Chrome a giorni dovrebbe rilasciare la fix per risolvere il problema.

Safari e Internet Explorer non sono affetti dal problema.

Questa tecnica è particolarmente insidiosa perché allo stato attuale non vi permette di distinguere il sito legale da quello contraffatto anche guardando il nome del dominio visualizzato dal browser.

In breve due soluzioni per accorgersi del problema (vi anticipo il contenuto dell’articolo):
1) aprire il certificato della crittografia cliccando sul lucchetto accanto al nome del dominio sulla barra degli indirizzi: lì vi compare il vero nome del dominio;
2) oppure fate copia incolla del nome del dominio in un editor come TextPad.

Mar 28

Modificare il size della UI Oracle SqlDeveloper

Il valore default della dimensione del carattere con cui è visualizzata l’interfaccia utente (non il font dell’editor!) è, almeno per i miei gusti, piuttosto piccolino.

C’è un modo per aumentarlo

  $ cd .sqldeveloper/system4.0.3.16.84/o.sqldeveloper.12.2.0.16.84

(occhio che dipende dalla versione, verificare nella propria installazione)

Aprire il file

  $ nano ide.properties 

alla voce

  # The default Ide.FontSize for Mac OS X.
  Ide.FontSize.Aqua=11

io ho modificato così

  # The default Ide.FontSize for Mac OS X.
  Ide.FontSize=16

ottenendo un bel miglioramento da

SqldeveloperPrima.png

a

SqldeveloperDopo.png

Mar 23

Gestione delle relazioni tra entità in Laravel

Nel mio Wiki trovate un nuovo articolo che spiega come si gestiscono le relazioni tra tabelle, di tipo 1 a molti, molti a molti, le tabelle di pivot (che consentono di realizzare le relazioni molti a molti) e le query che contemplano tre tabelle.

Buona lettura, lasciate un Like se lo trovate utile.

Feb 23

Trappist 1: una stella “vicina” che ha ben 7 pianeti potenzialmente abitabili

Leggi il resto »

Feb 22

MirthConnect 3.2 – Come intercettare la response di un connettore HTTP Sender

Overview

Questa applicazione Mirth richede di leggere da un dataabase, reperire ad un certo URI un file identificato dalla precedente lettura e salvarlo su un NAS.

Source

un Database reader che mi fornisce il path e il file name del file da scaricare dal web

Due destination

destination 1: un connettore HTTP Sender ‘call_ws’

destination 2: un connettore javascript ‘dummy’ con la seguente istruzione:

	var pdf_base64 = $('call_ws').getMessage();

la variabile pdf_base64 contiene il file in codifica base64 pronto per essere decodificato e salvato sul filesystem.

Ott 18

Analizzatori lessicali e alberi sintattici

Prima parte: analizzatori lessicali

Nei linguaggi di programmazione, l’esecuzione di un programma è affidata a due componenti che sono presenti sia nei compilatori che negli interpreti:

  • l’analizzatore lessicale (token analyzer)
  • il costruttore dell’albero sintattico (parse tree)

In sostanza si tratta di scorrere il testo di un programma, individuarne tutti i simboli (compito del primo componente) e, nella fase successiva, di costruire l’albero sintattico in modo tale da capire se il programma scritto soddisfa la grammatica formale del linguaggio.

PHP offre tra le sue funzioni un interessante token analyzer che permette di isolare gli elementi di un programma per capire la prima parte del processo di compilazione/interpretazione: l’istruzione token_get_all.

Qui di seguito il codice che utilizza questa funzione per isolare gli elementi lessicali o token del programma:


<?php
$tokens 
token_get_all('
<?php
echo("ciao");
$i=0;
$i--;
for ($j=0; $j<=1; $j++)
echo \'ciao\';
?>'
);

echo ‘<xmp>’;
foreach (
$tokens as $token) {
if (
is_array($token)) {
echo 
“Line {$token[2]}: “,
token_name($token[0]),
” (‘{$token[1]}‘)”,
PHP_EOL;
}
}

echo ‘</xmp>’;

Se si fa girare questo programma, avremo l’analisi del frammento di programma racchiuso nella funzione token_get_all().

Il risultato è il seguente:

Line 1: T_OPEN_TAG (' Line 1: T_WHITESPACE ('
')
Line 2: T_ECHO ('echo')
Line 2: T_CONSTANT_ENCAPSED_STRING ('"ciao"')
Line 2: T_WHITESPACE ('
')
Line 3: T_VARIABLE ('$i')
Line 3: T_LNUMBER ('0')
Line 3: T_WHITESPACE ('
')
Line 4: T_VARIABLE ('$i')
Line 4: T_DEC ('--')
Line 4: T_WHITESPACE ('
')
Line 5: T_FOR ('for')
Line 5: T_WHITESPACE (' ')
Line 5: T_VARIABLE ('$j')
Line 5: T_LNUMBER ('0')
Line 5: T_WHITESPACE (' ')
Line 5: T_VARIABLE ('$j')
Line 5: T_IS_SMALLER_OR_EQUAL ('<=')
Line 5: T_LNUMBER ('1')
Line 5: T_WHITESPACE (' ')
Line 5: T_VARIABLE ('$j')
Line 5: T_INC ('++')
Line 5: T_WHITESPACE (' ')
Line 6: T_ECHO ('echo')
Line 6: T_WHITESPACE (' ')
Line 6: T_CONSTANT_ENCAPSED_STRING (''ciao'')
Line 6: T_WHITESPACE (' ')
Line 7: T_CLOSE_TAG ('?>')

Ago 05

Emoji e licenze

Ho avuto modo di affrontare il problema dell’utilizzabilità degli Emoji nei documenti elettronici (o anche cartacei) dal punto di vista della licenza.

L’occasione si è presentata per un contatto con la prof. Francesca Chiusaroli, docente del corso di Glottologia e Linguistica all’Università di Macerata che sta curando su Twitter un progetto piuttosto ambizioso che raccoglie il lavoro di una schiera di volontari entusiasti: redigere la prima traduzione di Le avventure di Pinocchio di Carlo Lorenzini (detto Collodi) in… emoji!

L’Emoji è un ideogramma molto simile al sino-giapponese Kanji (ogni simbolo non rappresenta un suono ma un concetto), che ha una codifica standardizzata Unicode, nella quale vengono utilizzate esclusivamente icone stilizzate in bianco e nero.

Varie aziende hanno poi personalizzato la propria versione di Emoji: Apple, Google, Twitter, Samsung, eccetera. Per una lista completa delle varie versioni si può consultare la relativa pagina di Unicode.org.

Ma gli emoji di Unicode sono quelli che vivono nel mondo delle idee di Platone: il cavallo che vive nel mondo delle idee rappresenta la “cavallità” (citando Luciano De Crescenzo) ma poi in realtà esistono solo le istanze fisiche dei cavalli veri, quindi esistono le varie versioni di emoji prodotte dalle varie aziende autonomamente con i propri disegnatori.

Esiste il problema della libertà di utilizzo delle Emoji, essendo le singole icone potenzialmente un prodotto coperto da copyright. Ma per Francesca Chiusaroli ed il suo progetto #emojitaliano c’è la buona notizia che gli emoji di Twitter sono coperti da Licenza Creative Commons e quindi liberamente utilizzabili.

Tutto il package di icone e software di corredo da 360 MB è disponibile su Github:

https://github.com/twitter/twemoji.git

Ultima nota linguistica: secondo il sito dell’Accademia della Crusca, per la Treccani emoji va inteso come sostantivo maschile.

Buona creatività con gli Emoji, quindi, di Twitter e auguri Francesca per il tuo bellissimo progetto!1f60e

Lug 20

RFC Request For Comments

ietflogotransLe RFC sono documenti ufficiali con i quali la Internet Engineering Task Force rende pubbliche le specifiche dei protocolli di rete.

Il nome di Request For Comments è dovuto al fatto che storicamente, dato lo spirito collaborativo della neonata Internet, si chiedeva agli esperti di prendere visione di queste specifiche e, eventualmente, chiedere chiarimenti o fornire richieste di modifica tramite dei commenti.

Ogni RFC è numerata con un numero progressivo in base alla data di compilazione.

Una RFC molto particolare è la 2119 che affronta una problematica di tipo linguistico-semantico e chiarisce l’uso dei termini usati sistematicamente nel gergo tecnico, che hanno dovuto essere precisati appunto con una RFC per fissarne il significato ed eliminare ogni possibile ambiguità

È la RFC che si prende l’onere di specificare il significato dei termini

      "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 
      "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY",
      "OPTIONAL"

ricorrenti in tutte le RFC per indicare il livello di un requisito. La RFC in questione infatti si intitola “Key words for use in RFCs to Indicate Requirement Levels“.

Brevemente (per la spiegazione esaustiva si faccia rifermento alla RFC):

  1. MUST, REQUIRED, SHALL indicano l’obbligatorietà di un certo requisito.
  2. MUST NOT o SHALL NOT indicano che un certa specifica è proibita.
  3. SHOULD e RECOMMENDED indicano che una specifica è consigliata anche se non obbligatoria.
  4. SHOULD NOT e NOT RECOMMENDED indicano che una specifica è sconsigliata anche se non proibita.
  5. MAY e OPTIONAL significa che una specifica è assolutamente opzionale.

Esempio di impiego dei termini nella RFC-2228 (che definisce le specifiche di funzionamento dell’FTP sicuro)

Esempio 1

If the server is not willing to accept the named security mechanism, it should respond with reply code 534.

se il server non è in grado di accettare il meccanismo di sicurezza proposto dovrebbe rispondere con il codice 534 (ma potrebbe anche non rispondere, perché in effetti non si farà nulla). Tuttavia per non lasciare l’interlocutore appeso al filo è consigliabile ritornargli il codice 534

Esempio 2

If the server is willing to accept the named security mechanism, but requires security data, it must respond with reply code 334.

Se il server è in grado di accettare il meccanismo di sicurezza proposto, deve rispondere con il codice 334 (stavolta è obbligatorio perché seguiranno altre azioni).

Ultimo esempio

If the server is responding with a 334 reply code, it may include security data as described in the next section.

Se il server risponde con il codice 334, può aggiungere (è una opzione) dati di sicurezza.

Post precedenti «