C++ e MySQL++

5 settembre 2009

Per poter utilizzare la libreria MySQL++ su ubuntu è necessario installare i seguenti pacchetti:

– libmysql++2c2a
– libmysql++-dev

per la compilazione bisogna eseguire la riga:

g++ file_inp.cpp -o file_out -I/usr/include/mysql++/ -I/usr/include/mysql -L/usr/local/lib -lmysqlpp -lmysqlclient -lnsl -lz -lm

L’ho provato sul seguente codice:


#include <mysql++.h>
#include <iostream>
#include <iomanip>
using namespace std;
int main(int argc, char *argv[])
{
const char *db = "nome_database", *server = "server_db", *user = "nome_utente", *pass = "password";
// Connect to the sample database.
mysqlpp::Connection conn(false);

conn = conn.connect(db, server, user, pass);

// Retrieve a subset of the sample stock table set up by resetdb
mysqlpp::Query query = conn.query();
query << “select item from cliente”;
mysqlpp::Result res = query.store();
// Display the result set
cout << “We have:” << endl;
if (res) {
mysqlpp::Row row;
mysqlpp::Row::size_type i;
for (i = 0; row = res.at(i); ++i) {
cout << ‘\t’ << row.at(0) << endl;
}
}
else {
cerr << “Failed to get item list: ” << query.error() << endl;
return 1;
}
return 0;
}

In caso di problemi rimando a

http://tangentsoft.net/mysql++/
e
http://tangentsoft.net/mysql++/doc/

http://www.cyberciti.biz/tips/linux-unix-connect-mysql-c-api-program.html


C e MySQL

5 settembre 2009

E’ necessario installare il seguente pacchetto libmysqlclient15-dev:

sudo apt-get install libmysqlclient15-dev

e seguire i passi qui descritti:

http://www.cyberciti.biz/tips/linux-unix-connect-mysql-c-api-program.html

Per la compilazione usare la riga: gcc -o file_out $(mysql_config --cflags) file_in.c $(mysql_config --libs)


C++ e MySQL

5 settembre 2009


// connette a mysql e stampa la prima colonna della tabella selezionata;
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
#include <iostream>

using namespace std;

const char* host = “localhost”; // host di connessione
const char* database = “nome_database”; // database di connessione
const char* db_user = “nome_utente”; // nome utente per la connessione
const char* db_pass = “password”; // password non cifrata
const char* query = “select * from cliente”; //comando

int main()
{
MYSQL mysql;
MYSQL_RES* result;
MYSQL_ROW row; // restituisce NULL se non avviene con successo
if (! mysql_init (&mysql)) {
printf (“Errore nella allocazione di memoria.\n”);
exit (EXIT_FAILURE);
}
if (! mysql_real_connect (&mysql, host, db_user, db_pass, “”, 0, NULL, 0))
{
printf (“Errore nella connessione.\n”);
exit (EXIT_FAILURE);
}// restituisce zero se avviene con successo
if (mysql_select_db (&mysql, database))
{
printf (“Errore nella selezione del database.\n”);
exit (EXIT_FAILURE);
}
printf (“Connessione avvenuta.\n”); // esegue la query
if (mysql_query (&mysql, query))
{
printf(“Errore nella query.\n”);
goto error;
}
result = mysql_store_result (&mysql);
cout << “Codice cliente\t” << “Partita IVA\t” << “Ragione sociale\n”;
cout << “———————————————–\n”;
while(( row = mysql_fetch_row(result)) != NULL)
{
cout << row[0] << “\t” << row[1] << “\t” << row[2] << endl;
}
cout << endl;
error:// chiude le risorse
mysql_close (&mysql);
exit (EXIT_SUCCESS);
}

Per compilare si deve usare:

g++ -o file_out $(mysql_config --cflags) file_in.cpp $(mysql_config --libs)

Per utilizzare il MySQL++ non sono ancora riuscito a farlo funzionare, comunque lascio dei riferimenti:

http://forge.mysql.com/wiki/Connector_C%2B%2B
http://dev.mysql.com/tech-resources/articles/mysql-connector-cpp.html
http://tangentsoft.net/mysql++/doc/html/refman/
http://tangentsoft.net/mysql++/doc/html/userman/
http://tangentsoft.net/mysql++/


