lunedì 28 gennaio 2013

Compilare librerie esterne in Qt/QtCreator

In questo post verra' mostrato come linkare una libreria esterna al pacchetto Qt mediante l'uso di QtCreator.
La libreria di esempio e' costuita dalle Shapefile C Library, una libreria che serve per leggere i file ESRI .shp

Una volta scaricato il file tgz si spacchetta e si digita
make
make test (per controllare che la compilazione sia andata a buon fine)
make install (per installare la libreria ed i file di sviluppo)

al termine la libreria si chiamera' libshp.a e sara' posta in /usr/local/lib mentre i file di include saranno in /usr/local/include

shape.pro
---------------------------------
#-------------------------------------------------
#
# Project created by QtCreator 2013-01-28T12:49:51
#
#-------------------------------------------------
QT       += core
QT       -= gui
TARGET = shape
CONFIG   += console
CONFIG   -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
LIBS += -L/usr/local/lib -lshp
INCLUDEPATH += -I/usr/local/include
---------------------------------

per vedere se il programma funziona si puo' rubare parte del codice al programma shpinfo.c che si trova nella sottodirectory contrib del pacchetto shapelib.tgz

main.cpp
--------------------------------

#include "shapefil.h"
#include <QDebug>
#include <iostream>


............................


SHPHandle   hSHP;
int nShapeType, nEntities, nVertices, nParts, *panParts, i, iPart;
double *padVertices, adfBndsMin[4], adfBndsMax[4];
hSHP = SHPOpen("/home/luca/shp/test.shp","rb");
if( hSHP == NULL )
            {

            }
SHPGetInfo( hSHP, &nEntities, &nShapeType, adfBndsMin, adfBndsMax );
qDebug() << nShapeType;

---------------------------------

Qt Console Application

Oltre alle applicazioni GUI con Qt e' possibile anche creare delle applicazioni da console (anche usando i template di QtCreator)


Lo scheletro dell'applicazione e' il seguente
-------------------------------

#include <QtCore/QCoreApplication>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    return a.exec();
}
-------------------------------
Se si esegue il codice si ha la sorpresa di aver una finestra di consolle perennemente aperta
Cio e' dovuto al fatto che l'applicazione per chiudersi deve ricevere un esplicito messaggio di chiusura che puo' essere effettuato mediante una chiamata
QCoreApplication::exit(0)

oppure mediante una via piu' complicata
------------------------
#include <QtCore/QCoreApplication>
#include <QTimer>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QTimer::singleShot(5000, &a, SLOT(quit())); 
    return a.exec();
}


Mysql in Qt

In questo post viene mostrata la connessione e l'esecuzione di query da Qt verso un database MysqlS riprendendo le basi gia' poste nel post SQlite
In sostanza deve essere modificata solo la parte relativa alla connessione mentre l'esecuzione delle query e' sostanzialmente identica

(come sempre si deve modificare il file .pro aggiungendo la libreria sql con il comando
QT       += core gui sql
)

--------------------------------------------

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

db.setDatabaseName("test");
db.setHostName("localhost");
db.setUserName("root");
db.setPassword("");

if (db.open()) {
            QSqlQuery query;
            query.exec("create table punteggio (id int primary key, "
                                             "nome varchar(20), "
                                             "punti int)");

         query.exec("insert into punteggio values(0, 'Luca', 2)");
         query.exec("insert into punteggio values(1, 'Federico', 102)");
         query.exec("insert into punteggio values(2, 'Alessio', 15)");
         db.close();
}




domenica 27 gennaio 2013

Root in read only mode in Debian

Per cercare di migliorare le prestazioni del disco SSD mi sono messo a modificare il file fstab

Disgraziatamente ho scritto
/dev/sda   /   ext4   noatime,nodirtime,discard,errors=remount-ro 0 1
e non (si noti la mancanza di una a nel secondo parametro)
/dev/sda   /   ext4   noatime,nodiratime,discard,errors=remount-ro 0 1

