20 February 2020

Quando fanno arrabbiare BrandMeister WW

Paolo Garbin (paolettopn)

Il 18 febbraio, a causa di alcuni radioamatori che prelevavano senza permesso dei flussi DMR dai server di BrandMaister quest'ultimo ha deciso (per la sicurezza dell'interno sistema mondiale...) di staccare la spina ai sistemi non appartenenti alla sua rete DMR.
il 20 February 2020 09.25

19 February 2020

Impostare il BrandMeister Hotspot Security

Paolo Garbin (paolettopn)

Per rendere ancora più sicura la connessione tra il vostro hotspot pi-star e il servizio di rete DMR BrandMeister, applicate le seguenti configurazioni, descritte nell'articolo presente nella wiki del gruppo di lavoro pi-star.
il 19 February 2020 15.10

18 February 2020

Categoria: 

È disponibile la newsletter N° 006/2020 della comunità di ubuntu-it. In questo numero:

  • Come eseguire l'aggiornamento da Windows 7 a Ubuntu - Tour desktop e applicazioni
  • Canonical e AWS rilasciano il supporto per l'ibernazione di Amazon EC2 per Ubuntu 16.04 LTS
  • È arrivata la disponibilità per Ubuntu 18.04.04
  • Ubuntu sarà presente all'Embedded World 2020
  • OpenSSH 8.2 rilasciato con supporto hardware per l'autenticazione a due fattori
  • Linux kernel 5.6 quali aggiornamenti porterà con sé ?
  • Il servizio di cloud gaming di NVIDIA GeForce NOW ignora senza vergogna Linux
  • Aggiornamenti di sicurezza
  • Bug riportati

 

Puoi leggere la newsletter in questa pagina, oppure scaricarla in formato pdf. Se hai perso i numeri precedenti, puoi trovarli nell archivio! Per ricevere la newsletter ogni settimana nella tua casella di posta elettronica, iscriviti alla lista newsletter-italiana.

il 18 February 2020 19.10

17 February 2020

Categoria: 

Con questo articolo concludiamo una piccola serie di guide improntate su come migrare dai sistemi Windows a Ubuntu. Nel precedente numero 2020.005 abbiamo intrapreso, con semplici passaggi, il processo di installazione e configurazione. Ora che Ubuntu è installato, è possibile scoprire l'aspetto e le differenze rispetto al desktop Windows, capire come installare le applicazioni ed eseguire aggiornamenti di sistema e alcune altre utili attività.Iniziamo allora!

Avviato il sistema operativo per la prima volta, ti verrà subito chiesto di configurare i propri account online - questo passaggio sostanzialmente è uguale alla configurazione di un nuovo smartphone -  e ti permetterà di integrare tutti quei servizi come Google Documents e Google Calendar nel proprio desktop Ubuntu. Inoltre, per migliorare alcuni servizi sarà possibile per esempio, inviare un rapporto di informazioni di sistema a Canonical o ancora, abilitare i servizi di localizzazione, che possono essere utilizzati dalle applicazioni che lo richiedono. L'ultimo passaggio della procedura guidata per il primo accesso mostrerà una griglia di applicazioni popolari che sono disponibili per il software Ubuntu e che si potranno installare in qualsiasi momento. Questo aspetto, per quanto semplice, è anche quello che si differenzia maggiormente rispetto a chi usa Windows per i seguenti motivi:

  • In Windows 7, gli utenti in genere visitano un sito Web, scaricano un programma di installazione (.exe o .msi) ed eseguono questi file per installare e configurare il proprio software. Alcune applicazioni dispongono di un meccanismo di aggiornamento integrato, ma la maggior parte no, e spetta all'utente gestire e aggiornare le proprie applicazioni nel modo che ritengono più opportuno;
  • In Ubuntu, invece la gestione delle applicazioni può essere eseguita in tre modi:
    • il primo è utilizzando l'Ubuntu software Center, che utilizza un modello di negozio simile al Play store di Android o iOS. Attraverso una barra di ricerca, sarà allora possibile cercare qualsiasi applicazione, altrimenti per fare una ricerca più mirata puoi utilizzare le categorie come Audio, Giochi, Produttività etc;
    • il secondo è quello di fornire due formati (simile per certi versi a Windows): .deb e snap. Gli snap hanno diversi vantaggi rispetto ai pacchetti .deb, come per esempio sono: applicazioni autonome, con isolamento di sicurezza e aggiornamenti automatici, progettati per essere utilizzati sul desktop, nel cloud e nei dispositivi IoT. Gli snap possono essere eseguiti su Ubuntu e su qualsiasi altra distribuzione Linux con supporto snap, il che li rende più facili da sviluppare e distribuire, cosa che tradizionalmente non è stata facile in Linux perché alcune applicazioni precedentemente venivano distribuite in entrambi i formati mentre altre no. Lo Snap Store offre applicazioni caricate e gestite direttamente dai loro editori ed è disponibile come applicazione desktop, oppure è possibile sfogliare il catalogo attraverso il sito Web ufficiale. Snap Store ha oltre 2.000 applicazioni stabili disponibili per l'uso;
    • il terzo metodo è quello di usufruire di un utilissimo strumento ad interfaccia testuale presente all'interno del sistema, denominato Terminale. Qualora si voglia installare un applicazione, basterà digitare il seguente comando:
       
      sudo apt-get install nome_del_programma
       
      Questo strumento è consigliato a tutti quegli utenti che hanno una certa manualità con i sistemi Linux, quindi consigliamo naturalmente ai neofiti di usufruire delle prime due soluzioni citate.
Lato desktop Ubuntu ha un layout diverso da Windows perché sono presenti due pannelli, uno in alto e uno sulla sinistra denominato dock che contiene scorciatoie per le varie applicazioni preferite. Il primo pannello contiene tre aree tra loro separate che contengono in ordine: il menu delle applicazioni e ricerca posizionato nell'angolo sinistro, Calendario e notifiche nel mezzo e sulla destra applet di configurazione di sistema come indicatore wifi, batteria, volume, bluethoot etc. Per impostazione predefinita, Ubuntu viene fornito con diverse applicazioni come Firefox, Thunderbird, LibreOffice, Rhythmbox e poi qualora si avesse bisogno di installare applicazioni aggiuntive, basta seguire il procedimento sopra descritto. Mentre per gestire i diversi componenti hardware o software attraverso il tasto Windows si entrerà all'interno della modalità di ricerca del sistema Ubuntu dove verranno elencate tutti programmi installati che servono per la configurazione del sistema. Una precisazione da fare a questo punto è che, se l'hardware all'interno del proprio computer richiede dei driver proprietari, alcuni di essi potrebbero non essere disponibili, infatti, se si utilizza una scheda grafica Nvidia, Ubuntu verrà eseguito con un driver Nouveau open source per impostazione predefinita. È possibile avviare lo strumento Driver aggiuntivi per cercare e installare tutti i driver proprietari richiesti dal sistema attraverso il percorso Attività → Driver aggiuntivi.
Speriamo che questo viaggio vi sia piaciuto e non vediamo l'ora di condividere altre esperienze future con tutte le persone che ci seguono, inoltre, invitiamo tutti quanti a visitare la nostra documentazione, dove potrete trovare qualsiasi tipo di guida per configurare al meglio la propria distribuzione Ubuntu.
 
Fonte:

 

il 17 February 2020 08.17

13 February 2020

Dopo qualche titubanza se mantenere la versione stabile 3.4.17 sui miei Hotspot funzionanti su Respberry Pi 0 W versione 1.1, mi sono lasciato convincere dall'amico IZ0MXY ad aggiornarli alla versione Beta 4.1.0 Release Candidate 7.
il 13 February 2020 07.00

12 February 2020

Even if currently it’s a beta feature, you can create multiple versions of your agent and publish them to separate environments.

The problem is that the REST URI bindings do not appear to have been updated in the API definition for this feature.

I wrote an issue in the cloud-php Github project, and John Pedrie, working for the project, asked me to try the gRPC way.

Never did it before, so here’s a guide to help you just in case you are in my situation…hopefully it will be integrated soon!

Assuming you are working with PHP7.3 (and a Debian-based Linux server):

Based on the Install gRPC for PHP doc, on our server (running Ubuntu server 19.10, PHP7.3) I had to install some packages:

sudo apt-get install autoconf libz-dev php-dev php-pear
sudo pecl install grpc
sudo pecl install protobuf

Let’s modify the /etc/php/7.3/fpm/php.ini file adding the following lines:

extension=grpc.so
extension=protobuf.so

Restarting php7.3-fpm:

sudo systemctl restart php7.3-fpm.service

And adding the "grpc/grpc": "^v1.1.0" line to the project composer.json.

Now it’s time to change the code. The usual way is something like:

$sessionClient = new SessionsClient();
$session = $sessionClient->sessionName($projectId, $sessionId);
$response = $sessionsClient->detectIntent($session, $queryInput);

And it has to be changed with something like:

$session = $this->_getSessionName($sessionId);
$sessionsClient = new SessionsClient();
$response = $sessionsClient->detectIntent($session, $queryInput);

// WHERE _getSessionName() is:
private function _getSessionName($sessionId)
{
    $projectId = $this->_getProjectId();
    $environment = $this->_getEnvironment();
    return "projects/{$projectId}/agent/environments/{$environment}/users/-/sessions/{$sessionId}";
}

And that’s it.

In the Dialogflow History tab there is still no way to filter conversations by Environment, but there is an Environment indicator in the conversation Detail.

Dialogflow environemnts

The post Dialogflow API, support for versions and environments appeared first on L.S..

il 12 February 2020 15.28
Durante gli ultimi anni, i diversi dispositivi che utilizzano la piattaforma Raspberry di varie versioni accesi H24 in casa mia sono aumentati; questo ha provocato spesso alcune lamentele da parte di mia moglie Patrizia e dei gatti, data la rumorosità delle ventole di raffreddamento e della luminaria natalizia lampeggiante proveniente dai LED di funzionamento.
il 12 February 2020 07.00

11 February 2020

Categoria: 

È disponibile la newsletter N° 005/2020 della comunità di ubuntu-it. In questo numero:

  • Come eseguire l'aggiornamento da Windows 7 a Ubuntu - Installazione
  • Ubuntu 20.04 conferma la sua scelta del kernel linux
  • Finalmente corretta la vulnerabilità presente in Sudo!
  • La Free Software Foundation chiede di rendere Windows 7 open source!
  • Aggiornamenti di sicurezza
  • Bug riportati
  • Statistiche del gruppo sviluppo

 

Puoi leggere la newsletter in questa pagina, oppure scaricarla in formato pdf. Se hai perso i numeri precedenti, puoi trovarli nell archivio! Per ricevere la newsletter ogni settimana nella tua casella di posta elettronica, iscriviti alla lista newsletter-italiana.

il 11 February 2020 21.11

10 February 2020

With Mobile App Technology Getting Updated, Expect More Convenience Coming Your Way – For an app to succeed these days, it needs to be compatible with whatever operating system it is being used on. Developers of mobile apps can use cross platform development tools to make their product a viable option for use regardless of what operating system it runs on. High costs were the reason why developers avoided having to design an app to launch for two biggest mobile operating systems, iOS and Android. Developers would have to come up with two different apps, each of which was only compatible with one OS. These days, however, there is an increase in the amount of apps that can be downloaded across both operating systems. With methods such as PayPal, Google Pay, Venmo, and Apple Pay, mobile payments are all the rage these days. There seems to be no stopping them at this rate; even the banks are launching a version of software that allows users to make payments right within their app.

Augmented reality may be the hottest commodity on the market today but that does not mean that virtual reality is an abandoned technology. VR apps will ultimately require users to own things beyond their smartphones or tablets—a device such as any forms of helmet or goggles. Zion Market Research claimed that by 2022, the global market valuation of virtual reality apps should hit the $26 billion mark. Biometrics eventually finds its way into the world of mobile app. Facial recognition, signature recognition, voice recognition, and fingerprints are all technologies derived from biometrics system. There also some security improvement for https://speedbet77.com to protect the confidential data of the members of soccer gambling. Implementation of this technology will only grow larger by the year as part of an effort to improve security.

With Mobile App Technology Getting Updated, Expect More Convenience Coming Your Way

The growth of the cloud market continues to rise at a rate of 22%. Google, Microsoft Azure, and Amazon Web Services control at least 76% of the total revenue from cloud platforms. Cloud-based technology has also seen a rise in its use with mobile apps. User interface on mobile apps should go in a direction that leads them into becoming more simplistic and minimalistic. A mobile app must work fast and be easy to load in order that users can fall in love with it. But that alone isn’t enough: A mobile app should be easy on the eyes as well. That’s why the trend in UI design will see adjustments being applied to make it simple. Confusion on users’ part will increase when an app comes with too many design elements.

The post With Mobile App Technology Getting Updated, Expect More Convenience Coming Your Way appeared first on Deshack.net.

il 10 February 2020 12.12
Categoria: 

Una delle maggiori difficoltà incontrate dalle persone è l'installazione di un nuovo sistema operativo nel proprio dispositivo. Questo aspetto è dovuto prevalentemente da due semplici situazioni: la prima al fatto che la stragrande maggioranza delle persone acquista i computer con il sistema operativo già installato, mentre la seconda, che può essere anche una conseguenza della prima motivazione, è che non ci si è mai imbattuti o almeno intrapreso un processo di installazione di un nuovo os. Per questo attraverso una serie di articoli, cercheremo di rendere quanto più semplice possibile questi passaggi. Nel precedente articolo - 2020.004 - si è fatta un'ampia panoramica sulla fase di preparazione discutendo delle differenze tra Windows e Ubuntu, la parità del software, il supporto hardware e il backup dei dati. Oggi invece, mostreremo come installare Ubuntu in sicurezza e con semplicità. L'installazione prevede diversi fasi:

  • Scaricare il file .ISO di installazione, questo non è altro che un file con le stesse funzionalità di un file .exe in Windows per la configurazione di un'applicazione. Ad esempio, se scarichi Ubuntu, troverai un file chiamato ubuntu-18.04.3-desktop-amd64.iso nella cartella download;
  • È necessario copiare il file .ISO di installazione su un dispositivo esterno, un DVD o una chiavetta USB. Questo passaggio verrà fatto con uno strumento dedicato che prende il nome di UNetbootin, che preparerà correttamente il dispositivo esterno per l'uso e memorizzerà il contenuto del file di installazione su di esso. Prima di procedere, dobbiamo precisare la presenza di due opzioni disponibili all'interno del software: 1) scaricare Ubuntu direttamente dallo strumento e quindi copiarlo sull'unità USB, 2) caricare un'immagine ISO precedentemente scaricata;
  • Collegare il supporto esterno, che esso sia il posizionare un DVD nel vassoio o inserire una chiavetta USB in una porta USB e successivamente, è necessario avviare il tutto. Precisando che alcuni computer sono configurati per farlo automaticamente una volta riavviati mentre in altri casi, sarà necessario accedere - durante l'avvio del computer - alla configurazione del BIOS utilizzando i tasti F2 o ESC, quindi modificare l'ordine di avvio dell'hardware. Avviare il dispositivo esterno sul tuo computer;
  • Una volta che il computer identificherà correttamente il supporto esterno, avvierà il sistema operativo - in questo caso Ubuntu - su questo supporto. Non preoccuparti per i tempi, l'installazione non inizierà immediatamente e se lasciato senza interazione da parte dell'utente, si avvierà in modalità live, il che significa che l'hardware, quindi l'hard disk all'interno del dispositivo non verrà utilizzato, e in questo modo è possibile testare, cioè provare le applicazioni e verificare che l'hardware disponibile (scheda video, processore etc.) nel proprio dispositivo sia supportato correttamente. Questo metodo permette di sperimentare in sicurezza Ubuntu prima di decidere di apportare modifiche;
  • Il passo successivo è l'effettiva installazione del sistema operativo, il quale in automatico ti avviserà che le modifiche verranno scritte sul tuo disco rigido e a questo punto se non si è sicuri al 100% è possibile tornare indietro altrimenti si da la propria approvazione e si procede. Al termine dell'installazione, e al successivo riavvio del computer, Ubuntu verrà avviato.

