webs

72 entradas

Prolog enlazando PHP

Prolog: enlazando un sistema experto con PHP

Hoy traigo cómo enlazar proyectos web en PHP con partes hechas en Prolog. No he encontrado casi información en Internet, así que aquí estoy compartiendo algo sobre esto. Este es un simple HOWTO para tratar las respuestas, o muchos de los casos que puedes tener en ataques a Prolog desde PHP. La idea general es que tenemos uno o varios programas en ficheros .pl. Estos ficheros a su vez se pueden autoincluir unos en otros con sentencias del estilo include o import como en otros lenguajes. Además, también estos ficheros .pl se pueden generar automáticamente desde otras fuentes de datos. Esta dinamicidad de la parte programada en Prolog es una de las cosas más interesantes. Es decir, los programas en Prolog pueden cambiarse a si mismos, tema muy interesante en Inteligencia Artificial. Esto es, los programas en Prolog pueden aprender sobre la marcha, además de que, la base de conocimiento puede nutrirse de muchos datos externos también sobre la marcha.

Symfony tutorial 3 Doctrine

Symfony: tutorial 3: los modelos y las entidades, almacenando datos en BDs

Recorriendo todas las funcionalidades de Symfony Flex (Symfony 4), traigo de nuevo otro HOWTO para trabajar con el guardado de los datos. Symfony basa el guardado de los datos, la persistencia de los datos, en Doctrine. Es decir, tenemos un módulo llamado Doctrine, mejor dicho varios, que te independizan de la base de datos añadiendo una capa intermedia entre los controladores, plantillas, servicios.. de tu aplicación Symfony y la base de datos. En esta capa intermedia se definen lo que se llaman entidades, y Doctrine se encarga de hacer todo. Siguiendo este tutorial veremos cómo en poco tiempo podemos arrancar proyectos que antes podíamos tardar días o semanas, ahora en pocas horas. Es decir, en muy pocos comandos de consola, y con muy poco esfuerzo, podemos montar grandes estructuras en bases de datos, o editarlas. Y nos podemos casi olvidar de hacer muchas consultas directamente a la Base de Datos. Un poco de teoría Symfony es un framework que sigue el modelo MVC que significa Modelo-Vista-Controlador. En un post anterior hemos visto cómo trabajar con los controladores y un poco de las vistas, que también tienen mucho juego. Ahora vamos a ver el tema de los modelos, sinónimo de entidades. […]

Symfony Flex comandos

Symfony: tutorial 2: los comandos de consola

Una respuesta a porqué Symfony es tan productivo son los comandos de consola. Si alguien dice que usar Symfony es reinventar la rueda, que siempre es mejor modificar un CMS.. es que no sabe de lo que está hablando, y lo que se está perdiendo. Con simples comandos podemos crear un proyecto nuevo, añadir nuevos componentes, lanzar un servidor de pruebas, chequear las URLs, crear entidades que vamos a guardar en base de datos, probar el envío de emails. También podemos modificar las tablas de datos, añadir nuevos elementos, editar los existentes, actualizar la base de datos, preparar nuevos elementos para almacenar, generar pantallas de listado de datos, ediciones de datos, borrados o creaciones. Generamos formularios automáticamente, con recepción de sus datos y guardado de dichos formularios en bases de datos. Podemos importar una base de datos de otro proyecto, generando todo el código fuente de una aplicación web que consulte los datos de dicha BD en apenas un rato. Podemos crear controladores, estructurando todas las zonas de la web, con sus plantillas, rutas, y URLs en poco tiempo. Y mucho más.. No tenemos que gastar tiempo en tediosas tareas repetitivas de construcción, y podremos centrarnos en lo especial de […]

Websites

PHP: usando CURL para visitar servidores web

Continuando con el post anterior, traigo otro code-kata, o HOWTO, para hacer ping a una web, para empezar. Digo para empezar, porque esto no es más que el comienzo de una serie de acciones muy potentes sobre servidores web. Así podemos interactuar con un sitio web automática y remotamente. Este es uno de los mecanismos básicos de comunicación entre sistemas informáticos. Es decir, esto se puede reutilizar para que una web se comunique con otra web, con otro sistema informático, leyendo información o enviándola. Para esto vamos a usar el gran CURL, que va muy bien para trabajar con el protocolo de las webs. Aunque como reza en su web, es compatible con muchos otros protocolos: DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet and TFTP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, HTTP/2, cookies, user+password authentication (Basic, Plain, Digest, CRAM-MD5, NTLM, Negotiate and Kerberos), file transfer resume, proxy tunneling and more.. Esta forma de hacer un simple ping web se puede escalar todo lo que quieras. Es decir, de esta forma es como trabajan internamente los módulos […]

