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

13 November 2019

Nuovo Cluster DMR del GRF sul TG 222555

Paolo Garbin (paolettopn)

In questi giorni è stato attivato il Cluster del GRF sul TG 222555, come avrete già visto scorrere nelle tabelle del sistema BrandMeister.
il 13 November 2019 10.22

12 November 2019

Categoria: 

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

  • Canonical collabora con NVIDIA per accelerare l'adozione dell'IA aziendale in ambienti multi-cloud
  • Il client Ubuntu Advantage di Canonical si aggiorna per la versione di Ubuntu 14.04 LTS (Trusty Tahr)
  • Canonical e IBM lavorano insieme nei servizi finanziari
  • L'Ubuntu Touch Installer arriva anche per i telefoni One Plus 3 e Sony Xperia X
  • KDE stabilisce tre obiettivi per il futuro
  • Scarica la nuova versione di GIMP 2.10.14
  • Rilasciato KDE Plasma 5.17.2 con tantissime correzioni
  • GNOME 3.36 da il via al ciclo di sviluppo
  • 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 12 November 2019 20.47

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

05 November 2019

Categoria: 

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

  • Canonical pubblica un nuovo aggiornamento di sicurezza per le versioni Ubuntu 18.04 e 16.04 LTS 
  • Canonical ha un nuovo direttore di Ubuntu Desktop
  • Disponibili le prime build di Ubuntu 20.04 LTS
  • Ubuntu 19.10 (Eoan Ermine) riceve la prima patch di sicurezza per il Kernel Linux
  • Ubuntu Touch OTA 11 disponibile per i primi test
  • Rilasciato LibreOffice 6.3.3 con più di 80 correzioni di bug
  • Mozilla Firefox 70 è finalmente disponibile!
  • Linus Torvalds condivide i suoi pensieri sull'interesse di Microsoft per Linux
  • 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 05 November 2019 16.17

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

30 October 2019

L’ultima versione software di XLX Reflector XLX039 permette il collegamento diretto di sistemi C4FM (hostpost e ripetitori) come già avveniva per il protocollo DMR. Questo significa che è possibile connettersi direttamente ad un modulo del reflector XLX039 impiegando il DSTAR, il DMR o il C4FM.
il 30 October 2019 12.46

29 October 2019

Categoria: 

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

  • Canonical rilascia patch di sicurezza per Ubuntu 19.04
  • Ubuntu 20.04 LTS uscirà il 23 Aprile 2020
  • Full Circle Magazine Issue #150 in inglese
  • "Linux on Dex" è morto, ad affermarlo è Samsung
  • Xfce 4.16: ecco tutte le novità che usciranno a metà 2020
  • Arriva la prima point release di KDE Plasma 5.17
  • 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 29 October 2019 21.16

23 October 2019

Le nuove quote sociali ARI 2020

Paolo Garbin (paolettopn)

Gli importi delle varie quote sociali sono stati aggiornati ed hanno subito un leggero aumento; sono già visionabili sul sito della Sezione ARI di Pordenone
il 23 October 2019 08.17

22 October 2019

Categoria: 

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

  • Ubuntu 19.10 (Eoan Ermine), cosa c'è di nuovo
  • Rilasciate le derivate di Ubuntu 19.10 Eoan Ermine, ora disponibili per essere scaricate
  • Canonical e Debian rilasciano patch di sicurezza per il programma sudo
  • Arriva l'ultimo aggiornamento di LibreOffice 6.2.8
  • KDE Plasma 5.17: ecco tutte le nuove funzionalità disponibili!
  • 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 22 October 2019 20.06

18 October 2019

