Archivo

Archive for enero 2014

Chart.js

30 de enero de 2014 Deja un comentario

Hoy he encontrado una página que me ha encantado, me ha abierto un nuevo horizonte.

http://www.chartjs.org/

En esta página te puedes descargar y encuentras información sobre una librería de Javascript orientada totalmente a generar gráficos dentro del CANVAS de HTML5.

Prometo utilizarlo e iré subiendo resultados.

Telegram

27 de enero de 2014 1 comentario

Hoy me he instalado Telegram, leyendo que es un sustituto seguro, gratuito, open source, en la nube, rápido, etc.

Hay versión para Android y para Iphone, y pronto habrá para desktop.

Por ahora, está sólo en inglés. Estoy pensando hacerme colaborador en Spanish.

https://www.telegram.org/

Como he sido el primero de mis contactos en instalarlo, no tenía ninguno. Así que llevo toda la tarde intentando convencer a la gente. Por ahora van cayendo y me está gustando la experiencia. Ellos dicen que es igual que Whatsapp, menos mal que no han visto el Secret Chat, entonces se darán cuenta de que es mucho mejor.

 

Han pasado 2 semanas

Por ahora todo mejor. Muchos más contactos y apenas utilizo whatsapp. La única pega que consigo encontrar es que enviar los videos chorra y las fotografías, al no hacer ninguna compresión, se eterniza en ocasiones.

Quizás debieran meter la opción de subir video/foto comprimido

Categorías: Android Etiquetas: , , , , ,

Campos ENUM o SET en MySQL

16 de enero de 2014 Deja un comentario

Voy a crear una tabla en MySQL en la que debo introducir un campo del que podré coger 3 valores distintos de tipo texto.

¿Qué utilizar, ENUM o SET? ¿Cuál es la diferencia?

Tanto ENUM como SET, sirven para determinar los valores que puede tener un campo de una tabla, es decir, puedes determinar que en un campo solamente pueda contener valores de una lista definida por ti. La principal diferencia es que un campo del tipo ENUM siempre contiene sólo un valor de la lista; y un campo del tipo SET puede contener ninguno, uno o varios valores de la lista.

Hay más características de estos dos campos de MySQL, que les hace diferenciarse y es necesario conocerlas para decidir cual es más apropiado para nuestro diseño de la base de datos.

El tipo de campo ENUM se caracteriza por:

CREATE TABLE sizes (
	size ENUM('small', 'medium', 'large') NOT NULL DEFAULT 'medium'
);
  • Sólo contiene un valor
  • Se puede definir la lista de hasta 65535 valores distintos
  • Si se permite NULL, este será el valor por defecto; sinó, y si no se define con DEFAULT, será el primer valor de la lista (en el ejemplo de arriba, si no defino el DEFAULT ‘medium’, por defecto sería ‘small’)
  • Cada valor de la lista es numerado con un índice (empieza desde el 1), pudiendo usar el índice en vez del valor de la lista (en el ejemplo de arriba: 1=>’small’, 2=>’medium’ y 3=>’large’)
  • En caso de introducir un valor no perteciente a la lista, el campo pasará a valer ”, una cadena vacía, que tiene el índice zero
  • El índice de NULL es NULL,
  • Para retornar el índice de un campo del tipo ENUM, podemos sumar zero al campo (SELECT size+0 FROM …)
  • De almacenamiento físico, ocupará 1 byte si hay 255 o menos valores en la lista, o 2 bytes si hay 256 o más valores

El tipo de campo SET se caracteriza por:

CREATE TABLE letters (
	letter SET('a', 'b', 'c', 'd')
);
  • Contiene zero, uno o varios valores
  • Se puede definir la lista de hasta 64 valores distintos
  • Los valores no pueden contener comas, ya que los valores asignados son separados por comas
  • Cada valor de la lista representa un bit de la cadena de bits del campo
  • El valor decimal del campo determina los bits, marcando los valores que contiene el campo,de manera que si todos los bits estan a 1, es que ese campo contiene todos los valores (ejemplo: si el valor decimal es 7, en binario sería 0111, y eso quiere decir que el campo contiene los valore ‘a’, ‘b’ y ‘c’)
    SET Decimal Bytes
    ‘a’ 1 0001
    ‘b’ 2 0010
    ‘c’ 4 0100
    ‘d’ 8 1000
  • De almacenamiento físico, ocupará 1, 2, 3, 4, o 8 bytes, según la longitud de la lista de valores (si N es el número de valores, la formula es (N+7)/8 bytes)