Websites

PHP: cómo hacer un web ping

Una tarea bastante importante a la hora de posicionar una página web es asegurarte de que sigues online. Si has contratado el alojamiento a una empresa no tendrás que preocuparte mucho por el estado del sistema operativo del servidor. Pero hay otros aspectos aparte del servidor que necesitan de tu atención. Puedes pensar que una página web basta con montarla con un buen CMS, que puedes dejarla online y ahí seguirá porque no hay razón para que deje de funcionar. Pues nada más lejos de la realidad, cuantas más cosas tenga tu web, más cosas pueden fallar. Es decir, si tienes una página artesanal de un único fichero estático es difícil que deje de funcionar. Pero si tienes un CMS, quizá un WordPress, Prestashop, Drupal o Magento.. ya empiezas a tener más elementos que mantener. Los módulos pueden ser inestables, pueden engancharse las arañas de los buscadores, usuarios que llegan a bugs involuntariamente, etcétera.. No digamos ya si tienes muchas visitas que generan contenido dinámicamente.

Magento margen de beneficios

Magento 1: obteniendo el margen de beneficio de las ventas

Estos últimos días me han pedido sacar informes de un Magento. Ha sido muy interesante porque no me esperaba tener esta información en el CMS, pero sí, ahí estaba. Resulta que Magento viene con un atributo de coste de los productos, que es de sistema. Dicho atributo de producto tiene el código cost. Además, en la información que se guarda en cada pedido tenemos el precio original, este coste del sistema en el momento de la venta, y más información. Con esto podremos saber el margen de beneficio que hubo en el momento de la venta. Es importante notar que supongo que ya usas el atributo de coste del sistema, o que tienes un ERP enganchado a Magento que te lo está manteniendo actualizado con cada pedido de compra.

Landing pages con Symfony

Symfony: creando landings con formularios, segunda parte

En el post anterior escribí sobre cómo crear una landing page rápido con Symfony 4, y se me quedó pendiente el enviar por email los mensajes del formulario. Es decir, ya tenemos en un rato una rudimentaria ‘landing page’ donde un maquetador o el equipo de marketing disfrutará poniendo cualquier cosa. Será como maquetar con HTML, CSS y Javascript sin tener ningún engorroso CMS por debajo limitándonos lo que podemos hacer. Además tendremos la base de un buen Symfony para después añadir lo que queramos. Ya tenemos la captación de contactos (o capture leads para los entendidos), que se guardan en una base de datos embebida en la propia web. Sin complicadas instalaciones ni configuraciones SQL, directamente con una base de datos SQLite embebida. Sólo queda entonces hacer 3 cosas: Instalar el módulo de Swiftmailer. Configurarlo. Y poner la acción de enviar el email. Vamos al grano.. 1. Instalando Swiftmailer Para esto basta con poner en el terminal lo siguiente: composer require symfony/swiftmailer-bundle ..esperamos, y si todo ha ido bien tenemos que ver en el terminal algo como lo siguente: Using version ^3.2 for symfony/swiftmailer-bundle ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Package […]

Landing pages con Symfony

Symfony: creando landings con formularios

Traigo hoy un HOWTO para hacer landing pages sobre Symfony 4 orientadas a captación de clientes. Un code-kata con el que en menos de 1 hora tendremos la estructura básica funcional sobre Symfony 4 para recibir contactos, guardarlos en base de datos y enviárnoslos por email. Llevo un par de semanas bien ajetreadas: migrando un proyecto desde Symfony 3 al 4, otro desde un Joomla en mal estado a Symfony 4, otro proyecto terminándolo de poner en marcha con Symfony 4. Pequeños proyectos de poco tiempo que me han dado muchas ideas para escribir. Así que, cargado de ideas, sigo poco a poco redescubriendo Symfony con Symfony 4. Y me sigo sintiendo como un niño con juguete nuevo 😀 Tengo que decir que Symfony 4 ha mejorado mucho en simplicidad. No hay que saberse cómo funciona todo el conjunto con los 50-60 componentes, ni gran parte de ellos, para comenzar a hacer aplicaciones web robustas: https://symfony.com/components Ni tampoco hay que hacer complicados tutoriales muy largos antes de comenzar a construir con Symfony. Eso sí, tenemos que tener claro cómo funciona la línea de comandos con PHP, y tener muy claro cómo funciona Composer, esto ya lo expliqué en el primer […]

Magento conflictos entre modulos

Magento 1: resolviendo conflictos entre módulos