Categoria: 
 
 
Arriva Ubuntu 19.10 con molte novità tra cui alcune significative. 
Uno dei maggiori cambiamenti in Ubuntu 19.10 - che verrà apprezzato soprattutto dagli appassionati dei videogiochi - è la decisione di includere i driver NVIDIA nell'immagine di installazione ISO garantendo un elevato miglioramento delle prestazioni e permettendo così l'installazione di driver proprietari (closed source) per la propria scheda grafica. Un altro grande cambiamento fondamentale in questa versione è il supporto per l'installazione di Ubuntu utilizzando il file system ZFS: Ubuntu infatti, è la prima distribuzione Linux desktop ad offrire supporto nativo per ZFS.
È stato modificato il modo in cui Ubuntu 19.10 supporta le app a 32 bit - di cui abbiamo discusso approfonditamente negli articoli 2019.024 e 2019.025 - con gli sviluppatori Ubuntu “impegnati” a garantire che la distribuzione abbia uno spazio utente a 32 bit funzionante per app e software legacy, inclusi Steam e WINE.
Sono presenti anche le migliori funzionalità di GNOME 3.34, dove è possibile trascinare e rilasciare le app nel "Menù delle applicazioni" per creare "cartelle di app"; anche le velocità di avvio iniziali dovrebbero essere più veloci , grazie a una tecnologia di decompressione intelligente, mentre l'utente Intel potrebbe beneficiare di un avvio senza sfarfallio. Per concludere Ubuntu 19.10 a colpo d'occhio porta con sé:
 
  • Kernel Linux 5.3
  • GNOME 3.34
  • Opzione di installazione del file system ZFS sperimentale
  • Spedire i driver NVIDIA sulla ISO
  • PulseAudio 13.0
  • Avvio senza sfarfallio per gli utenti Intel
  • Cestino di Ubuntu Dock e icone di unità esterne
  • Rinnovato tema Yaru GTK
  • Supporto per temi per le app Snap
  • Fwupd disponibile come Snap
 
Ovviamente ci sono i nuovi sfondi da godere, incluso il nuovo sfondo predefinito di Ubuntu 19.10!
È qui disponibile anche un video che illustra tutte le novità. Quindi che aspetti? Affrettati e scaricalo subito dal sito Ubuntu-it.
 
Fonte:
 
il 18 October 2019 19.53

17 October 2019

Una premessa è doverosa: prima di addentrarsi nell’installazione e gestione di questi sistemi è prerogativa la padronanza informatica sui concetti di server, sistema operativo linux, reti e linguaggi di programmazione nonché script di sistema.
il 17 October 2019 09.37

15 October 2019

Categoria: 

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

  • Canonical rilascia importanti aggiornamenti di sicurezza per Ubuntu 18.04 e 16.04 LTS
  • Rilasciata la prima point release di GNOME 3.34
  • KDE Plasma 19.08.2 rilasciato con tante correzioni
  • Linus Torvalds dà il via libera allo sviluppo del kernel linux 5.4
  • 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 15 October 2019 19.49

14 October 2019

NXDN: questo sconosciuto, ma non troppo…

Paolo Garbin (paolettopn)

Chi di voi nel realizzare un Hot-Spot usando la distribuzione Linux “Pi-Star” non ha visto nei “modi” disponibili i protocolli NXDN e P25? Io mi sono chiesto da subito chi utilizzasse questi protocolli di comunicazione e cosa avessero di diverso l’uno dall’altro. Mi sono studiato i due protocolli e ho capito che quello più ”accessibile” alla sperimentazione era l’ NXDN. Ma partiamo dall’inizio…..
il 14 October 2019 16.00

12 October 2019

Questo progetto sarà presente agli stand dell'A.R.I. di Pordenone (padiglione 6) alla prossima Fiera del Radioamatore 2 di Pordenone, il 16 e 17 novembre 2019.
il 12 October 2019 15.04

08 October 2019

Categoria: 

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

  • Flatpak 1.5 implementa tantissime novità
  • Linux Day 2019
  • L'applicazione open source Calibre dopo due anni si aggiorna
  • Mozilla Firefox 69.0.2 rilasciato per patchare il crash con Youtube
  • Richard Stallman e i 10 suggerimenti dati alla Microsoft
  • 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 08 October 2019 19.50

06 October 2019

Capita molto spesso di aggiornare subito gli indirizzi dei server DNS che trovo installati automaticamente sui diversi dispositivi di rete che utilizzo o che amministro.  Questo articolo vale per tutti i sistemi Debian-based, quindi i Raspberry e gli hotspot pi-star.
il 06 October 2019 19.30

05 October 2019