Ruby e MySQL

5 settembre 2009

Per poter accedere a MySQL da Ruby è necessario installare il modulo mysql con il comando

sudo gem install mysql

(Se non funziona provate a installare libdbd-mysql-ruby e libmysql-ruby in base alla vostra versione di Ruby dal repository)

Per utilizzare la “gemma” si usa require "mysql"

Esempio completo:


#!/usr/bin/ruby -w
# simple.rb - simple MySQL script using Ruby MySQL module

require "mysql"

begin
# connect to the MySQL server
dbh = Mysql.real_connect("localhost", "nome_utente", "password", "nome_database")
# get server version string and display it
puts "Server version: " + dbh.get_server_info
rescue Mysql::Error => e
puts "Error code: #{e.errno}"
puts "Error message: #{e.error}"
puts "Error SQLSTATE: #{e.sqlstate}" if e.respond_to?("sqlstate")
ensure
# disconnect from server
dbh.close if dbh
end

Riferimenti:

http://www.kitebird.com/articles/ruby-mysql.html
http://www.ruby-lang.org/en/documentation/
http://www.ruby-doc.org/


Python e MySQL

5 settembre 2009

Per poter accedere a MySQL da Python occorre installar l’API python-mysqldb

poi aggiungere la riga import MySQLdb

Esempio completo:


#!/usr/bin/env python
# periodi.py

import sys
import MySQLdb

conn = MySQLdb.connect(host="localhost", user="nome_utente", passwd="password", db="nome_database")

cursore = conn.cursor()

cursore.execute('SELECT * FROM cliente')

tupla = cursore.fetchall()

print
print 'codice cliente\tpartita IVA\tragione sociale'
print '-------------------------------------------------'
for record in tupla:
print '%d\t\t%s\t%s' % (record[0], record[1], record[2])

print 'end.'
print

Riferimenti:

http://www.kitebird.com/articles/pydbapi.html
http://mysql-python.sourceforge.net/MySQLdb.html
http://www.blackbirdblog.it/programmazione/python/python-e-mysql
http://docs.python.org/contents.html


JDBC, come accedere ad un database da Java

5 settembre 2009

Premetto che io dispongo del JDK 1.6.0_14 della Sun installato in /usr/lib/jvm/java-6-sun-1.6.0.14 sulla mia Ubuntu e del database MySQL 5.0.51a e che farò riferimento a questi strumenti per la mia guida.

Per poter accedere al database da Java è necessario scaricare il driver di MySQL da qui.

Estrarre il file tar.gz con il comando tar zxfv mysql-connector-java-5.1.8.tar.gz (cambiate i numeri 5.1.8 in base alla versione del driver che avete scaricato).

Dopo di ciò bisogna copiare il driver nella directory /usr/lib/jvm/java-6-sun-1.6.0.14/jre/lib/ext

sudo cp mysql-connector-java-5.1.8-bin.jar /usr/lib/jvm/java-6-sun-1.6.0.14/jre/lib/ext

e modificare la variabile di sistema CLASSPATH:

export CLASSPATH=$CLASSPATH:mysql-connector-java-5.1.8-bin.jar

Anche se sinceramente ho visto che a me funziona anche settare suddetta variabile.

Ora bisogna passare al codice:

Aggiungiamo il package import java.sql.*;

poi le variabili

Connection con = null;
Statement st = null;
ResultSet rs = null;

Aggiungiamo ora il driver con la riga

Class.forName("com.mysql.jdbc.Driver");
o esclusivamente la riga
DriverManager.registerDriver(new com.mysql.jdbc.Driver());

A questo punto abbiamo il driver, aggiungiamo la connessione:

con = DriverManager.getConnection("jdbc:mysql://localhost/nome_database", "nome_utente", "password");

Se il database non ha password si può utilizzare la funzione:

con = DriverManager.getConnection("jdbc:mysql://localhost/nome_database");

Per eseguire le query abbiamo bisogno di uno statement, quindi:

st = con.createStatement();

Ora per eseguire effettivamente la query si utilizza la riga