al successivo riavvio la macchina e' partita andando pero' in schermo nero al momento di far partire la sessione X. Fortunatamente le shell erano ancora attivi quindi da Alt+F2 e' stato possibile vedere che il filesystem era stato montato come in sola lettura

Dopo vari tentativi la soluzione funzionante e' stata di digitare in consolle di shell il comando
mount -n -o remount,defaults /dev/sda1 /

a questo punto il filesystem e' tornato scrivibile, ho corretto fstab e fatto ripartire la macchina
Tutto e' tornato a funzionare perfettamente

Apt dietro ad un proxy server

Per effettuare il download dei pacchetti .deb da dietro ad un http proxy server si deve configurare il file /etc/apt/apt.conf con la seguente riga

/etc/apt/apt.conf
-----------------------------------
Acquire::http::Proxy "http://mioproxy:8080/";

venerdì 25 gennaio 2013

SQLite in Qt

In questo post verra' presentato un esempio di utilizzo di Qt con Sqlite

Le librerie Qr hanno gia' al loro interno il supporto per Sqlite per cui non e' necessaria l'installazione di nessun componente aggiuntivo
Per prima cosa si deve modificare il file .pro per includere il supporto sql (come evidenziato in giallo nel listato sottostante)



sql.pro
--------------------------------------------

QT       += core
QT       += sql
QT       -= gui

TARGET = sql
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp

--------------------------------------------

L'esempio effettua tre query
Nella prima viene creata una tabella inserendo tre righe
Nella seconda viene effettuata una SELECT senza vincoli
Nella terza viene effettuata una SELECT condizionata da un WHERE
Il codice e' sostanzialmente autoesplicativo.L'unica cosa da sottolineare e' che in QtCreator sotto Windows si dove dichiarare un include <QtSql> mentre in Linux deve essere modificato in <QtSql\QtSql>

main.cpp
--------------------------------------------

#include <QtCore/QCoreApplication>
#include <Qtsql>
//per Linux si deve sostituire la riga precedente con
//#include <QtSql/QtSql>

#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
        db.setDatabaseName("c:/punteggio.db");
        if (!db.open()) {

            return false;
        }

        QSqlQuery query;

        query.exec("create table punteggio (id int primary key, "
                                         "nome varchar(20), "
                                         "punti int)");

        query.exec("insert into punteggio values(0, 'Luca', 2)");
        query.exec("insert into punteggio values(1, 'Federico', 102)");
        query.exec("insert into punteggio values(2, 'Alessio', 15)");


        QSqlQuery query2;
        query2.prepare( "SELECT * FROM punteggio" );
        if( !query2.exec() )
        {
            qDebug() << "Errore sulla query";

        }
        while( query2.next() )
        {
            int punti = query2.value(2).toInt();
            QString nome = query2.value(1).toString();
            qDebug() << nome << " " << punti << endl;
        }

        // SELECT CONDIZIONATA DA WHERE
        QSqlQuery query3;
        query3.prepare( "SELECT * FROM punteggio WHERE punti > ?" );
        query3.bindValue(":punti",20);

        if( !query3.exec() )
        {
            qDebug() << "Errore sulla query";

        }
        while( query3.next() )
        {
            int punti = query3.value(2).toInt();
            QString nome = query3.value(1).toString();
            qDebug() << nome << " " << punti << endl;
        }


    return a.exec();
}


--------------------------------------------

asd

Sqliteman in Debian

Al contrario di Ubuntu o di altre distro, non esiste un pacchetto gia' pronto per installare Sqliteman in Debian testing


La soluzione e' scaricare il pacchetto del sorgente del programma da Sourceforge (al momento la versione piu' recente e' sqliteman-1.2.2.tar.bz2)

dopo aver spacchettato l'archivio si entra nella directory e si procede con i seguenti comandi

apt-get install cmake
apt-get install libqscintilla2-8 libqscintilla2-dev
apt-get install sqlite3

cmake . (notare il punto dopo cmake)
make
make install


