Stoner website RSS http://www.stoner.altervista.org/ Stoner website Wed, 25 Nov 2009 11:46:27 +0100 Restart http://stoner.altervista.org/index.php?mod=news&cat=1&news=84 stoner.altervista.org/blog/ Questo sito rimarrà ancora operativo, ma non aggiornato. ]]> News Sat, 31 Oct 2009 00:00:00 +0100 stoner http://stoner.altervista.org/index.php?mod=news&cat=1&news=84#commenti Italia vs Giappone http://stoner.altervista.org/index.php?mod=news&cat=3&news=83 ]]> News Thu, 29 Oct 2009 00:00:00 +0100 stoner http://stoner.altervista.org/index.php?mod=news&cat=3&news=83#commenti Tributo di Letterman a Bill Gates http://stoner.altervista.org/index.php?mod=news&cat=2&news=82 ]]> News Thu, 29 Oct 2009 00:00:00 +0100 stoner http://stoner.altervista.org/index.php?mod=news&cat=2&news=82#commenti Qualità del codice http://stoner.altervista.org/index.php?mod=news&cat=3&news=81 Immagine ]]> News Tue, 27 Oct 2009 00:00:00 +0100 stoner http://stoner.altervista.org/index.php?mod=news&cat=3&news=81#commenti Firefox VS Opera VS Internet Explorer http://stoner.altervista.org/index.php?mod=news&cat=2&news=80 Immagine Immagine Immagine Immagine ]]> News Sun, 30 Aug 2009 00:00:00 +0100 stoner http://stoner.altervista.org/index.php?mod=news&cat=2&news=80#commenti Levenshtein http://stoner.altervista.org/index.php?mod=sorgenti&source=17
E' uno script che sfrutta la distanza di Levenshtein per calcolare la possibile frase cercata data una frase in input (un pò quello che fa Google quando sbagliate). Lo script usa due dizionari, uno inglese e uno in italiano, che sono stati presi gratuitamente dal sito di OpenOffice.org . Se volete provare lo script qui c'è una demo online. ]]>
Sorgenti Thu, 30 Apr 2009 00:00:00 +0100 stoner http://stoner.altervista.org/index.php?mod=sorgenti&source=17#commenti
sPaste http://stoner.altervista.org/index.php?mod=sorgenti&source=16
E' un piccolo script per NoPaste scritto in PHP tanto per provare jQuery. Lo lascio qui perchè magari potrà servire a qualcuno. Usa Geshi come Syntax Highlighter e, inoltre, si appoggia a jQuery per quanto riguarda Ajax. Lo script non necessita di installazione, basta fare l'upload della cartella nel vostro spazio web e richiamare il file index.php. Non ha bisogno neanche di database, salva su normali file di testo. Qui una demo dello script. Ultimo aggiornamento 17/04/2009. Se avete scaricato lo script prima effettuate nuovamente il download, ho corretto un bug. ]]>
Sorgenti Sat, 11 Apr 2009 00:00:00 +0100 stoner http://stoner.altervista.org/index.php?mod=sorgenti&source=16#commenti
Complex http://stoner.altervista.org/index.php?mod=sorgenti&source=15
Come da descrizione, niente da aggiungere, nell'archivio è presente il progetto con un main di spiegazione dei metodi della classe. ]]>
Sorgenti Tue, 17 Feb 2009 00:00:00 +0100 stoner http://stoner.altervista.org/index.php?mod=sorgenti&source=15#commenti
TreeExample http://stoner.altervista.org/index.php?mod=sorgenti&source=12
Niente di particolare, solo un piccolo esempio dell'utilizzo del controllo treeView. Permette di creare, data una cartella, la struttura ad albero della stessa (sottodirectory e/o file) usando il controllo TreeView. ]]>
Sorgenti Sat, 17 Jan 2009 00:00:00 +0100 stoner http://stoner.altervista.org/index.php?mod=sorgenti&source=12#commenti
Gauss http://stoner.altervista.org/index.php?mod=sorgenti&source=13
Un programma che implementa l'algoritmo di Gauss per la riduzione a scala delle matrici. Il codice è stato inglobato all'interno di una classe; il programma può essere avviato anche da riga di comando passando come parametro un file che contiene la matrice, in questo caso, l'output viene scritto all'interno di un altro file. In questo modo si possono passare al programma anche matrici di grandezza 'proibitiva'. ]]>
Sorgenti Sat, 17 Jan 2009 00:00:00 +0100 stoner http://stoner.altervista.org/index.php?mod=sorgenti&source=13#commenti
Diofanto http://stoner.altervista.org/index.php?mod=sorgenti&source=14
Come da descrizione, programma che risolve le equazioni diofantee lineari utilizzando l'algoritmo di Euclide. ]]>
Sorgenti Sat, 17 Jan 2009 00:00:00 +0100 stoner http://stoner.altervista.org/index.php?mod=sorgenti&source=14#commenti
aGuest http://stoner.altervista.org/index.php?mod=sorgenti&source=11
aGuest è un GuestBook scritto in PHP utilizzando la tecnologia Ajax. Da la possibilità di memorizzare i messaggi in un normale database relazionale, oppure in un file XML, permettendo quindi di essere utilizzato anche da chi non ha un database. E' dotato di una piccola area di amministrazione che da la possibilità di modificare e/o cancellare i messaggi, nonchè cambiare le impostazioni nel caso in cui ce ne sia la necessità.
Qui una demo online dello script Edit Aggiornato il codice. Re-Edit L'installazione di aGuest avviene in automatico, basta inserire nel vostro spazio web tutta la cartella dello script e richiamare il file index.php della cartella. Ad esempio stoner.altervista.org/aGuest/index.php, inserite i dati richiesti, e, alla fine della procedura, eliminate la cartalla install contenuta all'interno di aGuest. ]]>
Sorgenti Thu, 18 Dec 2008 00:00:00 +0100 stoner http://stoner.altervista.org/index.php?mod=sorgenti&source=11#commenti
ArrayList http://stoner.altervista.org/index.php?mod=sorgenti&source=1
Questa è una classe che ho scritto qualche anno fa per gestire le liste ad alto livello tramite il C++. La classe utilizza i template ed è situata in un unico file .h, questo perchè ad oggi il C++ non permette ancora la definizione e l'implementazione su file diversi di classi con template, di conseguenza questo è il motivo per cui la libreria è scritta su un unico 'mega' file. Questo è un esempio che spiega l'uso di tutti i metodi della classe presente anche nell'archivio che potete scaricare.
#include <iostream>
#include "List-Class.h"
using namespace std;
using namespace aList;

