12 July 2018

Ramme è un'App free, open-source e cross-platform per Instagram. È stata relizzata utilizzando Electron e offre le stesse caratteristiche che si possono trovare utilizzando l'App Instagram sul web.
il 12 July 2018 14.12

10 July 2018

Categoria: 

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

  • Ubuntu 17.10 (Artful Aardvark) raggiungerà lo status di 'End of Life' il 19 luglio 2018
  • Prima analisi dei dati sugli utilizzatori di Ubuntu desktop
  • La newsletter va in vacanza
  • Iniziative di mezza estate in Veneto
  • CIMON, un assistente IA per astronauti che funziona con Ubuntu
  • Notizie dalla Documentazione Wiki
  • 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 10 July 2018 19.59

09 July 2018

Categoria: 
Nel numero 2018.006 della Newsletter avevamo parlato dell'intenzione di Canonical di avviare una raccolta dati statistica sull'utilizzo di Ubuntu:
 
''Ubuntu nasce con lo scopo di essere semplice, adatto a tutti e per tutti. Per perfezionare un sistema di questo tipo Canonical inizierà una raccolta dati per sapere cosa fanno gli utenti con Ubuntu, su che tipo di hardware viene installato e quali sono i software più popolari. Quindi chi utilizza Ubuntu sarà spiato da Canonical? No, la privacy è garantita per tutti gli utenti. Oltre alla comunicazione preventiva di Canonical, durante l'installazione di Ubuntu sarà presente una casella di controllo per abilitare o disabilitare il servizio di raccolta dei dati.''
 
Da quel momento è stato progettato Ubuntu Report, uno strumento integrato nella procedura di configurazione iniziale di Ubuntu 18.04 LTS. Questo strumento permetterà a tutti gli utenti di decidere se inviare o meno le informazioni raccolte. Lo scopo di questa raccolta dati è conoscere le più tipiche configurazioni hardware, le traduzioni più importanti e sapere dove le persone usano Ubuntu nel mondo. 
Nel frattempo introduciamo alcuni risultati iniziali - i dati riguardano installazioni di Ubuntu desktop e non includono gli utenti che usufruiscono di Ubuntu Server - tra cui:
 
  • Durata dell'installazione - L'installazione media di Ubuntu Desktop richiede 18 minuti , mentre  macchine più potenti possono installare la distribuzione in meno di 8 minuti.
  • Ubuntu viene usato in tutto il mondo - I dati raccolti si basano sul fuso orario selezionato durante l'installazione e non sulla geo-codifica dell'indirizzo IP. La maggior parte degli utenti che utilizza Ubuntu si trova negli Stati Uniti, Brasile, India, Cina, Russia, Europa e ancora in tanti altri paesi!
  • Display - La risoluzione maggiormente utilizzata è la Full HD (1080p), seguita da 1366 x 768, una risoluzione classica dei laptop. Alcuni utenti usano più schede grafiche e questo potrebbe essere segno dell'estrazione di criptovalute o giochi. Un singolo monitor rimane di gran lunga la configurazione più comune.
  • Opzione di installazione  - Le opzioni di installazione mostrano come quasi tutti gli utenti scelgano di scaricare gli aggiornamenti software durante l'installazione, che più della metà delle installazioni include componenti aggiuntivi limitati e il 28% degli utenti seleziona l'accesso automatico. Un altro fatto curioso riguarda l'opzione di installazione minima introdotta di recente, che viene utilizzata dal 15% degli utenti.
 
e tanto altro ancora..!
Questo lavoro è programmato per essere completato durante il ciclo di sviluppo di Ubuntu 18.10 e nel mentre il team Web continuerà ad implementare i dati su un sito web pubblico, ricordando che i dati utilizzati sono sicuri e anonimi.
 
 
il 09 July 2018 12.32

08 July 2018

Categoria: 

Dal suo lancio nell'ottobre 2004, Ubuntu è diventata una delle distribuzioni Linux più apprezzate e ha conquistato milioni di utenti in tutto il mondo. Uno degli aspetti più apprezzati di Ubuntu, oltre al fatto di essere software opensource, personalizzabile e modificabile, è l'attenzione posta da Canonical sulle politiche di sicurezza, di supporto e sulla cadenza dei rilasci.

 

Ubuntu ha annunciato la versione 17.10, detta anche Artful Aardvark, quasi 9 mesi fa, il 19 ottobre 2017. Come versione non LTS, la 17.10 ha una durata di supporto di 9 mesi e, in quanto tale, si sta avvicinando al termine del suo ciclo di vita che avverrà in data giovedì 19 luglio. Dopo tale scadenza, le Ubuntu Security Notices (note di sicurezza) di Ubuntu non includeranno più informazioni o pacchetti aggiornati per la versione 17.10.

 

Il percorso di aggiornamento consigliato per Ubuntu 17.10 è tramite il passaggio supportato a Ubuntu 18.04. Le istruzioni e i caveat per l'aggiornamento possono essere trovati nella wiki italiana alla pagina Installazione → Aggiornamento Bionic.

 

Ubuntu 18.04, trattandosi di una versione LTS(long-term support), continuerà a essere attivamente supportato, con aggiornamenti di sicurezza e correzioni di bug ad alto impatto, per i prossimi cinque anni. Consigliamo dunque a tutti gli utenti di Ubuntu 17.10 di effettuare l'upgrade a Ubuntu 18.04 LTS il prima possibile, così da mantenere un elevato livello di sicurezza sul proprio sistema e di beneficiare di tutte le novità che esso contiene.

 

Fonte: lists.ubuntu.com

il 08 July 2018 18.11

06 July 2018

Talvolta potrebbe accadere che, una volta avviato l'editor grafico GIMP, alla richiesta di avviare l'aiuto in linea tramite il comando Aiuto, presente nel menu Aiuto, compaia un messaggio di errore...
il 06 July 2018 14.57

05 July 2018

Può accadere, come è accaduto a me, che chi aveva installato una delle precedenti versioni del noto software RawTherapee per una delle tante versioni di Ubuntu, incorra nell'errore di segmentazione del programma durante il suo avvio, rendendone impossibile l'utilizzo.
il 05 July 2018 09.23

03 July 2018

Categoria: 

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

  • Full Circle Magazine Issue #134 in inglese
  • Atari VCS. Una nuova console per videogiochi basata su Ubuntu
  • LibreOffice Tirana Conference 2018
  • Notizie dalla Documentazione Wiki
  • 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 03 July 2018 20.13

27 June 2018

Solo tre mesi fa avevano annunciato il rilascio della versione 4.0 di Krita, e oggi viene rilasciata già la versione 4.1. In questo rilascio include dei nuovi strumenti di riferimento per le immagini che vanno a sostituirsi a quelli precedenti.
il 27 June 2018 13.23

26 June 2018

Categoria: 

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

  • Canonical annuncia Ubuntu come container per Amazon EKS
  • Sondaggio Full Circle Magazine 2018 ancora in corso
  • Zenkit disponibile come Snap per gli utenti Linux
  • Linus Torvalds ha deciso che il mondo non è pronto per Linux 5.0
  • Notizie dalla Documentazione Wiki
  • 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 26 June 2018 20.06
In questo post desidero semplicemente aiutare chi, come me, desidera uniformare visivamente i due software in oggetto, e suggerire una piccola modifica del file di configurazione di GIMP, per abilitare il posizionamento dei livelli sulle griglie.
il 26 June 2018 13.25

20 June 2018

CleanMyMac 3 as the Best App for File and Storage ManagementApple has Mac-based PCs that have great performance. All people acknowledge that most of the PCs from Apple with Mac OS are strong in performance, even it is very strong to handle all kinds of purposes, whether it is for gaming, business, and editing. These are of course supported by the best technology an software used by the Mac-based PCs. In this case, it does not mean that the PCs will not have many junk files. In fact, all PCs will have junk files since the files are used and there can be many trashes made automatically by the PCs. Unluckily, these junk files are bad and this can make the PCs’ performance much slower. That is why these junks must be removed and CleanMyMac 3 is the solution.

CleanMyMac 3 is the latest version of the app cleaner for Mac-based PCs. This software so far is the best app to manage the files and storages. This app can work well with the system of Mac, so this can scan, clean, and manage the files well. With this app, there will be no worries about the junks. All of the junks, old files ,and unused documents can be scanned in details and they can be cleaned, so the PCs can run much faster and better. As the spirit of Mac that provides simplicity and efficiency with high performance, CleanMyMac 3 also has the same spirit. This app is very easy to use, and people only need to use two buttons to make sure that all of the junks are fully removed. Its interface and other features are easy to access, as how Mac makes the PCs easy to use.

There are some great algorithms improved in this agen bola latest version of app to make sure that all data can be scanned thoroughly and users will only find the junks and unused or unnecessary files. In this case, users can also do some custom search to find some data that they want to remove. There are some lists of menus and filters to apply in searching the trashes and junks. All hidden files will not safe with this app since this can search every corner of the storage system, so all hidden files are uncovered and the junks can be fully removed.

il 20 June 2018 11.05

19 June 2018

Categoria: 

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

  • KDE Plasma 5.13 è qui – Ed è incredibile!
  • Il videogioco strategico opensource 0 A.D. è disponibile anche come Snap
  • Il supporto per Linux 3.2 e 4.1 è finito
  • 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 19 June 2018 17.04

13 June 2018

Types of E-commerce Platforms

Mattia Migliorini

When talking about e-commerce, it is important to get to know the varieties of type of such business form. Classification of e-commerce business platforms is done by basing it on the model of licensing, the scenario of sales, and the exchange of data. The first would be on-premises e-commerce. The licensing fees for this kind of e-commerce require initial one-time purchase investment. Its advantages include higher levels of customizability, secure data storage, and high performance. Its disadvantages include an initial investment of large size, self-maintenance, and technical knowledge.

The second is SaaS (software as a service) e-commerce. The delivery model of this e-commerce is cloud-based. Applications are managed and hosted in the data center of the judi bola service provider. Its advantages include solutions with great affordability, host and upgrade, scalability, and availability. Its disadvantages include limited system control and limited integration with back-end systems. The third type is Fully Managed (FM) E-commerce. The FM e-commerce begins as PaaS (Platform as a Service). It offers software and hardware for e-commerce. Services provided by FM e-commerce include marketing consulting, customer support, data management, image editing, and picture taking. B2B solution is the typical stores that receive FM e-commerce. The sales volume would be used as the licensing model.

The last type of e-commerce would be the open source e-commerce. Open source e-commerce is free of charge, meaning it does not come with licensing fees. Users of this e-commerce are directly responsible for everything from installation, maintenance, security, to configuration of the software right on their own servers. Open source e-commerce calls for technical expertise in terms of web design and development. Its advantages include a system that’s free of charge, a great range of extensions/plugins/add-ons, and higher levels of flexibility. Its disadvantages include requirement of technical knowledge, costs of hosting, and absence of standard integration with back-end systems.

il 13 June 2018 06.44

12 June 2018

Categoria: 

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

  • Ubuntu 18.04.1 uscirà il 26 luglio, Ubuntu 16.04.5 il 2 agosto
  • Xfce. Disponibile la nuova versione di Thunar basata su GTK+ 3
  • Piani per il desktop Ubuntu 18.10
  • 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 June 2018 20.07

11 June 2018

Getting to Know Some Important Things about Web DesignWeb design involves a specific set of tools and technologies. There are many kinds of tool involved with the activity and their roles depend on the part of process they are used in. Tools for web design are updated regularly over time with addition of newer standards and software. The only thing that remains the same with them would be the basic principles. Graphic editors of both raster and vector types are used by web designers to come up with web-formatted prototypes of imagery and design. Creating websites involves technologies such as W3C standards including CSS and HTML. These standards can be hand-coded or WYSIWYG-generated.

The content of websites can be statically or dynamically generated. Static websites store unique files for each page. The same content would be returned whenever a page is requested. Said content was created once during the process of designing the judi online website. The content would be authored manually but some websites resort to automated process. The latter method became popular in 2015 when software such as Adobe Muse and Jekyll popped up. A static website can be hosted in a much simpler way because its server only serves static content. Pages can be served quickly and server hardware costs much lower.

Dynamic websites use server-side technology to generate pages and the generating process is done on the fly. The content of these websites is extracted from at least one back-end database. When a dynamic website is designed, static pages are often used to create the mockup or the wireframe of the dynamic pages. Dynamic pages call for a skillset that is much broader than static pages. Typical languages used to develop dynamic web pages are ASP, PHP, or Perl. PHP and ASP use template approach: a server-side page that looks just like the structure of a complete page on the client side is used and data would then be inserted into the page using tags as guides.

il 11 June 2018 16.57

10 June 2018

A Short Story about the Evolution of Web DesignMicrosoft launched its own first competitive browser in 1996. The browser in question came complete with its very own tags and features. At the time of its release, the browser was also the first to include supports for style sheets, an authoring technique that was viewed as something obscure back then. The HTML markup for tables was initially meant for viewing tabular data. Designers quickly acknowledged that HTML tables can be used to create multi-column, complex layouts, which were something that was rather impossible to do back then. This was at a time when good markup structure was overlooked in favor of good esthetics and web accessibility and semantics were things that were paid little attention to.

Websites using HTML had limited design options. Complex designs were created by web agen sbobet using table structures that were complicated or blank spacer.GIF images in order that empty table cells could stop collapsing. In December 1996, CSS was introduced by the W3C as a means to support layout and presentation. HTML code benefitted from CSS in that it can be semantic instead of being both semantic and presentational. It also improved web accessibility.