Sostituire HD con SSD su IBM X40

Per provare (ed anche perche' il disco fisso tradizionale stava dando segni di cedimento) mi sono comprato su Amazon un disco SSD Kingspec per sostituire il disco tradizionale dell'IBM X40

Lo smontaggio e' banale  dato che il disco fisso e' fissato da una sola vite e si sfila mediante un sistema a slitta dopo aver rovesciato il portatile


Alloggiamento disco fisso su IBM X40

La dimensione del disco fisso e' da 1.8 pollici. Nella foto sottostante si vede sopra a sinistra il disco originale, in alto a destra un disco derivante da un Ipod sempre in formato 1.8 pollici ma con un diverso sistema di connessione (flat e non PATA) mentre sotto il nuovo disco SSD




L'unico aspetto da considerare e' che il disco SSD ha bisogno della presenza del jumper che lo setti come Master del canale PATA (nel disco fisso originale non era presente nessun jumper e probabilmente era settato come cable select)

giovedì 24 gennaio 2013

Leggere XML/KML con Qt

Lo scopo di questo programma e' estrarre i valori di latitudine e longitudine da un file kml (Google Earth) popolato di placemarks

Per prima cosa una precisazione: esistono due modi per creare file xml, nella prima il tag contiene l'informazione mentre nella seconda l'informazione e' racchiusa tra i tag

per esempio
caso 1 : <tag id="0"/>
caso 2 : <id>0</tag>

Caso 1

Caso 2 (KML)

Il secondo caso corriponde a come sono formati i file xml per esempio dei servizi RSS e di Google Earth
Il motivo di questa precisazione risiede nel fatto che il metodo di lettura non e' valido per tutti i formati
Il tutorial di http://www.voidrealms.com (tutorial Qt 95) non interpreta correttamente il formato 2

kml.pro (importante modificare il file di progetto perche' si usa la libreria QtXml che non e' normalmente linkata)
-----------------------------------
#-------------------------------------------------
#
# Project created by QtCreator 2013-01-23T10:12:21
#
#-------------------------------------------------

QT       += core
QT       += xml



TARGET = untitled
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp
--------------------------

main.cpp
--------------------------
#include <QtCore>
#include <QtXml>
#include <QDebug>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QString filename("C:/Casa.kml");
        QTextStream cout(stdout);
        QFile file(filename);
        bool open = file.open(QIODevice::ReadOnly | QIODevice::Text);
        if (!open)
        {
            cout << "Couldn't open file" << endl;
            return 1;
        }
        else
        {
            cout << "File opened OK" << endl;
       }
    QXmlStreamReader xml(&file);
    qDebug() << "Encoding: " << xml.documentEncoding().toString() << endl;
        while (!xml.atEnd() && !xml.hasError())
        {
            xml.readNext();
            if (xml.isStartElement())
            {
                QString name = xml.name().toString();
                if ((name=="longitude") || (name == "latitude"))
                {
                    qDebug() << "element name: '" << xml.name().toString() << "'" << ", text: '" << xml.readElementText() << "'" << endl;
                }
            }
            else if (xml.hasError())
            {
                qDebug() << "XML error: " << xml.errorString() << endl;
            }
            else if (xml.atEnd())
            {
                qDebug() << "Reached end, done" << endl;
            }
        }
    return a.exec();
}
--------------------------

cout in Qt

per avere un output su consolle da Qt si puo' procedere come segue

metodo C++
------------------------------------
#include <iostream>
using namespace std;


int main(int argc, char *argv[])
{
    cout << "Test cout";
    return a.exec();
}

-------------------------------------

metodo Qt
-------------------------------------
#include <QTextStream>
int main(int argc, char *argv[])
{
  QTextStream cout(stdout);
  cout << "Couldn't open file" << endl;
}



QDebug

Simile a Log.d di Android, in Qt esiste la possibilita' di mandare messaggi di debug durante l'esecuzione di un programma

