Visto il periodo mi sono dovuto ricreare l'ufficio in casa, stampante compresa. Ho ritirato fuori quella gia' vista qui e sono iniziati i problemi. Mentre 4 anni fa la avevo installata senza troppi problemi adesso sulla mia Debian testing la stampante si ostina a andare in pausa appena avere ricevuto l'input
I log non sono di aiuto....sembra essere un problema nel passaggio tra Cups e Ghostview. Dopo un vano tentativo di fare un downgrade di Cups ho provato la strada di ricompilare tutto da sorgenti
Prima con apt-get remove ho disinstallato cups e poi compilato da sorgenti (ultima versione disponibile a questo indirizzo)
https://github.com/apple/cups/releases/tag/v2.3.1
Una volta riavviato il servizio
service cups start
ancora errori sul file di log ma questo volta era un problema legato a "Filter failed"
e' stato sufficiente montare questi pacchetti che la stampante ha ripreso vita
apt-get install cups-filters
apt-get install foomatic-db
apt-get install foomatic-db-gutenprint
sabato 21 marzo 2020
giovedì 19 marzo 2020
p7m e Linux
In questi giorni di telelavoro forzato mi sono trovato a lavorare sul mio portatile personale Linux invece della postazione lavorativa Windows con alcuni problemi legati ad alcuni software. Uno dei problemi e' stato quello di gestire gli allegati della PEC che in ufficio erano gestiti da Dike
Ho trovato una comoda soluzione in ArubaSign. In pratica si scarica l'installer da qui, di decomprime,si cambiano i permessi al file install.bat (che non e' un batch DOS ma uno script Python). Dopo di cio' e' sufficiente trascinare il file p7m su Verify e si puo' estrarre il documento
Ho trovato una comoda soluzione in ArubaSign. In pratica si scarica l'installer da qui, di decomprime,si cambiano i permessi al file install.bat (che non e' un batch DOS ma uno script Python). Dopo di cio' e' sufficiente trascinare il file p7m su Verify e si puo' estrarre il documento
venerdì 13 marzo 2020
Imagemagick cache
cercando di fare una gif animata partendo da circa 500 jpg ad alta risoluzione mi sono imbattuto nell'errore cache resources exhausted che non avevo mai incrociato
La soluzione per ovviare all'esaurimento della cache (sia di memoria Ram che di disco) e' editare
il file /etc/ImageMagick-6/policy.xml modificando i valori sottostanti
<policy domain="resource" name="memory" value="4GiB"/>
<policy domain="resource" name="map" value="512MiB"/>
<policy domain="resource" name="width" value="16KP"/>
<policy domain="resource" name="height" value="16KP"/>
La soluzione per ovviare all'esaurimento della cache (sia di memoria Ram che di disco) e' editare
il file /etc/ImageMagick-6/policy.xml modificando i valori sottostanti
<policy domain="resource" name="memory" value="4GiB"/>
<policy domain="resource" name="map" value="512MiB"/>
<policy domain="resource" name="width" value="16KP"/>
<policy domain="resource" name="height" value="16KP"/>
giovedì 12 marzo 2020
Accensione automatica da ricarica di telefoni Android
Per un nuovo progetto avevo bisogno di una funzione che trovo molto comoda su IPhone, ovvero l'avvio automatico da spento quando viene inserito il cavo USB collegato alla corrente, e che non avevo trovato su Android
Lo scopo poi e' quello di avviare in automatico una applicazione una volta terminato il boot
Frugando ho trovato che questa opzione e' facilmente disponibile nei Nexus con semplici comandi da fastboot
./adb reboot bootloader
./fastboot oem off-mode-charge 0
./fastboot reboot
A questo punto per rimuovere il lock screen di Android si va in Impostazioni/Sicurezza/Blocco schermo/nessuno
A questo punto sarebbe interessante avviare in automatico un app (od un servizio)
Per fare una prova ho usato Nexus 5 con Android 6 perche' le versioni piu' recenti
di Android rendono piu' difficile lanciare una app al boot in automatico
Si vede modificare il Manifest (righe evidenziate in giallo)
AndroidManifest.xml
============================================
Nella MainActivity si crea una nuova classe che riceve la notifica dell'avvenuto boot
(per vedere se il codice funziona si osservi logcat, non ci sono messaggi per l'utente)
MainActivity.kt
============================================
Lo scopo poi e' quello di avviare in automatico una applicazione una volta terminato il boot
Frugando ho trovato che questa opzione e' facilmente disponibile nei Nexus con semplici comandi da fastboot
./adb reboot bootloader
./fastboot oem off-mode-charge 0
./fastboot reboot
A questo punto per rimuovere il lock screen di Android si va in Impostazioni/Sicurezza/Blocco schermo/nessuno
A questo punto sarebbe interessante avviare in automatico un app (od un servizio)
Per fare una prova ho usato Nexus 5 con Android 6 perche' le versioni piu' recenti
di Android rendono piu' difficile lanciare una app al boot in automatico
Si vede modificare il Manifest (righe evidenziate in giallo)
AndroidManifest.xml
============================================
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.luca.innocenti.autoboot"> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".BootReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.QUICKBOOT_POWERON" /> </intent-filter> </receiver> </application> </manifest>
============================================
(per vedere se il codice funziona si osservi logcat, non ci sono messaggi per l'utente)
MainActivity.kt
============================================
package com.luca.innocenti.autoboot import android.content.BroadcastReceiverimport android.content.Contextimport android.content.Intentimport android.content.Intent.ACTION_BOOT_COMPLETED import androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.util.Log class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } } class BootReceiver : BroadcastReceiver() { override fun onReceive(c: Context, intent: Intent?) { val action = intent?.action Log.d("ASD123123", "RECEIVED BOOT") val b = intent?.toUri(Intent.URI_INTENT_SCHEME) when (action) { ACTION_BOOT_COMPLETED -> startWork(c) } } private fun startWork(context: Context) { Log.d("Test", "Test") } }
giovedì 27 febbraio 2020
Flutter webview
Ultimamente sto avendo parecchie noie da Play Store perche' alcune mie vecchie applicazioni realizzate con PhoneGap vengono ritenute pericolose per vulnerabilita' delle librerie contenute in phonegap e vengono rimosse in automatico. Ho cosi' cercato in giro un framework alternativo con caratteristiche simili a PhoneGap ed ho voluto provare a convertire una mia app PhoneGap in Flutter (anche perche' essendo un prodotto Google spero che non eliminino le app dallo store se compilate con Flutter)
Per installare Flutter si inizia scaricando il pacchetto del framework da questo link
Si scompatta e si mette in path la directory /flutter/bin
Per editare i progetti si puo' usare Android Studio aggiungendo i plugin di Flutter e Dart da Preferences (CTRL+ALT+S) e poi Plugin/Marketplace
Si crea quindi un nuovo progetto Flutter
si modifica il file pubsec.yaml per inserire la dipendenza dal plugin flutter_webview
modificare il file pubspec.yaml per includere le directory di assets della
(attenzione che:
- le varie righe devono essere indentate in modo corretto
- deve essere creata una riga per ogni subdirectory contenuta in assets
- la directory assets non viene creata di default
per confronto questa e' parte dell'albero assets del mio progetto
Alla fine si crea popola con la webview e si fa puntare la url ai file locali
main.dart
Per installare Flutter si inizia scaricando il pacchetto del framework da questo link
Si scompatta e si mette in path la directory /flutter/bin
Per editare i progetti si puo' usare Android Studio aggiungendo i plugin di Flutter e Dart da Preferences (CTRL+ALT+S) e poi Plugin/Marketplace
Si crea quindi un nuovo progetto Flutter
si modifica il file pubsec.yaml per inserire la dipendenza dal plugin flutter_webview
dependencies: flutter: sdk: flutter flutter_webview_plugin: ^0.3.10+1
modificare il file pubspec.yaml per includere le directory di assets della
(attenzione che:
- le varie righe devono essere indentate in modo corretto
- deve essere creata una riga per ogni subdirectory contenuta in assets
- la directory assets non viene creata di default
flutter:
assets:
- assets/
- assets/css/
- assets/altimetria/
- assets/img/
- assets/imgit/
per confronto questa e' parte dell'albero assets del mio progetto
Alla fine si crea popola con la webview e si fa puntare la url ai file locali
main.dart
import 'package:flutter/material.dart'; import 'package:flutter_webview_plugin/flutter_webview_plugin.dart'; void main() { runApp(new MyApp());} class MyApp extends StatefulWidget{ _MyAppState createState() => _MyAppState();} class _MyAppState extends State<MyApp> { @override Widget build(BuildContext context) { return new MaterialApp( home: new WebviewScaffold( url: "file:///android_asset/flutter_assets/assets/index.html", ), debugShowCheckedModeBanner: false, ); } }
mercoledì 26 febbraio 2020
Goering ed il "porcellino"
Stavo guardando un documentario su Hermann Goring e da fiorentino non ho potuto fare a meno di notare la statua del Porcellino di Pietro Tacca presente in una delle residenze di Goring
Con un po' di ricerca ho trovato che la statua si trovava nella residenza estiva a Carinhall. Non sono riuscito a trovare notizie se la statua presso Carinhall sia una copia (ne esistono tuttora molte a giro per il mondo) o, visto il vizio di Goring di portarsi a casa cio' che ci piaceva, dell'originale (attualmente a Firenze al Museo Bardini)
Fotogramma del documentario |
Originale (Wikipedia) |
martedì 25 febbraio 2020
Tributo a Gilles
Per lavoro capita spesso di effettuare sopralluoghi in fabbriche dismesse e trovare ricordi di epoche passate. Non poteva passare inosservato questo poster allegato alla rivista CorrierBoy del 2 maggio 1979 appeso ad un muro
...e no, non era possibile staccarlo e verra' presto rimosso dai lavori di ristrutturazione
Frugando su Internet e' comparsa una immagine di qualita' migliore
...e no, non era possibile staccarlo e verra' presto rimosso dai lavori di ristrutturazione
Frugando su Internet e' comparsa una immagine di qualita' migliore
Iscriviti a:
Post (Atom)
Feature Matching OpenCv
Il problema e' il seguente: trovare le differenze tra le due foto. Le due immagini sono state riprese a distanza di oltre un anno ed il ...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...