| Subcribe via RSS

jQuery: añadir una línea a una tabla html

enero 6th, 2012 | No Comments » | Posted in javascript, jQuery

Vamos a ver con un sencillo ejemplo cómo añadir una nueva línea a una tabla. En primer lugar es importante que la tabla tenga el elemento TBODY como en este ejemplo:

<table id="tabla">
    <tbody>
        <tr id="primera">
            <td>Primera fila</td>
        </tr>
        <tr id="segunda">
            <td>Segunda fila</td>
        </tr>
    </tbody>
</table>

Para añadir una fila a la tabla basta con hacer:

$('#tabla > tbody:last').append('<tr id="ultima"><td>Ultima fila</td></tr>');

Es posible que lo que queramos hacer sea añadir una nueva línea en un lugar concreto. Supongamos que queremos insertar una fila después de la primera:

$("#primera" ).closest( "tr" ).after("<tr id="insertada"><td>Fila insertada</td></tr>);

Función en PHP para calcular si un DNI o un NIE son válidos

octubre 21st, 2011 | No Comments » | Posted in php, programacion, uncategorized

He aquí un clásico por el que todos habremos tenido que pasar alguna vez. Acabo de rescatarlo del armario del olvido y lo he modificado para que compruebe también si es un NIE válido (documento de identidad para extranjeros). Espero que a alguien le sirva de ayuda:

function comprobar_documento_identificacion($dni) {
	if(strlen($dni)<9) {
		return "DNI demasiado corto.";
	}
 
	$dni = strtoupper($dni);
 
	$letra = substr($dni, -1, 1);
	$numero = substr($dni, 0, 8);
 
	// Si es un NIE hay que cambiar la primera letra por 0, 1 ó 2 dependiendo de si es X, Y o Z.
	$numero = str_replace(array('X', 'Y', 'Z'), array(0, 1, 2), $numero);	
 
	$modulo = $numero % 23;
	$letras_validas = "TRWAGMYFPDXBNJZSQVHLCKE";
	$letra_correcta = substr($letras_validas, $modulo, 1);
 
	if($letra_correcta!=$letra) {
		return "Letra incorrecta, la letra deber&iacute;a ser la $letra_correcta.";
	}
	else {
		return "OK";
	}
}
Tags: , , ,

Escanear con la Brother MFC-7480W en Ubuntu 11.04

septiembre 1st, 2011 | 2 Comments | Posted in linux, ubuntu

Por fin después de muchas vueltas, de romperme el coco y de navegar por la web he conseguido hacer funcionar el escaner de mi Brother MFC-7480W en Ubuntu 11.04.

He seguido los siguientes pasos:

1) Instalar los drivers. Se pueden descargar de aquí:

http://welcome.solutions.brother.com/bsc/public_s/id/linux/en/download_scn.html

En mi caso hacían falta los drivers brscan3 32bit.

(Nota: para saber si tu Ubuntu es de 32 bits teclea en la consola: uname -m, si el resultado es i686 entonces tienes el sistema de 32 bits, si es i86_64 es de 64 bits).

2) Editar el fichero /etc/udev/rules.d/60-libsane.rules como root y añadir justo antes de “# The following rule…”:

 # Brother
 ATTRS{idVendor}=="04f9", ENV{libsane_matched}="yes"

3) Editar el fichero /etc/sane.d/dll.conf:

sudo gedit /etc/sane.d/dll.conf

y añadir la línea:

brother3

4) Reiniciar el ordenador.

Tags: , , ,

La consola de Linux – Cambiar el charset de un fichero

agosto 11th, 2011 | No Comments » | Posted in linux, ubuntu

Un problema habitual cuando se trabaja con varios idiomas son los caracteres que no se usan en inglés (tildes, diéresis, cedillas, etc…). Si en algún momento necesitas cambiar el charset de un  fichero puedes usar el siguiente comando:

iconv --from-code=ISO-8859-1 --to-code=UTF-8 fichero_origen.txt &gt; fichero_destino.txt

Eso sí, muchísimo cuidado, no se puede usar el mismo fichero como origen y destino ya que se vaciará su contenido.

Puedes usar este script para hacer el cambio en un único paso:

cp $1 $1.temp
iconv --from-code=ISO-8859-1 --to-code=UTF-8 $1.temp &gt; $1
rm $1.temp

Puedes guardarlo en un fichero llamado ‘cambiar_charset’ y luego darle premisos de ejecución:

chmod +x cambiar_charset

Ejemplo de uso:

