Stoner website RSS Stoner website RSS http://stoner.altervista.org/ 2009-11-25T11:45:54Z stoner 2009-10-31T00:00:00Z 2009-10-31T00:00:00Z http://stoner.altervista.org/index.php?mod=news&cat=1&news=84 Restart stoner.altervista.org/blog/ Questo sito rimarrà ancora operativo, ma non aggiornato. ]]> stoner 2009-10-29T00:00:00Z 2009-10-29T00:00:00Z http://stoner.altervista.org/index.php?mod=news&cat=3&news=83 Italia vs Giappone ]]> stoner 2009-10-29T00:00:00Z 2009-10-29T00:00:00Z http://stoner.altervista.org/index.php?mod=news&cat=2&news=82 Tributo di Letterman a Bill Gates ]]> stoner 2009-10-27T00:00:00Z 2009-10-27T00:00:00Z http://stoner.altervista.org/index.php?mod=news&cat=3&news=81 Qualità del codice Immagine ]]> stoner 2009-08-30T00:00:00Z 2009-08-30T00:00:00Z http://stoner.altervista.org/index.php?mod=news&cat=2&news=80 Firefox VS Opera VS Internet Explorer Immagine Immagine Immagine Immagine ]]> stoner 2009-04-30T00:00:00Z 2009-04-30T00:00:00Z http://stoner.altervista.org/index.php?mod=sorgenti&source=17 Levenshtein
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. ]]>
stoner 2009-04-11T00:00:00Z 2009-04-11T00:00:00Z http://stoner.altervista.org/index.php?mod=sorgenti&source=16 sPaste
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. ]]>
stoner 2009-02-17T00:00:00Z 2009-02-17T00:00:00Z http://stoner.altervista.org/index.php?mod=sorgenti&source=15 Complex
Come da descrizione, niente da aggiungere, nell'archivio è presente il progetto con un main di spiegazione dei metodi della classe. ]]>
stoner 2009-01-17T00:00:00Z 2009-01-17T00:00:00Z http://stoner.altervista.org/index.php?mod=sorgenti&source=12 TreeExample
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. ]]>
stoner 2009-01-17T00:00:00Z 2009-01-17T00:00:00Z http://stoner.altervista.org/index.php?mod=sorgenti&source=13 Gauss
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'. ]]>
stoner 2009-01-17T00:00:00Z 2009-01-17T00:00:00Z http://stoner.altervista.org/index.php?mod=sorgenti&source=14 Diofanto
Come da descrizione, programma che risolve le equazioni diofantee lineari utilizzando l'algoritmo di Euclide. ]]>
stoner 2008-12-18T00:00:00Z 2008-12-18T00:00:00Z http://stoner.altervista.org/index.php?mod=sorgenti&source=11 aGuest
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. ]]>
stoner 2008-11-16T00:00:00Z 2008-11-16T00:00:00Z http://stoner.altervista.org/index.php?mod=sorgenti&source=1 ArrayList
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;
}
]]>
stoner 2008-11-16T00:00:00Z 2008-11-16T00:00:00Z http://stoner.altervista.org/index.php?mod=sorgenti&source=2 COW Interpreter
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/ `:  /
 
			]]>
		
		
			
				stoner
			
			2008-11-16T00:00:00Z
			2008-11-16T00:00:00Z
			
			http://stoner.altervista.org/index.php?mod=sorgenti&source=3
			WinMineSolver
			
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. ]]>
dsgdf 2009-11-24T17:56:47Z 2009-11-24T17:56:47Z http://stoner.altervista.org/index.php?mod=nopaste&action=view&id=47 dsgdf - csharp
<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>
]]>
hg 2009-11-24T11:34:32Z 2009-11-24T11:34:32Z http://stoner.altervista.org/index.php?mod=nopaste&action=view&id=46 hg - csharp
        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);
                    }
                }               
            }            
        }
]]>
rsa 2009-11-23T15:27:35Z 2009-11-23T15:27:35Z http://stoner.altervista.org/index.php?mod=nopaste&action=view&id=45 rsa - csharp
//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);

                    }
                }
            }
        }
]]>
32 2009-11-18T10:24:22Z 2009-11-18T10:24:22Z http://stoner.altervista.org/index.php?mod=nopaste&action=view&id=44 32 - csharp
        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);
                }
            }
        }
]]>
{O.o} 2009-10-07T17:38:07Z 2009-10-07T17:38:07Z http://stoner.altervista.org/index.php?mod=nopaste&action=view&id=43 {O.o} - csharp
        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();
        }
]]>