Uniendo tablas MySQL (I). Introducción.

Iniciamos aquí una pequeña serie de artículos dedicados a las consultas MySQL que afectan a dos o más tablas. Cuando, en una consulta, necesitamos recurrir a dos tablas, significa que ambas están relacionadas entre sí, en una relación de 1-m o de m-1. Cuando se recurre a consultas que implican más de dos tablas, puede tratarse de que alguna de ellas esté relacionada con las demás en relaciones del tipo mencionado, o bien que dos tablas estén relacionadas entre sí, en una relación de tipo m-n, a través de una tercera tabla intermedia. Además, podemos encontrarnos con la necesidad de construir consultas que impliquen relaciones “especiales”, bajo determinadas circunstancias, como veremos en esta serie. Procuraremos analizar las sintaxis adecuadas en los casos que se nos presenten, de modo que, cuando tengas necesidad de consultas de este tipo, puedas hacerlas del modo más óptimo posible. En estos artículos presentaremos la sintaxis MySQL. Esto significa que podría haber algunas diferencias si tu motor de base de datos SQL es otro (SQL Server, SQLite, etc). Optar por MySQL ha sido una decisión lógica, teniendo en cuenta que es el motor de bases de datos relacionales más empleado en Internet, con mucha diferencia y, …

Seguir leyendo

Espacios de nombres en PHP (I). Introducción.

Todos hemos oído hablar alguna vez de los espacios de nombres, o namespaces (ns), en terminología anglosajona. Tal vez en otro contexto (cómo XML, por ejemplo). En PHP constituyen una valiosa herramienta de la que vamos a ocuparnos en estos artículos. En su definición más aceptada, son una forma de encapsular elementos (en el contexto de PHP, estamos hablando de constantes, funciones y clases). Esto nos facilita crear código reutilizable, permitiendo a otros desarrolladores implementar con facilidad nuestras librerías, evitando colisiones de nombres que pudieran surgir con sus propios elementos, y viceversa. Nosotros podemos implementar librerías de terceros, con la misma prerrogativa.

Espacios de nombres en PHP (II). Agrupando Namespaces.

En el artículo anterior nos introdujimos en el uso de los espacios de nombres, o namepaces (en muchos textos aparecen, abreviadamente, como ns). En este artículo vamos a ver como usar dos espacios de nombres diferentes en un mismo script. Antes de entrar en materia debo advertirte que lo que vamos a aprender en este artículo es una práctica que, aún siendo sintácticamente legal en PHP, se encuentra sumamente desaconsejada, en orden a tener un código limpio y reutilizable. En realidad, no existe ninguna razón clara para usar lo que vamos a ver aquí, y sí hay muchas para no usarlo. La más obvia es que nuestro código será más limpio y reutilizable cuanto más encapsulado esté. En efecto, si yo necesito emplear los elementos que se encuentran bajo un determinado espacio de nombres, no hay ninguna razón por la que deba cargar un script que incluya otros espacios de nombres cuyos elementos no voy a necesitar. A menudo, la diferencia entre encapsulación y sobrefragmentación del código es una línea muy delgada, pero el criterio que acabo de exponerte la define bastante bien. Y ahora, si las prácticas que vamos a ver están desaconsejadas ¿por qué hablar de ellas? Con …

Seguir leyendo

Espacios de nombres en PHP (y III). Jerarquía de namespaces.

En el primer artículo de esta serie explicábamos que los espacios de nombres son una forma de clasificar elementos equivalente, en cuanto al concepto, a lo que son los directorios para los ficheros. De este modo podemos tener elementos, como ya hemos aprendido, con el mismo nombre, en diferentes espacios de nombres. A la hora de referenciar un elemento, lo hacemos precediéndole, en su caso, del espacio de nombres al que dicho elemento pertenece. Al igual que ocurre con los directorios, podemos especificar una ruta de acceso de tres modos: Sin especificar un espacio de nombres. En ese caso se entiende que el elemento referenciado se encuentra en el espacio de nombres actual. Es lo mismo que no usar espacio de nombres. Esto se conoce como nombre sin cualificar. Es el equivalente, cunado hablamos de ficheros y directorios a llamar a un fichero sólo por su nombre, asumiendo que está en el mismo directorio en el que estamos trabajando. Especificando un espacio de nombres, la barra invertida, y el elemento al que queremos referirnos. Esto se conoce como nombre cualificado. El espacio de nombres que usamos “depende” del espacio de nombres actual. Es el equivalente a usar una ruta relativa …