In quest'ultimo mese, il nostro gruppo di sperimentazione digitale che si trova la sera a fare QSO sul sistema (YCS 222), collaborando assieme ha reso possibile questa configurazione 'profonda' del hotspot pi-star, che Andrea IW4EHJ ha poi perfezionato e relazionato per il sito del Gruppo Radio Firenze.
il 05 October 2019 15.42

03 October 2019

Da diverse settimane, sempre assieme agli amici Radioamatori toscani e di altre regioni italiane, abbiamo deciso di iniziare le sperimentazioni del sistema radio NXDN. Per iniziare queste sperimentazioni è però necessario ottenere prima un proprio ID NXDN.
il 03 October 2019 19.34

01 October 2019

Categoria: 

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

  • Canonical rilascia nuove patch di sicurezza per Ubuntu 18.04 e 16.04 LTS
  • Vi presentiamo i nuovi sfondi di Ubuntu 19.10 "Eoan Ermine"
  • Edizione #149 di Full Circle Magazine in inglese
  • Arriva LibreOffice 6.3.2
  • I primi telefoni Linux Librem 5 iniziano a essere spediti ai clienti di tutto il mondo
  • KDE Plasma 5.17 entra in fase beta
  • 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 01 October 2019 17.57

24 September 2019

Categoria: 

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

  • Piano di dettaglio degli sviluppatori Ubuntu per il supporto a 32 bit in Ubuntu 19.10
  • GNOME lancia ufficialmente l'applicazione GNOME Firmware Updater
  • Firefox rilascerà aggiornamenti ogni mese
  • Rilasciato il Kernel Linux 5.3
  • Annunciata la prima conferenza Microsoft-Linux il 10-11 Marzo 2020
  • 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 24 September 2019 20.03

22 September 2019

Il nuovo Server IPSC2-IT-MLINK collega la rete BrandMeister Italia (Server 2222) via protocollo OpenBridge e la rete DMRPlus mondiale rendendo fruibili, in condivisione, 20 TG Regionali SOLO DMR (222xx) e 20 TG Regionali MULTIPROTOCOLLO (223x-224x).
il 22 September 2019 08.00

17 September 2019

Categoria: 

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

  • Aperte le votazioni per scegliere il nuovo sfondo di Ubuntu 19.10
  • Ubuntu 19.10 si avvierà molto più velocemente
  • Installare il firmware Linux sui dispositivi Acer, ora è ancora più semplice
  • La nuova funzionalità VPN per Firefox pronta per i test
  • GSConnect si aggiorna: ecco le novità
  • 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 17 September 2019 15.51

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 judi bola 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

20 December 2018

There are many kinds of applications used by users. There are various applications based on the functions. For entertainment, there are some famous applications for it. Tik Tok is one of them. This application is so famous lately. Many people from different countries use this application. This application is for making videos. There are 60-seconds videos that can be made by using this application. The app itself is developed by Toutiao and this is released for the first ime in 2016. This application is very popular among the users of gadget and this becomes one of the app with the fastest growth. There are many users using this application. It is known as application for gadget, and this can work in iOS and Android. In addition, this can also work for PC.

This is an application for video sharing and video making. This application also becomes such a video sharing community. Users who want to use this application must have account and they can make it easily. When they have account, then they will get the access for using this application for making videos. Many kinds of videos can be made and there are many unique videos made by this mobile app and there are also some users getting famous because of their videos made by using Tik Tok.

In this case, the app can be used for watching videos made by many registered creators. Then, there are also features to make videos. Users can make 60-seconds videos and edit them directly in this application. They can share automatically in their Tik Tok account, but they can also share the videos in other social media.

Then unique feature of this application is that judi bola users can make videos with various kinds of music as the background. There are many kinds of music to use as backgrounds. Some of the users of this app use this feature to make such kinds of lip-sync or making dance based on the music. There are also some users who make cover of music or videos. There are also some useful and unique filters that can make the video more unique.

Then, developer of this app has made facial recognition that later can help users in using the feature of filters on the face. The facial recognition can work in good precision, so filters can be applied easily based on the face of users. For the music, the app has Massive Music Library, so there are many music collections to use.

il 20 December 2018 12.38

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.

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:ListObjects",
            "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

This post has been last updated on the 19th September 2018 to fix the S3 bucket URL in the .gitlab-ci.yml file, thanks to James Delaney