Flash (known as FutureSplash back then) was developed in 1996. Flash content development tool at the time was way simpler compared to what it is today. It used basic drawing tools and layout, an early version of ActionScript, as well as a timeline. However, these features made it possible for web designers to work with things beyond HTML, JavaScript, and animated GIFs. Still, Flash required a plugin. And because of this, web developers were reluctant to use it out of fear of limiting market share caused by lack of compatibility. As a result, designers resorted to gif animations and JavaScript to make widgets. Flash found popularity in specific target markets and has since become a common mainstay in many browsers.

il 10 June 2018 16.17

05 June 2018

Categoria: 

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

  • È tempo per un nuovo Ubuntu Technical Board. Al via le candidature
  • UbuCon Europe 2018 - Analisi di un sogno
  • Ubuntu MATE e Ubuntu Budgie perdono il supporto hardware a 32 bit
  • Ubuntu 18.10 includerà l'integrazione Android?
  • 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 June 2018 20.34

02 June 2018

Some Tips to Do Before Buying Domain

Many people use website. Websites have important role nowadays. There are many kinds of things accessed through websites. People can find information and even buying stuffs by accessing the websites. In this case, maybe you are also interesting to have your own website. It is a good thing when you want to have it, but you need to make several consideration and considering or choosing the domain is the important one. Domain can be called as the address of your website. When people want to visit your website, they will need the domain and its extension. Because it has important role, of course you cannot choose or make domain name randomly. There should be good consideration about it.

The first thing is to consider the target of audience. It is important to consider this point. Of course, you have certain goals or targets when you decide to make website. In this case, your decision and goal may also have correlation with the target of audience. It means that you need to consider who are the readers or customers visiting the websites. It can be based on the age, gender, profession, and other things. You need to specify this things, so the domain can be easier to be found by your readers or target of audience. Then, if it is about business, it is better for you to consider your area. For example, if your business are for customers or audiences in California, you can include this town in the domain name, such as “Californiacarrental”. This will help audience in finding your website.

Then, when you are going to make domain name, you need to consider its length. This is important and it is better to have short domain. It can be better if it is easy to remember. This will be more effective compared to the longer name of website. People may be less interesting to type the name of the website. With more characters, people may also be hard to remember and memorize the domain. Of course, although you are going to make short domain, it does not mean that you can make similar domain to certain famous domain name. Some people may think that this is effective, but it is not true at all. It will not be effective and sometimes people will not remember it. The same case also happens when you choose slang word as the domain name. This may make people less interested to visit the website, although it may sound good or interesting. It is better to have shorter domain with your own creativity, and it is better to use the good spelling.

il 02 June 2018 07.05

30 May 2018

Categoria: 

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

  • Full Circle Magazine Issue #133 in inglese
  • Canonical sta implementando un servizio di migrazione da VMware a Ubuntu OpenStack
  • Malware trovato su Ubuntu Store
  • La GNOME Foundation riceverà 1 milione di dollari nel corso dei prossimi due anni
  • 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 30 May 2018 20.25

22 May 2018

A distanza d un mese dal rilascio dell'attesa versione 2.10 di GIMP, è stata già rilasciata un'ulteriore versione che va a sistemare diversi bug riscontrati e aggiunge altre interessanti novità, tra le quali il supporto al formato HEIF.
il 22 May 2018 13.00

19 May 2018

Vi informo che la pagina in oggetto è stata aggiornata in base al nuovo regolamento generale sulla protezione dei dati (RGPD), in inglese GDPR, General Data Protection Regulation - Regolamento UE 2016/679), per tanto vi invito a leggerla attentamente.
il 19 May 2018 08.30

12 May 2018

Categoria: 
Il 26 aprile Canonical ha rilasciato l'attesissimo Ubuntu 18.04 LTS, nome in codice Bionic Beaver. Come è noto agli utenti la 18.04 ha dato anche inizio al lavoro sulla prossima versione, cioè la 18.10Il fondatore Mark Shuttleworth, sul suo blog ha annunciato quali saranno le novità, tra cui il nome della nuova release Cosmic Cuttlefish, la quale sarà presto conosciuta come Ubuntu 18.10. Saranno inoltre previste tantissime novità tra cui:
  • Gnome 3.30 - L'uscita di Gnome 3.30 è in programma per il 6 settembre 2018, quindi ci sono buone probabilità che Ubuntu 18.10 sia disponibile con la nuova versione di Gnome;
  • Linux kernel 5.0 - La prossima versione del kernel Linux potrebbe essere Linux 5.0. Lo stesso Linus Torvalds ha svelato la probabile uscita durante l'estate 2018;  Ciò significa che Ubuntu 18.10 potrebbe essere fornito con Linux 5.0 o versioni successive;
  • Nuovo tema e icone - Una delle principali funzionalità previste in Ubuntu 18.04 era il nuovo tema GTK. Tuttavia a causa di molti bug in sospeso che risultavano inefficienti per una versione di supporto a lungo termine, queste funzionalità sono state trasferite nella 18.10. Nel mentre se si vuole testare il nuovo tema GTK, è possibile leggere l'articolo presente nel numero 2018.010 della Newsletter;
  • Nessuna versione Alpha/Beta, nuove "Testing Weeks" - A partire da Ubuntu 18.10 Cosmic Cuttlefish, il team  desktop ha deciso di abbandonare le release Alpha e Beta che nel mentre saranno sostituiti da ''Testing Weeks'', organizzati da martedì a giovedì. Questa organizzazione serve per garantire migliori test e processi di risoluzione dei bug;
  • Compressione Zstd in impostazione predefinite - A causa della maggiore velocità di decompressione rispetto a Gzip e ad altri programmi di compressione dei dati, l'algoritmo di compressione Zstd di Facebook sta diventando popolare, e potrebbe essere presente nelle impostazioni predefinite di Ubuntu 18.10; 
  • Ubuntu Studio - Il team di Ubuntu Studio prevede effettuare cambiamenti radicali per la prossima versione;
  • Desktop LXQt predefinito in Lubuntu - Anche Lubuntu si sta preparando per grandi cambiamenti nella versione 18.10, infatti il team di sviluppo è intenzionato ad utilizzare LXQt come ambiente desktop predefinito
 
Inutile dire che la nuova versione uscirà ad Ottobre, quindi nel mentre aspettiamo che Canonical annunci ufficialmente una data di rilascio per Ubuntu 18.10 Cosmic Cuttlefish.
E' possibile però scaricare le immagini quotidiane di Ubuntu 18.10 da questo link, facendo attenzione che essendo una build alla fase iniziale, è consigliabile installarla su una macchina virtuale e non su macchine principali.
 
Fonte:
 
il 12 May 2018 15.30

05 May 2018

Questa versione del sistema operativo sarà supportata fino ad aprile 2023. Per scoprirne tutte le novità potete consultare questa pagina, gestita dal gruppo della comunità italiana di Ubuntu. Trovate altre informazioni interessanti e le modalità di download ed installazione, nella pagina omonima del wiki, gestita dalla comunità internazionale di Ubuntu.
il 05 May 2018 15.39

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

03 May 2018

In questa versione, attesa davvero da molto tempo, ci sono molte novità e sono state apportate diverse soluzioni ad alcuni bug noti. Trovate tutte le novità presenti in questa versione nella pagina principale del loro sito, che credo inutile voler riportare su questo blog. Trovate qui le note di rilascio di questa versione e qualche mia annotazione.
il 03 May 2018 13.33

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

27 April 2018

In questo articolo conosceremo GPRename, un utilissimo programma per Linux che permette di rinominare in molti modi, anche parzialmente, il nome di molti file in una sola volta. Questo utilissimo programma mi è servito anche per altri scopi, ma in questo post desidero spiegarvi come l'ho utilizzato per indicare la proprietà delle mie foto, senza essere obbligato a leggere i dati EXIF di ogni singola fotografia.
il 27 April 2018 09.01

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.eu-central-1.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.

P.S: if you have found this article helpful and you’d like I write others, do you mind to help me reaching the Ballmer’s peak and buyme a beer?

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.

il 24 February 2018 08.40

09 February 2018


Un po' di storia

Qualche secolo informatico fa, nel 2001, una nuova distribuzione commerciale (dove per commerciale significa "a pagamento") apparve nell'arena Linux: Lindows. Dopo qualche bega legale e 20 milioni di dollari venne poi rinominata in Linspire. La distribuzione era una creatura del discusso imprenditore americano Michael Robertson, e aveva delle caratteristiche peculiari che la rendevano molto interessante: massima compatibilità con i principali programmi Windows (grazie all'uso di Wine), e facilità di installazione e aggiornamento grazie al software "Click and Run" (CNR). Voleva essere un ponte per traghettare gli utenti da Windows a Linux.

L'approccio estremamente pragmatico della distribuzione, che mescolava software libero con altro proprietario, attirò parecchie critiche, tanto che Richard Stallman arrivò a dire che "passare da Windows a Linspire non porta alla libertà ma a un padrone diverso".

Nonostante le critiche, la distribuzione ebbe un discreto successo, specie negli USA. Sull'onda del successo, Linspire finanziò altri progetti open source, e anche eventi molto importanti. Nel 2007 arrivò a stringere un accordo con Canonical per utilizzare CNR su Ubuntu (che mai si concretizzò) e un altro accordo con Microsoft per favorire l'interoperabilità con Windows.

Nonostante questo, Linspire si perse poi nelle spire del tempo, tra acquisizioni e cambi di management.

Il ritorno (eh?)

Qualche giorno fa ho letto della rinascita di Linspire (e della sua gemella Freespire). La forumula di vendita è pressoché uguale: Linspire costa 80 $ mentre Freespire è gratuita. La differenza di prezzo sta nel supporto telefonico per un anno, e nell'uso legale dei codec multimediali - sembra che in qualche parte del Mondo sia ancora un reato perseguito ascoltare MP3 senza possederne la licenza.

Lispire adesso è sviluppata da PC/OpenSystems LLC, una piccola azienda di Franklinton, North Carolina. La stessa azienda rilascia anche Black Lab Linux, una distribuzione - che non conoscevo - basata su Ubuntu.

Zombie (a)Live

Incuriosito da questa apparizione, ho deciso di provare sul campo Linspire 7.0. I 30 $ di prezzo minimo (senza supporto) mi hanno fatto desistere. Ho quindi ripiegato su Freespire 3.0 (gratuita), atteso pazientemente il download degli 1,5 GB, formattata una chiavetta USB e avviata la versione "live".


Il desktop di Freespire 3.0 si fa notare per la barra posizionata in basso, particolarmente grande, con una "f" sulla destra. Il tutto ricorda molto Windows 7, che è forse l'effetto voluto.


La scelta delle icone mi crea un certo disagio: sembrano create negli anni '90, senza un minimo di criterio e omogeneità.

Per questa prova "live" uso un portatile HP, su cui è installato Ubuntu 16.04 con hardware del tutto standard, ma il wi-fi non funziona. Brutto segnale, sintomo di carenza nei test pre-rilascio.

Facendo clic sulla "f" appare il menu principale, si tratta del menu Whisker, presente anche in Xubuntu. E qui cominciano i primi sospetti "Vuoi vedere che...".

Le applicazioni preinstallate sono:
  • browser Firefox Quantum
  • e-mail client Geary 
  • Abiword e Gnumeric per documenti e fogli di calcolo
  • Parole Media Player per i video
  • Pinta per disegno e fotoritocco
  • Audacious per la musica
e poco altro. A parte Firefox, la scelta delle applicazioni lascia molto perplessi, ce ne sono altre molto più complete di queste!

Una sorpresa divertente che conferma i sospetti quando faccio clic sul salvagente, icona di "Help".


"Signore e signori, ecco a voi Stanislao... ehr... Xubuntu, in uno dei suoi più riusciti travestimenti!"
Mi viene da ridere, o piangere. Tanto clamore e articoli per una Xubuntu camuffata, roba che un qualsiasi LUG può mettere insieme in un pomeriggio. Anche "About" di XFCE conferma il delitto.


Apro qualche programma a caso, giusto per vedere di cosa si tratta e noto delle incongruenze nel tema delle finestre tra i programmi, basati su librerie diverse.


Notate la differenza tra i pulsanti delle finestre in alto a destra del tool di Backup e Thunar?

La prova termina sostanzialmente qui, Xubuntu 16.04 la conosco, l'ho già installata su uno dei PC di casa, e funziona bene anche senza questi baffi posticci.

Considerazioni finali

