Archivo

Archive for the ‘Metodología’ Category

Colección de libros de programación gratuitos

16 de diciembre de 2014 Deja un comentario

En este github encontrarás una gran cantidad de libros gratuitos de programación:

https://github.com/vhf/free-programming-books

Sólo en castellano:

https://github.com/vhf/free-programming-books/blob/master/free-programming-books-es.md

 

Markdown para generar Documentación

28 de septiembre de 2014 1 comentario

¿No crees que es un poco cutre hacer la documentación de un proyecto en Word?

Hay varias opciones y voy a empezar a recopilar aquí sobre Markdown, que es la que más me ha llamado la atención.

Markdown

Markdown es un lenguaje de marcado ligero que trata de conseguir la máxima legibilidad y «publicabilidad» tanto en sus forma de entrada como de salida.

El hecho de que sea un marcado ligero está claro, utiliza mucho menos texto para sus marcas, consiguiendo ser más rápido que HTML o XML.

Sintaxis

La Sintaxis completa de Markdown la encontramos aquí: http://daringfireball.net/projects/markdown/syntax.

PHP

Puedes descargar una librería PHP para Markdown aquí: https://michelf.ca/projects/php-markdown/

Ejemplos

*Esto va en cursiva*

Genera: Esto va en cursiva

*Patatas

*Judías

*Tomates

Genera una lista:

  • Patatas
  • Judías
  • Tomates

Editores

Editor online: Markable -> http://markable.in/editor/

.

 

 

Categorías: Metodología

DIA – Editor de Diagramas

19 de junio de 2014 Deja un comentario

DIA es un software para editar diagramas.

Creo que en este blog lo he nombrado anteriormente para el tema de Base de Datos, cuando creábamos los Diagramas Entidad/Relación.

Pues DIA también sirve para hacer diagramas UML.

dia-0.97-integrated-ui

La web de los desarrolladores es: https://wiki.gnome.org/action/show/Apps/Dia

Yo lo tengo ya en Windows 7 y en Ubuntu. Apenas diferencias entre versiones. No solo eso, sino que tengo un equipo en Windows 7 y otro en Ubuntu, tengo instalado Dropbox en ambos y trabajo sobre la misma carpeta. Los ficheros generados con uno son perfectamente compatibles con el otro, así no tengo que andar enviando ficheros de un sitio a otro.

Descripción del sitio en PHP

Además de para esto, voy a utilizarlo para ver las dependencias entre mis ficheros PHP.

Ya sabes que creas un fichero PHP y dentro del mismo llamas a otros con «include». Llega un momento en el que te pierdes con tanto fichero, voy a utilizar DIA para plasmar estas llamadas.

Descripción de la red de comunicaciones

Otra de las cosas para las que se utiliza DIA es para crear un mapa de tu red, con tus nodos, switches, etc.

Diagramas E/R con DIA

23 de marzo de 2013 Deja un comentario

Dia, herramienta gratuita para crear diagramas entidad/relación

Dia es una aplicación para crear diagramas técnicos. Tiene versiones en Linux y Windows. Es Software Libre.

https://live.gnome.org/Dia


Consultas SELECT sobre BD Contactos

2 de octubre de 2012 Deja un comentario

Una vez importada a MySQL la BD CONTACTOS.MDB hacer las siguientes consultas:

  1. Número de registros de la tabla Usuarios
  2. Nombre y apellidos de las personas que viven en Valencia.
  3. Nombre, apellidos y dirección de correo de las mujeres que no están casadas.
  4. Alias y número de teléfono de los hombres que tienen la EGB o el Bachillerato.
  5. Alias, número de teléfono móvil y dirección de correo de los hombres que hablan castellano y tienen los ojos marrones
  6. Alias de las mujeres que les gusta el deporte
  7. Alias de Mujeres heterosexuales o bisexuales que miden más de 1.60m
  8. Alias de Hombres que no tienen fobias y cuyos ingresos mensuales sean mayores de 1000 euros
  9. Número de hombres por cada ciudad
  10. Número medio de hijos que tienen las mujeres que pesan más de 70 kg
  11. Alias de las mujeres rubias de entre 25 y 40 años.
  12. Altura media de los hombres calvos
  13. Nombre de las ciudades en la que la media del peso de los hombres es superior a 80.
  14. Nombre de las ciudades en las que hay más de 5 mujeres dadas de alta