il 23 April 2018 14.30

22 April 2018

 

La prossima settimana parteciperò a UbuCon Europe 2018, a Xixòn (Gijon), nelle Asturie, in Spagna.

UbuCon Europe


UbuCon Europe è l'appuntamento europeo di sviluppatori e utenti di Ubuntu (e non solo). È l'evento che ha sostituito gli Ubuntu Developer Summit, organizzati da Canonical.
UbuCon è un'opportunità unica per incontrare di persona le tantissime persone che in un modo o nell'altro partecipano allo sviluppo e al supporto di Ubuntu. Ricordo che Ubuntu (anche se fondata dal benemerito dittatore Sudafricano Mark Shuttleworth) è un progetto nato in Europa (la Gran Bretagna ne fa ancora parte, almeno geograficamente ;-) ), e in Europa le comunità di volontari ubunteri sono particolarmente attive.

Per me sarà l'occasione di rivedere alcuni amici che hanno partecipato all'avventura degli Ubuntu Phone Insiders, e conoscere di persona molte delle persone che ho solo visto o letto su Internet. È sempre un'esperienza piacevole parlare a quattrocchi con chi si è abituati a leggere sulle mail o sui blog, perché il contatto umano e l'esperienza diretta valgono più di un milione di parole.

L'evento si tiene a Xixòn (Gijon in spagnolo), che è la città di Marcos Costales, contact della Comunità Spagnola di Ubuntu, e a cui si deve l'organizzazione di questa edizione di UbuCon Europe. Marcos, che conosco dai tempi degli Insiders, è una delle persone più attive nell'ambito di Ubuntu, e anche sviluppatore di uno dei più bei programmi per Ubuntu Phone: uNav. Devo proprio a Marcos la mia partecipazione: è stato lui che mi ha spinto a lasciare la mia pigrizia sul divano e prenotare il volo per Oviedo.

La scaletta dell'evento è molto ricca: nel momento migliore (o peggiore, visto che il sottoscritto non è dato il dono dell'ubuquità) ci sono ben quattro talk diversi contemporaneamente. Per me sarà un problema decidere quale seguire, sono così tante le cose da sapere e imparare! Alla fine credo mi dovrò focalizzare sugli argomenti che già seguo (poco) nell'ambito della comunità, evitando di impelagarmi in altri nuovi progetti.

Il mio intervento


Il mio talk sarà sabato mattina, e parlerò di "Social Media for Open Source Communities". Dello stesso argomento ho parlato (slide su Slideshare) anche al recente MERGE-it 2018, ma questo talk sarà più ampio, perché parlerò anche di strategie per i social media. Ma soprattutto sarà il mio primo talk in inglese: Sant'Aldo Biscardi, protettore degli Italiani che parlano male inglese, aiutami tu!

Per me si tratta di una bella sfida, spero di riuscire a non dire troppe cavolate, ma del resto l'argomento social è decisamente sottovalutato in molte comunità, quando invece il contatto diretto che consentono i canali sociali è importantissimo sia in fase di promozione, che per il supporto ai propri "clienti".

Resoconto e live tweeting


I talk e i workshop si sviluppano da venerdì 26 a domenica 28 Aprile, io cercherò di presenziare a quanti più possibile... ma non più di uno alla volta! Purtroppo non è previsto un web streaming, e neanche riprese video dei talk (anche se ho proposto a Marcos una soluzione che forse permetterà di coprire una parte dei talk).

Vi darò un resoconto dell'evento su questo blog, ma soprattutto seguirò l'evento anche con un live tweeting su Twitter, quindi seguitemi lì per essere aggiornati in tempo reale! :-)

Si tratta della mia prima volta a un evento internazionale dedicato al mondo FLOSS, e davvero non vedo l'ora!
il 22 April 2018 16.39

06 April 2018

Sabato 24 marzo si è svolto a Torino il primo MERGE-it, il primo incontro delle Comunità italiane che si dedicano all’Open Source, Open Data e Open Culture. Le comunità presenti erano praticamente tutte (quelle che conosco): ubuntu-it, Debian, LibreItalia (LibreOffice), Mozilla Italia, Wikimedia (Wikipedia), OpenStreetMap, GFOSS.it, Spaghetti Open Data e ovviamente ILS, organizzatore dell’evento.
L’evento si è svolto presso la Corte Interrata del Politecnico di Torino, una gran bella location, con una serie di aule disposte sui due lati di uno spazio verde, nelle quali ogni comunità ha trovato il proprio spazio.


