Open Source

UUIDs: cómo identificar las cosas en programación

2021-12-16 - Categorías: General

Una buena práctica de programación es no usar los IDs de las bases de datos para identificar las cosas en los proyectos. Si no más bien usar un propio sistema de identificación, de forma que nosotros elijamos el identificador que va a tener un objeto antes de guardarlo en la base de datos, y sobre todo antes de enviarlo a sistemas remotos para su almacenaje.

Esto se aconseja hacer, por ejemplo, con los llamados UUIDs. Si en Sistemas Distribuidos es el mismo UUID para el mismo objeto de información en varios sistemas, se evitan muchos problemas. Porque tener que transmitir IDs distintos, y tener que casarlos constantemente entre los distintos sistemas informáticos es un problema..

Continuar leyendo..

Cómo poner un editor de texto avanzado en una web fácilmente

2021-12-12 - Categorías: CSS / HTML / PHP / Symfony
EasyAdminCKEditor

EasyAdmin es un vendor preparado para proyectos Symfony con el que en muy poco tiempo se pueden construir paneles de control completos y funcionales para tus proyectos. Implementa en muy pocos comandos la generación completa de las operaciones básicas CRUD: crear, listar, actualizar y borrar.. mostrando pantallas para cada acción, además de mostrar un menú responsive todo 100% personalizable.

Por otro lado CKEditor es un editor WYSIWYG con el que se puede editar contenido, con formato al estilo de los procesadores de texto, pero en el mismo navegador. Tendremos disponibles una serie de botones para dar estilo a los textos, párrafos, etc.. botones como los de la imagen de arriba, todo dentro de la misma página web y sin instalar nada.

Este es un sencillo howto para hacer algo que cuesta un poco encontrar por Internet con EasyAdmin en las últimas versiones, así que aquí tienes un eco y enlaces a más documentación. Se trata exactamente de las configuraciones que hace falta en un proyecto para que funcionen juntos CKEditor y EasyAdmin.

Me remito a un post anterior para crear desde cero un panel completo con EasyAdmin 2. De la 3 en adelante es todavía más fácil y todas las configuraciones se aplican desde PHP. Este post es para la versión de EasyAdmin 3.

Continuar leyendo..

Java: diferencias entre ArrayList y HashMap

2021-11-14 - Categorías: General / Java
Arrays colecciones vectores

Este es un codekata, apunte, de copia y pega con algo de código fuente sobre el uso de ArrayList y HashMap. Esto son dos tipos de datos básicos que nos provee Java, que será el siguiente punto de partida cuando tengamos que manejar colecciones de datos de información.

En Java tenemos que definir el tipo de dato y la forma de funcionamiento que queremos que tenga internamente, para obtener un comportamiento mejor de una forma o de otra. Tenemos que a partir de los vectores básicos, el siguiente paso será usar tipos de datos como los ArrayList, HashMap, LinkedList, HashSet, Iterator.. cada uno internamente está construido de una forma.

Continuar leyendo..

Una CPU con varios núcleos, PHP y la computación paralela

2021-11-14 - Categorías: General / PHP

Este es un codekata de copia y pega en PHP para procesar lotes de información particionados y repartidos entre varios núcleos de una misma CPU utilizando los conceptos de computación paralela. Es decir, si tenemos un proceso pesado que corre de forma iterativa, y se puede dividir en lotes, entonces se puede procesar en paralelo para aumentar la velocidad.

Esta división y procesado en varios subprocesos de forma simultanea, se puede hacer fácilmente en PHP usando las funciones nativas de pcntl que tenemos disponibles desde PHP 4:
https://www.php.net/manual/es/function.pcntl-fork.php

Continuar leyendo..

WordPress multisite: una instalación, infinitos sitios web

2020-03-25 - Categorías: General / PHP / WordPress

Activar la opción de WordPress multisite te puede hacer muy eficiente a la hora de explotar esta herramienta profesionalmente. Por otro lado es brutalmente eficaz para mantener segura y estable a una red de sitios WordPress que tengas que mantener. Los clientes finales te lo agradecerán, ya que no tendrán que realizar tareas muy técnicas para asegurarse de que la web siga online. Y por otro lado no tendremos que recorrer cada sitio, uno a uno, para mantenerlos en buen estado.

Puedes tener una única instalación de WordPress, pero con infinitas páginas web. Todos los websites se podrían administrar desde un panel de control principal. Y los usuarios podrían trabajar, o visitar cada sitio web, como si de sitios independientes se trataran.

Una única instalación de WordPress que mantener actualizada, securizada, optimizada. Un sitio desde donde administrar los plugins y temas disponibles para toda la red de páginas web. Una sola instalación en un único servidor. Ahorrarás en costes de servidor, en costes de mantenimiento, menos problemas y más recursos para todos.

Continuar leyendo..


Magento 1: los índices, qué son y cómo reindexar

2018-10-10 - Categorías: GNU/Linux / Magento / PHP
Magento funcionamiento interno

