jueves, 29 de diciembre de 2011

Extender funcionalidades en jQuery

Hoy he descubierto que cuando queremos extender funcionalidades en jQuery lo primero que hariamos es:
Object.prototype.miFuncion = function { return "Hola mundo"; };
var mivar = new Object();
alert(mivar.miFuncion());
El problema de esto es que hace que jQuery reviente por las cuatro esquinas y todo empiece a fallar y tu a tirarte de los pelos. La solucion es bien sencilla, usaremos $.extend para ello.
$.extend({miFuncion: function () { return "Hola mundo"; }});
alert($.miFuncion());
O también de esta otra forma:
$.fn.extend({miFuncion: function () { return "Hola mundo"; }});
alert($('#miselector').miFuncion());
Pues eso niños, prohibido tocar el prototype de cualquier objeto de javascript que no hayais creado vosotros. Porque sino sufrireis las consecuencias XDDD.

martes, 20 de diciembre de 2011

Primitive Types en Papyrus

In the model explorer, right click on your model, then choose 'Import package from registered library'. In the window that pops up pick 'UMLPrimitiveTypes' (or the Java ones, if you prefer that).

Fuente: Stackoverflow EDITO: Para quien no lo sepa Papyrus es un plugin para generar diagramas UML en Eclipse.

Convertir Clob en String

Para convertir un campo de tipo Clob en la BD en String deberemos realizar los siguientes pasos:
Clob strClob = rs.getClob(1);  //Obtenemos el dato de la consulta
String str;
StringBuffer strFinal;
BufferedReader bufferRead = new BufferedReader(strClob.getCharacterStream());
while ((str = bufferRead.readLine()) != null)
  strFinal.append(str);

martes, 13 de diciembre de 2011

SCP Task en Ant

Hoy me ha pasado que tenia que hacer una tarea ant que me copiase el contenido de una carpeta en el servidor. Después de configurar todo con la key etc. no iba. ¿Por qué?

Primero, la key que estaba usando estaba en formato ppk (putty) y el scp funciona con formato openSSH. Asi que nada, con el Puttygen hacemos una exportacion de la key a openSSH desde el menu Conversion. 

Segundo, teniendo la key no es suficiente, si queremos que vaya si tener una lista de hosts autorizados deberemos añadir el atributo trust="true".

Una vez tenemos esos puntos controlados ya deberia funcionar todo correctamente. La tarea ant por lo tanto ha quedado tal que asi:

<target name="deploy" depends="dist">
 <scp todir="user@XXX.XXX.XXX.XXX:${deploy.folder}" trust="true" keyfile="C:\keys\private.ssh" passphrase="">
  <fileset dir="${dist.home}" />
 </scp>
</target>

Como crear un fichero con Ant

Para crear un fichero con Ant y encima que contenga el texto que nosotros deseemos es algo tan simple como esto:
<echo file="hola.txt">Hola Mundo!</echo>

lunes, 12 de diciembre de 2011

JDBC y Oracle

Ahora mismo por motivos laborales estoy usando Oracle como base de datos. Lo que no me acordaba y me ha estado mareando era que para usar el driver en JDBC debemos indicarselo al DriverManager de JDBC para que lo incluya con la siguiente linea:
import oracle.jdbc.driver.OracleDriver;
...
DriverManager.registerDriver(new OracleDriver());

miércoles, 7 de diciembre de 2011

jQuery UI Combinar una lista Draggable con otra Sortable

Cuando estén trabajando con una lista de elementos "draggables" y estos vayan a ser colocados en una lista "sortable" es posible que si intentáis obtener el id del elemento que se esta moviendo os volváis locos de atar. ¿Por qué? Porque tanto al clonar como al trasladar el original, al generarse el helper omite dicho atributo, supongo que para evitar conflictos con los ids. Por lo tanto, si necesitamos de ese valor, lo que podemos hacer es asignarle el valor a otro atributo distinto. Me explico:
<ul id="lista_draggable">
<li title="mi_identificador 1">Elemento 1</li>
<li title="mi_identificador 2">Elemento 2</li>
<li title="mi_identificador 3">Elemento 3</li>
</ul>
<ul id="lista_sortable">
</ul>
Y el jQuery quedaría así:
$("#lista_draggable").draggable({

  connectToSortable: "#lista_sortable",

  helper: "clone"

});

$("#lista_sortable").sortable({

  stop: function (event, ui) {

    alert(ui.item.attr("title"));

  }

});

Podéis probar libremente a cambiar el atributo title por id y veréis que no hay manera de obtener dicho atributo. Eh! Pero que si alguien lo consigue que me lo diga que le coloco en un altar :)

martes, 6 de diciembre de 2011

Ubuntu, la webcam y la madre que lo pario

Tanto ubuntu, tanto ubuntu y resulta que para tener una webcam bien configurada tienes estar trasteando mil y un cosas.

Para empezar, en la configuración del sonido debemos indicar que el input de entrada es la webcam, si no sale en la lista probar a escribir en una terminal pacmd, y una vez dentro dump. Luego hacemos exit y volvemos a la configuración de sonido de ubuntu. Mágicamente habrá aparecido. Lo seleccionamos y cerramos.

Para asegurarnos de que la próxima vez que arranque sigue configurado así, volvemos a ejecutar pacmd y dump como hemos hecho antes y copiamos la linea que empieza por set-default-source alsa_input.usb. Nos vamos a /etc/pulse/default.pa y al final del fichero la pegamos. Reiniciamos el equipo y listo.

Pero aquí no acaba todo, resulta que si nos escuchamos después de grabarnos tendremos una voz de pitufo maquinero que nos dejara así O_O.

Para solucionar esto basta con crear un fichero en la siguiente ruta con el nombre deamon.conf:
gedit $HOME/.pulse/daemon.conf

Luego dentro escribimos:
default-sample-rate = 16000

Guardamos y reiniciamos el demonio de pulseaudio: pulseaudio --kill && pulseaudio --start

Con esto ya podremos usar Skype o similares.

Imagenes en Rails 3.1.x

Para poder usar imágenes propias de la aplicación en Rails deberemos insertarlas en la carpeta app/assets/images/. Dentro de esta carpeta deberemos generar la estructura de directorios que deseemos para las imágenes, ya que si insertamos una imagen llamada p.ej: arrow.gif en esa carpeta a pelon su url sera: http://[app_domain]/arrow.gif. Si lo que deseamos es que la url sea http://[app_domain]/images/arrow.gif deberemos crear la siguiente estructura de directorios: app/assets/images/images/arrow.gif