Archive for the ‘Programación’ Category

Lista sql de paises

Tuesday, April 11th, 2006

Siempre que he ido a programar algo y he necesitado una lista de paises, para un desplegable por ejemplo, me he topado con el mismo problema, que todas las que encuentro están en inglés.

Pero el otro día me harté, entré en la wikipedia y monte un script sql con todos los paises en CASTELLANO. Así que ahí, aquí os lo dejo:

Lista sql de paises en castellano

Lista sql de paises en Inglés

Microsoft Developer Day 2005

Saturday, May 21st, 2005

Después de multitud de trabas pude asistir al Developer Day. Tenía pensado poner aquí un post narrando lo que viera pero la verdad, aun no me he acostumbrado mucho a la pocket y tuve algunos problemas para coger notas. Sin embargo alguien lo hizo por mi mucho mejor de lo que yo lo hubiera hecho. Gracias Carlos.

FLV PLAYER

Saturday, September 18th, 2004

Hola korsarios, he vuelto con más cosillas en flash que hacía tiempo que no escribía nada. Esta vez os presento un reproductor de FLV, un formato de video propietario de macromedia de increible compresión.
Por exigencias del trabajo tuve que buscar algún reproductor para este tipo de formato por internet, pero de todos los que encontré (que no fueron pocos), muchos eran de pago, la mayoría tenían un estilo fijo sin posibilidad de modificarlos y otros no tenian ningún control de reproducción.
Así que aquí teneis un reproductor con streaming para formato flv con diversos controles, la posibilidad de cambiar su aspecto y 100% GPL.

Avidos FLV Player | Descargar Player

El reproductor tiene las siguientes características:

  1. Control de Play: un botón para reproducir la película.
  2. Control de Pause; un botón para detener la reproducción
  3. Control de Inicio de Película; un botón para volver al principio de la película
  4. Control de Volumen; un cursor que te permite ajustar el volumen de audio de la película
  5. Control de TimeLine; un cursor que te permite desplazarte por la película arrastrándolo hacía adelante y atrás.
  6. Display de tiempo; un marcador que indica el tiempo de película transcurrido.

Al realizar el reproductor me encontré con un problema grave, y que no he visto ningún otro reproductor que lo solucione, y es el de determinar el tiempo total de la película, puesto que flash solo me proporciona el tiempo transcurrido y el tamaño total en Bytes.
Para solucionar el problema, realizo una estimación poco estricta en la que determino aproximadamente unos 3400 Bytes por segundo de video(con una compresion o una resolucion distintas a las tomadas por mí, esta estimación no es valido). Teniendo en cuenta que esta aproximación es bastante imprecisa, al acabar el video tomo el tiempo total de reproducción, y corrijo la duración estimada. Este segundo valor es totalmente fiable.
El conocer el tiempo total es simplemente para darle funcionalidad al timeline. Siempre podría deshabilitarlo hasta que termine de reproducirse el video como hacen otros players, pero perdería así la utilidad de la linea de tiempo.

Bueno, espero que utiliceís con sabiduría el reproductor y recordad no darle de comer después de las once.

Exception en .NET

Monday, August 16th, 2004

Posiblemente uno de los puntos mas fuertes de la tecnología .NET sea las capacidades de Reflexivas que le permiten recolectar información de un assembly mediante la lectura de metadatos internos. Una de las funcionalidades donde mejor se aprovecha esta capacidad es a la hora de debuggear, y capturar Excepciones.
Cuando, en proceso de debbugeo capturamos una excepción, y analizamos las propiedades que nos proporciona la clase Exception, para descubrir el objeto que produjo el error. Pero cuando exploramos el objeto Exception, encontramos innumerables mensajes y códigos de difícil comprensión. Por ello intentaremos en este post aclarar los campos con la información más relevante para analizar el error.