Conociendo más a fondo los tipos de campos, y sabiendo sus posibilidades, ahora es fácil decidirse y justicarse.

 

Fuente:

http://otroblogmas.com/diferencias-entre-enum-y-set-en-mysql/

.

Categorías: Bases de Datos

5 Essential Open Data Tools

16 de enero de 2014 1 comentario

CartoDB…. digno de ser imitado

Civic Innovations

Every data wrangler has their own list of favorites – the go to tools that they use when they need to work with data.

If you need to clean, transform, or mashup data or if you are working with a data set that will form the basis for an application, here is a list of tools that can make life easier for you.

Ver la entrada original 219 palabras más

Categorías: Uncategorized

Agrupamiento de una consulta de Unión

15 de enero de 2014 Deja un comentario

Estaba trabajando en alguna consulta de SQL sobre MySQL levemente compleja. Cogía datos de 3 tablas y generaba, mediante una UNION una serie de datos. A estos necesitaba hacerles un GROUP BY.

¿Cómo agrupar el resultado de una consulta de Unión?

Ejemplo:
(SELECT id_accv, round(x) as X, round(y) as Y
from accv
where X is not NULL)

UNION

(SELECT id_accv, round(direccion.x) as X, round(direccion.y) as Y
from accv, direccion
where accv.X is NULL
and fid_codvia2 is NULL
and accv.fid_codvia = direccion.fid_codvia
and accv.portal = direccion.acctexto)

UNION

(SELECT id_accv, round(interseccion.x) as X, round(interseccion.y) as Y
from accv, interseccion
where accv.X is NULL
and accv.fid_codvia2 is not NULL
and accv.fid_codvia = interseccion.fid_codvia
and accv.fid_codvia2 = interseccion.fid_codvia2)

Con la anterior consulta consigo un listado de ID con sus coordenadas X e Y correspondientes.

Ahora, ¿cómo consigo agrupar los puntos y saber cuántos ID hay en cada punto?

Es fácil, hago un ALIAS de esta consulta dentro de la cláusula FROM de la consulta de agrupamiento. El resultado sería:

SELECT count(id_accv), x, y
from
(
(SELECT id_accv, round(x) as X, round(y) as Y
from accv
where year(fechaaccidente)=2013
and X is not NULL)
UNION
(SELECT id_accv, round(direccion.x) as X, round(direccion.y) as Y
from accv, direccion
where year(fechaaccidente)=2013
and accv.X is NULL
and accv.fid_codvia2 is NULL
and accv.fid_codvia = direccion.fid_codvia
and accv.portal = direccion.acctexto)
UNION
(SELECT id_accv, round(interseccion.x) as X, round(interseccion.y) as Y
from accv, interseccion
where year(fechaaccidente)=2013
and accv.X is NULL
and accv.fid_codvia2 is not NULL
and accv.fid_codvia = interseccion.fid_codvia
and accv.fid_codvia2 = interseccion.fid_codvia2)
) as Tablauni
group by X, Y
Categorías: Bases de Datos Etiquetas: , , , , , , ,

Apache: Forbidden – You don’t have permission to access SOLUCION

10 de enero de 2014 Deja un comentario

Apache: Forbidden – You don’t have permission to access SOLUCION.

Bueno, yo no utilicé «su» y luego el «chmod» sino que utilicé «sudo chmod»…

Esto me ha pasado al actualizar Ubuntu, algo habrá cambiado

Categorías: Desarrollo web

Wireframing: gliffy.com

Voy a hacer un prototipo de un sitio web en el que estoy liado, así que empezaré a utilizar gliffy.com, ya comentaré cómo va.

 

Me he dado de alta y tienes 15 días de prueba. Puedes guardar tus diagramas y exportar a distintos formatos gráficos.

Categorías: Desarrollo web Etiquetas: , , , ,

Nuevas etiquetas en HTML5

