Cómo usar mysql_result en PHP 7 o PHP 8

Esta mañana un cliente me avisó de un error cuando intentaba descargar unas facturas. Esas facturas están guardas en un BLOB en una base de datos a las que se accede para luego mostrarlas al usuario.

¿Qué ha pasado? Pues que hace tiempo actualizaron en su servidor PHP de 5.6 a 7.x o diría que ya a 8.x y claro, mirando el código se usaba la función mysql_result que básicamente lo que hace es leer el dato de una celda en concreto de una consulta SQL. read more

Leer más » Comentar

Instalar y configurar una tienda online con WooCommerce usando Clouding

El comercio electrónico desde su nacimiento ha sido una tecnología de gran éxito. Poder comprar sin moverte de casa tiene muchas ventajas para las dos partes, vendedor y comprado. Y por supuesto algunos inconvenientes. Muchas de las ventajas se han puesto de relieve con la pandemia. Por eso hoy os traemos este manual, para que podáis ver cómo montar una tienda electrónica con WooCommerce en Clouding. Recordad que WooCommerce es un plugin para WordPress y por supuesto, los dos son proyectos con licencia GPL.

Las ventajas más obvias son, para el comprador:

  • Poder comprar a cualquier hora desde cualquier lugar, lo primero te permite compatibilizar el proceso de compra con otras tareas (estar en la oficina, de viaje o viendo la TV) y lo segundo, es muy importante para no tener que desplazarte. No digamos ya a un centro comercial, si no si vives en una población sin tanta oferta comercial, sin tener que hacer kilómetros para ir a una tienda física con la mercancía que buscar.
  • Poder leer mucho sobre lo que vas a comprar. A diferencia del comercio físico, cuando compras online, verás una ficha rellena con mucha más información del producto de la que pueda ofrecerte cualquier ficha en una tienda. Además será una información objetiva y contrastable, a diferencia de lo que puede ser la opinión del vendedor.
  • Sanitariamente es una compra segura, no hay contacto físico con otras personas y por lo tanto, no hay riesgo de contagio.
  • read more

    Leer más » Comentar

    Ángulo entre dos vectores 3D en C

    https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/highlight.min.js
    hljs.initHighlightingOnLoad();

    El ángulo entre dos vectores A = (Ax, Ay, Az) y B = (Bx, By, Bz) se calcula mediante el arcocoseno de la relación que existe entre el producto escalar de dichos vectores y los módulos de cada vector. Su fórmula es la siguiente: read more

    Leer más » Comentar

    Importar usuarios en WordPress

    Nada más instalar WordPress, que por cierto, es el sistema presente en uno de cada tres sitios webs a nivel mundial, tendremos disponibles unas herramientas para poder importar contenido. Concretamente con el importador que incluye WordPress podremos importar: páginas, adjuntos, entradas, widgets, etiquetas, categorías, menús y algún otro tipo de datos.

    Aparte de contenidos, WordPress también maneja usuarios y en algunos sitios son la base (imaginemos una red social con su miembros o incluso una tienda online con sus clientes), así que vamos a ver brevemente cómo importar usuarios en WordPress.

    Importar usuarios en WordPress con Import Users From CSV With Meta

    Podemos importar usuarios en WordPress usando algunos plugins. Hace un tiempo creé uno y poco a poco, como tantos otros proyectos de software libre, ha ido creciendo y ampliando sus posibilidades. Su nombre es Import Users From CSV With Meta y soy el responsable de su desarrollo y mantenimiento, así que como imagináis os lo voy a recomendar. De hecho, este plugin a día de hoy es la base de una serie de servicios de importación, integración y sincronización de usuarios con WordPress que ofrecemos en Codection. Como podéis imaginar, los proyectos de software libre, como este, además de tener valor en sí mismos, derivan muchas veces en servicios de alto valor añadido para su creador.

    A día de hoy, de todos los plugins para importar usuarios para WordPress, podemos decir que este es el más usado con más de 30.000 instalaciones activas y con más de 700.000 descargas. Hay plugins de importación más populares, que también importan usuarios, pero son menos específicos.

    ¿Qué nos permite hacer este plugin?

    Así de forma esquemática y traduciendo lo que tenemos puesto en la portada del plugin en el repositorio de plugins de WordPress:

  • Importa un fichero CSV con datos de usuarios directamente a tu WordPress
  • Pueden ser miles, los que necesites y de una forma muy rápida
  • Se importan también sus metadatos (por ejemplo, los datos de facturación o envío de WooCommerce)
  • Además de asignar los roles que consideres a cada uno, o a toda la importación
  • Envía un correo a los nuevos usuarios (o a los que están siendo actualizados)
  • Este correo puede personlizarse
  • Y además puedes tener diferentes plantillas, para diferentes casos
  • Además de crear nuevo usuarios, puedes también editarlos de forma masiva, subiendo los mismos usuarios con diferentes datos
  • Puedes importar a través del frontend con un shortcode que genera el plugin
  • O con un proceso cron, para que se ejecute de forma periódica
  • read more

    Leer más » Comentar

    Calcula si un número es par o impar en Python

    Uno de los problemas que propongo a mis alumnos cuando están aprendiendo condicionales en un lenguaje de programación es calcular si un número entero es par o impar.

    Aquí os dejo el enunciado del problema y una propuesta de solución en Python. Espero que os sirva tanto si es para la enseñanza como para el aprendizaje.

    Problema:

    Imprime en pantalla si un número entero dado es par o impar.

    Solución propuesta (didáctico):

    La clave está en utilizar la operación módulo, que calcula el resto de una división entera: si un entero es divisible por dos, es par; si no, impar.

    import sys
    
    a = int(sys.argv[1])
    
    if a % 2 == 0:
        print('El número', a, 'es par.')
    else:
        print('El número', a, 'es impar.')
    

    Leer más » Comentar

    Calcula si un número es primo en Python

    Uno de los problemas que propongo a mis alumnos cuando están aprendiendo bucles en un lenguaje de programación es calcular si un número es primo o no.

    Aquí os dejo el enunciado del problema y una propuesta de solución en Python. Espero que os sirva tanto si es para la enseñanza como para el aprendizaje.

    Problema: read more

    Leer más » Comentar

    Instalar PowerShell en una distribución Linux

    PowerShell es un shell de Microsoft multiplataforma. Aunque me duela decirlo, es más potente que Bash a la hora de realizar scripts ya que soporta, por ejemplo, números en coma flotante. La buena noticia es que su licencia es MIT y, por tanto, compatible con la licencia GPL.

    Los pasos para su instalación son los siguientes:

    1. Entra en la página oficial del repositorio de PowerShell.
    2. Dirígete a la sección Obtener PowerShell.
    3. Descarga el instalador correspondiente a tu distribución GNU/Linux y sigue las instrucciones oficiales indicadas.

    La combinación de PowerShell junto con los comandos de GNU/Linux, hace del scripting una labor realmente apetecible.

    Y tú, ¿lo has instalado? ¿Lo has probado? ¡Coméntanos!

    Leer más » Comentar

    Comandos básicos de Git

    Aquí tenéis una breve tabla sobre los comandos más básicos para poder trabajar con Git:

    ComandosExplicación
    git clone uri.gitClona un repositorio en el directorio actual.
    git pullIncorpora los cambios de un repositorio remoto en la rama actual.
    git statusMuestra el estado actual del árbol de trabajo.
    git add .Actualiza el índice con el contenido actual del árbol de trabajo.
    git commit -m 'mensaje'Registra los cambios en el repositorio.
    git pushActualizar referencias remotas junto con objetos asociados.

    Para instalar Git en distribuciones basadas en Debian, ejecuta sudo apt-get install git.

    Leer más » Comentar

    Linux Containers (LXC)

    Aquí tenéis una breve tabla sobre los comandos esenciales para poder virtualizar con LXC:

    ComandoExplicación
    sudo lxc-create -n id -t downloadCrea un contenedor llamado id usando una plantilla.
    sudo lxc-ls --fancyLista los contenedores creados en el sistema.
    sudo lxc-start -n idInicia un contenedor.
    sudo lxc-info -n idObtener información sobre un contenedor.
    sudo lxc-attach -n idUnirse a un contenedor e iniciar sesión.
    sudo lxc-stop -n idDetiene un contenedor.
    sudo lxc-destroy -n idDestruye un contenedor.

    Para instalar LXC en distribuciones basadas en Debian, ejecuta sudo apt-get install lxc.

    Leer más » Comentar

    Aprende a usar variables en JavaScript

    Aquí os dejo un código mío de ejemplo para empezar a aprender a usar variables de tipo básico en JavaScript.

    Es recomendable copiar el código y ejecutarlo en un intérprete de JavaScript y, a continuación, realizar los cambios que consideremos oportunos para comprender el funcionamiento.

    'use strict'

    // This is a comment

    /*
    This is a comment
    on multiple lines
    */

    // VARIABLES
    //
    // A variable is a symbol that represents a quantity that may vary.
    //
    // $identifier = value;

    var age = 25 // The value 25 is assigned to variable age

    // BASIC DATA TYPES
    var temperature = -3.82 // Number
    var name = 'Nacho López' // String
    var has_car = true // Boolean (only two values: true or false)

    // ARITHMETIC OPERATIONS WITH NUMBERS
    var x = 5
    var y = 2

    var z = x + y // Addition. Result: 7.
    z = x - y // Subtraction. Result: 3.
    z = x * y // Multiplication. Result: 10.
    z = x / y // Division. Result: 2.5.
    z = x % y // Modulo (remainder of the integer division). Result: 1.

    z++ // Increase the value of z by 1. Result: 2.
    z-- // Decrease the value of z by 1. Result: 1.

    z = 50 - x * 6 / -0.5 //
    z = (50 - x) * 6 / -0.5 // The order of operations is as in mathematics
    z = (50 - x * 6) / -0.5 //

    z = 2 * z + 3 // Remember: the symbol = assigns a value to the variable

    // BASIC OPERATIONS WITH STRINGS
    var a = 'GNU/'
    var b = 'Linux'
    var c = a + b // Concatenation Result: 'GNU/Linux'.
    c = a.repeat(3) // Repetition Result: 'GNU/GNU/GNU/'.

    // PRINT VARIABLES ON CONSOLE
    console.log('Hello, world!') // Prints on console: Hello, world!
    console.log(x) // Prints the variable x

    // You can print on console strings and variables
    console.log('I have bought', x, 'oranges and', y, 'lemons.')

    // DATA TYPE CONVERSION
    var height = '95.4'
    console.log(typeof(height)) // Prints the current data type
    height = Number(height) // Convert a string to number
    console.log(typeof(height))

    var altitude = -544.432
    console.log(typeof(altitude))
    altitude = String(altitude) // Convert a number to string
    console.log(typeof(altitude))
    read more

    Leer más » Comentar