Acertijo Java (Solución)

A principios de mes proponía un Acertijo Java.

¿Qué sale por pantalla al ejecutar la clase FooBar?

import static java.lang.System.*;
public class FooBar {
  public FooBar() {
    out.print(" Instance ");
  }
  static {
    out.print(" Static ");
  }
  public static void main (String args) {
    out.print(" Main ");
    new FooBar();
  }
}

Simplificando, lo que ocurre es lo siguiente:

  1. Se carga la clase FooBar en memoria
  2. Se ejecutan los bloques estáticos: static{}
  3. out.print(” Static “); está en un bloque estático
  4. Una vez cargada la clase, ya se pueden ejecutar métodos estáticos como main
  5. out.print(” Main “); está dentro del método main
  6. Se crea una instancia de la clase FooBar en el método main
  7. Para ello se ejecuta el constructor
  8. out.print(” Instance “); está en el constructor

Siguiendo este razonamiento, la opción correcta sería la c: “Static Main Instance”.

La opción c parece correcta, pero no se llega a ejecutar el método main. Recordemos la firma que tiene que tener el método main para ser la entrada de un programa java:

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

Ha de ser esa o equivalente. ¿Ves la diferencia? El parámetro args tiene que ser un array [] de String, ya que representa los argumentos introducidos por línea de comandos. En la clase FooBar el parámetro args es simplemente un String.

Por ello, el código no se ejcutará. Java mostrará un error indicando que en la clase FooBar no existe un método main. Es por ello que la opción correcta era la f: No se ejecutará

En el día a día, un programador no sólo tiene que saber traducir ideas a código. En algunas ocasiones el código no se comporta como queremos y es cuando hay que buscar el detalle.

La agilidad con la que uno detecta pequeños detalles marca la diferencia. Algunos factores que afectan a esta agilidad son, la paciencia, saber escribir código claro, y sobre todo el conocimiento de las herramientas con las que uno trabaja.

Igual que hice en el otro post, animo a cualquiera a ponerse a prueba estudiando la certificación de Programador Java o acudir a uno de los cursos oficiales que imparto, es toda una experiencia.

Cómo me quedé sin teléfono (IX y fin)

El verano pasado estuve un par de semanas sin teléfono, por culpa de una portabilidad. Partes I, II, III, IV, V, VI, VII, y VIII

Moroso Reclamador

Por un fallo del distribuidor en mi última portabilidad, tenía un compromiso de permanencia. En estos casos cárgate de paciencia…

Tras realizar la portabilidad de Orange a Movistar, Orange me pasó un recibo en concepto de baja anticipada con compromiso de permanencia.

Mi primera reacción fue devolver el recibo y bloquear a Orange en mi cuenta. A partir de entonces no paré de recibir llamadas y cartas de una agencia de cobros amenazándome para que pagara un compromiso que no tenía que pagar. Por más que lo intenté, ofreciéndoles toda la documentación posible y enviado múltiples burofaxes, no hubo manera de hacerles entrar en razón.

Por lo que pudiera pasar, ya que de entrar en una lista de morosos puede ser un infierno salir, y podía tener problemas en el futuro con algún banco, decidí pagar la supuesta deuda y reclamar vía oficina del consumidor.

Y esto es lo que debería haber hecho desde el primer momento. Parece increíble que el pequeño, eso es el consumidor, tenga que pagar primero la deuda. Pero así es.

Tras presentar una reclamación en la oficina del consumidor, me indicaron que Orange tenía 20 días para contestar y que normalmente contestaba a tiempo.

Cuatro meses después (y un año desde el inicio del problema), obtengo contestación y me ingresan en la cuenta el recibo pagado incorrectamente.

Conclusión

Nadie frena a las operadoras, sólo hace falta ver lo mal que tratan a sus clientes.

Hay algo que no funciona con la legislación. Esta vez se me reclamaba poco dinero, pero… ¿Si hubieran sido 3.000 €? ¿Hubiera tenido que darles ese dinero y luego reclamar?

Los ciudadanos estamos indefensos y el próximo podrías ser .

HowTo: Cambiar el Idioma de Mac Os X

A algún conocido, al llevar su mac a reparar, le han tenido que reinstalar el sistema y al recogerlo se lo ha encontrado en inglés. Que es el idioma por defecto de la instalación.

Menú de Mac OS X en inglés

Siempre se puede llevar otra vez al servicio técnico para que nos lo vuelvan a volver a poner en Español, o si os da pereza, voy a explicar cómo podéis ponerlo en Español siguiendo unos sencillos pasos.

Abrir Preferencias de Idioma

Lo primero va a ser abrir las preferencias del Lenguaje e Idioma. Podemos acceder a las Preferencias del Sistema desde la barra de menú, arriba, pulsando en la manzana. Se despliega un menú en el que elegimos "System Preferences …".

Abrir Preferencias del Sistema

Una vez abiertas las Preferencias del Sistema, pulsamos "Language & Text".

Idioma y texto en Preferencias del Sistema

Elegir el idioma preferido

En la primera pantalla de las preferencias de idioma, tenemos un listado con los idiomas del sistema.

Lenguaje e Idioma

Ordenamos los idiomas poniendo arriba aquellos que queremos que se utilicen. Un programa leerá el primer idioma de la lista, por ejemplo “Español”. Si el programa está traducido al Español, saldrá en Español, si no, leerá el segundo. Si el segundo es “Inglés” y la aplicación está traducida al Inglés, pues saldrá en Inglés, y si no, pues leerá el tercero, y si no, el cuarto …

¿Y cómo ordenamos la lista de idiomas para poner el Español primero? Busca el español en la lista, púlsalo y arrástralo hacia arriba.

Ordenar Idiomas

Para que el sistema salga en español, el Español debe ser el primero de la lista.

Español debe quedar por encima del Inglés

Si el español no aparece en la lista, pulsa en "Editar Lista", debajo de la lista. Busca el idioma Español y márcalo. También puedes desmarcar aquellos idiomas que no utilices, pero deja por lo menos el Inglés.

Reiniciar

Los cambios tendrán efecto la próxima vez que se abran las aplicaciones. La manera más sencilla de reiniciarlas es reiniciar el equipo entero.

Si no podemos, o no queremos en este momento, apagar el sistema, podemos cerrar una a una todas las aplicaciones. La única que no podemos cerrar es el Finder, ya que está siempre abierto. Si este es tu caso, sigue los siguientes pasos.

Pulsa la manzana en la barra superior y en el menú que se despliega selecciona "Force Quit …":

Abrir Forzar el cierre

Se muestra una ventana con el listado de las aplicaciones abiertas. Selecciona Finder y pulsa Relaunch.

Reiniciar Finder

Una vez que hayamos reiniciado, las aplicaciones aparecerán en Español:

Menú de Mac OS X en español