Pasar una BD de Access a MySQL con phpMyAdmin

2 de octubre de 2012 11 comentarios

De manera práctica vamos a ver cómo podemos pasar una BD completa realizada en Access a MySQL utilizando phpMyAdmin.

Si entramos en phpMyAdmin podemos utilizar la opción Importar dentro del menú Más:

Aparece la siguiente página:

Como se puede ver, soporta ficheros en formato SQL, CSV, ODS y XML.

En esta ocasión vamos a utilizar ODS. ¿Por qué? El formato ODS va a ser capaz de leer las tildes y ñ sin problema.

ODS es un formato abierto que utiliza Openoffice.org. Para obtener este formato, debemos abrir nuestro fichero de Access, sobre cada una de las tablas, exportarla a formato Excel (que es el más parecido a ODS).

Una vez obtenido el fichero Excel, lo abrimos. Tras abrirlo, utilizaremos Guardar Como para obtener el fichero ODS.

Ya tenemos generado nuestro fichero ODS.

Ahora volvemos a phpMyAdmin y abrimos la opción IMPORTAR.

Pulsamos el botón Examinar y seleccionamos el fichero ODS anteriormente generado. Veremos cómo automáticamente cambia el Formato del fichero a Hoja de Cálculo de Open Document.

Antes de pulsar el botón Continuar, seleccionaremos el Check La primer línea del archivo contiene los nombres de columna de la tabla.

Si todo ha ido bien, aparecerá un mensaje que nos informará de cuántas estructuras se han creado y cuántas consultas se han ejecutado.

Nos ha creado una base de datos que se llama ODS_DB, podemos cambiarle el nombre.

Nos ha creado una tabla cuyo nombre es igual al nombre del fichero ODS.

Las tablas se han importado casi correctamente. Los nombres de los campos los ha cogido perfectamente, pero nos faltarían algunos detalles.

En primer lugar, la llave primaria, seleccionamos el campo o campos que sean llave primaria (en este ejemplo, el campo ID) y en la parte de abajo de la página pulsamos el botón Primaria

La consulta que ejecuta es la siguiente:

ALTER TABLE `usuarios` ADD PRIMARY KEY ( `ID` ) ;

Otro problema que teníamos era con las fechas. En el ejemplo, tenemos el campo FECHA NACIMIENTO, que es una fecha, pero no está almacenado en MySQL como Date.

Cambiar simplemente el tipo del campo de Varchar a Date no funciona, ya que en el Varchar están almacenadas las fechas en el formato dd-mm-yyyy y ese formato no lo soporta MySQL.

Deberíamos crearnos un campo nuevo, de tipo Date. Tras crearlo, debemos realizar un UPDATE como el siguiente:

UPDATE usuarios SET fechanueva=STR_TO_DATE(fechanacimiento, ‘%Y/%m/%d’);

En el campo nuevo ya tendríamos los valores de manera correcta, así que el campo antiguo podemos borrarlo. Y el campo nuevo renombrarlo para que aparezca con el nombre correcto.

Algo parecido pasa con los campos BOOLEANOS, no los coge correctamente y almacena valores de tipo cadena VERDADERO y FALSO.

Así, deberíamos crear un campo nuevo, de tipo BOOLEAN, y actualizarlo utilizando la siguiente consulta:

UPDATE usuarios SET fumadornuevo=true where fumador=’VERDADERO’;

UPDATE usuarios SET fumadornuevo=false where fumador=’FALSO’;