Occorre fare una piccola precisazione, perché è chiaro a questo punto, che esistono diversi modi in cui è possibile configurare i propri sistemi operativi: non è univoco per Ubuntu; questo è vero per tutti i sistemi operativi presenti nel mercato. Possiamo allora decidere se optare per avere:

  • Un singolo sistema operativo sul computer - questo è il tipico scenario che adottano la maggior parte delle persone. È relativamente semplice da configurare e gestire perché all'interno del disco rigido è presente un solo sistema operativo. La maggior parte degli utenti di Windows 7 avrà PC desktop o laptop configurati in questo modo;
  • Un dual boot - si tratta sostanzialmente di una configurazione in cui sono installati due sistemi operativi sullo stesso computer, che possono risiedere su un disco rigido separato oppure sullo stesso, facendo attenzione a ''partizionare'' ad-hoc il disco. Nella configurazione con il doppio sistema durante l'avvio del dispositivo viene visualizzato un menù che consente all'utente di scegliere il sistema operativo che desidera eseguire. Sui sistemi fisici, è possibile eseguire solo un sistema operativo alla volta e alternare il loro utilizzo con un semplice riavvio. Una configurazione base potrebbe essere Windows 7 e Ubuntu;
  • Avvio multiplo - come il dual boot, ma con l'aggiunta di  tre o più sistemi operativi;
  • Virtualizzazione - Questo procedimento ci permette di eseguire - o più comunemente in gergo virtualizzare - un intero sistema operativo su un altro sistema operativo attraverso un software dedicato chiamato hypervisor. Il software hypervisor (p.es. Virtualbox, Qemu etc.) viene eseguito sul sistema operativo host e consente di creare macchine virtuali che emulano l'hardware, permettendo di installare un sistema operativo guest su questo hardware emulato e utilizzarli fianco a fianco senza dover riavviare il proprio dispositivo ogni qualvolta si voglia usare un sistema piuttosto che un altro. Il processo di virtualizzazione non è banale, ma è un modo utile di testare nuovi sistemi operativi senza doverli installare su un hardware fisico.

Una volta avviato l'hardware su cui si è andato a copiare il sistema operativo, il programma di installazione di Ubuntu ti informerà in automatico che avrà trovato un altro sistema (Windows 7) installato sull'hard disk, e suggerirà diverse opzioni:

  • quella di installare Ubuntu insieme a Windows, e in questo caso lo stesso programma di installazione verrà in aiuto all'utente cercando di trovare la partizione più adatta, ti consentirà di ridurla, creare una nuova partizione nello spazio libero dopo il ridimensionamento e installare Ubuntu su di essa. Questo è quello che precedentemente abbiamo chiamato dual-boot, inoltre questo passaggio, che possiamo definire di transizione, permette, fino a quando non si sarà presa un po di familiarità con l'utilizzo di Ubuntu, di non alterare i dati presenti su Windows 7;
  • se invece decidi di voler sostituire Windows 7 con Ubuntu dovrai formattare l'intero disco rigido e configurare Ubuntu come unico sistema operativo. Se è stato eseguito il backup dei dati in modo sicuro da Windows 7, è possibile utilizzare questa opzione. Se non sei sicuro, il modo migliore è iniziare con l'opzione dual-boot e infine sostituire completamente Windows 7 una volta che sei sicuro di usare Ubuntu;
  • se il programma di installazione non può configurare la partizione in modo automatico, sarà necessario configurare manualmente le partizioni. Inoltre, per chi volesse andare a vedere come saranno partizionati i dischi, tra le varie applicazioni di Ubuntu è presente un'importante utility chiamata Gparted che vi mostrerà quanto appena detto. Per chi volesse intraprendere questa strada al seguente link è presente la guida fornita dalla comunità Ubuntu-it che vi seguirà passo per passo.
Al termine dell'installazione e dopo aver riavviato il computer, verrà visualizzato un menu di testo all'avvio e sarà possibile selezionare il sistema operativo in cui eseguire l'avvio: Ubuntu o Windows 7.
 
Fonte:
il 10 February 2020 11.37
Lo scorso mese è stato effettuato un aggiornamento del software in oggetto, al fine di aggiungere alla lista altri server dedicati a questo modo di comunicazione radio.
il 10 February 2020 07.00

09 February 2020

Negli ultimi due anni, la mia presenza sui vari sistemi radio digitali e analogici italiani ed europei è aumentata parecchio, effettuando bellissimi QSO sia di giorno che di notte. In questo articolo, senza desiderio di polemica, indicherò alcuni consigli per fare in modo che i nostri QSO possano migliorare sempre più, sia in digitale che in analogico!
il 09 February 2020 07.00

08 February 2020

Nei precedenti articoli ho descritto i caricabatterie delle radio Tytera MD-380 e Radioddity GD-77; in questo articolo descriverò alcune informazioni riguardanti il carica batteria (rapid charger) QBC-45AL e la batteria QB-48HL, che uso abitualmente. 
il 08 February 2020 08.33

05 February 2020

In questi mesi ho notato che ci sono stati diversi Radioamatori che hanno desiderato sperimentare la possibilità di utilizzare il software HBLink, prelevando i flussi DMR dalla rete BrandMeister per poi gestirli a proprio piacere...
il 05 February 2020 11.19

04 February 2020

Categoria: 

È disponibile la newsletter N° 004/2020 della comunità di ubuntu-it. In questo numero:

  • Come eseguire l'aggiornamento da Windows 7 a Ubuntu - Considerazioni su hardware e software
  • La presentazione del programma di installazione di Ubuntu ottiene un aggiornamento focale
  • Full Circle Magazine Issue #153 in inglese
  • Rilasciato LibreOffice 6.4 con nuove funzionalità!
  • Kernel Linux 5.5 rilasciato!
  • KDE Plasma 5.18 includerà uno strumento di report di sistema, rigorosamente opt-in
  • Aggiornamenti di sicurezza
  • Bug riportati
  • Statistiche del gruppo sviluppo

 

Puoi leggere la newsletter in questa pagina, oppure scaricarla in formato pdf. Se hai perso i numeri precedenti, puoi trovarli nell archivio! Per ricevere la newsletter ogni settimana nella tua casella di posta elettronica, iscriviti alla lista newsletter-italiana.

il 04 February 2020 21.19
In questo articolo vi indicherò la trasformazione che ognuno di voi Radioamatori sperimentatori potrà effettuare da se, in modo molto semplice, per avere una nuova radio molto performante e da usare anche come hotspot. La 'colpa' per la realizzazione di questo articolo è tutta degli amici OM della zona 0, e precisamente quelli che frequentano i QSO serali in DMR sul TG 2230 (mannaggia a I0TOT !)
il 04 February 2020 16.37

03 February 2020

Categoria: 

Nel numero 002.2019 della newsletter insieme all'articolo di Rhys Davies intitolato Why you have upgrade to Ubuntu, si è discusso dei vari motivi del perché molti utenti in possesso di Windows 7 si trovino, data la fine del supporto di esso, in un limbo fatto di considerazioni e decisioni che dovranno prendere. Questo articolo - insieme a tanti altri che usciranno più avanti - avrà l'obbiettivo di aiutare gli utenti Windows a migrare dal loro vecchio sistema operativo a Ubuntu. Le prime considerazioni che andremo a fare saranno riguardanti i primi passaggi per la migrazione: relativi al software, all'hardware e al backup dei dati. Prima di iniziare, è importante chiarire e definire alcuni dei gerghi tecnici che utilizzeremo più avanti come:

  • Sistema operativo (Linux) - Con il termine Linux si intende una famiglia di sistemi operativi, quali Ubuntu, Debian, Fedora etc, aventi la caratteristica comune di utilizzare come nucleo il kernel linux;
  • Versione - Rinominata con un codice numerico 16.04 o 18.10, che indica YY.MM del rilascio e dal nome, per esempio: Ubuntu 18.04 si chiama Bionic Beaver;
  • Ambiente Grafico - Include desktop, barre degli strumenti, temi e altri elementi di stile. Gli ambienti desktop sono generalmente strettamente associati alla distribuzione, ad esempio Ubuntu utilizza l'ambiente desktop GNOME, mentre Kubuntu utilizza l'ambiente desktop Plasma.
La prima domanda che poniamo è: quale opzioni hanno gli utenti di Windows 7? Prima di tutto ricordiamo che a partire dal 14 gennaio 2020, il sistema operativo non è più supportato, a meno che non si stia pagando per un supporto esteso. Ricordiamo inoltre, che l'esecuzione di un sistema operativo che non riceve più aggiornamenti e patch di sicurezza può essere problematica in alcuni scenari per cui la soluzione può essere racchiusa in tre scenari:
  • Acquistare un nuovo computer - dove è preinstallato un sistema operativo supportato come Windows 10, macOS. Questa è probabilmente l'opzione meno invadente, soprattutto se si era già pianificato di cambiare l'hardware;
  • Eseguire l'upgrade a Windows 10 - questa sarà la scelta principale di un gran numero di utenti che potranno aggiornare il proprio sistema eseguendo Windows 10 Media Creation Tool, che aggiornerà la loro istanza di Windows 7 a Windows 10;
  • Eseguire l'upgrade a un'alternativa non Windows -  Questo significa Linux. I vari vantaggi di questi passaggi è che: la maggior parte delle distribuzioni Linux sono gratuite, non hanno condizioni di licenza, girano su qualsiasi tipo di hardware con l'unico compromesso che richiede l'apprendimento di nuovi termini e modelli di utilizzo, il che può essere piuttosto impegnativo ma nulla di impossibile.

Approfondiamo il terzo punto e il motivo del perché occorre considerare Ubuntu come alternativa a Windows 7, può esser fatto attraverso l'analogia con gli smartphone. Perché iPhone o perché Android? Entrambi i sistemi offrono alcuni vantaggi e svantaggi e soprattutto impongono anche i propri modi di fare le cose. Ma tutto dipenderà da ciò che meglio si adatta alle esigenze dell'utente. Infatti, Ubuntu è una delle principali distribuzioni Linux e open source, ed è sviluppata e supportata da Canonical e viene fornito con un ricco ecosistema di software come ad esempio: Firefox, Chrome, Skype, Steam, Spotify, VLC e tanto altro. È un sistema robusto e sicuro, ha un modello di rilascio semestrale (aprile e ottobre, da cui i numeri di versione 18.04, 19.10) mentre ogni due anni, ad aprile, viene rilasciata una nuova versione LTS (Long Term Release Support), che viene fornita con cinque anni di aggiornamenti e correzioni di sicurezza. La prossima versione LTS uscirà ad aprile 2020. Parallelamente, è importante menzionare anche i motivi per cui uno potrebbe non essere in grado di migrare su Ubuntu o qualsiasi altro tipo di distribuzione Linux, per esempio:

  • Richiedono software specifici che non sono disponibili su Ubuntu. Proprio come le differenze nelle applicazioni tra dispositivi mobili (iOS e Android), così come per Windows e Ubuntu. Queste differenze come ben tutti sanno sono dovute al fatto che Windows è il desktop più popolare al mondo (all'incirca l'85% di utilizzo totale). Anche se, oggigiorno sono presenti comunque software equivalenti, per chi fa grafica su Windows editerà le proprie immagini con Photoshop, mentre chi lavora con Linux, con GIMP e cosi via. In questo caso si potrà parlare come abbiamo detto prima di "esigenze dell'utente" o anche di "abitudini";
  • What a hassle che tradotto in italiano significherebbe che seccatura, riguarderebbe il tempo necessario per apprendere un nuovo modello di utilizzo, dirottando cosi l'utente a continuare a utilizzare un desktop Windows. Per tali utenti, la migrazione potrebbe essere un'esperienza frustrante;
  • Conoscenze tecniche necessarie per installare e configurare un sistema operativo da soli. Di questi tempi credo che ciò sia solo una scusa nel non voler perdere tempo nel fare una cosa. Basti vedere la quantità di articolo presenti nel sito ufficiale Ubuntu-it, o in giro per internet. In casi estremi si può risolvere il tutto con l'acquisto di un nuovo computer con Ubuntu preinstallato.
Il passo successivo è il backup dei proprio dati, perché in generale nel nostro dispositivo abbiamo prevalentemente due tipi di dati: i primi sono i nostri file personali come foto, video, documenti mentre i secondi sono le impostazioni dell'applicazione, tipo i segnalibri nei rispettivi browser web, temi, sfondi e altri componenti. Su Windows 7, i dati personali possono risiedere ovunque sul disco, ad esempio nelle cartelle predefinite come Documenti, Immagini, oppure potresti avere una cartella personalizzata come C:\ o anche memorizzarli su un'unità separata, come D:\. Detto questo, è possibile scegliere che tipo di backup effettuare se:
  • Backup locale -  crea una copia dei tuoi dati su un altro disco rigido. Preferibilmente su un'unità esterna che è possibile rimuovere, in modo da non eliminare accidentalmente nulla durante l'installazione del nuovo sistema operativo;
  • Backup di rete - archivia una copia dei tuoi dati su un altro computer della tua rete;
  • Backup su cloud -  anche se questa soluzione non viene vista benissimo dagli utenti. Ma può essere un metodo di backup adatto in alcuni casi. Ad esempio, potresti utilizzare un servizio di backup cloud come !OneDrive, Google Drive o Dropbox per sincronizzare periodicamente i tuoi dati nel tuo account cloud.
Naturalmente, siamo comprensivi del fatto che cambiare il sistema operativo su un proprio dispositivo non è il massimo del divertimento, ma con un briciolo di dedizione e con questo breve articolo speriamo di avervi fornito una buona panoramica sulle possibilità in gioco che sono presenti.
 
Fonte:
 

 

il 03 February 2020 14.08

02 February 2020

Buon compleanno palindromo!

Paolo Garbin (paolettopn)

Oggi, 2 febbraio 2020 sto festeggiando i miei primi 54 anni di vita, assieme a parte della mia Famiglia e agli Amici più stretti... durante una giornata speciale, pure palindroma.  
il 02 February 2020 19.36

31 January 2020

2 free months of Skillshare Premium!

Lorenzo Sfarra (twilight)

You can get 2 free months of Skillshare Premium, thanks to this referral link.

With Skillshare Premium you will:

  • Get customized class recommendations based on your interests.
  • Build a portfolio of projects that showcases your skills.
  • Watch bite-sized classes on your own schedule, anytime, anywhere on desktop or mobile app.
  • Ask questions, exchange feedback, and learn alongside other students.

That’s it! 🙂

Skillshare logo
  • Get inspired.
  • Learn new skills.
  • Make discoveries.
  • Be curious.

I will be more than happy if you can join my classes and give me some feedbacks. The classes are about almost everything that I do in my life (you can check again my skills on the homepage)!.. 🙂

The post 2 free months of Skillshare Premium! appeared first on L.S..

il 31 January 2020 09.05

28 January 2020

Categoria: 

È disponibile la newsletter N° 003/2020 della comunità di ubuntu-it. In questo numero:

  • Arriva definitivamente L'End of Life per Ubuntu 19.04!
  • Ubuntu rimuove l'applicazione di Amazon dal proprio sistema
  • È in fase di sviluppo il nuovo tema per Ubuntu 20.04
  • Wine 5.0: ecco tutte le novità!
  • GParted si aggiorna alla versione 1.1
  • Intel tenterà di evitare la perdita di prestazioni dei suoi processori!
  • Mozilla Thunderbird 68.4.1, cosa c'è di nuovo!
  • Aggiornamenti di sicurezza
  • Bug riportati
  • Statistiche del gruppo sviluppo

 

Puoi leggere la newsletter in questa pagina, oppure scaricarla in formato pdf. Se hai perso i numeri precedenti, puoi trovarli nell archivio! Per ricevere la newsletter ogni settimana nella tua casella di posta elettronica, iscriviti alla lista newsletter-italiana.

il 28 January 2020 21.08

27 January 2020

Categoria: 
Ubuntu 19.04 (Disco Dingo) ha raggiunto ufficialmente, dopo 9 mesi dal suo lancio, la fine del supporto il 23 gennaio 2020 - come già annunciato nell'articolo della newsletter 2020.001 - per questo consigliamo a tutti gli utenti di eseguire l'aggiornamento a Ubuntu 19.10 per beneficiare di correzioni di errori e aggiornamenti di sicurezza. La stessa Canonical in un avviso di sicurezza pubblicato questa settimana ha dichiarato:
 
“Ad oggi (23 gennaio 2020), Ubuntu 19.04 non è più supportato. Non saranno più accettati aggiornamenti del pacchetto 19.04 e sarà archiviato su old-releases.ubuntu.com nelle prossime settimane. Ubuntu 19.10 continua a essere attivamente supportato con gli aggiornamenti di sicurezza e correzioni di bug di grande impatto".
 
Naturalmente sono interessate, a tale aggiornamento, anche le varie derivate come Kubuntu, Xubuntu e Lubuntu. Per eseguire l'avanzamento è possibile prendere due strade, la prima consiste nell'andare in Software e Aggiornamenti → Aggiornamenti e attivare le notifiche per qualsiasi aggiornamento di versione superiore a quella in uso, oppure si può aprire il terminale e digitare il seguente comando:
 