Freespire differisce da Linspire per alcune applicazioni fondamentali: Abiword/Gnumeric (Linspire ha LibreOffice), Geary (Thunderbird), Firefox (Chrome), Audacious (Rhythmbox), Parole (VLC) che ne fanno una versione impoverita della sorella. Credo sia un modo per spingere le persone a comprare Linspire (you can't be serious!!), ma si tratta di una scelta discutibile per almeno un paio di motivi. Primo: tutti i programmi disponibili su Linspire sono gratuiti, e quindi appunto NON è una questione di prezzo. In più, gli sviluppatori devono sobbarcarsi la fatica di mantenere due distribuzioni diverse, ognuna con diversi tempi di sviluppo, e diversi bug da correggere.

Freespire non ha niente a che vedere con Linspire/Freespire delle origini. A tutti gli effetti è una Xubuntu 16.04 aggiornata (alcuni pacchetti sono più recenti) e personalizzata, ma neanche tanto bene: qualche scritta Xubuntu appare qua e là (vedi sopra), la grafica è a volte incoerente (vedi i menu delle finestre) e la scelta delle applicazioni preinstallate è avvilente.

Distrowatch - che è un sito molto più serio di questo blog - ha fatto una bella recensione (in inglese) di Freespire 3.0 e Linspire 7.0, che vi invito a leggere, se avete il gusto sadico di ravanare nel torbido.

Freespire è pensata per chi si avvicina a Linux, ma chi si avvicina a Linux ha già moltissime altre distribuzioni migliori tra cui scegliere, le prime tre che mi vengono in mente: Xubuntu, Linux Mint, ZorinOS.

Auguro la miglior fortuna agli sviluppatori di Linspire/Freespire: ne avranno bisogno.

L'immagine del post "Zombie Penguin" è di Olga Karvitska.
il 09 February 2018 11.15

07 February 2018

Chinotto omeopatico

Dario Cavedon (iced)

 

Anni fa feci un post sul "Mistero del Chinotto", in cui disquisivo sulla composizione delle bevande che si pregiano di tale denominazione (o sue varianti tronche). Il dubbio riguardava la presunta presenza di vero chinotto nella bevanda definita "chinotto".

Ho scoperto che un'azienda è si è preocuppata di segnalarne la percentuale. Da tenere presente che una qualsiasi aranciata, per fregiarsi della denominazione "aranciata" deve avere almeno il 12% di succo di arancia.

Nel riconoscere il merito a questa eccezione, dove altre aziende più prestigiose che si pregiano di prestigiosi presidi, non posso che apprendere con estremo sconforto che si tratta di una dose esigua: 0,05%, pari a 1 cucchiano da tè per 10 litri.
il 07 February 2018 15.20

25 January 2018

Di corsa

Dario Cavedon (iced)


Pochi sanno che da qualche mese ho iniziato a correre. All'inizio era per correr dietro a mia moglie, contagiata dal virus benefico del running. Poi ho preso l'impegno sul serio - come poche volte mi capita - vista anche l'impellente necessità di una vita più sana, dopo almeno vent'anni passati tra divano e scrivania del computer.

Per chi non corre è difficile capire le motivazioni dei runner. Direi una difficoltà simile la incontra chi usa Windows (=divano) e non ha mai usato Linux (=corsa). Sdraiati sul divano, è difficile capire cosa spinge una persona apparentemente normale, ad alzarsi il mattino presto (o la sera tardi) per andare fuori a correre, quando è troppo freddo, oppure troppo caldo, oppure potrebbe piovere da un momento all'altro come hanno detto in TV. Del resto chi è seduto sul suo Sistema Operativo Unico fa fatica a capire cosa spinge una persona apparentemente normale ad utilizzare un sistema totalmente diverso, che tocca imparare tutto un'altra volta e che (a volte) bisogna smanettare per farlo funzionare bene.

Beh, un Motivo per correre (e per usare Linux) non c'è. Uno solo non c'è, ce ne sono qualche migliaio. Se finora vi ho annoiato spiegando perché è cosa buona e giusta usare Linux (...e continuerò a farlo!), da oggi vi annoierò anche per spiegarvi perché è cosa buona e giusta mettersi un paio di scarpe da ginnastica e uscire a correre.

Sono sicuro che capirete.
il 25 January 2018 07.56

09 January 2018

Google Hash Code 2018 - Abruzzo

Ciao! 🙂
Per la seconda volta in Abruzzo ci sarà il Google Hash Code 2018, una competizione per gli informatici in cui si sfideranno proponendo la propria soluzione per una traccia che verrà rilasciata il giorno stesso della competizione.
Se sei curioso di sapere in maniera dettagliata i vari aspetti dell’evento o vuoi sapere come registrarti… continua a leggere!

Cos’è il Google Hash Code 2018?

Hash Code 2018 è una competizione a squadre organizzata da Google e che riguarderà principalmente la programmazione.
Quello che si dovrà fare è formare o scegliere un team, scegliere un linguaggio di programmazione da adottare con il tuo team e risolvere tutti insieme il problema di vita reale che sarà scritto e rilasciato da Google stessa il giorno della competizione.

La soluzione, una volta scritta in forma di codice, dovrà essere inviata sulla relativa piattaforma che vi permetterà di accumulare punti per conquistare un posto nella finale.
Fino a quando non scade il tempo, sarà ovviamente possibile inviare più di una soluzione potendo quindi accumulare sempre più punti.

Il tabellone dei punteggi si aggiornerà in tempo reale e saprai subito (non appena invii) quanti punti avrete totalizzato rispetto ad un altro team locale e globale.
I migliori team avranno modo di sostenere il round finale presso la sede GoogleDublino concorrendo anche per vincere spettacolari premi messi in palio. La maggior parte delle spese di viaggio, previa richiesta, potranno essere rimborsate.

Per quanto riguarda i premi abbiamo…

Round di qualificazione:

  • Gadget per i partecipanti iscritti al nostro HUB L’Aquila Developers

Round finale (ufficio Google a Dublino):

  • Prodotti relativi a Google per i migliori 3 team di valore minimo di 190€

Inoltre, alla fine del round finale verranno sorteggiati altri vincitori del round finale o di qualificazione e saranno premiati con prodotti relativi a Google per un valore tra i 10€ e i 100€.

E tu, sei pronto per la sfida? 🙂

Informazioni iscrizioni e luogo

Evento annullato a causa di mancato raggiungimento delle iscrizioni minime richieste.

Come iscriversi all’evento

  1. Entrare in QUESTA PAGINA per effettuare l’iscrizione generale all’evento compilando tutti i dati richiesti.
  2. Una volta revisionato e inviato il modulo, bisogna attendere che venga attivato il proprio profilo entro le 48 ore.
    Al fine di accelerare la procedura, vi consiglio di trovare persone per formare un team oppure cercarne uno.
    Un team può essere composto da minimo 2 persone e massimo 4 persone.
  3. Ricevuta l’email di avvenuta attivazione del proprio profilo, create il vostro team o unitevi ad uno esistente tramite link inviatovi da altri.
  4. [Obbligatorio] Un membro del team (che sarà di riferimento durante l’evento) dovrà recarsi nella sezione Hub (optional) in basso di QUESTA PAGINA e selezionare Italy nel primo riquadro e L’Aquila Developers nel secondo.

Una volta fatto ciò, siete pronti e, vi manderò ulteriori istruzioni da seguire il giorno della competizione.

 

Iscrivetevi e invitate tutti i vostri amici, colleghi e compagni di classe che sono interessati a partecipare!!
Tutti sono utili e nessuno è escluso 🙂

FAQ

  • Devi aver compiuto 18 anni entro il 1° Marzo.
  • Vige la regola del Fair Play, dopotutto ci si ritrova anche per passare una bella serata in compagnia 🙂
  • La soluzione finale verrà giudicata da una giuria di ingegneri Google! Non sarà possibile avere preferenze o meno.
    Tutti i dubbi verranno chiariti pubblicamente durante l’evento.
  • Sarà permesso di poter lasciare la sede per continuare a lavorare da casa. In sede è richiesta la presenza di almeno DUE membri del team. Pena esclusione totale dall’evento.
  • Per partecipare all’evento, dovrai portare il tuo computer portatile ed eventualmente, una ciabatta elettrica.
    Sarai responsabile dei tuoi oggetti così come per eventuali danneggiamenti e/o furti.
  • Sei libero di portare cibo e bevande mantenendo un ambiente pulito ed evitando l’uso di stupefacenti e/o alcool.
    Al fine di garantire ordine pubblico, sarà presente la squadra di emergenza che provvederà alla sicurezza e ai controlli durante l’evento.

Patrocinio

Sei un Ente e vorresti patrocinare l’evento Google Hash Code 2018? Fai clic su QUESTA PAGINA per inviare una richiesta.

Univaq Logo          Disim Logo


Sponsor

Sei un’azienda, associazione, etc, e vorresti sponsorizzare l’evento Google Hash Code 2018? Fai clic su QUESTA PAGINA per inviare una richiesta.


Stampa

Sei un giornalista o redazione e vorresti maggiori informazioni, pubblicare l’evento sulle tue piattaforme, fare interviste e simili? Fai clic su QUESTO LINK e vi risponderò in breve tempo.

L'articolo Google Hash Code 2018 – Abruzzo sembra essere il primo su Mirko Pizii | Grab The Penguin.

il 09 January 2018 13.55

05 January 2018

Vista frontale scatola Vidonn F1

Introduzione

Ciao! 🙂
In questo articolo andrò ad analizzare ogni singolo aspetto di una cuffia diversa dalle altre ossia Vidonn F1.
Vidonn F1 è una cuffia che sfrutta la conduzione ossea e che quindi potrai ascoltare l’audio attraverso le ossa del tuo cranio.
Ma vediamo in dettaglio come funziona la conduzione ossea e perché si dovrebbe privilegiare l’uso di questa tipologia di cuffie.

Conduzione Ossea: Descrizione e Perché Privilegiare

Come già anticipato, la conduzione ossea è una tecnologia che ti permette di ascoltare qualsiasi fonte audio attraverso le tue ossa.
Questo tipo di trasmissione viene effettuata in maniera del tutto automatica e a bassa latenza dalla cuffia Vidonn F1 in questo modo:

  1. Ricezione fonte audio (nel nostro caso da un dispositivo via Bluetooth)
  2. Traduzione fonte sonora in vibrazioni attraverso il componente di trasduzione ossea
  3. Le vibrazioni “viaggiano” attraverso le ossa per arrivare al nervo uditivo
  4. Il nervo uditivo convertirà la vibrazione in informazioni elettriche che arriveranno dritti nel nostro cervello.

Per quanto riguarda la raccomandazione, vi suggerisco di usare questa tipologia di cuffie nel caso siate degli sportivi, autisti, persone affette da disabilità come non vedenti, in quanto sarete in grado di ascoltare sia la fonte audio delle cuffie che l’ambiente che vi circonda, quindi, la cuffia rispetta il codice della strada.

Nota: La cuffia Vidonn F1 permette di ascoltare qualsiasi fonte audio collegabile via Bluetooth come i telefoni e inoltre, sarete in grado di poter effettuare chiamate durante la guida grazie anche al microfono incorporato nella cuffia.

Unboxing Vidonn F1

Vista generale del contenuto della scatola Vidonn F1

Partendo da sinistra abbiamo:

  • Libretto di certificazione e garanzia
  • Cavo USB-Micro USB per ricaricare il dispositivo
  • Tappi marchiati 3M per isolarsi dal suono ambientale (DA USARE SOLO IN AMBIENTI SICURI)
  • Manuale d’uso della cuffia Vidonn F1
  • Cuffia Vidonn F1

Caratteristiche Tecniche

  • Bluetooth: versione 4.1 fino a 10 metri
  • Risposta in frequenza: 20Hz – 20kHz
  • Autonomia in standby: 7 giorni
  • Autonomia d’ascolto: 6 ore
  • Tempo per il caricamento della batteria: 1 ora e 30 minuti
  • Grado di protezione per acqua e sudore: IP55
  • Espansione dei bassi con settaggio EQ
  • Microfono con soppressione CVC dual noise
  • Suono stereo dinamico
  • Riduzione della dispersione audio con LeakSlayer
  • Materiale: lega di Titanio, TPU
  • Peso: 38 grammi
  • Garanzia 2 anni

Design e Comfort

Vista laterale cuffia Vidonn F1

La cuffia si presenta esteticamente molto bene e i materiali di costruzione sono molto solidi al tatto.
I materiali utilizzati sono essenzialmente due di cui troviamo plastica rigida all’esterno e all’interno dell’archetto vi è la lega di titanio in modo da garantire robustezza, leggerezza e resistenza alla rottura dovuta alla torsione della cuffia.

Sotto uso intenso la cuffia non provoca alcun tipo di bruciore, surriscaldamento o fastidio ed è ben tollerato dalla pelle umana anche in caso di sudore intenso.
In caso di sudore, si può pulirlo con un panno morbido e asciutto e torna come nuovo.
Grazie alla certificazione IP55 la cuffia garantisce il corretto funzionamento anche in caso di pioggia leggera e alla polvere.

Per quanto riguarda la progettazione, il design permette di indossare comodamente questo dispositivo assieme ai caschi di protezione come quelli lavorativi o casco semi integrale.
Per poterli utilizzare, basta indossarli con i trasduttori (le due parti rotonde/colorate) che fanno presa sulle ossa davanti l’orecchio con le aste che si adagiano comodamente sopra le vostre orecchie. Infine, accendere la cuffia con il tasto Volume + sulla destra.

Funzionalità dei tasti

Sulla cuffia Vidonn F1 troviamo tre tasti tra cui: Volume su (+), Volume giù (-), Tasto multifunzione.
Il tasto Volume su permette di alzare il volume audio o, se premuto a lungo, di accendere la cuffia.
Il tasto Volume giù invece, come dice il nome, di abbassare il volume audio.

Se si tiene premuto il tasto Volume su anche dopo aver l’avvertimento sonoro di accensione, si entrerà nella fase di accoppiamento e potrete quindi collegarvi con il vostro telefono o computer attivando il bluetooth e selezionando il dispositivo Vidonn F1.

Il tasto più importante e usato più spesso è quello multifunzione e abbiamo i seguenti casi:

  • Riproduzione/pausa musica: Premere una volta
  • Passare alla canzone successiva: Premere due volte consecutivamente mentre la musica è in riproduzione
  • Rispondere/terminare una chiamata: Premere una volta e si sentirà un avvertimento sonoro
  • Rifiutare una chiamata: Tenere premuto per 3 secondi e si sentirà un avvertimento sonoro
  • Ripristino impostazioni di fabbrica: Tenere premuto Volume giù (-) insieme al tasto multifunzione

Qualità audio e durata della batteria

Stressando la cuffia per diversi giorni e con qualsiasi genere musicale posso dire che la cuffia si è comportata abbastanza bene mostrando quindi stabilità ed affidabilità.
Durante i test ho avuto la percezione che venga effettuata una equalizzazione automatica, soprattutto quando nel caso di boost dei bassi.
Con questa sorta di equalizzazione la fonte audio veniva normalizzata e, nonostante i bassi molto sparati (se fosse stato necessario), l’audio non risultava in nessun modo gracchiante o con presenza di ronzii.

Le ore di autonomia dichiarati sono 6 dopo diversi cicli di ricarica e, mio malgrado ho riscontrato che al massimo volume (che vi sconsiglio profondamente per evitare un possibile danneggiamento all’udito), rispetto ai concorrenti, tende ad essere scarico raggiunte le 3 ore circa.
Bene ma non benissimo!

Conclusioni

Dopo i numerosi test posso dire che la cuffia Vidonn F1 si è comportata abbastanza bene anche se ci sono piccoli dettagli da migliorare come aggiungere altre funzionalità al tasto multifunzione e ovviamente migliorare la resa audio che, seppur banale, nei 20Hz dichiarati, non percepisco alcun suono rispetto ai prodotti concorrenti.

Tutto sommato sono soddisfatto e per il prezzo che viene offerto è una valida ed ottima alternativa, anche per sperimentare un po’ il sistema della conduzione ossea.

Dove acquistare

Le cuffie Vidonn F1 possono essere acquistati dai rivenditori autorizzati di IperGo o semplicemente da Amazon al modico prezzo di 79,97€

E voi, cosa ne pensate? Per qualsiasi domanda, dubbio o problema, sentitevi liberi di commentare sotto e sarò felice di rispondervi.

L'articolo Recensione cuffia Vidonn F1 sembra essere il primo su Mirko Pizii | Grab The Penguin.

il 05 January 2018 17.13

16 December 2017

There is a wonderful blog post from PayPal in which it is introduced a very easy way to set a payee in your express checkout flow, but sadly there are some open issues with that.

Here the same is provided using the PayPal PHP SDK.

Please remember to change some values in order to test it (every file has its own comment to tell which variable to change). Also, obviously, the credentials should be stored in a secure way when in a production environment.

You can find the complete code, as usual, on my github profile.

il 16 December 2017 13.05

28 November 2017

At fleetster we have our own instance of Gitlab and we rely a lot on Gitlab CI. Also our designers and QA guys use (and love) it, thanks to its advanced features.

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 very rich technical documentation, but it lacks a generic introduction for whom want to use it in an already existing setup. A designer or a tester doesn’t need to know how to autoscale it with Kubernetes or the difference between an image or a service.

But still, he needs to know what is a pipeline, and how to see a branch deployed to an environment. In this article therefore I will try to cover as many features as possible, highlighting how the end users can enjoy them; in the last months I explained such features to some members of our team, also developers: not everyone knows what Continuous Integration is or has used Gitlab CI in a previous job.

If you want to know why Continuous Integration is important I suggest to read this article, while for finding the reasons for using Gitlab CI specifically, I leave the job to Gitlab.com itself.

Introduction

Every time a developer changes some code he saves his changes in a commit. He can then push that commit to Gitlab, so other developers can review the code.

Gitlab will also start some work on that commit, if the Gitlab CI has been configured. This work is executed by a runner. A runner is basically a server (it can be a lot of different things, also your PC, but we can simplify it as a server) that executes instructions listed in the .gitlab-ci.yml file, and reports the result back to Gitlab itself, which will show it in his graphical interface.

When a developer has finished implementing a new feature or a bugfix (activity that usual requires multiple commits), can open a merge request, where other member of the team can comment on the code and on the implementation.

As we will see, also designers and testers can (and really should!) join this process, giving feedbacks and suggesting improvements, especially thanks to two features of Gitlab CI: environments and artifacts.

Pipelines

Every commit that is pushed to Gitlab generates a pipeline attached to that commit. If multiple commits are pushed together the pipeline will be created only for the last of them. A pipeline is a collection of jobs split in different stages.

All the jobs in the same stage run in concurrency (if there are enough runners) and the next stage begins only if all the jobs from the previous stage have finished with success.

As soon as a job fails, the entire pipeline fails. There is an exception for this, as we will see below: if a job is marked as manual, then a failure will not make the pipeline fails.

The stages are just a logic division between batches of jobs, where doesn’t make sense to execute next jobs if the previous failed. We can have a build stage, where all the jobs to build the application are executed, and a deploy stage, where the build application is deployed. Doesn’t make much sense to deploy something that failed to build, does it?

Every job shouldn’t have any dependency with any other job in the same stage, while they can expect results by jobs from a previous stage.

Let’s see how Gitlab shows information about stages and stages’ status.

pipeline-overview

pipeline-status

Jobs

A job is a collection of instructions that a runner has to execute. You can see in real time what’s the output of the job, so developers can understand why a job fails.

A job can be automatic, so it starts automatically when a commit is pushed, or manual. A manual job has to be triggered by someone manually. Can be useful, for example, to automatize a deploy, but still to deploy only when someone manually approves it. There is a way to limit who can run a job, so only trustworthy people can deploy, to continue the example before.

A job can also build artifacts that users can download, like it creates an APK you can download and test on your device; in this way both designers and testers can download an application and test it without having to ask for help to developers.

Other than creating artifacts, a job can deploy an environment, usually reachable by an URL, where users can test the commit.

Job status are the same as stages status: indeed stages inherit theirs status from the jobs.

running-job

Artifacts

As we said, a job can create an artifact that users can download to test. It can be anything, like an application for Windows, an image generated by a PC, or an APK for Android.

So you are a designer, and the merge request has been assigned to you: you need to validate the implementation of the new design!

But how to do that?

You need to open the merge request, and download the artifact, as shown in the figure.

Every pipeline collects all the artifacts from all the jobs, and every job can have multiple artifacts. When you click on the download button, it will appear a dropdown where you can select which artifact you want. After the review, you can leave a comment on the MR.

You can always download the artifacts also from pipelines that do not have a merge request open ;-)