Con esto tendríamos todo terminado para una única tabla. Si nuestra Base de Datos de Access tiene varias tablas, con llaves externas, tendremos que ir importando todos los ficheros generados para cada tabla.

..

Base de datos de ejemplo Pedidos

30 de septiembre de 2012 1 comentario

Base de datos de ejemplo Pedidos

Categorías: Metodología

Páginas dinámicas vs HTML

23 de septiembre de 2012 Deja un comentario

Si el sitio es extenso y sus contenidos cambian rápidamente, nos interesa el automatizar en la medida de lo posible todas las tareas de tal forma que podamos gestionar su explotación de la manera más óptima.

Para dejar más claro hasta que punto resulta útil utilizar páginas dinámicas lo mejor será ejemplificarlo a partir de un sitio web modelo.

Supongamos que hemos decidido realizar un portal de televisión donde una de las informaciones principales a proveer podría ser la programación semanal. Efectivamente, esta información suele ser dada por las televisiones con meses de antelación y podría ser muy fácilmente almacenada en una base de datos. Si trabajásemos con páginas HTML, tendríamos que construir una página independiente para cada semana en la cual introduciríamos «a mano» cada uno de los programas de cada una de las cadenas. Asimismo, cada semana nos tendríamos que acordar de descolgar la página de la semana pasada y colgar la de la anterior. Todo esto podría ser fácilmente resuelto mediante páginas dinámicas. En este caso, lo que haríamos sería crear un programa (solo uno) que se encargaría de recoger de la base de datos de la programación aquellos programas que son retransmitidos en las fechas que nos interesan y de confeccionar una página donde aparecerían ordenados por cadena y por hora de retransmisión. De este modo, podemos automatizar un proceso y desentendernos de un aspecto de la página por unos meses.

Este hecho lo podríamos aplicar a otras situaciones: podemos preparar el horóscopo de todos los días, las promociones de un sitio de e-comercio…

Además, tampoco resultaría complicado el introducir una pequeña caja de búsqueda que nos permitiera dar rápidamente con el programa que queremos ver, saber a qué hora y en qué cadena se emite.

Volviendo a nuestro portal de televisión, en él hay una sección en la cual presentamos todas las series actualmente emitidas con comentarios sobre ella, fotos, etc. Podríamos, en lugar de hacer una página HTML por serie, hacer una única página dinámica en contacto con una base de datos en la cual visualizamos las fotos y comentarios relativos a la serie que nos interesa. Asimismo, si lo que buscamos es modificar el formato del texto de dicha sección, podemos automatizar este proceso sin necesidad de cambiar a mano cada una de las etiquetas font y sin hacer uso de la hojas de estilo las cuales no son reconocidas por la totalidad de los navegadores.

Otra serie de aspectos tales como la gestión de las lenguas, podrían ser fácilmente resueltos sin para ello duplicar el número de páginas y buscar los textos a traducir penosamente entre el código HTML.

En realidad, a partir de estas herramientas, podemos plantearnos cuantas cosas queramos.

Categorías: Metodología Etiquetas: , ,

Ejercicio: Piezas y Proveedores

23 de septiembre de 2012 Deja un comentario

  1. Crea la base de datos Suministros
  2. Crea las 3 tablas anteriores
  3. Inserta al menos 5 piezas y 5 proveedores (uno de ellos debe tener código HAL). También inserta en la tabla Suministra al menos 10 filas.
  4. Realiza consultas select para obtener:
    1. Nombres de todos los artículos
    2. Todos los datos de los proveedores
    3. Precio medio de todas las piezas
    4. Nombre de los proveedores que suministran la pieza 1.
    5. Nombres de piezas suministradas por proveedor cuyo código es HAL
    6. Nombre del proveedor que suministra la pieza más cara
    7. Aumentar los precios en una unidad
    8. Hacer constar que la empresa «Tornillos SL» (con código TOSL) va a comenzar a suministrarnos tornillos a 7 pesetas.
    9. Nombre de las piezas que suministra «Tornillos SL»
    10. Nombre del proveedor y número de piezas que suministra.
    11. Nombre de las piezas cuyo precio medio sea mayor a 10 euros y menor de 20.
    12. Diferencia entre el producto más caro y el más barato.
    13. Ordena los proveedores por nombre ascendentemente y muestra sólo los 3 primeros.
    14. Nombre de los proveedores que empiezan por A (si no tienes ninguno que empiece por A, utiliza otra letra para hacer la prueba).