5 de enero de 2014 1 comentario

Además de las etiquetas comentadas anteriormente que le dan mayor semántica a la estructura del documento web, en HTML 5 se incorporan otras etiquetas:

<canvas>

Para, mediante Javascript, conseguir dibujar en esta área.

Ejemplo que dibuja en rectángulo rojo dentro del canvas:

<canvas id="myCanvas"></canvas>
<script type="text/javascript">
   var canvas=document.getElementById('myCanvas');
   var ctx=canvas.getContext('2d');
   ctx.fillStyle='#FF0000';
   ctx.fillRect(0,0,80,100);
 </script>

Nuevos Elementos Multimedia

Etiqueta Descripción
<audio> Sonido – Sin necesidad de plugins
<video> Video – Sin necesidad de plugins
<source> Reproductor multimedia de varios tipos <video> y <audio>
Un contenedor para una aplicación externa (plug-in)
<track> Texto para videos y audio, es decir, para meter subtítulos

Nuevos Elementos de Formulario

Etiqueta Descripción
<datalist> Especifica una lista de opciones predefinidas para otros controles. Por ejemplo, para una caja de texto, especifica distintas opciones, a modo de autocompletar
<keygen> Define un campo generador de claves
<output> Define el resultado de un cálculo
<input list="browsers" name="browser">
<datalist id="browsers">
  <option value="Internet Explorer">
  <option value="Firefox">
  <option value="Chrome">
  <option value="Opera">
  <option value="Safari">
</datalist>

  Username: <input type="text" name="usr_name">
  Encryption: <keygen name="security">

<input type="range" id="a" value="50">100
+<input type="number" id="b" value="50">
=<output name="x" for="a b"></output>

 

Además, <input> que ya existía, aparece ahora con muchos más tipos.

 

.

Más semántica en HTML5. Nuevas etiquetas

4 de enero de 2014 1 comentario

Aparecen en HTML5 unas cuantas etiquetas semánticas que se utilizarán en lugar de DIV. No significa que hayamos acabado con los DIV, simplemente los utilizaremos cuando realmente queramos crear una capa con unos objetivos nos previstos para los siguientes.

Ahora, en lugar de escribir:

<div id=»cabecera»> Contenido de la cabecera </div>

escribiremos:

<header> Contenido de la cabecera </header>
 
HTML5nuevasetiquetassemánticas

Algunas de estas nuevas etiquetas son:

<header>

Cabecera

<hgroup>

El SEO nos dice que debemos tener un H1 único en nuestra página. Para poder poner un segundo H1 en la cabecera y que no afecte al SEO utilizaremos hgroup

<nav>

Para poner el menú principal (normalmente puesto mediante un UL interior). Sólo un NAV por página

<section>

Define un área de contenido única dentro del sitio. Por ejemplo, la sección de noticias de una página.

<article>

Define zonas únicas de contenido independiente. Imagina un artículo es un post de un blog.

<aside>

Cualquier contenido que no esté relacionado con el objetivo principal de la página. Lo usaremos para los laterales, por ejemplo.

<footer>

Es el pie de página

Estructura básica semántica en HTML5

<header>
   <hgroup>
      <h1>Otro blog de @guirado_</h1>
      <h2>Blog de programación de Pedro Guirado</h2>
   </hgroup>
</header>
<nav>
   <ul>
      <li><a href="#">Menú 1</a></li>
      <li><a href="#">Menú 2</a></li>
   </ul>
<section>
   <article>Aquí va un post, con su título en h2</article>
   <article>Aquí va un post, con su título en h2</article>
   <article>Aquí va un post, con su título en h2</article>
</section>
<aside>
   Barra lateral, por ejemplo un widget de Twitter.
</aside>
<footer>
   Pie de página, copyright, etc.
</footer>

Toda la información actualizada se puede encontrar aquí:

http://www.w3schools.com/html/html5_new_elements.asp

Etiquetas deprecadas

No serán ya válidas las siguientes etiquetas en HTML5:

  • <acronym>
  • <applet>
  • <basefont>
  • <big>
  • <center>
  • <dir>
  • <font>
  • <frame>
  • <frameset>
  • <noframes>
  • <strike>
  • <tt>