L'utilizzo e' piuttosto semplice, per prima cosa si deve includere


#include <QDebug>



di seguito nel corpo del programma si puo' richiamare la funzione


qDebug() << "Errore " << endl;

con la stessa sintassi di cout

Documentazione di Qt

La documentazione di Qt in Linux si ottiene includendo i pacchetti

apt-get install qt4-doc
apt-get install qtcreator-doc

dall'interno di QtCreator si accede alla documentazione con l'apposito pulsante sulla barra di sinistra



puo' accadere, come indicato nell'immagine, che il file della documentazione non sia indicizzato.
E' sufficiente attendere e riprovare per ottenere la ricerca per argomento su tutta la documentazione

Giove Luna ed Aldebaran nello stesso spicchio di cielo

In questi giorni nel cielo e' carino vedere la Luna insieme a Giove ed in basso la luce tremolante e rossastra di Aldebaran




Sviluppare in GTK su Linux e Windows

Per impostare un ambiente di sviluppo per GTK su Linux e Windows si devono seguire i seguenti passi:

Linux
Il metodo e' quantomai sbrigativo

apt-get install libgtk-3-dev
apt-get install anjuta



Windows
In questo caso la strada e'  un po piu' lunga
Si devono prima scaricare i file

gtk+-bundle_2.24.10-20120208_win32
codeblocks-12.11mingw-setup_user

che corrispondono alle librerie (Gtk) ed all'editor (Codeblocks)
L'editor si installa come un normale programma mentre il file zip delle gtk deve essere decompresso (per esempio su C:\gtk)
In conclusione si deve aggiungere alla Path la directory c:\gtk\bin

A questo punto si lancia l'editor, si crea un nuovo progetto Gtk e quando si arriva alla schermata sottostante si imposta la directory dove e' stato scompattato il pacchetto delle librerie



Si precisa che nella versione per Windows non e' disponibile l'editor visuale delle form in quanto manca Glade
Vi e' inoltre da precisare che la versione di Gtk su Debian Testing e' la 3 mentre su Windows e' la versione 2

martedì 22 gennaio 2013

Asus A1300

Un altro portatile che mi e' passato per le mani in condizioni ormai rottamate e' l'Asus A1300
Peraltro mi e' arrivato sostanzialmente come se non fosse mai stato usato, lo chassis e' nuovo e privo di graffi ed anche la batteria (considerando l'eta') fa ancora il suo lavoro



Come si vede dalla scheda tecnica sotto riportata non e' poi' cosi' male e si puo' provare a montare Linux
----------------------------------------------
Processore Intel Mobile Celeron 800 Mhz
Chipset SIS 630 con le soluzioni Intel
Memoria 128MB SDRAM on board, espansione fino a 384MB
Display 13,3" TFT LCD, XGA 1024x768, 64K colori
Grafica SXGA fino a 1280X1024 256/16,7M colori
PC card PCMCIA 2.1: 2 Card tipo II o 1 tipo III
Hard Disk Drive capacità 20GB
CD-ROM 24X o DVD-ROM 8X
Modem 56k S/W, LAN integrata (KN-133)
Audio full duplex, 3D sound, AC97
Batteria Li-Ion a 8 celle, 3700 mAh
Ventola di raffreddamento termo-controllata
----------------------------------------------




Per la prova di Linux ho provato a montara una distribuzione per me nuova ovvero Antix che promette di funzionare in modo ottimale anche su hardware datato

Una volta eseguito il boot come LiveCD il sistema Linux funziona decisamente bene...puo' essere che lo installero' direttamente sull'HD


HP 48gx

Chiamare un obsoleta una HP 48gx e' come offendere una vecchia e gloriosa signora che fa ancora il suo lavoro.
Questo esemplare lo ho acquistato per 10 euro ad una asta degli oggetti smarriti sui treni


Ad esclusione di un graffio sullo schermo l'oggetto e' sostanzialmente integro e funzionante