..

CREATE TABLE SUMINISTRA(
codigopieza integer,
idproveedor varchar(4),
precio integer,
primary key (codigopieza,idproveedor),
key(codigopieza),
foreign key (codigopieza) references piezas(codigo) 
on delete cascade on update cascade,
key(idproveedor),
foreign key (idproveedor) references proveedores(id) 
on delete cascade on update cascade);


CONSULTAS:
SELECT * FROM PROVEEDORES;
SELECT AVG(PRECIO) FROM SUMINISTRA;
SELECT NOMBRE FROM PROVEEDORES, SUMINISTRA WHERE CODIGOPIEZA=1 AND
ID=IDPROVEEDOR;
SELECT NOMBRE FROM PIEZAS, SUMINISTRA WHERE IDPROVEEDOR='HAL' AND
CODIGOPIEZA=CODIGO;

SELECT NOMBRE FROM PROVEEDORES, SUMINISTRA WHERE IDPROVEEDOR=ID AND
PRECIO=(SELECT MAX(PRECIO) FROM SUMINISTRA);

UPDATE SUMINISTRA SET PRECIO=PRECIO+1;
INSERT INTO PROVEEDORES(ID,NOMBRE) VALUES ('TOSL', 'Tornillos SL');
INSERT INTO PIEZAS(CODIGO, NOMBRE) VALUES (17, 'Tornillo');
INSERT INTO SUMINISTRA VALUES (17, 'TOSL', 7);

SELECT PIEZAS.NOMBRE FROM PIEZAS, SUMINISTRA, PROVEEDORES
WHERE PROVEEDORES.NOMBRE='Tornillos SL' AND ID=IDPROVEEDOR AND
CODIGOPIEZA=CODIGO;

SELECT PROVEEDORES.NOMBRE, COUNT(*)
FROM PROVEEDORES, SUMINISTRA
WHERE IDPROVEEDOR=ID
GROUP BY IDPROVEEDOR;

SELECT NOMBRE
FROM PIEZAS, SUMINISTRA
WHERE CODIGO=CODIGOPIEZA
GROUP BY CODIGOPIEZA
HAVING AVG(PRECIO)>10 AND AVG(PRECIO)<20;

SELECT MAX(PRECIO) - MIN(PRECIO) AS DIFERENCIA
FROM SUMINISTRA;

SELECT NOMBRE
FROM PROVEEDORES
ORDER BY NOMBRE ASC
LIMIT 3

SELECT NOMBRE
FROM PROVEEDORES
WHERE NOMBRE LIKE 'A%';

Ejercicio: La tienda de Informática