Magento es un gran CMS para montar tiendas online. Está muy desarrollado teniendo en cuenta el SEO, el marketing, para tener muchos dominios con la misma web, muchas configuraciones de impuestos, de precios distintintos por web, distintas plantillas para cada sitio web.. todo desde un mismo panel de control.

Es tan flexible desde el mismo panel de control, que ha llegado a extremos de tal forma de que necesita todo tipo de cacheados, tablas temporales donde guardar indexada la información, así como también Varnish y Redis. Todo esto junto es una combinación explosiva y todo un reto hacerlo funcionar todo. Así que en este post vengo a hacer una review del funcionamiento de estos índices de datos.

Continuar leyendo..

Magento 1: creando un pedido con la API Soap

2018-10-02 - Categorías: Magento / PHP
Magento API carrito pedido

Aquí estoy de nuevo compartiendo otro CODE-KATA, ahora para hacer una tarea muy interesante conectando dos sistemas informáticos. Es decir, tenemos un Magento 1 en algún lugar, y vamos a permitir conectarnos desde otra plataforma en PHP para la creación de pedidos de forma remota.

Lo primero que necesitamos tener es la información del pedido por completo. Necesitamos saber los datos del cliente, direcciones de envío y facturación, en este caso el correo electrónico del cliente registrado en Magento, y de los productos necesitamos el SKU y la cantidad que queremos pedir.

Continuar leyendo..

Magento 1: sacando la información de pedido con la API Soap

2018-09-28 - Categorías: Magento / PHP
Magento informacion pedido con la API Soap

Otra vez, de nuevo, me repito más que el ajo xDD vengo a traer otro CODE-KATA o HOWTO. Esta vez sobre la API Soap de Magento. Se trata de un pequeño script para ver la información de un pedido.

El punto de partida es que tenemos ya configurada la API Soap de Magento, con un usuario de la API, con los suficientes privilegios para hacer peticiones de información sobre los pedidos. Entonces conectamos a dicho proyecto, a su endpoint, con las credenciales de acceso, y obtenemos los datos del pedido.

Continuar leyendo..

Symfony: cómo montar un gestor de archivos web en menos de 1 hora

2018-09-21 - Categorías: PHP / Symfony
Symfony FMElfinder gestor de archivos

Hoy de nuevo vengo con otro CODE-KATA o HOWTO, esta vez para montar un gestor de archivos web. Recopilando joyas de la informática vengo a traer el FMElfinderBundle. Subir ficheros a una web, renombrarlos, editarlos es una tarea compleja. Si usamos este bundle, que es un vendor de Composer preparado para Symfony Flex, nos podremos olvidar de construir todo esto haciéndonos la vida mucho más fácil.

Es decir, que tenemos un bundle o vendor para Symfony, que nos permite gestionar archivos mediante el navegador. Así podemos subir ficheros de imagen para luego usarlos en la web. También permite otro tipo de ficheros una vez configurado. Incluso te permite editarlos si son de texto dentro del mismo gestor de archivos.

Continuar leyendo..

Symfony: cómo montar un blog con editor WYSIWYG

2018-09-20 - Categorías: PHP / Symfony
Symfony WYSIWYG

De nuevo traigo otro CODE-KATA, para montar un blog en Symfony Flex, Symfony 4. Así en unos pocos minutos tenemos el esqueleto de lo que puede ser un blog. También valdría para hacer páginas corporativas, incluso si lo que queremos es un editor de fichas de productos también. Es decir, este es un pequeño tutorial para arrancar un nuevo proyecto en Symfony, creando es esqueleto de una aplicación web que va a ser un blog, con un editor de texto avanzado del tipo WYSIWYG.

WYSIWYG quiere decir What You See Is What You Get. Es decir, estos editores de texto son como los que tienen WordPress, Magento, Prestashop.. en donde se editan las páginas visualmente dentro del mismo navegador. Con este tipo de editores puedes organizar los textos, darles tamaño a las letras, alineación, subrayados, colores, etcétera.

Continuar leyendo..

Popup de Mailchimp para WordPress

2018-08-27 - Categorías: Magento / Prestashop / Symfony / WordPress
Popup de Mailchimp de jnjsite.com

He tenido problemas para poner un popup de Mailchimp en esta web. Así que aquí estoy compartiendo la solución. He tratado de usar la utilidad que viene en el panel de control de Mailchimp. Pero todo apunta a que tengo algún conflicto entre los Javascripts de Mailchimp, los Javascripts de mi plantilla, algún plugin de cacheado o del minificado del código fuente. En fin, que no funcionaba y he terminado antes haciendo el popup artesanal que se puede ver en la barra lateral derecha de la web.

Si has tenido el mismo problema, aquí dejo mi solución, que espero que funcione en el 100% de las webs. Simplemente necesitas tener instalado en la web jQuery, el resto viene todo en el código de abajo. Se puede copiar y pegar en el widget de WordPress donde lo quieras y adaptarlo para tu web.

Continuar leyendo..

© 2022 JnjSite.com - MIT license

Sitio hecho con WordPress, diseño y programación del tema por Jnj.