Argumentos por defecto en funciones javascript
En javascript no se puede crear funciones que tengas argumentos con un valor por defecto, pero se puede simular de una forma ingeniosa. Os pongo un ejemplo:
<script type="text/javascript">
function qq(a,b)
{
if(!b){var b=2;} // Si no hay b, b=2
return a+b;
}
document.write(qq(3)); // Devuelve 5
document.write(qq(3,3)); // Devuelve 6
</script>
Lo explican muy bien aquí.
jquery simplemodal-close title
Sí, ya sé que el título es un pelín…, así. Pero es que mi búsqueda para resolver este dilema ha sido tal cual. Complicado, muy complicado, y a la vez tan simple… Y, ¿cómo ha sido esta vez la epopeya? Ahora lo cuento.
Imaginaos que tenéis una modal que abrís mediante
$.modal("nuestro html");
Hasta aquí bien, pero resulta que tenéis una página multi-idioma, y resulta que el texto por defecto para el title del botón cerrar, siempre sale en castellano, o en inglés, o en el idioma en que os hayáis bajado el jquery.simplemodal.js. Sí, lo sé. Ahí es donde viene el motivo de este post.
Después de buscar un buen rato encontré que:
- $.modal tiene opciones.
$.modal("nuestro html", {opcion1: 'valor1', opción2: 'valor2',...}); - Lo primero es que encuentro la opción closeTitle, perfecto:
$.modal("nuestro html", {closeTitle: función_que_nos_devuelve_texto_en_idioma_que_queremos()}); - Pues no, sigue sin funcionar. Así que empiezo a investigar y resulta que nuestro closeTitle es una opción
obsoleta. Pero mira tú por dónde, que sigo investigando y existe una opción que es closeHTML, dimos en el clavo. Esta es. Y sí funciona. Explico cómo se utiliza.
De hecho, voy a pegar la explicación y luego el enlace de la página correspondiente.
closeHTML: (‘<a title=”Close”></a>’)
[new in 1.2] - The HTML for the default close link. SimpleModal will automatically add the closeClass to this element.
La página donde se explica todo está aquí. No tiene desperdicio. A disfrutarlo.
Eclipse: estado del servidor
Una de esas cosas que me matan cuando estoy programando es que me cambien cosas del entorno sin querer. A veces porque he pulsado una combinación de teclas, otras porque se actualiza y cambia la configuración… En este caso me pasó con Eclipse: de repente en el servidor de Tomcat me desapareció el estado.
Me he vuelto loco buscando, pero al final encontré la solución, que paso a poner aquí.
Cuando el Server State Decorator está habilitado, el workbench muestra en la vista de servidores etiquetas que indican el estado del servidor y sus proyectos. Si la vista de servidores no muestra el estado actual del proyecto, es porque el workbench no puede recuperar este detalle del servidor, el servidor está parado, o el servidor no soporta esta función.
Para habilitar las etiquetas de estado del servidor:
- Abre la página de preferencias Label Decorations: haz click en Window > Preferences, expande General > Appearance, y haz click en Label Decorations.
- Para mostrar o esconder el estado del servidor en la vista de servidores, selecciona o deselecciona la casilla de verificación Server State Decorator. Por defecto, esta casilla de verificación está seleccionada.
Comparación de cadenas con JQuery
Nada más fácil. Yo para esto utilizo dos métodos, que son los siguientes: $.trim(cadena) y cadena.toLowerCase().
$.trim(cadena)
Me limpia de espacios, a los lados, la “cadena”.
cadena.toLowerCase()
Me pasa la cadena a minúsculas.
Se pueden reducir aún más las cadenas, pero con estas suele bastar.
Instrucción “break” en JSP
Recientemente encontré este artículo en la Red. Me ha servido de bastante, pues a pesar de hacer tiempo que trabajo con JSP, hasta este momento no me había hecho falta. El artículo original está en el siguiente enlace:
Yo me he limitado a traducirlo. Espero que os sirva.
El uso de la instrucción break es salir de un bucle antes de que este cumpla sus iteraciones programadas. Permite al programa salir de los bucles for, while, switch y do while. Sólo puede haber un break por cada una de estas instrucciones. Se utiliza principalmente para salir de un bucle antes de tiempo.
En este programa utilizamos la instrucción switch, bajo la que usaremos una instrucción break. El bucle for se ejecutará hasta llegar a 5.
A continuación el código del programa:
Date vs Date
Estaba trabajando el otro día con un algoritmo de llamada a base de datos, en el que interevenían algunos campos de tipo fecha. Esto es algo con lo que luchamos a diario, así que en un principio no tenía porqué suponer ninguna dificultad. Sin embargo surgió. Cuando ya tenía todo el código preparado y listo para probar, se me produjo el siguiente error:
Multiple annotations found at this line:
- The method getNumUnidades(List<RegistroTpa>, String, Integer, Date, String) in the
type PasajerosServicioService is not applicable for the arguments (List<RegistroTpa>, String,
Integer, Date, String)
- The method getNumUnidades(List<RegistroTpa>, String, Integer, Date, String) in the
type PasajerosServicioService is not applicable for the arguments (List<RegistroTpa>, String,
Integer, Date, String)
Claro, en un primer momento, aparece la perplejidad. ¿Dónde está el error? El error nos está diciendo que hay diferentes tipos de datos, y que por eso no se puede realizar la equivalencia de tipos. Sin embargo, al mirar el método y el tipo, vemos que son iguales. Pero en realidad no es así. El misterio se resuelve al mirar de dónde viene cada declaración, y darnos cuenta de que en la clase donde se declara getNumUnidades(), estamos llamando al tipo Date de la clase java.util.Date, mientra que en la clase de la declaración del type, estamos sacándolo de la clase java.sql.Date, lo que supone un problema de conversión, ya que de ninguna manera se trata del mismo tipo.
Sobre las entrevistas de trabajo
En mi otro blog, La certeza de los necios, estoy abordando el tema de las entrevistas de trabajo. Somos muchos los informáticos que estamos, o hemos estado, en paro en los últimos tiempos. No hago nunca enlaces de uno de mis blogs al otro, por política y filosofía personales, pero en este caso lo encuentro especialmente útil así que ahí os dejo el enlace:
Copias de seguridad
Hay infinidad de artículos sobre este tema en Internet. Pero yo, como siempre, voy a dar mi visión particular.
Bajo mi experiencia, hay varias preguntas que debemos hacernos cuando queremos establecer un sistema de copia de seguridad para nuestros datos. Estas son las siguientes: qué, cómo, cuándo, dónde y cuántas. Paso a explicarlas de forma capitular.
Qué
Tenemos que decidir qué es lo que vamos a guardar, lo que queremos conservar en forma de copia de seguridad, y es que no podemos guardarlo todo, porque no es necesario.
Lo que quiero decir es que sólo hay que guardar aquello que no podemos recuperar, o que el coste de recuperación sea muy elevado. Es decir que no es necesario conservar los programas, o el propio sistema operativo, ya que la recuperación del mismo es la simple reinstalación.
Símbolo de Números Reales en Latex
Es curioso la cantidad de tiempo que llevo utilizando Kile para tener los apuntes de Matematicas y Física bien ordenaditos. Pero es más curioso todavía que, casi cada día, aprendo algo nuevo que se puede hacer con el maravilloso y genial .
En el caso que voy a exponer a continuación, lo que trataba de hacer era poner el símbolo de números reales para una ecuación de probabilidad. Concretamente, la ecuación era la siguiente:
Hay varias formas de hacerlo. Por ejemplo, en este caso, WordPress utiliza una librería llamada amsmath. Pero yo intentaba utilizar librería estandar de Kile, haciendo servir el tag \mathds. Para ello debía cargar un conjunto de fuentes llamado dsfont. Buscando por Internet, al final descubrí que esas fuentes se encuentran en un paquete llamado doublestroke, que a su vez están en un conjunto llamado texlive-fonts-extra, que es el que hay que cargar, así que ahí va la línea a teclear en la consola para vuestros Ubuntu:
Problema GRUB 2
Introducción
En primer lugar, quiero agradecer a Crashbit la información, ya que gracias a él (y a Fosco del IRC), he conseguido solventar este problema que tenía desde hacía días, y no conseguía encontrar la solución con el método habitual: googleando. Espero contribuír a la comunidad publicándolo aquí, y haciendo que sea más fácil encontrar la solución para cualquiera que vuelva a surgirle.
El problema me apareció en el portátil, poco tiempo después de instalar Karmic Koala desde cero; sospecho que por alguna de las actualizaciones del nuevo GRUB 2, aunque no tengo los medios para asegurarlo. La cuestión es que, de repente, el grub hacía un intento por aparecer, con las letras GRUB en la parte superior izquierda del monitor al cargar, pero en un instante desaparecía para entrar directamente en las X (sistema gráfico) de Linux y empezar la carga del GDM. Todo esto, por supuesto, sin aparecer el menú con los kernels instalados, con lo cual no podía seleccionar el que quería.



