24th Aug 2008

Lector ID3 para MP3 en Javascript

Dándome una vuelta por aniet2k me encontré con un script echo por nihilogic.dk para leer los tags de un archivo mp3 por medio de javascript, la cosa suena muy interesante, así que me puse a hacer unas pruebas, y realmente creo que le podemos sacar provecho.

Mi ejemplo :: http://util.inocorp.org/ID3/

Ejemplo de Nihilogic.dk :: http://www.nihilogic.dk/labs/id3/

Explicación:

Para poder utilizar la librería creada por Nihilogic.dk debemos saber que esta dividida en dos archivos, un binaryajax.js y un ID3.js, ambos muy importantes.

Código de mi Ejemplo.

JAVASCRIPT:
  1. var file = "colours.mp3";
  2.  
  3. function mycallback() {
  4.     var tags = ID3.getAllTags(file);
  5.     document.getElementById("artist").innerHTML = tags["artist"];
  6.     document.getElementById("title").innerHTML = tags["artist"];
  7.     document.getElementById("album").innerHTML = tags["album"];
  8.     document.getElementById("year").innerHTML = tags["year"];
  9.     document.getElementById("comment").innerHTML = tags["comment"];
  10.     document.getElementById("genre").innerHTML = tags["genre"];
  11.     document.getElementById("track").innerHTML = tags["track"];
  12. }
  13.  
  14. function PrintTagsMp3(){
  15.     ID3.loadTags(file, mycallback);
  16. }
  17.  
  18. function loadPage(){   
  19.     var lfile = document.getElementById("file");
  20.         lfile.innerHTML="<a href='" + file + "'>"+file+"</a>";
  21. }

Vemos una variable file que contendrá la ruta de nuestro archivo MP3. Tenemos tres funciones, loadPage simplemente nos pone en pantalla que archivo es el que se analizará. PrintTagsMp3 que es la función que se ejecutara para cargar las tags, y mycallback que llenara los datos. Simple !!

Al presionar click sobre el boton "cargar", se ejecuta la función PrintTagsMp3 que contiene a la instrucción ID3.loadTags(file, mycallback), que se encarga de cargar los tags del archivo, y cuando termine de cargarlos, ejecutara la funcion mycallback, como algo tipico de Ajax.

Posteado por lesthack under codigos, javascript, programacion, utilerias | PON TU COMENTARIO »

09th Aug 2008

Mini-Lector de Feeds para el Blog

Ayer tuve la idea de incluir en el blog una categoría dentro de mis menús que me muestre el ultimo post de mis blogs amigos, posiblemente me dirán, instala un plugin, pero no, yo quise investigar como hacerlo.

Lo primero que pense fue, un feed esta echo con el meta-lenguaje xml, por ende, tendré que investigar como parsear un xml en php (no elegi javascript por que queria incluirlo dentro del theme que tengo para el blog sin necesidad de esforzarme de más).

Y empezo la busqueda.

Debemos saber que un feed es un formato de datos para establecer información actualizada, pero, existen al menos dos formatos muy conocidos como lo es el RSS y Atom.

En este punto me puse a pensar, si hiba a hacer un lector de feeds tendria que hacerlo para varios formatos como el RSS, y Atom.

Pensé en muchas cosas, e investigé cuales eran sus diferencias, pero tambien pensé, es probable que alguien mas tenga ya algo echo y me guie con eso. Así que encontre un código de hernandavos.com que me ayudo bastante.

Puedes descargar el código de hernandavos.com aquí: Descargar

Ahora, el código estaba bien, muy fácil de entender,  pero, mmm, quería adaptarlo a mis necesidades, así que el código lo convertí adapte a una Clase para hacerlo un poco mas genérico, ademas de que yo solo quería el post mas reciente del blog.

Este fue el resultado: Descargar mi adaptación.

Pueden ver el resultado en el menú derecho del blog con el titulo de AUTO.FEEDS

Es probable que lo quite ya que me gasta mucho ancho de banda, asi que trataré de hacerlo de una manera un poco mas economica en cuanto a recursos.