Visto che ormai e' difficile trovare il manuale cartaceo ai link sottostanti si puo' trovare il pdf

Link 1
Link 2

Armada 1572

Mi e' arrivato come rottame un Compaq Armada 1572, un portatile decisamente scarso con un Pentium 233 MMX, 16 Mb di memoria ed un HD da 2.1 Gb .. beh escludiamo l'HD in quanto al primo tentativo di accensione il rumore prodotto dall'HD ha dimostrato che era chiaramente rotto (ascoltare il sonoro del video per avere un'idea)

ho provato ad avviare il CDRom con una distro Linux ma il BIOS (F10) non ha risposto per cui la macchina e' stata dichiarata morta e messa nel cimitero dei portatili (ci sara' un motivo per cui mi danno i portatili a gratis??)



L'asoetto curioso di questo portatile e' che non ha un alimentatore esterno, il cavo del 220 V entra direttamente nel portatile






Mandelbrot in QT

Un classico di questo blog ovvero disegnare l'insieme di Mandelbrot con varie librerie grafiche

Per questo esempio e' stata usata come base il post "Disegnare in QT" con la differenza che in questo caso non vengono disegnate linee  bensi' punti


il trucco per disegnare punti risiede nella linea che e' stata evindeziata in colore giallo ovvero utilizzando una primitiva di una ellisse di raggio molto piccolo

dialog.cpp
---------------------------------------------------
#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)




{
    float re_min = -2.0;
    float im_min = -1.2;

    float re_max = 1.0;
    float im_max = 1.2;
    int iterazioni = 255;
    int SCREEN_WIDTH = 640;
    int SCREEN_HEIGHT = 480;


    float a,b;
    float x,y,x_new,y_new;

    int k,j,i,test;

    float re_factor = (re_max-re_min);
    float im_factor = (im_max-im_min);

    ui->setupUi(this);

    scene = new QGraphicsScene(this);
    ui->graphicsView->setScene(scene);

    QBrush brush(Qt::black);

    QPen penna(Qt::black);
    penna.setWidth(1);

    for (i=0;i<SCREEN_HEIGHT;i++)
        {
        for (j=0;j<SCREEN_WIDTH;j++)
            {
            a = re_min+(j*re_factor/SCREEN_WIDTH);
            b = im_min+(i*im_factor/SCREEN_HEIGHT);

            x = 0;
            y = 0;
            test = 0;

            for (k=0;k<iterazioni;k++)
                {
                x_new = (x*x)-(y*y)+a;
                y_new = (2*x*y)+b;
                if (((x_new*x_new)+(y_new*y_new))>4)
                    {
                    test = k;
                    if (k%2 == 0)
                         scene->addEllipse(j,i,0.1,0.1,penna,brush);
                    break;
                    }
                x = x_new;
                y = y_new;
                }

            }

        }
    //linea = scene->addLine(100,100,100,100,penna);
}

Dialog::~Dialog()
{
    delete ui;
}

Disegnare in QT

In questo post verra' mostrato un esempio di come disegnare in una QGraphicsScene

Per prima cosa si crea un nuovo progetto definendo un QDialog



A questo punto dall'editor visuale si aggiunge al form una



Si modificano i file dialog.h e dialog.cpp come evidenziato nel listato sotto riportato


ed ecco il risultato (non e' un granche')



dialog.h
----------------------------------

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QtCore>
#include <QtGui>



namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT
    
public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();
    
private:
    Ui::Dialog *ui;
    QGraphicsScene *scene;
    QGraphicsLineItem *linea;
};
#endif // DIALOG_H
----------------------------------

dialog.cpp
----------------------------------
#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);

    scene = new QGraphicsScene(this);
    ui->graphicsView->setScene(scene);
    QBrush brush(Qt::black);
    QPen penna(Qt::black);
    penna.setWidth(6);
    linea = scene->addLine(100,100,100,100,penna);
}

Dialog::~Dialog()
{
    delete ui;
}
----------------------------------