sudo apt-get install update-manager-core
 
Successivamente occorre verificare che la configurazione del sistema operativo permetta l'aggiornamento verso release "normali", e non solo verso quelle a supporto esteso (LTS) e digitare - sempre all'interno del terminale - il comando seguente per apportare la modifica in automatico:
 
sudo sed -i -E 's/Prompt=(never|lts)/Prompt=normal/g' "/etc/update-manager/release-upgrades"
 
Arrivati a questo punto in realtà è possibile avanzare al passo successivo. Altrimenti in alternativa, se volete per comodità modificare il file di configurazione tramite un qualsiasi editor di testo (in questo caso si è utilizzato nano, quindi prima di procedere accertarsi di averlo già installato nel proprio sistema), si tenga aperto un terminale e digitare:
 
sudo nano /etc/update-manager/release-upgrades
 
e individuate la riga che inizia con Prompt= situato alla fine del file ed assicuratevi che sia presente la seguente dicitura Prompt=normal, nel caso vi fosse un valore diverso, modificatelo come appena scritto. Salvate il documento utilizzando la scorciatoia da tastiera Ctrl+O e quindi Invio per salvare, poi Ctrl+X per uscire. A questo punto impartite i seguenti comandi:
 
sudo apt-get update
sudo do-release-upgrade
 
L'operazione potrebbe durare alcune ore, questo dipenderà da diversi fattori come le prestazioni del laptop in uso, numeri e grandezza dei pacchetti che occorrerà installare, velocità della connessione a internet etc. Buon lavoro!
 
Fonte:

 

il 27 January 2020 15.23

21 January 2020

Categoria: 

È disponibile la newsletter N° 002/2020 della comunità di ubuntu-it. In questo numero:

  • Canonical invita gli utenti che stanno per migrare da Windows 7 a utilizzare Ubuntu
  • KDE Plasma 5.18 LTS entra in fase beta, ecco tutte le novità!
  • Oracle rilascia VirtualBox 6.1.2 con supporto al kernel linux 5.5
  • È iniziata la spedizione degli smartphone PinePhone Linux
  • ProtonMail lancia un'alternativa a Google Calendar
  • Aggiornamenti di sicurezza
  • Bug riportati
  • Statistiche del gruppo sviluppo

 

Puoi leggere la newsletter in questa pagina, oppure scaricarla in formato pdf. Se hai perso i numeri precedenti, puoi trovarli nell archivio! Per ricevere la newsletter ogni settimana nella tua casella di posta elettronica, iscriviti alla lista newsletter-italiana.

il 21 January 2020 21.08

14 January 2020

Categoria: 

È disponibile la newsletter N° 001/2020 della comunità di ubuntu-it. In questo numero:

  • Canonical rilascia importanti aggiornamenti per il kernel linux
  • Ubuntu 19.04 raggiungerà l'End of Life il 23 Gennaio 2020
  • Full Circle Magazine Issue #152 in inglese
  • Rilasciata l'ultima point release per KDE Plasma 5.17.5
  • Arriva Mozilla Firefox 72 per tutte le versioni di Ubuntu supportate
  • Thunderbird, Enigmail e OpenPGP
  • KDE Plasma è in procinto di lanciare un nuovo look e un nuovo menù
  • Linux Kernel 5.3 ha raggiunto l'End Of Life
  • Aggiornamenti di sicurezza
  • Bug riportati
  • Statistiche del gruppo sviluppo

 

Puoi leggere la newsletter in questa pagina, oppure scaricarla in formato pdf. Se hai perso i numeri precedenti, puoi trovarli nell archivio! Per ricevere la newsletter ogni settimana nella tua casella di posta elettronica, iscriviti alla lista newsletter-italiana.

il 14 January 2020 21.09

28 December 2019

My year on HackerOne

Riccardo Padovani

Last year, totally by chance, I found a security issue over Facebook - I reported it, and it was fixed quite fast. In 2018, I also found a security issue over Gitlab, so I signed up to HackerOne, and reported it as well. That first experience with Gitlab was far from ideal, but after that first report I’ve started reporting more, and Gitlab has improved its program a lot.

2019

Since June 2019, when I opened my first report of the year, I reported 27 security vulnerabilities: 4 has been marked as duplicated, 3 as informative, 2 as not applicable, 9 have been resolved, and 9 are currently confirmed and the fix is ongoing. All these 27 vulnerabilities were reported to Gitlab.

Especially in October and November I had a lot of fun testing the implementation of ElasticSearch over Gitlab. Two of the issues I have found on this topic have already been disclosed:

Why just Gitlab?

I have an amazing daily job as Solutions Architect at Nextbit that I love. I am not interested in becoming a full-time security researcher, but I am having fun dedicating some hours every month in looking for securities vulnerabilities.

However, since I don’t want it to be a job, I focus on a product I know very well, also because sometimes I contribute to it and I use it daily.

I also tried to target some program I didn’t know anything about, but I get bored quite fast: to find some interesting vulnerability you need to spend quite some time to learn how the system works, and how to exploit it.

Last but not least, Gitlab nowadays manages its HackerOne program in a very cool way: they are very responsive, kind, and I like they are very transparent! You can read a lot about how their security team works in their handbook.

Can you teach me?

Since I have shared a lot of the disclosed reports on Twitter, some people came and asked me to teach them how to start in the bug bounties world. Unfortunately, I don’t have any useful suggestion: I haven’t studied on any specific resource, and all the issues I reported this year come from a deep knowledge of Gitlab, and from what I know thanks to my daily job. There are definitely more interesting people to follow on Twitter, just check over some common hashtags, such as TogetherWeHitHarder.

Gitlab’s Contest

I am writing this blog post from my new keyboard: a custom-made WASD VP3, generously donated by Gitlab after I won a contest for their first year of public program on HackerOne. I won the best written report category, and it was a complete surprise; I am not a native English speaker, 5 years ago my English was a monstrosity (if you want to have some fun, just go reading my old blog posts), and still to this day I think is quite poor, as you can read here.

Indeed, if you have any suggestion on how to improve this text, please write me!

custom keyboard

Congratulations to Gitlab for their first year on HackerOne, and keep up the good work! Your program rocks, and in the last months you improved a lot!

HackeOne Clear

HackerOne started a new program, called HackerOne Clear, only on invitation, where they vet all researchers. I was invited and I thought about accepting the invitation. However, the scope of the data that has to be shared to be vetted is definitely too wide, and to be honest I am surprised so many people accepted the invitation. HackerOne doesn’t perform the check, but delegates to a 3rd party. This 3rd party company asks a lot of things.

I totally understand the need of background checks, and I’d be more than happy to provide my criminal record. It wouldn’t be the first time I am vetted, and I am quite sure it wouldn’t be the last.

More than the criminal record, I am a puzzled about these requirements:

  • Financial history, including credit history, bankruptcy and financial judgments;
  • Employment or volunteering history, including fiduciary or directorship responsibilities;
  • Gap activities, including travel;
  • Health information, including drug tests;
  • Identity, including identifying numbers and identity documents;

Not only the scope is definitely too wide, but also all these data will be stored and processed outside EU! Personal information will be stored in the United States, Canada and Ireland. Personal information will be processed in the United States, Canada, the United Kingdom, India and the Philippines.

As European citizen who wants to protect his privacy, I cannot accept such conditions. I’ve written to HackerOne asking why such a wide scope of data, and they replied that since it’s their partner that actually collects the information, there is nothing they can do. I really hope HackerOne will require fewer data in the future, preserving privacy of their researchers.

2020

In these days I’ve though a lot about what I want to do in my future about bug bounties, and for the 2020 I will continue as I’ve done in the last months: assessing Gitlab, dedicating not more than a few hours a month. I don’t feel ready to step up my game at the moment. I have a lot of other interests I want to pursue in 2020 (travelling, learning German, improve my cooking skills), so I will not prioritize bug bounties for the time being.

That’s all for today, and also for the 2019! It has been a lot of fun, and I wish to you all a great 2020! For any comment, feedback, critic, write to me on Twitter (@rpadovani93) or drop an email at riccardo@rpadovani.com.

Ciao,
R.

Updates

  • 29th December 2019: added paragraph about having asked to HackerOne more information on why they need such wide scope of personal data.
il 28 December 2019 19.00

16 December 2019

You woke up one day and your Android phone contacts disappeared.

You try to perform a Google Search but you only find strange solutions, mostly related to some Samsung stuff, factory resets, uninstalling some app, etc…

Suddenly you realise that your Google Contacts was empty!

Ok, too much context, the solution.

Open your browser to https://contacts.google.com/.

In the top right corner you have a gear, click on it. Then click on Undo changes:

Now you can chose the version of your contacts that you want to restore: minute ago, hours ago, days ago, months ago, years ago….

And that’s it, the time to sync your phone and they’re back!

The post Restore your Google Contacts (for your Android phone, too) appeared first on L.S..

il 16 December 2019 09.31

09 December 2019

Buon Natale da Banksy

Dario Cavedon (iced)

il 09 December 2019 19.56

14 November 2019


Dalla TV, Bobo Vieri sorride sornione come quando giocava a calcio, e ripete "Shave like a bomber!". Tutti gli uomini che se lo ricordano quando giocava a calcio e faceva parlare di se dentro e fuori dal campo, rispondono al sorriso con approvazione.

Quello che fa (bene) Vieri è il testimonial, ci mette la sua bella faccia, e la sua innata simpatia per vendere un prodotto. Una professione a cui si dedicano anche suoi numerosi ex-colleghi giocatori di calcio, e del mondo dello spettacolo.

Mi fa sorridere quindi quando leggo post così che parlando di Chiara Ferragni scrivono di "vuoto pneumatico". Mi pare lapalissiano dire che Chiara Ferragni è una testimonial di se stessa, che sa usare i nuovi canali per comunicare il suo messaggio (qualunque esso sia). Fa marketing, e lo fa bene, visto il giro di soldi che fattura. Nel suo caso poi il fenomeno è così esteso che, chi scrive di lei, o parla di lei, anche in maniera negativa, si fa pubblicità a sua volta, sfruttandone la fama di riflesso.

Denoto in questi articoli - oltre la malizia usata per attirare clic - una certa incapacità di leggere la realtà e di adattarsi al cambiamento di costumi e di mestieri in atto.

Trovo anche sorprendente che i commentatori di cui sopra non riescano a capire come il fenomeno dei testimonial sia in parte sceso dall'Olimpo delle celebrità televisive, per diramarsi nei mille rivoli dei rappresentanti della borghesia. Al giorno d'oggi i testimonial sono anche degli illustri sconosciuti, con cui magari abbiamo fatto una corsetta al parco domenica scorsa.
il 14 November 2019 13.00

09 November 2019


(Segue Italiano)

🇬🇧🇺🇸 Last october I attended Ubucon Europe 2019, at Sintra in Portugal. Still need some time to gather the right words to explain how well I felt standing there with Ubuntu mates, and how many different good talks I saw.
Meanwhile, you can take a look at the video of my talk, where I speak about my running story: how I began running, why I still run, and why (almost) everybody can do it. Oh! Obviously I explain also what open source software you can use to track safely and securely your runs.
Let me know what you think about it! :-)

🇮🇹 Lo scorso ottobre ho partecipato a Ubucon Europe 2019, a Sintra in Portogallo. Ho bisogno di ancora un po' di tempo per mettere insieme le parole giuste per spiegare come mi sono sentito stare lì con gli amici ubunteri, e quanti bei talk ho sentito.
Intanto, potete dare un'occhiata al video del mio talk, dove parlo della mia storia di corsa: come ho cominciato, perché corro ancora e perché (quasi) tutti possono farlo. Oh! Ovviamente spiego anche che software open source si può usare per tracciare in le proprie corse in modo sicuro.
Fatemi sapere cosa ne pensate! :-)


Thanks very much Ubuntu & Canonical for funding my travel expenses!

(The picture in this post is from Marco Trevisan on Twitter)
il 09 November 2019 10.05

03 November 2019

With version 12.0 Gitlab has introduced a new interesting feature: Visual Reviews! You can now leave comments to Merge Requests directly from the page you are visiting over your stage environment, without having to change tab.

If you already have Continuous Integration and Continuous Delivery enabled for your websites, adding this feature is blazing fast, and will make life of your reviewers easier! If you want to start with CI/CD in Gitlab, I’ve written about it in the past.

The feature

While the official documentation has a good overview of the feature, we can take a deeper look with some screenshots:

Inserting a comment We can comment directly from the staging environment! And additional metadata will be collected and published as well, making easier to reproduce a bug.

Comment appears in the MR Our comment (plus the metadata) appears in the merge request, becoming actionable.

Implementing the system

Adding the snippet isn’t complicate, you only need some information about the MR. Basically, this is what you should add to the head of your website for every merge request:

<script
  data-project-id="CI_PROJECT_ID"
  data-merge-request-id="CI_MERGE_REQUEST_IID"
  data-mr-url='https://gitlab.example.com'
  data-project-path="CI_PROJECT_PATH"
  id='review-app-toolbar-script'
  src='https://gitlab.example.com/assets/webpack/visual_review_toolbar.js'>
</script>

Of course, asking your team to add the HTML snippet, and filling it with the right information isn’t feasible. We will instead take advantage of Gitlab CI/CD to inject the snippet and autocomplete it with the right information for every merge request.

First we need the definition of a Gitlab CI job to build our client:

buildClient:
  image: node:12
  stage: build
  script:
    - ./scripts/inject-review-app-index.sh
    - npm ci
    - npm run build
  artifacts:
    paths:
      - build
  only:
    - merge_requests
  cache:
    paths:
      - .npm

The important bit of information here is only: merge_requests. When used, Gitlab injects in the job a environment variable, called CI_MERGE_REQUEST_IID, with the unique ID of the merge request: we will fill it in the HTML snippet. The official documentation of Gitlab CI explains in detail all the other keywords of the YAML.

The script

The other important bit is the script that actually injects the code: it’s a simple bash script, which looks for the </title> tag in the HTML, and append the needed snippet:

#!/bin/bash

quoteSubst() {
  IFS= read -d '' -r < <(sed -e ':a' -e '$!{N;ba' -e '}' -e 's/[&/\]/\\&/g; s/\n/\\&/g' <<<"$1")
  printf %s "${REPLY%$'\n'}"
}

TEXT_TO_INJECT=$(cat <<-HTML
    <script
      data-project-id="${CI_PROJECT_ID}"
      data-merge-request-id="${CI_MERGE_REQUEST_IID}"
      data-mr-url='https://gitlab.com'
      data-project-path="${CI_PROJECT_PATH}"
      id='review-app-toolbar-script'
      src='https://gitlab.com/assets/webpack/visual_review_toolbar.js'>
    </script>
HTML
)

sed -i "s~</title>~&$(quoteSubst "${TEXT_TO_INJECT}")~" public/index.html

Thanks to the Gitlab CI environment variables, the snippet has already all the information it needs to work. Of course you should customize the script with the right path for your index.html (or any other page you have).

Now everything is ready! Your team needs only to generate personal access tokens to login, and they are ready to go! You should store your personal access token in your password manager, so you don’t need to generate it each time.

Future features

One of the coolest things in Gitlab is that everything is always a work in progress, and each feature has some new goodies in every release. This is true for the Visual Reviews App as well. There is an epic that collects all the improvements they want to do, including removing the need for an access token, and adding ability to take screenshots that will be inserted in the MR comments as well.

That’s all for today, I hope you found this article useful! For any comment, feedback, critic, write to me on Twitter (@rpadovani93) or drop an email at riccardo@rpadovani.com.

I have also changed the blog theme to a custom version of Rapido.css. I think it increases the readability, but let me know what you think!

Ciao,
R.

il 03 November 2019 14.35

11 July 2019

The presence of computers really greatly facilitates human work today. It’s not just work related to the office, also homework and doesn’t forget the assignments given by the teacher at school. In the world of editing photo editing, it also turns out that computers can help you, such as to improve the quality of your photos, provide photo effects, and edit photos into caricatures and others. This time the author wants to discuss about software that can be used to edit photos. Check this out. The first is Adobe Photoshop. Adobe Photoshop is software specifically for editing photos and giving adobe system feature. This software, commonly known as Photoshop, is considered as the leader in the photo processing market together with Adobe Acrobat. Many digital photographers have used this software. Photoshop was first released in 1990 with the name Photoshop 1.0, but this software cannot be used in all operating systems, it can only be used on Macintosh. This software has complete features for digital photo processing purposes, but not only that Photoshop can now also be used for the purpose of producing images for the worldwide web. The file format that can be read by Photoshop now is PSD, PDD, and PSB.