Posteado por lesthack under codigos, personal, php, programacion, proyectos terminados, sobre el ITC, utilerias, web | PON TU COMENTARIO »

08th Aug 2008

Teoria de la Computación: Introducción

He estado pensando en estos dias en la idea iniciar una especie de guía/curso/apuntes de teoría de la computación como archivero de textos importantes para mi que puedo ofrecerles, así que este es el principio de estos apuntes guardados que ahora salen a flote.

La teoría de la computación (TC) es una ciencia (rama de la matemática-computación) que centra su interés en el estudio y definición formal de los cómputos.

Se le llama cómputo a la obtención de una solución o resultado a partir de ciertos datos o entradas utilizando para ello un proceso o algoritmo.

Wikipedia.es [Teoría de la Computación]

Wikipedia.en [Theory of Computation]

Antes de entrar en materia, quisiera empezar con algo básico de matemáticas que debemos saber para adentrarnos en el mundo de los autómatas.

Conjuntos

El término conjunto puede ser definido como una colección de objetos, por ejemplo, un conjunto de hombres, un conjunto de discos, un conjunto de balones, etc. \displaystyle{A} cada objeto perteneciente a un conjunto se le denomina elemento o miembro. Si un grupo de hombres es un conjunto, y luis es un miembro de este, se dice que luis pertenece al conjunto de hombres y se representa de la manera \displaystyle{ luis \in Hombres }.

En dado caso de que luis no perteneciera al grupo de hombres (no me pregunten la razón), la manera de representarlo seria la siguiente: \displaystyle{ luis \notin hombres}.

Si un conjunto N tiene ciertos elementos, por ejemplo, un conjunto de hombres tiene como miembros a luis, carlos, y alberto, para representar al conjunto matemáticamente (por medio de corchetes) diriamos: \displaystyle{ Hombres = \{luis, carlos, alberto\} }

Nos hemos dado cuenta que los corchetes \displaystyle{\{\}} nos ayudan a representar a un conjunto, encerrando a los miembros de este entre ellos. Otra manera de representar a un conjunto de manera un poco mas general seria de la forma: \displaystyle{ N = \{v :v\ es\ vocal\} }, donde \displaystyle{N} equivale al conjunto de toda \displaystyle{v}, tal que \displaystyle{v} es una vocal, o bien, \displaystyle{N = \{v|v\ es\ una\ vocal\}}, donde \displaystyle{ v | v\ es\ vocal } se lee "el conjunto de todas las v tal que v sea una vocal".

Podemos clasificar a los conjuntos en dos tipos, mismos que dependen de su cardinalidad. La cardinalidad de un conjunto es el numero de elementos que tiene, en el ejemplo de \displaystyle{Hombres = \{luis, carlos, alberto\}}, la cardinalidad de \displaystyle{Hombres} es 3 y se representa de la forma \displaystyle{\|Hombres\|=3}. La división es pues en conjuntos finitos y conjuntos infinitos. Un conjunto es finito siempre y cuando su cardinalidad sea conocida, sea esta 0 (conjunto vacío) o \displaystyle{N}, sin embargo, si la cardinalidad no es conocida se dice que este conjunto es infinito.

Un conjunto \displaystyle{A = \{n \in N : 1 \leqslant n \leqslant\} } es equivalente al conjunto \displaystyle{B = \{1,2,3,4\} } por lo que decimos que \displaystyle{A=B}

Un conjunto \displaystyle{A = \{1,2,3\} } es distinto a \displaystyle{B = \{4,5,6\} } y lo representamos como \displaystyle{ A \neq B }

Si un conjunto \displaystyle{ A=\{1,2,3\} } y un conjunto \displaystyle{ B=\{1,2,3,4,5,6\}}, se dice que A pertenece a B y se escribe como \displaystyle{ A \subseteq B}, ya que el Conjunto B contiene a los elementos de A.

Operaciones con Conjuntos

Unión \displaystyle{ \cup } : Ejemplo práctico \displaystyle{ A = \{1,2,3\} } y \displaystyle{ B = \{4,5,6\} }, \displaystyle{ A \cup B = \{1,2,3,4,5,6\}}

