Publi

  • Crear múltiples direcciones de correo desde el CLI de Plesk

    Muchos usuarios disponen de un panel de control Plesk. Que, aunque no es libre, hoy vamos a hablar de él. Dicho panel de control, proporciona una forma sencilla de gestionar dominios, páginas web y servicios asociados, como el correo, desde su interfaz web. Lo que puede que no sea tan conocido es que dispone de una serie de herramientas en línea de comandos que nos pueden hacer la vida mucho más fácil.… Leer artículo completo

  • Experimento: Creando un nuevo efecto de imagen para el secuenciador de vídeo de Blender (VSE) con código fuente


    Lo que pongo aquí es solo un experimento. Como dije en mi anterior post, me encanta Blender para hacer montajes de vídeo y para mí, es el mejor editor de vídeo disponible para GNU/Linux. Aunque tiene un pequeño defecto, bueno, muy grande… apenas tiene efectos para los vídeos, por lo que si quieres algún efecto que no sea un crossfade, una corrección de color, o un blur, vas a tener que hacerlo de otra forma y eso implica exportar vídeo y luego importarlo cuando esté hecho.… Leer artículo completo

  • Cómo crear un plugin para WordPress. Making of de SimTerm (primera parte)

    simterm
    Son muchos los plugins para WordPress disponibles hoy en día, aunque la magia de este sistema de publicación radica en sus posibilidades para extenderlo. Así que aquí contaré la historia de la primera versión de mi primer plugin más o menos serio para WordPress: SimTerm. Contando, los pasos que di, lo que pude haber hecho de otra forma y lo que debí haber hecho de otra forma.

    Índice

    1. Instalación local de WordPress.
    Leer artículo completo
  • Creando un modelo sencillo en Magento (paso a paso y con ejemplos)

    Anteriormente vimos cómo crear un plugin para Magento y cómo crear un controlador para Magento. Ahora le toca el turno al modelo. Intentaré poner con todo detalle todo el proceso.
    Por eso, vamos a editar app/code/local/NuestraEmpresa/nuestroPlugin/etc/config.xml, en nuestro ejemplo app/code/local/Poesia/HolaMundo/etc/config.xml para indicar que vamos a crear modelos y las conexiones de base de datos que se deben utilizar para el acceso. He pegado el archivo entero, pero indico con un comentario las novedades:

    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
    72
    73
    74
    75
    76
    77
    <?xml version="1.0" encoding="UTF-8"?>
    <!--
    Opcionalmente podemos poner un comentario contando qué hace nuestro módulo, nuestra web,
    información sobre la licencia, etc
    -->
    <config>
        <modules>
            <Poesia_HolaMundo> <!-- namespace_modulo -->

                <!-- Esta es la versión de nuestro módulo -->
                <version>0.0.1</version>

            </Poesia_HolaMundo>
        </modules>

        <frontend>
          <!-- Lo que necesitamos para utilizar los controladores -->
          <routers>
        <holaMundo>
          <use>standard</use>
          <args>
            <module>Poesia_HolaMundo</module>
            <frontName>hm</frontName>
          </args>
        </holaMundo>
          </routers>
          <!-- Lo que necesitamos para utilizar los controladores -->
          <!-- Lo que necesitamos para el layout y las plantillas -->
          <layout>
        <updates>
          <holamundo>
            <file>poesia.xml</file>
          </holamundo>
        </updates>
          </layout>
          <!-- Lo que necesitamos para el layout y las plantillas -->
        </frontend>
        <!-- Necesario para informar a Magento sobre nuestro modelo -->
        <global>
          <models>
        <holamundo>
            <class>Poesia_Holamundo_Model</class>
            <resourceModel>holamundo_resource</resourceModel>
        </holamundo>
        <holamundo_resource>
            <class>Poesia_HolaMundo_Model_Resource</class>
            <entities>
            <pventamod>
                <table>poesia_postvtable</table>
            </pventamod>
            </entities>
        </holamundo_resource>
          </models>
          <resources>
            <holamundo_setup>
              <setup>
                <module>Poesia_HolaMundo</module>
              </setup>
              <connection>
                <use>core_setup</use>
              </connection>
            </holamundo_setup>
            <holamundo_write>
              <connection>
                <use>core_write</use>
              </connection>
            </holamundo_write>
            <holamundo_read>
              <connection>
                <use>core_read</use>
              </connection>
            </holamundo_read>
          </resources>

        </global>
        <!-- Necesario para informar a Magento sobre nuestro modelo -->
    </config>

    Ahora creamos el modelo (le intento dar a todo nombres diferentes para que veamos qué es cada cosa).… Leer artículo completo

  • Definir valores de variables desde una cadena de caracteres [C++11]


    A veces, es muy útil poder definir variables de diversos tipos (int, string, double, bool, etc) o incluso inicializar clases todo desde un string. El objetivo es dar al usuario de nuestro programa más libertad aún y no combernos demasiado la cabeza transformando cada una de las variables. Por otro lado, no siempre podrán estar definidas todas, por lo que hacer una solución específica para cada cao es un poco largo.… Leer artículo completo

  • Singletons en C++. Intentando que sean seguros en hilos (thread safety) II

    Singleton thread-safeAyer hablábamos de la creación de un sigleton y de que nuestro ejemplo no era «thread safe», vamos, que en un entorno con varios hilos de ejecución cabe la posibilidad de que el comportamiento esperado no siempre se cumpla.

    Ahí encontrábamos diferencias entre C++ (<11) y C++11 ya que esta última revisión incluye tratamiento de threads y algunas cosas más que trataremos aquí.

    Lo primero que podemos pensar, es que al traernos la instancia de nuestro singleton se crea una sección crítica, la cuál podemos regular con un mutex, provocando que siempre que vayamos a obtener una instancia de nuestro objeto pasemos por el semáforo, y aunque dos threads quieran pelearse por ver quién crea antes el recurso, sólo uno lo conseguirá finalmente.… 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