This time is the image editor software made by MOOII Tech from Korea. This software is named somewhat similar to the previous software, namely photoscape. Unlike Photoshop, which is designed for professionals, photoscape is designed with an easy and fun concept. Photoscape is only available on Microsoft Windows operating systems. Language that is the default language is Korean and English. Photoscape has cool features namely viewer, photo editor, photo-batch editor, page, GIF animation, print, screen capture, color picker, raw converter, and face finder.

The next is photo processing software with a unique name that is pixlr. This software is based on features of photo editors, screen recorders that are connected to browsers, and photo sharing services. Pixlr was created for non-professionals even though this software has levels from easy to difficult, can be used on PCs and gadgets or tablets. Furthermore, there is photo processing software that is also given a unique name, named pixbuilder. This software made by winsoft graphics software can be used on Microsoft Windows operating systems. Pixia is picture processing software for Microsoft Windows operating systems, made by Isao Maruoka. Designed for making anime or manga, the default language of the application is Japanese. That’s a variety of software that can help you edit your photos. Hopefully it can be a useful reference.

The post The Latest Best Photo Editor Software appeared first on Deshack.net.

il 11 July 2019 10.57

24 June 2019

During the last AWS re:Invent, back in 2018, a new OCR service to extract data from virtually any document has been announced. The service, called Textract, doesn’t require any previous machine learning experience, and it is quite easy to use, as long as we have just a couple of small documents. But what if we have millions of PDF of thousands of page each? Or what if we want to analyze documents loaded by users?

In that case, we need to invoke some asynchronous APIs, poll an endpoint to check when it has finished working, and then read the result, which is paginated, so we need multiple APIs call. Wouldn’t be super cool to just drop files in an S3 bucket, and after some minutes, having their content in another S3 bucket?

Let’s see how to use AWS Lambda, SNS, and SQS to automatize all the process!

Overview of the process

This is the process we are aiming to build:

  1. Drop files to an S3 bucket;
  2. A trigger will invoke an AWS Lambda function, which will inform AWS Textract of the presence of a new document to analyze;
  3. AWS Textract will do its magic, and push the status of the job to an SNS topic, that will post it over an SQS topic;
  4. The SQS topic will invoke another Lambda function, which will read the status of the job, and if the analysis was successful, it downloads the extracted text and save to another S3 bucket (but we could replace this with a write over DynamoDB or others database systems);
  5. The Lambda function will also publish the state over Cloudwatch, so we can trigger alarms when a read was unsuccessful.

Since a picture is worth a thousand words, let me show a graph of this process.

Textract structure

While I am writing this, Textract is available only in 4 regions: US East (Northern Virginia), US East (Ohio), US West (Oregon), and EU (Ireland). I strongly suggest therefore to create all the resources in just one region, for the sake of simplicity. In this tutorial, I will use eu-west-1.

S3 buckets

First of all, we need to create two buckets: one for our raw file, and one for the JSON file with the extracted test. We could also use the same bucket, theoretically, but with two buckets we can have better access control.

Since I love boring solutions, for this tutorial I will call the two buckets textract_raw_files and textract_json_files. Official documentation explains how to create S3 buckets.

Invoke Textract

The first part of the architecture is informing Textract of every new file we upload to S3. We can leverage the S3 integration with Lambda: each time a new file is uploaded, our Lambda function is triggered, and it will invoke Textract.

The body of the function is quite straightforward:

from urllib.parse import unquote_plus

import boto3

s3_client = boto3.client('s3')
textract_client = boto3.client('textract')

SNS_TOPIC_ARN = 'arn:aws:sns:eu-west-1:123456789012:AmazonTextract'    # We need to create this
ROLE_ARN = 'arn:aws:iam::123456789012:role/TextractRole'   # This role is managed by AWS

def handler(event, _):
    for record in event['Records']:
        bucket = record['s3']['bucket']['name']
        key = unquote_plus(record['s3']['object']['key'])

        print(f'Document detection for {bucket}/{key}')

        textract_client.start_document_text_detection(
            DocumentLocation={'S3Object': {'Bucket': bucket, 'Name': key}},
            NotificationChannel={'RoleArn': ROLE_ARN, 'SNSTopicArn': SNS_TOPIC_ARN})

You can find a copy of this code hosted over Gitlab.

As you can see, we receive a list of freshly uploaded files, and for each one of them, we ask Textract to do its magic. We also ask it to notify us, when it has finished its work, sending a message over SNS. We need therefore to create an SNS topic. It is well explained how to do so in the official documentation.

When we have finished, we should have something like this:

SNS topic

We copy the ARN of our freshly created topic and insert it in the script above in the variable SNS_TOPIC_ARN.

Now we need to actually create our Lambda function: once again the official documentation is our friend if we have never worked with AWS Lambda before.

Since the only requirement of the script is boto3, and it is included by default in Lambda, we don’t need to create a custom package.

At least, this is usually the case :-) Unfortunately, while I am writing this post, boto3 on Lambda is at version boto3-1.9.42, while support for Textract landed only in boto3-1.9.138. We can check which version is currently on Lambda from this page, under Python Runtimes: if boto3 has been updated to a version >= 1.9.138, we don’t have to do anything more than simply create the Lambda function. Otherwise, we have to include a newer version of boto3 in our Lambda function. But fear not! The official documentation explains how to create a deployment package. Update Oct ‘19: this is no longer the case, AWS has updated the boto3 package included in the Lambda runtime.

We need also to link an IAM role to our Lambda function, which requires some additional permission:

  • AmazonTextractFullAccess: this gives access also to SNS, other than Textract
  • AmazonS3ReadOnlyAccess: if we want to be a bit more conservative, we can give access to just the textract_raw_files bucket.

Of course, other than that, the function requires the standard permissions to be executed and to write on Cloudwatch: AWS manages that for us.

We are almost there, we need only to create the trigger: we can do that from the Lambda designer! From the designer we select S3 as the trigger, we set our textract_raw_files bucket, and we select All object create events as Event type.

If we implemented everything correctly, we can now upload a PDF file to the textract_raw_files, and over Cloudwatch we should be able to see the log of the Lambda function, which should say something similar to Document detection for textract_raw_files/my_first_file.pdf.

Now we only need to read the extracted text, all the hard work has been done by AWS :-)

Read data from Textract

AWS Textract is so kind to notify us when it has finished extracting data from PDFs we provided: we create a Lambda function to intercept such notification, invoke AWS Textract and save the result in S3.

The Lambda function needs also to support pagination in the results, so the code is a bit longer:

import json
import boto3

textract_client = boto3.client('textract')
s3_bucket = boto3.resource('s3').Bucket('textract_json_files')


def get_detected_text(job_id: str, keep_newlines: bool = False) -> str:
    """
    Giving job_id, return plain text extracted from input document.
    :param job_id: Textract DetectDocumentText job Id
    :param keep_newlines: if True, output will have same lines structure as the input document
    :return: plain text as extracted by Textract
    """
    max_results = 1000
    pagination_token = None
    finished = False
    text = ''

    while not finished:
        if pagination_token is None:
            response = textract_client.get_document_text_detection(JobId=job_id,
                                                                   MaxResults=max_results)
        else:
            response = textract_client.get_document_text_detection(JobId=job_id,
                                                                   MaxResults=max_results,
                                                                   NextToken=pagination_token)

        sep = ' ' if not keep_newlines else '\n'
        text += sep.join([x['Text'] for x in response['Blocks'] if x['BlockType'] == 'LINE'])

        if 'NextToken' in response:
            pagination_token = response['NextToken']
        else:
            finished = True

    return text


def handler(event, _):
    for record in event['Records']:
        message = json.loads(record['Sns']['Message'])
        job_id = message['JobId']
        status = message['Status']
        filename = message['DocumentLocation']['S3ObjectName']

        print(f'JobId {job_id} has finished with status {status} for file {filename}')

        if status != 'SUCCEEDED':
            return

        text = get_detected_text(job_id)
        to_json = {'Document': filename, 'ExtractedText': text, 'TextractJobId': job_id}
        json_content = json.dumps(to_json).encode('UTF-8')
        output_file_name = filename.split('/')[-1].rsplit('.', 1)[0] + '.json'
        s3_bucket.Object(f'{output_file_name}').put(Body=bytes(json_content))

        return message

You can find a copy of this code hosted over Gitlab.

Again, this code has to be published as a Lambda function. As before, it shouldn’t need any special configuration, but since it requires boto3 >= 1.9.138 we have to create a deployment package, as long as AWS doesn’t update the Lambda runtime.

After we have uploaded the Lambda function, from the control panel we set as trigger SNS, specifying as ARN the ARN of the SNS topic we created before - in our case, arn:aws:sns:eu-west-1:123456789012:AmazonTextract.

We need also to give the IAM role which executes the Lambda function new permissions, in addition to the ones it already has. In particular, we need:

  • AmazonTextractFullAccess
  • AmazonS3FullAccess: in production, we should give access to just the textract_json_files bucket.

This should be the final result:

Lambda Configuration

And that’s all! Now we can simply drop any document in a supported format to the textract_raw_files bucket, and after some minutes we will find its content in the textract_json_files bucket! And the quality of the extraction is quite good.

Known limitations

Other than being available in just 4 locations, at least for the moment, AWS Textract has other known hard limitations:

  • The maximum document image (JPEG/PNG) size is 5 MB.
  • The maximum PDF file size is 500 MB.
  • The maximum number of pages in a PDF file is 3000.
  • The maximum PDF media size for the height and width dimensions is 40 inches or 2880 points.
  • The minimum height for text to be detected is 15 pixels. At 150 DPI, this would be equivalent to 8-pt font.
  • Documents can be rotated a maximum of +/- 10% from the vertical axis. Text can be text aligned horizontally within the document.
  • Amazon Textract doesn’t support the detection of handwriting.

It has also some soft limitations that make it unsuitable for mass ingestion:

  • Transactions per second per account for all Start (asynchronous) operations: 0.25
  • Maximum number of asynchronous jobs per account that can simultaneously exist: 2

So, if you need it for anything but testing, you should open a ticket to ask for higher limits, and maybe poking your point of contact in AWS to speed up the process.

That’s all for today, I hope you found this article useful! For any comment, feedback, critic, write to me on Twitter (@rpadovani93) or drop an email at riccardo@rpadovani.com.

Regards,
R.

il 24 June 2019 19.00

30 May 2019

There are many things that like to make us inflamed, one of which is when all of our important files are deleted. But, don’t throw everything in front of you first, because below there are some software that might be your helper in an effort to restore deleted files, although sometimes some of this software might not be useful when you (or someone) has formatted the storage several times. However, it never hurts to try, especially if everything on the HDD still feels warm to talk about. So, let’s reveal 4 free software options to restore the deleted files below.

The first software choice that might be worth trying in an effort to restore deleted files came from Recuva, which is part of the Piriform product. This developer from is quite well known for delivering reliable software, and the presence of Recuva can be a good alternative to returning almost all deleted files in the system. There are 4 superior values in this software, but the main thing is the recovery of files that are quite superior, both on the HDD system and external HDD, USB Flashdisk or Memory Card. This software is also claimed to be able to restore files from a damaged disk, although not completely. And besides the free version, they also provide paid options for users who need more features. If you have a MacOs system, DiskDrill may be very worth trying in an attempt to restore deleted files, even though they also provide Windows-based systems. An easy-to-run interface system is sometimes the advantage of the software, moreover, DiskDrill is really quite effective in an effort to restore deleted files.

MiniTool-Power-Data-Recovery-Free

MiniTool Power Data Recovery Free is also one of the other excellent alternative software in an effort to restore deleted data, moreover the presentation of this software is quite complete and easy for most users to use. This software can even be quite effective in restoring software because of Hard Drive Failure, or partitions that become RAW. And besides being available for free, this software can also work for a variety of major devices besides system HDDs. So, if you have important files either on an external HDD, USB or a memory card, this software can be the answer. Finally, EaseUS Data Recovery Wizard Free, which is very well known as one of the developers that provides a lot of great software. They call it All-in-One Free Data Recovery software that is great for all situations. In essence, with this software, users can quite easily in an effort to recover lost files in several scenarios, including due to formatting errors, partition losses, OS crashes, and virus attacks.

The post Great Free Software Options to Restore Deleted Files appeared first on Deshack.net.

il 30 May 2019 15.16

26 May 2019

In browsing data and any other websites, it is common to use VPN or Virtual Private Network. VPN is useful to open websites freely. It is common now to use VPN since there are some regulations from countries that make some websites are blocked. In this case, the VPN will be useful to use in many kinds of situation, so there will be no problems when the websites are blocked. Although there are regulations, VPN still can break the blocked websites easily. For VPNs, there are many applications or software that can provide access and services for the Virtual Private Network. For browser, Opera is known as the browser that can provide the access for VPN. There has been access for VPN and this can be activated for free. However, this cannot work in all kinds of websites, so it is better to have VPN services that can fully work in all kinds of condition.

In this case, HMA! Pro VPN can be one of the great VPN application to use. This application is getting its popularity lately since this app has been proven to work well in breaking down all of the websites and regulations of countries will not be big problems anymore. Its effectiveness is great in granting access for opening. Of course, its effectiveness is not for free, so users must use paid services. However, developer of this application knows that sometimes there are features which are not needed by certain users. That is why developer provides various packages for users, so users can choose the suitable package for them. For example, there is special package for students and this VPN service will unlock all websites with contents related to the education. Each package will have different function and different price.

Good Choice of Software for VPN ServiceThe other good point about the HMA! Pro VPN is that this software has vast compatibility. This software can work for PCs and gadget. For PC, this can work on Windows and Mac. Even, this VPN service can also work on LINUX-based PC. Then, this can work also for gadgets. Both Android and iOS can work well with this application. Surely, this will provide variety of function and compatibility, and it is great point. About the security of user’s data, this app will not have access for the private data, so there will be no problems and issues with the security. This application will only access the IP Address, and the other things are secured. Surely, this can be helpful software for VPN Services.

il 26 May 2019 14.03

21 May 2019

Android is the most popular smartphone platform in the world with more than a million applications. Maybe we are curious, what is the most popular android application? According to the survey, various million Android users in all parts of the world, 50 percent of them represent teenagers. The ease of downloading apps in free Playstore makes attractive teenage couples open themselves by adding unique applications ranging from social media, games, camera tricks, photo editing, and so on. Of the millions of applications that can be downloaded for free in Playstore, which applications are the most popular among teenagers? For teenagers, it is not expressive enough just to listen to music while humming to follow the lyrics. Now Smule is a favorite application where they can sing karaoke like in karaoke places in general. Millions of songs from various genres of music are available in full in this application ranging from pop, rock, jazz, to religious songs. With the Smule application, teenagers can join each other to enable them to sing duets in both sound and video versions. In fact, they can download recorded videos and then share them with other friends. Currently Smule is getting stronger at the top of the karaoke application after capturing more than 100 million users.

Next, after the social media, camera, and comic reader applications have been installed in one smartphone, the free music listening application is the next target of teenagers. Indeed, the lives of teenagers have never been separated from music. It is a special sensation when they can enjoy music from idol singers, not even their mood levels often increase by only listening to favorite songs. Of the many music applications in Playstore, Joox is currently the most popular free music application for teens. The Joox application itself offers interesting music features. In addition to free, thousands of songs in it can be enjoyed both online and offline. The number of downloads that reached more than 50 million times is enough to prove that Joox is more attractive to teenagers than other music applications.

Usually after taking selfie, teens immediately tamper with photos using the photo editing application. The current application they mostly choose is PicsArt. This application was originally only present on PC but now it can be enjoyed by android users through various types of gadgets. PicsArt itself is increasingly loved by teenagers after the presence of text insert, crop, insert sticker and much more. Easy and simple way to edit photos, as well as the presence of more interesting full features, of course it is reasonable if this application has been downloaded by more than 100 million users.

The post The Most Popular Android Applications among Teenagers appeared first on Deshack.net.

il 21 May 2019 09.14

20 May 2019

Virtual DJ is a DJ application that you can use to learn how to be a DJ without having to use physical equipment such as DJ Controllers, DJ Turntables, and so on. So only with a Mac or Windows desktop you can learn how the basics of DJ are done. This software developed by Atomix Production, provides various options for you to use. Starting from free services (Home Free), then the paid ones start from Home Plus, LE 8, Pro, to business edition. In addition to being able to be used to do DJs independently done on a laptop or desktop, this dj application can also be connected to the DJ Controller so that Virtual DJ can be the player interface in your dj setup.

