sabato 19 giugno 2010

Tesina di stato

Finalmente ho messo il sito completo on-line


spero gli piaccia Professore natalizzi!


http://www.dybgroup.it/StoriaInformaticaBlog/
http://www.wwakungfu.com/wwakungfu
http://www.wwakungfu.com/

Struttura Data Base:



Struttura logica:



Post(id,Titolo,Descrizione1,Descrizione2,LinkImmagine,data,ora,Livello,Album_id)

Album(Id,Nome)

Immagine(Id,Nome,linkImage,Album_id)

Commento(Id,utente,email,web,commento,Post_id,Utente_id)

Utente(id,nomeUtente,Password,email,web,nome,cognome,descrizione,LinkImmagine,Eta,categoria)

Tag(id,nome);

Catalogato(Post_id,Tag_id);



Struttura del sito:

lunedì 10 maggio 2010

HOSTING JAVA

mi sono re registrato su hosting java
ed ho creato la pagina iniziale  + una pagina per il test della conessione al mio DB di hosting hava
http://free.hostingjava.it/-Gabriele/
test conessione dat.b.
http://free.hostingjava.it/-Gabriele/test_connessione.jsp
altro test di conessione usando classi java:
http://free.hostingjava.it/-Gabriele/javaTestPost.jsp

mercoledì 5 maggio 2010

compiti I parte

Ecco a lei i primi 3 punti dei compiti svolti a casa XD:

Domande:

1) creare la tabella materia
fatta dai campi ID e NOME;

2)nella tabella titolo
aggiungere la chiave esterna materia_id;

3) fare la jsp che inserisce un titolo con la materia
scelta da un menu dropdown fatto con la select.

---------------
a) e inserite alcuni dati di prova
b) fare la gestione completa di materia

i punti gialli sono quelli FATTI
i punti/o rossi/o sono/è quelli/o ancora non fatti/o, ma che spero di farli/e entro oggi





Risoluzione:

1)
create table materia( id int not null, nome varchar(30), primary key( id));


(queste l'ho fatte per ricreare le tabelle a case su mySql, guardando nel codice fattoa scuola)
create table titolo(id int  not null,titolo varchar(30),prezzo int,primary key( id));
create table autore(id int  not null,nome varchar(30),primary key( id));
create table autore_titolo(autore_id int not null,titolo_id int not null, primary key( autore_id, titolo_id ));

2)
alter table titolo add materia_id int;


3)
 pezzi di codice:

Pagina con la scelta delle materie:
<select name="materia_id">
<%
    ResultSet rs=s.executeQuery("select * from materia");
    while(rs.next()){
%>
<option value = "<%=rs.getInt("id")%>" ><%=rs.getString("nome")%>
<%
}
%>
</select>


Pagina di inserimento:
   [....]


    int id_meteria=Integer.parseInt(request.getParameter("materia_id"));
    inserisci="insert into titolo values ('"+max+"','"+titolo+"','"+prezzo+"','"+id_meteria+"')";   
    s.executeUpdate(inserisci);


    rs=s.executeQuery("SELECT * from materia where id="+id_meteria+"");
    if(rs.next())
    nomeMat=rs.getString("nome");
   
   <table>
    <tr><th>Chiave</th><th>Titolo</th><th>Prezzo</th><th>Materia</th></tr>
    <tr><td><%=max%></td><td><%=titolo%></td><td><%=prezzo%></td><td><%=nomeMat%>     </td></tr>
    </table>


link delle pagine realizate:

http://www.megaupload.com/?d=JNRAR3XR



foto:

giovedì 22 aprile 2010

Esercitazione per esami di stato

dPubblico l'esercitazione su SQL per gli esami di stato:

(Ma perché gli esami vertono principalmente sul SQL, cioé un linguaggio per la gestione dei DB e non su un linguaggio di prog. vero e proprio? Bah!)


domenica 18 aprile 2010

Sito Gestione Autore

Anche e non riesco a configurare MySql  siccome non conosco la password della mia root

cmq ho modificato il sito fatto a scuola, come datoci da lei professore

gli allego il file, che potrà volendo correggere:


http://www.megaupload.com/?d=MQHLXOCK

(inserire il numero a destra ed aspettare 60 secondi poi premere su dw load)

mercoledì 17 febbraio 2010

ancora Engine 3D

Bene bene bene
dopo mesi di nulla facenza se non si considera  HTLM... alla fine ho ricominciato ad "impastare le mani" con il C++

