Guida al laboratorio


Gli studenti avranno accesso ai laboratori Lab 3 e Lab 4.

Per migliorare la gestione del laboratorio si incoraggiano gli studenti a segnalare malfunzionamenti e problemi tempestivamente.
In caso di problemi hardware invece contattare bugx.


FAQ sugli strumenti in laboratorio

FAQ Laboratorio Virtuale (since 2020)

  • Account per Lab3/4

    Genera account da sito:
    Seguire le istruzioni presenti a questo link.

    Genera account da PC del lab:
    Al BOOT selezionare la entry "Crea account" e seguire le istruzioni.

 

Problemi di programmazione (Java, C e bash)

  • Bash: settaggio PATH e CLASSPATH :
  • Inserire nella propria HOME, il file ".profile" (creandolo se non esiste) per aggiungere il direttorio corrente a PATH e CLASSPATH; il file deve contenere le seguenti linee:

    PATH=.:$PATH
    CLASSPATH=.:$CLASSPATH
    export PATH
    export CLASSPATH

  • Si vedano inoltre per la definizione di variabili di ambiente le seguenti slide su shell di unix.
  • ATTENZIONE: il nome del file di profilo dell'utente cambia a seconda della distribuzione, ad esempio, in RedHat il file si deve nominare ".profile", mentre in Gentoo (distribuzione attualmente disponibile nei laboratori) il file deve essere nominato ".bashrc".
  • C: XDR e rpcgen:

    In XDR non è possibile definire direttamente strutture innestate, ma bisogna sempre passare per definizioni di strutture intermedie.

    Ad esempio, rpcgen ritorna errori e non riesce a terminare se invocato su un file .x contenente la definizione della seguente struttura dati:

    struct MatriceCaratteri{
     char matrice [10][20];
    };

    Mentre passando per una struttura dati intermedia, si veda l'esempio qui sotto, rpcgen termina correttamente:

    struct RigaMatrice{
     char riga [20];
    };

    struct MatriceCaratteri{
     RigaMatrice riga [10];
    };


  • Java:
    • Si consiglia di testare le differenze fra i diversi metodi invocabili sull'oggetto InetAddress per ottenere l'indirizzo come stringa.

      Es: il metodo toString() ritorna una stringa diversa da getHostAddress() .

    • Problema: le MulticastSocket non funzionano quando utilizzate con computer scollegati dalla rete.

      Soluzione: il problema sembra essere dovuto ad un malfunzionamento della classe MulticastSocket, che non riesce a collegarsi ad una interfaccia di rete in modo automatico quando l'elaboratore è scollegato dalla rete, come avviene invece quando l'elaboratore è in rete.
      Il problema viene quindi risolto settando l'interfaccia di rete sull'oggetto socket, perciò prima di invocare:

      multicastSocket.joinGroup(group);

      bisogna impostare l'interfaccia di rete:

      // mi procuro l'inetaddress locale
      InetAddress netInterface= InetAddress.getByName("localhost");
      // imposto l'interfaccia di rete
      socket.setInterface(netInterface);

    • Problema: inizializzazione di matrici.

      Soluzione: per l'inizializzazione delle matrici, o meglio degli arrray di array, si utilizza la seguente sintassi:

      char [][] matrice = {
       {'C', 'i', 'a', 'o'},
       {'P', 'i', 'p', 'p', 'o'}
      };

    • Problema: utilizzo del metodo isConnected della classe java.net.Socket.

      Contrariamente a quanto il nome di questo metodo potrebbe fare intuire la isConnected NON verifica che una socket sia attualmente connessa al server, ma verifica solamente che l'operazione di connessione con il server sia terminata con successo. Si provi, ad esempio ad invocare la isConnected prima e dopo l'invocazione della close sulla socket, come nel seguente esempio:

      Socket sock;
      /* Inizializzazione ed utilizzo sock */
      ...

      System.out.println("Sock e' connessa: "+sock.isConnected() );
      sock.close();
      System.out.println("Sock e' connessa: "+sock.isConnected() );


 

Ambienti di sviluppo

Problemi Comuni Eclipse IDE

 

Miscellanea: laboratori, problemi dipendenti di sistema e altro

A volte succede che spariscano le icone sul desktop, il problema é dovuto a impostazioni non corrette contenute nella propria home. Per ripristinarle eseguire il logout dall'ambiente grafico oppure aprire un altro terminale con CTRL+ALT+[F1-F6] e cancellare i file e le cartelle temporanee con il seguente comando: rm -rf .* (eliminazione di tutti i file che iniziano con il punto) Riavviare l'ambiente grafico con il comando startx e scegliere le impostazioni di DEFAULT.