In terms of appearance or face to face, virtual DJ is user friendly enough to learn, in the initial display when opening this software you will see jogwheels, tracks, playlist windows, window effects, hot cues, looping, etc. This virtual dj display supports high-resolution / DPI screens such as the MacBook PRO retina display, and other monitors. And the appearance of this latest update, when compared to other Dj software like Tractor, and Serato, the high-resolution display can be very helpful, making virtual dj appear clearer than the others. For features, such as other DJ applications, Virtual DJ also has several features such as Scratch that is in the scratch window, mastering, hot cues, effect & loop sections, etc. Regarding the broadcast feature, Virtual DJ provides a feature for you to publish mixes to listeners, which can be via direct PC to PC connection, radio server, or through podcasts. The features that might be somewhat useless but pretty cool are touchscreen, you can do it in virtual dj. So this software supports laptops / desktops that support touch screens / touch screens. Just like on Microsoft Surface.

Latest Virtual DJ Software, Update Videoskins and Scratch DNA

Virtual Dj supports the video skins feature. So when you are playing a mix or djing, by activating this feature you can see automatic video skin that is adjusted to the tempo and bpm so that it looks synchronous. This feature can also help those of you who might work in a small club or resident dj who need easy practical visual. The scratch DNA feature in Virtual Dj is quite interesting, where with this feature you can set the type of scratching you want just from pressing one button. In the setup options you can set how to type the scratching that you will customize. This feature is the same as the one on Pioneer DJ DDJ-SB3 and Serato DJ.

The post Latest Virtual DJ Software, Update Videoskins and Scratch DNA appeared first on Deshack.net.

il 20 May 2019 16.23

19 April 2019

As I said back in September with regard to a responsible disclosure about Facebook, data access control isn’t easy. While it can sound quite simple (just give access to the authorized entities), it is very difficult, both on a theoretical side (who is an authorized entity? What does authorized mean? And how do we identify an entity?) and on a practical side.

This issue was firstly reported on HackerOne and was managed on the Gitlab issues’ tracker. Both links are now publicly accessible.

Summary of the issue

  • Rogue user is added to a private group with dozens of projects
  • The user’s role in some projects changes
  • Rogue is fired, and removed from the group: they still have access to projects where their role was changed

The second step could happen for a lot of different reasons:

  • rogue is added as master - knowing this vulnerability, they decrease their privileges to stay in some projects (this is the only malicious one)
  • rogue is added as developer, but they become responsible for some projects, and are promoted to master role
  • rogue is added as reporter, and then they are promoted for a project, and so on.

When an admin removes a user from a private group, there is no indication that the user still has access to private projects, if their role was changed.

Impact

User can still see all resources of a project of a secret group after they have been removed from the parent’s group.

Timeline

  • 29 January 2018: First disclosure to Gitlab
  • 9 February 2018: Gitlab confirmed the issue and triaged it, assigning a medium priority
  • 25 February 2018: I ask for a timeline
  • 27 February 2018: They inform me they will update me with a timeline
  • 16 March 2018: Almost two months are passed, I ask again for a timeline or suggest to go public since administrators of groups can easily check and avoid this vulnerability
  • 17 March 2018: They inform me they will update me with a timeline, and ask to do not go public
  • Somewhere around December 2018: the team think the issue has been fixed, and close the internal issue - without communicating with me
  • 17 January 2019: I ask for an update - they will never reply to this message
  • 25 January 2019: the security team sees this is still an issue
  • 31 January 2019: the fix is deployed in production and publicly disclosed, without informing me
  • 5 March 2019: I ask again for another update
  • 12 March 2019: Gitlab says the issue has been fixed and awards me a bounty

Bounty

Gitlab awarded me a $2000 bounty award for the disclosure.

If you follow my blog, you know I deeply love Gitlab: I contribute to it, I write blog posts, and I advocate for it any time I can. Still, I think this experience was awful, to say the least. There was a total lack of communication by their side, they thought they fixed the issue the first time, but actually, it wasn’t fixed. If they had communicated with me, I would have double checked their work. After that, they deployed the fix and went public, without telling me. I was not interested in the bounty (for which I am grateful), I reported the issue because I care about Gitlab. Nonetheless, my love for Gitlab is still the same! I just hope they will improve this part of communication / contributing to Gitlab: in the last couple of years the community around the project grew a lot, and they are doing amazing with it, maybe the Community team should step in and help also the security community?

For any comment, feedback, critic, write me on Twitter (@rpadovani93) or drop an email at riccardo@rpadovani.com.

Regards,
R.

il 19 April 2019 18.00

In occasione della visita in Italia, ci sono state parecchie critiche negative su Greta Thumberg, la ragazzina svedese che ha lasciato la scuola per una sua personale battaglia a favore dell'ambiente, e sulla sua azione per contrastare il cambiamento climatico. Ci sono stati anche attacchi alla sua persona, tanto infondati quanto ignobili, specie se si considera la sua giovane età.

La cosa che sfugge a chi è abituato a leggere solo i titoli dei giornali, e in base a questi farsi un'opinione, è che le aziende petrolifere spendono milioni di dollari per spargere fake news, finanziare politici e rifarsi un'immagine.

Cioè: mentre io sto lì a separare la finestrella di plastica dal resto della busta di carta prima di buttare entrambe nella rispettiva raccolta differenzia "le grandi compagnie petrolifere, benché ufficialmente sostenitrici della lotta ai cambiamenti climatici, operano in realtà nell’ombra al fine di conservare i loro business". Senza contare "le grandi banche internazionali hanno versato 1.900 miliardi di dollari al comparto delle fonti fossili (gas e carbone inclusi)".

Se dopo tutto questo restate indifferenti, se non ve ne frega assolutamente niente che il pianeta Terra sia sempre più invivibile, se pensate che i nostri figli e nipoti che si troveranno a gestirlo in qualche maniera si arrangeranno, dovreste pensare a cosa tenere di più caro (i soldi!) e valutare la possibilità che continuare a finanziare - 100 miliardi di dollari all'anno, di cui 17 miliardi dal Governo Italiano - le fonti di energia fossili è una pessima idea per il proprio portafoglio.

La foto di Greta è tratta da Wikipedia.
il 19 April 2019 14.31

12 April 2019

Bloccato da Apple. Grazie!

Dario Cavedon (iced)


Tediato oltre misura dall'invasiva pubblicità su Twitter del noto marchio di diavolerie elettroniche, che intende rifarsi la verginità sulla privacy a forza di video emotivamente pucciosi, ho risposto a tono a un suo tweet. Sono stato subito bloccato.

Morale della favola: mi sarà impossibile vedere le prossime pubblicità ipocrite di Apple. Grazie Apple!
il 12 April 2019 13.27

12 March 2019

The GPU-Z software that we usually use to see more detailed specifications about the graphics card on a PC or laptop now has the latest update that is quite surprising. Manufacturers add features that can detect fake graphics cards, especially from the NVIDIA GPU that “looks” the same, but in reality is different. This could be a solution for those who are not sure about the authenticity of their graphics card, because it was once a form of crime for fraudsters who redesigned fake graphics cards into features that were almost similar to what they were imitating.

In the past, graphic card fraud often occurred when mining cryptocurrency exploded, where almost all graphics card stock continued to thin out, even the price offered was very high. Here, the criminals take advantage of the situation, and somehow, they manipulate the old graphics card to be detected as the choice they imitate. In fact, to tempt further potential victims, these criminals put a price that is much cheaper compared to the original series.

For example, as revealed by the WCCFTech website, they found a $ 45 Nvidia GeForce GTX 960 graphics card, even though there is a much higher price for the former. Well, that’s where the important part of the latest update from GPU-Z software. TPU has finally updated the latest version of GPU-Z to detect this fake GPU, and may be able to help people who have been deceived in an attempt to clarify the situation that they have been tricked.

In the detailed specifications there will be a clear note that this is obviously fake. In addition, we can tell the sellers to include the details of the VGA specifications through the latest GPU-Z, although sometimes the effort can be done for a long time by the seller. Apart from all that, this can be very good news, to at least add to our insight into the affairs of the graphics card, although this will not rule out the possibility that they will be criminalized again in the same way. What’s more, the latest software update also has additional features.

Next, we will discuss about F.Lux. We all probably know that sometimes when the work isn’t done, then we can do it late at night. However, the thing to watch out for when we work at night is the presence of blue light that can suppress melatonin production, preventing our body from winding properly before going to bed and making it more difficult to sleep. For this reason, the presence of software such as F.Lux can be very useful for this. This is especially ideal for those users who often work at night or just like to read on the screen before going to bed, where F.Lux can be a custom modifier to be something fun (or at least in my opinion). When there is a lot of software that has helped overcome this problem, it also helps with eye strain and sleep patterns. F.lux’s presence was perhaps the most important of the group, because this application even brought the topic to the table among the technicians who slowly also began adopting it many years ago.

The post Latest GPU-Z Software Update Now Can Detect Fake Graphic Cards appeared first on Deshack.net.

il 12 March 2019 04.41

05 March 2019

Talking about brands of PCs, of course people will think that Apple will be the one of the best brands of PC. All PCs and laptops made by Apple is great in quality and performance. The computers are developed well to provide high level of efficiency and effectiveness in processing all tasks, even the hard tasks such as for designing and gaming. In this case, Mac OS becomes the technology that cannot be separated from this high performance. There are also some kinds of software that can boost the performance of the Mac-based PCs. The software is to help the functions, but there are also some software and applications for maintenance and increasing the performance.

In this case, of course computers will have junk files or caches that cannot be fully removed automatically. Even the best laptop will have the junk files and caches. Unluckily, these cannot be removed or erased easily and they cannot also be kept in the storage. Storage limited space, and it will be full when those unused files and trashes are not removed. There are actually many applications that can be cleaners of those trashes and junk files. However, it is better not to make random choices, since it can affect the PC performance. That is why it is better to choose application that can clean well without bringing burdens for the PC. In this case, CleanMyMac 3 is the recommended app for file and storage managements. So far, this application can be called as the best cleaner and storage manager for Mac-based PC. This app can be best app to clean all junk and old files. This application can scan thoroughly and even the hidden files can be found and they can be cleaned well and perfectly. As what Mac always provides for the users, this can work fast and it also has simple interface, so it will not be too difficult to operate the software.

One of the good point of this app is about its algorithm. The app has improved algorithm to scan all data based on the needs of the users. Users can set various setting and filters for scanning the files. This will be so useful to help users in finding all junk files. Hidden files can also be found easily. custom searches can be used and users can choose what files to erase. Of course, in working and scanning the files, the app can work smoothly without any problems.

The post Recommended Cleaner and Storage Manager for Mac-based PCs appeared first on Deshack.net.

il 05 March 2019 07.15

01 March 2019

Categoria: 

Il wiki di Ubuntu-it è stato aggiornato per ottimizzare la lettura dei testi da smartphone :)
Le modifiche sono già attive da un paio di settimane, ma è stato necessario fare alcuni aggiustamenti per renderle davvero efficaci. Potrebbe essere necessario effettuare un refresh o ripulire la cache del browser per visualizzare la nuova grafica; a parte questo potrete leggere la documentazione, la newsletter e tutte le altre pagine del wiki da smartphone senza ulteriori problemi.

 

Al momento la modifica entra in funzione solo quando la larghezza della finestra è a misura di smartphone, nella cosiddetta modalità "portrait". In tal caso apparirà il nuovo header semplificato con il classico pulsante per il menù a scomparsa. Si noterà che in questa modalità non sono presenti i link di login/modifica/ecc.
Ruotando lo smartphone (modalità "landscape"), si tornerà a visualizzare il sito come su desktop.

Questa impostazione è stata scelta perché il wiki fu a suo tempo impostato con grafiche a larghezza fissa e tabelle anche complesse che si adattano prevalentemente a una visualizzazione da desktop. È possibile quindi incappare in pagine con contenuti che mal si adattino alla larghezza dei piccoli schermi, pertanto ruotando il dispositivo si ha comunque la possibilità di visualizzare la grafica originaria.

Ad eccezione di alcune pagine che dovranno essere manualmente ritoccate e inevitabili piccoli ritocchi alle impostazioni del wiki, i risultati sono andati oltre alle aspettative. Quindi non è escluso che più in là il responsive design possa essere esteso fino alla visualizzazione su desktop.

 

Aspetti tecnici

Il wiki utilizza la piattaforma MoinMoin. Il suo aspetto grafico è dovuto all'introduzione del tema Light nell'ormai lontano 2011.
Per chi fosse interessato le modifiche hanno riguardato giusto tre file:

  • light.py: al suo interno, insieme al vecchio header è stato inserito il codice html e javascript per disegnare il nuovo header in stile mobile.

  • common.css - screen.css: sono questi i due principali file responsabili per l'aspetto stilistico del wiki. Al loro interno sono state inserite media queries per adattare gli elementi delle pagine e per rendere alternativamente visibile il nuovo o il vecchio header a seconda della larghezza dello schermo.

In definitiva MoinMoin ci ha piacevolmente sorpreso mostrando un buon grado di adattabilità :)

Buona consultazione a tutti!

 

A cura del Gruppo Doc
Vuoi contribuire al Wiki? Comincia subito!

il 01 March 2019 10.21

19 February 2019

Introduction: Node + express + body-parser + Shopify?

Are you using Node/express/body-parser and Shopify, and (you would like to use) its webhooks?

If the answer is YES to the questions above, I am going to suggest here a way to solve a common problem.

NOTE: This and much more is covered in the Coding Shopify webhooks and API usage: a step-by-step guide class on Skillshare!

The problem

Body-parser does an amazing work for us: it parses incoming request bodies, and we can then easily use the req.body property according to the result of this operation.

But, there are some cases in which we need to access the raw body in order to perform some specific operations.

Verifying Shopify webhooks is one of these cases.

Shopify: verifying webhooks

Shopify states that:

Webhooks created through the API by a Shopify App are verified by calculating a digital signature. Each webhook request includes a base64-encoded X-Shopify-Hmac-SHA256 header, which is generated using the app’s shared secret along with the data sent in the request.

We will not go into all the details of the process: for example, Shopify uses two different secrets to generate the digital signature: one for the webhooks created in the Admin –> Notifications interface, and one for the ones created through APIs. Anyway, only the key is different but the process is the same: so, I will assume that we have created our webhooks all in the same way, using JSON as object format.

A function to verify a webhook

We will now code a simple function that we will use to verify the webhook.

The first function’s param is the HMAC from the request headers, the second one is the raw body of the request.

function verify_webhook(hmac, rawBody) {
    // Retrieving the key
    const key = process.env.SHOPIFY_WEBHOOK_VERIFICATION_KEY;
    /* Compare the computed HMAC digest based on the shared secret 
     * and the request contents
    */
    const hash = crypto
          .createHmac('sha256', key)
          .update(rawBody, 'utf8', 'hex')
          .digest('base64');
    return(hmac === hash);
}

We use the HMAC retrieved from the request headers (X-Shopify-Hmac-Sha256), we retrieve the key stored in the .env file and loaded with the dotenv module, we compute the HMAC digest according to the algorithm specified in Shopify documentation, and we compare them.

We use the crypto module in order use some specific functions that we need to compute our HMAC digest.

Crypto is a module that:

provides cryptographic functionality that includes a set of wrappers for OpenSSL’s hash, HMAC, cipher, decipher, sign, and verify functions.

NOTE: it’s now a built-in Node module.

Retrieving the raw body

You have probably a line like this one, with or without customization, in your code:

// Express app
const app = express();
app.use(bodyParser.json());

 

So your req.body property contains a parsed object representing the request body.

We need to find a way to “look inside the middleware” and to add somehow the information regarding the request status, using our just-defined function: is it verified or not?

Now, we know that the json() function of body-parser accepts an optional options object, and we are very interesting to one of the possible options: verify.

The verify option, if supplied, is called as verify(req, res, buf, encoding), where buf is a Buffer of the raw request body and encoding is the encoding of the request. The parsing can be aborted by throwing an error.

That’s it, we are going to use it like this.

Let’s change the json() call in this way:

// Express app
const app = express();
app.use(bodyParser.json({verify: verify_webhook_request}));

And we create the function verify_webhook_request() according to the signature documented before:

function verify_webhook_request(req, res, buf, encoding) {
  if (buf && buf.length) {
    const rawBody = buf.toString(encoding || 'utf8');
    const hmac = req.get('X-Shopify-Hmac-Sha256');
    req.custom_shopify_verified = verify_webhook(hmac, rawBody);
  } else {
    req.custom_shopify_verified = false;
  }
}

