giovedì 31 gennaio 2013

Debug in QtCreator

Effettuare una sessione di debug in QtCreator e' molto simile ad una qualsiasi altra IDE.
Cliccando sulla colonna grigia a sinistra dei numeri di riga si inseriscono i break point

Per iniziare il debug ci clicca F5 ed il programma si blocca sul primo breakpoint
Poi ci sono F10 (Step Over) ed F11 (Step Into)


Non e' necessario aggiungere manualmente le watch dato che il tutte le variabili ed il loro valore istantaneo sono elencate nella colonna a destra

Creare una nuova finestra in Qt

Questo post e' per indicare come creare un progetto in Qt basato su piu' form e come farle apparire

Si parte creando un progetto standard (Qt Gui Application) specificando una QMainWindow
Una volta terminata la fase di creazione si clicca sul ramo Form del progetto e si aggiunge una nuova Q Designer Form class

avremo quindi alla fine due form denominati mainwindow e mainwindow2.

A questo punto si aggiunge un pulsante a mainwindow e si aggiunge uno slot su OnClicke e si inizia a modificare il codice come segue (modifiche evidenziate in giallo)

mainwindow.h
---------------------------------

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "mainwindow2.h"

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H


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

mainwindow.cpp
---------------------------------

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mainwindow2.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

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

void MainWindow::on_pushButton_clicked()
{
    MainWindow2 *j = new MainWindow2();
    j->show();
}

---------------------------------
Il risultato finale e' quello mostrato in immagine


Alla pressione del pulsante sulla finestra1 si apre la finestra2

mercoledì 30 gennaio 2013

QtDemo

L'aspetto decisamaente positivo nelle Qt che le differenzia da tutte le altre librerie utilizzabili con licenza GPL e' la documentazione presente a livello decisamente professionale

Per avere un'idea del funzionamento delle varie parti di Qt puo' essere comodo utilizzare il comando

qtdemo

che lancia il programma di esempio dove vengono mostrate le varie funzioni e si ha il link diretto al codice di esempio ed alla documentazione

Tale comando, presente in Linux, non si ritrova nel pacchetto del Qt-SDK di Windows (e' un po' nascosto tra gli esempi da compilare)






Conky

Era un po' che mi scervellavo come si potessero mettere i parametri del sistema operativo sulla finestra di root di X Windows cosi' come si vede per esempio in CrunchBang

La soluzione e' l'utilizzo di Conky, un software che si installa semplicemente con
apt-get install conky

il programma si configura mediante l'apposito file /etc/conky/conky.conf ed e' talmente complesso che di seguito viene dato solo un esempio

La schermata nell'immagine seguente mostra l'uso di Conky in una Debian Testing


per vedere meglio il dettaglio ho ingrandito la parte alta dello schermo

Dettaglio dello schermo


e' generato dal seguente file di configurazione
/etc/conky/conky.conf
-----------------------------------------------

alignment                 top_middle
background                no
border_width              0
cpu_avg_samples           5
default_color             white
default_outline_color     white
draw_borders              no
draw_graph_borders        no
draw_outline              no
draw_shades               no
use_xft                   yes
xftfont                   Terminus:size=7
xftalpha                  1
gap_x                     0
gap_y                     0
minimum_size              20 0
maximum_width             1920
net_avg_samples           2
no_buffers                yes
out_to_console            no
own_window                yes
own_window_class          Conky
own_window_type           normal
own_window_transparent    yes
own_window_hints          undecorated,below,sticky,skip_taskbar,skip_pager
update_interval           1
uppercase                 no
use_spacer                left
use_spacer                right
double_buffer             yes
short_units               yes
pad_percents              1
text_buffer_size          512
temperature_unit          fahrenheit

TEXT
${font OpenLogos:size=7}Ora ${font}${time %I:%M:%S %p | %B %e, %Y} | Uptime ${uptime} | Temp ${voffset 1}${acpitemp}° F | ${freq_g} GHz | Cpu1  
(${cpu cpu1}%) ${voffset -1}| Cpu2 (${cpu cpu2}%)${voffset } | Mem: (${memperc}%) | /: ${fs_free_perc /}% |  ${voffset -2} | Batteria ${battery_bar 10,50 BAT0} ${battery_time} | Ip ${addr}
-----------------------------------------------

ps. alcuni parametri sono nulli od errati in quanto lo screenshot e' stato ripreso da una macchina virtuale VirtualBox in cui non funziona l'acpi