ho trasportato l'engine vecchio da Code::Block ad Visual C++ EX ed. 2008
ed è risultato più complicato del previsto
inoltre ho riscritto gran parte del loader dei modelli 3D....
e cambiato ancora un altra volta l'algoritmo delle ombre...

in aggiunta ho inserito 4 semplici funzioni per la gestione dei tasti della finestra

(WindowKey(), KeyDown(), KeyHit())
e mi sembra anche per il mouse ho inserito altre 2 funzioni

inoltre ho inserito l'engine fisico newton nel progetto (anche se non ancora usabile)

cmq ecco a voi una DEMO! Per provare l'engine

http://www.megaupload.com/?d=341ZM6KM


l'immagine del suddetto esempio:


Ed ecco il codice che vine usato per questa demo:


#include "NewTonWp.hpp"
#include "engine3d.hpp"


#include <iostream>

int main3DEngine(){

    set3DEngine("G1",1024,720,32,FALSE);

    AmbientLightColor(128,128,128);

    ILight* light=createLight(1);
    EntityPosition(light,tV3(50,100,50));
    LightColor(light,255,255,255);
    pointLight(light,TRUE);
    LightRange(light,1100);
    LightConeAngles(light,180);
    EntityRotate(light,tV3(90,0,0));

    ICamera *objCamera=CreateCamera();
    EntityPosition(objCamera,tV3(0,4,-6));
    objCamera->CameraView(0.0f,0.0f,1.0f,1.0f);
    EntityRotate(objCamera,tV3(-30,180,0));
    CameraLight(objCamera,TRUE);
    setFogCamera(objCamera,50.0,100.0,
                           0.0,0.0,0.0);
    shadowMode(objCamera,1);

        IMesh* piramide1=load3DS("..\\media\\donut.3ds");
        EntityPosition(piramide1,tV3(-2,0.1,-2));
        EntityTurn(piramide1,tV3(90,0,0));
        EntityScale(piramide1,tV3(.10,.10,.10));
        normalMesh(piramide1);
normalMesh(piramide1);
        createCastShadow(piramide1);

        IMesh* piramide=load3DS("..\\media\\sh4.3ds");
        EntityPosition(piramide,tV3(0,-1,1.0));
        EntityTurn(piramide,tV3(0,0,0));
        EntityScale(piramide,tV3(.88,.88,.88));
        normalMesh(piramide);
        createCastShadow(piramide);

IMesh* gfloor=load3DS("..\\media\\vista2.3ds");
        normalMesh(gfloor);
        EntityPosition(gfloor,tV3(0.0,-2,1));
        EntityScale(gfloor,tV3(2.25,2.25,2.25));
       // EntityRotate(gfloor,tV3(90,0,0));
normalMesh(gfloor);
        createCastShadow(gfloor);
float CAMERASPEED=0.1;
float lightCaunt=0;
tV3 lightPos;

    /* programa main loop */
    while ((!KeyDown( VK_ESCAPE ))&&(!WindowKey( 0 )))
    {

            if(KeyDown(VK_UP)) EntityMove(piramide,tV3(0.0,CAMERASPEED,0.0));
            if(KeyDown(VK_DOWN)) EntityMove(piramide,tV3(0.0,-CAMERASPEED,0.0));

            if(KeyDown(VK_RIGHT)) EntityTurn(piramide,tV3(0.0,1.0,0));
            if(KeyDown(VK_LEFT)) EntityTurn(piramide,tV3(0.0,-1.0,0));

            if(KeyHit(' ')) shadowMode(objCamera,!objCamera->ZFail);

EntityTurn(piramide1,tV3(0,1,0));

lightPos.x=cos(lightCaunt*3.14/180)*50;
lightPos.y=abs(cos(lightCaunt*3.14/180))*80;
lightPos.z=cos(lightCaunt*3.14/180)*50;

EntityPosition(light,lightPos);
ShadowPos=lightPos;
lightCaunt+=0.30;
            Rander();

    }

    return free3DEngine();
}

HTLM

Ecco una parte del codice fatto a scuola in HTLM e CSS:

_________________________________________





Pagina 1:

<htlm>
  <head>
    <title>La Mia Pagina HTLM</title>
    <style>
    body{
      font-size: 12px;
      line-height: 18px;
      background: green;
      background-image:url(halo.jpg);      
      background-repeat: repeat-y;

      }
#pagina{margin-left: 10px; margin-right: 10px; margin-top: 50px; background-color: white;}
  