da tenere presente che non esiste una primitiva per il disegno di un punto
si puo' vedere l'esempio di Mandelbrot in Qt per vedere come disegnare i singoli pixel

Cancellare account da Android

Mi sono trovato a dover configurare un telefono Android ad un amico e per completare l'aggiornamento ho dovuto usare il mio account per accedere a Google Play Store
Contento di aver finito ho riconsegnato il telefono ma prima dovevo rimuovere le informazioni relative al mio account e parzialmente alcune parti della rubrica e delle foto che il telefono aveva sincronizzato dato che mi ero scordato di disabilitare la sincronizzazione automatica

E qui e' arrivato il problema
Per poter cancellare un account (almeno in Android 2.3.6 e penso anche precedenti) si deve prima andare nel menu Settings/Privacy e cancellare totalmente i dati (e fin qui va bene) ma anche tutte le applicazioni ed impostazioni riportando di fatto il telefono alla condizione in cui e' uscito dalla fabbrica


In soldoni il lavoro di configurazione e' stato inutile ed ho dovuto farmi dare account e password del mio amico per ripartire di nuovo con tutto il lavoro





lunedì 21 gennaio 2013

All'interno di un Ipod 5th Generazione (2)

Per un caso curioso mi e' arrivato un altro Ipod 5° generazione rotto.
A quanto pare l'Ipod Video era piuttosto delicato

L'esemplare mi e' stato consegnato senza scheda logica in quanto, al momento dell'apertura, risultava che erano distaccati un paio di componenti (letteralmente esplosi) ...il problema descritto sembra essere quello riportato all'interno di questo post e sembra che fosse piuttosto comune per questo tipo di dispositivo

Avendo tutti i componenti gia' staccati e' piu' facile vedere l'interno



Disco da 1.8 pollici con batteria

Samsung GT-S7500 Galaxy Ace Plus vs GT-S5570i Galaxy Next Plus

Un amico mi ha passato un Samsung GT-S7500 per configurarlo dato che non e' ancora pratico con Android. Questa e' stata una buona occasione per un confronto diretto con il mio GT-S5570i che costituisce il suo fratello minore e meno costoso


Il telefono viene fornito con Android 2.3.6 ed ha uno schermo da 3.6 pollici.
In generale il terminale e' piu' veloce (il processore del 7500 viaggia a 1 GHz mentre il 5570i a circa 870 MHz) e lo schermo e' decisamente piu' spazioso (la risoluzione e' di 320x480 da 3.6 pollici  per il 7500 e di 240x320 a 3.1 pollici per il  5570i)

Anche la videocamera e' migliore per il 7500 (5M) contro i 3M del 5570i ma in conclusione non vale molto la pena di spendere 50 e passa euro in piu' per un le modeste differenze tra i due

PS: sul 7500 i tasti di Back e Menu non sono fisici ma legati al touch screen e non sono sempre comodi

Penna USB rotta


Ultimamente mi sono capitati un paio di casi di tentativo di recupero dati da chiavetta USB corrotte, dove per corrotte non si deve intendere un banale problema al filesystem ma un danneggiamento a livello hardware

Nel caso del chiavetta in foto la situazione era peggiore in quanto la stessa e' stata schiacciata (probabilmente da un'auto) ed e' stata esposta a due giorni di pioggia prima di essere ritrovata (notare che si tratta di una 512 Mb quindi un hardware piuttosto vetusto)


In entrambi i casi in qualche modo l'elettronica era viva
Leggendo il file di log di Linux dopo aver inserito la chiavetta si vede che la stessa viene riconosciuta
------------------------------------------