Seguir leyendo

Eliminar elementos en una matriz JavaScript

Las matrices en JavaScript son un recurso muy interesante (imprescindible, en muchos casos) a la hora de gestionar datos en el lado del cliente. Desafortunadamente, la gestión de matrices en JavaScript adolece de ciertas limitaciones importantes que los desarrolladores acostumbrados al backend y sus poderosas herramientas (léase PHP, por ejemplo) acusamos en gran manera. Sin embargo, sí cuentan con determinadas funcionalidades que es importante conocer. Una de estas, que vamos a tratar en este artículo, es la eliminación de un determinado elemento situado en un lugar concreto dentro de una matriz.

El canvas de HTML 5 (V). Relleno sólido.

Ya estamos bastante familiarizados con el uso de las figuras de trazo en los canvas. En este artículo vamos a ampliar los conocimientos que ya tenemos, para ver como podemos crear figuras sólidas, tanto con contorno como sin él. En lo que veamos en este artículo emplearemos colores planos (no gradientes, ni texturas), para aprender a crear figuras con tonos sólidos o con el grado de transparencia que deseemos en cada caso. Así que, hala. Prepara el bote de pintura, y vamos a pintar.

El canvas de HTML 5 (VI). Gradientes.

En el artículo anterior hemos aprendido a crear figuras rellenas, con un color sólido. En este artículo vamos a empezar a aprender como crear y usar gradientes, tema que completaremos en el próximo artículo. Los gradientes, o degradados, como se les llama en algunos textos, son muy llamativos a la hora de crear figuras. Algunos diseñadores gráficos los detestan y, honestamente, un gradiente debe ser suave y estar bien concebido para causar una buena impresión visual. En eso, como en todo (y nunca mejor dicho), para gustos los colores. Aquí aprenderemos a crearlos y usarlos, y luego será tu talento artístico y tu experiencia los que te dirán cómo y cuándo emplearlos.

El canvas de HTML 5 (VII). Gradientes radiales.

En el artículo anterior aprendimos a crear gradientes lineales. Vamos ahora a ver cómo crear gradientes radiales, desde un centro de un color a un perímetro de otro color, bien directamente, o con colores intermedios. Si al principio nos costó un poco aprender a crear gradientes lineales, con los radiales la cosa se complica un poco. No obstante, con la práctica seremos capaces de crear los gradientes que necesitemos, según nuestro diseño. No te asustes si, al principio, no ves claro lo que estás haciendo, o te sale un resultado que no se parece en nada a lo que habías pensado. Nos ha sucedido a todos. En cuanto le cojas el truquillo, en seguida estarás diseñando interesantes combinaciones.

El canvas de HTML 5 (VIII). Insertando imágenes.

Insertar imágenes en un canvas es una de las posibilidades que tiene este elemento. Sin embargo, a menos que sea necesario emplearlo, yo sugiero usar un contenedor más “natural”, como un figure o, incluso, un simple div. La razón no es caprichosa. Si bien el uso del canvas como contenedor de una imagen nos permite ciertas posibilidades adicionales, estas no son siempre necesarias, y el precio es una mayor complejidad en la programación de nuestra web, como veremos en este artículo.

El canvas de HTML 5 (IX). Combinando elementos.

Ya sabemos cómo incluir imágenes en un canvas. También hemos aprendido a insertar formas primitivas y textos. En este artículo vamos a aprender cómo podemos combinar ambos tipos de elementos para lograr el resultado que buscamos en nuestro diseño web. En realidad, es muy fácil, ya que sólo es repetir lo que ya sabemos. Sin embargo, hay algunos detalles que debemos tener en cuenta, y de los que hablaremos en este post. Espero que te resulte interesante.