martes, 28 de junio de 2016

PR1.1 - Nociones sobre programación estructurada

La programación estructurada es un paradigma de programación orientado a mejorar la claridad, calidad y tiempo de desarrollo de un programa de computadora

utilizando únicamente subrutinas y tres estructuras: secuencia, selección (if y switch) e iteración (bucles for y while), considerando innecesario y contraproducente el uso de la instrucción de transferencia incondicional (GOTO), que podría conducir a "código espagueti", que es mucho más difícil de seguir y de mantener, y era la causa de muchos errores de programación.

La programación estructurada es un paradigma de programación orientado a mejorar la claridad, calidad y tiempo de desarrollo de un programa de computadora. Surgió en la década de 1960, particularmente del trabajo de Böhm y Jacopini, y una famosa carta, «La sentencia goto, considerada perjudicial», de Edsger Dijkstra en 1968 — y fue reforzado teóricamente por el teorema del programa estructurado, y prácticamente por la aparición de lenguajes como ALGOL con adecuadas y ricas estructuras de control. Ejemplo en BASIC estructurado:

El teorema del programa estructurado, propuesto por Böhm-Jacopini, demuestra que todo programa puede escribirse utilizando únicamente las tres instrucciones de control siguientes:
  • Secuencia.
  • Instrucción condicional.
  • Iteración (bucle de instrucciones) con condición al principio.
Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones posibles. Si bien los lenguajes de programación tienen un mayor repertorio de estructuras de control, estas pueden ser construidas mediante las tres básicas citadas.

Es posible hacer la programación estructurada en cualquier lenguaje de programación, aunque es preferible usar algo como un lenguaje de programación procedimental. Algunos de los lenguajes utilizados inicialmente para programación estructurada incluyen: ALGOL, Pascal, PL/I y Ada

Posteriormente a la programación estructurada se han creado nuevos paradigmas tales como la programación modular, la programación orientada a objetos, programación por capas, etc., y el desarrollo de entornos de programación que facilitan la programación de grandes aplicaciones y sistemas. Leer completo en wikipedia.org

lunes, 4 de abril de 2016

LM. 1.3 - Estructura HTML. Elemento BODY

Etiqueta BODY. Delimita el cuerpo del documento. Va a continuación de la etiqueta HEAD.

En BODY van todos los contenidos de la página (texto, imágenes...) Todo lo que queremos mostrar a los lectores de nuestro documento. Sus etiquetas son: <body>, (Para delimitar el comienzo); y </body>, (al terminar, siempre antes de </html>).

La etiqueta <body> puede tener los siguientes atributos:
  • text="..." color del texto
  • link="..." color de enlaces no visitados
  • vlink="..." color de enlaces visitados
  • alink="..." color del link activo
  • bgcolor="..." color del fondo
  • background="..." Imagen de fondo
Aunque se recomienda utilizar hojas de estilos para tal fin, podemos encontrarnos con etiquetas en el body, veámos por ejemplo:

Elemento BODY


El diseño en HTML, aparte de cumplir con las especificaciones propias del lenguaje, debe respetar ciertos criterios de accesibilidad web, siguiendo unas pautas o las normativas y leyes vigentes en los países donde se regule dicho concepto. Se encuentra disponible y desarrollado por el W3C a través de las Pautas de Accesibilidad al Contenido Web 1.0 WCAG

LM. 1.2.1 - Estructura HTML. Elemento HEAD

head viene del ingles cabeza y su función es delimitar cabecera del documento. La cabecera es la sección apropiada para incluir información sobre el documento, la mayoría de la cual no será mostrada a los lectores. Para incluir esta información tenemos diversos elementos, de momento solo comentaremos el más importante:
Estructura HTML. Elemento HEAD
<head>: define la cabecera del documento HTML; esta cabecera suele contener información sobre el documento que no se muestra directamente al usuario como, por ejemplo, el título de la ventana del navegador. Dentro de la cabecera <head> es posible encontrar:
<title>: define el título de la página. Por lo general, el título aparece en la barra de título encima de la ventana.
<link>: para vincular el sitio a hojas de estilo o iconos. Por ejemplo:<link rel="stylesheet" href="/style.css" type="text/css">.
<style>: para colocar el estilo interno de la página; ya sea usando CSS u otros lenguajes similares. No es necesario colocarlo si se va a vincular a un archivo externo usando la etiqueta <link>.
<meta>: para metadatos como la autoría o la licencia, incluso para indicar parámetros http (mediante http-equiv="") cuando no se pueden modificar por no estar disponible la configuración o por dificultades con server-side scripting. Apuntes sobre meta tags
<head>: también admite etiquetas <script></script> para procesar javascript, aunque al igual que las etiquetas <style></style> se recomiendan usar en una archivos separados vinculandolos en lugar de escribir directamente en ellos. Por lo que podriamos encontrarnos con la siguiente estructura, por ejemplo:

LM. 1.1 - Esctructura básica de un documento HTML