Bentornato /etc/rc.local

Magari non e' proprio una novita' ma mi sono accorto solo adesso che su Debian e' tornato il file /etc/rc.local

Questo file e' sempre stato presente su altre distribuzioni storiche (vedi Red Hat) e viene lanciato alla fine di tutta la catena di boot per poter effettuare delle personalizzazioni

Debian ne era sprovvista di default e doveva essere aggiunto a mano con la combinazione dei comandi
echo “#!/bin/sh\n#\n” >> /etc/rc.local
ln -s /etc/rc.local /etc/rcS.d/S99rclocal

cosi' e' decisamente piu' comodo
-------------------------------------------------------------------

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0

I3 Tiling WM

Alla ricerca di un Window Manager per un computer con pochissima memoria mi sono imbattuto in I3 che viene defiinito come un Tiling Window Manager (si vedra' fra poco il perche')

Per installarlo e' sufficiente il comando
apt-get install i3

dopo il login lo schermo e' quanto di piu' desolante si possa immaginare (nemmeno windowmaker e' cosi' fuorviante) e quindi si deve iniziare a leggere il manuale che riporta le seguenti combinazioni di tasti

(e' possibile scegliere come tasto modificatore sia Alt che il tasto Windows...in questo caso ho scelto Alt ma direi che per il futuro e' piu' conveniente usare Windows)

In Debian il file di configurazione si trova in HOME/.config/i3/config

Alt+Enter : apre una shell
Alt+Shift+Q : uccide una finestra
Alt+Shift+E : esce da I3

Per ordinare in modo verticale od in modo orizzontale le finestre si puo' usare

Alt+E

Per mandare in primo piano una finestra

Alt+W (per accedere alle finestre nascoste si usa Alt+freccia)

il focus delle finestre segue immediatamente la posizione del mouse ma si puo' passare da una finestra all'altra anche usando la combinazione Alt+freccia

Le nuove finestre  vengono occupate dividendo in modo uguale lo schermo (se ci sono tre finestre di default ognuna occupera' il 30%, se sono 4 il 25% ecc). Per modificare questo comportamento si dive entrare in Resize Mode (Alt + r) e poi si con le frecce si riscalano le finestre


e' presente un menu' che si attiva premendo
Alt+D
appare nella barra in alto una serie di comandi, a questo punto si deve iniziare a scrivere il nome dell'applicazione che si intende lanciare per esempio la sequenza q+t+c+r+e+....e si vedra' comparire qtcreator, si clicca o si preme Enter per lanciare l'applicazione


Esempio del menu di I3 (Alt+D)
 L'aspetto un po' fuorviante che, essendo un tiling window manager, le varie finestre vengono giustapposte affiancate e non sovrapposte

cio' comporta che quando si lancia una applicazione non di terminale lo spazio dello schermo sara' distribuito in modo poco opportuno

comunque si puo' uscire dalla combinazione a tile usando la combinazione Alt+Shift+Spacebar che fa diventare la finestra selezionata come flottante e ridimensionabile

Nella parte bassa dello schermo e' presente la i3status, una barra in cui sono sintetizzate alcune informazioni  come lo stato di occupazione del disco fisso, la rete ed il carico della CPU (puo' essere modificata da i3status.conf)

Optimus ROM per GT-S5570i

A causa dei problemi con la precedente rom JellyBlast descritti in questo post ho deciso di fare un passo indietro e rinunciare ad Android 4.1 per avere un telefono piu' stabile e soprattutto funzionante

Per questo motivo adesso ho montato la rom Optimus Rom 2 (scaricabile da questo link)
Per flashare il telefono sono necessari i seguenti file

CWM_GT-S5570i
OptimusRom2_00(2)
update

come al solito si fa partire il telefono in recovery mode (vedi post precedente9 e si seleziona prima il file CWM, si effettua il wipe di tutti i dati e poi si installa il file Optimus Rom 2
Una volta riavviato completamente il telefono e dopo essersi accertati che tutto sia andato bene e' possibile e' possibile riavviare il telefono, riavviare CWM ed eseguire l'update che corregge un problema sulle impostazioni del provider

Come si vede questa ROM e' un passo indietro verso Android 2.3.6 ed ha anche (giustamente) un numero ridotto di programmi preinstallati


Le prime impressioni di uso sono buone ma come gia' detto i problemi riscontrati con la JellyBlast erano saltuari e non prevedibili quindi solo l'uso dira' se e' il caso di continuare con la Optimus










Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...