Accoglienza 


Per l’accoglienza, c’era un banchetto all’entrata, non era richiesta la registrazione, ma si potevano acquistare le magliette e gadget dell’evento. Ubuntu-it era in un'aula assieme ai cugini di Debian Italia, che ormai conosciamo da anni, condividendo molto di più che pacchetti “.deb”.

Il programma della giornata 

In ogni aula si svolgevano talk delle comunità, e alcune avevano colto l’occasione per fare la propria assemblea oppure discutere delle prossime azioni tutti assieme.

Nella sala ubuntu-it, i lavori sono iniziati con un fuori programma: la presentazione delle “vending machine” utilizzate dalla Regione Lombardia per il referendum sull’autonomia, e donate poi alle scuole Lombarde. La particolarità di questi computer consiste nel fatto che montano il Ubuntu, e sono un ottimo metodo perché l’open source entri nei cuori dei professori. Ci riusciremo solo se li sapremo accompagnare nel percorso di apprendimento.

Per quanto più attinente alla comunità ubuntu-it, la relazione di Mattia Rizzolo sui lavori del Consiglio della Comunità è stata l’occasione per fare un checkup sullo stato di salute della comunità, che ha visto negli ultimi anni il diradarsi di contributi e membri. L’idea comune emersa è quella di restringere il campo d’azione, abbandonando i progetti che non riusciamo più a seguire, e concentrandoci su quello che si può fare al meglio con le poche risorse a disposizione.

Pietro Albini ha poi fatto una relazione sui numerosi lavori che il Gruppo Sistemisti ha portato avanti per recuperare la conoscenza perduta dopo la dipartita di alcuni membri della Comunità, e per aggiornare il parco macchine su cui girano le risorse web della comunità italiana di Ubuntu.

Foto di @faffa42 su Twitter

E’ stato quindi il turno del sottoscritto. Davanti a una discreta folla di curiosi e appassionati (vedi foto), ho ripercorso la storia di Ubuntu Touch (Ubuntu Phone), dalle meravigliose premesse di “one system to rule them all” del 2011, all’abbandono dello sviluppo da parte di Canonical del 2017, alla concreta realtà di Ubports del 2018, dove una piccola comunità di appassionati, supportati da un paio di sponsor, ancora persegue l’obiettivo di un dispositivo basato su Linux e Software Libero e rispettoso della privacy. Ubports sviluppa Ubuntu Touch su ben quattro diversi dispositivi (One Plus One, Fairphone 2, Nexus 5 e BQ M10), e supporta tutti i “vecchi” dispositivi rilasciati quando lo sviluppo era condotto da Canonical (LG Nexus 4, BQ E4.5 e E5, Meizu MX4 e PRO 5).


Mi fa piacere segnalare l’impegno originale di Smoose, che ho contattato in fase di preparazione del talk. Si tratta di piccola azienda Olandese che si dedica allo supporto con solo Software Libero di realtà olandesi, e che impiega ben il 10% delle proprie persone al supporto dello sviluppo e della promozione di Ubuntu Touch.
Ho infine tracciato il futuro prossimo di Ubports, con la nascente fondazione di diritto tedesco, sul modello di Document Foundation, che darà ulteriori certezze a chi si dedica al progetto. Per Ubuntu Touch, riposti nel cassetto i sogni di dominio del mondo, si tratta di risalire la lunga ed erta china che deve affrontare un progetto open che può contare sulle forze del volontariato e poco altro. La strada è difficile e densa di incognite, ma forse è proprio questo il motivo che più mi appassiona.
Dopo di me ha parlato il grande Marco Trevisan, che ha offerto il punto di vista “aziendale” dello sviluppo di Ubuntu. Marco infatti lavora per Canonical, e ha accesso a molti aspetti dello sviluppo che dall’esterno possono sfuggire. Interessante quindi la sua testimonianza della collaborazione Ubuntu/Fedora (Canonical/Red Hat) per il supporto ai monitor HDPI per GNOME (che purtroppo non è ancora stata implementata). Dall’anno scorso, dopo l’abbandono di Unity, Ubuntu utilizza una versione di GNOME Shell leggermente modificata. In quest’ottica, la collaborazione con GNOME sarà sempre più importante. Tra un talk e l’altro intanto era arrivata pausa pranzo e ne abbiamo approfittato per un abbondante pranzo in un ristorante nei dintorni.
La pausa pranzo è durata anche più del previsto (burp!), e il pomeriggio è volato via velocissimo. Prima il talk di Jeremie Tamburini su come contribuire alla documentazione di Ubuntu: è molto più facile di quel che si crede!