#header{border: solid 5px red; font-size: 40px; height:700px; padding:5;}
#centro{border: solid 5px yellow; height:200px; padding:20;}
#footer{border: solid 5px blue;}
   #sinistra{float:left;}  
   #destra{float:right;}  
  select{font-size: 40px;}
    </style>
    <body>
    <!-- COMMENTO -->
<div id="pagina">
  
<div id="header">
     <h1>Si inizia a studiare HTLM</h1>
      <a href="pagina2.html">vai a pagina 2</a> 
<p>Oggi abbiamo iniziato il nuovo modulo</p>
                
             <div id="sinistra">
              <image src="halo.jpg" width="900px" height="500px" />
             </div>
             <div id="destra">
              <image src="haloreach.jpg" width="300px" height="500px" />
             </div> 
</div>
    
<div id="centro">
    
        <div id="sinistra">
          <h2>HTLM, pagine:</h2>
          <ol>
            <li>p1</li>
            <li>p2</li>
            <li>p3</li>
            <li>p4</li>
            <li>p5</li>
          </ol>
         </div> 
         
      <div id="destra">  
        <h2>Che X ti piace?</h2>
         <select>
           <option>x1</option>
           <option>x2</option>
           <option>x3</option>
           <option>x4</option>
           <option>x5</option>
         </select>
</div>
     
</div>
    
<div id="footer">
     <h3>con h3</h3>
<p>il fondo della pagg</p>
    
</div>
    
</div>
    </body>
  </head>
</htlm>
_____________________________________________


Pagina 2:



<html>
    <head>
            <title>La mia seconda pagina.....in quest anno!</title>
            <style>
            table{border: thin solid black;border-collapse: collapse;padding:20;}
            td,th{border: thin dotted black;padding:20;}
            th{background-color:#66FFFF}
            </style>
            <body>
            <div id="pagina">
                    <div id="tabellina">
                      <table>
                              <tr> <th>Studenti</th><th>età</th></tr>
                              <tr> <th>Cavalierini</th><th>9 maggio 1991</th></tr>
                              <tr> <th>Ceccarini</th><th>25 maggio 1990</th></tr>
                              <tr> <th>Ceccarini</th><th>7 gennaio 1990</th></tr>
                              <tr> <th>Palazzetti</th><th>26 dicembre 1991</th></tr>
                      </table>
                    </div>
                   <a href="pagina1.html">vai a pagina 1</a> 
            </div>
           </body>
    </head>
</html>


sabato 12 dicembre 2009

ENGINE 3D openGL, ancora ombre


nuova immagine del l'engine 3D che sto realizando... (dopo 2 settimane ci rimetto le mani sopra XD)

rispetto al vecchio codicce ho corretto dei errori riguardanti l'estrusione della mesh, rispetto alla luce ...
inoltre ora è strutturato in modo che tutte le mesh possano proiettare lombra....
inoltre volendo ci possono essere vare sorgenti di luce :

domenica 6 dicembre 2009

SQLite e JAVA

Per semplificare l'interfaccia tra SQLite e Java ho scritto una piccola libreria composta da 3 classi:




-GetSQLDriver
-SQLib
-SQLEasy

Documentazione:

//libreria carica driver SQL
GetSQLDriver:

il metodo load carica il driver SQL
   driver= cartella dove si trova il driver (default="org.sqlite.JDBC")
  
   public static void load(String driver="org.sqlite.JDBC");


//Libreria gestione Database
SQLib:

il costruttore
   name=indicato il data base da caricare
   public SQLlib(String name);


metodo che chiude il database
   public void SQLClose();


metodo per modificare il db con istruzioni SQLite
   ed=comando SQLite
   public void addMod(String ed);


motodo che restituisce un dato dal DB, la natura del dato va specificata in SQLite
  ed=comando SQLite
  ResultSet= lista valori restituiti
  public ResultSet getMod(String ed)




//Libreria gestione Database, semplificata
SQLEasy:

il costruttore
   name=indicato il data base da caricare
   public SQLEasy(String name);


metodo che chiude il database
   public void SQLClose();


metodo per modificare il db con istruzioni SQLite
   ed=comando SQLite
   public void addMod(String ed);


motodo che restituisce un dato dal DB, la natura del dato va specificata in SQLite
  ed=comando SQLite
  ResultSet= lista valori restituiti
  public ResultSet getMod(String ed)

motodo veloce per creare una tabella
    a=nome tabella
    b=attributi tabella (in SQLite)
    public void crateTable(String a,String b);

motodo veloce per inserire i dati in una tabella
    a=nome tabella
    b=valori da inserire nella tabella (in SQLite)
    public void putValues(String a,String b);

motodo veloce per eliminare una tabella
    a=nome tabella
    public void deleteTable(String a);

motodo veloce per eliminare una riga
    a=nome tabella
    b=caratteristiche che ha il records da eliminare (in SQLite)
    public void deleteRecords(String a,String b);

motodo veloce per conoscere i dati di una tabella
    nTabella=nome della tabella
    nColonne[]=array contenente i nomi delle colonne
    records=valore boolean
         -true verrà restituita una array a due dimenzioni
               dove la prima indicherà il records ed la seconda i dati in esso contenuti


         -false verrà restituita una array a due dimenzioni
               dove la prima indicherà la colonna ed la seconda i dati in essa contenuti

    public String[][] getArrayFrom(String nTabella,String[] nColonne,boolean records=true)







Esempio:


//importo le classi per gestire SQLite
import java.sql.*;

class DbTest{
public DbTest (){
  GetSQLDriver.load(); // carico il driver
  SQLEasy test1=new SQLEasy("Test1.db"); // carico db

  //creo la tabella ed immetto i valori in essa
  test1.crateTable(“tab1”,”id int, nome char[250] ”);
  test1.putValues(“tab1”,”0,’ciao0’ ”);
  test1.putValues(“tab1”,”1,’ciao1’ ”);
  test1.putValues(“tab1”,”2,’ciao2’ ”);

 
  String[] t={“id”,”nome”};
   //stampo (tipo righe)
  printArrayRecords(
                                test1.getArrayFrom("uno",h),”Numero | Nome” ," | ","----------");
                                 );

  //cancello la riga 1
  test1.deleteRecords(“tab1”,”id=1”);


   //stampo (tipo colonne)
  printArrayColonne (
                                test1.getArrayFrom("uno",h,false),”Numero | Nome” ," | ","----------");
                                 );

  //cancella la tabella
  public void deleteTable(“tab1”);

  //chiudo il database
  test1.SQLClose()

}

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

 public void printArrayRecords(String[][] array,String x,String sv,String so){
    if(array!=null){
    System.out.println(x);
        for(int j=0;j<array.length;j++){
          for(int i=0;i<array[j].length;i++){ 
            System.out.print(array[j][i]+sv);
           }
          System.out.println("");
          System.out.println(so);
        }  
        }
    }
 
  DbTest
  public void printArrayColonne(String[][] array,String x,String sv,String so){
    if(array!=null){
    System.out.println(x);
        for(int j=0;j<array[0].length;j++){
          for(int i=0;i<array.length;i++){ 
            System.out.print(array[i][j]+sv);
           }
          System.out.println("");
          System.out.println(so);
        }  
        }
    }
}