Basically, we check if the buffer is empty: in such case, we consider the message not verified.

Otherwise, we retrieve the raw body using the toString() method of the buf object using the passed encoding (default to UTF-8).

We retrieve the X-Shopify-Hmac-Sha256.

After we have computed the verify_webhook() function, we store its value in a custom property of the req object.

Now, in our webhook code we can check req.custom_shopify_verified in order to be sure that the request is verified. If this is the case, we can go on with our code using the req.body object as usual!

Another idea could be to stop the parsing process: we could do this throwing an error during the verify_webhook_request function.

 

Conclusion

Please leave your comment if you want to share other ways to accomplish the same task, or generically your opinion.

 

NOTE: Remember that this and much more is covered in the Coding Shopify webhooks and API usage: a step-by-step guide class on Skillshare!

The post Node, body-parser and Shopify webhooks verification appeared first on L.S..

il 19 February 2019 16.49

10 February 2019

I love Gitlab. I have written about it, I contribute (sporadically) with some code and I am a big fan of their CI/CD system (ask my colleagues!). Still, they need to improve on their mobile side.

I travel often, and be able to work on issues and pipelines on the go is something essential for me. Unfortunately, Gitlab’s UX on small screens is far from ideal (while it has improved over the years).

Enter Glasnost

My good friend Giovanni has developed a new opensource mobile client for Gitlab, with a lot of cool features: Glasnost!

glasnost logo

In his words:

Glasnost is a free, currently maintained, platform independent and opensource mobile application that is aiming to visualize and edit the most important entities handled by Gitlab.

Among the others features, I’d like to highlight support for multiple Gitlab hosts (so you can work both on your company’s Gitlab and on Gitlab.com at the same time), two different themes (a light one and a dark one), a lite version for when your data connection is stuck on edge, and support for fingerprint authentication.

The application is still in an early phase of development, but it already has enough features to be used daily. I am sure Giovanni would love some feedback and suggestions, so please go on the Glasnost’s issues tracker or leave a feedback on the PlayStore.

If you feel a bit more adventurous, you can contribute to the application itself: it is written in React+Redux with Expo: the code is hosted on Gitlab (of course).

Enjoy yet another client for Gitlab, and let Giovanni knows what you think!

playstore logo

For any comment, feedback, critic, write me on Twitter (@rpadovani93) or drop an email at riccardo@rpadovani.com.

Regards,
R.

il 10 February 2019 18.45

07 February 2019

Categoria: 

Ubuntu 14.04 LTS End of Life

 

Ubuntu 14.04 LTS Trusty Tahr raggiungerà la fine del suo ciclo di vita il 30 aprile 2019 e, da allora, sarà disponibile Ubuntu 14.04 LTS - ESM, ovvero Extended Security Maintenance. Si tratta di una funzionalità disponibile con Ubuntu Advantage, il pacchetto di supporto commerciale di Canonical, oppure che può anche essere acquistata su base stand-alone. L'Extended Security Maintenance è stato creato per aiutare a semplificare il processo di migrazione verso le nuove piattaforme aggiornate, mantenendo gli standard di conformità e sicurezza.

 

L'introduzione di Extended Security Maintenance per Ubuntu 12.04 LTS è stato un passo importante per Ubuntu, portando patch di sicurezza critiche e importanti oltre la data di fine vita di Ubuntu 12.04. ESM viene utilizzato dalle organizzazioni per risolvere problemi di sicurezza e conformità mentre gestisce il processo di aggiornamento a una versione più recente di Ubuntu in grado di garantire pieno supporto. La disponibilità di ESM per Ubuntu 14.04 significa che l'arrivo dello status di End of Life di Ubuntu 14.04 LTS Trusty Tahr nell'aprile 2019 non dovrebbe influire negativamente sulla sicurezza e sulle conformità delle organizzazioni che lo utilizzano ancora come sistema operativo in essere. In totale, ESM ha fornito oltre 120 aggiornamenti, comprese correzioni per oltre 60 vulnerabilità con priorità alta e critica, per gli utenti di Ubuntu 12.04.

 

Ancora una volta, lo abbiamo segnalato anche in passato sulla newsletter (Ubuntu in prima linea per la sicurezza), risulta estremamente chiaro come Canonical metta la sicurezza al centro di Ubuntu, oltre che nelle pratiche e nella architettura dei prodotti a esso relativi sia lato business che lato consumer.

 

Fonte: blog.ubuntu.com

il 07 February 2019 09.57

05 February 2019

Categoria: 

Ad Aprile cesserà il supporto per la gloriosa Ubuntu 14.04.
Questo vuol dire che nella sezione contenente i resoconti delle installazioni di Ubuntu sui computer portatili, molti dei link alle guide passeranno nella famigerata colonna Guide da aggiornare.

Fortunatamente i computer che funzionano con Ubuntu 14.04 supportano anche le versioni successive, come Ubuntu 16.04 e 18.04 (nella maggior parte dei casi).
Sul tuo portatile hai continuato a installare versioni successive alla 14.04? Aggiornare la relativa pagina sarà davvero semplice ;)

 

Come aggiornare la pagina?

Quando si accede all'editor per modificare una pagina, si noterà nella parte in alto la macro Informazioni che si presenta in questo modo:
<<Informazioni(forum="..."; rilasci="13.10 14.04";)>>

Al suo interno è presente la voce rilasci che contiene tra virgolette le versioni con le quali la guida è stata testata. Bene, non occorre far altro che aggiungere il numero di versione di uno dei rilasci di Ubuntu attualmente supportati.

Pertanto, supponendo di aver testato con successo la guida con... ad esempio la 18.04, basta aggiungere il numero all'interno della macro che diviene:
<<Informazioni(forum="..."; rilasci="13.10 14.04 18.04";)>>

Niente di che, vero? ;)

 

In generale è buona cosa...

Per ovvi motivi abbiamo messo in primo piano le pagine sui portatili testate con la 14.04. Il discorso si estende comunque anche alle pagine già presenti nella colonna delle guide da aggiornare e, ancora più in generale, a qualsiasi tipo di guida presente nel wiki.
Come vedi se si incappa in una pagina testata con una versione obsoleta di Ubuntu, per confermarne la validità con una versione supportata è una questione di attimi.

 

A cura del Gruppo Doc
Vuoi contribuire al Wiki? Comincia subito!

il 05 February 2019 17.54

30 January 2019

Antivirus is needed for all kinds of computers. All works using PCs and computers will need antivirus. It is because viruses are getting stronger and there are many variations of viruses. There are some viruses who will lonely make the PCs work slowly and make the performance less effective. There are also some viruses that will make some files are corrupted. The worst attacks are ransomware and spyware. There are also crypto-jacking software. These are some of the worst attacks since they will make things collapsed. These viruses are made to gain some money from the infected files and PCs. Of course, for the case of business, these are some dangerous threats. That is why there are some recommendation of antivirus.

The first one is Avast Business Antivirus Pro. As its name, this is antivirus dedicated for business PCs. The antivirus is made and designed to provide real-time protection for the PCs, so business still can work and data flows still can run well. The good news is that this software is able to work well and this will not make the PCs run slower. Compared to the other antivirus, this has better performance without burdening the processing units, and this has been awarded for this sector. Then, this antivirus is also awarded for its great performance in tackling down most of the malwares, including the veracious ones. This antivirus is not only an antivirus, but there are also some kinds of protection, such as Web Shield, File Shield, CyberCapture, Email Shield, and other protection.

The other recommended antivirus is AVG Antivirus Business Edition. As the previous antivirus, this is also designed specifically for business purposes, so its feature is perfect for business PC. This antivirus has great experiences in fighting against viruses and malwares. This also provides integration for some popular browsers, including Google Chrome, Mozilla Firefox, and Microsoft Edge. There are also some kinds of protection features to protect data and other useful information.

The post Some Recommended Antiviruses for Business Purposes appeared first on Deshack.net.

il 30 January 2019 07.08

25 January 2019

Categoria: 

 

Con l'inizio del 2019 arriva un'importante novità riguardante la Documentazione Wiki.

Il Gruppo Doc ha deciso di lasciare maggiore iniziativa agli utenti del wiki in materia di creazione di nuove guide e aggiornamento delle pagine esistenti.
Cosa significa? Facciamo un passo indietro...

 

Da sempre il Gruppo Doc si è preoccupato di assistere e supervisionare il lavoro svolto dagli utenti. Cioè essere presenti sul forum per valutare se una guida proposta fosse necessaria o attinente agli scopi della documentazione... oppure, una volta che un utente ha svolto il lavoro, tempestivamente revisionare e adattare i contenuti agli Standard, inserire il link alla guida nel portale di appartenenza, ecc..

Tutto questo per garantire una crescita razionale e ben ordinata della documentazione.
Il lato debole di questo metodo di lavoro è che non sempre può essere garantita una presenza continuativa da parte dello staff, sebbene negli ultimi sette anni ci siamo in massima parte riusciti :)

 

La nostra attività di supporto e supervisione andrà avanti, è stato però deciso di aggiornare l'iter in modo tale che anche in nostra assenza un utente possa agire di sua iniziativa. Questo per evitare appunto che una guida rimanga a lungo bloccata prima di essere pubblicata.
In sostanza si è cercato di mantenere le buone pratiche attuate in questi anni e di aggiungere un pizzico di responsabilità in più da parte degli utenti.

Queste le pagine che riportano le principali modifiche al metodo di lavoro:

  • GruppoDocumentazione/Partecipa: mostra gli step da seguire, con alcune novità come la possibilità di aggiornamento degli indici dei portali tematici e l'aggiornamento della tabella delle guide svolte.

  • GuidaWiki/Standard: schematizzata la parte del formato del wiki-testo, sono state introdotte le frasi standard e alcuni accorgimenti stilistici che chiediamo agli utenti di seguire quanto più possibile.

  • GruppoDocumentazione/Partecipa/FAQ: logico adeguamento a quanto riportato sopra.

 

Un saluto e che il 2019 porti buone cose alla Documentazione Wiki :)

 

A cura del Gruppo Doc
Vuoi contribuire al Wiki? Comincia subito!

il 25 January 2019 16.25

19 January 2019

Categoria: 
Ecco le novità introdotte nella documentazione della comunità italiana di Ubuntu.
 
Portale Ambiente Grafico
  • PCmanFm Menu Stampa: nuova guida per abilitare la funzionalità di stampa dal menù contestuale del file manager PCmanFM.
 
Portale Amministrazione Sistema
  • Aggiornare Kernel: aggiornamento procedura di installazione del kernel e inserimento di nuove pagine di riferimento.
  • Apper: nuova guida per il gestore di pacchetti opzionale per Kubuntu.
 
Portale Hardware
  • AsusX53S-K53SC: resoconto di installazione di Ubuntu su questo portatile.
  • Acer Aspire 5612wlmi: resoconto di installazione di Ubuntu su questo portatile.
  • Acer Aspire ES1-524: resoconto di installazione di Ubuntu su questo portatile.
  • Lenovo Yoga 730_13IWL: resoconto di installazione di Ubuntu su questo portatile.
  • Epson Multi: aggiornamento della guida per installare stampanti mono o multifunzione Epson su Ubuntu.
  • Scanner Epson: aggiornamento della guida per installare scanner Epson su Ubuntu.
 
Portale Installazione
  • Installare Ubuntu: revisione dell'intera guida con l'inserimento di nuovi contenuti.
 
Portale Internet e Rete 
  • Accelerazione Hardware: nuova guida che illustra la procedura per abilitare l'accelerazione hardware su Chromium e gli altri browser da esso derivati, quali Google Chrome, Opera e Vivaldi.
  • Opera: aggiornamento della guida per le nuove versioni del browser.
  • Thunderbird: aggiornamento della guida per il famoso client di posta elettronica libero, che nelle ultime versioni  utilizza un nuovo motore di rendering.
 
Portale Programmazione
  • CMake Gui: aggiornamento guida su questo strumento, utile per controllare il processo di compilazione di software.
  • Pip: nuova guida all'installazione e al primo utilizzo su Ubuntu di pip, gestore di pacchetti per Python.
 
Portale Ufficio
  • Stardict: revisione completa della guida.
 
Per maggiori informazioni, consulta la pagina Lavoro Svolto/2018.
 
 
il 19 January 2019 21.30

10 January 2019

In using internet, it is very common to download files. There can be many kinds of files to download and there should be application to manage the downloading process. Actually, each browser can work well in downloading files. There has been default feature from each browser to help users in downloading the file. However, sometimes the feature is not fully helpful. The feature may be able to work as download manager, but they are not good in dealing with speed. For example, it is able to download directly by using Chrome as the browser, but its speed may be slower compared to download by using the third-party download manager. In this case, there are many applications of download manager and IDM or Internet Download Manager is one of the most popular download manager used by the users.

The good point about this download manager is about its auto-popup shortcut. Whenever there are potential files to download, a download icon will appear. This especially works when users open websites with videos or audios. There will be icon appearing and when users want to download the files, they can click the files. Then, usually users can also get some alternatives of quality, such as video resolution and quality. Of course, this will determine the size, but this download manager will provide better speed management. This will be so helpful. Even, this application can be integrated to all kinds of browser, so when this application has got access granted by users, all downloading process will be handled and managed by Internet Download Manager.

Then, this is great since the download process are divided into some partition. This downloading process and management is quite unique since the whole files will be automatically divided and this will make the download process run faster. Users can monitor the download process by seeing in the downloading windows. It is very easy to know the numbers of partition and the progress of download. Duration and size of the files downloaded by the app can also be seen. Even, downloading speed can also be seen. Then, it is very possible to pause the download process and users can resume the download later. This can be useful when actually the time is not enough and it must be continued later. This download manager can handle it. There are also periodical updates to improve the performance of the application. When there are also updates for the browser, developer of this app will also provide updates to make sure that Internet Download Manager will always be compatible and can work well.

The post Internet Download Manager as the Recommended App to Download Files appeared first on Deshack.net.

il 10 January 2019 06.11

08 December 2018

Scanner Epson V10: aggiornamento

Salvatore Palma (totò)

Questa guida è stata testata su:
Bionic Beaver

Tempo fa avevo scritto questo articolo, in cui indicavo i passi per l’installazione dello scanner in ogetto .

Recentemente ho fatto l’aggiornamento da Xenial Xerus a Bionic Beaver, e nel seguire le indicazioni presenti nell’articolo indicato prima, lo scanner ancora non veniva rilevato, cosi facendo la ricerca nel wiki italiano (qui la guida), ho scoperto che vanno aggiunti dei passaggi aggiuntivi, quindi riepilogando:

  • scaricare i driver a questo indirizzo;
  • installare i tre pacchetti, iscan-data_[versione corrente]_all.deb, iscan_[versione corrente]~usb0.1.ltdl7_i386.deb e iscan-plugin-gt-s600_[versione corrente]_i386.deb, oppure lanciare lo script install.sh presente all’interno della cartella (prima va reso eseguibile)
  • installare i pacchetti libltdl3, libsane-extras e sane;
  • editare il file /etc/sane.d/dll.conf e commentare la riga #epson;
  • editare il file /etc/udev/rules.d/45-libsane.rules e aggiungere le seguenti righe:

# Epson Perfection V10
SYSFS{idVendor}=="04b8", SYSFS{idProduct}=="012d", MODE="664", GROUP="scanner"

  • editare il file /etc/udev/rules.d/79-udev-epson.rules e aggiungere le seguenti righe:

# chmod device EPSON group
ATTRS{manufacturer}=="EPSON", DRIVERS=="usb", SUBSYSTEMS=="usb", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="*", MODE="0777"

  • digitare il seguente comando, in base all’architettura del proprio pc:

Per architettura 32 bit sudo ln -sfr /usr/lib/sane/libsane-epkowa* /usr/lib/i386-linux-gnu/sane
Per architettura 64 bit sudo ln -sfr /usr/lib/sane/libsane-epkowa* /usr/lib/x86_64-linux-gnu/sane

  • infine digitare il seguente comando per riavviare udev:

sudo udevadm trigger

il 08 December 2018 12.30

28 November 2018

Introduction: Firebase CLI

According to the github page of the firebase-tools project, the firebase cli can be used to:

  • Deploy code and assets to your Firebase projects
  • Run a local web server for your Firebase Hosting site
  • Interact with data in your Firebase database
  • Import/Export users into/from Firebase Auth

The web console is fine for a lot of stuff.

But let’s see what we can do with the CLI, and let’s check what we CANNOT do without it.

Installation

Ok, easy.

Assuming you have npm installed, run the following command:

npm install -g firebase-tools