I am focusing on merge request because usually is where testers, designer, and shareholder in general enter the workflow.

But merge requests are not linked to pipelines: while they integrate nice one in the other, they do not have any relation.

download-artifacts

Environments

In a similar way, a job can deploy something to an external server, so you can reach it through the merge request itself.

As you can see the environment has a name and a link. Just clicking the link you to go to a deployed version of your application (of course, if your team has setup it correctly).

You can click also on the name of the environment, because Gitlab has also other cool features for environments, like monitoring.

environment

Conclusion

This was a small introduction to some of the features of Gitlab CI: it is very powerful, and using it in the right way allows all the team to use just one tool to go from planning to deploying. A lot of new features are introduced every month, so keep an eye on the Gitlab blog.

For setting it up, or for more advanced features, take a look to the documentation.

In fleetster we use it not only for running tests, but also for having automatic versioning of the software and automatic deploys to testing environments. We have automatized other jobs as well (building apps and publish them on the Play Store and so on).

Speaking of which, do you want to work in a young and dynamically office with me and a lot of other amazing guys? Take a look to the open positions at fleetster!

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.

P.S: if you have found this article helpful and you’d like we write others, do you mind to help us reaching the Ballmer’s peak and buy me a beer?

il 28 November 2017 21.00

16 November 2017

Recently I had to move a Magento 1.7 (if you are in a similar situation, please suggest to upgrade at least to Magento 1.9.X) website from a Linux server with SSH access to an hosting solution that has only FTP and a CPanel access.

The first two parts are generic, the third is specific for a Magento 1.X website migrated to a new web hosting with PHP7 only.

First part: The DB migration

How to move a large MySQL database to the new hosting?

Obviously you cannot think to upload it with PhpMyAdmin or similar, even if you try to compress it. Too large.

So a solution can be to split somehow the DB in smaller chuncks, and upload the chunks one by one.

Let’s start.

Step 1: Backup

Let’s say the our database is called lsdb, with the mysql user username with the privileges to perform this backup.

We can use a tool like mysqldump as follows (very simple version here, take a look at  man mysqldump for your options, or use your preferred tool to perform a backup):

mysqldump -u username -p lsdb > lsdb_dump_20171116.sql

Enter the password for username.

Step 2: Split the big dump in smaller parts

We can use the split linux command for this.

We can choose to split by size of output file (ex.: maximum 20 megabytes). The tool will not cut a line because it pays attention to line breaks.

 split -C 20m --numeric-suffixes lsdb_dump_20171116.sql dump_sect_

Now we have a series of dump_sect_XY files, where X and Y are numbers.

We can compress them, too, before uploading it. For the solution adopted in this article (next section), we are going to compress the files with gzip, even if I prefer .tar.bz2 files.

for x in dump_sect_*; do gzip $x; done

So we have now a series of dump_sect_XY.gz files.

Step 3: Importing the database with a tool

You can think to import the generated files through PhpMyAdmin, too.

If you do not have timeouts, or you want to create smaller but many other chunk files, it can be a solution.

Anyway, you will still suffer of foreign keys check problems.

Another solution is to use a tool: bigdump for example. It supports few file types, check the website for additional information and to choose your preferred one (this is why I have adopted the gz files).

With bigdump, you can upload through FTP or the CPanel file manager all the DB dump chunks in the same directory as the bigdump.php file. At this point, pointing to the bigdump.php URL in your browser, you will see the list of the chuncks, with a button to start the import process.

The only thing you have to do once you have downloaded the PHP file is to edit it to change the database name, username, password and host, according to the ones of your new web hosting.

Now you can upload it through FTP, too.

Let’s say that we have created a /dump directory containing the chunks and the bigdump.php file.

We can now point our browser to http://mynewhost/dump/bigdump.php to see the list of our chunk files and start importing our chunks one by one!

Step 3.1: Foreign key checks problems

If you have problems importing the chunks because of foreign keys problems, please clean the tables of your DB before continue.

Now, let’s modify the bigdump.php file, specifically we want to use the pre-queries: SQL queries to be executed at the beginning of each import session.

Edit the bigdump.php file.

Find and decomment the line:

// $pre_query[]='SET foreign_key_checks = 0';

This will disable the foreign key checks for the import session, and you can import your dump without problems.

Upload again in the dump/ directory and retry again in your browser.

Part 2: the code

Now we have finished the hardest part, the DB, and we have to upload our files.

Here there is not so much you can think of. An FTP upload of a compressed file is probably the fastest way to accomplish this task.

You can extract the compressed file with the CPanel File Manager as shown below:

extract cpanel file manager

Part 3: Magento 1.X and PHP7

There are some core files that need to be changed in order to fix some errors shown running Magento 1.X with PHP7.

As usual you should never change core files, there are a lot of articles around to show how to perform these tasks.

I suggest Overriding Magento blocks, models, helpers and controllers by Inchoo.

Please note that Inchoo has developed a PHP 7 compatibility extension for Magento 1.X, too, by I have not tried that.

Now, let’s see where the errors are.

app/code/core/Mage/Core/Model/Layout.php:
Fatal error: Uncaught Error: Function name must be a string in app/code/core/Mage/Core/Model/Layout.php:555

In PHP7 should be explicitly stated that you are calling the $callback variable as a function.
So you should change

$out .= $this->getBlock($callback[0])->$callback[1]();

with

$out .= $this->getBlock($callback[0])->{$callback[1]}();

Similar error happens for

 Uncaught Error: Function name must be a string in lib/Varien/File/Uploader.php:259

We are going to change

$params['object']->$params['method']($this->_file['tmp_name']);

wth

$params['object']->{$params['method']}($this->_file['tmp_name']);

Other changes:

app\code\core\Mage\ImportExport\Model\Export\Entity\Product\Type\Abstract.php:99

This issue affects the export functionality of Magento.
So replace this:

$data['filter_options'] = $this->$data['options_method']();

with

$data['filter_options'] = $this->{$data['options_method']}();

Another export problems, but for customers, is found at:

app\code\core\Mage\ImportExport\Model\Export\Entity\Customer.php:250

Here, replace:

$data['filter_options'] = $this->$data['options_method']();

with

$data['filter_options'] = $this->{$data['options_method']}();

A possible sessions error is related to:

     app\code\core\Mage\Core\Model\Resource\Session.php:218

The problematic code in this line can prevent your users to log in.

We have to typecast the variable returned by the read($sessId) function. Replace:

return $data;

with

return (string)$data;

There can be a problem with the grand total calculation and other deprecation warnings like the ones for iconv_set_encoding (this was true starting from PHP5.6).

Good sources for these and other problems are: How can solve error Magento 1.xx on PHP 7? (StackOverflow) and http://scriptbaker.com/tag/magento-1-9/.

il 16 November 2017 15.30

26 October 2017


Tempo di autunno (caldo), e tempo di Linux Day! Arriva il 28 ottobre, in parecchie città italiane l'appuntamento per eccellenza delle comunità FLOSS, quest'anno dedicato alla privacy e alla sicurezza online.

Il Linux Day è una manifestazione nazionale organizzata da Italian Linux Society, che si svolge contemporaneamente in molte città italiane, durante la quale LUG (Linux User Group) e associazione locali presentano le novità e i vantaggi dell’uso di Linux e del Software Libero a casa, nella scuola e nel lavoro.

Il tema del Linux Day di quest’anno è “riservatezza naturale”, ovvero la “privacy personale” che negli ultimi anni è stata rivoluzionata dall’avvento di Internet e di strumenti elettronici che permettono di condividere ogni aspetto della propria esistenza, e che hanno anche confinato la vita privata in ambiti sempre più ristretti.


Il comune cittadino che naviga su Internet, o che utilizza uno smartphone, si deve sempre più destreggiare tra virus come i ramsonware, Stati impiccioni e Giganti del Web che li fiancheggiano. E' però possibile sfuggire a questa morsa e vivere una sana vita digitale, senza doversi rifugiare su un'isola deserta. Essere consapevoli delle potenzialità e dei pericoli connessi all’utilizzo di app e smartphone è fondamentale per poter bilanciare la propria vita reale con quella online.