rs = st.executeQuery("select * from cliente");

e per vedere i risultati:

while (rs.next())
{
System.out.println("Codice cliente: " + rs.getString(1));
System.out.println("Partita IVA: " + rs.getString(2));
System.out.println("Ragione sociale: " + rs.getString(3));
System.out.println(" ");
}

Quando abbiamo finito con il database chiudiamo la connessione:

con.close();

Un esempio completo lo si trova di seguito:


mport java.sql.*;

public class DBConn
{

public static void main(String args[])
{
new DBConn();
}

public DBConn()
{
Connection con = null;
Statement st = null;
ResultSet rs = null;

try
{
//Class.forName("com.mysql.jdbc.Driver");
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
}/*catch(ClassNotFoundException e)
{
System.out.println("Errore: " + e.getException().getMessage());
System.exit(1);
}*/catch(SQLException e)
{
System.out.println("Errore : " + e.getSQLState());
System.exit(1);
}

try
{
con = DriverManager.getConnection("jdbc:mysql://localhost/cremonesi", "michele", "hellasverona");
}catch(SQLException e)
{
System.out.println("Errore : " + e.getSQLState());
System.exit(1);
}

try
{
st = con.createStatement();
}catch(SQLException e)
{
System.out.println("Errore : " + e.getSQLState());
System.exit(1);
}

try
{
rs = st.executeQuery("select * from cliente");
}catch(SQLException e)
{
System.out.println("Errore : " + e.getSQLState());
System.exit(1);
}

System.out.println();
try
{
while (rs.next())
{
System.out.println("Codice cliente: " + rs.getString(1));
System.out.println("Partita IVA: " + rs.getString(2));
System.out.println("Ragione sociale: " + rs.getString(3));
System.out.println(" ");
}
}catch(SQLException e)
{
System.out.println("Errore : " + e.getSQLState());
System.exit(1);
}

try
{
con.close();
}catch(SQLException e)
{
System.out.println("Errore : " + e.getSQLState());
System.exit(1);
}

}
}

Risorse:

http://dev.mysql.com/usingmysql/java/
http://www.soft-land.org/articoli/jdbc


SkyLUG un Linux user group dedicato all’astronomia

25 agosto 2009

SkyLUG

SkyLUG

Questo gruppo nasce per avvicinare il mondo Linux all’astronomia e di aiutare i meno esperti all’installazione e alla
configurazione di questo famoso sistema operatvio free.

Si possono postare anche domande che riguardano solo il software e non l’astronomia. Questo gruppo è aperto a chiunque sia appassionato di open source e di astronomia.

Da visitare:

http://tech.groups.yahoo.com/group/skylug/


Nel 2010 arriverà Firefox 3.6

25 agosto 2009

La fondazione Mozilla sta già pensando alla nuova release di Firefox, la 3.6, nome in codice Namoroka.

È  già stata rilasciata una linea guida per gli sviluppatori e una prima alpha del browser.

Tra le novità c’è la possibilità di nascondere la barra dei menù, un po’ come accade sul browser di casa Google, Chrome, in modo da dare più spazio visibile alle pagine web. Tale funzione risulta particolarmente utile a coloro che sviluppano plug-in.

Firefox

Firefox 3.6

Inoltre viene aggiunto Compositor, un nuovo framework per la visualizzazione dei contenuti che permette di migliorare l’aggiornamento e lo scorrimento delle pagine con contenuti dinamici, migliorare il sincronismo tra audio e video, rendere i contenuti interattivi più reattivi all’input dell’utente e introdurre il supporto nativo ai widget. Incrementa le performance del motore JavaScript TraceMonkey e supporta una più estesa gamma di proprietà CSS3. Possiamo trovare anche il supporto per l’interfaccia nsISound, un sistema di notifiche sonore per i servizi online, ad asempio l’arrivo di nuova posta elettronica sulla propria webmail o su un servizio di messaggistica istantanea come Meebo.

Insomma le novità sembrano essere davvero tante. Dovremo aspettare però la seconda metà del 2010 per poter scaricare la versione finale di questa release.

Fonti:


Mac OS Snow Leopard disponibile il 28 agosto

25 agosto 2009