23 de septiembre de 2012 Deja un comentario

  1. Crea la Base de datos «Tiendainformatica»
  2. Crea las dos tablas, fabricantes y artículos
  3. Inserta al menos 4 fabricantes y 10 artículos
  4. Realiza las siguientes consultas:
    1. Obtener los nombres de los productos de la tienda
    2. Obtener los nombres y los precios de los productos de la tienda
    3. Obtener el nombre de los productos cuyo precio sea menor o igual a 200 euros.
    4. Obtener todos los datos de los artículos cuyo precio esté entre 60 y 140 euros, ambos precios incluidos
    5. Obtener el nombre y el precio en pesetas (es decir, multiplicado por 166,386)
    6. Obtener el precio medio de todos los productos
    7. Precio medio de los artículos cuyo fabricante sea 2
    8. Número de artículos cuyo precio sea superior a 180 euros.
    9. Nombre y precio de los productos cuyo precio sea mayor o igual a 180 euros, ordenándolos descendentemente por precio y ascendentemente por nombre.
    10. Obtener un listado completo de artículos, incluyendo los datos del fabricante también
    11. Obtener un listado de artículos, incluyendo el nombre, precio y nombre de fabricante
    12. Obtener el precio medio de los productos de cada fabricante, mostrando solo los códigos de cada fabricante
    13. Hallar el precio medio de los productos de cada fabricante, mostrando el nombre del fabricante.
    14. Nombre de los fabricantes que ofrezcan productos cuyo precio medio sea superior a 150 euros
    15. Nombre y precio del artículo más barato.
    16. Añadir un nuevo producto: Altavoces de 70 euros del fabricante 2.
    17. Cambiar el nombre del producto 8 a Impresora Láser
    18. Aplicar un descuento del 10% a todos los productos
    19. Aplicar un descuento de 10 euros a todos los productos cuyo precio sea superior a 120 euros.

…. ALGUNAS CONSULTAS RESUELTAS:

SELECT *
FROM ARTICULOS
WHERE PRECIO BETWEEN 60 AND 140;

SELECT *
FROM ARTICULOS
WHERE PRECIO>=60 AND PRECIO<=140;

SELECT NOMBRE, PRECIO*166.386 AS PRECIOENPESETAS
FROM ARTICULOS;

SELECT AVG(PRECIO) FROM ARTICULOS;

SELECT AVG(PRECIO) FROM ARTICULOS WHERE FABRICANTE=2;

SELECT COUNT(CODIGO) FROM ARTICULOS WHERE PRECIO>180;

SELECT NOMBRE, PRECIO FROM ARTICULOS WHERE PRECIO>=180;

SELECT NOMBRE, PRECIO FROM ARTICULOS WHERE PRECIO>=180 
ORDER BY PRECIO DESC, NOMBRE ASC;

SELECT * FROM ARTICULOS, FABRICANTES 
WHERE ARTICULOS.FABRICANTE=FABRICANTES.CODIGO;

SELECT ARTICULOS.NOMBRE, PRECIO, FABRICANTES.NOMBRE
FROM ARTICULOS, FABRICANTES
WHERE ARTICULOS.FABRICANTE=FABRICANTES.CODIGO;

SELECT FABRICANTE, AVG(PRECIO)
FROM ARTICULOS
GROUP BY FABRICANTE;

SELECT FABRICANTES.NOMBRE, AVG(PRECIO)
FROM ARTICULOS, FABRICANTES
WHERE ARTICULOS.FABRICANTE=FABRICANTES.CODIGO
GROUP BY FABRICANTES.CODIGO;

SELECT FABRICANTES.NOMBRE
FROM FABRICANTES, ARTICULOS
WHERE FABRICANTES.CODIGO=ARTICULOS.FABRICANTE
GROUP BY FABRICANTES.CODIGO;
HAVING AVG(PRECIO)>150;


SELECT AVG(PRECIO), CIUDADES.NOMBRE
FROM ARTICULOS, CIUDADES, FABRICANTES
WHERE ARTICULOS.FABRICANTE=FABRICANTES.CODIGO AND
      FABRICANTES.CIUDAD=CIUDADES.CODIGO;

SELECT NOMBRE, PRECIO
FROM ARTICULOS
WHERE PRECIO = (SELECT MIN(PRECIO) FROM ARTICULOS);

UPDATE ARTICULOS SET NOMBRE='Impresora Láser' WHERE CODIGO=8;

UPDATE ARTICULOS SET PRECIO=PRECIO-(PRECIO*0.1);

UPDATE ARTICULOS SET PRECIO=PRECIO-10 WHERE PRECIO>120;



Categorías: Metodología Etiquetas: , , ,