HTML, sigla en inglés de HyperText Markup Language (lenguaje de marcas de hipertexto), hace referencia al lenguaje de marcado para la elaboración de páginas web. Es un estándar que sirve de referencia del software que conecta con la elaboración de páginas web en sus diferentes versiones, define una estructura básica y un código (denominado código HTML) para la definición de contenido de una página web,

Un documento HTML 4 (obsoleto) se compone de tres partes:
  • una línea que contiene información sobre la versión de HTML,
  • una sección de cabecera declarativa (delimitada por el elemento HEAD),
  • un cuerpo, que contiene el contenido real del documento. El cuerpo puede ser especificado mediante el elemento BODY o mediante el elemento FRAMESET.
Puede aparecer espacio en blanco (espacios, saltos de línea, tabulaciones y comentarios) antes y después de cada sección. Las secciones 2 y 3 deberían estar delimitadas por el elemento HTML.

Aquí tenemos un ejemplo de un documento HTML sencillo:
Información sobre la versión de HTML. DOCTYPE

Un documento HTML válido declara qué versión de HTML se utiliza en el documento. Este elemento, que muchos websmaster obvian (incorrectamente), le indica al navegador la versión y tipo de HTML empleado en el documento. De esta forma, el navegador usará el modelo de renderización adecuado al tipo de documento.

Para HTML 4.01. (obsoleto) existen 3 tipos de doctype:
Esctructura básica de un documento HTML
El URI que aparece en la declaración del tipo de documento permite a los agentes de usuario descargar el DTD y los conjuntos de entidades que sean necesarios. Los siguientes URIs (relativos) se refieren a los DTDs y conjuntos de entidades de HTML 4:
  • "strict.dtd" -- DTD estricto por defecto
  • "loose.dtd" -- DTD no estricto
  • "frameset.dtd" -- DTD para documentos con marcos
  • "HTMLlat1.ent" -- entidades Latin-1
  • "HTMLsymbol.ent" -- entidades Symbol
  • "HTMLspecial.ent" -- entidades especiales
Las dos últimas letras de la declaración indican el idioma del DTD. Para HTML, éste es siempre inglés ("EN").

En HTML5:
Esctructura básica de un documento HTML5
Se reduce la definición del tipo de documento a una única posibilidad, por lo que no tenemos que preocuparnos de elegir el tipo de documento correcto:

martes, 22 de septiembre de 2015

BD 1.3 - Tipos de Comandos en SQL

Los comandos SQL son instrucciones codificadas en sentencias, que se utilizan para comunicarse con la base de datos para realizar tareas específicas, el trabajo, las funciones y las consultas con los datos. Pueden dividirse en tres subgrupos:

DDL es el nombre corto de "Data Definition Language", que trata de esquemas y descripciones de bases de datos, de cómo los datos deben residir en la base de datos.
  • CREATE – to create objects in the database
  • ALTER – alters the structure of the database
  • DROP – delete objects from the database
  • TRUNCATE – remove all records from a table, including all spaces allocated for the records are removed
  • COMMENT – add comments to the data dictionary
  • RENAME – rename an object

DML es el nombre corto de "Data Manipulation Language" que se ocupa de la manipulación de datos, e incluye sentencias SQL más comunes, SELECT, INSERT, UPDATE, DELETE, etc., y se utiliza para almacenar, modificar, recuperar, eliminar y actualizar los datos en la base de datos.
  • SELECT – retrieve data from the a database
  • INSERT – insert data into a table
  • UPDATE – updates existing data within a table
  • DELETE – Delete all records from a database table
  • MERGE – UPSERT operation (insert or update)
  • CALL – call a PL/SQL or Java subprogram
  • EXPLAIN PLAN – interpretation of the data access path
  • LOCK TABLE – concurrency Control

DCL es nombre corto de "Lenguaje de control de datos", que incluye comandos como GRANT, y sobre todo preocupados por los derechos, permisos y otros controles del sistema de base de datos.
  • GRANT – allow users access privileges to database
  • REVOKE – withdraw users access privileges given by using the GRANT command

martes, 4 de agosto de 2015

BD 1.2 - Tipos de Campos en MySQL

El asignar un tipo a cada campo es para optimizar la base de datos y agilizarla. Los tipos de datos que puede haber en un campo, se pueden agrupar en tres grandes grupos.

Aunque dentro de cada uno de ellos hay mucha variedad, Nos servirán entre otros para crear tablas del tipo:


Tipos Numéricos

TINYINT[(M)]
Entero muy pequeño (-128 a 127 con signo / 0 a 255 sin signo)
BIT/BOOL/BOOLEAN
Cero es falso. Valores no zero son considerados verdaderos.
SMALLINT[(M)]
Entero pequeño (-32768 a 32767 con signo / 0 a 65535 sin signo).
MEDIUMINT[(M)]
Entero medio (-8388608 a 8388607 con signo / 0 a 16777215 sin signo).
INT[(M)]
Entero (-2147483648 a 2147483647 con signo / 0 to 4294967295 sin signo).
INTEGER[(M)]
Sinónimo de INT
BIGINT[(M)]
Entero grande (-9223372036854775808 a 9223372036854775807 con signo / 0 to 18446744073709551615 sin signo)
FLOAT[(M,D)]
Número coma flotante pequeño.
DOUBLE[(M,D)]
Número coma flotante normal.
DOUBLE PRECISION[(M,D)]
Sinónimos de DOUBLE.
DECIMAL[(M[,D])]
Número con decimal fijo. Se comporta com un CHAR. M es el total de dígitos y D es el número de decimales.