Analizando Exception encontramos los siguientes campos:

  • Message: Te muestra un mensaje explicativo donde se describe el como y donde se produjo el error. Es quizás la propiedad mas útil para conocer el error que se ha producido.
  • Source: Te muestra el nombre del assembly y el namespace en el que se inició la excepción. Esta propiedad es útil cuando trabajamos con varios asseblies referenciados en el proyecto, para conocer en cual de ellas se produjo el error.
  • InnerException: Si la excepción que se ha lanzado es causada por otra excepción en un nivel inferior, te proporciona un objeto System.Exception de esta excepción primaria, para su análisis.
  • StackTrace: StackTrace muestra los procedimientos estaban siendo ejecutados en el instante en el que la excepción fue lanzada. Esta propiedad te permite conocer el estado de la pila y ver así en que situación del sistema había otros procesos en ejecución.
  • HResult: Este numero(pasado a Hexadecimal) representa 3 campos con información acerca del error. Un campo te indica el si el la excepción es informativa, una advertencia o un error. Otro campo te indica la zona del sistema donde se produjo el error. El tercer y ultimo valor representa un código único que representa al tipo de error producido.
  • TargetSite: Si al producirse una excepción, no es posible saber que método la ha lanzado, esta propiedad saca de la StackTrace el ultimo método en ejecución en el instante antes de que se iniciara la excepción, y te lo muestra como causante de esta. Normalmente la información que te proporciona TargetSite coincide con la información que te proporciona ExceptionMethod, aunque puede ocurrir que no sea así cuando el error no lo haya producido el ultimo método ejecutado en la pila, sino algún hilo de ejecución simultaneo o un error externo a la aplicación.
  • ExceptionMethod: Esta propiedad te proporciona información acerca del método que inicio la excepción. Esta propiedad te muestra la información del método, sus parámetros, el alcance, el namespace o el assemby al que pertenece, a través de la propiedad “System.Reflection.MethodInfo”. También te permite conocer es estado de este método en el momento de la ejecución, mostrándote el valor de los parámetros o el valor devuelto por este.

Se podría entrar más en profundidad y por ejemplo, analizar los bytes almacenados en los registros de memoria o en la pila de procesos, o las direcciones de los punteros, pero la complejidad de ese análisis es grande y con las herramientas ya comentadas para mi son mas que suficientes.

Bueno Korsarios, espero que os sea de utilidad esta pequeña ayuda. Larga Vida y Prosperidad.

Renovando para morir

Sunday, August 8th, 2004

Malas noticias amigos, una Web mas que no podremos consultar en Firefox. Hace poco la Junta de Andalucía ha actualizado el diseño de la Administración Publica y aunque han mejorado ampliamente el diseño han mermado su funcionalidad o al menos el numero de exploradores en el que funcionaba. El causante de tanto alboroto es este JavaScript que los autores han decidido incluir para dotar al buscador en cuestión de cierto dinamismo.

function quitarAvisos()
	{

        text_TIPOACCESOObli.style.visibility = "hidden";

        textoAvisoForm.style.visibility = "hidden";
	}

function Validar()
	{
	var resultado = true;
	// Mensajes de error no visibles por defecto
       quitarAvisos();

        if (document.formSel.parfTIPOACCESO.value=="-1")	{
            text_TIPOACCESOObli.style.visibility = "visible";
            resultado = false;
            }

	if (!resultado)
		textoAvisoForm.style.visibility = "visible"; 

	if (resultado==true) document.formSel.cf.value=0;

	return resultado;		

	}

Lo cierto es que este código cuyo único propósito es mostrarnos unos avisos si hemos dejado algún campo sin marcar y ahorrarnos el envió del formulario si así fuera no es interpretado por Firefox. Pero aun así en un alarde de buenas intenciones el navegador de Mozilla hace el submit y envía el formulario. Entonces ¿Cuál es el problema? El problema es que los autores han incluido este atributo en el formulario:

<input value='1' name='cf' type='hidden'>

El cual puede encontrarse en dos valores 0 si el contenido que se envía es correcto y 1 si no lo fuera. Por defecto esta en 1 así que el servidor devuelve la petición porque Firefox al no entender el JavaScript no es capaz de cambiar este valor. Alguien mas malicioso que yo podría pensar que tantas molestias para asegurarse en local de que lo que se envía al servidor es correcto seria un indicio de que en el servidor no se lleva a cabo ningún tipo de comprobación. Malas noticias de nuevo en el servidor se comprueba todo. ¿Entonces? Pues entonces parece que no quieren que los que tengan Firefox consulten el buscador porque podrían haberse limitado a usar el JavaScript para mostrar y ocultar las capas que contienen el mensaje de error y delegar la comprobación al servidor como ya esta hecho. En fin… ¿vosotros que pensáis? leed y propagad Korsarios


Creative Commons Attribution 3.0 Unported
Creative Commons Attribution 3.0 Unported