Poi, ancora un talk del sottoscritto, con un talk su come sia importante per tutte le comunità aumentare il social engagement sui social media. I social media fanno parte della vita quotidiana delle persone che popolano il web, ed è quindi fondamentale per le comunità trasmettere il loro messaggio su tutti i differenti canali a disposizione: Facebook, Twitter, (e addirittura) Google Plus sono un ottimo veicolo per far conoscere le proprie attività, differenziando messaggi e frequenza a seconda del mezzo.
Capisco le perplessità sui social media da chi frequenta il mondo open: Facebook e le altre piattaforme sono chiuse, e pongono seri problemi di privacy. Nonostante questo sono anche utilizzate ogni giorno da milioni di persone e, per molte di queste, coincidono con la loro visione di Internet. Fare un passo nella direzione di queste persone, creando delle opportunità di contatto sui social media, è uno strumento utile per introdurle nel mondo open source.

Dopo il talk, mentre stavo andando a prendere un caffè alle macchinette, sono stato bloccato più volte nei corridoi da varie persone, raccogliendo diversi contatti e qualche possibile iniziativa per ubuntu-it. Per contro, ho così perso gli altri talk del pomeriggio, e neanche sono riuscito a passare a salutare le persone delle altre Comunità, parecchie delle quali amiche. Un peccato! Ecco, se devo trovare una pecca a MERGE-it, è mancato un appuntamento in cui trovarsi con gli altri. Sarebbe stato bellissimo un keynote iniziale comune e anche un pranzo conviviale, magari sfruttando un servizio di catering. Ma sarebbe bastata una pizzata da asporto come fanno gli amici del LUG di Pordenone.

Concludendo

Mentre il Software Libero prende piede sempre più, e le iniziative si moltiplicano, è sempre un piacere rivedere qualche vecchia conoscenza, e conoscere qualche faccia nuova - pur nel limitato volgere di un giorno. MERGE-it ha offerto tutto questo, e con qualche limatura organizzativa (vedi sopra), lo si può rendere un appuntamento fisso, ampliando il coinvolgimento del pubblico generale e degli studenti del Politecnico.

il 06 April 2018 07.37

04 April 2018

Categoria: 

Documentazione wiki

Foto originale: London Eye by Paul Daniell

 

Ecco le novità introdotte nella documentazione della comunità italiana tra gennaio e marzo 2018.

Portale Ambiente Grafico

 

Portale Amministrazione Sistema

 

Portale Hardware

 

Portale Programmazione

  • Checkinstall: utilizzare lo strumento CheckInstall per creare pacchetti .deb

  • CambiareShell: abilitare le shell più comunemente usate in Ubuntu.

 

Portale Giochi

 

Portale Multimedia

  • Audio/FFmpeg: programma a riga di comando per la codifica/decodifica di formati video e audio.

 

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

 


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

il 04 April 2018 06.11

21 March 2018


Per la prima volta nella storia (esclusa la fantastica ma limitata esperienza della DUCC-IT) le comunità italiane attive nel FLOSS, Cultura Libera e Open Data si incontrano tutte assieme, tutte nello stesso posto e nello stesso giorno.

Accadrà il 24 marzo prossimo, in occasione di MERGE-it, un evento organizzato da Italian Linux Society, in collaborazione con le migliori comunità open italiane, tra cui: LibreItalia (LibreOffice), Spaghetti Open Data, Industria Italiana Software Libero, Wikimedia (Wikipedia), Mozilla Italia (Firefox), GFOSS.it e ovviamente ubuntu-it, la magnifica comunità italiana di Ubuntu.