./cambiar_chaset mifichero.txt

 

 

Tags: , , ,

Problemas al acceder a gmail: Web login required

julio 13th, 2011 | No Comments » | Posted in google

Puede que alguna vez te suceda que al configurar tu cliente de correo electrónico (Thunderbird, Outlook Express, etc…) para descargarlo vía IMAP te aparezca el siguiente error:

Invalid credentials: Web login required

Si esto te sucede es muy probable que hayas intentado acceder muchas veces con contraseña errónea o que compruebes los mensajes demasiado a menudo (google recomienda comprobar nuevos mensajes cada 10 minutos o más). Si te encuentras en esta situación puedes visitar esta página:

https://www.google.com/accounts/DisplayUnlockCaptcha

e introducir tus datos correctamente y el captcha (el texto confuso que te aparece para comprobar si eres un robot o una persona). Una vez hecho esto deberías poder acceder sin problemas.

 

Tags: ,

Por una democracia real

marzo 29th, 2011 | No Comments » | Posted in temas-sociales

[Copia/pega de: ¡Democracia Real Ya!]

Somos personas normales y corrientes. Somos como tú: gente que se levanta por las mañanas para estudiar, para trabajar o para buscar trabajo, gente que tiene familia y amigos. Gente que trabaja duro todos los días para vivir y dar un futuro mejor a los que nos rodean.

Unos nos consideramos más progresistas, otros más conservadores. Unos creyentes, otros no. Unos tenemos ideologías bien definidas, otros nos consideramos apolíticos… Pero todos estamos preocupados e indignados por el panorama político, económico y social que vemos a nuestro alrededor. Por la corrupción de los políticos, empresarios, banqueros… Por la indefensión del ciudadano de a pie.

Esta situación nos hace daño a todos diariamente. Pero si todos nos unimos, podemos cambiarla. Es hora de ponerse en movimiento, hora de construir entre todos una sociedad mejor. Por ello sostenemos firmemente lo siguiente:

* Las prioridades de toda sociedad avanzada han de ser la igualdad, el progreso, la solidaridad, el libre acceso a la cultura, la sostenibilidad ecológica y el desarrollo, el bienestar y la felicidad de las personas.

* Existen unos derechos básicos que deberían estar cubiertos en estas sociedades: derecho a la vivienda, al trabajo, a la cultura, a la salud, a la educación, a la participación política, al libre desarrollo personal, y derecho al consumo de los bienes necesarios para una vida sana y feliz.

* El actual funcionamiento de nuestro sistema económico y gubernamental no atiende a estas prioridades y es un obstáculo para el progreso de la humanidad.

* La democracia parte del pueblo (demos=pueblo; cracia=gobierno) así que el gobierno debe ser del pueblo. Sin embargo, en este país la mayor parte de la clase política ni siquiera nos escucha. Sus funciones deberían ser la de llevar nuestra voz a las instituciones, facilitando la participación política ciudadana mediante cauces directos y procurando el mayor beneficio para el grueso de la sociedad, no la de enriquecerse y medrar a nuestra costa, atendiendo tan sólo a los dictados de los grandes poderes económicos y aferrándose al poder a través de una dictadura partitocrática encabezada por las inamovibles siglas del PPSOE.

* El ansia y acumulación de poder en unos pocos genera desigualdad, crispación e injusticia, lo cual conduce a la violencia, que rechazamos. El obsoleto y antinatural modelo económico vigente bloquea la maquinaria social en una espiral que se consume a sí misma enriqueciendo a unos pocos y sumiendo en la pobreza y la escasez al resto. Hasta el colapso.

* La voluntad y fin del sistema es la acumulación de dinero, primándola por encima de la eficacia y el bienestar de la sociedad. Despilfarrando recursos, destruyendo el planeta, generando desempleo y consumidores infelices.

* Los ciudadanos formamos parte del engranaje de una máquina destinada a enriquecer a una minoría que no sabe ni de nuestras necesidades. Somos anónimos, pero sin nosotros nada de esto existiría, pues nosotros movemos el mundo.

* Si como sociedad aprendemos a no fiar nuestro futuro a una abstracta rentabilidad económica que nunca redunda en beneficio de la mayoría, podremos eliminar los abusos y carencias que todos sufrimos.

* Es necesaria una Revolución Ética. Hemos puesto el dinero por encima del Ser Humano y tenemos que ponerlo a nuestro servicio. Somos personas, no productos del mercado. No soy sólo lo que compro, por qué lo compro y a quién se lo compro.

