martedì 22 gennaio 2013

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


ADT Android Bundle

Con l'andar del tempo e' sempre piu' semplice installare l'SDK di Android
E' da poco uscito l'ADT Bundle, un pacchetto piuttosto pesante (oltre i 400 Mb nelle sue varie versioni) che al  suo interno contiene pero' una bella sorpresa

Una volta spacchettato il file ci troviamo con Eclipse, il plugin ADT e l'SDK di Android gia' pronti ad essere utilizzati senza ulteriori configurazioni e download. E' sufficiente entrare nella directory eclipse e lanciare l'ambiente di sviluppo con il comando
./eclipse

rimane solo da configurare un AVD e poi si puo' iniziare a sviluppare





Errore su punto di ingresso Qt4Core.dll

Una volta scritta e testata una applicazione in Qt su Windows ho voluto provare a fare una build release per provare a lanciare direttamente il file eseguibile dall'esterno dell'ambiente di sviluppo

Il risultato e' stato a dir poco scoraggiante "Impossibile trovare il punto di ingresso della procedura nella libreria a collegamento dinamico QtCore4.dll"


Dopo qualche ricerca su Internet ho trovato che il problema deriva dal fatto che il fatto eseguibile cerca di eseguire una Dll QtCore4 differente da quella con cui e' stato compilato all'interno dell'ambiente di sviluppo

Certo che imbroccare quale sia la libreria QtCore4.dll che crea confusione e quale sia l'ordine preciso con cui Windows elegge la prima della lista e' piuttosto problematico e non e' possibile tentare un approccio di tipo try and test (sospetto comunque che sia quella legata a Python)

Elenco delle librerie QtCore4.dll installate sul mio sistema

Ovviamente questo problema non si presenta in Linux :>>>

Creare eseguibile da QT/QML

I programmi scritti in QtQuick sono visibili all'interno di Qmlviewer
C'e' pero' la possbilita' di creare delle applicazioni stand-alone creando una applicazione Qt che di fatto e' un viewer per QtQuick

questa procedura e' resa automatica all'interno di Qt SDK creando un Nuovo progetto e selezionando Qt Quick Application.


Al termine della procedura guidata viene chiesto di selezionare il file qml di interesse (o di crearne uno nuovo)


Viene cosi' creato in automatico un progetto che ha come funzione main la seguente
----------------------------------

#include <QtGui/QApplication>
#include "qmlapplicationviewer.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QmlApplicationViewer viewer;
    viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
    viewer.setMainQmlFile(QLatin1String("qml/gg/gg.qml"));
    viewer.showExpanded();

    return app.exec();
}


----------------------------------
si vede chiaramente il funzionamento del programma e dove viene referenziato il file qml

Montare SD Card su Linux



in alcuni casi il montaggio automatico di una SD Card su Linux non funziona
si procede quindi assicurandosi di avere il modulo installato mediante

modprobe mmc_block

a questo punto si inserisce la SD Card nel lettore e leggendo le ultime righe di /var/log/messages si deve trovare qualcosa del tipo

mmcblk0:mmc0:ebaf SR01G 945 MiB
mmcblk0: p1

in particolare si deve fare attenzione alla seconda riga
a questo punto

mkdir /media/sdcard
mount -t vfat /dev/mmcblk0p1 /media/sdcard

dove il nome del device e' composto dalla somma di mmcblk0 e p1 come indicato in /var/log/messages (ovviamente tali valori possono mutare a seconda delle impostazioni)

IBM X40

Mi sono comprato usato un IBM X40 2371-67U...ed ho violato la legge che dice di non comprare mai computer usati ma riceverli solo come regalo.
La spesa di 150 euro e' ridicola ai 2200 euro necessari nel 2004 per comprare la macchina nuova ma purtroppo il portatile e' molto rovinato dato che

  • ha battuto almeno una volta con lo spigolo anteriore destro
  • connettendo l'alimentazione si sente un sinistro sibilo che scompare solo dopo aver aggeggiato sul connettore
  • l'hard disk ha diversi settori rotti ed emette qualche click (si consideri che questa macchina utilizza dei quasi introvabili dischi da 1.8 pollici per cui la riparazione e' piuttosto difficile)
  • lo schermo occasionalmente lampeggia
  • la tastiera non e' italiana
  • solo 512 Mb di Ram (mi e' stato venduto per un 1 Giga ma quando lo ho aperto e' risultato chiaro che non e' espandibile....256 Mb sono saldati alla scheda madre)
pero' cosa dire di
  • uno schermo da 12.1 pollici con risoluzione XGA (dimensione praticamente perfetta)
  • un peso di 1.2 Kg
  • uno chassis con materiali al magnesio per aumentare resistenza e diminuire il peso
  • una tastiera IBM e quindi fantastica
  • una porta Ethernet da Gb ed un ingresso per SD Card (quando e' uscito era il 2004 e tale dotazione era letteralmente fantascienza)
  • una durata della batteria di oltre 4 ore reali
  • disco da 40 gb (un lusso all'epoca)
  • Pentium M Centrino da 1.2 GHz (Cpu Family 6 Model 9 Stepping 5 1196 BogoMips)
Tra le curiosita' c'e' una porta speciale che assomiglia ad una USB per connettere un disco ottico esterno in formato proprietario




Ho provato in prima istanza ad installare una CrunchBang, tutto e' andato a buon fine e tutto l'hardware e' stato riconosciuto al volo. Purtroppo i repository di CrunchBang non sono granche' ed in fondo se voglio una Debian e' bene che installi una Debian e poi la personalizzi

Quindi sono passato ad un Debian Testing con XFCE e sono ovviamente iniziati i problemi
La scheda di rete wireless, una Intel 2000 Pro, non e' configurata in fase di installazione a causa di firmware proprietari per cui dopo aver installato il sistema di devono aggiungere i repository contrib non-free e poi si aggiorna il sistema come segue

apt-get update
apt-get install firmware-ipw2x00
modprobe ipw2100

Una volta installato stranamente si e' spenta la retroilluminazione (che puo' essere riattivata con il tasto FN e Home ed End)

Per finire fighissima la combinazione FN+PgUp che accende una lucetta che illumina la tastiera per la scrittura al buio





LLama3 Anita

A seguito di questo post ho provato a vedere ho provato a vedere cosa accadeva ad utilizzare un modello specifico per la lingua italiana in...