Roma – Snow Leopard arriverà prima del previsto, il 28 agosto anziché a settembre come in precedenza Apple aveva affermato, una possibilità che da giorni in molti avevano pronosticato. Arriverà agli utenti che hanno acquistato un Mac negli ultimi mesi come aggiornamento gratuito, oltre ad essere disponibile negli Apple Store e nei negozi autorizzati al prezzo di 29 euro (49 per il Family Pack).

Con questa release, Apple mette definitivamente in cantina le sue macchine con processore PowerPC: Mac OS 10.6 sarà disponibile solo per gli ultimi prodotti equipaggiati con processore Intel e richiede almeno un 1 GB di RAM per funzionare a dovere. Per chi effettuerà l’upgrade da Tiger il prezzo sale a 169 euro (229 per il Family Pack) ma sono incluse le ultime versioni di iWork e iLife.

Le applicazioni di base del sistema sono a 64bit ma rimane il supporto per quelle a 32bit. Viene inoltre integrato il supporto per Microsoft Exchange e in generale sono state migliorate le prestazioni di tutti gli elementi principali del sistema, in particolare il Finder, che secondo i test condotti da Apple risulta più intuitivo, e Time Machine, la cui velocità è stata aumentata dell’ottanta per cento (sempre secondo le stime fornite da Cupertino).

In contemporanea uscirà anche la versione server di Snow Leopard, che presenta nuove feature quali Podcast Producer 2 e Mobile Access Server, e costerà 499 euro.

Giorgio Pontico

Fonte:
http://punto-informatico.it/2696786/PI/News/snow-leopard-libero-ad-agosto.aspx
http://www.apple.com/pr/library/2009/08/24macosx.html


Creare un host virtuale con Apache su Linux

18 agosto 2009

Ho trovato questa guida su http://www.comefarea.it/linuxandco/lamp/, l’ho provata e funziona

LAMP

L’acronimo LAMP significa Linux Apache MySQL PHP. Ultimamente, con l’aumento di popolarità di Python, l’ultima P assume anche il significato di Python.
Inizieremo con l’installazione e configurazione del server web Apache, per poi passare a MySQL e PHP. Infine, andremo a testare il nostro ambiente di sviluppo con una famosa applicazione web per la gestione di MySQL: phpMyAdmin. Il sistema utilizzato per scrivere l’articolo è Ubuntu Linux 8.04.1 LTS.
Installazione e configurazione di Apache

Su Ubuntu l’installazione di Apache è semplice come quella di qualsiasi altro software, con la differenza che dobbiamo usare la linea di comando, dato che Apache non compare nella lista delle normali applicazioni di Ubuntu Desktop. Per installare il server web, lanciate il comando:

$ sudo apt-get install apache2

Dato che Apache 2 è un software molto articolato, sicuramente il sistema di gestione pacchetti vi chiederà di installare ulteriore software a completamento.
Per verificare che l’installazione sia andata a buon fine, aprite il vostro browser web e digitate l’indirizzo http://127.0.0.1. Dovreste trovarvi davanti una pagina così:

Apache avviato e funzionante

Apache avviato e funzionante

Purtroppo la configurazione predefinita di Apache va bene solo per visualizzare questa pagina. Per avere un ambiente su misura, bisogna mettere mano ai file di configurazione.

NOTA
Prima di procedere con i passi successivi, si consiglia di leggere l’articolo che parla della console dei comandi.

Portatevi nella cartella /etc/apache, la quale contiene tutti i file di configurazione di Apache. Normalmente il file di configurazione principale è httpd.conf. Su Ubuntu, invece, il sistema di configurazione è un po’ diverso dal solito: il file principale è apache.conf, in più ci sono molti file accessori che vengono inclusi in quello principale tramite una apposita direttiva. In questo modo, ogni volta che si vuole aggiungere o togliere qualcosa nel file di configurazione, non si va a modificare direttamente apache.conf, ma si aggiungono o tolgono i file accessori. È un modo molto efficace di gestire la configurazione, dato che questa frammentazione rende più facile trovare eventuali errori di sintassi.

