Jun 11

Volevo segnalarvi questo divertentissimo utilizzo di google maps.
Guidare liberamente all’interno della vostra città, percorrere con una mini vettura le strade che percorrete ogni giorno.

Visita il sito

Feb 17

Allego un programma del famoso gioco del Sudoku, ce ne sono molti in giro, comunque questo ha il vantaggio di essere flessibile, senza installazione, ed indipendente dalla dimensione del tavolo. Per la generazione del gioco sfrutta un algoritmo genetico (realizzato anche dal prof. Alessandro Londei, esperto di reti neurali e di intelligenza artificiale) molto interessante codificato in VB di cui avrò modo di parlare in successivi articoli.

La versione che distribuisco consente di giocare a Sudoku Junior, ma se a qualcuno interessa rilascerò senza problemi una licenza definitiva. Il programma ha una protezione che si lega al PC ove è installato, quindi per abilitarlo ho bisogno del file di licenza generato (file txt). I sistemi di protezione di questo tipo sono più difficili da superare…

Buon divertimento.

Feb 12

Il problema dell’ordinamento di un array in Java si può risolvere in molti modi, in questo articolo vediamo un procedimento efficiente (complessità media O(n log n)) indipendente dal contenuto dell’array.

Questa classe contiene al suo interno anche un array di etichette (quando si ordinano dei dati è comodo avere un riferimento testuale) del tutto opzionale. Il procedimento si può ri-utilizzare anche in altri linguaggi purché si adotti, se esiste, il costrutto equivalente al Generic Java del linguaggio di codifica (es. i template del C++).

import java.util.Comparator;
  public class QuickSort<generica><generica>&gt;  {
    String [] label;
    Generica[] array;
    private  void  swap( int i, int j) {
    Generica  tmp = array[i];
    array[i] = array[j];
    array[j] = tmp;
    String sTmp =label[i];
    label[i] = label[j];
    label[j] = sTmp;
  }
 
  private int partition(int low, int high) {
    int index = low+(int)(Math.round(Math.random()*(high - low)));
    Generica pivot = array[index];
    swap( index, high);
    for (int i = index = low; i &lt; high; ++ i) {
      if (array[i].compareTo(pivot) &lt;= 0) {
        swap( index++, i);
      }
    }
    swap( index, high);
    return (index);
  }
 
  private  void quickSort(int  low, int high) {
    if (high &gt; low) {
      int index = partition( low, high);
      quickSort( low, index - 1);
      quickSort( index + 1,  high);
    }
  }
 
  public  void quickSort(Generica [] array) {
    this.array=array;
    quickSort( 0, array.length - 1);
  }
 
  public  void quickSort(Generica [] array, String label[]) {
    this.label=label;
    this.array=array;
    quickSort( 0, array.length - 1);
  }
}</generica></generica>
Feb 06

Penso che tra i sogni di ogni programmatore ci sia quello di utilizzare un linguaggio universale di codifica indipendente dall’architettura (client/server o web oriented), dalla piattaforma hw/sw, che funzioni sempre allo stesso modo per implementare concetti comuni come una finestra, un bottone, un accesso ad una risorsa (file, db,…). Se a tutto questo inseriamo un pizzico di effetti speciali accattivanti la miscela diventa davvero esplosiva.

La presenza del flash player in ogni browser è un dato di fatto (vedremo poi che la versione dell’ambiente che sto per presentare è “compliant” anche a DHTML), sarebbe interessante poter scrivere un programma in un linguaggio scritto interamente in XML come, ad esempio:

<window> qualcosa </window>

per attivare una finestra sullo schermo (avete mai provato in Java?) .

La risposta è semplice e si trova su Open Laszlo, un compilatore per applicazioni flash/DHTML, Open Source, per applicazioni stand-alone, cliente/server o web oriented. Personalmente ho trovato molti esempi, oltre che nel forum del sito, anche su vari altri siti nipponici (resi leggibili solo grazie al traduttore di Google, thxs a lot!) e sarebbe interessante divulgare queste notizie anche alla numerosa comunità di sviluppatori italiani.

Una volta istallato l’ambiente, che contiene un application server, un compilatore con debugger integrato (veramente efficace) ed un insieme di demo e tutorial veramente esaustivi, possiamo incominciare (dopo aver attivato l’OpenLaszlo Server da menu) con il primo programmino di esempio:

Nella directory C:\Program Files\OpenLaszlo Server 4.0.8\Server\lps-4.0.8\my-apps (accessibile tramite menu) possiamo scrivere il primo programma in Laszlo:

<canvas>
<window>
<button>Hello World!</button>
</window>
</canvas>

e memorizzarlo in un file che abbia estensione .lzx (ad esempio prova.lzx). I TAG utilizzati sono autoesplicativi e non necessitano di ulteriori dettagli.

Richiamando da browser la directory my-apps e aprendo il file appena generato, esso verrà compilato in flash (dipende dagli switch in fondo alla pagina) ed il risultato sarà visibile all’interno del browser. Provate a trascinare la finestra appena creata, non è stupefacente!?

http://127.0.0.1:8080/lps-4.0.8/my-apps/prova.lzx

Per colori i quali hanno già un server sulla propria macchina che risponde alla porta 8080 è possibile modificarla agendo (non a caso) su un file XML: server.xml che è nell’application server (TomCat) della distribuzione.

La domanda che potrebbe nascere è: “se XML è un linguaggio universale per i dati, come si fa a scrivere i metodi (tanto per restare in tema di Object-Oriented)?” La risposta è in un ulteriore articolo, sempre che l’argomento sia di interesse per la Comunità….

Buon divertimento.

Feb 04

Video Spiegazione del lunedi di ICTV

Come è costituito un Database

Vedi>

Jan 31

Ora vedremo come creare il nostro primo feed.
Scarichiamo la classe FeedCreator.

Con questa classe potremo creare feed in moltissimi formati (Atom, RSS, ecc)

L’esempio che vado a mostrare serve come linea guida, è chiaro che da questo potrete creare altre n possibili soluzioni

 
<?
include("feedcreator.class.php");
 
$rss = new UniversalFeedCreator();
$rss->useCached();
$rss->title = "PHP news";
$rss->description = "daily news from the PHP scripting world";
$rss->link = "http://www.dailyphp.net/news";
$rss->syndicationURL = "http://www.dailyphp.net/".$PHP_SELF;
 
$image = new FeedImage();
$image->title = "dailyphp.net logo";
$image->url = "http://www.dailyphp.net/images/logo.gif";
$image->link = "http://www.dailyphp.net";
$image->description = "Feed provided by dailyphp.net. Click to visit.";
$rss->image = $image;
 
// get your news items from somewhere, e.g. your database:
mysql_select_db($dbHost, $dbUser, $dbPass);
$res = mysql_query("SELECT * FROM news ORDER BY newsdate DESC");
while ($data = mysql_fetch_object($res)) {
$item = new FeedItem();
$item->title = $data->title;
$item->link = $data->url;
$item->description = $data->short;
$item->date = $data->newsdate;
$item->source = "http://www.dailyphp.net";
$item->author = "John Doe";
 
$rss->addItem($item);
}
 
$rss->saveFeed("RSS1.0", "news/feed.xml");
?>

Apri