Jan 17 05:10:50 debian kernel: [  358.044339] usb 1-4: New USB device found, idVendor=13fe, idProduct=1a00
Jan 17 05:10:50 debian kernel: [  358.044351] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Jan 17 05:10:50 debian kernel: [  358.044362] usb 1-4: Product: USB DISK 28X            
Jan 17 05:10:50 debian kernel: [  358.044370] usb 1-4: Manufacturer:                         
Jan 17 05:10:50 debian kernel: [  358.046446] scsi5 : usb-storage 1-4:1.0
Jan 17 05:10:50 debian mtp-probe: checking bus 1, device 6: "/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-4"
Jan 17 05:10:50 debian mtp-probe: bus: 1, device: 6 was not an MTP device
Jan 17 05:10:51 debian kernel: [  359.044987] scsi 5:0:0:0: Direct-Access              USB DISK 28X     1.00 PQ: 0 ANSI: 0 CCS
Jan 17 05:10:51 debian kernel: [  359.049623] sd 5:0:0:0: Attached scsi generic sg1 type 0
Jan 17 05:10:51 debian kernel: [  359.051688] sd 5:0:0:0: [sdc] Attached SCSI removable disk
------------------------------------------

cio' che non riesco a capire bene e' come mai l'elettronica risponde ma non si riesce in nessun modo a montare l'unita' a disco. Mi viene il sospetto che il circuito di controllo della porta USB sia integro mentre il circuito di controllo delle memorie sia difettoso

giovedì 17 gennaio 2013

Epson SX130 in Debian

Mia moglie ha comprato la Epson Stylus SX130...io sono francamente contrario alle stampanti a getto di inchiostro per la scarsa affidabilita' dei toner...in ogni caso e' stata una occasione per cercare di installare sia la stampante sia lo scanner integrato in una Debian Testing

La stampante non viene riconosciuta in modo automatico da CUPS per cui si devono scaricare dal sito Epson i driver che consistono in un file .deb per la stampante e due file .deb per lo scanner

piu' nello specifico i file sono
stampante
epson-inkjet-printer-201101w_1.0.0-1lsb3.2_i386.deb
scanner
iscan_2.29.1-5~usb0.1.ltdl7_i386.deb
iscan-data_1.13.0-1_all.deb

Attenzione: sul sito di Epson vi sono due file .deb che differiscono per ltdl (in un caso e' a numero 3 mentre nell'altro e' il 7.. quello giusto per debian testing e' il numero 7 perche' la dipende delle librerie viene soddisfatta soltanto per quest versione)




Una volta caricati i driver il lavoro non e' finito.
Per configurare la stampante si deve aprire il browser e puntare all'indirizzo http://localhost:631 (amministrazione di CUPS) in cui ci si logga con l'utente root. Dall'interfaccia Web si aggiunge quindi la stampante Epson che da ora in poi sara' disponibile alla stampa per le varie applicazioni (si possono effettuare anche le correzioni sul formato di stampa predefinito Letter modificandolo in A4)


Prova di stampa 

Per lo scanner invece non ci sono particolari attenzioni dato che e' utilizzabile immediatamente sia da XSane che da Image Scan










Google Chrome in Debian Testing



Installando Google Chrome da file .deb su una Debian Testing mi sono imbattuto in una dipendenza non soddisfatta relativa alla libreria libxss1

E' necessario quindi dare
apt-get install libxss1

e poi

dpkg -i google-chrome-stable_current_i386


Screenshot con Gimp 2.8

Ecco una cosa di cui mi scordo sempre....effettuare uno screenshot con Gimp

La risposta e' dal menu File/Create/Screenshot


martedì 15 gennaio 2013

TuxGuitar e Debian

Per utilizzare TuxGuitar in Debian si devono fare un paio di modifiche altrimenti il programma parte, il cursore si muove ma non si sentira' nessun suono

Prima di tutto si deve scaricare TuxGuitar insieme a Timidity

apt-get install tuxguitar timidity

dopo di cio', assicurandosi che il server Timidity sia partito, si deve andare nelle impostazioni di TuxGuitar e dalla sezione Audio si deve scegliere come Midi Port Timidity


FigSpec FS-60CL

A lavoro mi hanno rifilato questo sensore iperspettrale cinese (pushbroom 400-1000 nm con larghezza di banda di 0.5 nm compatibile con DJI M...