Magento es muy grande, aguanta carros y carretas, pudiéndole añadir gran cantidad de módulos. Uno de los proyectos en los que he participado alcanzó la friolera de 131 módulos, siendo algunos de estos módulos mega-módulos. Ha requerido mucho esfuerzo, todo hay que decirlo. Casi nunca suele ser “copiar y pegar los ficheros y ya está” como aquel que dice. Por el camino hay que resolver los conflictos, y tratamos día a día de evitar el añadir módulos si no es bien necesario. Hacemos limpieza de todos los que no se usen, y tratamos de actualizar todos los que se puedan, depende del tiempo que haya. Siempre surgen conflictos, y supone mucho tiempo hacer funcionar todas las opciones de ciertos módulos que entran en conflicto entre sí. Esto es el día a día del mantenimiento de los Magentos. Origen de los problemas Los desarrolladores hacen los módulos en un Magento limpio, recién instalado, sin que se requiera ningún otro módulo para su funcionamiento. Este es el entorno ideal, un Magento recién instalado. Pero la realidad nunca es así.

Magento

Magento 1: flushear la caché de Magento

Es habitual que cuando haces cambios en Magento necesites flushear la caché. Esto es resetear, borrar los ficheros o datos temporales, que almacena Magento para agilizar sus tareas. Magento va guardando ficheros intermedios que se ejecutan más rápido que los originales. También guarda variables, combina ficheros de configuración de los módulos, traducciones, bloques, layouts de las plantillas, etc.. Todos estos ficheros agilizan mucho la ejecución, así que si no tienes la caché activada deberias de activarla ya mismo. Problema Puede ser que tengas que estar instalando y desinstalando módulos y de repente deja de funcionar Magento. Quizá has modificado en la base de datos algún dato y no se ven los cambios. O quizá incluso modificando algunos ficheros te deja de funcionar Magento. El problema viene cuando no puedes entrar al panel de control de Magento y darle al botón de ‘Flush Magento Cache’.

Symfony 1 el enrutamiento

Symfony: tutorial 1: extendiendo el ¡hola mundo! y el enrutador de URLs

En este segundo tutorial sobre Symfony, dejo aquí explicado cómo se cargan las URLs. Para esto, tenemos aquí este clásico tutorial al estilo de ¡Hola Mundo! un poco más azucarado que el post el anterior. Lo primero en lo que hay que pensar son los puntos de entrada a la web: qué URLs vamos a tener y de qué forma, qué prefijos y sufijos van a tener, cómo se va a dividir la web desde el punto de vista del visitante que va viendo las URLs. Todo esto es lo que llamaremos el enrutamiento de la web. Es decir, todas las URLs de entrada a la web pasan por un enrutador. Este enrutamiento se encargará de saber lo que tiene que hacer, llevando la visita al controlador que corresponda para hacer lo que tenga que hacer, y devolver al visitante la respuesta con la página que corresponda. Creando el proyecto Vamos a ir al grano, ejecutamos lo siguiente desde línea de comandos para tener lo indispensable para este tutorial: composer create-project symfony/skeleton symfony-tutorial-1 cd symfony-tutorial-1 Instalando los componentes necesarios composer require server –dev composer require profiler –dev composer require symfony/maker-bundle –dev composer require annotations composer require twig Fíjate que pongo […]

Herramientas para desarrollar en Symfony

Symfony: tutorial 0: preparando el espacio de trabajo

Como buen apasionado del desarrollo de aplicaciones web, estaba espectante esperando la nueva versión de Symfony 4. Ahora tenemos una nueva versión orientada a microservicios, en la que te vas construyendo tu propio framework poco a poco, con los componentes que necesites. Esto quiere decir que no te instalas el framework completo cuando empiezas a trabajar, sino que poco a poco vas añadiendo los componentes. Gracias a Composer vas acoplando los componentes, ya sean del propio Symfony, o sean componentes externos al framework. Esto hace a su vez que la curva de aprendizaje no sea tan pronunciada para los novatos. Lo poco que he podido curiosear me ha encantado. Estoy como un niño con juguete nuevo. Tanto así, que he decidido hacer una serie de tutoriales para principiantes, y no tan principiantes. Herramientas Comencemos por preparar el entorno de trabajo. Voy a citar las herramientas que uso, y por supuesto también recomiendo para estos trabajos. No puedo extenderme mucho porque si no las conoces, deberás de invertir tiempo para instarlártelas. Si ya tienes las tuyas, y se adapatan bien a este tipo de desarrollos, úsalas: Sistema operativo: recomiendo GNU/Linux (Ubuntu, Ubuntu Mate o derivado de Debian), es lo que uso […]