You will now have the command firebase, globally.

Now, run:

firebase login

to authenticate to your Firebase account (this will open your browser).

Firebase tasks

Seleting projects

List your firebase projects:

firebase list

You can then select one of them with

firebase use <project>

Cloud Functions Log

A common thing you would like to do is looking at the logs.

This is possible with:

firebase functions:log

At this point I think there is no way to “listen” for changes in the log, that would be a very useful feature.

The

gcloud app logs tail

sadly does not help here, even if the current selected project is the firebase one.

If you have some tips about it, I will be more than happy to edit this article.

Configuration

The functions configuration is handled through some commands:

firebase functions:get|set|unset|clone

to retrieve|store|remove|clone project configuration (respectively).

Emulate locally

Running

firebase functions:shell

will let you choose which of your functions to emulate locally.

You can then choose the method (get/head/post/put/patch/del/delete/cookie/jar/default) and the test data to start the emulation.

Delete functions

You can then delete one or more cloud functions with:

firestore functions:delete <function_name>

 

Deploy and serve locally

To serve your project with cloud functions locally, you can run:

firebase serve

When you’re ready to deploy your firebase project, you can run:

firebase deploy

 

Accounts management

With the firebase cli you can both import and export Firebase accounts with the:

firebase auth:import|export <file>

Surprisingly enough, import import accounts from a file, and and export will export accounts to a file.

 

Database

I will skip this part. It’s very well documented everywhere in the firebase ecosystem.

 

Firestore

Here we are.

What we can do with Firestore with our CLI? Almost nothing, I am afraid.

Right now you have only two things we can accomplish.

But we can use gcloud and gsutil to perform other operations, lick exporting / importing data.

Be sure to be logged in with

gcloud auth login

If you are already logged in with different accounts, you can list the accounts with

gcloud auth list

and select one (if the one you need is not the active one) with

gcloud config set account myaccount@gmail.com

At this point, let’s select our project.

gcloud projects list

to list all the projects and

gcloud config set project project_name

to select our project.

Exporting data

First of all, we need a Storage Bucket.

gsutil ls

to see the list of possible buckets to use.

Let’s say that we want to export our data to gs://myproject-abcd.appspot.com/ :

gcloud firestore export gs://myproject-abcd.appspot.com/

You can even export only some collections:

gcloud firestore export gs://myproject-abcd.appspot.com/ --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2]

Importing data

You can imagine it, right?

gcloud firestore import gs://myproject-abcd.appspot.com/2019-12-23T23:54:39_76544/

The operation takes some time (proportional to the data size that has to be imported). You can safely close your terminal, the operation will continue.

Checking operations status

Import and export can take time (import takes time even with a very small database).

To list the operations:



gcloud firestore operations list

And you will see something like:

done: true
metadata:
'@type': type.googleapis.com/google.firestore.admin.v1.ImportDocumentsMetadata
endTime: '2019-12-23T15:48:03.747509Z'
inputUriPrefix: gs://myproject-abcd.appspot.com/2019-12-23T23:54:39_76544
operationState: SUCCESSFUL
progressBytes:
completedWork: '2601'
estimatedWork: '2601'
progressDocuments:
completedWork: '8'
estimatedWork: '8'
startTime: '2019-12-23T15:47:25.089261Z'
name: projects/myproject-abcd/databases/(default)/operations/AiAydsadsadsadsadVhZmVkBxJsYXJ0bmVjc3Utc2Jvai1uaW1kYRQKLRI
response:
'@type': type.googleapis.com/google.protobuf.Empty

Indexes (read)

You can look at your indexes:

firebase firestore:indexes

This will list the indexes in a JSON-form of array of objects described as the following one:

    {
    "indexes": [
      {
      "collectionId": "<collection_id>",
      "fields": [
        {
          "fieldPath": "<field_name_one>",
          "mode": "ASCENDING|DESCENDING"
        },
        {
          "fieldPath": "<field_name_two>",
          "mode": "ASCENDING|DESCENDING"
        }
      ]},
      {..}
    ]}

We cannot perform other operations over indexes.

Collections and documents: delete recursively

It’s easy from the web console to delete a document, and it’s easy to do it programmatically.

It’s easy on the CLI, too.

But the nightmare of the web console (and of the programmatic approach, too) is that it does not exist a simple and fast way to recursively delete a collection.

This is luckily possible with the CLI.

You can recursively delete a collection by using:

firebase firestore:delete --recursive <collection>

Bonus: delete all collections

Now, assuming you are testing something and your firestore is full of garbage, you might want to start from scratch deleting every collection.

This is possible running:

firebase firestore:delete --all-collections

If you are looking at your database in the firebase console, please remember to refresh if the UI is not updated (that means that you still see the root collections).

Conclusion

This concludes the article for now.

I hope that the Firestore-side will be developed with other features and commands, because right now is very limited.

One of the most feature I can think of, generally speaking, would be the chance to “tail” logs in the shell.

I would be more than happy if someone can integrate with useful tools and additional stuff.

The post Exploring Firebase CLI with some Firestore tips appeared first on L.S..

il 28 November 2018 17.19

29 October 2018

Handling execution time for PHP (FPM)

Lorenzo Sfarra (twilight)

The problem: setting max_execution_time / using set_time_limit() I don’t get the wanted results

If you are here, you are probably looking for an answer to the question:

why set_time_limit() is not working properly and the script is killed before?

or

why ini_set(‘max_execution_time’, X), is not working properly and the script is killed before?

The answer is not exactly one, because there are many variables to consider.

The concepts: PHP itself vs FPM

Anyway, I will list basic concepts that will help to find the best path to your answer.

The first, brutal, note is: directives you specify in php-fpm.conf are mostly not changeable from ini_set().

Please also note that set_time_limit() is a almost nothing more than a convenience wrapper on ini_set() in the background, so the same concept applies.

For simplicity, in this post I will talk about set_time_limit(), but the same applies to ini_set(whatever_related_to_time).

According to what we already said, it’s important to understand that set_time_limit() can only “overwrite” the max_execution_time directive, because

they only affect the execution time of the script itself

(there is a specific note in the official documentation).

On the other hand, directives like request_terminate_timeout are related to FPM, so we are talking about the process management level here:

should be used when the ‘max_execution_time’ ini option does not stop script execution for some reason.

Web server dependent directives

What we have seen so far aren’t the only variables in the game.

You should check your web server configuration, too, to be sure nothing is playing a role in your timeout problem.

A very common example is the fastcgi_read_timeout, defined as:

a timeout for reading a response from the FastCGI server. The timeout is set only between two successive read operations, not for the transmission of the whole response. If the FastCGI server does not transmit anything within this time, the connection is closed.

So…what to do?

The basic answer is: have perfectly clear what was defined by web server (ex.: fastcgi_read_timeout), what defined by FPM (ex.: request_terminate_timeout) and what was defined by PHP itself (ex.: max_execution_time).

For example, if request_terminate_timeout is set to 1 second, but max_execution_time is set to 2 seconds, the script will end after 1 second (so, whichever comes first, even if you have set max_execution_time with ini_set() in your script) .

A possible solution is simply using max_execution_time in place of request_terminate_timeout (but use it, too, to define a solid maximum upper-bound).

The max_execution_time description in the official documentation has an hint about this common problem, that is:

Your web server can have other timeout configurations that may also interrupt PHP execution. Apache has a Timeout directive and IIS has a CGI timeout function. Both default to 300 seconds. See your web server documentation for specific details.

Any hints to share?

The post Handling execution time for PHP (FPM) appeared first on L.S..

il 29 October 2018 14.27

26 October 2018

Categoria: 

Gruppo Documentazione

Ecco le novità introdotte nella documentazione della comunità italiana di Ubuntu.

 

Aggiornamenti per il rilascio di Ubuntu 18.10!

Questo mese ha visto l'arrivo della nuova versione Ubuntu 18.10. Si tratta di una versione "intermedia" con supporto di 9 mesi e sarà quindi supportata fino a Luglio 2019. Come di consueto il Gruppo Documentazione si è attivato per aggiornare una corposa lista di pagine fra cui quelle relative al download, all'installazione e all'aggiornamento del sistema, ai repository.. e molte altre ancora.
Per maggiori dettagli consulta la pagina GruppoDocumentazione/Cosmic.

 

Portale Ambiente Grafico

  • Dolphin Menu Stampa: ottenere voci relative alle funzionalità di stampa nel menù contestuale del file manager Dolphin in KDE5 attivabile tramite clic destro.

 

Portale Amministrazione Sistema

  • Apt: istruzioni sull'utilizzo di APT, il sistema di gestione dei pacchetti .deb, predefinito in Ubuntu.

 

Portale Hardware

 

Portale Installazione

  • Creazione LiveUsb: aggiornata la tabella dei programmi utili per la creazione di chiavette USB avviabili con Ubuntu.

 

Portale Internet e Rete

  • Firefox ESR: installazione e utilizzo del browser web Firefox ESR, versione ufficiale con supporto esteso di Firefox.

  • Irssi: istruzioni utili per l'installazione e l'utilizzo di Irssi, un client IRC che permette di comunicare in modalità testuale dalla riga di comando.

  • MlDonkey: installazione e utilizzo di questo programma per il peer to peer estremamente potente con funzione client e server.

  • Pidgin: installazione e configurazione di questo client di messaggistica istantanea multi-protocollo.

  • Telegram: installare la versione desktop di Telegram su Ubuntu.

 

Per maggioro informazioni, consulta la pagina Lavoro Svolto/2018.

 


A cura del Gruppo Doc
Vuoi contribuire al Wiki? Comincia subito!

il 26 October 2018 16.36

25 October 2018

jQuery selects combination and submit

Lorenzo Sfarra (twilight)

I had to help a friend solving a very common problem for, for example, booking websites.
The example is basically the selection of options based on two

<select>s

elements: number of adults and number of children for a possible booking.

So, what we are going to do is to create a very simple HTML with two selects and one button, with the chance to remove an already selected combination before submitting it.

The HTML:

<select id="adults">
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
</select>

<select id="children">
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
</select>

<button id="add">Add</button>

<div id="output">Here the combination of selected values</div>

<br/>

<button id="submit">Send via AJAX</button>

Now, we are going to create a Javascript to handle this:

function Selection() {
  this.SELECTOR_ADULTS = '#adults';
  this.SELECTOR_CHILDREN = '#children';
  
  this.OUTPUT_SELECTOR = '#output';
  
  this.SUBMIT_SELECTOR = '#submit';
  
  this.selected = {};
}

/** Create a label for the given item **/
Selection.prototype.labelForSelected = function(item) {
  let out = item.adults + " Adults ";
  const childrenNumber = parseInt(item.children);
  if (childrenNumber > 0) {
    out += item.children + ((childrenNumber === 1) ? " Child" : " Children"); 
  }
  return out;
}

/** Add the selected item to output **/
Selection.prototype.selectedToOutput = function() {
  const keys = Object.keys(this.selected);
  jQuery(this.OUTPUT_SELECTOR).html('');
  for (let i = 0; i < keys.length; i++) {
    let key = keys[i];
    const outerDiv = jQuery("<div>");
    const span = jQuery("<span>", {
      text: this.labelForSelected(this.selected[key])
    });
    const button = jQuery("<button>", { 
      'class': 'remove', 
      id: key,
      text: 'X'
    });
    jQuery(outerDiv).append(span);
    jQuery(outerDiv).append(button);
    jQuery(this.OUTPUT_SELECTOR).append(outerDiv);
  }
}

/** Remove an item from the selected options */
Selection.prototype.removeFromSelected = function(item) {
  let aux = {};
  const keys = Object.keys(this.selected);
  for (let i = 0; i < keys.length; i++) {
    if (keys[i] === item) {
      continue;
    }
    aux[keys[i]] = this.selected[keys[i]];
  }
  this.selected = aux;
  this.selectedToOutput(); 
}

/** Init events **/
Selection.prototype.initEvents = function() {
  const _this = this;
  jQuery(document).ready(function() {
    jQuery("#add").click(function() {
      const selOne = jQuery(_this.SELECTOR_ADULTS).val();
      const selTwo = jQuery(_this.SELECTOR_CHILDREN).val();
  
      const key = selOne + selTwo;
      const newItem = {
        adults: selOne,
        children: selTwo
      };
      _this.selected[key] = newItem;
      _this.selectedToOutput();
    });
    
    jQuery(_this.OUTPUT_SELECTOR).on( "click", ".remove", function(e) {
      const id = $(this).attr('id');
      _this.removeFromSelected(id);
    });
    
    jQuery(_this.SUBMIT_SELECTOR).click(function() {
      _this.submitByAJAX();
    });
  });
}

Selection.prototype.submitByAJAX = function() {
  const keys = Object.keys(this.selected);
  console.log("Submitting", keys);
}

var mySelection = new Selection();
mySelection.initEvents();

The initEvents function binds the function for the HTML elements to the respective methods.

Note that for the .remove class we cannot use a simple click() because the elements are added dynamically.

The selectedToOutput method creates with jQuery the simple HTML elements to be added to the output.

 

A working demo is present on my Codepen.

The post jQuery selects combination and submit appeared first on L.S..

il 25 October 2018 13.26

23 September 2018

Data access control isn’t easy. While it can sound quite simple (just give access to the authorized entities), it is very difficult, both on a theoretical side (who is an authorized entity? What does authorized mean? And how do we identify an entity?) and on a pratical side.

On the pratical side, how we will see, disclose of private data is often a unwanted side effect of an useful feature.

Facebook and Instagram

Facebook bought Instagram back in 2012. Since then, a lot of integrations have been implemented between them: among the others, when you suscribe to Instagram, it will suggest you who to follow based on your Facebook friends.

Your Instagram and Facebook accounts are then somehow linked: it happens both if you sign up to Instagram using your Facebook account (doh!), but also if you sign up to Instagram creating a new account but using the same email you use in your Facebook account (there are also other way Instagram links your new account with an existing Facebook account, but they are not of our interest here).

So if you want to create a secret Instagram account, create a new mail for it ;-)

Back in topic: Instagram used to enable all its feature to new users, before they have confirmed their email address. This was to do not “interrupt” usage of the website / app, they would have been time to confirm the email later in their usage.

Email address confirmation is useful to confirm you are signing up using your own email address, and not one of someone else.

Data leak

One of the features available before confirming the email address, was the suggestion of who to follow based on the Facebook friends of the account Instagram automatically linked.

This made super easy to retrieve the Facebook’s friend list of anyone who doesn’t have an Instagram account, and since there are more than 2 billions Facebook accounts but just 800 millions Instagram accounts, it means that at least 1 billion and half accounts were vulnerable.

The method was simple: knowing the email address of the target (and an email address is all but secret), the attacker had just to sign up to Instagram with that email, and then go to the suggestions of people to follow to see victim’s friends.

List of victim's friends

Conclusion

The combination of two useful features (suggestion of people to follow based on a linked Facebook account, being able to use the new Instagram account immediately) made this data leak possible.

It wasn’t important if the attacker was a Facebook’s friend with the victim, or the privacy settings of the victim’s account on Facebook. Heck, the attacker didn’t need a Facebook account at all!

Timeline

  • 20 August 2018: first disclosure to Facebook
  • 20 August 2018: request of other information from Facebook
  • 20 August 2018: more information provided to Facebook
  • 21 August 2018: Facebook closed the issue saying wasn’t a security issue
  • 21 August 2018: I submitted a new demo with more information
  • 23 August 2018: Facebook confirmed the issue
  • 30 August 2018: Facebook deployed a fix and asked for a test
  • 12 September 2018: Facebook awarded me a bounty

Bounty

Facebook awarded me a $3000 bounty award for the disclosure. This was the first time I was awarded for a security disclosure for Facebook, I am quite happy with the result and I applaude Facebook for making all the process really straightforward.

For any comment, feedback, critic, write me on Twitter (@rpadovani93) or drop an email at riccardo@rpadovani.com.

Regards, R.

il 23 September 2018 09.00

29 August 2018


Venerdì 31 agosto prossimo parteciperò a ESC 2018 che si tiene presso il Forte Bazzera, nelle vicinanze dell'Aeroporto di Venezia. 

ESC - End Summer Camp - si svolge dal 29 agosto al 2 settembre, ed è un evento particolarmente interessante, ricco di appuntamenti su temi che riguardano open source, hacking, open data e... beh, il programma è talmente vasto che è impossibile riassumerlo in poche righe, dategli un'occhiata anche voi!

