Publi

  • Balanceo de carga con Amazon Web Services Elastic Load Balancer. Ejemplos, consejos y trucos.

    AmazonWebservices_Logo.svg
    Cuando montamos un servidor web y los servicios que proporcionamos se hacen mayores (mayor cantidad de usuarios accede a ellos), inevitablemente debemos seguir una maniobra de escalado para dichos servicios. Tenemos muchas opciones, podemos tener servidores dedicados, o como primer paso utilizar servidores VPS como pueden ser DigitalOcean o Amazon AWS. En DigitalOcean, como muchos otros, tendrás que montarte tú todo, es decir, montar tu servidor e instalar HAProxy, Nginx, Apache (o el que quieras) en modo balanceador de carga, de modo que cada petición que entre será desviada a algún nodo web que tengamos conectado.… Leer artículo completo

  • Comparativa de acceso rápido y seguro a un elemento de un array unidimensional [PHP]

    477292813_c913243065_o

    Nota: Si usas algún Framework PHP, lo más seguro que estas funciones no te sirvan, ya que muchos Frameworks suelen tener cosas parecidas, más o menos completas que hacen lo mismo. Si eres de los que trabajan «a pelo», estás creándote tu propio framework, tal vez te interese todo esto.

    Acceso simple a un elemento de un array

    Esto es una tarea sencilla en PHP, sólo tenemos que poner entre corchetes la clave a la que queremos acceder y podremos acceder a su valor:

    1
    2
    3
    <?php
    $miArray['precio']=12.34;
    echo $miArray['precio'];

    Aunque, el problema viene cuando dicha clave no existe, veremos una notificación de PHP indicando que el índice especificado no existe:

    PHP Notice: Undefined index: precio in /home/pruebas/test.php on line 3
    PHP Stack trace:
    …..

    Leer artículo completo
  • Intercambiar datos entre hojas de cálculo Calc o Excel usando una columna de referencia

    Imaginemos que tenemos en una hoja de cálculo (una Excel de toda la vida, aunque no me gusta llamarla por un nombre comercial, es como llamar a los yogures Danone o Gillette a las cuchillas de afeitar, en fin), una serie de datos (es muy importante el hecho de tener un identificador o referencia en cada fila). En esta misma hoja, queremos insertar datos que se encuentran en otro archivo de hoja de cálculo haciendo que los nuevos datos se correspondan con el autor de la primera hoja.… Leer artículo completo

  • MySQL: Rellenar campos de fecha de creación y modificación con la fecha actual automáticamente

    Es muy útil, al crear una tabla cuyos datos pueden ser modificados con cierta frecuencia, añadir campos que especifiquen el momento de creación y el de modificación. Por ejemplo, creamos la siguiente tabla de configuración para una aplicación:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE SCHEMA PoesiaBinaria;

    CREATE TABLE PoesiaBinaria.configuracion (
        `id` BIGINT NOT NULL AUTO_INCREMENT,
        `pref` VARCHAR (64) NOT NULL,
        `value` VARCHAR(128) NOT NULL,
        `ctime` DATETIME NOT NULL,
        `mtime` DATETIME NOT NULL,
        PRIMARY KEY (`id`)
    ) ENGINE =MyISAM;

    El objetivo es que cuando creemos un nuevo valor, éste rellene automáticamente las fechas de creación y modificación a la fecha actual.… Leer artículo completo

  • MySQL: Listar elementos evitando las repeticiones consecutivas

    Imaginémonos un programa que almacena periódicamente valores en una base de datos, dichos valores pueden ser temperatura, humedad, uso de CPU, voltaje, corriente, intensidad de luz, etc. En definitiva, parámetros que varían con el tiempo, con la característica de que, dos muestras seguidas pueden ser iguales, y no nos interesaría obtenerlas, pero tras una variación sí que nos interesaría volver a ver el mismo valor. Por ejemplo, en una tabla de uno de CPU vemos:

    IdDateCPU Use
    15-jun-2013 10:44:2056%25-jun-2013 10:45:5057%35-jun-2013 10:47:2057%45-jun-2013 10:48:5057%55-jun-2013 10:50:2058%65-jun-2013 10:51:5058%75-jun-2013 10:53:2056%85-jun-2013 10:54:5055%95-jun-2013 10:56:2056%105-jun-2013 10:57:5056%115-jun-2013 10:58:2059%125-jun-2013 11:00:5059%

    Cuando en realidad lo que nos interesaría ver es:

    IdDateCPU Use
    15-jun-2013 10:44:2056%25-jun-2013 10:45:5057%55-jun-2013 10:50:2058%75-jun-2013 10:53:2056%85-jun-2013 10:54:5055%95-jun-2013 10:56:2056%115-jun-2013 10:58:2059%

    Por tanto tenemos dos formas de abordar el tema:

    Evitando introducir valores repetidos

    Para ello, bastaría con introducir un trigger en la base de datos asociado a la introducción de los valores en dicha tabla.… Leer artículo completo

  • Hacer funcionar tu viejo ordenador de router, y filtrar por dirección MAC

    computers

    Si tenemos un viejo ordenador, una de las funciones que puede hacer es de router. Personalmente, yo lo tengo de router, centro de descargas, almacenamiento compartido, copias de seguridad remotas, ejecutar cron jobs en ciertos servidores que no los soportan y para ver películas en la tele.

    Para que un ordenador pueda funcionar como router, es tan fácil como incluir en /etc/sysctl.conf la siguiente línea:

    net.ipv4.ip_forward=1

    (Aún con IPv4, sí, aunque podemos utilizar el forward ipv6, teóricamente sin ningún problema)
    En muchos sistemas ya funcionaría, pero dependiendo de la distribución debemos dar un permiso adicional:

    $ sudo iptables -A FORWARD -j ACCEPT

    Aunque si queremos restricción por MAC tendremos que currar un poco más.… Leer artículo completo

  • Introducir el resultado de una consulta SELECT de mysql en un Array [BASH]

    data

    ¡Bash es una pasada! Es capaz de dejarnos hacer maravillas en poco tiempo y de automatizar lo inautomatizable, en este caso, traigo un ejemplo más, de cómo un código muy corto es capaz de presentarnos los resultados de una consulta SELECT de mysql:

    Los datos de prueba provienen de uno de mis proyectos: Málaga Bloguea donde muestro las últimas novedades de blogs de Málaga.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #!/bin/bash

    OLDIFS=IFS
    MYSQL_USER=#Usuario Mysql
    MYSQL_PASSWORD=#Password Mysql
    MYSQL_HOST="localhost"
    # IFS personalizado, para poder delimitar los campos correctamente
    IFS="`echo -e "\t\n\r\f"`"

    # Declaramos la variable como array, no es estrictamente necesario, pero sí un poco más correcto
    declare -a IPS

    # Generamos la consulta (Si vamos a utilizar un juego de caracteres determinado, como
    # UTF8, debemos especificar primero para evitar sorpresas.
    Leer artículo completo
  • Exportar desde MySQL a CSV

    Este post está explicado de forma más extendida aquí.

    He eliminado el contenido de este post porque ya está contenido en el enlace.

    Exportar datos de MySQL a un fichero CSV o tabulado.

    Leer artículo completo
  • Nos ponemos serios con PHP: Empezamos con un CRUD (la esencia no es exclusiva de PHP)

    crudHace años tuve entre manos un gran proyecto web, en el que invertí 8 meses de mi vida y funcionó bastante bien durante un tiempo. En su desarrollo recuerdo que tuve que desarrollar cerca 50 formularios diferentes, comprobar los valores de cada uno de los campos, hacer lecturas y escrituras en base de datos con los datos obtenidos, y opcionalmente realizar alguna tarea extra una vez enviado y validado el formulario.… Leer artículo completo