Intersección \displaystyle{ \cap } : Ejemplo práctico \displaystyle{ A = \{1,2,3,4,5\} } y \displaystyle{ B = \{4,5,6,7,8\} }, \displaystyle{ A \cap B = \{4,5\}}

Diferencia \displaystyle{ - } : Otro Ejemplo \displaystyle{ A = \{1,2,3,4,5\} } y \displaystyle{ B = \{4,5,6,7,8\} }, \displaystyle{ B - A = \{6,7,8\}}

Producto cartesiano \displaystyle{ * } : Ejemplo \displaystyle{ A = \{a,b,c\} } y \displaystyle{ B = \{e,f\} }, \displaystyle{ A * B = \{(a,e),(b,e),(c,e),(a,f),(b,f),(c,f)\}}

Existen otras operaciones, y por el momento solo mencionare estas.

Cuantificadores

Cuantificador Universal \displaystyle{ \forall } : Su uso recide en establecer que todos los elementos de un conjunto cumplen con cierta propiedad.

Cuantificador Existencal \displaystyle{ \exists } : Su uso recide en establecer que almenos un elemento de un conjunto cumple con cierta propiedad.

Cadenas y Lenguajes

Al hablar de lenguajes en la teoría de la computación, necesitamos nombrar a los símbolos a utilizar en ese lenguaje, por ejemplo, los simbolos utilizados en un lenguaje que esta constituido por números, por letras, por jeroglíficos, etc. A este conjunto de símbolos los representaremos por el símbolo \displaystyle{ \Sigma }, y aquellas combinaciones que este conjunto pueda realizar, las llamaremos cadenas.

Por ejemplo, \displaystyle{ \Sigma = {a,b,c} }, una cadena que nuestro alfabeto \displaystyle{ \Sigma } generaría sería \displaystyle{ abc }, o tal vez \displaystyle{ acb }, o bien latex \displaystyle{ bca }$, en fin, también pueden ser grandes cadenas como \displaystyle{ abbbccc }. Entonces podemos definir a una cadena como a una secuencia de símbolos de un alfabeto. Y un lenguaje como al conjunto de cadenas que genera un alfabeto.

Dentro del concepto "lenguaje" existe el denominado "lenguaje vacio" que esta formado por cero cadenas y lo denotamos por \displaystyle{ 0 }

Concatenación: no es mas que la union de dos o mas cadenas, de tal forma que si \displaystyle{ a = flor } y \displaystyle{ b = marchita }, la concatenación de estas dos cadenas será \displaystyle{ ab = flormarchita }

Wikipedia [Teoría de Conjuntos]

Bibliografía:

Ramón Brena :: Automatas y Lenguajes

Wikipedia

Mis apuntes :: Jorge Luis Hernández C.

Posteado por lesthack under Teoria de la Computación | PON TU COMENTARIO »

07th Aug 2008

Empaques creativos para CD

Chung Dha nos muestra este creativo empaque para CD que me ha encantado.




Descargar: Pochup-CD Pochup-MiniCD

Enlaces:

http://www.chungdha.com/2008/07/pochup-cd-packaging.html

http://www.chungdha.com/2008/08/pochup-templates.html

Posteado por lesthack under diseño, enlaces | PON TU COMENTARIO »

04th Aug 2008

Galeria de Fotos en MooTools

Aquellos que creen que mootools no tiene futuro aquí les presento un "how to" de como hacer una espectacular galería de fotografías con este fantástico framework echo en javascript [mootools es una maravilla muchachos !!].


[demo] [source]

Crear una espectacular foto galería con MooTools

Via: NETTUS.com

Posteado por lesthack under CSS, codigos, diseño, enlaces, programacion, web | PON TU COMENTARIO »

31st Jul 2008

Diseños de Julio

Diseños interesantes de este mes [Julio] que llamaron instintivamente mi atención.

Posteado por lesthack under diseño, personal | PON TU COMENTARIO »