Anche a Schio


Con AVi LUG, il Linux Day arriva a Schio, con un programma ricco e accessibile a tutti. Saranno allestite due aree tematica. In “Area Talk”, presso l’Aula Studio del Comune, si svolgeranno una serie di talk dedicati a Linux, alla programmazione e alla cultura libera e condivisa. In “Area Demo”, presso l’Aula Informatica, ci sarà uno spazio dedicato a giochi per bambini, e uno spazio per l’assistenza e le dimostrazioni di Linux.

I talk del “Linux Day a Schio” dell’Area Talk avranno come tema: 
  • I certificati dei siti web, come funzionano e perché sono indispensabili
  • La navigazione sicura con Firefox, come evitare le trappole del Web
  • Le tante facce di Linux, quale è la migliore interfaccia utente per me?
  • La Privacy sulla Rete, mito o realtà?
  • Pensiero computAzionale e Python, una proposta per il Coderdojo
In “Area Demo” saranno organizzati giochi di carte e costruiti “Scrabot”, i simpatici robottini pittori (iniziativa per bambine e bambini dai 5 ai 10 anni).

Sempre in “Area Demo”, nella zona dedicata all’assistenza, sarà organizzato un “Install Party”: i soci AVi LUG aiuteranno chi vuole installare Linux sul proprio PC. Inoltre, saranno organizzate dimostrazioni, presentate soluzioni ai problemi più diffusi nella configurazione di Linux.

L’appuntamento è per sabato 28 ottobre 2017  a Palazzo Fogazzaro presso l’Aula Studio e l’Aula Informatica del Comune di Schio, in via Pasini 42 a Schio, dalle 15.30 alle 18.30.
L’ingresso è libero e gratuito.

La foto "Malware infection" è di Blogtrepreneur su Flickr.

il 26 October 2017 12.39

24 October 2017




La campagna di crowdfunding lanciata da Purism per il suo progetto di smartphone libero e rispettoso della privacy "Librem 5" ha ampiamente superato i 2 milioni di dollari, ben oltre il minimo necessario al suo finanziamento, fissato a 1,5 milioni. Per tenere a freno l'eccesso di entusiasmo dei Linux Boys, sottolineo che i volumi sono davvero modesti, per non dire irrisori, poco più di 3.000 pezzi preordinati. Librem 5 comunque concretizza la possibilità di un'alternativa ai sistemi proprietari dominanti, nonostante le incognite che comunque ne offuscano un luminoso orizzonte.



Un applauso va fatto ai ragazzi di Purism, per il coraggio e per il lavoro fatto finora!





il 24 October 2017 11.55

16 October 2017


La settimana scorsa ho avuto l'onore di essere ospitato dagli amici del LUG VI, per una serata sul tema "La svolta del desktop di Ubuntu, la distribuzione Linux più popolare".
Come sapete recentemente Ubuntu - per bocca del suo fondatore Mark Shuttleworth - ha scelto di abbandonare lo sviluppo di Unity, il proprio ambiente desktop, a favore di GNOME Shell, l’interfaccia predefinita di GNOME. Il nuovo volto di Ubuntu sarà visibile fin da Ubuntu 17.10 “Artful Aardvark” che sarà rilasciata tra qualche giorno, il 19 ottobre 2017. Questo cambiamento porterà, e in alcuni casi ha già portato, grossi cambiamenti, sia sul proprio PC che nel mondo Ubuntu in genere.

Con gli amici di LUG VI ho parlato di desktop e interfacce utente, divagando allegramente su Ubuntu Phone, pacchetti SNAP, derivate, e tanti altri argomenti connessi. Grazie al lavoro di +Stefano Spagnolo, il video del mio (lungo) talk è già disponibile su Youtube.

PS: ripeterò lo stesso talk domani sera martedì 17 ottobre a Schio, se siete in zona passate a trovarmi!

il 16 October 2017 16.41

07 October 2017

Aspettando Ubuntu 17.10 Artful Aardvark!

Ubuntu-it Gruppo Promozione

Categoria: 
Ubuntu 17.10 Artful Aardvark Party
Aspetta con noi Ubuntu 17.10! Vi aspettiamo giovedì 19 ottobre su ubuntu.it/party!
 
Ubuntu 17.10 Artful Aardvark sarà uno dei più grandi rilasci di Ubuntu degli ultimi anni: per festeggiarlo, la comunità italiana di Ubuntu ha organizzato un release party giovedì 19 ottobre!

Durante tutta la giornata, ci troverete in chat ad aspettare e commentare il rilascio insieme a voi, e la sera alle 21 si potrà seguire il live streaming di presentazione della release, in cui vari membri di Ubuntu-it insieme ad alcuni ospiti speciali spiegheranno tutte le novità rilasciate. Al termine del live streaming ci sarà anche uno spazio in cui risponderemo in diretta alle vostre domande!

Vi aspettiamo numerosi!

https://www.ubuntu-it.org/party

il 07 October 2017 11.21

19 September 2017

Stripe Shared Customers

Lorenzo Sfarra (twilight)

Introduction & Scenario

In a Stripe Connect scenario, a customer who makes a purchase from one of your connected sellers shouldn’t need to re-enter their credit card or bank account details to purchase from another seller.

Without Shared Customers, you will have to re-enter all the customer details, creating a Customer Object, on each connected account. With Shared Customers you are going to maintain a single reference to a customer in the platform account, and the association to a specific connected account will be accomplished by the use of a token the represent the customer.

For a Stripe Connect introduction that is needed to proceed with this article, please refer to the Stripe Connect Custom with Direct Charges article. Specifically, you have already created and verified a connected account.

Terms & Tools

Generic terms

  • Platform: it’s you!
  • Connected Account: that’s a vendor that will sell stuff through your platform;
  • Customer: a customer that will buy from a Connected Account;

Examples terms

  • {API_KEY}: That’s your key. Look at the Stripe documentation signed in with your account and they will fill it for you;
  • {CUST_ID}: that’s a customer ID;
  • {ACC_ID}: that’s a connected account ID;
  • {CUST_TOK_ID}: that’s a token representing a customer on an connected account;
  • {TOK_ID}: that’s a token representation of a payment source. Will be clearer when we are going to use it in the document.

Tools

I will use curl to perform API calls. No other special tools are used here.

Of course, a Stripe account is needed in order to try what’s written down in this article. I suggest to always have the Stripe dashboard opened in order to check in real-time the results of what we are going to do.

Shared Customer Creation

As stated before, when not using shared customers, you save the Stripe Customer objects on each individual connected Stripe account. To share customers, you instead save them on the platform Stripe account.

Platform Customer Creation

So let’s create a customer:

curl https://api.stripe.com/v1/customers \
 -u {API_KEY}: \
 -d description="Shared customer example" \
 -d email="sharedcustomer1@email.com"

The output of this procedure is an Customer Object.

For now, let’s take note only of the id that is the unique identifier for the newly created customer.

In the examples, as stated before, this will be indicated as {CUST_ID}.

Please note that there is no reference to a connected account, but we are creating it in the platform.

Associate a payment source to the customer

The easiest option to create a token that represents a customer payment method is to tokenise a card using Stripe Elements or Stripe Checkout.

Let’s refer to this token as {TOK_ID}.

We can now update the previously created customer:

curl https://api.stripe.com/v1/customers/{CUST_ID} \
 -u {API_KEY}: \
 -d source={TOK_ID}
  • adsense



  • Create a customer token

    As stated in the introduction, with Shared Customers you are going to maintain a single reference to a customer in the platform account. The association to a specific connected account will be accomplished by the use of a token the represent the customer.

    We can now create the customer token:

    curl https://api.stripe.com/v1/tokens \
     -u {API_KEY}: \
     -d customer={CUST_ID} \
     -H "Stripe-Account: {ACC_ID}"

    The output of this command will give us an id that we need to use in the next paragraph.

    Let’s refer to this id with {CUST_TOK_ID}.

    Create a customer in the connect account

    Last step. Finally, we can create the customer to the connected account easily, with only the token.

    Let’s do this:

    curl https://api.stripe.com/v1/customers \
     -u {API_KEY}: \
     -d source={CUST_TOK_ID} \
     -H "Stripe-Account: {ACC_ID}"

    The output of this procedure is an Customer Object.

    The id in the output is the unique identifier for the newly created customer in the connected account.

    il 19 September 2017 09.29

    15 September 2017

    Stripe Connect Custom with Direct Charges

    Lorenzo Sfarra (twilight)

    Introduction & Scenario

    The scenario covers a reader (you!) that wants to:

    • create a marketplace;
    • take some fee on every transaction between users of its website/app and a connected vendor;
    • guarantee a user-friendly experience for its vendors, in order to not let them front the procedures on the Stripe platform, but directly through its website/app communicating through APIs.

    If this is not your case, maybe it’s better to evaluate different types of Stripe Connect because they provide an easier experience for you, both from the technical side and the “bureaucratic” side (with Custom all the disputes – and relative fees – are faced by the platform).

    If this is your case, please continue!

    Terms & Tools

    Generic terms

    • Platform: it’s you!
    • Connected Account: that’s a vendor that will sell stuff through your platform;
    • Customer: a customer that will buy from a Connected Account;

    Examples terms

    • {API_KEY}: That’s your key. Look at the Stripe documentation signed in with your account and they will fill it for you;
    • {CUST_ID}: that’s a customer ID;
    • {ACC_ID}: that’s a connected account ID;
    • {TOK_ID}: that’s a token representation of a payment source. Will be clearer when we are going to use it in the document.

    Tools

    I will use curl to perform API calls. No other special tools are used here.

    Of course, a Stripe account is needed in order to try what’s written down in this article. I suggest to always have the Stripe dashboard opened in order to check in real-time the results of what we are going to do.

    Create & verify a connected account

    We are going to create an account and all the required fields.

    The second sub-paragraph is just a note to not be unprepared if your country acts a little bit differently from the one used in this example.

    Connected Account creation process

    We will start creating an account with some information in it.

    Then we will update the account with other required information. To create a verified account that will be able to process payments, please refer to the next sub-paragraph.

    Account creation

    curl https://api.stripe.com/v1/accounts \
     -u {API_KEY}: \
     -d country=IT \
     -d type=custom \
     -d legal_entity[first_name]="John" \
     -d legal_entity[last_name]="Doe" \
     -d legal_entity[type]=individual \
     -d legal_entity[dob][day]=12 \
     -d legal_entity[dob][month]=12 \
     -d legal_entity[dob][year]=1992 \
     -d legal_entity[address][city]=Rome \
     -d legal_entity[address][country]=IT \
     -d legal_entity[address][line1]="Via Nazionale" \
     -d legal_entity[address][postal_code]=00184

    Let’s have a look.
    We have now created a connected account passing custom as the type (we are creating it for a Connect Custom solution).

    The entity type is individual because the example is for an individual, but it can be company, too.

    There is no need to analyse the rest of the params, so let’s go on.

    The output of this procedure is an Account Object.

    For now, let’s take note only of the id that is the unique identifier for the newly created account.

    In the examples, as stated before, this will be indicated as {ACC_ID}.

    ID document upload

    Now, we have to associate an ID document copy to the account. Assuming that you have a PNG file on your desktop called id.png that contains the copy of the document, let’s launch the command:

    curl https://uploads.stripe.com/v1/files \
     -u {API_KEY}: \
     -H "Stripe-Account: {ACC_ID}" \
     -F purpose=identity_document \
     -F file="@/Users/lorenzo/Desktop/id.png"

    Please note the line -H “Stripe-Account: {ACC_ID}”.

    The output of this process is a File Upload Object.

    Let’s take note of the id, that we call {FILE_ID}.

    Now, we have to attach this file to the verification document section of the connected account:

    curl https://api.stripe.com/v1/accounts/{ACC_ID} \
     -u {API_KEY}: \
     -d legal_entity[verification][document]={FILE_ID}
    

    Now the account is verified. We need to associate a bank account where the connected account will be payed.

  • adsense



  • Bank account creation and association

    The example shows an Italian account, so we are going to associate an Italian bank account that accepts Euros as its currency:

    curl https://api.stripe.com/v1/accounts/{ACC_ID}/external_accounts \
     -u {API_KEY}: \
     -d external_account[object]=bank_account \
     -d external_account[account_number]='IT89370400440532013000' \
     -d external_account[country]=IT \
     -d external_account[currency]=eur

    The account number is taken from the bank numbers indicated by Stripe in its testing section.

    Accepting conditions

    The last step is to accept the conditions, please be sure to correctly inform the vendor about  the Stripe Terms of Service before performing this API call:

    curl https://api.stripe.com/v1/accounts/{ACC_ID} \
     -u {API_KEY}: \
     -d tos_acceptance[date]=1503302212 \
     -d tos_acceptance[ip]="VV.XX.YY.ZZ"
    

    Where date represents the timestamp when the account owner accepted Stripe’s terms, and ip represents the IP address from which the account owner accepted Stripe’s terms.

    Connected Account verification process

    When building a Connect platform using Custom accounts, you’ll need to collect the required verification information for each of your accounts, which varies by the Custom account’s country.

    That’s what the official documentation states about the verification process. So what we did before it’s for the Italian (but most part of European countries) accounts. Check the official documentation for the list for each country.

    Direct charges on the connected account and collect fees

    Now it’s time to let a customer pay a connected account.

    The easiest option here is to tokenise a card using Stripe Elements or Stripe Checkout.

    Let’s refer to this token as {TOK_ID}.

    curl https://api.stripe.com/v1/charges \
     -u {API_KEY}: \
     -d amount=10000 \
     -d currency=eur \
     -d source={TOK_ID} \
     -d application_fee=123 \
     -H "Stripe-Account: {ACC_ID}"

    The application_fee is capped at the total transaction amount minus any Stripe fees.

    Please note here that, when directly charging on the connected account, you can provide a token created using either your platform’s or the connected account’s publishable key.

    Conclusion

    That’s it.

    You should be now able to go to the dashboard and review connect accounts, fees, and so on.

    The next article in the series is about Stripe Shared Customers.

    Stay tuned!

     

    il 15 September 2017 12.34

    06 July 2017

    AfterShokz Trekz Titanium Front

    AfterShokz Trekz Titanium – La Cuffia Per Tutti!

    Ciao! 🙂
    Oggi analizzeremo assieme una nuova tipologia di cuffia che sfrutta una nuova tecnologia trasmissiva chiamata conduzione ossea.
    No, non è una tecnologia per parlare con gli alieni né provenienti da quest’ultimi e il ruolo di questa cuffia consiste in:

    1. Traduzione di una fonte audio in ingresso in vibrazioni
    2. La vibrazione viene trasmessa attraverso le nostra ossa del cranio fino ad arrivare nell’orecchio interno
    3. L’orecchio interno capta la vibrazione e tramite il nervo acustico percepiamo ciò che definiamo suono.

    I primi due punti vengono svolti efficacemente dalla cuffia che andremo ad analizzare e il suo nome in codice è AfterShokz Trekz Titanium.

    Prima di andare avanti, vorrei rispondere alla domanda che ti stai ponendo, ossia “Cosa vuoi dire per cuffia per tutti?“.
    Ciò che voglio intendere e, che approfondirò un dettaglio più avanti, è proprio che questa cuffia può essere usata sia dagli sportivi, dalle persone non udenti, non vedenti e dalle persone comune.

    Esatto, hai letto bene e sembra buffo ma anche le persone non udenti possono ascoltare una chiamata o una canzone se non hanno seri danneggiamenti alla coclea.
    Sì, anche per non vedenti e no, non ci sono problemi con l’ascolto dei suoni ambientali. Perché? Scopriamolo assieme! 🙂

    Unboxing AfterShokz Trekz Titanium

    AfterShokz Trekz Titanium unboxing

    Partendo da sinistra possiamo notare la nostra cuffia AfterShokz Trekz Titanium con la colorazione grigia/nera.
    Tranquillo, la cuffia essendo costituita da titanio, sopporta tutte le tensioni e difficilmente si romperà!
    Nella cuffia sono presenti tre bottoni, due per il volume (di cui uno fa anche da accensione/spegnimento) e uno che funge da tasto multifunzione che ti permette di cambiare traccia, attivare l’assistente vocale (del telefono) e tante altre cose.

    Oltre la cuffia troviamo i due libricini per la garanzia e per le istruzioni d’uso in lingua inglese e la sua scatola originale.
    Sul sito ufficiale è presente la traduzione italiana per le istruzioni d’uso.

    Infine all’interno della scatola è presente il cavo micro USB a USB per ricaricare la nostra cuffia, le due fitband per adattare la cuffia alle varie dimensioni delle nostre teste, una custodia per la cuffia e infine, da usare solamente in ambienti sicuri, due tappi per escludere i suoni dell’ambiente esterno.

    Ecco quale uno dei tanti vantaggi della conduzione ossea, permette a tutti di ascoltare sia il suono proveniente dalla AfterShokz Trekz Titanium e sia dall’ambiente attorno a noi 🙂

    Caratteristiche tecniche

    • Raggio senza fili: 10 m (33 ft)
    • Tipo di altoparlante: Trasduttori a conduzione ossea
    • Batteria: Ricaricabile agli ioni di litio
    • Frequenza di risposta: 20Hz~20KHz
    • Riproduzione continua: 6 ore
    • Sensibilità: 100 ± 3dB
    • Tempo di standby: 10 giorni
    • Microfono: -40dB ± 3dB
    • Tempo di caricamento: 1 ora e mezza
    • Versione Bluetooth: Bluetooth® v4.1 (possibilità di accoppiamento multiplo senza doverlo fare ogni volta quando si vuole collegare la cuffia ad un dispositivo diverso)
    • Peso: 36g (1,27 oz)
    • Profili compatibili: A2DP, AVRCP, HSP, HFP
    • Garanzia: 2 anni (se registrato)
    • Certificazione IP55 (resistente al sudore e polvere)
    • Doppio microfono per la cancellazione del rumore

    Impatto Generale

    In questi giorni la cuffia AfterShokz Trekz Titanium è stata davvero stressata in ogni condizione.
    Sotto al sole, sudore intenso, con forte raffiche di vento, in bicicletta, in macchina, da persone affette con disabilità e così via.

    Ciò che si è riscontrato a primo impatto è grande stupore per via del mezzo trasmissivo: la conduzione ossea non è una cosa che conoscono tutte le persone.
    Inoltre, in un primo momento (qualcosa come i primi cinque minuti se non si è abituati), è possibile riscontrare un leggero mal di testa, disorientamento e sensazione che l’audio delle cuffie sia davvero scarso a causa dell’influenza del rumore ambientale.

    Design e Comfort

    AfterShokz Trekz Titanium - lateral

    I materiali utilizzati per la costruzione di questo dispositivo sono di ottima qualità e vengono assemblati tra loro uniformemente e creano un mix tra essere leggero, solido e confortevole.
    Sotto uso intenso non scaldano e non creano alcuno slittamento, fastidio o bruciore in caso di sudore intenso. Per ripulirlo esternamente, basta passare un panno leggermente umido e torna come nuovo.
    Come detto in precedenza, non si presenteranno problemi in caso di pioggia leggera o di sudore intenso grazie alla certificazione IP55 che permette anche di resistere alla polvere in generale.

    Per quanto riguarda l’uso, basta accoppiarli (la prima volta), effettuare la connessione via bluetooth, scegliamo la canzone dal lettore musicale preferito e siamo operativi.
    Inoltre, la progettazione di queste cuffie è stata fatta in modo che non crei alcun fastidio durante l’uso di caschi, apparecchi uditivi, etc.

    Per indossarli basta appoggiarle la cuffia sopra le orecchie in modo che i trasduttori facciano presa sulle ossa davanti l’orecchio: come se si stesse indossando gli occhiali al contrario 🙂

    Funzionalità dei tasti presenti

    Come presentato, i tasti presenti sono esattamente tre.
    Una volta indossati, dietro l’orecchio destro si trova il primo che funge o da accensione/spegnimento (tenendolo premuto a lungo fino a quando non si sente una voce) oppure quello successivo che permette di abbassare il volume.
    Durante l’esecuzione di una canzone, se teniamo premuti assieme i due tasti del volume, si effettuerà un cambio dell’equalizzatore che ridurrà drasticamente i bassi: questa funzione è molto utile se dobbiamo ad esempio ascoltare un podcast.

    Sul lato sinistro invece, troviamo il tasto di multifunzione che ci permette di effettuare delle azioni se stiamo ascoltando la musica come pausa, play, cambio traccia, oppure ci permette di accettare o rifiutare una chiamata che ci viene segnalata in automatico tramite un suono inconfondibile.
    Se tocchiamo a lungo, partirà il nostro assistente vocale del telefono che potrà essere Siri o Google Now.
    In ogni operazione, possiamo fare a meno di tirare fuori il nostro telefono in quanto il tasto multifunzione ci permette di fare quasi tutto e ovviamente, è incorporato un doppio microfono che si attiva quando interagiamo con l’assistente vocale o rispondiamo ad una chiamata.

    Qualità del suono e durata della batteria

    La qualità del suono è semplicemente qualcosa di fantastico essendo supportato dal sistema PremiumPitch+™, però, tutto dipende dall’ambiente in cui vi trovate.
    Purtroppo avendo modo di sentire sia l’audio dalle cuffie e sia l’ambiente esterno, può dare la sensazione che l’audio sia distorto e di bassa qualità.
    Per migliorare la resa, se siete in un ambiente SICURO, potete indossare i tappi in dotazione e sentirete il suono che entra in maniera determinata nella vostra testa aumentando la vostra adrenalina.

    Rispetto alla concorrenza, la durata della batteria è ottima e ci si avvicina molto sulle 6 ore mentre per la ricarica, se la cuffia è completamente scarica, siamo esattamente sull’ora e mezza spaccata.

    Prestate particolarmente attenzione al volume però perché oltre alla sicurezza se siete in un ambiente chiuso o vicino alle altre persone, questi potranno sentire leggermente ciò che state ascoltando anche se l’azienda sta migliorando sempre di più per ridurre questo problema grazie alla tecnologia LeakSlayer™.

    Campagna di sensibilizzazione

    Sono venuto a conoscenza che l’azienda AfterShokz sta portando avanti una campagna di sensibilizzazione per tutti i sportivi e per tutti gli autisti.
    Questa cuffia Trekz Titanium, mira ad assistervi in tutte le funzionalità tra musica e chiamate senza però distogliere l’attenzione dalla strada ed altri pericoli connessi.

    Pertanto, considerando anche le nostre leggi italiane dove possiamo incorrere pesanti sanzioni se stiamo usando il telefono mentre guidiamo, la cuffia AfterShokz Trekz Titanium può essere una valida alternativa (N.B. non ho conferme in merito) alla classica cuffia o ad un impianto vivavoce (che porta ad effettuare lavori in macchina e ad essere non portabile) in quanto permette sia di ascoltare l’audio della cuffia che i suoni dell’ambiente esterno.

    Conclusioni

    Siamo giunti alla conclusione e sicuramente ti starai chiedendo se vale davvero la pena spendere 123€ da un e-commerce.
    Con tutto ciò che hai potuto leggere e da quello che posso dirti io sì, vale assolutamente la pena.

    Dico ciò sia per i benefici che porta a tutti e sia perché è un dispositivo stupendo che offre vantaggi per quando si è in macchina o si sta facendo sport e sia perché rende un po’ più alieni alla vista di altri. 🙂

    E non dimentichiamo i non vedenti! Grazie a ciò potranno usufruire dell’ascolto dell’accessibilità senza dover portare il telefono all’orecchio e rischiare di non sentire a causa del disturbo ambientale ed essere agevolati in caso arrivi una chiamata. Basta un tocco sul pulsante vicino l’orecchio, parleranno e la loro voce verrà captata anche dai microfoni delle cuffie… Semplice e il tutto a mani libere!

    Dove acquistare

    E’ possibile acquistare AfterShokz Trekz Titanium da Amazon seguendo questa pagina.

    Per qualsiasi necessità, dubbio, o problema, sono a vostra più completa disposizione nei commenti!

    L'articolo AfterShokz Trekz Titanium – La cuffia per tutti! sembra essere il primo su Mirko Pizii | Grab The Penguin.

    il 06 July 2017 14.24

    01 July 2017

    PCI Compliance made simple

    Lorenzo Sfarra (twilight)

    Are you trying to understand if your server has to be PCI compliant?
    Are you reading some docs around and the more you read, the more you are confused?

    Here’s some very simple and short tips for PCI compliance, according to Braintree and SecurityMetrics sources (you should check with your payment gateway / Qualified Security Assessor).

    This post is a very simple answer to the question: “Can I accept payments without redirecting to an external website with my NON-PCI compliant server(s)?

    If you have to:

    1. insert a new credit card during the checkout process,
    2. store the payment details in the Braintree (payment gateway) Vault for later use

    and your payment gateway gives you the chance to integrate an iframe or a solution similar to the Braintree Drop-In where the code is injected from the payment gateway servers, you can run your website on a NON-PCI compliant server.

    This does not mean that you can ignore the PCI compliance at all.

  • adsense



  • So, what you should do? You should qualify for the SAQ A. In fact:

    The card associations (VISA, MasterCard, Discover and American Express) have mandated that anyone accepting credit cards must become PCI compliant. We do require merchants to go through a Qualifies Security Assessor to help verify that your payments platform is compliant with rules established by the Card Associations.

    You’re still required to complete an annual SAQ in order to be PCI compliant.

    Please note that this is true if and only if the payment details are inserted only by the customer.

    If the customer communicates these details to someone of your organisation, then this will increase your scope of compliance.

    il 01 July 2017 13.38

    20 June 2017

    So,

    you are using the Magento2 APIs and you need to access a product.
    The core API forces you to access product by its SKU:

    GET /V1/products/:sku

    Sometimes you need to access a product by its ID, or by its URL key.

    Let’s see how we can create two simple APIs to perform this task.

    First of all, let’s fill your webapi.xml with the two routes we are going to use for this.

    Ex.:

    <route url="/V1/lorenzo-productbyurl/:urlKey" method="GET">
     <service class="Lorenzo\ProductBy\Api\ProductByInterface" method="getProductByUrl"/>
     <resources>
       <resource ref="anonymous"/>
     </resources>
    </route>
    <route url="/V1/lorenzo-productbyid/:id" method="GET">
     <service class="Lorenzo\ProductBy\Api\ProductByInterface" method="getProductById"/>
     <resources>
       <resource ref="anonymous"/>
     </resources>
    </route>

    Now we are going to define the interface cited in the previous XML file, declaring the two methods:

    interface ProductByInterface
    {
     /**
      * GET product identified by its URL key
      *
      * @api
      * @param string $urlKey
      * @return \Magento\Catalog\Api\Data\ProductInterface
      * @throws \Magento\Framework\Exception\NoSuchEntityException
      */
     public function getProductByUrl($urlKey);
    
     /**
      * GET product identified by its id
      *
      * @api
      * @param string $id
      * @return \Magento\Catalog\Api\Data\ProductInterface
      * @throws \Magento\Framework\Exception\NoSuchEntityException
      */
     public function getProductById($id);
    }

     

  • adsense



  • Ok, finally we are going to define the model that will implement this interface. Please be sure to update your di.xml accordingly.

     

    class ProductBy implements ProductByInterface
    {
    
     /**
      * @var \Magento\Framework\Api\SearchCriteriaBuilder
      */
     protected $searchCriteriaBuilder;
    
     /**
      * @var \Magento\Catalog\Api\ProductRepositoryInterface
      */
     protected $productRepository;
    
     /**
      * @var \Magento\Framework\Api\FilterBuilder
      */
     protected $filterBuilder;
    
     /**
      * @var \Magento\Framework\Api\Search\FilterGroup
      */
     protected $filterGroup;
    
     public function __construct(
       \Magento\Catalog\Api\ProductRepositoryInterface $productRepository,
       \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria,
       \Magento\Framework\Api\FilterBuilder $filterBuilder,
       \Magento\Framework\Api\Search\FilterGroup $filterGroup)
     {
       $this->productRepository = $productRepository;
       $this->searchCriteria = $searchCriteria;
       $this->filterBuilder = $filterBuilder;
       $this->filterGroup = $filterGroup;
     }
    
     /**
      * {@inheritdoc}
      */
     public function getProductByUrl($urlKey)
     {
       $this->filterGroup->setFilters([
       $this->filterBuilder->setField('url_key')->setConditionType('eq')
            ->setValue($urlKey)->create()]);
       $this->searchCriteria->setFilterGroups([$this->filterGroup]);
       $products = $this->productRepository->getList($this->searchCriteria);
       if (count($products) == 0) {
         return null;
       }
       $items = $products->getItems();
       foreach ($items as $item) {
         return $item;
       }
     }
    
     /**
      * {@inheritdoc}
      */
     public function getProductById($id)
     {
       return $this->productRepository->getById($id);
     }
    }
    

    Now you can access a product by ID with:

    GET /V1/lorenzo-productbyid/:id

    And by URL key with:

    GET /V1/lorenzo-productbyurl/:urlKey
    il 20 June 2017 10.36

    11 June 2017

    Plasma 5.10.1 disponibile per Kubuntu 17.04

    Ubuntu-it Gruppo Promozione

    Categoria: 

    Plasma 5.10.1, ultima versione stabile dell'ambiente di lavoro di Kubuntu, è ora disponibile per gli utenti di Kubuntu 17.04 Zesty Zapus.
    Rilasciato il 30 maggio, Plasma 5.10 raccoglie moltissime novità come Folder View che mostra l'anteprima del contenuto delle cartelle durante lo spostamento manuale dei file, comandi per la riproduzione multimediale nella schermata di blocco schermo, migliore supporto per il touch screen e moltissime altre funzionalità. Puoi consultare gli annunci di Plasma 5.10.1 e Plasma 5.10 per scoprire i principali cambiamenti introdotti.

     

     

    Per aggiornare Plasma su Kubuntu 17.04 è necessario aggiungere il PPA ppa:kubuntu-ppa/backports alla source list, come descritto in questa pagina, oppure tramite terminale digitando i seguenti comandi:

    sudo add-apt-repository ppa:kubuntu-ppa/backports
    sudo apt update
    sudo apt full-upgrade

    Il PPA Kubuntu backports contiene aggiornamenti anche per numerose altre applicazioni come Kmail, Kontact o Korganiser oltre al KDE Framework 5.34, pertanto aggiungendo questo PPA verranno scaricati e installati molti pacchetti aggiuntivi al solo Plasma 5.10. Tale PPA continuerà inoltre a ricevere aggiornamenti per le future versioni di Plasma 5.10.

    Va ricordato che questi aggiornamenti, pur rappresentando gli ultimi sviluppi del mondo KDE, non sono testati in maniera estensiva come avviene invece per i pacchetti forniti dall'archivio di Ubuntu e sono supportati in maniera limitata. Qualora si presentassero dei problemi, puoi fornire tutte le informazioni necessarie alla loro risoluzione tramite la mailing list del progetto o tramite i canali IRC #kubuntu e #kubuntu-devel su irc.freenode.net, oltre che a segnalare il problema su bugs.launchpad.net/kubuntu-ppa.

     

    Fonte: kubuntu.org

    il 11 June 2017 09.26

    10 June 2017

    Categoria: 

    GruppoDocumentazione/Blog/news_wiki03.png
    Foto originale: Pink and Blue by Ashwin Deshpande

    Ecco le novità introdotte nella documentazione della comunità italiana durante il mesi di marzo, aprile e maggio 2017.

     

    Aggiornamenti e novità

    • FAQ Gruppo documentazione: aggiornamento della pagina contenente le risposte alle domande più frequenti poste da chi si affaccia per la prima volta alla documentazione wiki, utile per sapere come è strutturata la documentazione della comunità italiana di Ubuntu e come contribuire.

    • FAQ Swap: revisione e aggiornamento della guida che raccoglie le domande più frequenti relative all'uso della swap.

    • Elenco Produttori: nuova pagina contenente un elenco di produttori che vendono modelli di PC con preinstallato Ubuntu, altre distribuzioni GNU/Linux oppure senza sistema operativo.

    • Timeshift: nuova guida per l'installazione e l'utilizzo di questo strumento per il backup e ripristino del sistema, simile a Ripristino configurazione di sistema di Windows e a Time Machine di MacOS.

    • Flatpak: guida all'utilizzo di questo nuovo formato di packaging, nato da un progetto di GNOME Foundation e Red Hat.

    • Alien: aggiornamento della guida dedicata allo strumento per installare su Ubuntu pacchetti di altre distribuzioni GNU/Linux, come Fedora, Red Hat, Slackware e altre.

    • Verifica Disco Fisso: revisione della guida che spiega come verificare il corretto funzionamento dei dischi fissi.

    • Spostare Home in Partizione Separata: revisione della guida che spiega come spostare la cartella Home in una partizione separata.

    • Carta Nazionale dei Servizi: aggiornamento della guida sull'utilizzo della Carta Nazionale dei Servizi e della Carta Regionale dei Servizi in Ubuntu, utilizzando Firefox o Chromium ed un lettore di smart card.

    • Multicd: aggiornamento della guida dedicata al programma che permette di creare un'immagine .iso contenente più distribuzioni live GNU/Linux.

    • Oracle Java: aggiornamento della guida che illustra i metodi per l'installazione delle versioni 6, 7, 8 e 9 del programma.

    • Programmazione/RenPy: nuova guida all'utilizzo del software ideato per la realizzazione di avventure grafiche, Kinetic Novel e RPG, compatibile con il linguaggio Python.

    • SMTube: nuova guida all'installazione di questo client di YouTube, che permette di vederne i video senza l'utilizzo di un browser web.

    • Scanner Epson: aggiornamento della guida all'installazione di diversi modelli di scanner Epson.

    • Lenovo Yoga 710-14IKB: resoconto dell'installazione di Ubuntu su questo modello di portatile.

    • Lenovo Thinkpad E470: resoconto dell'installazione di Ubuntu su questo modello di portatile.

    Come sempre ringraziamo tutti gli utenti che hanno contribuito all'aggiornamento e alla realizzazione delle guide wiki. Per maggioro informazioni, consulta la pagina Lavoro Svolto.

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

    il 10 June 2017 18.02

    02 June 2017

    Categoria: 

    Le FAQ della documentazione wiki hanno ricevuto un consistente aggiornamento.

    Di recente la pagina ha ottenuto diversi miglioramenti fra cui l'inserimento di immagini esplicative e nuove informazioni. Da segnalare in particolare la re-introduzione della pagina CastelliDiSabbia, utile anche a utenti non iscritti per fare pratica con la modifica delle pagine wiki.

    Nata nel Dicembre 2015, la pagina si è rivelata un utile strumento per ampliare il quadro delle informazioni utili agli utenti che si avvicinano alla documentazione wiki di Ubuntu-it.

     

    A differenza della pagina Partecipa che fornisce in modo pratico e sintetico quei 2/3 concetti base per essere subito operativi, le FAQ ampliano con più calma concetti e nozioni di vario tipo: cosa è un wiki e la logica che ne sta dietro, le informazioni di carattere pratico sull'utilizzo della piattaforma, la struttura organizzativa e molto altro. E tutto questo attraverso un linguaggio sintetico e scorrevole.

    Se hai qualche minuto di tempo e ti incuriosiscono gli argomenti legati alla documentazione wiki, leggi subito le FAQ. Ti aspettiamo!

     

     

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

     

    il 02 June 2017 09.27

    01 June 2017

    At fleetster we have our own instance of Gitlab and we rely a lot on Gitlab CI. How can be otherwise? We are a small team, with a lot of different projects (only in last month, we had more than 13.000 commits over 25 different projects, and we are only 10 - and I work part time).

    Automatizing as many development steps as possible (from build to QA to deploy) is helping us a lot, but sometimes we write some code and then forget about it. This is a disaster! We have some bugfix or some new feature ready, but it is forgotten in some branch somewhere.

    This is why we have, as policy, to push as soon as possible an to open a new MR, mark it as WIP, and assign to ourself; in this way Gitlab will remember to ourself we have a MR.

    You need to do 3 steps to achieve that:

    • Push the code
    • Click on the link that appears on your terminal
    • Fill a form

    But we are nerd. We are lazy. So one night, after a couple of beers, Alberto Urbano and I spent some hours to automatize a tasks that requires 10 seconds.

    Actually, the experience was quite fun, it was the first time we used Gitlab APIs and we learned things we will apply to others scripts as well.

    automation

    Image by Randall Munroe, xkcd.com

    The script

    With this script, every time we push a commit, Gitlab CI takes a look if the branch that commit belongs to has already a opened MR and, if not, it creates it. It then assigns the MR to you, and put WIP in the title to mark it as work in progress.

    In this way you cannot forget about that branch, and when you’ve finished writing code on it, you just need to remove the WIP from the title and assign to the right person to review it.

    In the end, this is the script we came out with (when you add to your project, remember to make it executable):

    #!/usr/bin/env bash
    # Extract the host where the server is running, and add the URL to the APIs
    [[ $HOST =~ ^https?://[^/]+ ]] && HOST="${BASH_REMATCH[0]}/api/v4/projects/"
    
    # Look which is the default branch
    TARGET_BRANCH=`curl --silent "${HOST}${CI_PROJECT_ID}" --header "PRIVATE-TOKEN:${PRIVATE_TOKEN}" | python3 -c "import sys, json; print(json.load(sys.stdin)['default_branch'])"`;
    
    # The description of our new MR, we want to remove the branch after the MR has
    # been closed
    BODY="{
        \"id\": ${CI_PROJECT_ID},
        \"source_branch\": \"${CI_COMMIT_REF_NAME}\",
        \"target_branch\": \"${TARGET_BRANCH}\",
        \"remove_source_branch\": true,
        \"title\": \"WIP: ${CI_COMMIT_REF_NAME}\",
        \"assignee_id\":\"${GITLAB_USER_ID}\"
    }";
    
    # Require a list of all the merge request and take a look if there is already
    # one with the same source branch
    LISTMR=`curl --silent "${HOST}${CI_PROJECT_ID}/merge_requests?state=opened" --header "PRIVATE-TOKEN:${PRIVATE_TOKEN}"`;
    COUNTBRANCHES=`echo ${LISTMR} | grep -o "\"source_branch\":\"${CI_COMMIT_REF_NAME}\"" | wc -l`;
    
    # No MR found, let's create a new one
    if [ ${COUNTBRANCHES} -eq "0" ]; then
        curl -X POST "${HOST}${CI_PROJECT_ID}/merge_requests" \
            --header "PRIVATE-TOKEN:${PRIVATE_TOKEN}" \
            --header "Content-Type: application/json" \
            --data "${BODY}";
    
        echo "Opened a new merge request: WIP: ${CI_COMMIT_REF_NAME} and assigned to you";
        exit;
    fi
    
    echo "No new merge request opened";
    

    Gitlab CI

    The variables used in the script are passed to it by our .gitlab_ci.yml file:

    stages:
        - openMr
        - otherStages
    
    openMr:
        before_script: []   # We do not need any setup work, let's remove the global one (if any)
        stage: openMr
        only:
          - /^feature\/*/   # We have a very strict naming convention
        script:
            - HOST=${CI_PROJECT_URL} CI_PROJECT_ID=${CI_PROJECT_ID} CI_COMMIT_REF_NAME=${CI_COMMIT_REF_NAME} GITLAB_USER_ID=${GITLAB_USER_ID} PRIVATE_TOKEN=${PRIVATE_TOKEN} ./utils/autoMergeRequest.sh # The name of the script
    
    

    All these environment variables are set by Gitlab itself, but the PRIVATE-TOKEN. A master of the project has to create it in its own profile and add to the project settings.

    To create the personal token you can go to /profile/personal_access_tokens on your Gitlab instance, and then you add to your pipeline following this guide

    Way to improve

    The script is far from perfect.

    First of all, it has 2 APIs calls, one to take the list of MR and one to take the default branch, to use it as target. Of course you can hardcode the value (in the end it shouldn’t change often), but hardcoding is always bad.

    Also, it uses python3 to extract the name of the target branch - this is just one of many possible solutions, just use what is available on your system. Apart from that, the script doesn’t have any external dependency.

    The other thing is how you need to set up the secret token to call the APIs. Luckily, Gitlab’s developers are working on a new way to manage secret token.

    Conclusion

    This was a very small and very simple example about how much powerful the Continuous Integration can be. It takes some time to setup everything, but in the long run it will save your team a lot of headache.

    In fleetster we use it not only for running tests, but also for having automatic versioning of the software and automatic deploys to testing environments. We are working to automatize other jobs as well (building apps and publish them on the Play Store and so on).

    Speaking of which, do you want to work in a young and dynamically office with me and a lot of other amazing guys? Take a look to the open positions at fleetster!

    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 :-)

    Bye for now,
    A. & R.

    P.S: if you have found this article helpful and you’d like we write others, do you mind to help us reaching the Ballmer’s peak and buy us a beer?

    il 01 June 2017 12.00

    19 May 2017

    Sometimes in your logic you have to save different model instances at once.

    Magento1 already had the concept of transaction, using the classic singleton model:

    Mage::getModel('core/resource_transaction')
    

    Magento2 has its concept of transaction, too, so let’s see with a simple example how to use this feature.

    Let’s say we have a DB table ‘table’ described as follows:

     

    +-----+--------+--------+
    | id  | field1 | field2 |
    +-----+--------+--------+

    We’ll have a \Some\Thing\Model\Table:

    class Table extends \Magento\Framework\Model\AbstractModel implements \Magento\Framework\DataObject\IdentityInterface {
      [..]
      public function __construct(
        \Magento\Framework\Model\Context $context,
        \Magento\Framework\Registry $registry,
        \Some\Thing\Model\ResourceModel\Table $resource,
        \Some\Thing\Model\ResourceModel\Table\Collection $resourceCollection,
        array $data = []
     ) {
        parent::__construct($context, $registry, $resource, $resourceCollection, $data);
     }
     [..]
    }

    And a classic \Some\Thing\Model\ResourceModel\Table that looks like this:

    class Table extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
    {
       /**
        * Set main entity table name and primary key field name
        *
        * @return void
       */
       protected function _construct()
       {
          $this->_init('table', 'id');
       }
    }

    So, let’s say that in our controller or API call we want to save different Tables at once.

    In the constructor we have to make clear some dependencies:

    public function __construct(
     [..]
     \Some\Thing\Model\TableFactory $tableFactory,
     \Magento\Framework\DB\TransactionFactory $transactionFactory
     ) {
      [..]
      $this->tableFactory = $tableFactory;
      $this->transactionFactory = $transactionFactory;
    }

     

  • adsense



  • In our logic there will be something like this:

    $transaction = $this->transactionFactory->create();
    foreach ($values as $field1 => $field2) {
      $tableInstance = $this->tableFactory->create();
      $tableInstance->setField1($field1);
      $tableInstance->setField2($field2);
      $transaction->addObject($tableInstance);
    }
    $transaction->save();

    So, at first we create a transaction instance from the transaction factory.
    Then, in each iteration in the foreach loop we create a table instance from the Table factory.

    We set all the required fields and then we add the instance to the transaction.

    The last step is to call the save() method of the transaction instance to save all the Table instances.

    Please note that, in case of errors, Magento2 performs a rollback:

    // Magento\Framework\DB\Transaction::save()#L143:L148
    if ($error) {
      $this->_rollbackTransaction();
      throw $error;
    } else {
      $this->_commitTransaction();
    }

     

    il 19 May 2017 11.06

    29 April 2017

    Categoria: 

    Villa Lattes - VicenzaLa DUCC-IT 2017 si terrà a Vicenza il 6 e 7 maggio prossimi. Ubuntu-it, la comunità italiana di Ubuntu, annuncia la Debian/Ubuntu Community Conference Italia 2017 (in breve DUCC-IT 2017), l'incontro delle comunità italiane di Debian e di Ubuntu in programma nei giorni 6 e 7 maggio 2017, presso Villa Lattes, in via Thaon di Ravel, Vicenza.

    Debian e Ubuntu sono tra le distribuzioni più importanti nell’ambito dei sistemi operativi liberi basati su GNU/Linux, e le rispettive comunità sono molto attive nel promuovere e partecipare allo sviluppo dei due progetti. L’esperienza della DUCC-IT 2017, che fa seguito alle edizioni tenutesi a Perugia, Fermo, Cesena e Milano, è rivolta sia ai membri delle rispettive comunità che a tutti gli appassionati di GNU/Linux e del Software Libero ed è un’ottima occasione per avvicinarsi e conoscere meglio queste realtà e il Software Libero.

    Il tema di DUCC-IT 2017 è “Open communities for a better world” (comunità aperte per un mondo migliore), a sottolineare il generoso contributo che le comunità hanno donato allo sviluppo e al supporto di GNU/Linux e del Software Libero in tutto il mondo, diventando anche una concreta possibilità occupazionale.

    Il programma è particolarmente ricco di spunti, rappresentato dal meglio delle Comunità Debian e Ubuntu, ma anche delle comunità Mozilla Italia, LibreItalia, Wikimedia e OpenStreetMap, accumunate dal tema di quest’anno “Open communities for a better world” - comunità aperte per un mondo migliore. I talk saranno ben sedici, tenuti da quindici relatori provenienti da tutta Italia.

    I talk in programma affronteranno tre filoni principali: utilizzo degli strumenti liberi, esperienze di software libero sul campo e come contribuire a progetti liberi. Il pubblico potrà interagire con i relatori, grazie a uno spazio apposito destinato all’approfondimento.

    Tra i numerosi ospiti confermati dell’evento figurano: Marina Latini, Presidente di The Document Foundation che sovrintende lo sviluppo della suite per ufficio LibreOffice, Roberto Guido Presidente di Italian Linux Society che organizza il Linux Day, Marco Chemello “wikipediano in residenza” di BEIC (Biblioteca Europea di Informazione e Cultura), Paolo Dongilli, coordinatore del Progetto FUSS della Provincia di Bolzano, per l’adozione di Software Libero nella scuola pubblica.

    Uno spazio sarà dedicato all’adozione di Zorin OS da parte del Comune di Vicenza, il sistema operativo basato su GNU/Linux che ha portato alla ribalta il comune Veneto tra i pionieri dell’innovazione nell’ambito della Pubblica Amministrazione.

    L’evento si tiene presso Villa Lattes, ospiti del Comune di Vicenza, che ha partecipato attivamente all’organizzazione dell’evento.

    L’accesso all’evento è libero e gratuito. Per chi arriva da fuori Vicenza, sul sito web dell’evento sono disponibili le informazioni su come arrivare in auto o con i mezzi pubblici. Per chi soggiorna a Vicenza, è stata stipulata una convenzione con l’Hotel Verdi.

    Informazioni dettagliate e il programma completo della DUCC-IT sono disponibili sul sito web dell'evento.

    il 29 April 2017 10.12

    27 April 2017

    Categoria: 

    Da quando è divenuta ufficiale la notizia che Ubuntu, a partire dalla versione 18.04 LTS, abbandonerà la shell di Unity per passare a GNOME come desktop predefinito, nella comunità si è mosso un vero e proprio fermento, in particolare di persone che non vogliono essere costrette a dover rinunciare al loro DE preferito. Sembrano lontani i tempi dei tanti detrattori di Unity e, ora che il progetto è stato ufficialmente abbandonato, se ne rimpiangono già le funzionalità uniche ed è palpabile in tutta la comunità l'amarezza per l'abbandono forzato.

     

    In tutto questo panorama, tanti utenti hanno deciso di passare immediatamente al futuro desktop di default e di cercare di renderlo il più possibile simile al buon vecchio Unity. Uno dei punti di forza della shell di GNOME è dato dalle estreme possibilità di customizzazione che questo ambiente mette a disposizione dei suoi utenti, grazie a semplici estensioni è possibile mutare l'aspetto e i comportamenti di ogni singolo componente della sua interfaccia. Rendere GNOME simile a Unity è estremamente semplice dal punto di vista estetico, mentre sul lato delle funzionalità non tutte quelle fornite dall'HUD di Unity sono, al momento, replicabili sul desktop di GNOME.

     

    Non esiste la Dash di Unity, anche se GNOME possiede un suo equivalente, non esiste il supporto al menu globale e la maggior parte delle applicazioni GNOME non utilizza i menu tradizionali delle applicazioni. Detto ciò, grazie ad alcune semplici estensioni di facile utilizzo e ad alcuni tweak, sarà immediato avere un ambiente desktop confortevole come quello originale di Unity. Il podcaster di Bad Voltage, Stuart Langridge ha postato ciò che ha fatto lui per trasformare la shell di GNOME in un'interfaccia del tutto simile a quella di Unity e il risultato ottenuto è davvero efficace.

     

    Langridge è riuscito nell'intento attraverso alcune estensioni opensource: Dash to Dock, per avere una Dash sul lato destro dello schermo e con il pulsante del launcher nella parte superiore; Better Volume, per modificare il volume con il mouse sull'indicatore del pannello; Top Icons Plus, per spostare la tray in alto a destra nel pannello superiore. Langridge ha inoltre utilizzato gli stessi temi che già utilizzava su Unity: Arc Darker GTK e Papyrus Icons. Attraverso l'applicazione GNOME Tweak è inoltre possibile attivare tutti i controlli delle finestre e spostare i pulsanti sulla sinistra, come risulta essere nell'interfaccia di Unity.

     

    Il risultato finale non è perfetto, ma è sicuramente decente e inoltre facilita il passaggio degli utenti Unity di vecchia data al nuovo desktop GNOME, che sarà di default su Ubuntu 18.04 LTS.

     

    Fonte: omgubuntu.co.uk

    il 27 April 2017 08.54

    13 April 2017

    Categoria: 

    È arrivato. Canonical ha ufficialmente rilasciato Ubuntu 17.04 e il sistema è disponibile per il download assieme a tutte le derivate, tra queste il debutto della nuova Ubuntu Budgie. Questo non è un normale rilascio di Ubuntu, si tratta potenzialmente dell'ultima versione della distribuzione con Unity 7 come unico desktop di default. Non è una certezza, ovviamente, ma sappiamo che Ubuntu ha intenzione di passare a GNOME per il rilascio di Ubuntu 18.04 LTS, previsto per il prossimo anno, ed è possibile che gli sviluppatori favoriscano la transazione in parte già dalla 17.10.

     

    Ubuntu 17.04 vede anche il termine dell'alfabeto per i nomi in codice, non sappiamo ancora se si ripartirà dalla lettera 'a' per portare avanti questa tradizione oppure se, anche sotto questo punto di vista, Ubuntu 17.04 segnerà la fine di un'epoca. Insomma, si tratta di un rilascio agrodolce per tutti gli appassionati di Ubuntu.

     

    Sul lato tecnico, Ubuntu 17.04 non avrà più necessità di partizioni di swap della dimensione di almeno due volte quella della RAM. Non ha più molto senso su sistemi moderni dotati di molta memoria ed è per questo che verrà utilizzato un file di swap con una politica di dimensionamento completamente diversa. Ubuntu 17.04 include il kernel Linux 4.10, che è una grande notizia per tutti coloro che utilizzano CPU AMD Ryzen o sistemi Intel Kaby Lake. I giocatori invece apprezzeranno molto anche l'utilizzo di MESA 17.0.2 e del server X.Org 1.19.2 incluso per impostazione predefinita.

     

    Sono inoltre state aggiornate quasi tutte le applicazioni di sistema ed è stata inclusa la versione 5.3 di LibreOffice, l'unica eccezione è il file manager Nautilus fermo alla 3.20 e Ubuntu Software alla 3.22, il resto è tutto adeguato al core recentissimo di GNOME 3.24.

     

    I motivi per installare e provare Ubuntu 17.04 ci sono tutti, perciò che cosa state aspettando?

     

    Fonte : omgubuntu.co.uk

    il 13 April 2017 16.39

    Ubuntu 18.04 avrà GNOME Desktop di default

    Ubuntu-it Gruppo Promozione

    Categoria: 

    Ubuntu 18.04 LTS, la prossima release con supporto a lungo termine del sistema operativo Ubuntu verrà rilasciata con l'ambiente desktop di GNOME al posto di Unity 7. Ubuntu 17.04 contiene già molti elementi dello stack di GNOME 3.24 e soltanto il file manager Nautilus rimane ancorato al branch 3.20 a causa delle incompatibilità con il desktop di Unity 7 della nuova versione.

     

    Unity 8 e la visione di Ubuntu sulla convergenza dei sistemi operativi, non sono più il futuro del computing che Canonical e il fondatore di Ubuntu, Mark Shuttleworth, avevano immaginato e preventivato. "Ho sbagliato su entrambi i fronti", ha rivelato lo stesso Mark. "Nella comunità i nostri sforzi sono stati visti come frammentazione e non come innovazione."

     

     

     

    Da'ora in avanti, Canonical concentrerà i propri sforzi sulle tecnologie cloud (OpenStack, LXD, kubernetes, Juju, MAAS, BootStack) e su IoT (Internet of Things), in modo da rendere Ubuntu Linux il sistema operativo più utilizzato sulle infrastrutture cloud sia private che pubbliche. La tecnologia Snappy proseguirà ad essere sviluppata, per via dell'elevata sicurezza che porta, del fatto di essere cross-distro e grazie al suo largo utilizzo nei dispositivi dell'IoT.

     

    Fonte : news.softpedia.com

    il 13 April 2017 13.30

    07 April 2017

    Categoria: 

    Annunciamo un nuovo Membro della Comunità: Giulio Leuci! :D

    Giulio è un membro del Gruppo Documentazione, dove ha portato la maggior parte dei suoi contributi, ma è anche un contributore di lunga data al forum.

    Ricordiamo che la membership, cioè il diventare un membro ufficiale della Comunità italiana di Ubuntu, è un riconoscimento per il prezioso e costante impegno svolto per la Comunità.

    Complimenti e auguri di buon lavoro Giulio!

    il 07 April 2017 18.33