giovedì 3 dicembre 2009

STRUTTURA DATA BASE

Ecco a lei professore la struttura del database creata da pampanelli andrea e me

mercoledì 25 novembre 2009

COMPITI

Ecco i copiti da lei ass.
perfavore se può controlli il 9... che molto probabilmente è sbagliato...





ESERCIZIO 13 pag233


Materiali (Codice, Descrizione, Fornitore, Prezzo, IndirizzoFornitore, Quantità, PosizioneInMagazzino, Acciaio, NomeAcciaio, ResistenzaAcciaio, NomeFornitore)


Dipendenze

Acciaio -->(NomeAcciaio, ResistenzaAcciaio) //2rN

NomeAcciaio --> ResistenzaAcciaio //3rN

Acciaio --> ResistenzaAcciaio (transitiva) //3rN


Fornitore
--> (IndirizzoFornitore, NomeFornitore) //2rN




Tabelle


Acciaio(Acciaio, NomeAcciaio) //2rN e 3fN

TipoAcciao(NomeAcciaio, ResistenzaAcciaio) //3fN

Fornitore (Fornitore, IndirizzoFornitore, NomeFornitore) //2rN

Materiali(Codice, Descrizione, Prezzo, IndirizzoFornitore,

Quantità, PosizioneInMagazzino, Acciaio, Fornitore) //2rN






ESERCIZIO 12 pag233


Scrivo la tabella di base:

Libro (CodiceDelLibro, NomeAutore, TitoloLibro, NomeEditore, IndirizzoEditore, Prezzo, AnnoEdizione)

Determino la chiave primaria:

Libro (CodiceDelLibro, NomeAutore, TitoloLibro, NomeEditore, IndirizzoEditore, Prezzo, AnnoEdizione)

