Visualizzazioni totali

martedì 29 novembre 2011

Interagire da shell con cartelle aventi nomi contenenti spazi

Altro problema.

Linux (e nel mio caso Ubuntu) non e' ancora del tutto insostituibile nello shell.
Per questo spesso mi trovo a combattere con nomi di cartelle o file che hanno tra i loro caratteri uno o piu spazi.
Es.
/home/simone/Windows XP/Una cartella con degli spazi

Per usare i comandi da shell basta anteporre una "\" allo spazio e il gioco e fatto.

Es.
CD /home/simone/Windows\ XP\Una\ cartella\ con\ degli\ spazi


Ridimensionare Vdi

Durante la creazione di una macchina virtuale con XP ho creato un'immagine disco (vdi dinamica) per virtual box un po' troppo piccola e di conseguenza non riuscire ad installare Visual Studio.
Ho cercato invano nell'interfaccia la possibilità di eseguire un ampliamento del disco virtuale.
Fortunatamente esiste un comando di virtualbox per ridimensionare l'unità (a macchina spenta ovviamente).
Es.
VBoxManage modifyhd Windows\ XP.vdi --resize 150000
In questo caso ho modificato il disco a 15Gb.
 
Ovviamente in seguito ho dovuto utilizzare un programma di ridimensionamento delle partizioni
per ampliare l'unità e sfruttare il nuovo spazio, nel mio caso ESEUS Partition Master Free.


VirualBox

Per comodità ho installato VirtualBox su Ubuntu.
Dopo l'installazione di Windows XP al suo interno ho installato anche Code::Blocks
Infine Windows Visual C++ runtime 2008 cosi da poter compilare sotto windows anche librerie come stdafx.h

mercoledì 23 novembre 2011

Cross compilazione per windows

Dopo svariate prove con le gtk oggi provo a cross compilare una semplice applicazione per ambiente windows da linux.
Per far cio' seguo la guida trovata su wiki:

CrossCompilare con Linux

Per la compilazione e' necessario installare wine e mingw
Da Ubuntu Software Center tra i diversi wine io ho scelto l'ultimo (Wine Windows Program Loader 1.3) e (Minimalist GNU Win32(Cross) Compiler).

martedì 15 novembre 2011

fatal error: gtk/gtk.h: No such file or directory

In seguito all'installazione di code::blocks,compilando un semplice wizard gtk 
si riceve l'errore:

fatal error: gtk/gtk.h: No such file or directory

Questo e' dovuto alla mancanza nativa delle librerie gtk per lo sviluppo.

Io ho installato le libgtk-dev 3.0.
CB aggiunge nei settings del proggetto i riferimenti:

  • `pkg-config gtk+-2.0 --cflags`

  • pkg-config gtk+-2.0 --libs`
Questi pero' vanno cambiati con

  • pkg-config gtk+-3.0 --cflags`
  • pkg-config gtk+-3.0 --libs`
Semplice no?

Problemi con Online account di ubuntu

Oggi, reinstallando ubuntu 11.10 su un altro pc, nel tentativo di loggarmi con il mio account di google negli online account ho incotrato diversi problemi a mantenere il login.
In pratica, una volta inserite le credenziali, il programma mi diceva subito che erano scadute
La soluzione l'ho trovata in queste pagine

https://launchpad.net/~rye/+archive/ubuntuone-support

Installando questa patch tutto e' andato a posto (dopo il consueto riavvio)
Consiglio di leggere questo per l'installazione
Read about installing

martedì 8 novembre 2011

Program Arguments di code::blocks

Ho avuto problemi a passare argc e argv con code::blocks e credo di non essere stato l'unico.
L'unica via che ho trovato e' stato di mettere a debug direttamente nel codice l'inizializzazione dei parametri.

Problemi di link con sqlite

Stamattina ho perso un mucchio di tempo per far funzionare l'esempio proposto sul sito di sqlite

#include <iostream>
#include <stdio.h>
#include <sqlite3.h>

static int callback(void *NotUsed, int argc, char **argv, char **azColName){
  int i;
  for(i=0; i<argc; i++){
    printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
  }
  printf("\n");
  return 0;
}

int main(int argc, char **argv){
  sqlite3 *db;
  char *zErrMsg = 0;
  int rc;

  if( argc!=3 ){
    fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
    return(1);
  }
  rc = sqlite3_open(argv[1], &db);
  if( rc ){
    fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
    sqlite3_close(db);
    return(1);
  }
  rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
  if( rc!=SQLITE_OK ){
    fprintf(stderr, "SQL error: %s\n", zErrMsg);
    sqlite3_free(zErrMsg);
  }
  sqlite3_close(db);
  return 0;
}


sul sito viene proposto di creare un database  dal terminale con il comando
"sqlite3 test.db"
e questo e' vero e funziona.

Non viene pero' indicato che nel linker vanno specificate alcune cose altrimenti il programma non viene compilato e restituisce errori tipo:

undefined reference to `sqlite3_open'
undefined reference to `sqlite3_errmsg'
undefined reference to `sqlite3_close'
undefined reference to `sqlite3_exec'
undefined reference to `sqlite3_free'
undefined reference to `sqlite3_close'

undefined reference to `pthread_mutex_trylock'

Nel mio caso ho risolto così:
Alla prossima

venerdì 4 novembre 2011

Le prime rogne con il c++

Stamattina sono diventato matto per risolvere un problema legato all'inclusione delle librerie

#include <string>
#include <iostream>
#include <exception>

Una qualunque di esse mi dava un errore di riferimento.

A nulla sono valsi i tentativi di copiare le opzioni di compilazione del compilatore da un programma che invece le linkava correttamente.

Il tutto era dovuto semplicemente al fatto che, partendo il mio progetto da una creazione guidata, la stessa generava un file ".c" e non ".cpp".

Rinominando il file la cosa si e' risolta

Database

Dato che sicuramente avro' bisogno di un database ho scelto SQLite. L'ho ponderato con altre soluzioni ma mi sembra che per il tipo di lavoro che devo svolgere vada piu che bene e non sia particolarmente difficile e pesante (ho gia lavorato con MySQL, SQLServer e ovviamente ACCESS).

Per l'installazione semplicemente
"sudo apt-get install sqlite"
Ho inoltre installato dal solito Ubuntu Software Center 
SQLiteMan 

Scelte didattiche, Ubuntu e Code::Blocks

Ciao a Tutti

Questo e' il primo post del mio blog.

E' necessario percio' che prima mi presenti: sono un appassionato di informatica che ormai da circa 15 anni lavora nel settore.
Durante la mia carriera informatica sono venuto a contatto con realta' diverse.

Attualmente e' mio interesse personale approfondire la conoscenza dell'architettura linux e la programmazione ad essa associata.

Dopo un'attenta documentiazione tramite Google ho deciso di iniziare con qualcosa di semplice per complicarmi eventualmente la vita in un secondo momento, quando il know-how me lo permetterà.

Ecco il motivo per qui scelgo Ubuntu, distribuzione a me cara e nota.

Tralasciando l'installazione della attuale release 11.10 gli step affrontati successivamente sono:

1- Calibrazione del S.O. con :
  • Modifica del file hosts con aggiunta delle voci relative alla rete interna (dns dei nomi della rete tipo 
             192.168.1.1 router

  • installazione della stampante con printing
2- Installazione della libreria build-essential (sudo apt-get install build-essential)
3- Installazione di code:blocks (da Ubuntu Software Center)