Tipos Fecha y Hora

DATE
Fecha. Rango de '1000-01-01' a '9999-12-31'. Formato: 'YYYY-MM-DD'.
DATETIME
Combinación de fecha y hora. Rango de '1000-01-01 00:00:00' a '9999-12-31 23:59:59'. Formato: 'YYYY-MM-DD HH:MM:SS'.
TIMESTAMP[(M)]
Rango de '1970-01-01 00:00:00' a aproximadamente el año 2037.
TIME
Tiempo. Rango de '-838:59:59' a '838:59:59'. Formato: 'HH:MM:SS'.
YEAR[(2|4)]
Año en 2 dígitos o 4 dígitos. Rango de 1901 to 2155, and 0000 para 4 dígitos y de 70 a 69 (de 1970 a 2069) para 2 dígitos.


Tipos String

CHAR(M) [BINARY | ASCII | UNICODE]
Cadena de carácteres de longitud fija. M de 0 a 255.
CHAR
Sinónimo de CHAR(1).
VARCHAR(M) [BINARY]
Cadena de carácteres de longitud variable. M de 0 a 255.
TINYBLOB/TINYTEXT
Una columna BLOB o TEXT de como máximo 255 carácteres.
BLOB/TEXT
Una columna BLOB o TEXT de como máximo 65,535 carácteres.
MEDIUMBLOB/MEDIUMTEXT
Una columna BLOB o TEXT de como máximo 16,777,215 Caracteres
LONGBLOB/LONGTEXT
Una columna BLOB o TEXT de como máximo 4,294,967,295 carácteres.
ENUM('value1','value2',...)
Enumeración. Cadena de carácteres que sólo puede tener un valor dado en la lista.
SET('value1','value2',...)
Lista que puede tener valor cero o más valores. Deben estar en la lista y como máximo pueden haber 64 miembros.

lunes, 6 de julio de 2015

LM1.2.2 - Algunos Apuntes sobre Meta Tags

Los Meta-Tags están pensados para los buscadores y son muy importantes para el posicionamiento:

Para "refrescar" una página o redirigirla a otra, transcurrido un cierto tiempo:
<meta http-equiv="refresh" content="20;URL=./indice.htm" > El tipo es http-equiv="refresh", en content le decimos el número de segundos (si indicamos CERO será inmediato) y a continuación indicamos la página a la que debe dirigirse, para ello usamos URL=nombre de la página.
En este ejemplo, se cargará la página indice.htm que esté en el directorio actual transcurridos 20 segundos.

Las palabras claves que los "robots" usarán:
<meta name="Keywords" content="las palabras separadas por comas" > Este tag lo usarán los "robots" enviados por los buscadores y se usará para indicar las palabras claves relacionadas con la página en cuestión.

La descripción de la página:
<meta name="Description" content="descripción de la página" > Este tag lo usan los buscadores para dar una descripción del contenido de la página.

Si los "Robots" deben tener en cuenta esta página o no:
<meta name="Robots" content="ver los valores" > El valor de content puede ser:
all para que el robot tenga en cuenta esta página y pueda seguir los links contenidos en la misma (este es el valor predeterminado)
noindex para que no la tenga en cuenta.
none que es lo mismo que noindex, nofollow
index para que la tenga en cuenta
follow para que pueda seguir los links que haya en la página
nofollow lo contrario de follow.

La fecha en la que expira una página:
<meta http-equiv="expires" content="fecha en formato GMT" > La fecha en la que dicha página expira y por tanto el navegador "refrescará" el contenido después de esa fecha.
En el caso de que el valor de content sea -1, no se guardará en el caché, en teoría lo mismo que si fuese 0.
Si se usan páginas ASP, se puede usar también: Response.Expires = -1

Para que no se guarde la página en el caché:
<meta http-equiv="Pragma" content="no-cache" > Esto le indica al navegador que no guarde la página en el caché.
Este meta-tag no es válido para el Internet Explorer y según la Knowledge Base, es preferible usar el método indicado arriba, es decir usar "expires" y en content -1:
<meta http-equiv="expires" content="-1" > A ver si es cierto... ya que esto es el que yo necesito para evitar los problemillas que algunas veces me contáis de que no se ve la página correcta...

Evitar que una página se muestre dentro de un frame:
<meta http-equiv="Window-target" content="_top" > En Content podemos usar:
_top para indicar que se muestre en la página completa, no dentro de un frame,
_blank para que se muestre en una nueva ventana