Por todo lo anterior, estoy indignado.

Creo que puedo cambiarlo.

Creo que puedo ayudar.

Sé que unidos podemos.

Sal con nosotros. Es tu derecho.

—–

Es hora de dejar de quejarse y hacer algo. Si quieres participar busca tu localidad más cercana para el evento que se va a celebrar el 15 de Mayo.

http://democraciarealya.es/comunidad/forum.php?id=12

Función PHP para dar formato a un número de teléfono

febrero 17th, 2011 | No Comments » | Posted in php, programacion

Hoy os dejo una sencilla función que nos formatea un número de teléfono para que quede más “leíble”. Lo primero que hace es eliminar espacios y guiones (puedes eliminar otros caracteres añadiéndolos al array) y luego agrupa los dígitos de 3 en 3. Por ejemplo:

94 444 4888 -> 944 444 888
944444888 -> 944 444 888
+3494 444 4888 -> +34 944 444 888

Esto se consigue con este sencillo código:

function telefono($numero) {
	$numero = str_replace(array(" ", "-"), array(""), $numero);
	$comienzo = strlen($numero);
	$resultado = '';
	while($comienzo>=0) {
		$resultado = substr($numero, $comienzo, 3) . " " . $resultado;
		$comienzo -= 3;
	}
	return $resultado;
}
Tags: , , ,

Procesos en C: Ejemplo de fork() y wait()

enero 31st, 2011 | No Comments » | Posted in C/C++, programacion

Os pongo aquí otro ejemplo de los que uso en las clases de C. El enunciado del ejercicio es el siguiente:

EJERCICIO 3:

Escribir un programa que cree un hijo. El hijo debe escribir “Soy el hijo” diez veces. El padre debe escribir “Soy el padre” diez veces.
El padre debe esperar a que termine el hijo y mostrar el mensaje “Mi proceso hijo ya ha terminado”.

Usar un switch. No usar semáforos.

PREGUNTAS EJERCICIO 3:

1) ¿Qué proceso terminará primero? ¿Por qué?

#include 
int main() {
	int pid;
	int i;
	int estado;
 
	pid = fork();
 
	switch(pid)
	{
		case -1: // Si pid es -1 quiere decir que ha habido un error
			perror("No se ha podido crear el proceso hijo\n");
			break;
		case 0: // Cuando pid es cero quiere decir que es el proceso hijo
			for(i=0; i&lt;10; i++)
				printf("Soy el hijo\n");
			break;
		default: // Cuando es distinto de cero es el padre
			for(i=0; i&lt;10; i++)
				printf("Soy el padre\n");
			// La función wait detiene el proceso padre y se queda esperando hasta
			// que termine el hijo
			wait(estado);
			printf("Mi proceso hijo ya ha terminado.\n");
			break;
	}
 
}

RESPUESTAS A LAS PREGUNTAS DEL EJERCICIO 3

1) El proceso hijo terminará siempre el primero. La razón es que hemos añadido la función wait() que obligará al padre a esperar al hijo siempre.

Curso de programación en C con tutor Online

¿Necesitas ayuda con algún trabajo de clase? Entra en BuscoProfe.com

Tags: , , ,

jQuery: recoger valores de un formulario

diciembre 14th, 2010 | 3 Comments | Posted in javascript, jQuery

Esta vez os dejo un pequeño resúmen de cómo se recogen, con jQuery, valores de un formulario.

El “truco” está en poner un id a los elementos del form para poder acceder a ellos fácilmente.

Cuadro de texto “normal” (input text)

<input id=”nombre” name=”nombre” type=”text” />

var fianza = $("input#nombre").val();

Recoger el valor de un Textarea

<textarea id=”concepto”></textarea>

var concepto = $("textarea#concepto").val();

Recoger el valor de un campo oculto

<input type=”hidden” id=”id_cliente”/>

var id_cliente = $("input:hidden#id_cliente").val();

Comprobar si un checkbox está marcado

<input type=”checkbox” id=”mostrar_valores”/> Mostrar valores

var mostrar_valores = $('#mostrar_valores:checked').val();
Tags: , ,

Aumentamos el número de portátiles disponibles

diciembre 11th, 2010 | No Comments » | Posted in Alquiler, Alquiler ordenadores portátiles

Para poder atender la creciente demanda que estamos teniendo en el alquiler de ordenadores portátiles hemos aumentado el número de equipos disponibles. Disponemos de una gran cantidad de equipos de las primeras marcas del mercado.

Tags: , ,