int main()
{  
    try {             
        ArrayList<int> a; 
        //costruttore standard, si è creata un'istanza
        //di tipo intero dell'oggetto ArrayList, ora può essere usata tramite i metodi definiti 
        //dalla classe stessa

        //quando la lista è vuota si possono aggiungere solo elementi in testa
        //se si prova a fare a.AddInQueue(elemento) si riceve un errore, stessa cosa per
        // a.AddAfterPosition(posizione,elemento) e per a.AddAfterElement(elemento)

        a.AddInHead(2); //aggiungo un elemento in testa 
        a.AddInHead(4); //aggiungo un altro elemento in testa
        //stampa 4 2        
        cout<<"Lista a: "<<a<<endl;       
        /* In alternativa a cout<<a si poteva usare 
            for(int i=1;i<=obj.Count();i++)
                cout<<"n["<<i<<"] Elemento: "<<obj[i];  //o obj(i) è la stessa cosa
        */
        int array[3]={10,11,13};
        a.LoadFromArray(array,3); //carico tre elementi nella lista 
        //stampo 4 2 10 11 13
        cout<<"Lista a dopo l'inserimento dell'array: "<<a<<endl;
        a.AddAfterElement(11,12); //aggiungo il 12 dopo l'11
        //stampo 4 2 10 11 12 13        
        cout<<"Lista a dopo l'inserimento del 12: "<<a<<endl;
        a.SetElem(1,8); //setto l'elemento di poszione 1 ad 8 e quello di posizione 2 a 9
        a.SetElem(2,9);        
        //stampo 8 9 10 11 12 13
        cout<<"Lista a dopo la modifica: "<<a<<endl;
        a.Sort("DESC"); //ordino in modo decrescente
        cout<<"Lista a dopo l'ordinamento: "<<a<<endl;
        a.Clear();
        
        ArrayList<int> b(5); //utilizza il costruttore di copia ad un parametro
        //crea una lista di 5 interi e ci carica i numeri relativi alle posizioni
        //stampa 1 2 3 4 5
        cout<<"Lista b appena caricata: "<<b<<endl;
        b.DeleteHead();
        cout<<"Lista b dopo aver cancellato il 1^ elemento: "<<b<<endl;
        b.DeleteQueu();
        cout<<"Lista b dopo l'eliminazione dell'ultimo: "<<b<<endl;
        b.DeletePosition(2);
        cout<<"Lista b dopo la cancellazione dell'elemento in posizione 2: "<<b<<endl;
        b.AddInHead(94);
        b.DeleteElement(2);
        cout<<"Lista b dopo l'inserimento in testa di 94 e la cancellazione di 2: "<<b<<endl;
        a=b;
        cout<<"Lista a dopo che gli si sono impostati i valori di b: "<<a<<endl;
        a+=b;
        cout<<"Lista a dopo che gli si sono aggiunti i valori di b: "<<a<<endl;       
        ArrayList<int> c(2,1),e(2,2),d; //quest'ultimo costruttore crea
        //due elementi (in questo caso) e ad entrambi setta il valore passato come
        //default (il secondo parametro)
        cout<<"Lista c appena creata: "<<c<<endl;
        cout<<"Lista e appena creata: "<<e<<endl;
        d=c+e;
        cout<<"Lista d dopo che gli si sono aggiunti i valori della lista c ed e: "<<d<<endl;
        cout<<"Premi invio per continuare..."<<endl;
        a.Clear();
        b.Clear();
        c.Clear();
        d.Clear();
        e.Clear();
        cin.get();
        ArrayList<int> A(4),B(2);
        if(A==B) cout<<"A = B"<<endl;
        if(A!=B) cout<<"A != B"<<endl;
        if(A>=B) cout<<"A >= B"<<endl;
        if(A>B) cout<<"A > B"<<endl;
        if(A<B) cout<<"A < B"<<endl;
        if(A<=B) cout<<"A <= B"<<endl;
        cout<<"Premi invio per continuare..."<<endl;        
        cin.get();
        ArrayList<double> f; //crea un'istanza della classe vuota di tipo double
        //inserisci i dieci elementi che leggerà dallo stream di input
        for(int i=1;i<=10;i++) {
            cout<<"Inserisci un nuovo elemento: ";
            cin>>f;
        }
        //la stampa
        cout<<"Lista appena caricata: "<<f<<endl;
        f.BubbleSort("ASC"); //la ordina in modo crescente
        cout<<"Lista ordinata: "<<f<<endl;
        //legge altri due elementi dallo stream di input
        for(int i=1;i<=2;cout<<"Inserisci il nuovo elemento: ",cin>>f,i++);
        cout<<"Lista aggiornata: "<<f;
        double arr[f.Count()];
        //passa la lista su un array
        f.UnloadToArray(arr,f.Count());
        cout<<endl;
        for(int i=0;i<f.Count();i++) {
            cout<<"["<<i+1<<"]: "<<arr[i]<<endl;
        }
        cout<<"Premi invio per continuare..."<<endl;        
        cin.get();
    }catch(int error) {
        //nel caso in cui si verifica un errore viene stampato il relativo nummero
        cout<<"nNumero errore: "<<error;
    }
    fflush(stdin);
    cin.get();
    return 0;
}
]]>
Sorgenti Sun, 16 Nov 2008 00:00:00 +0100 stoner http://stoner.altervista.org/index.php?mod=sorgenti&source=1#commenti
COW Interpreter http://stoner.altervista.org/index.php?mod=sorgenti&source=2
Un semplice interprete in C++ per il linguaggio esoterico COW. Ad esempio questo è un codice che genera la serie di fibonacci in COW
MoO moO MoO mOo
[[ ciclo principale ]]
MOO
[[ stampa del primo numero ]]
OOM
[[ copia temporanea del primo numero ]]
MMM moO moO MMM mOo mOo
[[ salvataggio del secondo numero nella prima posizione ]]
moO MMM mOo MMM
[[ spostamento nel numero temporaneo ]]
moO moO
[[ uso del numero temporaneo e salvataggio del numero secondario nel ciclo ]]
MOO MOo mOo MoO moO moo mOo mOo moo
E questo è l'output
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
832040
1346269
2178309
3524578
5702887
9227465
14930352
...