Normalizzazione:


1fN:

Non vi sono dati ripetuti.

2fN:

Trovo dipendenze:

IndirizzoEditore --> nomeEditore

//siccome l’indirizzo può avere solo un editore, quindi solo quel nome, ed l’indirizzo è un dato univoco, mentre possono esistere editori con nomi uguali

3fN:

non ci sono dipendenze transitive


tabelle finali


Editore(IndirizzoEditore, nomeEditore)

Libro (CodiceDelLibro, NomeAutore, TitoloLibro, Prezzo, Anno Edizione, IndirizzoEditore)





Esercizio 11 pag233


//////////////

Tabella 1:


Esami1(Corso, Matricola, Data, Voto, NomeCorso)


Dipendenze:


(Matricola, Corso) --> Voto

Corso --> NomeCorso


Tabelle:


Corso(Corso, NomeCorso)

Matricola(Matricola, Corso, Voto)

Esami1(Corso, Matricola, Data)

///////////////

Tabella 2:


Esami2(Corso, Matricola, Data, VotoInCifre, VotoInLettere)

Dipendenze:


( Matricola, Corso )-->(VotoInCifre, VotoInLettere)


Proprietà transitiva:


VotoInCifre --> VotoInLettere

VotoInLettere --> VotoInCifre

( Matricola, Corso ) --> VotoInLettere

( Matricola, Corso ) --> VotoInCifre

Per togliere la 3° forma normale, siccome VotoInCifre e VotoInLettere possono essere sia determinanti che determinate, scelgo come determinante VotoInCifre

Tebelle :


Matricola(Matricola, Corso, VotoInCifre)

VotoCifre(VotoInCifre, VotoInLettere)

Esami2(Corso, Matricola, Data)






ESERCIZIO 10 pag233



Anagrafica (Nome, Cognome, Matricola, Nascita, Indirizzo, CodiceDipartimento, NomeDipartimento, IndirizzoDipartimento, Stipendio)


Dipendenze:



CodiceDipartimento --> (NomeDipartimento, IndirizzoDipartimento)


Tabelle:



Dipartimento(codiceDipartimento, NomeDipartimento, IndirizzoDipartimento)

Anagrafica (Matricola , Nome, Cognome, Nascita, Indirizzo, CodiceDipartimento)




ESERCIZIO 9 pag233



Tabella1(NomeStudente, DataDiNascitaStudente, indirizzoStudente, numeroTelefonicoStudente, viaStudente, numeroCivicoStudente, cittaResidenzaStudente, cittaDiNascitaStudente, VotoMateria1, VotoMateria2, VotoMateria3, VotoMateria4, VotoMateria5, VotoMateria6, VotoMateria7, VotoMateria8, VotoMateria9)


Tabella:


Tabella1(NomeStudente, DataDiNascitaStudente, indirizzoStudente, numeroTelefonicoStudente, viaStudente, numeroCivicoStudente, cittaResidenzaStudente, cittaDiNascitaStudente, VotoMateria1, VotoMateria2, VotoMateria3, VotoMateria4, VotoMateria5, VotoMateria6, VotoMateria7, VotoMateria8, VotoMateria9)

1,2 Normalizazione


Studente(NomeStudente, DataDiNascitaStudente, indirizzoStudente, numeroTelefonicoStudente, viaStudente, numeroCivicoStudente, cittaResidenzaStudente, cittaDiNascitaStudente, Materia_id )

Materia(id, VotoMateria1, VotoMateria2, VotoMateria3, VotoMateria4, VotoMateria5, VotoMateria6, VotoMateria7, VotoMateria8, VotoMateria9)

Oppure:


Tabella:

abbiamo 2 entità materia e voti: quindi 2 tabelle

associate Molti a Molti

Studente(NomeStudente, DataDiNascitaStudente, indirizzoStudente, numeroTelefonicoStudente, viaStudente, numeroCivicoStudente, cittaResidenzaStudente, cittaDiNascitaStudente)


Materia(nomeMateria,votoMateria)




Associazioni:


Valutato(nomeMateria, NomeStudente, DataDiNascitaStudente, indirizzoStudente, numeroCivicoStudente )



Studente(NomeStudente, DataDiNascitaStudente, indirizzoStudente, numeroTelefonicoStudente, viaStudente, numeroCivicoStudente, cittaResidenzaStudente, cittaDiNascitaStudente)



Materia(nomeMateria,votoMateria)