Il luogo dell'evento è il Politecnico di Torino, presso la Corte Interrata, accessibile da Via Castelfidardo oppure Via Pier Carlo Boggio.

Si tratta di un evento unico, il primo del suo genere in Italia, organizzato grazie alla volontà comune di trovarsi e ritrovarsi, per scambiarsi opinioni ed esperienze e soprattutto imparare dagli altri. Sono convinto che l'aspetto migliore del Software Libero riguarda proprio la condivisione e lo scambio di conoscenze ed esperienze. Quando io so una cosa e te la racconto, e tu ne sai un'altra e me la racconti, alla fine della giornata torniamo a casa con il doppio delle cose che sapevamo la mattina, e con la soddisfazione di aver contribuito a migliorare quel piccolo pezzo di mondo che ci sta attorno.

Il programma è davvero molto articolato e ricco, impossibile elencare qui tutti gli appuntamenti. Il sottoscritto sarà soprattutto nei pressi della sala dove si terranno i talk della Comunità ubuntu-it, ma farò sicuramente un giro anche nelle altre aule. Non ho ancora deciso quali, perché l'imbarazzo della scelta regna sovrano!

Per il sottoscritto, MERGE-it è anche un modo per ritrovare dei giovani amici che non vedo da molto tempo, come per esempio Giulio e Riccardo, e anche quelle vecchie volpi del software libero come Roberto "madbob" e Daniele "MTE90".

Sono molto curioso di sentire le esperienze di chi parteciperà, e spero anche qualcuno verrà a sentire quel poco che so su Ubuntu Touch e Social Media.

Chi vuole partecipare a MERGE-it basta che si presenti all'ingresso: nessun costo per partecipare, nessuna preiscrizione.


il 21 March 2018 09.26

24 February 2018

Introduction

If you are developing a brand new project on your VirtualBox instance, it is very useful to use the developer tools and the device toolbar on Chrome (or the Responsive Design Mode on Safari).

But is of course much more useful to perform real tests on real devices.

The Remote Debugging Android Devices is a great opportunity for this.

In the rest of the article, I am assuming that:

  • You are working on High Sierra;
  • You are going to show your project on an Android 4.4+ device;
  • You are running a Linux server (Ubuntu 17.10 in the example) on your VirtualBox instance;
  • The development domain is mylocaldomain.local provided by an Apache2 instance.

Set up

The first part of the setup, required to detect the Android device, is perfectly described in the Remote Debugging Android Devices official guide.

To summarize:

  1. Enable the Developer Options on your Android device;
  2. From the revealed menu, select Enable USB Debugging;
  3. Now, on your computer, open Chrome and its Developer Tools (generally ⌘ ⌥ I);
  4. Then, in the same bar as “Console”, “Elements”, “Sources”, .. , on the right, click the  ⋮ symbol and select More tools > Remote devices.
  5. Be sure to confirm the dialog on your phone to authorize the computer to perform this action.

Custom domain / Virtual hosts configuration

In my case, I had to comment out everything else that was pointing to my custom domain in the /etc/hosts file, both in the host and guest machine, otherwise a random domain pointing to my 127.0.0.1 address was selected.
So the /etc/hosts looks like:

127.0.0.1 localhost 127.0.0.1 mylocaldomain.local

Just to be sure, I have a2dissited all the other virtual hosts, too, from the Apache enabled sites..but you can try without this step.

“Server” Port forwarding

The VirtualBox port forwarding will contain something like a rule similar to the following one:

Name Protocol Host IP Host Port Guest IP Guest Port
Apache TCP 8080 80

“Client” Port forwarding

  1. Go to the Settings menu and be sure Discover USB devices checkbox is enabled;
  2. Now, add a rule in the (enabled) port forwarding section like the following one:
    localhost:4444 mylocaldomain.local:8080
  3. Go back to the device section.

Test

You can now type http://localhost:4444 on the New Tab section, and the website should be opened in your Android device.

The post Remote Debugging Android Devices with VirtualBox through port forwarding appeared first on L.S..

il 24 February 2018 08.40