Everything sux

Wednesday, August 31, 2005

[Java] Conosci Davvero Java?

Java è un linguaggio complicato.
Avendo un sacco di colleghi in disaccordo con questa tesi, mi sono preparato una piccola lista di domande per dimostrare che nemmeno loro si immaginano quanto sia complicato ;)

Se vi ritenete esperti Java dovreste sapere le risposte, se non le sapete, sono tra i commenti



  1. Riscaldamento: cosa stampa questo codice?

    public class Main {
    int myInt;
    double myDouble;
    boolean myBoolean;

    public static void main( String []args){
    Main obj=new Main();
    System.out.print(obj.myInt);
    System.out.print(" " + obj.myDouble);
    System.out.println(
    " " + obj.myBoolean);
    }
    }


  2. Dato il codice

    Calendar cal = Calendar.getInstance();
    cal.set(1999, 12, 31);
    System.out.print(cal.get(Calendar.YEAR) + " ");
    System.out.print(cal.get(Calendar.MONTH) + " ");
    System.out.println(cal.get(Calendar.DAY_OF_MONTH));

    cosa credete che venga stampato a schermo?

  3. In questo codice c'è un evidente errore, siete in grado di individuarlo?

    void copy(File src, File dst) throws IOException {
    FileChannel in = null, out = null;
    try {
    in = new FileInputStream(src).getChannel();
    out = new FileOutputStream(dst).getChannel();
    long size = in.size();
    MappedByteBuffer buf = in.map(FileChannel.MapMode.READ_ONLY, 0, size);
    out.write(buf);
    } finally {
    if (in != null) in.close();
    if (out != null) out.close();
    }
    }



  4. Quanto vale
     1 << 32


  5. Eseguendo questo codice:

    public static void main(String[] args) {
    System.out.println(10/magic(-2147483648));
    }
    static int magic(int x){
    if (x !=0)
    return x+x;
    return 1;
    }

    cosa viene stampato a schermo?


  6. I modifier sono quelle cose tipo public o static. Facile, direte voi. La domanda è: quanti modifier ci sono in java?


  7. Se per qualche assurda ragione avete azzeccato la risposta precedente, sareste in grado di riee quali e spiegare a cosa servono?


  8. Avendo cura di includere java.lang.reflect.*, Cosa stampa questo spezzone:
    System.out.print( Modifier.toString( Member.class.getModifiers() ) );
    ?


  9. Qual'è l'errore in questa innocua classe?

    public class Main {


    public static final double twoPI
    = 2 * myPI;
    public static final double myPI
    = Math.PI;
    }


  10. Potrebbero sembrare banali, ma io mi sbaglio spesso.. Quali tra queste sono assegnazioni valide ?
  • double b = 1.0;
  • float c = .1f;
  • float a = 0.1;
  • float d = 1.f ;
  • float e = 3.2f ;
  • double f = 1. ;
  • float g = 0x23595959L ;
  • float h = 0x595959F ;
  • double i = 0X0;
  • int l = 2147483648;
  • double m = 2036373547;
  • float n = 2147483648;
  • double m = 2147483648


Thursday, August 11, 2005

PHP Security, the oxymoron

Well, this time The Woodwork » Blog Archive » someone tells you that php is not insecure by default.
I have a different idea, that basically boils down to:
it has a long history of security problems, and there is a social problem WRT to this concern in the PHP community.

But, hey, I'll let you think about that.
The only thing I'll point out is: leaving out the (self labeled) "Enterprise" languages, how often did you heard about a security problem in the other en vogue languages (yeah, the one with P and the other with R) ?