Il sottoscritto sarà a ESC per parlare di Ubuntu Touch, che è l'attività che ultimamente mi sta prendendo più tempo, del mio poco tempo libero. Dopo che l'anno scorso Canonical ha abbandonato lo sviluppo di Ubuntu Touch, una comunità - sempre più numerosa - si è aggregata attorno al progetto UBports, inizialmente portato avanti dal solo benemerito Marius Gripsgard, che ha proseguito il lavoro da dove Canonical si era fermata. Proprio pochi giorni fa, UBports ha ufficialmente rilasciato OTA4, il primo aggiornamento basato su Ubuntu 16.04, ma soprattutto una serie lunghissima di bug fix e miglioramenti, dopo un lungo lavoro di assestamento e pulizia.

Still Alive!


Adesso è tempo che tutto il mondo sappia che Ubuntu Touch è vivo, e probabilmente la migliore cosa che sta accadendo in tutto il panorama dell'Open Source mondiale. Passato lo scandalo delle rivelazioni di Snowden, sembra che le persone si siano dimenticate (rassegnate?) di quanto invasiva sia la sistematica violazione della privacy personale operata da tutti gli smartphone in commercio. Pratica questa che espone la propria vita non solo alle ben note aziende tecnologiche americane del settore (Apple, Google, Facebook, Yahoo), ma anche a tutti i pirati che ogni giorno rubano tonnellate di dati personali alle stesse aziende.

Ubuntu Touch è la risposta open source alla domanda di maggiore controllo e tutela dei propri dati, oltre che un sistema operativo davvero libero e aperto.

Se venite a Forte Bazzera venerdì 31 agosto alle 11.30 vi parlerò di questo (e anche tanto altro!). Vi aspetto!
il 29 August 2018 21.15

23 July 2018

Categoria: 

https://www.ubuntu-it.org/sites/default/files/news_wiki17.png

Ecco le novità introdotte nella documentazione della comunità italiana tra aprile e giugno 2018.

 

Aggiornamenti per il rilascio di Ubuntu 18.04 LTS!

Aprile ha visto l'arrivo della nuova versione Ubuntu 18.04. Si tratta di una versione LTS e sarà quindi supportata per i prossimi 5 anni. Come di consueto il Gruppo Documentazione si è attivato per aggiornare una corposa lista di pagine fra cui quelle relative al download, all'installazione e aggiornamento del sistema, ai repository.. e molte altre ancora.

GruppoDocumentazione/Bionic

 

Pubblicato il nuovo Portale Voting Machine Scuola Lombardia!

https://www.ubuntu-it.org/sites/default/files/votingMachineLombardia.png

Il 2018 ha visto l'arrivo di un evento inaspettato nel mondo linuxiano. Una miriade di "voting machine" (i dispositivi utilizzati in un recente referendum in Lombardia) sono state riconvertite per essere utilizzate nelle scuole lombarde. Come sistema è stato scelto Ubuntu GNOME 16.04 LTS.
È stato quindi creato un portale con informazioni utili al riguardo. Ringraziamo Matteo Ruffoni per averci portato a conoscenza dei fatti lo scorso Marzo durante lo svolgimento del Merge-it a Torino.

  • VotingMachineScuolaLombardia: un nuovo portale dedicato alla voting machine, il dispositivo di voto elettronico fornito alle scuole della Lombardia con preinstallato Ubuntu!

  • /Hardware: specifiche delle voting machine.

  • /PrimoAvvio: operazioni da compiere durante il primo avvio della voting machine.

  • /CambiarePassword: cambiare la password dell'utente amministratore.

  • /Utilizzo: caratteristiche e funzionalità del sistema operativo Ubuntu GNOME presente nella voting machine.

  • /ProgrammiPreinstallati: applicazioni di utilizzo più comune preinstallate in Ubuntu GNOME 16.04 LTS.

  • /Gcompris: utilizzo dell'applicazione GCompris, una suite di giochi didattici per bambini da 2 a 10 anni.

  • /AccountUtente: operazioni da compiere per creare nuovi utenti diversi dall'utente amministratore.

Si segnala inoltre il gruppo di discussione Lavagna libera in cui molti docenti si occupano in prima persona dell'introduzione del software libero nelle scuole. Fra gli argomenti discussi ovviamente si possono trovare molte testimonianze dirette sull'utilizzo delle voting machine.

 

Portali Ambiente Grafico e Amministrazione Sistema

 

Portale Hardware

 

Portale Internet e Rete

  • TeamSpeak: applicazione VoIP.

  • Tor: utilizzare il sistema di navigazione anonima Tor su Ubuntu.

 

Portale Multimedia

  • Andour: una digital audio workstation per Ubuntu.

  • Kodi: programma open source e multipiattaforma per la gestione di un completo media center o Home theater PC.

  • Rosegarden: audio/midi sequencer ed editor di spartiti musicali.

 

Portali Server e Ufficio

  • Xampp: utile programma multipiattaforma che permette in pochi passaggi un'installazione semplificata di server web Apache, MySQL, PHP, Perl e altri strumenti.

  • Atom: editor di testo basato su Electron.

 

Altro

  • Libri Linux: elenco di pubblicazioni dedicate all'utilizzo e all'amministrazione del sistema GNU/Linux.

Per maggioro informazioni, consulta la pagina Lavoro Svolto/2018.

 


A cura del Gruppo Doc
Vuoi contribuire al Wiki? Comincia subito!

il 23 July 2018 21.18

04 May 2018

Categoria: 

bionic_flower.png
Foto originale: Crocus Wallpaper by Roy Tanck

Il 26 Aprile è stato finalmente rilasciato Ubuntu 18.04 LTS, nome in codice Bionic Beaver.
Come forse già saprete, si tratta di una release molto attesa ed importante: è la prima Long Term Support con preinstallato il desktop GNOME.
Sarà supportata fino al 2023. Per scoprirne tutte le novità potete consultare questa pagina.

Come di consueto, il Gruppo Documentazione ha organizzato l'opera di aggiornamento e revisione delle principali pagine del wiki.
Ma molto lavoro rimane ancora da fare. Infatti tante guide hanno bisogno di essere verificate o aggiornate con la nuova versione 18.04.

Come contribuire

La maggior parte delle guide contiene, sotto l'indice in alto a destra, una dicitura simile a questa: «Guida verificata con Ubuntu: 14.04 16.04 17.10».

  • Vi siete accorti che una guida già esistente è valida anche per Ubuntu 18.04?
    Perfetto! fatecelo sapere attraverso la discussione dedicata presente nel forum (trovate il link sempre sotto l'indice), oppure contattateci. Se invece siete già iscritti al Wiki potete verificarla direttamente voi.

  • Vi siete accorti che una guida esistente contiene istruzioni non valide con Ubuntu 18.04?
    Bene, potete farcelo sapere sempre contattandoci. Inoltre se siete iscritti al Wiki potete provvedere da soli a correggerla.

Non siete ancora iscritti al Wiki? cosa aspettate?! iniziate da subito a contribuire! 🙂

il 04 May 2018 08.13

30 April 2018

Basta calcio

Dario Cavedon (iced)


"Il bello della sconfitta sta innanzitutto nel saperla accettare. Non sempre è la conseguenza di un demerito. A volte sono stati più bravi gli altri. Più sei disposto a riconoscerlo, quando è vero, quando non stai cercando di costruirti un alibi, più aumentano le possibilità di superarla. Anche di ribaltarla. La sconfitta va vissuta come una pedana di lancio: è così nella vita di tutti i giorni, così deve essere nello sport. Sbaglia chi la interpreta come uno stop nella corsa verso il traguardo: bisogna sforzarsi di trasformarla in un riaccumulo di energie, prima psichiche, nervose, e poi fisiche." (Enzo Bearzot)
Quando ero giovane, molto giovane, giocavo a calcio. Tutti i bambini giocavano a calcio. Era lo sport preferito, anzi, era il passatempo preferito dei bambini. In estate si stava praticamente tutto il giorno sul campetto vicino a casa, a tirare calci al pallone. Quando non eravamo al campetto, eravamo sul cortile di casa, sempre a tirare calci al pallone. Io ero universalmente considerato scarso - forse il più scarso. Giocavo in difesa, ma spesso finivo a giocare in porta, dove nessuno voleva mai stare.

Fatalmente, ogni tanto si rompeva qualche vetro: è incredibile quanto facilmente si possa rompere un vetro, pur tirando pianissimo il pallone. Mamma si "vendicava" a modo suo: il giardino limitrofo al cortile era cosparso di rose con spine così appuntite da bucare anche il miglior pallone di cuoio. 
Si può dire che la mia infanzia sia trascorsa così, tra vetri rotti, palloni bucati e jeans rovinati dalle scivolate sull'erba. Altri tempi.

Non lo so come sia finito il calcio al suo attuale livello, qualche anno fa ne descrissi alcune disgrazie, alcune sono ancora attuali, altre sono addirittura peggiorate. Ricordo anche un tentativo di Roberto Baggio di cambiare direzione, finito nel nulla. Adesso però basta.

Nel mio immaginario romantico, i principali sentimenti che accompagnano lo sport sono il divertimento, lo spirito olimpico di partecipazione, l'agonismo positivo che insegna a migliorare e superare i propri limiti. Potrò anche sbagliarmi, ma vedo poco di tutto questo nel calcio italiano.

Gioire delle sconfitte altrui, augurare il peggio all'avversario, vedere solo le colpe altrui, immaginare complotti a favore di questa o quella squadra, rende persone tristi e astiose. Rende le persone peggiori, e (esagero) il anche il mondo un po' peggio di quello che era prima.

Preferisco spendere le mie poche energie per costruire un mondo - quel poco che mi circonda - un po' migliore di quello che ho trovato.

(Nella foto: Bearzot gioca a scopone al ritorno dai vittoriosi mondiali di Spagna 1982, in coppia con Causio e contro Zoff e il presidente Pertini).


il 30 April 2018 20.16

23 April 2018

You have a static website and you want to share to your team the last changes you have done, before going online! How to do so?

If you use GitLab and you have an account AWS, it’s time to step up your game and automatize everything. We are going to setup a system which will deploy every branch you create to S3, and clean up after yourself when the branch is merged or deleted.

AWS S3 is just a storage container, so of course you can’t host in this way a dynamic website, but for a static one (as this blog), it is perfect.

Also, please note that AWS S3 buckets for hosting a website are public, and while you need to know the URL to access it, there are way to list them. So do not set up this system if you have private data on your website.

Of course, standard S3 prices will apply.

We will use GitLab CI, since it is shipped with GitLab and deeply integrated with it.

Gitlab CI is a very powerful system of Continuous Integration, with a lot of different features, and with every new releases, new features land. It has a rich technical documentation that I suggest you reading.

If you want to know why Continuous Integration is important I suggest reading this article, while for finding the reasons for using Gitlab CI specifically, I leave the job to Gitlab.com itself. I’ve also written another article with a small introduction to Gitlab CI.

I suppose you already have an AWS account and you know a bit how GitLab CI works. If not, please create an account and read some of the links above to learn about GitLab CI.

Setting up AWS

First thing is setting up AWS S3 and a dedicated IAM user to push to S3.

Since every developer with permissions to push to the repository will have access to the tokens of the IAM use, it is better to limit its permissions as much as possible.

Setting up S3

To set up S3, go to S3 control panel, create a new bucket, choose a name (from now on, I will use example-bucket) and a region, and finish the creation leaving the default settings.

After that, you need to enable the website management: go to Bucket -> Properties and enable Static website hosting, selecting Use this bucket to host a website as in the image. As index, put index.html - you can then upload a landing page there, if you want.

Take note of the bucket’s URL, we will need it.

s3 bucket creation

We now grant permissions to read objects to everybody; we will use the policy described in the AWS guide. For other information on how to host a static website, please follow the official documentation.

To grant the read permissions, go to Permissions->Bucket policy and insert:

{
  "Version":"2012-10-17",
  "Statement":[{
    "Sid":"PublicReadGetObject",
    "Effect":"Allow",
	  "Principal": "*",
    "Action":["s3:GetObject"],
    "Resource":["arn:aws:s3:::example-bucket/*"]
  }]
}

Of course, you need to insert your bucket’s name in the Resource line.

Creating the IAM user

Now we need to create the IAM user that will upload content to the S3 bucket, with a policy that allows only upload to our GitLab bucket.

Go to IAM and create a new policy, with the name you prefer:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::example-bucket/*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "*"
        }
    ]
}

Of course, again, you should change the Resource field to the name of your bucket. If you know the GitLab runners’ IPs, you can restrict the policy to that IPs.

Now you can create a new user granting it Programmatic access. I will call it gitlabs3uploader. Assign it the policy we just created.

iam user creation

For more information on how to manage multiple AWS accounts for security reasons, I leave you to the official guide.

Setting up GitLab CI

We need to inject the credentials in the GitLab runner. Go to your project, Settings -> CI / CD -> Secret variables and set two variables:

  • AWS_ACCESS_KEY_ID with the new user’s access key
  • AWS_SECRET_ACCESS_KEY with the new user’s access secret key

Since we want to publish every branch, we do not set them as protected, because they need to be available in every branch.

secret variables config

.gitlab-ci.yml

We now need to explain GitLab how to publish the website. If you need to build it before, you can do so. rpadovani.com uses Jekyll, so my .gitlab-ci.yml file is like this:

image: "registry.gitlab.com/rpadovani/rpadovani.com:latest" # Custom Ruby image, replace with whatever you want
stages:
  - build
  - deploy

variables:
  AWS_DEFAULT_REGION: eu-central-1 # The region of our S3 bucket
  BUCKET_NAME: bucket-name         # Your bucket name

cache:
  paths:
    - vendor

buildJekyll:  # A job to build the static website - replace it with your build methods
  stage: build
  script:
    - bundle install --path=vendor/
    - bundle exec jekyll build --future # The server is in another timezone..
  artifacts:
    paths:
      - _site/  # This is what we want to publish, replace with your `dist` directory

deploys3:
  image: "python:latest"  # We use python because there is a well-working AWS Sdk
  stage: deploy
  dependencies:
    - buildJekyll      # We want to specify dependencies in an explicit way, to avoid confusion if there are different build jobs
  before_script:
    - pip install awscli # Install the SDK
  script:
    - aws s3 cp _site s3://${BUCKET_NAME}/${CI_COMMIT_REF_SLUG} --recursive # Replace example-bucket with your bucket
  environment:
    name: ${CI_COMMIT_REF_SLUG}
    url: http://${BUCKET_NAME}.s3-website.${AWS_DEFAULT_REGION}.amazonaws.com/${CI_COMMIT_REF_SLUG}  # This is the url of the bucket we saved before
    on_stop: clean_s3 # When the branch is merged, we clean up after ourself

clean_s3:
  image: "python:latest"
  stage: deploy
  before_script:
    - pip install awscli
  script:
    - aws s3 rm s3://${BUCKET_NAME}/${CI_COMMIT_REF_SLUG} --recursive # Replace example-bucket with your bucket
  environment:
    name: ${CI_COMMIT_REF_SLUG}
    action: stop
  when: manual

For more information about dynamic environments, see the documentation.

To verify your .gitlab-ci.yml is correct, go to your project on GitLab, then CI / CD -> Pipelines, and in the top right of the page there is a CI Lint link. It does not only lint your code, but it also creates a nice overview of all your jobs.

ci lint

Thanks to the environments, we will have the link to the test deployment directly in the merge request, so your QA team, and every other stakeholder interested in seeing the website before going to production, can do it directly from GitLab.

Merge request overview

Also, after you merge your branch, GitLab will clean after itself, so you do not have useless websites in S3.

You can also see all the deployments in CI / CD -> Environments, and trigger new deploys.

Conclusion

They say 2018 is the year for DevOps. I am not sure about that, but I am sure that a well configured Continuous Integration and Continuous Delivery system save you and your company a lot of time and headaches.

If your builds are perfectly reproducibly, and everything is automatic, you can focus on what really matters: developing solutions for your customers.

This was a small example on how to integrate AWS and GitLab, but you know the only limit is your fantasy. Also, a lot of new features are introduced every month in Gitlab and GitLab CI, so keep an eye on the Gitlab blog.

Kudos to the Gitlab team (and others guys who help in their free time) for their awesome work!

If you have any question or feedback about this blog post, please drop me an email at riccardo@rpadovani.com or tweet me :-) Feel free to suggest me to add something, or to rephrase paragraphs in a clearer way (English is not my mother tongue).

Bye for now,
R.

Updates

19th September 2018: fix the S3 bucket URL in the .gitlab-ci.yml file, thanks to James Delaney.

29th December 2019: fix the s3:ListBucket permission, thanks to Grzegorz Wozniak.

il 23 April 2018 14.30