Portatevi nella sotto-cartella sites-available, che contiene tutti i virtual hosts disponibili nella vostra configurazione di Apache. L’unico file presente è default, contenente la configurazione predefinita del virtual host principale di Apache. Copiate questo file per creare un nuovo virtual host. Nel nostro caso lo abbiamo copiato col nome vh_prova.

NOTA
ovviamente, dato che siamo all’interno della cartella /etc, per poter fare modifiche alla struttura del filesystem e ai file stessi, dobbiamo avere i diritti di amministrazione.

Aprendo il file appena creato, vi trovate davanti al file di configurazione per il vostro nuovo host virtuale:

<VirtualHost *>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/


<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>



<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>



ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/


<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>



ErrorLog /var/log/apache2/error.log


# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On


Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>

Ai fini del nostro articolo, sfoltiremo questo file per renderlo più semplice e maneggevole, senza le complicazioni tipiche di una configurazione da server. In fondo il nostro obiettivo è avere una workstation funzionante, non un server perfettamente configurato.
Il nostro nuovo file, debitamente sfoltito, risulterà essere:

NameVirtualHost *
<VirtualHost *>
ServerAdmin vostra_email@prova.it
ServerName vh_prova.backintime


DocumentRoot /home/paolo/public/vh_prova
<Directory />
Options FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>

Le due righe più importanti di questo file sono:

ServerName vh_prova.backintime
DocumentRoot /home/paolo/public/vh_prova

La prima è auto-documentante: indica il nome, o indirizzo, del nostro host virtuale. Dalla nostra configurazione di esempio, si evince che il nostro host risponderà all’indirizzo http://vh_prova.backintime.
Come scegliere l’indirizzo? Di solito consiglio di usare nome_virtual_host.nome_computer; nel nostro caso, come si intuisce, il nome del computer è backintime.
La seconda riga, invece, indica la nostra document root, cioè la cartella radice del nostro host virtuale, quella che conterrà tutti i file della futura applicazione web che svilupperemo. Nel nostro caso, ho deciso che i files risiederanno nella sottocartella vh_prova della mia cartella public. Qualsiasi cartella va bene come document root, a patto che possa essere accessibile dal server web Apache.

Il significato delle altre opzioni di configurazione esula dallo scopo dell’articolo, quindi rimando alla documentazione ufficiale di Apache.

Dopo aver sistemato la configurazione del nostro host virtuale, dovete creare un link simbolico nella cartella sites-enabled:

$ sudo ln -s /etc/apache2/sites-available/vh_prova /etc/apache2/sites-enabled/

Creando questo link simbolico, avete reso attivo il vostro nuovo host: infatti questa cartella contiene i link simbolici alle configurazioni degli host virtuali che devono essere attivati sulla vostra installazione di Apache.

Adesso dovete rendere accessibile l’indirizzo del nostro virtual host: infatti digitando l’indirizzo http://vh_prova.backintime, il vostro computer andrà a cercare la risoluzione del nome nel vostro server DNS, che nella maggior parte dei casi risponderà con un errore. Per effettuare un by-pass del DNS, dovete modificare il file /etc/hosts, che contiene le informazioni sugli host conosciuti. Aggiungete la riga:

127.0.0.1 vh_prova.backintime

e salvate il file. Ovviamente, se avete scelto un nome diverso da vh_prova.backintime, mettete la vostra scelta.

La configurazione del virtual host è finita. Adesso non resta che scrivere una pagina index.html di prova per testarne il funzionamento. Per i più pigri, ecco un semplice documento HTML per un veloce copia-incolla:

<html>
<head>
<title>Home page di prova</title>
</head>
<body>
<h1>Home page di prova</h1>
<p>Questa &egrave; la prima home page di prova</p>
</body>
</html>

Salvatelo nella document root che avete indicato in precedenza. L’ultima operazione da fare è riavviare Apache per rendere attive le modifiche:

$ sudo /etc/init.d/apache2 restart

Se il riavvio va a buon fine, dovreste trovarvi davanti a una schermata così:

Il virtual host che funziona

Il virtual host che funziona

Nel caso in cui il riavvio di Apache non abbia successo, controllate la sintassi del vostro file di configurazione: nella maggior parte dei casi il problema è quello.