Publi

  • Iteradores y generadores en PHP o por qué deberíamos utilizar yield más a menudo [con ejemplos]

    Es uno de los grandes desconocidos de PHP. Una de esas características que, estando presentes en otros lenguajes no son tan ampliamente utilizadas como deberían. De hecho, en PHP, ¿cuántas veces hemos iterado con datos que tenemos en memoria? Es decir, recorremos los elementos de un array uno a uno y realizando operaciones con cada uno de ellos. Entonces pueden pasar varias cosas, puede que los recorramos todos, o puede que cuando se cumpla una determinada condición decidamos que no vamos a recorrer más.… Leer artículo completo

  • ¿Cómo funcionan los WebSockets? Comunicación bidireccional en tiempo real con el navegador web

    photo-1434396505260-9ec0d6491795

    Internet poco a poco va haciéndose más y más grande. A medida que crecen sus usuarios y dispositivos conectados lo hacen las necesidades de los mismos, y de los servicios que ofrece. Hoy vamos a meternos con los WebSockets. Este sistema se utiliza para hacer una comunicación bidireccional y persistente entre un cliente y un servidor web. Pero, ¿para qué queremos esto?

    Un poco de background

    Para realizar una comunicación entre un cliente web (navegador) y un servidor web (cualquier programa que sea capaz de enviar información coherente a un navegador) se utiliza el protocolo HTTP (por debajo utiliza TCP/IP y muchas más cosas, pero no profundizaremos tanto).… Leer artículo completo

  • Cómo procesar múltiples argumentos de entrada en scripts para Bash

    photo-1455540904194-fc101941273a_r

    Los argumentos de entrada de un programa nos sirven para modificar ligeramente el comportamiento de un programa dentro de las opciones que nos permita su desarrollador. Y, sobre todo, siempre que trabajamos con programas para consola, es muy buena idea permitir que nuestros usuarios puedan utilizar funciones extras o especificar sus propios parámetros de trabajo sin necesidad de modificar el programa.

    Si trabajáis con lenguajes como C o C++ podéis leer algo de información al respecto:

    Pero, cuando hacemos algún script en Bash para línea de comandos, también puede resultar muy útil, tanto para especificar archivos de entrada, como las propias opciones de nuestro programa.… Leer artículo completo

  • Lectura, escritura y eliminación de elementos de un array multidimensional en PHP usando separadores

    14300968086_927be23a6f_o

    Puede parecer muy complejo así dicho. Pero de lo que se trata es de proporcionar una forma más natural para acceder a lo elementos de un array en PHP. Nos podemos imaginar un array de configuración de una aplicación, donde encontremos apartados como cookies, idiomas, usuarios, rutas, urls, apis externas, bases de datos e infinidad de cosas más. Hace un tiempo veíamos una función para acceder a una clave de un array, comprobando antes la existencia de esa clave y dándonos la opción de devolver un valor por defecto en caso de que dicha clave no exista.… 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
  • 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
  • Reservar dinámicamente memoria para un array bidimensional en C

    led_array
    Uno de los grandes defectos de un array, es que en tiempo de codificación debemos definir el tamaño que tendrá en tiempo de ejecución. A veces, es lo más fácil y está bien, lo utilizamos, puede que malgastemos unos bytes, pero no pasa nada, otras veces es una variable de un tamaño justo y no nos excedemos. Pero muchas veces, el gran problema, es que no tenemos ni idea de cuánto tamaño darle; si le damos poco, porque nos quedamos cortos, si nos pasamos, porque malgastaremos varios Megabytes, y a veces sabemos que incluso aunque algunas veces se desperdicie gran cantidad de memoria habrá casos en los que nos quedamos cortos.… Leer artículo completo

  • Algoritmos: generar números aleatorios para la lotería

    Es un ejemplo típico y nos muestra el uso de rand() con arrays para generar varios números aleatorios y no repetidos.

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    /**
    *************************************************************
    * @file loteria.c
    * @brief Saca números aleatorios para la lotería
    * Basado en el sorteo de la primitiva, hay que sacar 7 números
    * del 1 al 49, sin repetir
    *
    * @author Gaspar Fernández <blakeyed@totaki.com>
    * https://poesiabinaria.net/algoritmos/
    *************************************************************/


    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>       /* para time() */


    int numero_aleatorio(int desde, int hasta)
    {
      return desde+rand()%(hasta-desde+1);
    }

    short numero_repetido(int numeros[7], int n)
    {
      int i=0;

      while (i<n)
        {
          /* Si un número sacado anteriormente es igual al número
             en la posición n, decidido, está repetido.
    Leer artículo completo
  • Listas enlazadas en Arduino (primera versión)

    Es parte de un proyecto personal que quiero compartir. Se trata de una clase para utilizar listas enlazadas desde Arduino, aunque la memoria RAM de estos bichillos no sea gran cosa (1K para la versión Diecimila), puede dar para mucho, y es que hay ocasiones en las que podemos necesitar esta flexibilidad a la hora de almacenar y acceder a la información (aunque no pueda ser mucha).

    La clase ha sido desarrollada utilizando templates, por lo que podréis particularizar esta clase para cualquier tipo de dato que estéis manejando.… Leer artículo completo

  • Crear un archivo PHP que sólo contenga un array (desde un programa PHP)

    Aunque puede parecer redundante, pero es una idea curiosa. Sobre todo cuando creamos un sitio web con muchas opciones. Tenemos varias opciones:

    • Guardarlas en base de datos. Con lo cual cada página que carguemos tiene que hacer una petición, y si hay muchas visitas podemos saturar el sistema. Además una petición es una tarea un poco lenta
    • Guardarlas en un archivo de texto. Por lo que tendremos que hacer un programa que lea el fichero y lo interprete.
    Leer artículo completo