L'interprete riesce a comprendere i commenti, ogni 'istruzione' deve essere seguita da un carattere di tabulazione (spazio, tab, end-line), i commenti sono accettati solo multilinea tra i due terminatori [[ e ]], i commenti del tipo [[commento]], non vengono interpretati, bisogna mettere un carattere di tabulazione tra la keyword e il commento vero e proprio (come nell'esempio).

Buon divertimento :D
                                       /;    ;
                                   __  \____//
                                  /{__/   `'____
                                  ___  (o)  (o  }
       _____________________________/         :--'   
   ,-,'`@@@@@@@@        @@@@@@         _     `__
  ;:(  @@@@@@@@@         @@@              ___(o'o)
  :: )  @@@@           @@@@@@        ,'@@(  `===='    Moo!
  :: : @@@@@:           @@@@         `@@@:
  ::   @@@@@:        @@@@@@@)    (  '@@@'
  ;; /      /`,    @@@@@@@@@    :@@@@@)
  ::/  )    {_----------------:  :~`,~~;
 ;;'`; :   )                   :  / `; ;
;;;; : :   ;                   :  ;  ; :
`'`' / :  :                    :  :  : :
    )_ __;      ";"           :_ ;  _        `,','
    :__      * `,'*              :     *   8`;'*  *
 ` ` `  `^' ` `  :/ ` ` ` ` `  `^'  `-^-' ` v/ `:  /
 ]]>
			 Sorgenti 
			Sun, 16 Nov 2008 00:00:00 +0100
			stoner
			http://stoner.altervista.org/index.php?mod=sorgenti&source=2#commenti
		
		
			WinMineSolver
			http://stoner.altervista.org/index.php?mod=sorgenti&source=3
			
Semplice risolutore di prato fiorito, scritto qualche tempo fa dopo aver reversato il famoso gioco di windows. L'uso è semplicissimo, aprite il prato fiorito e lanciate il risolutore, avrete di fronte a voi una schermata del genere che vi indica dove sono presenti i fiori. Immagine Nell'archivio è presente l'intero progetto sviluppato con Code::Blocks. ]]>
Sorgenti Sun, 16 Nov 2008 00:00:00 +0100 stoner http://stoner.altervista.org/index.php?mod=sorgenti&source=3#commenti
dsgdf - csharp http://stoner.altervista.org/index.php?mod=nopaste&action=view&id=47
<Application x:Class="VipWpfUtente.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="MainForm.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/VipWpfUtente;component/Resources/DataSources.xaml" />
                <ResourceDictionary Source="/VipWpfUtente;component/Resources/GlassButton.xaml" /> 
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>
]]>
NoPaste Tue, 24 Nov 2009 17:56:47 +0100 dsgdf
hg - csharp http://stoner.altervista.org/index.php?mod=nopaste&action=view&id=46
        private void xdgVentole_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            
            FrameworkElement recordContentArea = Infragistics.Windows.Utilities.GetAncestorFromName(e.OriginalSource as DependencyObject, "PART_RecordContentSite");
            
            DataRecord record = null;
            //xdgVentole.SelectedItems.DataPresenter.ActiveRecord = record;
            if (null != recordContentArea)
                record = recordContentArea.DataContext as DataRecord;

            if (record != null)
            {
                //this.xchProva.Series.Clear();
                Ventola selectedItem = (Ventola)record.DataItem;
                if (_shownItems.ContainsKey(selectedItem.VentolaID))
                {
                    this.xchProva.Series.Remove(_shownItems[selectedItem.VentolaID]);
                }
                else
                {
                    ObservableCollection<Prova> provas = (new ProvaBO()).GetProvaVentolaPubblicata(selectedItem);
                    if (selectedItem.Provas.Count != 0 && provas[0].Puntos != null && provas[0].Puntos.Count > 1)
                    {
                        //xchProva.Visibility = Visibility.Hidden;
                        //lblMancanoPunti.Visibility = Visibility.Visible;
                        
                        xchProva.Visibility = Visibility.Visible;
                        Series serie = new Series();
                        serie.DataSource = provas[0].Puntos;
                        serie.DataMapping = "ValueX = Potenza; ValueY = PressioneTotale";
                        serie.Name = "Punti";
                        serie.ChartType = ChartType.ScatterLine;
                        serie.StrokeThickness = 4;
                        serie.Animation = new Animation();
                        serie.Animation.BeginTime = new TimeSpan(0, 0, 0, 0, 100);
                        serie.Animation.Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200));
                        this.xchProva.Series.Add(serie);

                        _shownItems.Add(selectedItem.VentolaID, serie);
                    }
                }               
            }            
        }
]]>
NoPaste Tue, 24 Nov 2009 11:34:32 +0100 hg
rsa - csharp http://stoner.altervista.org/index.php?mod=nopaste&action=view&id=45
//NEL CODICE XAML HO QUESTO
 <igDP:XamDataGrid Name="xdgVentole"
                            DataSource="{Binding Source={StaticResource odpVentolePubblicate}}"                    
                            AutoFit="True" 
                            Grid.Column="0" Grid.Row="2"
                            CellActivated="visualizzazioneAltraVentola"
                            Height="630"
                            MouseDoubleClick="xdgVentole_MouseDoubleClick"
                            >

//CODE BEHIND QUESTO



        protected Dictionary<long, Series> _shownItems = new Dictionary<long, Series>();


        private void xdgVentole_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            
            FrameworkElement recordContentArea = Infragistics.Windows.Utilities.GetAncestorFromName(e.OriginalSource as DependencyObject, "PART_RecordContentSite");
            
            DataRecord record = null;
            xdgVentole.SelectedItems.DataPresenter.ActiveRecord = record;
            if (null != recordContentArea)
                record = recordContentArea.DataContext as DataRecord;

            if (record != null)
            {
                this.xchProva.Series.Clear();
                Ventola selectedItem = (Ventola)record.DataItem;
                ObservableCollection<Prova> provas = (new ProvaBO()).GetProvaVentolaPubblicata(selectedItem);
                
                if (selectedItem.Provas.Count == 0)
                {
                    xchProva.Visibility = Visibility.Hidden;
                    lblMancanoPunti.Visibility = Visibility.Visible;
                }
                else
                {
                    xchProva.Visibility = Visibility.Visible;
                    Series serie = new Series();
                    serie.DataSource = provas[0].Puntos;
                    serie.DataMapping = "ValueX = Potenza; ValueY = PressioneTotale";
                    serie.Name = "Punti";
                    serie.ChartType = ChartType.ScatterLine;
                    serie.StrokeThickness = 4;
                    serie.Animation = new Animation();
                    serie.Animation.BeginTime = new TimeSpan(0, 0, 1);
                    serie.Animation.Duration = new Duration(new TimeSpan(0, 0, 2));
                    this.xchProva.Series.Add(serie);
                }
            }            
        }

        #endregion

        private void visualizzazioneAltraVentola(object sender, Infragistics.Windows.DataPresenter.Events.CellActivatedEventArgs e)
        {
            //MessageBox.Show(e.Cell.Record.Index.ToString());
            //FrameworkElement recordContentArea = Infragistics.Windows.Utilities.GetAncestorFromName(e.OriginalSource as DependencyObject, "PART_RecordContentSite");
            FrameworkElement recordContentArea = Infragistics.Windows.Utilities.GetAncestorFromName(e.OriginalSource as DependencyObject, "PART_RecordContentSite");
            DataRecord record = null;
            if (null != recordContentArea)
                record = recordContentArea.DataContext as DataRecord;

            if (record != null)
            {
                //this.xchProva.Series.Clear();
                Ventola selectedItem = (Ventola)record.DataItem;

                if (_shownItems.ContainsKey(selectedItem.VentolaID))
                {
                    this.xchProva.Series.Remove(_shownItems[selectedItem.VentolaID]);
                }
                else
                {
                    ObservableCollection<Prova> provas = (new ProvaBO()).GetProvaVentolaPubblicata(selectedItem);  
                    if (selectedItem.Provas.Count != 0 && provas[0].Puntos != null && provas[0].Puntos.Count > 1)
                    {
                        xchProva.Visibility = Visibility.Visible;
                        Series serie = new Series();
                        serie.DataSource = provas[0].Puntos;
                        serie.DataMapping = "ValueX = Potenza; ValueY = PressioneTotale";
                        serie.Name = "Punti";
                        serie.ChartType = ChartType.ScatterLine;
                        serie.StrokeThickness = 4;
                        serie.Animation = new Animation();
                        serie.Animation.BeginTime = new TimeSpan(0, 0, 0, 0, 100);
                        serie.Animation.Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200));
                        this.xchProva.Series.Add(serie);

                        _shownItems.Add(selectedItem.VentolaID, serie);

                    }
                }
            }
        }
]]>
NoPaste Mon, 23 Nov 2009 15:27:35 +0100 rsa
32 - csharp http://stoner.altervista.org/index.php?mod=nopaste&action=view&id=44
        private void visualizzazioneAltraVentola(object sender, Infragistics.Windows.DataPresenter.Events.CellActivatedEventArgs e)
        {
            //MessageBox.Show(e.Cell.Record.Index.ToString());
            //FrameworkElement recordContentArea = Infragistics.Windows.Utilities.GetAncestorFromName(e.OriginalSource as DependencyObject, "PART_RecordContentSite");
            FrameworkElement recordContentArea = Infragistics.Windows.Utilities.GetAncestorFromName(e.OriginalSource as DependencyObject, "PART_RecordContentSite");
            DataRecord record = null;
            if (null != recordContentArea)
                record = recordContentArea.DataContext as DataRecord;

            if (record != null)
            {
                this.xchProva.Series.Clear();
                Ventola selectedItem = (Ventola)record.DataItem;
                ObservableCollection<Prova> provas = (new ProvaBO()).GetProvaVentolaPubblicata(selectedItem);
                if (selectedItem.Provas.Count == 0)
                {
                    xchProva.Visibility = Visibility.Hidden;
                    lblMancanoPunti.Visibility = Visibility.Visible;
                }
                else
                {
                    xchProva.Visibility = Visibility.Visible;
                    Series serie = new Series();
                    serie.DataSource = provas[0].Puntos;
                    serie.DataMapping = "ValueX = Potenza; ValueY = PressioneTotale";
                    serie.Name = "Punti";
                    serie.ChartType = ChartType.ScatterLine;
                    serie.StrokeThickness = 4;
                    serie.Animation = new Animation();
                    serie.Animation.BeginTime = new TimeSpan(0, 0, 1);
                    serie.Animation.Duration = new Duration(new TimeSpan(0, 0, 2));
                    this.xchProva.Series.Add(serie);
                }
            }
        }
]]>
NoPaste Wed, 18 Nov 2009 10:24:22 +0100 32
{O.o} - csharp http://stoner.altervista.org/index.php?mod=nopaste&action=view&id=43
        private void btnSalvaParametro_Click(object sender, RoutedEventArgs e)
        {
            bool isInsert = false;
            if (this.Parametro == null)
            {
                this.Parametro = new Parametro();
                isInsert = true;
            }
            this.Parametro.NomeValore = txtNomeValore.Text;
            this.Parametro.Descrizione = txtDescrizione.Text;
            this.Parametro.Tipo = txtTipo.Text;

            ParametroBO parametroBO = new ParametroBO();
            if (isInsert)
            {
                List<Parametro> insLstParametro = new List<Parametro>();
                insLstParametro.Add(this.Parametro);
                parametroBO.Insert(insLstParametro);

                this.SourceCollection.Add(this.Parametro);
            }
            else
            {
                parametroBO.Update();
            }

            Close();
        }
]]>
NoPaste Wed, 07 Oct 2009 17:38:07 +0100 {O.o}